@flaks/onerecord 0.1.2 → 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 (328) hide show
  1. package/CHANGELOG.md +324 -5
  2. package/MIGRATING.md +191 -5
  3. package/README.md +94 -34
  4. package/dist/booking-flow/index.d.ts +1 -1
  5. package/dist/booking-flow/index.d.ts.map +1 -1
  6. package/dist/booking-flow/index.js +1 -1
  7. package/dist/booking-flow/index.js.map +1 -1
  8. package/dist/booking-flow/transitions.d.ts +21 -0
  9. package/dist/booking-flow/transitions.d.ts.map +1 -1
  10. package/dist/booking-flow/transitions.js +57 -5
  11. package/dist/booking-flow/transitions.js.map +1 -1
  12. package/dist/classes/account-number/schema.d.ts +2 -7
  13. package/dist/classes/account-number/schema.d.ts.map +1 -1
  14. package/dist/classes/account-number/schema.js +7 -4
  15. package/dist/classes/account-number/schema.js.map +1 -1
  16. package/dist/classes/co2-emissions/codec.d.ts +4 -0
  17. package/dist/classes/co2-emissions/codec.d.ts.map +1 -0
  18. package/dist/classes/co2-emissions/codec.js +11 -0
  19. package/dist/classes/co2-emissions/codec.js.map +1 -0
  20. package/dist/classes/co2-emissions/deserialize.d.ts +5 -0
  21. package/dist/classes/co2-emissions/deserialize.d.ts.map +1 -0
  22. package/dist/classes/co2-emissions/deserialize.js +64 -0
  23. package/dist/classes/co2-emissions/deserialize.js.map +1 -0
  24. package/dist/classes/co2-emissions/index.d.ts +6 -0
  25. package/dist/classes/co2-emissions/index.d.ts.map +1 -0
  26. package/dist/classes/co2-emissions/index.js +5 -0
  27. package/dist/classes/co2-emissions/index.js.map +1 -0
  28. package/dist/classes/co2-emissions/schema.d.ts +18 -0
  29. package/dist/classes/co2-emissions/schema.d.ts.map +1 -0
  30. package/dist/classes/co2-emissions/schema.js +12 -0
  31. package/dist/classes/co2-emissions/schema.js.map +1 -0
  32. package/dist/classes/co2-emissions/serialize.d.ts +6 -0
  33. package/dist/classes/co2-emissions/serialize.d.ts.map +1 -0
  34. package/dist/classes/co2-emissions/serialize.js +28 -0
  35. package/dist/classes/co2-emissions/serialize.js.map +1 -0
  36. package/dist/classes/company/codec.d.ts +4 -0
  37. package/dist/classes/company/codec.d.ts.map +1 -0
  38. package/dist/classes/company/codec.js +11 -0
  39. package/dist/classes/company/codec.js.map +1 -0
  40. package/dist/classes/company/deserialize.d.ts +5 -0
  41. package/dist/classes/company/deserialize.d.ts.map +1 -0
  42. package/dist/classes/company/deserialize.js +64 -0
  43. package/dist/classes/company/deserialize.js.map +1 -0
  44. package/dist/classes/company/index.d.ts +6 -0
  45. package/dist/classes/company/index.d.ts.map +1 -0
  46. package/dist/classes/company/index.js +5 -0
  47. package/dist/classes/company/index.js.map +1 -0
  48. package/dist/classes/company/schema.d.ts +23 -0
  49. package/dist/classes/company/schema.d.ts.map +1 -0
  50. package/dist/classes/company/schema.js +23 -0
  51. package/dist/classes/company/schema.js.map +1 -0
  52. package/dist/classes/company/serialize.d.ts +6 -0
  53. package/dist/classes/company/serialize.d.ts.map +1 -0
  54. package/dist/classes/company/serialize.js +28 -0
  55. package/dist/classes/company/serialize.js.map +1 -0
  56. package/dist/classes/customs-information/codec.d.ts +4 -0
  57. package/dist/classes/customs-information/codec.d.ts.map +1 -0
  58. package/dist/classes/customs-information/codec.js +11 -0
  59. package/dist/classes/customs-information/codec.js.map +1 -0
  60. package/dist/classes/customs-information/deserialize.d.ts +5 -0
  61. package/dist/classes/customs-information/deserialize.d.ts.map +1 -0
  62. package/dist/classes/customs-information/deserialize.js +64 -0
  63. package/dist/classes/customs-information/deserialize.js.map +1 -0
  64. package/dist/classes/customs-information/index.d.ts +6 -0
  65. package/dist/classes/customs-information/index.d.ts.map +1 -0
  66. package/dist/classes/customs-information/index.js +5 -0
  67. package/dist/classes/customs-information/index.js.map +1 -0
  68. package/dist/classes/customs-information/schema.d.ts +18 -0
  69. package/dist/classes/customs-information/schema.d.ts.map +1 -0
  70. package/dist/classes/customs-information/schema.js +17 -0
  71. package/dist/classes/customs-information/schema.js.map +1 -0
  72. package/dist/classes/customs-information/serialize.d.ts +6 -0
  73. package/dist/classes/customs-information/serialize.d.ts.map +1 -0
  74. package/dist/classes/customs-information/serialize.js +28 -0
  75. package/dist/classes/customs-information/serialize.js.map +1 -0
  76. package/dist/classes/insurance/codec.d.ts +4 -0
  77. package/dist/classes/insurance/codec.d.ts.map +1 -0
  78. package/dist/classes/insurance/codec.js +11 -0
  79. package/dist/classes/insurance/codec.js.map +1 -0
  80. package/dist/classes/insurance/deserialize.d.ts +5 -0
  81. package/dist/classes/insurance/deserialize.d.ts.map +1 -0
  82. package/dist/classes/insurance/deserialize.js +64 -0
  83. package/dist/classes/insurance/deserialize.js.map +1 -0
  84. package/dist/classes/insurance/index.d.ts +6 -0
  85. package/dist/classes/insurance/index.d.ts.map +1 -0
  86. package/dist/classes/insurance/index.js +5 -0
  87. package/dist/classes/insurance/index.js.map +1 -0
  88. package/dist/classes/insurance/schema.d.ts +17 -0
  89. package/dist/classes/insurance/schema.d.ts.map +1 -0
  90. package/dist/classes/insurance/schema.js +11 -0
  91. package/dist/classes/insurance/schema.js.map +1 -0
  92. package/dist/classes/insurance/serialize.d.ts +6 -0
  93. package/dist/classes/insurance/serialize.d.ts.map +1 -0
  94. package/dist/classes/insurance/serialize.js +28 -0
  95. package/dist/classes/insurance/serialize.js.map +1 -0
  96. package/dist/classes/line-item-package/codec.d.ts +4 -0
  97. package/dist/classes/line-item-package/codec.d.ts.map +1 -0
  98. package/dist/classes/line-item-package/codec.js +11 -0
  99. package/dist/classes/line-item-package/codec.js.map +1 -0
  100. package/dist/classes/line-item-package/deserialize.d.ts +5 -0
  101. package/dist/classes/line-item-package/deserialize.d.ts.map +1 -0
  102. package/dist/classes/line-item-package/deserialize.js +64 -0
  103. package/dist/classes/line-item-package/deserialize.js.map +1 -0
  104. package/dist/classes/line-item-package/index.d.ts +6 -0
  105. package/dist/classes/line-item-package/index.d.ts.map +1 -0
  106. package/dist/classes/line-item-package/index.js +5 -0
  107. package/dist/classes/line-item-package/index.js.map +1 -0
  108. package/dist/classes/line-item-package/schema.d.ts +22 -0
  109. package/dist/classes/line-item-package/schema.d.ts.map +1 -0
  110. package/dist/classes/line-item-package/schema.js +12 -0
  111. package/dist/classes/line-item-package/schema.js.map +1 -0
  112. package/dist/classes/line-item-package/serialize.d.ts +6 -0
  113. package/dist/classes/line-item-package/serialize.d.ts.map +1 -0
  114. package/dist/classes/line-item-package/serialize.js +28 -0
  115. package/dist/classes/line-item-package/serialize.js.map +1 -0
  116. package/dist/classes/other-charge/codec.d.ts +4 -0
  117. package/dist/classes/other-charge/codec.d.ts.map +1 -0
  118. package/dist/classes/other-charge/codec.js +11 -0
  119. package/dist/classes/other-charge/codec.js.map +1 -0
  120. package/dist/classes/other-charge/deserialize.d.ts +5 -0
  121. package/dist/classes/other-charge/deserialize.d.ts.map +1 -0
  122. package/dist/classes/other-charge/deserialize.js +64 -0
  123. package/dist/classes/other-charge/deserialize.js.map +1 -0
  124. package/dist/classes/other-charge/index.d.ts +6 -0
  125. package/dist/classes/other-charge/index.d.ts.map +1 -0
  126. package/dist/classes/other-charge/index.js +5 -0
  127. package/dist/classes/other-charge/index.js.map +1 -0
  128. package/dist/classes/other-charge/schema.d.ts +27 -0
  129. package/dist/classes/other-charge/schema.d.ts.map +1 -0
  130. package/dist/classes/other-charge/schema.js +14 -0
  131. package/dist/classes/other-charge/schema.js.map +1 -0
  132. package/dist/classes/other-charge/serialize.d.ts +6 -0
  133. package/dist/classes/other-charge/serialize.d.ts.map +1 -0
  134. package/dist/classes/other-charge/serialize.js +28 -0
  135. package/dist/classes/other-charge/serialize.js.map +1 -0
  136. package/dist/classes/party/schema.d.ts +9 -1
  137. package/dist/classes/party/schema.d.ts.map +1 -1
  138. package/dist/classes/party/schema.js +5 -2
  139. package/dist/classes/party/schema.js.map +1 -1
  140. package/dist/classes/piece/schema.d.ts +11 -0
  141. package/dist/classes/piece/schema.d.ts.map +1 -1
  142. package/dist/classes/piece/schema.js +10 -0
  143. package/dist/classes/piece/schema.js.map +1 -1
  144. package/dist/classes/regulated-entity/codec.d.ts +4 -0
  145. package/dist/classes/regulated-entity/codec.d.ts.map +1 -0
  146. package/dist/classes/regulated-entity/codec.js +11 -0
  147. package/dist/classes/regulated-entity/codec.js.map +1 -0
  148. package/dist/classes/regulated-entity/deserialize.d.ts +5 -0
  149. package/dist/classes/regulated-entity/deserialize.d.ts.map +1 -0
  150. package/dist/classes/regulated-entity/deserialize.js +64 -0
  151. package/dist/classes/regulated-entity/deserialize.js.map +1 -0
  152. package/dist/classes/regulated-entity/index.d.ts +6 -0
  153. package/dist/classes/regulated-entity/index.d.ts.map +1 -0
  154. package/dist/classes/regulated-entity/index.js +5 -0
  155. package/dist/classes/regulated-entity/index.js.map +1 -0
  156. package/dist/classes/regulated-entity/schema.d.ts +19 -0
  157. package/dist/classes/regulated-entity/schema.d.ts.map +1 -0
  158. package/dist/classes/regulated-entity/schema.js +12 -0
  159. package/dist/classes/regulated-entity/schema.js.map +1 -0
  160. package/dist/classes/regulated-entity/serialize.d.ts +6 -0
  161. package/dist/classes/regulated-entity/serialize.d.ts.map +1 -0
  162. package/dist/classes/regulated-entity/serialize.js +28 -0
  163. package/dist/classes/regulated-entity/serialize.js.map +1 -0
  164. package/dist/classes/security-declaration/codec.d.ts +4 -0
  165. package/dist/classes/security-declaration/codec.d.ts.map +1 -0
  166. package/dist/classes/security-declaration/codec.js +11 -0
  167. package/dist/classes/security-declaration/codec.js.map +1 -0
  168. package/dist/classes/security-declaration/deserialize.d.ts +5 -0
  169. package/dist/classes/security-declaration/deserialize.d.ts.map +1 -0
  170. package/dist/classes/security-declaration/deserialize.js +64 -0
  171. package/dist/classes/security-declaration/deserialize.js.map +1 -0
  172. package/dist/classes/security-declaration/index.d.ts +6 -0
  173. package/dist/classes/security-declaration/index.d.ts.map +1 -0
  174. package/dist/classes/security-declaration/index.js +5 -0
  175. package/dist/classes/security-declaration/index.js.map +1 -0
  176. package/dist/classes/security-declaration/schema.d.ts +44 -0
  177. package/dist/classes/security-declaration/schema.d.ts.map +1 -0
  178. package/dist/classes/security-declaration/schema.js +21 -0
  179. package/dist/classes/security-declaration/schema.js.map +1 -0
  180. package/dist/classes/security-declaration/serialize.d.ts +6 -0
  181. package/dist/classes/security-declaration/serialize.d.ts.map +1 -0
  182. package/dist/classes/security-declaration/serialize.js +28 -0
  183. package/dist/classes/security-declaration/serialize.js.map +1 -0
  184. package/dist/classes/shared/value.d.ts +44 -0
  185. package/dist/classes/shared/value.d.ts.map +1 -0
  186. package/dist/classes/shared/value.js +39 -0
  187. package/dist/classes/shared/value.js.map +1 -0
  188. package/dist/classes/shipment/schema.d.ts +31 -8
  189. package/dist/classes/shipment/schema.d.ts.map +1 -1
  190. package/dist/classes/shipment/schema.js +15 -5
  191. package/dist/classes/shipment/schema.js.map +1 -1
  192. package/dist/classes/transport-movement/schema.d.ts +22 -0
  193. package/dist/classes/transport-movement/schema.d.ts.map +1 -1
  194. package/dist/classes/transport-movement/schema.js +7 -0
  195. package/dist/classes/transport-movement/schema.js.map +1 -1
  196. package/dist/classes/uld/codec.d.ts +4 -0
  197. package/dist/classes/uld/codec.d.ts.map +1 -0
  198. package/dist/classes/uld/codec.js +11 -0
  199. package/dist/classes/uld/codec.js.map +1 -0
  200. package/dist/classes/uld/deserialize.d.ts +5 -0
  201. package/dist/classes/uld/deserialize.d.ts.map +1 -0
  202. package/dist/classes/uld/deserialize.js +64 -0
  203. package/dist/classes/uld/deserialize.js.map +1 -0
  204. package/dist/classes/uld/index.d.ts +6 -0
  205. package/dist/classes/uld/index.d.ts.map +1 -0
  206. package/dist/classes/uld/index.js +5 -0
  207. package/dist/classes/uld/index.js.map +1 -0
  208. package/dist/classes/uld/schema.d.ts +31 -0
  209. package/dist/classes/uld/schema.d.ts.map +1 -0
  210. package/dist/classes/uld/schema.js +29 -0
  211. package/dist/classes/uld/schema.js.map +1 -0
  212. package/dist/classes/uld/serialize.d.ts +6 -0
  213. package/dist/classes/uld/serialize.d.ts.map +1 -0
  214. package/dist/classes/uld/serialize.js +28 -0
  215. package/dist/classes/uld/serialize.js.map +1 -0
  216. package/dist/classes/waybill/schema.d.ts +45 -5
  217. package/dist/classes/waybill/schema.d.ts.map +1 -1
  218. package/dist/classes/waybill/schema.js +28 -7
  219. package/dist/classes/waybill/schema.js.map +1 -1
  220. package/dist/classes/waybill-line-item/codec.d.ts +4 -0
  221. package/dist/classes/waybill-line-item/codec.d.ts.map +1 -0
  222. package/dist/classes/waybill-line-item/codec.js +11 -0
  223. package/dist/classes/waybill-line-item/codec.js.map +1 -0
  224. package/dist/classes/waybill-line-item/deserialize.d.ts +5 -0
  225. package/dist/classes/waybill-line-item/deserialize.d.ts.map +1 -0
  226. package/dist/classes/waybill-line-item/deserialize.js +64 -0
  227. package/dist/classes/waybill-line-item/deserialize.js.map +1 -0
  228. package/dist/classes/waybill-line-item/index.d.ts +6 -0
  229. package/dist/classes/waybill-line-item/index.d.ts.map +1 -0
  230. package/dist/classes/waybill-line-item/index.js +5 -0
  231. package/dist/classes/waybill-line-item/index.js.map +1 -0
  232. package/dist/classes/waybill-line-item/schema.d.ts +44 -0
  233. package/dist/classes/waybill-line-item/schema.d.ts.map +1 -0
  234. package/dist/classes/waybill-line-item/schema.js +22 -0
  235. package/dist/classes/waybill-line-item/schema.js.map +1 -0
  236. package/dist/classes/waybill-line-item/serialize.d.ts +6 -0
  237. package/dist/classes/waybill-line-item/serialize.d.ts.map +1 -0
  238. package/dist/classes/waybill-line-item/serialize.js +28 -0
  239. package/dist/classes/waybill-line-item/serialize.js.map +1 -0
  240. package/dist/codecs.d.ts +10 -1
  241. package/dist/codecs.d.ts.map +1 -1
  242. package/dist/codecs.js +10 -1
  243. package/dist/codecs.js.map +1 -1
  244. package/dist/codes/enums.d.ts +35 -0
  245. package/dist/codes/enums.d.ts.map +1 -1
  246. package/dist/codes/enums.js +4 -0
  247. package/dist/codes/enums.js.map +1 -1
  248. package/dist/codes/fsu-event-codes.d.ts +6 -6
  249. package/dist/codes/fsu-event-codes.d.ts.map +1 -1
  250. package/dist/codes/fsu-event-codes.js +11 -9
  251. package/dist/codes/fsu-event-codes.js.map +1 -1
  252. package/dist/codes/index.d.ts +1 -1
  253. package/dist/codes/index.d.ts.map +1 -1
  254. package/dist/codes/index.js +1 -1
  255. package/dist/codes/index.js.map +1 -1
  256. package/dist/dispatch/context-order.d.ts +28 -0
  257. package/dist/dispatch/context-order.d.ts.map +1 -0
  258. package/dist/dispatch/context-order.js +21 -0
  259. package/dist/dispatch/context-order.js.map +1 -0
  260. package/dist/dispatch/domain-constraints.d.ts +49 -0
  261. package/dist/dispatch/domain-constraints.d.ts.map +1 -0
  262. package/dist/dispatch/domain-constraints.js +59 -0
  263. package/dist/dispatch/domain-constraints.js.map +1 -0
  264. package/dist/dispatch/field-types.d.ts +29 -0
  265. package/dist/dispatch/field-types.d.ts.map +1 -0
  266. package/dist/dispatch/field-types.js +135 -0
  267. package/dist/dispatch/field-types.js.map +1 -0
  268. package/dist/dispatch/graph-walk.d.ts +23 -0
  269. package/dist/dispatch/graph-walk.d.ts.map +1 -0
  270. package/dist/dispatch/graph-walk.js +207 -0
  271. package/dist/dispatch/graph-walk.js.map +1 -0
  272. package/dist/dispatch/index.d.ts +30 -0
  273. package/dist/dispatch/index.d.ts.map +1 -0
  274. package/dist/dispatch/index.js +36 -0
  275. package/dist/dispatch/index.js.map +1 -0
  276. package/dist/dispatch/iri-canonical.d.ts +28 -0
  277. package/dist/dispatch/iri-canonical.d.ts.map +1 -0
  278. package/dist/dispatch/iri-canonical.js +55 -0
  279. package/dist/dispatch/iri-canonical.js.map +1 -0
  280. package/dist/error/format.d.ts.map +1 -1
  281. package/dist/error/format.js +8 -0
  282. package/dist/error/format.js.map +1 -1
  283. package/dist/facade.d.ts +53 -2
  284. package/dist/facade.d.ts.map +1 -1
  285. package/dist/facade.js +8 -0
  286. package/dist/facade.js.map +1 -1
  287. package/dist/factory-classes.d.ts +27 -6
  288. package/dist/factory-classes.d.ts.map +1 -1
  289. package/dist/factory-classes.js +27 -6
  290. package/dist/factory-classes.js.map +1 -1
  291. package/dist/factory.d.ts +12 -0
  292. package/dist/factory.d.ts.map +1 -1
  293. package/dist/factory.js +10 -1
  294. package/dist/factory.js.map +1 -1
  295. package/dist/index.d.ts +32 -3
  296. package/dist/index.d.ts.map +1 -1
  297. package/dist/index.js +30 -3
  298. package/dist/index.js.map +1 -1
  299. package/dist/iri/dereference.d.ts +42 -0
  300. package/dist/iri/dereference.d.ts.map +1 -0
  301. package/dist/iri/dereference.js +75 -0
  302. package/dist/iri/dereference.js.map +1 -0
  303. package/dist/iri/zod-safe-iri.d.ts +18 -2
  304. package/dist/iri/zod-safe-iri.d.ts.map +1 -1
  305. package/dist/iri/zod-safe-iri.js +14 -2
  306. package/dist/iri/zod-safe-iri.js.map +1 -1
  307. package/dist/result.d.ts +27 -1
  308. package/dist/result.d.ts.map +1 -1
  309. package/dist/result.js +9 -0
  310. package/dist/result.js.map +1 -1
  311. package/dist/safety/blank-node.d.ts +20 -0
  312. package/dist/safety/blank-node.d.ts.map +1 -0
  313. package/dist/safety/blank-node.js +59 -0
  314. package/dist/safety/blank-node.js.map +1 -0
  315. package/dist/safety/pre-validate.d.ts.map +1 -1
  316. package/dist/safety/pre-validate.js +12 -72
  317. package/dist/safety/pre-validate.js.map +1 -1
  318. package/dist/safety/walk-graph.d.ts +30 -0
  319. package/dist/safety/walk-graph.d.ts.map +1 -0
  320. package/dist/safety/walk-graph.js +100 -0
  321. package/dist/safety/walk-graph.js.map +1 -0
  322. package/dist/types/index.d.ts +10 -1
  323. package/dist/types/index.d.ts.map +1 -1
  324. package/dist/version.d.ts +9 -4
  325. package/dist/version.d.ts.map +1 -1
  326. package/dist/version.js +18 -6
  327. package/dist/version.js.map +1 -1
  328. package/package.json +9 -9
