diff --git a/.npmignore b/.npmignore
index 5462736..d69e69b 100644
--- a/.npmignore
+++ b/.npmignore
@@ -1,3 +1,4 @@
+.vscode/
node_modules/
test/
src/
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..fde97dc
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,14 @@
+{
+ "markdownlint.config": {
+ "default": true,
+ "MD001": false,
+ "MD013": {
+ "line_length": 120
+ },
+ "MD033": {
+ "allowed_elements": [
+ "br",
+ ]
+ },
+ }
+}
diff --git a/README.md b/README.md
index 9a810d5..4bc67dd 100644
--- a/README.md
+++ b/README.md
@@ -1,13 +1,17 @@
# APT Parser
This library is capable of parsing files used within the [APT Package Manager](https://en.wikipedia.org/wiki/APT_(software)).
-A typical APT repository advertises a release file and packages file, both of which use a key-value organization system to declare information. This library is able to parse the data and return it as type-safe objects for usage in JavaScript and TypeScript projects.
+A typical APT repository advertises a release file and packages file, utilizing a key-value organization system.
+This library is able to parse the data and return it as type-safe objects for usage in JavaScript and TypeScript projects.
### Installation
+
`npm install --save apt-parser`
### Release Parsing
+
Here's an example for getting the information out of a Release file:
+
```ts
import axios from 'axios';
import { Release } from 'apt-parser';
@@ -21,44 +25,46 @@ console.log(release.get('InvalidKey')); // => null
```
A full Release object has the following properties attached on it, all of which map to documented APT fields.
-For more information on the Debian Repository Format, see https://wiki.debian.org/DebianRepository/Format.
+For more information on the Debian Repository Format, see >
```ts
interface IRelease {
- architectures: string[] // => Architectures
- noSupportForArchitectureAll?: boolean // => No-Support-For-Architecture-All
- description?: string // => Description
- origin?: string // => Origin
- label?: string // => Label
- suite: string // => Suite
- codename: string // => Codename
- version?: string // => Version
- date?: Date // => Date
- validUntil?: Date // => Valid-Until
- components: string[] // => Components
- md5?: ReleaseHash[] // => MD5Sum
- sha1?: ReleaseHash[] // => SHA1
- sha256?: ReleaseHash[] // => SHA256
- sha512?: ReleaseHash[] // => SHA512
- notAutomatic?: boolean // => NotAutomatic
- butAutomaticUpgrades?: boolean // => ButAutomaticUpgrades
- acquireByHash?: boolean // => Acquire-By-Hash
- signedBy?: string[] // => Signed-By
- packagesRequireAuthorization: boolean // => Packages-Require-Authorization
-
- get(key: string): string | undefined // => Retrieve a raw field value not assigned a strict type
- get fieldCount(): number // => Get total number of fields in the Release contents
+ architectures: string[] // => Architectures
+ noSupportForArchitectureAll?: boolean // => No-Support-For-Architecture-All
+ description?: string // => Description
+ origin?: string // => Origin
+ label?: string // => Label
+ suite: string // => Suite
+ codename: string // => Codename
+ version?: string // => Version
+ date?: Date // => Date
+ validUntil?: Date // => Valid-Until
+ components: string[] // => Components
+ md5?: ReleaseHash[] // => MD5Sum
+ sha1?: ReleaseHash[] // => SHA1
+ sha256?: ReleaseHash[] // => SHA256
+ sha512?: ReleaseHash[] // => SHA512
+ notAutomatic?: boolean // => NotAutomatic
+ butAutomaticUpgrades?: boolean // => ButAutomaticUpgrades
+ acquireByHash?: boolean // => Acquire-By-Hash
+ signedBy?: string[] // => Signed-By
+ packagesRequireAuthorization: boolean // => Packages-Require-Authorization
+
+ get(key: string): string | undefined // => Retrieve a raw field value not assigned a strict type
+ get fieldCount(): number // => Get total number of fields in the Release contents
}
type ReleaseHash = {
- filename: string
- hash: string
- size: number
+ filename: string
+ hash: string
+ size: number
}
```
### Binary Control Parsing
+
Here's an example for getting the information out of a binary control file:
+
```ts
import { Release } from 'apt-parser';
@@ -84,41 +90,43 @@ console.log(control.get('Invalid-Key')); // => null
```
A full BinaryControl object has the following properties attached on it, all of which map to documented APT fields.
-For more information on the Debian Control Format, see https://www.debian.org/doc/debian-policy/ch-controlfields.html.
+For more information on the Debian Control Format, see >
```ts
interface IBinaryControl {
- package: string // => Package
- source?: string // => Source
- version: string // => Version
- section?: string // => Section
- priority?: PriorityLevel // => Priority
- architecture: string // => Architecture
- essential?: boolean // => Essential
-
- depends?: string[] // => Depends
- preDepends?: string[] // => Pre-Depends
- recommends?: string[] // => Recommends
- suggests?: string[] // => Suggests
- replaces?: string[] // => Replaces
- enhances?: string[] // => Enhances
- breaks?: string[] // => Breaks
- conflicts?: string[] // => Conflicts
-
- installedSize?: number // => Installed-Size
- maintainer: string // => Maintainer
- description: string // => Description
- homepage?: string // => Homepage
- builtUsing?: string // => Built-Using
- packageType?: PackageType // => Package-Type
-
- get(key: string): string | undefined // => Retrieve a raw field value not assigned a strict type
- get fieldCount(): number // => Get total number of fields in the control contents
+ package: string // => Package
+ source?: string // => Source
+ version: string // => Version
+ section?: string // => Section
+ priority?: PriorityLevel // => Priority
+ architecture: string // => Architecture
+ essential?: boolean // => Essential
+
+ depends?: string[] // => Depends
+ preDepends?: string[] // => Pre-Depends
+ recommends?: string[] // => Recommends
+ suggests?: string[] // => Suggests
+ replaces?: string[] // => Replaces
+ enhances?: string[] // => Enhances
+ breaks?: string[] // => Breaks
+ conflicts?: string[] // => Conflicts
+
+ installedSize?: number // => Installed-Size
+ maintainer: string // => Maintainer
+ description: string // => Description
+ homepage?: string // => Homepage
+ builtUsing?: string // => Built-Using
+ packageType?: PackageType // => Package-Type
+
+ get(key: string): string | undefined // => Retrieve a raw field value not assigned a strict type
+ get fieldCount(): number // => Get total number of fields in the control contents
}
```
### Packages Parsing
+
Here's an example for getting the information out of a Packages file:
+
```ts
import axios from 'axios';
import { Packages } from 'apt-parser';
@@ -127,37 +135,40 @@ const { data } = await axios.get('https://repo.chariz.com/Packages');
const packages = new Packages(data);
for (const pkg of packages) {
- console.log(pkg.package); // Package Identifier
- console.log(pkg.get('InvalidKey')); // => null
+ console.log(pkg.package); // Package Identifier
+ console.log(pkg.get('InvalidKey')); // => null
}
```
A full Packages object has the following properties attached on it, all of which map to documented APT fields.
-For more information on the Debian Repository Format, see https://wiki.debian.org/DebianRepository/Format.
+For more information on the Debian Repository Format, see >
```ts
interface IPackage extends IBinaryControl {
- filename: string // => Filename
- size: number // => Size
- md5?: string // => MD5sum
- sha1?: string // => SHA1
- sha256?: string // => SHA256
- sha512?: string // => SHA512
- descriptionMd5?: string // => Description-md5
-
- get(key: string): string | undefined // => Retrieve a raw field value not assigned a strict type
- get fieldCount(): number // => Get total number of fields in the package contents
+ filename: string // => Filename
+ size: number // => Size
+ md5?: string // => MD5sum
+ sha1?: string // => SHA1
+ sha256?: string // => SHA256
+ sha512?: string // => SHA512
+ descriptionMd5?: string // => Description-md5
+
+ get(key: string): string | undefined // => Retrieve a raw field value not assigned a strict type
+ get fieldCount(): number // => Get total number of fields in the package contents
}
interface IPackages extends Array {
- constructor(rawData: string) // Pass in the raw contents of the file
+ constructor(rawData: string) // Pass in the raw contents of the file
}
```
### Skipping Validation
-The parser validates required fields based on the parameters defined by the Debian Team on their documentation pages. Disabling this validation is possible, but it is not recommended if you are parsing valid repositories.
-Disabling this validation will stop the APT parser from throwing any `MissingRequiredKeyError`s. It is disabled through an option when constructing your parser.
+The parser validates required fields based on the parameters defined by the Debian Team on their documentation pages.
+Disabling this validation is possible, but it is not recommended if you are parsing valid repositories.
+
+Disabling this validation will stop the APT parser from throwing any `MissingRequiredKeyError`s.
+It is disabled through an option when constructing your parser.
```ts
import axios from 'axios';
@@ -165,6 +176,6 @@ import { Packages } from 'apt-parser';
const { data } = await axios.get('https://repo.chariz.com/Packages');
const packages = new Packages(data, {
- skipValidation: true
+ skipValidation: true
});
```
diff --git a/package.json b/package.json
index 7afcb64..b7f2d3e 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "apt-parser",
- "version": "1.4.5",
+ "version": "1.5.0",
"description": "Parse APT's key-value files and retrieve all the values as a Map",
"author": "Canister (https://canister.me)",
"contributors": [
@@ -20,7 +20,7 @@
"scripts": {
"build": "tsup ./src/index.ts --format cjs,esm --dts --clean",
"prepublishOnly": "pnpm run build",
- "push": "np",
+ "push": "np --message 'chore: v%s'",
"test": "vitest run"
},
"keywords": [
@@ -36,12 +36,12 @@
],
"repository": {
"type": "git",
- "url": "git+https://github.com/cnstr/apt-parser.git"
+ "url": "git+https://github.com/cnstr/apt-parser-ts.git"
},
"bugs": {
- "url": "https://github.com/cnstr/apt-parser/issues"
+ "url": "https://github.com/cnstr/apt-parser-ts/issues"
},
- "homepage": "https://github.com/cnstr/apt-parser#readme",
+ "homepage": "https://github.com/cnstr/apt-parser-ts#readme",
"devDependencies": {
"np": "^7.6.2",
"tsup": "^6.2.3",