@unchainedshop/core 4.0.2 → 4.1.1

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.
Files changed (73) hide show
  1. package/lib/factory/index.d.ts +9 -1
  2. package/lib/factory/index.d.ts.map +1 -1
  3. package/lib/factory/index.js +9 -1
  4. package/lib/factory/index.js.map +1 -1
  5. package/lib/factory/registerAssortmentSearchFilter.d.ts +9 -0
  6. package/lib/factory/registerAssortmentSearchFilter.d.ts.map +1 -0
  7. package/lib/factory/registerAssortmentSearchFilter.js +24 -0
  8. package/lib/factory/registerAssortmentSearchFilter.js.map +1 -0
  9. package/lib/factory/registerInvoicePayment.d.ts +9 -0
  10. package/lib/factory/registerInvoicePayment.d.ts.map +1 -0
  11. package/lib/factory/registerInvoicePayment.js +32 -0
  12. package/lib/factory/registerInvoicePayment.js.map +1 -0
  13. package/lib/factory/registerPhysicalWarehouse copy.d.ts +10 -0
  14. package/lib/factory/registerPhysicalWarehouse copy.d.ts.map +1 -0
  15. package/lib/factory/registerPhysicalWarehouse copy.js +54 -0
  16. package/lib/factory/registerPhysicalWarehouse copy.js.map +1 -0
  17. package/lib/factory/registerPhysicalWarehouse.d.ts +10 -0
  18. package/lib/factory/registerPhysicalWarehouse.d.ts.map +1 -0
  19. package/lib/factory/registerPhysicalWarehouse.js +54 -0
  20. package/lib/factory/registerPhysicalWarehouse.js.map +1 -0
  21. package/lib/factory/registerPhysicalWarehousing.d.ts +10 -0
  22. package/lib/factory/registerPhysicalWarehousing.d.ts.map +1 -0
  23. package/lib/factory/registerPhysicalWarehousing.js +54 -0
  24. package/lib/factory/registerPhysicalWarehousing.js.map +1 -0
  25. package/lib/factory/registerPickUpDelivery.d.ts +12 -0
  26. package/lib/factory/registerPickUpDelivery.d.ts.map +1 -0
  27. package/lib/factory/registerPickUpDelivery.js +46 -0
  28. package/lib/factory/registerPickUpDelivery.js.map +1 -0
  29. package/lib/factory/registerProductDiscoverabilityFilter.js +1 -1
  30. package/lib/factory/registerProductDiscoverabilityFilter.js.map +1 -1
  31. package/lib/factory/registerProductSearchFilter.d.ts +9 -0
  32. package/lib/factory/registerProductSearchFilter.d.ts.map +1 -0
  33. package/lib/factory/registerProductSearchFilter.js +24 -0
  34. package/lib/factory/registerProductSearchFilter.js.map +1 -0
  35. package/lib/factory/registerShippingDelivery.d.ts +11 -0
  36. package/lib/factory/registerShippingDelivery.d.ts.map +1 -0
  37. package/lib/factory/registerShippingDelivery.js +38 -0
  38. package/lib/factory/registerShippingDelivery.js.map +1 -0
  39. package/lib/factory/registerVirtualWarehouse.d.ts +11 -0
  40. package/lib/factory/registerVirtualWarehouse.d.ts.map +1 -0
  41. package/lib/factory/registerVirtualWarehouse.js +51 -0
  42. package/lib/factory/registerVirtualWarehouse.js.map +1 -0
  43. package/lib/factory/registerVirtualWarehousing.d.ts +11 -0
  44. package/lib/factory/registerVirtualWarehousing.d.ts.map +1 -0
  45. package/lib/factory/registerVirtualWarehousing.js +51 -0
  46. package/lib/factory/registerVirtualWarehousing.js.map +1 -0
  47. package/lib/factory/registerWarehouse.d.ts +7 -0
  48. package/lib/factory/registerWarehouse.d.ts.map +1 -0
  49. package/lib/factory/registerWarehouse.js +35 -0
  50. package/lib/factory/registerWarehouse.js.map +1 -0
  51. package/lib/factory/registerWorker copy.d.ts +7 -0
  52. package/lib/factory/registerWorker copy.d.ts.map +1 -0
  53. package/lib/factory/registerWorker copy.js +35 -0
  54. package/lib/factory/registerWorker copy.js.map +1 -0
  55. package/lib/factory/registerWorker.d.ts +7 -0
  56. package/lib/factory/registerWorker.d.ts.map +1 -0
  57. package/lib/factory/registerWorker.js +35 -0
  58. package/lib/factory/registerWorker.js.map +1 -0
  59. package/lib/services/removeProduct.d.ts.map +1 -1
  60. package/lib/services/removeProduct.js +3 -0
  61. package/lib/services/removeProduct.js.map +1 -1
  62. package/package.json +20 -20
  63. package/src/factory/index.ts +19 -1
  64. package/src/factory/registerAssortmentSearchFilter.ts +36 -0
  65. package/src/factory/registerInvoicePayment.ts +61 -0
  66. package/src/factory/registerPhysicalWarehousing.ts +92 -0
  67. package/src/factory/registerPickUpDelivery.ts +81 -0
  68. package/src/factory/registerProductDiscoverabilityFilter.ts +1 -1
  69. package/src/factory/registerProductSearchFilter.ts +36 -0
  70. package/src/factory/registerShippingDelivery.ts +65 -0
  71. package/src/factory/registerVirtualWarehousing.ts +100 -0
  72. package/src/factory/registerWorker.ts +46 -0
  73. package/src/services/removeProduct.ts +3 -0
