@tracepass/dpp-epcis 0.7.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -22,13 +22,22 @@ npm install @tracepass/dpp-epcis
22
22
  ```
23
23
 
24
24
  ```ts
25
- import { buildCommissioningEvent, validateEpcisDocument, EPCIS_JSONLD_CONTEXT } from "@tracepass/dpp-epcis";
25
+ import {
26
+ buildCommissioningEvent,
27
+ validateEpcisDocument,
28
+ EPCIS_JSONLD_CONTEXT,
29
+ partyUri,
30
+ CBV_SOURCE_DEST_TYPE_URI,
31
+ } from "@tracepass/dpp-epcis";
26
32
 
27
33
  const event = buildCommissioningEvent(
28
- new Date("2026-01-01T00:00:00Z"), // publishedAt
29
- "urn:epc:id:sgtin:0952012.345678.SN1", // product EPC
34
+ new Date("2026-01-01T00:00:00Z"), // publishedAt
35
+ "urn:epc:id:sgtin:0952012.345678.SN1", // product EPC
30
36
  "passport-1",
31
- "5012345678900", // manufacturer GLN
37
+ {
38
+ facilityGln: "5012345678900", // GS1 AI 414 — physical location
39
+ operatorGln: "5012345000000", // GS1 AI 417 — owning economic operator
40
+ },
32
41
  );
33
42
 
