@unchainedshop/core-warehousing 3.0.0-alpha7 → 3.0.0-rc10

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 (48) hide show
  1. package/lib/db/TokenSurrogateCollection.d.ts +19 -1
  2. package/lib/db/TokenSurrogateCollection.d.ts.map +1 -1
  3. package/lib/db/TokenSurrogateCollection.js +6 -0
  4. package/lib/db/TokenSurrogateCollection.js.map +1 -1
  5. package/lib/db/WarehousingProvidersCollection.d.ts +15 -2
  6. package/lib/db/WarehousingProvidersCollection.d.ts.map +1 -1
  7. package/lib/db/WarehousingProvidersCollection.js +5 -0
  8. package/lib/db/WarehousingProvidersCollection.js.map +1 -1
  9. package/lib/module/configureWarehousingModule.d.ts +32 -53
  10. package/lib/module/configureWarehousingModule.d.ts.map +1 -1
  11. package/lib/module/configureWarehousingModule.js +23 -139
  12. package/lib/module/configureWarehousingModule.js.map +1 -1
  13. package/lib/warehousing-index.d.ts +2 -5
  14. package/lib/warehousing-index.d.ts.map +1 -1
  15. package/lib/warehousing-index.js +2 -5
  16. package/lib/warehousing-index.js.map +1 -1
  17. package/package.json +13 -13
  18. package/src/db/TokenSurrogateCollection.ts +21 -1
  19. package/src/db/WarehousingProvidersCollection.ts +15 -2
  20. package/src/module/buildFindSelector.test.ts +1 -1
  21. package/src/module/configureWarehousingModule.ts +66 -290
  22. package/src/warehousing-index.ts +2 -6
  23. package/tsconfig.json +5 -7
  24. package/lib/director/WarehousingAdapter.d.ts +0 -3
  25. package/lib/director/WarehousingAdapter.d.ts.map +0 -1
  26. package/lib/director/WarehousingAdapter.js +0 -26
  27. package/lib/director/WarehousingAdapter.js.map +0 -1
  28. package/lib/director/WarehousingDirector.d.ts +0 -3
  29. package/lib/director/WarehousingDirector.d.ts.map +0 -1
  30. package/lib/director/WarehousingDirector.js +0 -143
  31. package/lib/director/WarehousingDirector.js.map +0 -1
  32. package/lib/director/WarehousingError.d.ts +0 -7
  33. package/lib/director/WarehousingError.d.ts.map +0 -1
  34. package/lib/director/WarehousingError.js +0 -8
  35. package/lib/director/WarehousingError.js.map +0 -1
  36. package/lib/director/WarehousingProviderType.d.ts +0 -5
  37. package/lib/director/WarehousingProviderType.d.ts.map +0 -1
  38. package/lib/director/WarehousingProviderType.js +0 -6
  39. package/lib/director/WarehousingProviderType.js.map +0 -1
  40. package/lib/types.d.ts +0 -100
  41. package/lib/types.d.ts.map +0 -1
  42. package/lib/types.js +0 -19
  43. package/lib/types.js.map +0 -1
  44. package/src/director/WarehousingAdapter.ts +0 -39
  45. package/src/director/WarehousingDirector.ts +0 -153
  46. package/src/director/WarehousingError.ts +0 -6
  47. package/src/director/WarehousingProviderType.ts +0 -4
  48. package/src/types.ts +0 -116
