@tracepass/dpp-validate 0.13.1 → 0.14.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/dist/vendor/battery-applicability.d.ts +39 -6
- package/dist/vendor/battery-applicability.d.ts.map +1 -1
- package/dist/vendor/battery-applicability.js +132 -9
- package/dist/vendor/battery-applicability.js.map +1 -1
- package/dist/vendor/publish-gate.d.ts.map +1 -1
- package/dist/vendor/publish-gate.js +10 -3
- package/dist/vendor/publish-gate.js.map +1 -1
- package/package.json +3 -3
|
@@ -40,23 +40,44 @@ export type Applicability = "applies" | "not_applicable" | "unknown";
|
|
|
40
40
|
* importing it from here; the passport-level scope gate is rules.ts BAT-1. */
|
|
41
41
|
export { IN_SCOPE_BATTERY_CATEGORIES };
|
|
42
42
|
export interface FieldGate {
|
|
43
|
-
/**
|
|
43
|
+
/** Template field keys this gate governs. */
|
|
44
44
|
keys: string[];
|
|
45
|
-
/**
|
|
45
|
+
/** Regulation article / annex point reference, for the verdict citation. */
|
|
46
46
|
article: string;
|
|
47
47
|
/** One-line reason, surfaced in the verdict + editor tooltip. */
|
|
48
48
|
reason: string;
|
|
49
49
|
/** Extra remediation, for gates that turn on the stationary-storage flag. */
|
|
50
50
|
fixHint?: string;
|
|
51
|
+
/**
|
|
52
|
+
* ISO-8601 date from which the underlying provision is mandatory.
|
|
53
|
+
* Before this date `categoryFieldApplicability` returns "unknown" for fields
|
|
54
|
+
* governed by this gate, so they produce a warning but never a hard block.
|
|
55
|
+
* After this date the gate's `decide()` result is used as-is.
|
|
56
|
+
*/
|
|
57
|
+
mandatoryFrom?: string;
|
|
51
58
|
/** Decide applicability from the resolved trigger values. */
|
|
52
59
|
decide(t: Triggers): Applicability;
|
|
53
60
|
}
|
|
54
61
|
interface Triggers {
|
|
62
|
+
/** Sub-category value read from the passport (batteryCategory / detergentUserType / …). */
|
|
55
63
|
category: string | undefined;
|
|
56
64
|
hasBMS: boolean | undefined;
|
|
57
65
|
rechargeable: boolean | undefined;
|
|
58
66
|
externalStorageOnly: boolean | undefined;
|
|
59
67
|
isStationaryBess: boolean | undefined;
|
|
68
|
+
microorganismsAdded?: boolean | undefined;
|
|
69
|
+
sdsProvided?: boolean | undefined;
|
|
70
|
+
containsAllergenicFragrances?: boolean | undefined;
|
|
71
|
+
alsoUnderOtherActs?: boolean | undefined;
|
|
72
|
+
/**
|
|
73
|
+
* Field-derived tri-state: resolves whether a named passport field has an
|
|
74
|
+
* approved, non-empty value.
|
|
75
|
+
* true — field present + approved
|
|
76
|
+
* undefined — field present but pending_review (unknown → no hard block)
|
|
77
|
+
* false — field absent or empty
|
|
78
|
+
* Optional for backward compat; absent ≡ false (field not present).
|
|
79
|
+
*/
|
|
80
|
+
fieldPresent?(key: string): boolean | undefined;
|
|
60
81
|
}
|
|
61
82
|
/**
|
|
62
83
|
* The conditional gates, one per applicability rule from the deck. Order
|
|
@@ -83,12 +104,17 @@ export declare function fieldApplicability(passport: Passport, key: string): App
|
|
|
83
104
|
export declare function batteryFieldApplicability(passport: Passport, category: string): Record<string, Applicability>;
|
|
84
105
|
/** Look up the gate metadata (article + reason) for a gated field key. */
|
|
85
106
|
export declare function gateForKey(key: string): FieldGate | undefined;
|
|
107
|
+
/**
|
|
108
|
+
* Date strings from which each category's passport obligations become mandatory.
|
|
109
|
+
* Before these dates, any gate that carries `mandatoryFrom` returns "unknown"
|
|
110
|
+
* (warning, no hard block). After, the gate's `decide()` result is used as-is.
|
|
111
|
+
*/
|
|
112
|
+
export declare const DETERGENTS_PASSPORT_MANDATORY_FROM = "2029-09-23";
|
|
113
|
+
export declare const TOYS_PASSPORT_MANDATORY_FROM = "2030-08-01";
|
|
86
114
|
/**
|
|
87
115
|
* CATEGORY_FIELD_GATES — generalised gate registry, keyed by template category.
|
|
88
116
|
*
|
|
89
|
-
* Phase 1: battery only.
|
|
90
|
-
* rules are encoded. Battery gates are unchanged from BATTERY_FIELD_GATES; the
|
|
91
|
-
* two names refer to the same array.
|
|
117
|
+
* Phase 1: battery only. Phase 2: detergents and toys added.
|
|
92
118
|
*
|
|
93
119
|
* Callers that need to enumerate gates for a category use this registry.
|
|
94
120
|
* The battery-specific `batteryFieldApplicability` is now a thin wrapper.
|
|
@@ -102,6 +128,13 @@ export declare const CATEGORY_FIELD_GATES: Record<string, FieldGate[]>;
|
|
|
102
128
|
* generic path: every category that has gates in CATEGORY_FIELD_GATES is handled,
|
|
103
129
|
* everything else is a no-op. `batteryFieldApplicability` is kept as a
|
|
104
130
|
* backward-compat alias.
|
|
131
|
+
*
|
|
132
|
+
* @param now Optional reference date for `mandatoryFrom` enforcement. Defaults
|
|
133
|
+
* to the current wall clock. Callers should pass a fixed date in tests.
|
|
134
|
+
* When a gate's `mandatoryFrom` is in the future relative to `now`,
|
|
135
|
+
* ALL keys governed by that gate resolve to "unknown" (warning only,
|
|
136
|
+
* never a hard publish block) — keeping the provision from creating
|
|
137
|
+
* obligations before it legally applies.
|
|
105
138
|
*/
|
|
106
|
-
export declare function categoryFieldApplicability(passport: Passport, category: string): Record<string, Applicability>;
|
|
139
|
+
export declare function categoryFieldApplicability(passport: Passport, category: string, now?: Date): Record<string, Applicability>;
|
|
107
140
|
//# sourceMappingURL=battery-applicability.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"battery-applicability.d.ts","sourceRoot":"","sources":["../../src/vendor/battery-applicability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"battery-applicability.d.ts","sourceRoot":"","sources":["../../src/vendor/battery-applicability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAGjE,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,gBAAgB,GAAG,SAAS,CAAC;AAErE;;+EAE+E;AAC/E,OAAO,EAAE,2BAA2B,EAAE,CAAC;AAUvC,MAAM,WAAW,SAAS;IACxB,6CAA6C;IAC7C,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,4EAA4E;IAC5E,OAAO,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,MAAM,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6DAA6D;IAC7D,MAAM,CAAC,CAAC,EAAE,QAAQ,GAAG,aAAa,CAAC;CACpC;AAED,UAAU,QAAQ;IAChB,2FAA2F;IAC3F,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAE7B,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,YAAY,EAAE,OAAO,GAAG,SAAS,CAAC;IAClC,mBAAmB,EAAE,OAAO,GAAG,SAAS,CAAC;IACzC,gBAAgB,EAAE,OAAO,GAAG,SAAS,CAAC;IAGtC,mBAAmB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1C,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAElC,4BAA4B,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACnD,kBAAkB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACzC;;;;;;;OAOG;IACH,YAAY,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;CACjD;AAyFD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,EA2L1C,CAAC;AAQF,4DAA4D;AAC5D,eAAO,MAAM,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAA+B,CAAC;AAEjF;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,CAIjF;AAED;;;;;;;;GAQG;AACH,sFAAsF;AACtF,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,GACf,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAE/B;AAED,0EAA0E;AAC1E,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAE7D;AAED;;;;GAIG;AACH,eAAO,MAAM,kCAAkC,eAAe,CAAC;AAC/D,eAAO,MAAM,4BAA4B,eAAe,CAAC;AAqFzD;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAI5D,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,EAChB,GAAG,CAAC,EAAE,IAAI,GACT,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAiB/B"}
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
*/
|
|
35
35
|
import { resolveConditionProfile } from "./condition-profile.js";
|
|
36
36
|
import { IN_SCOPE_BATTERY_CATEGORIES } from "./battery-scope.js";
|
|
37
|
+
import { SUBCATEGORY_FIELD } from "./subcategory.js";
|
|
37
38
|
/** Battery categories that are *in scope* for a battery passport at all.
|
|
38
39
|
* Re-exported from the shared definition so this module's consumers keep
|
|
39
40
|
* importing it from here; the passport-level scope gate is rules.ts BAT-1. */
|
|
@@ -58,17 +59,36 @@ function confirmed(flag) {
|
|
|
58
59
|
return undefined;
|
|
59
60
|
return flag.status === "approved" ? flag.value : undefined;
|
|
60
61
|
}
|
|
61
|
-
function readTriggers(passport) {
|
|
62
|
-
|
|
62
|
+
function readTriggers(passport, templateCategory = "battery") {
|
|
63
|
+
// Sub-category field key (batteryCategory / detergentUserType / …) from the
|
|
64
|
+
// SUBCATEGORY_FIELD map. Falls back to undefined for categories with no map entry (e.g. toys).
|
|
65
|
+
const subcatFieldKey = SUBCATEGORY_FIELD[templateCategory];
|
|
66
|
+
const catField = subcatFieldKey ? passport.fields[subcatFieldKey] : undefined;
|
|
63
67
|
// Use the canonical accessor so conditionProfile (new) and batteryProfile
|
|
64
68
|
// (legacy) both work through the same path.
|
|
65
69
|
const profile = resolveConditionProfile(passport);
|
|
66
70
|
return {
|
|
67
|
-
category:
|
|
71
|
+
category: catField && catField.value != null && catField.value !== ""
|
|
72
|
+
? String(catField.value)
|
|
73
|
+
: undefined,
|
|
74
|
+
// Battery flags
|
|
68
75
|
hasBMS: confirmed(profile["hasBMS"]),
|
|
69
76
|
rechargeable: confirmed(profile["rechargeable"]),
|
|
70
77
|
externalStorageOnly: confirmed(profile["externalStorageOnly"]),
|
|
71
78
|
isStationaryBess: confirmed(profile["isStationaryBess"]),
|
|
79
|
+
// Detergents flags (phase 2)
|
|
80
|
+
microorganismsAdded: confirmed(profile["microorganismsAdded"]),
|
|
81
|
+
sdsProvided: confirmed(profile["sdsProvided"]),
|
|
82
|
+
// Toys flags (phase 2)
|
|
83
|
+
containsAllergenicFragrances: confirmed(profile["containsAllergenicFragrances"]),
|
|
84
|
+
alsoUnderOtherActs: confirmed(profile["alsoUnderOtherActs"]),
|
|
85
|
+
// Field-derived tri-state: approved non-empty → true; pending_review → undefined; absent → false
|
|
86
|
+
fieldPresent: (key) => {
|
|
87
|
+
const f = passport.fields[key];
|
|
88
|
+
if (!f || f.value == null || f.value === "")
|
|
89
|
+
return false;
|
|
90
|
+
return f.status === "approved" ? true : undefined;
|
|
91
|
+
},
|
|
72
92
|
};
|
|
73
93
|
}
|
|
74
94
|
/**
|
|
@@ -333,7 +353,7 @@ export function fieldApplicability(passport, key) {
|
|
|
333
353
|
const gate = KEY_TO_GATE.get(key);
|
|
334
354
|
if (!gate)
|
|
335
355
|
return "applies";
|
|
336
|
-
return gate.decide(readTriggers(passport));
|
|
356
|
+
return gate.decide(readTriggers(passport, "battery"));
|
|
337
357
|
}
|
|
338
358
|
/**
|
|
339
359
|
* Full map for the gated fields only (callers default everything else to
|
|
@@ -352,18 +372,106 @@ export function batteryFieldApplicability(passport, category) {
|
|
|
352
372
|
export function gateForKey(key) {
|
|
353
373
|
return KEY_TO_GATE.get(key);
|
|
354
374
|
}
|
|
375
|
+
/**
|
|
376
|
+
* Date strings from which each category's passport obligations become mandatory.
|
|
377
|
+
* Before these dates, any gate that carries `mandatoryFrom` returns "unknown"
|
|
378
|
+
* (warning, no hard block). After, the gate's `decide()` result is used as-is.
|
|
379
|
+
*/
|
|
380
|
+
export const DETERGENTS_PASSPORT_MANDATORY_FROM = "2029-09-23";
|
|
381
|
+
export const TOYS_PASSPORT_MANDATORY_FROM = "2030-08-01";
|
|
382
|
+
// ─── Detergents gates (Reg (EU) 2026/405) ────────────────────────────────────
|
|
383
|
+
const DETERGENTS_FIELD_GATES = [
|
|
384
|
+
{
|
|
385
|
+
// Annex VI Part A(i): microorganisms list is required ONLY where micro-organisms
|
|
386
|
+
// are intentionally added to the product. If no micro-organisms are added the
|
|
387
|
+
// field does not apply. `microorganismsAdded` flag (owner-confirmed) resolves this.
|
|
388
|
+
keys: ["microorganisms"],
|
|
389
|
+
article: "Annex VI Part A(i) / Reg (EU) 2026/405",
|
|
390
|
+
reason: "The list of micro-organisms is required only where micro-organisms are intentionally added to the detergent formulation.",
|
|
391
|
+
mandatoryFrom: DETERGENTS_PASSPORT_MANDATORY_FROM,
|
|
392
|
+
decide: (t) => {
|
|
393
|
+
if (t.microorganismsAdded === undefined)
|
|
394
|
+
return "unknown";
|
|
395
|
+
return t.microorganismsAdded ? "applies" : "not_applicable";
|
|
396
|
+
},
|
|
397
|
+
},
|
|
398
|
+
{
|
|
399
|
+
// Annex VI Part A(h): the full ingredients list for industrial/institutional
|
|
400
|
+
// detergents is required UNLESS the manufacturer has provided a Safety Data Sheet
|
|
401
|
+
// (SDS) for the product. When an SDS is provided the duty is discharged separately.
|
|
402
|
+
keys: ["ingredients"],
|
|
403
|
+
article: "Annex VI Part A(h) / Reg (EU) 2026/405",
|
|
404
|
+
reason: "The full ingredients list for an industrial/institutional detergent is required in the passport unless a Safety Data Sheet covering that information has been provided separately.",
|
|
405
|
+
mandatoryFrom: DETERGENTS_PASSPORT_MANDATORY_FROM,
|
|
406
|
+
decide: (t) => {
|
|
407
|
+
if (t.sdsProvided === undefined)
|
|
408
|
+
return "unknown";
|
|
409
|
+
// SDS provided → the duty is discharged via SDS, not the passport.
|
|
410
|
+
return t.sdsProvided ? "not_applicable" : "applies";
|
|
411
|
+
},
|
|
412
|
+
},
|
|
413
|
+
];
|
|
414
|
+
// ─── Toys gates (Reg (EU) 2025/2509) ─────────────────────────────────────────
|
|
415
|
+
const TOYS_FIELD_GATES = [
|
|
416
|
+
{
|
|
417
|
+
// Annex VI Part I(l): a list of fragrances to which the toy may expose users
|
|
418
|
+
// is required only when those fragrances are listed under Annex II of
|
|
419
|
+
// Regulation (EC) No 1223/2009 (cosmetics allergens). If no allergen-listed
|
|
420
|
+
// fragrances are present the duty does not arise.
|
|
421
|
+
keys: ["allergenicFragrances"],
|
|
422
|
+
article: "Annex VI Part I(l) / Reg (EU) 2025/2509",
|
|
423
|
+
reason: "A list of allergen-listed fragrances is required in the toy passport only when such fragrances are present in the toy.",
|
|
424
|
+
mandatoryFrom: TOYS_PASSPORT_MANDATORY_FROM,
|
|
425
|
+
decide: (t) => {
|
|
426
|
+
if (t.containsAllergenicFragrances === undefined)
|
|
427
|
+
return "unknown";
|
|
428
|
+
return t.containsAllergenicFragrances ? "applies" : "not_applicable";
|
|
429
|
+
},
|
|
430
|
+
},
|
|
431
|
+
{
|
|
432
|
+
// Annex VI Part I(h): a statement about which other Union acts apply to the
|
|
433
|
+
// toy is required only where the toy also falls under one of the acts listed
|
|
434
|
+
// in Annex XI to the Regulation, or under Directive 2011/65/EU (RoHS).
|
|
435
|
+
keys: ["replacesDeclarationOfConformity"],
|
|
436
|
+
article: "Annex VI Part I(h) / Reg (EU) 2025/2509",
|
|
437
|
+
reason: "Information on compliance with other applicable Union acts (Annex XI / RoHS) is required only when the toy falls under one of those acts.",
|
|
438
|
+
mandatoryFrom: TOYS_PASSPORT_MANDATORY_FROM,
|
|
439
|
+
decide: (t) => {
|
|
440
|
+
if (t.alsoUnderOtherActs === undefined)
|
|
441
|
+
return "unknown";
|
|
442
|
+
return t.alsoUnderOtherActs ? "applies" : "not_applicable";
|
|
443
|
+
},
|
|
444
|
+
},
|
|
445
|
+
{
|
|
446
|
+
// Annex VI Part I(j): the notified-body certificate reference is required only
|
|
447
|
+
// when a notified body was involved (i.e. the `notifiedBody` field is filled).
|
|
448
|
+
// This is field-derived (no separate flag): an approved non-empty `notifiedBody`
|
|
449
|
+
// → certificate reference applies; absent/empty → not_applicable.
|
|
450
|
+
keys: ["notifiedBodyCertificateReference"],
|
|
451
|
+
article: "Annex VI Part I(j) / Reg (EU) 2025/2509",
|
|
452
|
+
reason: "The notified-body certificate reference is required only when a notified body was involved in the conformity assessment (indicated by the notifiedBody field being filled).",
|
|
453
|
+
mandatoryFrom: TOYS_PASSPORT_MANDATORY_FROM,
|
|
454
|
+
decide: (t) => {
|
|
455
|
+
// fieldPresent is optional in Triggers (backward compat); treat absent as false.
|
|
456
|
+
const present = t.fieldPresent ? t.fieldPresent("notifiedBody") : false;
|
|
457
|
+
if (present === undefined)
|
|
458
|
+
return "unknown"; // pending_review → warn, no block
|
|
459
|
+
return present ? "applies" : "not_applicable";
|
|
460
|
+
},
|
|
461
|
+
},
|
|
462
|
+
];
|
|
355
463
|
/**
|
|
356
464
|
* CATEGORY_FIELD_GATES — generalised gate registry, keyed by template category.
|
|
357
465
|
*
|
|
358
|
-
* Phase 1: battery only.
|
|
359
|
-
* rules are encoded. Battery gates are unchanged from BATTERY_FIELD_GATES; the
|
|
360
|
-
* two names refer to the same array.
|
|
466
|
+
* Phase 1: battery only. Phase 2: detergents and toys added.
|
|
361
467
|
*
|
|
362
468
|
* Callers that need to enumerate gates for a category use this registry.
|
|
363
469
|
* The battery-specific `batteryFieldApplicability` is now a thin wrapper.
|
|
364
470
|
*/
|
|
365
471
|
export const CATEGORY_FIELD_GATES = {
|
|
366
472
|
battery: BATTERY_FIELD_GATES,
|
|
473
|
+
detergents: DETERGENTS_FIELD_GATES,
|
|
474
|
+
toys: TOYS_FIELD_GATES,
|
|
367
475
|
};
|
|
368
476
|
/**
|
|
369
477
|
* Compute the applicability map for all gated fields of any category.
|
|
@@ -373,14 +481,29 @@ export const CATEGORY_FIELD_GATES = {
|
|
|
373
481
|
* generic path: every category that has gates in CATEGORY_FIELD_GATES is handled,
|
|
374
482
|
* everything else is a no-op. `batteryFieldApplicability` is kept as a
|
|
375
483
|
* backward-compat alias.
|
|
484
|
+
*
|
|
485
|
+
* @param now Optional reference date for `mandatoryFrom` enforcement. Defaults
|
|
486
|
+
* to the current wall clock. Callers should pass a fixed date in tests.
|
|
487
|
+
* When a gate's `mandatoryFrom` is in the future relative to `now`,
|
|
488
|
+
* ALL keys governed by that gate resolve to "unknown" (warning only,
|
|
489
|
+
* never a hard publish block) — keeping the provision from creating
|
|
490
|
+
* obligations before it legally applies.
|
|
376
491
|
*/
|
|
377
|
-
export function categoryFieldApplicability(passport, category) {
|
|
492
|
+
export function categoryFieldApplicability(passport, category, now) {
|
|
378
493
|
const gates = CATEGORY_FIELD_GATES[category];
|
|
379
494
|
if (!gates || gates.length === 0)
|
|
380
495
|
return {};
|
|
381
|
-
const triggers = readTriggers(passport);
|
|
496
|
+
const triggers = readTriggers(passport, category);
|
|
497
|
+
const effectiveNow = now ?? new Date();
|
|
382
498
|
const out = {};
|
|
383
499
|
for (const gate of gates) {
|
|
500
|
+
// Date-gate: if the provision has not yet entered into force, return "unknown"
|
|
501
|
+
// for every field in this gate — never a hard block before the law applies.
|
|
502
|
+
if (gate.mandatoryFrom && effectiveNow < new Date(gate.mandatoryFrom)) {
|
|
503
|
+
for (const k of gate.keys)
|
|
504
|
+
out[k] = "unknown";
|
|
505
|
+
continue;
|
|
506
|
+
}
|
|
384
507
|
const verdict = gate.decide(triggers);
|
|
385
508
|
for (const k of gate.keys)
|
|
386
509
|
out[k] = verdict;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"battery-applicability.js","sourceRoot":"","sources":["../../src/vendor/battery-applicability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAGH,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"battery-applicability.js","sourceRoot":"","sources":["../../src/vendor/battery-applicability.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish-gate.d.ts","sourceRoot":"","sources":["../../src/vendor/publish-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAI9E,iEAAiE;AACjE,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,gBAAgB,GAAG,SAAS,CAAC;AAEzE,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,yCAAyC;IACzC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,sDAAsD;IACtD,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B;;;;;OAKG;IACH,wBAAwB,EAAE,MAAM,EAAE,CAAC;IACnC,iFAAiF;IACjF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;;;;;OAUG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,aAAa,CAAC;CAC9C;AAQD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,EACrC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,OAAO,CAUT;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,2BAA2B,CACzC,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,EACrC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,OAAO,CAKT;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,gBAAgB,EAAE,MAAM,EACxB,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,EACrC,WAAW,EAAE,MAAM,GAAG,SAAS,GAC9B,OAAO,CAIT;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,EACrC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,OAAO,CAIT;AAED,wEAAwE;AACxE,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,wBAAwB,EAAE,MAAM,EAAE,CAAC;CACpC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,GAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAM,GACvD,iBAAiB,
|
|
1
|
+
{"version":3,"file":"publish-gate.d.ts","sourceRoot":"","sources":["../../src/vendor/publish-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAI9E,iEAAiE;AACjE,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,gBAAgB,GAAG,SAAS,CAAC;AAEzE,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,yCAAyC;IACzC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,sDAAsD;IACtD,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B;;;;;OAKG;IACH,wBAAwB,EAAE,MAAM,EAAE,CAAC;IACnC,iFAAiF;IACjF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;;;;;OAUG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,aAAa,CAAC;CAC9C;AAQD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,EACrC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,OAAO,CAUT;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,2BAA2B,CACzC,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,EACrC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,OAAO,CAKT;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,gBAAgB,EAAE,MAAM,EACxB,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,EACrC,WAAW,EAAE,MAAM,GAAG,SAAS,GAC9B,OAAO,CAIT;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,EACrC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,OAAO,CAIT;AAED,wEAAwE;AACxE,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,wBAAwB,EAAE,MAAM,EAAE,CAAC;CACpC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,GAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAM,GACvD,iBAAiB,CAmEnB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,GAAG,SAAS,EAC9B,gBAAgB,GAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAM,GACvD,YAAY,CAoEd"}
|
|
@@ -154,9 +154,16 @@ export function evaluateFieldRequirements(passport, template, applicabilityMap =
|
|
|
154
154
|
// emits an unverifiable_conditional warning via BAT-APP but never blocks.
|
|
155
155
|
const rb = tf.validation.requiredBy;
|
|
156
156
|
if (applicabilityMap[tf.key] === "applies" &&
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
157
|
+
(
|
|
158
|
+
// Path 1: field has a per-subcategory requiredBy map and the current
|
|
159
|
+
// subcategory is "conditional" — the gate's "applies" verdict promotes
|
|
160
|
+
// the conditional entry to a hard block (battery, detergents pattern).
|
|
161
|
+
(rb && category !== undefined && rb[category] === "conditional") ||
|
|
162
|
+
// Path 2: no requiredBy map at all and field is not statically required.
|
|
163
|
+
// Used for categories whose gated fields carry no subcategory (toys) —
|
|
164
|
+
// the gate alone decides whether the duty arises; when it says "applies"
|
|
165
|
+
// the field becomes mandatory regardless of the subcategory value.
|
|
166
|
+
(!tf.validation.required && !rb))) {
|
|
160
167
|
if (isFieldAbsent(f)) {
|
|
161
168
|
conditionalMissingFields.push(tf.key);
|
|
162
169
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish-gate.js","sourceRoot":"","sources":["../../src/vendor/publish-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAkCrD,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAqB;IACvD,OAAO;IACP,WAAW;IACX,UAAU;CACX,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,iBAAiB,CAC/B,EAAqC,EACrC,QAA4B;IAE5B,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC;IAE/C,wEAAwE;IACxE,IAAI,CAAC,UAAU,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,IAAI,UAAU,CAAC,EAAE,CAAC;QACvE,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,+CAA+C;IAC/C,OAAO,UAAU,CAAC,QAAQ,CAAC,KAAK,UAAU,CAAC;AAC7C,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,2BAA2B,CACzC,EAAqC,EACrC,QAA4B;IAE5B,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,iBAAiB,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,gBAAwB,EACxB,EAAqC,EACrC,WAA+B;IAE/B,OAAO,gBAAgB,KAAK,SAAS;QACnC,CAAC,CAAC,2BAA2B,CAAC,EAAE,EAAE,WAAW,CAAC;QAC9C,CAAC,CAAC,iBAAiB,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;AACzC,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,wBAAwB,CACtC,EAAqC,EACrC,QAA4B;IAE5B,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC;IACrC,IAAI,CAAC,UAAU,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACxD,OAAO,UAAU,CAAC,QAAQ,CAAC,KAAK,eAAe,CAAC;AAClD,CAAC;AASD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,yBAAyB,CACvC,QAAkB,EAClB,QAAkB,EAClB,mBAAsD,EAAE;IAExD,yEAAyE;IACzE,yEAAyE;IACzE,uEAAuE;IACvE,uEAAuE;IACvE,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEzE,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,MAAM,gBAAgB,GAAa,EAAE,CAAC;IACtC,MAAM,wBAAwB,GAAa,EAAE,CAAC;IAE9C,KAAK,MAAM,EAAE,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACjC,0EAA0E;QAC1E,4EAA4E;QAC5E,oDAAoD;QACpD,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW;YAAE,SAAS;QAExC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAElC,2EAA2E;QAC3E,sEAAsE;QACtE,wEAAwE;QACxE,sEAAsE;QACtE,yEAAyE;QACzE,wEAAwE;QACxE,0EAA0E;QAC1E,0EAA0E;QAC1E,MAAM,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QACpC,IACE,gBAAgB,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,SAAS;YACtC,
|
|
1
|
+
{"version":3,"file":"publish-gate.js","sourceRoot":"","sources":["../../src/vendor/publish-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAkCrD,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAqB;IACvD,OAAO;IACP,WAAW;IACX,UAAU;CACX,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,iBAAiB,CAC/B,EAAqC,EACrC,QAA4B;IAE5B,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC;IAE/C,wEAAwE;IACxE,IAAI,CAAC,UAAU,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,IAAI,UAAU,CAAC,EAAE,CAAC;QACvE,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,+CAA+C;IAC/C,OAAO,UAAU,CAAC,QAAQ,CAAC,KAAK,UAAU,CAAC;AAC7C,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,2BAA2B,CACzC,EAAqC,EACrC,QAA4B;IAE5B,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,iBAAiB,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,gBAAwB,EACxB,EAAqC,EACrC,WAA+B;IAE/B,OAAO,gBAAgB,KAAK,SAAS;QACnC,CAAC,CAAC,2BAA2B,CAAC,EAAE,EAAE,WAAW,CAAC;QAC9C,CAAC,CAAC,iBAAiB,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;AACzC,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,wBAAwB,CACtC,EAAqC,EACrC,QAA4B;IAE5B,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC;IACrC,IAAI,CAAC,UAAU,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACxD,OAAO,UAAU,CAAC,QAAQ,CAAC,KAAK,eAAe,CAAC;AAClD,CAAC;AASD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,yBAAyB,CACvC,QAAkB,EAClB,QAAkB,EAClB,mBAAsD,EAAE;IAExD,yEAAyE;IACzE,yEAAyE;IACzE,uEAAuE;IACvE,uEAAuE;IACvE,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEzE,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,MAAM,gBAAgB,GAAa,EAAE,CAAC;IACtC,MAAM,wBAAwB,GAAa,EAAE,CAAC;IAE9C,KAAK,MAAM,EAAE,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACjC,0EAA0E;QAC1E,4EAA4E;QAC5E,oDAAoD;QACpD,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW;YAAE,SAAS;QAExC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAElC,2EAA2E;QAC3E,sEAAsE;QACtE,wEAAwE;QACxE,sEAAsE;QACtE,yEAAyE;QACzE,wEAAwE;QACxE,0EAA0E;QAC1E,0EAA0E;QAC1E,MAAM,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QACpC,IACE,gBAAgB,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,SAAS;YACtC;YACE,qEAAqE;YACrE,uEAAuE;YACvE,uEAAuE;YACvE,CAAC,EAAE,IAAI,QAAQ,KAAK,SAAS,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,aAAa,CAAC;gBAChE,yEAAyE;gBACzE,uEAAuE;gBACvE,yEAAyE;gBACzE,mEAAmE;gBACnE,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,CACjC,EACD,CAAC;YACD,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrB,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YACxC,CAAC;iBAAM,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBACnC,sEAAsE;gBACtE,uEAAuE;gBACvE,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YACxC,CAAC;YACD,uEAAuE;YACvE,yCAAyC;YACzC,SAAS;QACX,CAAC;QAED,4EAA4E;QAC5E,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,QAAQ,CAAC;YAAE,SAAS;QACrE,mEAAmE;QACnE,wEAAwE;QACxE,mEAAmE;QACnE,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;aAAM,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACnC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,CAAC;AACvE,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAkB,EAClB,QAA8B,EAC9B,mBAAsD,EAAE;IAExD,IAAI,QAAQ,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QACpC,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,aAAa,EAAE,EAAE;YACjB,gBAAgB,EAAE,EAAE;YACpB,wBAAwB,EAAE,EAAE;YAC5B,MAAM,EAAE,mBAAmB;YAC3B,WAAW,EAAE,MAAM;SACpB,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/C,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,aAAa,EAAE,EAAE;YACjB,gBAAgB,EAAE,EAAE;YACpB,wBAAwB,EAAE,EAAE;YAC5B,MAAM,EAAE,8BAA8B,QAAQ,CAAC,MAAM,EAAE;YACvD,WAAW,EAAE,MAAM;SACpB,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,aAAa,EAAE,EAAE;YACjB,gBAAgB,EAAE,EAAE;YACpB,wBAAwB,EAAE,EAAE;YAC5B,MAAM,EAAE,kBAAkB;YAC1B,WAAW,EAAE,MAAM;SACpB,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,GACjE,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAElE,IACE,aAAa,CAAC,MAAM,KAAK,CAAC;QAC1B,gBAAgB,CAAC,MAAM,KAAK,CAAC;QAC7B,wBAAwB,CAAC,MAAM,KAAK,CAAC,EACrC,CAAC;QACD,OAAO;YACL,KAAK,EAAE,IAAI;YACX,aAAa,EAAE,EAAE;YACjB,gBAAgB,EAAE,EAAE;YACpB,wBAAwB,EAAE,EAAE;SAC7B,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,wBAAwB,CAAC,MAAM,GAAG,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,MAAM,+BAA+B,CAAC,CAAC;IAChF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,MAAM,UAAU,CAAC,CAAC;IAC5E,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,MAAM,eAAe,CAAC,CAAC;IAEvF,iFAAiF;IACjF,MAAM,WAAW,GACf,wBAAwB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC;IAE9D,OAAO;QACL,KAAK,EAAE,KAAK;QACZ,aAAa;QACb,gBAAgB;QAChB,wBAAwB;QACxB,MAAM,EAAE,oBAAoB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAC9C,WAAW;KACZ,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tracepass/dpp-validate",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Evaluate an EU Digital Product Passport against its category field-spec
|
|
3
|
+
"version": "0.14.0",
|
|
4
|
+
"description": "Evaluate an EU Digital Product Passport against its category field-spec \u2014 a three-tier compliance verdict with regulation-cited findings. Pure functions, no third-party runtime dependencies.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"digital-product-passport",
|
|
7
7
|
"dpp",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"clean": "rm -rf dist"
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@tracepass/dpp-types": "^0.
|
|
48
|
+
"@tracepass/dpp-types": "^0.14.0"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
51
|
"typescript": "^5.6.3"
|