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,184 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Constants and default values for ml-cache SDK
|
|
3
|
+
* @module ml-cache/constants
|
|
4
|
+
*/
|
|
5
|
+
import type { BatchConfig, RetryConfig, LogConfig, S3StorageClass } from './types';
|
|
6
|
+
/**
|
|
7
|
+
* Current SDK version
|
|
8
|
+
* @constant
|
|
9
|
+
*/
|
|
10
|
+
export declare const SDK_VERSION = "1.0.0";
|
|
11
|
+
/**
|
|
12
|
+
* SDK name identifier
|
|
13
|
+
* @constant
|
|
14
|
+
*/
|
|
15
|
+
export declare const SDK_NAME = "ml-cache";
|
|
16
|
+
/**
|
|
17
|
+
* Default batch configuration
|
|
18
|
+
* @constant
|
|
19
|
+
*/
|
|
20
|
+
export declare const DEFAULT_BATCH_CONFIG: BatchConfig;
|
|
21
|
+
/**
|
|
22
|
+
* Default retry configuration
|
|
23
|
+
* @constant
|
|
24
|
+
*/
|
|
25
|
+
export declare const DEFAULT_RETRY_CONFIG: RetryConfig;
|
|
26
|
+
/**
|
|
27
|
+
* Default logging configuration
|
|
28
|
+
* @constant
|
|
29
|
+
*/
|
|
30
|
+
export declare const DEFAULT_LOG_CONFIG: LogConfig;
|
|
31
|
+
/**
|
|
32
|
+
* Default S3 storage class for long-term ML data storage
|
|
33
|
+
* @constant
|
|
34
|
+
*/
|
|
35
|
+
export declare const DEFAULT_S3_STORAGE_CLASS: S3StorageClass;
|
|
36
|
+
/**
|
|
37
|
+
* Default Glacier account ID (uses current account)
|
|
38
|
+
* @constant
|
|
39
|
+
*/
|
|
40
|
+
export declare const DEFAULT_GLACIER_ACCOUNT_ID = "-";
|
|
41
|
+
/**
|
|
42
|
+
* Maximum size of a single event payload in bytes (256 KB)
|
|
43
|
+
* @constant
|
|
44
|
+
*/
|
|
45
|
+
export declare const MAX_EVENT_SIZE_BYTES: number;
|
|
46
|
+
/**
|
|
47
|
+
* Maximum size of a batch payload in bytes (5 MB for S3 PutObject)
|
|
48
|
+
* @constant
|
|
49
|
+
*/
|
|
50
|
+
export declare const MAX_BATCH_SIZE_BYTES: number;
|
|
51
|
+
/**
|
|
52
|
+
* Minimum size for S3 multipart upload (5 MB)
|
|
53
|
+
* @constant
|
|
54
|
+
*/
|
|
55
|
+
export declare const S3_MULTIPART_THRESHOLD_BYTES: number;
|
|
56
|
+
/**
|
|
57
|
+
* Glacier archive description prefix
|
|
58
|
+
* @constant
|
|
59
|
+
*/
|
|
60
|
+
export declare const GLACIER_ARCHIVE_PREFIX = "ml-cache-events";
|
|
61
|
+
/**
|
|
62
|
+
* S3 object key date format
|
|
63
|
+
* @constant
|
|
64
|
+
*/
|
|
65
|
+
export declare const S3_KEY_DATE_FORMAT = "YYYY/MM/DD";
|
|
66
|
+
/**
|
|
67
|
+
* Default S3 object prefix
|
|
68
|
+
* @constant
|
|
69
|
+
*/
|
|
70
|
+
export declare const DEFAULT_S3_PREFIX = "ml-cache-events";
|
|
71
|
+
/**
|
|
72
|
+
* Reserved event property names that cannot be overwritten
|
|
73
|
+
* @constant
|
|
74
|
+
*/
|
|
75
|
+
export declare const RESERVED_EVENT_PROPERTIES: readonly string[];
|
|
76
|
+
/**
|
|
77
|
+
* Valid event type pattern (alphanumeric with underscores)
|
|
78
|
+
* @constant
|
|
79
|
+
*/
|
|
80
|
+
export declare const EVENT_TYPE_PATTERN: RegExp;
|
|
81
|
+
/**
|
|
82
|
+
* Maximum event type length
|
|
83
|
+
* @constant
|
|
84
|
+
*/
|
|
85
|
+
export declare const MAX_EVENT_TYPE_LENGTH = 128;
|
|
86
|
+
/**
|
|
87
|
+
* Maximum property key length
|
|
88
|
+
* @constant
|
|
89
|
+
*/
|
|
90
|
+
export declare const MAX_PROPERTY_KEY_LENGTH = 256;
|
|
91
|
+
/**
|
|
92
|
+
* Health check interval in milliseconds (5 minutes)
|
|
93
|
+
* @constant
|
|
94
|
+
*/
|
|
95
|
+
export declare const HEALTH_CHECK_INTERVAL_MS: number;
|
|
96
|
+
/**
|
|
97
|
+
* Connection timeout in milliseconds (30 seconds)
|
|
98
|
+
* @constant
|
|
99
|
+
*/
|
|
100
|
+
export declare const CONNECTION_TIMEOUT_MS = 30000;
|
|
101
|
+
/**
|
|
102
|
+
* Request timeout in milliseconds (2 minutes)
|
|
103
|
+
* @constant
|
|
104
|
+
*/
|
|
105
|
+
export declare const REQUEST_TIMEOUT_MS: number;
|
|
106
|
+
/**
|
|
107
|
+
* Shutdown grace period in milliseconds (10 seconds)
|
|
108
|
+
* @constant
|
|
109
|
+
*/
|
|
110
|
+
export declare const SHUTDOWN_GRACE_PERIOD_MS = 10000;
|
|
111
|
+
/**
|
|
112
|
+
* SDK error codes
|
|
113
|
+
* @constant
|
|
114
|
+
*/
|
|
115
|
+
export declare const ERROR_CODES: {
|
|
116
|
+
/** Configuration error */
|
|
117
|
+
readonly CONFIG_ERROR: "ML_CACHE_CONFIG_ERROR";
|
|
118
|
+
/** Validation error */
|
|
119
|
+
readonly VALIDATION_ERROR: "ML_CACHE_VALIDATION_ERROR";
|
|
120
|
+
/** S3 storage error */
|
|
121
|
+
readonly S3_ERROR: "ML_CACHE_S3_ERROR";
|
|
122
|
+
/** Glacier storage error */
|
|
123
|
+
readonly GLACIER_ERROR: "ML_CACHE_GLACIER_ERROR";
|
|
124
|
+
/** Network error */
|
|
125
|
+
readonly NETWORK_ERROR: "ML_CACHE_NETWORK_ERROR";
|
|
126
|
+
/** Timeout error */
|
|
127
|
+
readonly TIMEOUT_ERROR: "ML_CACHE_TIMEOUT_ERROR";
|
|
128
|
+
/** Queue full error */
|
|
129
|
+
readonly QUEUE_FULL_ERROR: "ML_CACHE_QUEUE_FULL_ERROR";
|
|
130
|
+
/** Event too large error */
|
|
131
|
+
readonly EVENT_TOO_LARGE_ERROR: "ML_CACHE_EVENT_TOO_LARGE_ERROR";
|
|
132
|
+
/** Batch error */
|
|
133
|
+
readonly BATCH_ERROR: "ML_CACHE_BATCH_ERROR";
|
|
134
|
+
/** Shutdown error */
|
|
135
|
+
readonly SHUTDOWN_ERROR: "ML_CACHE_SHUTDOWN_ERROR";
|
|
136
|
+
/** Unknown error */
|
|
137
|
+
readonly UNKNOWN_ERROR: "ML_CACHE_UNKNOWN_ERROR";
|
|
138
|
+
};
|
|
139
|
+
/**
|
|
140
|
+
* Error code type
|
|
141
|
+
* @typedef ErrorCode
|
|
142
|
+
*/
|
|
143
|
+
export type ErrorCode = (typeof ERROR_CODES)[keyof typeof ERROR_CODES];
|
|
144
|
+
/**
|
|
145
|
+
* Maximum queue size (number of events)
|
|
146
|
+
* @constant
|
|
147
|
+
*/
|
|
148
|
+
export declare const MAX_QUEUE_SIZE = 10000;
|
|
149
|
+
/**
|
|
150
|
+
* Queue warning threshold (80% of max)
|
|
151
|
+
* @constant
|
|
152
|
+
*/
|
|
153
|
+
export declare const QUEUE_WARNING_THRESHOLD = 0.8;
|
|
154
|
+
/**
|
|
155
|
+
* Content type for stored events (NDJSON)
|
|
156
|
+
* @constant
|
|
157
|
+
*/
|
|
158
|
+
export declare const CONTENT_TYPE_NDJSON = "application/x-ndjson";
|
|
159
|
+
/**
|
|
160
|
+
* Content type for compressed events
|
|
161
|
+
* @constant
|
|
162
|
+
*/
|
|
163
|
+
export declare const CONTENT_TYPE_GZIP = "application/gzip";
|
|
164
|
+
/**
|
|
165
|
+
* Environment variable names for configuration
|
|
166
|
+
* @constant
|
|
167
|
+
*/
|
|
168
|
+
export declare const ENV_VARS: {
|
|
169
|
+
/** AWS access key ID */
|
|
170
|
+
readonly AWS_ACCESS_KEY_ID: "AWS_ACCESS_KEY_ID";
|
|
171
|
+
/** AWS secret access key */
|
|
172
|
+
readonly AWS_SECRET_ACCESS_KEY: "AWS_SECRET_ACCESS_KEY";
|
|
173
|
+
/** AWS session token */
|
|
174
|
+
readonly AWS_SESSION_TOKEN: "AWS_SESSION_TOKEN";
|
|
175
|
+
/** AWS region */
|
|
176
|
+
readonly AWS_REGION: "AWS_REGION";
|
|
177
|
+
/** S3 bucket name */
|
|
178
|
+
readonly ML_CACHE_S3_BUCKET: "ML_CACHE_S3_BUCKET";
|
|
179
|
+
/** Glacier vault name */
|
|
180
|
+
readonly ML_CACHE_GLACIER_VAULT: "ML_CACHE_GLACIER_VAULT";
|
|
181
|
+
/** Debug mode */
|
|
182
|
+
readonly ML_CACHE_DEBUG: "ML_CACHE_DEBUG";
|
|
183
|
+
};
|
|
184
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAMnF;;;GAGG;AACH,eAAO,MAAM,WAAW,UAAU,CAAC;AAEnC;;;GAGG;AACH,eAAO,MAAM,QAAQ,aAAa,CAAC;AAMnC;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAOlC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,WASlC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAOhC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,wBAAwB,EAAE,cAA0B,CAAC;AAElE;;;GAGG;AACH,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAM9C;;;GAGG;AACH,eAAO,MAAM,oBAAoB,QAAa,CAAC;AAE/C;;;GAGG;AACH,eAAO,MAAM,oBAAoB,QAAkB,CAAC;AAEpD;;;GAGG;AACH,eAAO,MAAM,4BAA4B,QAAkB,CAAC;AAE5D;;;GAGG;AACH,eAAO,MAAM,sBAAsB,oBAAoB,CAAC;AAExD;;;GAGG;AACH,eAAO,MAAM,kBAAkB,eAAe,CAAC;AAE/C;;;GAGG;AACH,eAAO,MAAM,iBAAiB,oBAAoB,CAAC;AAMnD;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAE,SAAS,MAAM,EAK7C,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,kBAAkB,QAA4B,CAAC;AAE5D;;;GAGG;AACH,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC;;;GAGG;AACH,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAM3C;;;GAGG;AACH,eAAO,MAAM,wBAAwB,QAAgB,CAAC;AAEtD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAE3C;;;GAGG;AACH,eAAO,MAAM,kBAAkB,QAAgB,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,wBAAwB,QAAQ,CAAC;AAM9C;;;GAGG;AACH,eAAO,MAAM,WAAW;IACtB,0BAA0B;;IAE1B,uBAAuB;;IAEvB,uBAAuB;;IAEvB,4BAA4B;;IAE5B,oBAAoB;;IAEpB,oBAAoB;;IAEpB,uBAAuB;;IAEvB,4BAA4B;;IAE5B,kBAAkB;;IAElB,qBAAqB;;IAErB,oBAAoB;;CAEZ,CAAC;AAEX;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC;AAMvE;;;GAGG;AACH,eAAO,MAAM,cAAc,QAAQ,CAAC;AAEpC;;;GAGG;AACH,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAM3C;;;GAGG;AACH,eAAO,MAAM,mBAAmB,yBAAyB,CAAC;AAE1D;;;GAGG;AACH,eAAO,MAAM,iBAAiB,qBAAqB,CAAC;AAMpD;;;GAGG;AACH,eAAO,MAAM,QAAQ;IACnB,wBAAwB;;IAExB,4BAA4B;;IAE5B,wBAAwB;;IAExB,iBAAiB;;IAEjB,qBAAqB;;IAErB,yBAAyB;;IAEzB,iBAAiB;;CAET,CAAC"}
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Constants and default values for ml-cache SDK
|
|
4
|
+
* @module ml-cache/constants
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.ENV_VARS = exports.CONTENT_TYPE_GZIP = exports.CONTENT_TYPE_NDJSON = exports.QUEUE_WARNING_THRESHOLD = exports.MAX_QUEUE_SIZE = exports.ERROR_CODES = exports.SHUTDOWN_GRACE_PERIOD_MS = exports.REQUEST_TIMEOUT_MS = exports.CONNECTION_TIMEOUT_MS = exports.HEALTH_CHECK_INTERVAL_MS = exports.MAX_PROPERTY_KEY_LENGTH = exports.MAX_EVENT_TYPE_LENGTH = exports.EVENT_TYPE_PATTERN = exports.RESERVED_EVENT_PROPERTIES = exports.DEFAULT_S3_PREFIX = exports.S3_KEY_DATE_FORMAT = exports.GLACIER_ARCHIVE_PREFIX = exports.S3_MULTIPART_THRESHOLD_BYTES = exports.MAX_BATCH_SIZE_BYTES = exports.MAX_EVENT_SIZE_BYTES = exports.DEFAULT_GLACIER_ACCOUNT_ID = exports.DEFAULT_S3_STORAGE_CLASS = exports.DEFAULT_LOG_CONFIG = exports.DEFAULT_RETRY_CONFIG = exports.DEFAULT_BATCH_CONFIG = exports.SDK_NAME = exports.SDK_VERSION = void 0;
|
|
8
|
+
/* ============================================================================
|
|
9
|
+
* SDK Information
|
|
10
|
+
* ============================================================================ */
|
|
11
|
+
/**
|
|
12
|
+
* Current SDK version
|
|
13
|
+
* @constant
|
|
14
|
+
*/
|
|
15
|
+
exports.SDK_VERSION = '1.0.0';
|
|
16
|
+
/**
|
|
17
|
+
* SDK name identifier
|
|
18
|
+
* @constant
|
|
19
|
+
*/
|
|
20
|
+
exports.SDK_NAME = 'ml-cache';
|
|
21
|
+
/* ============================================================================
|
|
22
|
+
* Default Configurations
|
|
23
|
+
* ============================================================================ */
|
|
24
|
+
/**
|
|
25
|
+
* Default batch configuration
|
|
26
|
+
* @constant
|
|
27
|
+
*/
|
|
28
|
+
exports.DEFAULT_BATCH_CONFIG = {
|
|
29
|
+
/** Maximum 100 events per batch */
|
|
30
|
+
maxSize: 100,
|
|
31
|
+
/** Flush every 30 seconds */
|
|
32
|
+
maxWaitMs: 30000,
|
|
33
|
+
/** Batching enabled by default */
|
|
34
|
+
enabled: true,
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Default retry configuration
|
|
38
|
+
* @constant
|
|
39
|
+
*/
|
|
40
|
+
exports.DEFAULT_RETRY_CONFIG = {
|
|
41
|
+
/** Maximum 3 retry attempts */
|
|
42
|
+
maxRetries: 3,
|
|
43
|
+
/** Start with 1 second delay */
|
|
44
|
+
initialDelayMs: 1000,
|
|
45
|
+
/** Maximum 30 second delay */
|
|
46
|
+
maxDelayMs: 30000,
|
|
47
|
+
/** Use exponential backoff */
|
|
48
|
+
exponentialBackoff: true,
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Default logging configuration
|
|
52
|
+
* @constant
|
|
53
|
+
*/
|
|
54
|
+
exports.DEFAULT_LOG_CONFIG = {
|
|
55
|
+
/** Default to info level */
|
|
56
|
+
level: 'info',
|
|
57
|
+
/** Logging enabled by default */
|
|
58
|
+
enabled: true,
|
|
59
|
+
/** No custom logger by default */
|
|
60
|
+
customLogger: undefined,
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Default S3 storage class for long-term ML data storage
|
|
64
|
+
* @constant
|
|
65
|
+
*/
|
|
66
|
+
exports.DEFAULT_S3_STORAGE_CLASS = 'GLACIER';
|
|
67
|
+
/**
|
|
68
|
+
* Default Glacier account ID (uses current account)
|
|
69
|
+
* @constant
|
|
70
|
+
*/
|
|
71
|
+
exports.DEFAULT_GLACIER_ACCOUNT_ID = '-';
|
|
72
|
+
/* ============================================================================
|
|
73
|
+
* Storage Constants
|
|
74
|
+
* ============================================================================ */
|
|
75
|
+
/**
|
|
76
|
+
* Maximum size of a single event payload in bytes (256 KB)
|
|
77
|
+
* @constant
|
|
78
|
+
*/
|
|
79
|
+
exports.MAX_EVENT_SIZE_BYTES = 256 * 1024;
|
|
80
|
+
/**
|
|
81
|
+
* Maximum size of a batch payload in bytes (5 MB for S3 PutObject)
|
|
82
|
+
* @constant
|
|
83
|
+
*/
|
|
84
|
+
exports.MAX_BATCH_SIZE_BYTES = 5 * 1024 * 1024;
|
|
85
|
+
/**
|
|
86
|
+
* Minimum size for S3 multipart upload (5 MB)
|
|
87
|
+
* @constant
|
|
88
|
+
*/
|
|
89
|
+
exports.S3_MULTIPART_THRESHOLD_BYTES = 5 * 1024 * 1024;
|
|
90
|
+
/**
|
|
91
|
+
* Glacier archive description prefix
|
|
92
|
+
* @constant
|
|
93
|
+
*/
|
|
94
|
+
exports.GLACIER_ARCHIVE_PREFIX = 'ml-cache-events';
|
|
95
|
+
/**
|
|
96
|
+
* S3 object key date format
|
|
97
|
+
* @constant
|
|
98
|
+
*/
|
|
99
|
+
exports.S3_KEY_DATE_FORMAT = 'YYYY/MM/DD';
|
|
100
|
+
/**
|
|
101
|
+
* Default S3 object prefix
|
|
102
|
+
* @constant
|
|
103
|
+
*/
|
|
104
|
+
exports.DEFAULT_S3_PREFIX = 'ml-cache-events';
|
|
105
|
+
/* ============================================================================
|
|
106
|
+
* Event Constants
|
|
107
|
+
* ============================================================================ */
|
|
108
|
+
/**
|
|
109
|
+
* Reserved event property names that cannot be overwritten
|
|
110
|
+
* @constant
|
|
111
|
+
*/
|
|
112
|
+
exports.RESERVED_EVENT_PROPERTIES = [
|
|
113
|
+
'eventId',
|
|
114
|
+
'timestamp',
|
|
115
|
+
'eventType',
|
|
116
|
+
'metadata',
|
|
117
|
+
];
|
|
118
|
+
/**
|
|
119
|
+
* Valid event type pattern (alphanumeric with underscores)
|
|
120
|
+
* @constant
|
|
121
|
+
*/
|
|
122
|
+
exports.EVENT_TYPE_PATTERN = /^[a-zA-Z][a-zA-Z0-9_]*$/;
|
|
123
|
+
/**
|
|
124
|
+
* Maximum event type length
|
|
125
|
+
* @constant
|
|
126
|
+
*/
|
|
127
|
+
exports.MAX_EVENT_TYPE_LENGTH = 128;
|
|
128
|
+
/**
|
|
129
|
+
* Maximum property key length
|
|
130
|
+
* @constant
|
|
131
|
+
*/
|
|
132
|
+
exports.MAX_PROPERTY_KEY_LENGTH = 256;
|
|
133
|
+
/* ============================================================================
|
|
134
|
+
* Timing Constants
|
|
135
|
+
* ============================================================================ */
|
|
136
|
+
/**
|
|
137
|
+
* Health check interval in milliseconds (5 minutes)
|
|
138
|
+
* @constant
|
|
139
|
+
*/
|
|
140
|
+
exports.HEALTH_CHECK_INTERVAL_MS = 5 * 60 * 1000;
|
|
141
|
+
/**
|
|
142
|
+
* Connection timeout in milliseconds (30 seconds)
|
|
143
|
+
* @constant
|
|
144
|
+
*/
|
|
145
|
+
exports.CONNECTION_TIMEOUT_MS = 30000;
|
|
146
|
+
/**
|
|
147
|
+
* Request timeout in milliseconds (2 minutes)
|
|
148
|
+
* @constant
|
|
149
|
+
*/
|
|
150
|
+
exports.REQUEST_TIMEOUT_MS = 2 * 60 * 1000;
|
|
151
|
+
/**
|
|
152
|
+
* Shutdown grace period in milliseconds (10 seconds)
|
|
153
|
+
* @constant
|
|
154
|
+
*/
|
|
155
|
+
exports.SHUTDOWN_GRACE_PERIOD_MS = 10000;
|
|
156
|
+
/* ============================================================================
|
|
157
|
+
* Error Codes
|
|
158
|
+
* ============================================================================ */
|
|
159
|
+
/**
|
|
160
|
+
* SDK error codes
|
|
161
|
+
* @constant
|
|
162
|
+
*/
|
|
163
|
+
exports.ERROR_CODES = {
|
|
164
|
+
/** Configuration error */
|
|
165
|
+
CONFIG_ERROR: 'ML_CACHE_CONFIG_ERROR',
|
|
166
|
+
/** Validation error */
|
|
167
|
+
VALIDATION_ERROR: 'ML_CACHE_VALIDATION_ERROR',
|
|
168
|
+
/** S3 storage error */
|
|
169
|
+
S3_ERROR: 'ML_CACHE_S3_ERROR',
|
|
170
|
+
/** Glacier storage error */
|
|
171
|
+
GLACIER_ERROR: 'ML_CACHE_GLACIER_ERROR',
|
|
172
|
+
/** Network error */
|
|
173
|
+
NETWORK_ERROR: 'ML_CACHE_NETWORK_ERROR',
|
|
174
|
+
/** Timeout error */
|
|
175
|
+
TIMEOUT_ERROR: 'ML_CACHE_TIMEOUT_ERROR',
|
|
176
|
+
/** Queue full error */
|
|
177
|
+
QUEUE_FULL_ERROR: 'ML_CACHE_QUEUE_FULL_ERROR',
|
|
178
|
+
/** Event too large error */
|
|
179
|
+
EVENT_TOO_LARGE_ERROR: 'ML_CACHE_EVENT_TOO_LARGE_ERROR',
|
|
180
|
+
/** Batch error */
|
|
181
|
+
BATCH_ERROR: 'ML_CACHE_BATCH_ERROR',
|
|
182
|
+
/** Shutdown error */
|
|
183
|
+
SHUTDOWN_ERROR: 'ML_CACHE_SHUTDOWN_ERROR',
|
|
184
|
+
/** Unknown error */
|
|
185
|
+
UNKNOWN_ERROR: 'ML_CACHE_UNKNOWN_ERROR',
|
|
186
|
+
};
|
|
187
|
+
/* ============================================================================
|
|
188
|
+
* Queue Constants
|
|
189
|
+
* ============================================================================ */
|
|
190
|
+
/**
|
|
191
|
+
* Maximum queue size (number of events)
|
|
192
|
+
* @constant
|
|
193
|
+
*/
|
|
194
|
+
exports.MAX_QUEUE_SIZE = 10000;
|
|
195
|
+
/**
|
|
196
|
+
* Queue warning threshold (80% of max)
|
|
197
|
+
* @constant
|
|
198
|
+
*/
|
|
199
|
+
exports.QUEUE_WARNING_THRESHOLD = 0.8;
|
|
200
|
+
/* ============================================================================
|
|
201
|
+
* Content Types
|
|
202
|
+
* ============================================================================ */
|
|
203
|
+
/**
|
|
204
|
+
* Content type for stored events (NDJSON)
|
|
205
|
+
* @constant
|
|
206
|
+
*/
|
|
207
|
+
exports.CONTENT_TYPE_NDJSON = 'application/x-ndjson';
|
|
208
|
+
/**
|
|
209
|
+
* Content type for compressed events
|
|
210
|
+
* @constant
|
|
211
|
+
*/
|
|
212
|
+
exports.CONTENT_TYPE_GZIP = 'application/gzip';
|
|
213
|
+
/* ============================================================================
|
|
214
|
+
* Environment Variables
|
|
215
|
+
* ============================================================================ */
|
|
216
|
+
/**
|
|
217
|
+
* Environment variable names for configuration
|
|
218
|
+
* @constant
|
|
219
|
+
*/
|
|
220
|
+
exports.ENV_VARS = {
|
|
221
|
+
/** AWS access key ID */
|
|
222
|
+
AWS_ACCESS_KEY_ID: 'AWS_ACCESS_KEY_ID',
|
|
223
|
+
/** AWS secret access key */
|
|
224
|
+
AWS_SECRET_ACCESS_KEY: 'AWS_SECRET_ACCESS_KEY',
|
|
225
|
+
/** AWS session token */
|
|
226
|
+
AWS_SESSION_TOKEN: 'AWS_SESSION_TOKEN',
|
|
227
|
+
/** AWS region */
|
|
228
|
+
AWS_REGION: 'AWS_REGION',
|
|
229
|
+
/** S3 bucket name */
|
|
230
|
+
ML_CACHE_S3_BUCKET: 'ML_CACHE_S3_BUCKET',
|
|
231
|
+
/** Glacier vault name */
|
|
232
|
+
ML_CACHE_GLACIER_VAULT: 'ML_CACHE_GLACIER_VAULT',
|
|
233
|
+
/** Debug mode */
|
|
234
|
+
ML_CACHE_DEBUG: 'ML_CACHE_DEBUG',
|
|
235
|
+
};
|
|
236
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Main ML Cache SDK client
|
|
3
|
+
* @module ml-cache/client
|
|
4
|
+
*/
|
|
5
|
+
import type { MLCacheConfig, MLCacheEvent, TrackResult, FlushResult, HealthStatus, EventCallback, ErrorCallback, FlushCallback } from './types';
|
|
6
|
+
/**
|
|
7
|
+
* ML Cache SDK client for collecting and storing events for future ML training
|
|
8
|
+
* @class MLCacheClient
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* const client = new MLCacheClient({
|
|
12
|
+
* credentials: {
|
|
13
|
+
* accessKeyId: 'YOUR_ACCESS_KEY',
|
|
14
|
+
* secretAccessKey: 'YOUR_SECRET_KEY',
|
|
15
|
+
* },
|
|
16
|
+
* s3: {
|
|
17
|
+
* bucket: 'my-ml-data-bucket',
|
|
18
|
+
* region: 'us-east-1',
|
|
19
|
+
* },
|
|
20
|
+
* storageMode: 'S3',
|
|
21
|
+
* });
|
|
22
|
+
*
|
|
23
|
+
* await client.track({
|
|
24
|
+
* eventType: 'purchase',
|
|
25
|
+
* properties: {
|
|
26
|
+
* productId: '12345',
|
|
27
|
+
* amount: 99.99,
|
|
28
|
+
* },
|
|
29
|
+
* });
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export declare class MLCacheClient {
|
|
33
|
+
/** @private */
|
|
34
|
+
private config;
|
|
35
|
+
/** @private */
|
|
36
|
+
private batchConfig;
|
|
37
|
+
/** @private */
|
|
38
|
+
private retryConfig;
|
|
39
|
+
/** @private */
|
|
40
|
+
private logger;
|
|
41
|
+
/** @private */
|
|
42
|
+
private s3Storage;
|
|
43
|
+
/** @private */
|
|
44
|
+
private glacierStorage;
|
|
45
|
+
/** @private */
|
|
46
|
+
private queue;
|
|
47
|
+
/** @private */
|
|
48
|
+
private isInitialized;
|
|
49
|
+
/** @private */
|
|
50
|
+
private isShuttingDown;
|
|
51
|
+
/** @private */
|
|
52
|
+
private lastFlush;
|
|
53
|
+
/** @private */
|
|
54
|
+
private lastError;
|
|
55
|
+
/** @private */
|
|
56
|
+
private eventCallbacks;
|
|
57
|
+
/** @private */
|
|
58
|
+
private errorCallbacks;
|
|
59
|
+
/** @private */
|
|
60
|
+
private flushCallbacks;
|
|
61
|
+
/**
|
|
62
|
+
* Creates a new MLCacheClient instance
|
|
63
|
+
* @param {MLCacheConfig} config - SDK configuration
|
|
64
|
+
* @throws {ValidationError} If configuration is invalid
|
|
65
|
+
*/
|
|
66
|
+
constructor(config: MLCacheConfig);
|
|
67
|
+
/**
|
|
68
|
+
* Initializes storage providers based on configuration
|
|
69
|
+
* @private
|
|
70
|
+
*/
|
|
71
|
+
private initializeStorage;
|
|
72
|
+
/**
|
|
73
|
+
* Handles a batch of events ready for storage
|
|
74
|
+
* @private
|
|
75
|
+
* @param {MLCacheEvent[]} events - Events to store
|
|
76
|
+
* @param {string} batchId - Batch identifier
|
|
77
|
+
*/
|
|
78
|
+
private handleBatchReady;
|
|
79
|
+
/**
|
|
80
|
+
* Stores events with retry logic
|
|
81
|
+
* @private
|
|
82
|
+
* @param {MLCacheEvent[]} events - Events to store
|
|
83
|
+
* @param {string} batchId - Batch identifier
|
|
84
|
+
* @returns {Promise<FlushResult>} Flush result
|
|
85
|
+
*/
|
|
86
|
+
private storeEventsWithRetry;
|
|
87
|
+
/**
|
|
88
|
+
* Tracks an event
|
|
89
|
+
* @param {MLCacheEvent} event - Event to track
|
|
90
|
+
* @returns {Promise<TrackResult>} Track result
|
|
91
|
+
* @example
|
|
92
|
+
* ```typescript
|
|
93
|
+
* const result = await client.track({
|
|
94
|
+
* eventType: 'page_view',
|
|
95
|
+
* properties: {
|
|
96
|
+
* page: '/home',
|
|
97
|
+
* referrer: 'google.com',
|
|
98
|
+
* },
|
|
99
|
+
* context: {
|
|
100
|
+
* user: { userId: 'user123' },
|
|
101
|
+
* },
|
|
102
|
+
* });
|
|
103
|
+
* ```
|
|
104
|
+
*/
|
|
105
|
+
track(event: MLCacheEvent): Promise<TrackResult>;
|
|
106
|
+
/**
|
|
107
|
+
* Identifies a user with traits
|
|
108
|
+
* @param {string} userId - User identifier
|
|
109
|
+
* @param {Record<string, unknown>} [traits] - User traits
|
|
110
|
+
* @returns {Promise<TrackResult>} Track result
|
|
111
|
+
* @example
|
|
112
|
+
* ```typescript
|
|
113
|
+
* await client.identify('user123', {
|
|
114
|
+
* email: 'user@example.com',
|
|
115
|
+
* plan: 'premium',
|
|
116
|
+
* });
|
|
117
|
+
* ```
|
|
118
|
+
*/
|
|
119
|
+
identify(userId: string, traits?: Record<string, unknown>): Promise<TrackResult>;
|
|
120
|
+
/**
|
|
121
|
+
* Tracks a page view
|
|
122
|
+
* @param {string} name - Page name
|
|
123
|
+
* @param {Record<string, unknown>} [properties] - Page properties
|
|
124
|
+
* @returns {Promise<TrackResult>} Track result
|
|
125
|
+
* @example
|
|
126
|
+
* ```typescript
|
|
127
|
+
* await client.page('Home', {
|
|
128
|
+
* url: 'https://example.com',
|
|
129
|
+
* title: 'Welcome Home',
|
|
130
|
+
* });
|
|
131
|
+
* ```
|
|
132
|
+
*/
|
|
133
|
+
page(name: string, properties?: Record<string, unknown>): Promise<TrackResult>;
|
|
134
|
+
/**
|
|
135
|
+
* Flushes all queued events
|
|
136
|
+
* @returns {Promise<FlushResult>} Flush result
|
|
137
|
+
*/
|
|
138
|
+
flush(): Promise<FlushResult>;
|
|
139
|
+
/**
|
|
140
|
+
* Gets the health status of the client
|
|
141
|
+
* @returns {Promise<HealthStatus>} Health status
|
|
142
|
+
*/
|
|
143
|
+
getHealth(): Promise<HealthStatus>;
|
|
144
|
+
/**
|
|
145
|
+
* Registers an event callback
|
|
146
|
+
* @param {EventCallback} callback - Callback function
|
|
147
|
+
*/
|
|
148
|
+
onEvent(callback: EventCallback): void;
|
|
149
|
+
/**
|
|
150
|
+
* Registers an error callback
|
|
151
|
+
* @param {ErrorCallback} callback - Callback function
|
|
152
|
+
*/
|
|
153
|
+
onError(callback: ErrorCallback): void;
|
|
154
|
+
/**
|
|
155
|
+
* Registers a flush callback
|
|
156
|
+
* @param {FlushCallback} callback - Callback function
|
|
157
|
+
*/
|
|
158
|
+
onFlush(callback: FlushCallback): void;
|
|
159
|
+
/**
|
|
160
|
+
* Gets the current queue size
|
|
161
|
+
* @returns {number} Queue size
|
|
162
|
+
*/
|
|
163
|
+
getQueueSize(): number;
|
|
164
|
+
/**
|
|
165
|
+
* Gets the SDK version
|
|
166
|
+
* @returns {string} SDK version
|
|
167
|
+
*/
|
|
168
|
+
getVersion(): string;
|
|
169
|
+
/**
|
|
170
|
+
* Shuts down the client gracefully
|
|
171
|
+
* @returns {Promise<void>}
|
|
172
|
+
*/
|
|
173
|
+
shutdown(): Promise<void>;
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,WAAW,EACX,WAAW,EACX,YAAY,EACZ,aAAa,EACb,aAAa,EACb,aAAa,EAId,MAAM,SAAS,CAAC;AAoBjB;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,aAAa;IACxB,eAAe;IACf,OAAO,CAAC,MAAM,CAAgB;IAE9B,eAAe;IACf,OAAO,CAAC,WAAW,CAAc;IAEjC,eAAe;IACf,OAAO,CAAC,WAAW,CAAc;IAEjC,eAAe;IACf,OAAO,CAAC,MAAM,CAAS;IAEvB,eAAe;IACf,OAAO,CAAC,SAAS,CAA0B;IAE3C,eAAe;IACf,OAAO,CAAC,cAAc,CAA+B;IAErD,eAAe;IACf,OAAO,CAAC,KAAK,CAAa;IAE1B,eAAe;IACf,OAAO,CAAC,aAAa,CAAS;IAE9B,eAAe;IACf,OAAO,CAAC,cAAc,CAAS;IAE/B,eAAe;IACf,OAAO,CAAC,SAAS,CAAqB;IAEtC,eAAe;IACf,OAAO,CAAC,SAAS,CAAuB;IAExC,eAAe;IACf,OAAO,CAAC,cAAc,CAAuB;IAE7C,eAAe;IACf,OAAO,CAAC,cAAc,CAAuB;IAE7C,eAAe;IACf,OAAO,CAAC,cAAc,CAAuB;IAE7C;;;;OAIG;gBACS,MAAM,EAAE,aAAa;IA2BjC;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAyBzB;;;;;OAKG;YACW,gBAAgB;IAa9B;;;;;;OAMG;YACW,oBAAoB;IAoGlC;;;;;;;;;;;;;;;;;OAiBG;IACG,KAAK,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;IAwDtD;;;;;;;;;;;;OAYG;IACG,QAAQ,CACZ,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,WAAW,CAAC;IAavB;;;;;;;;;;;;OAYG;IACG,IAAI,CACR,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACnC,OAAO,CAAC,WAAW,CAAC;IAUvB;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,WAAW,CAAC;IAuBnC;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,YAAY,CAAC;IAwBxC;;;OAGG;IACH,OAAO,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAItC;;;OAGG;IACH,OAAO,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAItC;;;OAGG;IACH,OAAO,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAItC;;;OAGG;IACH,YAAY,IAAI,MAAM;IAItB;;;OAGG;IACH,UAAU,IAAI,MAAM;IAIpB;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAmBhC"}
|