@unchainedshop/plugins 2.0.0-beta1 → 2.0.0-beta2

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.
@@ -1,7 +1,5 @@
1
1
  import { ProductPricingDirector, ProductPricingAdapter } from '@unchainedshop/core-products';
2
- const roundToNext = (value, precision) => value % precision === precision / 2
3
- ? value + precision / 2
4
- : value + (precision - (value % precision));
2
+ const roundToNext = (value, precision) => Math.ceil(value / precision) * precision;
5
3
  const ProductPriceRoundSettings = {
6
4
  configurations: {},
7
5
  defaultPrecision: 50,
@@ -1 +1 @@
1
- {"version":3,"file":"product-price-round.js","sourceRoot":"","sources":["../../src/pricing/product-price-round.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAE7F,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CACvC,KAAK,GAAG,SAAS,KAAK,SAAS,GAAG,CAAC;IACjC,CAAC,CAAC,KAAK,GAAG,SAAS,GAAG,CAAC;IACvB,CAAC,CAAC,KAAK,GAAG,CAAC,SAAS,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC;AAShD,MAAM,yBAAyB,GAAuB;IACpD,cAAc,EAAE,EAAE;IAClB,gBAAgB,EAAE,EAAE;IACpB,IAAI,EAAE,EAAE;CACT,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,EAC5C,cAAc,EACd,gBAAgB,EAChB,IAAI,GACe,EAAE,EAAE;IACvB,IAAI,gBAAgB;QAAE,yBAAyB,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IACpF,IAAI,cAAc;QAAE,yBAAyB,CAAC,cAAc,GAAG,cAAc,CAAC;IAC9E,IAAI,IAAI,EAAE,MAAM;QAAE,yBAAyB,CAAC,IAAI,GAAG,IAAI,CAAC;AAC1D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAE1B;IACF,GAAG,qBAAqB;IAExB,GAAG,EAAE,oCAAoC;IACzC,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,kDAAkD;IACzD,UAAU,EAAE,CAAC;IAEb,cAAc,EAAE,GAAG,EAAE;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,EAAE,6BAA6B;IAExC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;QAClB,MAAM,cAAc,GAAG,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE7D,OAAO;YACL,GAAG,cAAc;YAEjB,SAAS,EAAE,KAAK,IAAI,EAAE;gBACpB,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;gBAC9C,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,yBAAyB,CAAC;gBAC7E,MAAM,EAAE,WAAW,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC,gBAAgB,CAAC;gBAErD,IAAI,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;oBAAE,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC;gBAEtE,MAAM,cAAc,GAAG,cAAc,EAAE,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC;gBAEtE,IAAI,WAAW,EAAE,MAAM,IAAI,cAAc,EAAE;oBACzC,MAAM,CAAC,YAAY,CAAC,GAAG,WAAW,CAAC;oBACnC,cAAc,CAAC,WAAW,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;oBACvE,cAAc,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC;wBACnC,MAAM,EAAE,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,QAAQ;wBACnE,SAAS,EAAE,YAAY,CAAC,SAAS;wBACjC,UAAU,EAAE,YAAY,CAAC,UAAU;wBACnC,IAAI,EAAE,EAAE,OAAO,EAAE,iBAAiB,CAAC,GAAG,EAAE;qBACzC,CAAC,CAAC;iBACJ;gBAED,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC;YACpC,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,sBAAsB,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC"}
1
+ {"version":3,"file":"product-price-round.js","sourceRoot":"","sources":["../../src/pricing/product-price-round.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAE7F,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;AASnF,MAAM,yBAAyB,GAAuB;IACpD,cAAc,EAAE,EAAE;IAClB,gBAAgB,EAAE,EAAE;IACpB,IAAI,EAAE,EAAE;CACT,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,EAC5C,cAAc,EACd,gBAAgB,EAChB,IAAI,GACe,EAAE,EAAE;IACvB,IAAI,gBAAgB;QAAE,yBAAyB,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IACpF,IAAI,cAAc;QAAE,yBAAyB,CAAC,cAAc,GAAG,cAAc,CAAC;IAC9E,IAAI,IAAI,EAAE,MAAM;QAAE,yBAAyB,CAAC,IAAI,GAAG,IAAI,CAAC;AAC1D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAE1B;IACF,GAAG,qBAAqB;IAExB,GAAG,EAAE,oCAAoC;IACzC,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,kDAAkD;IACzD,UAAU,EAAE,CAAC;IAEb,cAAc,EAAE,GAAG,EAAE;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,EAAE,6BAA6B;IAExC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;QAClB,MAAM,cAAc,GAAG,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE7D,OAAO;YACL,GAAG,cAAc;YAEjB,SAAS,EAAE,KAAK,IAAI,EAAE;gBACpB,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;gBAC9C,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,yBAAyB,CAAC;gBAC7E,MAAM,EAAE,WAAW,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC,gBAAgB,CAAC;gBAErD,IAAI,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;oBAAE,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC;gBAEtE,MAAM,cAAc,GAAG,cAAc,EAAE,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC;gBAEtE,IAAI,WAAW,EAAE,MAAM,IAAI,cAAc,EAAE;oBACzC,MAAM,CAAC,YAAY,CAAC,GAAG,WAAW,CAAC;oBACnC,cAAc,CAAC,WAAW,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;oBACvE,cAAc,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC;wBACnC,MAAM,EAAE,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,QAAQ;wBACnE,SAAS,EAAE,YAAY,CAAC,SAAS;wBACjC,UAAU,EAAE,YAAY,CAAC,UAAU;wBACnC,IAAI,EAAE,EAAE,OAAO,EAAE,iBAAiB,CAAC,GAAG,EAAE;qBACzC,CAAC,CAAC;iBACJ;gBAED,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC;YACpC,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,sBAAsB,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC"}
@@ -2,3 +2,4 @@ import { IWorkerAdapter } from '@unchainedshop/types/worker';
2
2
  import { UnchainedCore } from '@unchainedshop/types/core';
3
3
  export declare const ExportTokenWorker: IWorkerAdapter<void, void>;
4
4
  export declare const configureExportToken: (unchainedApi: UnchainedCore) => void;
5
+ export default configureExportToken;
@@ -21,5 +21,6 @@ export const configureExportToken = (unchainedApi) => {
21
21
  }
22
22
  });
23
23
  };
