@unchainedshop/core-warehousing 3.1.11 → 4.0.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/db/TokenSurrogateCollection.d.ts +2 -2
- package/lib/db/TokenSurrogateCollection.d.ts.map +1 -1
- package/lib/db/TokenSurrogateCollection.js +2 -2
- package/lib/db/TokenSurrogateCollection.js.map +1 -1
- package/lib/db/WarehousingProvidersCollection.d.ts +2 -2
- package/lib/db/WarehousingProvidersCollection.d.ts.map +1 -1
- package/lib/module/configureWarehousingModule.d.ts +8 -7
- package/lib/module/configureWarehousingModule.d.ts.map +1 -1
- package/lib/module/configureWarehousingModule.js +13 -1
- package/lib/module/configureWarehousingModule.js.map +1 -1
- package/package.json +9 -7
- package/src/db/TokenSurrogateCollection.ts +4 -4
- package/src/db/WarehousingProvidersCollection.ts +1 -1
- package/src/module/configureWarehousingModule.ts +31 -8
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { mongodb } from '@unchainedshop/mongodb';
|
|
2
|
-
export
|
|
2
|
+
export interface TokenSurrogate {
|
|
3
3
|
_id?: string;
|
|
4
4
|
userId?: string;
|
|
5
5
|
walletAddress?: string;
|
|
@@ -12,7 +12,7 @@ export type TokenSurrogate = {
|
|
|
12
12
|
productId: string;
|
|
13
13
|
orderPositionId: string;
|
|
14
14
|
meta: any;
|
|
15
|
-
}
|
|
15
|
+
}
|
|
16
16
|
export declare enum TokenStatus {
|
|
17
17
|
CENTRALIZED = "CENTRALIZED",
|
|
18
18
|
EXPORTING = "EXPORTING",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenSurrogateCollection.d.ts","sourceRoot":"","sources":["../../src/db/TokenSurrogateCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"TokenSurrogateCollection.d.ts","sourceRoot":"","sources":["../../src/db/TokenSurrogateCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAiD,MAAM,wBAAwB,CAAC;AAEhG,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,IAAI,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,GAAG,CAAC;CACX;AAED,oBAAY,WAAW;IACrB,WAAW,gBAAgB;IAC3B,SAAS,cAAc;IACvB,aAAa,kBAAkB;CAChC;AAED,eAAO,MAAM,wBAAwB,GAAU,IAAI,OAAO,CAAC,EAAE,gDAiD5D,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { buildDbIndexes } from '@unchainedshop/mongodb';
|
|
1
|
+
import { buildDbIndexes, isDocumentDBCompatModeEnabled } from '@unchainedshop/mongodb';
|
|
2
2
|
export var TokenStatus;
|
|
3
3
|
(function (TokenStatus) {
|
|
4
4
|
TokenStatus["CENTRALIZED"] = "CENTRALIZED";
|
|
@@ -28,7 +28,7 @@ export const TokenSurrogateCollection = async (db) => {
|
|
|
28
28
|
orderPositionId: 1,
|
|
29
29
|
},
|
|
30
30
|
},
|
|
31
|
-
{
|
|
31
|
+
!isDocumentDBCompatModeEnabled() && {
|
|
32
32
|
index: {
|
|
33
33
|
chainTokenId: 'text',
|
|
34
34
|
userId: 'text',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenSurrogateCollection.js","sourceRoot":"","sources":["../../src/db/TokenSurrogateCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,cAAc,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"TokenSurrogateCollection.js","sourceRoot":"","sources":["../../src/db/TokenSurrogateCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,cAAc,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AAiBhG,MAAM,CAAN,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,0CAA2B,CAAA;IAC3B,sCAAuB,CAAA;IACvB,8CAA+B,CAAA;AACjC,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,EAAE,EAAc,EAAE,EAAE;IAC/D,MAAM,eAAe,GAAG,EAAE,CAAC,UAAU,CAAiB,kBAAkB,CAAC,CAAC;IAE1E,MAAM,cAAc,CAAiB,eAAe,EAAE;QACpD;YACE,KAAK,EAAE;gBACL,YAAY,EAAE,CAAC;aAChB;SACF;QACD;YACE,KAAK,EAAE;gBACL,MAAM,EAAE,CAAC;aACV;SACF;QACD;YACE,KAAK,EAAE;gBACL,SAAS,EAAE,CAAC;aACb;SACF;QACD;YACE,KAAK,EAAE;gBACL,eAAe,EAAE,CAAC;aACnB;SACF;QACD,CAAC,6BAA6B,EAAE,IAAI;YAClC,KAAK,EAAE;gBACL,YAAY,EAAE,MAAM;gBACpB,MAAM,EAAE,MAAM;gBACd,SAAS,EAAE,MAAM;gBACjB,GAAG,EAAE,MAAM;gBACX,aAAa,EAAE,MAAM;gBACrB,eAAe,EAAE,MAAM;aACjB;YACR,OAAO,EAAE;gBACP,OAAO,EAAE;oBACP,GAAG,EAAE,CAAC;oBACN,YAAY,EAAE,CAAC;oBACf,MAAM,EAAE,CAAC;oBACT,SAAS,EAAE,CAAC;oBACZ,eAAe,EAAE,CAAC;oBAClB,aAAa,EAAE,CAAC;oBAChB,MAAM,EAAE,CAAC;iBACV;gBACD,IAAI,EAAE,uBAAuB;aAC9B;SACF;KACF,CAAC,CAAC;IAEH,OAAO,eAAe,CAAC;AACzB,CAAC,CAAC"}
|
|
@@ -3,10 +3,10 @@ export declare enum WarehousingProviderType {
|
|
|
3
3
|
PHYSICAL = "PHYSICAL",
|
|
4
4
|
VIRTUAL = "VIRTUAL"
|
|
5
5
|
}
|
|
6
|
-
export type WarehousingConfiguration =
|
|
6
|
+
export type WarehousingConfiguration = {
|
|
7
7
|
key: string;
|
|
8
8
|
value: string;
|
|
9
|
-
}
|
|
9
|
+
}[];
|
|
10
10
|
export type WarehousingProvider = {
|
|
11
11
|
_id?: string;
|
|
12
12
|
type: WarehousingProviderType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WarehousingProvidersCollection.d.ts","sourceRoot":"","sources":["../../src/db/WarehousingProvidersCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAkB,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAElF,oBAAY,uBAAuB;IACjC,QAAQ,aAAa;IACrB,OAAO,YAAY;CACpB;AAED,MAAM,MAAM,wBAAwB,GAAG
|
|
1
|
+
{"version":3,"file":"WarehousingProvidersCollection.d.ts","sourceRoot":"","sources":["../../src/db/WarehousingProvidersCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAkB,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAElF,oBAAY,uBAAuB;IACjC,QAAQ,aAAa;IACrB,OAAO,YAAY;CACpB;AAED,MAAM,MAAM,wBAAwB,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC;AAExE,MAAM,MAAM,mBAAmB,GAAG;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,uBAAuB,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,wBAAwB,CAAC;CACzC,GAAG,eAAe,CAAC;AAEpB,eAAO,MAAM,8BAA8B,GAAU,IAAI,OAAO,CAAC,EAAE,qDAsBlE,CAAC"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { mongodb, ModuleInput } from '@unchainedshop/mongodb';
|
|
2
2
|
import { WarehousingProvider, WarehousingProviderType } from '../db/WarehousingProvidersCollection.js';
|
|
3
3
|
import { TokenSurrogate } from '../db/TokenSurrogateCollection.js';
|
|
4
|
-
|
|
4
|
+
interface WarehousingProviderQuery {
|
|
5
5
|
type?: WarehousingProviderType;
|
|
6
|
-
}
|
|
7
|
-
|
|
6
|
+
}
|
|
7
|
+
interface TokenQuery {
|
|
8
8
|
queryString?: string;
|
|
9
9
|
userId?: string;
|
|
10
|
-
}
|
|
10
|
+
}
|
|
11
11
|
export declare const buildFindSelector: ({ type }?: WarehousingProviderQuery) => {
|
|
12
12
|
type: WarehousingProviderType;
|
|
13
13
|
deleted: any;
|
|
@@ -25,14 +25,15 @@ export declare const configureWarehousingModule: ({ db }: ModuleInput<Record<str
|
|
|
25
25
|
findToken: ({ tokenId }: {
|
|
26
26
|
tokenId: string;
|
|
27
27
|
}, options?: mongodb.FindOptions) => Promise<TokenSurrogate>;
|
|
28
|
-
findTokens: (selector: any, options?: mongodb.FindOptions) => Promise<
|
|
28
|
+
findTokens: (selector: any, options?: mongodb.FindOptions) => Promise<TokenSurrogate[]>;
|
|
29
29
|
tokensCount: (selector?: any) => Promise<number>;
|
|
30
30
|
findTokensForUser: (params: {
|
|
31
31
|
userId: string;
|
|
32
32
|
} | {
|
|
33
33
|
walletAddresses: string[];
|
|
34
|
-
}, options?: mongodb.FindOptions) => Promise<
|
|
35
|
-
findProviders: (query: WarehousingProviderQuery, options?: mongodb.FindOptions) => Promise<
|
|
34
|
+
}, options?: mongodb.FindOptions) => Promise<TokenSurrogate[]>;
|
|
35
|
+
findProviders: (query: WarehousingProviderQuery, options?: mongodb.FindOptions) => Promise<WarehousingProvider[]>;
|
|
36
|
+
allProviders: () => Promise<mongodb.WithId<WarehousingProvider>[]>;
|
|
36
37
|
providerExists: ({ warehousingProviderId, }: {
|
|
37
38
|
warehousingProviderId: string;
|
|
38
39
|
}) => Promise<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configureWarehousingModule.d.ts","sourceRoot":"","sources":["../../src/module/configureWarehousingModule.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"configureWarehousingModule.d.ts","sourceRoot":"","sources":["../../src/module/configureWarehousingModule.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,OAAO,EACP,WAAW,EAEZ,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,mBAAmB,EAEnB,uBAAuB,EACxB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,cAAc,EAA4B,MAAM,mCAAmC,CAAC;AAI7F,UAAU,wBAAwB;IAChC,IAAI,CAAC,EAAE,uBAAuB,CAAC;CAChC;AAED,UAAU,UAAU;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAYD,eAAO,MAAM,iBAAiB,GAAI,WAAU,wBAA6B;;;;;;CAGxE,CAAC;AACF,eAAO,MAAM,sBAAsB,GAAI,0BAA0B,UAAU,mCAQ1E,CAAC;AAEF,eAAO,MAAM,0BAA0B,GAAU,QAAQ,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;mBAQlE,wBAAwB,KAAG,OAAO,CAAC,MAAM,CAAC;2BAKlC,cAAc,EAAE,KAAG,OAAO,CAAC,IAAI,CAAC;8CAKhC;QAAE,qBAAqB,EAAE,MAAM,CAAA;KAAE,YAClD,OAAO,CAAC,WAAW,KAC5B,OAAO,CAAC,mBAAmB,CAAC;6BAKhB;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,YACtB,OAAO,CAAC,WAAW,KAC5B,OAAO,CAAC,cAAc,CAAC;2BAIG,GAAG,YAAY,OAAO,CAAC,WAAW,KAAG,OAAO,CAAC,cAAc,EAAE,CAAC;6BAI7D,GAAG,KAAQ,OAAO,CAAC,MAAM,CAAC;gCAM9C;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,eAAe,EAAE,MAAM,EAAE,CAAA;KAAE,YAChD,OAAO,CAAC,WAAW,KAC5B,OAAO,CAAC,cAAc,EAAE,CAAC;2BAoBnB,wBAAwB,YACtB,OAAO,CAAC,WAAW,KAC3B,OAAO,CAAC,mBAAmB,EAAE,CAAC;;iDAgB9B;QACD,qBAAqB,EAAE,MAAM,CAAC;KAC/B,KAAG,OAAO,CAAC,OAAO,CAAC;gEAYjB;QACD,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,MAAM,CAAC;KACvB,KAAG,OAAO,CAAC,cAAc,CAAC;+BAeM,MAAM,KAAG,OAAO,CAAC,cAAc,CAAC;sCAkBzB,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC;kBAgB5C,mBAAmB,KAAG,OAAO,CAAC,mBAAmB,CAAC;oCAahC,MAAM,OAAO,OAAO,CAAC,mBAAmB,CAAC;yBAmBpD,MAAM,KAAG,OAAO,CAAC,mBAAmB,CAAC;EAgBnE,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,0BAA0B,CAAC,CAAC,CAAC"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { emit, registerEvents } from '@unchainedshop/events';
|
|
2
|
-
import { generateDbFilterById, generateDbObjectId } from '@unchainedshop/mongodb';
|
|
2
|
+
import { generateDbFilterById, generateDbObjectId, assertDocumentDBCompatMode, } from '@unchainedshop/mongodb';
|
|
3
3
|
import { WarehousingProvidersCollection, } from '../db/WarehousingProvidersCollection.js';
|
|
4
4
|
import { TokenSurrogateCollection } from '../db/TokenSurrogateCollection.js';
|
|
5
|
+
import pMemoize from 'p-memoize';
|
|
6
|
+
import ExpiryMap from 'expiry-map';
|
|
5
7
|
const WAREHOUSING_PROVIDER_EVENTS = [
|
|
6
8
|
'WAREHOUSING_PROVIDER_CREATE',
|
|
7
9
|
'WAREHOUSING_PROVIDER_UPDATE',
|
|
@@ -9,6 +11,7 @@ const WAREHOUSING_PROVIDER_EVENTS = [
|
|
|
9
11
|
'TOKEN_OWNERSHIP_CHANGED',
|
|
10
12
|
'TOKEN_INVALIDATED',
|
|
11
13
|
];
|
|
14
|
+
const allProvidersCache = new ExpiryMap(process.env.NODE_ENV === 'production' ? 60000 : 1);
|
|
12
15
|
export const buildFindSelector = ({ type } = {}) => {
|
|
13
16
|
const query = type ? { type, deleted: null } : { deleted: null };
|
|
14
17
|
return query;
|
|
@@ -16,6 +19,7 @@ export const buildFindSelector = ({ type } = {}) => {
|
|
|
16
19
|
export const buildTokenFindSelector = ({ queryString, ...rest }) => {
|
|
17
20
|
const selector = { ...(rest || {}) };
|
|
18
21
|
if (queryString) {
|
|
22
|
+
assertDocumentDBCompatMode();
|
|
19
23
|
selector.$text = { $search: queryString };
|
|
20
24
|
}
|
|
21
25
|
return selector;
|
|
@@ -67,6 +71,11 @@ export const configureWarehousingModule = async ({ db }) => {
|
|
|
67
71
|
const providers = WarehousingProviders.find(buildFindSelector(query), options);
|
|
68
72
|
return providers.toArray();
|
|
69
73
|
},
|
|
74
|
+
allProviders: pMemoize(async function () {
|
|
75
|
+
return WarehousingProviders.find({ deleted: null }, { sort: { created: 1 } }).toArray();
|
|
76
|
+
}, {
|
|
77
|
+
cache: allProvidersCache,
|
|
78
|
+
}),
|
|
70
79
|
providerExists: async ({ warehousingProviderId, }) => {
|
|
71
80
|
const providerCount = await WarehousingProviders.countDocuments(generateDbFilterById(warehousingProviderId, { deleted: null }), { limit: 1 });
|
|
72
81
|
return !!providerCount;
|
|
@@ -115,6 +124,7 @@ export const configureWarehousingModule = async ({ db }) => {
|
|
|
115
124
|
...doc,
|
|
116
125
|
});
|
|
117
126
|
const warehousingProvider = await WarehousingProviders.findOne({ _id: warehousingProviderId });
|
|
127
|
+
allProvidersCache.clear();
|
|
118
128
|
await emit('WAREHOUSING_PROVIDER_CREATE', { warehousingProvider });
|
|
119
129
|
return warehousingProvider;
|
|
120
130
|
},
|
|
@@ -127,6 +137,7 @@ export const configureWarehousingModule = async ({ db }) => {
|
|
|
127
137
|
}, { returnDocument: 'after' });
|
|
128
138
|
if (!warehousingProvider)
|
|
129
139
|
return null;
|
|
140
|
+
allProvidersCache.clear();
|
|
130
141
|
await emit('WAREHOUSING_PROVIDER_UPDATE', { warehousingProvider });
|
|
131
142
|
return warehousingProvider;
|
|
132
143
|
},
|
|
@@ -136,6 +147,7 @@ export const configureWarehousingModule = async ({ db }) => {
|
|
|
136
147
|
deleted: new Date(),
|
|
137
148
|
},
|
|
138
149
|
}, { returnDocument: 'after' });
|
|
150
|
+
allProvidersCache.clear();
|
|
139
151
|
await emit('WAREHOUSING_PROVIDER_REMOVE', { warehousingProvider });
|
|
140
152
|
return warehousingProvider;
|
|
141
153
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configureWarehousingModule.js","sourceRoot":"","sources":["../../src/module/configureWarehousingModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,
|
|
1
|
+
{"version":3,"file":"configureWarehousingModule.js","sourceRoot":"","sources":["../../src/module/configureWarehousingModule.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unchainedshop/core-warehousing",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0-rc.2",
|
|
4
4
|
"main": "lib/warehousing-index.js",
|
|
5
5
|
"types": "lib/warehousing-index.d.ts",
|
|
6
6
|
"type": "module",
|
|
@@ -31,13 +31,15 @@
|
|
|
31
31
|
},
|
|
32
32
|
"homepage": "https://github.com/unchainedshop/unchained#readme",
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@unchainedshop/events": "^
|
|
35
|
-
"@unchainedshop/logger": "^
|
|
36
|
-
"@unchainedshop/utils": "^
|
|
34
|
+
"@unchainedshop/events": "^4.0.0-rc.2",
|
|
35
|
+
"@unchainedshop/logger": "^4.0.0-rc.2",
|
|
36
|
+
"@unchainedshop/utils": "^4.0.0-rc.2",
|
|
37
|
+
"expiry-map": "^2.0.0",
|
|
38
|
+
"p-memoize": "^7.1.1"
|
|
37
39
|
},
|
|
38
40
|
"devDependencies": {
|
|
39
|
-
"@types/node": "^22.
|
|
40
|
-
"tsx": "^4.19.
|
|
41
|
-
"typescript": "^5.8.
|
|
41
|
+
"@types/node": "^22.15.3",
|
|
42
|
+
"tsx": "^4.19.4",
|
|
43
|
+
"typescript": "^5.8.3"
|
|
42
44
|
}
|
|
43
45
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { mongodb, buildDbIndexes } from '@unchainedshop/mongodb';
|
|
1
|
+
import { mongodb, buildDbIndexes, isDocumentDBCompatModeEnabled } from '@unchainedshop/mongodb';
|
|
2
2
|
|
|
3
|
-
export
|
|
3
|
+
export interface TokenSurrogate {
|
|
4
4
|
_id?: string;
|
|
5
5
|
userId?: string;
|
|
6
6
|
walletAddress?: string;
|
|
@@ -13,7 +13,7 @@ export type TokenSurrogate = {
|
|
|
13
13
|
productId: string;
|
|
14
14
|
orderPositionId: string;
|
|
15
15
|
meta: any;
|
|
16
|
-
}
|
|
16
|
+
}
|
|
17
17
|
|
|
18
18
|
export enum TokenStatus {
|
|
19
19
|
CENTRALIZED = 'CENTRALIZED',
|
|
@@ -45,7 +45,7 @@ export const TokenSurrogateCollection = async (db: mongodb.Db) => {
|
|
|
45
45
|
orderPositionId: 1,
|
|
46
46
|
},
|
|
47
47
|
},
|
|
48
|
-
{
|
|
48
|
+
!isDocumentDBCompatModeEnabled() && {
|
|
49
49
|
index: {
|
|
50
50
|
chainTokenId: 'text',
|
|
51
51
|
userId: 'text',
|
|
@@ -5,7 +5,7 @@ export enum WarehousingProviderType {
|
|
|
5
5
|
VIRTUAL = 'VIRTUAL',
|
|
6
6
|
}
|
|
7
7
|
|
|
8
|
-
export type WarehousingConfiguration =
|
|
8
|
+
export type WarehousingConfiguration = { key: string; value: string }[];
|
|
9
9
|
|
|
10
10
|
export type WarehousingProvider = {
|
|
11
11
|
_id?: string;
|
|
@@ -1,20 +1,28 @@
|
|
|
1
1
|
import { emit, registerEvents } from '@unchainedshop/events';
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
generateDbFilterById,
|
|
4
|
+
generateDbObjectId,
|
|
5
|
+
mongodb,
|
|
6
|
+
ModuleInput,
|
|
7
|
+
assertDocumentDBCompatMode,
|
|
8
|
+
} from '@unchainedshop/mongodb';
|
|
3
9
|
import {
|
|
4
10
|
WarehousingProvider,
|
|
5
11
|
WarehousingProvidersCollection,
|
|
6
12
|
WarehousingProviderType,
|
|
7
13
|
} from '../db/WarehousingProvidersCollection.js';
|
|
8
14
|
import { TokenSurrogate, TokenSurrogateCollection } from '../db/TokenSurrogateCollection.js';
|
|
15
|
+
import pMemoize from 'p-memoize';
|
|
16
|
+
import ExpiryMap from 'expiry-map';
|
|
9
17
|
|
|
10
|
-
|
|
18
|
+
interface WarehousingProviderQuery {
|
|
11
19
|
type?: WarehousingProviderType;
|
|
12
|
-
}
|
|
20
|
+
}
|
|
13
21
|
|
|
14
|
-
|
|
22
|
+
interface TokenQuery {
|
|
15
23
|
queryString?: string;
|
|
16
24
|
userId?: string;
|
|
17
|
-
}
|
|
25
|
+
}
|
|
18
26
|
|
|
19
27
|
const WAREHOUSING_PROVIDER_EVENTS: string[] = [
|
|
20
28
|
'WAREHOUSING_PROVIDER_CREATE',
|
|
@@ -24,6 +32,8 @@ const WAREHOUSING_PROVIDER_EVENTS: string[] = [
|
|
|
24
32
|
'TOKEN_INVALIDATED',
|
|
25
33
|
];
|
|
26
34
|
|
|
35
|
+
const allProvidersCache = new ExpiryMap(process.env.NODE_ENV === 'production' ? 60000 : 1);
|
|
36
|
+
|
|
27
37
|
export const buildFindSelector = ({ type }: WarehousingProviderQuery = {}) => {
|
|
28
38
|
const query = type ? { type, deleted: null } : { deleted: null };
|
|
29
39
|
return query;
|
|
@@ -31,6 +41,7 @@ export const buildFindSelector = ({ type }: WarehousingProviderQuery = {}) => {
|
|
|
31
41
|
export const buildTokenFindSelector = ({ queryString, ...rest }: TokenQuery) => {
|
|
32
42
|
const selector: mongodb.Filter<TokenSurrogate> = { ...(rest || {}) };
|
|
33
43
|
if (queryString) {
|
|
44
|
+
assertDocumentDBCompatMode();
|
|
34
45
|
(selector as any).$text = { $search: queryString };
|
|
35
46
|
}
|
|
36
47
|
|
|
@@ -68,7 +79,7 @@ export const configureWarehousingModule = async ({ db }: ModuleInput<Record<stri
|
|
|
68
79
|
return TokenSurrogates.findOne({ _id: tokenId }, options);
|
|
69
80
|
},
|
|
70
81
|
|
|
71
|
-
findTokens: async (selector: any, options?: mongodb.FindOptions): Promise<
|
|
82
|
+
findTokens: async (selector: any, options?: mongodb.FindOptions): Promise<TokenSurrogate[]> => {
|
|
72
83
|
return TokenSurrogates.find(buildTokenFindSelector(selector), options).toArray();
|
|
73
84
|
},
|
|
74
85
|
|
|
@@ -80,7 +91,7 @@ export const configureWarehousingModule = async ({ db }: ModuleInput<Record<stri
|
|
|
80
91
|
findTokensForUser: async (
|
|
81
92
|
params: { userId: string } | { walletAddresses: string[] },
|
|
82
93
|
options?: mongodb.FindOptions,
|
|
83
|
-
): Promise<
|
|
94
|
+
): Promise<TokenSurrogate[]> => {
|
|
84
95
|
const { userId, walletAddresses } = params as any;
|
|
85
96
|
if (!userId && !walletAddresses)
|
|
86
97
|
throw new Error('userId or walletAddresses must be provided for findTokensForUser');
|
|
@@ -102,11 +113,20 @@ export const configureWarehousingModule = async ({ db }: ModuleInput<Record<stri
|
|
|
102
113
|
findProviders: async (
|
|
103
114
|
query: WarehousingProviderQuery,
|
|
104
115
|
options: mongodb.FindOptions = { sort: { created: 1 } },
|
|
105
|
-
): Promise<
|
|
116
|
+
): Promise<WarehousingProvider[]> => {
|
|
106
117
|
const providers = WarehousingProviders.find(buildFindSelector(query), options);
|
|
107
118
|
return providers.toArray();
|
|
108
119
|
},
|
|
109
120
|
|
|
121
|
+
allProviders: pMemoize(
|
|
122
|
+
async function () {
|
|
123
|
+
return WarehousingProviders.find({ deleted: null }, { sort: { created: 1 } }).toArray();
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
cache: allProvidersCache,
|
|
127
|
+
},
|
|
128
|
+
),
|
|
129
|
+
|
|
110
130
|
providerExists: async ({
|
|
111
131
|
warehousingProviderId,
|
|
112
132
|
}: {
|
|
@@ -184,6 +204,7 @@ export const configureWarehousingModule = async ({ db }: ModuleInput<Record<stri
|
|
|
184
204
|
});
|
|
185
205
|
|
|
186
206
|
const warehousingProvider = await WarehousingProviders.findOne({ _id: warehousingProviderId });
|
|
207
|
+
allProvidersCache.clear();
|
|
187
208
|
await emit('WAREHOUSING_PROVIDER_CREATE', { warehousingProvider });
|
|
188
209
|
return warehousingProvider;
|
|
189
210
|
},
|
|
@@ -202,6 +223,7 @@ export const configureWarehousingModule = async ({ db }: ModuleInput<Record<stri
|
|
|
202
223
|
|
|
203
224
|
if (!warehousingProvider) return null;
|
|
204
225
|
|
|
226
|
+
allProvidersCache.clear();
|
|
205
227
|
await emit('WAREHOUSING_PROVIDER_UPDATE', { warehousingProvider });
|
|
206
228
|
return warehousingProvider;
|
|
207
229
|
},
|
|
@@ -217,6 +239,7 @@ export const configureWarehousingModule = async ({ db }: ModuleInput<Record<stri
|
|
|
217
239
|
{ returnDocument: 'after' },
|
|
218
240
|
);
|
|
219
241
|
|
|
242
|
+
allProvidersCache.clear();
|
|
220
243
|
await emit('WAREHOUSING_PROVIDER_REMOVE', { warehousingProvider });
|
|
221
244
|
return warehousingProvider;
|
|
222
245
|
},
|