package/README.md CHANGED
@@ -1,18 +1,19 @@
1
1
  # @flaks/onerecord
2
2
 
3
- Zero-dependency Zod-first TypeScript mapper for the IATA OneRecord cargo data model 3.2 and API spec 2.2.0.
3
+ Zero-dependency Zod-first TypeScript mapper for the IATA OneRecord cargo data model 3.2.0 and API spec 2.2.0.
4
4
 
5
5
  ## What it is
6
6
 
7
7
  `@flaks/onerecord` provides round-trip-safe serialization and deserialization for
8
- 32 OneRecord cargo data model classes. Each class ships with a Zod schema, an
9
- application-layer TypeScript type, a `JsonLd<T>` brand, `serialize` / `serializeStrict`
10
- / `deserialize` functions, and a `Codec` bundle. A factory (`createMapper`) and a
11
- namespaced facade (`onerecord`) cover the two main consumption patterns. Safety
12
- primitives (depth, node, string, array, payload limits; prototype-pollution defense;
13
- IRI validation) run before Zod so that invalid JSON-LD graphs never reach schema
14
- evaluation. All 22 parse-error variants are typed as a discriminated union (`ParseError`)
15
- so callers handle every failure mode exhaustively.
8
+ the OneRecord cargo data model class set (Ring 1–5, booking-flow, and FWB-equivalence
9
+ classes added in v0.3.0). Each class ships with a Zod schema, an application-layer
10
+ TypeScript type, a `JsonLd<T>` brand, `serialize` / `serializeStrict` / `deserialize`
11
+ functions, and a `Codec` bundle. A factory (`createMapper`) and a namespaced facade
12
+ (`onerecord`) cover the two main consumption patterns. Safety primitives (depth, node,
13
+ string, array, payload limits; prototype-pollution defense; IRI validation) run before
14
+ Zod so that invalid JSON-LD graphs never reach schema evaluation. All parse-error
15
+ variants are typed as a discriminated union (`ParseError`) so callers handle every
16
+ failure mode exhaustively.
16
17
 