@@ -1,143 +0,0 @@
1
- import { DeliveryDirector } from '@unchainedshop/core-delivery';
2
- import { log, LogLevel } from '@unchainedshop/logger';
3
- import { BaseDirector } from '@unchainedshop/utils';
4
- import { WarehousingError } from './WarehousingError.js';
5
- const getReferenceDate = (context) => {
6
- return context && context.referenceDate ? context.referenceDate : new Date();
7
- };
8
- const baseDirector = BaseDirector('WarehousingDirector', {
9
- adapterSortKey: 'orderIndex',
10
- });
11
- export const WarehousingDirector = {
12
- ...baseDirector,
13
- actions: async (warehousingProvider, warehousingContext, unchainedAPI) => {
14
- const Adapter = baseDirector.getAdapter(warehousingProvider.adapterKey);
15
- if (!Adapter) {
16
- throw new Error(`Warehousing Plugin ${warehousingProvider.adapterKey} not available`);
17
- }
18
- const context = {
19
- warehousingProviderId: warehousingProvider._id,
20
- ...warehousingContext,
21
- ...unchainedAPI,
22
- };
23
- const adapter = Adapter.actions(warehousingProvider.configuration, context);
24
- const throughputTime = async (referenceDate) => {
25
- try {
26
- const { quantity } = context;
27
- const stock = await adapter.stock(referenceDate);
28
- const notInStockQuantity = Math.max(quantity - stock, 0);
29
- const productionTime = await adapter.productionTime(notInStockQuantity);
30
- const commissioningTime = await adapter.commissioningTime(quantity);
31
- return Math.max(commissioningTime + productionTime, 0);
32
- }
33
- catch (error) {
34
- log(error.message, { level: LogLevel.Error, ...error });
35
- return NaN;
36
- }
37
- };
38
- return {
39
- configurationError: () => {
40
- try {
41
- const error = adapter.configurationError();
42
- return error;
43
- }
44
- catch {
45
- return WarehousingError.ADAPTER_NOT_FOUND;
46
- }
47
- },
48
- isActive: () => {
49
- try {
50
- return adapter.isActive();
51
- }
52
- catch (error) {
53
- log(error.message, { level: LogLevel.Error });
54
- return false;
55
- }
56
- },
57
- estimatedStock: async () => {
58
- try {
59
- const referenceDate = getReferenceDate(context);
60
- const quantity = await adapter.stock(referenceDate);
61
- return {
62
- quantity,
63
- };
64
- }
65
- catch (error) {
66
- log(error.message, { level: LogLevel.Error, ...error });
67
- return null;
68
- }
69
- },
70
- estimatedDispatch: async () => {
71
- try {
72
- const { deliveryProvider } = context;
73
- const referenceDate = getReferenceDate(context);
74
- const warehousingThroughputTime = await throughputTime(referenceDate);
75
- if (!Number.isFinite(warehousingThroughputTime)) {
76
- return {
77
- shipping: null,
78
- earliestDelivery: null,
79
- };
80
- }
81
- // Calculate shipping date
82
- const shippingTimestamp = referenceDate.getTime() + warehousingThroughputTime;
83
- const shipping = new Date(shippingTimestamp);
84
- // Calculate earliest delivery date
85
- const actions = await DeliveryDirector.actions(deliveryProvider, context, unchainedAPI);
86
- const deliveryThroughputTime = await actions.estimatedDeliveryThroughput(warehousingThroughputTime);
87
- const earliestDelivery = Number.isFinite(deliveryThroughputTime)
88
- ? new Date(shippingTimestamp + deliveryThroughputTime)
89
- : null;
90
- return {
91
- shipping,
92
- earliestDelivery,
93
- };
94
- }
95
- catch (error) {
96
- log(error.message, { level: LogLevel.Error, ...error });
97
- return {};
98
- }
99
- },
100
- tokenMetadata: async (chainTokenId) => {
101
- try {
102
- const referenceDate = getReferenceDate(context);
103
- const tokenMetadata = await adapter.tokenMetadata(chainTokenId, referenceDate);
104
- return tokenMetadata;
105
- }
106
- catch (error) {
107
- log(error.message, { level: LogLevel.Error, ...error });
108
- return {};
109
- }
110
- },
111
- isInvalidateable: async (chainTokenId) => {
112
- try {
113
- const referenceDate = getReferenceDate(context);
114
- const isInvalidateable = await adapter.isInvalidateable(chainTokenId, referenceDate);
115
- return isInvalidateable;
116
- }
117
- catch (error) {
118
- log(error.message, { level: LogLevel.Error, ...error });
119
- return false;
120
- }
121
- },
122
- tokenize: async () => {
123
- try {
124
- const tokens = await adapter.tokenize();
125
- const { order, orderPosition } = warehousingContext;
126
- return tokens.map((token) => {
127
- return {
128
- ...token,
129
- userId: order.userId,
130
- productId: orderPosition.productId,
131
- orderPositionId: orderPosition._id,
132
- };
133
- });
134
- }
135
- catch (error) {
136
- log(error.message, { level: LogLevel.Error, ...error });
137
- return [];
138
- }
139
- },
140
- };
141
- },
142
- };
143
- //# sourceMappingURL=WarehousingDirector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WarehousingDirector.js","sourceRoot":"","sources":["../../src/director/WarehousingDirector.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- export declare enum WarehousingError {
2
- ADAPTER_NOT_FOUND = "ADAPTER_NOT_FOUND",
3
- NOT_IMPLEMENTED = "NOT_IMPLEMENTED",
4
- INCOMPLETE_CONFIGURATION = "INCOMPLETE_CONFIGURATION",
5
- WRONG_CREDENTIALS = "WRONG_CREDENTIALS"
6
- }
7
- //# sourceMappingURL=WarehousingError.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WarehousingError.d.ts","sourceRoot":"","sources":["../../src/director/WarehousingError.ts"],"names":[],"mappings":"AAAA,oBAAY,gBAAgB;IAC1B,iBAAiB,sBAAsB;IACvC,eAAe,oBAAoB;IACnC,wBAAwB,6BAA6B;IACrD,iBAAiB,sBAAsB;CACxC"}
@@ -1,8 +0,0 @@
1
- export var WarehousingError;
2
- (function (WarehousingError) {
3
- WarehousingError["ADAPTER_NOT_FOUND"] = "ADAPTER_NOT_FOUND";
4
- WarehousingError["NOT_IMPLEMENTED"] = "NOT_IMPLEMENTED";
5
- WarehousingError["INCOMPLETE_CONFIGURATION"] = "INCOMPLETE_CONFIGURATION";
6
- WarehousingError["WRONG_CREDENTIALS"] = "WRONG_CREDENTIALS";
7
- })(WarehousingError || (WarehousingError = {}));
8
- //# sourceMappingURL=WarehousingError.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WarehousingError.js","sourceRoot":"","sources":["../../src/director/WarehousingError.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,gBAKX;AALD,WAAY,gBAAgB;IAC1B,2DAAuC,CAAA;IACvC,uDAAmC,CAAA;IACnC,yEAAqD,CAAA;IACrD,2DAAuC,CAAA;AACzC,CAAC,EALW,gBAAgB,KAAhB,gBAAgB,QAK3B"}
@@ -1,5 +0,0 @@
1
- export declare enum WarehousingProviderType {
2
- PHYSICAL = "PHYSICAL",
3
- VIRTUAL = "VIRTUAL"
4
- }
5
- //# sourceMappingURL=WarehousingProviderType.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WarehousingProviderType.d.ts","sourceRoot":"","sources":["../../src/director/WarehousingProviderType.ts"],"names":[],"mappings":"AAAA,oBAAY,uBAAuB;IACjC,QAAQ,aAAa;IACrB,OAAO,YAAY;CACpB"}
@@ -1,6 +0,0 @@
1
- export var WarehousingProviderType;
2
- (function (WarehousingProviderType) {
3
- WarehousingProviderType["PHYSICAL"] = "PHYSICAL";
4
- WarehousingProviderType["VIRTUAL"] = "VIRTUAL";
5
- })(WarehousingProviderType || (WarehousingProviderType = {}));
6
- //# sourceMappingURL=WarehousingProviderType.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WarehousingProviderType.js","sourceRoot":"","sources":["../../src/director/WarehousingProviderType.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,uBAGX;AAHD,WAAY,uBAAuB;IACjC,gDAAqB,CAAA;IACrB,8CAAmB,CAAA;AACrB,CAAC,EAHW,uBAAuB,KAAvB,uBAAuB,QAGlC"}
package/lib/types.d.ts DELETED
@@ -1,100 +0,0 @@
1
- import { IBaseAdapter, IBaseDirector } from '@unchainedshop/utils';
2
- import type { TimestampFields } from '@unchainedshop/mongodb';
3
- import { DeliveryProvider } from '@unchainedshop/core-delivery';
4
- import { Product } from '@unchainedshop/core-products';
5
- import { Order } from '@unchainedshop/core-orders';
6
- import { OrderPosition } from '@unchainedshop/core-orders';
7
- import { UnchainedCore } from '@unchainedshop/core';
8
- export declare enum WarehousingProviderType {
9
- PHYSICAL = "PHYSICAL",
10
- VIRTUAL = "VIRTUAL"
11
- }
12
- export type WarehousingConfiguration = Array<{
13
- key: string;
14
- value: string;
15
- }>;
16
- export type WarehousingProvider = {
17
- _id?: string;
18
- type: WarehousingProviderType;
19
- adapterKey: string;
20
- configuration: WarehousingConfiguration;
21
- } & TimestampFields;
22
- export type WarehousingProviderQuery = {
23
- type?: WarehousingProviderType;
24
- };
25
- export declare enum WarehousingError {
26
- ADAPTER_NOT_FOUND = "ADAPTER_NOT_FOUND",
27
- NOT_IMPLEMENTED = "NOT_IMPLEMENTED",
28
- INCOMPLETE_CONFIGURATION = "INCOMPLETE_CONFIGURATION",
29
- WRONG_CREDENTIALS = "WRONG_CREDENTIALS"
30
- }
31
- export type TokenSurrogate = {
32
- _id?: string;
33
- userId?: string;
34
- walletAddress?: string;
35
- invalidatedDate?: Date;
36
- expiryDate?: Date;
37
- quantity: number;
38
- contractAddress: string;
39
- chainId: string;
40
- chainTokenId: string;
41
- productId: string;
42
- orderPositionId: string;
43
- meta: any;
44
- };
45
- export declare enum TokenStatus {
46
- CENTRALIZED = "CENTRALIZED",
47
- EXPORTING = "EXPORTING",
48
- DECENTRALIZED = "DECENTRALIZED"
49
- }
50
- export interface WarehousingContext {
51
- deliveryProvider?: DeliveryProvider;
52
- product?: Product;
53
- token?: TokenSurrogate;
54
- quantity?: number;
55
- referenceDate?: Date;
56
- locale?: Intl.Locale;
57
- order?: Order;
58
- warehousingProviderId?: string;
59
- orderPosition?: OrderPosition;
60
- }
61
- export type EstimatedDispatch = {
62
- shipping?: Date;
63
- earliestDelivery?: Date;
64
- };
65
- export type EstimatedStock = {
66
- quantity: number;
67
- } | null;
68
- export type WarehousingAdapterActions = {
69
- configurationError: () => WarehousingError;
70
- isActive: () => boolean;
71
- stock: (referenceDate: Date) => Promise<number>;
72
- productionTime: (quantityToProduce: number) => Promise<number>;
73
- commissioningTime: (quantity: number) => Promise<number>;
74
- tokenize: () => Promise<Array<Omit<TokenSurrogate, 'userId' | 'productId' | 'orderPositionId'>>>;
75
- tokenMetadata: (chainTokenId: string, referenceDate: Date) => Promise<any>;
76
- isInvalidateable: (chainTokenId: string, referenceDate: Date) => Promise<boolean>;
77
- };
78
- export type IWarehousingAdapter = IBaseAdapter & {
79
- orderIndex: number;
80
- initialConfiguration: WarehousingConfiguration;
81
- typeSupported: (type: WarehousingProviderType) => boolean;
82
- actions: (config: WarehousingConfiguration, context: WarehousingContext & UnchainedCore) => WarehousingAdapterActions;
83
- };
84
- export type IWarehousingDirector = IBaseDirector<IWarehousingAdapter> & {
85
- actions: (warehousingProvider: WarehousingProvider, warehousingContext: WarehousingContext, unchainedAPI: UnchainedCore) => Promise<{
86
- configurationError: () => WarehousingError;
87
- isActive: () => boolean;
88
- estimatedStock: () => Promise<EstimatedStock>;
89
- estimatedDispatch: () => Promise<EstimatedDispatch>;
90
- tokenize: () => Promise<Array<TokenSurrogate>>;
91
- tokenMetadata: (chainTokenId: string) => Promise<any>;
92
- isInvalidateable: (chainTokenId: string) => Promise<boolean>;
93
- }>;
94
- };
95
- export interface WarehousingInterface {
96
- _id: string;
97
- label: string;
98
- version: string;
99
- }
100
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/lib/types.js DELETED
@@ -1,19 +0,0 @@
1
- export var WarehousingProviderType;
2
- (function (WarehousingProviderType) {
3
- WarehousingProviderType["PHYSICAL"] = "PHYSICAL";
4
- WarehousingProviderType["VIRTUAL"] = "VIRTUAL";
5
- })(WarehousingProviderType || (WarehousingProviderType = {}));
6
- export var WarehousingError;
7
- (function (WarehousingError) {
8
- WarehousingError["ADAPTER_NOT_FOUND"] = "ADAPTER_NOT_FOUND";
9
- WarehousingError["NOT_IMPLEMENTED"] = "NOT_IMPLEMENTED";
10
- WarehousingError["INCOMPLETE_CONFIGURATION"] = "INCOMPLETE_CONFIGURATION";
11
- WarehousingError["WRONG_CREDENTIALS"] = "WRONG_CREDENTIALS";
12
- })(WarehousingError || (WarehousingError = {}));
13
- export var TokenStatus;
14
- (function (TokenStatus) {
15
- TokenStatus["CENTRALIZED"] = "CENTRALIZED";
16
- TokenStatus["EXPORTING"] = "EXPORTING";
17
- TokenStatus["DECENTRALIZED"] = "DECENTRALIZED";
18
- })(TokenStatus || (TokenStatus = {}));
19
- //# sourceMappingURL=types.js.map
package/lib/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAQA,MAAM,CAAN,IAAY,uBAGX;AAHD,WAAY,uBAAuB;IACjC,gDAAqB,CAAA;IACrB,8CAAmB,CAAA;AACrB,CAAC,EAHW,uBAAuB,KAAvB,uBAAuB,QAGlC;AAeD,MAAM,CAAN,IAAY,gBAKX;AALD,WAAY,gBAAgB;IAC1B,2DAAuC,CAAA;IACvC,uDAAmC,CAAA;IACnC,yEAAqD,CAAA;IACrD,2DAAuC,CAAA;AACzC,CAAC,EALW,gBAAgB,KAAhB,gBAAgB,QAK3B;AAiBD,MAAM,CAAN,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,0CAA2B,CAAA;IAC3B,sCAAuB,CAAA;IACvB,8CAA+B,CAAA;AACjC,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB"}
@@ -1,39 +0,0 @@
1
- import { IWarehousingAdapter } from '../types.js';
2
- import { log, LogLevel } from '@unchainedshop/logger';
3
-
4
- import { WarehousingError } from './WarehousingError.js';
5
-
6
- export const WarehousingAdapter: Omit<IWarehousingAdapter, 'key' | 'label' | 'version'> = {
7
- orderIndex: 0,
8
-
9
- typeSupported: () => {
10
- return false;
11
- },
12
-
13
- initialConfiguration: [],
14
-
15
- actions: () => {
16
- return {
17
- configurationError: () => WarehousingError.NOT_IMPLEMENTED,
18
-
19
- isActive: () => false,
20
-
21
- stock: async () => 0,
22
-
23
- productionTime: async () => 0,
24
-
25
- commissioningTime: async () => 0,
26
-
27
- tokenize: async () => [],
28
-
29
- tokenMetadata: async () => ({}),
30
-
31
- isInvalidateable: async () => true,
32
- };
33
- },
34
-
35
- log(message, { level = LogLevel.Debug, ...options } = {}) {
36
- // eslint-disable-line
37
- return log(message, { level, ...options });
38
- },
39
- };
@@ -1,153 +0,0 @@
1
- import { IWarehousingAdapter, IWarehousingDirector, WarehousingContext } from '../types.js';
2
- import { DeliveryDirector } from '@unchainedshop/core-delivery';
3
- import { log, LogLevel } from '@unchainedshop/logger';
4
- import { BaseDirector } from '@unchainedshop/utils';
5
- import { WarehousingError } from './WarehousingError.js';
6
-
7
- const getReferenceDate = (context: WarehousingContext) => {
8
- return context && context.referenceDate ? context.referenceDate : new Date();
9
- };
10
-
11
- const baseDirector = BaseDirector<IWarehousingAdapter>('WarehousingDirector', {
12
- adapterSortKey: 'orderIndex',
13
- });
14
-
15
- export const WarehousingDirector: IWarehousingDirector = {
16
- ...baseDirector,
17
-
18
- actions: async (warehousingProvider, warehousingContext, unchainedAPI) => {
19
- const Adapter = baseDirector.getAdapter(warehousingProvider.adapterKey);
20
-
21
- if (!Adapter) {
22
- throw new Error(`Warehousing Plugin ${warehousingProvider.adapterKey} not available`);
23
- }
24
- const context = {
25
- warehousingProviderId: warehousingProvider._id,
26
- ...warehousingContext,
27
- ...unchainedAPI,
28
- };
29
- const adapter = Adapter.actions(warehousingProvider.configuration, context);
30
-
31
- const throughputTime = async (referenceDate) => {
32
- try {
33
- const { quantity } = context;
34
- const stock = await adapter.stock(referenceDate);
35
- const notInStockQuantity = Math.max(quantity - stock, 0);
36
- const productionTime = await adapter.productionTime(notInStockQuantity);
37
- const commissioningTime = await adapter.commissioningTime(quantity);
38
- return Math.max(commissioningTime + productionTime, 0);
39
- } catch (error) {
40
- log(error.message, { level: LogLevel.Error, ...error });
41
- return NaN;
42
- }
43
- };
44
-
45
- return {
46
- configurationError: () => {
47
- try {
48
- const error = adapter.configurationError();
49
- return error;
50
- } catch {
51
- return WarehousingError.ADAPTER_NOT_FOUND;
52
- }
53
- },
54
-
55
- isActive: () => {
56
- try {
57
- return adapter.isActive();
58
- } catch (error) {
59
- log(error.message, { level: LogLevel.Error });
60
- return false;
61
- }
62
- },
63
-
64
- estimatedStock: async () => {
65
- try {
66
- const referenceDate = getReferenceDate(context);
67
- const quantity = await adapter.stock(referenceDate);
68
- return {
69
- quantity,
70
- };
71
- } catch (error) {
72
- log(error.message, { level: LogLevel.Error, ...error });
73
- return null;
74
- }
75
- },
76
-
77
- estimatedDispatch: async () => {
78
- try {
79
- const { deliveryProvider } = context;
80
- const referenceDate = getReferenceDate(context);
81
-
82
- const warehousingThroughputTime = await throughputTime(referenceDate);
83
- if (!Number.isFinite(warehousingThroughputTime)) {
84
- return {
85
- shipping: null,
86
- earliestDelivery: null,
87
- };
88
- }
89
-
90
- // Calculate shipping date
91
- const shippingTimestamp = referenceDate.getTime() + warehousingThroughputTime;
92
- const shipping = new Date(shippingTimestamp);
93
-
94
- // Calculate earliest delivery date
95
- const actions = await DeliveryDirector.actions(deliveryProvider, context, unchainedAPI);
96
- const deliveryThroughputTime =
97
- await actions.estimatedDeliveryThroughput(warehousingThroughputTime);
98
- const earliestDelivery = Number.isFinite(deliveryThroughputTime)
99
- ? new Date(shippingTimestamp + deliveryThroughputTime)
100
- : null;
101
-
102
- return {
103
- shipping,
104
- earliestDelivery,
105
- };
106
- } catch (error) {
107
- log(error.message, { level: LogLevel.Error, ...error });
108
- return {};
109
- }
110
- },
111
-
112
- tokenMetadata: async (chainTokenId) => {
113
- try {
114
- const referenceDate = getReferenceDate(context);
115
- const tokenMetadata = await adapter.tokenMetadata(chainTokenId, referenceDate);
116
- return tokenMetadata;
117
- } catch (error) {
118
- log(error.message, { level: LogLevel.Error, ...error });
119
- return {};
120
- }
121
- },
122
-
123
- isInvalidateable: async (chainTokenId) => {
124
- try {
125
- const referenceDate = getReferenceDate(context);
126
- const isInvalidateable = await adapter.isInvalidateable(chainTokenId, referenceDate);
127
- return isInvalidateable;
128
- } catch (error) {
129
- log(error.message, { level: LogLevel.Error, ...error });
130
- return false;
131
- }
132
- },
133
-
134
- tokenize: async () => {
135
- try {
136
- const tokens = await adapter.tokenize();
137
- const { order, orderPosition } = warehousingContext;
138
- return tokens.map((token) => {
139
- return {
140
- ...token,
141
- userId: order.userId,
142
- productId: orderPosition.productId,
143
- orderPositionId: orderPosition._id,
144
- };
145
- });
146
- } catch (error) {
147
- log(error.message, { level: LogLevel.Error, ...error });
148
- return [];
149
- }
150
- },
151
- };
152
- },
153
- };
@@ -1,6 +0,0 @@
1
- export enum WarehousingError {
2
- ADAPTER_NOT_FOUND = 'ADAPTER_NOT_FOUND',
3
- NOT_IMPLEMENTED = 'NOT_IMPLEMENTED',
4
- INCOMPLETE_CONFIGURATION = 'INCOMPLETE_CONFIGURATION',
5
- WRONG_CREDENTIALS = 'WRONG_CREDENTIALS',
6
- }
@@ -1,4 +0,0 @@
1
- export enum WarehousingProviderType {
2
- PHYSICAL = 'PHYSICAL',
3
- VIRTUAL = 'VIRTUAL',
4
- }
package/src/types.ts DELETED
@@ -1,116 +0,0 @@
1
- import { IBaseAdapter, IBaseDirector } from '@unchainedshop/utils';
2
- import type { TimestampFields } from '@unchainedshop/mongodb';
3
- import { DeliveryProvider } from '@unchainedshop/core-delivery';
4
- import { Product } from '@unchainedshop/core-products';
5
- import { Order } from '@unchainedshop/core-orders';
6
- import { OrderPosition } from '@unchainedshop/core-orders';
7
- import { UnchainedCore } from '@unchainedshop/core';
8
-
9
- export enum WarehousingProviderType {
10
- PHYSICAL = 'PHYSICAL',
11
- VIRTUAL = 'VIRTUAL',
12
- }
13
-
14
- export type WarehousingConfiguration = Array<{ key: string; value: string }>;
15
-
16
- export type WarehousingProvider = {
17
- _id?: string;
18
- type: WarehousingProviderType;
19
- adapterKey: string;
20
- configuration: WarehousingConfiguration;
21
- } & TimestampFields;
22
-
23
- export type WarehousingProviderQuery = {
24
- type?: WarehousingProviderType;
25
- };
26
-
27
- export enum WarehousingError {
28
- ADAPTER_NOT_FOUND = 'ADAPTER_NOT_FOUND',
29
- NOT_IMPLEMENTED = 'NOT_IMPLEMENTED',
30
- INCOMPLETE_CONFIGURATION = 'INCOMPLETE_CONFIGURATION',
31
- WRONG_CREDENTIALS = 'WRONG_CREDENTIALS',
32
- }
33
-
34
- export type TokenSurrogate = {
35
- _id?: string;
36
- userId?: string;
37
- walletAddress?: string;
38
- invalidatedDate?: Date;
39
- expiryDate?: Date;
40
- quantity: number;
41
- contractAddress: string;
42
- chainId: string;
43
- chainTokenId: string;
44
- productId: string;
45
- orderPositionId: string;
46
- meta: any;
47
- };
48
-
49
- export enum TokenStatus {
50
- CENTRALIZED = 'CENTRALIZED',
51
- EXPORTING = 'EXPORTING',
52
- DECENTRALIZED = 'DECENTRALIZED',
53
- }
54
-
55
- export interface WarehousingContext {
56
- deliveryProvider?: DeliveryProvider;
57
- product?: Product;
58
- token?: TokenSurrogate;
59
- quantity?: number;
60
- referenceDate?: Date;
61
- locale?: Intl.Locale;
62
- order?: Order;
63
- warehousingProviderId?: string;
64
- orderPosition?: OrderPosition;
65
- }
66
-
67
- export type EstimatedDispatch = {
68
- shipping?: Date;
69
- earliestDelivery?: Date;
70
- };
71
-
72
- export type EstimatedStock = { quantity: number } | null;
73
-
74
- export type WarehousingAdapterActions = {
75
- configurationError: () => WarehousingError;
76
- isActive: () => boolean;
77
- stock: (referenceDate: Date) => Promise<number>;
78
- productionTime: (quantityToProduce: number) => Promise<number>;
79
- commissioningTime: (quantity: number) => Promise<number>;
80
- tokenize: () => Promise<Array<Omit<TokenSurrogate, 'userId' | 'productId' | 'orderPositionId'>>>;
81
- tokenMetadata: (chainTokenId: string, referenceDate: Date) => Promise<any>;
82
- isInvalidateable: (chainTokenId: string, referenceDate: Date) => Promise<boolean>;
83
- };
84
-
85
- export type IWarehousingAdapter = IBaseAdapter & {
86
- orderIndex: number;
87
- initialConfiguration: WarehousingConfiguration;
88
- typeSupported: (type: WarehousingProviderType) => boolean;
89
-
90
- actions: (
91
- config: WarehousingConfiguration,
92
- context: WarehousingContext & UnchainedCore,
93
- ) => WarehousingAdapterActions;
94
- };
95
-
96
- export type IWarehousingDirector = IBaseDirector<IWarehousingAdapter> & {
97
- actions: (
98
- warehousingProvider: WarehousingProvider,
99
- warehousingContext: WarehousingContext,
100
- unchainedAPI: UnchainedCore,
101
- ) => Promise<{
102
- configurationError: () => WarehousingError;
103
- isActive: () => boolean;
104
- estimatedStock: () => Promise<EstimatedStock>;
105
- estimatedDispatch: () => Promise<EstimatedDispatch>;
106
- tokenize: () => Promise<Array<TokenSurrogate>>;
107
- tokenMetadata: (chainTokenId: string) => Promise<any>;
108
- isInvalidateable: (chainTokenId: string) => Promise<boolean>;
109
- }>;
110
- };
111
-
112
- export interface WarehousingInterface {
113
- _id: string;
114
- label: string;
115
- version: string;
116
- }