@ninetailed/experience.js-node 1.5.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/README.md ADDED
@@ -0,0 +1,7 @@
1
+ # experience-sdk-nodejs
2
+
3
+ This library was generated with [Nx](https://nx.dev).
4
+
5
+ ## Running unit tests
6
+
7
+ Run `nx test experience-sdk-nodejs` to execute the unit tests via [Jest](https://jestjs.io).
package/package.json ADDED
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "@ninetailed/experience.js-node",
3
+ "version": "1.5.0",
4
+ "dependencies": {
5
+ "node-fetch": "^3.0.0",
6
+ "uuid": "^8.3.2",
7
+ "@ninetailed/experience.js-shared": "1.5.0",
8
+ "ts-toolbelt": "^9.6.0",
9
+ "locale-enum": "^1.1.1",
10
+ "i18n-iso-countries": "^7.3.0"
11
+ },
12
+ "main": "./src/index.js",
13
+ "typings": "./src/index.d.ts",
14
+ "peerDependencies": {}
15
+ }
package/src/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from './lib';
2
+ export { default } from './lib';
package/src/index.js ADDED
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = void 0;
4
+ const tslib_1 = require("tslib");
5
+ (0, tslib_1.__exportStar)(require("./lib"), exports);
6
+ var lib_1 = require("./lib");
7
+ Object.defineProperty(exports, "default", { enumerable: true, get: function () { return lib_1.default; } });
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/nodejs/src/index.ts"],"names":[],"mappings":";;;;AAAA,qDAAsB;AACtB,6BAAgC;AAAvB,8FAAA,OAAO,OAAA"}
@@ -0,0 +1,19 @@
1
+ import { Event, IdentifyEvent, Traits } from '@ninetailed/experience.js-shared';
2
+ declare type NinetailedAPIClientOptions = {
3
+ apiKey: string;
4
+ url?: string;
5
+ };
6
+ declare type SendEventOptions = {
7
+ anonymousId?: string;
8
+ timestamp?: number;
9
+ };
10
+ export declare class NinetailedAPIClient {
11
+ private readonly apiKey;
12
+ private readonly url;
13
+ constructor({ apiKey, url }: NinetailedAPIClientOptions);
14
+ ingestEvents(events: Event[]): Promise<void>;
15
+ createIdentifyEvent(userId: string, traits: Traits, options?: SendEventOptions): IdentifyEvent;
16
+ sendIdentifyEvent(userId: string, traits: Traits, options?: SendEventOptions): Promise<void>;
17
+ private buildRequestContext;
18
+ }
19
+ export {};
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NinetailedAPIClient = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const uuid_1 = require("uuid");
6
+ const experience_js_shared_1 = require("@ninetailed/experience.js-shared");
7
+ const _importDynamic = new Function('modulePath', 'return import(modulePath)');
8
+ function fetch(...args) {
9
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
10
+ const { default: fetch } = yield _importDynamic('node-fetch');
11
+ return fetch(...args);
12
+ });
13
+ }
14
+ const BASE_URL = 'https://api.ninetailed.co';
15
+ class NinetailedAPIClient {
16
+ constructor({ apiKey, url = BASE_URL }) {
17
+ this.apiKey = apiKey;
18
+ this.url = url;
19
+ }
20
+ ingestEvents(events) {
21
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
22
+ const payload = {
23
+ events,
24
+ };
25
+ const response = yield fetch(`${this.url}/events`, {
26
+ method: 'POST',
27
+ headers: {
28
+ 'Content-Type': 'application/json',
29
+ 'x-ninetailed-api-key': this.apiKey,
30
+ },
31
+ body: JSON.stringify(payload),
32
+ });
33
+ const { message, error, } = (yield response.json());
34
+ if (error) {
35
+ throw new Error(message);
36
+ }
37
+ });
38
+ }
39
+ createIdentifyEvent(userId, traits, options) {
40
+ const messageId = (0, uuid_1.v4)();
41
+ const anonymousId = (options === null || options === void 0 ? void 0 : options.anonymousId) || (0, uuid_1.v4)();
42
+ const timestamp = (options === null || options === void 0 ? void 0 : options.timestamp) || Date.now();
43
+ return (0, experience_js_shared_1.buildIdentifyEvent)({
44
+ messageId,
45
+ ctx: this.buildRequestContext(),
46
+ userId,
47
+ traits,
48
+ anonymousId,
49
+ timestamp,
50
+ });
51
+ }
52
+ sendIdentifyEvent(userId, traits, options) {
53
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
54
+ const event = this.createIdentifyEvent(userId, traits, options);
55
+ yield this.ingestEvents([event]);
56
+ });
57
+ }
58
+ buildRequestContext() {
59
+ const ctx = {
60
+ url: '',
61
+ referrer: '',
62
+ locale: '',
63
+ userAgent: '',
64
+ };
65
+ return ctx;
66
+ }
67
+ }
68
+ exports.NinetailedAPIClient = NinetailedAPIClient;
69
+ //# sourceMappingURL=Client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Client.js","sourceRoot":"","sources":["../../../../../../packages/nodejs/src/lib/Client/Client.ts"],"names":[],"mappings":";;;;AAAA,+BAAkC;AAClC,2EAQ0C;AAE1C,MAAM,cAAc,GAAG,IAAI,QAAQ,CAAC,YAAY,EAAE,2BAA2B,CAAC,CAAC;AAE/E,SAAe,KAAK,CAAC,GAAG,IAAI;;QAC1B,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,cAAc,CAAC,YAAY,CAAC,CAAC;QAC9D,OAAO,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IACxB,CAAC;CAAA;AAYD,MAAM,QAAQ,GAAG,2BAA2B,CAAC;AAE7C,MAAa,mBAAmB;IAI9B,YAAY,EAAE,MAAM,EAAE,GAAG,GAAG,QAAQ,EAA8B;QAChE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAEY,YAAY,CAAC,MAAe;;YACvC,MAAM,OAAO,GAA+B;gBAC1C,MAAM;aACP,CAAC;YACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,SAAS,EAAE;gBACjD,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,sBAAsB,EAAE,IAAI,CAAC,MAAM;iBACpC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;aAC9B,CAAC,CAAC;YACH,MAAM,EACJ,OAAO,EACP,KAAK,GACN,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAgC,CAAC;YAC3D,IAAI,KAAK,EAAE;gBACT,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEM,mBAAmB,CACxB,MAAc,EACd,MAAc,EACd,OAA0B;QAE1B,MAAM,SAAS,GAAG,IAAA,SAAI,GAAE,CAAC;QACzB,MAAM,WAAW,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,KAAI,IAAA,SAAI,GAAE,CAAC;QACnD,MAAM,SAAS,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,KAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACnD,OAAO,IAAA,yCAAkB,EAAC;YACxB,SAAS;YACT,GAAG,EAAE,IAAI,CAAC,mBAAmB,EAAE;YAC/B,MAAM;YACN,MAAM;YACN,WAAW;YACX,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IAEY,iBAAiB,CAC5B,MAAc,EACd,MAAc,EACd,OAA0B;;YAE1B,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAChE,MAAM,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACnC,CAAC;KAAA;IAEO,mBAAmB;QACzB,MAAM,GAAG,GAA6B;YACpC,GAAG,EAAE,EAAE;YACP,QAAQ,EAAE,EAAE;YACZ,MAAM,EAAE,EAAE;YACV,SAAS,EAAE,EAAE;SACd,CAAC;QACF,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAlED,kDAkEC"}
@@ -0,0 +1 @@
1
+ export * from './Client';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ (0, tslib_1.__exportStar)(require("./Client"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/nodejs/src/lib/Client/index.ts"],"names":[],"mappings":";;;AAAA,wDAAyB"}
@@ -0,0 +1,6 @@
1
+ import { NinetailedAPIClient } from './Client';
2
+ export declare type Options = {
3
+ url?: string;
4
+ };
5
+ export declare const ninetailed: (apiKey: string, options?: Options) => NinetailedAPIClient;
6
+ export default ninetailed;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ninetailed = void 0;
4
+ const Client_1 = require("./Client");
5
+ const ninetailed = (apiKey, options) => {
6
+ return new Client_1.NinetailedAPIClient(Object.assign({ apiKey }, options));
7
+ };
8
+ exports.ninetailed = ninetailed;
9
+ exports.default = exports.ninetailed;
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/nodejs/src/lib/index.ts"],"names":[],"mappings":";;;AAAA,qCAA+C;AAMxC,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,OAAiB,EAAE,EAAE;IAC9D,OAAO,IAAI,4BAAmB,iBAAG,MAAM,IAAK,OAAO,EAAG,CAAC;AACzD,CAAC,CAAC;AAFW,QAAA,UAAU,cAErB;AAEF,kBAAe,kBAAU,CAAC"}