@tracepass/dpp-epcis 0.8.0 → 0.9.1
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 +60 -6
- package/dist/cbv.d.ts +12 -0
- package/dist/cbv.d.ts.map +1 -1
- package/dist/cbv.js +17 -0
- package/dist/cbv.js.map +1 -1
- package/dist/event-builders.d.ts +28 -4
- package/dist/event-builders.d.ts.map +1 -1
- package/dist/event-builders.js +32 -6
- package/dist/event-builders.js.map +1 -1
- package/dist/identifiers.d.ts +12 -0
- package/dist/identifiers.d.ts.map +1 -1
- package/dist/identifiers.js +21 -1
- package/dist/identifiers.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -22,13 +22,22 @@ npm install @tracepass/dpp-epcis
|
|
|
22
22
|
```
|
|
23
23
|
|
|
24
24
|
```ts
|
|
25
|
-
import {
|
|
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"),
|
|
29
|
-
"urn:epc:id:sgtin:0952012.345678.SN1",
|
|
34
|
+
new Date("2026-01-01T00:00:00Z"), // publishedAt
|
|
35
|
+
"urn:epc:id:sgtin:0952012.345678.SN1", // product EPC
|
|
30
36
|
"passport-1",
|
|
31
|
-
|
|
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
|
-
|
|
46
|
-
|
|
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;
|
|
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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"}
|
package/dist/event-builders.d.ts
CHANGED
|
@@ -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
|
|
44
|
-
|
|
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,
|
|
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
|
-
|
|
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;
|
|
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"}
|
package/dist/event-builders.js
CHANGED
|
@@ -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.
|
|
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,
|
|
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(
|
|
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.
|
|
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":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAGH,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,6BAA6B,EAC7B,eAAe,
|
|
1
|
+
{"version":3,"file":"event-builders.js","sourceRoot":"","sources":["../src/event-builders.ts"],"names":[],"mappings":"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"}
|
package/dist/identifiers.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/identifiers.js
CHANGED
|
@@ -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
|
|
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
|
package/dist/identifiers.js.map
CHANGED
|
@@ -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
|
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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;
|
|
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;
|
|
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.
|
|
3
|
+
"version": "0.9.1",
|
|
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.
|
|
49
|
-
"@tracepass/gs1-utils": "^0.
|
|
48
|
+
"@tracepass/dpp-types": "^0.9.1",
|
|
49
|
+
"@tracepass/gs1-utils": "^0.9.1"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"typescript": "^5.6.3"
|