@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.
Files changed (389) hide show
  1. package/README.md +52 -2
  2. package/artefacts/context/untp/0.6.0/dcc.json +1241 -0
  3. package/artefacts/context/untp/0.6.0/dfr.json +619 -0
  4. package/artefacts/context/untp/0.6.0/dia.json +162 -0
  5. package/artefacts/context/untp/0.6.0/dpp.json +1078 -0
  6. package/artefacts/context/untp/0.6.0/dte.json +1285 -0
  7. package/artefacts/context/untp/0.6.1/dcc.json +1388 -0
  8. package/artefacts/context/untp/0.6.1/dfr.json +690 -0
  9. package/artefacts/context/untp/0.6.1/dia.json +196 -0
  10. package/artefacts/context/untp/0.6.1/dpp.json +1164 -0
  11. package/artefacts/context/untp/0.6.1/dte.json +1340 -0
  12. package/artefacts/context/untp/0.7.0/untp.json +3493 -0
  13. package/artefacts/context/vcdm/2/credentials.json +301 -0
  14. package/artefacts/manifest.json +214 -0
  15. package/artefacts/schema/untp/0.6.0/dcc.json +1131 -0
  16. package/artefacts/schema/untp/0.6.0/dfr.json +1028 -0
  17. package/artefacts/schema/untp/0.6.0/dia.json +236 -0
  18. package/artefacts/schema/untp/0.6.0/dpp.json +1219 -0
  19. package/artefacts/schema/untp/0.6.0/dte.json +845 -0
  20. package/artefacts/schema/untp/0.6.1/dcc.json +1196 -0
  21. package/artefacts/schema/untp/0.6.1/dfr.json +1037 -0
  22. package/artefacts/schema/untp/0.6.1/dia.json +236 -0
  23. package/artefacts/schema/untp/0.6.1/dpp.json +1229 -0
  24. package/artefacts/schema/untp/0.6.1/dte.json +845 -0
  25. package/artefacts/schema/untp/0.7.0/cvc.json +701 -0
  26. package/artefacts/schema/untp/0.7.0/dcc.json +1133 -0
  27. package/artefacts/schema/untp/0.7.0/dfr.json +1245 -0
  28. package/artefacts/schema/untp/0.7.0/dia.json +443 -0
  29. package/artefacts/schema/untp/0.7.0/dpp.json +1300 -0
  30. package/artefacts/schema/untp/0.7.0/dte.json +1226 -0
  31. package/artefacts/schema/untp/0.7.0/linkset.json +119 -0
  32. package/artefacts/schema/vcdm/2/verifiable-credential.json +318 -0
  33. package/build/artefacts/detect-version-from-context.d.ts +46 -0
  34. package/build/artefacts/detect-version-from-context.js +77 -0
  35. package/build/artefacts/detect-version-from-context.js.map +1 -0
  36. package/build/artefacts/detect-version-from-context.test.d.ts +1 -0
  37. package/build/artefacts/detect-version-from-context.test.js +69 -0
  38. package/build/artefacts/detect-version-from-context.test.js.map +1 -0
  39. package/build/artefacts/index.d.ts +3 -0
  40. package/build/artefacts/index.js +4 -0
  41. package/build/artefacts/index.js.map +1 -0
  42. package/build/artefacts/urls.d.ts +85 -0
  43. package/build/artefacts/urls.js +141 -0
  44. package/build/artefacts/urls.js.map +1 -0
  45. package/build/artefacts/urls.test.d.ts +1 -0
  46. package/build/artefacts/urls.test.js +99 -0
  47. package/build/artefacts/urls.test.js.map +1 -0
  48. package/build/artefacts/version.d.ts +9 -0
  49. package/build/artefacts/version.js +17 -0
  50. package/build/artefacts/version.js.map +1 -0
  51. package/build/artefacts/version.test.d.ts +1 -0
  52. package/build/artefacts/version.test.js +16 -0
  53. package/build/artefacts/version.test.js.map +1 -0
  54. package/build/bundle/artefacts/context/untp/0.6.0/dcc.d.ts +2 -0
  55. package/build/bundle/artefacts/context/untp/0.6.0/dcc.js +1244 -0
  56. package/build/bundle/artefacts/context/untp/0.6.0/dcc.js.map +1 -0
  57. package/build/bundle/artefacts/context/untp/0.6.0/dfr.d.ts +2 -0
  58. package/build/bundle/artefacts/context/untp/0.6.0/dfr.js +622 -0
  59. package/build/bundle/artefacts/context/untp/0.6.0/dfr.js.map +1 -0
  60. package/build/bundle/artefacts/context/untp/0.6.0/dia.d.ts +2 -0
  61. package/build/bundle/artefacts/context/untp/0.6.0/dia.js +165 -0
  62. package/build/bundle/artefacts/context/untp/0.6.0/dia.js.map +1 -0
  63. package/build/bundle/artefacts/context/untp/0.6.0/dpp.d.ts +2 -0
  64. package/build/bundle/artefacts/context/untp/0.6.0/dpp.js +1081 -0
  65. package/build/bundle/artefacts/context/untp/0.6.0/dpp.js.map +1 -0
  66. package/build/bundle/artefacts/context/untp/0.6.0/dte.d.ts +2 -0
  67. package/build/bundle/artefacts/context/untp/0.6.0/dte.js +1288 -0
  68. package/build/bundle/artefacts/context/untp/0.6.0/dte.js.map +1 -0
  69. package/build/bundle/artefacts/context/untp/0.6.1/dcc.d.ts +2 -0
  70. package/build/bundle/artefacts/context/untp/0.6.1/dcc.js +1391 -0
  71. package/build/bundle/artefacts/context/untp/0.6.1/dcc.js.map +1 -0
  72. package/build/bundle/artefacts/context/untp/0.6.1/dfr.d.ts +2 -0
  73. package/build/bundle/artefacts/context/untp/0.6.1/dfr.js +693 -0
  74. package/build/bundle/artefacts/context/untp/0.6.1/dfr.js.map +1 -0
  75. package/build/bundle/artefacts/context/untp/0.6.1/dia.d.ts +2 -0
  76. package/build/bundle/artefacts/context/untp/0.6.1/dia.js +199 -0
  77. package/build/bundle/artefacts/context/untp/0.6.1/dia.js.map +1 -0
  78. package/build/bundle/artefacts/context/untp/0.6.1/dpp.d.ts +2 -0
  79. package/build/bundle/artefacts/context/untp/0.6.1/dpp.js +1167 -0
  80. package/build/bundle/artefacts/context/untp/0.6.1/dpp.js.map +1 -0
  81. package/build/bundle/artefacts/context/untp/0.6.1/dte.d.ts +2 -0
  82. package/build/bundle/artefacts/context/untp/0.6.1/dte.js +1343 -0
  83. package/build/bundle/artefacts/context/untp/0.6.1/dte.js.map +1 -0
  84. package/build/bundle/artefacts/context/untp/0.7.0/untp.d.ts +2 -0
  85. package/build/bundle/artefacts/context/untp/0.7.0/untp.js +3496 -0
  86. package/build/bundle/artefacts/context/untp/0.7.0/untp.js.map +1 -0
  87. package/build/bundle/artefacts/context/vcdm/2/credentials.d.ts +2 -0
  88. package/build/bundle/artefacts/context/vcdm/2/credentials.js +304 -0
  89. package/build/bundle/artefacts/context/vcdm/2/credentials.js.map +1 -0
  90. package/build/bundle/artefacts/schema/untp/0.6.0/dcc.d.ts +2 -0
  91. package/build/bundle/artefacts/schema/untp/0.6.0/dcc.js +1134 -0
  92. package/build/bundle/artefacts/schema/untp/0.6.0/dcc.js.map +1 -0
  93. package/build/bundle/artefacts/schema/untp/0.6.0/dfr.d.ts +2 -0
  94. package/build/bundle/artefacts/schema/untp/0.6.0/dfr.js +1031 -0
  95. package/build/bundle/artefacts/schema/untp/0.6.0/dfr.js.map +1 -0
  96. package/build/bundle/artefacts/schema/untp/0.6.0/dia.d.ts +2 -0
  97. package/build/bundle/artefacts/schema/untp/0.6.0/dia.js +239 -0
  98. package/build/bundle/artefacts/schema/untp/0.6.0/dia.js.map +1 -0
  99. package/build/bundle/artefacts/schema/untp/0.6.0/dpp.d.ts +2 -0
  100. package/build/bundle/artefacts/schema/untp/0.6.0/dpp.js +1222 -0
  101. package/build/bundle/artefacts/schema/untp/0.6.0/dpp.js.map +1 -0
  102. package/build/bundle/artefacts/schema/untp/0.6.0/dte.d.ts +2 -0
  103. package/build/bundle/artefacts/schema/untp/0.6.0/dte.js +848 -0
  104. package/build/bundle/artefacts/schema/untp/0.6.0/dte.js.map +1 -0
  105. package/build/bundle/artefacts/schema/untp/0.6.1/dcc.d.ts +2 -0
  106. package/build/bundle/artefacts/schema/untp/0.6.1/dcc.js +1199 -0
  107. package/build/bundle/artefacts/schema/untp/0.6.1/dcc.js.map +1 -0
  108. package/build/bundle/artefacts/schema/untp/0.6.1/dfr.d.ts +2 -0
  109. package/build/bundle/artefacts/schema/untp/0.6.1/dfr.js +1040 -0
  110. package/build/bundle/artefacts/schema/untp/0.6.1/dfr.js.map +1 -0
  111. package/build/bundle/artefacts/schema/untp/0.6.1/dia.d.ts +2 -0
  112. package/build/bundle/artefacts/schema/untp/0.6.1/dia.js +239 -0
  113. package/build/bundle/artefacts/schema/untp/0.6.1/dia.js.map +1 -0
  114. package/build/bundle/artefacts/schema/untp/0.6.1/dpp.d.ts +2 -0
  115. package/build/bundle/artefacts/schema/untp/0.6.1/dpp.js +1232 -0
  116. package/build/bundle/artefacts/schema/untp/0.6.1/dpp.js.map +1 -0
  117. package/build/bundle/artefacts/schema/untp/0.6.1/dte.d.ts +2 -0
  118. package/build/bundle/artefacts/schema/untp/0.6.1/dte.js +848 -0
  119. package/build/bundle/artefacts/schema/untp/0.6.1/dte.js.map +1 -0
  120. package/build/bundle/artefacts/schema/untp/0.7.0/cvc.d.ts +2 -0
  121. package/build/bundle/artefacts/schema/untp/0.7.0/cvc.js +704 -0
  122. package/build/bundle/artefacts/schema/untp/0.7.0/cvc.js.map +1 -0
  123. package/build/bundle/artefacts/schema/untp/0.7.0/dcc.d.ts +2 -0
  124. package/build/bundle/artefacts/schema/untp/0.7.0/dcc.js +1136 -0
  125. package/build/bundle/artefacts/schema/untp/0.7.0/dcc.js.map +1 -0
  126. package/build/bundle/artefacts/schema/untp/0.7.0/dfr.d.ts +2 -0
  127. package/build/bundle/artefacts/schema/untp/0.7.0/dfr.js +1248 -0
  128. package/build/bundle/artefacts/schema/untp/0.7.0/dfr.js.map +1 -0
  129. package/build/bundle/artefacts/schema/untp/0.7.0/dia.d.ts +2 -0
  130. package/build/bundle/artefacts/schema/untp/0.7.0/dia.js +446 -0
  131. package/build/bundle/artefacts/schema/untp/0.7.0/dia.js.map +1 -0
  132. package/build/bundle/artefacts/schema/untp/0.7.0/dpp.d.ts +2 -0
  133. package/build/bundle/artefacts/schema/untp/0.7.0/dpp.js +1303 -0
  134. package/build/bundle/artefacts/schema/untp/0.7.0/dpp.js.map +1 -0
  135. package/build/bundle/artefacts/schema/untp/0.7.0/dte.d.ts +2 -0
  136. package/build/bundle/artefacts/schema/untp/0.7.0/dte.js +1229 -0
  137. package/build/bundle/artefacts/schema/untp/0.7.0/dte.js.map +1 -0
  138. package/build/bundle/artefacts/schema/untp/0.7.0/linkset.d.ts +2 -0
  139. package/build/bundle/artefacts/schema/untp/0.7.0/linkset.js +122 -0
  140. package/build/bundle/artefacts/schema/untp/0.7.0/linkset.js.map +1 -0
  141. package/build/bundle/artefacts/schema/vcdm/2/verifiable-credential.d.ts +2 -0
  142. package/build/bundle/artefacts/schema/vcdm/2/verifiable-credential.js +321 -0
  143. package/build/bundle/artefacts/schema/vcdm/2/verifiable-credential.js.map +1 -0
  144. package/build/bundle/fallback.d.ts +41 -0
  145. package/build/bundle/fallback.js +62 -0
  146. package/build/bundle/fallback.js.map +1 -0
  147. package/build/bundle/fallback.test.d.ts +1 -0
  148. package/build/bundle/fallback.test.js +124 -0
  149. package/build/bundle/fallback.test.js.map +1 -0
  150. package/build/bundle/index.d.ts +4 -0
  151. package/build/bundle/index.js +77 -0
  152. package/build/bundle/index.js.map +1 -0
  153. package/build/bundle/lookup.d.ts +14 -0
  154. package/build/bundle/lookup.js +40 -0
  155. package/build/bundle/lookup.js.map +1 -0
  156. package/build/bundle/lookup.test.d.ts +1 -0
  157. package/build/bundle/lookup.test.js +70 -0
  158. package/build/bundle/lookup.test.js.map +1 -0
  159. package/build/bundle/public.d.ts +25 -0
  160. package/build/bundle/public.js +56 -0
  161. package/build/bundle/public.js.map +1 -0
  162. package/build/bundle/public.test.d.ts +1 -0
  163. package/build/bundle/public.test.js +35 -0
  164. package/build/bundle/public.test.js.map +1 -0
  165. package/build/bundle/refresh-classify.test.d.ts +1 -0
  166. package/build/bundle/refresh-classify.test.js +20 -0
  167. package/build/bundle/refresh-classify.test.js.map +1 -0
  168. package/build/bundle/refresh-main.test.d.ts +1 -0
  169. package/build/bundle/refresh-main.test.js +98 -0
  170. package/build/bundle/refresh-main.test.js.map +1 -0
  171. package/build/cache/in-memory-ttl-cache.d.ts +2 -0
  172. package/build/cache/in-memory-ttl-cache.js +76 -0
  173. package/build/cache/in-memory-ttl-cache.js.map +1 -0
  174. package/build/cache/in-memory-ttl-cache.test.d.ts +1 -0
  175. package/build/cache/in-memory-ttl-cache.test.js +236 -0
  176. package/build/cache/in-memory-ttl-cache.test.js.map +1 -0
  177. package/build/cache/index.d.ts +2 -0
  178. package/build/cache/index.js +2 -0
  179. package/build/cache/index.js.map +1 -0
  180. package/build/cache/ttl-cache.d.ts +22 -0
  181. package/build/cache/ttl-cache.js +2 -0
  182. package/build/cache/ttl-cache.js.map +1 -0
  183. package/build/common/as-date-time.d.ts +13 -0
  184. package/build/common/as-date-time.js +44 -0
  185. package/build/common/as-date-time.js.map +1 -0
  186. package/build/common/as-date-time.test.d.ts +1 -0
  187. package/build/common/as-date-time.test.js +42 -0
  188. package/build/common/as-date-time.test.js.map +1 -0
  189. package/build/common/as-non-empty-string.d.ts +14 -0
  190. package/build/common/as-non-empty-string.js +20 -0
  191. package/build/common/as-non-empty-string.js.map +1 -0
  192. package/build/common/as-non-empty-string.test.d.ts +1 -0
  193. package/build/common/as-non-empty-string.test.js +30 -0
  194. package/build/common/as-non-empty-string.test.js.map +1 -0
  195. package/build/common/index.d.ts +4 -0
  196. package/build/common/index.js +5 -0
  197. package/build/common/index.js.map +1 -0
  198. package/build/common/require-string.d.ts +12 -0
  199. package/build/common/require-string.js +27 -0
  200. package/build/common/require-string.js.map +1 -0
  201. package/build/common/require-string.test.d.ts +1 -0
  202. package/build/common/require-string.test.js +53 -0
  203. package/build/common/require-string.test.js.map +1 -0
  204. package/build/common/validity-window.d.ts +45 -0
  205. package/build/common/validity-window.js +68 -0
  206. package/build/common/validity-window.js.map +1 -0
  207. package/build/common/validity-window.test.d.ts +1 -0
  208. package/build/common/validity-window.test.js +67 -0
  209. package/build/common/validity-window.test.js.map +1 -0
  210. package/build/conformity-vocabulary/codes.d.ts +10 -0
  211. package/build/conformity-vocabulary/codes.js +10 -0
  212. package/build/conformity-vocabulary/codes.js.map +1 -0
  213. package/build/conformity-vocabulary/errors.d.ts +44 -0
  214. package/build/conformity-vocabulary/errors.js +68 -0
  215. package/build/conformity-vocabulary/errors.js.map +1 -0
  216. package/build/conformity-vocabulary/index.d.ts +6 -0
  217. package/build/conformity-vocabulary/index.js +7 -0
  218. package/build/conformity-vocabulary/index.js.map +1 -0
  219. package/build/conformity-vocabulary/parse-conformity-catalogue.d.ts +26 -0
  220. package/build/conformity-vocabulary/parse-conformity-catalogue.js +106 -0
  221. package/build/conformity-vocabulary/parse-conformity-catalogue.js.map +1 -0
  222. package/build/conformity-vocabulary/parse-conformity-catalogue.test.d.ts +1 -0
  223. package/build/conformity-vocabulary/parse-conformity-catalogue.test.js +327 -0
  224. package/build/conformity-vocabulary/parse-conformity-catalogue.test.js.map +1 -0
  225. package/build/conformity-vocabulary/parse-conformity-scheme.d.ts +28 -0
  226. package/build/conformity-vocabulary/parse-conformity-scheme.js +47 -0
  227. package/build/conformity-vocabulary/parse-conformity-scheme.js.map +1 -0
  228. package/build/conformity-vocabulary/parse-conformity-scheme.test.d.ts +1 -0
  229. package/build/conformity-vocabulary/parse-conformity-scheme.test.js +284 -0
  230. package/build/conformity-vocabulary/parse-conformity-scheme.test.js.map +1 -0
  231. package/build/conformity-vocabulary/parsers/v0-7-0.parser.d.ts +19 -0
  232. package/build/conformity-vocabulary/parsers/v0-7-0.parser.js +219 -0
  233. package/build/conformity-vocabulary/parsers/v0-7-0.parser.js.map +1 -0
  234. package/build/conformity-vocabulary/types.d.ts +180 -0
  235. package/build/conformity-vocabulary/types.js +2 -0
  236. package/build/conformity-vocabulary/types.js.map +1 -0
  237. package/build/conformity-vocabulary/validate-conformity-claim.d.ts +26 -0
  238. package/build/conformity-vocabulary/validate-conformity-claim.js +165 -0
  239. package/build/conformity-vocabulary/validate-conformity-claim.js.map +1 -0
  240. package/build/conformity-vocabulary/validate-conformity-claim.test.d.ts +1 -0
  241. package/build/conformity-vocabulary/validate-conformity-claim.test.js +478 -0
  242. package/build/conformity-vocabulary/validate-conformity-claim.test.js.map +1 -0
  243. package/build/http-headers/index.d.ts +5 -0
  244. package/build/http-headers/index.js +6 -0
  245. package/build/http-headers/index.js.map +1 -0
  246. package/build/http-headers/is-safe-header-value.d.ts +10 -0
  247. package/build/http-headers/is-safe-header-value.js +15 -0
  248. package/build/http-headers/is-safe-header-value.js.map +1 -0
  249. package/build/http-headers/is-safe-header-value.test.d.ts +1 -0
  250. package/build/http-headers/is-safe-header-value.test.js +37 -0
  251. package/build/http-headers/is-safe-header-value.test.js.map +1 -0
  252. package/build/http-headers/parse-entity-tag.d.ts +9 -0
  253. package/build/http-headers/parse-entity-tag.js +18 -0
  254. package/build/http-headers/parse-entity-tag.js.map +1 -0
  255. package/build/http-headers/parse-entity-tag.test.d.ts +1 -0
  256. package/build/http-headers/parse-entity-tag.test.js +41 -0
  257. package/build/http-headers/parse-entity-tag.test.js.map +1 -0
  258. package/build/http-headers/parse-imf-date.d.ts +13 -0
  259. package/build/http-headers/parse-imf-date.js +23 -0
  260. package/build/http-headers/parse-imf-date.js.map +1 -0
  261. package/build/http-headers/parse-imf-date.test.d.ts +1 -0
  262. package/build/http-headers/parse-imf-date.test.js +31 -0
  263. package/build/http-headers/parse-imf-date.test.js.map +1 -0
  264. package/build/http-headers/parse-media-type.d.ts +8 -0
  265. package/build/http-headers/parse-media-type.js +21 -0
  266. package/build/http-headers/parse-media-type.js.map +1 -0
  267. package/build/http-headers/parse-media-type.test.d.ts +1 -0
  268. package/build/http-headers/parse-media-type.test.js +39 -0
  269. package/build/http-headers/parse-media-type.test.js.map +1 -0
  270. package/build/http-headers/user-agent.d.ts +35 -0
  271. package/build/http-headers/user-agent.js +45 -0
  272. package/build/http-headers/user-agent.js.map +1 -0
  273. package/build/http-headers/user-agent.test.d.ts +1 -0
  274. package/build/http-headers/user-agent.test.js +27 -0
  275. package/build/http-headers/user-agent.test.js.map +1 -0
  276. package/build/index.d.ts +1 -1
  277. package/build/index.js +1 -1
  278. package/build/index.js.map +1 -1
  279. package/build/loaders/errors.d.ts +21 -0
  280. package/build/loaders/errors.js +45 -0
  281. package/build/loaders/errors.js.map +1 -0
  282. package/build/loaders/index.d.ts +5 -0
  283. package/build/loaders/index.js +5 -0
  284. package/build/loaders/index.js.map +1 -0
  285. package/build/loaders/jsonld-document-loader.d.ts +48 -0
  286. package/build/loaders/jsonld-document-loader.js +43 -0
  287. package/build/loaders/jsonld-document-loader.js.map +1 -0
  288. package/build/loaders/jsonld-document-loader.test.d.ts +1 -0
  289. package/build/loaders/jsonld-document-loader.test.js +111 -0
  290. package/build/loaders/jsonld-document-loader.test.js.map +1 -0
  291. package/build/loaders/schema-loader.d.ts +31 -0
  292. package/build/loaders/schema-loader.js +83 -0
  293. package/build/loaders/schema-loader.js.map +1 -0
  294. package/build/loaders/schema-loader.ssrf.test.d.ts +1 -0
  295. package/build/loaders/schema-loader.ssrf.test.js +55 -0
  296. package/build/loaders/schema-loader.ssrf.test.js.map +1 -0
  297. package/build/loaders/schema-loader.test.d.ts +1 -0
  298. package/build/loaders/schema-loader.test.js +217 -0
  299. package/build/loaders/schema-loader.test.js.map +1 -0
  300. package/build/multibase-digest/multibase-digest.d.ts +23 -0
  301. package/build/multibase-digest/multibase-digest.js +40 -0
  302. package/build/multibase-digest/multibase-digest.js.map +1 -1
  303. package/build/multibase-digest/multibase-digest.test.js +46 -0
  304. package/build/multibase-digest/multibase-digest.test.js.map +1 -1
  305. package/build/node/errors.d.ts +47 -0
  306. package/build/node/errors.js +86 -0
  307. package/build/node/errors.js.map +1 -0
  308. package/build/node/index.d.ts +3 -0
  309. package/build/node/index.js +4 -0
  310. package/build/node/index.js.map +1 -0
  311. package/build/node/is-private-ip.d.ts +45 -0
  312. package/build/node/is-private-ip.fail-closed.test.d.ts +1 -0
  313. package/build/node/is-private-ip.fail-closed.test.js +36 -0
  314. package/build/node/is-private-ip.fail-closed.test.js.map +1 -0
  315. package/build/node/is-private-ip.js +203 -0
  316. package/build/node/is-private-ip.js.map +1 -0
  317. package/build/node/is-private-ip.test.d.ts +1 -0
  318. package/build/node/is-private-ip.test.js +124 -0
  319. package/build/node/is-private-ip.test.js.map +1 -0
  320. package/build/node/validate-public-url.d.ts +81 -0
  321. package/build/node/validate-public-url.js +128 -0
  322. package/build/node/validate-public-url.js.map +1 -0
  323. package/build/node/validate-public-url.test.d.ts +1 -0
  324. package/build/node/validate-public-url.test.js +324 -0
  325. package/build/node/validate-public-url.test.js.map +1 -0
  326. package/build/resolvers/errors.d.ts +73 -0
  327. package/build/resolvers/errors.js +133 -0
  328. package/build/resolvers/errors.js.map +1 -0
  329. package/build/resolvers/index.d.ts +5 -0
  330. package/build/resolvers/index.js +6 -0
  331. package/build/resolvers/index.js.map +1 -0
  332. package/build/resolvers/resolve-document-if-changed.d.ts +48 -0
  333. package/build/resolvers/resolve-document-if-changed.js +42 -0
  334. package/build/resolvers/resolve-document-if-changed.js.map +1 -0
  335. package/build/resolvers/resolve-document-if-changed.test.d.ts +1 -0
  336. package/build/resolvers/resolve-document-if-changed.test.js +116 -0
  337. package/build/resolvers/resolve-document-if-changed.test.js.map +1 -0
  338. package/build/resolvers/resolve-document.d.ts +106 -0
  339. package/build/resolvers/resolve-document.integration.test.d.ts +1 -0
  340. package/build/resolvers/resolve-document.integration.test.js +108 -0
  341. package/build/resolvers/resolve-document.integration.test.js.map +1 -0
  342. package/build/resolvers/resolve-document.js +319 -0
  343. package/build/resolvers/resolve-document.js.map +1 -0
  344. package/build/resolvers/resolve-document.test.d.ts +1 -0
  345. package/build/resolvers/resolve-document.test.js +749 -0
  346. package/build/resolvers/resolve-document.test.js.map +1 -0
  347. package/build/resolvers/resolve-json-document.d.ts +43 -0
  348. package/build/resolvers/resolve-json-document.js +43 -0
  349. package/build/resolvers/resolve-json-document.js.map +1 -0
  350. package/build/resolvers/resolve-json-document.test.d.ts +1 -0
  351. package/build/resolvers/resolve-json-document.test.js +78 -0
  352. package/build/resolvers/resolve-json-document.test.js.map +1 -0
  353. package/build/structured-error.d.ts +49 -0
  354. package/build/structured-error.js +17 -0
  355. package/build/structured-error.js.map +1 -0
  356. package/build/structured-error.test.d.ts +1 -0
  357. package/build/structured-error.test.js +112 -0
  358. package/build/structured-error.test.js.map +1 -0
  359. package/build/validation/describe-jsonld-failure.d.ts +90 -0
  360. package/build/validation/describe-jsonld-failure.js +171 -0
  361. package/build/validation/describe-jsonld-failure.js.map +1 -0
  362. package/build/validation/describe-jsonld-failure.test.d.ts +1 -0
  363. package/build/validation/describe-jsonld-failure.test.js +226 -0
  364. package/build/validation/describe-jsonld-failure.test.js.map +1 -0
  365. package/build/validation/errors.d.ts +40 -0
  366. package/build/validation/errors.js +75 -0
  367. package/build/validation/errors.js.map +1 -0
  368. package/build/validation/index.d.ts +5 -0
  369. package/build/validation/index.js +5 -0
  370. package/build/validation/index.js.map +1 -0
  371. package/build/validation/validate-against-schemas.d.ts +22 -0
  372. package/build/validation/validate-against-schemas.js +65 -0
  373. package/build/validation/validate-against-schemas.js.map +1 -0
  374. package/build/validation/validate-against-schemas.test.d.ts +1 -0
  375. package/build/validation/validate-against-schemas.test.js +169 -0
  376. package/build/validation/validate-against-schemas.test.js.map +1 -0
  377. package/build/validation/validate-jsonld.context-cache.test.d.ts +1 -0
  378. package/build/validation/validate-jsonld.context-cache.test.js +32 -0
  379. package/build/validation/validate-jsonld.context-cache.test.js.map +1 -0
  380. package/build/validation/validate-jsonld.d.ts +59 -0
  381. package/build/validation/validate-jsonld.js +126 -0
  382. package/build/validation/validate-jsonld.js.map +1 -0
  383. package/build/validation/validate-jsonld.ssrf.test.d.ts +1 -0
  384. package/build/validation/validate-jsonld.ssrf.test.js +108 -0
  385. package/build/validation/validate-jsonld.ssrf.test.js.map +1 -0
  386. package/build/validation/validate-jsonld.test.d.ts +1 -0
  387. package/build/validation/validate-jsonld.test.js +257 -0
  388. package/build/validation/validate-jsonld.test.js.map +1 -0
  389. package/package.json +86 -5
