ml-cache 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +599 -0
  3. package/dist/client.d.ts +175 -0
  4. package/dist/client.d.ts.map +1 -0
  5. package/dist/client.js +411 -0
  6. package/dist/client.js.map +1 -0
  7. package/dist/constants.d.ts +184 -0
  8. package/dist/constants.d.ts.map +1 -0
  9. package/dist/constants.js +236 -0
  10. package/dist/constants.js.map +1 -0
  11. package/dist/esm/client.d.ts +175 -0
  12. package/dist/esm/client.d.ts.map +1 -0
  13. package/dist/esm/client.js +407 -0
  14. package/dist/esm/client.js.map +1 -0
  15. package/dist/esm/constants.d.ts +184 -0
  16. package/dist/esm/constants.d.ts.map +1 -0
  17. package/dist/esm/constants.js +233 -0
  18. package/dist/esm/constants.js.map +1 -0
  19. package/dist/esm/index.d.ts +58 -0
  20. package/dist/esm/index.d.ts.map +1 -0
  21. package/dist/esm/index.js.map +1 -0
  22. package/dist/esm/queue.d.ts +106 -0
  23. package/dist/esm/queue.d.ts.map +1 -0
  24. package/dist/esm/queue.js +207 -0
  25. package/dist/esm/queue.js.map +1 -0
  26. package/dist/esm/storage/glacier-storage.d.ts +77 -0
  27. package/dist/esm/storage/glacier-storage.d.ts.map +1 -0
  28. package/dist/esm/storage/glacier-storage.js +133 -0
  29. package/dist/esm/storage/glacier-storage.js.map +1 -0
  30. package/dist/esm/storage/index.d.ts +7 -0
  31. package/dist/esm/storage/index.d.ts.map +1 -0
  32. package/dist/esm/storage/index.js +7 -0
  33. package/dist/esm/storage/index.js.map +1 -0
  34. package/dist/esm/storage/s3-storage.d.ts +89 -0
  35. package/dist/esm/storage/s3-storage.d.ts.map +1 -0
  36. package/dist/esm/storage/s3-storage.js +161 -0
  37. package/dist/esm/storage/s3-storage.js.map +1 -0
  38. package/dist/esm/types/index.d.ts +337 -0
  39. package/dist/esm/types/index.d.ts.map +1 -0
  40. package/dist/esm/types/index.js +6 -0
  41. package/dist/esm/types/index.js.map +1 -0
  42. package/dist/esm/utils/helpers.d.ts +132 -0
  43. package/dist/esm/utils/helpers.d.ts.map +1 -0
  44. package/dist/esm/utils/helpers.js +198 -0
  45. package/dist/esm/utils/helpers.js.map +1 -0
  46. package/dist/esm/utils/index.d.ts +8 -0
  47. package/dist/esm/utils/index.d.ts.map +1 -0
  48. package/dist/esm/utils/index.js +8 -0
  49. package/dist/esm/utils/index.js.map +1 -0
  50. package/dist/esm/utils/logger.d.ts +110 -0
  51. package/dist/esm/utils/logger.d.ts.map +1 -0
  52. package/dist/esm/utils/logger.js +177 -0
  53. package/dist/esm/utils/logger.js.map +1 -0
  54. package/dist/esm/utils/validator.d.ts +77 -0
  55. package/dist/esm/utils/validator.d.ts.map +1 -0
  56. package/dist/esm/utils/validator.js +208 -0
  57. package/dist/esm/utils/validator.js.map +1 -0
  58. package/dist/index.d.ts +58 -0
  59. package/dist/index.d.ts.map +1 -0
  60. package/dist/index.js +100 -0
  61. package/dist/index.js.map +1 -0
  62. package/dist/index.mjs +72 -0
  63. package/dist/queue.d.ts +106 -0
  64. package/dist/queue.d.ts.map +1 -0
  65. package/dist/queue.js +211 -0
  66. package/dist/queue.js.map +1 -0
  67. package/dist/storage/glacier-storage.d.ts +77 -0
  68. package/dist/storage/glacier-storage.d.ts.map +1 -0
  69. package/dist/storage/glacier-storage.js +137 -0
  70. package/dist/storage/glacier-storage.js.map +1 -0
  71. package/dist/storage/index.d.ts +7 -0
  72. package/dist/storage/index.d.ts.map +1 -0
  73. package/dist/storage/index.js +12 -0
  74. package/dist/storage/index.js.map +1 -0
  75. package/dist/storage/s3-storage.d.ts +89 -0
  76. package/dist/storage/s3-storage.d.ts.map +1 -0
  77. package/dist/storage/s3-storage.js +165 -0
  78. package/dist/storage/s3-storage.js.map +1 -0
  79. package/dist/types/index.d.ts +337 -0
  80. package/dist/types/index.d.ts.map +1 -0
  81. package/dist/types/index.js +7 -0
  82. package/dist/types/index.js.map +1 -0
  83. package/dist/utils/helpers.d.ts +132 -0
  84. package/dist/utils/helpers.d.ts.map +1 -0
  85. package/dist/utils/helpers.js +215 -0
  86. package/dist/utils/helpers.js.map +1 -0
  87. package/dist/utils/index.d.ts +8 -0
  88. package/dist/utils/index.d.ts.map +1 -0
  89. package/dist/utils/index.js +35 -0
  90. package/dist/utils/index.js.map +1 -0
  91. package/dist/utils/logger.d.ts +110 -0
  92. package/dist/utils/logger.d.ts.map +1 -0
  93. package/dist/utils/logger.js +181 -0
  94. package/dist/utils/logger.js.map +1 -0
  95. package/dist/utils/validator.d.ts +77 -0
  96. package/dist/utils/validator.d.ts.map +1 -0
  97. package/dist/utils/validator.js +221 -0
  98. package/dist/utils/validator.js.map +1 -0
  99. package/package.json +64 -0
