@unchainedshop/platform 4.0.0-rc.2 → 4.0.0-rc.4
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/lib/context/withAccessToken.d.ts +4 -0
- package/lib/context/withAccessToken.d.ts.map +1 -0
- package/lib/context/withAccessToken.js +42 -0
- package/lib/context/withAccessToken.js.map +1 -0
- package/lib/setup/setupWorkqueue.d.ts +3 -2
- package/lib/setup/setupWorkqueue.d.ts.map +1 -1
- package/lib/setup/setupWorkqueue.js +10 -3
- package/lib/setup/setupWorkqueue.js.map +1 -1
- package/lib/startPlatform.d.ts.map +1 -1
- package/lib/startPlatform.js +10 -14
- package/lib/startPlatform.js.map +1 -1
- package/lib/templates/order-parser/formatAddress.d.ts +3 -0
- package/lib/templates/order-parser/formatAddress.d.ts.map +1 -0
- package/lib/templates/order-parser/formatAddress.js +14 -0
- package/lib/templates/order-parser/formatAddress.js.map +1 -0
- package/lib/templates/order-parser/formatPrice.d.ts +6 -0
- package/lib/templates/order-parser/formatPrice.d.ts.map +1 -0
- package/lib/templates/order-parser/formatPrice.js +6 -0
- package/lib/templates/order-parser/formatPrice.js.map +1 -0
- package/package.json +17 -15
- package/src/setup/setupWorkqueue.ts +12 -4
- package/src/startPlatform.ts +11 -14
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withAccessToken.d.ts","sourceRoot":"","sources":["../../src/context/withAccessToken.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;8BAOlC,CAAC,OAAO,EAAE,OAAO,KAAK,GAAG,KAAqB,GAAG;AAArE,wBAmCE"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { createLogger } from '@unchainedshop/logger';
|
|
2
|
+
import { timingSafeEqual } from 'crypto';
|
|
3
|
+
const logger = createLogger('unchained:platform');
|
|
4
|
+
const contextIdentity = (params) => params;
|
|
5
|
+
export default (fn = contextIdentity) => {
|
|
6
|
+
return async (params, unchainedContextFn) => {
|
|
7
|
+
const unchainedContext = await unchainedContextFn(params);
|
|
8
|
+
const newContext = {
|
|
9
|
+
userId: unchainedContext.userId,
|
|
10
|
+
user: unchainedContext.user,
|
|
11
|
+
};
|
|
12
|
+
if (!unchainedContext.userId && params.req.headers.authorization) {
|
|
13
|
+
const [type, userToken] = params.req.headers.authorization.split(' ');
|
|
14
|
+
if (type === 'Bearer' && userToken) {
|
|
15
|
+
const [username, secret] = userToken.split(':');
|
|
16
|
+
const user = await unchainedContext.modules.users.findUser({
|
|
17
|
+
username,
|
|
18
|
+
});
|
|
19
|
+
if (secret && user?.services.token?.secret) {
|
|
20
|
+
try {
|
|
21
|
+
if (timingSafeEqual(Buffer.from(secret), Buffer.from(user?.services.token?.secret))) {
|
|
22
|
+
newContext.userId = user._id;
|
|
23
|
+
newContext.user = user;
|
|
24
|
+
logger.debug('Token login success');
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
throw new Error('Access Token not valid');
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
catch (e) {
|
|
31
|
+
logger.warn(`Token login failed: ${e.message}`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return fn({
|
|
37
|
+
...unchainedContext,
|
|
38
|
+
...newContext,
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=withAccessToken.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withAccessToken.js","sourceRoot":"","sources":["../../src/context/withAccessToken.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAEzC,MAAM,MAAM,GAAG,YAAY,CAAC,oBAAoB,CAAC,CAAC;AAElD,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC;AAE3C,eAAe,CAAC,KAAgC,eAAe,EAAO,EAAE;IACtE,OAAO,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,EAAE;QAC1C,MAAM,gBAAgB,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC1D,MAAM,UAAU,GAAG;YACjB,MAAM,EAAE,gBAAgB,CAAC,MAAM;YAC/B,IAAI,EAAE,gBAAgB,CAAC,IAAI;SAC5B,CAAC;QACF,IAAI,CAAC,gBAAgB,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YACjE,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACtE,IAAI,IAAI,KAAK,QAAQ,IAAI,SAAS,EAAE,CAAC;gBACnC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChD,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;oBACzD,QAAQ;iBACT,CAAC,CAAC;gBAEH,IAAI,MAAM,IAAI,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;oBAC3C,IAAI,CAAC;wBACH,IAAI,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;4BACpF,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC;4BAC7B,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;4BACvB,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;wBACtC,CAAC;6BAAM,CAAC;4BACN,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;wBAC5C,CAAC;oBACH,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;oBAClD,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,EAAE,CAAC;YACR,GAAG,gBAAgB;YACnB,GAAG,UAAU;SACd,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -11,8 +11,9 @@ export interface SetupWorkqueueOptions extends IntervalWorkerParams, FailedResch
|
|
|
11
11
|
}
|
|
12
12
|
export declare const defaultQueueManagers: WorkQueueQueueManager[];
|
|
13
13
|
export declare const queueWorkers: any[];
|
|
14
|
-
export declare
|
|
14
|
+
export declare function setupWorkqueue({ unchainedAPI, migrationRepository, ...workQueueOptions }: {
|
|
15
15
|
unchainedAPI: UnchainedCore;
|
|
16
16
|
migrationRepository: MigrationRepository<UnchainedCore>;
|
|
17
|
-
} & SetupWorkqueueOptions)
|
|
17
|
+
} & SetupWorkqueueOptions): Promise<void>;
|
|
18
|
+
export declare function stopWorkqueue(): void;
|
|
18
19
|
//# sourceMappingURL=setupWorkqueue.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setupWorkqueue.d.ts","sourceRoot":"","sources":["../../src/setup/setupWorkqueue.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,uBAAuB,EAEvB,oBAAoB,EACpB,UAAU,EACV,OAAO,EACP,aAAa,EACd,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"setupWorkqueue.d.ts","sourceRoot":"","sources":["../../src/setup/setupWorkqueue.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,uBAAuB,EAEvB,oBAAoB,EACpB,UAAU,EACV,OAAO,EACP,aAAa,EACd,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAG7D,MAAM,MAAM,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;AACnE,MAAM,WAAW,qBAAsB,SAAQ,oBAAoB,EAAE,uBAAuB;IAC1F,oBAAoB,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAC/C,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC;AAQD,eAAO,MAAM,oBAAoB,EAAE,qBAAqB,EAIvD,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,GAAG,EAAO,CAAC;AAEtC,wBAAsB,cAAc,CAAC,EACnC,YAAY,EACZ,mBAAmB,EACnB,GAAG,gBAAgB,EACpB,EAAE;IACD,YAAY,EAAE,aAAa,CAAC;IAC5B,mBAAmB,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAC;CACzD,GAAG,qBAAqB,iBA4CxB;AAED,wBAAgB,aAAa,SAK5B"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { EventListenerWorker, FailedRescheduler, IntervalWorker, } from '@unchainedshop/core';
|
|
2
2
|
import { runMigrations } from '../migrations/runMigrations.js';
|
|
3
|
+
import { setImmediate } from 'node:timers/promises';
|
|
3
4
|
const { UNCHAINED_DISABLE_PROVIDER_INVALIDATION, UNCHAINED_DISABLE_WORKER, UNCHAINED_ASSIGN_CART_FOR_USERS, } = process.env;
|
|
4
5
|
export const defaultQueueManagers = [
|
|
5
6
|
FailedRescheduler,
|
|
@@ -7,7 +8,7 @@ export const defaultQueueManagers = [
|
|
|
7
8
|
IntervalWorker,
|
|
8
9
|
];
|
|
9
10
|
export const queueWorkers = [];
|
|
10
|
-
export
|
|
11
|
+
export async function setupWorkqueue({ unchainedAPI, migrationRepository, ...workQueueOptions }) {
|
|
11
12
|
if (workQueueOptions.disableWorker || UNCHAINED_DISABLE_WORKER)
|
|
12
13
|
return;
|
|
13
14
|
// Run migrations
|
|
@@ -38,7 +39,13 @@ export const setupWorkqueue = async ({ unchainedAPI, migrationRepository, ...wor
|
|
|
38
39
|
}
|
|
39
40
|
// Setup filter cache
|
|
40
41
|
if (!workQueueOptions?.skipInvalidationOnStartup) {
|
|
41
|
-
setImmediate(() => unchainedAPI.services.filters.invalidateFilterCache());
|
|
42
|
+
await setImmediate(async () => unchainedAPI.services.filters.invalidateFilterCache());
|
|
42
43
|
}
|
|
43
|
-
}
|
|
44
|
+
}
|
|
45
|
+
export function stopWorkqueue() {
|
|
46
|
+
queueWorkers.forEach((worker) => {
|
|
47
|
+
worker?.stop();
|
|
48
|
+
});
|
|
49
|
+
queueWorkers.length = 0;
|
|
50
|
+
}
|
|
44
51
|
//# sourceMappingURL=setupWorkqueue.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setupWorkqueue.js","sourceRoot":"","sources":["../../src/setup/setupWorkqueue.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EAEjB,cAAc,GAKf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"setupWorkqueue.js","sourceRoot":"","sources":["../../src/setup/setupWorkqueue.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EAEjB,cAAc,GAKf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAYpD,MAAM,EACJ,uCAAuC,EACvC,wBAAwB,EACxB,+BAA+B,GAChC,GAAG,OAAO,CAAC,GAAG,CAAC;AAEhB,MAAM,CAAC,MAAM,oBAAoB,GAA4B;IAC3D,iBAAiB;IACjB,mBAAmB;IACnB,cAAc;CACf,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAU,EAAE,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,EACnC,YAAY,EACZ,mBAAmB,EACnB,GAAG,gBAAgB,EAII;IACvB,IAAI,gBAAgB,CAAC,aAAa,IAAI,wBAAwB;QAAE,OAAO;IAEvE,iBAAiB;IACjB,MAAM,aAAa,CAAC,EAAE,mBAAmB,EAAE,YAAY,EAAE,CAAC,CAAC;IAE3D,uBAAuB;IACvB,CAAC,gBAAgB,EAAE,oBAAoB,IAAI,oBAAoB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QAC7E,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;QAC1D,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3B,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,gCAAgC;IAChC,IAAI,gBAAgB,CAAC,mBAAmB,IAAI,CAAC,uCAAuC,EAAE,CAAC;QACrF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,qBAAqB,CACpE,gBAAgB,CAAC,8BAA8B,CAChD,CAAC;QACF,MAAM,OAAO,CAAC,UAAU,CACtB,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACzB,MAAM,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClE,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED,0BAA0B;IAC1B,IAAI,gBAAgB,CAAC,kBAAkB,IAAI,OAAO,CAAC,+BAA+B,CAAC,EAAE,CAAC;QACpF,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAE7D,MAAM,OAAO,CAAC,GAAG,CACf,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACjB,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC3D,OAAO,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC;gBAC/C,IAAI;gBACJ,WAAW,EAAE,MAAM,CAAC,MAAM;aAC3B,CAAC,CAAC;QACL,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED,qBAAqB;IACrB,IAAI,CAAC,gBAAgB,EAAE,yBAAyB,EAAE,CAAC;QACjD,MAAM,YAAY,CAAC,KAAK,IAAI,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;IACxF,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,YAAY,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QAC9B,MAAM,EAAE,IAAI,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IACH,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startPlatform.d.ts","sourceRoot":"","sources":["../src/startPlatform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAY,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAU,OAAO,EAAU,MAAM,wBAAwB,CAAC;AAEjE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAA6B,MAAM,uCAAuC,CAAC;AAGrG,OAAO,EAAkB,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,qBAAqB,
|
|
1
|
+
{"version":3,"file":"startPlatform.d.ts","sourceRoot":"","sources":["../src/startPlatform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAY,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAU,OAAO,EAAU,MAAM,wBAAwB,CAAC;AAEjE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAA6B,MAAM,uCAAuC,CAAC;AAGrG,OAAO,EAAkB,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAiC,MAAM,2BAA2B,CAAC;AAEjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,CAAC;AAExB,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY,CAAC,EAAE;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;KAC9C,CAAC;IACF,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC,gBAAgB,CAAC,EAAE,qBAAqB,CAAC;CAC1C,GAAG,IAAI,CAAC,oBAAoB,EAAE,cAAc,GAAG,qBAAqB,GAAG,IAAI,CAAC,GAC3E,IAAI,CAAC,sBAAsB,EAAE,OAAO,GAAG,cAAc,CAAC,CAAC;AA2BzD,eAAO,MAAM,aAAa,GAAU,uIAQjC,eAAe,KAAG,OAAO,CAAC;IAC3B,YAAY,EAAE,aAAa,CAAC;IAC5B,cAAc,EAAE,GAAG,CAAC;IACpB,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC;CAChB,CAkEA,CAAC"}
|
package/lib/startPlatform.js
CHANGED
|
@@ -6,7 +6,7 @@ import { createBulkImporterFactory } from './bulk-importer/createBulkImporter.js
|
|
|
6
6
|
import { setupAccounts } from './setup/setupAccounts.js';
|
|
7
7
|
import { setupUploadHandlers } from './setup/setupUploadHandlers.js';
|
|
8
8
|
import { setupTemplates, MessageTypes } from './setup/setupTemplates.js';
|
|
9
|
-
import { setupWorkqueue } from './setup/setupWorkqueue.js';
|
|
9
|
+
import { stopWorkqueue, setupWorkqueue } from './setup/setupWorkqueue.js';
|
|
10
10
|
import { createMigrationRepository } from './migrations/migrationRepository.js';
|
|
11
11
|
export { MessageTypes };
|
|
12
12
|
const REQUIRED_ENV_VARIABLES = [
|
|
@@ -69,22 +69,18 @@ export const startPlatform = async ({ modules, services, options, rolesOptions =
|
|
|
69
69
|
with: { type: 'json' },
|
|
70
70
|
});
|
|
71
71
|
defaultLogger.info(`Unchained Engine running`, { version: packageJson.version });
|
|
72
|
-
|
|
73
|
-
defaultLogger.
|
|
72
|
+
const cleanup = (signal) => async () => {
|
|
73
|
+
defaultLogger.debug('Stopping Workqueue', { signal });
|
|
74
|
+
stopWorkqueue();
|
|
75
|
+
defaultLogger.debug('Stopping GraphQL server', { signal });
|
|
74
76
|
await graphqlHandler.dispose();
|
|
75
|
-
defaultLogger.
|
|
77
|
+
defaultLogger.debug('Stopping DB Connection', { signal });
|
|
76
78
|
await stopDb();
|
|
77
|
-
defaultLogger.info(`Unchained Engine stopped`, { version: packageJson.version });
|
|
79
|
+
defaultLogger.info(`Unchained Engine stopped`, { signal, version: packageJson.version });
|
|
78
80
|
process.exit(0);
|
|
79
|
-
}
|
|
80
|
-
process.on('
|
|
81
|
-
|
|
82
|
-
await graphqlHandler.dispose();
|
|
83
|
-
defaultLogger.info('Stopping DB Connection (SIGINT)');
|
|
84
|
-
await stopDb();
|
|
85
|
-
defaultLogger.info(`Unchained Engine stopped`, { version: packageJson.version });
|
|
86
|
-
process.exit(0);
|
|
87
|
-
});
|
|
81
|
+
};
|
|
82
|
+
process.on('SIGTERM', cleanup('SIGTERM'));
|
|
83
|
+
process.on('SIGINT', cleanup('SIGINT'));
|
|
88
84
|
return { unchainedAPI, graphqlHandler, db };
|
|
89
85
|
};
|
|
90
86
|
//# sourceMappingURL=startPlatform.js.map
|
package/lib/startPlatform.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startPlatform.js","sourceRoot":"","sources":["../src/startPlatform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,EAA0B,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,QAAQ,EAAwB,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,MAAM,EAAW,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EAAqB,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AACrG,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAyB,cAAc,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"startPlatform.js","sourceRoot":"","sources":["../src/startPlatform.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatAddress.d.ts","sourceRoot":"","sources":["../../../src/templates/order-parser/formatAddress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAEzD,eAAO,MAAM,aAAa,YAAa,OAAO,WAY7C,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export const formatAddress = (address) => {
|
|
2
|
+
return [
|
|
3
|
+
[address.firstName, address.lastName].filter(Boolean).join(' '),
|
|
4
|
+
address.company,
|
|
5
|
+
address.addressLine,
|
|
6
|
+
address.addressLine2,
|
|
7
|
+
[address.postalCode, address.city].filter(Boolean).join(' '),
|
|
8
|
+
address.regionCode,
|
|
9
|
+
[address.countryCode].filter(Boolean).join(''),
|
|
10
|
+
]
|
|
11
|
+
.filter(Boolean)
|
|
12
|
+
.join('\n');
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=formatAddress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatAddress.js","sourceRoot":"","sources":["../../../src/templates/order-parser/formatAddress.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAgB,EAAE,EAAE;IAChD,OAAO;QACL,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAC/D,OAAO,CAAC,OAAO;QACf,OAAO,CAAC,WAAW;QACnB,OAAO,CAAC,YAAY;QACpB,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAC5D,OAAO,CAAC,UAAU;QAClB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;KAC/C;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatPrice.d.ts","sourceRoot":"","sources":["../../../src/templates/order-parser/formatPrice.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,yBAA0B;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,WAGrF,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatPrice.js","sourceRoot":"","sources":["../../../src/templates/order-parser/formatPrice.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAwC,EAAE,EAAE;IACxF,MAAM,UAAU,GAAG,MAAM,GAAG,GAAG,CAAC;IAChC,OAAO,GAAG,QAAQ,IAAI,UAAU,EAAE,CAAC;AACrC,CAAC,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unchainedshop/platform",
|
|
3
|
-
"version": "4.0.0-rc.
|
|
3
|
+
"version": "4.0.0-rc.4",
|
|
4
4
|
"main": "lib/platform-index.js",
|
|
5
5
|
"types": "lib/platform-index.d.ts",
|
|
6
6
|
"type": "module",
|
|
@@ -31,25 +31,27 @@
|
|
|
31
31
|
},
|
|
32
32
|
"homepage": "https://github.com/unchainedshop/unchained#readme",
|
|
33
33
|
"engines": {
|
|
34
|
-
"node": ">=22.0.0"
|
|
34
|
+
"node": ">=22.0.0",
|
|
35
|
+
"npm": ">=10.0.0"
|
|
35
36
|
},
|
|
36
37
|
"dependencies": {
|
|
37
|
-
"@unchainedshop/api": "^4.0.0-rc.
|
|
38
|
-
"@unchainedshop/core": "^4.0.0-rc.
|
|
39
|
-
"@unchainedshop/events": "^4.0.0-rc.
|
|
40
|
-
"@unchainedshop/file-upload": "^4.0.0-rc.
|
|
41
|
-
"@unchainedshop/logger": "^4.0.0-rc.
|
|
42
|
-
"@unchainedshop/mongodb": "^4.0.0-rc.
|
|
43
|
-
"@unchainedshop/plugins": "^4.0.0-rc.
|
|
44
|
-
"@unchainedshop/roles": "^4.0.0-rc.
|
|
45
|
-
"@unchainedshop/utils": "^4.0.0-rc.
|
|
38
|
+
"@unchainedshop/api": "^4.0.0-rc.4",
|
|
39
|
+
"@unchainedshop/core": "^4.0.0-rc.4",
|
|
40
|
+
"@unchainedshop/events": "^4.0.0-rc.4",
|
|
41
|
+
"@unchainedshop/file-upload": "^4.0.0-rc.4",
|
|
42
|
+
"@unchainedshop/logger": "^4.0.0-rc.4",
|
|
43
|
+
"@unchainedshop/mongodb": "^4.0.0-rc.4",
|
|
44
|
+
"@unchainedshop/plugins": "^4.0.0-rc.4",
|
|
45
|
+
"@unchainedshop/roles": "^4.0.0-rc.4",
|
|
46
|
+
"@unchainedshop/utils": "^4.0.0-rc.4",
|
|
46
47
|
"mustache": "^4.2.0",
|
|
47
|
-
"safe-stable-stringify": "^2.5.0"
|
|
48
|
+
"safe-stable-stringify": "^2.5.0",
|
|
49
|
+
"ai": "^4.3.16"
|
|
48
50
|
},
|
|
49
51
|
"devDependencies": {
|
|
50
|
-
"@types/mustache": "^4.2.
|
|
51
|
-
"@types/node": "^
|
|
52
|
-
"tsx": "^4.
|
|
52
|
+
"@types/mustache": "^4.2.6",
|
|
53
|
+
"@types/node": "^24.0.4",
|
|
54
|
+
"tsx": "^4.20.3",
|
|
53
55
|
"typescript": "^5.8.3"
|
|
54
56
|
}
|
|
55
57
|
}
|
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
} from '@unchainedshop/core';
|
|
11
11
|
import { runMigrations } from '../migrations/runMigrations.js';
|
|
12
12
|
import { MigrationRepository } from '@unchainedshop/mongodb';
|
|
13
|
+
import { setImmediate } from 'node:timers/promises';
|
|
13
14
|
|
|
14
15
|
export type WorkQueueQueueManager = IWorker<any> | IScheduler<any>;
|
|
15
16
|
export interface SetupWorkqueueOptions extends IntervalWorkerParams, FailedReschedulerParams {
|
|
@@ -35,14 +36,14 @@ export const defaultQueueManagers: WorkQueueQueueManager[] = [
|
|
|
35
36
|
|
|
36
37
|
export const queueWorkers: any[] = [];
|
|
37
38
|
|
|
38
|
-
export
|
|
39
|
+
export async function setupWorkqueue({
|
|
39
40
|
unchainedAPI,
|
|
40
41
|
migrationRepository,
|
|
41
42
|
...workQueueOptions
|
|
42
43
|
}: {
|
|
43
44
|
unchainedAPI: UnchainedCore;
|
|
44
45
|
migrationRepository: MigrationRepository<UnchainedCore>;
|
|
45
|
-
} & SetupWorkqueueOptions)
|
|
46
|
+
} & SetupWorkqueueOptions) {
|
|
46
47
|
if (workQueueOptions.disableWorker || UNCHAINED_DISABLE_WORKER) return;
|
|
47
48
|
|
|
48
49
|
// Run migrations
|
|
@@ -84,6 +85,13 @@ export const setupWorkqueue = async ({
|
|
|
84
85
|
|
|
85
86
|
// Setup filter cache
|
|
86
87
|
if (!workQueueOptions?.skipInvalidationOnStartup) {
|
|
87
|
-
setImmediate(() => unchainedAPI.services.filters.invalidateFilterCache());
|
|
88
|
+
await setImmediate(async () => unchainedAPI.services.filters.invalidateFilterCache());
|
|
88
89
|
}
|
|
89
|
-
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export function stopWorkqueue() {
|
|
93
|
+
queueWorkers.forEach((worker) => {
|
|
94
|
+
worker?.stop();
|
|
95
|
+
});
|
|
96
|
+
queueWorkers.length = 0;
|
|
97
|
+
}
|
package/src/startPlatform.ts
CHANGED
|
@@ -7,9 +7,10 @@ import { BulkImportHandler, createBulkImporterFactory } from './bulk-importer/cr
|
|
|
7
7
|
import { setupAccounts } from './setup/setupAccounts.js';
|
|
8
8
|
import { setupUploadHandlers } from './setup/setupUploadHandlers.js';
|
|
9
9
|
import { setupTemplates, MessageTypes } from './setup/setupTemplates.js';
|
|
10
|
-
import { SetupWorkqueueOptions, setupWorkqueue } from './setup/setupWorkqueue.js';
|
|
10
|
+
import { SetupWorkqueueOptions, stopWorkqueue, setupWorkqueue } from './setup/setupWorkqueue.js';
|
|
11
11
|
import { createMigrationRepository } from './migrations/migrationRepository.js';
|
|
12
12
|
import { IRoleOptionConfig } from '@unchainedshop/roles';
|
|
13
|
+
|
|
13
14
|
export { MessageTypes };
|
|
14
15
|
|
|
15
16
|
export type PlatformOptions = {
|
|
@@ -109,23 +110,19 @@ export const startPlatform = async ({
|
|
|
109
110
|
});
|
|
110
111
|
defaultLogger.info(`Unchained Engine running`, { version: packageJson.version });
|
|
111
112
|
|
|
112
|
-
|
|
113
|
-
defaultLogger.
|
|
113
|
+
const cleanup = (signal) => async () => {
|
|
114
|
+
defaultLogger.debug('Stopping Workqueue', { signal });
|
|
115
|
+
stopWorkqueue();
|
|
116
|
+
defaultLogger.debug('Stopping GraphQL server', { signal });
|
|
114
117
|
await graphqlHandler.dispose();
|
|
115
|
-
defaultLogger.
|
|
118
|
+
defaultLogger.debug('Stopping DB Connection', { signal });
|
|
116
119
|
await stopDb();
|
|
117
|
-
defaultLogger.info(`Unchained Engine stopped`, { version: packageJson.version });
|
|
120
|
+
defaultLogger.info(`Unchained Engine stopped`, { signal, version: packageJson.version });
|
|
118
121
|
process.exit(0);
|
|
119
|
-
}
|
|
122
|
+
};
|
|
120
123
|
|
|
121
|
-
process.on('
|
|
122
|
-
|
|
123
|
-
await graphqlHandler.dispose();
|
|
124
|
-
defaultLogger.info('Stopping DB Connection (SIGINT)');
|
|
125
|
-
await stopDb();
|
|
126
|
-
defaultLogger.info(`Unchained Engine stopped`, { version: packageJson.version });
|
|
127
|
-
process.exit(0);
|
|
128
|
-
});
|
|
124
|
+
process.on('SIGTERM', cleanup('SIGTERM'));
|
|
125
|
+
process.on('SIGINT', cleanup('SIGINT'));
|
|
129
126
|
|
|
130
127
|
return { unchainedAPI, graphqlHandler, db };
|
|
131
128
|
};
|