@@ -0,0 +1,51 @@
1
+ import { WarehousingProviderType, } from '@unchainedshop/core-warehousing';
2
+ import { WarehousingAdapter, WarehousingDirector } from '../core-index.js';
3
+ export default function registerVirtualWarehouse({ adapterId, orderIndex = 0, stock, tokenize, tokenMetadata, isInvalidateable, }) {
4
+ WarehousingDirector.registerAdapter({
5
+ ...WarehousingAdapter,
6
+ key: 'shop.unchained.warehousing.virtual.' + adapterId,
7
+ label: 'Virtual Wareshousing: ' + adapterId,
8
+ version: '1.0.0',
9
+ orderIndex,
10
+ initialConfiguration: [{ key: 'shipping-hub', value: 'Shipping Hub' }],
11
+ typeSupported: (type) => {
12
+ return type === WarehousingProviderType.VIRTUAL;
13
+ },
14
+ actions: (configuration, context) => {
15
+ return {
16
+ ...WarehousingAdapter.actions(configuration, context),
17
+ isActive() {
18
+ return true;
19
+ },
20
+ configurationError() {
21
+ return null;
22
+ },
23
+ stock: async (referenceDate) => {
24
+ if (typeof stock === 'number') {
25
+ return stock;
26
+ }
27
+ else if (typeof stock === 'function') {
28
+ return stock(referenceDate, configuration, context);
29
+ }
30
+ return 99999;
31
+ },
32
+ async tokenize() {
33
+ return tokenize(configuration, context);
34
+ },
35
+ async tokenMetadata(serialNumber, referenceDate) {
36
+ if (tokenMetadata) {
37
+ return tokenMetadata(serialNumber, referenceDate, configuration, context);
38
+ }
39
+ return null;
40
+ },
41
+ async isInvalidateable(serialNumber, referenceDate) {
42
+ if (isInvalidateable) {
43
+ return isInvalidateable(serialNumber, referenceDate, configuration, context);
44
+ }
45
+ return false;
46
+ },
47
+ };
48
+ },
49
+ });
50
+ }
51
+ //# sourceMappingURL=registerVirtualWarehouse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerVirtualWarehouse.js","sourceRoot":"","sources":["../../src/factory/registerVirtualWarehouse.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,uBAAuB,GACxB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAsB,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE/F,MAAM,CAAC,OAAO,UAAU,wBAAwB,CAAiC,EAC/E,SAAS,EACT,UAAU,GAAG,CAAC,EACd,KAAK,EACL,QAAQ,EACR,aAAa,EACb,gBAAgB,GA8BjB;IACC,mBAAmB,CAAC,eAAe,CAAC;QAClC,GAAG,kBAAkB;QAErB,GAAG,EAAE,qCAAqC,GAAG,SAAS;QACtD,KAAK,EAAE,wBAAwB,GAAG,SAAS;QAC3C,OAAO,EAAE,OAAO;QAChB,UAAU;QAEV,oBAAoB,EAAE,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;QAEtE,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE;YACtB,OAAO,IAAI,KAAK,uBAAuB,CAAC,OAAO,CAAC;QAClD,CAAC;QAED,OAAO,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,EAAE;YAClC,OAAO;gBACL,GAAG,kBAAkB,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC;gBAErD,QAAQ;oBACN,OAAO,IAAI,CAAC;gBACd,CAAC;gBAED,kBAAkB;oBAChB,OAAO,IAAI,CAAC;gBACd,CAAC;gBAED,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE;oBAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;wBAC9B,OAAO,KAAK,CAAC;oBACf,CAAC;yBAAM,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;wBACvC,OAAO,KAAK,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;oBACtD,CAAC;oBACD,OAAO,KAAK,CAAC;gBACf,CAAC;gBAED,KAAK,CAAC,QAAQ;oBACZ,OAAO,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;gBAC1C,CAAC;gBAED,KAAK,CAAC,aAAa,CAAC,YAAY,EAAE,aAAa;oBAC7C,IAAI,aAAa,EAAE,CAAC;wBAClB,OAAO,aAAa,CAAC,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;oBAC5E,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;gBAED,KAAK,CAAC,gBAAgB,CAAC,YAAY,EAAE,aAAa;oBAChD,IAAI,gBAAgB,EAAE,CAAC;wBACrB,OAAO,gBAAgB,CAAC,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;oBAC/E,CAAC;oBACD,OAAO,KAAK,CAAC;gBACf,CAAC;aACF,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { TokenSurrogate, WarehousingConfiguration } from '@unchainedshop/core-warehousing';
2
+ import { WarehousingContext } from '../core-index.js';
3
+ export default function registerVirtualWarehousing<Metadata = Record<string, any>>({ adapterId, orderIndex, stock, tokenize, tokenMetadata, isInvalidateable, }: {
4
+ adapterId: string;
5
+ orderIndex?: number;
6
+ stock?: number | ((referenceDate: Date, configuration: WarehousingConfiguration, context: WarehousingContext) => Promise<number>);
7
+ tokenize: (configuration: WarehousingConfiguration, context: WarehousingContext) => Promise<Omit<TokenSurrogate, 'userId' | 'productId' | 'orderPositionId'>[]>;
8
+ tokenMetadata?: (serialNumber: string, referenceDate: Date, configuration: WarehousingConfiguration, context: WarehousingContext) => Promise<Metadata>;
9
+ isInvalidateable?: (serialNumber: string, referenceDate: Date, configuration: WarehousingConfiguration, context: WarehousingContext) => Promise<boolean>;
10
+ }): void;
11
+ //# sourceMappingURL=registerVirtualWarehousing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerVirtualWarehousing.d.ts","sourceRoot":"","sources":["../../src/factory/registerVirtualWarehousing.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,wBAAwB,EAEzB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAsB,kBAAkB,EAAuB,MAAM,kBAAkB,CAAC;AAE/F,MAAM,CAAC,OAAO,UAAU,0BAA0B,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,EACjF,SAAS,EACT,UAAc,EACd,KAAK,EACL,QAAQ,EACR,aAAa,EACb,gBAAgB,GACjB,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EACF,MAAM,GACN,CAAC,CACC,aAAa,EAAE,IAAI,EACnB,aAAa,EAAE,wBAAwB,EACvC,OAAO,EAAE,kBAAkB,KACxB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAE1B,QAAQ,EAAE,CACR,aAAa,EAAE,wBAAwB,EACvC,OAAO,EAAE,kBAAkB,KACxB,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,WAAW,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAEjF,aAAa,CAAC,EAAE,CACd,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,IAAI,EACnB,aAAa,EAAE,wBAAwB,EACvC,OAAO,EAAE,kBAAkB,KACxB,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEvB,gBAAgB,CAAC,EAAE,CACjB,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,IAAI,EACnB,aAAa,EAAE,wBAAwB,EACvC,OAAO,EAAE,kBAAkB,KACxB,OAAO,CAAC,OAAO,CAAC,CAAC;CACvB,QAwDA"}
@@ -0,0 +1,51 @@
1
+ import { WarehousingProviderType, } from '@unchainedshop/core-warehousing';
2
+ import { WarehousingAdapter, WarehousingDirector } from '../core-index.js';
3
+ export default function registerVirtualWarehousing({ adapterId, orderIndex = 0, stock, tokenize, tokenMetadata, isInvalidateable, }) {
4
+ WarehousingDirector.registerAdapter({
5
+ ...WarehousingAdapter,
6
+ key: 'shop.unchained.warehousing.virtual.' + adapterId,
7
+ label: 'Virtual Wareshousing: ' + adapterId,
8
+ version: '1.0.0',
9
+ orderIndex,
10
+ initialConfiguration: [{ key: 'shipping-hub', value: 'Shipping Hub' }],
11
+ typeSupported: (type) => {
12
+ return type === WarehousingProviderType.VIRTUAL;
13
+ },
14
+ actions: (configuration, context) => {
15
+ return {
16
+ ...WarehousingAdapter.actions(configuration, context),
17
+ isActive() {
18
+ return true;
19
+ },
20
+ configurationError() {
21
+ return null;
22
+ },
23
+ stock: async (referenceDate) => {
24
+ if (typeof stock === 'number') {
25
+ return stock;
26
+ }
27
+ else if (typeof stock === 'function') {
28
+ return stock(referenceDate, configuration, context);
29
+ }
30
+ return 99999;
31
+ },
32
+ async tokenize() {
33
+ return tokenize(configuration, context);
34
+ },
35
+ async tokenMetadata(serialNumber, referenceDate) {
36
+ if (tokenMetadata) {
37
+ return tokenMetadata(serialNumber, referenceDate, configuration, context);
38
+ }
39
+ return null;
40
+ },
41
+ async isInvalidateable(serialNumber, referenceDate) {
42
+ if (isInvalidateable) {
43
+ return isInvalidateable(serialNumber, referenceDate, configuration, context);
44
+ }
45
+ return false;
46
+ },
47
+ };
48
+ },
49
+ });
50
+ }
51
+ //# sourceMappingURL=registerVirtualWarehousing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerVirtualWarehousing.js","sourceRoot":"","sources":["../../src/factory/registerVirtualWarehousing.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,uBAAuB,GACxB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAsB,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE/F,MAAM,CAAC,OAAO,UAAU,0BAA0B,CAAiC,EACjF,SAAS,EACT,UAAU,GAAG,CAAC,EACd,KAAK,EACL,QAAQ,EACR,aAAa,EACb,gBAAgB,GA8BjB;IACC,mBAAmB,CAAC,eAAe,CAAC;QAClC,GAAG,kBAAkB;QAErB,GAAG,EAAE,qCAAqC,GAAG,SAAS;QACtD,KAAK,EAAE,wBAAwB,GAAG,SAAS;QAC3C,OAAO,EAAE,OAAO;QAChB,UAAU;QAEV,oBAAoB,EAAE,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;QAEtE,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE;YACtB,OAAO,IAAI,KAAK,uBAAuB,CAAC,OAAO,CAAC;QAClD,CAAC;QAED,OAAO,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,EAAE;YAClC,OAAO;gBACL,GAAG,kBAAkB,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC;gBAErD,QAAQ;oBACN,OAAO,IAAI,CAAC;gBACd,CAAC;gBAED,kBAAkB;oBAChB,OAAO,IAAI,CAAC;gBACd,CAAC;gBAED,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE;oBAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;wBAC9B,OAAO,KAAK,CAAC;oBACf,CAAC;yBAAM,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;wBACvC,OAAO,KAAK,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;oBACtD,CAAC;oBACD,OAAO,KAAK,CAAC;gBACf,CAAC;gBAED,KAAK,CAAC,QAAQ;oBACZ,OAAO,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;gBAC1C,CAAC;gBAED,KAAK,CAAC,aAAa,CAAC,YAAY,EAAE,aAAa;oBAC7C,IAAI,aAAa,EAAE,CAAC;wBAClB,OAAO,aAAa,CAAC,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;oBAC5E,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;gBAED,KAAK,CAAC,gBAAgB,CAAC,YAAY,EAAE,aAAa;oBAChD,IAAI,gBAAgB,EAAE,CAAC;wBACrB,OAAO,gBAAgB,CAAC,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;oBAC/E,CAAC;oBACD,OAAO,KAAK,CAAC;gBACf,CAAC;aACF,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,7 @@
1
+ export default function registerWorker<Input = any, Result = any>({ type, external, maxParallelAllocations, process, }: {
2
+ type: string;
3
+ external?: boolean;
4
+ maxParallelAllocations?: number;
5
+ process?: (input: Input, workId: string) => Promise<Result>;
6
+ }): void;
7
+ //# sourceMappingURL=registerWarehouse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerWarehouse.d.ts","sourceRoot":"","sources":["../../src/factory/registerWarehouse.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,KAAK,GAAG,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,EAChE,IAAI,EACJ,QAAQ,EACR,sBAAsB,EACtB,OAAO,GACR,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC7D,QAiCA"}
@@ -0,0 +1,35 @@
1
+ import { WorkerAdapter, WorkerDirector } from '../core-index.js';
2
+ export default function registerWorker({ type, external, maxParallelAllocations, process, }) {
3
+ WorkerDirector.registerAdapter({
4
+ ...WorkerAdapter,
5
+ key: 'shop.unchained.worker.' + type.toLowerCase(),
6
+ label: 'Worker: ' + type,
7
+ version: '1.0',
8
+ external: external ?? false,
9
+ maxParallelAllocations,
10
+ type,
11
+ async doWork(input, _, workId) {
12
+ if (!process) {
13
+ return { success: false };
14
+ }
15
+ try {
16
+ const result = await process(input, workId);
17
+ return {
18
+ success: true,
19
+ result,
20
+ };
21
+ }
22
+ catch (err) {
23
+ return {
24
+ success: false,
25
+ error: {
26
+ name: err.name,
27
+ message: err.message,
28
+ cause: err.cause,
29
+ },
30
+ };
31
+ }
32
+ },
33
+ });
34
+ }
35
+ //# sourceMappingURL=registerWarehouse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerWarehouse.js","sourceRoot":"","sources":["../../src/factory/registerWarehouse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEjE,MAAM,CAAC,OAAO,UAAU,cAAc,CAA4B,EAChE,IAAI,EACJ,QAAQ,EACR,sBAAsB,EACtB,OAAO,GAMR;IACC,cAAc,CAAC,eAAe,CAAC;QAC7B,GAAG,aAAa;QAEhB,GAAG,EAAE,wBAAwB,GAAG,IAAI,CAAC,WAAW,EAAE;QAClD,KAAK,EAAE,UAAU,GAAG,IAAI;QACxB,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE,QAAQ,IAAI,KAAK;QAC3B,sBAAsB;QACtB,IAAI;QAEJ,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM;YAC3B,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YAC5B,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBAC5C,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,MAAM;iBACP,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE;wBACL,IAAI,EAAE,GAAG,CAAC,IAAI;wBACd,OAAO,EAAE,GAAG,CAAC,OAAO;wBACpB,KAAK,EAAE,GAAG,CAAC,KAAK;qBACjB;iBACF,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,7 @@
1
+ export default function registerWorker<Input = any, Result = any>({ type, external, maxParallelAllocations, process, }: {
2
+ type: string;
3
+ external?: boolean;
4
+ maxParallelAllocations?: number;
5
+ process?: (input: Input, workId: string) => Promise<Result>;
6
+ }): void;
7
+ //# sourceMappingURL=registerWorker%20copy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerWorker copy.d.ts","sourceRoot":"","sources":["../../src/factory/registerWorker copy.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,KAAK,GAAG,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,EAChE,IAAI,EACJ,QAAQ,EACR,sBAAsB,EACtB,OAAO,GACR,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC7D,QAiCA"}
@@ -0,0 +1,35 @@
1
+ import { WorkerAdapter, WorkerDirector } from '../core-index.js';
2
+ export default function registerWorker({ type, external, maxParallelAllocations, process, }) {
3
+ WorkerDirector.registerAdapter({
4
+ ...WorkerAdapter,
5
+ key: 'shop.unchained.worker.' + type.toLowerCase(),
6
+ label: 'Worker: ' + type,
7
+ version: '1.0',
8
+ external: external ?? false,
9
+ maxParallelAllocations,
10
+ type,
11
+ async doWork(input, _, workId) {
12
+ if (!process) {
13
+ return { success: false };
14
+ }
15
+ try {
16
+ const result = await process(input, workId);
17
+ return {
18
+ success: true,
19
+ result,
20
+ };
21
+ }
22
+ catch (err) {
23
+ return {
24
+ success: false,
25
+ error: {
26
+ name: err.name,
27
+ message: err.message,
28
+ cause: err.cause,
29
+ },
30
+ };
31
+ }
32
+ },
33
+ });
34
+ }
35
+ //# sourceMappingURL=registerWorker%20copy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerWorker copy.js","sourceRoot":"","sources":["../../src/factory/registerWorker copy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEjE,MAAM,CAAC,OAAO,UAAU,cAAc,CAA4B,EAChE,IAAI,EACJ,QAAQ,EACR,sBAAsB,EACtB,OAAO,GAMR;IACC,cAAc,CAAC,eAAe,CAAC;QAC7B,GAAG,aAAa;QAEhB,GAAG,EAAE,wBAAwB,GAAG,IAAI,CAAC,WAAW,EAAE;QAClD,KAAK,EAAE,UAAU,GAAG,IAAI;QACxB,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE,QAAQ,IAAI,KAAK;QAC3B,sBAAsB;QACtB,IAAI;QAEJ,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM;YAC3B,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YAC5B,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBAC5C,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,MAAM;iBACP,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE;wBACL,IAAI,EAAE,GAAG,CAAC,IAAI;wBACd,OAAO,EAAE,GAAG,CAAC,OAAO;wBACpB,KAAK,EAAE,GAAG,CAAC,KAAK;qBACjB;iBACF,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,7 @@
1
+ export default function registerWorker<Input = any, Result = any>({ type, external, maxParallelAllocations, process, }: {
2
+ type: string;
3
+ external?: boolean;
4
+ maxParallelAllocations?: number;
5
+ process?: (input: Input, workId: string) => Promise<Result>;
6
+ }): void;
7
+ //# sourceMappingURL=registerWorker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerWorker.d.ts","sourceRoot":"","sources":["../../src/factory/registerWorker.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,KAAK,GAAG,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,EAChE,IAAI,EACJ,QAAQ,EACR,sBAAsB,EACtB,OAAO,GACR,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC7D,QAiCA"}
@@ -0,0 +1,35 @@
1
+ import { WorkerAdapter, WorkerDirector } from '../core-index.js';
2
+ export default function registerWorker({ type, external, maxParallelAllocations, process, }) {
3
+ WorkerDirector.registerAdapter({
4
+ ...WorkerAdapter,
5
+ key: 'shop.unchained.worker.' + type.toLowerCase(),
6
+ label: 'Worker: ' + type,
7
+ version: '1.0',
8
+ external: external ?? false,
9
+ maxParallelAllocations,
10
+ type,
11
+ async doWork(input, _, workId) {
12
+ if (!process) {
13
+ return { success: false };
14
+ }
15
+ try {
16
+ const result = await process(input, workId);
17
+ return {
18
+ success: true,
19
+ result,
20
+ };
21
+ }
22
+ catch (err) {
23
+ return {
24
+ success: false,
25
+ error: {
26
+ name: err.name,
27
+ message: err.message,
28
+ cause: err.cause,
29
+ },
30
+ };
31
+ }
32
+ },
33
+ });
34
+ }
35
+ //# sourceMappingURL=registerWorker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerWorker.js","sourceRoot":"","sources":["../../src/factory/registerWorker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEjE,MAAM,CAAC,OAAO,UAAU,cAAc,CAA4B,EAChE,IAAI,EACJ,QAAQ,EACR,sBAAsB,EACtB,OAAO,GAMR;IACC,cAAc,CAAC,eAAe,CAAC;QAC7B,GAAG,aAAa;QAEhB,GAAG,EAAE,wBAAwB,GAAG,IAAI,CAAC,WAAW,EAAE;QAClD,KAAK,EAAE,UAAU,GAAG,IAAI;QACxB,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE,QAAQ,IAAI,KAAK;QAC3B,sBAAsB;QACtB,IAAI;QAEJ,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM;YAC3B,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YAC5B,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBAC5C,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,MAAM;iBACP,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE;wBACL,IAAI,EAAE,GAAG,CAAC,IAAI;wBACd,OAAO,EAAE,GAAG,CAAC,OAAO;wBACpB,KAAK,EAAE,GAAG,CAAC,KAAK;qBACjB;iBACF,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"removeProduct.d.ts","sourceRoot":"","sources":["../../src/services/removeProduct.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,OAAO,EACb,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GACnC,OAAO,CAAC,OAAO,CAAC,CA4BlB"}
1
+ {"version":3,"file":"removeProduct.d.ts","sourceRoot":"","sources":["../../src/services/removeProduct.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,OAAO,EACb,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GACnC,OAAO,CAAC,OAAO,CAAC,CA+BlB"}
@@ -19,6 +19,9 @@ export async function removeProductService({ productId }) {
19
19
  await this.products.delete(productId);
20
20
  }
21
21
  break;
22
+ case ProductStatus.DELETED:
23
+ // Already deleted
24
+ return false;
22
25
  default:
23
26
  throw new Error(`Invalid status: ${product?.status}`);
24
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"removeProduct.js","sourceRoot":"","sources":["../../src/services/removeProduct.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAGlE,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAExC,EAAE,SAAS,EAAyB;IAEpC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IAE/D,QAAQ,OAAO,EAAE,MAAM,EAAE,CAAC;QACxB,KAAK,aAAa,CAAC,MAAM;YACvB,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACzC,gBAAgB;QAChB,KAAK,IAAI,CAAC;QACV,KAAK,aAAa,CAAC,KAAK;YACtB,CAAC;gBACC,MAAM,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;gBAClD,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC1D,MAAM,IAAI,CAAC,QAAQ,CAAC,kCAAkC,CAAC,SAAS,CAAC,CAAC;gBAClE,MAAM,qBAAqB,GACzB,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,qCAAqC,CAAC,SAAS,CAAC,CAAC;gBAC/E,MAAM,OAAO,CAAC,GAAG,CACf,CAAC,GAAG,IAAI,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,oBAAoB,EAAE,EAAE;oBACrE,MAAM,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,CAAC;gBAClE,CAAC,CAAC,CACH,CAAC;gBACF,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACxC,CAAC;YACD,MAAM;QACR;YACE,MAAM,IAAI,KAAK,CAAC,mBAAmB,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"removeProduct.js","sourceRoot":"","sources":["../../src/services/removeProduct.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAGlE,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAExC,EAAE,SAAS,EAAyB;IAEpC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IAE/D,QAAQ,OAAO,EAAE,MAAM,EAAE,CAAC;QACxB,KAAK,aAAa,CAAC,MAAM;YACvB,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACzC,gBAAgB;QAChB,KAAK,IAAI,CAAC;QACV,KAAK,aAAa,CAAC,KAAK;YACtB,CAAC;gBACC,MAAM,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;gBAClD,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC1D,MAAM,IAAI,CAAC,QAAQ,CAAC,kCAAkC,CAAC,SAAS,CAAC,CAAC;gBAClE,MAAM,qBAAqB,GACzB,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,qCAAqC,CAAC,SAAS,CAAC,CAAC;gBAC/E,MAAM,OAAO,CAAC,GAAG,CACf,CAAC,GAAG,IAAI,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,oBAAoB,EAAE,EAAE;oBACrE,MAAM,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,CAAC;gBAClE,CAAC,CAAC,CACH,CAAC;gBACF,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACxC,CAAC;YACD,MAAM;QACR,KAAK,aAAa,CAAC,OAAO;YACxB,kBAAkB;YAClB,OAAO,KAAK,CAAC;QACf;YACE,MAAM,IAAI,KAAK,CAAC,mBAAmB,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unchainedshop/core",
3
- "version": "4.0.2",
3
+ "version": "4.1.1",
4
4
  "main": "lib/core-index.js",
5
5
  "types": "lib/core-index.d.ts",
6
6
  "type": "module",
@@ -32,25 +32,25 @@
32
32
  "homepage": "https://github.com/unchainedshop/unchained#readme",
33
33
  "dependencies": {
34
34
  "@breejs/later": "^4.2.0",
35
- "@unchainedshop/core-assortments": "^4.0.0",
36
- "@unchainedshop/core-bookmarks": "^4.0.0",
37
- "@unchainedshop/core-countries": "^4.0.0",
38
- "@unchainedshop/core-currencies": "^4.0.0",
39
- "@unchainedshop/core-delivery": "^4.0.0",
40
- "@unchainedshop/core-enrollments": "^4.0.0",
41
- "@unchainedshop/core-events": "^4.0.0",
42
- "@unchainedshop/core-files": "^4.0.0",
43
- "@unchainedshop/core-filters": "^4.0.0",
44
- "@unchainedshop/core-languages": "^4.0.0",
45
- "@unchainedshop/core-orders": "^4.0.0",
46
- "@unchainedshop/core-payment": "^4.0.0",
47
- "@unchainedshop/core-products": "^4.0.0",
48
- "@unchainedshop/core-quotations": "^4.0.0",
49
- "@unchainedshop/core-users": "^4.0.0",
50
- "@unchainedshop/core-warehousing": "^4.0.0",
51
- "@unchainedshop/core-worker": "^4.0.0",
52
- "@unchainedshop/logger": "^4.0.0",
53
- "@unchainedshop/utils": "^4.0.0",
35
+ "@unchainedshop/core-assortments": "^4.1.0",
36
+ "@unchainedshop/core-bookmarks": "^4.1.0",
37
+ "@unchainedshop/core-countries": "^4.1.0",
38
+ "@unchainedshop/core-currencies": "^4.1.0",
39
+ "@unchainedshop/core-delivery": "^4.1.0",
40
+ "@unchainedshop/core-enrollments": "^4.1.0",
41
+ "@unchainedshop/core-events": "^4.1.0",
42
+ "@unchainedshop/core-files": "^4.1.0",
43
+ "@unchainedshop/core-filters": "^4.1.0",
44
+ "@unchainedshop/core-languages": "^4.1.0",
45
+ "@unchainedshop/core-orders": "^4.1.0",
46
+ "@unchainedshop/core-payment": "^4.1.0",
47
+ "@unchainedshop/core-products": "^4.1.0",
48
+ "@unchainedshop/core-quotations": "^4.1.0",
49
+ "@unchainedshop/core-users": "^4.1.0",
50
+ "@unchainedshop/core-warehousing": "^4.1.0",
51
+ "@unchainedshop/core-worker": "^4.1.0",
52
+ "@unchainedshop/logger": "^4.1.0",
53
+ "@unchainedshop/utils": "^4.1.0",
54
54
  "minipass-json-stream": "^1.0.2"
55
55
  },
56
56
  "devDependencies": {
@@ -1,3 +1,21 @@
1
1
  import registerProductDiscoverabilityFilter from './registerProductDiscoverabilityFilter.js';
2
+ import registerPickUpDelivery from './registerPickUpDelivery.js';
3
+ import registerShippingDelivery from './registerShippingDelivery.js';
4
+ import registerWorker from './registerWorker.js';
5
+ import registerPhysicalWarehousing from './registerPhysicalWarehousing.js';
6
+ import registerVirtualWarehousing from './registerVirtualWarehousing.js';
7
+ import registerProductSearchFilter from './registerProductSearchFilter.js';
8
+ import registerAssortmentSearchFilter from './registerAssortmentSearchFilter.js';
9
+ import registerInvoicePayment from './registerInvoicePayment.js';
2
10
 
3
- export { registerProductDiscoverabilityFilter };
11
+ export {
12
+ registerProductDiscoverabilityFilter,
13
+ registerPickUpDelivery,
14
+ registerShippingDelivery,
15
+ registerInvoicePayment,
16
+ registerWorker,
17
+ registerPhysicalWarehousing,
18
+ registerVirtualWarehousing,
19
+ registerProductSearchFilter,
20
+ registerAssortmentSearchFilter,
21
+ };
@@ -0,0 +1,36 @@
1
+ import { SearchQuery } from '@unchainedshop/core-filters';
2
+ import { FilterAdapter, FilterDirector } from '../core-index.js';
3
+
4
+ export default function registerAssortmentSearchFilter({
5
+ orderIndex = 0,
6
+ search,
7
+ }: {
8
+ orderIndex?: number;
9
+ search: (params: SearchQuery & { queryString: string; locale: Intl.Locale }) => Promise<string[]>;
10
+ }) {
11
+ FilterDirector.registerAdapter({
12
+ ...FilterAdapter,
13
+
14
+ key: `shop.unchained.filters.assortment-search-${crypto.randomUUID()}`,
15
+ label: 'Assortment Search Filter (auto-generated)',
16
+ version: '1.0.0',
17
+ orderIndex,
18
+
19
+ actions: (params) => {
20
+ return {
21
+ ...FilterAdapter.actions(params),
22
+
23
+ async searchAssortments({ assortmentIds }, { locale }) {
24
+ const { queryString, ...rest } = params.searchQuery;
25
+ if (!queryString) return assortmentIds;
26
+
27
+ const restrictedAssortmentIds = new Set(assortmentIds || []);
28
+ const foundAssortmentIds = await search({ ...rest, queryString, locale });
29
+ return foundAssortmentIds.filter(
30
+ restrictedAssortmentIds.size === 0 ? Boolean : (id) => restrictedAssortmentIds.has(id),
31
+ );
32
+ },
33
+ };
34
+ },
35
+ });
36
+ }
@@ -0,0 +1,61 @@
1
+ import { PaymentConfiguration } from '@unchainedshop/core-payment';
2
+ import {
3
+ PaymentContext,
4
+ PaymentAdapter,
5
+ PaymentDirector,
6
+ PaymentChargeActionResult,
7
+ } from '../core-index.js';
8
+ import { PaymentProviderType } from '@unchainedshop/core-payment';
9
+
10
+ export default function registerInvoicePayment({
11
+ adapterId,
12
+ active,
13
+ payLaterAllowed,
14
+ charge,
15
+ }: {
16
+ adapterId: string;
17
+ active?: boolean;
18
+ payLaterAllowed?: boolean;
19
+ charge:
20
+ | false
21
+ | ((
22
+ configuration: PaymentConfiguration,
23
+ context: PaymentContext,
24
+ ) => Promise<PaymentChargeActionResult | false>);
25
+ }) {
26
+ PaymentDirector.registerAdapter({
27
+ ...PaymentAdapter,
28
+
29
+ key: `shop.unchained.payment.invoice-${adapterId}`,
30
+ label: 'Invoice Payment: ' + adapterId,
31
+ version: '1.0.0',
32
+
33
+ initialConfiguration: [],
34
+
35
+ typeSupported: (type) => {
36
+ return type === PaymentProviderType.INVOICE;
37
+ },
38
+
39
+ actions: (config, context) => {
40
+ return {
41
+ ...PaymentAdapter.actions(config, context),
42
+
43
+ isActive: () => {
44
+ return active ?? true;
45
+ },
46
+
47
+ isPayLaterAllowed() {
48
+ return payLaterAllowed ?? false;
49
+ },
50
+
51
+ configurationError: () => {
52
+ return null;
53
+ },
54
+
55
+ charge: async () => {
56
+ return typeof charge === 'function' ? await charge(config, context) : charge;
57
+ },
58
+ };
59
+ },
60
+ });
61
+ }
@@ -0,0 +1,92 @@
1
+ import { WarehousingConfiguration, WarehousingProviderType } from '@unchainedshop/core-warehousing';
2
+ import { WarehousingAdapter, WarehousingContext, WarehousingDirector } from '../core-index.js';
3
+
4
+ export default function registerPhysicalWarehousing({
5
+ adapterId,
6
+ orderIndex = 0,
7
+ stock,
8
+ productionTime,
9
+ commissioningTime,
10
+ }: {
11
+ adapterId: string;
12
+ orderIndex?: number;
13
+ stock?:
14
+ | number
15
+ | ((
16
+ referenceDate: Date,
17
+ configuration: WarehousingConfiguration,
18
+ context: WarehousingContext,
19
+ ) => Promise<number>);
20
+
21
+ productionTime?:
22
+ | number
23
+ | ((
24
+ quantityToProduct: number,
25
+ configuration: WarehousingConfiguration,
26
+ context: WarehousingContext,
27
+ ) => Promise<number>);
28
+
29
+ commissioningTime?:
30
+ | number
31
+ | ((
32
+ quantity: number,
33
+ configuration: WarehousingConfiguration,
34
+ context: WarehousingContext,
35
+ ) => Promise<number>);
36
+ }) {
37
+ WarehousingDirector.registerAdapter({
38
+ ...WarehousingAdapter,
39
+
40
+ key: 'shop.unchained.warehousing.physical.' + adapterId,
41
+ label: 'Physical Warehousing: ' + adapterId,
42
+ version: '1.0.0',
43
+ orderIndex,
44
+
45
+ initialConfiguration: [{ key: 'shipping-hub', value: 'Shipping Hub' }],
46
+
47
+ typeSupported: (type) => {
48
+ return type === WarehousingProviderType.PHYSICAL;
49
+ },
50
+
51
+ actions: (configuration, context) => {
52
+ return {
53
+ ...WarehousingAdapter.actions(configuration, context),
54
+
55
+ isActive() {
56
+ return true;
57
+ },
58
+
59
+ configurationError() {
60
+ return null;
61
+ },
62
+
63
+ stock: async (referenceDate) => {
64
+ if (typeof stock === 'number') {
65
+ return stock;
66
+ } else if (typeof stock === 'function') {
67
+ return stock(referenceDate, configuration, context);
68
+ }
69
+ return 99999;
70
+ },
71
+
72
+ productionTime: async (quantityToProduct: number) => {
73
+ if (typeof productionTime === 'number') {
74
+ return productionTime;
75
+ } else if (typeof productionTime === 'function') {
76
+ return productionTime(quantityToProduct, configuration, context);
77
+ }
78
+ return 0;
79
+ },
80
+
81
+ commissioningTime: async (quantity: number) => {
82
+ if (typeof commissioningTime === 'number') {
83
+ return commissioningTime;
84
+ } else if (typeof commissioningTime === 'function') {
85
+ return commissioningTime(quantity, configuration, context);
86
+ }
87
+ return 0;
88
+ },
89
+ };
90
+ },
91
+ });
92
+ }