@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-document.test.js","sourceRoot":"","sources":["../../src/resolvers/resolve-document.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { type ResolveDocumentOptions } from './resolve-document.js';
|
|
2
|
+
/**
|
|
3
|
+
* Options for {@link resolveJsonDocument}. Extends {@link ResolveDocumentOptions}
|
|
4
|
+
* with content negotiation. This wrapper alters none of the underlying
|
|
5
|
+
* {@link resolveDocument} guards: every SSRF / size / timeout / redirect guard
|
|
6
|
+
* applies, and an explicit resolver option may permit private destinations
|
|
7
|
+
* while the remaining guards stay active.
|
|
8
|
+
*/
|
|
9
|
+
export interface ResolveJsonDocumentOptions extends ResolveDocumentOptions {
|
|
10
|
+
/**
|
|
11
|
+
* `Accept` header sent with the request. Defaults to `application/json`.
|
|
12
|
+
* An explicit accept header in {@link ResolveDocumentOptions.headers}
|
|
13
|
+
* (any casing) takes precedence over this.
|
|
14
|
+
*/
|
|
15
|
+
accept?: string;
|
|
16
|
+
}
|
|
17
|
+
/** A JSON document fetched through the guarded resolver. */
|
|
18
|
+
export interface ResolvedJsonDocument {
|
|
19
|
+
/** The parsed JSON value. */
|
|
20
|
+
json: unknown;
|
|
21
|
+
/** Final URL after redirect chasing (matches the input when there were no redirects). */
|
|
22
|
+
finalUrl: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Fetches a remote JSON document with the SSRF / size / timeout / redirect
|
|
26
|
+
* hardening of {@link resolveDocument}, then parses the body as JSON.
|
|
27
|
+
*
|
|
28
|
+
* This is the shared primitive behind guarded JSON-shaped fetches (JSON-LD
|
|
29
|
+
* `@context` documents, JSON Schemas, catalogue documents): by default each
|
|
30
|
+
* URL and every redirect hop passes strict `validatePublicUrl` checks and the
|
|
31
|
+
* connection is pinned to the validated IP. An explicit resolver option may
|
|
32
|
+
* permit private destinations without removing the remaining checks.
|
|
33
|
+
*
|
|
34
|
+
* @throws {UrlValidationError} for URL / scheme / private-address rejections.
|
|
35
|
+
* @throws {ResolverNetworkError} per {@link resolveDocument}'s classification: the fetch rejected before a response, or the body read rejected after the headers arrived, and the rejection was not classified as the request's timeout.
|
|
36
|
+
* @throws {ResolverHttpError} on a non-2xx status (with `.status`).
|
|
37
|
+
* @throws {ResolverTooLargeError} when the body exceeds the size cap.
|
|
38
|
+
* @throws {ResolverTooManyRedirectsError} when the redirect chain exceeds the hop cap.
|
|
39
|
+
* @throws {ResolverTimedOutError} per {@link resolveDocument}'s classification of the total timeout expiring. This wrapper adds no timer and no classifier of its own; it owns JSON parsing only.
|
|
40
|
+
* @throws {ResolverRedirectMissingLocationError} for a 3xx with no / unparseable Location header.
|
|
41
|
+
* @throws {ResolverInvalidJsonError} when the fetched body is not valid JSON.
|
|
42
|
+
*/
|
|
43
|
+
export declare function resolveJsonDocument(url: string, options?: ResolveJsonDocumentOptions): Promise<ResolvedJsonDocument>;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { resolveDocument } from './resolve-document.js';
|
|
2
|
+
import { ResolverInvalidJsonError } from './errors.js';
|
|
3
|
+
/** Default `Accept` header when the caller does not specify one. */
|
|
4
|
+
const DEFAULT_ACCEPT = 'application/json';
|
|
5
|
+
/**
|
|
6
|
+
* Fetches a remote JSON document with the SSRF / size / timeout / redirect
|
|
7
|
+
* hardening of {@link resolveDocument}, then parses the body as JSON.
|
|
8
|
+
*
|
|
9
|
+
* This is the shared primitive behind guarded JSON-shaped fetches (JSON-LD
|
|
10
|
+
* `@context` documents, JSON Schemas, catalogue documents): by default each
|
|
11
|
+
* URL and every redirect hop passes strict `validatePublicUrl` checks and the
|
|
12
|
+
* connection is pinned to the validated IP. An explicit resolver option may
|
|
13
|
+
* permit private destinations without removing the remaining checks.
|
|
14
|
+
*
|
|
15
|
+
* @throws {UrlValidationError} for URL / scheme / private-address rejections.
|
|
16
|
+
* @throws {ResolverNetworkError} per {@link resolveDocument}'s classification: the fetch rejected before a response, or the body read rejected after the headers arrived, and the rejection was not classified as the request's timeout.
|
|
17
|
+
* @throws {ResolverHttpError} on a non-2xx status (with `.status`).
|
|
18
|
+
* @throws {ResolverTooLargeError} when the body exceeds the size cap.
|
|
19
|
+
* @throws {ResolverTooManyRedirectsError} when the redirect chain exceeds the hop cap.
|
|
20
|
+
* @throws {ResolverTimedOutError} per {@link resolveDocument}'s classification of the total timeout expiring. This wrapper adds no timer and no classifier of its own; it owns JSON parsing only.
|
|
21
|
+
* @throws {ResolverRedirectMissingLocationError} for a 3xx with no / unparseable Location header.
|
|
22
|
+
* @throws {ResolverInvalidJsonError} when the fetched body is not valid JSON.
|
|
23
|
+
*/
|
|
24
|
+
export async function resolveJsonDocument(url, options) {
|
|
25
|
+
const { accept, headers, ...resolverOptions } = options ?? {};
|
|
26
|
+
// HTTP header names are case-insensitive, so an accept header supplied in
|
|
27
|
+
// any casing suppresses the default rather than producing a second header.
|
|
28
|
+
const hasExplicitAccept = Object.keys(headers ?? {}).some((key) => key.toLowerCase() === 'accept');
|
|
29
|
+
const result = await resolveDocument(url, {
|
|
30
|
+
...resolverOptions,
|
|
31
|
+
headers: hasExplicitAccept ? headers : { Accept: accept ?? DEFAULT_ACCEPT, ...headers },
|
|
32
|
+
});
|
|
33
|
+
const text = new TextDecoder().decode(result.body);
|
|
34
|
+
let json;
|
|
35
|
+
try {
|
|
36
|
+
json = JSON.parse(text);
|
|
37
|
+
}
|
|
38
|
+
catch (cause) {
|
|
39
|
+
throw new ResolverInvalidJsonError(result.finalUrl, cause);
|
|
40
|
+
}
|
|
41
|
+
return { json, finalUrl: result.finalUrl };
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=resolve-json-document.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-json-document.js","sourceRoot":"","sources":["../../src/resolvers/resolve-json-document.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAA+B,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAEvD,oEAAoE;AACpE,MAAM,cAAc,GAAG,kBAAkB,CAAC;AA0B1C;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,GAAW,EACX,OAAoC;IAEpC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,eAAe,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAE9D,0EAA0E;IAC1E,2EAA2E;IAC3E,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,CAAC;IACnG,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,GAAG,EAAE;QACxC,GAAG,eAAe;QAClB,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,IAAI,cAAc,EAAE,GAAG,OAAO,EAAE;KACxF,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,IAAa,CAAC;IAClB,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,wBAAwB,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { jest } from '@jest/globals';
|
|
2
|
+
import { ResolverHttpError, ResolverInvalidJsonError } from './errors.js';
|
|
3
|
+
const resolveDocument = jest.fn();
|
|
4
|
+
jest.unstable_mockModule('./resolve-document.js', () => ({
|
|
5
|
+
resolveDocument,
|
|
6
|
+
}));
|
|
7
|
+
const { resolveJsonDocument } = await import('./resolve-json-document.js');
|
|
8
|
+
const encode = (s) => new TextEncoder().encode(s);
|
|
9
|
+
describe('resolveJsonDocument', () => {
|
|
10
|
+
beforeEach(() => {
|
|
11
|
+
resolveDocument.mockReset();
|
|
12
|
+
});
|
|
13
|
+
it('fetches through resolveDocument and returns the parsed JSON with the final URL', async () => {
|
|
14
|
+
resolveDocument.mockResolvedValue({ body: encode('{"a":1}'), finalUrl: 'https://ex.test/doc' });
|
|
15
|
+
await expect(resolveJsonDocument('https://ex.test/doc')).resolves.toEqual({
|
|
16
|
+
json: { a: 1 },
|
|
17
|
+
finalUrl: 'https://ex.test/doc',
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
it('defaults the Accept header to application/json', async () => {
|
|
21
|
+
resolveDocument.mockResolvedValue({ body: encode('{}'), finalUrl: 'https://ex.test/doc' });
|
|
22
|
+
await resolveJsonDocument('https://ex.test/doc');
|
|
23
|
+
expect(resolveDocument).toHaveBeenCalledWith('https://ex.test/doc', expect.objectContaining({ headers: expect.objectContaining({ Accept: 'application/json' }) }));
|
|
24
|
+
});
|
|
25
|
+
it('sends the supplied accept value', async () => {
|
|
26
|
+
resolveDocument.mockResolvedValue({ body: encode('{}'), finalUrl: 'https://ex.test/doc' });
|
|
27
|
+
await resolveJsonDocument('https://ex.test/doc', { accept: 'application/ld+json' });
|
|
28
|
+
expect(resolveDocument).toHaveBeenCalledWith('https://ex.test/doc', expect.objectContaining({ headers: expect.objectContaining({ Accept: 'application/ld+json' }) }));
|
|
29
|
+
});
|
|
30
|
+
it('lets an explicit headers.Accept override the accept option', async () => {
|
|
31
|
+
resolveDocument.mockResolvedValue({ body: encode('{}'), finalUrl: 'https://ex.test/doc' });
|
|
32
|
+
await resolveJsonDocument('https://ex.test/doc', {
|
|
33
|
+
accept: 'application/ld+json',
|
|
34
|
+
headers: { Accept: 'application/schema+json' },
|
|
35
|
+
});
|
|
36
|
+
expect(resolveDocument).toHaveBeenCalledWith('https://ex.test/doc', expect.objectContaining({ headers: expect.objectContaining({ Accept: 'application/schema+json' }) }));
|
|
37
|
+
});
|
|
38
|
+
it('lets a lowercase accept header key take precedence without duplicating the header', async () => {
|
|
39
|
+
resolveDocument.mockResolvedValue({ body: encode('{}'), finalUrl: 'https://ex.test/doc' });
|
|
40
|
+
await resolveJsonDocument('https://ex.test/doc', {
|
|
41
|
+
accept: 'application/ld+json',
|
|
42
|
+
headers: { accept: 'application/schema+json' },
|
|
43
|
+
});
|
|
44
|
+
expect(resolveDocument).toHaveBeenCalledWith('https://ex.test/doc', expect.objectContaining({ headers: { accept: 'application/schema+json' } }));
|
|
45
|
+
});
|
|
46
|
+
it('forwards resolver options including private permission unchanged', async () => {
|
|
47
|
+
resolveDocument.mockResolvedValue({ body: encode('{}'), finalUrl: 'https://ex.test/doc' });
|
|
48
|
+
await resolveJsonDocument('https://ex.test/doc', {
|
|
49
|
+
allowedSchemes: ['https'],
|
|
50
|
+
maxResponseBytes: 2048,
|
|
51
|
+
allowPrivateAddresses: true,
|
|
52
|
+
});
|
|
53
|
+
expect(resolveDocument).toHaveBeenCalledWith('https://ex.test/doc', expect.objectContaining({ allowedSchemes: ['https'], maxResponseBytes: 2048, allowPrivateAddresses: true }));
|
|
54
|
+
});
|
|
55
|
+
it('leaves the default resolver lookup path unchanged when no lookup is supplied', async () => {
|
|
56
|
+
resolveDocument.mockResolvedValue({ body: encode('{}'), finalUrl: 'https://ex.test/doc' });
|
|
57
|
+
await resolveJsonDocument('https://ex.test/doc');
|
|
58
|
+
expect(resolveDocument.mock.calls[0][1]).not.toHaveProperty('lookup');
|
|
59
|
+
});
|
|
60
|
+
it('forwards the optional lookup callback to the guarded resolver', async () => {
|
|
61
|
+
const lookup = jest.fn();
|
|
62
|
+
resolveDocument.mockResolvedValue({ body: encode('{}'), finalUrl: 'https://ex.test/doc' });
|
|
63
|
+
await resolveJsonDocument('https://ex.test/doc', { lookup });
|
|
64
|
+
expect(resolveDocument).toHaveBeenCalledWith('https://ex.test/doc', expect.objectContaining({ lookup }));
|
|
65
|
+
});
|
|
66
|
+
it('throws ResolverInvalidJsonError when the body is not valid JSON', async () => {
|
|
67
|
+
resolveDocument.mockResolvedValue({ body: encode('not json'), finalUrl: 'https://ex.test/doc' });
|
|
68
|
+
const error = (await resolveJsonDocument('https://ex.test/doc').catch((e) => e));
|
|
69
|
+
expect(error).toBeInstanceOf(ResolverInvalidJsonError);
|
|
70
|
+
expect(error.url).toBe('https://ex.test/doc');
|
|
71
|
+
});
|
|
72
|
+
it('propagates resolveDocument errors (SSRF guard, HTTP, timeout) unchanged', async () => {
|
|
73
|
+
const httpError = new ResolverHttpError('https://ex.test/doc', 404);
|
|
74
|
+
resolveDocument.mockRejectedValue(httpError);
|
|
75
|
+
await expect(resolveJsonDocument('https://ex.test/doc')).rejects.toBe(httpError);
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
//# sourceMappingURL=resolve-json-document.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-json-document.test.js","sourceRoot":"","sources":["../../src/resolvers/resolve-json-document.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System-wide base class for structured diagnostics, per ADR-035.
|
|
3
|
+
*
|
|
4
|
+
* Sub-entries and consumer packages extend this class with their own typed
|
|
5
|
+
* hierarchies. Lives in `@uncefact/untp-utils` because every workspace
|
|
6
|
+
* package already depends on it; the name is neutral, not utils-specific.
|
|
7
|
+
*
|
|
8
|
+
* @see ../../../docs/adrs/035-utils-throws-structured-errors.md
|
|
9
|
+
*/
|
|
10
|
+
export interface StructuredDiagnostic {
|
|
11
|
+
/** Stable, namespaced identifier (e.g. `url.private-address`). */
|
|
12
|
+
code: string;
|
|
13
|
+
/** Human-facing summary. */
|
|
14
|
+
message: string;
|
|
15
|
+
/** Failing input or upstream value. */
|
|
16
|
+
received?: unknown;
|
|
17
|
+
/** What was expected. */
|
|
18
|
+
expected?: unknown;
|
|
19
|
+
/** Suggested next step. */
|
|
20
|
+
remediation?: string;
|
|
21
|
+
/** RFC 6901 JSON pointer into the input. */
|
|
22
|
+
pointer?: string;
|
|
23
|
+
}
|
|
24
|
+
export interface StructuredErrorInit extends StructuredDiagnostic {
|
|
25
|
+
/** Underlying error wrapped via `Error.cause`. */
|
|
26
|
+
cause?: unknown;
|
|
27
|
+
}
|
|
28
|
+
export declare class StructuredError extends Error {
|
|
29
|
+
readonly code: string;
|
|
30
|
+
readonly received?: unknown;
|
|
31
|
+
readonly expected?: unknown;
|
|
32
|
+
readonly remediation?: string;
|
|
33
|
+
readonly pointer?: string;
|
|
34
|
+
constructor(init: StructuredErrorInit);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Advisory diagnostic returned on the success path of functions that
|
|
38
|
+
* opt into warnings (ADR-035 §5).
|
|
39
|
+
*/
|
|
40
|
+
export interface StructuredWarning extends StructuredDiagnostic {
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* One entry in a multi-failure case (e.g. one of N Ajv `allErrors`).
|
|
44
|
+
* Carried on the thrown subclass as `failures: readonly ValidationFailure[]`
|
|
45
|
+
* (ADR-035 §4). Same shape as {@link StructuredWarning}; the type
|
|
46
|
+
* distinguishes fatal sub-failure from advisory at the call site.
|
|
47
|
+
*/
|
|
48
|
+
export interface ValidationFailure extends StructuredDiagnostic {
|
|
49
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export class StructuredError extends Error {
|
|
2
|
+
code;
|
|
3
|
+
constructor(init) {
|
|
4
|
+
super(init.message, init.cause !== undefined ? { cause: init.cause } : undefined);
|
|
5
|
+
this.name = new.target.name;
|
|
6
|
+
this.code = init.code;
|
|
7
|
+
if (init.received !== undefined)
|
|
8
|
+
this.received = init.received;
|
|
9
|
+
if (init.expected !== undefined)
|
|
10
|
+
this.expected = init.expected;
|
|
11
|
+
if (init.remediation !== undefined)
|
|
12
|
+
this.remediation = init.remediation;
|
|
13
|
+
if (init.pointer !== undefined)
|
|
14
|
+
this.pointer = init.pointer;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=structured-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structured-error.js","sourceRoot":"","sources":["../src/structured-error.ts"],"names":[],"mappings":"AA6BA,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAC/B,IAAI,CAAS;IAQtB,YAAY,IAAyB;QACnC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAClF,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;YAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/D,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;YAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/D,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;YAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACxE,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;YAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC9D,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { StructuredError } from './structured-error.js';
|
|
2
|
+
describe('StructuredError', () => {
|
|
3
|
+
describe('constructor', () => {
|
|
4
|
+
it('assigns code and message', () => {
|
|
5
|
+
const e = new StructuredError({ code: 'demo.code', message: 'demo message' });
|
|
6
|
+
expect(e.code).toBe('demo.code');
|
|
7
|
+
expect(e.message).toBe('demo message');
|
|
8
|
+
});
|
|
9
|
+
it('assigns received / expected / remediation / pointer when supplied', () => {
|
|
10
|
+
const e = new StructuredError({
|
|
11
|
+
code: 'demo.code',
|
|
12
|
+
message: 'm',
|
|
13
|
+
received: { foo: 1 },
|
|
14
|
+
expected: 'bar',
|
|
15
|
+
remediation: 'do something',
|
|
16
|
+
pointer: '/foo/bar',
|
|
17
|
+
});
|
|
18
|
+
expect(e.received).toEqual({ foo: 1 });
|
|
19
|
+
expect(e.expected).toBe('bar');
|
|
20
|
+
expect(e.remediation).toBe('do something');
|
|
21
|
+
expect(e.pointer).toBe('/foo/bar');
|
|
22
|
+
});
|
|
23
|
+
it('leaves optional fields undefined when not supplied', () => {
|
|
24
|
+
const e = new StructuredError({ code: 'c', message: 'm' });
|
|
25
|
+
expect(e.received).toBeUndefined();
|
|
26
|
+
expect(e.expected).toBeUndefined();
|
|
27
|
+
expect(e.remediation).toBeUndefined();
|
|
28
|
+
expect(e.pointer).toBeUndefined();
|
|
29
|
+
});
|
|
30
|
+
it('omits absent optional fields from the instance (in-operator returns false)', () => {
|
|
31
|
+
const e = new StructuredError({ code: 'c', message: 'm' });
|
|
32
|
+
expect('received' in e).toBe(false);
|
|
33
|
+
expect('expected' in e).toBe(false);
|
|
34
|
+
expect('remediation' in e).toBe(false);
|
|
35
|
+
expect('pointer' in e).toBe(false);
|
|
36
|
+
});
|
|
37
|
+
it('includes supplied optional fields on the instance (in-operator returns true)', () => {
|
|
38
|
+
const e = new StructuredError({ code: 'c', message: 'm', received: 'x', pointer: '/y' });
|
|
39
|
+
expect('received' in e).toBe(true);
|
|
40
|
+
expect('pointer' in e).toBe(true);
|
|
41
|
+
expect('expected' in e).toBe(false);
|
|
42
|
+
expect('remediation' in e).toBe(false);
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
describe('Error.cause integration', () => {
|
|
46
|
+
it('wires cause through to the underlying Error', () => {
|
|
47
|
+
const underlying = new Error('boom');
|
|
48
|
+
const e = new StructuredError({ code: 'c', message: 'm', cause: underlying });
|
|
49
|
+
expect(e.cause).toBe(underlying);
|
|
50
|
+
});
|
|
51
|
+
it('omits cause from the underlying Error when not supplied', () => {
|
|
52
|
+
const e = new StructuredError({ code: 'c', message: 'm' });
|
|
53
|
+
expect(e.cause).toBeUndefined();
|
|
54
|
+
});
|
|
55
|
+
it('accepts non-Error causes (string, object, etc.)', () => {
|
|
56
|
+
const e = new StructuredError({ code: 'c', message: 'm', cause: 'string cause' });
|
|
57
|
+
expect(e.cause).toBe('string cause');
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
describe('name', () => {
|
|
61
|
+
it('resolves to the concrete subclass name in stack traces and logs', () => {
|
|
62
|
+
class PrivateAddressError extends StructuredError {
|
|
63
|
+
}
|
|
64
|
+
const e = new PrivateAddressError({ code: 'url.private-address', message: 'm' });
|
|
65
|
+
expect(e.name).toBe('PrivateAddressError');
|
|
66
|
+
});
|
|
67
|
+
it('uses StructuredError when constructed directly (not via a subclass)', () => {
|
|
68
|
+
const e = new StructuredError({ code: 'c', message: 'm' });
|
|
69
|
+
expect(e.name).toBe('StructuredError');
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
describe('instanceof and Error inheritance', () => {
|
|
73
|
+
it('is an instance of Error', () => {
|
|
74
|
+
const e = new StructuredError({ code: 'c', message: 'm' });
|
|
75
|
+
expect(e).toBeInstanceOf(Error);
|
|
76
|
+
});
|
|
77
|
+
it('is an instance of StructuredError when constructed directly', () => {
|
|
78
|
+
const e = new StructuredError({ code: 'c', message: 'm' });
|
|
79
|
+
expect(e).toBeInstanceOf(StructuredError);
|
|
80
|
+
});
|
|
81
|
+
it('preserves the StructuredError instanceof check for concrete subclasses', () => {
|
|
82
|
+
class SubError extends StructuredError {
|
|
83
|
+
}
|
|
84
|
+
const e = new SubError({ code: 'c', message: 'm' });
|
|
85
|
+
expect(e).toBeInstanceOf(SubError);
|
|
86
|
+
expect(e).toBeInstanceOf(StructuredError);
|
|
87
|
+
expect(e).toBeInstanceOf(Error);
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
describe('throwability', () => {
|
|
91
|
+
it('round-trips through try/catch as the concrete subclass', () => {
|
|
92
|
+
class DemoError extends StructuredError {
|
|
93
|
+
extraField;
|
|
94
|
+
constructor(init) {
|
|
95
|
+
super(init);
|
|
96
|
+
this.extraField = init.extraField;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
let caught;
|
|
100
|
+
try {
|
|
101
|
+
throw new DemoError({ code: 'demo.x', message: 'm', extraField: 'value' });
|
|
102
|
+
}
|
|
103
|
+
catch (e) {
|
|
104
|
+
caught = e;
|
|
105
|
+
}
|
|
106
|
+
expect(caught).toBeInstanceOf(DemoError);
|
|
107
|
+
expect(caught.extraField).toBe('value');
|
|
108
|
+
expect(caught.code).toBe('demo.x');
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
//# sourceMappingURL=structured-error.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structured-error.test.js","sourceRoot":"","sources":["../src/structured-error.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { JsonLdValidationError } from './errors.js';
|
|
2
|
+
/**
|
|
3
|
+
* A caller-facing description of why JSON-LD validation failed, split into
|
|
4
|
+
* the two classes a caller reacts to differently: a problem with their
|
|
5
|
+
* document (fix the payload) versus a remote `@context` that could not be
|
|
6
|
+
* fetched or used (an environment or upstream condition; the payload may be
|
|
7
|
+
* fine).
|
|
8
|
+
*/
|
|
9
|
+
/** The event and syntax-error identifiers the classifier is allowed to echo, see {@link SAFE_EVENT_FIELDS}. */
|
|
10
|
+
export type SafeJsonLdFields = Partial<Record<(typeof SAFE_EVENT_FIELDS)[number], string>>;
|
|
11
|
+
interface JsonLdFailureDescriptionBase {
|
|
12
|
+
/**
|
|
13
|
+
* Human-facing reason, safe to return to the caller. Every branch below
|
|
14
|
+
* must preserve that property: detail comes only from explicitly
|
|
15
|
+
* recognised shapes (the guarded loader's typed diagnostics, jsonld.js
|
|
16
|
+
* safe-mode events via an allowlist of string fields, jsonld.js's fixed
|
|
17
|
+
* syntax-error strings, or this package's own typed messages). Messages
|
|
18
|
+
* from unrecognised errors never reach this field; unknown failures get
|
|
19
|
+
* a generic message and the full chain stays on `cause` for the log.
|
|
20
|
+
*/
|
|
21
|
+
detail: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* A remote `@context` could not be used. `context-fetch`: it could not be
|
|
25
|
+
* fetched (host down, URL refused, bounds exceeded). `context-invalid`: it
|
|
26
|
+
* was fetched but is not usable as a context.
|
|
27
|
+
*/
|
|
28
|
+
export interface JsonLdContextFailure extends JsonLdFailureDescriptionBase {
|
|
29
|
+
kind: 'context-fetch' | 'context-invalid';
|
|
30
|
+
/**
|
|
31
|
+
* The resolver's structured code or the recognised jsonld.js code. Absent
|
|
32
|
+
* for a URL-policy rejection on purpose: its subclasses must stay
|
|
33
|
+
* indistinguishable to the caller (see {@link describeJsonLdFailure}), so
|
|
34
|
+
* do not tighten this.
|
|
35
|
+
*/
|
|
36
|
+
code?: string;
|
|
37
|
+
/** The `@context` URL that failed, when jsonld.js names one; it comes from the caller's own document. */
|
|
38
|
+
url?: string;
|
|
39
|
+
}
|
|
40
|
+
/** The contexts are fine and the document itself fails against them. */
|
|
41
|
+
export interface JsonLdDocumentFailure extends JsonLdFailureDescriptionBase {
|
|
42
|
+
kind: 'document';
|
|
43
|
+
/** The jsonld.js syntax-error or safe-mode event code, or this module's own `invalid document shape` code. */
|
|
44
|
+
code?: string;
|
|
45
|
+
/**
|
|
46
|
+
* Whether jsonld.js rejected the context definitions themselves
|
|
47
|
+
* (`syntax-error`) or the document's content under them
|
|
48
|
+
* (`safe-mode-event`). A verifier tells its user to fix the @context in
|
|
49
|
+
* the first case and the credential in the second. Absent when neither
|
|
50
|
+
* shape was recognised.
|
|
51
|
+
*/
|
|
52
|
+
source?: 'syntax-error' | 'safe-mode-event';
|
|
53
|
+
/** Allowlisted identifiers from the event or syntax error, see {@link SAFE_EVENT_FIELDS}. */
|
|
54
|
+
fields?: SafeJsonLdFields;
|
|
55
|
+
}
|
|
56
|
+
export type JsonLdFailureDescription = JsonLdContextFailure | JsonLdDocumentFailure;
|
|
57
|
+
/** Event `details` fields safe to echo: identifiers from the caller's own document or a public context, never free-form values that can carry credential content. */
|
|
58
|
+
/** The only jsonld.js event and syntax-error detail fields ever echoed to a caller; everything else may carry document content. */
|
|
59
|
+
export declare const SAFE_EVENT_FIELDS: readonly ["property", "expandedProperty", "id", "type", "term", "language", "vocab"];
|
|
60
|
+
/**
|
|
61
|
+
* Classifies a {@link JsonLdValidationError} by walking its cause chain
|
|
62
|
+
* (native `.cause` hops; the chain is rehydrated by `validateJsonLd`, see
|
|
63
|
+
* issue #773).
|
|
64
|
+
*
|
|
65
|
+
* The passes run in a load-bearing order. The rehydrated chain nests the
|
|
66
|
+
* guarded loader's error BENEATH jsonld.js's own wrapper
|
|
67
|
+
* (`JsonLdExpansionFailedError` -> `jsonld.InvalidUrl` -> the loader's
|
|
68
|
+
* `UrlValidationError`), and the wrapper's message contains the URL, so no
|
|
69
|
+
* jsonld.js message may become `detail` until the typed-loader pass has
|
|
70
|
+
* exhausted the whole chain; matching the wrapper's message first would
|
|
71
|
+
* reopen the per-hostname reconnaissance oracle the flat message exists to
|
|
72
|
+
* close. The URL scan that runs before the typed-loader pass reads only the
|
|
73
|
+
* wrapper's `details.url`, which is the caller's own document's URL.
|
|
74
|
+
*
|
|
75
|
+
* `UrlValidationError` deliberately collapses to one flat message: its
|
|
76
|
+
* subclasses distinguish "does not resolve" from "resolves to a private
|
|
77
|
+
* address" from "scheme not allowed", and echoing that distinction would
|
|
78
|
+
* hand an authenticated caller a network-reconnaissance oracle over
|
|
79
|
+
* attacker-chosen `@context` URLs. The full typed diagnostic stays on the
|
|
80
|
+
* cause chain for the server-side log. `ResolverError` diagnostics fire
|
|
81
|
+
* only after the URL passed the public-address check, so their detail
|
|
82
|
+
* (HTTP status, timeout, size bound) is returned as-is.
|
|
83
|
+
*
|
|
84
|
+
* Known limitation, accepted: a malformed term definition inside a
|
|
85
|
+
* successfully fetched remote context surfaces as a `jsonld.SyntaxError`
|
|
86
|
+
* indistinguishable from the same defect in an inline context, and is
|
|
87
|
+
* classified as a document failure.
|
|
88
|
+
*/
|
|
89
|
+
export declare function describeJsonLdFailure(error: JsonLdValidationError): JsonLdFailureDescription;
|
|
90
|
+
export {};
|