@paakd/api 0.0.3 → 0.0.5

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 (124) hide show
  1. package/dist/gen/src/proto/files/v1/entities/file_pb.d.ts +199 -0
  2. package/dist/gen/src/proto/files/v1/entities/file_pb.d.ts.map +1 -0
  3. package/dist/gen/src/proto/files/v1/entities/file_pb.js +77 -0
  4. package/dist/gen/src/proto/files/v1/service_pb.d.ts +44 -0
  5. package/dist/gen/src/proto/files/v1/service_pb.d.ts.map +1 -0
  6. package/dist/gen/src/proto/files/v1/service_pb.js +18 -0
  7. package/dist/gen/src/proto/promotions/v1/entities/campaign_pb.d.ts +391 -0
  8. package/dist/gen/src/proto/promotions/v1/entities/campaign_pb.d.ts.map +1 -0
  9. package/dist/gen/src/proto/promotions/v1/entities/campaign_pb.js +140 -0
  10. package/dist/gen/src/proto/promotions/v1/service_pb.d.ts +68 -0
  11. package/dist/gen/src/proto/promotions/v1/service_pb.d.ts.map +1 -0
  12. package/dist/gen/src/proto/promotions/v1/service_pb.js +18 -0
  13. package/dist/gen/src/proto/stocknodes/v1/entities/stocknode_pb.d.ts +508 -0
  14. package/dist/gen/src/proto/stocknodes/v1/entities/stocknode_pb.d.ts.map +1 -0
  15. package/dist/gen/src/proto/stocknodes/v1/entities/stocknode_pb.js +150 -0
  16. package/dist/gen/src/proto/stocknodes/v1/service_pb.d.ts +68 -0
  17. package/dist/gen/src/proto/stocknodes/v1/service_pb.d.ts.map +1 -0
  18. package/dist/gen/src/proto/stocknodes/v1/service_pb.js +18 -0
  19. package/dist/src/index.d.ts +828 -5
  20. package/dist/src/index.d.ts.map +1 -1
  21. package/dist/src/index.js +48 -5
  22. package/dist/src/interceptors.d.ts +1 -1
  23. package/dist/src/interceptors.d.ts.map +1 -1
  24. package/dist/src/interceptors.js +2 -2
  25. package/package.json +8 -10
  26. package/buf/validate/validate_pb.ts +0 -5001
  27. package/dist/src/address.d.ts +0 -53
  28. package/dist/src/address.d.ts.map +0 -1
  29. package/dist/src/address.js +0 -233
  30. package/dist/src/address.spec.d.ts +0 -2
  31. package/dist/src/address.spec.d.ts.map +0 -1
  32. package/dist/src/address.spec.js +0 -488
  33. package/dist/src/auth.d.ts +0 -27
  34. package/dist/src/auth.d.ts.map +0 -1
  35. package/dist/src/auth.js +0 -155
  36. package/dist/src/auth.spec.d.ts +0 -2
  37. package/dist/src/auth.spec.d.ts.map +0 -1
  38. package/dist/src/auth.spec.js +0 -582
  39. package/dist/src/compressor/brotli.d.ts +0 -3
  40. package/dist/src/compressor/brotli.d.ts.map +0 -1
  41. package/dist/src/compressor/brotli.js +0 -30
  42. package/dist/src/policies.d.ts +0 -217
  43. package/dist/src/policies.d.ts.map +0 -1
  44. package/dist/src/policies.js +0 -322
  45. package/dist/src/policies.spec.d.ts +0 -2
  46. package/dist/src/policies.spec.d.ts.map +0 -1
  47. package/dist/src/policies.spec.js +0 -463
  48. package/dist/src/products.d.ts +0 -39
  49. package/dist/src/products.d.ts.map +0 -1
  50. package/dist/src/products.js +0 -95
  51. package/dist/src/products.spec.d.ts +0 -2
  52. package/dist/src/products.spec.d.ts.map +0 -1
  53. package/dist/src/products.spec.js +0 -519
  54. package/dist/src/profile.d.ts +0 -62
  55. package/dist/src/profile.d.ts.map +0 -1
  56. package/dist/src/profile.js +0 -151
  57. package/dist/src/profile.spec.d.ts +0 -2
  58. package/dist/src/profile.spec.d.ts.map +0 -1
  59. package/dist/src/profile.spec.js +0 -475
  60. package/dist/src/registration.d.ts +0 -60
  61. package/dist/src/registration.d.ts.map +0 -1
  62. package/dist/src/registration.js +0 -147
  63. package/dist/src/test-utils.d.ts +0 -87
  64. package/dist/src/test-utils.d.ts.map +0 -1
  65. package/dist/src/test-utils.js +0 -132
  66. package/gen/buf/validate/validate_pb.ts +0 -4799
  67. package/gen/src/proto/auth/v1/authv1connect/service.connect.go +0 -454
  68. package/gen/src/proto/auth/v1/entities/auth.pb.go +0 -818
  69. package/gen/src/proto/auth/v1/entities/auth_pb.ts +0 -348
  70. package/gen/src/proto/auth/v1/entities/policy.pb.go +0 -727
  71. package/gen/src/proto/auth/v1/entities/policy_pb.ts +0 -306
  72. package/gen/src/proto/auth/v1/service-AuthService_connectquery.ts +0 -70
  73. package/gen/src/proto/auth/v1/service.pb.go +0 -119
  74. package/gen/src/proto/auth/v1/service_pb.ts +0 -152
  75. package/gen/src/proto/customers/v1/customersv1connect/service.connect.go +0 -358
  76. package/gen/src/proto/customers/v1/entities/address.pb.go +0 -1073
  77. package/gen/src/proto/customers/v1/entities/address_pb.ts +0 -478
  78. package/gen/src/proto/customers/v1/entities/profile.pb.go +0 -633
  79. package/gen/src/proto/customers/v1/entities/profile_pb.ts +0 -252
  80. package/gen/src/proto/customers/v1/service-CustomerService_connectquery.ts +0 -50
  81. package/gen/src/proto/customers/v1/service.pb.go +0 -110
  82. package/gen/src/proto/customers/v1/service_pb.ts +0 -121
  83. package/gen/src/proto/files/v1/entities/file.pb.go +0 -669
  84. package/gen/src/proto/files/v1/entities/file_pb.ts +0 -265
  85. package/gen/src/proto/files/v1/filesv1connect/service.connect.go +0 -200
  86. package/gen/src/proto/files/v1/service-FileService_connectquery.ts +0 -25
  87. package/gen/src/proto/files/v1/service.pb.go +0 -85
  88. package/gen/src/proto/files/v1/service_pb.ts +0 -65
  89. package/gen/src/proto/products/v1/entities/category.pb.go +0 -744
  90. package/gen/src/proto/products/v1/entities/category_pb.ts +0 -318
  91. package/gen/src/proto/products/v1/entities/collection.pb.go +0 -528
  92. package/gen/src/proto/products/v1/entities/collection_pb.ts +0 -214
  93. package/gen/src/proto/products/v1/entities/product/create.pb.go +0 -453
  94. package/gen/src/proto/products/v1/entities/product/create_pb.ts +0 -199
  95. package/gen/src/proto/products/v1/entities/product/option.pb.go +0 -206
  96. package/gen/src/proto/products/v1/entities/product/option_pb.ts +0 -74
  97. package/gen/src/proto/products/v1/entities/product/shared.pb.go +0 -2890
  98. package/gen/src/proto/products/v1/entities/product/shared_pb.ts +0 -1317
  99. package/gen/src/proto/products/v1/entities/product/update.pb.go +0 -794
  100. package/gen/src/proto/products/v1/entities/product/update_pb.ts +0 -325
  101. package/gen/src/proto/products/v1/entities/tag.pb.go +0 -610
  102. package/gen/src/proto/products/v1/entities/tag_pb.ts +0 -233
  103. package/gen/src/proto/products/v1/entities/taxonomy.pb.go +0 -1352
  104. package/gen/src/proto/products/v1/entities/taxonomy_pb.ts +0 -606
  105. package/gen/src/proto/products/v1/entities/type.pb.go +0 -553
  106. package/gen/src/proto/products/v1/entities/type_pb.ts +0 -215
  107. package/gen/src/proto/products/v1/entities/variant.pb.go +0 -1474
  108. package/gen/src/proto/products/v1/entities/variant_pb.ts +0 -629
  109. package/gen/src/proto/products/v1/productsv1connect/service.connect.go +0 -1195
  110. package/gen/src/proto/products/v1/service-ProductsService_connectquery.ts +0 -199
  111. package/gen/src/proto/products/v1/service.pb.go +0 -250
  112. package/gen/src/proto/products/v1/service_pb.ts +0 -429
  113. package/gen/src/proto/promotions/v1/entities/campaign.pb.go +0 -1229
  114. package/gen/src/proto/promotions/v1/entities/campaign_pb.ts +0 -511
  115. package/gen/src/proto/promotions/v1/promotionsv1connect/service.connect.go +0 -289
  116. package/gen/src/proto/promotions/v1/service-CampaignService_connectquery.ts +0 -42
  117. package/gen/src/proto/promotions/v1/service.pb.go +0 -98
  118. package/gen/src/proto/promotions/v1/service_pb.ts +0 -95
  119. package/gen/src/proto/stocknodes/v1/entities/stocknode.pb.go +0 -1499
  120. package/gen/src/proto/stocknodes/v1/entities/stocknode_pb.ts +0 -655
  121. package/gen/src/proto/stocknodes/v1/service-StockNodesService_connectquery.ts +0 -41
  122. package/gen/src/proto/stocknodes/v1/service.pb.go +0 -98
  123. package/gen/src/proto/stocknodes/v1/service_pb.ts +0 -95
  124. package/gen/src/proto/stocknodes/v1/stocknodesv1connect/service.connect.go +0 -297
