@unchainedshop/core 4.1.0 → 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 +1 -1
  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.1.0",
3
+ "version": "4.1.1",
4
4
  "main": "lib/core-index.js",
5
5
  "types": "lib/core-index.d.ts",
6
6
  "type": "module",
@@ -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
+ }
@@ -0,0 +1,81 @@
1
+ import {
2
+ DeliveryConfiguration,
3
+ DeliveryLocation,
4
+ DeliveryProviderType,
5
+ } from '@unchainedshop/core-delivery';
6
+ import { DeliveryAdapter, DeliveryContext, DeliveryDirector } from '../core-index.js';
7
+ import { Work } from '@unchainedshop/core-worker';
8
+
9
+ export default function registerPickUpDelivery({
10
+ adapterId,
11
+ locations,
12
+ active,
13
+ autoReleaseAllowed,
14
+ estimatedDeliveryThroughput,
15
+ send,
16
+ }: {
17
+ adapterId: string;
18
+ active?: boolean;
19
+ autoReleaseAllowed?: boolean;
20
+ estimatedDeliveryThroughput?: (
21
+ warehousingThroughputTime: number,
22
+ context: DeliveryContext,
23
+ ) => Promise<number | null>;
24
+ send:
25
+ | boolean
26
+ | ((configuration: DeliveryConfiguration, context: DeliveryContext) => Promise<boolean | Work>);
27
+ locations: DeliveryLocation[] | ((context: DeliveryContext) => Promise<DeliveryLocation[]>);
28
+ }) {
29
+ DeliveryDirector.registerAdapter({
30
+ ...DeliveryAdapter,
31
+
32
+ key: `shop.unchained.delivery.pickup-${adapterId}`,
33
+ label: 'PickUp Delivery: ' + adapterId,
34
+ version: '1.0.0',
35
+
36
+ initialConfiguration: [],
37
+
38
+ typeSupported: (type) => {
39
+ return type === DeliveryProviderType.PICKUP;
40
+ },
41
+
42
+ actions: (config, context) => {
43
+ return {
44
+ ...DeliveryAdapter.actions(config, context),
45
+
46
+ isActive: () => {
47
+ return active ?? true;
48
+ },
49
+
50
+ isAutoReleaseAllowed: () => {
51
+ return autoReleaseAllowed ?? true;
52
+ },
53
+
54
+ configurationError: () => {
55
+ return null;
56
+ },
57
+
58
+ pickUpLocationById: async (id) => {
59
+ const result = typeof locations === 'function' ? await locations(context) : locations;
60
+ return result.find((location) => location._id === id) || null;
61
+ },
62
+
63
+ pickUpLocations: async () => {
64
+ const result = typeof locations === 'function' ? await locations(context) : locations;
65
+ return result;
66
+ },
67
+
68
+ estimatedDeliveryThroughput: async (warehousingThroughputTime) => {
69
+ if (estimatedDeliveryThroughput) {
70
+ return estimatedDeliveryThroughput(warehousingThroughputTime, context);
71
+ }
72
+ return 0;
73
+ },
74
+
75
+ send: async () => {
76
+ return typeof send === 'function' ? await send(config, context) : send;
77
+ },
78
+ };
79
+ },
80
+ });
81
+ }
@@ -11,7 +11,7 @@ export default function registerProductDiscoverabilityFilter({
11
11
  ...FilterAdapter,
12
12
 
13
13
  key: `shop.unchained.filters.product-discoverability-${crypto.randomUUID()}`,
14
- label: 'Product Discoverability Filter',
14
+ label: 'Product Discoverability Filter (auto-generated)',
15
15
  version: '1.0.0',
16
16
  orderIndex,
17
17