@reactionary/source 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/core/src/client/client-builder.ts +3 -7
  2. package/core/src/client/client.ts +2 -3
  3. package/core/src/decorators/reactionary.decorator.ts +2 -2
  4. package/core/src/initialization.ts +8 -3
  5. package/core/src/providers/analytics.provider.ts +75 -0
  6. package/core/src/providers/cart.provider.ts +3 -0
  7. package/core/src/providers/category.provider.ts +1 -0
  8. package/core/src/schemas/errors/invalid-input.error.ts +1 -1
  9. package/core/src/schemas/errors/invalid-output.error.ts +1 -1
  10. package/core/src/schemas/models/identifiers.model.ts +3 -0
  11. package/core/src/schemas/models/order.model.ts +2 -2
  12. package/core/src/schemas/mutations/analytics/index.ts +23 -0
  13. package/core/src/schemas/mutations/analytics/product-add-to-cart.mutation.ts +25 -0
  14. package/core/src/schemas/mutations/analytics/product-details-view.mutation.ts +14 -0
  15. package/core/src/schemas/mutations/analytics/product-summary-click.mutation.ts +26 -0
  16. package/core/src/schemas/mutations/analytics/product-summary-view.mutation.ts +25 -0
  17. package/core/src/schemas/mutations/analytics/purchase.mutation.ts +14 -0
  18. package/core/src/schemas/mutations/index.ts +1 -1
  19. package/core/src/schemas/queries/order-search.query.ts +3 -0
  20. package/core/src/schemas/session.schema.ts +20 -9
  21. package/core/src/test/client-builder.spec.ts +60 -0
  22. package/core/src/zod-utils.ts +3 -1
  23. package/documentation/{1-purpose.md → docs/1-purpose.md} +4 -0
  24. package/documentation/docs/8-tracking.md +9 -0
  25. package/documentation/docs/providers/analytics.provider.md +297 -0
  26. package/documentation/docs/providers/base.provider.md +118 -0
  27. package/documentation/docs/providers/cart.provider.md +305 -0
  28. package/documentation/docs/providers/category.provider.md +244 -0
  29. package/documentation/docs/providers/checkout.provider.md +315 -0
  30. package/documentation/docs/providers/identity.provider.md +194 -0
  31. package/documentation/docs/providers/inventory.provider.md +162 -0
  32. package/documentation/docs/providers/order-search.provider.md +155 -0
  33. package/documentation/docs/providers/order.provider.md +160 -0
  34. package/documentation/docs/providers/price.provider.md +197 -0
  35. package/documentation/docs/providers/product-search.provider.md +265 -0
  36. package/documentation/docs/providers/product.provider.md +204 -0
  37. package/documentation/docs/providers/profile.provider.md +283 -0
  38. package/documentation/docs/providers/store.provider.md +146 -0
  39. package/documentation/docs/schemas/schemas.md +1862 -0
  40. package/documentation/docusaurus.config.js +33 -0
  41. package/documentation/scripts/generate.ts +52 -0
  42. package/documentation/sidebars.js +8 -0
  43. package/documentation/src/css/custom.css +3 -0
  44. package/documentation/src/pages/index.js +12 -0
  45. package/eslint.config.mjs +1 -1
  46. package/examples/node/package.json +6 -6
  47. package/examples/node/src/basic/basic-node-provider-model-extension.spec.ts +0 -2
  48. package/package.json +19 -5
  49. package/providers/algolia/project.json +1 -1
  50. package/providers/algolia/src/core/initialize.ts +5 -0
  51. package/providers/algolia/src/providers/analytics.provider.ts +112 -0
  52. package/providers/algolia/src/providers/index.ts +1 -0
  53. package/providers/commercetools/project.json +1 -1
  54. package/providers/commercetools/src/providers/profile.provider.ts +1 -4
  55. package/providers/fake/project.json +1 -1
  56. package/providers/fake/src/providers/analytics.provider.ts +5 -0
  57. package/providers/fake/src/providers/checkout.provider.ts +5 -2
  58. package/providers/fake/src/providers/product.provider.ts +18 -8
  59. package/providers/fake/src/test/cart.provider.spec.ts +0 -2
  60. package/providers/fake/src/test/category.provider.spec.ts +3 -3
  61. package/providers/fake/src/test/checkout.provider.spec.ts +3 -7
  62. package/providers/google-analytics/README.md +11 -0
  63. package/providers/google-analytics/eslint.config.mjs +25 -0
  64. package/providers/google-analytics/package.json +18 -0
  65. package/providers/google-analytics/project.json +33 -0
  66. package/providers/google-analytics/src/core/initialize.ts +16 -0
  67. package/providers/google-analytics/src/index.ts +4 -0
  68. package/providers/google-analytics/src/providers/analytics.provider.ts +162 -0
  69. package/providers/google-analytics/src/schema/capabilities.schema.ts +10 -0
  70. package/providers/google-analytics/src/schema/configuration.schema.ts +9 -0
  71. package/providers/google-analytics/src/test/analytics.provider.spec.ts +93 -0
  72. package/providers/google-analytics/tsconfig.json +24 -0
  73. package/providers/google-analytics/tsconfig.lib.json +23 -0
  74. package/providers/google-analytics/tsconfig.spec.json +28 -0
  75. package/providers/google-analytics/vite.config.ts +26 -0
  76. package/providers/google-analytics/vitest.config.mts +21 -0
  77. package/providers/medusa/package.json +3 -10
  78. package/providers/medusa/project.json +1 -1
  79. package/providers/medusa/src/providers/profile.provider.ts +5 -15
  80. package/providers/medusa/src/test/test-utils.ts +0 -1
  81. package/providers/medusa/tsconfig.json +3 -0
  82. package/providers/medusa/tsconfig.lib.json +16 -1
  83. package/providers/meilisearch/project.json +1 -1
  84. package/providers/posthog/project.json +1 -1
  85. package/tsconfig.base.json +4 -1
  86. package/.claude/settings.local.json +0 -28
  87. package/core/src/schemas/mutations/analytics.mutation.ts +0 -23
  88. package/providers/algolia/src/test/test-utils.ts +0 -31
  89. /package/documentation/{2-getting-started.md → docs/2-getting-started.md} +0 -0
  90. /package/documentation/{3-querying-and-changing-data.md → docs/3-querying-and-changing-data.md} +0 -0
  91. /package/documentation/{4-product-data.md → docs/4-product-data.md} +0 -0
  92. /package/documentation/{5-cart-and-checkout.md → docs/5-cart-and-checkout.md} +0 -0
  93. /package/documentation/{6-product-search.md → docs/6-product-search.md} +0 -0
  94. /package/documentation/{7-marketing.md → docs/7-marketing.md} +0 -0