24
+ export default configureExportToken;
24
25
  WorkerDirector.registerAdapter(ExportTokenWorker);
25
26
  //# sourceMappingURL=export-token.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"export-token.js","sourceRoot":"","sources":["../../src/worker/export-token.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAG7F,MAAM,CAAC,MAAM,iBAAiB,GAA+B;IAC3D,GAAG,aAAa;IAEhB,GAAG,EAAE,2CAA2C;IAChD,KAAK,EAAE,2EAA2E;IAClF,OAAO,EAAE,KAAK;IACd,IAAI,EAAE,cAAc;IACpB,QAAQ,EAAE,IAAI;IAEd,KAAK,CAAC,MAAM;QACV,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,YAA2B,EAAE,EAAE;IAClE,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACrE,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,IAAI,IAAI,CAAC,OAAO,EAAE;YAChD,MAAM,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,oBAAoB,CAAC;gBAC1D,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG;gBAC7B,MAAM,EAAE,IAAI;gBACZ,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,sBAAsB;aACjD,CAAC,CAAC;SACJ;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,cAAc,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC"}
1
+ {"version":3,"file":"export-token.js","sourceRoot":"","sources":["../../src/worker/export-token.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAG7F,MAAM,CAAC,MAAM,iBAAiB,GAA+B;IAC3D,GAAG,aAAa;IAEhB,GAAG,EAAE,2CAA2C;IAChD,KAAK,EAAE,2EAA2E;IAClF,OAAO,EAAE,KAAK;IACd,IAAI,EAAE,cAAc;IACpB,QAAQ,EAAE,IAAI;IAEd,KAAK,CAAC,MAAM;QACV,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,YAA2B,EAAE,EAAE;IAClE,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACrE,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,IAAI,IAAI,CAAC,OAAO,EAAE;YAChD,MAAM,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,oBAAoB,CAAC;gBAC1D,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG;gBAC7B,MAAM,EAAE,IAAI;gBACZ,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,sBAAsB;aACjD,CAAC,CAAC;SACJ;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,eAAe,oBAAoB,CAAC;AAEpC,cAAc,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { IWorkerAdapter } from '@unchainedshop/types/worker';
2
+ import { UnchainedCore } from '@unchainedshop/types/core';
3
+ export declare const UpdateTokenOwnership: IWorkerAdapter<void, void>;
4
+ export declare const RefreshTokens: IWorkerAdapter<void, any>;
5
+ export declare const configureUpdateTokenOwnership: (unchainedApi: UnchainedCore) => void;
6
+ export default configureUpdateTokenOwnership;
@@ -0,0 +1,66 @@
1
+ import { WorkerDirector, WorkerAdapter, WorkerEventTypes } from '@unchainedshop/core-worker';
2
+ import later from '@breejs/later';
3
+ const everyMinute = later.parse.cron('* * * * *');
4
+ export const UpdateTokenOwnership = {
5
+ ...WorkerAdapter,
6
+ key: 'shop.unchained.worker-plugin.update-token-ownership',
7
+ label: 'External worker to update ownership of provided tokens',
8
+ version: '1.0',
9
+ type: 'UPDATE_TOKEN_OWNERSHIP',
10
+ external: true,
11
+ async doWork() {
12
+ throw new Error('Cannot do work for external workers');
13
+ },
14
+ };
15
+ export const RefreshTokens = {
16
+ ...WorkerAdapter,
17
+ key: 'shop.unchained.worker-plugin.refresh-tokens',
18
+ label: 'Worker to refresh tokens for accounts',
19
+ version: '1.0',
20
+ type: 'REFRESH_TOKENS',
21
+ external: false,
22
+ async doWork(input, requestContext) {
23
+ const { modules } = requestContext;
24
+ const tokens = await modules.warehousing.findTokens({});
25
+ const users = await modules.users.findUsers({ includeGuests: true });
26
+ const accounts = users.flatMap((user) => {
27
+ return user?.services?.web3?.flatMap((service) => {
28
+ if (service.verified)
29
+ return [service.address];
30
+ return [];
31
+ });
32
+ });
33
+ tokens.forEach((token) => {
34
+ accounts.push(token.walletAddress);
35
+ });
36
+ const forked = await modules.worker.addWork({
37
+ type: 'UPDATE_TOKEN_OWNERSHIP',
38
+ retries: 0,
39
+ input: {
40
+ filter: {
41
+ tokens,
42
+ accounts: [...new Set(accounts)],
43
+ },
44
+ },
45
+ }, null);
46
+ return { success: true, result: { forked } };
47
+ },
48
+ };
49
+ export const configureUpdateTokenOwnership = (unchainedApi) => {
50
+ WorkerDirector.events.on(WorkerEventTypes.FINISHED, async ({ work }) => {
51
+ if (work.type === 'UPDATE_TOKEN_OWNERSHIP' && work.success) {
52
+ await Promise.all((work.result?.tokens || []).map(unchainedApi.modules.warehousing.updateTokenOwnership));
53
+ }
54
+ });
55
+ };
56
+ export default configureUpdateTokenOwnership;
57
+ WorkerDirector.registerAdapter(RefreshTokens);
58
+ WorkerDirector.registerAdapter(UpdateTokenOwnership);
59
+ WorkerDirector.configureAutoscheduling(RefreshTokens, {
60
+ schedule: everyMinute,
61
+ retries: 5,
62
+ input: () => {
63
+ /* */
64
+ },
65
+ });
66
+ //# sourceMappingURL=update-token-ownership.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-token-ownership.js","sourceRoot":"","sources":["../../src/worker/update-token-ownership.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unchainedshop/plugins",
3
- "version": "2.0.0-beta1",
3
+ "version": "2.0.0-beta2",
4
4
  "main": "lib/plugins-index.js",
5
5
  "types": "lib/plugins-index.d.ts",
6
6
  "exports": {
@@ -64,24 +64,24 @@
64
64
  },
65
65
  "homepage": "https://github.com/unchainedshop/unchained#readme",
66
66
  "devDependencies": {
67
- "@types/node": "^16.11.66",
68
- "@unchainedshop/api": "^2.0.0-beta1",
67
+ "@types/node": "^16.11.68",
68
+ "@unchainedshop/api": "^2.0.0-beta2",
69
69
  "@unchainedshop/client-oauth2": "^4.3.3",
70
- "@unchainedshop/core-delivery": "^2.0.0-beta1",
71
- "@unchainedshop/core-enrollments": "^2.0.0-beta1",
72
- "@unchainedshop/core-filters": "^2.0.0-beta1",
73
- "@unchainedshop/core-messaging": "^2.0.0-beta1",
74
- "@unchainedshop/core-orders": "^2.0.0-beta1",
75
- "@unchainedshop/core-payment": "^2.0.0-beta1",
76
- "@unchainedshop/core-products": "^2.0.0-beta1",
77
- "@unchainedshop/core-quotations": "^2.0.0-beta1",
78
- "@unchainedshop/core-warehousing": "^2.0.0-beta1",
79
- "@unchainedshop/core-worker": "^2.0.0-beta1",
80
- "@unchainedshop/events": "^2.0.0-beta1",
81
- "@unchainedshop/file-upload": "^2.0.0-beta1",
82
- "@unchainedshop/logger": "^2.0.0-beta1",
83
- "@unchainedshop/types": "^2.0.0-beta1",
84
- "@unchainedshop/utils": "^2.0.0-beta1",
70
+ "@unchainedshop/core-delivery": "^2.0.0-beta2",
71
+ "@unchainedshop/core-enrollments": "^2.0.0-beta2",
72
+ "@unchainedshop/core-filters": "^2.0.0-beta2",
73
+ "@unchainedshop/core-messaging": "^2.0.0-beta2",
74
+ "@unchainedshop/core-orders": "^2.0.0-beta2",
75
+ "@unchainedshop/core-payment": "^2.0.0-beta2",
76
+ "@unchainedshop/core-products": "^2.0.0-beta2",
77
+ "@unchainedshop/core-quotations": "^2.0.0-beta2",
78
+ "@unchainedshop/core-warehousing": "^2.0.0-beta2",
79
+ "@unchainedshop/core-worker": "^2.0.0-beta2",
80
+ "@unchainedshop/events": "^2.0.0-beta2",
81
+ "@unchainedshop/file-upload": "^2.0.0-beta2",
82
+ "@unchainedshop/logger": "^2.0.0-beta2",
83
+ "@unchainedshop/types": "^2.0.0-beta2",
84
+ "@unchainedshop/utils": "^2.0.0-beta2",
85
85
  "bluebird": "^3.7.2",
86
86
  "body-parser": "^1.20.0",
87
87
  "event-iterator": "^2.0.0",
@@ -1,10 +1,7 @@
1
1
  import { IProductPricingAdapter } from '@unchainedshop/types/products.pricing';
2
2
  import { ProductPricingDirector, ProductPricingAdapter } from '@unchainedshop/core-products';
3
3
 
4
- const roundToNext = (value, precision) =>
5
- value % precision === precision / 2
6
- ? value + precision / 2
7
- : value + (precision - (value % precision));
4
+ const roundToNext = (value, precision) => Math.ceil(value / precision) * precision;
8
5
 
9
6
  // String is referencing to a currency
10
7
  interface PriceRoundSettings {
@@ -28,4 +28,6 @@ export const configureExportToken = (unchainedApi: UnchainedCore) => {
28
28
  });
29
29
  };
30
30
 
31
+ export default configureExportToken;
32
+
31
33
  WorkerDirector.registerAdapter(ExportTokenWorker);
@@ -0,0 +1,85 @@
1
+ import { IWorkerAdapter, Work } from '@unchainedshop/types/worker';
2
+ import { WorkerDirector, WorkerAdapter, WorkerEventTypes } from '@unchainedshop/core-worker';
3
+ import { UnchainedCore } from '@unchainedshop/types/core';
4
+ import later from '@breejs/later';
5
+
6
+ const everyMinute = later.parse.cron('* * * * *');
7
+
8
+ export const UpdateTokenOwnership: IWorkerAdapter<void, void> = {
9
+ ...WorkerAdapter,
10
+
11
+ key: 'shop.unchained.worker-plugin.update-token-ownership',
12
+ label: 'External worker to update ownership of provided tokens',
13
+ version: '1.0',
14
+ type: 'UPDATE_TOKEN_OWNERSHIP',
15
+ external: true,
16
+
17
+ async doWork() {
18
+ throw new Error('Cannot do work for external workers');
19
+ },
20
+ };
21
+
22
+ export const RefreshTokens: IWorkerAdapter<void, any> = {
23
+ ...WorkerAdapter,
24
+
25
+ key: 'shop.unchained.worker-plugin.refresh-tokens',
26
+ label: 'Worker to refresh tokens for accounts',
27
+ version: '1.0',
28
+ type: 'REFRESH_TOKENS',
29
+ external: false,
30
+
31
+ async doWork(input, requestContext) {
32
+ const { modules } = requestContext;
33
+
34
+ const tokens = await modules.warehousing.findTokens({});
35
+ const users = await modules.users.findUsers({ includeGuests: true });
36
+ const accounts = users.flatMap((user) => {
37
+ return user?.services?.web3?.flatMap((service) => {
38
+ if (service.verified) return [service.address];
39
+ return [];
40
+ });
41
+ });
42
+
43
+ tokens.forEach((token) => {
44
+ accounts.push(token.walletAddress);
45
+ });
46
+
47
+ const forked = await modules.worker.addWork(
48
+ {
49
+ type: 'UPDATE_TOKEN_OWNERSHIP',
50
+ retries: 0,
51
+ input: {
52
+ filter: {
53
+ tokens,
54
+ accounts: [...new Set(accounts)],
55
+ },
56
+ },
57
+ },
58
+ null,
59
+ );
60
+ return { success: true, result: { forked } };
61
+ },
62
+ };
63
+
64
+ export const configureUpdateTokenOwnership = (unchainedApi: UnchainedCore) => {
65
+ WorkerDirector.events.on(WorkerEventTypes.FINISHED, async ({ work }: { work: Work }) => {
66
+ if (work.type === 'UPDATE_TOKEN_OWNERSHIP' && work.success) {
67
+ await Promise.all(
68
+ (work.result?.tokens || []).map(unchainedApi.modules.warehousing.updateTokenOwnership),
69
+ );
70
+ }
71
+ });
72
+ };
73
+
74
+ export default configureUpdateTokenOwnership;
75
+
76
+ WorkerDirector.registerAdapter(RefreshTokens);
77
+ WorkerDirector.registerAdapter(UpdateTokenOwnership);
78
+
79
+ WorkerDirector.configureAutoscheduling(RefreshTokens, {
80
+ schedule: everyMinute,
81
+ retries: 5,
82
+ input: () => {
83
+ /* */
84
+ },
85
+ });