@monterosa/sdk-core 0.17.1-rc.6

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/README.md ADDED
@@ -0,0 +1 @@
1
+ # Monterosa JS SDK / Core
@@ -0,0 +1,411 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var uuid = require('uuid');
6
+ var sdkUtil = require('@monterosa/sdk-util');
7
+
8
+ var version = "0.17.1";
9
+
10
+ /**
11
+ * @license
12
+ * constants.ts
13
+ * core
14
+ *
15
+ * Created by Rygor Kharytanovich <rygor@monterosa.co.uk> on 2023-03-21
16
+ * Copyright © 2023 Monterosa. All rights reserved.
17
+ *
18
+ * More details on the license can be found at https://www.monterosa.co/sdk/license
19
+ */
20
+ /**
21
+ * Default sdk name.
22
+ *
23
+ * @internal
24
+ */
25
+ var DEFAULT_SDK_NAME = '[DEFAULT]';
26
+ /**
27
+ * The current SDK version.
28
+ *
29
+ * @public
30
+ */
31
+ var VERSION = version;
32
+ /**
33
+ * Device ID storage key name
34
+ *
35
+ * @internal
36
+ */
37
+ var DEVICE_ID_KEY = 'device_id';
38
+
39
+ /*! *****************************************************************************
40
+ Copyright (c) Microsoft Corporation.
41
+
42
+ Permission to use, copy, modify, and/or distribute this software for any
43
+ purpose with or without fee is hereby granted.
44
+
45
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
46
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
47
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
48
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
49
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
50
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
51
+ PERFORMANCE OF THIS SOFTWARE.
52
+ ***************************************************************************** */
53
+
54
+ var __assign = function() {
55
+ __assign = Object.assign || function __assign(t) {
56
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
57
+ s = arguments[i];
58
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
59
+ }
60
+ return t;
61
+ };
62
+ return __assign.apply(this, arguments);
63
+ };
64
+
65
+ function __spreadArray(to, from) {
66
+ for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
67
+ to[j] = from[i];
68
+ return to;
69
+ }
70
+
71
+ /**
72
+ * @license
73
+ * sdk.ts
74
+ * core
75
+ *
76
+ * Created by Rygor Kharytanovich <rygor@monterosa.co.uk> on 2021-09-23
77
+ * Copyright © 2022 Monterosa. All rights reserved.
78
+ *
79
+ * More details on the license can be found at https://www.monterosa.co/sdk/license
80
+ */
81
+ /**
82
+ * @internal
83
+ */
84
+ var Sdk = /** @class */ (function () {
85
+ function Sdk(options, name) {
86
+ this._isDestroyed = false;
87
+ this._options = __assign({}, options);
88
+ this._name = name;
89
+ this._kits = new Map();
90
+ }
91
+ Object.defineProperty(Sdk.prototype, "name", {
92
+ get: function () {
93
+ this.checkDestroyed();
94
+ return this._name;
95
+ },
96
+ enumerable: false,
97
+ configurable: true
98
+ });
99
+ Object.defineProperty(Sdk.prototype, "options", {
100
+ get: function () {
101
+ this.checkDestroyed();
102
+ return this._options;
103
+ },
104
+ enumerable: false,
105
+ configurable: true
106
+ });
107
+ Object.defineProperty(Sdk.prototype, "isDestroyed", {
108
+ get: function () {
109
+ return this._isDestroyed;
110
+ },
111
+ set: function (value) {
112
+ this._isDestroyed = value;
113
+ },
114
+ enumerable: false,
115
+ configurable: true
116
+ });
117
+ Object.defineProperty(Sdk.prototype, "kits", {
118
+ get: function () {
119
+ return this._kits;
120
+ },
121
+ enumerable: false,
122
+ configurable: true
123
+ });
124
+ Sdk.prototype.deleteKits = function () {
125
+ var _this = this;
126
+ this.kits.forEach(function (kit, name) {
127
+ _this.kits.delete(name);
128
+ kit.delete();
129
+ });
130
+ };
131
+ Sdk.prototype.checkDestroyed = function () {
132
+ if (this.isDestroyed) {
133
+ throw new Error("SDK named " + this.name + " destroyed");
134
+ }
135
+ };
136
+ return Sdk;
137
+ }());
138
+ /**
139
+ * @internal
140
+ */
141
+ function addKit(sdk, name, kit) {
142
+ sdk.kits.set(name, kit);
143
+ }
144
+ /**
145
+ * @internal
146
+ */
147
+ function getKit(sdk, name) {
148
+ return sdk.kits.get(name);
149
+ }
150
+ /**
151
+ * @internal
152
+ */
153
+ function deleteKit(sdk, name) {
154
+ sdk.kits.delete(name);
155
+ }
156
+
157
+ /**
158
+ * @license
159
+ * api.ts
160
+ * core
161
+ *
162
+ * Created by Rygor Kharytanovich <rygor@monterosa.co.uk> on 2022-02-15
163
+ * Copyright © 2022 Monterosa. All rights reserved.
164
+ *
165
+ * More details on the license can be found at https://www.monterosa.co/sdk/license
166
+ */
167
+ var sdks = new Map();
168
+ var DEVICE_ID;
169
+ /**
170
+ * An array of all configured sdks.
171
+ *
172
+ * @public
173
+ */
174
+ function getSdks() {
175
+ return Array.from(sdks.values());
176
+ }
177
+ /**
178
+ * Retrieves an SDK instance by its name.
179
+ *
180
+ * @example
181
+ * ```javascript
182
+ * const sdk = getSdk('my-sdk');
183
+ * ```
184
+ *
185
+ * @param name - Optional name of the sdk to initialise.
186
+ * If name is not provided, the default is "[DEFAULT]"
187
+ *
188
+ * @public
189
+ */
190
+ function getSdk(name) {
191
+ if (name === void 0) { name = DEFAULT_SDK_NAME; }
192
+ var sdk = sdks.get(name);
193
+ if (!sdk) {
194
+ throw new Error("No Monterosa Sdk \"" + name + "\" has been configured.\n You need to call configure() first");
195
+ }
196
+ return sdk;
197
+ }
198
+ /**
199
+ * @internal
200
+ */
201
+ function getDeviceId() {
202
+ if (DEVICE_ID !== undefined) {
203
+ return DEVICE_ID;
204
+ }
205
+ if (!sdkUtil.checkAvailability()) {
206
+ DEVICE_ID = uuid.v4();
207
+ return DEVICE_ID;
208
+ }
209
+ var value = sdkUtil.getItem(DEVICE_ID_KEY);
210
+ if (value === null) {
211
+ DEVICE_ID = uuid.v4();
212
+ sdkUtil.setItem(DEVICE_ID_KEY, DEVICE_ID);
213
+ }
214
+ else {
215
+ DEVICE_ID = value;
216
+ }
217
+ return DEVICE_ID;
218
+ }
219
+ /**
220
+ * Creates an SDK instance.
221
+ *
222
+ * @example
223
+ *
224
+ * Configure default sdk with host and project id
225
+ *
226
+ * ```javascript
227
+ * configure({
228
+ * host: "...",
229
+ * projectId: "..."
230
+ * });
231
+ * ```
232
+ *
233
+ * @param options - Studio host
234
+ * @param name - Optional name of the sdk to initialise.
235
+ * If name is not provided, the default is "[DEFAULT]"
236
+ *
237
+ * @returns Configured SDK instance.
238
+ *
239
+ * @public
240
+ */
241
+ function configure(options, name) {
242
+ if (name === void 0) { name = DEFAULT_SDK_NAME; }
243
+ var existingSdk = sdks.get(name);
244
+ if (existingSdk) {
245
+ return existingSdk;
246
+ }
247
+ var sdk = new Sdk(options, name);
248
+ sdks.set(name, sdk);
249
+ return sdk;
250
+ }
251
+ /**
252
+ * Destroy initialised sdk
253
+ *
254
+ * @example
255
+ * ```javascript
256
+ * const sdk = configure(...);
257
+ *
258
+ * destroy(sdk);
259
+ * ```
260
+ *
261
+ * @param sdk - sdk instance
262
+ */
263
+ function destroy(sdk) {
264
+ var name = sdk.name;
265
+ sdks.delete(name);
266
+ sdk.deleteKits();
267
+ sdk.isDestroyed = true;
268
+ }
269
+
270
+ /**
271
+ * @license
272
+ * logger.ts
273
+ * core
274
+ *
275
+ * Created by Rygor Kharytanovich <rygor@monterosa.co.uk> on 2022-05-31
276
+ * Copyright © 2022 Monterosa. All rights reserved.
277
+ *
278
+ * More details on the license can be found at https://www.monterosa.co/sdk/license
279
+ */
280
+ var _a;
281
+ /* eslint-disable no-console */
282
+ /**
283
+ * Represents the possible log levels.
284
+ */
285
+ exports.LogLevel = void 0;
286
+ (function (LogLevel) {
287
+ /**
288
+ * Verbose level. Provides detailed and extensive logging.
289
+ */
290
+ LogLevel[LogLevel["Verbose"] = 0] = "Verbose";
291
+ /**
292
+ * Debug level. Used for debugging and development purposes.
293
+ */
294
+ LogLevel[LogLevel["Debug"] = 1] = "Debug";
295
+ /**
296
+ * Info level. Used to provide general information about the system's state.
297
+ */
298
+ LogLevel[LogLevel["Info"] = 2] = "Info";
299
+ /**
300
+ * Warn level. Indicates potential issues or situations that might cause problems in the future.
301
+ */
302
+ LogLevel[LogLevel["Warn"] = 3] = "Warn";
303
+ /**
304
+ * Error level. Indicates critical errors and issues that require immediate attention.
305
+ */
306
+ LogLevel[LogLevel["Error"] = 4] = "Error";
307
+ /**
308
+ * Silent level. No logs will be output.
309
+ */
310
+ LogLevel[LogLevel["Silent"] = 5] = "Silent";
311
+ })(exports.LogLevel || (exports.LogLevel = {}));
312
+ var Methods = (_a = {},
313
+ _a[exports.LogLevel.Verbose] = 'log',
314
+ // `console.debug` is not shown in Chrome and Edge by default. It must be
315
+ // enabled manually. To avoid hassle for developers with settings debug
316
+ // messages are sent to `console.log`
317
+ _a[exports.LogLevel.Debug] = 'log',
318
+ _a[exports.LogLevel.Info] = 'info',
319
+ _a[exports.LogLevel.Warn] = 'warn',
320
+ _a[exports.LogLevel.Error] = 'error',
321
+ _a);
322
+ var logHandler = function (logger, logLevel) {
323
+ var args = [];
324
+ for (var _i = 2; _i < arguments.length; _i++) {
325
+ args[_i - 2] = arguments[_i];
326
+ }
327
+ if (logger.logLevel > logLevel) {
328
+ return;
329
+ }
330
+ var method = Methods[logLevel];
331
+ console[method].apply(console, __spreadArray([new Date().toISOString().replace(/[TZ]/gi, ' ').trim(), exports.LogLevel[logLevel] + "/" + logger.name + ":"], args));
332
+ };
333
+ /** @internal */
334
+ var Logger = /** @class */ (function () {
335
+ function Logger(name) {
336
+ this.name = name;
337
+ this._logLevel = exports.LogLevel.Warn;
338
+ this._logHandler = logHandler;
339
+ }
340
+ Object.defineProperty(Logger.prototype, "logLevel", {
341
+ get: function () {
342
+ return this._logLevel;
343
+ },
344
+ set: function (level) {
345
+ this._logLevel = level;
346
+ },
347
+ enumerable: false,
348
+ configurable: true
349
+ });
350
+ Object.defineProperty(Logger.prototype, "logHandler", {
351
+ get: function () {
352
+ return this._logHandler;
353
+ },
354
+ set: function (handler) {
355
+ this.logHandler = handler;
356
+ },
357
+ enumerable: false,
358
+ configurable: true
359
+ });
360
+ Logger.prototype.log = function () {
361
+ var args = [];
362
+ for (var _i = 0; _i < arguments.length; _i++) {
363
+ args[_i] = arguments[_i];
364
+ }
365
+ this.logHandler.apply(this, __spreadArray([this, exports.LogLevel.Verbose], args));
366
+ };
367
+ Logger.prototype.debug = function () {
368
+ var args = [];
369
+ for (var _i = 0; _i < arguments.length; _i++) {
370
+ args[_i] = arguments[_i];
371
+ }
372
+ this.logHandler.apply(this, __spreadArray([this, exports.LogLevel.Debug], args));
373
+ };
374
+ Logger.prototype.info = function () {
375
+ var args = [];
376
+ for (var _i = 0; _i < arguments.length; _i++) {
377
+ args[_i] = arguments[_i];
378
+ }
379
+ this.logHandler.apply(this, __spreadArray([this, exports.LogLevel.Info], args));
380
+ };
381
+ Logger.prototype.warn = function () {
382
+ var args = [];
383
+ for (var _i = 0; _i < arguments.length; _i++) {
384
+ args[_i] = arguments[_i];
385
+ }
386
+ this.logHandler.apply(this, __spreadArray([this, exports.LogLevel.Warn], args));
387
+ };
388
+ Logger.prototype.error = function () {
389
+ var args = [];
390
+ for (var _i = 0; _i < arguments.length; _i++) {
391
+ args[_i] = arguments[_i];
392
+ }
393
+ this.logHandler.apply(this, __spreadArray([this, exports.LogLevel.Error], args));
394
+ };
395
+ return Logger;
396
+ }());
397
+
398
+ exports.DEFAULT_SDK_NAME = DEFAULT_SDK_NAME;
399
+ exports.DEVICE_ID_KEY = DEVICE_ID_KEY;
400
+ exports.Logger = Logger;
401
+ exports.Sdk = Sdk;
402
+ exports.VERSION = VERSION;
403
+ exports.addKit = addKit;
404
+ exports.configure = configure;
405
+ exports.deleteKit = deleteKit;
406
+ exports.destroy = destroy;
407
+ exports.getDeviceId = getDeviceId;
408
+ exports.getKit = getKit;
409
+ exports.getSdk = getSdk;
410
+ exports.getSdks = getSdks;
411
+ //# sourceMappingURL=index.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs.js","sources":["../src/constants.ts","../src/sdk.ts","../src/api.ts","../src/utils/logger.ts"],"sourcesContent":["/**\n * @license\n * constants.ts\n * core\n *\n * Created by Rygor Kharytanovich <rygor@monterosa.co.uk> on 2023-03-21\n * Copyright © 2023 Monterosa. All rights reserved.\n *\n * More details on the license can be found at https://www.monterosa.co/sdk/license\n */\n\nimport { version } from '../package.json';\n\n/**\n * Default sdk name.\n *\n * @internal\n */\nexport const DEFAULT_SDK_NAME = '[DEFAULT]';\n\n/**\n * The current SDK version.\n *\n * @public\n */\nexport const VERSION = version;\n\n/**\n * Device ID storage key name\n *\n * @internal\n */\nexport const DEVICE_ID_KEY = 'device_id';\n","/**\n * @license\n * sdk.ts\n * core\n *\n * Created by Rygor Kharytanovich <rygor@monterosa.co.uk> on 2021-09-23\n * Copyright © 2022 Monterosa. All rights reserved.\n *\n * More details on the license can be found at https://www.monterosa.co/sdk/license\n */\n\nimport { MonterosaSdk, MonterosaKit, Kits, SdkOptions } from './types';\n\n/**\n * @internal\n */\nexport class Sdk implements MonterosaSdk {\n private readonly _options: SdkOptions;\n private readonly _name: string;\n private _isDestroyed: boolean = false;\n private _kits: Kits;\n\n constructor(options: SdkOptions, name: string) {\n this._options = { ...options };\n this._name = name;\n this._kits = new Map();\n }\n\n get name(): string {\n this.checkDestroyed();\n return this._name;\n }\n\n get options(): SdkOptions {\n this.checkDestroyed();\n return this._options;\n }\n\n get isDestroyed(): boolean {\n return this._isDestroyed;\n }\n\n get kits(): Kits {\n return this._kits;\n }\n\n set isDestroyed(value: boolean) {\n this._isDestroyed = value;\n }\n\n public deleteKits() {\n this.kits.forEach((kit, name) => {\n this.kits.delete(name);\n kit.delete();\n });\n }\n\n private checkDestroyed(): void {\n if (this.isDestroyed) {\n throw new Error(`SDK named ${this.name} destroyed`);\n }\n }\n}\n\n/**\n * @internal\n */\nexport function addKit(sdk: MonterosaSdk, name: string, kit: MonterosaKit) {\n sdk.kits.set(name, kit);\n}\n\n/**\n * @internal\n */\nexport function getKit(\n sdk: MonterosaSdk,\n name: string,\n): MonterosaKit | undefined {\n return sdk.kits.get(name);\n}\n\n/**\n * @internal\n */\nexport function deleteKit(sdk: MonterosaSdk, name: string): void {\n sdk.kits.delete(name);\n}\n","/**\n * @license\n * api.ts\n * core\n *\n * Created by Rygor Kharytanovich <rygor@monterosa.co.uk> on 2022-02-15\n * Copyright © 2022 Monterosa. All rights reserved.\n *\n * More details on the license can be found at https://www.monterosa.co/sdk/license\n */\n\nimport { v4 as uuidv4 } from 'uuid';\nimport {\n getItem as getStorageItem,\n setItem as setStorageItem,\n checkAvailability as checkStorageAvailability,\n} from '@monterosa/sdk-util';\n\nimport { MonterosaSdk, SdkOptions } from './types';\nimport { DEFAULT_SDK_NAME, DEVICE_ID_KEY } from './constants';\nimport { Sdk } from './sdk';\n\nconst sdks = new Map<string, MonterosaSdk>();\n\nlet DEVICE_ID: string;\n\n/**\n * An array of all configured sdks.\n *\n * @public\n */\nexport function getSdks(): MonterosaSdk[] {\n return Array.from(sdks.values());\n}\n\n/**\n * Retrieves an SDK instance by its name.\n *\n * @example\n * ```javascript\n * const sdk = getSdk('my-sdk');\n * ```\n *\n * @param name - Optional name of the sdk to initialise.\n * If name is not provided, the default is \"[DEFAULT]\"\n *\n * @public\n */\nexport function getSdk(name: string = DEFAULT_SDK_NAME): MonterosaSdk {\n const sdk = sdks.get(name);\n\n if (!sdk) {\n throw new Error(\n `No Monterosa Sdk \"${name}\" has been configured.\n You need to call configure() first`,\n );\n }\n\n return sdk;\n}\n\n/**\n * @internal\n */\nexport function getDeviceId() {\n if (DEVICE_ID !== undefined) {\n return DEVICE_ID;\n }\n\n if (!checkStorageAvailability()) {\n DEVICE_ID = uuidv4();\n\n return DEVICE_ID;\n }\n\n const value = getStorageItem(DEVICE_ID_KEY);\n\n if (value === null) {\n DEVICE_ID = uuidv4();\n\n setStorageItem(DEVICE_ID_KEY, DEVICE_ID);\n } else {\n DEVICE_ID = value;\n }\n\n return DEVICE_ID;\n}\n\n/**\n * Creates an SDK instance.\n *\n * @example\n *\n * Configure default sdk with host and project id\n *\n * ```javascript\n * configure({\n * host: \"...\",\n * projectId: \"...\"\n * });\n * ```\n *\n * @param options - Studio host\n * @param name - Optional name of the sdk to initialise.\n * If name is not provided, the default is \"[DEFAULT]\"\n *\n * @returns Configured SDK instance.\n *\n * @public\n */\nexport function configure(\n options: SdkOptions,\n name: string = DEFAULT_SDK_NAME,\n): MonterosaSdk {\n const existingSdk = sdks.get(name);\n\n if (existingSdk) {\n return existingSdk;\n }\n\n const sdk = new Sdk(options, name);\n\n sdks.set(name, sdk);\n\n return sdk;\n}\n\n/**\n * Destroy initialised sdk\n *\n * @example\n * ```javascript\n * const sdk = configure(...);\n *\n * destroy(sdk);\n * ```\n *\n * @param sdk - sdk instance\n */\nexport function destroy(sdk: MonterosaSdk) {\n const { name } = sdk;\n\n sdks.delete(name);\n sdk.deleteKits();\n sdk.isDestroyed = true;\n}\n","/**\n * @license\n * logger.ts\n * core\n *\n * Created by Rygor Kharytanovich <rygor@monterosa.co.uk> on 2022-05-31\n * Copyright © 2022 Monterosa. All rights reserved.\n *\n * More details on the license can be found at https://www.monterosa.co/sdk/license\n */\n\n/* eslint-disable no-console */\n\n/**\n * Represents the possible log levels.\n */\nexport enum LogLevel {\n /**\n * Verbose level. Provides detailed and extensive logging.\n */\n Verbose,\n /**\n * Debug level. Used for debugging and development purposes.\n */\n Debug,\n /**\n * Info level. Used to provide general information about the system's state.\n */\n Info,\n /**\n * Warn level. Indicates potential issues or situations that might cause problems in the future.\n */\n Warn,\n /**\n * Error level. Indicates critical errors and issues that require immediate attention.\n */\n Error,\n /**\n * Silent level. No logs will be output.\n */\n Silent,\n}\n\n/** @internal */\nexport type LogHandler = (\n logger: Logger,\n logType: LogLevel,\n ...args: unknown[]\n) => void;\n\nconst Methods = {\n [LogLevel.Verbose]: 'log',\n // `console.debug` is not shown in Chrome and Edge by default. It must be\n // enabled manually. To avoid hassle for developers with settings debug\n // messages are sent to `console.log`\n [LogLevel.Debug]: 'log',\n [LogLevel.Info]: 'info',\n [LogLevel.Warn]: 'warn',\n [LogLevel.Error]: 'error',\n} as const;\n\nconst logHandler: LogHandler = (logger, logLevel, ...args) => {\n if (logger.logLevel > logLevel) {\n return;\n }\n\n const method = Methods[logLevel as keyof typeof Methods];\n\n console[method](\n new Date().toISOString().replace(/[TZ]/gi, ' ').trim(),\n `${LogLevel[logLevel]}/${logger.name}:`,\n ...args,\n );\n};\n\n/** @internal */\nexport class Logger {\n private _logLevel: LogLevel = LogLevel.Warn;\n private _logHandler: LogHandler = logHandler;\n\n constructor(public name: string) {}\n\n get logLevel(): LogLevel {\n return this._logLevel;\n }\n\n set logLevel(level: LogLevel) {\n this._logLevel = level;\n }\n\n get logHandler(): LogHandler {\n return this._logHandler;\n }\n\n set logHandler(handler: LogHandler) {\n this.logHandler = handler;\n }\n\n log(...args: unknown[]) {\n this.logHandler(this, LogLevel.Verbose, ...args);\n }\n\n debug(...args: unknown[]) {\n this.logHandler(this, LogLevel.Debug, ...args);\n }\n\n info(...args: unknown[]) {\n this.logHandler(this, LogLevel.Info, ...args);\n }\n\n warn(...args: unknown[]) {\n this.logHandler(this, LogLevel.Warn, ...args);\n }\n\n error(...args: unknown[]) {\n this.logHandler(this, LogLevel.Error, ...args);\n }\n}\n"],"names":["checkStorageAvailability","uuidv4","getStorageItem","setStorageItem","LogLevel"],"mappings":"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"}