@aidc-toolkit/gs1 1.0.32-beta → 1.0.33-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/README.md +290 -17
  2. package/dist/character-set.d.ts +17 -2
  3. package/dist/character-set.d.ts.map +1 -1
  4. package/dist/character-set.js +44 -11
  5. package/dist/character-set.js.map +1 -1
  6. package/dist/gcp-length-cache.d.ts +54 -15
  7. package/dist/gcp-length-cache.d.ts.map +1 -1
  8. package/dist/gcp-length-cache.js +181 -45
  9. package/dist/gcp-length-cache.js.map +1 -1
  10. package/dist/gcp-length-data.d.ts +74 -20
  11. package/dist/gcp-length-data.d.ts.map +1 -1
  12. package/dist/gcp-length-data.js +39 -15
  13. package/dist/gcp-length-data.js.map +1 -1
  14. package/dist/gcp-length.d.ts +1 -1
  15. package/dist/gcp-length.d.ts.map +1 -1
  16. package/dist/gcp-length.js +5 -6
  17. package/dist/gcp-length.js.map +1 -1
  18. package/dist/locale/en/locale-resources.d.ts +39 -36
  19. package/dist/locale/en/locale-resources.d.ts.map +1 -1
  20. package/dist/locale/en/locale-resources.js +4 -1
  21. package/dist/locale/en/locale-resources.js.map +1 -1
  22. package/dist/locale/fr/locale-resources.d.ts +39 -36
  23. package/dist/locale/fr/locale-resources.d.ts.map +1 -1
  24. package/dist/locale/fr/locale-resources.js +4 -1
  25. package/dist/locale/fr/locale-resources.js.map +1 -1
  26. package/dist/locale/i18n.d.ts +6 -3
  27. package/dist/locale/i18n.d.ts.map +1 -1
  28. package/dist/locale/i18n.js +8 -6
  29. package/dist/locale/i18n.js.map +1 -1
  30. package/dist/numeric-identifier-validator.d.ts.map +1 -1
  31. package/dist/numeric-identifier-validator.js.map +1 -1
  32. package/dist/variable-measure.d.ts +4 -4
  33. package/dist/variable-measure.js +4 -4
  34. package/package.json +11 -10
  35. package/src/character-set.ts +55 -11
  36. package/src/gcp-length-cache.ts +208 -54
  37. package/src/gcp-length-data.ts +95 -27
  38. package/src/gcp-length.ts +5 -43
  39. package/src/locale/en/locale-resources.ts +5 -2
  40. package/src/locale/fr/locale-resources.ts +5 -2
  41. package/src/locale/i18n.ts +9 -7
  42. package/src/locale/i18next.d.ts +2 -0
  43. package/src/numeric-identifier-validator.ts +1 -1
  44. package/src/variable-measure.ts +4 -4
  45. package/test/character-set.test.ts +46 -0
  46. package/test/gcp-length.test.ts +179 -240
  47. package/tsconfig-src.tsbuildinfo +1 -1
@@ -1,11 +1,137 @@
1
- import { Cache } from "@aidc-toolkit/core";
2
- import { parseGCPLengthHeader } from "./gcp-length-data.js";
1
+ var _a;
2
+ import { Cache, omit, RemoteAppDataStorage } from "@aidc-toolkit/core";
3
+ import { isGCPLengthAppData, isGCPLengthHeader } from "./gcp-length-data.js";
3
4
  import { i18nextGS1 } from "./locale/i18n.js";
4
5
  /**
5
6
  * GS1 Company Prefix length cache.
6
7
  */
