@labdigital/commercetools-mock 0.5.11 → 0.5.14
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 +30 -12
- package/dist/commercetools-mock.cjs.development.js +3190 -1574
- package/dist/commercetools-mock.cjs.development.js.map +1 -1
- package/dist/commercetools-mock.cjs.production.min.js +1 -1
- package/dist/commercetools-mock.cjs.production.min.js.map +1 -1
- package/dist/commercetools-mock.esm.js +3190 -1574
- package/dist/commercetools-mock.esm.js.map +1 -1
- package/dist/ctMock.d.ts +1 -0
- package/dist/lib/filterParser.d.ts +1 -0
- package/dist/repositories/abstract.d.ts +11 -7
- package/dist/repositories/cart-discount.d.ts +9 -0
- package/dist/repositories/cart.d.ts +16 -3
- package/dist/repositories/category.d.ts +18 -0
- package/dist/repositories/channel.d.ts +6 -0
- package/dist/repositories/custom-object.d.ts +2 -2
- package/dist/repositories/customer-group.d.ts +11 -0
- package/dist/repositories/customer.d.ts +2 -2
- package/dist/repositories/discount-code.d.ts +8 -0
- package/dist/repositories/errors.d.ts +2 -2
- package/dist/repositories/extension.d.ts +8 -0
- package/dist/repositories/inventory-entry.d.ts +2 -2
- package/dist/repositories/order.d.ts +2 -2
- package/dist/repositories/payment.d.ts +4 -3
- package/dist/repositories/product-projection.d.ts +10 -0
- package/dist/repositories/product-type.d.ts +5 -4
- package/dist/repositories/product.d.ts +2 -2
- package/dist/repositories/project.d.ts +8 -0
- package/dist/repositories/shipping-method.d.ts +7 -5
- package/dist/repositories/shopping-list.d.ts +6 -0
- package/dist/repositories/state.d.ts +5 -4
- package/dist/repositories/store.d.ts +6 -3
- package/dist/repositories/subscription.d.ts +6 -0
- package/dist/repositories/tax-category.d.ts +6 -5
- package/dist/repositories/type.d.ts +5 -3
- package/dist/repositories/zone.d.ts +8 -0
- package/dist/services/abstract.d.ts +4 -3
- package/dist/services/cart-discount.d.ts +9 -0
- package/dist/services/category.d.ts +9 -0
- package/dist/services/channel.d.ts +9 -0
- package/dist/services/custom-object.d.ts +2 -0
- package/dist/services/customer-group.d.ts +9 -0
- package/dist/services/discount-code.d.ts +9 -0
- package/dist/services/extension.d.ts +9 -0
- package/dist/services/my-cart.d.ts +11 -0
- package/dist/services/product-projection.d.ts +11 -0
- package/dist/services/project.d.ts +11 -0
- package/dist/services/shopping-list.d.ts +9 -0
- package/dist/services/subscription.d.ts +9 -0
- package/dist/services/zone.d.ts +9 -0
- package/dist/storage.d.ts +27 -16
- package/dist/types.d.ts +9 -4
- package/package.json +20 -20
- package/src/ctMock.ts +49 -15
- package/src/lib/filterParser.test.ts +15 -0
- package/src/lib/filterParser.ts +17 -0
- package/src/oauth/server.ts +3 -1
- package/src/repositories/abstract.ts +49 -34
- package/src/repositories/cart-discount.ts +140 -0
- package/src/repositories/cart.ts +247 -3
- package/src/repositories/category.ts +140 -0
- package/src/repositories/channel.ts +23 -0
- package/src/repositories/custom-object.ts +5 -2
- package/src/repositories/customer-group.ts +42 -0
- package/src/repositories/customer.ts +2 -2
- package/src/repositories/discount-code.ts +143 -0
- package/src/repositories/errors.ts +7 -2
- package/src/repositories/extension.ts +65 -0
- package/src/repositories/inventory-entry.ts +2 -2
- package/src/repositories/order.ts +2 -2
- package/src/repositories/payment.ts +10 -6
- package/src/repositories/product-projection.ts +74 -0
- package/src/repositories/product-type.ts +57 -4
- package/src/repositories/product.ts +4 -2
- package/src/repositories/project.ts +150 -0
- package/src/repositories/shipping-method.ts +149 -13
- package/src/repositories/shopping-list.ts +50 -0
- package/src/repositories/state.ts +48 -4
- package/src/repositories/store.ts +69 -4
- package/src/repositories/subscription.ts +50 -0
- package/src/repositories/tax-category.ts +80 -6
- package/src/repositories/type.ts +133 -3
- package/src/repositories/zone.ts +77 -0
- package/src/server.ts +6 -1
- package/src/services/abstract.ts +26 -18
- package/src/services/cart-discount.ts +17 -0
- package/src/services/cart.test.ts +314 -3
- package/src/services/category.test.ts +37 -0
- package/src/services/category.ts +17 -0
- package/src/services/channel.ts +17 -0
- package/src/services/custom-object.test.ts +53 -3
- package/src/services/custom-object.ts +30 -0
- package/src/services/customer-group.ts +17 -0
- package/src/services/discount-code.ts +17 -0
- package/src/services/extension.ts +17 -0
- package/src/services/inventory-entry.test.ts +3 -3
- package/src/services/my-cart.test.ts +93 -0
- package/src/services/my-cart.ts +44 -0
- package/src/services/my-payment.test.ts +2 -2
- package/src/services/my-payment.ts +1 -1
- package/src/services/order.test.ts +4 -4
- package/src/services/payment.test.ts +2 -2
- package/src/services/product-projection.test.ts +105 -0
- package/src/services/product-projection.ts +29 -0
- package/src/services/product-type.test.ts +2 -2
- package/src/services/product.test.ts +6 -2
- package/src/services/project.ts +42 -0
- package/src/services/shipping-method.test.ts +3 -3
- package/src/services/shopping-list.ts +17 -0
- package/src/services/state.test.ts +2 -2
- package/src/services/store.test.ts +60 -0
- package/src/services/subscription.ts +17 -0
- package/src/services/tax-category.test.ts +3 -3
- package/src/services/zone.ts +17 -0
- package/src/storage.ts +127 -31
- package/src/types.ts +9 -3
package/src/storage.ts
CHANGED
|
@@ -2,6 +2,7 @@ import assert from 'assert'
|
|
|
2
2
|
import {
|
|
3
3
|
BaseResource,
|
|
4
4
|
Cart,
|
|
5
|
+
Category,
|
|
5
6
|
Customer,
|
|
6
7
|
CustomObject,
|
|
7
8
|
InventoryEntry,
|
|
@@ -9,20 +10,29 @@ import {
|
|
|
9
10
|
PagedQueryResponse,
|
|
10
11
|
QueryParam,
|
|
11
12
|
Reference,
|
|
12
|
-
ReferenceTypeId,
|
|
13
13
|
ResourceIdentifier,
|
|
14
14
|
Product,
|
|
15
15
|
Store,
|
|
16
16
|
Type,
|
|
17
17
|
Payment,
|
|
18
|
+
Project,
|
|
18
19
|
State,
|
|
19
20
|
TaxCategory,
|
|
20
21
|
ShippingMethod,
|
|
21
22
|
ProductType,
|
|
22
23
|
InvalidInputError,
|
|
24
|
+
ProductProjection,
|
|
25
|
+
ShoppingList,
|
|
26
|
+
Extension,
|
|
27
|
+
CartDiscount,
|
|
28
|
+
CustomerGroup,
|
|
29
|
+
DiscountCode,
|
|
30
|
+
Zone,
|
|
31
|
+
Channel,
|
|
32
|
+
Subscription,
|
|
23
33
|
} from '@commercetools/platform-sdk'
|
|
24
34
|
import { parseExpandClause } from './lib/expandParser'
|
|
25
|
-
import { ResourceMap, Writable } from './types'
|
|
35
|
+
import { RepositoryTypes, ResourceMap, Writable } from './types'
|
|
26
36
|
import { parseQueryExpression } from './lib/predicateParser'
|
|
27
37
|
import { CommercetoolsError } from './exceptions'
|
|
28
38
|
|
|
@@ -43,33 +53,44 @@ type QueryParams = {
|
|
|
43
53
|
export abstract class AbstractStorage {
|
|
44
54
|
abstract clear(): void
|
|
45
55
|
|
|
46
|
-
abstract assertStorage(typeId:
|
|
56
|
+
abstract assertStorage(typeId: RepositoryTypes): void
|
|
47
57
|
|
|
48
|
-
abstract all(projectKey: string, typeId:
|
|
58
|
+
abstract all(projectKey: string, typeId: RepositoryTypes): Array<BaseResource>
|
|
49
59
|
|
|
50
|
-
abstract add<
|
|
60
|
+
abstract add<RepositoryTypes extends keyof ResourceMap>(
|
|
51
61
|
projectKey: string,
|
|
52
|
-
typeId:
|
|
53
|
-
obj: ResourceMap[
|
|
62
|
+
typeId: RepositoryTypes,
|
|
63
|
+
obj: ResourceMap[RepositoryTypes]
|
|
54
64
|
): void
|
|
55
65
|
|
|
56
|
-
abstract get<
|
|
66
|
+
abstract get<RepositoryTypes extends keyof ResourceMap>(
|
|
57
67
|
projectKey: string,
|
|
58
|
-
typeId:
|
|
68
|
+
typeId: RepositoryTypes,
|
|
59
69
|
id: string,
|
|
60
70
|
params: GetParams
|
|
61
|
-
): ResourceMap[
|
|
71
|
+
): ResourceMap[RepositoryTypes] | null
|
|
72
|
+
|
|
73
|
+
abstract getByKey<RepositoryTypes extends keyof ResourceMap>(
|
|
74
|
+
projectKey: string,
|
|
75
|
+
typeId: RepositoryTypes,
|
|
76
|
+
key: string,
|
|
77
|
+
params: GetParams
|
|
78
|
+
): ResourceMap[RepositoryTypes] | null
|
|
79
|
+
|
|
80
|
+
abstract addProject(projectKey: string): Project
|
|
81
|
+
abstract getProject(projectKey: string): Project
|
|
82
|
+
abstract saveProject(project: Project): Project
|
|
62
83
|
|
|
63
84
|
abstract delete(
|
|
64
85
|
projectKey: string,
|
|
65
|
-
typeId:
|
|
86
|
+
typeId: RepositoryTypes,
|
|
66
87
|
id: string,
|
|
67
88
|
params: GetParams
|
|
68
89
|
): BaseResource | null
|
|
69
90
|
|
|
70
91
|
abstract query(
|
|
71
92
|
projectKey: string,
|
|
72
|
-
typeId:
|
|
93
|
+
typeId: RepositoryTypes,
|
|
73
94
|
params: QueryParams
|
|
74
95
|
): PagedQueryResponse
|
|
75
96
|
|
|
@@ -81,7 +102,7 @@ export abstract class AbstractStorage {
|
|
|
81
102
|
|
|
82
103
|
type ProjectStorage = Partial<
|
|
83
104
|
{
|
|
84
|
-
[index in
|
|
105
|
+
[index in RepositoryTypes]: Map<string, BaseResource>
|
|
85
106
|
}
|
|
86
107
|
>
|
|
87
108
|
|
|
@@ -90,23 +111,40 @@ export class InMemoryStorage extends AbstractStorage {
|
|
|
90
111
|
[projectKey: string]: ProjectStorage
|
|
91
112
|
} = {}
|
|
92
113
|
|
|
114
|
+
protected projects: {
|
|
115
|
+
[projectKey: string]: Project
|
|
116
|
+
} = {}
|
|
117
|
+
|
|
93
118
|
private forProjectKey(projectKey: string) {
|
|
119
|
+
this.addProject(projectKey)
|
|
120
|
+
|
|
94
121
|
let projectStorage = this.resources[projectKey]
|
|
95
122
|
if (!projectStorage) {
|
|
96
123
|
projectStorage = this.resources[projectKey] = {
|
|
97
124
|
cart: new Map<string, Cart>(),
|
|
125
|
+
'cart-discount': new Map<string, CartDiscount>(),
|
|
126
|
+
category: new Map<string, Category>(),
|
|
127
|
+
channel: new Map<string, Channel>(),
|
|
98
128
|
customer: new Map<string, Customer>(),
|
|
129
|
+
'customer-group': new Map<string, CustomerGroup>(),
|
|
130
|
+
'discount-code': new Map<string, DiscountCode>(),
|
|
131
|
+
extension: new Map<string, Extension>(),
|
|
99
132
|
'inventory-entry': new Map<string, InventoryEntry>(),
|
|
100
133
|
'key-value-document': new Map<string, CustomObject>(),
|
|
101
134
|
order: new Map<string, Order>(),
|
|
102
135
|
payment: new Map<string, Payment>(),
|
|
103
136
|
'product-type': new Map<string, ProductType>(),
|
|
104
137
|
product: new Map<string, Product>(),
|
|
138
|
+
'product-selection': new Map<string, any>(),
|
|
139
|
+
'product-projection': new Map<string, ProductProjection>(),
|
|
105
140
|
'shipping-method': new Map<string, ShippingMethod>(),
|
|
106
141
|
state: new Map<string, State>(),
|
|
107
142
|
store: new Map<string, Store>(),
|
|
143
|
+
'shopping-list': new Map<string, ShoppingList>(),
|
|
144
|
+
subscription: new Map<string, Subscription>(),
|
|
108
145
|
'tax-category': new Map<string, TaxCategory>(),
|
|
109
146
|
type: new Map<string, Type>(),
|
|
147
|
+
zone: new Map<string, Zone>(),
|
|
110
148
|
}
|
|
111
149
|
}
|
|
112
150
|
return projectStorage
|
|
@@ -120,9 +158,9 @@ export class InMemoryStorage extends AbstractStorage {
|
|
|
120
158
|
}
|
|
121
159
|
}
|
|
122
160
|
|
|
123
|
-
assertStorage(typeId:
|
|
161
|
+
assertStorage(typeId: RepositoryTypes) {}
|
|
124
162
|
|
|
125
|
-
all(projectKey: string, typeId:
|
|
163
|
+
all(projectKey: string, typeId: RepositoryTypes) {
|
|
126
164
|
const store = this.forProjectKey(projectKey)[typeId]
|
|
127
165
|
if (store) {
|
|
128
166
|
return Array.from(store.values())
|
|
@@ -130,12 +168,12 @@ export class InMemoryStorage extends AbstractStorage {
|
|
|
130
168
|
return []
|
|
131
169
|
}
|
|
132
170
|
|
|
133
|
-
add<
|
|
171
|
+
add<RepositoryTypes extends keyof ResourceMap>(
|
|
134
172
|
projectKey: string,
|
|
135
|
-
typeId:
|
|
136
|
-
obj: ResourceMap[
|
|
173
|
+
typeId: RepositoryTypes,
|
|
174
|
+
obj: ResourceMap[RepositoryTypes],
|
|
137
175
|
params: GetParams = {}
|
|
138
|
-
): ResourceMap[
|
|
176
|
+
): ResourceMap[RepositoryTypes] {
|
|
139
177
|
this.forProjectKey(projectKey)[typeId]?.set(obj.id, obj)
|
|
140
178
|
|
|
141
179
|
const resource = this.get(projectKey, typeId, obj.id, params)
|
|
@@ -143,44 +181,62 @@ export class InMemoryStorage extends AbstractStorage {
|
|
|
143
181
|
return resource
|
|
144
182
|
}
|
|
145
183
|
|
|
146
|
-
get<
|
|
184
|
+
get<RepositoryTypes extends keyof ResourceMap>(
|
|
147
185
|
projectKey: string,
|
|
148
|
-
typeId:
|
|
186
|
+
typeId: RepositoryTypes,
|
|
149
187
|
id: string,
|
|
150
188
|
params: GetParams = {}
|
|
151
|
-
): ResourceMap[
|
|
189
|
+
): ResourceMap[RepositoryTypes] | null {
|
|
152
190
|
const resource = this.forProjectKey(projectKey)[typeId]?.get(id)
|
|
153
191
|
if (resource) {
|
|
154
192
|
return this.expand(
|
|
155
193
|
projectKey,
|
|
156
194
|
resource,
|
|
157
195
|
params.expand
|
|
158
|
-
) as ResourceMap[
|
|
196
|
+
) as ResourceMap[RepositoryTypes]
|
|
159
197
|
}
|
|
160
198
|
return null
|
|
161
199
|
}
|
|
162
200
|
|
|
201
|
+
getByKey<RepositoryTypes extends keyof ResourceMap>(
|
|
202
|
+
projectKey: string,
|
|
203
|
+
typeId: RepositoryTypes,
|
|
204
|
+
key: string,
|
|
205
|
+
params: GetParams = {}
|
|
206
|
+
): ResourceMap[RepositoryTypes] | null {
|
|
207
|
+
const store = this.forProjectKey(projectKey)[typeId]
|
|
208
|
+
if (!store) {
|
|
209
|
+
throw new Error('No type')
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
const resources: any[] = Array.from(store.values())
|
|
213
|
+
const resource = resources.find(e => e.key === key)
|
|
214
|
+
if (params.expand) return this.expand(projectKey, resource, params.expand)
|
|
215
|
+
return resource
|
|
216
|
+
}
|
|
217
|
+
|
|
163
218
|
delete(
|
|
164
219
|
projectKey: string,
|
|
165
|
-
typeId:
|
|
220
|
+
typeId: RepositoryTypes,
|
|
166
221
|
id: string,
|
|
167
222
|
params: GetParams = {}
|
|
168
223
|
): BaseResource | null {
|
|
169
224
|
const resource = this.get(projectKey, typeId, id)
|
|
225
|
+
|
|
170
226
|
if (resource) {
|
|
171
227
|
this.forProjectKey(projectKey)[typeId]?.delete(id)
|
|
172
228
|
return this.expand(
|
|
173
229
|
projectKey,
|
|
174
230
|
resource,
|
|
175
231
|
params.expand
|
|
176
|
-
) as ResourceMap[
|
|
232
|
+
) as ResourceMap[RepositoryTypes]
|
|
177
233
|
}
|
|
178
234
|
return resource
|
|
179
235
|
}
|
|
180
236
|
|
|
181
237
|
query(
|
|
182
238
|
projectKey: string,
|
|
183
|
-
typeId:
|
|
239
|
+
typeId: RepositoryTypes,
|
|
184
240
|
params: QueryParams
|
|
185
241
|
): PagedQueryResponse {
|
|
186
242
|
const store = this.forProjectKey(projectKey)[typeId]
|
|
@@ -199,7 +255,7 @@ export class InMemoryStorage extends AbstractStorage {
|
|
|
199
255
|
throw new CommercetoolsError<InvalidInputError>(
|
|
200
256
|
{
|
|
201
257
|
code: 'InvalidInput',
|
|
202
|
-
message: err.message,
|
|
258
|
+
message: (err as any).message,
|
|
203
259
|
},
|
|
204
260
|
400
|
|
205
261
|
)
|
|
@@ -230,14 +286,14 @@ export class InMemoryStorage extends AbstractStorage {
|
|
|
230
286
|
}
|
|
231
287
|
}
|
|
232
288
|
|
|
233
|
-
getByResourceIdentifier<
|
|
289
|
+
getByResourceIdentifier<RepositoryTypes extends keyof ResourceMap>(
|
|
234
290
|
projectKey: string,
|
|
235
291
|
identifier: ResourceIdentifier
|
|
236
|
-
): ResourceMap[
|
|
292
|
+
): ResourceMap[RepositoryTypes] | undefined {
|
|
237
293
|
if (identifier.id) {
|
|
238
294
|
const resource = this.get(projectKey, identifier.typeId, identifier.id)
|
|
239
295
|
if (resource) {
|
|
240
|
-
return resource as ResourceMap[
|
|
296
|
+
return resource as ResourceMap[RepositoryTypes]
|
|
241
297
|
}
|
|
242
298
|
console.error(
|
|
243
299
|
`No resource found with typeId=${identifier.typeId}, id=${identifier.id}`
|
|
@@ -256,7 +312,7 @@ export class InMemoryStorage extends AbstractStorage {
|
|
|
256
312
|
r => r.key === identifier.key
|
|
257
313
|
)
|
|
258
314
|
if (resource) {
|
|
259
|
-
return resource as ResourceMap[
|
|
315
|
+
return resource as ResourceMap[RepositoryTypes]
|
|
260
316
|
}
|
|
261
317
|
} else {
|
|
262
318
|
throw new Error(
|
|
@@ -267,6 +323,46 @@ export class InMemoryStorage extends AbstractStorage {
|
|
|
267
323
|
return undefined
|
|
268
324
|
}
|
|
269
325
|
|
|
326
|
+
addProject = (projectKey: string): Project => {
|
|
327
|
+
if (!this.projects[projectKey]) {
|
|
328
|
+
this.projects[projectKey] = {
|
|
329
|
+
key: projectKey,
|
|
330
|
+
name: '',
|
|
331
|
+
countries: [],
|
|
332
|
+
currencies: [],
|
|
333
|
+
languages: [],
|
|
334
|
+
createdAt: '2018-10-04T11:32:12.603Z',
|
|
335
|
+
trialUntil: '2018-12',
|
|
336
|
+
carts: {
|
|
337
|
+
countryTaxRateFallbackEnabled: false,
|
|
338
|
+
deleteDaysAfterLastModification: 90,
|
|
339
|
+
},
|
|
340
|
+
messages: { enabled: false, deleteDaysAfterCreation: 15 },
|
|
341
|
+
shippingRateInputType: undefined,
|
|
342
|
+
externalOAuth: undefined,
|
|
343
|
+
searchIndexing: {
|
|
344
|
+
products: {
|
|
345
|
+
status: 'Deactivated',
|
|
346
|
+
},
|
|
347
|
+
orders: {
|
|
348
|
+
status: 'Deactivated',
|
|
349
|
+
},
|
|
350
|
+
},
|
|
351
|
+
version: 1,
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
return this.projects[projectKey]
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
saveProject = (project: Project): Project => {
|
|
358
|
+
this.projects[project.key] = project
|
|
359
|
+
return project
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
getProject = (projectKey: string): Project => {
|
|
363
|
+
return this.addProject(projectKey)
|
|
364
|
+
}
|
|
365
|
+
|
|
270
366
|
private expand = <T>(
|
|
271
367
|
projectKey: string,
|
|
272
368
|
obj: T,
|
package/src/types.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { ProductProjectionRepository } from './repositories/product-projection'
|
|
2
|
+
import { ShoppingListRepository } from './repositories/shopping-list'
|
|
1
3
|
import * as ctp from '@commercetools/platform-sdk'
|
|
2
4
|
import { ReferenceTypeId } from '@commercetools/platform-sdk'
|
|
3
5
|
import AbstractService from './services/abstract'
|
|
@@ -15,11 +17,12 @@ import { TaxCategoryRepository } from './repositories/tax-category'
|
|
|
15
17
|
|
|
16
18
|
export type Writable<T> = { -readonly [P in keyof T]: Writable<T[P]> }
|
|
17
19
|
|
|
18
|
-
type
|
|
20
|
+
export type RepositoryTypes = ReferenceTypeId | 'product-projection'
|
|
21
|
+
export type ServiceTypes = RepositoryTypes | 'my-cart' | 'my-payment'
|
|
19
22
|
|
|
20
23
|
export type Services = Partial<
|
|
21
24
|
{
|
|
22
|
-
[index in
|
|
25
|
+
[index in ServiceTypes]: AbstractService
|
|
23
26
|
}
|
|
24
27
|
>
|
|
25
28
|
|
|
@@ -39,6 +42,8 @@ export type ResourceMap = {
|
|
|
39
42
|
payment: ctp.Payment
|
|
40
43
|
product: ctp.Product
|
|
41
44
|
'product-discount': ctp.ProductDiscount
|
|
45
|
+
'product-projection': ctp.ProductProjection
|
|
46
|
+
'product-selection': ctp.ProductSelection
|
|
42
47
|
'product-type': ctp.ProductType
|
|
43
48
|
review: ctp.Review
|
|
44
49
|
'shipping-method': ctp.ShippingMethod
|
|
@@ -94,11 +99,12 @@ export type RepositoryMap = {
|
|
|
94
99
|
'order-edit': never
|
|
95
100
|
payment: PaymentRepository
|
|
96
101
|
product: ProductRepository
|
|
102
|
+
'product-projection': ProductProjectionRepository
|
|
97
103
|
'product-discount': never
|
|
98
104
|
'product-type': ProductTypeRepository
|
|
99
105
|
review: never
|
|
100
106
|
'shipping-method': ShippingMethodRepository
|
|
101
|
-
'shopping-list':
|
|
107
|
+
'shopping-list': ShoppingListRepository
|
|
102
108
|
state: StateRepository
|
|
103
109
|
store: never
|
|
104
110
|
subscription: never
|