@reactionary/source 0.0.48 → 0.0.52

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 (175) hide show
  1. package/core/package.json +4 -3
  2. package/core/src/cache/cache.interface.ts +1 -1
  3. package/core/src/cache/memory-cache.ts +2 -2
  4. package/core/src/cache/noop-cache.ts +1 -1
  5. package/core/src/cache/redis-cache.ts +1 -1
  6. package/core/src/client/client-builder.ts +4 -4
  7. package/core/src/client/client.ts +12 -12
  8. package/core/src/decorators/reactionary.decorator.ts +22 -2
  9. package/core/src/index.ts +14 -14
  10. package/core/src/initialization.ts +1 -1
  11. package/core/src/providers/analytics.provider.ts +2 -2
  12. package/core/src/providers/base.provider.ts +5 -5
  13. package/core/src/providers/cart.provider.ts +6 -6
  14. package/core/src/providers/category.provider.ts +4 -9
  15. package/core/src/providers/checkout.provider.ts +156 -0
  16. package/core/src/providers/identity.provider.ts +5 -5
  17. package/core/src/providers/index.ts +13 -12
  18. package/core/src/providers/inventory.provider.ts +4 -4
  19. package/core/src/providers/order.provider.ts +31 -0
  20. package/core/src/providers/price.provider.ts +5 -5
  21. package/core/src/providers/product.provider.ts +5 -5
  22. package/core/src/providers/profile.provider.ts +5 -5
  23. package/core/src/providers/search.provider.ts +4 -4
  24. package/core/src/providers/store.provider.ts +4 -4
  25. package/core/src/schemas/capabilities.schema.ts +2 -1
  26. package/core/src/schemas/models/analytics.model.ts +1 -1
  27. package/core/src/schemas/models/cart.model.ts +3 -28
  28. package/core/src/schemas/models/category.model.ts +2 -2
  29. package/core/src/schemas/models/checkout.model.ts +66 -0
  30. package/core/src/schemas/models/cost.model.ts +21 -0
  31. package/core/src/schemas/models/identifiers.model.ts +23 -2
  32. package/core/src/schemas/models/identity.model.ts +8 -5
  33. package/core/src/schemas/models/index.ts +19 -15
  34. package/core/src/schemas/models/inventory.model.ts +2 -2
  35. package/core/src/schemas/models/order.model.ts +46 -0
  36. package/core/src/schemas/models/payment.model.ts +5 -12
  37. package/core/src/schemas/models/price.model.ts +3 -3
  38. package/core/src/schemas/models/product.model.ts +6 -3
  39. package/core/src/schemas/models/profile.model.ts +2 -2
  40. package/core/src/schemas/models/search.model.ts +2 -3
  41. package/core/src/schemas/models/shipping-method.model.ts +34 -3
  42. package/core/src/schemas/models/store.model.ts +2 -2
  43. package/core/src/schemas/mutations/analytics.mutation.ts +2 -2
  44. package/core/src/schemas/mutations/cart.mutation.ts +5 -5
  45. package/core/src/schemas/mutations/checkout.mutation.ts +50 -0
  46. package/core/src/schemas/mutations/identity.mutation.ts +1 -1
  47. package/core/src/schemas/mutations/index.ts +10 -10
  48. package/core/src/schemas/mutations/profile.mutation.ts +1 -1
  49. package/core/src/schemas/queries/cart.query.ts +2 -2
  50. package/core/src/schemas/queries/category.query.ts +3 -3
  51. package/core/src/schemas/queries/checkout.query.ts +22 -0
  52. package/core/src/schemas/queries/identity.query.ts +1 -1
  53. package/core/src/schemas/queries/index.ts +13 -12
  54. package/core/src/schemas/queries/inventory.query.ts +2 -2
  55. package/core/src/schemas/queries/order.query.ts +9 -0
  56. package/core/src/schemas/queries/price.query.ts +2 -2
  57. package/core/src/schemas/queries/product.query.ts +9 -2
  58. package/core/src/schemas/queries/profile.query.ts +1 -1
  59. package/core/src/schemas/queries/search.query.ts +2 -2
  60. package/core/src/schemas/queries/store.query.ts +1 -1
  61. package/core/src/schemas/session.schema.ts +3 -3
  62. package/core/tsconfig.json +3 -2
  63. package/examples/next/next.config.js +17 -6
  64. package/examples/next/src/app/page.tsx +1 -2
  65. package/examples/node/package.json +2 -1
  66. package/examples/node/src/basic/basic-node-setup.spec.ts +1 -1
  67. package/examples/node/tsconfig.json +2 -1
  68. package/examples/node/tsconfig.spec.json +3 -2
  69. package/package.json +3 -1
  70. package/providers/algolia/package.json +2 -1
  71. package/providers/algolia/src/core/initialize.ts +5 -5
  72. package/providers/algolia/src/index.ts +5 -5
  73. package/providers/algolia/src/providers/product.provider.ts +8 -2
  74. package/providers/algolia/src/providers/search.provider.ts +1 -1
  75. package/providers/algolia/src/test/search.provider.spec.ts +1 -1
  76. package/providers/algolia/tsconfig.json +2 -1
  77. package/providers/algolia/tsconfig.spec.json +3 -2
  78. package/providers/commercetools/{jest.config.ts → jest.config.cjs} +1 -1
  79. package/providers/commercetools/package.json +3 -2
  80. package/providers/commercetools/src/core/client.ts +63 -32
  81. package/providers/commercetools/src/core/initialize.ts +20 -16
  82. package/providers/commercetools/src/index.ts +10 -10
  83. package/providers/commercetools/src/providers/cart.provider.ts +14 -19
  84. package/providers/commercetools/src/providers/category.provider.ts +3 -12
  85. package/providers/commercetools/src/providers/checkout.provider.ts +644 -0
  86. package/providers/commercetools/src/providers/identity.provider.ts +8 -8
  87. package/providers/commercetools/src/providers/index.ts +12 -9
  88. package/providers/commercetools/src/providers/inventory.provider.ts +2 -4
  89. package/providers/commercetools/src/providers/order.provider.ts +163 -0
  90. package/providers/commercetools/src/providers/price.provider.ts +3 -3
  91. package/providers/commercetools/src/providers/product.provider.ts +24 -6
  92. package/providers/commercetools/src/providers/profile.provider.ts +2 -2
  93. package/providers/commercetools/src/providers/search.provider.ts +3 -5
  94. package/providers/commercetools/src/providers/store.provider.ts +3 -3
  95. package/providers/commercetools/src/schema/capabilities.schema.ts +2 -1
  96. package/providers/commercetools/src/schema/commercetools.schema.ts +7 -5
  97. package/providers/commercetools/src/schema/configuration.schema.ts +2 -0
  98. package/providers/commercetools/src/test/cart.provider.spec.ts +24 -4
  99. package/providers/commercetools/src/test/category.provider.spec.ts +3 -3
  100. package/providers/commercetools/src/test/checkout.provider.spec.ts +312 -0
  101. package/providers/commercetools/src/test/identity.provider.spec.ts +3 -3
  102. package/providers/commercetools/src/test/inventory.provider.spec.ts +2 -2
  103. package/providers/commercetools/src/test/price.provider.spec.ts +4 -4
  104. package/providers/commercetools/src/test/product.provider.spec.ts +22 -5
  105. package/providers/commercetools/src/test/profile.provider.spec.ts +3 -3
  106. package/providers/commercetools/src/test/search.provider.spec.ts +2 -2
  107. package/providers/commercetools/src/test/store.provider.spec.ts +2 -2
  108. package/providers/commercetools/src/test/test-utils.ts +14 -0
  109. package/providers/commercetools/tsconfig.json +2 -1
  110. package/providers/commercetools/tsconfig.spec.json +4 -3
  111. package/providers/fake/{jest.config.ts → jest.config.cjs} +1 -1
  112. package/providers/fake/package.json +2 -2
  113. package/providers/fake/src/core/initialize.ts +6 -6
  114. package/providers/fake/src/index.ts +4 -4
  115. package/providers/fake/src/providers/analytics.provider.ts +1 -1
  116. package/providers/fake/src/providers/cart.provider.ts +2 -2
  117. package/providers/fake/src/providers/category.provider.ts +7 -3
  118. package/providers/fake/src/providers/identity.provider.ts +1 -1
  119. package/providers/fake/src/providers/index.ts +9 -9
  120. package/providers/fake/src/providers/inventory.provider.ts +1 -1
  121. package/providers/fake/src/providers/price.provider.ts +1 -1
  122. package/providers/fake/src/providers/product.provider.ts +10 -4
  123. package/providers/fake/src/providers/search.provider.ts +2 -5
  124. package/providers/fake/src/providers/store.provider.ts +2 -3
  125. package/providers/fake/src/test/cart.provider.spec.ts +3 -3
  126. package/providers/fake/src/test/category.provider.spec.ts +2 -2
  127. package/providers/fake/src/test/price.provider.spec.ts +2 -2
  128. package/providers/fake/src/test/product.provider.spec.ts +8 -8
  129. package/providers/fake/src/test/test-utils.ts +1 -1
  130. package/providers/fake/tsconfig.json +2 -1
  131. package/providers/fake/tsconfig.spec.json +1 -3
  132. package/providers/posthog/package.json +4 -4
  133. package/providers/posthog/project.json +2 -2
  134. package/providers/posthog/src/core/initialize.ts +2 -2
  135. package/providers/posthog/src/index.ts +3 -3
  136. package/providers/posthog/tsconfig.json +2 -1
  137. package/tsconfig.base.json +3 -4
  138. package/.claude/settings.local.json +0 -28
  139. package/core/src/providers/cart-payment.provider.ts +0 -57
  140. package/core/src/schemas/mutations/cart-payment.mutation.ts +0 -21
  141. package/core/src/schemas/queries/cart-payment.query.ts +0 -12
  142. package/otel/README.md +0 -227
  143. package/otel/eslint.config.mjs +0 -23
  144. package/otel/package.json +0 -11
  145. package/otel/pnpm-lock.yaml +0 -805
  146. package/otel/project.json +0 -33
  147. package/otel/src/index.ts +0 -22
  148. package/otel/src/metrics.ts +0 -76
  149. package/otel/src/provider-instrumentation.ts +0 -108
  150. package/otel/src/test/otel.spec.ts +0 -8
  151. package/otel/src/trace-decorator.ts +0 -226
  152. package/otel/src/tracer.ts +0 -83
  153. package/otel/src/trpc-middleware.ts +0 -128
  154. package/otel/tsconfig.json +0 -23
  155. package/otel/tsconfig.lib.json +0 -23
  156. package/otel/tsconfig.spec.json +0 -28
  157. package/otel/vite.config.ts +0 -24
  158. package/providers/commercetools/src/providers/cart-payment.provider.ts +0 -193
  159. package/providers/commercetools/src/test/cart-payment.provider.spec.ts +0 -145
  160. package/trpc/README.md +0 -7
  161. package/trpc/__mocks__/superjson.js +0 -25
  162. package/trpc/eslint.config.mjs +0 -19
  163. package/trpc/jest.config.ts +0 -14
  164. package/trpc/package.json +0 -14
  165. package/trpc/project.json +0 -31
  166. package/trpc/src/client.ts +0 -175
  167. package/trpc/src/index.ts +0 -44
  168. package/trpc/src/integration.spec.ts +0 -223
  169. package/trpc/src/server.ts +0 -125
  170. package/trpc/src/test-utils.ts +0 -31
  171. package/trpc/src/transparent-client.spec.ts +0 -162
  172. package/trpc/src/types.ts +0 -144
  173. package/trpc/tsconfig.json +0 -16
  174. package/trpc/tsconfig.lib.json +0 -10
  175. package/trpc/tsconfig.spec.json +0 -15