17
18
  ## Why use this library?
18
19
 
@@ -30,37 +31,96 @@ Use this library if you're building cargo software that needs to:
30
31
  - **Refuse** malformed graphs early — depth bombs, prototype-pollution
31
32
  attempts, empty arrays on the wire, circular references — before they
32
33
  reach Zod or your downstream code.
33
- - **Type-check** every parse-failure path: `ParseError` is a 22-variant
34
- discriminated union, so the compiler tells you when you've forgotten a
35
- failure mode.
34
+ - **Catch cross-node graph violations** with `createMapper({ graphWalk: true })`
35
+ or the `onerecord.dispatch.deserialize.<Class>` namespace —
36
+ `duplicate_id_in_graph`, `missing_id`, `wrong_type_for_endpoint`,
37
+ `missing_type`, all surfaced as typed `ParseError` variants. Default
38
+ per-class deserializers stay structural-only for v0.1.x compatibility;
39
+ graph-walk is opt-in.
40
+ - **Type-check** every parse-failure path: `ParseError` is a discriminated
41
+ union, so the compiler tells you when you've forgotten a failure mode.
36
42
 
37
43
  Skip it if you want a generic JSON-LD or RDF toolkit; this is purpose-built
38
44
  for the IATA cargo ontology and the ONE Record API spec 2.2.0.
