@unchainedshop/core-warehousing 4.3.4 → 4.5.0
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/README.md +93 -2
- package/lib/db/TokenSurrogateCollection.d.ts +7 -7
- package/lib/db/TokenSurrogateCollection.js +5 -7
- package/lib/db/WarehousingProvidersCollection.d.ts +6 -6
- package/lib/db/WarehousingProvidersCollection.js +4 -6
- package/lib/module/configureWarehousingModule.d.ts +13 -30
- package/lib/module/configureWarehousingModule.js +21 -10
- package/lib/warehousing-index.d.ts +3 -4
- package/lib/warehousing-index.js +3 -4
- package/package.json +12 -10
- package/lib/db/TokenSurrogateCollection.d.ts.map +0 -1
- package/lib/db/TokenSurrogateCollection.js.map +0 -1
- package/lib/db/WarehousingProvidersCollection.d.ts.map +0 -1
- package/lib/db/WarehousingProvidersCollection.js.map +0 -1
- package/lib/module/configureWarehousingModule.d.ts.map +0 -1
- package/lib/module/configureWarehousingModule.js.map +0 -1
- package/lib/warehousing-index.d.ts.map +0 -1
- package/lib/warehousing-index.js.map +0 -1
- package/src/db/TokenSurrogateCollection.ts +0 -82
- package/src/db/WarehousingProvidersCollection.ts +0 -39
- package/src/module/buildFindSelector.test.ts +0 -19
- package/src/module/configureWarehousingModule.ts +0 -260
- package/src/warehousing-index.ts +0 -3
- package/tsconfig.json +0 -10
package/README.md
CHANGED
|
@@ -1,3 +1,94 @@
|
|
|
1
|
-
|
|
1
|
+
[](https://npmjs.com/package/@unchainedshop/core-warehousing)
|
|
2
|
+
[](https://opensource.org/licenses/EUPL-1.2)
|
|
2
3
|
|
|
3
|
-
|
|
4
|
+
# @unchainedshop/core-warehousing
|
|
5
|
+
|
|
6
|
+
Warehousing provider module for the Unchained Engine. Manages inventory, stock levels, and tokenized product surrogates.
|
|
7
|
+
|
|
8
|
+
## Installation
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
npm install @unchainedshop/core-warehousing
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Usage
|
|
15
|
+
|
|
16
|
+
```typescript
|
|
17
|
+
import { configureWarehousingModule, WarehousingProviderType } from '@unchainedshop/core-warehousing';
|
|
18
|
+
|
|
19
|
+
const warehousingModule = await configureWarehousingModule({ db });
|
|
20
|
+
|
|
21
|
+
// Create a warehousing provider
|
|
22
|
+
const providerId = await warehousingModule.create({
|
|
23
|
+
type: WarehousingProviderType.PHYSICAL,
|
|
24
|
+
adapterKey: 'shop.unchained.warehousing.inventory',
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
// Find providers
|
|
28
|
+
const providers = await warehousingModule.findProviders({});
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## API Overview
|
|
32
|
+
|
|
33
|
+
### Module Configuration
|
|
34
|
+
|
|
35
|
+
| Export | Description |
|
|
36
|
+
|--------|-------------|
|
|
37
|
+
| `configureWarehousingModule` | Configure and return the warehousing module |
|
|
38
|
+
|
|
39
|
+
### Queries
|
|
40
|
+
|
|
41
|
+
| Method | Description |
|
|
42
|
+
|--------|-------------|
|
|
43
|
+
| `findProvider` | Find provider by ID |
|
|
44
|
+
| `findProviders` | Find providers with filtering |
|
|
45
|
+
| `count` | Count providers |
|
|
46
|
+
| `providerExists` | Check if provider exists |
|
|
47
|
+
| `findSupported` | Find providers for product context |
|
|
48
|
+
| `findInterface` | Get provider interface definition |
|
|
49
|
+
|
|
50
|
+
### Mutations
|
|
51
|
+
|
|
52
|
+
| Method | Description |
|
|
53
|
+
|--------|-------------|
|
|
54
|
+
| `create` | Create a new warehousing provider |
|
|
55
|
+
| `update` | Update provider configuration |
|
|
56
|
+
| `delete` | Soft delete a provider |
|
|
57
|
+
|
|
58
|
+
### Token Surrogates
|
|
59
|
+
|
|
60
|
+
For tokenized products (NFTs):
|
|
61
|
+
|
|
62
|
+
| Method | Description |
|
|
63
|
+
|--------|-------------|
|
|
64
|
+
| `findTokenSurrogate` | Find token surrogate |
|
|
65
|
+
| `createTokenSurrogate` | Create token surrogate |
|
|
66
|
+
| `updateTokenSurrogate` | Update token surrogate |
|
|
67
|
+
| `deleteTokenSurrogate` | Delete token surrogate |
|
|
68
|
+
| `invalidateTokenSurrogates` | Invalidate surrogates for product |
|
|
69
|
+
|
|
70
|
+
### Constants
|
|
71
|
+
|
|
72
|
+
| Export | Description |
|
|
73
|
+
|--------|-------------|
|
|
74
|
+
| `WarehousingProviderType` | Provider types (PHYSICAL, VIRTUAL) |
|
|
75
|
+
|
|
76
|
+
### Types
|
|
77
|
+
|
|
78
|
+
| Export | Description |
|
|
79
|
+
|--------|-------------|
|
|
80
|
+
| `WarehousingProvider` | Provider document type |
|
|
81
|
+
| `TokenSurrogate` | Token surrogate document type |
|
|
82
|
+
| `WarehousingModule` | Module interface type |
|
|
83
|
+
|
|
84
|
+
## Events
|
|
85
|
+
|
|
86
|
+
| Event | Description |
|
|
87
|
+
|-------|-------------|
|
|
88
|
+
| `WAREHOUSING_PROVIDER_CREATE` | Provider created |
|
|
89
|
+
| `WAREHOUSING_PROVIDER_UPDATE` | Provider updated |
|
|
90
|
+
| `WAREHOUSING_PROVIDER_REMOVE` | Provider deleted |
|
|
91
|
+
|
|
92
|
+
## License
|
|
93
|
+
|
|
94
|
+
EUPL-1.2
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { mongodb } from '@unchainedshop/mongodb';
|
|
1
|
+
import { type mongodb } from '@unchainedshop/mongodb';
|
|
2
2
|
export interface TokenSurrogate {
|
|
3
3
|
_id: string;
|
|
4
4
|
userId?: string;
|
|
@@ -13,10 +13,10 @@ export interface TokenSurrogate {
|
|
|
13
13
|
orderPositionId: string;
|
|
14
14
|
meta: any;
|
|
15
15
|
}
|
|
16
|
-
export declare
|
|
17
|
-
CENTRALIZED
|
|
18
|
-
EXPORTING
|
|
19
|
-
DECENTRALIZED
|
|
20
|
-
}
|
|
16
|
+
export declare const TokenStatus: {
|
|
17
|
+
readonly CENTRALIZED: "CENTRALIZED";
|
|
18
|
+
readonly EXPORTING: "EXPORTING";
|
|
19
|
+
readonly DECENTRALIZED: "DECENTRALIZED";
|
|
20
|
+
};
|
|
21
|
+
export type TokenStatus = (typeof TokenStatus)[keyof typeof TokenStatus];
|
|
21
22
|
export declare const TokenSurrogateCollection: (db: mongodb.Db) => Promise<mongodb.Collection<TokenSurrogate>>;
|
|
22
|
-
//# sourceMappingURL=TokenSurrogateCollection.d.ts.map
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { buildDbIndexes, isDocumentDBCompatModeEnabled } from '@unchainedshop/mongodb';
|
|
2
|
-
export
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
})(TokenStatus || (TokenStatus = {}));
|
|
2
|
+
export const TokenStatus = {
|
|
3
|
+
CENTRALIZED: 'CENTRALIZED',
|
|
4
|
+
EXPORTING: 'EXPORTING',
|
|
5
|
+
DECENTRALIZED: 'DECENTRALIZED',
|
|
6
|
+
};
|
|
8
7
|
export const TokenSurrogateCollection = async (db) => {
|
|
9
8
|
const TokenSurrogates = db.collection('token_surrogates');
|
|
10
9
|
if (!isDocumentDBCompatModeEnabled()) {
|
|
@@ -57,4 +56,3 @@ export const TokenSurrogateCollection = async (db) => {
|
|
|
57
56
|
]);
|
|
58
57
|
return TokenSurrogates;
|
|
59
58
|
};
|
|
60
|
-
//# sourceMappingURL=TokenSurrogateCollection.js.map
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { mongodb, TimestampFields } from '@unchainedshop/mongodb';
|
|
2
|
-
export declare
|
|
3
|
-
PHYSICAL
|
|
4
|
-
VIRTUAL
|
|
5
|
-
}
|
|
1
|
+
import { type mongodb, type TimestampFields } from '@unchainedshop/mongodb';
|
|
2
|
+
export declare const WarehousingProviderType: {
|
|
3
|
+
readonly PHYSICAL: "PHYSICAL";
|
|
4
|
+
readonly VIRTUAL: "VIRTUAL";
|
|
5
|
+
};
|
|
6
|
+
export type WarehousingProviderType = (typeof WarehousingProviderType)[keyof typeof WarehousingProviderType];
|
|
6
7
|
export type WarehousingConfiguration = {
|
|
7
8
|
key: string;
|
|
8
9
|
value: string;
|
|
@@ -14,4 +15,3 @@ export type WarehousingProvider = {
|
|
|
14
15
|
configuration: WarehousingConfiguration;
|
|
15
16
|
} & TimestampFields;
|
|
16
17
|
export declare const WarehousingProvidersCollection: (db: mongodb.Db) => Promise<mongodb.Collection<WarehousingProvider>>;
|
|
17
|
-
//# sourceMappingURL=WarehousingProvidersCollection.d.ts.map
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { buildDbIndexes } from '@unchainedshop/mongodb';
|
|
2
|
-
export
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
})(WarehousingProviderType || (WarehousingProviderType = {}));
|
|
2
|
+
export const WarehousingProviderType = {
|
|
3
|
+
PHYSICAL: 'PHYSICAL',
|
|
4
|
+
VIRTUAL: 'VIRTUAL',
|
|
5
|
+
};
|
|
7
6
|
export const WarehousingProvidersCollection = async (db) => {
|
|
8
7
|
const WarehousingProviders = db.collection('warehousing-providers');
|
|
9
8
|
await buildDbIndexes(WarehousingProviders, [
|
|
@@ -25,4 +24,3 @@ export const WarehousingProvidersCollection = async (db) => {
|
|
|
25
24
|
]);
|
|
26
25
|
return WarehousingProviders;
|
|
27
26
|
};
|
|
28
|
-
//# sourceMappingURL=WarehousingProvidersCollection.js.map
|
|
@@ -1,35 +1,21 @@
|
|
|
1
|
-
import { mongodb, ModuleInput } from '@unchainedshop/mongodb';
|
|
2
|
-
import { WarehousingProvider } from '../db/WarehousingProvidersCollection.
|
|
3
|
-
import { TokenSurrogate } from '../db/TokenSurrogateCollection.
|
|
1
|
+
import { type mongodb, type ModuleInput } from '@unchainedshop/mongodb';
|
|
2
|
+
import { type WarehousingProvider, type WarehousingProviderType } from '../db/WarehousingProvidersCollection.ts';
|
|
3
|
+
import { type TokenSurrogate } from '../db/TokenSurrogateCollection.ts';
|
|
4
4
|
interface TokenQuery {
|
|
5
5
|
queryString?: string;
|
|
6
6
|
userId?: string;
|
|
7
|
+
walletAddressExists?: boolean;
|
|
7
8
|
}
|
|
8
|
-
export
|
|
9
|
+
export interface WarehousingProviderQuery {
|
|
10
|
+
warehousingProviderIds?: string[];
|
|
11
|
+
type?: WarehousingProviderType;
|
|
9
12
|
includeDeleted?: boolean;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
adapterKey?: mongodb.Condition<string> | undefined;
|
|
15
|
-
configuration?: mongodb.Condition<import("../db/WarehousingProvidersCollection.js").WarehousingConfiguration> | undefined;
|
|
16
|
-
updated?: mongodb.Condition<Date | undefined>;
|
|
17
|
-
_id?: mongodb.Condition<string> | undefined;
|
|
18
|
-
$and?: mongodb.Filter<mongodb.WithId<WarehousingProvider>>[] | undefined;
|
|
19
|
-
$nor?: mongodb.Filter<mongodb.WithId<WarehousingProvider>>[] | undefined;
|
|
20
|
-
$or?: mongodb.Filter<mongodb.WithId<WarehousingProvider>>[] | undefined;
|
|
21
|
-
$text?: {
|
|
22
|
-
$search: string;
|
|
23
|
-
$language?: string;
|
|
24
|
-
$caseSensitive?: boolean;
|
|
25
|
-
$diacriticSensitive?: boolean;
|
|
26
|
-
};
|
|
27
|
-
$where?: string | ((this: mongodb.WithId<WarehousingProvider>) => boolean) | undefined;
|
|
28
|
-
$comment?: string | mongodb.BSON.Document;
|
|
29
|
-
};
|
|
30
|
-
export declare const buildTokenFindSelector: ({ queryString, ...rest }: TokenQuery) => mongodb.Filter<TokenSurrogate>;
|
|
13
|
+
queryString?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare const buildFindSelector: ({ includeDeleted, queryString, warehousingProviderIds, type, }?: WarehousingProviderQuery) => mongodb.Filter<WarehousingProvider>;
|
|
16
|
+
export declare const buildTokenFindSelector: ({ queryString, walletAddressExists, ...rest }: TokenQuery) => mongodb.Filter<TokenSurrogate>;
|
|
31
17
|
export declare const configureWarehousingModule: ({ db }: ModuleInput<Record<string, never>>) => Promise<{
|
|
32
|
-
count: (query
|
|
18
|
+
count: (query?: WarehousingProviderQuery) => Promise<number>;
|
|
33
19
|
createTokens: (tokens: TokenSurrogate[]) => Promise<void>;
|
|
34
20
|
findProvider: ({ warehousingProviderId }: {
|
|
35
21
|
warehousingProviderId: string;
|
|
@@ -44,9 +30,7 @@ export declare const configureWarehousingModule: ({ db }: ModuleInput<Record<str
|
|
|
44
30
|
} | {
|
|
45
31
|
walletAddresses: string[];
|
|
46
32
|
}, options?: mongodb.FindOptions) => Promise<TokenSurrogate[]>;
|
|
47
|
-
findProviders: (query
|
|
48
|
-
includeDeleted?: boolean;
|
|
49
|
-
}, options?: mongodb.FindOptions) => Promise<WarehousingProvider[]>;
|
|
33
|
+
findProviders: (query?: WarehousingProviderQuery, options?: mongodb.FindOptions) => Promise<WarehousingProvider[]>;
|
|
50
34
|
allProviders: () => Promise<mongodb.WithId<WarehousingProvider>[]>;
|
|
51
35
|
providerExists: ({ warehousingProviderId, }: {
|
|
52
36
|
warehousingProviderId: string;
|
|
@@ -66,4 +50,3 @@ export declare const configureWarehousingModule: ({ db }: ModuleInput<Record<str
|
|
|
66
50
|
}>;
|
|
67
51
|
export type WarehousingModule = Awaited<ReturnType<typeof configureWarehousingModule>>;
|
|
68
52
|
export {};
|
|
69
|
-
//# sourceMappingURL=configureWarehousingModule.d.ts.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { emit, registerEvents } from '@unchainedshop/events';
|
|
2
2
|
import { generateDbFilterById, generateDbObjectId, assertDocumentDBCompatMode, } from '@unchainedshop/mongodb';
|
|
3
|
-
import { WarehousingProvidersCollection, } from
|
|
4
|
-
import { TokenSurrogateCollection } from
|
|
3
|
+
import { WarehousingProvidersCollection, } from "../db/WarehousingProvidersCollection.js";
|
|
4
|
+
import { TokenSurrogateCollection } from "../db/TokenSurrogateCollection.js";
|
|
5
5
|
import pMemoize from 'p-memoize';
|
|
6
6
|
import ExpiryMap from 'expiry-map';
|
|
7
7
|
const WAREHOUSING_PROVIDER_EVENTS = [
|
|
@@ -12,15 +12,29 @@ const WAREHOUSING_PROVIDER_EVENTS = [
|
|
|
12
12
|
'TOKEN_INVALIDATED',
|
|
13
13
|
];
|
|
14
14
|
const allProvidersCache = new ExpiryMap(process.env.NODE_ENV === 'production' ? 60000 : 1);
|
|
15
|
-
export const buildFindSelector = ({ includeDeleted = false,
|
|
16
|
-
|
|
15
|
+
export const buildFindSelector = ({ includeDeleted = false, queryString, warehousingProviderIds, type, } = {}) => {
|
|
16
|
+
const selector = includeDeleted ? {} : { deleted: null };
|
|
17
|
+
if (warehousingProviderIds) {
|
|
18
|
+
selector._id = { $in: warehousingProviderIds };
|
|
19
|
+
}
|
|
20
|
+
if (type) {
|
|
21
|
+
selector.type = type;
|
|
22
|
+
}
|
|
23
|
+
if (queryString) {
|
|
24
|
+
const regex = new RegExp(queryString, 'i');
|
|
25
|
+
selector.$or = [{ _id: regex }, { adapterKey: regex }];
|
|
26
|
+
}
|
|
27
|
+
return selector;
|
|
17
28
|
};
|
|
18
|
-
export const buildTokenFindSelector = ({ queryString, ...rest }) => {
|
|
29
|
+
export const buildTokenFindSelector = ({ queryString, walletAddressExists, ...rest }) => {
|
|
19
30
|
const selector = { ...(rest || {}) };
|
|
20
31
|
if (queryString) {
|
|
21
32
|
assertDocumentDBCompatMode();
|
|
22
33
|
selector.$text = { $search: queryString };
|
|
23
34
|
}
|
|
35
|
+
if (walletAddressExists !== undefined) {
|
|
36
|
+
selector.walletAddress = walletAddressExists ? { $exists: true } : { $exists: false };
|
|
37
|
+
}
|
|
24
38
|
return selector;
|
|
25
39
|
};
|
|
26
40
|
export const configureWarehousingModule = async ({ db }) => {
|
|
@@ -28,8 +42,7 @@ export const configureWarehousingModule = async ({ db }) => {
|
|
|
28
42
|
const WarehousingProviders = await WarehousingProvidersCollection(db);
|
|
29
43
|
const TokenSurrogates = await TokenSurrogateCollection(db);
|
|
30
44
|
return {
|
|
31
|
-
|
|
32
|
-
count: async (query) => {
|
|
45
|
+
count: async (query = {}) => {
|
|
33
46
|
const providerCount = await WarehousingProviders.countDocuments(buildFindSelector(query));
|
|
34
47
|
return providerCount;
|
|
35
48
|
},
|
|
@@ -66,7 +79,7 @@ export const configureWarehousingModule = async ({ db }) => {
|
|
|
66
79
|
const userTokens = await TokenSurrogates.find(selector, options).toArray();
|
|
67
80
|
return userTokens;
|
|
68
81
|
},
|
|
69
|
-
findProviders: async (query, options = { sort: { created: 1 } }) => {
|
|
82
|
+
findProviders: async (query = {}, options = { sort: { created: 1 } }) => {
|
|
70
83
|
const providers = WarehousingProviders.find(buildFindSelector(query), options);
|
|
71
84
|
return providers.toArray();
|
|
72
85
|
},
|
|
@@ -133,7 +146,6 @@ export const configureWarehousingModule = async ({ db }) => {
|
|
|
133
146
|
const hashHex = hashArray.map((b) => b.toString(16).padStart(2, '0')).join('');
|
|
134
147
|
return hashHex;
|
|
135
148
|
},
|
|
136
|
-
// Mutations
|
|
137
149
|
create: async (doc) => {
|
|
138
150
|
const { insertedId: warehousingProviderId } = await WarehousingProviders.insertOne({
|
|
139
151
|
_id: generateDbObjectId(),
|
|
@@ -174,4 +186,3 @@ export const configureWarehousingModule = async ({ db }) => {
|
|
|
174
186
|
},
|
|
175
187
|
};
|
|
176
188
|
};
|
|
177
|
-
//# sourceMappingURL=configureWarehousingModule.js.map
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
export * from './module/configureWarehousingModule.
|
|
2
|
-
export * from './db/TokenSurrogateCollection.
|
|
3
|
-
export * from './db/WarehousingProvidersCollection.
|
|
4
|
-
//# sourceMappingURL=warehousing-index.d.ts.map
|
|
1
|
+
export * from './module/configureWarehousingModule.ts';
|
|
2
|
+
export * from './db/TokenSurrogateCollection.ts';
|
|
3
|
+
export * from './db/WarehousingProvidersCollection.ts';
|
package/lib/warehousing-index.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
3
|
-
export * from
|
|
4
|
-
//# sourceMappingURL=warehousing-index.js.map
|
|
1
|
+
export * from "./module/configureWarehousingModule.js";
|
|
2
|
+
export * from "./db/TokenSurrogateCollection.js";
|
|
3
|
+
export * from "./db/WarehousingProvidersCollection.js";
|
package/package.json
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unchainedshop/core-warehousing",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.5.0",
|
|
4
4
|
"main": "lib/warehousing-index.js",
|
|
5
5
|
"types": "lib/warehousing-index.d.ts",
|
|
6
6
|
"type": "module",
|
|
7
|
+
"sideEffects": false,
|
|
7
8
|
"scripts": {
|
|
8
9
|
"clean": "tsc -b --clean",
|
|
9
10
|
"build": "tsc -b",
|
|
10
11
|
"prepublishOnly": "npm run clean && npm run build",
|
|
11
12
|
"watch": "tsc -w",
|
|
12
|
-
"test": "
|
|
13
|
-
"test:watch": "
|
|
13
|
+
"test": "node --test",
|
|
14
|
+
"test:watch": "node --test --watch"
|
|
14
15
|
},
|
|
15
16
|
"repository": {
|
|
16
17
|
"type": "git",
|
|
@@ -22,8 +23,10 @@
|
|
|
22
23
|
"core"
|
|
23
24
|
],
|
|
24
25
|
"authors": [
|
|
25
|
-
"
|
|
26
|
-
"
|
|
26
|
+
"Pascal Kaufmann",
|
|
27
|
+
"Mikael Araya",
|
|
28
|
+
"Vedran Rudelj",
|
|
29
|
+
"Joël Meiller"
|
|
27
30
|
],
|
|
28
31
|
"license": "EUPL-1.2",
|
|
29
32
|
"bugs": {
|
|
@@ -31,15 +34,14 @@
|
|
|
31
34
|
},
|
|
32
35
|
"homepage": "https://github.com/unchainedshop/unchained#readme",
|
|
33
36
|
"dependencies": {
|
|
34
|
-
"@unchainedshop/events": "^4.
|
|
35
|
-
"@unchainedshop/logger": "^4.
|
|
36
|
-
"@unchainedshop/utils": "^4.
|
|
37
|
+
"@unchainedshop/events": "^4.5.0",
|
|
38
|
+
"@unchainedshop/logger": "^4.5.0",
|
|
39
|
+
"@unchainedshop/utils": "^4.5.0",
|
|
37
40
|
"expiry-map": "^2.0.0",
|
|
38
41
|
"p-memoize": "^8.0.0"
|
|
39
42
|
},
|
|
40
43
|
"devDependencies": {
|
|
41
|
-
"@types/node": "^
|
|
42
|
-
"tsx": "^4.20.3",
|
|
44
|
+
"@types/node": "^25.0.0",
|
|
43
45
|
"typescript": "^5.8.3"
|
|
44
46
|
}
|
|
45
47
|
}
|
|
@@ -1 +0,0 @@
|
|
|
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,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAC9B,UAAU,CAAC,EAAE,IAAI,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,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,gDA0D5D,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
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,IAAI,CAAC,6BAA6B,EAAE,EAAE,CAAC;QACrC,MAAM,cAAc,CAClB,eAAe,EACf;YACE;gBACE,KAAK,EAAE;oBACL,iBAAiB,EAAE,MAAM;oBACzB,MAAM,EAAE,MAAM;oBACd,SAAS,EAAE,MAAM;oBACjB,GAAG,EAAE,MAAM;oBACX,aAAa,EAAE,MAAM;oBACrB,eAAe,EAAE,MAAM;iBACjB;gBACR,OAAO,EAAE;oBACP,OAAO,EAAE;wBACP,GAAG,EAAE,CAAC;wBACN,iBAAiB,EAAE,CAAC;wBACpB,MAAM,EAAE,CAAC;wBACT,SAAS,EAAE,CAAC;wBACZ,eAAe,EAAE,CAAC;wBAClB,aAAa,EAAE,CAAC;wBAChB,MAAM,EAAE,CAAC;qBACV;oBACD,IAAI,EAAE,uBAAuB;iBAC9B;aACF;SACF,EACD,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB,CAAC;IACJ,CAAC;IAED,MAAM,cAAc,CAAiB,eAAe,EAAE;QACpD;YACE,KAAK,EAAE;gBACL,iBAAiB,EAAE,CAAC;aACrB;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;KACF,CAAC,CAAC;IAEH,OAAO,eAAe,CAAC;AACzB,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
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,EAAE,MAAM,CAAC;IACZ,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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"WarehousingProvidersCollection.js","sourceRoot":"","sources":["../../src/db/WarehousingProvidersCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,cAAc,EAAmB,MAAM,wBAAwB,CAAC;AAElF,MAAM,CAAN,IAAY,uBAGX;AAHD,WAAY,uBAAuB;IACjC,gDAAqB,CAAA;IACrB,8CAAmB,CAAA;AACrB,CAAC,EAHW,uBAAuB,KAAvB,uBAAuB,QAGlC;AAWD,MAAM,CAAC,MAAM,8BAA8B,GAAG,KAAK,EAAE,EAAc,EAAE,EAAE;IACrE,MAAM,oBAAoB,GAAG,EAAE,CAAC,UAAU,CAAsB,uBAAuB,CAAC,CAAC;IAEzF,MAAM,cAAc,CAAsB,oBAAoB,EAAE;QAC9D;YACE,KAAK,EAAE;gBACL,IAAI,EAAE,CAAC;aACR;SACF;QACD;YACE,KAAK,EAAE;gBACL,OAAO,EAAE,CAAC;aACX;SACF;QACD;YACE,KAAK,EAAE;gBACL,OAAO,EAAE,CAAC;aACX;SACF;KACF,CAAC,CAAC;IAEH,OAAO,oBAAoB,CAAC;AAC9B,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
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,EAEpB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,cAAc,EAA4B,MAAM,mCAAmC,CAAC;AAI7F,UAAU,UAAU;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAYD,eAAO,MAAM,iBAAiB,GAAI,8BAG/B,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,GAAG;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAO;;;;;;;;;;;;;iBAkOumvS,CAAC;sBAAgC,CAAC;2BAAsC,CAAC;;;;CAhOzvvS,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,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAG,OAAO,CAAC,MAAM,CAAC;2BAK7C,cAAc,EAAE,KAAG,OAAO,CAAC,IAAI,CAAC;8CAKhC;QAAE,qBAAqB,EAAE,MAAM,CAAA;KAAE,YAClD,OAAO,CAAC,WAAW;6BAKA;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,YAAY,OAAO,CAAC,WAAW;2BAIpD,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,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,GAAG;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE,YAChE,OAAO,CAAC,WAAW,KAC3B,OAAO,CAAC,mBAAmB,EAAE,CAAC;;iDAgB9B;QACD,qBAAqB,EAAE,MAAM,CAAC;KAC/B,KAAG,OAAO,CAAC,OAAO,CAAC;mCAUd;QACE,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;KAChB,GACD;QACE,OAAO,EAAE,MAAM,CAAC;QAChB,aAAa,EAAE,MAAM,CAAC;KACvB;+BA4B0B,MAAM;sCAiBC,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;kBAmBhE,IAAI,CAAC,mBAAmB,EAAE,KAAK,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,KAAK,CAAC;oCAgBzD,MAAM,OAAO,OAAO,CAAC,mBAAmB,CAAC;yBAiBpD,MAAM;EAgBpC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,0BAA0B,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"configureWarehousingModule.js","sourceRoot":"","sources":["../../src/module/configureWarehousingModule.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"warehousing-index.d.ts","sourceRoot":"","sources":["../src/warehousing-index.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAC;AACvD,cAAc,kCAAkC,CAAC;AACjD,cAAc,wCAAwC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"warehousing-index.js","sourceRoot":"","sources":["../src/warehousing-index.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAC;AACvD,cAAc,kCAAkC,CAAC;AACjD,cAAc,wCAAwC,CAAC"}
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import { mongodb, buildDbIndexes, isDocumentDBCompatModeEnabled } from '@unchainedshop/mongodb';
|
|
2
|
-
|
|
3
|
-
export interface TokenSurrogate {
|
|
4
|
-
_id: string;
|
|
5
|
-
userId?: string;
|
|
6
|
-
walletAddress?: string;
|
|
7
|
-
invalidatedDate?: Date | null;
|
|
8
|
-
expiryDate?: Date;
|
|
9
|
-
quantity: number;
|
|
10
|
-
contractAddress?: string;
|
|
11
|
-
chainId?: string;
|
|
12
|
-
tokenSerialNumber: string;
|
|
13
|
-
productId: string;
|
|
14
|
-
orderPositionId: string;
|
|
15
|
-
meta: any;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export enum TokenStatus {
|
|
19
|
-
CENTRALIZED = 'CENTRALIZED',
|
|
20
|
-
EXPORTING = 'EXPORTING',
|
|
21
|
-
DECENTRALIZED = 'DECENTRALIZED',
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export const TokenSurrogateCollection = async (db: mongodb.Db) => {
|
|
25
|
-
const TokenSurrogates = db.collection<TokenSurrogate>('token_surrogates');
|
|
26
|
-
|
|
27
|
-
if (!isDocumentDBCompatModeEnabled()) {
|
|
28
|
-
await buildDbIndexes<TokenSurrogate>(
|
|
29
|
-
TokenSurrogates,
|
|
30
|
-
[
|
|
31
|
-
{
|
|
32
|
-
index: {
|
|
33
|
-
tokenSerialNumber: 'text',
|
|
34
|
-
userId: 'text',
|
|
35
|
-
productId: 'text',
|
|
36
|
-
_id: 'text',
|
|
37
|
-
walletAddress: 'text',
|
|
38
|
-
contractAddress: 'text',
|
|
39
|
-
} as any,
|
|
40
|
-
options: {
|
|
41
|
-
weights: {
|
|
42
|
-
_id: 9,
|
|
43
|
-
tokenSerialNumber: 8,
|
|
44
|
-
userId: 3,
|
|
45
|
-
productId: 6,
|
|
46
|
-
contractAddress: 5,
|
|
47
|
-
walletAddress: 4,
|
|
48
|
-
status: 1,
|
|
49
|
-
},
|
|
50
|
-
name: 'token_fulltext_search',
|
|
51
|
-
},
|
|
52
|
-
},
|
|
53
|
-
],
|
|
54
|
-
{ rebuild: true },
|
|
55
|
-
);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
await buildDbIndexes<TokenSurrogate>(TokenSurrogates, [
|
|
59
|
-
{
|
|
60
|
-
index: {
|
|
61
|
-
tokenSerialNumber: 1,
|
|
62
|
-
},
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
index: {
|
|
66
|
-
userId: 1,
|
|
67
|
-
},
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
index: {
|
|
71
|
-
productId: 1,
|
|
72
|
-
},
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
index: {
|
|
76
|
-
orderPositionId: 1,
|
|
77
|
-
},
|
|
78
|
-
},
|
|
79
|
-
]);
|
|
80
|
-
|
|
81
|
-
return TokenSurrogates;
|
|
82
|
-
};
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { mongodb, buildDbIndexes, TimestampFields } from '@unchainedshop/mongodb';
|
|
2
|
-
|
|
3
|
-
export enum WarehousingProviderType {
|
|
4
|
-
PHYSICAL = 'PHYSICAL',
|
|
5
|
-
VIRTUAL = 'VIRTUAL',
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export type WarehousingConfiguration = { key: string; value: string }[];
|
|
9
|
-
|
|
10
|
-
export type WarehousingProvider = {
|
|
11
|
-
_id: string;
|
|
12
|
-
type: WarehousingProviderType;
|
|
13
|
-
adapterKey: string;
|
|
14
|
-
configuration: WarehousingConfiguration;
|
|
15
|
-
} & TimestampFields;
|
|
16
|
-
|
|
17
|
-
export const WarehousingProvidersCollection = async (db: mongodb.Db) => {
|
|
18
|
-
const WarehousingProviders = db.collection<WarehousingProvider>('warehousing-providers');
|
|
19
|
-
|
|
20
|
-
await buildDbIndexes<WarehousingProvider>(WarehousingProviders, [
|
|
21
|
-
{
|
|
22
|
-
index: {
|
|
23
|
-
type: 1,
|
|
24
|
-
},
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
index: {
|
|
28
|
-
created: 1,
|
|
29
|
-
},
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
index: {
|
|
33
|
-
deleted: 1,
|
|
34
|
-
},
|
|
35
|
-
},
|
|
36
|
-
]);
|
|
37
|
-
|
|
38
|
-
return WarehousingProviders;
|
|
39
|
-
};
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { describe, it } from 'node:test';
|
|
2
|
-
import assert from 'node:assert';
|
|
3
|
-
import { WarehousingProviderType } from '../db/WarehousingProvidersCollection.js';
|
|
4
|
-
import { buildFindSelector } from './configureWarehousingModule.js';
|
|
5
|
-
|
|
6
|
-
describe('Warehousing', () => {
|
|
7
|
-
describe('buildFindSelector', () => {
|
|
8
|
-
it('Return correct filter object when passed no argument', () => {
|
|
9
|
-
assert.deepStrictEqual(buildFindSelector({}), { deleted: null });
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
it('Return correct filter object when passed no argument', () => {
|
|
13
|
-
assert.deepStrictEqual(buildFindSelector({ type: WarehousingProviderType.PHYSICAL }), {
|
|
14
|
-
type: 'PHYSICAL',
|
|
15
|
-
deleted: null,
|
|
16
|
-
});
|
|
17
|
-
});
|
|
18
|
-
});
|
|
19
|
-
});
|
|
@@ -1,260 +0,0 @@
|
|
|
1
|
-
import { emit, registerEvents } from '@unchainedshop/events';
|
|
2
|
-
import {
|
|
3
|
-
generateDbFilterById,
|
|
4
|
-
generateDbObjectId,
|
|
5
|
-
mongodb,
|
|
6
|
-
ModuleInput,
|
|
7
|
-
assertDocumentDBCompatMode,
|
|
8
|
-
} from '@unchainedshop/mongodb';
|
|
9
|
-
import {
|
|
10
|
-
WarehousingProvider,
|
|
11
|
-
WarehousingProvidersCollection,
|
|
12
|
-
} from '../db/WarehousingProvidersCollection.js';
|
|
13
|
-
import { TokenSurrogate, TokenSurrogateCollection } from '../db/TokenSurrogateCollection.js';
|
|
14
|
-
import pMemoize from 'p-memoize';
|
|
15
|
-
import ExpiryMap from 'expiry-map';
|
|
16
|
-
|
|
17
|
-
interface TokenQuery {
|
|
18
|
-
queryString?: string;
|
|
19
|
-
userId?: string;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
const WAREHOUSING_PROVIDER_EVENTS: string[] = [
|
|
23
|
-
'WAREHOUSING_PROVIDER_CREATE',
|
|
24
|
-
'WAREHOUSING_PROVIDER_UPDATE',
|
|
25
|
-
'WAREHOUSING_PROVIDER_REMOVE',
|
|
26
|
-
'TOKEN_OWNERSHIP_CHANGED',
|
|
27
|
-
'TOKEN_INVALIDATED',
|
|
28
|
-
];
|
|
29
|
-
|
|
30
|
-
const allProvidersCache = new ExpiryMap(process.env.NODE_ENV === 'production' ? 60000 : 1);
|
|
31
|
-
|
|
32
|
-
export const buildFindSelector = ({
|
|
33
|
-
includeDeleted = false,
|
|
34
|
-
...rest
|
|
35
|
-
}: mongodb.Filter<WarehousingProvider> & { includeDeleted?: boolean } = {}) => {
|
|
36
|
-
return { ...(includeDeleted ? {} : { deleted: null }), ...rest };
|
|
37
|
-
};
|
|
38
|
-
export const buildTokenFindSelector = ({ queryString, ...rest }: TokenQuery) => {
|
|
39
|
-
const selector: mongodb.Filter<TokenSurrogate> = { ...(rest || {}) };
|
|
40
|
-
if (queryString) {
|
|
41
|
-
assertDocumentDBCompatMode();
|
|
42
|
-
(selector as any).$text = { $search: queryString };
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
return selector;
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
export const configureWarehousingModule = async ({ db }: ModuleInput<Record<string, never>>) => {
|
|
49
|
-
registerEvents(WAREHOUSING_PROVIDER_EVENTS);
|
|
50
|
-
|
|
51
|
-
const WarehousingProviders = await WarehousingProvidersCollection(db);
|
|
52
|
-
const TokenSurrogates = await TokenSurrogateCollection(db);
|
|
53
|
-
|
|
54
|
-
return {
|
|
55
|
-
// Queries
|
|
56
|
-
count: async (query: mongodb.Filter<WarehousingProvider>): Promise<number> => {
|
|
57
|
-
const providerCount = await WarehousingProviders.countDocuments(buildFindSelector(query));
|
|
58
|
-
return providerCount;
|
|
59
|
-
},
|
|
60
|
-
|
|
61
|
-
createTokens: async (tokens: TokenSurrogate[]): Promise<void> => {
|
|
62
|
-
await TokenSurrogates.insertMany(tokens);
|
|
63
|
-
},
|
|
64
|
-
|
|
65
|
-
findProvider: async (
|
|
66
|
-
{ warehousingProviderId }: { warehousingProviderId: string },
|
|
67
|
-
options?: mongodb.FindOptions,
|
|
68
|
-
) => {
|
|
69
|
-
return WarehousingProviders.findOne(generateDbFilterById(warehousingProviderId), options);
|
|
70
|
-
},
|
|
71
|
-
|
|
72
|
-
findToken: async ({ tokenId }: { tokenId: string }, options?: mongodb.FindOptions) => {
|
|
73
|
-
return TokenSurrogates.findOne({ _id: tokenId }, options);
|
|
74
|
-
},
|
|
75
|
-
|
|
76
|
-
findTokens: async (selector: any, options?: mongodb.FindOptions): Promise<TokenSurrogate[]> => {
|
|
77
|
-
return TokenSurrogates.find(buildTokenFindSelector(selector), options).toArray();
|
|
78
|
-
},
|
|
79
|
-
|
|
80
|
-
tokensCount: async (selector: any = {}): Promise<number> => {
|
|
81
|
-
const tokenCount = await TokenSurrogates.countDocuments(buildTokenFindSelector(selector));
|
|
82
|
-
return tokenCount;
|
|
83
|
-
},
|
|
84
|
-
|
|
85
|
-
findTokensForUser: async (
|
|
86
|
-
params: { userId: string } | { walletAddresses: string[] },
|
|
87
|
-
options?: mongodb.FindOptions,
|
|
88
|
-
): Promise<TokenSurrogate[]> => {
|
|
89
|
-
const { userId, walletAddresses } = params as any;
|
|
90
|
-
if (!userId && !walletAddresses)
|
|
91
|
-
throw new Error('userId or walletAddresses must be provided for findTokensForUser');
|
|
92
|
-
const selector = {
|
|
93
|
-
$or: [
|
|
94
|
-
walletAddresses && {
|
|
95
|
-
walletAddress: { $in: walletAddresses || [] },
|
|
96
|
-
},
|
|
97
|
-
userId && {
|
|
98
|
-
userId,
|
|
99
|
-
},
|
|
100
|
-
].filter(Boolean),
|
|
101
|
-
};
|
|
102
|
-
|
|
103
|
-
const userTokens = await TokenSurrogates.find(selector, options).toArray();
|
|
104
|
-
return userTokens;
|
|
105
|
-
},
|
|
106
|
-
|
|
107
|
-
findProviders: async (
|
|
108
|
-
query: mongodb.Filter<WarehousingProvider> & { includeDeleted?: boolean },
|
|
109
|
-
options: mongodb.FindOptions = { sort: { created: 1 } },
|
|
110
|
-
): Promise<WarehousingProvider[]> => {
|
|
111
|
-
const providers = WarehousingProviders.find(buildFindSelector(query), options);
|
|
112
|
-
return providers.toArray();
|
|
113
|
-
},
|
|
114
|
-
|
|
115
|
-
allProviders: pMemoize(
|
|
116
|
-
async function () {
|
|
117
|
-
return WarehousingProviders.find({ deleted: null }, { sort: { created: 1 } }).toArray();
|
|
118
|
-
},
|
|
119
|
-
{
|
|
120
|
-
cache: allProvidersCache,
|
|
121
|
-
},
|
|
122
|
-
),
|
|
123
|
-
|
|
124
|
-
providerExists: async ({
|
|
125
|
-
warehousingProviderId,
|
|
126
|
-
}: {
|
|
127
|
-
warehousingProviderId: string;
|
|
128
|
-
}): Promise<boolean> => {
|
|
129
|
-
const providerCount = await WarehousingProviders.countDocuments(
|
|
130
|
-
generateDbFilterById(warehousingProviderId, { deleted: null }),
|
|
131
|
-
{ limit: 1 },
|
|
132
|
-
);
|
|
133
|
-
return !!providerCount;
|
|
134
|
-
},
|
|
135
|
-
|
|
136
|
-
updateTokenOwnership: async (
|
|
137
|
-
params:
|
|
138
|
-
| {
|
|
139
|
-
tokenId: string;
|
|
140
|
-
userId: string;
|
|
141
|
-
}
|
|
142
|
-
| {
|
|
143
|
-
tokenId: string;
|
|
144
|
-
walletAddress: string;
|
|
145
|
-
},
|
|
146
|
-
) => {
|
|
147
|
-
const modifier: mongodb.UpdateFilter<TokenSurrogate> =
|
|
148
|
-
'userId' in params
|
|
149
|
-
? {
|
|
150
|
-
$set: {
|
|
151
|
-
userId: params.userId,
|
|
152
|
-
},
|
|
153
|
-
$unset: {
|
|
154
|
-
walletAddress: 1,
|
|
155
|
-
},
|
|
156
|
-
}
|
|
157
|
-
: {
|
|
158
|
-
$set: {
|
|
159
|
-
walletAddress: params.walletAddress,
|
|
160
|
-
},
|
|
161
|
-
$unset: {
|
|
162
|
-
userId: 1,
|
|
163
|
-
},
|
|
164
|
-
};
|
|
165
|
-
const token = await TokenSurrogates.findOneAndUpdate({ _id: params.tokenId }, modifier, {
|
|
166
|
-
returnDocument: 'after',
|
|
167
|
-
});
|
|
168
|
-
if (!token) return null;
|
|
169
|
-
await emit('TOKEN_OWNERSHIP_CHANGED', { token });
|
|
170
|
-
return token;
|
|
171
|
-
},
|
|
172
|
-
|
|
173
|
-
invalidateToken: async (tokenId: string) => {
|
|
174
|
-
const token = await TokenSurrogates.findOneAndUpdate(
|
|
175
|
-
{ _id: tokenId, invalidatedDate: null },
|
|
176
|
-
{
|
|
177
|
-
$set: {
|
|
178
|
-
invalidatedDate: new Date(),
|
|
179
|
-
},
|
|
180
|
-
},
|
|
181
|
-
{
|
|
182
|
-
returnDocument: 'after',
|
|
183
|
-
},
|
|
184
|
-
);
|
|
185
|
-
if (!token) return null;
|
|
186
|
-
await emit('TOKEN_INVALIDATED', { token });
|
|
187
|
-
return token;
|
|
188
|
-
},
|
|
189
|
-
|
|
190
|
-
buildAccessKeyForToken: async (tokenId: string): Promise<string | null> => {
|
|
191
|
-
const token = await TokenSurrogates.findOne(generateDbFilterById(tokenId));
|
|
192
|
-
if (!token) return null;
|
|
193
|
-
|
|
194
|
-
const payload = [
|
|
195
|
-
token._id,
|
|
196
|
-
token.walletAddress || token.userId,
|
|
197
|
-
process.env.UNCHAINED_SECRET,
|
|
198
|
-
].join('');
|
|
199
|
-
const msgUint8 = new TextEncoder().encode(payload);
|
|
200
|
-
const hashBuffer = await crypto.subtle.digest('SHA-256', msgUint8);
|
|
201
|
-
const hashArray = Array.from(new Uint8Array(hashBuffer));
|
|
202
|
-
const hashHex = hashArray.map((b) => b.toString(16).padStart(2, '0')).join('');
|
|
203
|
-
|
|
204
|
-
return hashHex;
|
|
205
|
-
},
|
|
206
|
-
|
|
207
|
-
// Mutations
|
|
208
|
-
create: async (
|
|
209
|
-
doc: Omit<WarehousingProvider, '_id' | 'created'> & Pick<Partial<WarehousingProvider>, '_id'>,
|
|
210
|
-
) => {
|
|
211
|
-
const { insertedId: warehousingProviderId } = await WarehousingProviders.insertOne({
|
|
212
|
-
_id: generateDbObjectId(),
|
|
213
|
-
created: new Date(),
|
|
214
|
-
...doc,
|
|
215
|
-
});
|
|
216
|
-
|
|
217
|
-
const warehousingProvider = (await WarehousingProviders.findOne({
|
|
218
|
-
_id: warehousingProviderId,
|
|
219
|
-
})) as WarehousingProvider;
|
|
220
|
-
allProvidersCache.clear();
|
|
221
|
-
await emit('WAREHOUSING_PROVIDER_CREATE', { warehousingProvider });
|
|
222
|
-
return warehousingProvider;
|
|
223
|
-
},
|
|
224
|
-
|
|
225
|
-
update: async (warehousingProviderId: string, doc: Partial<WarehousingProvider>) => {
|
|
226
|
-
const warehousingProvider = await WarehousingProviders.findOneAndUpdate(
|
|
227
|
-
{ _id: warehousingProviderId },
|
|
228
|
-
{
|
|
229
|
-
$set: {
|
|
230
|
-
updated: new Date(),
|
|
231
|
-
...doc,
|
|
232
|
-
},
|
|
233
|
-
},
|
|
234
|
-
{ returnDocument: 'after' },
|
|
235
|
-
);
|
|
236
|
-
if (!warehousingProvider) return null;
|
|
237
|
-
allProvidersCache.clear();
|
|
238
|
-
await emit('WAREHOUSING_PROVIDER_UPDATE', { warehousingProvider });
|
|
239
|
-
return warehousingProvider;
|
|
240
|
-
},
|
|
241
|
-
|
|
242
|
-
delete: async (providerId: string) => {
|
|
243
|
-
const warehousingProvider = await WarehousingProviders.findOneAndUpdate(
|
|
244
|
-
generateDbFilterById(providerId),
|
|
245
|
-
{
|
|
246
|
-
$set: {
|
|
247
|
-
deleted: new Date(),
|
|
248
|
-
},
|
|
249
|
-
},
|
|
250
|
-
{ returnDocument: 'after' },
|
|
251
|
-
);
|
|
252
|
-
if (!warehousingProvider) return null;
|
|
253
|
-
allProvidersCache.clear();
|
|
254
|
-
await emit('WAREHOUSING_PROVIDER_REMOVE', { warehousingProvider });
|
|
255
|
-
return warehousingProvider;
|
|
256
|
-
},
|
|
257
|
-
};
|
|
258
|
-
};
|
|
259
|
-
|
|
260
|
-
export type WarehousingModule = Awaited<ReturnType<typeof configureWarehousingModule>>;
|
package/src/warehousing-index.ts
DELETED