@uncefact/untp-utils 0.2.0 → 0.3.0
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/README.md +40 -12
- package/artefacts/context/untp/0.6.0/dcc.json +1241 -0
- package/artefacts/context/untp/0.6.0/dfr.json +619 -0
- package/artefacts/context/untp/0.6.0/dia.json +162 -0
- package/artefacts/context/untp/0.6.0/dpp.json +1078 -0
- package/artefacts/context/untp/0.6.0/dte.json +1285 -0
- package/artefacts/context/untp/0.6.1/dcc.json +1388 -0
- package/artefacts/context/untp/0.6.1/dfr.json +690 -0
- package/artefacts/context/untp/0.6.1/dia.json +196 -0
- package/artefacts/context/untp/0.6.1/dpp.json +1164 -0
- package/artefacts/context/untp/0.6.1/dte.json +1340 -0
- package/artefacts/context/untp/0.7.0/untp.json +3493 -0
- package/artefacts/context/vcdm/2/credentials.json +301 -0
- package/artefacts/manifest.json +214 -0
- package/artefacts/schema/untp/0.6.0/dcc.json +1131 -0
- package/artefacts/schema/untp/0.6.0/dfr.json +1028 -0
- package/artefacts/schema/untp/0.6.0/dia.json +236 -0
- package/artefacts/schema/untp/0.6.0/dpp.json +1219 -0
- package/artefacts/schema/untp/0.6.0/dte.json +845 -0
- package/artefacts/schema/untp/0.6.1/dcc.json +1196 -0
- package/artefacts/schema/untp/0.6.1/dfr.json +1037 -0
- package/artefacts/schema/untp/0.6.1/dia.json +236 -0
- package/artefacts/schema/untp/0.6.1/dpp.json +1229 -0
- package/artefacts/schema/untp/0.6.1/dte.json +845 -0
- package/artefacts/schema/untp/0.7.0/cvc.json +701 -0
- package/artefacts/schema/untp/0.7.0/dcc.json +1133 -0
- package/artefacts/schema/untp/0.7.0/dfr.json +1245 -0
- package/artefacts/schema/untp/0.7.0/dia.json +443 -0
- package/artefacts/schema/untp/0.7.0/dpp.json +1300 -0
- package/artefacts/schema/untp/0.7.0/dte.json +1226 -0
- package/artefacts/schema/untp/0.7.0/linkset.json +119 -0
- package/artefacts/schema/vcdm/2/verifiable-credential.json +318 -0
- package/build/artefacts/urls.d.ts +6 -0
- package/build/artefacts/urls.js +8 -0
- package/build/artefacts/urls.js.map +1 -1
- package/build/artefacts/urls.test.js +9 -1
- package/build/artefacts/urls.test.js.map +1 -1
- package/build/bundle/artefacts/context/untp/0.6.0/dcc.d.ts +2 -0
- package/build/bundle/artefacts/context/untp/0.6.0/dcc.js +1244 -0
- package/build/bundle/artefacts/context/untp/0.6.0/dcc.js.map +1 -0
- package/build/bundle/artefacts/context/untp/0.6.0/dfr.d.ts +2 -0
- package/build/bundle/artefacts/context/untp/0.6.0/dfr.js +622 -0
- package/build/bundle/artefacts/context/untp/0.6.0/dfr.js.map +1 -0
- package/build/bundle/artefacts/context/untp/0.6.0/dia.d.ts +2 -0
- package/build/bundle/artefacts/context/untp/0.6.0/dia.js +165 -0
- package/build/bundle/artefacts/context/untp/0.6.0/dia.js.map +1 -0
- package/build/bundle/artefacts/context/untp/0.6.0/dpp.d.ts +2 -0
- package/build/bundle/artefacts/context/untp/0.6.0/dpp.js +1081 -0
- package/build/bundle/artefacts/context/untp/0.6.0/dpp.js.map +1 -0
- package/build/bundle/artefacts/context/untp/0.6.0/dte.d.ts +2 -0
- package/build/bundle/artefacts/context/untp/0.6.0/dte.js +1288 -0
- package/build/bundle/artefacts/context/untp/0.6.0/dte.js.map +1 -0
- package/build/bundle/artefacts/context/untp/0.6.1/dcc.d.ts +2 -0
- package/build/bundle/artefacts/context/untp/0.6.1/dcc.js +1391 -0
- package/build/bundle/artefacts/context/untp/0.6.1/dcc.js.map +1 -0
- package/build/bundle/artefacts/context/untp/0.6.1/dfr.d.ts +2 -0
- package/build/bundle/artefacts/context/untp/0.6.1/dfr.js +693 -0
- package/build/bundle/artefacts/context/untp/0.6.1/dfr.js.map +1 -0
- package/build/bundle/artefacts/context/untp/0.6.1/dia.d.ts +2 -0
- package/build/bundle/artefacts/context/untp/0.6.1/dia.js +199 -0
- package/build/bundle/artefacts/context/untp/0.6.1/dia.js.map +1 -0
- package/build/bundle/artefacts/context/untp/0.6.1/dpp.d.ts +2 -0
- package/build/bundle/artefacts/context/untp/0.6.1/dpp.js +1167 -0
- package/build/bundle/artefacts/context/untp/0.6.1/dpp.js.map +1 -0
- package/build/bundle/artefacts/context/untp/0.6.1/dte.d.ts +2 -0
- package/build/bundle/artefacts/context/untp/0.6.1/dte.js +1343 -0
- package/build/bundle/artefacts/context/untp/0.6.1/dte.js.map +1 -0
- package/build/bundle/artefacts/context/untp/0.7.0/untp.d.ts +2 -0
- package/build/bundle/artefacts/context/untp/0.7.0/untp.js +3496 -0
- package/build/bundle/artefacts/context/untp/0.7.0/untp.js.map +1 -0
- package/build/bundle/artefacts/context/vcdm/2/credentials.d.ts +2 -0
- package/build/bundle/artefacts/context/vcdm/2/credentials.js +304 -0
- package/build/bundle/artefacts/context/vcdm/2/credentials.js.map +1 -0
- package/build/bundle/artefacts/schema/untp/0.6.0/dcc.d.ts +2 -0
- package/build/bundle/artefacts/schema/untp/0.6.0/dcc.js +1134 -0
- package/build/bundle/artefacts/schema/untp/0.6.0/dcc.js.map +1 -0
- package/build/bundle/artefacts/schema/untp/0.6.0/dfr.d.ts +2 -0
- package/build/bundle/artefacts/schema/untp/0.6.0/dfr.js +1031 -0
- package/build/bundle/artefacts/schema/untp/0.6.0/dfr.js.map +1 -0
- package/build/bundle/artefacts/schema/untp/0.6.0/dia.d.ts +2 -0
- package/build/bundle/artefacts/schema/untp/0.6.0/dia.js +239 -0
- package/build/bundle/artefacts/schema/untp/0.6.0/dia.js.map +1 -0
- package/build/bundle/artefacts/schema/untp/0.6.0/dpp.d.ts +2 -0
- package/build/bundle/artefacts/schema/untp/0.6.0/dpp.js +1222 -0
- package/build/bundle/artefacts/schema/untp/0.6.0/dpp.js.map +1 -0
- package/build/bundle/artefacts/schema/untp/0.6.0/dte.d.ts +2 -0
- package/build/bundle/artefacts/schema/untp/0.6.0/dte.js +848 -0
- package/build/bundle/artefacts/schema/untp/0.6.0/dte.js.map +1 -0
- package/build/bundle/artefacts/schema/untp/0.6.1/dcc.d.ts +2 -0
- package/build/bundle/artefacts/schema/untp/0.6.1/dcc.js +1199 -0
- package/build/bundle/artefacts/schema/untp/0.6.1/dcc.js.map +1 -0
- package/build/bundle/artefacts/schema/untp/0.6.1/dfr.d.ts +2 -0
- package/build/bundle/artefacts/schema/untp/0.6.1/dfr.js +1040 -0
- package/build/bundle/artefacts/schema/untp/0.6.1/dfr.js.map +1 -0
- package/build/bundle/artefacts/schema/untp/0.6.1/dia.d.ts +2 -0
- package/build/bundle/artefacts/schema/untp/0.6.1/dia.js +239 -0
- package/build/bundle/artefacts/schema/untp/0.6.1/dia.js.map +1 -0
- package/build/bundle/artefacts/schema/untp/0.6.1/dpp.d.ts +2 -0
- package/build/bundle/artefacts/schema/untp/0.6.1/dpp.js +1232 -0
- package/build/bundle/artefacts/schema/untp/0.6.1/dpp.js.map +1 -0
- package/build/bundle/artefacts/schema/untp/0.6.1/dte.d.ts +2 -0
- package/build/bundle/artefacts/schema/untp/0.6.1/dte.js +848 -0
- package/build/bundle/artefacts/schema/untp/0.6.1/dte.js.map +1 -0
- package/build/bundle/artefacts/schema/untp/0.7.0/cvc.d.ts +2 -0
- package/build/bundle/artefacts/schema/untp/0.7.0/cvc.js +704 -0
- package/build/bundle/artefacts/schema/untp/0.7.0/cvc.js.map +1 -0
- package/build/bundle/artefacts/schema/untp/0.7.0/dcc.d.ts +2 -0
- package/build/bundle/artefacts/schema/untp/0.7.0/dcc.js +1136 -0
- package/build/bundle/artefacts/schema/untp/0.7.0/dcc.js.map +1 -0
- package/build/bundle/artefacts/schema/untp/0.7.0/dfr.d.ts +2 -0
- package/build/bundle/artefacts/schema/untp/0.7.0/dfr.js +1248 -0
- package/build/bundle/artefacts/schema/untp/0.7.0/dfr.js.map +1 -0
- package/build/bundle/artefacts/schema/untp/0.7.0/dia.d.ts +2 -0
- package/build/bundle/artefacts/schema/untp/0.7.0/dia.js +446 -0
- package/build/bundle/artefacts/schema/untp/0.7.0/dia.js.map +1 -0
- package/build/bundle/artefacts/schema/untp/0.7.0/dpp.d.ts +2 -0
- package/build/bundle/artefacts/schema/untp/0.7.0/dpp.js +1303 -0
- package/build/bundle/artefacts/schema/untp/0.7.0/dpp.js.map +1 -0
- package/build/bundle/artefacts/schema/untp/0.7.0/dte.d.ts +2 -0
- package/build/bundle/artefacts/schema/untp/0.7.0/dte.js +1229 -0
- package/build/bundle/artefacts/schema/untp/0.7.0/dte.js.map +1 -0
- package/build/bundle/artefacts/schema/untp/0.7.0/linkset.d.ts +2 -0
- package/build/bundle/artefacts/schema/untp/0.7.0/linkset.js +122 -0
- package/build/bundle/artefacts/schema/untp/0.7.0/linkset.js.map +1 -0
- package/build/bundle/artefacts/schema/vcdm/2/verifiable-credential.d.ts +2 -0
- package/build/bundle/artefacts/schema/vcdm/2/verifiable-credential.js +321 -0
- package/build/bundle/artefacts/schema/vcdm/2/verifiable-credential.js.map +1 -0
- package/build/bundle/fallback.d.ts +41 -0
- package/build/bundle/fallback.js +62 -0
- package/build/bundle/fallback.js.map +1 -0
- package/build/bundle/fallback.test.d.ts +1 -0
- package/build/bundle/fallback.test.js +124 -0
- package/build/bundle/fallback.test.js.map +1 -0
- package/build/bundle/index.d.ts +4 -0
- package/build/bundle/index.js +77 -0
- package/build/bundle/index.js.map +1 -0
- package/build/bundle/lookup.d.ts +14 -0
- package/build/bundle/lookup.js +40 -0
- package/build/bundle/lookup.js.map +1 -0
- package/build/bundle/lookup.test.d.ts +1 -0
- package/build/bundle/lookup.test.js +70 -0
- package/build/bundle/lookup.test.js.map +1 -0
- package/build/bundle/public.d.ts +25 -0
- package/build/bundle/public.js +56 -0
- package/build/bundle/public.js.map +1 -0
- package/build/bundle/public.test.d.ts +1 -0
- package/build/bundle/public.test.js +35 -0
- package/build/bundle/public.test.js.map +1 -0
- package/build/bundle/refresh-classify.test.d.ts +1 -0
- package/build/bundle/refresh-classify.test.js +20 -0
- package/build/bundle/refresh-classify.test.js.map +1 -0
- package/build/bundle/refresh-main.test.d.ts +1 -0
- package/build/bundle/refresh-main.test.js +98 -0
- package/build/bundle/refresh-main.test.js.map +1 -0
- package/build/common/as-date-time.d.ts +13 -0
- package/build/common/as-date-time.js +44 -0
- package/build/common/as-date-time.js.map +1 -0
- package/build/common/as-date-time.test.d.ts +1 -0
- package/build/common/as-date-time.test.js +42 -0
- package/build/common/as-date-time.test.js.map +1 -0
- package/build/common/as-non-empty-string.d.ts +11 -4
- package/build/common/as-non-empty-string.js +15 -5
- package/build/common/as-non-empty-string.js.map +1 -1
- package/build/common/as-non-empty-string.test.js +7 -2
- package/build/common/as-non-empty-string.test.js.map +1 -1
- package/build/common/index.d.ts +4 -0
- package/build/common/index.js +5 -0
- package/build/common/index.js.map +1 -0
- package/build/common/validity-window.d.ts +45 -0
- package/build/common/validity-window.js +68 -0
- package/build/common/validity-window.js.map +1 -0
- package/build/common/validity-window.test.d.ts +1 -0
- package/build/common/validity-window.test.js +67 -0
- package/build/common/validity-window.test.js.map +1 -0
- package/build/loaders/index.d.ts +2 -0
- package/build/loaders/index.js +1 -0
- package/build/loaders/index.js.map +1 -1
- package/build/loaders/jsonld-document-loader.d.ts +7 -5
- package/build/loaders/jsonld-document-loader.js +11 -2
- package/build/loaders/jsonld-document-loader.js.map +1 -1
- package/build/loaders/jsonld-document-loader.test.js +41 -1
- package/build/loaders/jsonld-document-loader.test.js.map +1 -1
- package/build/loaders/schema-loader.d.ts +13 -3
- package/build/loaders/schema-loader.js +24 -8
- package/build/loaders/schema-loader.js.map +1 -1
- package/build/loaders/schema-loader.test.js +56 -1
- package/build/loaders/schema-loader.test.js.map +1 -1
- package/build/node/errors.d.ts +9 -3
- package/build/node/errors.js +9 -3
- package/build/node/errors.js.map +1 -1
- package/build/node/index.d.ts +1 -1
- package/build/node/index.js +1 -1
- package/build/node/index.js.map +1 -1
- package/build/node/is-private-ip.d.ts +8 -4
- package/build/node/is-private-ip.fail-closed.test.d.ts +1 -0
- package/build/node/is-private-ip.fail-closed.test.js +36 -0
- package/build/node/is-private-ip.fail-closed.test.js.map +1 -0
- package/build/node/is-private-ip.js +77 -12
- package/build/node/is-private-ip.js.map +1 -1
- package/build/node/is-private-ip.test.js +28 -0
- package/build/node/is-private-ip.test.js.map +1 -1
- package/build/node/validate-public-url.d.ts +43 -11
- package/build/node/validate-public-url.js +68 -34
- package/build/node/validate-public-url.js.map +1 -1
- package/build/node/validate-public-url.test.js +161 -14
- package/build/node/validate-public-url.test.js.map +1 -1
- package/build/resolvers/errors.d.ts +36 -6
- package/build/resolvers/errors.js +41 -7
- package/build/resolvers/errors.js.map +1 -1
- package/build/resolvers/resolve-document-if-changed.test.js +7 -0
- package/build/resolvers/resolve-document-if-changed.test.js.map +1 -1
- package/build/resolvers/resolve-document.d.ts +29 -9
- package/build/resolvers/resolve-document.integration.test.d.ts +1 -0
- package/build/resolvers/resolve-document.integration.test.js +108 -0
- package/build/resolvers/resolve-document.integration.test.js.map +1 -0
- package/build/resolvers/resolve-document.js +129 -49
- package/build/resolvers/resolve-document.js.map +1 -1
- package/build/resolvers/resolve-document.test.js +462 -12
- package/build/resolvers/resolve-document.test.js.map +1 -1
- package/build/resolvers/resolve-json-document.d.ts +11 -8
- package/build/resolvers/resolve-json-document.js +7 -6
- package/build/resolvers/resolve-json-document.js.map +1 -1
- package/build/resolvers/resolve-json-document.test.js +21 -4
- package/build/resolvers/resolve-json-document.test.js.map +1 -1
- package/build/validation/describe-jsonld-failure.d.ts +48 -8
- package/build/validation/describe-jsonld-failure.js +94 -27
- package/build/validation/describe-jsonld-failure.js.map +1 -1
- package/build/validation/describe-jsonld-failure.test.js +98 -13
- package/build/validation/describe-jsonld-failure.test.js.map +1 -1
- package/build/validation/index.d.ts +3 -2
- package/build/validation/index.js +2 -2
- package/build/validation/index.js.map +1 -1
- package/build/validation/validate-jsonld.d.ts +29 -3
- package/build/validation/validate-jsonld.js +49 -22
- package/build/validation/validate-jsonld.js.map +1 -1
- package/build/validation/validate-jsonld.test.js +62 -5
- package/build/validation/validate-jsonld.test.js.map +1 -1
- package/package.json +23 -3
package/README.md
CHANGED
|
@@ -5,7 +5,7 @@ Shared utility primitives for UNTP packages and consumers.
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
|
|
8
|
+
npm install @uncefact/untp-utils
|
|
9
9
|
```
|
|
10
10
|
|
|
11
11
|
## Sub-entries
|
|
@@ -14,17 +14,19 @@ The package root exports only `StructuredError`, the base class every
|
|
|
14
14
|
sub-entry throws from. Each capability is imported from its own subpath so a
|
|
15
15
|
consumer only pulls in the dependencies it needs.
|
|
16
16
|
|
|
17
|
-
| Subpath | Provides
|
|
18
|
-
| -------------------------------------------- |
|
|
19
|
-
| `@uncefact/untp-utils/multibase-digest` | `MultibaseDigest`: encode, decode and verify multibase-encoded multihashes.
|
|
20
|
-
| `@uncefact/untp-utils/
|
|
21
|
-
| `@uncefact/untp-utils/
|
|
22
|
-
| `@uncefact/untp-utils/
|
|
23
|
-
| `@uncefact/untp-utils/
|
|
24
|
-
| `@uncefact/untp-utils/
|
|
25
|
-
| `@uncefact/untp-utils/
|
|
26
|
-
| `@uncefact/untp-utils/
|
|
27
|
-
| `@uncefact/untp-utils/
|
|
17
|
+
| Subpath | Provides |
|
|
18
|
+
| -------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
19
|
+
| `@uncefact/untp-utils/multibase-digest` | `MultibaseDigest`: encode, decode and verify multibase-encoded multihashes. |
|
|
20
|
+
| `@uncefact/untp-utils/common` | Small document-field readers: `asDateTime`, `asNonEmptyString`, and `makeRequireString` for required fields. |
|
|
21
|
+
| `@uncefact/untp-utils/artefacts` | UNTP schema, context and docs URL helpers, and `detectVersionFromContext`. |
|
|
22
|
+
| `@uncefact/untp-utils/conformity-vocabulary` | Parses a UNTP conformity scheme or catalogue and validates a conformity claim against it. |
|
|
23
|
+
| `@uncefact/untp-utils/validation` | Validates a payload against JSON Schema and expands it as JSON-LD, both guarded against SSRF. |
|
|
24
|
+
| `@uncefact/untp-utils/loaders` | The schema and JSON-LD document loaders `validation` runs on. |
|
|
25
|
+
| `@uncefact/untp-utils/resolvers` | IP-pinned document fetching with a conditional-fetch skip chain. |
|
|
26
|
+
| `@uncefact/untp-utils/node` | `validatePublicUrl`, the SSRF guard the other sub-entries fetch through, with its `isPrivateHostname`, `isPrivateIpv4` and `isPrivateIpv6` predicates and its error classes. |
|
|
27
|
+
| `@uncefact/untp-utils/cache` | `createInMemoryTtlCache`, a bounded in-memory TTL cache. |
|
|
28
|
+
| `@uncefact/untp-utils/bundled-artefacts` | The bundled UNTP and VCDM schemas and contexts, keyed by published URL. |
|
|
29
|
+
| `@uncefact/untp-utils/http-headers` | HTTP header parsing, and the default `User-Agent` guarded fetches send. |
|
|
28
30
|
|
|
29
31
|
Every sub-entry throws a typed error class on failure rather than returning
|
|
30
32
|
an outcome object. See [RELEASE_NOTES.md](./RELEASE_NOTES.md) for what each
|
|
@@ -58,3 +60,29 @@ await parsed.verify(new TextEncoder().encode('hello')); // true | false
|
|
|
58
60
|
Supported algorithms: `sha2-256`, `sha2-512`.
|
|
59
61
|
|
|
60
62
|
Supported multibase encodings: `base58btc`, `base64`.
|
|
63
|
+
|
|
64
|
+
## Bundled UNTP artefacts
|
|
65
|
+
|
|
66
|
+
The bundle contains the enumerated artefacts for UNTP 0.6.0, 0.6.1 and 0.7.0: the five core credential schemas and their per-type contexts for 0.6.0 and 0.6.1, those five schemas plus the Conformity Scheme and Identity Resolver link set schemas and the unified context for 0.7.0, together with the W3C Verifiable Credentials Data Model v2 context and schema. These artefacts ship inside the package under `artefacts/` and are listed in `artefacts/manifest.json`. `createSchemaLoader` and `createJsonLdDocumentLoader` serve the bundled copy when the host cannot deliver one of those URLs (its name does not resolve, it cannot be reached, it answers a non-2xx status, it returns a body that is not JSON, or it exceeds the resolver's size, redirect or time bounds), and the optional `onBundledFallback` callback runs only when a substitution happens, not on cache hits. Two failures are deliberately not covered and surface exactly as before: a URL the SSRF guard refused (`url.private-address`, `url.private-hostname`, `url.unsupported-scheme` or `url.invalid` anywhere on the cause chain), because a UNTP host resolving to a private address is a signal the operator must see, and any error that is not a typed resolver or resolution failure, because a bug in the fetch path must not read as an outage. The 0.6.x context entries are indexed under both the base URLs the schemas declare (`.../dpp/0.6.1/`) and their `/context/` aliases (`.../dpp/0.6.1/context/`). `isHostDeliveryFailure` is the rule, exported for consumers that want the same split. Pass `bundledFallback: false` to switch the fallback off. URLs the bundle does not carry fail exactly as before.
|
|
67
|
+
|
|
68
|
+
Consumers can also read the bundle directly through `@uncefact/untp-utils/bundled-artefacts`, keyed by the published URL, for example to validate against a schema with no network at all:
|
|
69
|
+
|
|
70
|
+
```ts
|
|
71
|
+
import { findBundledArtefact, loadBundledArtefacts } from '@uncefact/untp-utils/bundled-artefacts';
|
|
72
|
+
|
|
73
|
+
const linksetSchema = await findBundledArtefact(
|
|
74
|
+
'https://untp.unece.org/artefacts/schema/v0.7.0/idr/LinksetSchema.json',
|
|
75
|
+
);
|
|
76
|
+
const everything = await loadBundledArtefacts(); // ReadonlyMap<url, artefact>
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
The raw JSON files and `artefacts/manifest.json` (URL, file, source and sha256 per artefact) ship in the package too.
|
|
80
|
+
|
|
81
|
+
Published artefacts are immutable once released, so the bundle only grows when a new UNTP version is released. `scripts/refresh-artefacts.mjs` fetches every artefact from its source of truth (the specification repository at the release tag for 0.7.0 and later, the publishing host for earlier versions), writes any it does not have yet, refuses to overwrite a bundled copy that differs from the published one, and regenerates the `src/bundle/` modules the loaders import.
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
pnpm --filter @uncefact/untp-utils artefacts:check # dry run: compare the bundle with what is published; fails on any difference
|
|
85
|
+
pnpm --filter @uncefact/untp-utils artefacts:refresh # add newly listed artefacts to the bundle
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
To add a version, add its entries to `ARTEFACTS` in the script and run `artefacts:refresh`. A bundled copy that differs from the published one is overwritten only with `node scripts/refresh-artefacts.mjs --force`, after the difference has been understood.
|