@@ -1,23 +0,0 @@
1
- {
2
- "extends": "../tsconfig.base.json",
3
- "compilerOptions": {
4
- "module": "commonjs",
5
- "forceConsistentCasingInFileNames": true,
6
- "strict": true,
7
- "importHelpers": true,
8
- "noImplicitOverride": true,
9
- "noImplicitReturns": true,
10
- "noFallthroughCasesInSwitch": true,
11
- "noPropertyAccessFromIndexSignature": true
12
- },
13
- "files": [],
14
- "include": [],
15
- "references": [
16
- {
17
- "path": "./tsconfig.lib.json"
18
- },
19
- {
20
- "path": "./tsconfig.spec.json"
21
- }
22
- ]
23
- }
@@ -1,23 +0,0 @@
1
- {
2
- "extends": "./tsconfig.json",
3
- "compilerOptions": {
4
- "outDir": "../dist/out-tsc",
5
- "declaration": true,
6
- "types": ["node"]
7
- },
8
- "include": ["src/**/*.ts"],
9
- "exclude": [
10
- "vite.config.ts",
11
- "vite.config.mts",
12
- "vitest.config.ts",
13
- "vitest.config.mts",
14
- "src/**/*.test.ts",
15
- "src/**/*.spec.ts",
16
- "src/**/*.test.tsx",
17
- "src/**/*.spec.tsx",
18
- "src/**/*.test.js",
19
- "src/**/*.spec.js",
20
- "src/**/*.test.jsx",
21
- "src/**/*.spec.jsx"
22
- ]
23
- }
@@ -1,28 +0,0 @@
1
- {
2
- "extends": "./tsconfig.json",
3
- "compilerOptions": {
4
- "outDir": "../dist/out-tsc",
5
- "types": [
6
- "vitest/globals",
7
- "vitest/importMeta",
8
- "vite/client",
9
- "node",
10
- "vitest"
11
- ]
12
- },
13
- "include": [
14
- "vite.config.ts",
15
- "vite.config.mts",
16
- "vitest.config.ts",
17
- "vitest.config.mts",
18
- "src/**/*.test.ts",
19
- "src/**/*.spec.ts",
20
- "src/**/*.test.tsx",
21
- "src/**/*.spec.tsx",
22
- "src/**/*.test.js",
23
- "src/**/*.spec.js",
24
- "src/**/*.test.jsx",
25
- "src/**/*.spec.jsx",
26
- "src/**/*.d.ts"
27
- ]
28
- }
@@ -1,24 +0,0 @@
1
- import { defineConfig } from 'vite';
2
- import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin';
3
- import { nxCopyAssetsPlugin } from '@nx/vite/plugins/nx-copy-assets.plugin';
4
-
5
- export default defineConfig(() => ({
6
- root: __dirname,
7
- cacheDir: '../node_modules/.vite/otel',
8
- plugins: [nxViteTsPaths(), nxCopyAssetsPlugin(['*.md'])],
9
- // Uncomment this if you are using workers.
10
- // worker: {
11
- // plugins: [ nxViteTsPaths() ],
12
- // },
13
- test: {
14
- watch: false,
15
- globals: true,
16
- environment: 'node',
17
- include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],
18
- reporters: ['default'],
19
- coverage: {
20
- reportsDirectory: '../coverage/otel',
21
- provider: 'v8' as const,
22
- },
23
- },
24
- }));
@@ -1,193 +0,0 @@
1
-
2
- import type { CommercetoolsConfiguration } from "../schema/configuration.schema";
3
- import { CommercetoolsClient } from "../core/client";
4
- import type { Payment as CTPayment} from "@commercetools/platform-sdk";
5
- import { PaymentStatus } from "@commercetools/platform-sdk";
6
- import { traced } from "@reactionary/otel";
7
- import type { CommercetoolsCartIdentifier} from "../schema/commercetools.schema";
8
- import { CommercetoolsCartIdentifierSchema, CommercetoolsCartPaymentInstructionIdentifierSchema } from "../schema/commercetools.schema";
9
- import { CartPaymentProvider, PaymentMethodIdentifierSchema, } from "@reactionary/core";
10
- import type { CartPaymentQueryByCart, CartPaymentMutationAddPayment, CartPaymentMutationCancelPayment, Session, RequestContext , Cache, CartPaymentInstruction, Currency} from "@reactionary/core";
11
- import type z from "zod";
12
-
13
- export class CommercetoolsCartPaymentProvider<
14
- T extends CartPaymentInstruction = CartPaymentInstruction
15
- > extends CartPaymentProvider<T> {
16
- protected config: CommercetoolsConfiguration;
17
-
18
- constructor(config: CommercetoolsConfiguration, schema: z.ZodType<T>, cache: Cache) {
19
- super(schema, cache);
20
-
21
- this.config = config;
22
- }
23
-
24
- protected async getClient(reqCtx: RequestContext) {
25
- const client = await new CommercetoolsClient(this.config).getClient(reqCtx);
26
-
27
- return {
28
- payments: client.withProjectKey({ projectKey: this.config.projectKey }).me().payments(),
29
- carts: client.withProjectKey({ projectKey: this.config.projectKey }).me().carts()
30
- };
31
- }
32
-
33
-
34
-
35
- @traced()
36
- public override async getByCartIdentifier(payload: CartPaymentQueryByCart, reqCtx: RequestContext): Promise<T[]> {
37
- const client = await this.getClient(reqCtx);
38
-
39
- const ctId = payload.cart as CommercetoolsCartIdentifier;
40
- const ctVersion = ctId.version || 0;
41
-
42
- const cart = await client.carts.withId({ ID: ctId.key })
43
- .get({
44
- queryArgs: {
45
- expand: 'paymentInfo.payments[*]',
46
- },
47
- })
48
- .execute();
49
-
50
- let payments = (cart.body.paymentInfo?.payments || []).map(x => x.obj!).filter(x => x);
51
- if (payload.status) {
52
- payments = payments.filter(payment => payload.status!.some(status => payment.paymentStatus?.interfaceCode === status));
53
- }
54
-
55
- // Map over the payments and parse each one
56
- const parsedPayments = payments.map(payment => this.parseSingle(payment, reqCtx));
57
-
58
- // Commercetools does not link carts to payments, but the other way around, so for this we have to synthesize the link.
59
- const returnPayments = parsedPayments.map(x => {
60
- x.cart = { key: cart.body.id, version: cart.body.version || 0 };
61
- return x;
62
- });
63
- return returnPayments;
64
- }
65
-
66
-
67
-
68
- public override async initiatePaymentForCart(payload: CartPaymentMutationAddPayment, reqCtx: RequestContext): Promise<T> {
69
- const client = await this.getClient(reqCtx);
70
- const cartId = payload.cart as CommercetoolsCartIdentifier;
71
- const response = await client.payments.post({
72
- body: {
73
-
74
- amountPlanned: {
75
- centAmount: Math.round(payload.paymentInstruction.amount.value * 100),
76
- currencyCode: payload.paymentInstruction.amount.currency
77
- },
78
- paymentMethodInfo: {
79
- method: payload.paymentInstruction.paymentMethod.method,
80
- name: {
81
- [reqCtx.languageContext.locale]: payload.paymentInstruction.paymentMethod.name
82
- },
83
- paymentInterface: payload.paymentInstruction.paymentMethod.paymentProcessor
84
- },
85
- custom:{
86
- type: {
87
- typeId: 'type',
88
- key: 'reactionaryPaymentCustomFields',
89
- },
90
- fields: {
91
- cartId: cartId.key,
92
- cartVersion: cartId.version + '',
93
- }
94
- },
95
-
96
- },
97
- }).execute();
98
-
99
- // Now add the payment to the cart
100
- const ctId = payload.cart as CommercetoolsCartIdentifier
101
- const updatedCart = await client.carts.withId({ ID: ctId.key }).post({
102
- body: {
103
- version: ctId.version,
104
- actions: [
105
- {
106
- 'action': 'addPayment',
107
- 'payment': {
108
- 'typeId': 'payment',
109
- 'id': response.body.id
110
- }
111
- }
112
- ]
113
- }
114
- }).execute();
115
-
116
- const payment = this.parseSingle(response.body, reqCtx);
117
-
118
- // we return the newest cart version so caller can update their cart reference, if they want to.
119
- // hopefully this wont cause excessive confusion
120
- payment.cart = CommercetoolsCartIdentifierSchema.parse({
121
- key: updatedCart.body.id,
122
- version: updatedCart.body.version || 0
123
- });
124
- return payment;
125
- }
126
-
127
-
128
- @traced()
129
- public override async cancelPaymentInstruction(payload: CartPaymentMutationCancelPayment, reqCtx: RequestContext): Promise<T> {
130
- const client = await this.getClient(reqCtx);
131
-
132
- // get newest version
133
- const newestVersion = await client.payments.withId({ ID: payload.paymentInstruction.key }).get().execute();
134
-
135
-
136
- // we set the planned amount to 0, which effectively cancels the payment, and also allows the backend to clean it up.
137
- // Note: This does NOT remove the payment from the cart, as that would be a breaking change to the cart, and we want to avoid that during checkout.
138
- // Instead, the payment will remain on the cart, but with status 'canceled', and can be removed later if needed.
139
- // This also allows us to keep a record of the payment instruction for auditing purposes.
140
- // The cart can be re-used, and a new payment instruction can be added to it later.
141
- // The frontend should ignore any payment instructions with status 'canceled' when displaying payment options to the user.
142
- const response = await client.payments.withId({ ID: payload.paymentInstruction.key }).post({
143
- body: {
144
- version: newestVersion.body.version,
145
- actions: [
146
- {
147
- action: 'changeAmountPlanned',
148
- amount: {
149
- centAmount: 0,
150
- currencyCode: newestVersion.body.amountPlanned.currencyCode
151
- }
152
- },
153
- ]
154
- }
155
- }).execute();
156
-
157
- const payment = this.parseSingle(response.body, reqCtx);
158
- payment.cart = payload.cart;
159
- return payment;
160
- }
161
-
162
-
163
-
164
- @traced()
165
- protected override parseSingle(_body: unknown, reqCtx: RequestContext): T {
166
- const body = _body as CTPayment;
167
-
168
- const base = this.newModel();
169
- base.identifier = CommercetoolsCartPaymentInstructionIdentifierSchema.parse({
170
- key: body.id,
171
- version: body.version || 0
172
- });
173
-
174
- base.amount = {
175
- value: body.amountPlanned.centAmount / 100,
176
- currency: body.amountPlanned.currencyCode as Currency,
177
- };
178
-
179
-
180
- base.paymentMethod = PaymentMethodIdentifierSchema.parse({
181
- key: body.paymentMethodInfo?.method
182
- });
183
-
184
- // FIXME: seems wrong
185
- base.status = body.paymentStatus?.interfaceCode as unknown as any;
186
-
187
- base.cart = { key: '', version: 0 };
188
-
189
- return this.assert(base);
190
- }
191
-
192
-
193
- }
@@ -1,145 +0,0 @@
1
- import 'dotenv/config';
2
- import type {
3
- Cart, RequestContext} from '@reactionary/core';
4
- import { CartPaymentInstructionSchema,
5
- CartSchema,
6
- IdentitySchema,
7
- NoOpCache, createInitialRequestContext
8
- } from '@reactionary/core';
9
- import {
10
- getCommercetoolsTestConfiguration,
11
- } from './test-utils';
12
- import { CommercetoolsCartProvider } from '../providers/cart.provider';
13
- import { CommercetoolsIdentityProvider } from '../providers/identity.provider';
14
- import { CommercetoolsCartPaymentProvider } from '../providers/cart-payment.provider';
15
-
16
- const testData = {
17
- skuWithoutTiers: 'SGB-01',
18
- skuWithTiers: 'GMCT-01',
19
- };
20
-
21
- describe('Commercetools Cart Payment Provider', () => {
22
- let provider: CommercetoolsCartPaymentProvider;
23
- let cartProvider: CommercetoolsCartProvider;
24
- let identityProvider: CommercetoolsIdentityProvider;
25
- let reqCtx: RequestContext;
26
-
27
- beforeAll(() => {
28
- provider = new CommercetoolsCartPaymentProvider(
29
- getCommercetoolsTestConfiguration(),
30
- CartPaymentInstructionSchema,
31
- new NoOpCache()
32
- );
33
- cartProvider = new CommercetoolsCartProvider(
34
- getCommercetoolsTestConfiguration(),
35
- CartSchema,
36
- new NoOpCache()
37
- );
38
- identityProvider = new CommercetoolsIdentityProvider(
39
- getCommercetoolsTestConfiguration(),
40
- IdentitySchema,
41
- new NoOpCache()
42
- );
43
- });
44
-
45
- beforeEach(() => {
46
- reqCtx = createInitialRequestContext();
47
- });
48
-
49
- describe('anonymous sessions', () => {
50
- let cart: Cart;
51
-
52
- beforeEach(async () => {
53
- cart = await cartProvider.add(
54
- {
55
- cart: { key: '', version: 0 },
56
- sku: {
57
- key: testData.skuWithoutTiers,
58
- },
59
- quantity: 1,
60
- },
61
- reqCtx
62
- );
63
- });
64
-
65
- it('a new cart will return 0 payment instructions', async () => {
66
- const payments = await provider.getByCartIdentifier(
67
- { cart: cart.identifier, status: undefined },
68
- reqCtx
69
- );
70
- expect(payments.length).toBe(0);
71
- });
72
-
73
- it('can initiate a new payment', async () => {
74
- const payment = await provider.initiatePaymentForCart(
75
- {
76
- cart: cart.identifier,
77
- paymentInstruction: {
78
- paymentMethod: {
79
- method: 'stripe',
80
- name: 'Stripe',
81
- paymentProcessor: 'stripe',
82
- },
83
- amount: {
84
- value: cart.price.grandTotal.value,
85
- currency: cart.price.grandTotal.currency,
86
- },
87
- protocolData: [{ key: 'test-key', value: 'test-value' }],
88
- },
89
- },
90
- reqCtx
91
- );
92
-
93
- expect(payment.identifier.key).toBeDefined();
94
-
95
- // verify that we can fetch it again.
96
- const payments = await provider.getByCartIdentifier(
97
- { cart: cart.identifier, status: undefined },
98
- reqCtx
99
- );
100
- expect(payments.length).toBe(1);
101
- expect(payments[0].identifier.key).toBe(payment.identifier.key);
102
- });
103
-
104
-
105
- it('can cancel an in-progress payment', async () => {
106
- const payment = await provider.initiatePaymentForCart(
107
- {
108
- cart: cart.identifier,
109
- paymentInstruction: {
110
- paymentMethod: {
111
- method: 'stripe',
112
- name: 'Stripe',
113
- paymentProcessor: 'stripe',
114
- },
115
- amount: {
116
- value: cart.price.grandTotal.value,
117
- currency: cart.price.grandTotal.currency,
118
- },
119
- protocolData: [{ key: 'test-key', value: 'test-value' }],
120
- },
121
- },
122
- reqCtx
123
- );
124
- expect(payment.identifier.key).toBeDefined();
125
-
126
- const cancelledPayment = await provider.cancelPaymentInstruction(
127
- {
128
- cart: cart.identifier,
129
- paymentInstruction: payment.identifier
130
- },
131
- reqCtx
132
- );
133
- expect(cancelledPayment.status).toBe('canceled');
134
-
135
-
136
- // verify that it is gone
137
- const payments = await provider.getByCartIdentifier(
138
- { cart: cart.identifier, status: undefined },
139
- reqCtx
140
- );
141
- expect(payments.length).toBe(0);
142
- expect(payments[0].identifier.key).toBe(payment.identifier.key);
143
- });
144
- });
145
- });
package/trpc/README.md DELETED
@@ -1,7 +0,0 @@
1
- # trpc
2
-
3
- This library was generated with [Nx](https://nx.dev).
4
-
5
- ## Building
6
-
7
- Run `nx build trpc` to build the library.
@@ -1,25 +0,0 @@
1
- // Mock superjson for Jest testing
2
- module.exports = {
3
- default: {
4
- stringify: JSON.stringify,
5
- parse: JSON.parse,
6
- serialize: (obj) => ({ json: obj, meta: undefined }),
7
- deserialize: (data) => data.json,
8
- output: {
9
- serialize: (obj) => ({ json: obj, meta: undefined })
10
- },
11
- input: {
12
- deserialize: (data) => data.json
13
- }
14
- },
15
- stringify: JSON.stringify,
16
- parse: JSON.parse,
17
- serialize: (obj) => ({ json: obj, meta: undefined }),
18
- deserialize: (data) => data.json,
19
- output: {
20
- serialize: (obj) => ({ json: obj, meta: undefined })
21
- },
22
- input: {
23
- deserialize: (data) => data.json
24
- }
25
- };
@@ -1,19 +0,0 @@
1
- import baseConfig from '../eslint.config.mjs';
2
-
3
- export default [
4
- ...baseConfig,
5
- {
6
- files: ['**/*.json'],
7
- rules: {
8
- '@nx/dependency-checks': [
9
- 'error',
10
- {
11
- ignoredFiles: ['{projectRoot}/eslint.config.{js,cjs,mjs}'],
12
- },
13
- ],
14
- },
15
- languageOptions: {
16
- parser: await import('jsonc-eslint-parser'),
17
- },
18
- },
19
- ];
@@ -1,14 +0,0 @@
1
- export default {
2
- displayName: 'trpc',
3
- preset: '../jest.preset.js',
4
- testEnvironment: 'node',
5
- testTimeout: 15000,
6
- transform: {
7
- '^.+\\.[tj]s$': ['ts-jest', { tsconfig: '<rootDir>/tsconfig.spec.json' }],
8
- },
9
- moduleFileExtensions: ['ts', 'js', 'html'],
10
- moduleNameMapper: {
11
- '^superjson$': '<rootDir>/__mocks__/superjson.js',
12
- },
13
- coverageDirectory: '../coverage/trpc',
14
- };
package/trpc/package.json DELETED
@@ -1,14 +0,0 @@
1
- {
2
- "name": "@reactionary/trpc",
3
- "version": "0.0.1",
4
- "type": "commonjs",
5
- "main": "./src/index.js",
6
- "types": "./src/index.d.ts",
7
- "dependencies": {
8
- "@trpc/server": "^11.1.2",
9
- "@reactionary/core": "0.0.1",
10
- "@reactionary/otel": "0.0.1",
11
- "superjson": "^2.2.2",
12
- "zod": "4.1.9"
13
- }
14
- }
package/trpc/project.json DELETED
@@ -1,31 +0,0 @@
1
- {
2
- "name": "trpc",
3
- "$schema": "../node_modules/nx/schemas/project-schema.json",
4
- "sourceRoot": "trpc/src",
5
- "projectType": "library",
6
- "release": {
7
- "version": {
8
- "manifestRootsToUpdate": ["dist/{projectRoot}"],
9
- "currentVersionResolver": "git-tag",
10
- "fallbackCurrentVersionResolver": "disk"
11
- }
12
- },
13
- "tags": [],
14
- "targets": {
15
- "build": {
16
- "executor": "@nx/esbuild:esbuild",
17
- "outputs": ["{options.outputPath}"],
18
- "options": {
19
- "outputPath": "dist/trpc",
20
- "main": "trpc/src/index.ts",
21
- "tsConfig": "trpc/tsconfig.lib.json",
22
- "format": ["esm"]
23
- }
24
- },
25
- "nx-release-publish": {
26
- "options": {
27
- "packageRoot": "dist/{projectRoot}"
28
- }
29
- }
30
- }
31
- }