39
45
 
40
- ## Status
41
-
42
- `v0.1.0` covers the 32 canonical cargo data model classes (Ring 1–5 plus
43
- the booking-flow classes) with full round-trip codecs, Zod schemas,
44
- snapshot tests, property-based round-trip tests, and pre-Zod safety
45
- primitives. The library is Apache-2.0 and ready for use within the v0.x
46
- stability policy described in [`MIGRATING.md`](MIGRATING.md).
46
+ ### Conformance and verifiability
47
47
 
48
- Spec compliance: cargo data model **3.2 (2025-07 endorsed standard)**, API
49
- spec **2.2.0**. A small number of deliberate divergences from canonical
50
- spec behavior are documented in
51
- [`docs/spec-deviations.md`](docs/spec-deviations.md); read that before
48
+ This library is **3.2.0-conformant for the covered class set, with documented
49
+ deviations and 3.2.1-forward extensions**. Specifically:
50
+ `Shipment.securityDeclarations` is accepted as a documented 3.2.1-forward
51
+ extension (deviation #12). Every deviation is recorded in
52
+ [`docs/spec-deviations.md`](docs/spec-deviations.md) — read that before
52
53
  adopting if your integration must match the spec verbatim.
53
54
 
55
+ This library publishes verifiable artifacts so consumers can audit the
56
+ conformance claim independently:
57
+
58
+ - All releases are GPG-signed git tags + signed npm tarballs (per
59
+ [`MAINTENANCE.md`](MAINTENANCE.md)).
60
+ - Every spec deviation is documented in [`docs/spec-deviations.md`](docs/spec-deviations.md)
61
+ with status banners (CLOSED, PARTIAL, deferred) and explicit guidance
62
+ on what consumers should do today.
63
+ - A [`docs/conformance-matrix.md`](docs/conformance-matrix.md) maps each
64
+ class and field to its binding authority in `IATA-1R-DM-Ontology.ttl`.
65
+ - Property-based round-trip tests for the Ring 1+2 classes
66
+ — `serialize(deserialize(x))` is field-equivalent for any value an
67
+ `Arbitrary` produces.
68
+ - Contract tests at `test/contract/` exercise the wire format
69
+ end-to-end against the OLF-hosted reference NE:ONE Server (the IATA
70
+ OneRecord reference implementation). See [`CONTRIBUTING.md`](CONTRIBUTING.md)
71
+ for how to run them.
72
+
73
+ ## Status
74
+
75
+ `v0.3.0` ships:
76
+
77
+ - The canonical cargo data model class set (Ring 1–5, booking-flow, plus
78
+ 10 new FWB-equivalence classes in v0.3.0) with full round-trip codecs,
79
+ Zod schemas, snapshot tests, and pre-Zod safety primitives.
80
+ - Opt-in **graph-walk dispatcher** (`createMapper({ graphWalk: true })` or
81
+ `onerecord.dispatch.deserialize.<Class>`) emitting all four cross-node
82
+ integrity ParseError kinds.
83
+ - Spec-correct **`acceptBookingOptionViaRequest`** transition that returns
84
+ the `BookingOptionRequest` intermediate per spec §5.4. The legacy
85
+ `acceptBookingOption` is `@deprecated` (removal v0.3 unless IATA §5.4
86
+ reconciliation restores the §5.2 shortcut).
87
+ - Property-based round-trip tests for **all 8 Ring 1+2 classes**.
88
+ - FSU code fixture regenerated with a real `sha256:` blob hash, sourced
89
+ from upstream IATA-Cargo via the sibling
90
+ [`tjo099/onerecord-xlsx-tools`](https://github.com/tjo099/onerecord-xlsx-tools)
91
+ tool. Library no longer carries the `xlsx` devDep — closes the two
92
+ high-severity Prototype Pollution + ReDoS advisories.
93
+ - See [`docs/roadmap.md`](docs/roadmap.md) for what's next.
94
+
95
+ The library is Apache-2.0 and ready for use within the v0.x stability
96
+ policy described in [`MIGRATING.md`](MIGRATING.md).
97
+
98
+ Spec compliance: cargo data model **3.2.0 (2025-07 endorsed standard, 3.2-rc2 file)**,
99
+ API spec **2.2.0**. The library is 3.2.0-conformant for the covered class set,
100
+ with documented deviations and 3.2.1-forward extensions. See
101
+ [`docs/spec-deviations.md`](docs/spec-deviations.md) and
102
+ [`docs/conformance-matrix.md`](docs/conformance-matrix.md) for the full picture.
103
+
54
104
  ## Install
55
105
 
56
106
  ```bash
57
- bun add git+https://github.com/tjo099/onerecord-mapper#v0.1.0
107
+ npm install @flaks/onerecord
108
+ # or
109
+ bun add @flaks/onerecord
110
+ # or
111
+ pnpm add @flaks/onerecord
58
112
  ```
59
113
 
60
- Pin to a specific tag for production use. Per `MIGRATING.md`, minor
61
- versions may introduce breaking changes documented in `CHANGELOG.md`;
62
- patch versions will not. A future v0.2.0 release will additionally
63
- publish to npm as the public scoped package `@flaks/onerecord`.
114
+ Pin a minor range in production (e.g. `"@flaks/onerecord": "^0.2.0"`).
115
+ Per `MIGRATING.md`, minor versions may introduce breaking changes
116
+ documented in `CHANGELOG.md`; patch versions will not.
117
+
118
+ Installing from a git tag is also supported for testing forks or
119
+ unreleased branches:
120
+
121
+ ```bash
122
+ bun add git+https://github.com/tjo099/onerecord-mapper#v0.2.0
123
+ ```
64
124
 
65
125
  ## Usage
66
126
 
@@ -111,7 +171,7 @@ const jsonLd = onerecord.serialize.Piece(piece)
111
171
 
112
172
  ### Per-class exports
113
173
 
114
- Each of the 32 classes exposes:
174
+ Each registered class exposes:
115
175
 
116
176
  | Export | Description |
117
177
  |---|---|
@@ -144,9 +204,9 @@ No bound state; suitable for one-off operations and tree-shake-friendly imports.
144
204
 
145
205
  ### Errors
146
206
 
147
- - `ParseError` — 22-variant discriminated union (`kind` field); covers
148
- `zod_validation`, `cardinality_violation`, `invalid_iri`, `depth_limit_exceeded`,
149
- `prototype_pollution_attempt`, `invalid_pointer`, and 16 more
207
+ - `ParseError` — discriminated union on `kind`; covers `zod_validation`,
208
+ `cardinality_violation`, `invalid_iri`, `depth_limit_exceeded`,
209
+ `prototype_pollution_attempt`, `invalid_pointer`, and more
150
210
  - `SerializationError` — `code: 'invalid_application_object' | 'iri_construction_failed'`
151
211
  - `formatError(e: ParseError): string` — human-readable message
152
212
  - `redactError(e: ParseError): ParseError` — strips PII from error payloads before logging
@@ -236,14 +296,14 @@ import type { Waybill, ParseError } from '@flaks/onerecord/types'
236
296
 
237
297
  | Spec | Version |
238
298
  |---|---|
239
- | Cargo data model | 3.2 (2025-07 endorsed standard) |
299
+ | Cargo data model | 3.2.0 (2025-07 endorsed standard, 3.2-rc2 ontology file) |
240
300
  | API spec | 2.2.0 |
241
301
 
242
302
  ## Development
243
303
 
244
304
  ```bash
245
305
  bun install
246
- bun run test # 518 passing + 10 skipped = 528 total
306
+ bun run test # see CI for current count
247
307
  bun run lint # Biome
248
308
  bun run typecheck # tsc --noEmit
249
309
  ```
@@ -1,5 +1,5 @@
1
1
  export { canTransition } from './can-transition.js';
2
2
  export { STATE_DIAGRAM } from './state-diagram.js';
3
3
  export type { BookingAction, BookingType, StateDiagram, Transition, } from './state-diagram.js';
4
- export { acceptBookingOption, acceptBookingRequest, rejectBookingOption, revokeBookingOption, } from './transitions.js';
4
+ export { acceptBookingOption, acceptBookingOptionViaRequest, acceptBookingRequest, rejectBookingOption, revokeBookingOption, } from './transitions.js';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/booking-flow/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,YAAY,EACV,aAAa,EACb,WAAW,EACX,YAAY,EACZ,UAAU,GACX,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/booking-flow/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,YAAY,EACV,aAAa,EACb,WAAW,EACX,YAAY,EACZ,UAAU,GACX,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,mBAAmB,EACnB,6BAA6B,EAC7B,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,kBAAkB,CAAA"}
@@ -1,5 +1,5 @@
1
1
  // src/booking-flow/index.ts
2
2
  export { canTransition } from './can-transition.js';
3
3
  export { STATE_DIAGRAM } from './state-diagram.js';
4
- export { acceptBookingOption, acceptBookingRequest, rejectBookingOption, revokeBookingOption, } from './transitions.js';
4
+ export { acceptBookingOption, acceptBookingOptionViaRequest, acceptBookingRequest, rejectBookingOption, revokeBookingOption, } from './transitions.js';
5
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/booking-flow/index.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAOlD,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/booking-flow/index.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAOlD,OAAO,EACL,mBAAmB,EACnB,6BAA6B,EAC7B,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,kBAAkB,CAAA"}
@@ -1,9 +1,30 @@
1
+ import type { BookingOptionRequest } from '../classes/booking-option-request/schema.js';
1
2
  import type { BookingOption } from '../classes/booking-option/schema.js';
2
3
  import type { BookingRequest } from '../classes/booking-request/schema.js';
3
4
  import type { Booking } from '../classes/booking/schema.js';
4
5
  import type { ParseResult } from '../result.js';
5
6
  export declare function acceptBookingRequest(req: BookingRequest): ParseResult<BookingOption>;
7
+ /**
8
+ * @deprecated v0.2 deprecation; removal in v0.3.
9
+ *
10
+ * Skips the `BookingOptionRequest` intermediate state per spec §5.4
11
+ * STATE_DIAGRAM. Use `acceptBookingOptionViaRequest(opt)` instead and
12
+ * chain to your persistence layer's BookingOptionRequest -> Booking
13
+ * transition. If the IATA §5.4 reconciliation accepts the §5.2
14
+ * shortcut, this annotation will be relaxed.
15
+ */
6
16
  export declare function acceptBookingOption(opt: BookingOption): ParseResult<Booking>;
7
17
  export declare function rejectBookingOption(opt: BookingOption, _reason?: string): ParseResult<BookingOption>;
8
18
  export declare function revokeBookingOption(opt: BookingOption, _reason?: string): ParseResult<BookingOption>;
19
+ /**
20
+ * Accept a BookingOption per spec §5.4 STATE_DIAGRAM. Returns the
21
+ * intermediate `BookingOptionRequest` resource (not directly a Booking).
22
+ *
23
+ * The carrier-side decision step (BookingOptionRequest.REQUEST_PENDING ->
24
+ * REQUEST_ACCEPTED -> Booking) is modelled separately in v0.3.0. v0.2.0
25
+ * only models the forwarder->carrier request transition.
26
+ *
27
+ * Source-state hardcode: see top-of-file comment + deviation #11.
28
+ */
29
+ export declare function acceptBookingOptionViaRequest(opt: BookingOption): ParseResult<BookingOptionRequest>;
9
30
  //# sourceMappingURL=transitions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transitions.d.ts","sourceRoot":"","sources":["../../src/booking-flow/transitions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAA;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAA;AAC1E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AAE3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAmB/C,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,WAAW,CAAC,aAAa,CAAC,CAoBpF;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,CAqB5E;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,aAAa,EAClB,OAAO,CAAC,EAAE,MAAM,GACf,WAAW,CAAC,aAAa,CAAC,CAmB5B;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,aAAa,EAClB,OAAO,CAAC,EAAE,MAAM,GACf,WAAW,CAAC,aAAa,CAAC,CAa5B"}
1
+ {"version":3,"file":"transitions.d.ts","sourceRoot":"","sources":["../../src/booking-flow/transitions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAA;AACvF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAA;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAA;AAC1E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AAE3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AA+B/C,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,WAAW,CAAC,aAAa,CAAC,CAoBpF;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,CAqB5E;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,aAAa,EAClB,OAAO,CAAC,EAAE,MAAM,GACf,WAAW,CAAC,aAAa,CAAC,CAmB5B;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,aAAa,EAClB,OAAO,CAAC,EAAE,MAAM,GACf,WAAW,CAAC,aAAa,CAAC,CAa5B;AAED;;;;;;;;;GASG;AACH,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,aAAa,GACjB,WAAW,CAAC,oBAAoB,CAAC,CAoBnC"}
@@ -3,11 +3,23 @@ import { randomUUID } from 'node:crypto';
3
3
  import { CARGO_CONTEXT_IRI } from '../version.js';
4
4
  import { canTransition } from './can-transition.js';
5
5
  /**
6
- * v3 (A3-R2 top-risk #2): acceptBookingOption DELIBERATELY skips the
7
- * BookingOptionRequest intermediate and returns a Booking directly. This
8
- * contradicts spec §5.4 STATE_DIAGRAM (which routes BookingOption.accept ->
9
- * BookingOptionRequest), but matches spec §5.2 signature. Documented as a
10
- * deliberate divergence; v0.2 will reconcile.
6
+ * v0.2 booking-flow status:
7
+ * - `acceptBookingOptionViaRequest` (below) returns the spec-§5.4
8
+ * intermediate `BookingOptionRequest` — the spec-correct path.
9
+ * - `acceptBookingOption` (legacy, @deprecated) continues to return
10
+ * `Booking` directly per spec §5.2 signature; removal v0.3 unless
11
+ * IATA §5.4 reconciliation restores the §5.2 shortcut.
12
+ *
13
+ * Source-state hardcode: all four BookingOption transition functions
14
+ * (acceptBookingOption, rejectBookingOption, revokeBookingOption,
15
+ * acceptBookingOptionViaRequest) pass the constant `'REQUEST_PENDING'`
16
+ * as the source state to `canTransition` rather than reading
17
+ * `opt.optionStatus`. This is intentional — see deviation #11 in
18
+ * `docs/spec-deviations.md`. The schema's optionStatus enum
19
+ * (OPTION_PROPOSED/_ACCEPTED/_REJECTED) does not align with
20
+ * STATE_DIAGRAM.BookingOption's source-state keys (REQUEST_PENDING).
21
+ * Reading `opt.optionStatus` would make every transition fail.
22
+ * Reconciliation deferred to v0.3.
11
23
  */
12
24
  const TENANT = 'transitions';
13
25
  const HOST = 'flaks.example';
@@ -35,6 +47,15 @@ export function acceptBookingRequest(req) {
35
47
  };
36
48
  return { ok: true, value: opt };
37
49
  }
50
+ /**
51
+ * @deprecated v0.2 deprecation; removal in v0.3.
52
+ *
53
+ * Skips the `BookingOptionRequest` intermediate state per spec §5.4
54
+ * STATE_DIAGRAM. Use `acceptBookingOptionViaRequest(opt)` instead and
55
+ * chain to your persistence layer's BookingOptionRequest -> Booking
56
+ * transition. If the IATA §5.4 reconciliation accepts the §5.2
57
+ * shortcut, this annotation will be relaxed.
58
+ */
38
59
  export function acceptBookingOption(opt) {
39
60
  const t = canTransition('BookingOption', 'REQUEST_PENDING', 'accept');
40
61
  if (!t)
@@ -91,4 +112,35 @@ export function revokeBookingOption(opt, _reason) {
91
112
  };
92
113
  return { ok: true, value: { ...opt, optionStatus: 'OPTION_REJECTED' } };
93
114
  }
115
+ /**
116
+ * Accept a BookingOption per spec §5.4 STATE_DIAGRAM. Returns the
117
+ * intermediate `BookingOptionRequest` resource (not directly a Booking).
118
+ *
119
+ * The carrier-side decision step (BookingOptionRequest.REQUEST_PENDING ->
120
+ * REQUEST_ACCEPTED -> Booking) is modelled separately in v0.3.0. v0.2.0
121
+ * only models the forwarder->carrier request transition.
122
+ *
123
+ * Source-state hardcode: see top-of-file comment + deviation #11.
124
+ */
125
+ export function acceptBookingOptionViaRequest(opt) {
126
+ const t = canTransition('BookingOption', 'REQUEST_PENDING', 'accept');
127
+ if (!t)
128
+ return {
129
+ ok: false,
130
+ error: {
131
+ kind: 'forbidden_state_transition',
132
+ from: 'BookingOption.REQUEST_PENDING',
133
+ to: 'accept',
134
+ path: '$',
135
+ },
136
+ };
137
+ const req = {
138
+ '@context': CARGO_CONTEXT_IRI,
139
+ '@type': 'BookingOptionRequest',
140
+ '@id': makeId('BookingOptionRequest'),
141
+ forBookingOption: opt['@id'],
142
+ requestStatus: 'REQUEST_PENDING',
143
+ };
144
+ return { ok: true, value: req };
145
+ }
94
146
  //# sourceMappingURL=transitions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transitions.js","sourceRoot":"","sources":["../../src/booking-flow/transitions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transitions.js","sourceRoot":"","sources":["../../src/booking-flow/transitions.ts"],"names":[],"mappings":"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"}
@@ -4,13 +4,8 @@ export declare const AccountNumberSchema: z.ZodObject<{
4
4
  '@context': z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>;
5
5
  '@id': z.ZodString;
6
6
  '@type': z.ZodLiteral<"AccountNumber">;
7
- accountNumber: z.ZodString;
8
- issuedBy: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<import("../../index.js").SafeIri, string>>>;
9
- accountType: z.ZodOptional<z.ZodEnum<{
10
- IATA_CASS: "IATA_CASS";
11
- INTERNAL: "INTERNAL";
12
- OTHER: "OTHER";
13
- }>>;
7
+ accountNumberType: z.ZodOptional<z.ZodString>;
8
+ textualValue: z.ZodOptional<z.ZodString>;
14
9
  }, z.core.$strict>;
15
10
  export type AccountNumber = z.infer<typeof AccountNumberSchema>;
16
11
  export type JsonLdAccountNumber = JsonLd<'AccountNumber'>;
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/classes/account-number/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAGvD,eAAO,MAAM,mBAAmB;;;;;;;;;;;kBAKrB,CAAA;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAC/D,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,eAAe,CAAC,CAAA"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/classes/account-number/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAGvD,eAAO,MAAM,mBAAmB;;;;;;kBASrB,CAAA;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAC/D,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,eAAe,CAAC,CAAA"}
@@ -1,10 +1,13 @@
1
1
  import { z } from 'zod';
2
- import { safeIri } from '../../iri/zod-safe-iri.js';
3
2
  import { LogisticsObjectSchema } from '../shared/logistics-object.js';
4
3
  export const AccountNumberSchema = LogisticsObjectSchema.extend({
5
4
  '@type': z.literal('AccountNumber'),
6
- accountNumber: z.string().max(35),
7
- issuedBy: safeIri().optional(),
8
- accountType: z.enum(['IATA_CASS', 'INTERNAL', 'OTHER']).optional(),
5
+ // :accountNumberType → :AccountType, owl:maxCardinality 1 (TTL DM 4780/4784-4785).
6
+ // String per open-codelist idiom — :AccountType is rdfs:subClassOf :CodeListElement,
7
+ // no owl:oneOf in DM or CL ontology (DM TTL 4801-4805).
8
+ accountNumberType: z.string().min(1).max(16).optional(),
9
+ // :textualValue → xsd:string, owl:maxCardinality 1 (TTL DM 4788/4791-4793). .max(35) = FWB account
10
+ // field width (editorial — the ontology has no length facet).
11
+ textualValue: z.string().min(1).max(35).optional(),
9
12
  }).strict();
10
13
  //# sourceMappingURL=schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/classes/account-number/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAEnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AAErE,MAAM,CAAC,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,MAAM,CAAC;IAC9D,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC;IACnC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;IACjC,QAAQ,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC9B,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE;CACnE,CAAC,CAAC,MAAM,EAAE,CAAA"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/classes/account-number/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AAErE,MAAM,CAAC,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,MAAM,CAAC;IAC9D,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC;IACnC,mFAAmF;IACnF,qFAAqF;IACrF,wDAAwD;IACxD,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IACvD,mGAAmG;IACnG,8DAA8D;IAC9D,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;CACnD,CAAC,CAAC,MAAM,EAAE,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { Codec } from '../shared/codec.js';
2
+ import type { CO2Emissions, JsonLdCO2Emissions } from './schema.js';
3
+ export declare const CO2EmissionsCodec: Codec<CO2Emissions, JsonLdCO2Emissions, 'CO2Emissions'>;
4
+ //# sourceMappingURL=codec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../../src/classes/co2-emissions/codec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAE/C,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAInE,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,YAAY,EAAE,kBAAkB,EAAE,cAAc,CAOzE,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { deserializeCO2Emissions } from './deserialize.js';
2
+ import { CO2EmissionsSchema } from './schema.js';
3
+ import { serializeCO2Emissions, serializeCO2EmissionsStrict } from './serialize.js';
4
+ export const CO2EmissionsCodec = Object.freeze({
5
+ schema: CO2EmissionsSchema,
6
+ serialize: serializeCO2Emissions,
7
+ serializeStrict: serializeCO2EmissionsStrict,
8
+ deserialize: deserializeCO2Emissions,
9
+ type: 'CO2Emissions',
10
+ });
11
+ //# sourceMappingURL=codec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codec.js","sourceRoot":"","sources":["../../../src/classes/co2-emissions/codec.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AAE1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAA;AAEnF,MAAM,CAAC,MAAM,iBAAiB,GAC5B,MAAM,CAAC,MAAM,CAAC;IACZ,MAAM,EAAE,kBAAkB;IAC1B,SAAS,EAAE,qBAAqB;IAChC,eAAe,EAAE,2BAA2B;IAC5C,WAAW,EAAE,uBAAuB;IACpC,IAAI,EAAE,cAAc;CACZ,CAAC,CAAA"}
@@ -0,0 +1,5 @@
1
+ import type { ParseResult } from '../../result.js';
2
+ import type { DeserializeOpts } from '../../safety/limits.js';
3
+ import type { CO2Emissions } from './schema.js';
4
+ export declare function deserializeCO2Emissions(input: unknown, opts?: DeserializeOpts): ParseResult<CO2Emissions>;
5
+ //# sourceMappingURL=deserialize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deserialize.d.ts","sourceRoot":"","sources":["../../../src/classes/co2-emissions/deserialize.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAG7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAG/C,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,OAAO,EACd,IAAI,GAAE,eAAoB,GACzB,WAAW,CAAC,YAAY,CAAC,CA2D3B"}
@@ -0,0 +1,64 @@
1
+ import { assertContextAllowed } from '../../context.js';
2
+ import { findInvalidIriInIssues } from '../../iri/zod-safe-iri.js';
3
+ import { preValidate } from '../../safety/pre-validate.js';
4
+ import { findFirstEmptyArray, nullProtoClone, withMeta } from '../shared/parse-utils.js';
5
+ import { CO2EmissionsSchema } from './schema.js';
6
+ export function deserializeCO2Emissions(input, opts = {}) {
7
+ // 1. Pre-Zod sanity (depth/nodes/string/array/payload/pollution/cycle)
8
+ const preOpts = {};
9
+ if (opts.limits !== undefined)
10
+ preOpts.limits = opts.limits;
11
+ if (opts.payloadByteLength !== undefined)
12
+ preOpts.payloadByteLength = opts.payloadByteLength;
13
+ if (opts.meta !== undefined)
14
+ preOpts.meta = opts.meta;
15
+ const pre = preValidate(input, preOpts);
16
+ if (!pre.ok)
17
+ return pre;
18
+ // 2. v2 (A3-B2, A1-M4): @context allowlist enforced before Zod
19
+ if (pre.value && typeof pre.value === 'object' && '@context' in pre.value) {
20
+ const ctxOpts = {};
21
+ if (opts.allowedContexts !== undefined)
22
+ ctxOpts.allowedContexts = opts.allowedContexts;
23
+ if (opts.meta !== undefined)
24
+ ctxOpts.meta = opts.meta;
25
+ const ctxR = assertContextAllowed(pre.value['@context'], ctxOpts);
26
+ if (!ctxR.ok)
27
+ return ctxR;
28
+ }
29
+ // 3. v3 plan correction: empty-array rejection BEFORE Zod
30
+ const empty = findFirstEmptyArray(pre.value, '$');
31
+ if (empty) {
32
+ return {
33
+ ok: false,
34
+ error: withMeta({
35
+ kind: 'cardinality_violation',
36
+ field: empty.field,
37
+ expected: '>=1 or omit',
38
+ got: 0,
39
+ path: empty.path,
40
+ }, opts.meta),
41
+ };
42
+ }
43
+ // 4. Zod parse — lift safeIri-tagged issues to invalid_iri
44
+ const r = CO2EmissionsSchema.safeParse(pre.value);
45
+ if (!r.success) {
46
+ const iriErr = findInvalidIriInIssues(r.error.issues, '$');
47
+ if (iriErr)
48
+ return { ok: false, error: withMeta(iriErr, opts.meta) };
49
+ return {
50
+ ok: false,
51
+ error: withMeta({
52
+ kind: 'zod_validation',
53
+ issues: r.error.issues.map((i) => ({
54
+ path: i.path.length === 0 ? '$' : i.path.join('.'),
55
+ message: i.message,
56
+ code: i.code,
57
+ })),
58
+ }, opts.meta),
59
+ };
60
+ }
61
+ // 5. v2 (A1-M5, A3-M4): null-prototype clone the output graph
62
+ return { ok: true, value: nullProtoClone(r.data) };
63
+ }
64
+ //# sourceMappingURL=deserialize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deserialize.js","sourceRoot":"","sources":["../../../src/classes/co2-emissions/deserialize.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export { CO2EmissionsCodec } from './codec.js';
2
+ export { deserializeCO2Emissions } from './deserialize.js';
3
+ export { CO2EmissionsSchema } from './schema.js';
4
+ export type { CO2Emissions, JsonLdCO2Emissions } from './schema.js';
5
+ export { serializeCO2Emissions, serializeCO2EmissionsStrict } from './serialize.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/classes/co2-emissions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACnE,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAA"}
@@ -0,0 +1,5 @@
1
+ export { CO2EmissionsCodec } from './codec.js';
2
+ export { deserializeCO2Emissions } from './deserialize.js';
3
+ export { CO2EmissionsSchema } from './schema.js';
4
+ export { serializeCO2Emissions, serializeCO2EmissionsStrict } from './serialize.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/classes/co2-emissions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAEhD,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAA"}
@@ -0,0 +1,18 @@
1
+ import { z } from 'zod';
2
+ import type { JsonLd } from '../shared/jsonld-brand.js';
3
+ export declare const CO2EmissionsSchema: z.ZodObject<{
4
+ '@context': z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>;
5
+ '@id': z.ZodString;
6
+ '@type': z.ZodLiteral<"CO2Emissions">;
7
+ calculatedEmissions: z.ZodOptional<z.ZodObject<{
8
+ '@type': z.ZodOptional<z.ZodLiteral<"Value">>;
9
+ numericalValue: z.ZodNumber;
10
+ unit: z.ZodString;
11
+ }, z.core.$strict>>;
12
+ calculationFor: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<import("../../index.js").SafeIri, string>>>;
13
+ methodName: z.ZodOptional<z.ZodString>;
14
+ methodVersion: z.ZodOptional<z.ZodString>;
15
+ }, z.core.$strict>;
16
+ export type CO2Emissions = z.infer<typeof CO2EmissionsSchema>;
17
+ export type JsonLdCO2Emissions = JsonLd<'CO2Emissions'>;
18
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/classes/co2-emissions/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAIvD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;kBAMpB,CAAA;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAC7D,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,cAAc,CAAC,CAAA"}
@@ -0,0 +1,12 @@
1
+ import { z } from 'zod';
2
+ import { safeIri } from '../../iri/zod-safe-iri.js';
3
+ import { LogisticsObjectSchema } from '../shared/logistics-object.js';
4
+ import { ValueSchema } from '../shared/value.js';
5
+ export const CO2EmissionsSchema = LogisticsObjectSchema.extend({
6
+ '@type': z.literal('CO2Emissions'),
7
+ calculatedEmissions: ValueSchema.optional(),
8
+ calculationFor: safeIri().optional(),
9
+ methodName: z.string().min(1).max(128).optional(),
10
+ methodVersion: z.string().min(1).max(64).optional(),
11
+ }).strict();
12
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/classes/co2-emissions/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAEnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAEhD,MAAM,CAAC,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,MAAM,CAAC;IAC7D,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;IAClC,mBAAmB,EAAE,WAAW,CAAC,QAAQ,EAAE;IAC3C,cAAc,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE;IACpC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACjD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;CACpD,CAAC,CAAC,MAAM,EAAE,CAAA"}
@@ -0,0 +1,6 @@
1
+ import type { ParseResult } from '../../result.js';
2
+ import type { SerializeOpts } from '../../safety/limits.js';
3
+ import type { CO2Emissions, JsonLdCO2Emissions } from './schema.js';
4
+ export declare function serializeCO2Emissions(input: CO2Emissions, _opts?: SerializeOpts): JsonLdCO2Emissions;
5
+ export declare function serializeCO2EmissionsStrict(input: CO2Emissions, _opts?: SerializeOpts): ParseResult<JsonLdCO2Emissions>;
6
+ //# sourceMappingURL=serialize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../../../src/classes/co2-emissions/serialize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAElD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAE3D,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAGnE,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,YAAY,EACnB,KAAK,CAAC,EAAE,aAAa,GACpB,kBAAkB,CAUpB;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,YAAY,EACnB,KAAK,CAAC,EAAE,aAAa,GACpB,WAAW,CAAC,kBAAkB,CAAC,CAgBjC"}
@@ -0,0 +1,28 @@
1
+ import { SerializationError } from '../../result.js';
2
+ import { omitEmpty } from '../shared/parse-utils.js';
3
+ import { CO2EmissionsSchema } from './schema.js';
4
+ export function serializeCO2Emissions(input, _opts) {
5
+ const r = CO2EmissionsSchema.safeParse(input);
6
+ if (!r.success) {
7
+ throw new SerializationError('invalid_application_object', 'SerializationError[invalid_application_object]: serializeCO2Emissions: invalid input', r.error.issues);
8
+ }
9
+ return omitEmpty(r.data);
10
+ }
11
+ export function serializeCO2EmissionsStrict(input, _opts) {
12
+ const r = CO2EmissionsSchema.safeParse(input);
13
+ if (!r.success) {
14
+ return {
15
+ ok: false,
16
+ error: {
17
+ kind: 'zod_validation',
18
+ issues: r.error.issues.map((i) => ({
19
+ path: i.path.length === 0 ? '$' : i.path.join('.'),
20
+ message: i.message,
21
+ code: i.code,
22
+ })),
23
+ },
24
+ };
25
+ }
26
+ return { ok: true, value: omitEmpty(r.data) };
27
+ }
28
+ //# sourceMappingURL=serialize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../../src/classes/co2-emissions/serialize.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAEpD,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAEpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAEhD,MAAM,UAAU,qBAAqB,CACnC,KAAmB,EACnB,KAAqB;IAErB,MAAM,CAAC,GAAG,kBAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IAC7C,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACf,MAAM,IAAI,kBAAkB,CAC1B,4BAA4B,EAC5B,sFAAsF,EACtF,CAAC,CAAC,KAAK,CAAC,MAAM,CACf,CAAA;IACH,CAAC;IACD,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,CAAkC,CAAA;AAC3D,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,KAAmB,EACnB,KAAqB;IAErB,MAAM,CAAC,GAAG,kBAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IAC7C,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACf,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE;gBACL,IAAI,EAAE,gBAAgB;gBACtB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACjC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;oBAClD,OAAO,EAAE,CAAC,CAAC,OAAO;oBAClB,IAAI,EAAE,CAAC,CAAC,IAAI;iBACb,CAAC,CAAC;aACJ;SACF,CAAA;IACH,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAkC,EAAE,CAAA;AAChF,CAAC"}