@@ -0,0 +1,171 @@
1
+ import { JsonLdInvalidShapeError } from './errors.js';
2
+ import { ResolverError, ResolverInvalidJsonError } from '../resolvers/errors.js';
3
+ import { UrlValidationError } from '../node/errors.js';
4
+ const GENERIC_DOCUMENT_DETAIL = 'the document could not be expanded as valid JSON-LD';
5
+ const GENERIC_REMOTE_CONTEXT_DETAIL = 'a remote @context response could not be used as a JSON-LD context';
6
+ const REMOTE_CONTEXT_CHAIN_DETAIL = 'the remote @context chain could not be resolved: too many remote contexts, or a remote context refers back to itself';
7
+ const GENERIC_REMOTE_CONTEXT_LOAD_DETAIL = 'a remote @context document could not be loaded';
8
+ const FLAT_URL_POLICY_DETAIL = "a remote @context URL was rejected by this service's URL policy or could not be resolved";
9
+ /** 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. */
10
+ /** The only jsonld.js event and syntax-error detail fields ever echoed to a caller; everything else may carry document content. */
11
+ export const SAFE_EVENT_FIELDS = ['property', 'expandedProperty', 'id', 'type', 'term', 'language', 'vocab'];
12
+ const MAX_FIELD_LENGTH = 200;
13
+ function isJsonLdProcessorError(value) {
14
+ return value instanceof Error && value.name.startsWith('jsonld.');
15
+ }
16
+ /** The allowlisted string fields present on a details object, truncated. */
17
+ function safeFields(details) {
18
+ const fields = {};
19
+ for (const field of SAFE_EVENT_FIELDS) {
20
+ const value = details?.[field];
21
+ if (typeof value === 'string' && value !== '')
22
+ fields[field] = value.slice(0, MAX_FIELD_LENGTH);
23
+ }
24
+ return Object.keys(fields).length > 0 ? fields : undefined;
25
+ }
26
+ /** Formats a safe-mode event: its fixed library message plus allowlisted string fields. */
27
+ function describeSafeModeEvent(event) {
28
+ const parts = [];
29
+ if (typeof event.message === 'string' && event.message !== '') {
30
+ parts.push(event.message);
31
+ }
32
+ for (const [field, value] of Object.entries(safeFields(event.details) ?? {})) {
33
+ parts.push(`(${field}: "${value}")`);
34
+ }
35
+ return parts.length > 0 ? parts.join(' ') : GENERIC_DOCUMENT_DETAIL;
36
+ }
37
+ const stringOr = (value) => typeof value === 'string' && value !== '' ? value : undefined;
38
+ function* causeChain(error) {
39
+ const seen = new Set();
40
+ let current = error;
41
+ while (current !== undefined && !seen.has(current)) {
42
+ seen.add(current);
43
+ yield current;
44
+ current = current instanceof Error ? current.cause : undefined;
45
+ }
46
+ }
47
+ /**
48
+ * Classifies a {@link JsonLdValidationError} by walking its cause chain
49
+ * (native `.cause` hops; the chain is rehydrated by `validateJsonLd`, see
50
+ * issue #773).
51
+ *
52
+ * The passes run in a load-bearing order. The rehydrated chain nests the
53
+ * guarded loader's error BENEATH jsonld.js's own wrapper
54
+ * (`JsonLdExpansionFailedError` -> `jsonld.InvalidUrl` -> the loader's
55
+ * `UrlValidationError`), and the wrapper's message contains the URL, so no
56
+ * jsonld.js message may become `detail` until the typed-loader pass has
57
+ * exhausted the whole chain; matching the wrapper's message first would
58
+ * reopen the per-hostname reconnaissance oracle the flat message exists to
59
+ * close. The URL scan that runs before the typed-loader pass reads only the
60
+ * wrapper's `details.url`, which is the caller's own document's URL.
61
+ *
62
+ * `UrlValidationError` deliberately collapses to one flat message: its
63
+ * subclasses distinguish "does not resolve" from "resolves to a private
64
+ * address" from "scheme not allowed", and echoing that distinction would
65
+ * hand an authenticated caller a network-reconnaissance oracle over
66
+ * attacker-chosen `@context` URLs. The full typed diagnostic stays on the
67
+ * cause chain for the server-side log. `ResolverError` diagnostics fire
68
+ * only after the URL passed the public-address check, so their detail
69
+ * (HTTP status, timeout, size bound) is returned as-is.
70
+ *
71
+ * Known limitation, accepted: a malformed term definition inside a
72
+ * successfully fetched remote context surfaces as a `jsonld.SyntaxError`
73
+ * indistinguishable from the same defect in an inline context, and is
74
+ * classified as a document failure.
75
+ */
76
+ export function describeJsonLdFailure(error) {
77
+ // Our own pre-expansion diagnostic: safe, typed, and more precise than
78
+ // the generic fallback (expansion never ran).
79
+ if (error instanceof JsonLdInvalidShapeError) {
80
+ return { kind: 'document', detail: error.message, code: 'invalid document shape' };
81
+ }
82
+ // The failing @context URL, when jsonld.js recorded one on its wrapper: a
83
+ // URL from the caller's document, or one a remote context it named refers
84
+ // to. Either way it is a public URL the caller caused to be requested,
85
+ // never the address it resolved to.
86
+ let url;
87
+ for (const node of causeChain(error)) {
88
+ if (isJsonLdProcessorError(node) && node.name === 'jsonld.InvalidUrl') {
89
+ url = stringOr(node.details?.url);
90
+ break;
91
+ }
92
+ }
93
+ // Pass 1: the guarded loader's typed failures, anywhere on the chain.
94
+ for (const node of causeChain(error)) {
95
+ if (node instanceof UrlValidationError) {
96
+ return { kind: 'context-fetch', detail: FLAT_URL_POLICY_DETAIL, ...(url && { url }) };
97
+ }
98
+ if (node instanceof ResolverInvalidJsonError) {
99
+ // Thrown only after a response body was read and failed to parse: the
100
+ // artefact, not the delivery, is at fault.
101
+ return { kind: 'context-invalid', detail: GENERIC_REMOTE_CONTEXT_DETAIL, code: node.code, ...(url && { url }) };
102
+ }
103
+ if (node instanceof ResolverError) {
104
+ return {
105
+ kind: 'context-fetch',
106
+ detail: `could not fetch a remote @context: ${node.message}`,
107
+ code: node.code,
108
+ ...(url && { url }),
109
+ };
110
+ }
111
+ }
112
+ // Pass 2: recognised jsonld.js processor shapes (name plus details.code
113
+ // matched exactly; the name prefix alone only locates the processor error,
114
+ // it does not make its message caller-safe).
115
+ for (const node of causeChain(error)) {
116
+ if (!isJsonLdProcessorError(node))
117
+ continue;
118
+ const code = stringOr(node.details?.code);
119
+ if (node.name === 'jsonld.InvalidUrl' && code === 'invalid remote context') {
120
+ // Fetched successfully but not usable as a context: the artefact, not
121
+ // the document, is at fault.
122
+ return { kind: 'context-invalid', detail: GENERIC_REMOTE_CONTEXT_DETAIL, code, ...(url && { url }) };
123
+ }
124
+ if (node.name === 'jsonld.InvalidUrl' && code === 'loading remote context failed') {
125
+ // Rejected by an untyped loader path, so the typed pass found nothing:
126
+ // the context could not be loaded, and the wrapper's message (which
127
+ // names the URL) is not echoed.
128
+ return { kind: 'context-fetch', detail: GENERIC_REMOTE_CONTEXT_LOAD_DETAIL, code, ...(url && { url }) };
129
+ }
130
+ if (node.name === 'jsonld.ContextUrlError') {
131
+ // jsonld.js throws this only while resolving a chain of remote contexts
132
+ // (too many, or one that refers back to itself); a cycle between local
133
+ // term definitions is jsonld.CyclicalContext and stays a document fault.
134
+ return { kind: 'context-fetch', detail: REMOTE_CONTEXT_CHAIN_DETAIL, ...(code && { code }), ...(url && { url }) };
135
+ }
136
+ if (node.name === 'jsonld.SyntaxError' && code === 'invalid scoped context') {
137
+ // A term-scoped remote context whose body was unusable: jsonld.js
138
+ // discards the original error, so only the term survives.
139
+ const fields = safeFields(node.details);
140
+ return { kind: 'context-invalid', detail: GENERIC_REMOTE_CONTEXT_DETAIL, code, ...(fields && { fields }) };
141
+ }
142
+ if (node.name === 'jsonld.ValidationError' && node.details?.event !== undefined) {
143
+ const event = node.details.event;
144
+ const fields = safeFields(event.details);
145
+ return {
146
+ kind: 'document',
147
+ detail: describeSafeModeEvent(event),
148
+ source: 'safe-mode-event',
149
+ ...(stringOr(event.code) && { code: stringOr(event.code) }),
150
+ ...(fields && { fields }),
151
+ };
152
+ }
153
+ if (node.name === 'jsonld.SyntaxError') {
154
+ // jsonld.js interpolates caller values into some syntax messages
155
+ // (jsonld@8.3.3 lib/context.js: an @index value, a term, a type), so
156
+ // the message is never echoed; the recognised code and the allowlisted
157
+ // identifiers are the whole diagnostic.
158
+ const fields = safeFields(node.details);
159
+ return {
160
+ kind: 'document',
161
+ detail: code ? `Invalid JSON-LD syntax; ${code}.` : GENERIC_DOCUMENT_DETAIL,
162
+ source: 'syntax-error',
163
+ ...(code && { code }),
164
+ ...(fields && { fields }),
165
+ };
166
+ }
167
+ return { kind: 'document', detail: GENERIC_DOCUMENT_DETAIL };
168
+ }
169
+ return { kind: 'document', detail: GENERIC_DOCUMENT_DETAIL };
170
+ }
171
+ //# sourceMappingURL=describe-jsonld-failure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"describe-jsonld-failure.js","sourceRoot":"","sources":["../../src/validation/describe-jsonld-failure.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,226 @@
1
+ import { describeJsonLdFailure } from './describe-jsonld-failure.js';
2
+ import { JsonLdExpansionFailedError, JsonLdInvalidShapeError } from './errors.js';
3
+ import { ResolverHttpError, ResolverInvalidJsonError, ResolverTimedOutError } from '../resolvers/errors.js';
4
+ import { PrivateAddressError, ResolutionFailedError } from '../node/errors.js';
5
+ /** Builds an error shaped like jsonld.js's JsonLdError (which never sets native `cause`). */
6
+ function jsonLdError(name, message, details) {
7
+ const error = new Error(message);
8
+ error.name = name;
9
+ error.details = details;
10
+ return error;
11
+ }
12
+ describe('describeJsonLdFailure', () => {
13
+ describe('context-fetch: typed loader failures', () => {
14
+ it('classifies an HTTP failure on the cause chain as context-fetch, naming URL and status', () => {
15
+ const http = new ResolverHttpError('https://www.w3.org/ns/credentials/v2', 429);
16
+ const wrapped = new JsonLdExpansionFailedError(new Error('jsonld wrapper', { cause: http }));
17
+ const failure = describeJsonLdFailure(wrapped);
18
+ expect(failure.kind).toBe('context-fetch');
19
+ expect(failure.detail).toContain('https://www.w3.org/ns/credentials/v2');
20
+ expect(failure.detail).toContain('429');
21
+ expect(failure.code).toBe(http.code);
22
+ });
23
+ it('classifies a timeout on the cause chain as context-fetch', () => {
24
+ const wrapped = new JsonLdExpansionFailedError(new ResolverTimedOutError('https://example.com/ctx', 10_000));
25
+ expect(describeJsonLdFailure(wrapped)).toMatchObject({ kind: 'context-fetch' });
26
+ });
27
+ it.each([
28
+ ['PrivateAddressError', new PrivateAddressError('https://internal.example/ctx', ['10.0.0.5'])],
29
+ ['ResolutionFailedError', new ResolutionFailedError('https://nxdomain.example/ctx', new Error('ENOTFOUND'))],
30
+ ])('collapses %s to one flat message, leaking neither the URL nor the rejection class', (_name, rejected) => {
31
+ const wrapped = new JsonLdExpansionFailedError(new Error('scoped context', { cause: rejected }));
32
+ const failure = describeJsonLdFailure(wrapped);
33
+ expect(failure.kind).toBe('context-fetch');
34
+ // One message for every UrlValidationError subclass: distinguishing
35
+ // "does not resolve" from "resolves privately" would be a per-hostname
36
+ // reconnaissance oracle. The typed detail stays on the cause chain.
37
+ expect(failure.detail).toBe("a remote @context URL was rejected by this service's URL policy or could not be resolved");
38
+ expect(failure.detail).not.toMatch(/10\.0\.0\.5|internal\.example|nxdomain\.example/);
39
+ expect(failure.code).toBeUndefined();
40
+ });
41
+ it('prefers the flat loader message over the URL-bearing jsonld wrapper above it (rehydrated chain shape)', () => {
42
+ // The real chain after validateJsonLd rehydration: the loader error
43
+ // hangs BENEATH jsonld.InvalidUrl, whose message contains the URL.
44
+ const loaderError = new PrivateAddressError('https://169.254.169.254/latest/meta-data/', ['169.254.169.254']);
45
+ const wrapper = jsonLdError('jsonld.InvalidUrl', 'Dereferencing a URL did not result in a valid JSON-LD object. URL: "https://169.254.169.254/latest/meta-data/".', { code: 'loading remote context failed' });
46
+ wrapper.cause = loaderError;
47
+ const wrapped = new JsonLdExpansionFailedError(wrapper);
48
+ const failure = describeJsonLdFailure(wrapped);
49
+ expect(failure.kind).toBe('context-fetch');
50
+ expect(failure.detail).not.toContain('169.254.169.254');
51
+ });
52
+ it('finds a typed failure at any depth of the cause chain', () => {
53
+ let chain = new ResolverHttpError('https://example.com/ctx', 503);
54
+ for (let i = 0; i < 20; i += 1) {
55
+ chain = new Error(`wrapper ${i}`, { cause: chain });
56
+ }
57
+ expect(describeJsonLdFailure(new JsonLdExpansionFailedError(chain))).toMatchObject({ kind: 'context-fetch' });
58
+ });
59
+ });
60
+ describe('context-invalid: fetched but unusable remote contexts', () => {
61
+ it('classifies a response body that is not JSON as context-invalid, ahead of the general resolver branch', () => {
62
+ const invalid = new ResolverInvalidJsonError('https://example.com/ctx', new SyntaxError('Unexpected token <'));
63
+ const failure = describeJsonLdFailure(new JsonLdExpansionFailedError(new Error('wrapper', { cause: invalid })));
64
+ expect(failure).toMatchObject({ kind: 'context-invalid', code: 'resolver.invalid-json' });
65
+ expect(failure.detail).not.toContain('Unexpected token');
66
+ });
67
+ it('classifies an unusable term-scoped remote context as context-invalid with the term', () => {
68
+ const processor = jsonLdError('jsonld.SyntaxError', 'Invalid JSON-LD syntax; invalid scoped context.', {
69
+ code: 'invalid scoped context',
70
+ term: 'x',
71
+ });
72
+ expect(describeJsonLdFailure(new JsonLdExpansionFailedError(processor))).toEqual({
73
+ kind: 'context-invalid',
74
+ detail: 'a remote @context response could not be used as a JSON-LD context',
75
+ code: 'invalid scoped context',
76
+ fields: { term: 'x' },
77
+ });
78
+ });
79
+ it('classifies a remote context chain that overflows or refers to itself as context-fetch', () => {
80
+ const processor = jsonLdError('jsonld.ContextUrlError', 'Maximum number of @context URLs exceeded.', {
81
+ code: 'context overflow',
82
+ url: 'https://example.com/ctx',
83
+ });
84
+ expect(describeJsonLdFailure(new JsonLdExpansionFailedError(processor))).toEqual({
85
+ kind: 'context-fetch',
86
+ detail: 'the remote @context chain could not be resolved: too many remote contexts, or a remote context refers back to itself',
87
+ code: 'context overflow',
88
+ });
89
+ });
90
+ it('classifies non-object remote context content as context-invalid, naming the code and URL', () => {
91
+ const processor = jsonLdError('jsonld.InvalidUrl', 'Dereferencing a URL did not result in a JSON object. The response was valid JSON, but it was not a JSON object. URL: "https://example.com/ctx".', { code: 'invalid remote context', url: 'https://example.com/ctx' });
92
+ const failure = describeJsonLdFailure(new JsonLdExpansionFailedError(processor));
93
+ expect(failure).toEqual({
94
+ kind: 'context-invalid',
95
+ detail: 'a remote @context response could not be used as a JSON-LD context',
96
+ code: 'invalid remote context',
97
+ url: 'https://example.com/ctx',
98
+ });
99
+ });
100
+ it('reports the failing @context URL from the jsonld wrapper beneath a typed loader failure', () => {
101
+ const wrapper = jsonLdError('jsonld.InvalidUrl', 'Dereferencing a URL did not result in a valid JSON-LD object.', {
102
+ code: 'loading remote context failed',
103
+ url: 'https://example.com/ctx',
104
+ });
105
+ wrapper.cause = new ResolverHttpError('https://example.com/ctx', 503);
106
+ const failure = describeJsonLdFailure(new JsonLdExpansionFailedError(wrapper));
107
+ expect(failure).toMatchObject({
108
+ kind: 'context-fetch',
109
+ code: 'resolver.http-error',
110
+ url: 'https://example.com/ctx',
111
+ });
112
+ });
113
+ it('classifies an untyped "loading remote context failed" as context-fetch without echoing the message', () => {
114
+ const wrapper = jsonLdError('jsonld.InvalidUrl', 'Dereferencing a URL did not result in a valid JSON-LD object.', {
115
+ code: 'loading remote context failed',
116
+ url: 'https://example.com/ctx',
117
+ });
118
+ const failure = describeJsonLdFailure(new JsonLdExpansionFailedError(wrapper));
119
+ expect(failure).toEqual({
120
+ kind: 'context-fetch',
121
+ detail: 'a remote @context document could not be loaded',
122
+ code: 'loading remote context failed',
123
+ url: 'https://example.com/ctx',
124
+ });
125
+ });
126
+ });
127
+ describe('document: recognised processor shapes', () => {
128
+ it('extracts the safe-mode event message and offending property (real jsonld@8.3.3 shape)', () => {
129
+ const processor = jsonLdError('jsonld.ValidationError', 'Safe mode validation error.', {
130
+ event: {
131
+ type: ['JsonLdEvent'],
132
+ code: 'invalid property',
133
+ level: 'warning',
134
+ message: 'Dropping property that did not expand into an absolute IRI or keyword.',
135
+ details: { property: 'unknownTerm', expandedProperty: 'unknownTerm' },
136
+ },
137
+ });
138
+ const failure = describeJsonLdFailure(new JsonLdExpansionFailedError(processor));
139
+ expect(failure.kind).toBe('document');
140
+ expect(failure.detail).toContain('Dropping property that did not expand');
141
+ expect(failure.detail).toContain('unknownTerm');
142
+ expect(failure).toMatchObject({ source: 'safe-mode-event' });
143
+ expect(failure.code).toBe('invalid property');
144
+ expect(failure).toMatchObject({ fields: { property: 'unknownTerm', expandedProperty: 'unknownTerm' } });
145
+ });
146
+ it('never echoes non-allowlisted event fields, which can carry credential content', () => {
147
+ const processor = jsonLdError('jsonld.ValidationError', 'Safe mode validation error.', {
148
+ event: {
149
+ code: 'object with only @id',
150
+ message: 'Dropping object with only @id.',
151
+ details: { value: { '@id': 'urn:secret:batch-7734' } },
152
+ },
153
+ });
154
+ const failure = describeJsonLdFailure(new JsonLdExpansionFailedError(processor));
155
+ expect(failure.kind).toBe('document');
156
+ expect(failure.detail).not.toContain('urn:secret:batch-7734');
157
+ expect(failure).not.toHaveProperty('fields');
158
+ expect(JSON.stringify(failure)).not.toContain('urn:secret:batch-7734');
159
+ });
160
+ it('echoes only allowlisted event fields even when a non-allowlisted one is a plain string', () => {
161
+ const processor = jsonLdError('jsonld.ValidationError', 'Safe mode validation error.', {
162
+ event: {
163
+ code: 'invalid property',
164
+ message: 'Dropping property that did not expand into an absolute IRI or keyword.',
165
+ details: { property: 'batchId', value: 'urn:secret:batch-7734' },
166
+ },
167
+ });
168
+ const failure = describeJsonLdFailure(new JsonLdExpansionFailedError(processor));
169
+ expect(failure).toMatchObject({ fields: { property: 'batchId' } });
170
+ expect(JSON.stringify(failure)).not.toContain('urn:secret:batch-7734');
171
+ });
172
+ it('never echoes a syntax-error message, which jsonld.js may interpolate caller values into', () => {
173
+ const processor = jsonLdError('jsonld.SyntaxError', 'Invalid JSON-LD syntax; container mapping for "secret-field-value" on term "x".', { code: 'invalid @index value', term: 'x' });
174
+ const failure = describeJsonLdFailure(new JsonLdExpansionFailedError(processor));
175
+ expect(failure).toEqual({
176
+ kind: 'document',
177
+ detail: 'Invalid JSON-LD syntax; invalid @index value.',
178
+ source: 'syntax-error',
179
+ code: 'invalid @index value',
180
+ fields: { term: 'x' },
181
+ });
182
+ expect(JSON.stringify(failure)).not.toContain('secret-field-value');
183
+ });
184
+ it('classifies a syntax error from a code and its allowlisted fields', () => {
185
+ const processor = jsonLdError('jsonld.SyntaxError', 'Invalid JSON-LD syntax; @type value must be a string.', {
186
+ code: 'invalid type value',
187
+ });
188
+ const failure = describeJsonLdFailure(new JsonLdExpansionFailedError(processor));
189
+ expect(failure.kind).toBe('document');
190
+ expect(failure.detail).toBe('Invalid JSON-LD syntax; invalid type value.');
191
+ expect(failure).toMatchObject({ source: 'syntax-error' });
192
+ expect(failure.code).toBe('invalid type value');
193
+ });
194
+ it('keeps the typed invalid-shape diagnostic', () => {
195
+ const failure = describeJsonLdFailure(new JsonLdInvalidShapeError(null));
196
+ expect(failure.kind).toBe('document');
197
+ expect(failure.detail).toContain('non-null object');
198
+ expect(failure.code).toBe('invalid document shape');
199
+ });
200
+ });
201
+ describe('document: unrecognised failures never leak raw messages', () => {
202
+ it('returns the generic message for an untyped error instead of echoing its text', () => {
203
+ const leaky = new Error('internal path /srv/app/private-config.json');
204
+ const failure = describeJsonLdFailure(new JsonLdExpansionFailedError(leaky));
205
+ expect(failure.kind).toBe('document');
206
+ expect(failure.detail).toBe('the document could not be expanded as valid JSON-LD');
207
+ expect(failure.detail).not.toContain('/srv/app');
208
+ });
209
+ it('returns the generic message for an unknown jsonld.* error name', () => {
210
+ const processor = jsonLdError('jsonld.OptionsError', 'Some future message naming internals.', {});
211
+ const failure = describeJsonLdFailure(new JsonLdExpansionFailedError(processor));
212
+ expect(failure.kind).toBe('document');
213
+ expect(failure.detail).toBe('the document could not be expanded as valid JSON-LD');
214
+ });
215
+ it('terminates on a cyclic cause chain and classifies it as document', () => {
216
+ const a = new Error('a');
217
+ const b = new Error('b', { cause: a });
218
+ a.cause = b;
219
+ expect(describeJsonLdFailure(new JsonLdExpansionFailedError(a))).toMatchObject({
220
+ kind: 'document',
221
+ detail: 'the document could not be expanded as valid JSON-LD',
222
+ });
223
+ });
224
+ });
225
+ });
226
+ //# sourceMappingURL=describe-jsonld-failure.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"describe-jsonld-failure.test.js","sourceRoot":"","sources":["../../src/validation/describe-jsonld-failure.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import { StructuredError, type ValidationFailure } from '../structured-error.js';
2
+ /**
3
+ * Base for every JSON-LD validation diagnostic. Catch to handle any
4
+ * JSON-LD failure generically; catch a concrete subclass for specific handling.
5
+ */
6
+ export declare class JsonLdValidationError extends StructuredError {
7
+ }
8
+ /** The input was not a non-null object. */
9
+ export declare class JsonLdInvalidShapeError extends JsonLdValidationError {
10
+ constructor(document: unknown);
11
+ }
12
+ /** `jsonld.toRDF` rejected the document (malformed context, undefined terms, etc.). */
13
+ export declare class JsonLdExpansionFailedError extends JsonLdValidationError {
14
+ constructor(cause: unknown);
15
+ }
16
+ /**
17
+ * Base for every JSON Schema validation diagnostic. Catch to handle any
18
+ * schema-validation failure generically; catch a concrete subclass for
19
+ * specific handling.
20
+ */
21
+ export declare class SchemaValidationError extends StructuredError {
22
+ }
23
+ /** A schema URL could not be loaded. */
24
+ export declare class SchemaFetchFailedError extends SchemaValidationError {
25
+ constructor(url: string, cause: unknown);
26
+ }
27
+ /** Ajv refused to compile the schema (malformed schema, duplicate `$id`, etc.). */
28
+ export declare class SchemaCompilationFailedError extends SchemaValidationError {
29
+ constructor(identifier: string, cause: unknown);
30
+ }
31
+ /**
32
+ * The payload failed schema validation. Carries every Ajv `allErrors`
33
+ * failure across every schema in {@link failures}, each with `code`
34
+ * `'schema.payload-invalid'` plus the Ajv-derived `pointer`, `received`,
35
+ * and `expected`.
36
+ */
37
+ export declare class SchemaPayloadError extends SchemaValidationError {
38
+ readonly failures: readonly ValidationFailure[];
39
+ constructor(failures: readonly ValidationFailure[]);
40
+ }
@@ -0,0 +1,75 @@
1
+ import { StructuredError } from '../structured-error.js';
2
+ /**
3
+ * Base for every JSON-LD validation diagnostic. Catch to handle any
4
+ * JSON-LD failure generically; catch a concrete subclass for specific handling.
5
+ */
6
+ export class JsonLdValidationError extends StructuredError {
7
+ }
8
+ /** The input was not a non-null object. */
9
+ export class JsonLdInvalidShapeError extends JsonLdValidationError {
10
+ constructor(document) {
11
+ super({
12
+ code: 'jsonld.invalid-shape',
13
+ message: 'JSON-LD document must be a non-null object.',
14
+ received: document === null ? 'null' : typeof document,
15
+ expected: 'object',
16
+ });
17
+ }
18
+ }
19
+ /** `jsonld.toRDF` rejected the document (malformed context, undefined terms, etc.). */
20
+ export class JsonLdExpansionFailedError extends JsonLdValidationError {
21
+ constructor(cause) {
22
+ super({
23
+ code: 'jsonld.expansion-failed',
24
+ message: 'JSON-LD expansion failed.',
25
+ received: cause instanceof Error ? cause.message : String(cause),
26
+ cause,
27
+ });
28
+ }
29
+ }
30
+ /**
31
+ * Base for every JSON Schema validation diagnostic. Catch to handle any
32
+ * schema-validation failure generically; catch a concrete subclass for
33
+ * specific handling.
34
+ */
35
+ export class SchemaValidationError extends StructuredError {
36
+ }
37
+ /** A schema URL could not be loaded. */
38
+ export class SchemaFetchFailedError extends SchemaValidationError {
39
+ constructor(url, cause) {
40
+ super({
41
+ code: 'schema.fetch-failed',
42
+ message: `Could not load schema from ${url}.`,
43
+ received: url,
44
+ cause,
45
+ });
46
+ }
47
+ }
48
+ /** Ajv refused to compile the schema (malformed schema, duplicate `$id`, etc.). */
49
+ export class SchemaCompilationFailedError extends SchemaValidationError {
50
+ constructor(identifier, cause) {
51
+ super({
52
+ code: 'schema.compilation-failed',
53
+ message: `Could not compile schema from ${identifier}.`,
54
+ received: cause instanceof Error ? cause.message : String(cause),
55
+ cause,
56
+ });
57
+ }
58
+ }
59
+ /**
60
+ * The payload failed schema validation. Carries every Ajv `allErrors`
61
+ * failure across every schema in {@link failures}, each with `code`
62
+ * `'schema.payload-invalid'` plus the Ajv-derived `pointer`, `received`,
63
+ * and `expected`.
64
+ */
65
+ export class SchemaPayloadError extends SchemaValidationError {
66
+ failures;
67
+ constructor(failures) {
68
+ super({
69
+ code: 'schema.payload-invalid',
70
+ message: `Payload failed validation against ${failures.length} rule(s).`,
71
+ });
72
+ this.failures = failures;
73
+ }
74
+ }
75
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/validation/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAA0B,MAAM,wBAAwB,CAAC;AAEjF;;;GAGG;AACH,MAAM,OAAO,qBAAsB,SAAQ,eAAe;CAAG;AAE7D,2CAA2C;AAC3C,MAAM,OAAO,uBAAwB,SAAQ,qBAAqB;IAChE,YAAY,QAAiB;QAC3B,KAAK,CAAC;YACJ,IAAI,EAAE,sBAAsB;YAC5B,OAAO,EAAE,6CAA6C;YACtD,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,QAAQ;YACtD,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAC;IACL,CAAC;CACF;AAED,uFAAuF;AACvF,MAAM,OAAO,0BAA2B,SAAQ,qBAAqB;IACnE,YAAY,KAAc;QACxB,KAAK,CAAC;YACJ,IAAI,EAAE,yBAAyB;YAC/B,OAAO,EAAE,2BAA2B;YACpC,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;;;;GAIG;AACH,MAAM,OAAO,qBAAsB,SAAQ,eAAe;CAAG;AAE7D,wCAAwC;AACxC,MAAM,OAAO,sBAAuB,SAAQ,qBAAqB;IAC/D,YAAY,GAAW,EAAE,KAAc;QACrC,KAAK,CAAC;YACJ,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE,8BAA8B,GAAG,GAAG;YAC7C,QAAQ,EAAE,GAAG;YACb,KAAK;SACN,CAAC,CAAC;IACL,CAAC;CACF;AAED,mFAAmF;AACnF,MAAM,OAAO,4BAA6B,SAAQ,qBAAqB;IACrE,YAAY,UAAkB,EAAE,KAAc;QAC5C,KAAK,CAAC;YACJ,IAAI,EAAE,2BAA2B;YACjC,OAAO,EAAE,iCAAiC,UAAU,GAAG;YACvD,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;;;;;GAKG;AACH,MAAM,OAAO,kBAAmB,SAAQ,qBAAqB;IAClD,QAAQ,CAA+B;IAChD,YAAY,QAAsC;QAChD,KAAK,CAAC;YACJ,IAAI,EAAE,wBAAwB;YAC9B,OAAO,EAAE,qCAAqC,QAAQ,CAAC,MAAM,WAAW;SACzE,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF"}
@@ -0,0 +1,5 @@
1
+ export { JsonLdValidationError, JsonLdInvalidShapeError, JsonLdExpansionFailedError, SchemaValidationError, SchemaFetchFailedError, SchemaCompilationFailedError, SchemaPayloadError, } from './errors.js';
2
+ export { expandJsonLd, validateJsonLd, type JsonLdDocumentLoader, type ValidateJsonLdOptions, } from './validate-jsonld.js';
3
+ export { validateAgainstSchemas, type SchemaReference } from './validate-against-schemas.js';
4
+ export { describeJsonLdFailure, SAFE_EVENT_FIELDS, type JsonLdContextFailure, type JsonLdDocumentFailure, type JsonLdFailureDescription, type SafeJsonLdFields, } from './describe-jsonld-failure.js';
5
+ export type { BundledFallbackEvent, BundledFallbackOptions } from '../bundle/fallback.js';
@@ -0,0 +1,5 @@
1
+ export { JsonLdValidationError, JsonLdInvalidShapeError, JsonLdExpansionFailedError, SchemaValidationError, SchemaFetchFailedError, SchemaCompilationFailedError, SchemaPayloadError, } from './errors.js';
2
+ export { expandJsonLd, validateJsonLd, } from './validate-jsonld.js';
3
+ export { validateAgainstSchemas } from './validate-against-schemas.js';
4
+ export { describeJsonLdFailure, SAFE_EVENT_FIELDS, } from './describe-jsonld-failure.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,EACtB,4BAA4B,EAC5B,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,YAAY,EACZ,cAAc,GAGf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,sBAAsB,EAAwB,MAAM,+BAA+B,CAAC;AAC7F,OAAO,EACL,qBAAqB,EACrB,iBAAiB,GAKlB,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { SchemaLoader } from '../loaders/schema-loader.js';
2
+ /**
3
+ * A schema reference. A string is treated as a URL and loaded via the
4
+ * supplied {@link SchemaLoader}; an object is used directly as the JSON
5
+ * Schema document. The two forms may be mixed in one call.
6
+ */
7
+ export type SchemaReference = string | object;
8
+ /**
9
+ * Validates a payload against one or more JSON Schemas. Ajv runs with
10
+ * `allErrors: true` so a single payload surfaces every validation failure
11
+ * per schema, and payload failures accumulate across all schemas.
12
+ *
13
+ * Fetch and compile failures are fail-fast: the first schema that cannot
14
+ * be loaded or compiled aborts the run. Only payload-invalid failures
15
+ * accumulate.
16
+ *
17
+ * @throws {SchemaFetchFailedError} if a schema URL cannot be loaded.
18
+ * @throws {SchemaCompilationFailedError} if Ajv refuses a schema.
19
+ * @throws {SchemaPayloadError} carrying every Ajv `allErrors` failure in
20
+ * `failures[]` if any payload validation failed.
21
+ */
22
+ export declare function validateAgainstSchemas(payload: unknown, schemas: SchemaReference[], loader: SchemaLoader): Promise<void>;