@@ -0,0 +1,297 @@
1
+ [**@reactionary/core**](README.md)
2
+
3
+ ***
4
+
5
+ [@reactionary/core](README.md) / analytics.provider
6
+
7
+ # analytics.provider
8
+
9
+ ## Providers
10
+
11
+ ### `abstract` AnalyticsProvider
12
+
13
+ Defined in: [analytics.provider.ts:10](https://github.com/Solteq/reactionary/blob/ca9304f3dfc56eb7283e5bdf90b26f13d42dce7d/core/src/providers/analytics.provider.ts#L10)
14
+
15
+ #### Extends
16
+
17
+ - [`BaseProvider`](base.provider.md#baseprovider)
18
+
19
+ #### Extended by
20
+
21
+ - [`MulticastAnalyticsProvider`](#multicastanalyticsprovider)
22
+
23
+ #### Constructors
24
+
25
+ ##### Constructor
26
+
27
+ > **new AnalyticsProvider**(`cache`, `context`): [`AnalyticsProvider`](#analyticsprovider)
28
+
29
+ Defined in: [base.provider.ts:13](https://github.com/Solteq/reactionary/blob/ca9304f3dfc56eb7283e5bdf90b26f13d42dce7d/core/src/providers/base.provider.ts#L13)
30
+
31
+ ###### Parameters
32
+
33
+ ###### cache
34
+
35
+ `Cache`
36
+
37
+ ###### context
38
+
39
+ `RequestContext`
40
+
41
+ ###### Returns
42
+
43
+ [`AnalyticsProvider`](#analyticsprovider)
44
+
45
+ ###### Inherited from
46
+
47
+ [`BaseProvider`](base.provider.md#baseprovider).[`constructor`](base.provider.md#constructor)
48
+
49
+ #### Properties
50
+
51
+ ##### cache
52
+
53
+ > `protected` **cache**: `Cache`
54
+
55
+ Defined in: [base.provider.ts:10](https://github.com/Solteq/reactionary/blob/ca9304f3dfc56eb7283e5bdf90b26f13d42dce7d/core/src/providers/base.provider.ts#L10)
56
+
57
+ ###### Inherited from
58
+
59
+ [`BaseProvider`](base.provider.md#baseprovider).[`cache`](base.provider.md#cache)
60
+
61
+ ##### context
62
+
63
+ > `protected` **context**: `RequestContext`
64
+
65
+ Defined in: [base.provider.ts:11](https://github.com/Solteq/reactionary/blob/ca9304f3dfc56eb7283e5bdf90b26f13d42dce7d/core/src/providers/base.provider.ts#L11)
66
+
67
+ ###### Inherited from
68
+
69
+ [`BaseProvider`](base.provider.md#baseprovider).[`context`](base.provider.md#context)
70
+
71
+ #### Methods
72
+
73
+ ##### generateCacheKeyForQuery()
74
+
75
+ > `protected` **generateCacheKeyForQuery**(`scope`, `query`): `string`
76
+
77
+ Defined in: [base.provider.ts:32](https://github.com/Solteq/reactionary/blob/ca9304f3dfc56eb7283e5bdf90b26f13d42dce7d/core/src/providers/base.provider.ts#L32)
78
+
79
+ ###### Parameters
80
+
81
+ ###### scope
82
+
83
+ `string`
84
+
85
+ ###### query
86
+
87
+ `object`
88
+
89
+ ###### Returns
90
+
91
+ `string`
92
+
93
+ ###### Inherited from
94
+
95
+ [`BaseProvider`](base.provider.md#baseprovider).[`generateCacheKeyForQuery`](base.provider.md#generatecachekeyforquery)
96
+
97
+ ##### generateDependencyIdsForModel()
98
+
99
+ > **generateDependencyIdsForModel**(`model`): `string`[]
100
+
101
+ Defined in: [base.provider.ts:18](https://github.com/Solteq/reactionary/blob/ca9304f3dfc56eb7283e5bdf90b26f13d42dce7d/core/src/providers/base.provider.ts#L18)
102
+
103
+ ###### Parameters
104
+
105
+ ###### model
106
+
107
+ `unknown`
108
+
109
+ ###### Returns
110
+
111
+ `string`[]
112
+
113
+ ###### Inherited from
114
+
115
+ [`BaseProvider`](base.provider.md#baseprovider).[`generateDependencyIdsForModel`](base.provider.md#generatedependencyidsformodel)
116
+
117
+ ##### getResourceName()
118
+
119
+ > `protected` **getResourceName**(): `string`
120
+
121
+ Defined in: [analytics.provider.ts:11](https://github.com/Solteq/reactionary/blob/ca9304f3dfc56eb7283e5bdf90b26f13d42dce7d/core/src/providers/analytics.provider.ts#L11)
122
+
123
+ Returns the abstract resource name provided by the remote system.
124
+
125
+ ###### Returns
126
+
127
+ `string`
128
+
129
+ ###### Overrides
130
+
131
+ [`BaseProvider`](base.provider.md#baseprovider).[`getResourceName`](base.provider.md#getresourcename)
132
+
133
+ ##### track()
134
+
135
+ > `abstract` **track**(`event`): `Promise`\<`void`\>
136
+
137
+ Defined in: [analytics.provider.ts:15](https://github.com/Solteq/reactionary/blob/ca9304f3dfc56eb7283e5bdf90b26f13d42dce7d/core/src/providers/analytics.provider.ts#L15)
138
+
139
+ ###### Parameters
140
+
141
+ ###### event
142
+
143
+ `AnalyticsMutation`
144
+
145
+ ###### Returns
146
+
147
+ `Promise`\<`void`\>
148
+
149
+ ***
150
+
151
+ ### MulticastAnalyticsProvider
152
+
153
+ Defined in: [analytics.provider.ts:18](https://github.com/Solteq/reactionary/blob/ca9304f3dfc56eb7283e5bdf90b26f13d42dce7d/core/src/providers/analytics.provider.ts#L18)
154
+
155
+ #### Extends
156
+
157
+ - [`AnalyticsProvider`](#analyticsprovider)
158
+
159
+ #### Constructors
160
+
161
+ ##### Constructor
162
+
163
+ > **new MulticastAnalyticsProvider**(`cache`, `requestContext`, `providers`): [`MulticastAnalyticsProvider`](#multicastanalyticsprovider)
164
+
165
+ Defined in: [analytics.provider.ts:21](https://github.com/Solteq/reactionary/blob/ca9304f3dfc56eb7283e5bdf90b26f13d42dce7d/core/src/providers/analytics.provider.ts#L21)
166
+
167
+ ###### Parameters
168
+
169
+ ###### cache
170
+
171
+ `Cache`
172
+
173
+ ###### requestContext
174
+
175
+ `RequestContext`
176
+
177
+ ###### providers
178
+
179
+ [`AnalyticsProvider`](#analyticsprovider)[]
180
+
181
+ ###### Returns
182
+
183
+ [`MulticastAnalyticsProvider`](#multicastanalyticsprovider)
184
+
185
+ ###### Overrides
186
+
187
+ [`AnalyticsProvider`](#analyticsprovider).[`constructor`](#constructor)
188
+
189
+ #### Properties
190
+
191
+ ##### cache
192
+
193
+ > `protected` **cache**: `Cache`
194
+
195
+ Defined in: [base.provider.ts:10](https://github.com/Solteq/reactionary/blob/ca9304f3dfc56eb7283e5bdf90b26f13d42dce7d/core/src/providers/base.provider.ts#L10)
196
+
197
+ ###### Inherited from
198
+
199
+ [`AnalyticsProvider`](#analyticsprovider).[`cache`](#cache)
200
+
201
+ ##### context
202
+
203
+ > `protected` **context**: `RequestContext`
204
+
205
+ Defined in: [base.provider.ts:11](https://github.com/Solteq/reactionary/blob/ca9304f3dfc56eb7283e5bdf90b26f13d42dce7d/core/src/providers/base.provider.ts#L11)
206
+
207
+ ###### Inherited from
208
+
209
+ [`AnalyticsProvider`](#analyticsprovider).[`context`](#context)
210
+
211
+ ##### providers
212
+
213
+ > `protected` **providers**: [`AnalyticsProvider`](#analyticsprovider)[]
214
+
215
+ Defined in: [analytics.provider.ts:19](https://github.com/Solteq/reactionary/blob/ca9304f3dfc56eb7283e5bdf90b26f13d42dce7d/core/src/providers/analytics.provider.ts#L19)
216
+
217
+ #### Methods
218
+
219
+ ##### generateCacheKeyForQuery()
220
+
221
+ > `protected` **generateCacheKeyForQuery**(`scope`, `query`): `string`
222
+
223
+ Defined in: [base.provider.ts:32](https://github.com/Solteq/reactionary/blob/ca9304f3dfc56eb7283e5bdf90b26f13d42dce7d/core/src/providers/base.provider.ts#L32)
224
+
225
+ ###### Parameters
226
+
227
+ ###### scope
228
+
229
+ `string`
230
+
231
+ ###### query
232
+
233
+ `object`
234
+
235
+ ###### Returns
236
+
237
+ `string`
238
+
239
+ ###### Inherited from
240
+
241
+ [`AnalyticsProvider`](#analyticsprovider).[`generateCacheKeyForQuery`](#generatecachekeyforquery)
242
+
243
+ ##### generateDependencyIdsForModel()
244
+
245
+ > **generateDependencyIdsForModel**(`model`): `string`[]
246
+
247
+ Defined in: [base.provider.ts:18](https://github.com/Solteq/reactionary/blob/ca9304f3dfc56eb7283e5bdf90b26f13d42dce7d/core/src/providers/base.provider.ts#L18)
248
+
249
+ ###### Parameters
250
+
251
+ ###### model
252
+
253
+ `unknown`
254
+
255
+ ###### Returns
256
+
257
+ `string`[]
258
+
259
+ ###### Inherited from
260
+
261
+ [`AnalyticsProvider`](#analyticsprovider).[`generateDependencyIdsForModel`](#generatedependencyidsformodel)
262
+
263
+ ##### getResourceName()
264
+
265
+ > `protected` **getResourceName**(): `string`
266
+
267
+ Defined in: [analytics.provider.ts:11](https://github.com/Solteq/reactionary/blob/ca9304f3dfc56eb7283e5bdf90b26f13d42dce7d/core/src/providers/analytics.provider.ts#L11)
268
+
269
+ Returns the abstract resource name provided by the remote system.
270
+
271
+ ###### Returns
272
+
273
+ `string`
274
+
275
+ ###### Inherited from
276
+
277
+ [`AnalyticsProvider`](#analyticsprovider).[`getResourceName`](#getresourcename)
278
+
279
+ ##### track()
280
+
281
+ > **track**(`event`): `Promise`\<`void`\>
282
+
283
+ Defined in: [analytics.provider.ts:30](https://github.com/Solteq/reactionary/blob/ca9304f3dfc56eb7283e5bdf90b26f13d42dce7d/core/src/providers/analytics.provider.ts#L30)
284
+
285
+ ###### Parameters
286
+
287
+ ###### event
288
+
289
+ `AnalyticsMutation`
290
+
291
+ ###### Returns
292
+
293
+ `Promise`\<`void`\>
294
+
295
+ ###### Overrides
296
+
297
+ [`AnalyticsProvider`](#analyticsprovider).[`track`](#track)
@@ -0,0 +1,118 @@
1
+ [**@reactionary/core**](README.md)
2
+
3
+ ***
4
+
5
+ [@reactionary/core](README.md) / base.provider
6
+
7
+ # base.provider
8
+
9
+ ## Classes
10
+
11
+ ### `abstract` BaseProvider
12
+
13
+ Defined in: [base.provider.ts:9](https://github.com/Solteq/reactionary/blob/ca9304f3dfc56eb7283e5bdf90b26f13d42dce7d/core/src/providers/base.provider.ts#L9)
14
+
15
+ Base capability provider, responsible for mutations (changes) and queries (fetches)
16
+ for a given business object domain.
17
+
18
+ #### Extended by
19
+
20
+ - [`AnalyticsProvider`](analytics.provider.md#analyticsprovider)
21
+ - [`CartProvider`](cart.provider.md#cartprovider)
22
+ - [`CategoryProvider`](category.provider.md#categoryprovider)
23
+ - [`CheckoutProvider`](checkout.provider.md#checkoutprovider)
24
+ - [`IdentityProvider`](identity.provider.md#identityprovider)
25
+ - [`InventoryProvider`](inventory.provider.md#inventoryprovider)
26
+ - [`OrderSearchProvider`](order-search.provider.md#ordersearchprovider)
27
+ - [`OrderProvider`](order.provider.md#orderprovider)
28
+ - [`PriceProvider`](price.provider.md#priceprovider)
29
+ - [`ProductSearchProvider`](product-search.provider.md#productsearchprovider)
30
+ - [`ProductProvider`](product.provider.md#productprovider)
31
+ - [`ProfileProvider`](profile.provider.md#profileprovider)
32
+ - [`StoreProvider`](store.provider.md#storeprovider)
33
+
34
+ #### Constructors
35
+
36
+ ##### Constructor
37
+
38
+ > **new BaseProvider**(`cache`, `context`): [`BaseProvider`](#baseprovider)
39
+
40
+ Defined in: [base.provider.ts:13](https://github.com/Solteq/reactionary/blob/ca9304f3dfc56eb7283e5bdf90b26f13d42dce7d/core/src/providers/base.provider.ts#L13)
41
+
42
+ ###### Parameters
43
+
44
+ ###### cache
45
+
46
+ `Cache`
47
+
48
+ ###### context
49
+
50
+ `RequestContext`
51
+
52
+ ###### Returns
53
+
54
+ [`BaseProvider`](#baseprovider)
55
+
56
+ #### Properties
57
+
58
+ ##### cache
59
+
60
+ > `protected` **cache**: `Cache`
61
+
62
+ Defined in: [base.provider.ts:10](https://github.com/Solteq/reactionary/blob/ca9304f3dfc56eb7283e5bdf90b26f13d42dce7d/core/src/providers/base.provider.ts#L10)
63
+
64
+ ##### context
65
+
66
+ > `protected` **context**: `RequestContext`
67
+
68
+ Defined in: [base.provider.ts:11](https://github.com/Solteq/reactionary/blob/ca9304f3dfc56eb7283e5bdf90b26f13d42dce7d/core/src/providers/base.provider.ts#L11)
69
+
70
+ #### Methods
71
+
72
+ ##### generateCacheKeyForQuery()
73
+
74
+ > `protected` **generateCacheKeyForQuery**(`scope`, `query`): `string`
75
+
76
+ Defined in: [base.provider.ts:32](https://github.com/Solteq/reactionary/blob/ca9304f3dfc56eb7283e5bdf90b26f13d42dce7d/core/src/providers/base.provider.ts#L32)
77
+
78
+ ###### Parameters
79
+
80
+ ###### scope
81
+
82
+ `string`
83
+
84
+ ###### query
85
+
86
+ `object`
87
+
88
+ ###### Returns
89
+
90
+ `string`
91
+
92
+ ##### generateDependencyIdsForModel()
93
+
94
+ > **generateDependencyIdsForModel**(`model`): `string`[]
95
+
96
+ Defined in: [base.provider.ts:18](https://github.com/Solteq/reactionary/blob/ca9304f3dfc56eb7283e5bdf90b26f13d42dce7d/core/src/providers/base.provider.ts#L18)
97
+
98
+ ###### Parameters
99
+
100
+ ###### model
101
+
102
+ `unknown`
103
+
104
+ ###### Returns
105
+
106
+ `string`[]
107
+
108
+ ##### getResourceName()
109
+
110
+ > `abstract` `protected` **getResourceName**(): `string`
111
+
112
+ Defined in: [base.provider.ts:46](https://github.com/Solteq/reactionary/blob/ca9304f3dfc56eb7283e5bdf90b26f13d42dce7d/core/src/providers/base.provider.ts#L46)
113
+
114
+ Returns the abstract resource name provided by the remote system.
115
+
116
+ ###### Returns
117
+
118
+ `string`
@@ -0,0 +1,305 @@
1
+ [**@reactionary/core**](README.md)
2
+
3
+ ***
4
+
5
+ [@reactionary/core](README.md) / cart.provider
6
+
7
+ # cart.provider
8
+
9
+ ## Providers
10
+
11
+ ### `abstract` CartProvider
12
+
13
+ Defined in: [cart.provider.ts:12](https://github.com/Solteq/reactionary/blob/ca9304f3dfc56eb7283e5bdf90b26f13d42dce7d/core/src/providers/cart.provider.ts#L12)
14
+
15
+ #### Extends
16
+
17
+ - [`BaseProvider`](base.provider.md#baseprovider)
18
+
19
+ #### Constructors
20
+
21
+ ##### Constructor
22
+
23
+ > **new CartProvider**(`cache`, `context`): [`CartProvider`](#cartprovider)
24
+
25
+ Defined in: [base.provider.ts:13](https://github.com/Solteq/reactionary/blob/ca9304f3dfc56eb7283e5bdf90b26f13d42dce7d/core/src/providers/base.provider.ts#L13)
26
+
27
+ ###### Parameters
28
+
29
+ ###### cache
30
+
31
+ `Cache`
32
+
33
+ ###### context
34
+
35
+ `RequestContext`
36
+
37
+ ###### Returns
38
+
39
+ [`CartProvider`](#cartprovider)
40
+
41
+ ###### Inherited from
42
+
43
+ [`BaseProvider`](base.provider.md#baseprovider).[`constructor`](base.provider.md#constructor)
44
+
45
+ #### Properties
46
+
47
+ ##### cache
48
+
49
+ > `protected` **cache**: `Cache`
50
+
51
+ Defined in: [base.provider.ts:10](https://github.com/Solteq/reactionary/blob/ca9304f3dfc56eb7283e5bdf90b26f13d42dce7d/core/src/providers/base.provider.ts#L10)
52
+
53
+ ###### Inherited from
54
+
55
+ [`BaseProvider`](base.provider.md#baseprovider).[`cache`](base.provider.md#cache)
56
+
57
+ ##### context
58
+
59
+ > `protected` **context**: `RequestContext`
60
+
61
+ Defined in: [base.provider.ts:11](https://github.com/Solteq/reactionary/blob/ca9304f3dfc56eb7283e5bdf90b26f13d42dce7d/core/src/providers/base.provider.ts#L11)
62
+
63
+ ###### Inherited from
64
+
65
+ [`BaseProvider`](base.provider.md#baseprovider).[`context`](base.provider.md#context)
66
+
67
+ #### Methods
68
+
69
+ ##### add()
70
+
71
+ > `abstract` **add**(`payload`): `Promise`\<`Result`\<`Cart`\>\>
72
+
73
+ Defined in: [cart.provider.ts:42](https://github.com/Solteq/reactionary/blob/ca9304f3dfc56eb7283e5bdf90b26f13d42dce7d/core/src/providers/cart.provider.ts#L42)
74
+
75
+ Add item to cart. If no cart exists, create a new one. Returns the updated and recalculated cart.
76
+ Does not automatically consolidate items, so if you want to have second add of same item to increase quantity,
77
+ you need to handle that in your logic or on the server.
78
+
79
+ Usecase: Add item to cart, create cart if none exists.
80
+
81
+ ###### Parameters
82
+
83
+ ###### payload
84
+
85
+ `CartMutationItemAdd`
86
+
87
+ ###### Returns
88
+
89
+ `Promise`\<`Result`\<`Cart`\>\>
90
+
91
+ ##### applyCouponCode()
92
+
93
+ > `abstract` **applyCouponCode**(`payload`): `Promise`\<`Result`\<`Cart`\>\>
94
+
95
+ Defined in: [cart.provider.ts:81](https://github.com/Solteq/reactionary/blob/ca9304f3dfc56eb7283e5bdf90b26f13d42dce7d/core/src/providers/cart.provider.ts#L81)
96
+
97
+ Applies a coupon code to the cart. Returns the updated and recalculated cart.
98
+
99
+ Usecase: User applies a coupon code during checkout.
100
+
101
+ ###### Parameters
102
+
103
+ ###### payload
104
+
105
+ `CartMutationApplyCoupon`
106
+
107
+ ###### Returns
108
+
109
+ `Promise`\<`Result`\<`Cart`\>\>
110
+
111
+ ##### changeCurrency()
112
+
113
+ > `abstract` **changeCurrency**(`payload`): `Promise`\<`Result`\<`Cart`\>\>
114
+
115
+ Defined in: [cart.provider.ts:100](https://github.com/Solteq/reactionary/blob/ca9304f3dfc56eb7283e5bdf90b26f13d42dce7d/core/src/providers/cart.provider.ts#L100)
116
+
117
+ Changes the currency of the cart.
118
+
119
+ Usecase: User wants to change the currency for his session. This will change the currency of the cart, and recalculate prices.
120
+
121
+ ###### Parameters
122
+
123
+ ###### payload
124
+
125
+ `CartMutationChangeCurrency`
126
+
127
+ ###### Returns
128
+
129
+ `Promise`\<`Result`\<`Cart`\>\>
130
+
131
+ ##### changeQuantity()
132
+
133
+ > `abstract` **changeQuantity**(`payload`): `Promise`\<`Result`\<`Cart`\>\>
134
+
135
+ Defined in: [cart.provider.ts:62](https://github.com/Solteq/reactionary/blob/ca9304f3dfc56eb7283e5bdf90b26f13d42dce7d/core/src/providers/cart.provider.ts#L62)
136
+
137
+ Change quantity of item in cart. If the cart is empty after change, delete the cart. Returns the updated and recalculated cart.
138
+ Changing quantity to 0 is not allowed. Use the remove call instead. This is done to avoid accidental removal of item.
139
+ Calls with quantity 0 will just be ignored.
140
+
141
+ Usecase: Change quantity of item in cart, like in a minicart, or in the full cart view.
142
+
143
+ ###### Parameters
144
+
145
+ ###### payload
146
+
147
+ `CartMutationItemQuantityChange`
148
+
149
+ ###### Returns
150
+
151
+ `Promise`\<`Result`\<`Cart`\>\>
152
+
153
+ ##### deleteCart()
154
+
155
+ > `abstract` **deleteCart**(`payload`): `Promise`\<`Result`\<`void`\>\>
156
+
157
+ Defined in: [cart.provider.ts:72](https://github.com/Solteq/reactionary/blob/ca9304f3dfc56eb7283e5bdf90b26f13d42dce7d/core/src/providers/cart.provider.ts#L72)
158
+
159
+ Deletes the entire cart.
160
+
161
+ Usecase: User wants to empty the cart or something is wrong with the current cart, and you want to clear it out and start fresh.
162
+
163
+ ###### Parameters
164
+
165
+ ###### payload
166
+
167
+ `CartMutationDeleteCart`
168
+
169
+ ###### Returns
170
+
171
+ `Promise`\<`Result`\<`void`\>\>
172
+
173
+ ##### generateCacheKeyForQuery()
174
+
175
+ > `protected` **generateCacheKeyForQuery**(`scope`, `query`): `string`
176
+
177
+ Defined in: [base.provider.ts:32](https://github.com/Solteq/reactionary/blob/ca9304f3dfc56eb7283e5bdf90b26f13d42dce7d/core/src/providers/base.provider.ts#L32)
178
+
179
+ ###### Parameters
180
+
181
+ ###### scope
182
+
183
+ `string`
184
+
185
+ ###### query
186
+
187
+ `object`
188
+
189
+ ###### Returns
190
+
191
+ `string`
192
+
193
+ ###### Inherited from
194
+
195
+ [`BaseProvider`](base.provider.md#baseprovider).[`generateCacheKeyForQuery`](base.provider.md#generatecachekeyforquery)
196
+
197
+ ##### generateDependencyIdsForModel()
198
+
199
+ > **generateDependencyIdsForModel**(`model`): `string`[]
200
+
201
+ Defined in: [base.provider.ts:18](https://github.com/Solteq/reactionary/blob/ca9304f3dfc56eb7283e5bdf90b26f13d42dce7d/core/src/providers/base.provider.ts#L18)
202
+
203
+ ###### Parameters
204
+
205
+ ###### model
206
+
207
+ `unknown`
208
+
209
+ ###### Returns
210
+
211
+ `string`[]
212
+
213
+ ###### Inherited from
214
+
215
+ [`BaseProvider`](base.provider.md#baseprovider).[`generateDependencyIdsForModel`](base.provider.md#generatedependencyidsformodel)
216
+
217
+ ##### getActiveCartId()
218
+
219
+ > `abstract` **getActiveCartId**(): `Promise`\<`Result`\<`CartIdentifier`, `NotFoundError`\>\>
220
+
221
+ Defined in: [cart.provider.ts:30](https://github.com/Solteq/reactionary/blob/ca9304f3dfc56eb7283e5bdf90b26f13d42dce7d/core/src/providers/cart.provider.ts#L30)
222
+
223
+ Get the active cart id for the user.
224
+
225
+ Usecase: Most common usecase during site load, or after login. You want to get the active cart for the user, so you can display it in the minicart.
226
+
227
+ ###### Returns
228
+
229
+ `Promise`\<`Result`\<`CartIdentifier`, `NotFoundError`\>\>
230
+
231
+ ##### getById()
232
+
233
+ > `abstract` **getById**(`payload`): `Promise`\<`Result`\<`Cart`, `NotFoundError`\>\>
234
+
235
+ Defined in: [cart.provider.ts:21](https://github.com/Solteq/reactionary/blob/ca9304f3dfc56eb7283e5bdf90b26f13d42dce7d/core/src/providers/cart.provider.ts#L21)
236
+
237
+ Get cart by ID.
238
+
239
+ Usecase: Unclear, until we support multiple carts per user.
240
+
241
+ ###### Parameters
242
+
243
+ ###### payload
244
+
245
+ `CartQueryById`
246
+
247
+ ###### Returns
248
+
249
+ `Promise`\<`Result`\<`Cart`, `NotFoundError`\>\>
250
+
251
+ ##### getResourceName()
252
+
253
+ > `protected` **getResourceName**(): `string`
254
+
255
+ Defined in: [cart.provider.ts:102](https://github.com/Solteq/reactionary/blob/ca9304f3dfc56eb7283e5bdf90b26f13d42dce7d/core/src/providers/cart.provider.ts#L102)
256
+
257
+ Returns the abstract resource name provided by the remote system.
258
+
259
+ ###### Returns
260
+
261
+ `string`
262
+
263
+ ###### Overrides
264
+
265
+ [`BaseProvider`](base.provider.md#baseprovider).[`getResourceName`](base.provider.md#getresourcename)
266
+
267
+ ##### remove()
268
+
269
+ > `abstract` **remove**(`payload`): `Promise`\<`Result`\<`Cart`\>\>
270
+
271
+ Defined in: [cart.provider.ts:51](https://github.com/Solteq/reactionary/blob/ca9304f3dfc56eb7283e5bdf90b26f13d42dce7d/core/src/providers/cart.provider.ts#L51)
272
+
273
+ Remove item from cart. If the cart is empty after removal, delete the cart. Returns the updated and recalculated cart.
274
+
275
+ Usecase: Remove item from cart, delete cart if empty.
276
+
277
+ ###### Parameters
278
+
279
+ ###### payload
280
+
281
+ `CartMutationItemRemove`
282
+
283
+ ###### Returns
284
+
285
+ `Promise`\<`Result`\<`Cart`\>\>
286
+
287
+ ##### removeCouponCode()
288
+
289
+ > `abstract` **removeCouponCode**(`payload`): `Promise`\<`Result`\<`Cart`\>\>
290
+
291
+ Defined in: [cart.provider.ts:91](https://github.com/Solteq/reactionary/blob/ca9304f3dfc56eb7283e5bdf90b26f13d42dce7d/core/src/providers/cart.provider.ts#L91)
292
+
293
+ Removes a coupon code from the cart. Returns the updated and recalculated cart.
294
+
295
+ Usecase: User removes a coupon code during checkout.
296
+
297
+ ###### Parameters
298
+
299
+ ###### payload
300
+
301
+ `CartMutationRemoveCoupon`
302
+
303
+ ###### Returns
304
+
305
+ `Promise`\<`Result`\<`Cart`\>\>