@code.store/arcxp-sdk-ts 2.0.0 → 2.0.2
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/dist/api/abstract-api.d.ts +19 -0
- package/dist/api/abstract-api.js +33 -0
- package/dist/api/abstract-api.js.map +1 -0
- package/dist/api/author/index.d.ts +5 -0
- package/dist/api/author/index.js +15 -0
- package/dist/api/author/index.js.map +1 -0
- package/dist/api/author/types.js +2 -0
- package/dist/api/author/types.js.map +1 -0
- package/dist/api/draft/index.d.ts +5 -0
- package/dist/api/draft/index.js +15 -0
- package/dist/api/draft/index.js.map +1 -0
- package/dist/api/draft/types.js +3 -0
- package/dist/api/draft/types.js.map +1 -0
- package/dist/api/error.d.ts +10 -0
- package/dist/api/error.js +24 -0
- package/dist/api/error.js.map +1 -0
- package/dist/api/identity/index.d.ts +6 -0
- package/dist/api/identity/index.js +15 -0
- package/dist/api/identity/index.js.map +1 -0
- package/dist/api/identity/types.d.ts +58 -0
- package/dist/api/identity/types.js +3 -0
- package/dist/api/identity/types.js.map +1 -0
- package/dist/api/ifx/index.d.ts +18 -0
- package/dist/api/ifx/index.js +56 -0
- package/dist/api/ifx/index.js.map +1 -0
- package/dist/api/ifx/types.d.ts +24 -0
- package/dist/api/ifx/types.js +3 -0
- package/dist/api/ifx/types.js.map +1 -0
- package/dist/api/index.d.ts +22 -0
- package/dist/api/index.js +42 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/migration-center/index.d.ts +10 -0
- package/dist/api/migration-center/index.js +34 -0
- package/dist/api/migration-center/index.js.map +1 -0
- package/dist/api/migration-center/types.d.ts +166 -0
- package/dist/api/migration-center/types.js +40 -0
- package/dist/api/migration-center/types.js.map +1 -0
- package/dist/api/sales/index.d.ts +6 -0
- package/dist/api/sales/index.js +25 -0
- package/dist/api/sales/index.js.map +1 -0
- package/dist/api/sales/types.d.ts +68 -0
- package/dist/api/sales/types.js +3 -0
- package/dist/api/sales/types.js.map +1 -0
- package/dist/api/site/index.d.ts +7 -0
- package/dist/api/site/index.js +19 -0
- package/dist/api/site/index.js.map +1 -0
- package/dist/api/site/types.js +3 -0
- package/dist/api/site/types.js.map +1 -0
- package/dist/api/websked/index.d.ts +6 -0
- package/dist/api/websked/index.js +15 -0
- package/dist/api/websked/index.js.map +1 -0
- package/dist/api/websked/types.d.ts +7 -0
- package/dist/api/websked/types.js +3 -0
- package/dist/api/websked/types.js.map +1 -0
- package/dist/api/ws.client.d.ts +17 -0
- package/dist/api/ws.client.js +67 -0
- package/dist/api/ws.client.js.map +1 -0
- package/dist/content-elements/index.d.ts +137 -0
- package/dist/content-elements/index.js +112 -0
- package/dist/content-elements/index.js.map +1 -0
- package/{src/index.ts → dist/index.d.ts} +0 -2
- package/dist/index.js +43 -0
- package/dist/index.js.map +1 -0
- package/dist/tests/api/basic.test.d.ts +1 -0
- package/dist/tests/api/basic.test.js +15 -0
- package/dist/tests/api/basic.test.js.map +1 -0
- package/dist/types/author.d.ts +1511 -0
- package/dist/types/author.js +9 -0
- package/dist/types/author.js.map +1 -0
- package/dist/types/index.js +30 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/section.d.ts +80 -0
- package/dist/types/section.js +3 -0
- package/dist/types/section.js.map +1 -0
- package/dist/types/story.d.ts +1865 -0
- package/dist/types/story.js +9 -0
- package/dist/types/story.js.map +1 -0
- package/dist/utils/cache.d.ts +21 -0
- package/dist/utils/cache.js +63 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/decorator.d.ts +2 -0
- package/dist/utils/decorator.js +21 -0
- package/dist/utils/decorator.js.map +1 -0
- package/dist/utils/duration.d.ts +7 -0
- package/dist/utils/duration.js +21 -0
- package/dist/utils/duration.js.map +1 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.js +52 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +7 -2
- package/.eslintrc.js +0 -26
- package/.github/workflows/build-test-lint.yml +0 -41
- package/.prettierrc +0 -7
- package/src/api/abstract-api.ts +0 -42
- package/src/api/author/index.ts +0 -13
- package/src/api/draft/index.ts +0 -12
- package/src/api/error.ts +0 -30
- package/src/api/identity/index.ts +0 -14
- package/src/api/identity/types.ts +0 -61
- package/src/api/ifx/index.ts +0 -64
- package/src/api/ifx/types.ts +0 -27
- package/src/api/index.ts +0 -37
- package/src/api/migration-center/index.ts +0 -47
- package/src/api/migration-center/types.ts +0 -173
- package/src/api/sales/index.ts +0 -22
- package/src/api/sales/types.ts +0 -73
- package/src/api/site/index.ts +0 -20
- package/src/api/websked/index.ts +0 -13
- package/src/api/websked/types.ts +0 -7
- package/src/api/ws.client.ts +0 -73
- package/src/content-elements/index.ts +0 -113
- package/src/tests/api/basic.test.ts +0 -15
- package/src/types/author.ts +0 -1537
- package/src/types/section.ts +0 -55
- package/src/types/story.ts +0 -1905
- package/src/utils/cache.ts +0 -63
- package/src/utils/decorator.ts +0 -20
- package/src/utils/duration.ts +0 -17
- package/src/utils/index.ts +0 -51
- package/tsconfig.json +0 -72
- package/vite.config.ts +0 -10
- /package/{src/api/author/types.ts → dist/api/author/types.d.ts} +0 -0
- /package/{src/api/draft/types.ts → dist/api/draft/types.d.ts} +0 -0
- /package/{src/api/site/types.ts → dist/api/site/types.d.ts} +0 -0
- /package/{src/types/index.ts → dist/types/index.d.ts} +0 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* eslint-disable */
|
|
3
|
+
/**
|
|
4
|
+
* This file was automatically generated by json-schema-to-typescript.
|
|
5
|
+
* DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
|
|
6
|
+
* and run json-schema-to-typescript to regenerate this file.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
//# sourceMappingURL=story.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"story.js","sourceRoot":"","sources":["../../src/types/story.ts"],"names":[],"mappings":";AAAA,oBAAoB;AACpB;;;;GAIG"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
export type CacheItem<Data> = {
|
|
3
|
+
data: Data;
|
|
4
|
+
ttl: number;
|
|
5
|
+
timer?: NodeJS.Timer;
|
|
6
|
+
};
|
|
7
|
+
export default class Cache<Data = any> {
|
|
8
|
+
private ttl;
|
|
9
|
+
private maxSize;
|
|
10
|
+
constructor(ttl?: number, maxSize?: number);
|
|
11
|
+
private cache;
|
|
12
|
+
get size(): number;
|
|
13
|
+
get keys(): string[];
|
|
14
|
+
get values(): Data[];
|
|
15
|
+
get(key: string): Data | void;
|
|
16
|
+
set(key: string, data: Data, ttl?: number): void;
|
|
17
|
+
del(key: string): true | undefined;
|
|
18
|
+
private resetTimeout;
|
|
19
|
+
private toPop;
|
|
20
|
+
private pop;
|
|
21
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const duration_1 = require("./duration");
|
|
4
|
+
class Cache {
|
|
5
|
+
constructor(ttl = duration_1.Duration.minutes(1), maxSize = 1000) {
|
|
6
|
+
this.ttl = ttl;
|
|
7
|
+
this.maxSize = maxSize;
|
|
8
|
+
this.cache = {};
|
|
9
|
+
this.toPop = [];
|
|
10
|
+
}
|
|
11
|
+
get size() {
|
|
12
|
+
return this.keys.length;
|
|
13
|
+
}
|
|
14
|
+
get keys() {
|
|
15
|
+
return Object.keys(this.cache);
|
|
16
|
+
}
|
|
17
|
+
get values() {
|
|
18
|
+
return Object.values(this.cache).map(({ data }) => data);
|
|
19
|
+
}
|
|
20
|
+
get(key) {
|
|
21
|
+
this.resetTimeout(key);
|
|
22
|
+
return this.cache[key]?.data;
|
|
23
|
+
}
|
|
24
|
+
set(key, data, ttl = this.ttl) {
|
|
25
|
+
this.pop();
|
|
26
|
+
this.del(key);
|
|
27
|
+
const item = { data, ttl };
|
|
28
|
+
this.cache[key] = item;
|
|
29
|
+
this.toPop.push(key);
|
|
30
|
+
this.resetTimeout(key, ttl);
|
|
31
|
+
}
|
|
32
|
+
del(key) {
|
|
33
|
+
if (!this.cache[key])
|
|
34
|
+
return;
|
|
35
|
+
const { timer } = this.cache[key];
|
|
36
|
+
if (timer)
|
|
37
|
+
clearTimeout(timer);
|
|
38
|
+
delete this.cache[key];
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
resetTimeout(key, ttl) {
|
|
42
|
+
const item = this.cache[key];
|
|
43
|
+
if (!item)
|
|
44
|
+
return;
|
|
45
|
+
if (item.timer)
|
|
46
|
+
clearTimeout(item.timer);
|
|
47
|
+
ttl = ttl ?? item.ttl;
|
|
48
|
+
if (Number.isFinite(ttl)) {
|
|
49
|
+
item.timer = setTimeout(() => {
|
|
50
|
+
this.del(key);
|
|
51
|
+
}, ttl);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
pop() {
|
|
55
|
+
if (this.toPop.length < this.maxSize)
|
|
56
|
+
return;
|
|
57
|
+
const key = this.toPop.shift();
|
|
58
|
+
if (!this.del(key))
|
|
59
|
+
this.pop();
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.default = Cache;
|
|
63
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":";;AAAA,yCAAsC;AAItC,MAAqB,KAAK;IACxB,YAA2B,MAAM,mBAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAU,UAAU,IAAI;QAAjD,QAAG,GAAH,GAAG,CAAsB;QAAU,YAAO,GAAP,OAAO,CAAO;QAEpE,UAAK,GAAoC,EAAE,CAAC;QAiD5C,UAAK,GAAa,EAAE,CAAC;IAnDkD,CAAC;IAIhF,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IAC1B,CAAC;IAED,IAAW,IAAI;QACb,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,IAAW,MAAM;QACf,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IAEM,GAAG,CAAC,GAAW;QACpB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;IAC/B,CAAC;IAEM,GAAG,CAAC,GAAW,EAAE,IAAU,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG;QAChD,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEd,MAAM,IAAI,GAAoB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAA6B,CAAC;QAChD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9B,CAAC;IAEM,GAAG,CAAC,GAAW;QACpB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;YAAE,OAAO;QAC7B,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,KAAK;YAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,YAAY,CAAC,GAAW,EAAE,GAAY;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,IAAI,IAAI,CAAC,KAAK;YAAE,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzC,GAAG,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;QACtB,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACxB,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC3B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC,EAAE,GAAG,CAAC,CAAC;SACT;IACH,CAAC;IAGO,GAAG;QACT,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO;YAAE,OAAO;QAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAG,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjC,CAAC;CACF;AA1DD,wBA0DC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Cached = void 0;
|
|
4
|
+
function Cached(cache) {
|
|
5
|
+
return (target, propertyKey, descriptor) => {
|
|
6
|
+
const original = descriptor.value;
|
|
7
|
+
descriptor.value = async function value(...args) {
|
|
8
|
+
const key = JSON.stringify(args);
|
|
9
|
+
const cached = cache.get(key);
|
|
10
|
+
if (cached) {
|
|
11
|
+
return cached;
|
|
12
|
+
}
|
|
13
|
+
const data = await original.apply(this, args);
|
|
14
|
+
cache.set(key, data);
|
|
15
|
+
return data;
|
|
16
|
+
};
|
|
17
|
+
Object.defineProperty(descriptor.value, 'name', { get: () => propertyKey });
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
exports.Cached = Cached;
|
|
21
|
+
//# sourceMappingURL=decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorator.js","sourceRoot":"","sources":["../../src/utils/decorator.ts"],"names":[],"mappings":";;;AAEA,SAAgB,MAAM,CAAC,KAAY;IACjC,OAAO,CAAC,MAAW,EAAE,WAA4B,EAAE,UAA8B,EAAQ,EAAE;QACzF,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC;QAElC,UAAU,CAAC,KAAK,GAAG,KAAK,UAAU,KAAK,CAAC,GAAG,IAAW;YACpD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,MAAM,EAAE;gBACV,OAAO,MAAM,CAAC;aACf;YACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC9C,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACrB,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9E,CAAC,CAAC;AACJ,CAAC;AAjBD,wBAiBC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Duration = void 0;
|
|
4
|
+
exports.Duration = {
|
|
5
|
+
seconds(s = 1) {
|
|
6
|
+
return s * 1000;
|
|
7
|
+
},
|
|
8
|
+
minutes(m = 1) {
|
|
9
|
+
return this.seconds(60) * m;
|
|
10
|
+
},
|
|
11
|
+
hours(h = 1) {
|
|
12
|
+
return this.minutes(60) * h;
|
|
13
|
+
},
|
|
14
|
+
days(d = 1) {
|
|
15
|
+
return this.hours(24) * d;
|
|
16
|
+
},
|
|
17
|
+
weeks(w = 1) {
|
|
18
|
+
return this.days(7) * w;
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=duration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duration.js","sourceRoot":"","sources":["../../src/utils/duration.ts"],"names":[],"mappings":";;;AAAa,QAAA,QAAQ,GAAG;IACtB,OAAO,CAAC,CAAC,GAAG,CAAC;QACX,OAAO,CAAC,GAAG,IAAI,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,CAAC,GAAG,CAAC;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IACD,KAAK,CAAC,CAAC,GAAG,CAAC;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,CAAC,CAAC,GAAG,CAAC;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IACD,KAAK,CAAC,CAAC,GAAG,CAAC;QACT,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const safeJSONParse: (data: string) => any;
|
|
2
|
+
export declare const safeJSONStringify: (data: any) => string;
|
|
3
|
+
export declare const withTimeout: <T>(fn: Promise<T>, timeout: number) => Promise<T>;
|
|
4
|
+
export declare const AxiosResponseErrorInterceptor: <T = any, E extends Error = any>(errorConstructor: (e: any) => E) => [onFulfilled?: ((value: T) => T | Promise<T>) | undefined, onRejected?: ((error: any) => any) | undefined];
|
|
5
|
+
export declare const sleep: (ms?: number) => Promise<unknown>;
|
|
6
|
+
export declare const timestampFromNow: (ms?: number) => number;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.timestampFromNow = exports.sleep = exports.AxiosResponseErrorInterceptor = exports.withTimeout = exports.safeJSONStringify = exports.safeJSONParse = void 0;
|
|
4
|
+
const safeJSONParse = (data) => {
|
|
5
|
+
try {
|
|
6
|
+
return JSON.parse(data);
|
|
7
|
+
}
|
|
8
|
+
catch {
|
|
9
|
+
return {};
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
exports.safeJSONParse = safeJSONParse;
|
|
13
|
+
const safeJSONStringify = (data) => {
|
|
14
|
+
try {
|
|
15
|
+
return JSON.stringify(data) || '';
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return '';
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
exports.safeJSONStringify = safeJSONStringify;
|
|
22
|
+
const withTimeout = (fn, timeout) => {
|
|
23
|
+
return new Promise((resolve, reject) => {
|
|
24
|
+
const nodeTimeout = setTimeout(() => {
|
|
25
|
+
reject(`Timeout ${timeout} exceed`);
|
|
26
|
+
}, timeout);
|
|
27
|
+
fn.then((data) => {
|
|
28
|
+
clearTimeout(nodeTimeout);
|
|
29
|
+
resolve(data);
|
|
30
|
+
}, (error) => {
|
|
31
|
+
clearTimeout(nodeTimeout);
|
|
32
|
+
reject(error);
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
exports.withTimeout = withTimeout;
|
|
37
|
+
const AxiosResponseErrorInterceptor = (errorConstructor) => {
|
|
38
|
+
return [
|
|
39
|
+
(response) => response,
|
|
40
|
+
(error) => {
|
|
41
|
+
throw errorConstructor(error);
|
|
42
|
+
},
|
|
43
|
+
];
|
|
44
|
+
};
|
|
45
|
+
exports.AxiosResponseErrorInterceptor = AxiosResponseErrorInterceptor;
|
|
46
|
+
const sleep = (ms = 1000) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
47
|
+
exports.sleep = sleep;
|
|
48
|
+
const timestampFromNow = (ms = 0) => {
|
|
49
|
+
return Date.now() + ms;
|
|
50
|
+
};
|
|
51
|
+
exports.timestampFromNow = timestampFromNow;
|
|
52
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;AAAO,MAAM,aAAa,GAAG,CAAC,IAAY,EAAO,EAAE;IACjD,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KACzB;IAAC,MAAM;QACN,OAAO,EAAE,CAAC;KACX;AACH,CAAC,CAAC;AANW,QAAA,aAAa,iBAMxB;AAEK,MAAM,iBAAiB,GAAG,CAAC,IAAS,EAAU,EAAE;IACrD,IAAI;QACF,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;KACnC;IAAC,MAAM;QACN,OAAO,EAAE,CAAC;KACX;AACH,CAAC,CAAC;AANW,QAAA,iBAAiB,qBAM5B;AAEK,MAAM,WAAW,GAAG,CAAI,EAAc,EAAE,OAAe,EAAc,EAAE;IAC5E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE;YAClC,MAAM,CAAC,WAAW,OAAO,SAAS,CAAC,CAAC;QACtC,CAAC,EAAE,OAAO,CAAC,CAAC;QAEZ,EAAE,CAAC,IAAI,CACL,CAAC,IAAI,EAAE,EAAE;YACP,YAAY,CAAC,WAAW,CAAC,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,EACD,CAAC,KAAK,EAAE,EAAE;YACR,YAAY,CAAC,WAAW,CAAC,CAAC;YAC1B,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAjBW,QAAA,WAAW,eAiBtB;AAEK,MAAM,6BAA6B,GAAG,CAC3C,gBAA+B,EACiD,EAAE;IAClF,OAAO;QACL,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ;QACtB,CAAC,KAAK,EAAE,EAAE;YACR,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AATW,QAAA,6BAA6B,iCASxC;AAEK,MAAM,KAAK,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAAzE,QAAA,KAAK,SAAoE;AAE/E,MAAM,gBAAgB,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE;IACzC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;AACzB,CAAC,CAAC;AAFW,QAAA,gBAAgB,oBAE3B"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@code.store/arcxp-sdk-ts",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.2",
|
|
4
4
|
"description": "",
|
|
5
|
-
"
|
|
5
|
+
"type": "commonjs",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"files": [
|
|
9
|
+
"dist"
|
|
10
|
+
],
|
|
6
11
|
"scripts": {
|
|
7
12
|
"build": "tsc",
|
|
8
13
|
"lint": "tsc --noEmit && TIMING=1 eslint \"src/**/*.ts*\"",
|
package/.eslintrc.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
module.exports = {
|
|
2
|
-
root: true,
|
|
3
|
-
extends: [
|
|
4
|
-
'custom-server',
|
|
5
|
-
'plugin:@typescript-eslint/recommended',
|
|
6
|
-
'plugin:@typescript-eslint/recommended-requiring-type-checking',
|
|
7
|
-
],
|
|
8
|
-
parser: '@typescript-eslint/parser',
|
|
9
|
-
plugins: ['@typescript-eslint'],
|
|
10
|
-
rules: {
|
|
11
|
-
'@typescript-eslint/no-unused-vars': ['warn', { argsIgnorePattern: '^_' }],
|
|
12
|
-
'@typescript-eslint/no-floating-promises': 'off',
|
|
13
|
-
'@typescript-eslint/no-unsafe-assignment': 'off',
|
|
14
|
-
'@typescript-eslint/no-unsafe-call': 'off',
|
|
15
|
-
'@typescript-eslint/no-unsafe-member-access': 'off',
|
|
16
|
-
'@typescript-eslint/no-unsafe-argument': 'off',
|
|
17
|
-
'@typescript-eslint/no-unsafe-return': 'off',
|
|
18
|
-
'@typescript-eslint/no-non-null-assertion': 'off',
|
|
19
|
-
'@typescript-eslint/no-non-null-asserted-optional-chain': 'off',
|
|
20
|
-
'@typescript-eslint/restrict-template-expressions': 'off',
|
|
21
|
-
},
|
|
22
|
-
parserOptions: {
|
|
23
|
-
project: './tsconfig.json',
|
|
24
|
-
},
|
|
25
|
-
ignorePatterns: ['.eslintrc.js', 'vite.config.ts'],
|
|
26
|
-
};
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
name: CI
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
push:
|
|
5
|
-
branches: ['main']
|
|
6
|
-
pull_request:
|
|
7
|
-
types: [opened, synchronize]
|
|
8
|
-
|
|
9
|
-
jobs:
|
|
10
|
-
build:
|
|
11
|
-
name: Build & Test
|
|
12
|
-
timeout-minutes: 5
|
|
13
|
-
runs-on: ubuntu-latest
|
|
14
|
-
|
|
15
|
-
steps:
|
|
16
|
-
- name: Check out code
|
|
17
|
-
uses: actions/checkout@v3
|
|
18
|
-
with:
|
|
19
|
-
fetch-depth: 2
|
|
20
|
-
|
|
21
|
-
- uses: pnpm/action-setup@v2.0.1
|
|
22
|
-
with:
|
|
23
|
-
version: 7.22.0
|
|
24
|
-
|
|
25
|
-
- name: Setup Node.js environment
|
|
26
|
-
uses: actions/setup-node@v3
|
|
27
|
-
with:
|
|
28
|
-
node-version: 18.12.1
|
|
29
|
-
cache: 'pnpm'
|
|
30
|
-
|
|
31
|
-
- name: Install dependencies
|
|
32
|
-
run: pnpm install
|
|
33
|
-
|
|
34
|
-
- name: Build
|
|
35
|
-
run: pnpm build
|
|
36
|
-
|
|
37
|
-
- name: Lint
|
|
38
|
-
run: pnpm lint
|
|
39
|
-
|
|
40
|
-
- name: Test
|
|
41
|
-
run: pnpm test
|
package/.prettierrc
DELETED
package/src/api/abstract-api.ts
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import axios from 'axios';
|
|
2
|
-
import { AxiosResponseErrorInterceptor } from '../utils';
|
|
3
|
-
import rateLimit, { RateLimitedAxiosInstance } from 'axios-rate-limit';
|
|
4
|
-
import { ArcError } from './error';
|
|
5
|
-
|
|
6
|
-
export type ArcAbstractAPIOptions = {
|
|
7
|
-
credentials: { organizationName: string; accessToken: string };
|
|
8
|
-
apiPath: string;
|
|
9
|
-
maxRPS?: number;
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
export type ArcAPIOptions = Omit<ArcAbstractAPIOptions, 'apiPath'>;
|
|
13
|
-
|
|
14
|
-
export abstract class ArcAbstractAPI {
|
|
15
|
-
protected name = this.constructor.name;
|
|
16
|
-
protected client: RateLimitedAxiosInstance;
|
|
17
|
-
|
|
18
|
-
private token = '';
|
|
19
|
-
private host = '';
|
|
20
|
-
private headers = {
|
|
21
|
-
Authorization: '',
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
constructor(options: ArcAbstractAPIOptions) {
|
|
25
|
-
this.host = `api.${options.credentials.organizationName}.arcpublishing.com`;
|
|
26
|
-
this.token = `Bearer ${options.credentials.accessToken}`;
|
|
27
|
-
this.headers.Authorization = this.token;
|
|
28
|
-
this.client = rateLimit(
|
|
29
|
-
axios.create({
|
|
30
|
-
baseURL: `https://${this.host}/${options.apiPath}`,
|
|
31
|
-
headers: this.headers,
|
|
32
|
-
}),
|
|
33
|
-
{ maxRPS: options.maxRPS || 10 }
|
|
34
|
-
);
|
|
35
|
-
|
|
36
|
-
this.client.interceptors.response.use(...AxiosResponseErrorInterceptor((e) => new ArcError(this.name, e)));
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
setMaxRPS(rps: number) {
|
|
40
|
-
this.client.setMaxRPS(rps);
|
|
41
|
-
}
|
|
42
|
-
}
|
package/src/api/author/index.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { ArcAbstractAPI, ArcAPIOptions } from '../abstract-api';
|
|
2
|
-
|
|
3
|
-
export class ArcAuthor extends ArcAbstractAPI {
|
|
4
|
-
constructor(options: ArcAPIOptions) {
|
|
5
|
-
super({ ...options, apiPath: 'author' });
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
async delete(userId: string): Promise<void> {
|
|
9
|
-
const { data } = await this.client.delete(`/v2/author-service/${userId}`);
|
|
10
|
-
|
|
11
|
-
return data;
|
|
12
|
-
}
|
|
13
|
-
}
|
package/src/api/draft/index.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { ArcAbstractAPI, ArcAPIOptions } from '../abstract-api';
|
|
2
|
-
|
|
3
|
-
export class ArcDraft extends ArcAbstractAPI {
|
|
4
|
-
constructor(options: ArcAPIOptions) {
|
|
5
|
-
super({ ...options, apiPath: 'draft/v1' });
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
async generateId(id: string) {
|
|
9
|
-
const { data } = await this.client.get<{ id: string }>('/arcuuid', { params: { id } });
|
|
10
|
-
return data.id;
|
|
11
|
-
}
|
|
12
|
-
}
|
package/src/api/error.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { AxiosError, InternalAxiosRequestConfig } from 'axios';
|
|
2
|
-
import { safeJSONStringify } from '../utils';
|
|
3
|
-
|
|
4
|
-
export class ArcError extends Error {
|
|
5
|
-
public responseData: unknown;
|
|
6
|
-
public responseStatus?: number;
|
|
7
|
-
public responseConfig?: InternalAxiosRequestConfig<any>;
|
|
8
|
-
public ratelimitRemaining?: string;
|
|
9
|
-
public ratelimitReset?: string;
|
|
10
|
-
public service?: string;
|
|
11
|
-
|
|
12
|
-
constructor(service: string, e: AxiosError) {
|
|
13
|
-
const ratelimitRemaining = e.response?.headers['arcpub-ratelimit-remaining'];
|
|
14
|
-
const ratelimitReset = e.response?.headers['arcpub-ratelimit-reset'];
|
|
15
|
-
const data = {
|
|
16
|
-
name: `${service}Error`,
|
|
17
|
-
responseData: e.response?.data,
|
|
18
|
-
responseStatus: e.response?.status,
|
|
19
|
-
responseConfig: e.response?.config,
|
|
20
|
-
ratelimitRemaining,
|
|
21
|
-
ratelimitReset,
|
|
22
|
-
service,
|
|
23
|
-
};
|
|
24
|
-
const message = safeJSONStringify(data);
|
|
25
|
-
|
|
26
|
-
super(message);
|
|
27
|
-
|
|
28
|
-
Object.assign(this, data);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { ArcAbstractAPI, ArcAPIOptions } from '../abstract-api';
|
|
2
|
-
import { MigrateBatchUsersPayload, MigrateBatchUsersResponse } from './types';
|
|
3
|
-
|
|
4
|
-
export class ArcIdentity extends ArcAbstractAPI {
|
|
5
|
-
constructor(options: ArcAPIOptions) {
|
|
6
|
-
super({ ...options, apiPath: 'identity/api/v1' });
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
async migrateBatch(payload: MigrateBatchUsersPayload) {
|
|
10
|
-
const { data } = await this.client.post<MigrateBatchUsersResponse>('/migrate', payload);
|
|
11
|
-
|
|
12
|
-
return data;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
export type MigrateIdentityCustomAttributeType = {
|
|
2
|
-
name: string;
|
|
3
|
-
value: string;
|
|
4
|
-
type: 'String' | 'Number' | 'Date' | 'Boolean';
|
|
5
|
-
};
|
|
6
|
-
|
|
7
|
-
export type MigrateUserPayload = {
|
|
8
|
-
identities: {
|
|
9
|
-
userName: string;
|
|
10
|
-
credentials: string;
|
|
11
|
-
grantType: 'password';
|
|
12
|
-
lastLoginDate?: string;
|
|
13
|
-
}[];
|
|
14
|
-
profile: {
|
|
15
|
-
firstName: string;
|
|
16
|
-
lastName: string;
|
|
17
|
-
secondLastName?: string;
|
|
18
|
-
displayName: string;
|
|
19
|
-
gender?: 'MALE' | 'FEMALE';
|
|
20
|
-
email: string;
|
|
21
|
-
birthYear: string;
|
|
22
|
-
birthMonth: string;
|
|
23
|
-
birthDay: string;
|
|
24
|
-
contacts: {
|
|
25
|
-
phone: string;
|
|
26
|
-
type: 'WORK' | 'HOME' | 'PRIMARY' | 'OTHER';
|
|
27
|
-
}[];
|
|
28
|
-
addresses: {
|
|
29
|
-
line1: string;
|
|
30
|
-
line2?: string;
|
|
31
|
-
locality: string;
|
|
32
|
-
region?: string;
|
|
33
|
-
postal: string;
|
|
34
|
-
country?: string;
|
|
35
|
-
type: 'WORK' | 'HOME' | 'PRIMARY' | 'OTHER';
|
|
36
|
-
}[];
|
|
37
|
-
attributes: MigrateIdentityCustomAttributeType[];
|
|
38
|
-
legacyId: string;
|
|
39
|
-
deletionRule?: 1;
|
|
40
|
-
emailVerified?: boolean;
|
|
41
|
-
createdOn: string;
|
|
42
|
-
};
|
|
43
|
-
uuid?: string;
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
export type MigrateBatchUsersPayload = {
|
|
47
|
-
records: MigrateUserPayload[];
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
export type MigrateBatchUsersResponse = {
|
|
51
|
-
records: {
|
|
52
|
-
email: string;
|
|
53
|
-
success: boolean;
|
|
54
|
-
errorMessage: string;
|
|
55
|
-
result: 'CREATE' | 'UPDATE';
|
|
56
|
-
uuid: string;
|
|
57
|
-
}[];
|
|
58
|
-
time: number;
|
|
59
|
-
errorCount: number;
|
|
60
|
-
successCount: number;
|
|
61
|
-
};
|
package/src/api/ifx/index.ts
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { ArcAbstractAPI, ArcAPIOptions } from '../abstract-api';
|
|
2
|
-
import { AddSecretPayload, CreateIntegrationPayload, SubscribePayload, UpdateIntegrationPayload } from './types';
|
|
3
|
-
|
|
4
|
-
export class ArcIFX extends ArcAbstractAPI {
|
|
5
|
-
constructor(options: ArcAPIOptions) {
|
|
6
|
-
super({ ...options, apiPath: 'ifx/api/v1' });
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
async createIntegration(payload: CreateIntegrationPayload) {
|
|
10
|
-
await this.client.post('/admin/integration', payload);
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
async updateIntegration(payload: UpdateIntegrationPayload) {
|
|
14
|
-
await this.client.put('/admin/integration', payload);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
async getIntegrations() {
|
|
18
|
-
const { data } = await this.client.get('/admin/integrations');
|
|
19
|
-
return data;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
async getJobs(integrationName: string) {
|
|
23
|
-
const { data } = await this.client.get(`/admin/jobs/status/${integrationName}`);
|
|
24
|
-
return data;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
async getStatus(integrationName: string) {
|
|
28
|
-
const { data } = await this.client.get(`/admin/integration/${integrationName}/provisionStatus`);
|
|
29
|
-
return data;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
async initializeQuery(integrationName: string, query?: string) {
|
|
33
|
-
const { data } = await this.client.get<{ queryId: string }>(`/admin/logs/integration/${integrationName}?${query}`);
|
|
34
|
-
return data;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
async getLogs(queryId: string) {
|
|
38
|
-
const { data } = await this.client.get(`/admin/logs/results?queryId=${queryId}`);
|
|
39
|
-
return data;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
async subscribe(payload: SubscribePayload) {
|
|
43
|
-
const { data } = await this.client.post('/admin/events/subscriptions', payload);
|
|
44
|
-
return data;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
async getSubscriptions() {
|
|
48
|
-
const { data } = await this.client.get('/admin/events/subscriptions');
|
|
49
|
-
return data;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
async addSecret(payload: AddSecretPayload) {
|
|
53
|
-
const { data } = await this.client.post(`/admin/secret?integrationName=${payload.integrationName}`, {
|
|
54
|
-
secretName: payload.secretName,
|
|
55
|
-
secretValue: payload.secretValue,
|
|
56
|
-
});
|
|
57
|
-
return data;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
async getSecrets(integrationName: string) {
|
|
61
|
-
const { data } = await this.client.get(`/admin/secret?integrationName=${integrationName}`);
|
|
62
|
-
return data;
|
|
63
|
-
}
|
|
64
|
-
}
|
package/src/api/ifx/types.ts
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
export type CreateIntegrationPayload = {
|
|
2
|
-
integrationName: string;
|
|
3
|
-
description: string;
|
|
4
|
-
email: string;
|
|
5
|
-
provisionPAT: boolean;
|
|
6
|
-
githubUsernames: string[];
|
|
7
|
-
runtime: 'node';
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
export type UpdateIntegrationPayload = {
|
|
11
|
-
integrationName: string;
|
|
12
|
-
enabled: boolean;
|
|
13
|
-
githubUsernames: string[];
|
|
14
|
-
githubUserAction: 'add' | 'replace';
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
export type SubscribePayload = {
|
|
18
|
-
eventName: string;
|
|
19
|
-
integrationName: string;
|
|
20
|
-
enabled: boolean;
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
export type AddSecretPayload = {
|
|
24
|
-
integrationName: string;
|
|
25
|
-
secretName: string;
|
|
26
|
-
secretValue: string;
|
|
27
|
-
};
|
package/src/api/index.ts
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { ArcAPIOptions } from './abstract-api';
|
|
2
|
-
import { ArcAuthor } from './author';
|
|
3
|
-
import { ArcDraft } from './draft';
|
|
4
|
-
import { ArcIdentity } from './identity';
|
|
5
|
-
import { ArcIFX } from './ifx';
|
|
6
|
-
import { ArcMigrationCenter } from './migration-center';
|
|
7
|
-
import { ArcSales } from './sales';
|
|
8
|
-
import { ArcSite } from './site';
|
|
9
|
-
import { ArcWebsked } from './websked';
|
|
10
|
-
import WsClient from './ws.client';
|
|
11
|
-
|
|
12
|
-
export const ArcAPI = (options: ArcAPIOptions) => {
|
|
13
|
-
const API = {
|
|
14
|
-
Author: new ArcAuthor(options),
|
|
15
|
-
Draft: new ArcDraft(options),
|
|
16
|
-
Identity: new ArcIdentity(options),
|
|
17
|
-
IFX: new ArcIFX(options),
|
|
18
|
-
MigrationCenter: new ArcMigrationCenter(options),
|
|
19
|
-
Sales: new ArcSales(options),
|
|
20
|
-
Site: new ArcSite(options),
|
|
21
|
-
Websked: new ArcWebsked(options),
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
return {
|
|
25
|
-
...API,
|
|
26
|
-
setMaxRPS: (rps: number) => {
|
|
27
|
-
Object.values(API).forEach((a) => a.setMaxRPS(rps));
|
|
28
|
-
},
|
|
29
|
-
RetailEvents: (index: '0' | '1' | 'string' = '0') => {
|
|
30
|
-
const address = `wss://api.${options.credentials.organizationName}.arcpublishing.com/retail/api/v1/event/stream/${index}`;
|
|
31
|
-
const headers = {
|
|
32
|
-
Authorization: `Bearer ${options.credentials.accessToken}`,
|
|
33
|
-
};
|
|
34
|
-
return new WsClient(address, { headers });
|
|
35
|
-
},
|
|
36
|
-
};
|
|
37
|
-
};
|