7
8
  export class GCPLengthCache extends Cache {
9
+ /**
10
+ * Storage key for full application data object.
11
+ */
12
+ static APP_DATA_STORAGE_KEY = "gcp-length";
13
+ /**
14
+ * Storage key for next check date/time.
15
+ */
16
+ static NEXT_CHECK_DATE_TIME_STORAGE_KEY = "gcp-length-next-check-date-time";
17
+ /**
18
+ * Storage key for header information (date/time and disclaimer).
19
+ */
20
+ static HEADER_STORAGE_KEY = "gcp-length-header";
21
+ /**
22
+ * Storage key for data only.
23
+ */
24
+ static DATA_STORAGE_KEY = "gcp-length-data";
25
+ /**
26
+ * Application data storage.
27
+ */
28
+ #appDataStorage;
29
+ /**
30
+ * GS1 Company Prefix application data.
31
+ */
32
+ #cacheGCPLengthAppData;
33
+ /**
34
+ * Constructor.
35
+ *
36
+ * @param appDataStorage
37
+ * Application data storage.
38
+ */
39
+ constructor(appDataStorage) {
40
+ super();
41
+ this.#appDataStorage = appDataStorage;
42
+ }
43
+ /**
44
+ * Get the application data storage.
45
+ */
46
+ get appDataStorage() {
47
+ return this.#appDataStorage;
48
+ }
49
+ /**
50
+ * Load cached GS1 Company Prefix length application data from application data storage.
51
+ *
52
+ * @returns
53
+ * GS1 Company Prefix length application data.
54
+ */
55
+ async #loadCache() {
56
+ if (this.#cacheGCPLengthAppData === undefined) {
57
+ if (!this.appDataStorage.supportsBinary) {
58
+ // Everything is stored in a single object.
59
+ const appData = await this.appDataStorage.read(_a.APP_DATA_STORAGE_KEY);
60
+ if (isGCPLengthAppData(appData)) {
61
+ this.#cacheGCPLengthAppData = appData;
62
+ }
63
+ }
64
+ else {
65
+ const nextCheckDateTime = await this.appDataStorage.read(_a.NEXT_CHECK_DATE_TIME_STORAGE_KEY);
66
+ const header = await this.appDataStorage.read(_a.HEADER_STORAGE_KEY);
67
+ const data = await this.appDataStorage.read(_a.DATA_STORAGE_KEY, true);
68
+ this.#cacheGCPLengthAppData = {
69
+ nextCheckDateTime: nextCheckDateTime instanceof Date ? nextCheckDateTime : undefined,
70
+ gcpLengthData: isGCPLengthHeader(header) && data instanceof Uint8Array ?
71
+ {
72
+ ...header,
73
+ data
74
+ } :
75
+ undefined
76
+ };
77
+ }
78
+ }
79
+ // If there's nothing in the cache yet, create an object with the next check date/time set to now.
80
+ if (this.#cacheGCPLengthAppData === undefined) {
81
+ this.#cacheGCPLengthAppData = {
82
+ nextCheckDateTime: new Date(),
83
+ gcpLengthData: undefined
84
+ };
85
+ }
86
+ return this.#cacheGCPLengthAppData;
87
+ }
88
+ /**
89
+ * @inheritDoc
90
+ */
91
+ get nextCheckDateTime() {
92
+ return this.#loadCache().then(gcpLengthAppData => gcpLengthAppData.nextCheckDateTime);
93
+ }
94
+ /**
95
+ * @inheritDoc
96
+ */
97
+ get cacheDateTime() {
98
+ return this.#loadCache().then(gcpLengthAppData => gcpLengthAppData.gcpLengthData?.dateTime);
99
+ }
100
+ /**
101
+ * @inheritDoc
102
+ */
103
+ get cacheData() {
104
+ return this.#loadCache().then((gcpLengthAppData) => {
105
+ if (gcpLengthAppData.gcpLengthData === undefined) {
106
+ // Application error; no localization necessary.
107
+ throw new Error("GS1 Company Prefix length application data not loaded");
108
+ }
109
+ return gcpLengthAppData.gcpLengthData;
110
+ });
111
+ }
112
+ /**
113
+ * @inheritDoc
114
+ */
115
+ async update(nextCheckDateTime, _cacheDateTime, cacheData) {
116
+ this.#cacheGCPLengthAppData = {
117
+ nextCheckDateTime,
118
+ // Retain existing data if cache data is not provided.
119
+ gcpLengthData: cacheData ?? this.#cacheGCPLengthAppData?.gcpLengthData
120
+ };
121
+ if (!this.appDataStorage.supportsBinary) {
122
+ // Everything is stored in a single object.
123
+ await this.appDataStorage.write(_a.APP_DATA_STORAGE_KEY, this.#cacheGCPLengthAppData);
124
+ }
125
+ else {
126
+ await this.appDataStorage.write(_a.NEXT_CHECK_DATE_TIME_STORAGE_KEY, nextCheckDateTime);
127
+ if (cacheData !== undefined) {
128
+ await this.appDataStorage.write(_a.HEADER_STORAGE_KEY, omit(cacheData, "data"));
129
+ await this.appDataStorage.write(_a.DATA_STORAGE_KEY, cacheData.data);
130
+ }
131
+ }
132
+ }
8
133
  }