34
43
  const doc = {
@@ -40,10 +49,52 @@ const doc = {
40
49
  };
41
50
 
42
51
  validateEpcisDocument(doc).valid; // true
52
+
53
+ // Build a party URI (PGLN / AI 417) independently
54
+ partyUri("5012345000000");
55
+ // "https://id.gs1.org/417/5012345000000"
56
+
57
+ // CBV source/destination type URIs
58
+ CBV_SOURCE_DEST_TYPE_URI.owning_party;
59
+ // "https://ref.gs1.org/cbv/SDT-owning_party"
60
+ ```
61
+
62
+ The commissioning event carries:
63
+ - `bizLocation`: GS1 AI 414 SGLN URI for the **facility** (`facilityGln`)
64
+ - `destinationList`: GS1 AI 417 PGLN URI for the **economic operator** (`operatorGln`),
65
+ typed as `CBV_SOURCE_DEST_TYPE_URI.owning_party`
66
+
67
+ Transformation and supply-chain events follow the same pattern, using `sourceList` with
68
+ `possessing_party` for the originating operator.
69
+
70
+ ### Migration from the single-`gln` API
71
+
72
+ The fourth argument to `buildCommissioningEvent` changed from a bare `string | null`
73
+ to an object `{ facilityGln?, operatorGln? }`:
74
+
75
+ ```ts
76
+ // Before (v0.7 and earlier)
77
+ buildCommissioningEvent(date, epc, passportId, "5012345678900");
78
+
79
+ // After (v0.8+) — physical site GLN (AI 414)
80
+ buildCommissioningEvent(date, epc, passportId, { facilityGln: "5012345678900" });
81
+
82
+ // After (v0.8+) — legal-entity operator GLN only, no physical site (AI 417)
83
+ buildCommissioningEvent(date, epc, passportId, { operatorGln: "5012345000000" });
43
84
  ```
44
85
 
45
- The event carries a CBV business step (`https://ref.gs1.org/cbv/BizStep-commissioning`)
46
- and a GS1 location reference (`https://id.gs1.org/414/5012345678900`).
86
+ **Which GLN goes where:**
87
+ - `facilityGln` is for a **physical site** (factory, warehouse, specific location) — emitted
88
+ as GS1 AI 414 SGLN in `bizLocation`.
89
+ - `operatorGln` is for a **legal entity / economic operator** (the manufacturer as a company)
90
+ — emitted as GS1 AI 417 PGLN in `destinationList` / `sourceList`.
91
+
92
+ If your previous single GLN identified the manufacturer as a company rather than a specific
93
+ site, map it to `operatorGln`. If you had a site-specific GLN, map it to `facilityGln`.
94
+ Both can be provided when you have both.
95
+
96
+ `SupplyChainEventInput.gln` and `SupplierReportedEvent.gln` fields are renamed to
97
+ `facilityGln` / `operatorGln` in the same release.
47
98
 
48
99
  ## Extending CBV for steel
49
100
 
@@ -60,6 +111,9 @@ https://tracepass.eu/voc/cbv/bizstep/rolling
60
111
  Standard steps are used wherever one exists. `validateEpcisDocument` is a structural
61
112
  check — envelope, event type, event time — not a full JSON Schema validation.
62
113
 
114
+ Background: [What is EPCIS 2.0?](https://www.tracepass.eu/glossary/epcis) — the GS1
115
+ supply-chain event standard this package emits.
116
+
63
117
  ## License
64
118
 
65
119
  [Apache-2.0](../../LICENSE)
package/dist/cbv.d.ts CHANGED
@@ -24,6 +24,18 @@
24
24
  * vocabulary document (served from the marketing/voc route) in sync.
25
25
  */
26
26
  import type { ServiceEventType } from "@tracepass/dpp-types";
27
+ /**
28
+ * Standard CBV 2.0 source/destination type URIs used by TracePass events.
29
+ *
30
+ * - `owning_party` — the GLN identifies who holds legal title.
31
+ * - `possessing_party`— the GLN identifies who has physical custody.
32
+ * - `location` — the GLN identifies a physical place.
33
+ */
34
+ export declare const CBV_SOURCE_DEST_TYPE_URI: {
35
+ readonly owning_party: "https://ref.gs1.org/cbv/SDT-owning_party";
36
+ readonly possessing_party: "https://ref.gs1.org/cbv/SDT-possessing_party";
37
+ readonly location: "https://ref.gs1.org/cbv/SDT-location";
38
+ };
27
39
  /**
28
40
  * The subset of standard CBV bizSteps TracePass actually emits. Kept
29
41
  * as a typed record so a typo surfaces at compile time, not as a
package/dist/cbv.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cbv.d.ts","sourceRoot":"","sources":["../src/cbv.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAsB7D;;;;GAIG;AACH,eAAO,MAAM,eAAe;;;;;;;;;CASlB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;CAQtB,CAAC;AAEX;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;CAYxB,CAAC;AAEX;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB;mCAC+B;IAC/B,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMtD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CAqBvE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACnB,CAwCA;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAIpE"}
1
+ {"version":3,"file":"cbv.d.ts","sourceRoot":"","sources":["../src/cbv.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AA4B7D;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB;;;;CAI3B,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,eAAe;;;;;;;;;CASlB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;CAQtB,CAAC;AAEX;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;CAYxB,CAAC;AAEX;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB;mCAC+B;IAC/B,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMtD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CAqBvE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACnB,CAwCA;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAIpE"}
package/dist/cbv.js CHANGED
@@ -40,6 +40,23 @@ const CBV_DISP = "https://ref.gs1.org/cbv/Disp-";
40
40
  * `<TRACEPASS_VOC_BASE>cbv/bizstep` describes each term.
41
41
  */
42
42
  const TP_BIZSTEP = `${TRACEPASS_VOC_BASE}cbv/bizstep/`;
43
+ /**
44
+ * Standard CBV 2.0 source/destination type URI prefix.
45
+ * Used in `sourceList` and `destinationList` entries to name the party type.
46
+ */
47
+ const CBV_SDT = "https://ref.gs1.org/cbv/SDT-";
48
+ /**
49
+ * Standard CBV 2.0 source/destination type URIs used by TracePass events.
50
+ *
51
+ * - `owning_party` — the GLN identifies who holds legal title.
52
+ * - `possessing_party`— the GLN identifies who has physical custody.
53
+ * - `location` — the GLN identifies a physical place.
54
+ */
55
+ export const CBV_SOURCE_DEST_TYPE_URI = {
56
+ owning_party: `${CBV_SDT}owning_party`,
57
+ possessing_party: `${CBV_SDT}possessing_party`,
58
+ location: `${CBV_SDT}location`,
59
+ };
43
60
  /**
44
61
  * The subset of standard CBV bizSteps TracePass actually emits. Kept
45
62
  * as a typed record so a typo surfaces at compile time, not as a
package/dist/cbv.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cbv.js","sourceRoot":"","sources":["../src/cbv.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cbv.js","sourceRoot":"","sources":["../src/cbv.ts"],"names":[],"mappings":"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"}
@@ -30,6 +30,11 @@ import type { ServiceEvent, OwnershipTransfer } from "@tracepass/dpp-types";
30
30
  * `{eventType, timestamp, location, country, operator, epcisEventId}`.
31
31
  * Every field is optional in practice — supplier-provided data is
32
32
  * uneven — so the builder must tolerate partial entries.
33
+ *
34
+ * **Migration note (v0.9.0 BREAKING):** `gln` has been split into two fields.
35
+ * Replace `gln` with `facilityGln` (AI 414, readPoint/bizLocation) and add
36
+ * `operatorGln` (AI 417, sourceList possessing_party) if the event should
37
+ * also name the economic operator.
33
38
  */
34
39
  export interface SupplyChainEventInput {
35
40
  eventType?: string;
@@ -40,8 +45,10 @@ export interface SupplyChainEventInput {
40
45
  /** A pre-existing EPCIS event id, if the source system already had
41
46
  * one. When present we reuse it instead of minting our own. */
42
47
  epcisEventId?: string;
43
- /** GLN of the operating site, when the source provided one. */
44
- gln?: string;
48
+ /** GLN of the physical facility — emitted as AI 414 readPoint/bizLocation. */
49
+ facilityGln?: string;
50
+ /** GLN of the economic operator — emitted as AI 417 party in sourceList. */
51
+ operatorGln?: string;
45
52
  }
46
53
  /**
47
54
  * Convert an ISO-ish timestamp string (or Date) to an EPCIS
@@ -89,21 +96,38 @@ export declare function buildOwnershipObjectEvent(transfer: Pick<OwnershipTransf
89
96
  * gets exactly one; it anchors the event timeline even when the
90
97
  * passport has no supply-chain or service events at all.
91
98
  *
99
+ * **Migration note (v0.9.0 BREAKING):** the fourth argument has changed from
100
+ * `manufacturerGln?: string | null` to `glns?: { facilityGln?, operatorGln? }`.
101
+ * Replace `buildCommissioningEvent(at, epc, id, gln)` with
102
+ * `buildCommissioningEvent(at, epc, id, { facilityGln: gln })`.
103
+ * If the manufacturer's operator GLN (AI 417) should also appear in
104
+ * `destinationList`, pass `operatorGln` in addition.
105
+ *
92
106
  * Returns null when there is no publish timestamp (an unpublished
93
107
  * passport shouldn't be EPCIS-exported in the first place).
94
108
  */
95
- export declare function buildCommissioningEvent(publishedAt: Date | string | undefined | null, productEpc: string, passportId: string, manufacturerGln?: string | null): Record<string, unknown> | null;
109
+ export declare function buildCommissioningEvent(publishedAt: Date | string | undefined | null, productEpc: string, passportId: string, glns?: {
110
+ facilityGln?: string | null;
111
+ operatorGln?: string | null;
112
+ } | null): Record<string, unknown> | null;
96
113
  /**
97
114
  * One supply-chain event a supplier reports through the portal — the
98
115
  * plain shape collected from the supplier-facing form (mirrors the
99
116
  * Zod `supplierSupplyChainEventSchema`).
117
+ *
118
+ * **Migration note (v0.9.0 BREAKING):** `gln` has been split.
119
+ * Replace `gln` with `facilityGln` (AI 414, readPoint/bizLocation) and
120
+ * optionally add `operatorGln` (AI 417, sourceList possessing_party).
100
121
  */
101
122
  export interface SupplierReportedEvent {
102
123
  eventType: string;
103
124
  timestamp: string;
104
125
  location?: string;
105
126
  country?: string;
106
- gln?: string;
127
+ /** GLN of the physical facility — emitted as AI 414 readPoint/bizLocation. */
128
+ facilityGln?: string;
129
+ /** GLN of the economic operator — emitted as AI 417 party in sourceList. */
130
+ operatorGln?: string;
107
131
  }
108
132
  /**
109
133
  * Build an EPCIS ObjectEvent from a supplier-reported supply-chain
@@ -1 +1 @@
1
- {"version":3,"file":"event-builders.d.ts","sourceRoot":"","sources":["../src/event-builders.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAY5E;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;oEACgE;IAChE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAKlF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,qBAAqB,EAC5B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CA+BhC;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,IAAI,CACX,YAAY,EACZ,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,aAAa,GAAG,aAAa,GAAG,WAAW,GAAG,aAAa,CACvF,EACD,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAuBhC;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,IAAI,CACZ,iBAAiB,EACjB,KAAK,GAAG,QAAQ,GAAG,eAAe,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,CACpF,EACD,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CA2BhC;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,EAC7C,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,GAC9B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAkBhC;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,qBAAqB,EAC7B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CA4BhC"}
1
+ {"version":3,"file":"event-builders.d.ts","sourceRoot":"","sources":["../src/event-builders.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAa5E;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;oEACgE;IAChE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAKlF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,qBAAqB,EAC5B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAsChC;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,IAAI,CACX,YAAY,EACZ,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,aAAa,GAAG,aAAa,GAAG,WAAW,GAAG,aAAa,CACvF,EACD,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAuBhC;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,IAAI,CACZ,iBAAiB,EACjB,KAAK,GAAG,QAAQ,GAAG,eAAe,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,CACpF,EACD,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CA2BhC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,EAC7C,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,GACzE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CA0BhC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,qBAAqB,EAC7B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAmChC"}
@@ -23,8 +23,8 @@
23
23
  *
24
24
  * Unit-tested in tests/epcis/event-builders.test.ts.
25
25
  */
26
- import { mapEventTypeToBizStep, mapServiceEventType, mapOwnershipReasonDisposition, CBV_BIZSTEP_URI, } from "./cbv.js";
27
- import { locationRef, buildEventId } from "./identifiers.js";
26
+ import { mapEventTypeToBizStep, mapServiceEventType, mapOwnershipReasonDisposition, CBV_BIZSTEP_URI, CBV_SOURCE_DEST_TYPE_URI, } from "./cbv.js";
27
+ import { locationRef, buildEventId, partyUri } from "./identifiers.js";
28
28
  /** EPCIS `eventTimeZoneOffset` for our UTC-stored timestamps. */
29
29
  const UTC_OFFSET = "+00:00";
30
30
  /**
@@ -65,10 +65,16 @@ export function buildTransformationEvent(entry, productEpc, passportId, index) {
65
65
  outputEPCList: [productEpc],
66
66
  bizStep,
67
67
  };
68
- const where = locationRef(entry.gln);
68
+ const where = locationRef(entry.facilityGln);
69
69
  if (where) {
70
70
  event.bizLocation = where;
71
71
  }
72
+ // If the economic operator's GLN is known, emit it as AI 417 in sourceList
73
+ // (CBV possessing_party — the operator possesses the production facility).
74
+ const opUri = partyUri(entry.operatorGln);
75
+ if (opUri) {
76
+ event.sourceList = [{ type: CBV_SOURCE_DEST_TYPE_URI.possessing_party, source: opUri }];
77
+ }
72
78
  // Preserve human-readable provenance that has no native EPCIS slot
73
79
  // under the tracepass: namespace — a strict consumer ignores it,
74
80
  // a TracePass-aware one keeps the operator/country/site label.
@@ -160,10 +166,17 @@ export function buildOwnershipObjectEvent(transfer, productEpc, passportId) {
160
166
  * gets exactly one; it anchors the event timeline even when the
161
167
  * passport has no supply-chain or service events at all.
162
168
  *
169
+ * **Migration note (v0.9.0 BREAKING):** the fourth argument has changed from
170
+ * `manufacturerGln?: string | null` to `glns?: { facilityGln?, operatorGln? }`.
171
+ * Replace `buildCommissioningEvent(at, epc, id, gln)` with
172
+ * `buildCommissioningEvent(at, epc, id, { facilityGln: gln })`.
173
+ * If the manufacturer's operator GLN (AI 417) should also appear in
174
+ * `destinationList`, pass `operatorGln` in addition.
175
+ *
163
176
  * Returns null when there is no publish timestamp (an unpublished
164
177
  * passport shouldn't be EPCIS-exported in the first place).
165
178
  */
166
- export function buildCommissioningEvent(publishedAt, productEpc, passportId, manufacturerGln) {
179
+ export function buildCommissioningEvent(publishedAt, productEpc, passportId, glns) {
167
180
  const eventTime = toEventTime(publishedAt);
168
181
  if (!eventTime)
169
182
  return null;
@@ -176,9 +189,16 @@ export function buildCommissioningEvent(publishedAt, productEpc, passportId, man
176
189
  action: "ADD",
177
190
  bizStep: CBV_BIZSTEP_URI.commissioning,
178
191
  };
179
- const where = locationRef(manufacturerGln);
192
+ const where = locationRef(glns?.facilityGln);
180
193
  if (where)
181
194
  event.bizLocation = where;
195
+ // If the economic operator's GLN (AI 417) is supplied, name them as the
196
+ // owning party in destinationList — the manufacturer becomes the initial
197
+ // owner when the passport is commissioned.
198
+ const opUri = partyUri(glns?.operatorGln);
199
+ if (opUri) {
200
+ event.destinationList = [{ type: CBV_SOURCE_DEST_TYPE_URI.owning_party, destination: opUri }];
201
+ }
182
202
  return event;
183
203
  }
184
204
  /**
@@ -212,9 +232,15 @@ export function buildSupplierObjectEvent(report, productEpc, passportId, index)
212
232
  action: "OBSERVE",
213
233
  bizStep,
214
234
  };
215
- const where = locationRef(report.gln);
235
+ const where = locationRef(report.facilityGln);
216
236
  if (where)
217
237
  event.bizLocation = where;
238
+ // If the economic operator's GLN is known, emit it as AI 417 in sourceList
239
+ // (CBV possessing_party — the supplier possesses the item being reported).
240
+ const opUri = partyUri(report.operatorGln);
241
+ if (opUri) {
242
+ event.sourceList = [{ type: CBV_SOURCE_DEST_TYPE_URI.possessing_party, source: opUri }];
243
+ }
218
244
  // Human-readable provenance the supplier gave — no native EPCIS
219
245
  // slot, kept under the tracepass: namespace (a strict consumer
220
246
  // ignores it, a TracePass-aware one keeps the supplier's labels).
@@ -1 +1 @@
1
- {"version":3,"file":"event-builders.js","sourceRoot":"","sources":["../src/event-builders.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"event-builders.js","sourceRoot":"","sources":["../src/event-builders.ts"],"names":[],"mappings":"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"}
@@ -47,6 +47,18 @@ export declare function locationUri(gln: string | undefined | null): string | nu
47
47
  export declare function locationRef(gln: string | undefined | null): {
48
48
  id: string;
49
49
  } | null;
50
+ /**
51
+ * Build a GS1 PGLN URI for an economic operator's GLN using AI 417.
52
+ *
53
+ * AI 414 identifies a physical location; AI 417 identifies the party
54
+ * that owns or operates it. Use this alongside {@link locationUri} when
55
+ * the event needs to name the operator separately from the physical site —
56
+ * e.g. in a `sourceList` / `destinationList` entry.
57
+ *
58
+ * Returns null when the GLN is absent or fails the mod-10 check — an
59
+ * invalid GLN must not produce a malformed party URI.
60
+ */
61
+ export declare function partyUri(gln: string | undefined | null): string | null;
50
62
  /**
51
63
  * Build an EPCIS `eventID` URI for one of our exported events. EPCIS
52
64
  * 2.0 events carry an optional stable `eventID`; making it stable and
@@ -1 +1 @@
1
- {"version":3,"file":"identifiers.d.ts","sourceRoot":"","sources":["../src/identifiers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAeH;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAKpF;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAIzE;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAC7B;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAGvB;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC1B,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACpB,MAAM,CAGR"}
1
+ {"version":3,"file":"identifiers.d.ts","sourceRoot":"","sources":["../src/identifiers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAkBH;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAKpF;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAIzE;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAC7B;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAGvB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAItE;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC1B,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACpB,MAAM,CAGR"}
@@ -27,8 +27,10 @@ import { validateGln } from "@tracepass/gs1-utils";
27
27
  * location should reach GS1's canonical resolver, not ours.
28
28
  */
29
29
  const GS1_CANONICAL_HOST = "https://id.gs1.org";
30
- /** GS1 Application Identifier for a location / party (GLN). */
30
+ /** GS1 Application Identifier for a physical location (SGLN). */
31
31
  const AI_LOCATION = "414";
32
+ /** GS1 Application Identifier for an economic operator / party (PGLN). */
33
+ const AI_PARTY = "417";
32
34
  /**
33
35
  * Build the EPC URI ("what") for a passport. We use the passport's
34
36
  * already-minted Digital Link URI verbatim — it is the stable object
@@ -69,6 +71,24 @@ export function locationRef(gln) {
69
71
  const uri = locationUri(gln);
70
72
  return uri ? { id: uri } : null;
71
73
  }
74
+ /**
75
+ * Build a GS1 PGLN URI for an economic operator's GLN using AI 417.
76
+ *
77
+ * AI 414 identifies a physical location; AI 417 identifies the party
78
+ * that owns or operates it. Use this alongside {@link locationUri} when
79
+ * the event needs to name the operator separately from the physical site —
80
+ * e.g. in a `sourceList` / `destinationList` entry.
81
+ *
82
+ * Returns null when the GLN is absent or fails the mod-10 check — an
83
+ * invalid GLN must not produce a malformed party URI.
84
+ */
85
+ export function partyUri(gln) {
86
+ if (typeof gln !== "string")
87
+ return null;
88
+ if (!validateGln(gln))
89
+ return null;
90
+ return `${GS1_CANONICAL_HOST}/${AI_PARTY}/${gln}`;
91
+ }
72
92
  /**
73
93
  * Build an EPCIS `eventID` URI for one of our exported events. EPCIS
74
94
  * 2.0 events carry an optional stable `eventID`; making it stable and
@@ -1 +1 @@
1
- {"version":3,"file":"identifiers.js","sourceRoot":"","sources":["../src/identifiers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,kBAAkB,GAAG,oBAAoB,CAAC;AAEhD,+DAA+D;AAC/D,MAAM,WAAW,GAAG,KAAK,CAAC;AAE1B;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CAAC,cAAyC;IACnE,IAAI,OAAO,cAAc,KAAK,QAAQ,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CAAC,GAA8B;IACxD,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACzC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,OAAO,GAAG,kBAAkB,IAAI,WAAW,IAAI,GAAG,EAAE,CAAC;AACvD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CACzB,GAA8B;IAE9B,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAC7B,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAClC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAC1B,UAAkB,EAClB,aAAqB;IAErB,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;IAC5D,OAAO,uBAAuB,UAAU,IAAI,IAAI,EAAE,CAAC;AACrD,CAAC"}
1
+ {"version":3,"file":"identifiers.js","sourceRoot":"","sources":["../src/identifiers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,kBAAkB,GAAG,oBAAoB,CAAC;AAEhD,iEAAiE;AACjE,MAAM,WAAW,GAAG,KAAK,CAAC;AAE1B,0EAA0E;AAC1E,MAAM,QAAQ,GAAG,KAAK,CAAC;AAEvB;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CAAC,cAAyC;IACnE,IAAI,OAAO,cAAc,KAAK,QAAQ,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CAAC,GAA8B;IACxD,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACzC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,OAAO,GAAG,kBAAkB,IAAI,WAAW,IAAI,GAAG,EAAE,CAAC;AACvD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CACzB,GAA8B;IAE9B,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAC7B,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAClC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,QAAQ,CAAC,GAA8B;IACrD,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACzC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,OAAO,GAAG,kBAAkB,IAAI,QAAQ,IAAI,GAAG,EAAE,CAAC;AACpD,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAC1B,UAAkB,EAClB,aAAqB;IAErB,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;IAC5D,OAAO,uBAAuB,UAAU,IAAI,IAAI,EAAE,CAAC;AACrD,CAAC"}
package/dist/index.d.ts CHANGED
@@ -8,10 +8,10 @@
8
8
  */
9
9
  export { toEventTime, buildTransformationEvent, buildServiceObjectEvent, buildOwnershipObjectEvent, buildCommissioningEvent, buildSupplierObjectEvent, } from "./event-builders.js";
10
10
  export type { SupplyChainEventInput, SupplierReportedEvent, } from "./event-builders.js";
11
- export { CBV_BIZSTEP_URI, CBV_DISPOSITION_URI, TRACEPASS_BIZSTEP_URI, normalizeStepToken, mapEventTypeToBizStep, mapServiceEventType, mapOwnershipReasonDisposition, } from "./cbv.js";
11
+ export { CBV_BIZSTEP_URI, CBV_DISPOSITION_URI, CBV_SOURCE_DEST_TYPE_URI, TRACEPASS_BIZSTEP_URI, normalizeStepToken, mapEventTypeToBizStep, mapServiceEventType, mapOwnershipReasonDisposition, } from "./cbv.js";
12
12
  export type { BizStepMapping } from "./cbv.js";
13
13
  export { validateEpcisDocument } from "./validate.js";
14
14
  export type { EpcisValidationIssue, EpcisValidationResult, } from "./validate.js";
15
- export { passportEpc, locationUri, locationRef, buildEventId } from "./identifiers.js";
15
+ export { passportEpc, locationUri, locationRef, partyUri, buildEventId } from "./identifiers.js";
16
16
  export { EPCIS_CONTEXT_URL, TRACEPASS_VOC_BASE, EPCIS_JSONLD_CONTEXT, } from "./context.js";
17
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,WAAW,EACX,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,6BAA6B,GAC9B,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,YAAY,EACV,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEvF,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,WAAW,EACX,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,wBAAwB,EACxB,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,6BAA6B,GAC9B,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,YAAY,EACV,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEjG,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,cAAc,CAAC"}
package/dist/index.js CHANGED
@@ -7,8 +7,8 @@
7
7
  * GS1-sanctioned extension pattern.
8
8
  */
9
9
  export { toEventTime, buildTransformationEvent, buildServiceObjectEvent, buildOwnershipObjectEvent, buildCommissioningEvent, buildSupplierObjectEvent, } from "./event-builders.js";
10
- export { CBV_BIZSTEP_URI, CBV_DISPOSITION_URI, TRACEPASS_BIZSTEP_URI, normalizeStepToken, mapEventTypeToBizStep, mapServiceEventType, mapOwnershipReasonDisposition, } from "./cbv.js";
10
+ export { CBV_BIZSTEP_URI, CBV_DISPOSITION_URI, CBV_SOURCE_DEST_TYPE_URI, TRACEPASS_BIZSTEP_URI, normalizeStepToken, mapEventTypeToBizStep, mapServiceEventType, mapOwnershipReasonDisposition, } from "./cbv.js";
11
11
  export { validateEpcisDocument } from "./validate.js";
12
- export { passportEpc, locationUri, locationRef, buildEventId } from "./identifiers.js";
12
+ export { passportEpc, locationUri, locationRef, partyUri, buildEventId } from "./identifiers.js";
13
13
  export { EPCIS_CONTEXT_URL, TRACEPASS_VOC_BASE, EPCIS_JSONLD_CONTEXT, } from "./context.js";
14
14
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,WAAW,EACX,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,qBAAqB,CAAC;AAM7B,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,6BAA6B,GAC9B,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAMtD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEvF,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,WAAW,EACX,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,qBAAqB,CAAC;AAM7B,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,wBAAwB,EACxB,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,6BAA6B,GAC9B,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAMtD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEjG,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,cAAc,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tracepass/dpp-epcis",
3
- "version": "0.7.0",
3
+ "version": "0.9.0",
4
4
  "description": "Map Digital Product Passport data to GS1 EPCIS 2.0 events, with a CBV 2.0 vocabulary extended for steel production steps. Pure functions, no third-party runtime dependencies.",
5
5
  "keywords": [
6
6
  "epcis",
@@ -45,8 +45,8 @@
45
45
  "clean": "rm -rf dist"
46
46
  },
47
47
  "dependencies": {
48
- "@tracepass/dpp-types": "^0.7.0",
49
- "@tracepass/gs1-utils": "^0.7.0"
48
+ "@tracepass/dpp-types": "^0.9.0",
49
+ "@tracepass/gs1-utils": "^0.9.0"
50
50
  },
51
51
  "devDependencies": {
52
52
  "typescript": "^5.6.3"