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 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/utils/helpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAE9D;;;GAGG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,UAAU,EAAE,CAAC;AACtB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,SAAS,IAAI,CAAC,GAAG,EAAE,IAAI,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AAC3D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAKnC;IACC,OAAO;QACL,UAAU,EAAE,WAAW;QACvB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,UAAU,EAAE,OAAO,CAAC,UAAU;KAC/B,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CACzB,KAAmB,EACnB,UAGI,EAAE;IAEN,OAAO;QACL,GAAG,KAAK;QACR,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,eAAe,EAAE;QAC3C,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,iBAAiB,EAAE;QACjD,QAAQ,EAAE;YACR,GAAG,mBAAmB,CAAC,OAAO,CAAC;YAC/B,GAAG,KAAK,CAAC,QAAQ;SAClB;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAAC,OAM7B;IACC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,iBAAiB,CAAC;IACnD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;IACxC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,QAAQ,CAAC;IAEhD,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAEzD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,IAAI,eAAe,EAAE,CAAC;IAE3E,OAAO,GAAG,MAAM,IAAI,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,UAAU,IAAI,SAAS,EAAE,CAAC;AAChF,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,0BAA0B,CAAC,OAI1C;IACC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG;QACZ,iBAAiB;QACjB,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QAC/B,OAAO,CAAC,OAAO,IAAI,eAAe,EAAE;KACrC,CAAC;IAEF,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAsB;IAC5D,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,MAAc;IACxD,OAAO,MAAM;SACV,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC7B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAiB,CAAC,CAAC;AACrD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAsB;IACxD,MAAM,UAAU,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACnD,OAAO,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAe,EACf,cAAsB,EACtB,UAAkB,EAClB,WAAoB;IAEpB,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,KAAK,GAAG,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC;IAC3C,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,EAAE,UAAU,CAAC,CAAC;AAC9C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAC,EAAU;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,KAAK,CAAI,KAAU,EAAE,IAAY;IAC/C,MAAM,MAAM,GAAU,EAAE,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAI,GAAM;IACjC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,MAAM,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;IAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACzC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAChD,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpB,OAAO,YAAY,CAAC;YACtB,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @fileoverview Utils barrel export
3
+ * @module ml-cache/utils
4
+ */
5
+ export { Logger, defaultLogger } from './logger';
6
+ export { ValidationError, validateConfig, validateEvent, validateEventType, validateEventProperties, isValidTimestamp, isValidUUID } from './validator';
7
+ export { generateEventId, generateTimestamp, generateBatchId, createEventMetadata, enrichEvent, generateS3Key, generateGlacierDescription, serializeEventsToNDJSON, deserializeEventsFromNDJSON, calculateEventsSize, calculateRetryDelay, sleep, chunk, deepClone, safeStringify, } from './helpers';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACxJ,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,WAAW,EACX,aAAa,EACb,0BAA0B,EAC1B,uBAAuB,EACvB,2BAA2B,EAC3B,mBAAmB,EACnB,mBAAmB,EACnB,KAAK,EACL,KAAK,EACL,SAAS,EACT,aAAa,GACd,MAAM,WAAW,CAAC"}
@@ -0,0 +1,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.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","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,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,177 @@
1
+ /**
2
+ * @fileoverview Logger utility for ml-cache SDK
3
+ * @module ml-cache/utils/logger
4
+ */
5
+ import { DEFAULT_LOG_CONFIG } from '../constants';
6
+ /**
7
+ * Log level priority map (lower = more verbose)
8
+ * @constant
9
+ */
10
+ const LOG_LEVEL_PRIORITY = {
11
+ debug: 0,
12
+ info: 1,
13
+ warn: 2,
14
+ error: 3,
15
+ silent: 4,
16
+ };
17
+ /**
18
+ * Logger class for SDK internal logging
19
+ * @class Logger
20
+ */
21
+ export class Logger {
22
+ /**
23
+ * Creates a new Logger instance
24
+ * @param {Partial<LogConfig>} [config] - Logger configuration
25
+ * @param {string} [prefix] - Log message prefix
26
+ */
27
+ constructor(config, prefix = '[ml-cache]') {
28
+ this.config = { ...DEFAULT_LOG_CONFIG, ...config };
29
+ this.prefix = prefix;
30
+ }
31
+ /**
32
+ * Checks if a log level should be output
33
+ * @private
34
+ * @param {LogLevel} level - Log level to check
35
+ * @returns {boolean} Whether the level should be logged
36
+ */
37
+ shouldLog(level) {
38
+ if (!this.config.enabled) {
39
+ return false;
40
+ }
41
+ return LOG_LEVEL_PRIORITY[level] >= LOG_LEVEL_PRIORITY[this.config.level];
42
+ }
43
+ /**
44
+ * Formats a log message with timestamp and prefix
45
+ * @private
46
+ * @param {LogLevel} level - Log level
47
+ * @param {string} message - Log message
48
+ * @returns {string} Formatted message
49
+ */
50
+ formatMessage(level, message) {
51
+ const timestamp = new Date().toISOString();
52
+ return `${timestamp} ${this.prefix} [${level.toUpperCase()}] ${message}`;
53
+ }
54
+ /**
55
+ * Outputs a log message
56
+ * @private
57
+ * @param {LogLevel} level - Log level
58
+ * @param {string} message - Log message
59
+ * @param {Record<string, unknown>} [data] - Additional data
60
+ */
61
+ log(level, message, data) {
62
+ if (!this.shouldLog(level)) {
63
+ return;
64
+ }
65
+ if (this.config.customLogger) {
66
+ this.config.customLogger(level, message, data);
67
+ return;
68
+ }
69
+ const formattedMessage = this.formatMessage(level, message);
70
+ const consoleMethod = this.getConsoleMethod(level);
71
+ if (data) {
72
+ consoleMethod(formattedMessage, data);
73
+ }
74
+ else {
75
+ consoleMethod(formattedMessage);
76
+ }
77
+ }
78
+ /**
79
+ * Gets the appropriate console method for a log level
80
+ * @private
81
+ * @param {LogLevel} level - Log level
82
+ * @returns {Function} Console method
83
+ */
84
+ getConsoleMethod(level) {
85
+ switch (level) {
86
+ case 'debug':
87
+ return console.debug.bind(console);
88
+ case 'info':
89
+ return console.info.bind(console);
90
+ case 'warn':
91
+ return console.warn.bind(console);
92
+ case 'error':
93
+ return console.error.bind(console);
94
+ default:
95
+ return console.log.bind(console);
96
+ }
97
+ }
98
+ /**
99
+ * Logs a debug message
100
+ * @param {string} message - Debug message
101
+ * @param {Record<string, unknown>} [data] - Additional data
102
+ */
103
+ debug(message, data) {
104
+ this.log('debug', message, data);
105
+ }
106
+ /**
107
+ * Logs an info message
108
+ * @param {string} message - Info message
109
+ * @param {Record<string, unknown>} [data] - Additional data
110
+ */
111
+ info(message, data) {
112
+ this.log('info', message, data);
113
+ }
114
+ /**
115
+ * Logs a warning message
116
+ * @param {string} message - Warning message
117
+ * @param {Record<string, unknown>} [data] - Additional data
118
+ */
119
+ warn(message, data) {
120
+ this.log('warn', message, data);
121
+ }
122
+ /**
123
+ * Logs an error message
124
+ * @param {string} message - Error message
125
+ * @param {Record<string, unknown>} [data] - Additional data
126
+ */
127
+ error(message, data) {
128
+ this.log('error', message, data);
129
+ }
130
+ /**
131
+ * Updates logger configuration
132
+ * @param {Partial<LogConfig>} config - New configuration
133
+ */
134
+ setConfig(config) {
135
+ this.config = { ...this.config, ...config };
136
+ }
137
+ /**
138
+ * Sets the log level
139
+ * @param {LogLevel} level - New log level
140
+ */
141
+ setLevel(level) {
142
+ this.config.level = level;
143
+ }
144
+ /**
145
+ * Enables logging
146
+ */
147
+ enable() {
148
+ this.config.enabled = true;
149
+ }
150
+ /**
151
+ * Disables logging
152
+ */
153
+ disable() {
154
+ this.config.enabled = false;
155
+ }
156
+ /**
157
+ * Sets a custom logger function
158
+ * @param {LoggerFunction} logger - Custom logger function
159
+ */
160
+ setCustomLogger(logger) {
161
+ this.config.customLogger = logger;
162
+ }
163
+ /**
164
+ * Creates a child logger with a new prefix
165
+ * @param {string} childPrefix - Additional prefix for child logger
166
+ * @returns {Logger} New logger instance
167
+ */
168
+ child(childPrefix) {
169
+ return new Logger(this.config, `${this.prefix}:${childPrefix}`);
170
+ }
171
+ }
172
+ /**
173
+ * Default logger instance
174
+ * @constant
175
+ */
176
+ export const defaultLogger = new Logger();
177
+ //# 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"}
@@ -0,0 +1,208 @@
1
+ /**
2
+ * @fileoverview Validation utilities for ml-cache SDK
3
+ * @module ml-cache/utils/validator
4
+ */
5
+ import { ERROR_CODES, EVENT_TYPE_PATTERN, MAX_EVENT_TYPE_LENGTH, MAX_EVENT_SIZE_BYTES, MAX_PROPERTY_KEY_LENGTH, } from '../constants';
6
+ /**
7
+ * Validation error class
8
+ * @class ValidationError
9
+ * @extends Error
10
+ */
11
+ export class ValidationError extends Error {
12
+ /**
13
+ * Creates a new ValidationError
14
+ * @param {string} message - Error message
15
+ * @param {string} [field] - Field that failed validation
16
+ */
17
+ constructor(message, field) {
18
+ super(message);
19
+ this.name = 'ValidationError';
20
+ this.code = ERROR_CODES.VALIDATION_ERROR;
21
+ this.field = field;
22
+ }
23
+ }
24
+ /**
25
+ * Validates AWS credentials
26
+ * @param {AWSCredentials} credentials - AWS credentials to validate
27
+ * @throws {ValidationError} If credentials are invalid
28
+ */
29
+ export function validateCredentials(credentials) {
30
+ if (!credentials) {
31
+ throw new ValidationError('AWS credentials are required', 'credentials');
32
+ }
33
+ if (!credentials.accessKeyId || typeof credentials.accessKeyId !== 'string') {
34
+ throw new ValidationError('AWS access key ID is required and must be a string', 'credentials.accessKeyId');
35
+ }
36
+ if (!credentials.secretAccessKey ||
37
+ typeof credentials.secretAccessKey !== 'string') {
38
+ throw new ValidationError('AWS secret access key is required and must be a string', 'credentials.secretAccessKey');
39
+ }
40
+ if (credentials.sessionToken !== undefined &&
41
+ typeof credentials.sessionToken !== 'string') {
42
+ throw new ValidationError('AWS session token must be a string', 'credentials.sessionToken');
43
+ }
44
+ }
45
+ /**
46
+ * Validates S3 configuration
47
+ * @param {S3Config} config - S3 configuration to validate
48
+ * @throws {ValidationError} If configuration is invalid
49
+ */
50
+ export function validateS3Config(config) {
51
+ if (!config) {
52
+ throw new ValidationError('S3 configuration is required', 's3');
53
+ }
54
+ if (!config.bucket || typeof config.bucket !== 'string') {
55
+ throw new ValidationError('S3 bucket name is required and must be a string', 's3.bucket');
56
+ }
57
+ if (!config.region || typeof config.region !== 'string') {
58
+ throw new ValidationError('S3 region is required and must be a string', 's3.region');
59
+ }
60
+ if (config.prefix !== undefined && typeof config.prefix !== 'string') {
61
+ throw new ValidationError('S3 prefix must be a string', 's3.prefix');
62
+ }
63
+ }
64
+ /**
65
+ * Validates Glacier configuration
66
+ * @param {GlacierConfig} config - Glacier configuration to validate
67
+ * @throws {ValidationError} If configuration is invalid
68
+ */
69
+ export function validateGlacierConfig(config) {
70
+ if (!config) {
71
+ throw new ValidationError('Glacier configuration is required', 'glacier');
72
+ }
73
+ if (!config.vaultName || typeof config.vaultName !== 'string') {
74
+ throw new ValidationError('Glacier vault name is required and must be a string', 'glacier.vaultName');
75
+ }
76
+ if (!config.region || typeof config.region !== 'string') {
77
+ throw new ValidationError('Glacier region is required and must be a string', 'glacier.region');
78
+ }
79
+ }
80
+ /**
81
+ * Validates complete SDK configuration
82
+ * @param {MLCacheConfig} config - SDK configuration to validate
83
+ * @throws {ValidationError} If configuration is invalid
84
+ */
85
+ export function validateConfig(config) {
86
+ if (!config) {
87
+ throw new ValidationError('Configuration is required', 'config');
88
+ }
89
+ validateCredentials(config.credentials);
90
+ if (!config.storageMode) {
91
+ throw new ValidationError('Storage mode is required', 'storageMode');
92
+ }
93
+ const validModes = ['S3', 'GLACIER', 'S3_TO_GLACIER'];
94
+ if (!validModes.includes(config.storageMode)) {
95
+ throw new ValidationError(`Invalid storage mode. Must be one of: ${validModes.join(', ')}`, 'storageMode');
96
+ }
97
+ if (config.storageMode === 'S3' || config.storageMode === 'S3_TO_GLACIER') {
98
+ if (!config.s3) {
99
+ throw new ValidationError('S3 configuration is required for S3 or S3_TO_GLACIER storage mode', 's3');
100
+ }
101
+ validateS3Config(config.s3);
102
+ }
103
+ if (config.storageMode === 'GLACIER') {
104
+ if (!config.glacier) {
105
+ throw new ValidationError('Glacier configuration is required for GLACIER storage mode', 'glacier');
106
+ }
107
+ validateGlacierConfig(config.glacier);
108
+ }
109
+ if (config.batch) {
110
+ if (config.batch.maxSize !== undefined) {
111
+ if (typeof config.batch.maxSize !== 'number' ||
112
+ config.batch.maxSize < 1) {
113
+ throw new ValidationError('Batch max size must be a positive number', 'batch.maxSize');
114
+ }
115
+ }
116
+ if (config.batch.maxWaitMs !== undefined) {
117
+ if (typeof config.batch.maxWaitMs !== 'number' ||
118
+ config.batch.maxWaitMs < 0) {
119
+ throw new ValidationError('Batch max wait must be a non-negative number', 'batch.maxWaitMs');
120
+ }
121
+ }
122
+ }
123
+ if (config.retry) {
124
+ if (config.retry.maxRetries !== undefined) {
125
+ if (typeof config.retry.maxRetries !== 'number' ||
126
+ config.retry.maxRetries < 0) {
127
+ throw new ValidationError('Max retries must be a non-negative number', 'retry.maxRetries');
128
+ }
129
+ }
130
+ }
131
+ }
132
+ /**
133
+ * Validates an event type string
134
+ * @param {string} eventType - Event type to validate
135
+ * @throws {ValidationError} If event type is invalid
136
+ */
137
+ export function validateEventType(eventType) {
138
+ if (!eventType || typeof eventType !== 'string') {
139
+ throw new ValidationError('Event type is required and must be a string', 'eventType');
140
+ }
141
+ if (eventType.length > MAX_EVENT_TYPE_LENGTH) {
142
+ throw new ValidationError(`Event type must be at most ${MAX_EVENT_TYPE_LENGTH} characters`, 'eventType');
143
+ }
144
+ if (!EVENT_TYPE_PATTERN.test(eventType)) {
145
+ throw new ValidationError('Event type must start with a letter and contain only alphanumeric characters and underscores', 'eventType');
146
+ }
147
+ }
148
+ /**
149
+ * Validates event properties
150
+ * @param {Record<string, unknown>} properties - Properties to validate
151
+ * @throws {ValidationError} If properties are invalid
152
+ */
153
+ export function validateEventProperties(properties) {
154
+ if (properties === undefined || properties === null) {
155
+ return;
156
+ }
157
+ if (typeof properties !== 'object' || Array.isArray(properties)) {
158
+ throw new ValidationError('Event properties must be an object', 'properties');
159
+ }
160
+ for (const key of Object.keys(properties)) {
161
+ if (key.length > MAX_PROPERTY_KEY_LENGTH) {
162
+ throw new ValidationError(`Property key "${key}" exceeds maximum length of ${MAX_PROPERTY_KEY_LENGTH}`, `properties.${key}`);
163
+ }
164
+ }
165
+ }
166
+ /**
167
+ * Validates a complete event
168
+ * @param {MLCacheEvent} event - Event to validate
169
+ * @throws {ValidationError} If event is invalid
170
+ */
171
+ export function validateEvent(event) {
172
+ if (!event) {
173
+ throw new ValidationError('Event is required', 'event');
174
+ }
175
+ validateEventType(event.eventType);
176
+ if (event.properties !== undefined) {
177
+ validateEventProperties(event.properties);
178
+ }
179
+ const eventSize = Buffer.byteLength(JSON.stringify(event), 'utf8');
180
+ if (eventSize > MAX_EVENT_SIZE_BYTES) {
181
+ throw new ValidationError(`Event size (${eventSize} bytes) exceeds maximum allowed size (${MAX_EVENT_SIZE_BYTES} bytes)`, 'event');
182
+ }
183
+ }
184
+ /**
185
+ * Checks if a value is a valid ISO 8601 timestamp
186
+ * @param {string} timestamp - Timestamp to validate
187
+ * @returns {boolean} Whether the timestamp is valid
188
+ */
189
+ export function isValidTimestamp(timestamp) {
190
+ if (!timestamp || typeof timestamp !== 'string') {
191
+ return false;
192
+ }
193
+ const date = new Date(timestamp);
194
+ return !isNaN(date.getTime());
195
+ }
196
+ /**
197
+ * Checks if a value is a valid UUID
198
+ * @param {string} uuid - UUID to validate
199
+ * @returns {boolean} Whether the UUID is valid
200
+ */
201
+ export function isValidUUID(uuid) {
202
+ if (!uuid || typeof uuid !== 'string') {
203
+ return false;
204
+ }
205
+ const uuidPattern = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
206
+ return uuidPattern.test(uuid);
207
+ }
208
+ //# sourceMappingURL=validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../../src/utils/validator.ts"],"names":[],"mappings":"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"}