@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,162 +0,0 @@
1
- import { ClientBuilder, NoOpCache } from '@reactionary/core';
2
- import { withFakeCapabilities } from '@reactionary/provider-fake';
3
- import { createTRPCServerRouter, introspectClient } from './index';
4
- import { createAnonymousTestSession } from './test-utils';
5
-
6
- /**
7
- * Test suite for TRPC transparent client functionality
8
- * This tests the core introspection and router generation without HTTP setup
9
- */
10
-
11
- // Jest test framework is now available
12
-
13
- // Create the server-side client using the same pattern as examples/node
14
- const serverClient = new ClientBuilder()
15
- .withCapability(
16
- withFakeCapabilities(
17
- {
18
- jitter: {
19
- mean: 0,
20
- deviation: 0,
21
- },
22
- seeds: {
23
- category: 1,
24
- product: 1,
25
- search: 1
26
- }
27
- },
28
- { search: true, product: true, identity: false }
29
- )
30
- )
31
- .withCache(new NoOpCache())
32
- .build();
33
-
34
- // Create TRPC router from the client
35
- const router = createTRPCServerRouter(serverClient);
36
-
37
- xdescribe('TRPC Transparent Client Core Functionality', () => {
38
-
39
- const session = createAnonymousTestSession();
40
-
41
- describe('Client Introspection', () => {
42
- it('should correctly introspect client methods', () => {
43
- const methods = introspectClient(serverClient);
44
-
45
- expect(methods.length).toBeGreaterThan(0);
46
-
47
- // Should find product methods
48
- const productMethods = methods.filter(m => m.providerName === 'product');
49
- expect(productMethods.length).toBeGreaterThan(0);
50
-
51
- const getBySlugMethod = productMethods.find(m => m.name === 'getBySlug');
52
- expect(getBySlugMethod).toBeDefined();
53
- expect(getBySlugMethod!.isQuery).toBe(true);
54
- expect(getBySlugMethod!.isMutation).toBe(false);
55
-
56
- // Should find search methods
57
- const searchMethods = methods.filter(m => m.providerName === 'search');
58
- expect(searchMethods.length).toBeGreaterThan(0);
59
-
60
- const queryByTermMethod = searchMethods.find(m => m.name === 'queryByTerm');
61
- expect(queryByTermMethod).toBeDefined();
62
- expect(queryByTermMethod!.isQuery).toBe(true);
63
-
64
- // Note: Only testing enabled providers (product and search)
65
- });
66
- });
67
-
68
- describe('Router Generation', () => {
69
- it('should create TRPC router from client', () => {
70
- expect(router).toBeDefined();
71
-
72
- // Router should be an object (TRPC router)
73
- expect(typeof router).toBe('object');
74
- expect(router).toBeDefined();
75
- });
76
-
77
- it('should handle provider methods correctly', () => {
78
- const methods = introspectClient(serverClient);
79
- const providerNames = [...new Set(methods.map(m => m.providerName))];
80
-
81
- // Should have enabled providers
82
- expect(providerNames).toContain('product');
83
- expect(providerNames).toContain('search');
84
- });
85
- });
86
-
87
- describe('Method Classification', () => {
88
- it('should correctly classify query methods', () => {
89
- const methods = introspectClient(serverClient);
90
-
91
- const queryMethods = methods.filter(m => m.isQuery);
92
- const queryMethodNames = queryMethods.map(m => m.name);
93
-
94
- // Should include get* methods from enabled providers
95
- expect(queryMethodNames).toContain('getById');
96
- expect(queryMethodNames).toContain('getBySlug');
97
-
98
- // Should include query* methods
99
- expect(queryMethodNames).toContain('queryByTerm');
100
- });
101
-
102
- it('should correctly classify mutation methods', () => {
103
- const methods = introspectClient(serverClient);
104
-
105
- const mutationMethods = methods.filter(m => m.isMutation);
106
- const mutationMethodNames = mutationMethods.map(m => m.name);
107
-
108
- // With current setup, only search and product are enabled
109
- // No mutations expected from these providers
110
- });
111
- });
112
-
113
- describe('Direct Client Functionality', () => {
114
- it('should have working product provider', async () => {
115
- const result = await serverClient.product.getBySlug(
116
- { slug: 'test-product' },
117
- session
118
- );
119
-
120
- expect(result).toBeDefined();
121
- expect(result.slug).toBe('test-product');
122
- expect(result.name).toBeDefined();
123
- expect(result.description).toBeDefined();
124
- });
125
-
126
- it('should have working search provider', async () => {
127
- const result = await serverClient.search.queryByTerm(
128
- {
129
- search: {
130
- term: 'test search',
131
- page: 0,
132
- pageSize: 10,
133
- facets: []
134
- }
135
- },
136
- session
137
- );
138
-
139
- expect(result).toBeDefined();
140
- expect(result.products).toBeDefined();
141
- expect(result.facets).toBeDefined();
142
- });
143
-
144
- // Only testing enabled providers (product and search)
145
- });
146
-
147
- describe('Type System Validation', () => {
148
- it('should maintain provider interface structure', () => {
149
- // Verify the client has expected enabled provider structure
150
- expect(serverClient.product).toBeDefined();
151
- expect(serverClient.search).toBeDefined();
152
-
153
- // Verify methods exist
154
- expect(typeof serverClient.product.getById).toBe('function');
155
- expect(typeof serverClient.product.getBySlug).toBe('function');
156
- expect(typeof serverClient.search.queryByTerm).toBe('function');
157
- });
158
- });
159
- });
160
-
161
- // Export for potential use in other tests
162
- export { serverClient, router };
package/trpc/src/types.ts DELETED
@@ -1,144 +0,0 @@
1
- import type {
2
- Client,
3
- RequestContext,
4
- Session} from '@reactionary/core';
5
- import {
6
- BaseProvider
7
- } from '@reactionary/core';
8
-
9
- /**
10
- * Extract method names from a provider that match TRPC patterns
11
- */
12
- export type ProviderMethods<T> = T extends BaseProvider
13
- ? {
14
- [K in keyof T]: T[K] extends (...args: any[]) => any
15
- ? K extends `get${string}` | `query${string}` | 'add' | 'remove' | 'changeQuantity' | 'login' | 'logout' | 'getSelf'
16
- ? K
17
- : never
18
- : never
19
- }[keyof T]
20
- : never;
21
-
22
- /**
23
- * Extract method signature from a provider method
24
- */
25
- export type ProviderMethodSignature<T, K extends keyof T> =
26
- T[K] extends (...args: infer Args) => infer Return
27
- ? (...args: Args) => Return
28
- : never;
29
-
30
- /**
31
- * Map all methods of all providers in a client
32
- */
33
- export type ClientMethodMap<T extends Partial<Client>> = {
34
- [K in keyof T]: T[K] extends BaseProvider
35
- ? {
36
- [M in ProviderMethods<T[K]>]: ProviderMethodSignature<T[K], M>
37
- }
38
- : never;
39
- };
40
-
41
-
42
- /**
43
- * Create transparent client that only includes methods matching TRPC patterns
44
- */
45
- export type TransparentClient<T extends Partial<Client>> = {
46
- [K in keyof T]: T[K] extends BaseProvider
47
- ? {
48
- [M in ProviderMethods<T[K]>]: ProviderMethodSignature<T[K], M>
49
- }
50
- : never;
51
- };
52
-
53
- /**
54
- * Extract method information for TRPC procedure creation
55
- */
56
- export interface MethodInfo {
57
- name: string;
58
- providerName: string;
59
- isQuery: boolean;
60
- isMutation: boolean;
61
- method: (...args: any[]) => any;
62
- }
63
-
64
-
65
- /**
66
- * Utility to determine if a method is a query or mutation based on naming convention
67
- */
68
- export function isQueryMethod(methodName: string): boolean {
69
- return methodName.startsWith('get') ||
70
- methodName.startsWith('query') ||
71
- methodName === 'getSelf';
72
- }
73
-
74
- export function isMutationMethod(methodName: string): boolean {
75
- return !isQueryMethod(methodName) && (
76
- methodName === 'add' ||
77
- methodName === 'remove' ||
78
- methodName === 'changeQuantity' ||
79
- methodName === 'login' ||
80
- methodName === 'logout'
81
- );
82
- }
83
-
84
- /**
85
- * Introspect a client instance to extract all provider methods matching naming patterns
86
- */
87
- export function introspectClient<T extends Partial<Client>>(client: T): MethodInfo[] {
88
- const methods: MethodInfo[] = [];
89
-
90
- for (const [providerName, provider] of Object.entries(client)) {
91
- if (provider instanceof BaseProvider) {
92
- // Get all methods that match our naming patterns
93
- for (const key of Object.getOwnPropertyNames(Object.getPrototypeOf(provider))) {
94
- const method = (provider as any)[key];
95
- if (typeof method === 'function' && key !== 'constructor') {
96
- if (isQueryMethod(key) || isMutationMethod(key)) {
97
- methods.push({
98
- name: key,
99
- providerName,
100
- isQuery: isQueryMethod(key),
101
- isMutation: isMutationMethod(key),
102
- method: method.bind(provider)
103
- });
104
- }
105
- }
106
- }
107
- }
108
- }
109
-
110
- return methods;
111
- }
112
-
113
- /**
114
- * Type for TRPC procedure input - includes payload and session
115
- */
116
- export interface TRPCMethodInput<TPayload = any> {
117
- payload: TPayload;
118
- session?: Session;
119
- }
120
-
121
- /**
122
- * Helper to extract payload type from a provider method
123
- */
124
- export type ExtractPayloadType<T> = T extends (payload: infer P, reqCtx: RequestContext) => any
125
- ? P
126
- : T extends (payload: infer P) => any
127
- ? P
128
- : never;
129
-
130
- /**
131
- * Helper to extract return type from a provider method
132
- */
133
- export type ExtractReturnType<T> = T extends (...args: any[]) => infer R
134
- ? R
135
- : never;
136
-
137
- /**
138
- * Create a TRPC-compatible method signature from a provider method
139
- */
140
- export type TRPCMethodSignature<T> = T extends (payload: infer P, reqCtx: RequestContext) => infer R
141
- ? (input: TRPCMethodInput<P>) => R
142
- : T extends (payload: infer P) => infer R
143
- ? (input: TRPCMethodInput<P>) => R
144
- : never;
@@ -1,16 +0,0 @@
1
- {
2
- "extends": "../tsconfig.base.json",
3
- "compilerOptions": {
4
- "module": "commonjs"
5
- },
6
- "files": [],
7
- "include": [],
8
- "references": [
9
- {
10
- "path": "./tsconfig.lib.json"
11
- },
12
- {
13
- "path": "./tsconfig.spec.json"
14
- }
15
- ]
16
- }
@@ -1,10 +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": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"]
10
- }
@@ -1,15 +0,0 @@
1
- {
2
- "extends": "./tsconfig.json",
3
- "compilerOptions": {
4
- "outDir": "../dist/out-tsc",
5
- "module": "commonjs",
6
- "moduleResolution": "node10",
7
- "types": ["jest", "node"]
8
- },
9
- "include": [
10
- "jest.config.ts",
11
- "src/**/*.test.ts",
12
- "src/**/*.spec.ts",
13
- "src/**/*.d.ts"
14
- ]
15
- }