@uncefact/untp-utils 0.1.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 +52 -2
- 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/detect-version-from-context.d.ts +46 -0
- package/build/artefacts/detect-version-from-context.js +77 -0
- package/build/artefacts/detect-version-from-context.js.map +1 -0
- package/build/artefacts/detect-version-from-context.test.d.ts +1 -0
- package/build/artefacts/detect-version-from-context.test.js +69 -0
- package/build/artefacts/detect-version-from-context.test.js.map +1 -0
- package/build/artefacts/index.d.ts +3 -0
- package/build/artefacts/index.js +4 -0
- package/build/artefacts/index.js.map +1 -0
- package/build/artefacts/urls.d.ts +85 -0
- package/build/artefacts/urls.js +141 -0
- package/build/artefacts/urls.js.map +1 -0
- package/build/artefacts/urls.test.d.ts +1 -0
- package/build/artefacts/urls.test.js +99 -0
- package/build/artefacts/urls.test.js.map +1 -0
- package/build/artefacts/version.d.ts +9 -0
- package/build/artefacts/version.js +17 -0
- package/build/artefacts/version.js.map +1 -0
- package/build/artefacts/version.test.d.ts +1 -0
- package/build/artefacts/version.test.js +16 -0
- package/build/artefacts/version.test.js.map +1 -0
- 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/cache/in-memory-ttl-cache.d.ts +2 -0
- package/build/cache/in-memory-ttl-cache.js +76 -0
- package/build/cache/in-memory-ttl-cache.js.map +1 -0
- package/build/cache/in-memory-ttl-cache.test.d.ts +1 -0
- package/build/cache/in-memory-ttl-cache.test.js +236 -0
- package/build/cache/in-memory-ttl-cache.test.js.map +1 -0
- package/build/cache/index.d.ts +2 -0
- package/build/cache/index.js +2 -0
- package/build/cache/index.js.map +1 -0
- package/build/cache/ttl-cache.d.ts +22 -0
- package/build/cache/ttl-cache.js +2 -0
- package/build/cache/ttl-cache.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 +14 -0
- package/build/common/as-non-empty-string.js +20 -0
- package/build/common/as-non-empty-string.js.map +1 -0
- package/build/common/as-non-empty-string.test.d.ts +1 -0
- package/build/common/as-non-empty-string.test.js +30 -0
- package/build/common/as-non-empty-string.test.js.map +1 -0
- 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/require-string.d.ts +12 -0
- package/build/common/require-string.js +27 -0
- package/build/common/require-string.js.map +1 -0
- package/build/common/require-string.test.d.ts +1 -0
- package/build/common/require-string.test.js +53 -0
- package/build/common/require-string.test.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/conformity-vocabulary/codes.d.ts +10 -0
- package/build/conformity-vocabulary/codes.js +10 -0
- package/build/conformity-vocabulary/codes.js.map +1 -0
- package/build/conformity-vocabulary/errors.d.ts +44 -0
- package/build/conformity-vocabulary/errors.js +68 -0
- package/build/conformity-vocabulary/errors.js.map +1 -0
- package/build/conformity-vocabulary/index.d.ts +6 -0
- package/build/conformity-vocabulary/index.js +7 -0
- package/build/conformity-vocabulary/index.js.map +1 -0
- package/build/conformity-vocabulary/parse-conformity-catalogue.d.ts +26 -0
- package/build/conformity-vocabulary/parse-conformity-catalogue.js +106 -0
- package/build/conformity-vocabulary/parse-conformity-catalogue.js.map +1 -0
- package/build/conformity-vocabulary/parse-conformity-catalogue.test.d.ts +1 -0
- package/build/conformity-vocabulary/parse-conformity-catalogue.test.js +327 -0
- package/build/conformity-vocabulary/parse-conformity-catalogue.test.js.map +1 -0
- package/build/conformity-vocabulary/parse-conformity-scheme.d.ts +28 -0
- package/build/conformity-vocabulary/parse-conformity-scheme.js +47 -0
- package/build/conformity-vocabulary/parse-conformity-scheme.js.map +1 -0
- package/build/conformity-vocabulary/parse-conformity-scheme.test.d.ts +1 -0
- package/build/conformity-vocabulary/parse-conformity-scheme.test.js +284 -0
- package/build/conformity-vocabulary/parse-conformity-scheme.test.js.map +1 -0
- package/build/conformity-vocabulary/parsers/v0-7-0.parser.d.ts +19 -0
- package/build/conformity-vocabulary/parsers/v0-7-0.parser.js +219 -0
- package/build/conformity-vocabulary/parsers/v0-7-0.parser.js.map +1 -0
- package/build/conformity-vocabulary/types.d.ts +180 -0
- package/build/conformity-vocabulary/types.js +2 -0
- package/build/conformity-vocabulary/types.js.map +1 -0
- package/build/conformity-vocabulary/validate-conformity-claim.d.ts +26 -0
- package/build/conformity-vocabulary/validate-conformity-claim.js +165 -0
- package/build/conformity-vocabulary/validate-conformity-claim.js.map +1 -0
- package/build/conformity-vocabulary/validate-conformity-claim.test.d.ts +1 -0
- package/build/conformity-vocabulary/validate-conformity-claim.test.js +478 -0
- package/build/conformity-vocabulary/validate-conformity-claim.test.js.map +1 -0
- package/build/http-headers/index.d.ts +5 -0
- package/build/http-headers/index.js +6 -0
- package/build/http-headers/index.js.map +1 -0
- package/build/http-headers/is-safe-header-value.d.ts +10 -0
- package/build/http-headers/is-safe-header-value.js +15 -0
- package/build/http-headers/is-safe-header-value.js.map +1 -0
- package/build/http-headers/is-safe-header-value.test.d.ts +1 -0
- package/build/http-headers/is-safe-header-value.test.js +37 -0
- package/build/http-headers/is-safe-header-value.test.js.map +1 -0
- package/build/http-headers/parse-entity-tag.d.ts +9 -0
- package/build/http-headers/parse-entity-tag.js +18 -0
- package/build/http-headers/parse-entity-tag.js.map +1 -0
- package/build/http-headers/parse-entity-tag.test.d.ts +1 -0
- package/build/http-headers/parse-entity-tag.test.js +41 -0
- package/build/http-headers/parse-entity-tag.test.js.map +1 -0
- package/build/http-headers/parse-imf-date.d.ts +13 -0
- package/build/http-headers/parse-imf-date.js +23 -0
- package/build/http-headers/parse-imf-date.js.map +1 -0
- package/build/http-headers/parse-imf-date.test.d.ts +1 -0
- package/build/http-headers/parse-imf-date.test.js +31 -0
- package/build/http-headers/parse-imf-date.test.js.map +1 -0
- package/build/http-headers/parse-media-type.d.ts +8 -0
- package/build/http-headers/parse-media-type.js +21 -0
- package/build/http-headers/parse-media-type.js.map +1 -0
- package/build/http-headers/parse-media-type.test.d.ts +1 -0
- package/build/http-headers/parse-media-type.test.js +39 -0
- package/build/http-headers/parse-media-type.test.js.map +1 -0
- package/build/http-headers/user-agent.d.ts +35 -0
- package/build/http-headers/user-agent.js +45 -0
- package/build/http-headers/user-agent.js.map +1 -0
- package/build/http-headers/user-agent.test.d.ts +1 -0
- package/build/http-headers/user-agent.test.js +27 -0
- package/build/http-headers/user-agent.test.js.map +1 -0
- package/build/index.d.ts +1 -1
- package/build/index.js +1 -1
- package/build/index.js.map +1 -1
- package/build/loaders/errors.d.ts +21 -0
- package/build/loaders/errors.js +45 -0
- package/build/loaders/errors.js.map +1 -0
- package/build/loaders/index.d.ts +5 -0
- package/build/loaders/index.js +5 -0
- package/build/loaders/index.js.map +1 -0
- package/build/loaders/jsonld-document-loader.d.ts +48 -0
- package/build/loaders/jsonld-document-loader.js +43 -0
- package/build/loaders/jsonld-document-loader.js.map +1 -0
- package/build/loaders/jsonld-document-loader.test.d.ts +1 -0
- package/build/loaders/jsonld-document-loader.test.js +111 -0
- package/build/loaders/jsonld-document-loader.test.js.map +1 -0
- package/build/loaders/schema-loader.d.ts +31 -0
- package/build/loaders/schema-loader.js +83 -0
- package/build/loaders/schema-loader.js.map +1 -0
- package/build/loaders/schema-loader.ssrf.test.d.ts +1 -0
- package/build/loaders/schema-loader.ssrf.test.js +55 -0
- package/build/loaders/schema-loader.ssrf.test.js.map +1 -0
- package/build/loaders/schema-loader.test.d.ts +1 -0
- package/build/loaders/schema-loader.test.js +217 -0
- package/build/loaders/schema-loader.test.js.map +1 -0
- package/build/multibase-digest/multibase-digest.d.ts +23 -0
- package/build/multibase-digest/multibase-digest.js +40 -0
- package/build/multibase-digest/multibase-digest.js.map +1 -1
- package/build/multibase-digest/multibase-digest.test.js +46 -0
- package/build/multibase-digest/multibase-digest.test.js.map +1 -1
- package/build/node/errors.d.ts +47 -0
- package/build/node/errors.js +86 -0
- package/build/node/errors.js.map +1 -0
- package/build/node/index.d.ts +3 -0
- package/build/node/index.js +4 -0
- package/build/node/index.js.map +1 -0
- package/build/node/is-private-ip.d.ts +45 -0
- 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 +203 -0
- package/build/node/is-private-ip.js.map +1 -0
- package/build/node/is-private-ip.test.d.ts +1 -0
- package/build/node/is-private-ip.test.js +124 -0
- package/build/node/is-private-ip.test.js.map +1 -0
- package/build/node/validate-public-url.d.ts +81 -0
- package/build/node/validate-public-url.js +128 -0
- package/build/node/validate-public-url.js.map +1 -0
- package/build/node/validate-public-url.test.d.ts +1 -0
- package/build/node/validate-public-url.test.js +324 -0
- package/build/node/validate-public-url.test.js.map +1 -0
- package/build/resolvers/errors.d.ts +73 -0
- package/build/resolvers/errors.js +133 -0
- package/build/resolvers/errors.js.map +1 -0
- package/build/resolvers/index.d.ts +5 -0
- package/build/resolvers/index.js +6 -0
- package/build/resolvers/index.js.map +1 -0
- package/build/resolvers/resolve-document-if-changed.d.ts +48 -0
- package/build/resolvers/resolve-document-if-changed.js +42 -0
- package/build/resolvers/resolve-document-if-changed.js.map +1 -0
- package/build/resolvers/resolve-document-if-changed.test.d.ts +1 -0
- package/build/resolvers/resolve-document-if-changed.test.js +116 -0
- package/build/resolvers/resolve-document-if-changed.test.js.map +1 -0
- package/build/resolvers/resolve-document.d.ts +106 -0
- 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 +319 -0
- package/build/resolvers/resolve-document.js.map +1 -0
- package/build/resolvers/resolve-document.test.d.ts +1 -0
- package/build/resolvers/resolve-document.test.js +749 -0
- package/build/resolvers/resolve-document.test.js.map +1 -0
- package/build/resolvers/resolve-json-document.d.ts +43 -0
- package/build/resolvers/resolve-json-document.js +43 -0
- package/build/resolvers/resolve-json-document.js.map +1 -0
- package/build/resolvers/resolve-json-document.test.d.ts +1 -0
- package/build/resolvers/resolve-json-document.test.js +78 -0
- package/build/resolvers/resolve-json-document.test.js.map +1 -0
- package/build/structured-error.d.ts +49 -0
- package/build/structured-error.js +17 -0
- package/build/structured-error.js.map +1 -0
- package/build/structured-error.test.d.ts +1 -0
- package/build/structured-error.test.js +112 -0
- package/build/structured-error.test.js.map +1 -0
- package/build/validation/describe-jsonld-failure.d.ts +90 -0
- package/build/validation/describe-jsonld-failure.js +171 -0
- package/build/validation/describe-jsonld-failure.js.map +1 -0
- package/build/validation/describe-jsonld-failure.test.d.ts +1 -0
- package/build/validation/describe-jsonld-failure.test.js +226 -0
- package/build/validation/describe-jsonld-failure.test.js.map +1 -0
- package/build/validation/errors.d.ts +40 -0
- package/build/validation/errors.js +75 -0
- package/build/validation/errors.js.map +1 -0
- package/build/validation/index.d.ts +5 -0
- package/build/validation/index.js +5 -0
- package/build/validation/index.js.map +1 -0
- package/build/validation/validate-against-schemas.d.ts +22 -0
- package/build/validation/validate-against-schemas.js +65 -0
- package/build/validation/validate-against-schemas.js.map +1 -0
- package/build/validation/validate-against-schemas.test.d.ts +1 -0
- package/build/validation/validate-against-schemas.test.js +169 -0
- package/build/validation/validate-against-schemas.test.js.map +1 -0
- package/build/validation/validate-jsonld.context-cache.test.d.ts +1 -0
- package/build/validation/validate-jsonld.context-cache.test.js +32 -0
- package/build/validation/validate-jsonld.context-cache.test.js.map +1 -0
- package/build/validation/validate-jsonld.d.ts +59 -0
- package/build/validation/validate-jsonld.js +126 -0
- package/build/validation/validate-jsonld.js.map +1 -0
- package/build/validation/validate-jsonld.ssrf.test.d.ts +1 -0
- package/build/validation/validate-jsonld.ssrf.test.js +108 -0
- package/build/validation/validate-jsonld.ssrf.test.js.map +1 -0
- package/build/validation/validate-jsonld.test.d.ts +1 -0
- package/build/validation/validate-jsonld.test.js +257 -0
- package/build/validation/validate-jsonld.test.js.map +1 -0
- package/package.json +86 -5
|
@@ -88,6 +88,17 @@ export class MultibaseDigest {
|
|
|
88
88
|
const mh = await hasher.digest(data);
|
|
89
89
|
return new MultibaseDigest(opts.algorithm, opts.base, mh.digest, mh.bytes);
|
|
90
90
|
}
|
|
91
|
+
/**
|
|
92
|
+
* UTF-8 encodes `text` and delegates to {@link MultibaseDigest.fromData}.
|
|
93
|
+
* Convenience for the very common case of digesting a string of content
|
|
94
|
+
* (rendered template HTML, JSON-serialised credential, etc.) without
|
|
95
|
+
* hand-rolling the `TextEncoder` boilerplate at every call site.
|
|
96
|
+
*
|
|
97
|
+
* @throws If `algorithm` or `base` is not in the allow-list.
|
|
98
|
+
*/
|
|
99
|
+
static async fromText(text, opts) {
|
|
100
|
+
return MultibaseDigest.fromData(new TextEncoder().encode(text), opts);
|
|
101
|
+
}
|
|
91
102
|
/**
|
|
92
103
|
* Wraps an already-computed raw `digest` (the bytes a hash function produces,
|
|
93
104
|
* no multihash prefix) and tags it with the requested multibase encoding. The
|
|
@@ -108,6 +119,35 @@ export class MultibaseDigest {
|
|
|
108
119
|
const mh = Digest.create(hasher.code, digest);
|
|
109
120
|
return new MultibaseDigest(opts.algorithm, opts.base, mh.digest, mh.bytes);
|
|
110
121
|
}
|
|
122
|
+
/**
|
|
123
|
+
* Wraps a hex-encoded raw `digest` and tags it with the requested multibase
|
|
124
|
+
* encoding. The caller asserts the algorithm; the decoded byte length must
|
|
125
|
+
* match its expected digest size.
|
|
126
|
+
*
|
|
127
|
+
* Provided as the canonical bridge from hex-based legacy systems (Uncefact
|
|
128
|
+
* storage's pre-migration `hash` field, RI rows still holding hex values
|
|
129
|
+
* during the multibase migration, etc.) to multibase-encoded consumers.
|
|
130
|
+
*
|
|
131
|
+
* @throws If `hex` is empty, contains non-hex characters, or has an odd
|
|
132
|
+
* number of characters, or if the decoded byte length does not match
|
|
133
|
+
* the expected size for `algorithm`.
|
|
134
|
+
*/
|
|
135
|
+
static fromHex(hex, opts) {
|
|
136
|
+
if (typeof hex !== 'string' || hex.length === 0) {
|
|
137
|
+
throw new Error('Hex digest must be a non-empty string');
|
|
138
|
+
}
|
|
139
|
+
if (hex.length % 2 !== 0) {
|
|
140
|
+
throw new Error(`Hex digest must have an even number of characters; got ${hex.length}`);
|
|
141
|
+
}
|
|
142
|
+
if (!/^[a-fA-F0-9]+$/.test(hex)) {
|
|
143
|
+
throw new Error(`Hex digest contains non-hex characters: "${hex}"`);
|
|
144
|
+
}
|
|
145
|
+
const bytes = new Uint8Array(hex.length / 2);
|
|
146
|
+
for (let i = 0; i < bytes.length; i += 1) {
|
|
147
|
+
bytes[i] = parseInt(hex.slice(i * 2, i * 2 + 2), 16);
|
|
148
|
+
}
|
|
149
|
+
return MultibaseDigest.fromDigest(bytes, opts);
|
|
150
|
+
}
|
|
111
151
|
/**
|
|
112
152
|
* Parses a multibase string into a {@link MultibaseDigest}. The algorithm and
|
|
113
153
|
* multibase encoding are both recovered from the string itself: the leading
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multibase-digest.js","sourceRoot":"","sources":["../../src/multibase-digest/multibase-digest.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"multibase-digest.js","sourceRoot":"","sources":["../../src/multibase-digest/multibase-digest.ts"],"names":[],"mappings":"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"}
|
|
@@ -102,6 +102,52 @@ describe('MultibaseDigest', () => {
|
|
|
102
102
|
})).toThrow('Digest length 32 does not match "sha2-512" (expected 64)');
|
|
103
103
|
});
|
|
104
104
|
});
|
|
105
|
+
describe('fromText', () => {
|
|
106
|
+
it('matches fromData with TextEncoder-encoded bytes', async () => {
|
|
107
|
+
const text = 'hello world';
|
|
108
|
+
const viaText = await MultibaseDigest.fromText(text, { algorithm: 'sha2-256', base: 'base58btc' });
|
|
109
|
+
const viaData = await MultibaseDigest.fromData(new TextEncoder().encode(text), {
|
|
110
|
+
algorithm: 'sha2-256',
|
|
111
|
+
base: 'base58btc',
|
|
112
|
+
});
|
|
113
|
+
expect(viaText.toString()).toBe(viaData.toString());
|
|
114
|
+
});
|
|
115
|
+
it('rejects unsupported algorithms', async () => {
|
|
116
|
+
await expect(MultibaseDigest.fromText('x', { algorithm: 'md5', base: 'base58btc' })).rejects.toThrow('Unsupported hash algorithm');
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
describe('fromHex', () => {
|
|
120
|
+
it('decodes a sha2-256 hex digest and round-trips through fromDigest', async () => {
|
|
121
|
+
const hashed = await MultibaseDigest.fromData(helloBytes, {
|
|
122
|
+
algorithm: 'sha2-256',
|
|
123
|
+
base: 'base58btc',
|
|
124
|
+
});
|
|
125
|
+
const hex = Array.from(hashed.digest)
|
|
126
|
+
.map((b) => b.toString(16).padStart(2, '0'))
|
|
127
|
+
.join('');
|
|
128
|
+
const wrapped = MultibaseDigest.fromHex(hex, { algorithm: 'sha2-256', base: 'base58btc' });
|
|
129
|
+
expect(wrapped.toString()).toBe(hashed.toString());
|
|
130
|
+
});
|
|
131
|
+
it('accepts uppercase hex', () => {
|
|
132
|
+
const hex = 'E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855';
|
|
133
|
+
const result = MultibaseDigest.fromHex(hex, { algorithm: 'sha2-256', base: 'base58btc' });
|
|
134
|
+
expect(result.algorithm).toBe('sha2-256');
|
|
135
|
+
expect(result.toString()).toMatch(/^z/);
|
|
136
|
+
});
|
|
137
|
+
it('rejects an empty string', () => {
|
|
138
|
+
expect(() => MultibaseDigest.fromHex('', { algorithm: 'sha2-256', base: 'base58btc' })).toThrow('Hex digest must be a non-empty string');
|
|
139
|
+
});
|
|
140
|
+
it('rejects odd-length input', () => {
|
|
141
|
+
expect(() => MultibaseDigest.fromHex('abc', { algorithm: 'sha2-256', base: 'base58btc' })).toThrow('Hex digest must have an even number of characters');
|
|
142
|
+
});
|
|
143
|
+
it('rejects non-hex characters', () => {
|
|
144
|
+
expect(() => MultibaseDigest.fromHex('xx'.repeat(32), { algorithm: 'sha2-256', base: 'base58btc' })).toThrow('Hex digest contains non-hex characters');
|
|
145
|
+
});
|
|
146
|
+
it('rejects hex that decodes to the wrong byte length for the algorithm', () => {
|
|
147
|
+
// 16 bytes (32 hex chars) is too short for sha2-256 (32 bytes).
|
|
148
|
+
expect(() => MultibaseDigest.fromHex('ab'.repeat(16), { algorithm: 'sha2-256', base: 'base58btc' })).toThrow('Digest length 16 does not match "sha2-256" (expected 32)');
|
|
149
|
+
});
|
|
150
|
+
});
|
|
105
151
|
describe('fromString', () => {
|
|
106
152
|
const supportedBases = ['base58btc', 'base64'];
|
|
107
153
|
const algorithms = ['sha2-256', 'sha2-512'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multibase-digest.test.js","sourceRoot":"","sources":["../../src/multibase-digest/multibase-digest.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,eAAe,EAA8C,MAAM,uBAAuB,CAAC;AAEpG,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAClC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC3C,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAE3C,MAAM,gBAAgB,GAAG,kEAAkE,CAAC;AAC5F,MAAM,gBAAgB,GAAG,kEAAkE,CAAC;AAE5F,SAAS,KAAK,CAAC,KAAiB;IAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;SACrB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SAC3C,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,UAAU,EAAE;gBACxD,SAAS,EAAE,UAAU;gBACrB,IAAI,EAAE,WAAW;aAClB,CAAC,CAAC;YACH,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YACvC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;YACnE,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE;gBAC/D,SAAS,EAAE,UAAU;gBACrB,IAAI,EAAE,WAAW;aAClB,CAAC,CAAC;YACH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACvD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,UAAU,EAAE;gBACxD,SAAS,EAAE,UAAU;gBACrB,IAAI,EAAE,WAAW;aAClB,CAAC,CAAC;YACH,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,UAAU,EAAE;gBACxD,SAAS,EAAE,UAAU;gBACrB,IAAI,EAAE,QAAQ;aACf,CAAC,CAAC;YACH,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,UAAU,EAAE;gBACxD,SAAS,EAAE,UAAU;gBACrB,IAAI,EAAE,WAAW;aAClB,CAAC,CAAC;YACH,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,MAAM,CACV,eAAe,CAAC,QAAQ,CAAC,UAAU,EAAE;gBACnC,SAAS,EAAE,KAA8B;gBACzC,IAAI,EAAE,WAAW;aAClB,CAAC,CACH,CAAC,OAAO,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;YACzC,MAAM,MAAM,CACV,eAAe,CAAC,QAAQ,CAAC,UAAU,EAAE;gBACnC,SAAS,EAAE,UAAU;gBACrB,IAAI,EAAE,QAAwC;aAC/C,CAAC,CACH,CAAC,OAAO,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC5D,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,UAAU,EAAE;gBACxD,SAAS,EAAE,UAAU;gBACrB,IAAI,EAAE,WAAW;aAClB,CAAC,CAAC;YACH,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE;gBACxD,SAAS,EAAE,UAAU;gBACrB,IAAI,EAAE,WAAW;aAClB,CAAC,CAAC;YACH,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YACnD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACxC,MAAM,CAAC,GAAG,EAAE,CACV,eAAe,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE;gBAC7C,SAAS,EAAE,KAA8B;gBACzC,IAAI,EAAE,WAAW;aAClB,CAAC,CACH,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,CAAC,GAAG,EAAE,CACV,eAAe,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE;gBAC7C,SAAS,EAAE,UAAU;gBACrB,IAAI,EAAE,QAAwC;aAC/C,CAAC,CACH,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;YACpE,0DAA0D;YAC1D,MAAM,CAAC,GAAG,EAAE,CACV,eAAe,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE;gBAC7C,SAAS,EAAE,UAAU;gBACrB,IAAI,EAAE,WAAW;aAClB,CAAC,CACH,CAAC,OAAO,CAAC,0DAA0D,CAAC,CAAC;YAEtE,0DAA0D;YAC1D,MAAM,CAAC,GAAG,EAAE,CACV,eAAe,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE;gBAC7C,SAAS,EAAE,UAAU;gBACrB,IAAI,EAAE,WAAW;aAClB,CAAC,CACH,CAAC,OAAO,CAAC,0DAA0D,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,MAAM,cAAc,GAAwB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QACpE,MAAM,UAAU,GAAoB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAE7D,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAU,CAAC,CAAC,CAAC,CAC5E,2BAA2B,EAC3B,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE;YACxB,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACjF,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAEnD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACzC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC,CACF,CAAC;QAEF,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,4DAA4D;YAC5D,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;QAC5F,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qFAAqF,EAAE,GAAG,EAAE;YAC7F,iFAAiF;YACjF,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC;QACjG,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;YAC3D,6DAA6D;YAC7D,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;YACpC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YACnB,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YACnB,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACnD,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;QACpG,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,uFAAuF;YACvF,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACpD,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QAC9D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;YAChE,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,UAAU,EAAE;gBACxD,SAAS,EAAE,UAAU;gBACrB,IAAI,EAAE,QAAQ;aACf,CAAC,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YACzC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEvC,MAAM,QAAQ,GAAG,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACjD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,UAAU,EAAE;gBACxD,SAAS,EAAE,UAAU;gBACrB,IAAI,EAAE,WAAW;aAClB,CAAC,CAAC;YACH,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAwC,CAAC,CAAC,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;QACpH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;YAC1E,MAAM,CAAC,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,UAAU,EAAE;gBACnD,SAAS,EAAE,UAAU;gBACrB,IAAI,EAAE,QAAQ;aACf,CAAC,CAAC;YACH,MAAM,CAAC,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;YAC9D,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;YAChD,MAAM,CAAC,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,UAAU,EAAE;gBACnD,SAAS,EAAE,UAAU;gBACrB,IAAI,EAAE,WAAW;aAClB,CAAC,CAAC;YACH,MAAM,CAAC,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,UAAU,EAAE;gBACnD,SAAS,EAAE,UAAU;gBACrB,IAAI,EAAE,WAAW;aAClB,CAAC,CAAC;YACH,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;YACvE,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;YAChC,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;YACnC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAClB,MAAM,CAAC,GAAG,eAAe,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;YACzF,MAAM,CAAC,GAAG,eAAe,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;YAC5F,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;YACzE,MAAM,CAAC,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,UAAU,EAAE;gBACnD,SAAS,EAAE,UAAU;gBACrB,IAAI,EAAE,WAAW;aAClB,CAAC,CAAC;YACH,MAAM,CAAC,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,UAAU,EAAE;gBACnD,SAAS,EAAE,UAAU;gBACrB,IAAI,EAAE,WAAW;aAClB,CAAC,CAAC;YACH,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,UAAU,EAAE;gBACxD,SAAS,EAAE,UAAU;gBACrB,IAAI,EAAE,WAAW;aAClB,CAAC,CAAC;YACH,MAAM,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,UAAU,EAAE;gBACxD,SAAS,EAAE,UAAU;gBACrB,IAAI,EAAE,WAAW;aAClB,CAAC,CAAC;YACH,MAAM,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;YACjE,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,UAAU,EAAE;gBAC3D,SAAS,EAAE,UAAU;gBACrB,IAAI,EAAE,WAAW;aAClB,CAAC,CAAC;YACH,4DAA4D;YAC5D,MAAM,CAAC,MAAM,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"multibase-digest.test.js","sourceRoot":"","sources":["../../src/multibase-digest/multibase-digest.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { StructuredError } from '../structured-error.js';
|
|
2
|
+
/**
|
|
3
|
+
* Base for every diagnostic from `@uncefact/untp-utils/node`. Catch to
|
|
4
|
+
* handle any URL-validation failure generically; catch a concrete subclass
|
|
5
|
+
* for specific handling.
|
|
6
|
+
*/
|
|
7
|
+
export declare class UrlValidationError extends StructuredError {
|
|
8
|
+
}
|
|
9
|
+
/** The string passed could not be parsed as a URL by `new URL(...)`. */
|
|
10
|
+
export declare class InvalidUrlError extends UrlValidationError {
|
|
11
|
+
constructor(received: string, cause: unknown);
|
|
12
|
+
}
|
|
13
|
+
/** The URL's scheme is not in the allowed list (default `http`, `https`). */
|
|
14
|
+
export declare class UnsupportedSchemeError extends UrlValidationError {
|
|
15
|
+
constructor(scheme: string, allowedSchemes: readonly string[]);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* The hostname is a known private/local name (`localhost`, `*.localhost`,
|
|
19
|
+
* `*.local`, `*.internal`, etc.) or an IP literal in a non-public range. An
|
|
20
|
+
* empty hostname is refused as malformed input (`InvalidUrlError`) before
|
|
21
|
+
* this check runs.
|
|
22
|
+
*/
|
|
23
|
+
export declare class PrivateHostnameError extends UrlValidationError {
|
|
24
|
+
constructor(hostname: string);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* DNS resolution rejected (`ENOTFOUND`, `EAI_AGAIN`, etc.), or the resolver
|
|
28
|
+
* returned a record whose address is unparseable or contradicts its claimed
|
|
29
|
+
* family; contradictory resolver metadata is treated as a failed resolution
|
|
30
|
+
* rather than silently reconciled.
|
|
31
|
+
*/
|
|
32
|
+
export declare class ResolutionFailedError extends UrlValidationError {
|
|
33
|
+
constructor(hostname: string, cause: unknown);
|
|
34
|
+
}
|
|
35
|
+
/** DNS resolution succeeded but returned no addresses. */
|
|
36
|
+
export declare class ResolutionEmptyError extends UrlValidationError {
|
|
37
|
+
constructor(hostname: string);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* At least one resolved IP is in a private / loopback / link-local /
|
|
41
|
+
* cloud-metadata range. The full list is exposed on
|
|
42
|
+
* {@link resolvedAddresses} for triage.
|
|
43
|
+
*/
|
|
44
|
+
export declare class PrivateAddressError extends UrlValidationError {
|
|
45
|
+
readonly resolvedAddresses: readonly string[];
|
|
46
|
+
constructor(hostname: string, resolvedAddresses: readonly string[]);
|
|
47
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { StructuredError } from '../structured-error.js';
|
|
2
|
+
/**
|
|
3
|
+
* Base for every diagnostic from `@uncefact/untp-utils/node`. Catch to
|
|
4
|
+
* handle any URL-validation failure generically; catch a concrete subclass
|
|
5
|
+
* for specific handling.
|
|
6
|
+
*/
|
|
7
|
+
export class UrlValidationError extends StructuredError {
|
|
8
|
+
}
|
|
9
|
+
/** The string passed could not be parsed as a URL by `new URL(...)`. */
|
|
10
|
+
export class InvalidUrlError extends UrlValidationError {
|
|
11
|
+
constructor(received, cause) {
|
|
12
|
+
super({ code: 'url.invalid', message: 'URL could not be parsed.', received, cause });
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
/** The URL's scheme is not in the allowed list (default `http`, `https`). */
|
|
16
|
+
export class UnsupportedSchemeError extends UrlValidationError {
|
|
17
|
+
constructor(scheme, allowedSchemes) {
|
|
18
|
+
super({
|
|
19
|
+
code: 'url.unsupported-scheme',
|
|
20
|
+
message: `URL scheme ${scheme} is not in the allowed list.`,
|
|
21
|
+
received: scheme,
|
|
22
|
+
expected: [...allowedSchemes],
|
|
23
|
+
remediation: `Use one of: ${allowedSchemes.join(', ')}.`,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* The hostname is a known private/local name (`localhost`, `*.localhost`,
|
|
29
|
+
* `*.local`, `*.internal`, etc.) or an IP literal in a non-public range. An
|
|
30
|
+
* empty hostname is refused as malformed input (`InvalidUrlError`) before
|
|
31
|
+
* this check runs.
|
|
32
|
+
*/
|
|
33
|
+
export class PrivateHostnameError extends UrlValidationError {
|
|
34
|
+
constructor(hostname) {
|
|
35
|
+
super({
|
|
36
|
+
code: 'url.private-hostname',
|
|
37
|
+
message: `Hostname ${hostname || '(empty)'} names a private or local resource.`,
|
|
38
|
+
received: hostname,
|
|
39
|
+
remediation: 'Use a publicly-routable hostname.',
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* DNS resolution rejected (`ENOTFOUND`, `EAI_AGAIN`, etc.), or the resolver
|
|
45
|
+
* returned a record whose address is unparseable or contradicts its claimed
|
|
46
|
+
* family; contradictory resolver metadata is treated as a failed resolution
|
|
47
|
+
* rather than silently reconciled.
|
|
48
|
+
*/
|
|
49
|
+
export class ResolutionFailedError extends UrlValidationError {
|
|
50
|
+
constructor(hostname, cause) {
|
|
51
|
+
super({
|
|
52
|
+
code: 'url.resolution-failed',
|
|
53
|
+
message: `DNS resolution failed for ${hostname}.`,
|
|
54
|
+
received: cause instanceof Error ? cause.message : String(cause),
|
|
55
|
+
cause,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/** DNS resolution succeeded but returned no addresses. */
|
|
60
|
+
export class ResolutionEmptyError extends UrlValidationError {
|
|
61
|
+
constructor(hostname) {
|
|
62
|
+
super({
|
|
63
|
+
code: 'url.resolution-empty',
|
|
64
|
+
message: `DNS resolver returned no addresses for ${hostname}.`,
|
|
65
|
+
received: hostname,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* At least one resolved IP is in a private / loopback / link-local /
|
|
71
|
+
* cloud-metadata range. The full list is exposed on
|
|
72
|
+
* {@link resolvedAddresses} for triage.
|
|
73
|
+
*/
|
|
74
|
+
export class PrivateAddressError extends UrlValidationError {
|
|
75
|
+
resolvedAddresses;
|
|
76
|
+
constructor(hostname, resolvedAddresses) {
|
|
77
|
+
super({
|
|
78
|
+
code: 'url.private-address',
|
|
79
|
+
message: `Hostname ${hostname} resolved to a private address.`,
|
|
80
|
+
received: resolvedAddresses,
|
|
81
|
+
remediation: 'Verify the hostname does not resolve to private or reserved network space.',
|
|
82
|
+
});
|
|
83
|
+
this.resolvedAddresses = resolvedAddresses;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/node/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD;;;;GAIG;AACH,MAAM,OAAO,kBAAmB,SAAQ,eAAe;CAAG;AAE1D,wEAAwE;AACxE,MAAM,OAAO,eAAgB,SAAQ,kBAAkB;IACrD,YAAY,QAAgB,EAAE,KAAc;QAC1C,KAAK,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,0BAA0B,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IACvF,CAAC;CACF;AAED,6EAA6E;AAC7E,MAAM,OAAO,sBAAuB,SAAQ,kBAAkB;IAC5D,YAAY,MAAc,EAAE,cAAiC;QAC3D,KAAK,CAAC;YACJ,IAAI,EAAE,wBAAwB;YAC9B,OAAO,EAAE,cAAc,MAAM,8BAA8B;YAC3D,QAAQ,EAAE,MAAM;YAChB,QAAQ,EAAE,CAAC,GAAG,cAAc,CAAC;YAC7B,WAAW,EAAE,eAAe,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;SACzD,CAAC,CAAC;IACL,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,oBAAqB,SAAQ,kBAAkB;IAC1D,YAAY,QAAgB;QAC1B,KAAK,CAAC;YACJ,IAAI,EAAE,sBAAsB;YAC5B,OAAO,EAAE,YAAY,QAAQ,IAAI,SAAS,qCAAqC;YAC/E,QAAQ,EAAE,QAAQ;YAClB,WAAW,EAAE,mCAAmC;SACjD,CAAC,CAAC;IACL,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,qBAAsB,SAAQ,kBAAkB;IAC3D,YAAY,QAAgB,EAAE,KAAc;QAC1C,KAAK,CAAC;YACJ,IAAI,EAAE,uBAAuB;YAC7B,OAAO,EAAE,6BAA6B,QAAQ,GAAG;YACjD,QAAQ,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YAChE,KAAK;SACN,CAAC,CAAC;IACL,CAAC;CACF;AAED,0DAA0D;AAC1D,MAAM,OAAO,oBAAqB,SAAQ,kBAAkB;IAC1D,YAAY,QAAgB;QAC1B,KAAK,CAAC;YACJ,IAAI,EAAE,sBAAsB;YAC5B,OAAO,EAAE,0CAA0C,QAAQ,GAAG;YAC9D,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAC;IACL,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,mBAAoB,SAAQ,kBAAkB;IAChD,iBAAiB,CAAoB;IAC9C,YAAY,QAAgB,EAAE,iBAAoC;QAChE,KAAK,CAAC;YACJ,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE,YAAY,QAAQ,iCAAiC;YAC9D,QAAQ,EAAE,iBAAiB;YAC3B,WAAW,EAAE,4EAA4E;SAC1F,CAAC,CAAC;QACH,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAC7C,CAAC;CACF"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { UrlValidationError, InvalidUrlError, UnsupportedSchemeError, PrivateHostnameError, ResolutionFailedError, ResolutionEmptyError, PrivateAddressError, } from './errors.js';
|
|
2
|
+
export { isPrivateHostname, isPrivateIpv4, isPrivateIpv6 } from './is-private-ip.js';
|
|
3
|
+
export { validatePublicUrl, type PublicUrlLookup, type ValidatePublicUrlOptions, type ResolvedAddress, type ValidatedAddresses, } from './validate-public-url.js';
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { UrlValidationError, InvalidUrlError, UnsupportedSchemeError, PrivateHostnameError, ResolutionFailedError, ResolutionEmptyError, PrivateAddressError, } from './errors.js';
|
|
2
|
+
export { isPrivateHostname, isPrivateIpv4, isPrivateIpv6 } from './is-private-ip.js';
|
|
3
|
+
export { validatePublicUrl, } from './validate-public-url.js';
|
|
4
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,EACL,iBAAiB,GAKlB,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns `true` if `address` is an IPv4 address string that does not fall in
|
|
3
|
+
* the public unicast range, or that matches a known cloud-metadata IP. Use
|
|
4
|
+
* this to gate outbound connections to tenant-supplied addresses.
|
|
5
|
+
*
|
|
6
|
+
* Fails closed: if `ipaddr.js` cannot parse a value that passed
|
|
7
|
+
* `node:net`'s `isIPv4` (parser/grammar skew across versions), the function
|
|
8
|
+
* returns `true` rather than letting the address through.
|
|
9
|
+
*
|
|
10
|
+
* Returns `false` for non-IPv4 input (including unparseable strings).
|
|
11
|
+
* Callers handle parsing themselves and pass only IP literals. Never throws.
|
|
12
|
+
*
|
|
13
|
+
* @see https://datatracker.ietf.org/doc/html/rfc1918 Address Allocation for Private Internets
|
|
14
|
+
* @see https://datatracker.ietf.org/doc/html/rfc6598 IANA-Reserved IPv4 Prefix for Shared Address Space (CGNAT)
|
|
15
|
+
* @see https://datatracker.ietf.org/doc/html/rfc3927 Dynamic Configuration of IPv4 Link-Local Addresses
|
|
16
|
+
* @see https://datatracker.ietf.org/doc/html/rfc5735 Special Use IPv4 Addresses
|
|
17
|
+
*/
|
|
18
|
+
export declare function isPrivateIpv4(address: string): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Returns `true` if `address` is an IPv6 address string that is not a
|
|
21
|
+
* genuine public Global Unicast address. This is a default-deny predicate:
|
|
22
|
+
* an address is treated as public only when it is both inside the allocated
|
|
23
|
+
* `2000::/3` Global Unicast block and not one of the named special-purpose
|
|
24
|
+
* ranges within it; every other address, including reserved or unallocated
|
|
25
|
+
* space `ipaddr.js` has no name for, is denied. IPv4-mapped addresses
|
|
26
|
+
* (`::ffff:a.b.c.d`) are re-checked against {@link isPrivateIpv4}, and the
|
|
27
|
+
* deprecated IPv4-compatible form (`::a.b.c.d`) is rejected outright.
|
|
28
|
+
*
|
|
29
|
+
* Fails closed on parser drift, mirroring {@link isPrivateIpv4}.
|
|
30
|
+
*
|
|
31
|
+
* Returns `false` for non-IPv6 input. Never throws.
|
|
32
|
+
*
|
|
33
|
+
* @see https://datatracker.ietf.org/doc/html/rfc4291 IP Version 6 Addressing Architecture
|
|
34
|
+
* @see https://datatracker.ietf.org/doc/html/rfc4193 Unique Local IPv6 Unicast Addresses
|
|
35
|
+
*/
|
|
36
|
+
export declare function isPrivateIpv6(address: string): boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Returns `true` if `host` always names a local resource (`localhost`,
|
|
39
|
+
* anything under `.localhost`, `.local`, `.internal`, etc.) or an IP literal
|
|
40
|
+
* in a non-public range.
|
|
41
|
+
*
|
|
42
|
+
* The empty string is treated as private (a URL with no hostname must never
|
|
43
|
+
* be allowed out).
|
|
44
|
+
*/
|
|
45
|
+
export declare function isPrivateHostname(host: string): boolean;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { jest } from '@jest/globals';
|
|
2
|
+
// These cases pin the fail-closed branches of the IP predicates: when
|
|
3
|
+
// `ipaddr.js` cannot parse a value that `node:net` accepted, or reports an
|
|
4
|
+
// unexpected kind, the predicates must classify the address as private
|
|
5
|
+
// rather than let it through. Only a mocked parser can reach those
|
|
6
|
+
// branches, so this file (unlike is-private-ip.test.ts) replaces
|
|
7
|
+
// `ipaddr.js` per test.
|
|
8
|
+
const parse = jest.fn();
|
|
9
|
+
jest.unstable_mockModule('ipaddr.js', () => ({
|
|
10
|
+
default: { parse },
|
|
11
|
+
}));
|
|
12
|
+
const { isPrivateIpv4, isPrivateIpv6 } = await import('./is-private-ip.js');
|
|
13
|
+
beforeEach(() => {
|
|
14
|
+
parse.mockReset();
|
|
15
|
+
});
|
|
16
|
+
describe('isPrivateIpv4 fail-closed', () => {
|
|
17
|
+
it('treats an address as private when ipaddr.js cannot parse a value node:net accepted', () => {
|
|
18
|
+
parse.mockImplementation(() => {
|
|
19
|
+
throw new Error('parser/grammar skew');
|
|
20
|
+
});
|
|
21
|
+
expect(isPrivateIpv4('1.1.1.1')).toBe(true);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
describe('isPrivateIpv6 fail-closed', () => {
|
|
25
|
+
it('treats an address as private when ipaddr.js cannot parse a value node:net accepted', () => {
|
|
26
|
+
parse.mockImplementation(() => {
|
|
27
|
+
throw new Error('parser/grammar skew');
|
|
28
|
+
});
|
|
29
|
+
expect(isPrivateIpv6('2606:4700:4700::1111')).toBe(true);
|
|
30
|
+
});
|
|
31
|
+
it('treats an address as private when ipaddr.js reports a non-ipv6 kind for an IPv6-shaped input', () => {
|
|
32
|
+
parse.mockReturnValue({ kind: () => 'ipv4' });
|
|
33
|
+
expect(isPrivateIpv6('2606:4700:4700::1111')).toBe(true);
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
//# sourceMappingURL=is-private-ip.fail-closed.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-private-ip.fail-closed.test.js","sourceRoot":"","sources":["../../src/node/is-private-ip.fail-closed.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErC,sEAAsE;AACtE,2EAA2E;AAC3E,uEAAuE;AACvE,mEAAmE;AACnE,iEAAiE;AACjE,wBAAwB;AACxB,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AAExB,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;IAC3C,OAAO,EAAE,EAAE,KAAK,EAAE;CACnB,CAAC,CAAC,CAAC;AAEJ,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAE5E,UAAU,CAAC,GAAG,EAAE;IACd,KAAK,CAAC,SAAS,EAAE,CAAC;AACpB,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,oFAAoF,EAAE,GAAG,EAAE;QAC5F,KAAK,CAAC,kBAAkB,CAAC,GAAG,EAAE;YAC5B,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,oFAAoF,EAAE,GAAG,EAAE;QAC5F,KAAK,CAAC,kBAAkB,CAAC,GAAG,EAAE;YAC5B,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8FAA8F,EAAE,GAAG,EAAE;QACtG,KAAK,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9C,MAAM,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import { isIPv4, isIPv6 } from 'node:net';
|
|
2
|
+
import ipaddr from 'ipaddr.js';
|
|
3
|
+
/**
|
|
4
|
+
* The single `ipaddr.js` range category that can represent a publicly
|
|
5
|
+
* routable unicast address. Anything else (loopback, link-local, private,
|
|
6
|
+
* multicast, unique-local, reserved, 6to4, teredo, etc.) is rejected. An
|
|
7
|
+
* allowlist is safer than enumerating disallowed buckets: new range names
|
|
8
|
+
* introduced by future `ipaddr.js` versions default to "block" rather than
|
|
9
|
+
* "allow". For IPv4 this category alone is sufficient (IANA's special-purpose
|
|
10
|
+
* registry is small and enumerated in full); for IPv6 it is not, because
|
|
11
|
+
* `range()` also reports it as a fallback for unallocated space, so
|
|
12
|
+
* {@link isPrivateIpv6} additionally gates on the `2000::/3` Global Unicast
|
|
13
|
+
* block before trusting it.
|
|
14
|
+
*/
|
|
15
|
+
const PUBLIC_RANGE = 'unicast';
|
|
16
|
+
/**
|
|
17
|
+
* Cloud-metadata IPv4 addresses listed explicitly for belt-and-braces
|
|
18
|
+
* coverage. Both addresses are already classified as non-`unicast` by
|
|
19
|
+
* `ipaddr.js` (the AWS / GCP / Azure address via link-local
|
|
20
|
+
* `169.254.0.0/16`, the Alibaba address via CGNAT `100.64.0.0/10`), but the
|
|
21
|
+
* explicit listing means a future change to `ipaddr.js`'s range taxonomy
|
|
22
|
+
* cannot accidentally promote them to `unicast`.
|
|
23
|
+
*
|
|
24
|
+
* @see https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html
|
|
25
|
+
* @see https://help.aliyun.com/document_detail/49122.html
|
|
26
|
+
*/
|
|
27
|
+
const ADDITIONAL_BLOCKED_IPV4 = new Set(['169.254.169.254', '100.100.100.200']);
|
|
28
|
+
/**
|
|
29
|
+
* Hostname suffixes that name resources reachable only on a local network and
|
|
30
|
+
* must not be allowed to leave the host. Matched case-insensitively against
|
|
31
|
+
* the full hostname (e.g. `foo.localhost`, `printer.local`, `db.internal`).
|
|
32
|
+
*
|
|
33
|
+
* `.localhost` is reserved by RFC 6761; `.local` is reserved by RFC 6762
|
|
34
|
+
* (Multicast DNS); `.internal` is on the IANA / ICANN reserved list for
|
|
35
|
+
* private use (per RFC 9499 and ICANN board resolution, 2024); the
|
|
36
|
+
* remainder (`.intranet`, `.lan`, `.home`, `.corp`, `.private`) are
|
|
37
|
+
* widely-used private-network conventions that are blocked from ICANN
|
|
38
|
+
* delegation. Treating them as private is a conservative default for an
|
|
39
|
+
* SSRF guard.
|
|
40
|
+
*
|
|
41
|
+
* @see https://datatracker.ietf.org/doc/html/rfc6761 Special-Use Domain Names
|
|
42
|
+
* @see https://datatracker.ietf.org/doc/html/rfc6762 Multicast DNS
|
|
43
|
+
* @see https://datatracker.ietf.org/doc/html/rfc9499 DNS Terminology
|
|
44
|
+
*/
|
|
45
|
+
const PRIVATE_HOSTNAME_SUFFIXES = [
|
|
46
|
+
'.localhost',
|
|
47
|
+
'.local',
|
|
48
|
+
'.internal',
|
|
49
|
+
'.intranet',
|
|
50
|
+
'.lan',
|
|
51
|
+
'.home',
|
|
52
|
+
'.corp',
|
|
53
|
+
'.private',
|
|
54
|
+
];
|
|
55
|
+
/**
|
|
56
|
+
* Returns `true` if `address` is an IPv4 address string that does not fall in
|
|
57
|
+
* the public unicast range, or that matches a known cloud-metadata IP. Use
|
|
58
|
+
* this to gate outbound connections to tenant-supplied addresses.
|
|
59
|
+
*
|
|
60
|
+
* Fails closed: if `ipaddr.js` cannot parse a value that passed
|
|
61
|
+
* `node:net`'s `isIPv4` (parser/grammar skew across versions), the function
|
|
62
|
+
* returns `true` rather than letting the address through.
|
|
63
|
+
*
|
|
64
|
+
* Returns `false` for non-IPv4 input (including unparseable strings).
|
|
65
|
+
* Callers handle parsing themselves and pass only IP literals. Never throws.
|
|
66
|
+
*
|
|
67
|
+
* @see https://datatracker.ietf.org/doc/html/rfc1918 Address Allocation for Private Internets
|
|
68
|
+
* @see https://datatracker.ietf.org/doc/html/rfc6598 IANA-Reserved IPv4 Prefix for Shared Address Space (CGNAT)
|
|
69
|
+
* @see https://datatracker.ietf.org/doc/html/rfc3927 Dynamic Configuration of IPv4 Link-Local Addresses
|
|
70
|
+
* @see https://datatracker.ietf.org/doc/html/rfc5735 Special Use IPv4 Addresses
|
|
71
|
+
*/
|
|
72
|
+
export function isPrivateIpv4(address) {
|
|
73
|
+
if (!isIPv4(address))
|
|
74
|
+
return false;
|
|
75
|
+
if (ADDITIONAL_BLOCKED_IPV4.has(address))
|
|
76
|
+
return true;
|
|
77
|
+
try {
|
|
78
|
+
return ipaddr.parse(address).range() !== PUBLIC_RANGE;
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
return true; // Fail closed: cannot prove the address is public, so treat as private.
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Returns `true` if `address` is an IPv6 address string that is not a
|
|
86
|
+
* genuine public Global Unicast address. This is a default-deny predicate:
|
|
87
|
+
* an address is treated as public only when it is both inside the allocated
|
|
88
|
+
* `2000::/3` Global Unicast block and not one of the named special-purpose
|
|
89
|
+
* ranges within it; every other address, including reserved or unallocated
|
|
90
|
+
* space `ipaddr.js` has no name for, is denied. IPv4-mapped addresses
|
|
91
|
+
* (`::ffff:a.b.c.d`) are re-checked against {@link isPrivateIpv4}, and the
|
|
92
|
+
* deprecated IPv4-compatible form (`::a.b.c.d`) is rejected outright.
|
|
93
|
+
*
|
|
94
|
+
* Fails closed on parser drift, mirroring {@link isPrivateIpv4}.
|
|
95
|
+
*
|
|
96
|
+
* Returns `false` for non-IPv6 input. Never throws.
|
|
97
|
+
*
|
|
98
|
+
* @see https://datatracker.ietf.org/doc/html/rfc4291 IP Version 6 Addressing Architecture
|
|
99
|
+
* @see https://datatracker.ietf.org/doc/html/rfc4193 Unique Local IPv6 Unicast Addresses
|
|
100
|
+
*/
|
|
101
|
+
export function isPrivateIpv6(address) {
|
|
102
|
+
if (!isIPv6(address))
|
|
103
|
+
return false;
|
|
104
|
+
// The dotted IPv4-compatible spelling (`::a.b.c.d`) is rewritten by
|
|
105
|
+
// `ipaddr.js` into the IPv4-mapped byte layout before parsing, which would
|
|
106
|
+
// route it to the mapped (accept-if-public) branch below instead of the
|
|
107
|
+
// compatible (always-deny) branch. Deny the textual form up front so both
|
|
108
|
+
// spellings of the deprecated compatible form classify identically.
|
|
109
|
+
// The optional %zone suffix mirrors ipaddr.js's own deprecatedTransitional
|
|
110
|
+
// grammar; without it, a zone-indexed spelling (`::a.b.c.d%eth0`) would
|
|
111
|
+
// still reach the rewrite.
|
|
112
|
+
if (/^::\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(%[0-9a-z]+)?$/i.test(address))
|
|
113
|
+
return true;
|
|
114
|
+
try {
|
|
115
|
+
const parsed = ipaddr.parse(address);
|
|
116
|
+
if (parsed.kind() !== 'ipv6')
|
|
117
|
+
return true; // Defensive: parser/version skew. Fail closed.
|
|
118
|
+
const v6 = parsed;
|
|
119
|
+
const bytes = v6.toByteArray();
|
|
120
|
+
// Both embedded-IPv4 forms encode the IPv4 address in the last 4 bytes
|
|
121
|
+
// with the first 10 bytes zero, differing only in bytes 10-11 (0x0000
|
|
122
|
+
// for IPv4-compatible, 0xffff for IPv4-mapped). Extracting directly from
|
|
123
|
+
// the byte array, rather than trusting `::ffff:` textual matching or
|
|
124
|
+
// `isIPv4MappedAddress()` (which recognises only the mapped form), means
|
|
125
|
+
// neither encoding can bypass classification through this predicate.
|
|
126
|
+
// - IPv4-mapped (`::ffff:a.b.c.d`) is a real IPv4 destination tunnelled
|
|
127
|
+
// through IPv6, so the embedded address is re-checked against
|
|
128
|
+
// {@link isPrivateIpv4} and accepted if public.
|
|
129
|
+
// - IPv4-compatible (`::a.b.c.d`, RFC 4291 section 2.5.5.1) is
|
|
130
|
+
// deprecated, IANA-reserved space that does not route, so it is
|
|
131
|
+
// rejected unconditionally regardless of the embedded address (the
|
|
132
|
+
// dotted spelling is denied textually above, before `ipaddr.js`
|
|
133
|
+
// rewrites it to the mapped layout). This
|
|
134
|
+
// also covers `::` (unspecified) and `::1` (loopback), which take
|
|
135
|
+
// this same form.
|
|
136
|
+
const embedsIpv4 = bytes.slice(0, 10).every((byte) => byte === 0) && bytes[10] === bytes[11];
|
|
137
|
+
if (embedsIpv4 && bytes[10] === 0xff) {
|
|
138
|
+
return isPrivateIpv4(bytes.slice(12).join('.'));
|
|
139
|
+
}
|
|
140
|
+
if (embedsIpv4 && bytes[10] === 0x00) {
|
|
141
|
+
return true;
|
|
142
|
+
}
|
|
143
|
+
// `3ffe::/16` is the decommissioned 6bone experimental block: it sits
|
|
144
|
+
// inside `2000::/3` (top byte `0x3f`) so the Global Unicast gate below
|
|
145
|
+
// would otherwise let it through, and `ipaddr.js` has no named range
|
|
146
|
+
// for it, so `range()` reports the 'unicast' fallback for it too. It is
|
|
147
|
+
// IANA-reserved and does not route; deny it explicitly.
|
|
148
|
+
if (bytes[0] === 0x3f && bytes[1] === 0xfe) {
|
|
149
|
+
return true;
|
|
150
|
+
}
|
|
151
|
+
// Default-deny: `range()` reports the 'unicast' fallback for any
|
|
152
|
+
// address matching none of `ipaddr.js`'s named special ranges, so it is
|
|
153
|
+
// not by itself a positive "allocated and routable" signal. `4000::1`,
|
|
154
|
+
// `fe00::1`, and `101::1` are all unallocated or IANA-reserved space,
|
|
155
|
+
// and all report `range() === 'unicast'`, so treating that alone as
|
|
156
|
+
// "public" fails open. Requiring the address to also fall inside the
|
|
157
|
+
// allocated Global Unicast block `2000::/3` (top 3 bits `001`) closes
|
|
158
|
+
// that gap while `range()` still excludes the named special-purpose
|
|
159
|
+
// ranges nested inside that block (documentation `2001:db8::/32`,
|
|
160
|
+
// teredo `2001::/32`, 6to4 `2002::/16`, benchmarking `2001:2::/48`).
|
|
161
|
+
//
|
|
162
|
+
// This is not a claim of complete IANA-allocation tracking: it denies
|
|
163
|
+
// everything outside `2000::/3`, everything `ipaddr.js` special-cases
|
|
164
|
+
// within it, and the explicitly-listed `3ffe::/16` above. It does not
|
|
165
|
+
// enumerate every IANA reservation inside `2000::/3` and cannot prove
|
|
166
|
+
// an address is *currently* routed.
|
|
167
|
+
const isAllocatedGlobalUnicast = (bytes[0] & 0xe0) === 0x20;
|
|
168
|
+
return !(isAllocatedGlobalUnicast && v6.range() === PUBLIC_RANGE);
|
|
169
|
+
}
|
|
170
|
+
catch {
|
|
171
|
+
return true; // Fail closed: cannot prove the address is public, so treat as private.
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Returns `true` if `host` always names a local resource (`localhost`,
|
|
176
|
+
* anything under `.localhost`, `.local`, `.internal`, etc.) or an IP literal
|
|
177
|
+
* in a non-public range.
|
|
178
|
+
*
|
|
179
|
+
* The empty string is treated as private (a URL with no hostname must never
|
|
180
|
+
* be allowed out).
|
|
181
|
+
*/
|
|
182
|
+
export function isPrivateHostname(host) {
|
|
183
|
+
if (!host)
|
|
184
|
+
return true;
|
|
185
|
+
// Strip leading/trailing brackets (URL.hostname wraps IPv6 literals like
|
|
186
|
+
// `[::1]`) and any trailing dot before further checks; without this, a
|
|
187
|
+
// direct caller passing `URL.hostname` for an IPv6 URL would silently
|
|
188
|
+
// miss the private-range match.
|
|
189
|
+
const lower = host
|
|
190
|
+
.toLowerCase()
|
|
191
|
+
.replace(/^\[|\]$/g, '')
|
|
192
|
+
.replace(/\.$/, '');
|
|
193
|
+
if (lower === 'localhost')
|
|
194
|
+
return true;
|
|
195
|
+
if (PRIVATE_HOSTNAME_SUFFIXES.some((suffix) => lower.endsWith(suffix)))
|
|
196
|
+
return true;
|
|
197
|
+
if (isIPv4(lower))
|
|
198
|
+
return isPrivateIpv4(lower);
|
|
199
|
+
if (isIPv6(lower))
|
|
200
|
+
return isPrivateIpv6(lower);
|
|
201
|
+
return false;
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=is-private-ip.js.map
|