134
+ _a = GCPLengthCache;
9
135
  /**
10
136
  * GS1 Company Prefix length cache with remote source.
11
137
  */
@@ -13,52 +139,53 @@ export class RemoteGCPLengthCache extends GCPLengthCache {
13
139
  /**
14
140
  * Default base URL pointing to AIDC Toolkit website data directory.
15
141
  */
16
- static DEFAULT_BASE_URL = "https://aidc-toolkit.com/data/";
17
- /**
18
- * File containing header information (date/time and disclaimer).
19
- */
20
- static SOURCE_HEADER_FILE_NAME = "gcp-length-header.json";
21
- /**
22
- * File containing tree data in binary form.
23
- */
24
- static SOURCE_DATA_FILE_NAME = "gcp-length-data.bin";
142
+ static DEFAULT_BASE_URL = "https://aidc-toolkit.com/data";
25
143
  /**
26
- * Base URL.
144
+ * Remote application data storage.
27
145
  */
28
- #baseURL;
146
+ #remoteAppDataStorage;
29
147
  /**
30
- * GS1 Company Prefix header data.
148
+ * Remote GS1 Company Prefix header data.
31
149
  */
32
- #gcpLengthHeader;
150
+ #remoteGCPLengthHeader;
33
151
  /**
34
152
  * Constructor.
35
153
  *
154
+ * @param appDataStorage
155
+ * Application data storage.
156
+ *
36
157
  * @param baseURL
37
- * Base URL. The URL must end with a slash, and must host the {@linkcode SOURCE_HEADER_FILE_NAME} and {@linkcode
38
- * SOURCE_DATA_FILE_NAME} files.
158
+ * Base URL. The URL must not end with a slash and must host the `gcp-length-header.json` and `gcp-length-data.bin`
159
+ * files.
39
160
  */
40
- constructor(baseURL = RemoteGCPLengthCache.DEFAULT_BASE_URL) {
41
- super();
42
- this.#baseURL = baseURL;
161
+ constructor(appDataStorage, baseURL = RemoteGCPLengthCache.DEFAULT_BASE_URL) {
162
+ super(appDataStorage);
163
+ this.#remoteAppDataStorage = new RemoteAppDataStorage(baseURL);
43
164
  }
44
165
  /**
45
- * Get a remote file. If an exception is thrown, retrying is delayed for ten minutes to prevent repeated network
46
- * calls.
166
+ * Get remote application data. If an exception is thrown while retrieving or processing the data, retrying is
167
+ * delayed for ten minutes to prevent repeated network calls.
168
+ *
169
+ * @param pathKey
170
+ * Key relative to base URL.
47
171
  *
48
- * @param fileName
49
- * File name relative to base URL.
172
+ * @param asBinary
173
+ * True if binary data is requested, false if string data is requested.
174
+ *
175
+ * @param callback
176
+ * Callback function to process the application data.
50
177
  *
51
178
  * @returns
52
- * Response.
179
+ * Application data.
53
180
  */
54
- async #getRemoteFile(fileName) {
55
- return fetch(`${this.#baseURL}${fileName}`).then((response) => {
56
- if (!response.ok) {
57
- throw new RangeError(i18nextGS1.t("Prefix.gs1CompanyPrefixLengthDataHTTPError", {
58
- status: response.status
181
+ async #getRemoteAppData(pathKey, asBinary, callback) {
182
+ return this.#remoteAppDataStorage.read(pathKey, asBinary).then((appData) => {
183
+ if (appData === undefined) {
184
+ throw new RangeError(i18nextGS1.t("Prefix.gs1CompanyPrefixLengthDataFileNotFound", {
185
+ key: pathKey
59
186
  }));
60
187
  }
61
- return response;
188
+ return callback(appData);
62
189
  }).catch(async (e) => {
63
190
  // Try again in ten minutes.
64
191
  const nowPlus10Minutes = new Date();
@@ -71,26 +198,35 @@ export class RemoteGCPLengthCache extends GCPLengthCache {
71
198
  * @inheritDoc
72
199
  */
73
200
  get sourceDateTime() {
74
- return this.#getRemoteFile(RemoteGCPLengthCache.SOURCE_HEADER_FILE_NAME).then(async (response) => response.text()).then((s) => {
75
- this.#gcpLengthHeader = parseGCPLengthHeader(s);
76
- return this.#gcpLengthHeader.dateTime;
201
+ // Header is fetched on each call.
202
+ return this.#getRemoteAppData(RemoteGCPLengthCache.HEADER_STORAGE_KEY, false, (appData) => {
203
+ if (!isGCPLengthHeader(appData)) {
204
+ // Application error; no localization necessary.
205
+ throw new Error("Invalid GS1 Company Prefix length header");
206
+ }
207
+ this.#remoteGCPLengthHeader = appData;
208
+ return this.#remoteGCPLengthHeader.dateTime;
77
209
  });
78
210
  }
79
211
  /**
80
212
  * @inheritDoc
81
213
  */
82
214
  get sourceData() {
83
- if (this.#gcpLengthHeader === undefined) {
84
- // Application error; no localization necessary.
85
- throw new Error("GS1 Company Prefix length header not loaded");
86
- }
87
- const gcpLengthHeader = this.#gcpLengthHeader;
88
- // Clear header to allow for retry in case of failure.
89
- this.#gcpLengthHeader = undefined;
90
- return this.#getRemoteFile(RemoteGCPLengthCache.SOURCE_DATA_FILE_NAME).then(async (response) => response.arrayBuffer()).then(a => ({
91
- ...gcpLengthHeader,
92
- data: new Uint8Array(a)
93
- }));
215
+ return this.#getRemoteAppData(RemoteGCPLengthCache.DATA_STORAGE_KEY, true, (appData) => {
216
+ const gcpLengthHeader = this.#remoteGCPLengthHeader;
217
+ if (gcpLengthHeader === undefined) {
218
+ // Application error; no localization necessary.
219
+ throw new Error("GS1 Company Prefix length header not loaded");
220
+ }
221
+ if (!(appData instanceof Uint8Array)) {
222
+ // Application error; no localization necessary.
223
+ throw new Error("Invalid GS1 Company Prefix length data");
224
+ }
225
+ return {
226
+ ...gcpLengthHeader,
227
+ data: appData
228
+ };
229
+ });
94
230
  }
95
231
  }
96
232
  //# sourceMappingURL=gcp-length-cache.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gcp-length-cache.js","sourceRoot":"","sources":["../src/gcp-length-cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAA4C,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACtG,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;GAEG;AACH,MAAM,OAAgB,cAAe,SAAQ,KAA4C;CACxF;AAED;;GAEG;AACH,MAAM,OAAgB,oBAAqB,SAAQ,cAAc;IAC7D;;OAEG;IACH,MAAM,CAAC,gBAAgB,GAAG,gCAAgC,CAAC;IAE3D;;OAEG;IACH,MAAM,CAAC,uBAAuB,GAAG,wBAAwB,CAAC;IAE1D;;OAEG;IACH,MAAM,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;IAErD;;OAEG;IACM,QAAQ,CAAS;IAE1B;;OAEG;IACH,gBAAgB,CAA+B;IAE/C;;;;;;OAMG;IACH,YAAY,UAAkB,oBAAoB,CAAC,gBAAgB;QAC/D,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC5B,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,cAAc,CAAC,QAAgB;QACjC,OAAO,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC1D,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACf,MAAM,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,4CAA4C,EAAE;oBAC5E,MAAM,EAAE,QAAQ,CAAC,MAAM;iBAC1B,CAAC,CAAC,CAAC;YACR,CAAC;YAED,OAAO,QAAQ,CAAC;QACpB,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAU,EAAE,EAAE;YAC1B,4BAA4B;YAC5B,MAAM,gBAAgB,GAAG,IAAI,IAAI,EAAE,CAAC;YACpC,gBAAgB,CAAC,UAAU,CAAC,gBAAgB,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;YAEhE,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;YAEpC,MAAM,CAAC,CAAC;QACZ,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACH,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAC,QAAQ,EAAC,EAAE,CAC3F,QAAQ,CAAC,IAAI,EAAE,CAClB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YACT,IAAI,CAAC,gBAAgB,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;YAEhD,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;QAC1C,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACH,IAAI,UAAU;QACV,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACtC,gDAAgD;YAChD,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAE9C,sDAAsD;QACtD,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QAElC,OAAO,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAC,QAAQ,EAAC,EAAE,CACzF,QAAQ,CAAC,WAAW,EAAE,CACzB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACT,GAAG,eAAe;YAClB,IAAI,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC;SAC1B,CAAC,CAAC,CAAC;IACR,CAAC"}
1
+ {"version":3,"file":"gcp-length-cache.js","sourceRoot":"","sources":["../src/gcp-length-cache.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { AppData } from "@aidc-toolkit/core";
1
2
  /**
2
3
  * GS1 Company Prefix length header.
3
4
  */
@@ -12,43 +13,96 @@ export interface GCPLengthHeader {
12
13
  readonly disclaimer: string;
13
14
  }
14
15
  /**
15
- * Parse a JSON string representing a GS1 Company Prefix length header.
16
+ * Determine if application data object is GS1 Company Prefix length header.
16
17
  *
17
- * @param s
18
- * JSON string.
18
+ * @param appData
19
+ * Application data object.
19
20
  *
20
21
  * @returns
21
- * GS1 Company Prefix length header.
22
+ * True if application data object is GS1 Company Prefix length header.
22
23
  */
23
- export declare function parseGCPLengthHeader(s: string): GCPLengthHeader;
24
+ export declare function isGCPLengthHeader(appData: AppData | undefined): appData is GCPLengthHeader;
24
25
  /**
25
- * Generate a JSON string representing a GS1 Company Prefix length header.
26
- *
27
- * @param gcpLengthHeader
28
- * GS1 Company Prefix length header.
26
+ * GS1 Company Prefix length data.
27
+ */
28
+ export interface GCPLengthData extends GCPLengthHeader {
29
+ /**
30
+ * Tree data in binary form.
31
+ */
32
+ readonly data: Uint8Array;
33
+ }
34
+ /**
35
+ * Determine if application data object is GS1 Company Prefix length data.
29
36
  *
30
- * @param space
31
- * JSON string indentation.
37
+ * @param appData
38
+ * Application data object.
32
39
  *
33
40
  * @returns
34
- * JSON string.
41
+ * True if application data object is GS1 Company Prefix length data.
35
42
  */
36
- export declare function stringifyGCPLengthHeader(gcpLengthHeader: GCPLengthHeader, space?: string | number): string;
43
+ export declare function isGCPLengthData(appData: AppData | undefined): appData is GCPLengthData;
37
44
  /**
38
- * GS1 Company Prefix length data.
45
+ * GS1 Company Prefix length application data.
39
46
  */
40
- export interface GCPLengthData extends GCPLengthHeader {
47
+ export interface GCPLengthAppData {
41
48
  /**
42
- * Date/time the data was last updated.
49
+ * Next check date/time.
43
50
  */
44
- readonly dateTime: Date;
51
+ nextCheckDateTime: Date | undefined;
52
+ /**
53
+ * GS1 Company Prefix length data.
54
+ */
55
+ gcpLengthData: GCPLengthData | undefined;
56
+ }
57
+ /**
58
+ * Determine if application data object is GS1 Company Prefix length application data.
59
+ *
60
+ * @param appData
61
+ * Application data object.
62
+ *
63
+ * @returns
64
+ * True if application data object is GS1 Company Prefix length application data.
65
+ */
66
+ export declare function isGCPLengthAppData(appData: AppData | undefined): appData is GCPLengthAppData;
67
+ /**
68
+ * GS1 Company Prefix length JSON source file format.
69
+ */
70
+ export interface GCPLengthSourceJSON {
45
71
  /**
46
72
  * Disclaimer.
47
73
  */
48
- readonly disclaimer: string;
74
+ _disclaimer: string[];
49
75
  /**
50
- * Tree data in binary form.
76
+ * Format list.
51
77
  */
52
- readonly data: Uint8Array;
78
+ GCPPrefixFormatList: {
79
+ /**
80
+ * ISO data/time the table was last updated.
81
+ */
82
+ date: string;
83
+ /**
84
+ * Entries.
85
+ */
86
+ entry: Array<{
87
+ /**
88
+ * Identification key prefix start.
89
+ */
90
+ prefix: string;
91
+ /**
92
+ * Length of GS1 Company Prefix.
93
+ */
94
+ gcpLength: number;
95
+ }>;
96
+ };
53
97
  }
98
+ /**
99
+ * Determine if application data object is GS1 Company Prefix length source JSON.
100
+ *
101
+ * @param appData
102
+ * Application data object.
103
+ *
104
+ * @returns
105
+ * True if application data object is GS1 Company Prefix length source JSON.
106
+ */
107
+ export declare function isGCPLengthSourceJSON(appData: AppData | undefined): appData is GCPLengthSourceJSON;
54
108
  //# sourceMappingURL=gcp-length-data.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gcp-length-data.d.ts","sourceRoot":"","sources":["../src/gcp-length-data.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IAExB;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,MAAM,GAAG,eAAe,CAK/D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CAAC,eAAe,EAAE,eAAe,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAI1G;AAED;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,eAAe;IAClD;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IAExB;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAC7B"}
1
+ {"version":3,"file":"gcp-length-data.d.ts","sourceRoot":"","sources":["../src/gcp-length-data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IAExB;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,IAAI,eAAe,CAG1F;AAED;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,eAAe;IAClD;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAC7B;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,IAAI,aAAa,CAGtF;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B;;OAEG;IACH,iBAAiB,EAAE,IAAI,GAAG,SAAS,CAAC;IAEpC;;OAEG;IACH,aAAa,EAAE,aAAa,GAAG,SAAS,CAAC;CAC5C;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,IAAI,gBAAgB,CAO5F;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC;;OAEG;IACH,WAAW,EAAE,MAAM,EAAE,CAAC;IAEtB;;OAEG;IACH,mBAAmB,EAAE;QACjB;;WAEG;QACH,IAAI,EAAE,MAAM,CAAC;QAEb;;WAEG;QACH,KAAK,EAAE,KAAK,CAAC;YACT;;eAEG;YACH,MAAM,EAAE,MAAM,CAAC;YAEf;;eAEG;YACH,SAAS,EAAE,MAAM,CAAC;SACrB,CAAC,CAAC;KACN,CAAC;CACL;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,IAAI,mBAAmB,CAGlG"}
@@ -1,29 +1,53 @@
1
1
  /**
2
- * Parse a JSON string representing a GS1 Company Prefix length header.
2
+ * Determine if application data object is GS1 Company Prefix length header.
3
3
  *
4
- * @param s
5
- * JSON string.
4
+ * @param appData
5
+ * Application data object.
6
6
  *
7
7
  * @returns
8
- * GS1 Company Prefix length header.
8
+ * True if application data object is GS1 Company Prefix length header.
9
9
  */
10
- export function parseGCPLengthHeader(s) {
11
- // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- File format is known.
12
- return JSON.parse(s, (key, value) => key === "dateTime" && typeof value === "string" ? new Date(value) : value);
10
+ export function isGCPLengthHeader(appData) {
11
+ // Property type check is necessary to guard against data corruption or changes in format.
12
+ return typeof appData === "object" && "dateTime" in appData && appData.dateTime instanceof Date && "disclaimer" in appData && typeof appData.disclaimer === "string";
13
13
  }
14
14
  /**
15
- * Generate a JSON string representing a GS1 Company Prefix length header.
15
+ * Determine if application data object is GS1 Company Prefix length data.
16
16
  *
17
- * @param gcpLengthHeader
18
- * GS1 Company Prefix length header.
17
+ * @param appData
18
+ * Application data object.
19
19
  *
20
- * @param space
21
- * JSON string indentation.
20
+ * @returns
21
+ * True if application data object is GS1 Company Prefix length data.
22
+ */
23
+ export function isGCPLengthData(appData) {
24
+ // Property type check is necessary to guard against data corruption or changes in format.
25
+ return isGCPLengthHeader(appData) && "data" in appData && appData.data instanceof Uint8Array;
26
+ }
27
+ /**
28
+ * Determine if application data object is GS1 Company Prefix length application data.
29
+ *
30
+ * @param appData
31
+ * Application data object.
32
+ *
33
+ * @returns
34
+ * True if application data object is GS1 Company Prefix length application data.
35
+ */
36
+ export function isGCPLengthAppData(appData) {
37
+ // Property type check is necessary to guard against data corruption or changes in format.
38
+ return typeof appData === "object" && "nextCheckDateTime" in appData && appData.nextCheckDateTime instanceof Date && (!("gcpLengthData" in appData) || appData.gcpLengthData === undefined || (typeof appData.gcpLengthData === "object" && appData.gcpLengthData !== null && isGCPLengthData(appData.gcpLengthData)));
39
+ }
40
+ /**
41
+ * Determine if application data object is GS1 Company Prefix length source JSON.
42
+ *
43
+ * @param appData
44
+ * Application data object.
22
45
  *
23
46
  * @returns
24
- * JSON string.
47
+ * True if application data object is GS1 Company Prefix length source JSON.
25
48
  */
26
- export function stringifyGCPLengthHeader(gcpLengthHeader, space) {
27
- return JSON.stringify(gcpLengthHeader, (key, value) => key === "dateTime" && value instanceof Date ? value.toISOString() : value, space);
49
+ export function isGCPLengthSourceJSON(appData) {
50
+ // Checking is minimal as this is generally used in a controlled environment (e.g., updating remote storage).
51
+ return typeof appData === "object" && "_disclaimer" in appData && "GCPPrefixFormatList" in appData;
28
52
  }
29
53
  //# sourceMappingURL=gcp-length-data.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gcp-length-data.js","sourceRoot":"","sources":["../src/gcp-length-data.ts"],"names":[],"mappings":"AAeA;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAAC,CAAS;IAC1C,gGAAgG;IAChG,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAc,EAAE,EAAE,CACzC,GAAG,KAAK,UAAU,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CACzD,CAAC;AACzB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,wBAAwB,CAAC,eAAgC,EAAE,KAAuB;IAC9F,OAAO,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,GAAG,EAAE,KAAc,EAAE,EAAE,CAC3D,GAAG,KAAK,UAAU,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,EAC7E,KAAK,CAAC,CAAC;AACX,CAAC"}
1
+ {"version":3,"file":"gcp-length-data.js","sourceRoot":"","sources":["../src/gcp-length-data.ts"],"names":[],"mappings":"AAiBA;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAA4B;IAC1D,0FAA0F;IAC1F,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,UAAU,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,YAAY,IAAI,IAAI,YAAY,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,CAAC;AACzK,CAAC;AAYD;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,OAA4B;IACxD,0FAA0F;IAC1F,OAAO,iBAAiB,CAAC,OAAO,CAAC,IAAI,MAAM,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,YAAY,UAAU,CAAC;AACjG,CAAC;AAiBD;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAA4B;IAC3D,0FAA0F;IAC1F,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,mBAAmB,IAAI,OAAO,IAAI,OAAO,CAAC,iBAAiB,YAAY,IAAI,IAAI,CACjH,CAAC,CAAC,eAAe,IAAI,OAAO,CAAC,IAAI,OAAO,CAAC,aAAa,KAAK,SAAS,IAAI,CACpE,OAAO,OAAO,CAAC,aAAa,KAAK,QAAQ,IAAI,OAAO,CAAC,aAAa,KAAK,IAAI,IAAI,eAAe,CAAC,OAAO,CAAC,aAAa,CAAC,CACxH,CACJ,CAAC;AACN,CAAC;AAqCD;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAA4B;IAC9D,6GAA6G;IAC7G,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,aAAa,IAAI,OAAO,IAAI,qBAAqB,IAAI,OAAO,CAAC;AACvG,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { GCPLengthCache } from "./gcp-length-cache.js";
2
- import type { GCPLengthHeader } from "./gcp-length-data.js";
2
+ import { type GCPLengthHeader } from "./gcp-length-data.js";
3
3
  import { type IdentifierType } from "./identifier-type.js";
4
4
  /**
5
5
  * Leaf of GS1 Company Prefix length tree.
@@ -1 +1 @@
1
- {"version":3,"file":"gcp-length.d.ts","sourceRoot":"","sources":["../src/gcp-length.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAiB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAG3E,OAAO,EAAE,KAAK,cAAc,EAAmB,MAAM,sBAAsB,CAAC;AAuC5E;;GAEG;AACH,MAAM,WAAW,IAAI;IACjB,MAAM,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACnB,UAAU,EAAE,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,IAAK,SAAQ,eAAe,EAAE,MAAM;CACpD;AAED;;GAEG;AACH,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;AAExC;;;;;;;;GAQG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,CAE/C;AAmMD;;;;;;;;GAQG;AACH,wBAAsB,QAAQ,CAAC,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CA4FxF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAwB7F"}
1
+ {"version":3,"file":"gcp-length.d.ts","sourceRoot":"","sources":["../src/gcp-length.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAsB,KAAK,eAAe,EAAmB,MAAM,sBAAsB,CAAC;AAGjG,OAAO,EAAE,KAAK,cAAc,EAAmB,MAAM,sBAAsB,CAAC;AAI5E;;GAEG;AACH,MAAM,WAAW,IAAI;IACjB,MAAM,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACnB,UAAU,EAAE,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,IAAK,SAAQ,eAAe,EAAE,MAAM;CACpD;AAED;;GAEG;AACH,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;AAExC;;;;;;;;GAQG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,CAE/C;AAmMD;;;;;;;;GAQG;AACH,wBAAsB,QAAQ,CAAC,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAyFxF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAwB7F"}
@@ -1,4 +1,5 @@
1
1
  import { omit } from "@aidc-toolkit/core";
2
+ import { isGCPLengthData } from "./gcp-length-data.js";
2
3
  import { GTINLengths } from "./gtin-length.js";
3
4
  import { GTINValidator } from "./gtin-validator.js";
4
5
  import { IdentifierTypes } from "./identifier-type.js";
@@ -201,7 +202,7 @@ export async function loadData(gcpLengthCache) {
201
202
  if (cacheDateTime === undefined || cacheDateTime.getTime() < sourceDateTime.getTime()) {
202
203
  const sourceData = await gcpLengthCache.sourceData;
203
204
  let cacheData;
204
- if (typeof sourceData !== "string") {
205
+ if (isGCPLengthData(sourceData)) {
205
206
  root = {
206
207
  dateTime: sourceData.dateTime,
207
208
  disclaimer: sourceData.disclaimer,
@@ -211,12 +212,10 @@ export async function loadData(gcpLengthCache) {
211
212
  cacheData = sourceData;
212
213
  }
213
214
  else {
214
- // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- File format is known.
215
- const gcpLength = JSON.parse(sourceData);
216
215
  root = {
217
- dateTime: new Date(gcpLength.GCPPrefixFormatList.date),
216
+ dateTime: new Date(sourceData.GCPPrefixFormatList.date),
218
217
  // Join disclaimer as a single string.
219
- disclaimer: `${gcpLength._disclaimer.reduce((lines, line) => {
218
+ disclaimer: `${sourceData._disclaimer.reduce((lines, line) => {
220
219
  if (lines.length === 0 || lines[lines.length - 1] === "" || line === "") {
221
220
  lines.push(line);
222
221
  }
@@ -229,7 +228,7 @@ export async function loadData(gcpLengthCache) {
229
228
  childNodes: []
230
229
  };
231
230
  let branchesAdded = 1;
232
- for (const entry of gcpLength.GCPPrefixFormatList.entry) {
231
+ for (const entry of sourceData.GCPPrefixFormatList.entry) {
233
232
  branchesAdded += addEntry(root, entry.prefix, entry.gcpLength);
234
233
  }
235
234
  // Each branch has ten (some possibly undefined) entries, two per byte.
@@ -1 +1 @@
1
- {"version":3,"file":"gcp-length.js","sourceRoot":"","sources":["../src/gcp-length.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gcp-length.js","sourceRoot":"","sources":["../src/gcp-length.ts"],"names":[],"mappings":"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"}