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.
- package/LICENSE +21 -0
- package/README.md +599 -0
- package/dist/client.d.ts +175 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +411 -0
- package/dist/client.js.map +1 -0
- package/dist/constants.d.ts +184 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +236 -0
- package/dist/constants.js.map +1 -0
- package/dist/esm/client.d.ts +175 -0
- package/dist/esm/client.d.ts.map +1 -0
- package/dist/esm/client.js +407 -0
- package/dist/esm/client.js.map +1 -0
- package/dist/esm/constants.d.ts +184 -0
- package/dist/esm/constants.d.ts.map +1 -0
- package/dist/esm/constants.js +233 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/index.d.ts +58 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/queue.d.ts +106 -0
- package/dist/esm/queue.d.ts.map +1 -0
- package/dist/esm/queue.js +207 -0
- package/dist/esm/queue.js.map +1 -0
- package/dist/esm/storage/glacier-storage.d.ts +77 -0
- package/dist/esm/storage/glacier-storage.d.ts.map +1 -0
- package/dist/esm/storage/glacier-storage.js +133 -0
- package/dist/esm/storage/glacier-storage.js.map +1 -0
- package/dist/esm/storage/index.d.ts +7 -0
- package/dist/esm/storage/index.d.ts.map +1 -0
- package/dist/esm/storage/index.js +7 -0
- package/dist/esm/storage/index.js.map +1 -0
- package/dist/esm/storage/s3-storage.d.ts +89 -0
- package/dist/esm/storage/s3-storage.d.ts.map +1 -0
- package/dist/esm/storage/s3-storage.js +161 -0
- package/dist/esm/storage/s3-storage.js.map +1 -0
- package/dist/esm/types/index.d.ts +337 -0
- package/dist/esm/types/index.d.ts.map +1 -0
- package/dist/esm/types/index.js +6 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/utils/helpers.d.ts +132 -0
- package/dist/esm/utils/helpers.d.ts.map +1 -0
- package/dist/esm/utils/helpers.js +198 -0
- package/dist/esm/utils/helpers.js.map +1 -0
- package/dist/esm/utils/index.d.ts +8 -0
- package/dist/esm/utils/index.d.ts.map +1 -0
- package/dist/esm/utils/index.js +8 -0
- package/dist/esm/utils/index.js.map +1 -0
- package/dist/esm/utils/logger.d.ts +110 -0
- package/dist/esm/utils/logger.d.ts.map +1 -0
- package/dist/esm/utils/logger.js +177 -0
- package/dist/esm/utils/logger.js.map +1 -0
- package/dist/esm/utils/validator.d.ts +77 -0
- package/dist/esm/utils/validator.d.ts.map +1 -0
- package/dist/esm/utils/validator.js +208 -0
- package/dist/esm/utils/validator.js.map +1 -0
- package/dist/index.d.ts +58 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +100 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +72 -0
- package/dist/queue.d.ts +106 -0
- package/dist/queue.d.ts.map +1 -0
- package/dist/queue.js +211 -0
- package/dist/queue.js.map +1 -0
- package/dist/storage/glacier-storage.d.ts +77 -0
- package/dist/storage/glacier-storage.d.ts.map +1 -0
- package/dist/storage/glacier-storage.js +137 -0
- package/dist/storage/glacier-storage.js.map +1 -0
- package/dist/storage/index.d.ts +7 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +12 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/s3-storage.d.ts +89 -0
- package/dist/storage/s3-storage.d.ts.map +1 -0
- package/dist/storage/s3-storage.js +165 -0
- package/dist/storage/s3-storage.js.map +1 -0
- package/dist/types/index.d.ts +337 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +7 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/helpers.d.ts +132 -0
- package/dist/utils/helpers.d.ts.map +1 -0
- package/dist/utils/helpers.js +215 -0
- package/dist/utils/helpers.js.map +1 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +35 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +110 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +181 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/validator.d.ts +77 -0
- package/dist/utils/validator.d.ts.map +1 -0
- package/dist/utils/validator.js +221 -0
- package/dist/utils/validator.js.map +1 -0
- 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":"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"}
|
|
@@ -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"}
|