@8medusa/orchestration 2.7.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/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/joiner/helpers.d.ts +3 -0
- package/dist/joiner/helpers.d.ts.map +1 -0
- package/dist/joiner/helpers.js +69 -0
- package/dist/joiner/helpers.js.map +1 -0
- package/dist/joiner/index.d.ts +3 -0
- package/dist/joiner/index.d.ts.map +1 -0
- package/dist/joiner/index.js +19 -0
- package/dist/joiner/index.js.map +1 -0
- package/dist/joiner/remote-joiner.d.ts +42 -0
- package/dist/joiner/remote-joiner.d.ts.map +1 -0
- package/dist/joiner/remote-joiner.js +1108 -0
- package/dist/joiner/remote-joiner.js.map +1 -0
- package/dist/transaction/datastore/abstract-storage.d.ts +42 -0
- package/dist/transaction/datastore/abstract-storage.d.ts.map +1 -0
- package/dist/transaction/datastore/abstract-storage.js +52 -0
- package/dist/transaction/datastore/abstract-storage.js.map +1 -0
- package/dist/transaction/datastore/base-in-memory-storage.d.ts +11 -0
- package/dist/transaction/datastore/base-in-memory-storage.d.ts.map +1 -0
- package/dist/transaction/datastore/base-in-memory-storage.js +33 -0
- package/dist/transaction/datastore/base-in-memory-storage.js.map +1 -0
- package/dist/transaction/distributed-transaction.d.ts +99 -0
- package/dist/transaction/distributed-transaction.d.ts.map +1 -0
- package/dist/transaction/distributed-transaction.js +258 -0
- package/dist/transaction/distributed-transaction.js.map +1 -0
- package/dist/transaction/errors.d.ts +31 -0
- package/dist/transaction/errors.d.ts.map +1 -0
- package/dist/transaction/errors.js +89 -0
- package/dist/transaction/errors.js.map +1 -0
- package/dist/transaction/index.d.ts +8 -0
- package/dist/transaction/index.d.ts.map +1 -0
- package/dist/transaction/index.js +24 -0
- package/dist/transaction/index.js.map +1 -0
- package/dist/transaction/orchestrator-builder.d.ts +36 -0
- package/dist/transaction/orchestrator-builder.d.ts.map +1 -0
- package/dist/transaction/orchestrator-builder.js +300 -0
- package/dist/transaction/orchestrator-builder.js.map +1 -0
- package/dist/transaction/transaction-orchestrator.d.ts +181 -0
- package/dist/transaction/transaction-orchestrator.d.ts.map +1 -0
- package/dist/transaction/transaction-orchestrator.js +1061 -0
- package/dist/transaction/transaction-orchestrator.js.map +1 -0
- package/dist/transaction/transaction-step.d.ts +67 -0
- package/dist/transaction/transaction-step.d.ts.map +1 -0
- package/dist/transaction/transaction-step.js +146 -0
- package/dist/transaction/transaction-step.js.map +1 -0
- package/dist/transaction/types.d.ts +236 -0
- package/dist/transaction/types.d.ts.map +1 -0
- package/dist/transaction/types.js +23 -0
- package/dist/transaction/types.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/workflow/global-workflow.d.ts +14 -0
- package/dist/workflow/global-workflow.d.ts.map +1 -0
- package/dist/workflow/global-workflow.js +105 -0
- package/dist/workflow/global-workflow.js.map +1 -0
- package/dist/workflow/index.d.ts +5 -0
- package/dist/workflow/index.d.ts.map +1 -0
- package/dist/workflow/index.js +21 -0
- package/dist/workflow/index.js.map +1 -0
- package/dist/workflow/local-workflow.d.ts +46 -0
- package/dist/workflow/local-workflow.d.ts.map +1 -0
- package/dist/workflow/local-workflow.js +360 -0
- package/dist/workflow/local-workflow.js.map +1 -0
- package/dist/workflow/scheduler.d.ts +12 -0
- package/dist/workflow/scheduler.d.ts.map +1 -0
- package/dist/workflow/scheduler.js +35 -0
- package/dist/workflow/scheduler.js.map +1 -0
- package/dist/workflow/workflow-manager.d.ts +38 -0
- package/dist/workflow/workflow-manager.d.ts.map +1 -0
- package/dist/workflow/workflow-manager.js +124 -0
- package/dist/workflow/workflow-manager.js.map +1 -0
- package/package.json +59 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./joiner"), exports);
|
|
18
|
+
__exportStar(require("./transaction"), exports);
|
|
19
|
+
__exportStar(require("./workflow"), exports);
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAwB;AACxB,gDAA6B;AAC7B,6CAA0B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/joiner/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAElD,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,GAAG,EACR,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAClC,iBAAiB,CAmFnB"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toRemoteJoinerQuery = toRemoteJoinerQuery;
|
|
4
|
+
function toRemoteJoinerQuery(obj, variables = {}) {
|
|
5
|
+
const remoteJoinerQuery = {
|
|
6
|
+
alias: "",
|
|
7
|
+
fields: [],
|
|
8
|
+
expands: [],
|
|
9
|
+
};
|
|
10
|
+
let entryPoint = "";
|
|
11
|
+
function extractRecursive(obj, parentName = "", isEntryPoint = true) {
|
|
12
|
+
for (const key of Object.keys(obj ?? {})) {
|
|
13
|
+
const value = obj[key];
|
|
14
|
+
const canExpand = typeof value === "object" &&
|
|
15
|
+
!["fields", "__fields", "__args", "__directives"].includes(key); // TODO: deprecate "fields"
|
|
16
|
+
if (!canExpand) {
|
|
17
|
+
continue;
|
|
18
|
+
}
|
|
19
|
+
const entityName = parentName ? `${parentName}.${key}` : key;
|
|
20
|
+
const variablesPath = !isEntryPoint
|
|
21
|
+
? `${entryPoint}${parentName ? "." + parentName : parentName}.${key}`
|
|
22
|
+
: key;
|
|
23
|
+
if (isEntryPoint) {
|
|
24
|
+
entryPoint = key;
|
|
25
|
+
}
|
|
26
|
+
const currentVariables = variables[variablesPath];
|
|
27
|
+
const expandObj = {
|
|
28
|
+
property: entityName,
|
|
29
|
+
};
|
|
30
|
+
const reference = isEntryPoint ? remoteJoinerQuery : expandObj;
|
|
31
|
+
if (currentVariables) {
|
|
32
|
+
reference.args = Object.entries(currentVariables).map(([name, value]) => ({
|
|
33
|
+
name,
|
|
34
|
+
value,
|
|
35
|
+
}));
|
|
36
|
+
}
|
|
37
|
+
if (value.__args) {
|
|
38
|
+
reference.args = [
|
|
39
|
+
...(reference.__args || []),
|
|
40
|
+
...Object.entries(value.__args).map(([name, value]) => ({
|
|
41
|
+
name,
|
|
42
|
+
value,
|
|
43
|
+
})),
|
|
44
|
+
];
|
|
45
|
+
}
|
|
46
|
+
if (value.__directives) {
|
|
47
|
+
reference.directives = Object.entries(value.__directives).map(([name, value]) => ({ name, value }));
|
|
48
|
+
}
|
|
49
|
+
if (value.__fields || value.fields) {
|
|
50
|
+
reference.fields = value.__fields ?? value.fields;
|
|
51
|
+
}
|
|
52
|
+
if (isEntryPoint) {
|
|
53
|
+
if (value.isServiceAccess) {
|
|
54
|
+
remoteJoinerQuery.service = key;
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
remoteJoinerQuery.alias = key;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
remoteJoinerQuery.expands.push(expandObj);
|
|
62
|
+
}
|
|
63
|
+
extractRecursive(value, isEntryPoint ? "" : entityName, false);
|
|
64
|
+
}
|
|
65
|
+
return remoteJoinerQuery;
|
|
66
|
+
}
|
|
67
|
+
return extractRecursive(obj);
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/joiner/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/joiner/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,iBAAiB,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./helpers"), exports);
|
|
18
|
+
__exportStar(require("./remote-joiner"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/joiner/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAAyB;AACzB,kDAA+B"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { ModuleJoinerConfig, RemoteExpandProperty, RemoteJoinerOptions, RemoteJoinerQuery } from "@8medusa/types";
|
|
2
|
+
export type RemoteFetchDataCallback = (expand: RemoteExpandProperty, keyField: string, ids?: (unknown | unknown[])[], relationship?: any) => Promise<{
|
|
3
|
+
data: unknown[] | {
|
|
4
|
+
[path: string]: unknown;
|
|
5
|
+
};
|
|
6
|
+
path?: string;
|
|
7
|
+
}>;
|
|
8
|
+
export declare class RemoteJoiner {
|
|
9
|
+
private remoteFetchData;
|
|
10
|
+
private options;
|
|
11
|
+
private serviceConfigCache;
|
|
12
|
+
private entityMap;
|
|
13
|
+
private static filterFields;
|
|
14
|
+
private static getNestedItems;
|
|
15
|
+
private static createRelatedDataMap;
|
|
16
|
+
static parseQuery(graphqlQuery: string, variables?: Record<string, unknown>): RemoteJoinerQuery;
|
|
17
|
+
constructor(serviceConfigs: ModuleJoinerConfig[], remoteFetchData: RemoteFetchDataCallback, options?: {
|
|
18
|
+
autoCreateServiceNameAlias?: boolean;
|
|
19
|
+
entitiesMap?: Map<string, any>;
|
|
20
|
+
});
|
|
21
|
+
setFetchDataCallback(remoteFetchData: RemoteFetchDataCallback): void;
|
|
22
|
+
private buildReferences;
|
|
23
|
+
private mergeFieldAlias;
|
|
24
|
+
private getServiceConfig;
|
|
25
|
+
private cacheServiceConfig;
|
|
26
|
+
private fetchData;
|
|
27
|
+
private checkIfKeysExist;
|
|
28
|
+
private handleFieldAliases;
|
|
29
|
+
private handleExpands;
|
|
30
|
+
private getEntityRelationship;
|
|
31
|
+
private expandProperty;
|
|
32
|
+
private expandRelationshipProperty;
|
|
33
|
+
private parseExpands;
|
|
34
|
+
private parseProperties;
|
|
35
|
+
private getEntity;
|
|
36
|
+
private parseAlias;
|
|
37
|
+
private groupExpands;
|
|
38
|
+
private createFilterFromInitialData;
|
|
39
|
+
private mergeInitialData;
|
|
40
|
+
query(queryObj: RemoteJoinerQuery, options?: RemoteJoinerOptions): Promise<any>;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=remote-joiner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote-joiner.d.ts","sourceRoot":"","sources":["../../src/joiner/remote-joiner.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EAElB,MAAM,gBAAgB,CAAA;AAavB,MAAM,MAAM,uBAAuB,GAAG,CACpC,MAAM,EAAE,oBAAoB,EAC5B,QAAQ,EAAE,MAAM,EAChB,GAAG,CAAC,EAAE,CAAC,OAAO,GAAG,OAAO,EAAE,CAAC,EAAE,EAC7B,YAAY,CAAC,EAAE,GAAG,KACf,OAAO,CAAC;IACX,IAAI,EAAE,OAAO,EAAE,GAAG;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAA;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAC,CAAA;AAmBF,qBAAa,YAAY;IA8GrB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,OAAO;IA9GjB,OAAO,CAAC,kBAAkB,CACf;IAEX,OAAO,CAAC,SAAS,CAA8C;IAE/D,OAAO,CAAC,MAAM,CAAC,YAAY;IAwD3B,OAAO,CAAC,MAAM,CAAC,cAAc;IAe7B,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAuBnC,MAAM,CAAC,UAAU,CACf,YAAY,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,iBAAiB;gBAMlB,cAAc,EAAE,kBAAkB,EAAE,EAC5B,eAAe,EAAE,uBAAuB,EACxC,OAAO,GAAE;QACf,0BAA0B,CAAC,EAAE,OAAO,CAAA;QACpC,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAC1B;IAmBD,oBAAoB,CAAC,eAAe,EAAE,uBAAuB,GAAG,IAAI;IAI3E,OAAO,CAAC,eAAe;IAqLvB,OAAO,CAAC,eAAe;IAgCvB,OAAO,CAAC,gBAAgB;IAyBxB,OAAO,CAAC,kBAAkB;YAmDZ,SAAS;IAkFvB,OAAO,CAAC,gBAAgB;IAgDxB,OAAO,CAAC,kBAAkB;YAkFZ,aAAa;IAwC3B,OAAO,CAAC,qBAAqB;YA+Bf,cAAc;YA8Bd,0BAA0B;IA6HxC,OAAO,CAAC,YAAY;IAkCpB,OAAO,CAAC,eAAe;IAuJvB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,UAAU;IA8IlB,OAAO,CAAC,YAAY;IA4CpB,OAAO,CAAC,2BAA2B;IAuHnC,OAAO,CAAC,gBAAgB;IAiFlB,KAAK,CACT,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,GAAG,CAAC;CAkHhB"}
|