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,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"}