@@ -0,0 +1,215 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Helper utilities for ml-cache SDK
4
+ * @module ml-cache/utils/helpers
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.generateEventId = generateEventId;
8
+ exports.generateTimestamp = generateTimestamp;
9
+ exports.generateBatchId = generateBatchId;
10
+ exports.createEventMetadata = createEventMetadata;
11
+ exports.enrichEvent = enrichEvent;
12
+ exports.generateS3Key = generateS3Key;
13
+ exports.generateGlacierDescription = generateGlacierDescription;
14
+ exports.serializeEventsToNDJSON = serializeEventsToNDJSON;
15
+ exports.deserializeEventsFromNDJSON = deserializeEventsFromNDJSON;
16
+ exports.calculateEventsSize = calculateEventsSize;
17
+ exports.calculateRetryDelay = calculateRetryDelay;
18
+ exports.sleep = sleep;
19
+ exports.chunk = chunk;
20
+ exports.deepClone = deepClone;
21
+ exports.safeStringify = safeStringify;
22
+ const crypto_1 = require("crypto");
23
+ const constants_1 = require("../constants");
24
+ /**
25
+ * Generates a unique event ID using UUID v4
26
+ * @returns {string} Unique event ID
27
+ */
28
+ function generateEventId() {
29
+ return (0, crypto_1.randomUUID)();
30
+ }
31
+ /**
32
+ * Generates an ISO 8601 timestamp for the current time
33
+ * @returns {string} ISO 8601 timestamp
34
+ */
35
+ function generateTimestamp() {
36
+ return new Date().toISOString();
37
+ }
38
+ /**
39
+ * Generates a unique batch ID
40
+ * @returns {string} Unique batch ID
41
+ */
42
+ function generateBatchId() {
43
+ return `batch_${Date.now()}_${(0, crypto_1.randomUUID)().slice(0, 8)}`;
44
+ }
45
+ /**
46
+ * Creates event metadata
47
+ * @param {Object} options - Metadata options
48
+ * @param {string} [options.sourceApp] - Source application name
49
+ * @param {string} [options.environment] - Environment name
50
+ * @param {string} [options.batchId] - Batch ID
51
+ * @param {number} [options.retryCount] - Retry attempt count
52
+ * @returns {EventMetadata} Event metadata object
53
+ */
54
+ function createEventMetadata(options) {
55
+ return {
56
+ sdkVersion: constants_1.SDK_VERSION,
57
+ sourceApp: options.sourceApp,
58
+ environment: options.environment,
59
+ batchId: options.batchId,
60
+ retryCount: options.retryCount,
61
+ };
62
+ }
63
+ /**
64
+ * Enriches an event with auto-generated fields
65
+ * @param {MLCacheEvent} event - Event to enrich
66
+ * @param {Object} options - Enrichment options
67
+ * @param {string} [options.sourceApp] - Source application name
68
+ * @param {string} [options.environment] - Environment name
69
+ * @returns {MLCacheEvent} Enriched event
70
+ */
71
+ function enrichEvent(event, options = {}) {
72
+ return {
73
+ ...event,
74
+ eventId: event.eventId || generateEventId(),
75
+ timestamp: event.timestamp || generateTimestamp(),
76
+ metadata: {
77
+ ...createEventMetadata(options),
78
+ ...event.metadata,
79
+ },
80
+ };
81
+ }
82
+ /**
83
+ * Generates an S3 object key for an event or batch
84
+ * @param {Object} options - Key generation options
85
+ * @param {string} [options.prefix] - S3 prefix
86
+ * @param {Date} [options.date] - Date for partitioning
87
+ * @param {string} [options.eventId] - Event ID
88
+ * @param {string} [options.batchId] - Batch ID
89
+ * @param {string} [options.extension] - File extension
90
+ * @returns {string} S3 object key
91
+ */
92
+ function generateS3Key(options) {
93
+ const prefix = options.prefix || constants_1.DEFAULT_S3_PREFIX;
94
+ const date = options.date || new Date();
95
+ const extension = options.extension || 'ndjson';
96
+ const year = date.getUTCFullYear();
97
+ const month = String(date.getUTCMonth() + 1).padStart(2, '0');
98
+ const day = String(date.getUTCDate()).padStart(2, '0');
99
+ const hour = String(date.getUTCHours()).padStart(2, '0');
100
+ const identifier = options.batchId || options.eventId || generateEventId();
101
+ return `${prefix}/${year}/${month}/${day}/${hour}/${identifier}.${extension}`;
102
+ }
103
+ /**
104
+ * Generates a Glacier archive description
105
+ * @param {Object} options - Description options
106
+ * @param {string} [options.batchId] - Batch ID
107
+ * @param {number} [options.eventCount] - Number of events in archive
108
+ * @param {Date} [options.date] - Archive date
109
+ * @returns {string} Archive description
110
+ */
111
+ function generateGlacierDescription(options) {
112
+ const date = options.date || new Date();
113
+ const parts = [
114
+ 'ml-cache-events',
115
+ date.toISOString().slice(0, 10),
116
+ options.batchId || generateBatchId(),
117
+ ];
118
+ if (options.eventCount !== undefined) {
119
+ parts.push(`count:${options.eventCount}`);
120
+ }
121
+ return parts.join('_');
122
+ }
123
+ /**
124
+ * Serializes events to NDJSON format
125
+ * @param {MLCacheEvent[]} events - Events to serialize
126
+ * @returns {string} NDJSON string
127
+ */
128
+ function serializeEventsToNDJSON(events) {
129
+ return events.map((event) => JSON.stringify(event)).join('\n');
130
+ }
131
+ /**
132
+ * Deserializes events from NDJSON format
133
+ * @param {string} ndjson - NDJSON string
134
+ * @returns {MLCacheEvent[]} Parsed events
135
+ */
136
+ function deserializeEventsFromNDJSON(ndjson) {
137
+ return ndjson
138
+ .split('\n')
139
+ .filter((line) => line.trim())
140
+ .map((line) => JSON.parse(line));
141
+ }
142
+ /**
143
+ * Calculates the size of serialized events in bytes
144
+ * @param {MLCacheEvent[]} events - Events to measure
145
+ * @returns {number} Size in bytes
146
+ */
147
+ function calculateEventsSize(events) {
148
+ const serialized = serializeEventsToNDJSON(events);
149
+ return Buffer.byteLength(serialized, 'utf8');
150
+ }
151
+ /**
152
+ * Calculates retry delay with optional exponential backoff
153
+ * @param {number} attempt - Current attempt number (0-indexed)
154
+ * @param {number} initialDelayMs - Initial delay in milliseconds
155
+ * @param {number} maxDelayMs - Maximum delay in milliseconds
156
+ * @param {boolean} exponential - Use exponential backoff
157
+ * @returns {number} Delay in milliseconds
158
+ */
159
+ function calculateRetryDelay(attempt, initialDelayMs, maxDelayMs, exponential) {
160
+ if (!exponential) {
161
+ return Math.min(initialDelayMs, maxDelayMs);
162
+ }
163
+ const delay = initialDelayMs * Math.pow(2, attempt);
164
+ const jitter = Math.random() * 0.1 * delay;
165
+ return Math.min(delay + jitter, maxDelayMs);
166
+ }
167
+ /**
168
+ * Sleeps for a specified duration
169
+ * @param {number} ms - Duration in milliseconds
170
+ * @returns {Promise<void>} Promise that resolves after the delay
171
+ */
172
+ function sleep(ms) {
173
+ return new Promise((resolve) => setTimeout(resolve, ms));
174
+ }
175
+ /**
176
+ * Chunks an array into smaller arrays
177
+ * @template T
178
+ * @param {T[]} array - Array to chunk
179
+ * @param {number} size - Chunk size
180
+ * @returns {T[][]} Array of chunks
181
+ */
182
+ function chunk(array, size) {
183
+ const chunks = [];
184
+ for (let i = 0; i < array.length; i += size) {
185
+ chunks.push(array.slice(i, i + size));
186
+ }
187
+ return chunks;
188
+ }
189
+ /**
190
+ * Deep clones an object
191
+ * @template T
192
+ * @param {T} obj - Object to clone
193
+ * @returns {T} Cloned object
194
+ */
195
+ function deepClone(obj) {
196
+ return JSON.parse(JSON.stringify(obj));
197
+ }
198
+ /**
199
+ * Safely stringifies an object, handling circular references
200
+ * @param {unknown} obj - Object to stringify
201
+ * @returns {string} JSON string
202
+ */
203
+ function safeStringify(obj) {
204
+ const seen = new WeakSet();
205
+ return JSON.stringify(obj, (_key, value) => {
206
+ if (typeof value === 'object' && value !== null) {
207
+ if (seen.has(value)) {
208
+ return '[Circular]';
209
+ }
210
+ seen.add(value);
211
+ }
212
+ return value;
213
+ });
214
+ }
215
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAUH,0CAEC;AAMD,8CAEC;AAMD,0CAEC;AAWD,kDAaC;AAUD,kCAgBC;AAYD,sCAmBC;AAUD,gEAiBC;AAOD,0DAEC;AAOD,kEAKC;AAOD,kDAGC;AAUD,kDAaC;AAOD,sBAEC;AASD,sBAMC;AAQD,8BAEC;AAOD,sCAWC;AAhPD,mCAAoC;AAEpC,4CAA8D;AAE9D;;;GAGG;AACH,SAAgB,eAAe;IAC7B,OAAO,IAAA,mBAAU,GAAE,CAAC;AACtB,CAAC;AAED;;;GAGG;AACH,SAAgB,iBAAiB;IAC/B,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,SAAgB,eAAe;IAC7B,OAAO,SAAS,IAAI,CAAC,GAAG,EAAE,IAAI,IAAA,mBAAU,GAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AAC3D,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,mBAAmB,CAAC,OAKnC;IACC,OAAO;QACL,UAAU,EAAE,uBAAW;QACvB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,UAAU,EAAE,OAAO,CAAC,UAAU;KAC/B,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,WAAW,CACzB,KAAmB,EACnB,UAGI,EAAE;IAEN,OAAO;QACL,GAAG,KAAK;QACR,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,eAAe,EAAE;QAC3C,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,iBAAiB,EAAE;QACjD,QAAQ,EAAE;YACR,GAAG,mBAAmB,CAAC,OAAO,CAAC;YAC/B,GAAG,KAAK,CAAC,QAAQ;SAClB;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,aAAa,CAAC,OAM7B;IACC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,6BAAiB,CAAC;IACnD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;IACxC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,QAAQ,CAAC;IAEhD,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAEzD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,IAAI,eAAe,EAAE,CAAC;IAE3E,OAAO,GAAG,MAAM,IAAI,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,UAAU,IAAI,SAAS,EAAE,CAAC;AAChF,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,0BAA0B,CAAC,OAI1C;IACC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG;QACZ,iBAAiB;QACjB,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QAC/B,OAAO,CAAC,OAAO,IAAI,eAAe,EAAE;KACrC,CAAC;IAEF,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED;;;;GAIG;AACH,SAAgB,uBAAuB,CAAC,MAAsB;IAC5D,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjE,CAAC;AAED;;;;GAIG;AACH,SAAgB,2BAA2B,CAAC,MAAc;IACxD,OAAO,MAAM;SACV,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC7B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAiB,CAAC,CAAC;AACrD,CAAC;AAED;;;;GAIG;AACH,SAAgB,mBAAmB,CAAC,MAAsB;IACxD,MAAM,UAAU,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACnD,OAAO,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,mBAAmB,CACjC,OAAe,EACf,cAAsB,EACtB,UAAkB,EAClB,WAAoB;IAEpB,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,KAAK,GAAG,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC;IAC3C,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,EAAE,UAAU,CAAC,CAAC;AAC9C,CAAC;AAED;;;;GAIG;AACH,SAAgB,KAAK,CAAC,EAAU;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,KAAK,CAAI,KAAU,EAAE,IAAY;IAC/C,MAAM,MAAM,GAAU,EAAE,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,SAAS,CAAI,GAAM;IACjC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,SAAgB,aAAa,CAAC,GAAY;IACxC,MAAM,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;IAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACzC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAChD,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpB,OAAO,YAAY,CAAC;YACtB,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @fileoverview Utils barrel export
3
+ * @module ml-cache/utils
4
+ */
5
+ export { Logger, defaultLogger } from './logger';
6
+ export { ValidationError, validateConfig, validateEvent, validateEventType, validateEventProperties, isValidTimestamp, isValidUUID } from './validator';
7
+ export { generateEventId, generateTimestamp, generateBatchId, createEventMetadata, enrichEvent, generateS3Key, generateGlacierDescription, serializeEventsToNDJSON, deserializeEventsFromNDJSON, calculateEventsSize, calculateRetryDelay, sleep, chunk, deepClone, safeStringify, } from './helpers';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACxJ,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,WAAW,EACX,aAAa,EACb,0BAA0B,EAC1B,uBAAuB,EACvB,2BAA2B,EAC3B,mBAAmB,EACnB,mBAAmB,EACnB,KAAK,EACL,KAAK,EACL,SAAS,EACT,aAAa,GACd,MAAM,WAAW,CAAC"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Utils barrel export
4
+ * @module ml-cache/utils
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.safeStringify = exports.deepClone = exports.chunk = exports.sleep = exports.calculateRetryDelay = exports.calculateEventsSize = exports.deserializeEventsFromNDJSON = exports.serializeEventsToNDJSON = exports.generateGlacierDescription = exports.generateS3Key = exports.enrichEvent = exports.createEventMetadata = exports.generateBatchId = exports.generateTimestamp = exports.generateEventId = exports.isValidUUID = exports.isValidTimestamp = exports.validateEventProperties = exports.validateEventType = exports.validateEvent = exports.validateConfig = exports.ValidationError = exports.defaultLogger = exports.Logger = void 0;
8
+ var logger_1 = require("./logger");
9
+ Object.defineProperty(exports, "Logger", { enumerable: true, get: function () { return logger_1.Logger; } });
10
+ Object.defineProperty(exports, "defaultLogger", { enumerable: true, get: function () { return logger_1.defaultLogger; } });
11
+ var validator_1 = require("./validator");
12
+ Object.defineProperty(exports, "ValidationError", { enumerable: true, get: function () { return validator_1.ValidationError; } });
13
+ Object.defineProperty(exports, "validateConfig", { enumerable: true, get: function () { return validator_1.validateConfig; } });
14
+ Object.defineProperty(exports, "validateEvent", { enumerable: true, get: function () { return validator_1.validateEvent; } });
15
+ Object.defineProperty(exports, "validateEventType", { enumerable: true, get: function () { return validator_1.validateEventType; } });
16
+ Object.defineProperty(exports, "validateEventProperties", { enumerable: true, get: function () { return validator_1.validateEventProperties; } });
17
+ Object.defineProperty(exports, "isValidTimestamp", { enumerable: true, get: function () { return validator_1.isValidTimestamp; } });
18
+ Object.defineProperty(exports, "isValidUUID", { enumerable: true, get: function () { return validator_1.isValidUUID; } });
19
+ var helpers_1 = require("./helpers");
20
+ Object.defineProperty(exports, "generateEventId", { enumerable: true, get: function () { return helpers_1.generateEventId; } });
21
+ Object.defineProperty(exports, "generateTimestamp", { enumerable: true, get: function () { return helpers_1.generateTimestamp; } });
22
+ Object.defineProperty(exports, "generateBatchId", { enumerable: true, get: function () { return helpers_1.generateBatchId; } });
23
+ Object.defineProperty(exports, "createEventMetadata", { enumerable: true, get: function () { return helpers_1.createEventMetadata; } });
24
+ Object.defineProperty(exports, "enrichEvent", { enumerable: true, get: function () { return helpers_1.enrichEvent; } });
25
+ Object.defineProperty(exports, "generateS3Key", { enumerable: true, get: function () { return helpers_1.generateS3Key; } });
26
+ Object.defineProperty(exports, "generateGlacierDescription", { enumerable: true, get: function () { return helpers_1.generateGlacierDescription; } });
27
+ Object.defineProperty(exports, "serializeEventsToNDJSON", { enumerable: true, get: function () { return helpers_1.serializeEventsToNDJSON; } });
28
+ Object.defineProperty(exports, "deserializeEventsFromNDJSON", { enumerable: true, get: function () { return helpers_1.deserializeEventsFromNDJSON; } });
29
+ Object.defineProperty(exports, "calculateEventsSize", { enumerable: true, get: function () { return helpers_1.calculateEventsSize; } });
30
+ Object.defineProperty(exports, "calculateRetryDelay", { enumerable: true, get: function () { return helpers_1.calculateRetryDelay; } });
31
+ Object.defineProperty(exports, "sleep", { enumerable: true, get: function () { return helpers_1.sleep; } });
32
+ Object.defineProperty(exports, "chunk", { enumerable: true, get: function () { return helpers_1.chunk; } });
33
+ Object.defineProperty(exports, "deepClone", { enumerable: true, get: function () { return helpers_1.deepClone; } });
34
+ Object.defineProperty(exports, "safeStringify", { enumerable: true, get: function () { return helpers_1.safeStringify; } });
35
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,mCAAiD;AAAxC,gGAAA,MAAM,OAAA;AAAE,uGAAA,aAAa,OAAA;AAC9B,yCAAwJ;AAA/I,4GAAA,eAAe,OAAA;AAAE,2GAAA,cAAc,OAAA;AAAE,0GAAA,aAAa,OAAA;AAAE,8GAAA,iBAAiB,OAAA;AAAE,oHAAA,uBAAuB,OAAA;AAAE,6GAAA,gBAAgB,OAAA;AAAE,wGAAA,WAAW,OAAA;AAClI,qCAgBmB;AAfjB,0GAAA,eAAe,OAAA;AACf,4GAAA,iBAAiB,OAAA;AACjB,0GAAA,eAAe,OAAA;AACf,8GAAA,mBAAmB,OAAA;AACnB,sGAAA,WAAW,OAAA;AACX,wGAAA,aAAa,OAAA;AACb,qHAAA,0BAA0B,OAAA;AAC1B,kHAAA,uBAAuB,OAAA;AACvB,sHAAA,2BAA2B,OAAA;AAC3B,8GAAA,mBAAmB,OAAA;AACnB,8GAAA,mBAAmB,OAAA;AACnB,gGAAA,KAAK,OAAA;AACL,gGAAA,KAAK,OAAA;AACL,oGAAA,SAAS,OAAA;AACT,wGAAA,aAAa,OAAA"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * @fileoverview Logger utility for ml-cache SDK
3
+ * @module ml-cache/utils/logger
4
+ */
5
+ import type { LogLevel, LogConfig, LoggerFunction } from '../types';
6
+ /**
7
+ * Logger class for SDK internal logging
8
+ * @class Logger
9
+ */
10
+ export declare class Logger {
11
+ /** @private */
12
+ private config;
13
+ /** @private */
14
+ private prefix;
15
+ /**
16
+ * Creates a new Logger instance
17
+ * @param {Partial<LogConfig>} [config] - Logger configuration
18
+ * @param {string} [prefix] - Log message prefix
19
+ */
20
+ constructor(config?: Partial<LogConfig>, prefix?: string);
21
+ /**
22
+ * Checks if a log level should be output
23
+ * @private
24
+ * @param {LogLevel} level - Log level to check
25
+ * @returns {boolean} Whether the level should be logged
26
+ */
27
+ private shouldLog;
28
+ /**
29
+ * Formats a log message with timestamp and prefix
30
+ * @private
31
+ * @param {LogLevel} level - Log level
32
+ * @param {string} message - Log message
33
+ * @returns {string} Formatted message
34
+ */
35
+ private formatMessage;
36
+ /**
37
+ * Outputs a log message
38
+ * @private
39
+ * @param {LogLevel} level - Log level
40
+ * @param {string} message - Log message
41
+ * @param {Record<string, unknown>} [data] - Additional data
42
+ */
43
+ private log;
44
+ /**
45
+ * Gets the appropriate console method for a log level
46
+ * @private
47
+ * @param {LogLevel} level - Log level
48
+ * @returns {Function} Console method
49
+ */
50
+ private getConsoleMethod;
51
+ /**
52
+ * Logs a debug message
53
+ * @param {string} message - Debug message
54
+ * @param {Record<string, unknown>} [data] - Additional data
55
+ */
56
+ debug(message: string, data?: Record<string, unknown>): void;
57
+ /**
58
+ * Logs an info message
59
+ * @param {string} message - Info message
60
+ * @param {Record<string, unknown>} [data] - Additional data
61
+ */
62
+ info(message: string, data?: Record<string, unknown>): void;
63
+ /**
64
+ * Logs a warning message
65
+ * @param {string} message - Warning message
66
+ * @param {Record<string, unknown>} [data] - Additional data
67
+ */
68
+ warn(message: string, data?: Record<string, unknown>): void;
69
+ /**
70
+ * Logs an error message
71
+ * @param {string} message - Error message
72
+ * @param {Record<string, unknown>} [data] - Additional data
73
+ */
74
+ error(message: string, data?: Record<string, unknown>): void;
75
+ /**
76
+ * Updates logger configuration
77
+ * @param {Partial<LogConfig>} config - New configuration
78
+ */
79
+ setConfig(config: Partial<LogConfig>): void;
80
+ /**
81
+ * Sets the log level
82
+ * @param {LogLevel} level - New log level
83
+ */
84
+ setLevel(level: LogLevel): void;
85
+ /**
86
+ * Enables logging
87
+ */
88
+ enable(): void;
89
+ /**
90
+ * Disables logging
91
+ */
92
+ disable(): void;
93
+ /**
94
+ * Sets a custom logger function
95
+ * @param {LoggerFunction} logger - Custom logger function
96
+ */
97
+ setCustomLogger(logger: LoggerFunction): void;
98
+ /**
99
+ * Creates a child logger with a new prefix
100
+ * @param {string} childPrefix - Additional prefix for child logger
101
+ * @returns {Logger} New logger instance
102
+ */
103
+ child(childPrefix: string): Logger;
104
+ }
105
+ /**
106
+ * Default logger instance
107
+ * @constant
108
+ */
109
+ export declare const defaultLogger: Logger;
110
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAepE;;;GAGG;AACH,qBAAa,MAAM;IACjB,eAAe;IACf,OAAO,CAAC,MAAM,CAAY;IAE1B,eAAe;IACf,OAAO,CAAC,MAAM,CAAS;IAEvB;;;;OAIG;gBACS,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,MAAM,GAAE,MAAqB;IAKtE;;;;;OAKG;IACH,OAAO,CAAC,SAAS;IAOjB;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAKrB;;;;;;OAMG;IACH,OAAO,CAAC,GAAG;IAwBX;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAiBxB;;;;OAIG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI5D;;;;OAIG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI3D;;;;OAIG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI3D;;;;OAIG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI5D;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI;IAI3C;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAI/B;;OAEG;IACH,MAAM,IAAI,IAAI;IAId;;OAEG;IACH,OAAO,IAAI,IAAI;IAIf;;;OAGG;IACH,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAI7C;;;;OAIG;IACH,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;CAGnC;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,QAAe,CAAC"}
@@ -0,0 +1,181 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Logger utility for ml-cache SDK
4
+ * @module ml-cache/utils/logger
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.defaultLogger = exports.Logger = void 0;
8
+ const constants_1 = require("../constants");
9
+ /**
10
+ * Log level priority map (lower = more verbose)
11
+ * @constant
12
+ */
13
+ const LOG_LEVEL_PRIORITY = {
14
+ debug: 0,
15
+ info: 1,
16
+ warn: 2,
17
+ error: 3,
18
+ silent: 4,
19
+ };
20
+ /**
21
+ * Logger class for SDK internal logging
22
+ * @class Logger
23
+ */
24
+ class Logger {
25
+ /**
26
+ * Creates a new Logger instance
27
+ * @param {Partial<LogConfig>} [config] - Logger configuration
28
+ * @param {string} [prefix] - Log message prefix
29
+ */
30
+ constructor(config, prefix = '[ml-cache]') {
31
+ this.config = { ...constants_1.DEFAULT_LOG_CONFIG, ...config };
32
+ this.prefix = prefix;
33
+ }
34
+ /**
35
+ * Checks if a log level should be output
36
+ * @private
37
+ * @param {LogLevel} level - Log level to check
38
+ * @returns {boolean} Whether the level should be logged
39
+ */
40
+ shouldLog(level) {
41
+ if (!this.config.enabled) {
42
+ return false;
43
+ }
44
+ return LOG_LEVEL_PRIORITY[level] >= LOG_LEVEL_PRIORITY[this.config.level];
45
+ }
46
+ /**
47
+ * Formats a log message with timestamp and prefix
48
+ * @private
49
+ * @param {LogLevel} level - Log level
50
+ * @param {string} message - Log message
51
+ * @returns {string} Formatted message
52
+ */
53
+ formatMessage(level, message) {
54
+ const timestamp = new Date().toISOString();
55
+ return `${timestamp} ${this.prefix} [${level.toUpperCase()}] ${message}`;
56
+ }
57
+ /**
58
+ * Outputs a log message
59
+ * @private
60
+ * @param {LogLevel} level - Log level
61
+ * @param {string} message - Log message
62
+ * @param {Record<string, unknown>} [data] - Additional data
63
+ */
64
+ log(level, message, data) {
65
+ if (!this.shouldLog(level)) {
66
+ return;
67
+ }
68
+ if (this.config.customLogger) {
69
+ this.config.customLogger(level, message, data);
70
+ return;
71
+ }
72
+ const formattedMessage = this.formatMessage(level, message);
73
+ const consoleMethod = this.getConsoleMethod(level);
74
+ if (data) {
75
+ consoleMethod(formattedMessage, data);
76
+ }
77
+ else {
78
+ consoleMethod(formattedMessage);
79
+ }
80
+ }
81
+ /**
82
+ * Gets the appropriate console method for a log level
83
+ * @private
84
+ * @param {LogLevel} level - Log level
85
+ * @returns {Function} Console method
86
+ */
87
+ getConsoleMethod(level) {
88
+ switch (level) {
89
+ case 'debug':
90
+ return console.debug.bind(console);
91
+ case 'info':
92
+ return console.info.bind(console);
93
+ case 'warn':
94
+ return console.warn.bind(console);
95
+ case 'error':
96
+ return console.error.bind(console);
97
+ default:
98
+ return console.log.bind(console);
99
+ }
100
+ }
101
+ /**
102
+ * Logs a debug message
103
+ * @param {string} message - Debug message
104
+ * @param {Record<string, unknown>} [data] - Additional data
105
+ */
106
+ debug(message, data) {
107
+ this.log('debug', message, data);
108
+ }
109
+ /**
110
+ * Logs an info message
111
+ * @param {string} message - Info message
112
+ * @param {Record<string, unknown>} [data] - Additional data
113
+ */
114
+ info(message, data) {
115
+ this.log('info', message, data);
116
+ }
117
+ /**
118
+ * Logs a warning message
119
+ * @param {string} message - Warning message
120
+ * @param {Record<string, unknown>} [data] - Additional data
121
+ */
122
+ warn(message, data) {
123
+ this.log('warn', message, data);
124
+ }
125
+ /**
126
+ * Logs an error message
127
+ * @param {string} message - Error message
128
+ * @param {Record<string, unknown>} [data] - Additional data
129
+ */
130
+ error(message, data) {
131
+ this.log('error', message, data);
132
+ }
133
+ /**
134
+ * Updates logger configuration
135
+ * @param {Partial<LogConfig>} config - New configuration
136
+ */
137
+ setConfig(config) {
138
+ this.config = { ...this.config, ...config };
139
+ }
140
+ /**
141
+ * Sets the log level
142
+ * @param {LogLevel} level - New log level
143
+ */
144
+ setLevel(level) {
145
+ this.config.level = level;
146
+ }
147
+ /**
148
+ * Enables logging
149
+ */
150
+ enable() {
151
+ this.config.enabled = true;
152
+ }
153
+ /**
154
+ * Disables logging
155
+ */
156
+ disable() {
157
+ this.config.enabled = false;
158
+ }
159
+ /**
160
+ * Sets a custom logger function
161
+ * @param {LoggerFunction} logger - Custom logger function
162
+ */
163
+ setCustomLogger(logger) {
164
+ this.config.customLogger = logger;
165
+ }
166
+ /**
167
+ * Creates a child logger with a new prefix
168
+ * @param {string} childPrefix - Additional prefix for child logger
169
+ * @returns {Logger} New logger instance
170
+ */
171
+ child(childPrefix) {
172
+ return new Logger(this.config, `${this.prefix}:${childPrefix}`);
173
+ }
174
+ }
175
+ exports.Logger = Logger;
176
+ /**
177
+ * Default logger instance
178
+ * @constant
179
+ */
180
+ exports.defaultLogger = new Logger();
181
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * @fileoverview Validation utilities for ml-cache SDK
3
+ * @module ml-cache/utils/validator
4
+ */
5
+ import type { MLCacheConfig, MLCacheEvent, S3Config, GlacierConfig, AWSCredentials } from '../types';
6
+ /**
7
+ * Validation error class
8
+ * @class ValidationError
9
+ * @extends Error
10
+ */
11
+ export declare class ValidationError extends Error {
12
+ /** Error code */
13
+ code: string;
14
+ /** Field that failed validation */
15
+ field?: string;
16
+ /**
17
+ * Creates a new ValidationError
18
+ * @param {string} message - Error message
19
+ * @param {string} [field] - Field that failed validation
20
+ */
21
+ constructor(message: string, field?: string);
22
+ }
23
+ /**
24
+ * Validates AWS credentials
25
+ * @param {AWSCredentials} credentials - AWS credentials to validate
26
+ * @throws {ValidationError} If credentials are invalid
27
+ */
28
+ export declare function validateCredentials(credentials: AWSCredentials): void;
29
+ /**
30
+ * Validates S3 configuration
31
+ * @param {S3Config} config - S3 configuration to validate
32
+ * @throws {ValidationError} If configuration is invalid
33
+ */
34
+ export declare function validateS3Config(config: S3Config): void;
35
+ /**
36
+ * Validates Glacier configuration
37
+ * @param {GlacierConfig} config - Glacier configuration to validate
38
+ * @throws {ValidationError} If configuration is invalid
39
+ */
40
+ export declare function validateGlacierConfig(config: GlacierConfig): void;
41
+ /**
42
+ * Validates complete SDK configuration
43
+ * @param {MLCacheConfig} config - SDK configuration to validate
44
+ * @throws {ValidationError} If configuration is invalid
45
+ */
46
+ export declare function validateConfig(config: MLCacheConfig): void;
47
+ /**
48
+ * Validates an event type string
49
+ * @param {string} eventType - Event type to validate
50
+ * @throws {ValidationError} If event type is invalid
51
+ */
52
+ export declare function validateEventType(eventType: string): void;
53
+ /**
54
+ * Validates event properties
55
+ * @param {Record<string, unknown>} properties - Properties to validate
56
+ * @throws {ValidationError} If properties are invalid
57
+ */
58
+ export declare function validateEventProperties(properties: Record<string, unknown>): void;
59
+ /**
60
+ * Validates a complete event
61
+ * @param {MLCacheEvent} event - Event to validate
62
+ * @throws {ValidationError} If event is invalid
63
+ */
64
+ export declare function validateEvent(event: MLCacheEvent): void;
65
+ /**
66
+ * Checks if a value is a valid ISO 8601 timestamp
67
+ * @param {string} timestamp - Timestamp to validate
68
+ * @returns {boolean} Whether the timestamp is valid
69
+ */
70
+ export declare function isValidTimestamp(timestamp: string): boolean;
71
+ /**
72
+ * Checks if a value is a valid UUID
73
+ * @param {string} uuid - UUID to validate
74
+ * @returns {boolean} Whether the UUID is valid
75
+ */
76
+ export declare function isValidUUID(uuid: string): boolean;
77
+ //# sourceMappingURL=validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/utils/validator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,cAAc,EACf,MAAM,UAAU,CAAC;AASlB;;;;GAIG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IACxC,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IAEb,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;OAIG;gBACS,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;CAM5C;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,cAAc,GAAG,IAAI,CA+BrE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,CAsBvD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAkBjE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CA8E1D;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAqBzD;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,IAAI,CAoBN;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAkBvD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAO3D;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAQjD"}