@@ -1,488 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- const connect_1 = require("@connectrpc/connect");
13
- const connect_node_1 = require("@connectrpc/connect-node");
14
- const config_1 = require("@paakd/config");
15
- const address_1 = require("./address");
16
- const interceptors_1 = require("./interceptors");
17
- const test_utils_1 = require("./test-utils");
18
- // Mock dependencies
19
- vi.mock('@connectrpc/connect', () => __awaiter(void 0, void 0, void 0, function* () {
20
- const actual = yield vi.importActual('@connectrpc/connect');
21
- return Object.assign(Object.assign({}, actual), { createClient: vi.fn() });
22
- }));
23
- vi.mock('@connectrpc/connect-node', () => ({
24
- createGrpcTransport: vi.fn(),
25
- }));
26
- vi.mock('@paakd/config', () => ({
27
- getCheckoutConfig: vi.fn(),
28
- }));
29
- vi.mock('./interceptors', () => ({
30
- createAuthenticationInterceptor: vi.fn(),
31
- createCustomerAuthenticationInterceptor: vi.fn(),
32
- createHeadersInterceptor: vi.fn(),
33
- }));
34
- vi.mock('./compressor/brotli', () => ({
35
- brotliCompression: {
36
- name: 'brotli',
37
- compress: vi.fn(),
38
- decompress: vi.fn(),
39
- },
40
- }));
41
- vi.mock('../gen/src/proto/customers/v1/service_pb', () => ({
42
- CustomerService: {},
43
- }));
44
- const mockGetCheckoutConfig = vi.mocked(config_1.getCheckoutConfig);
45
- const mockCreateGrpcTransport = vi.mocked(connect_node_1.createGrpcTransport);
46
- const mockCreateClient = vi.mocked(connect_1.createClient);
47
- const mockCreateHeadersInterceptor = vi.mocked(interceptors_1.createHeadersInterceptor);
48
- const mockCreateAuthenticationInterceptor = vi.mocked(interceptors_1.createAuthenticationInterceptor);
49
- const mockCreateCustomerAuthenticationInterceptor = vi.mocked(interceptors_1.createCustomerAuthenticationInterceptor);
50
- function setupAddressService() {
51
- (0, test_utils_1.clearAllMocks)();
52
- const { config, interceptors, transport } = (0, test_utils_1.setupCommonMocks)();
53
- const client = {
54
- getAddresses: vi.fn(),
55
- getAddress: vi.fn(),
56
- addAddress: vi.fn(),
57
- updateAddress: vi.fn(),
58
- deleteAddress: vi.fn(),
59
- };
60
- mockGetCheckoutConfig.mockResolvedValue(config);
61
- mockCreateGrpcTransport.mockReturnValue(transport);
62
- mockCreateHeadersInterceptor.mockImplementation(() => next => (req) => __awaiter(this, void 0, void 0, function* () {
63
- return yield next(req);
64
- }));
65
- mockCreateAuthenticationInterceptor.mockImplementation(() => next => (req) => __awaiter(this, void 0, void 0, function* () {
66
- return yield next(req);
67
- }));
68
- mockCreateCustomerAuthenticationInterceptor.mockImplementation(() => next => (req) => __awaiter(this, void 0, void 0, function* () {
69
- return yield next(req);
70
- }));
71
- mockCreateClient.mockReturnValue(client);
72
- return {
73
- client,
74
- config,
75
- interceptors,
76
- transport,
77
- };
78
- }
79
- describe('Address Service', () => {
80
- let consoleSpy;
81
- beforeEach(() => {
82
- consoleSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
83
- });
84
- afterEach(() => {
85
- consoleSpy.mockRestore();
86
- });
87
- describe('getAddresses', () => {
88
- it('should successfully fetch all addresses for a customer', () => __awaiter(void 0, void 0, void 0, function* () {
89
- const { client } = setupAddressService();
90
- const mockAddresses = [
91
- {
92
- id: 'addr-1',
93
- customerId: 'cust-1',
94
- street: '123 Main St',
95
- city: 'New York',
96
- },
97
- {
98
- id: 'addr-2',
99
- customerId: 'cust-1',
100
- street: '456 Oak Ave',
101
- city: 'Los Angeles',
102
- },
103
- ];
104
- client.getAddresses.mockResolvedValue({ addresses: mockAddresses });
105
- const result = yield (0, address_1.getAddresses)({
106
- body: {
107
- customerId: 'cust-1',
108
- jwt: 'token-123',
109
- },
110
- headers: {},
111
- });
112
- expect(result.status === 'success' && result.value).toBe(mockAddresses);
113
- }));
114
- it('should handle customer not found error', () => __awaiter(void 0, void 0, void 0, function* () {
115
- const { client } = setupAddressService();
116
- const error = (0, test_utils_1.createMockConnectError)(5, 'NOT_FOUND', 'Customer not found');
117
- client.getAddresses.mockRejectedValue(error);
118
- const result = yield (0, address_1.getAddresses)({
119
- body: {
120
- customerId: 'invalid-customer',
121
- jwt: 'token-123',
122
- },
123
- headers: {},
124
- });
125
- expect(result.status).toBe('failed');
126
- expect(result.code).toBe(5);
127
- }));
128
- it('should reject request with invalid JWT', () => __awaiter(void 0, void 0, void 0, function* () {
129
- const { client } = setupAddressService();
130
- const error = (0, test_utils_1.createMockConnectError)(16, 'UNAUTHENTICATED', 'Invalid JWT token');
131
- client.getAddresses.mockRejectedValue(error);
132
- const result = yield (0, address_1.getAddresses)({
133
- body: {
134
- customerId: 'cust-1',
135
- jwt: 'invalid-token',
136
- },
137
- headers: {},
138
- });
139
- expect(result.status).toBe('failed');
140
- }));
141
- it('should return empty list when customer has no addresses', () => __awaiter(void 0, void 0, void 0, function* () {
142
- const { client } = setupAddressService();
143
- client.getAddresses.mockResolvedValue({ addresses: [] });
144
- const result = yield (0, address_1.getAddresses)({
145
- body: {
146
- customerId: 'cust-1',
147
- jwt: 'token-123',
148
- },
149
- headers: {},
150
- });
151
- expect(result.status).toBe('success');
152
- expect(result.value).toEqual([]);
153
- }));
154
- });
155
- describe('getAddress', () => {
156
- it('should successfully fetch a single address', () => __awaiter(void 0, void 0, void 0, function* () {
157
- const { client } = setupAddressService();
158
- const mockAddress = {
159
- id: 'addr-1',
160
- customerId: 'cust-1',
161
- street: '123 Main St',
162
- city: 'New York',
163
- state: 'NY',
164
- zipCode: '10001',
165
- };
166
- client.getAddress.mockResolvedValue(mockAddress);
167
- const result = yield (0, address_1.getAddress)({
168
- body: {
169
- customerId: 'cust-1',
170
- addressId: 'addr-1',
171
- jwt: 'token-123',
172
- },
173
- headers: {},
174
- });
175
- expect(result.status).toBe('success');
176
- expect(result.value).toEqual(mockAddress);
177
- }));
178
- it('should return not found when address does not exist', () => __awaiter(void 0, void 0, void 0, function* () {
179
- const { client } = setupAddressService();
180
- const error = (0, test_utils_1.createMockConnectError)(5, 'NOT_FOUND', 'Address not found');
181
- client.getAddress.mockRejectedValue(error);
182
- const result = yield (0, address_1.getAddress)({
183
- body: {
184
- customerId: 'cust-1',
185
- addressId: 'invalid-addr',
186
- jwt: 'token-123',
187
- },
188
- headers: {},
189
- });
190
- expect(result.status).toBe('failed');
191
- }));
192
- it('should require valid JWT', () => __awaiter(void 0, void 0, void 0, function* () {
193
- const { client } = setupAddressService();
194
- const error = (0, test_utils_1.createMockConnectError)(16, 'UNAUTHENTICATED', 'Unauthenticated');
195
- client.getAddress.mockRejectedValue(error);
196
- const result = yield (0, address_1.getAddress)({
197
- body: {
198
- customerId: 'cust-1',
199
- addressId: 'addr-1',
200
- jwt: '',
201
- },
202
- headers: {},
203
- });
204
- expect(result.status).toBe('failed');
205
- }));
206
- });
207
- describe('addAddress', () => {
208
- it('should successfully add a new address', () => __awaiter(void 0, void 0, void 0, function* () {
209
- const { client } = setupAddressService();
210
- const newAddress = {
211
- customerId: 'cust-1',
212
- firstName: 'Jane',
213
- lastName: 'Doe',
214
- address1: '789 Pine St',
215
- address2: '',
216
- address3: '',
217
- city: 'Chicago',
218
- zipCode: '60601',
219
- country: 'US',
220
- phoneNumber: '555-9999',
221
- };
222
- const mockResponse = {
223
- address: Object.assign({ id: 'addr-3' }, newAddress),
224
- };
225
- client.addAddress.mockResolvedValue(mockResponse);
226
- const result = yield (0, address_1.addAddress)({
227
- body: Object.assign(Object.assign({}, newAddress), { jwt: 'token-123' }),
228
- headers: {},
229
- });
230
- expect(result.status).toBe('success');
231
- expect(result.value).toEqual(mockResponse.address);
232
- }));
233
- it('should reject invalid address data', () => __awaiter(void 0, void 0, void 0, function* () {
234
- const { client } = setupAddressService();
235
- const error = (0, test_utils_1.createMockConnectError)(3, 'INVALID_ARGUMENT', 'Invalid address data');
236
- client.addAddress.mockRejectedValue(error);
237
- const result = yield (0, address_1.addAddress)({
238
- body: {
239
- customerId: 'cust-1',
240
- firstName: 'Jane',
241
- lastName: 'Doe',
242
- address1: '',
243
- address2: '',
244
- address3: '',
245
- city: '',
246
- zipCode: '',
247
- country: 'US',
248
- phoneNumber: '555-1234',
249
- jwt: 'token-123',
250
- },
251
- headers: {},
252
- });
253
- expect(result.status).toBe('failed');
254
- }));
255
- it('should reject requests without authentication', () => __awaiter(void 0, void 0, void 0, function* () {
256
- const { client } = setupAddressService();
257
- const error = (0, test_utils_1.createMockConnectError)(16, 'UNAUTHENTICATED', 'Authentication required');
258
- client.addAddress.mockRejectedValue(error);
259
- const result = yield (0, address_1.addAddress)({
260
- body: {
261
- customerId: 'cust-1',
262
- firstName: 'Jane',
263
- lastName: 'Doe',
264
- address1: '789 Pine St',
265
- address2: '',
266
- address3: '',
267
- city: 'Chicago',
268
- zipCode: '60601',
269
- country: 'US',
270
- phoneNumber: '555-1234',
271
- jwt: 'invalid-token',
272
- },
273
- headers: {},
274
- });
275
- expect(result.status).toBe('failed');
276
- }));
277
- });
278
- describe('updateAddress', () => {
279
- it('should successfully update an existing address', () => __awaiter(void 0, void 0, void 0, function* () {
280
- const { client } = setupAddressService();
281
- const updateData = {
282
- id: 'addr-1',
283
- customerId: 'cust-1',
284
- firstName: 'John',
285
- lastName: 'Doe',
286
- address1: '123 Main St Updated',
287
- address2: '',
288
- address3: '',
289
- city: 'New York',
290
- zipCode: '10001',
291
- country: 'US',
292
- phoneNumber: '555-1234',
293
- };
294
- const mockResponse = {
295
- address: Object.assign(Object.assign({}, updateData), { zipCode: '10001' }),
296
- };
297
- client.updateAddress.mockResolvedValue(mockResponse);
298
- const result = yield (0, address_1.updateAddress)({
299
- body: Object.assign(Object.assign({}, updateData), { jwt: 'token-123' }),
300
- headers: {},
301
- });
302
- expect(result.status).toBe('success');
303
- expect(result.value).toEqual(mockResponse.address);
304
- }));
305
- it('should return not found for non-existent address', () => __awaiter(void 0, void 0, void 0, function* () {
306
- const { client } = setupAddressService();
307
- const error = (0, test_utils_1.createMockConnectError)(5, 'NOT_FOUND', 'Address not found');
308
- client.updateAddress.mockRejectedValue(error);
309
- const result = yield (0, address_1.updateAddress)({
310
- body: {
311
- id: 'addr-1',
312
- customerId: 'cust-1',
313
- firstName: 'John',
314
- lastName: 'Doe',
315
- addressId: 'addr-1',
316
- street: 'Some St',
317
- address1: 'Some St',
318
- address2: '',
319
- city: 'Some City',
320
- state: 'NY',
321
- zipCode: '10001',
322
- country: 'US',
323
- phoneNumber: '555-1234',
324
- jwt: 'token-123',
325
- },
326
- headers: {},
327
- });
328
- expect(result.status).toBe('failed');
329
- }));
330
- it('should reject updates with invalid data', () => __awaiter(void 0, void 0, void 0, function* () {
331
- const { client } = setupAddressService();
332
- const error = (0, test_utils_1.createMockConnectError)(3, 'INVALID_ARGUMENT', 'Invalid update data');
333
- client.updateAddress.mockRejectedValue(error);
334
- const result = yield (0, address_1.updateAddress)({
335
- body: {
336
- id: 'addr-1',
337
- customerId: 'cust-1',
338
- street: '',
339
- city: '',
340
- jwt: 'token-123',
341
- },
342
- headers: {},
343
- });
344
- expect(result.status).toBe('failed');
345
- }));
346
- });
347
- describe('deleteAddress', () => {
348
- it('should successfully delete an address', () => __awaiter(void 0, void 0, void 0, function* () {
349
- const { client } = setupAddressService();
350
- const mockResponse = {
351
- success: true,
352
- };
353
- client.deleteAddress.mockResolvedValue(mockResponse);
354
- const result = yield (0, address_1.deleteAddress)({
355
- body: {
356
- customerId: 'cust-1',
357
- addressId: 'addr-1',
358
- jwt: 'token-123',
359
- },
360
- headers: {},
361
- });
362
- expect(result.status).toBe('success');
363
- expect(result.value).toEqual(mockResponse);
364
- }));
365
- it('should return not found when address does not exist', () => __awaiter(void 0, void 0, void 0, function* () {
366
- const { client } = setupAddressService();
367
- const error = (0, test_utils_1.createMockConnectError)(5, 'NOT_FOUND', 'Address not found');
368
- client.deleteAddress.mockRejectedValue(error);
369
- const result = yield (0, address_1.deleteAddress)({
370
- body: {
371
- customerId: 'cust-1',
372
- addressId: 'invalid-addr',
373
- jwt: 'token-123',
374
- },
375
- headers: {},
376
- });
377
- expect(result.status).toBe('failed');
378
- }));
379
- it('should reject deletion without authentication', () => __awaiter(void 0, void 0, void 0, function* () {
380
- const { client } = setupAddressService();
381
- const error = (0, test_utils_1.createMockConnectError)(16, 'UNAUTHENTICATED', 'Authentication required');
382
- client.deleteAddress.mockRejectedValue(error);
383
- const result = yield (0, address_1.deleteAddress)({
384
- body: {
385
- customerId: 'cust-1',
386
- addressId: 'addr-1',
387
- jwt: 'invalid-token',
388
- },
389
- headers: {},
390
- });
391
- expect(result.status).toBe('failed');
392
- }));
393
- it('should handle service errors gracefully', () => __awaiter(void 0, void 0, void 0, function* () {
394
- const { client } = setupAddressService();
395
- const error = (0, test_utils_1.createMockConnectError)(13, 'INTERNAL', 'Internal server error');
396
- client.deleteAddress.mockRejectedValue(error);
397
- const result = yield (0, address_1.deleteAddress)({
398
- body: {
399
- customerId: 'cust-1',
400
- addressId: 'addr-1',
401
- jwt: 'token-123',
402
- },
403
- headers: {},
404
- });
405
- expect(result.status).toBe('failed');
406
- expect(result.code).toBe(connect_1.Code.Internal);
407
- }));
408
- });
409
- describe('Address Service - Common Behavior', () => {
410
- it('should apply all interceptors correctly', () => __awaiter(void 0, void 0, void 0, function* () {
411
- const { client } = setupAddressService();
412
- client.getAddresses.mockResolvedValue({ addresses: [] });
413
- const headers = {
414
- 'x-shop-id': '123',
415
- 'x-locale': 'en-US',
416
- };
417
- yield (0, address_1.getAddresses)({
418
- body: {
419
- customerId: 'cust-1',
420
- jwt: 'token-123',
421
- },
422
- headers,
423
- });
424
- expect(mockCreateHeadersInterceptor).toHaveBeenCalledWith(headers);
425
- expect(mockCreateAuthenticationInterceptor).toHaveBeenCalled();
426
- expect(mockCreateCustomerAuthenticationInterceptor).toHaveBeenCalledWith('token-123');
427
- }));
428
- it('should load configuration for each request', () => __awaiter(void 0, void 0, void 0, function* () {
429
- const { client } = setupAddressService();
430
- client.getAddresses.mockResolvedValue({ addresses: [] });
431
- yield (0, address_1.getAddresses)({
432
- body: {
433
- customerId: 'cust-1',
434
- jwt: 'token-123',
435
- },
436
- headers: {},
437
- });
438
- expect(mockGetCheckoutConfig).toHaveBeenCalled();
439
- }));
440
- it('should create transport with compression enabled', () => __awaiter(void 0, void 0, void 0, function* () {
441
- const { client } = setupAddressService();
442
- client.getAddresses.mockResolvedValue({ addresses: [] });
443
- yield (0, address_1.getAddresses)({
444
- body: {
445
- customerId: 'cust-1',
446
- jwt: 'token-123',
447
- },
448
- headers: {},
449
- });
450
- expect(mockCreateGrpcTransport).toHaveBeenCalledWith(expect.objectContaining({
451
- acceptCompression: expect.any(Array),
452
- sendCompression: expect.any(Object),
453
- }));
454
- }));
455
- it('should handle concurrent requests independently', () => __awaiter(void 0, void 0, void 0, function* () {
456
- const { client } = setupAddressService();
457
- const mockAddresses = [
458
- { id: 'addr-1', customerId: 'cust-1', street: '123 Main St' },
459
- ];
460
- client.getAddresses.mockResolvedValue({ addresses: mockAddresses });
461
- const results = yield Promise.all([
462
- (0, address_1.getAddresses)({
463
- body: {
464
- customerId: 'cust-1',
465
- jwt: 'token-1',
466
- },
467
- headers: {},
468
- }),
469
- (0, address_1.getAddresses)({
470
- body: {
471
- customerId: 'cust-2',
472
- jwt: 'token-2',
473
- },
474
- headers: {},
475
- }),
476
- (0, address_1.getAddresses)({
477
- body: {
478
- customerId: 'cust-3',
479
- jwt: 'token-3',
480
- },
481
- headers: {},
482
- }),
483
- ]);
484
- expect(results).toHaveLength(3);
485
- expect(results.every(r => r.status === 'success')).toBe(true);
486
- }));
487
- });
488
- });
@@ -1,27 +0,0 @@
1
- import type { ChangePasswordRequest } from '../gen/src/proto/customers/v1/entities/profile_pb';
2
- import type { LoginResponse } from '../gen/src/proto/auth/v1/entities/auth_pb';
3
- import type { ApiResponse, SuccessResponse, ErrorResponse } from './address';
4
- export interface LoginRequestProps {
5
- body: {
6
- email: string;
7
- password: string;
8
- };
9
- headers: Record<string, string | null>;
10
- }
11
- export interface RefreshTokenRequestProps {
12
- body: {
13
- refreshToken: string;
14
- };
15
- headers: Record<string, string | null>;
16
- }
17
- export interface ChangePasswordRequestProps {
18
- body: ChangePasswordRequest & {
19
- jwt: string;
20
- };
21
- headers: Record<string, string | null>;
22
- }
23
- export type { ApiResponse, SuccessResponse, ErrorResponse };
24
- export declare function login({ body: { email, password }, headers, }: LoginRequestProps): Promise<ApiResponse<LoginResponse>>;
25
- export declare function refreshToken({ body: { refreshToken }, headers, }: RefreshTokenRequestProps): Promise<ApiResponse<LoginResponse>>;
26
- export declare function changePassword({ body: { jwt, ...prop }, headers, }: ChangePasswordRequestProps): Promise<ApiResponse<any>>;
27
- //# sourceMappingURL=auth.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/auth.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAA;AAE9F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAA;AAO9E,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAE5E,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAA;QACb,QAAQ,EAAE,MAAM,CAAA;KACjB,CAAA;IACD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAA;CACvC;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE;QACJ,YAAY,EAAE,MAAM,CAAA;KACrB,CAAA;IACD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAA;CACvC;AAED,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,qBAAqB,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;IAC7C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAA;CACvC;AAGD,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,CAAA;AAE3D,wBAAsB,KAAK,CAAC,EAC1B,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EACzB,OAAO,GACR,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAwCzD;AAED,wBAAsB,YAAY,CAAC,EACjC,IAAI,EAAE,EAAE,YAAY,EAAE,EACtB,OAAO,GACR,EAAE,wBAAwB,GAAG,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAsChE;AAED,wBAAsB,cAAc,CAAC,EACnC,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EACtB,OAAO,GACR,EAAE,0BAA0B,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAsCxD"}
package/dist/src/auth.js DELETED
@@ -1,155 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __rest = (this && this.__rest) || function (s, e) {
12
- var t = {};
13
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
14
- t[p] = s[p];
15
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
16
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
17
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
18
- t[p[i]] = s[p[i]];
19
- }
20
- return t;
21
- };
22
- Object.defineProperty(exports, "__esModule", { value: true });
23
- exports.login = login;
24
- exports.refreshToken = refreshToken;
25
- exports.changePassword = changePassword;
26
- const connect_1 = require("@connectrpc/connect");
27
- const connect_node_1 = require("@connectrpc/connect-node");
28
- const config_1 = require("@paakd/config");
29
- const service_pb_1 = require("../gen/src/proto/auth/v1/service_pb");
30
- const service_pb_2 = require("../gen/src/proto/customers/v1/service_pb");
31
- const brotli_1 = require("./compressor/brotli");
32
- const interceptors_1 = require("./interceptors");
33
- function login(_a) {
34
- return __awaiter(this, arguments, void 0, function* ({ body: { email, password }, headers, }) {
35
- const checkoutConfig = yield (0, config_1.getCheckoutConfig)();
36
- const transport = (0, connect_node_1.createGrpcTransport)({
37
- baseUrl: checkoutConfig.enterpriseURL,
38
- interceptors: [
39
- (0, interceptors_1.createHeadersInterceptor)(headers),
40
- (0, interceptors_1.createAuthenticationInterceptor)(checkoutConfig),
41
- ],
42
- acceptCompression: [brotli_1.brotliCompression],
43
- sendCompression: brotli_1.brotliCompression,
44
- });
45
- const auth = (0, connect_1.createClient)(service_pb_1.AuthService, transport);
46
- try {
47
- const value = yield auth.login({
48
- email,
49
- password,
50
- });
51
- console.log('Login successful for email:', email);
52
- return {
53
- value,
54
- status: 'success',
55
- };
56
- }
57
- catch (err) {
58
- console.log('Error during login:', err);
59
- if (err instanceof connect_1.ConnectError) {
60
- return {
61
- code: err.code,
62
- rawMessage: err.rawMessage,
63
- message: err.rawMessage,
64
- status: 'failed',
65
- };
66
- }
67
- return {
68
- code: connect_1.Code.Internal,
69
- rawMessage: 'An unexpected error occurred during login.',
70
- message: 'An unexpected error occurred during login.',
71
- status: 'failed',
72
- };
73
- }
74
- });
75
- }
76
- function refreshToken(_a) {
77
- return __awaiter(this, arguments, void 0, function* ({ body: { refreshToken }, headers, }) {
78
- const checkoutConfig = yield (0, config_1.getCheckoutConfig)();
79
- const transport = (0, connect_node_1.createGrpcTransport)({
80
- baseUrl: checkoutConfig.enterpriseURL,
81
- interceptors: [
82
- (0, interceptors_1.createHeadersInterceptor)(headers),
83
- (0, interceptors_1.createAuthenticationInterceptor)(checkoutConfig),
84
- ],
85
- acceptCompression: [brotli_1.brotliCompression],
86
- sendCompression: brotli_1.brotliCompression,
87
- });
88
- const auth = (0, connect_1.createClient)(service_pb_1.AuthService, transport);
89
- try {
90
- const value = yield auth.refreshToken({
91
- refreshToken,
92
- });
93
- return {
94
- value,
95
- status: 'success',
96
- };
97
- }
98
- catch (err) {
99
- if (err instanceof connect_1.ConnectError) {
100
- return {
101
- code: err.code,
102
- rawMessage: err.rawMessage,
103
- message: err.rawMessage,
104
- status: 'failed',
105
- };
106
- }
107
- return {
108
- code: connect_1.Code.Internal,
109
- rawMessage: 'An unexpected error occurred while refreshing the token.',
110
- message: 'An unexpected error occurred while refreshing the token.',
111
- status: 'failed',
112
- };
113
- }
114
- });
115
- }
116
- function changePassword(_a) {
117
- return __awaiter(this, void 0, void 0, function* () {
118
- var _b = _a.body, { jwt } = _b, prop = __rest(_b, ["jwt"]), { headers } = _a;
119
- const checkoutConfig = yield (0, config_1.getCheckoutConfig)();
120
- const transport = (0, connect_node_1.createGrpcTransport)({
121
- baseUrl: checkoutConfig.enterpriseURL,
122
- interceptors: [
123
- (0, interceptors_1.createHeadersInterceptor)(headers),
124
- (0, interceptors_1.createAuthenticationInterceptor)(checkoutConfig),
125
- (0, interceptors_1.createCustomerAuthenticationInterceptor)(jwt),
126
- ],
127
- acceptCompression: [brotli_1.brotliCompression],
128
- sendCompression: brotli_1.brotliCompression,
129
- });
130
- const profile = (0, connect_1.createClient)(service_pb_2.CustomerService, transport);
131
- try {
132
- const value = yield profile.changePassword(prop);
133
- return {
134
- value,
135
- status: 'success',
136
- };
137
- }
138
- catch (err) {
139
- if (err instanceof connect_1.ConnectError) {
140
- return {
141
- code: err.code,
142
- rawMessage: err.rawMessage,
143
- message: err.rawMessage,
144
- status: 'failed',
145
- };
146
- }
147
- return {
148
- code: connect_1.Code.Internal,
149
- rawMessage: 'profile change password failed',
150
- message: 'An unexpected error occurred during profile change password.',
151
- status: 'failed',
152
- };
153
- }
154
- });
155
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=auth.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.spec.d.ts","sourceRoot":"","sources":["../../src/auth.spec.ts"],"names":[],"mappings":""}