@dependabit/manifest 0.1.13 → 0.1.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @dependabit/manifest
2
2
 
3
+ ## 0.1.15
4
+
5
+ ### Patch Changes
6
+
7
+ - [#101](https://github.com/pradeepmouli/dependabit/pull/101) [`83b9818`](https://github.com/pradeepmouli/dependabit/commit/83b98187940da75a41fb41990ea03c8d962146b4) Thanks [@pradeepmouli](https://github.com/pradeepmouli)! - - chore: bump typedoc-plugin-to-skills to ^1.3.0
8
+
9
+ ## 0.1.14
10
+
11
+ ### Patch Changes
12
+
13
+ - [#76](https://github.com/pradeepmouli/dependabit/pull/76) [`7952538`](https://github.com/pradeepmouli/dependabit/commit/7952538578b97472f9da49056db535abf8c6a26a) Thanks [@pradeepmouli](https://github.com/pradeepmouli)! - - test: trigger CI pipeline
14
+
3
15
  ## 0.1.13
4
16
 
5
17
  ### Patch Changes
package/dist/config.d.ts CHANGED
@@ -1,19 +1,68 @@
1
1
  import { type DependabitConfig } from './schema.js';
2
2
  /**
3
- * Parse and validate a YAML configuration file
3
+ * Reads a YAML configuration file from disk, parses it, and validates it
4
+ * against `DependabitConfigSchema`.
5
+ *
6
+ * @param path - Path to the `.dependabit.yml` (or `.json`) file.
7
+ * @returns The validated `DependabitConfig` object.
8
+ *
9
+ * @throws {ValidationError} If the YAML does not match the config schema.
10
+ * @throws {Error} If the file cannot be read.
11
+ *
12
+ * @category Manifest
13
+ *
14
+ * @never
15
+ * - YAML comments are parsed but not preserved in the returned object.
16
+ * A subsequent `stringifyConfig` call will lose all comments.
17
+ * - Duplicate YAML keys are silently overwritten by the YAML parser (last
18
+ * value wins) — no warning is emitted.
4
19
  */
5
20
  export declare function readConfig(path: string): Promise<DependabitConfig>;
6
21
  /**
7
- * Parse YAML string to config
22
+ * Parses a YAML string into a validated `DependabitConfig`.
23
+ *
24
+ * @param yaml - Raw YAML or JSON string.
25
+ * @returns Validated config object.
26
+ *
27
+ * @throws {ValidationError} If the parsed data does not satisfy the schema.
28
+ *
29
+ * @category Manifest
30
+ *
31
+ * @useWhen
32
+ * Parsing config from an in-memory string (e.g., fetched from GitHub API).
8
33
  */
9
34
  export declare function parseConfig(yaml: string): DependabitConfig;
10
35
  /**
11
- * Convert config to YAML string
36
+ * Serialises a validated `DependabitConfig` to a YAML string.
37
+ *
38
+ * @param config - The config to serialise.
39
+ * @returns YAML string representation.
40
+ *
41
+ * @throws {ValidationError} If `config` fails schema validation before
42
+ * serialisation.
43
+ *
44
+ * @category Manifest
45
+ *
46
+ * @never
47
+ * - YAML comments present in the original file are **not** preserved;
48
+ * this function always produces comment-free YAML.
12
49
  */
13
50
  export declare function stringifyConfig(config: DependabitConfig): string;
14
51
  /**
15
- * Get effective monitoring rules for a dependency
16
- * Merges global config with dependency-specific overrides
52
+ * Resolves the effective monitoring rules for a specific dependency URL by
53
+ * merging global config defaults with any per-URL override defined in
54
+ * `config.dependencies`.
55
+ *
56
+ * @param config - Root `DependabitConfig` object.
57
+ * @param dependencyUrl - The exact URL of the dependency to look up.
58
+ * @returns Resolved `enabled`, `checkFrequency`, and `ignoreChanges` values.
59
+ *
60
+ * @remarks
61
+ * Override matching is performed by exact URL equality. A trailing slash
62
+ * or query parameter difference between the stored URL and the override URL
63
+ * will cause the override to be silently ignored.
64
+ *
65
+ * @category Manifest
17
66
  */
18
67
  export declare function getEffectiveMonitoringRules(config: DependabitConfig, dependencyUrl: string): {
19
68
  enabled: boolean;
@@ -21,7 +70,18 @@ export declare function getEffectiveMonitoringRules(config: DependabitConfig, de
21
70
  ignoreChanges: boolean;
22
71
  };
23
72
  /**
24
- * Check if a URL should be ignored based on config
73
+ * Returns `true` if the given URL matches any exclusion rule defined in
74
+ * `config.ignore` (exact URL list or regex pattern list).
75
+ *
76
+ * @param config - Root `DependabitConfig` object.
77
+ * @param url - The URL to test.
78
+ * @returns `true` if the URL should be skipped; `false` otherwise.
79
+ *
80
+ * @remarks
81
+ * Invalid regex patterns in `config.ignore.patterns` are logged as warnings
82
+ * via `console.warn` and skipped rather than throwing.
83
+ *
84
+ * @category Manifest
25
85
  */
26
86
  export declare function shouldIgnoreUrl(config: DependabitConfig, url: string): boolean;
27
87
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGpD;;GAEG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAIxE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAG1D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAIhE;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,gBAAgB,EACxB,aAAa,EAAE,MAAM,GACpB;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC1D,aAAa,EAAE,OAAO,CAAC;CACxB,CAsBA;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CA0B9E"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGpD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAIxE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAG1D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAIhE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,gBAAgB,EACxB,aAAa,EAAE,MAAM,GACpB;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC1D,aAAa,EAAE,OAAO,CAAC;CACxB,CAsBA;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CA0B9E"}
package/dist/config.js CHANGED
@@ -3,7 +3,22 @@ import YAML from 'yaml';
3
3
  import {} from './schema.js';
4
4
  import { validateConfig } from './validator.js';
5
5
  /**
6
- * Parse and validate a YAML configuration file
6
+ * Reads a YAML configuration file from disk, parses it, and validates it
7
+ * against `DependabitConfigSchema`.
8
+ *
9
+ * @param path - Path to the `.dependabit.yml` (or `.json`) file.
10
+ * @returns The validated `DependabitConfig` object.
11
+ *
12
+ * @throws {ValidationError} If the YAML does not match the config schema.
13
+ * @throws {Error} If the file cannot be read.
14
+ *
15
+ * @category Manifest
16
+ *
17
+ * @never
18
+ * - YAML comments are parsed but not preserved in the returned object.
19
+ * A subsequent `stringifyConfig` call will lose all comments.
20
+ * - Duplicate YAML keys are silently overwritten by the YAML parser (last
21
+ * value wins) — no warning is emitted.
7
22
  */
8
23
  export async function readConfig(path) {
9
24
  const content = await readFile(path, 'utf-8');
@@ -11,14 +26,36 @@ export async function readConfig(path) {
11
26
  return validateConfig(data);
12
27
  }
13
28
  /**
14
- * Parse YAML string to config
29
+ * Parses a YAML string into a validated `DependabitConfig`.
30
+ *
31
+ * @param yaml - Raw YAML or JSON string.
32
+ * @returns Validated config object.
33
+ *
34
+ * @throws {ValidationError} If the parsed data does not satisfy the schema.
35
+ *
36
+ * @category Manifest
37
+ *
38
+ * @useWhen
39
+ * Parsing config from an in-memory string (e.g., fetched from GitHub API).
15
40
  */
16
41
  export function parseConfig(yaml) {
17
42
  const data = YAML.parse(yaml);
18
43
  return validateConfig(data);
19
44
  }
20
45
  /**
21
- * Convert config to YAML string
46
+ * Serialises a validated `DependabitConfig` to a YAML string.
47
+ *
48
+ * @param config - The config to serialise.
49
+ * @returns YAML string representation.
50
+ *
51
+ * @throws {ValidationError} If `config` fails schema validation before
52
+ * serialisation.
53
+ *
54
+ * @category Manifest
55
+ *
56
+ * @never
57
+ * - YAML comments present in the original file are **not** preserved;
58
+ * this function always produces comment-free YAML.
22
59
  */
23
60
  export function stringifyConfig(config) {
24
61
  // Validate before stringifying
@@ -26,8 +63,20 @@ export function stringifyConfig(config) {
26
63
  return YAML.stringify(config);
27
64
  }
28
65
  /**
29
- * Get effective monitoring rules for a dependency
30
- * Merges global config with dependency-specific overrides
66
+ * Resolves the effective monitoring rules for a specific dependency URL by
67
+ * merging global config defaults with any per-URL override defined in
68
+ * `config.dependencies`.
69
+ *
70
+ * @param config - Root `DependabitConfig` object.
71
+ * @param dependencyUrl - The exact URL of the dependency to look up.
72
+ * @returns Resolved `enabled`, `checkFrequency`, and `ignoreChanges` values.
73
+ *
74
+ * @remarks
75
+ * Override matching is performed by exact URL equality. A trailing slash
76
+ * or query parameter difference between the stored URL and the override URL
77
+ * will cause the override to be silently ignored.
78
+ *
79
+ * @category Manifest
31
80
  */
32
81
  export function getEffectiveMonitoringRules(config, dependencyUrl) {
33
82
  // Start with global defaults
@@ -49,7 +98,18 @@ export function getEffectiveMonitoringRules(config, dependencyUrl) {
49
98
  };
50
99
  }
51
100
  /**
52
- * Check if a URL should be ignored based on config
101
+ * Returns `true` if the given URL matches any exclusion rule defined in
102
+ * `config.ignore` (exact URL list or regex pattern list).
103
+ *
104
+ * @param config - Root `DependabitConfig` object.
105
+ * @param url - The URL to test.
106
+ * @returns `true` if the URL should be skipped; `false` otherwise.
107
+ *
108
+ * @remarks
109
+ * Invalid regex patterns in `config.ignore.patterns` are logged as warnings
110
+ * via `console.warn` and skipped rather than throwing.
111
+ *
112
+ * @category Manifest
53
113
  */
54
114
  export function shouldIgnoreUrl(config, url) {
55
115
  if (!config.ignore) {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAyB,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY;IAC3C,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACjC,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,eAAe,CAAC,MAAwB;IACtD,+BAA+B;IAC/B,cAAc,CAAC,MAAM,CAAC,CAAC;IACvB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,2BAA2B,CACzC,MAAwB,EACxB,aAAqB;IAMrB,6BAA6B;IAC7B,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,EAAE,OAAO,IAAI,IAAI,CAAC;IACzD,MAAM,oBAAoB,GAAG,MAAM,CAAC,QAAQ,EAAE,QAAQ,IAAI,OAAO,CAAC;IAElE,oCAAoC;IACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,aAAa,CAAC,CAAC;IAE/E,IAAI,QAAQ,EAAE,UAAU,EAAE,CAAC;QACzB,OAAO;YACL,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,OAAO,IAAI,aAAa;YACrD,cAAc,EACZ,QAAQ,CAAC,UAAU,CAAC,cAAc,IAAI,QAAQ,CAAC,QAAQ,EAAE,QAAQ,IAAI,oBAAoB;YAC3F,aAAa,EAAE,QAAQ,CAAC,UAAU,CAAC,aAAa,IAAI,KAAK;SAC1D,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,aAAa;QACtB,cAAc,EAAE,oBAAoB;QACpC,aAAa,EAAE,KAAK;KACrB,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,eAAe,CAAC,MAAwB,EAAE,GAAW;IACnE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,0BAA0B;IAC1B,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,2CAA2C;IAC3C,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC3B,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC7C,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;gBAClC,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBACpB,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,mDAAmD;gBACnD,OAAO,CAAC,IAAI,CAAC,oDAAoD,OAAO,EAAE,CAAC,CAAC;YAC9E,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1,10 +1,46 @@
1
1
  import { type DependencyManifest, type DependencyEntry } from './schema.js';
2
2
  /**
3
- * Read and parse a manifest file
3
+ * Reads a manifest JSON file from disk and validates it against
4
+ * `DependencyManifestSchema`.
5
+ *
6
+ * @param path - Absolute or process-relative path to the manifest file.
7
+ * @returns The validated manifest object.
8
+ *
9
+ * @throws {ValidationError} If the file content does not match the schema.
10
+ * @throws {Error} If the file cannot be read (e.g., not found, permissions).
11
+ *
12
+ * @category Manifest
13
+ *
14
+ * @useWhen Loading an existing manifest to pass to the monitor or detector.
15
+ *
16
+ * @never
17
+ * - The file is parsed as JSON, not YAML. Passing a YAML manifest path
18
+ * will throw a `SyntaxError`; use `readConfig` for YAML.
4
19
  */
5
20
  export declare function readManifest(path: string): Promise<DependencyManifest>;
6
21
  /**
7
- * Write a manifest to file
22
+ * Serialises a manifest to pretty-printed JSON and writes it to disk.
23
+ *
24
+ * @remarks
25
+ * The directory is created recursively if it does not exist.
26
+ * When `strict` is `false` (the default) the file is written even if
27
+ * validation fails; validation errors are returned in the result so callers
28
+ * can surface them as warnings.
29
+ *
30
+ * @param path - Destination file path.
31
+ * @param manifest - Manifest object to write.
32
+ * @param options - Optional write behaviour overrides.
33
+ * @returns An object that may contain `validationErrors` if the manifest
34
+ * has schema violations and `strict` is `false`.
35
+ *
36
+ * @throws {ValidationError} Only when `options.strict` is `true` and the
37
+ * manifest fails validation.
38
+ *
39
+ * @category Manifest
40
+ *
41
+ * @never
42
+ * - Writing a manifest with `strict: false` can persist invalid data that
43
+ * later fails to parse. Prefer `strict: true` in production pipelines.
8
44
  */
9
45
  export declare function writeManifest(path: string, manifest: DependencyManifest, options?: {
10
46
  strict?: boolean;
@@ -12,27 +48,114 @@ export declare function writeManifest(path: string, manifest: DependencyManifest
12
48
  validationErrors?: string[];
13
49
  }>;
14
50
  /**
15
- * Update a dependency entry in the manifest
51
+ * Updates a single dependency entry in the on-disk manifest by ID.
52
+ *
53
+ * @param path - Path to the manifest file.
54
+ * @param dependencyId - UUID of the dependency to update.
55
+ * @param updates - Partial `DependencyEntry` fields to merge.
56
+ * @returns The updated manifest.
57
+ *
58
+ * @throws {Error} If no dependency with `dependencyId` is found.
59
+ * @throws {ValidationError} If the merged entry fails schema validation.
60
+ *
61
+ * @category Manifest
62
+ *
63
+ * @never
64
+ * - This function performs a **read–modify–write** cycle. Concurrent calls
65
+ * with the same `path` and different `dependencyId` values will race and
66
+ * one write will silently overwrite the other. Use a file lock or
67
+ * serialise calls if running multiple monitors in parallel.
16
68
  */
17
69
  export declare function updateDependency(path: string, dependencyId: string, updates: Partial<DependencyEntry>): Promise<DependencyManifest>;
18
70
  /**
19
- * Add a new dependency to the manifest
71
+ * Appends a new dependency entry to the on-disk manifest.
72
+ *
73
+ * @param path - Path to the manifest file.
74
+ * @param dependency - The new `DependencyEntry` to add.
75
+ * @returns The updated manifest.
76
+ *
77
+ * @throws {Error} If a dependency with the same `id` or `url` already exists.
78
+ *
79
+ * @category Manifest
80
+ *
81
+ * @never
82
+ * - Duplicate URL detection is exact-match only. Trailing slashes or
83
+ * fragment identifiers will not be treated as duplicates.
84
+ * - Same race condition as {@link updateDependency} applies.
20
85
  */
21
86
  export declare function addDependency(path: string, dependency: DependencyEntry): Promise<DependencyManifest>;
22
87
  /**
23
- * Remove a dependency from the manifest
88
+ * Removes a dependency from the on-disk manifest by ID.
89
+ *
90
+ * @param path - Path to the manifest file.
91
+ * @param dependencyId - UUID of the dependency to remove.
92
+ * @returns The updated manifest.
93
+ *
94
+ * @throws {Error} If no dependency with `dependencyId` is found.
95
+ *
96
+ * @category Manifest
24
97
  */
25
98
  export declare function removeDependency(path: string, dependencyId: string): Promise<DependencyManifest>;
26
99
  /**
27
- * Merge two manifests, preserving manual entries
28
- * Manual entries are those with detectionMethod === 'manual'
100
+ * Merges an `updated` manifest generated by the detector over an `existing`
101
+ * one, optionally preserving manual entries and accumulated change history.
102
+ *
103
+ * @remarks
104
+ * The merge strategy is:
105
+ * - All entries from `updated` are taken as the new ground truth.
106
+ * - If `preserveManual` is `true` (default), manual entries in `existing`
107
+ * that are absent from `updated` are appended as-is.
108
+ * - If `preserveHistory` is `true` (default), any `changeHistory` from
109
+ * `existing` is prepended to the corresponding entry in `updated`.
110
+ *
111
+ * Statistics are recalculated from the merged dependency list.
112
+ *
113
+ * @param existing - The current on-disk manifest.
114
+ * @param updated - The freshly-detected manifest to merge.
115
+ * @param options - Merge strategy options.
116
+ * @returns A new manifest object (does not mutate either input).
117
+ *
118
+ * @category Manifest
119
+ *
120
+ * @useWhen
121
+ * Applying the output of {@link Detector} to an existing manifest without
122
+ * losing manually-curated entries or historical change records.
123
+ *
124
+ * @avoidWhen
125
+ * You want to completely replace the existing manifest — just write
126
+ * `updated` directly via {@link writeManifest}.
127
+ *
128
+ * @never
129
+ * - Matching between `existing` and `updated` uses `id` **or** `url`.
130
+ * If the URL of a dependency changes (e.g. a redirect is resolved), the
131
+ * entry will be treated as new and history will not be preserved.
132
+ * - `preserveManual: true` can re-add entries that were intentionally
133
+ * removed from the repository. Set it to `false` when performing a
134
+ * deliberate full refresh.
29
135
  */
30
136
  export declare function mergeManifests(existing: DependencyManifest, updated: DependencyManifest, options?: {
31
137
  preserveManual?: boolean;
32
138
  preserveHistory?: boolean;
33
139
  }): DependencyManifest;
34
140
  /**
35
- * Create an empty manifest template
141
+ * Creates a minimal, valid manifest with an empty `dependencies` array.
142
+ *
143
+ * @remarks
144
+ * Use this as the starting point when generating a manifest from scratch
145
+ * (e.g. on first run in a new repository).
146
+ *
147
+ * @returns A new `DependencyManifest` with zeroed statistics.
148
+ *
149
+ * @category Manifest
150
+ *
151
+ * @example
152
+ * ```ts
153
+ * const manifest = createEmptyManifest({
154
+ * owner: 'my-org', name: 'my-repo',
155
+ * branch: 'main', commit: 'abc123',
156
+ * });
157
+ * await writeManifest('.dependabit/manifest.json', manifest);
158
+ * ```
36
159
  */
37
160
  export declare function createEmptyManifest(options: {
38
161
  owner: string;
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAG5E;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAI5E;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7B,OAAO,CAAC;IAAE,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAuB1C;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,GAChC,OAAO,CAAC,kBAAkB,CAAC,CAqB7B;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,eAAe,GAC1B,OAAO,CAAC,kBAAkB,CAAC,CAyB7B;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,kBAAkB,CAAC,CAkB7B;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,kBAAkB,EAC3B,OAAO,GAAE;IACP,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;CACtB,GACL,kBAAkB,CAqDpB;AAyCD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,kBAAkB,CAyBrB"}
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAG5E;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAI5E;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7B,OAAO,CAAC;IAAE,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAuB1C;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,GAChC,OAAO,CAAC,kBAAkB,CAAC,CAqB7B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,eAAe,GAC1B,OAAO,CAAC,kBAAkB,CAAC,CAyB7B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,kBAAkB,CAAC,CAkB7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,kBAAkB,EAC3B,OAAO,GAAE;IACP,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;CACtB,GACL,kBAAkB,CAqDpB;AAyCD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,kBAAkB,CAyBrB"}
package/dist/manifest.js CHANGED
@@ -3,7 +3,22 @@ import { dirname } from 'node:path';
3
3
  import {} from './schema.js';
4
4
  import { validateManifest, validateDependencyEntry, safeValidateManifest } from './validator.js';
5
5
  /**
6
- * Read and parse a manifest file
6
+ * Reads a manifest JSON file from disk and validates it against
7
+ * `DependencyManifestSchema`.
8
+ *
9
+ * @param path - Absolute or process-relative path to the manifest file.
10
+ * @returns The validated manifest object.
11
+ *
12
+ * @throws {ValidationError} If the file content does not match the schema.
13
+ * @throws {Error} If the file cannot be read (e.g., not found, permissions).
14
+ *
15
+ * @category Manifest
16
+ *
17
+ * @useWhen Loading an existing manifest to pass to the monitor or detector.
18
+ *
19
+ * @never
20
+ * - The file is parsed as JSON, not YAML. Passing a YAML manifest path
21
+ * will throw a `SyntaxError`; use `readConfig` for YAML.
7
22
  */
8
23
  export async function readManifest(path) {
9
24
  const content = await readFile(path, 'utf-8');
@@ -11,7 +26,28 @@ export async function readManifest(path) {
11
26
  return validateManifest(data);
12
27
  }
13
28
  /**
14
- * Write a manifest to file
29
+ * Serialises a manifest to pretty-printed JSON and writes it to disk.
30
+ *
31
+ * @remarks
32
+ * The directory is created recursively if it does not exist.
33
+ * When `strict` is `false` (the default) the file is written even if
34
+ * validation fails; validation errors are returned in the result so callers
35
+ * can surface them as warnings.
36
+ *
37
+ * @param path - Destination file path.
38
+ * @param manifest - Manifest object to write.
39
+ * @param options - Optional write behaviour overrides.
40
+ * @returns An object that may contain `validationErrors` if the manifest
41
+ * has schema violations and `strict` is `false`.
42
+ *
43
+ * @throws {ValidationError} Only when `options.strict` is `true` and the
44
+ * manifest fails validation.
45
+ *
46
+ * @category Manifest
47
+ *
48
+ * @never
49
+ * - Writing a manifest with `strict: false` can persist invalid data that
50
+ * later fails to parse. Prefer `strict: true` in production pipelines.
15
51
  */
16
52
  export async function writeManifest(path, manifest, options) {
17
53
  const strict = options?.strict ?? false;
@@ -34,7 +70,23 @@ export async function writeManifest(path, manifest, options) {
34
70
  return result;
35
71
  }
36
72
  /**
37
- * Update a dependency entry in the manifest
73
+ * Updates a single dependency entry in the on-disk manifest by ID.
74
+ *
75
+ * @param path - Path to the manifest file.
76
+ * @param dependencyId - UUID of the dependency to update.
77
+ * @param updates - Partial `DependencyEntry` fields to merge.
78
+ * @returns The updated manifest.
79
+ *
80
+ * @throws {Error} If no dependency with `dependencyId` is found.
81
+ * @throws {ValidationError} If the merged entry fails schema validation.
82
+ *
83
+ * @category Manifest
84
+ *
85
+ * @never
86
+ * - This function performs a **read–modify–write** cycle. Concurrent calls
87
+ * with the same `path` and different `dependencyId` values will race and
88
+ * one write will silently overwrite the other. Use a file lock or
89
+ * serialise calls if running multiple monitors in parallel.
38
90
  */
39
91
  export async function updateDependency(path, dependencyId, updates) {
40
92
  const manifest = await readManifest(path);
@@ -53,7 +105,20 @@ export async function updateDependency(path, dependencyId, updates) {
53
105
  return manifest;
54
106
  }
55
107
  /**
56
- * Add a new dependency to the manifest
108
+ * Appends a new dependency entry to the on-disk manifest.
109
+ *
110
+ * @param path - Path to the manifest file.
111
+ * @param dependency - The new `DependencyEntry` to add.
112
+ * @returns The updated manifest.
113
+ *
114
+ * @throws {Error} If a dependency with the same `id` or `url` already exists.
115
+ *
116
+ * @category Manifest
117
+ *
118
+ * @never
119
+ * - Duplicate URL detection is exact-match only. Trailing slashes or
120
+ * fragment identifiers will not be treated as duplicates.
121
+ * - Same race condition as {@link updateDependency} applies.
57
122
  */
58
123
  export async function addDependency(path, dependency) {
59
124
  const manifest = await readManifest(path);
@@ -75,7 +140,15 @@ export async function addDependency(path, dependency) {
75
140
  return manifest;
76
141
  }
77
142
  /**
78
- * Remove a dependency from the manifest
143
+ * Removes a dependency from the on-disk manifest by ID.
144
+ *
145
+ * @param path - Path to the manifest file.
146
+ * @param dependencyId - UUID of the dependency to remove.
147
+ * @returns The updated manifest.
148
+ *
149
+ * @throws {Error} If no dependency with `dependencyId` is found.
150
+ *
151
+ * @category Manifest
79
152
  */
80
153
  export async function removeDependency(path, dependencyId) {
81
154
  const manifest = await readManifest(path);
@@ -92,8 +165,41 @@ export async function removeDependency(path, dependencyId) {
92
165
  return manifest;
93
166
  }
94
167
  /**
95
- * Merge two manifests, preserving manual entries
96
- * Manual entries are those with detectionMethod === 'manual'
168
+ * Merges an `updated` manifest generated by the detector over an `existing`
169
+ * one, optionally preserving manual entries and accumulated change history.
170
+ *
171
+ * @remarks
172
+ * The merge strategy is:
173
+ * - All entries from `updated` are taken as the new ground truth.
174
+ * - If `preserveManual` is `true` (default), manual entries in `existing`
175
+ * that are absent from `updated` are appended as-is.
176
+ * - If `preserveHistory` is `true` (default), any `changeHistory` from
177
+ * `existing` is prepended to the corresponding entry in `updated`.
178
+ *
179
+ * Statistics are recalculated from the merged dependency list.
180
+ *
181
+ * @param existing - The current on-disk manifest.
182
+ * @param updated - The freshly-detected manifest to merge.
183
+ * @param options - Merge strategy options.
184
+ * @returns A new manifest object (does not mutate either input).
185
+ *
186
+ * @category Manifest
187
+ *
188
+ * @useWhen
189
+ * Applying the output of {@link Detector} to an existing manifest without
190
+ * losing manually-curated entries or historical change records.
191
+ *
192
+ * @avoidWhen
193
+ * You want to completely replace the existing manifest — just write
194
+ * `updated` directly via {@link writeManifest}.
195
+ *
196
+ * @never
197
+ * - Matching between `existing` and `updated` uses `id` **or** `url`.
198
+ * If the URL of a dependency changes (e.g. a redirect is resolved), the
199
+ * entry will be treated as new and history will not be preserved.
200
+ * - `preserveManual: true` can re-add entries that were intentionally
201
+ * removed from the repository. Set it to `false` when performing a
202
+ * deliberate full refresh.
97
203
  */
98
204
  export function mergeManifests(existing, updated, options = {}) {
99
205
  const { preserveManual = true, preserveHistory = true } = options;
@@ -171,7 +277,24 @@ function calculateStatistics(dependencies) {
171
277
  };
172
278
  }
173
279
  /**
174
- * Create an empty manifest template
280
+ * Creates a minimal, valid manifest with an empty `dependencies` array.
281
+ *
282
+ * @remarks
283
+ * Use this as the starting point when generating a manifest from scratch
284
+ * (e.g. on first run in a new repository).
285
+ *
286
+ * @returns A new `DependencyManifest` with zeroed statistics.
287
+ *
288
+ * @category Manifest
289
+ *
290
+ * @example
291
+ * ```ts
292
+ * const manifest = createEmptyManifest({
293
+ * owner: 'my-org', name: 'my-repo',
294
+ * branch: 'main', commit: 'abc123',
295
+ * });
296
+ * await writeManifest('.dependabit/manifest.json', manifest);
297
+ * ```
175
298
  */
176
299
  export function createEmptyManifest(options) {
177
300
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAiD,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEjG;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAY,EAA+B;IAC5E,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACjC,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAAA,CAC/B;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAY,EACZ,QAA4B,EAC5B,OAA8B,EACY;IAC1C,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,KAAK,CAAC;IACxC,MAAM,MAAM,GAAoC,EAAE,CAAC;IAEnD,0BAA0B;IAC1B,MAAM,UAAU,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAClD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,UAAU,CAAC,KAAM,CAAC,kBAAkB,EAAE,CAAC;QACtD,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,UAAU,CAAC,KAAM,CAAC;QAC1B,CAAC;QACD,2DAA2D;QAC3D,MAAM,CAAC,gBAAgB,GAAG,MAAM,CAAC;IACnC,CAAC;IAED,0BAA0B;IAC1B,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEhD,uBAAuB;IACvB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAClD,MAAM,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAExC,OAAO,MAAM,CAAC;AAAA,CACf;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAAY,EACZ,YAAoB,EACpB,OAAiC,EACJ;IAC7B,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;IAE1C,MAAM,GAAG,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,YAAY,CAAC,CAAC;IACrE,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,sBAAsB,YAAY,YAAY,CAAC,CAAC;IAClE,CAAC;IAED,iCAAiC;IACjC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAE5B,iCAAiC;IACjC,uBAAuB,CAAC,GAAG,CAAC,CAAC;IAE7B,oBAAoB;IACpB,QAAQ,CAAC,UAAU,GAAG,mBAAmB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAEjE,aAAa;IACb,MAAM,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAEpC,OAAO,QAAQ,CAAC;AAAA,CACjB;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAY,EACZ,UAA2B,EACE;IAC7B,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;IAE1C,oCAAoC;IACpC,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,CAAC,CAAC;IACnF,MAAM,aAAa,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,CAAC,CAAC;IAEtF,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,sBAAsB,UAAU,CAAC,EAAE,iBAAiB,CAAC,CAAC;IACxE,CAAC;IAED,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,uBAAuB,UAAU,CAAC,GAAG,iBAAiB,CAAC,CAAC;IAC1E,CAAC;IAED,iBAAiB;IACjB,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAEvC,oBAAoB;IACpB,QAAQ,CAAC,UAAU,GAAG,mBAAmB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAEjE,aAAa;IACb,MAAM,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAEpC,OAAO,QAAQ,CAAC;AAAA,CACjB;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAAY,EACZ,YAAoB,EACS;IAC7B,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;IAE1C,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,YAAY,CAAC,CAAC;IAChF,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,sBAAsB,YAAY,YAAY,CAAC,CAAC;IAClE,CAAC;IAED,oBAAoB;IACpB,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAEvC,oBAAoB;IACpB,QAAQ,CAAC,UAAU,GAAG,mBAAmB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAEjE,aAAa;IACb,MAAM,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAEpC,OAAO,QAAQ,CAAC;AAAA,CACjB;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,QAA4B,EAC5B,OAA2B,EAC3B,OAAO,GAGH,EAAE,EACc;IACpB,MAAM,EAAE,cAAc,GAAG,IAAI,EAAE,eAAe,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAElE,gEAAgE;IAChE,MAAM,MAAM,GAAuB;QACjC,GAAG,OAAO;QACV,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC/C,GAAG,GAAG;YACN,aAAa,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE;YAC9D,YAAY,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE;SAC5D,CAAC,CAAC;KACJ,CAAC;IAEF,IAAI,cAAc,EAAE,CAAC;QACnB,2CAA2C;QAC3C,MAAM,aAAa,GAAG,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,eAAe,KAAK,QAAQ,CAAC,CAAC;QAE9F,yDAAyD;QACzD,KAAK,MAAM,WAAW,IAAI,aAAa,EAAE,CAAC;YACxC,MAAM,eAAe,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAC9C,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,WAAW,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,KAAK,WAAW,CAAC,GAAG,CAClE,CAAC;YAEF,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC;oBACvB,GAAG,WAAW;oBACd,aAAa,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE;oBAC9E,YAAY,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE;iBAC5E,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,eAAe,EAAE,CAAC;QACpB,oDAAoD;QACpD,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;YACrD,MAAM,WAAW,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;YAE5F,IAAI,WAAW,IAAI,WAAW,CAAC,aAAa,IAAI,WAAW,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrF,OAAO;oBACL,GAAG,GAAG;oBACN,aAAa,EAAE,CAAC,GAAG,WAAW,CAAC,aAAa,EAAE,GAAG,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;iBAC5E,CAAC;YACJ,CAAC;YAED,OAAO,GAAG,CAAC;QAAA,CACZ,CAAC,CAAC;IACL,CAAC;IAED,yBAAyB;IACzB,MAAM,CAAC,UAAU,GAAG,mBAAmB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAE7D,OAAO,MAAM,CAAC;AAAA,CACf;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,YAA+B,EAAoC;IAC9F,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,MAAM,cAAc,GAA2B,EAAE,CAAC;IAClD,MAAM,iBAAiB,GAA2B,EAAE,CAAC;IACrD,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,IAAI,kBAAkB,GAAG,CAAC,CAAC;IAC3B,IAAI,gBAAgB,GAAG,CAAC,CAAC;IAEzB,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC/C,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC/E,iBAAiB,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC3F,eAAe,IAAI,GAAG,CAAC,mBAAmB,CAAC;QAE3C,0CAA0C;QAC1C,MAAM,aAAa,GAAG,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC;QAC9E,kBAAkB,IAAI,OAAO,CAAC;QAC9B,gBAAgB,IAAI,aAAa,CAAC,MAAM,CAAC;IAC3C,CAAC;IAED,MAAM,iBAAiB,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9F,MAAM,iBAAiB,GACrB,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,GAAG,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC;IAE3E,OAAO;QACL,iBAAiB,EAAE,YAAY,CAAC,MAAM;QACtC,MAAM;QACN,cAAc;QACd,iBAAiB;QACjB,iBAAiB;QACjB,iBAAiB;KAClB,CAAC;AAAA,CACH;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,OASnC,EAAsB;IACrB,OAAO;QACL,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,WAAW,EAAE;YACX,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,YAAY;YACtC,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,OAAO;YACnC,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,gBAAgB;YACpD,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B;QACD,UAAU,EAAE;YACV,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB;QACD,YAAY,EAAE,EAAE;QAChB,UAAU,EAAE;YACV,iBAAiB,EAAE,CAAC;YACpB,MAAM,EAAE,EAAE;YACV,cAAc,EAAE,EAAE;YAClB,iBAAiB,EAAE,EAAE;YACrB,iBAAiB,EAAE,CAAC;SACrB;KACF,CAAC;AAAA,CACH"}
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}