@simpleapps-com/augur-api 0.9.10 → 0.9.12

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 (34) hide show
  1. package/dist/cjs/index.d.ts +1 -1
  2. package/dist/cjs/index.js +1 -1
  3. package/dist/cjs/services/items/resources/item-favorites.d.ts +2 -2
  4. package/dist/cjs/services/items/schemas/favorites.d.ts +8 -8
  5. package/dist/cjs/services/items/schemas/favorites.d.ts.map +1 -1
  6. package/dist/cjs/services/items/schemas/favorites.js +3 -3
  7. package/dist/cjs/services/items/schemas/favorites.js.map +1 -1
  8. package/dist/cjs/services/items/schemas/itemFavorites.d.ts +6 -6
  9. package/dist/cjs/services/items/schemas/itemFavorites.js +1 -1
  10. package/dist/cjs/testing.d.ts +79 -0
  11. package/dist/cjs/testing.d.ts.map +1 -0
  12. package/dist/cjs/testing.js +171 -0
  13. package/dist/cjs/testing.js.map +1 -0
  14. package/dist/esm/index.d.ts +1 -1
  15. package/dist/esm/index.js +1 -1
  16. package/dist/esm/services/items/resources/item-favorites.d.ts +2 -2
  17. package/dist/esm/services/items/schemas/favorites.d.ts +8 -8
  18. package/dist/esm/services/items/schemas/favorites.d.ts.map +1 -1
  19. package/dist/esm/services/items/schemas/favorites.js +3 -3
  20. package/dist/esm/services/items/schemas/favorites.js.map +1 -1
  21. package/dist/esm/services/items/schemas/itemFavorites.d.ts +6 -6
  22. package/dist/esm/services/items/schemas/itemFavorites.js +1 -1
  23. package/dist/esm/testing.d.ts +79 -0
  24. package/dist/esm/testing.d.ts.map +1 -0
  25. package/dist/esm/testing.js +168 -0
  26. package/dist/esm/testing.js.map +1 -0
  27. package/dist/types/index.d.ts +1 -1
  28. package/dist/types/services/items/resources/item-favorites.d.ts +2 -2
  29. package/dist/types/services/items/schemas/favorites.d.ts +8 -8
  30. package/dist/types/services/items/schemas/favorites.d.ts.map +1 -1
  31. package/dist/types/services/items/schemas/itemFavorites.d.ts +6 -6
  32. package/dist/types/testing.d.ts +79 -0
  33. package/dist/types/testing.d.ts.map +1 -0
  34. package/package.json +6 -1
@@ -1,4 +1,4 @@
1
- export declare const VERSION = "0.9.10";
1
+ export declare const VERSION = "0.9.12";
2
2
  export { AugurAPI } from './client';
3
3
  export { authenticateUserForSite, createCrossSiteAuthenticator, type CrossSiteAuthParams, type CrossSiteAuthResult, } from './utils/cross-site-auth';
4
4
  export { AugurAPIConfig, RequestConfig, type AugurContext, ContextCreationError, } from './core/config';
package/dist/cjs/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Basecamp2Client = exports.UPSClient = exports.SmartyStreetsClient = exports.SlackClient = exports.ShippingClient = exports.P21ApisClient = exports.LogisticsClient = exports.GregorovichClient = exports.BrandFolderClient = exports.AvalaraClient = exports.AgrWorkClient = exports.AgrInfoClient = exports.P21SismClient = exports.PaymentsClient = exports.P21PimClient = exports.OrdersClient = exports.CustomersClient = exports.AgrSiteClient = exports.LegacyClient = exports.NexusClient = exports.ItemsClient = exports.OpenSearchClient = exports.VMIClient = exports.PricingClient = exports.CommerceClient = exports.JoomlaClient = exports.PaginationParamsSchema = exports.HealthCheckDataSchema = exports.BaseResponseSchema = exports.RateLimitError = exports.NotFoundError = exports.AuthenticationError = exports.ValidationError = exports.AugurError = exports.ContextCreationError = exports.createCrossSiteAuthenticator = exports.authenticateUserForSite = exports.AugurAPI = exports.VERSION = void 0;
4
- exports.VERSION = '0.9.10';
4
+ exports.VERSION = '0.9.12';
5
5
  // Main client
6
6
  var client_1 = require("./client");
7
7
  Object.defineProperty(exports, "AugurAPI", { enumerable: true, get: function () { return client_1.AugurAPI; } });
@@ -18,7 +18,7 @@ export declare function createItemFavoritesResource(executeRequest: ExecuteReque
18
18
  */
19
19
  list: (usersId: number, params?: ItemFavoritesListParams) => Promise<{
20
20
  params: Record<string, unknown> | unknown[];
21
- data: number[];
21
+ data: Record<string, unknown>[];
22
22
  options: Record<string, unknown> | unknown[];
23
23
  status: number;
24
24
  message: string;
@@ -103,7 +103,7 @@ export declare function createItemFavoritesResource(executeRequest: ExecuteReque
103
103
  * Creates the itemFavoritesData resource methods (data-only versions)
104
104
  */
105
105
  export declare function createItemFavoritesDataResource(itemFavorites: ReturnType<typeof createItemFavoritesResource>): {
106
- list: (usersId: number, params?: ItemFavoritesListParams) => Promise<number[]>;
106
+ list: (usersId: number, params?: ItemFavoritesListParams) => Promise<Record<string, unknown>[]>;
107
107
  get: (usersId: number, invMastUid: number, options?: CacheParams) => Promise<unknown>;
108
108
  create: (usersId: number, data: unknown) => Promise<unknown>;
109
109
  update: (usersId: number, invMastUid: number, data: unknown) => Promise<unknown>;
@@ -35,10 +35,10 @@ export declare const ItemFavoritesListParamsSchema: z.ZodObject<{
35
35
  edgeCache: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<"30s">, z.ZodLiteral<"1m">, z.ZodLiteral<"5m">, z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>, z.ZodLiteral<4>, z.ZodLiteral<5>, z.ZodLiteral<8>, z.ZodLiteral<"1">, z.ZodLiteral<"2">, z.ZodLiteral<"3">, z.ZodLiteral<"4">, z.ZodLiteral<"5">, z.ZodLiteral<"8">]>>;
36
36
  }, z.ZodTypeAny, "passthrough">>;
37
37
  /**
38
- * GET response data - array of invMastUid numbers
39
- * API returns: { data: [86491, 12345, ...], ... }
38
+ * GET response data - array of item favorite objects
39
+ * API returns: { data: [{ invMastUid: 86491, ... }, ...], ... }
40
40
  */
41
- export declare const ItemFavoritesListDataSchema: z.ZodArray<z.ZodNumber, "many">;
41
+ export declare const ItemFavoritesListDataSchema: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>, "many">;
42
42
  export declare const ItemFavoriteResponseSchema: z.ZodEffects<z.ZodObject<{
43
43
  count: z.ZodNumber;
44
44
  data: z.ZodObject<{
@@ -109,7 +109,7 @@ export declare const ItemFavoriteResponseSchema: z.ZodEffects<z.ZodObject<{
109
109
  }>;
110
110
  export declare const ItemFavoriteListResponseSchema: z.ZodEffects<z.ZodObject<{
111
111
  count: z.ZodNumber;
112
- data: z.ZodArray<z.ZodNumber, "many">;
112
+ data: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>, "many">;
113
113
  message: z.ZodString;
114
114
  options: z.ZodUnion<[z.ZodArray<z.ZodUnknown, "many">, z.ZodRecord<z.ZodString, z.ZodUnknown>]>;
115
115
  params: z.ZodUnion<[z.ZodArray<z.ZodUnknown, "many">, z.ZodRecord<z.ZodString, z.ZodUnknown>]>;
@@ -118,7 +118,7 @@ export declare const ItemFavoriteListResponseSchema: z.ZodEffects<z.ZodObject<{
118
118
  totalResults: z.ZodNumber;
119
119
  }, "strip", z.ZodTypeAny, {
120
120
  params: Record<string, unknown> | unknown[];
121
- data: number[];
121
+ data: Record<string, unknown>[];
122
122
  options: Record<string, unknown> | unknown[];
123
123
  status: number;
124
124
  message: string;
@@ -127,7 +127,7 @@ export declare const ItemFavoriteListResponseSchema: z.ZodEffects<z.ZodObject<{
127
127
  totalResults: number;
128
128
  }, {
129
129
  params: Record<string, unknown> | unknown[];
130
- data: number[];
130
+ data: Record<string, unknown>[];
131
131
  options: Record<string, unknown> | unknown[];
132
132
  status: number;
133
133
  message: string;
@@ -136,7 +136,7 @@ export declare const ItemFavoriteListResponseSchema: z.ZodEffects<z.ZodObject<{
136
136
  totalResults: number;
137
137
  }>, {
138
138
  params: Record<string, unknown> | unknown[];
139
- data: number[];
139
+ data: Record<string, unknown>[];
140
140
  options: Record<string, unknown> | unknown[];
141
141
  status: number;
142
142
  message: string;
@@ -145,7 +145,7 @@ export declare const ItemFavoriteListResponseSchema: z.ZodEffects<z.ZodObject<{
145
145
  totalResults: number;
146
146
  }, {
147
147
  params: Record<string, unknown> | unknown[];
148
- data: number[];
148
+ data: Record<string, unknown>[];
149
149
  options: Record<string, unknown> | unknown[];
150
150
  status: number;
151
151
  message: string;
@@ -1 +1 @@
1
- {"version":3,"file":"favorites.d.ts","sourceRoot":"","sources":["../../../../../src/services/items/schemas/favorites.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,sEAAsE;AACtE,eAAO,MAAM,kBAAkB;;;;;;gCAAkE,CAAC;AAElG;;;GAGG;AACH,eAAO,MAAM,+BAA+B,iCAAsB,CAAC;AAEnE,sDAAsD;AACtD,eAAO,MAAM,+BAA+B,uJAA6B,CAAC;AAE1E,+DAA+D;AAC/D,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;gCAMX,CAAC;AAEhC;;;GAGG;AACH,eAAO,MAAM,2BAA2B,iCAAsB,CAAC;AAG/D,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAyC,CAAC;AACjF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAkD,CAAC;AAG9F,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AACxF,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AACxF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AACpF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AACtF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC"}
1
+ {"version":3,"file":"favorites.d.ts","sourceRoot":"","sources":["../../../../../src/services/items/schemas/favorites.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,sEAAsE;AACtE,eAAO,MAAM,kBAAkB;;;;;;gCAAkE,CAAC;AAElG;;;GAGG;AACH,eAAO,MAAM,+BAA+B,iCAAsB,CAAC;AAEnE,sDAAsD;AACtD,eAAO,MAAM,+BAA+B,uJAA6B,CAAC;AAE1E,+DAA+D;AAC/D,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;gCAMX,CAAC;AAEhC;;;GAGG;AACH,eAAO,MAAM,2BAA2B,4DAAiC,CAAC;AAG1E,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAyC,CAAC;AACjF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAkD,CAAC;AAG9F,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AACxF,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AACxF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AACpF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AACtF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC"}
@@ -21,10 +21,10 @@ exports.ItemFavoritesListParamsSchema = zod_1.z
21
21
  })
22
22
  .merge(schemas_1.EdgeCacheParamsSchema);
23
23
  /**
24
- * GET response data - array of invMastUid numbers
25
- * API returns: { data: [86491, 12345, ...], ... }
24
+ * GET response data - array of item favorite objects
25
+ * API returns: { data: [{ invMastUid: 86491, ... }, ...], ... }
26
26
  */
27
- exports.ItemFavoritesListDataSchema = zod_1.z.array(zod_1.z.number());
27
+ exports.ItemFavoritesListDataSchema = zod_1.z.array(zod_1.z.record(zod_1.z.unknown()));
28
28
  // Response Schemas
29
29
  exports.ItemFavoriteResponseSchema = (0, schemas_1.BaseResponseSchema)(exports.ItemFavoriteSchema);
30
30
  exports.ItemFavoriteListResponseSchema = (0, schemas_1.BaseResponseSchema)(exports.ItemFavoritesListDataSchema);
@@ -1 +1 @@
1
- {"version":3,"file":"favorites.js","sourceRoot":"","sources":["../../../../../src/services/items/schemas/favorites.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,mDAAkF;AAElF,sEAAsE;AACzD,QAAA,kBAAkB,GAAG,OAAC,CAAC,MAAM,CAAC,EAAE,gBAAgB,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AAElG;;;GAGG;AACU,QAAA,+BAA+B,GAAG,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAEnE,sDAAsD;AACzC,QAAA,+BAA+B,GAAG,OAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AAE1E,+DAA+D;AAClD,QAAA,6BAA6B,GAAG,OAAC;KAC3C,MAAM,CAAC;IACN,KAAK,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACpD,MAAM,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACjD,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC;KACD,KAAK,CAAC,+BAAqB,CAAC,CAAC;AAEhC;;;GAGG;AACU,QAAA,2BAA2B,GAAG,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAE/D,mBAAmB;AACN,QAAA,0BAA0B,GAAG,IAAA,4BAAkB,EAAC,0BAAkB,CAAC,CAAC;AACpE,QAAA,8BAA8B,GAAG,IAAA,4BAAkB,EAAC,mCAA2B,CAAC,CAAC"}
1
+ {"version":3,"file":"favorites.js","sourceRoot":"","sources":["../../../../../src/services/items/schemas/favorites.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,mDAAkF;AAElF,sEAAsE;AACzD,QAAA,kBAAkB,GAAG,OAAC,CAAC,MAAM,CAAC,EAAE,gBAAgB,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AAElG;;;GAGG;AACU,QAAA,+BAA+B,GAAG,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAEnE,sDAAsD;AACzC,QAAA,+BAA+B,GAAG,OAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AAE1E,+DAA+D;AAClD,QAAA,6BAA6B,GAAG,OAAC;KAC3C,MAAM,CAAC;IACN,KAAK,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACpD,MAAM,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACjD,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC;KACD,KAAK,CAAC,+BAAqB,CAAC,CAAC;AAEhC;;;GAGG;AACU,QAAA,2BAA2B,GAAG,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAE1E,mBAAmB;AACN,QAAA,0BAA0B,GAAG,IAAA,4BAAkB,EAAC,0BAAkB,CAAC,CAAC;AACpE,QAAA,8BAA8B,GAAG,IAAA,4BAAkB,EAAC,mCAA2B,CAAC,CAAC"}
@@ -2,12 +2,12 @@ import { z } from 'zod';
2
2
  /**
3
3
  * Response Schemas for /item-favorites endpoints
4
4
  *
5
- * GET /item-favorites/{usersId} returns: { data: [86491, 12345, ...], ... }
5
+ * GET /item-favorites/{usersId}/items returns: { data: [{ invMastUid: 86491, ... }, ...], ... }
6
6
  * POST/PUT/DELETE return standard BaseResponse
7
7
  */
8
8
  export declare const ItemFavoritesListResponseSchema: z.ZodEffects<z.ZodObject<{
9
9
  count: z.ZodNumber;
10
- data: z.ZodArray<z.ZodNumber, "many">;
10
+ data: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>, "many">;
11
11
  message: z.ZodString;
12
12
  options: z.ZodUnion<[z.ZodArray<z.ZodUnknown, "many">, z.ZodRecord<z.ZodString, z.ZodUnknown>]>;
13
13
  params: z.ZodUnion<[z.ZodArray<z.ZodUnknown, "many">, z.ZodRecord<z.ZodString, z.ZodUnknown>]>;
@@ -16,7 +16,7 @@ export declare const ItemFavoritesListResponseSchema: z.ZodEffects<z.ZodObject<{
16
16
  totalResults: z.ZodNumber;
17
17
  }, "strip", z.ZodTypeAny, {
18
18
  params: Record<string, unknown> | unknown[];
19
- data: number[];
19
+ data: Record<string, unknown>[];
20
20
  options: Record<string, unknown> | unknown[];
21
21
  status: number;
22
22
  message: string;
@@ -25,7 +25,7 @@ export declare const ItemFavoritesListResponseSchema: z.ZodEffects<z.ZodObject<{
25
25
  totalResults: number;
26
26
  }, {
27
27
  params: Record<string, unknown> | unknown[];
28
- data: number[];
28
+ data: Record<string, unknown>[];
29
29
  options: Record<string, unknown> | unknown[];
30
30
  status: number;
31
31
  message: string;
@@ -34,7 +34,7 @@ export declare const ItemFavoritesListResponseSchema: z.ZodEffects<z.ZodObject<{
34
34
  totalResults: number;
35
35
  }>, {
36
36
  params: Record<string, unknown> | unknown[];
37
- data: number[];
37
+ data: Record<string, unknown>[];
38
38
  options: Record<string, unknown> | unknown[];
39
39
  status: number;
40
40
  message: string;
@@ -43,7 +43,7 @@ export declare const ItemFavoritesListResponseSchema: z.ZodEffects<z.ZodObject<{
43
43
  totalResults: number;
44
44
  }, {
45
45
  params: Record<string, unknown> | unknown[];
46
- data: number[];
46
+ data: Record<string, unknown>[];
47
47
  options: Record<string, unknown> | unknown[];
48
48
  status: number;
49
49
  message: string;
@@ -8,7 +8,7 @@ const favorites_1 = require("./favorites");
8
8
  /**
9
9
  * Response Schemas for /item-favorites endpoints
10
10
  *
11
- * GET /item-favorites/{usersId} returns: { data: [86491, 12345, ...], ... }
11
+ * GET /item-favorites/{usersId}/items returns: { data: [{ invMastUid: 86491, ... }, ...], ... }
12
12
  * POST/PUT/DELETE return standard BaseResponse
13
13
  */
14
14
  exports.ItemFavoritesListResponseSchema = (0, schemas_1.BaseResponseSchema)(favorites_1.ItemFavoritesListDataSchema);
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Testing utilities for @simpleapps-com/augur-api
3
+ *
4
+ * Provides a Proxy-based deep mock factory that automatically creates
5
+ * mock functions at any depth, matching the AugurAPI client shape.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { createMockClient } from '@simpleapps-com/augur-api/testing';
10
+ *
11
+ * const { client, mocks } = createMockClient();
12
+ * mocks.commerce.cartHeaders.lookup.mockResolvedValue({ data: [] });
13
+ *
14
+ * const result = await client.commerce.cartHeaders.lookup({ userId: 1 });
15
+ * expect(mocks.commerce.cartHeaders.lookup.mock.calls[0]).toEqual([{ userId: 1 }]);
16
+ * ```
17
+ */
18
+ import type { AugurAPI } from './client';
19
+ /** Recorded call arguments */
20
+ export interface MockCall {
21
+ args: unknown[];
22
+ timestamp: number;
23
+ }
24
+ /** Call tracking state */
25
+ export interface MockState {
26
+ calls: unknown[][];
27
+ results: Array<{
28
+ type: 'return' | 'throw';
29
+ value: unknown;
30
+ }>;
31
+ instances: unknown[];
32
+ lastCall: unknown[] | undefined;
33
+ }
34
+ /** A mock function with call tracking and return-value control */
35
+ export interface MockFn {
36
+ (...args: unknown[]): unknown;
37
+ mock: MockState;
38
+ mockReturnValue(value: unknown): MockFn;
39
+ mockResolvedValue(value: unknown): MockFn;
40
+ mockRejectedValue(value: unknown): MockFn;
41
+ mockImplementation(fn: (...args: unknown[]) => unknown): MockFn;
42
+ mockReset(): MockFn;
43
+ mockClear(): MockFn;
44
+ }
45
+ /** Recursively maps AugurAPI to MockFn leaves */
46
+ export type DeepMockClient<T> = {
47
+ [K in keyof T]: T[K] extends Function ? MockFn : DeepMockClient<T[K]>;
48
+ };
49
+ /** Return type of createMockClient */
50
+ export interface MockClientResult {
51
+ client: AugurAPI;
52
+ mocks: DeepMockClient<AugurAPI>;
53
+ }
54
+ /**
55
+ * Create a fully-mocked AugurAPI client.
56
+ *
57
+ * Every property chain resolves to either a nested namespace or a callable
58
+ * MockFn. The same object serves as both `client` (passed to production code)
59
+ * and `mocks` (used in assertions).
60
+ *
61
+ * @returns `{ client, mocks }` — same object, dual-typed for ergonomics
62
+ *
63
+ * @example
64
+ * ```typescript
65
+ * const { client, mocks } = createMockClient();
66
+ *
67
+ * // Stub a return value
68
+ * mocks.items.products.get.mockResolvedValue({ data: { id: 1 } });
69
+ *
70
+ * // Call through the client
71
+ * const result = await client.items.products.get(1);
72
+ *
73
+ * // Assert
74
+ * expect(mocks.items.products.get.mock.calls).toHaveLength(1);
75
+ * expect(mocks.items.products.get.mock.calls[0]).toEqual([1]);
76
+ * ```
77
+ */
78
+ export declare function createMockClient(): MockClientResult;
79
+ //# sourceMappingURL=testing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../../src/testing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC,8BAA8B;AAC9B,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,0BAA0B;AAC1B,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC;IACnB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC7D,SAAS,EAAE,OAAO,EAAE,CAAC;IACrB,QAAQ,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC;CACjC;AAED,kEAAkE;AAClE,MAAM,WAAW,MAAM;IACrB,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC9B,IAAI,EAAE,SAAS,CAAC;IAChB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;IACxC,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;IAC1C,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;IAC1C,kBAAkB,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,GAAG,MAAM,CAAC;IAChE,SAAS,IAAI,MAAM,CAAC;IACpB,SAAS,IAAI,MAAM,CAAC;CACrB;AAED,iDAAiD;AACjD,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;KAE7B,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,GAAG,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACtE,CAAC;AAEF,sCAAsC;AACtC,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,QAAQ,CAAC;IACjB,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;CACjC;AAwID;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,gBAAgB,IAAI,gBAAgB,CAQnD"}
@@ -0,0 +1,171 @@
1
+ "use strict";
2
+ /**
3
+ * Testing utilities for @simpleapps-com/augur-api
4
+ *
5
+ * Provides a Proxy-based deep mock factory that automatically creates
6
+ * mock functions at any depth, matching the AugurAPI client shape.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import { createMockClient } from '@simpleapps-com/augur-api/testing';
11
+ *
12
+ * const { client, mocks } = createMockClient();
13
+ * mocks.commerce.cartHeaders.lookup.mockResolvedValue({ data: [] });
14
+ *
15
+ * const result = await client.commerce.cartHeaders.lookup({ userId: 1 });
16
+ * expect(mocks.commerce.cartHeaders.lookup.mock.calls[0]).toEqual([{ userId: 1 }]);
17
+ * ```
18
+ */
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.createMockClient = createMockClient;
21
+ /** Create a stub function with full call-tracking */
22
+ function createStubFn() {
23
+ let implementation = null;
24
+ const state = {
25
+ calls: [],
26
+ results: [],
27
+ instances: [],
28
+ lastCall: undefined,
29
+ };
30
+ const fn = function mockFn(...args) {
31
+ state.calls.push(args);
32
+ state.lastCall = args;
33
+ state.instances.push(this);
34
+ try {
35
+ const result = implementation ? implementation(...args) : undefined;
36
+ state.results.push({ type: 'return', value: result });
37
+ return result;
38
+ }
39
+ catch (error) {
40
+ state.results.push({ type: 'throw', value: error });
41
+ throw error;
42
+ }
43
+ };
44
+ fn.mock = state;
45
+ fn.mockReturnValue = (value) => {
46
+ implementation = () => value;
47
+ return fn;
48
+ };
49
+ fn.mockResolvedValue = (value) => {
50
+ implementation = () => Promise.resolve(value);
51
+ return fn;
52
+ };
53
+ fn.mockRejectedValue = (value) => {
54
+ implementation = () => Promise.reject(value);
55
+ return fn;
56
+ };
57
+ fn.mockImplementation = (implFn) => {
58
+ implementation = implFn;
59
+ return fn;
60
+ };
61
+ fn.mockReset = () => {
62
+ state.calls = [];
63
+ state.results = [];
64
+ state.instances = [];
65
+ state.lastCall = undefined;
66
+ implementation = null;
67
+ return fn;
68
+ };
69
+ fn.mockClear = () => {
70
+ state.calls = [];
71
+ state.results = [];
72
+ state.instances = [];
73
+ state.lastCall = undefined;
74
+ return fn;
75
+ };
76
+ return fn;
77
+ }
78
+ /** Property names that belong to MockFn — triggers stub creation */
79
+ const MOCK_FN_PROPS = new Set([
80
+ 'mock',
81
+ 'mockReturnValue',
82
+ 'mockResolvedValue',
83
+ 'mockRejectedValue',
84
+ 'mockImplementation',
85
+ 'mockReset',
86
+ 'mockClear',
87
+ ]);
88
+ /**
89
+ * Get or create a stub for a given path key.
90
+ */
91
+ function getOrCreateStub(pathMap, key) {
92
+ let stub = pathMap.get(key);
93
+ if (!stub) {
94
+ stub = createStubFn();
95
+ pathMap.set(key, stub);
96
+ }
97
+ return stub;
98
+ }
99
+ /**
100
+ * Create a recursive Proxy that lazily materializes MockFn stubs
101
+ * at any property access depth.
102
+ */
103
+ function createDeepProxy(pathMap, path = []) {
104
+ const cache = new Map();
105
+ // istanbul ignore next -- Proxy target is never called directly
106
+ return new Proxy(function () { }, {
107
+ get(_target, prop) {
108
+ // Prevent spurious thenable detection (await/Promise.resolve)
109
+ if (prop === 'then')
110
+ return undefined;
111
+ // Support typeof checks
112
+ if (prop === Symbol.toPrimitive)
113
+ return undefined;
114
+ if (prop === Symbol.iterator)
115
+ return undefined;
116
+ if (prop === Symbol.toStringTag)
117
+ return 'MockProxy';
118
+ // MockFn property access — create stub eagerly and delegate
119
+ if (typeof prop === 'string' && MOCK_FN_PROPS.has(prop)) {
120
+ const stub = getOrCreateStub(pathMap, path.join('.'));
121
+ return stub[prop];
122
+ }
123
+ // Return cached child proxy
124
+ if (cache.has(prop)) {
125
+ return cache.get(prop);
126
+ }
127
+ // Create child proxy for the next level
128
+ const childPath = [...path, String(prop)];
129
+ const child = createDeepProxy(pathMap, childPath);
130
+ cache.set(prop, child);
131
+ return child;
132
+ },
133
+ apply(_target, thisArg, args) {
134
+ const stub = getOrCreateStub(pathMap, path.join('.'));
135
+ return stub.apply(thisArg, args);
136
+ },
137
+ });
138
+ }
139
+ /**
140
+ * Create a fully-mocked AugurAPI client.
141
+ *
142
+ * Every property chain resolves to either a nested namespace or a callable
143
+ * MockFn. The same object serves as both `client` (passed to production code)
144
+ * and `mocks` (used in assertions).
145
+ *
146
+ * @returns `{ client, mocks }` — same object, dual-typed for ergonomics
147
+ *
148
+ * @example
149
+ * ```typescript
150
+ * const { client, mocks } = createMockClient();
151
+ *
152
+ * // Stub a return value
153
+ * mocks.items.products.get.mockResolvedValue({ data: { id: 1 } });
154
+ *
155
+ * // Call through the client
156
+ * const result = await client.items.products.get(1);
157
+ *
158
+ * // Assert
159
+ * expect(mocks.items.products.get.mock.calls).toHaveLength(1);
160
+ * expect(mocks.items.products.get.mock.calls[0]).toEqual([1]);
161
+ * ```
162
+ */
163
+ function createMockClient() {
164
+ const pathMap = new Map();
165
+ const proxy = createDeepProxy(pathMap);
166
+ return {
167
+ client: proxy,
168
+ mocks: proxy,
169
+ };
170
+ }
171
+ //# sourceMappingURL=testing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.js","sourceRoot":"","sources":["../../src/testing.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export declare const VERSION = "0.9.10";
1
+ export declare const VERSION = "0.9.12";
2
2
  export { AugurAPI } from './client';
3
3
  export { authenticateUserForSite, createCrossSiteAuthenticator, type CrossSiteAuthParams, type CrossSiteAuthResult, } from './utils/cross-site-auth';
4
4
  export { AugurAPIConfig, RequestConfig, type AugurContext, ContextCreationError, } from './core/config';
package/dist/esm/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export const VERSION = '0.9.10';
1
+ export const VERSION = '0.9.12';
2
2
  // Main client
3
3
  export { AugurAPI } from './client';
4
4
  // Utilities
@@ -18,7 +18,7 @@ export declare function createItemFavoritesResource(executeRequest: ExecuteReque
18
18
  */
19
19
  list: (usersId: number, params?: ItemFavoritesListParams) => Promise<{
20
20
  params: Record<string, unknown> | unknown[];
21
- data: number[];
21
+ data: Record<string, unknown>[];
22
22
  options: Record<string, unknown> | unknown[];
23
23
  status: number;
24
24
  message: string;
@@ -103,7 +103,7 @@ export declare function createItemFavoritesResource(executeRequest: ExecuteReque
103
103
  * Creates the itemFavoritesData resource methods (data-only versions)
104
104
  */
105
105
  export declare function createItemFavoritesDataResource(itemFavorites: ReturnType<typeof createItemFavoritesResource>): {
106
- list: (usersId: number, params?: ItemFavoritesListParams) => Promise<number[]>;
106
+ list: (usersId: number, params?: ItemFavoritesListParams) => Promise<Record<string, unknown>[]>;
107
107
  get: (usersId: number, invMastUid: number, options?: CacheParams) => Promise<unknown>;
108
108
  create: (usersId: number, data: unknown) => Promise<unknown>;
109
109
  update: (usersId: number, invMastUid: number, data: unknown) => Promise<unknown>;
@@ -35,10 +35,10 @@ export declare const ItemFavoritesListParamsSchema: z.ZodObject<{
35
35
  edgeCache: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<"30s">, z.ZodLiteral<"1m">, z.ZodLiteral<"5m">, z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>, z.ZodLiteral<4>, z.ZodLiteral<5>, z.ZodLiteral<8>, z.ZodLiteral<"1">, z.ZodLiteral<"2">, z.ZodLiteral<"3">, z.ZodLiteral<"4">, z.ZodLiteral<"5">, z.ZodLiteral<"8">]>>;
36
36
  }, z.ZodTypeAny, "passthrough">>;
37
37
  /**
38
- * GET response data - array of invMastUid numbers
39
- * API returns: { data: [86491, 12345, ...], ... }
38
+ * GET response data - array of item favorite objects
39
+ * API returns: { data: [{ invMastUid: 86491, ... }, ...], ... }
40
40
  */
41
- export declare const ItemFavoritesListDataSchema: z.ZodArray<z.ZodNumber, "many">;
41
+ export declare const ItemFavoritesListDataSchema: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>, "many">;
42
42
  export declare const ItemFavoriteResponseSchema: z.ZodEffects<z.ZodObject<{
43
43
  count: z.ZodNumber;
44
44
  data: z.ZodObject<{
@@ -109,7 +109,7 @@ export declare const ItemFavoriteResponseSchema: z.ZodEffects<z.ZodObject<{
109
109
  }>;
110
110
  export declare const ItemFavoriteListResponseSchema: z.ZodEffects<z.ZodObject<{
111
111
  count: z.ZodNumber;
112
- data: z.ZodArray<z.ZodNumber, "many">;
112
+ data: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>, "many">;
113
113
  message: z.ZodString;
114
114
  options: z.ZodUnion<[z.ZodArray<z.ZodUnknown, "many">, z.ZodRecord<z.ZodString, z.ZodUnknown>]>;
115
115
  params: z.ZodUnion<[z.ZodArray<z.ZodUnknown, "many">, z.ZodRecord<z.ZodString, z.ZodUnknown>]>;
@@ -118,7 +118,7 @@ export declare const ItemFavoriteListResponseSchema: z.ZodEffects<z.ZodObject<{
118
118
  totalResults: z.ZodNumber;
119
119
  }, "strip", z.ZodTypeAny, {
120
120
  params: Record<string, unknown> | unknown[];
121
- data: number[];
121
+ data: Record<string, unknown>[];
122
122
  options: Record<string, unknown> | unknown[];
123
123
  status: number;
124
124
  message: string;
@@ -127,7 +127,7 @@ export declare const ItemFavoriteListResponseSchema: z.ZodEffects<z.ZodObject<{
127
127
  totalResults: number;
128
128
  }, {
129
129
  params: Record<string, unknown> | unknown[];
130
- data: number[];
130
+ data: Record<string, unknown>[];
131
131
  options: Record<string, unknown> | unknown[];
132
132
  status: number;
133
133
  message: string;
@@ -136,7 +136,7 @@ export declare const ItemFavoriteListResponseSchema: z.ZodEffects<z.ZodObject<{
136
136
  totalResults: number;
137
137
  }>, {
138
138
  params: Record<string, unknown> | unknown[];
139
- data: number[];
139
+ data: Record<string, unknown>[];
140
140
  options: Record<string, unknown> | unknown[];
141
141
  status: number;
142
142
  message: string;
@@ -145,7 +145,7 @@ export declare const ItemFavoriteListResponseSchema: z.ZodEffects<z.ZodObject<{
145
145
  totalResults: number;
146
146
  }, {
147
147
  params: Record<string, unknown> | unknown[];
148
- data: number[];
148
+ data: Record<string, unknown>[];
149
149
  options: Record<string, unknown> | unknown[];
150
150
  status: number;
151
151
  message: string;
@@ -1 +1 @@
1
- {"version":3,"file":"favorites.d.ts","sourceRoot":"","sources":["../../../../../src/services/items/schemas/favorites.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,sEAAsE;AACtE,eAAO,MAAM,kBAAkB;;;;;;gCAAkE,CAAC;AAElG;;;GAGG;AACH,eAAO,MAAM,+BAA+B,iCAAsB,CAAC;AAEnE,sDAAsD;AACtD,eAAO,MAAM,+BAA+B,uJAA6B,CAAC;AAE1E,+DAA+D;AAC/D,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;gCAMX,CAAC;AAEhC;;;GAGG;AACH,eAAO,MAAM,2BAA2B,iCAAsB,CAAC;AAG/D,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAyC,CAAC;AACjF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAkD,CAAC;AAG9F,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AACxF,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AACxF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AACpF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AACtF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC"}
1
+ {"version":3,"file":"favorites.d.ts","sourceRoot":"","sources":["../../../../../src/services/items/schemas/favorites.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,sEAAsE;AACtE,eAAO,MAAM,kBAAkB;;;;;;gCAAkE,CAAC;AAElG;;;GAGG;AACH,eAAO,MAAM,+BAA+B,iCAAsB,CAAC;AAEnE,sDAAsD;AACtD,eAAO,MAAM,+BAA+B,uJAA6B,CAAC;AAE1E,+DAA+D;AAC/D,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;gCAMX,CAAC;AAEhC;;;GAGG;AACH,eAAO,MAAM,2BAA2B,4DAAiC,CAAC;AAG1E,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAyC,CAAC;AACjF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAkD,CAAC;AAG9F,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AACxF,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AACxF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AACpF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AACtF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC"}
@@ -18,10 +18,10 @@ export const ItemFavoritesListParamsSchema = z
18
18
  })
19
19
  .merge(EdgeCacheParamsSchema);
20
20
  /**
21
- * GET response data - array of invMastUid numbers
22
- * API returns: { data: [86491, 12345, ...], ... }
21
+ * GET response data - array of item favorite objects
22
+ * API returns: { data: [{ invMastUid: 86491, ... }, ...], ... }
23
23
  */
24
- export const ItemFavoritesListDataSchema = z.array(z.number());
24
+ export const ItemFavoritesListDataSchema = z.array(z.record(z.unknown()));
25
25
  // Response Schemas
26
26
  export const ItemFavoriteResponseSchema = BaseResponseSchema(ItemFavoriteSchema);
27
27
  export const ItemFavoriteListResponseSchema = BaseResponseSchema(ItemFavoritesListDataSchema);
@@ -1 +1 @@
1
- {"version":3,"file":"favorites.js","sourceRoot":"","sources":["../../../../../src/services/items/schemas/favorites.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAElF,sEAAsE;AACtE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AAElG;;;GAGG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAEnE,sDAAsD;AACtD,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AAE1E,+DAA+D;AAC/D,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC;KAC3C,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACpD,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACjD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC;KACD,KAAK,CAAC,qBAAqB,CAAC,CAAC;AAEhC;;;GAGG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAE/D,mBAAmB;AACnB,MAAM,CAAC,MAAM,0BAA0B,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;AACjF,MAAM,CAAC,MAAM,8BAA8B,GAAG,kBAAkB,CAAC,2BAA2B,CAAC,CAAC"}
1
+ {"version":3,"file":"favorites.js","sourceRoot":"","sources":["../../../../../src/services/items/schemas/favorites.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAElF,sEAAsE;AACtE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AAElG;;;GAGG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAEnE,sDAAsD;AACtD,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AAE1E,+DAA+D;AAC/D,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC;KAC3C,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACpD,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACjD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC;KACD,KAAK,CAAC,qBAAqB,CAAC,CAAC;AAEhC;;;GAGG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAE1E,mBAAmB;AACnB,MAAM,CAAC,MAAM,0BAA0B,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;AACjF,MAAM,CAAC,MAAM,8BAA8B,GAAG,kBAAkB,CAAC,2BAA2B,CAAC,CAAC"}
@@ -2,12 +2,12 @@ import { z } from 'zod';
2
2
  /**
3
3
  * Response Schemas for /item-favorites endpoints
4
4
  *
5
- * GET /item-favorites/{usersId} returns: { data: [86491, 12345, ...], ... }
5
+ * GET /item-favorites/{usersId}/items returns: { data: [{ invMastUid: 86491, ... }, ...], ... }
6
6
  * POST/PUT/DELETE return standard BaseResponse
7
7
  */
8
8
  export declare const ItemFavoritesListResponseSchema: z.ZodEffects<z.ZodObject<{
9
9
  count: z.ZodNumber;
10
- data: z.ZodArray<z.ZodNumber, "many">;
10
+ data: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>, "many">;
11
11
  message: z.ZodString;
12
12
  options: z.ZodUnion<[z.ZodArray<z.ZodUnknown, "many">, z.ZodRecord<z.ZodString, z.ZodUnknown>]>;
13
13
  params: z.ZodUnion<[z.ZodArray<z.ZodUnknown, "many">, z.ZodRecord<z.ZodString, z.ZodUnknown>]>;
@@ -16,7 +16,7 @@ export declare const ItemFavoritesListResponseSchema: z.ZodEffects<z.ZodObject<{
16
16
  totalResults: z.ZodNumber;
17
17
  }, "strip", z.ZodTypeAny, {
18
18
  params: Record<string, unknown> | unknown[];
19
- data: number[];
19
+ data: Record<string, unknown>[];
20
20
  options: Record<string, unknown> | unknown[];
21
21
  status: number;
22
22
  message: string;
@@ -25,7 +25,7 @@ export declare const ItemFavoritesListResponseSchema: z.ZodEffects<z.ZodObject<{
25
25
  totalResults: number;
26
26
  }, {
27
27
  params: Record<string, unknown> | unknown[];
28
- data: number[];
28
+ data: Record<string, unknown>[];
29
29
  options: Record<string, unknown> | unknown[];
30
30
  status: number;
31
31
  message: string;
@@ -34,7 +34,7 @@ export declare const ItemFavoritesListResponseSchema: z.ZodEffects<z.ZodObject<{
34
34
  totalResults: number;
35
35
  }>, {
36
36
  params: Record<string, unknown> | unknown[];
37
- data: number[];
37
+ data: Record<string, unknown>[];
38
38
  options: Record<string, unknown> | unknown[];
39
39
  status: number;
40
40
  message: string;
@@ -43,7 +43,7 @@ export declare const ItemFavoritesListResponseSchema: z.ZodEffects<z.ZodObject<{
43
43
  totalResults: number;
44
44
  }, {
45
45
  params: Record<string, unknown> | unknown[];
46
- data: number[];
46
+ data: Record<string, unknown>[];
47
47
  options: Record<string, unknown> | unknown[];
48
48
  status: number;
49
49
  message: string;
@@ -5,7 +5,7 @@ import { ItemFavoritesListDataSchema } from './favorites';
5
5
  /**
6
6
  * Response Schemas for /item-favorites endpoints
7
7
  *
8
- * GET /item-favorites/{usersId} returns: { data: [86491, 12345, ...], ... }
8
+ * GET /item-favorites/{usersId}/items returns: { data: [{ invMastUid: 86491, ... }, ...], ... }
9
9
  * POST/PUT/DELETE return standard BaseResponse
10
10
  */
11
11
  export const ItemFavoritesListResponseSchema = BaseResponseSchema(ItemFavoritesListDataSchema);
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Testing utilities for @simpleapps-com/augur-api
3
+ *
4
+ * Provides a Proxy-based deep mock factory that automatically creates
5
+ * mock functions at any depth, matching the AugurAPI client shape.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { createMockClient } from '@simpleapps-com/augur-api/testing';
10
+ *
11
+ * const { client, mocks } = createMockClient();
12
+ * mocks.commerce.cartHeaders.lookup.mockResolvedValue({ data: [] });
13
+ *
14
+ * const result = await client.commerce.cartHeaders.lookup({ userId: 1 });
15
+ * expect(mocks.commerce.cartHeaders.lookup.mock.calls[0]).toEqual([{ userId: 1 }]);
16
+ * ```
17
+ */
18
+ import type { AugurAPI } from './client';
19
+ /** Recorded call arguments */
20
+ export interface MockCall {
21
+ args: unknown[];
22
+ timestamp: number;
23
+ }
24
+ /** Call tracking state */
25
+ export interface MockState {
26
+ calls: unknown[][];
27
+ results: Array<{
28
+ type: 'return' | 'throw';
29
+ value: unknown;
30
+ }>;
31
+ instances: unknown[];
32
+ lastCall: unknown[] | undefined;
33
+ }
34
+ /** A mock function with call tracking and return-value control */
35
+ export interface MockFn {
36
+ (...args: unknown[]): unknown;
37
+ mock: MockState;
38
+ mockReturnValue(value: unknown): MockFn;
39
+ mockResolvedValue(value: unknown): MockFn;
40
+ mockRejectedValue(value: unknown): MockFn;
41
+ mockImplementation(fn: (...args: unknown[]) => unknown): MockFn;
42
+ mockReset(): MockFn;
43
+ mockClear(): MockFn;
44
+ }
45
+ /** Recursively maps AugurAPI to MockFn leaves */
46
+ export type DeepMockClient<T> = {
47
+ [K in keyof T]: T[K] extends Function ? MockFn : DeepMockClient<T[K]>;
48
+ };
49
+ /** Return type of createMockClient */
50
+ export interface MockClientResult {
51
+ client: AugurAPI;
52
+ mocks: DeepMockClient<AugurAPI>;
53
+ }
54
+ /**
55
+ * Create a fully-mocked AugurAPI client.
56
+ *
57
+ * Every property chain resolves to either a nested namespace or a callable
58
+ * MockFn. The same object serves as both `client` (passed to production code)
59
+ * and `mocks` (used in assertions).
60
+ *
61
+ * @returns `{ client, mocks }` — same object, dual-typed for ergonomics
62
+ *
63
+ * @example
64
+ * ```typescript
65
+ * const { client, mocks } = createMockClient();
66
+ *
67
+ * // Stub a return value
68
+ * mocks.items.products.get.mockResolvedValue({ data: { id: 1 } });
69
+ *
70
+ * // Call through the client
71
+ * const result = await client.items.products.get(1);
72
+ *
73
+ * // Assert
74
+ * expect(mocks.items.products.get.mock.calls).toHaveLength(1);
75
+ * expect(mocks.items.products.get.mock.calls[0]).toEqual([1]);
76
+ * ```
77
+ */
78
+ export declare function createMockClient(): MockClientResult;
79
+ //# sourceMappingURL=testing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../../src/testing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC,8BAA8B;AAC9B,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,0BAA0B;AAC1B,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC;IACnB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC7D,SAAS,EAAE,OAAO,EAAE,CAAC;IACrB,QAAQ,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC;CACjC;AAED,kEAAkE;AAClE,MAAM,WAAW,MAAM;IACrB,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC9B,IAAI,EAAE,SAAS,CAAC;IAChB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;IACxC,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;IAC1C,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;IAC1C,kBAAkB,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,GAAG,MAAM,CAAC;IAChE,SAAS,IAAI,MAAM,CAAC;IACpB,SAAS,IAAI,MAAM,CAAC;CACrB;AAED,iDAAiD;AACjD,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;KAE7B,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,GAAG,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACtE,CAAC;AAEF,sCAAsC;AACtC,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,QAAQ,CAAC;IACjB,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;CACjC;AAwID;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,gBAAgB,IAAI,gBAAgB,CAQnD"}
@@ -0,0 +1,168 @@
1
+ /**
2
+ * Testing utilities for @simpleapps-com/augur-api
3
+ *
4
+ * Provides a Proxy-based deep mock factory that automatically creates
5
+ * mock functions at any depth, matching the AugurAPI client shape.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { createMockClient } from '@simpleapps-com/augur-api/testing';
10
+ *
11
+ * const { client, mocks } = createMockClient();
12
+ * mocks.commerce.cartHeaders.lookup.mockResolvedValue({ data: [] });
13
+ *
14
+ * const result = await client.commerce.cartHeaders.lookup({ userId: 1 });
15
+ * expect(mocks.commerce.cartHeaders.lookup.mock.calls[0]).toEqual([{ userId: 1 }]);
16
+ * ```
17
+ */
18
+ /** Create a stub function with full call-tracking */
19
+ function createStubFn() {
20
+ let implementation = null;
21
+ const state = {
22
+ calls: [],
23
+ results: [],
24
+ instances: [],
25
+ lastCall: undefined,
26
+ };
27
+ const fn = function mockFn(...args) {
28
+ state.calls.push(args);
29
+ state.lastCall = args;
30
+ state.instances.push(this);
31
+ try {
32
+ const result = implementation ? implementation(...args) : undefined;
33
+ state.results.push({ type: 'return', value: result });
34
+ return result;
35
+ }
36
+ catch (error) {
37
+ state.results.push({ type: 'throw', value: error });
38
+ throw error;
39
+ }
40
+ };
41
+ fn.mock = state;
42
+ fn.mockReturnValue = (value) => {
43
+ implementation = () => value;
44
+ return fn;
45
+ };
46
+ fn.mockResolvedValue = (value) => {
47
+ implementation = () => Promise.resolve(value);
48
+ return fn;
49
+ };
50
+ fn.mockRejectedValue = (value) => {
51
+ implementation = () => Promise.reject(value);
52
+ return fn;
53
+ };
54
+ fn.mockImplementation = (implFn) => {
55
+ implementation = implFn;
56
+ return fn;
57
+ };
58
+ fn.mockReset = () => {
59
+ state.calls = [];
60
+ state.results = [];
61
+ state.instances = [];
62
+ state.lastCall = undefined;
63
+ implementation = null;
64
+ return fn;
65
+ };
66
+ fn.mockClear = () => {
67
+ state.calls = [];
68
+ state.results = [];
69
+ state.instances = [];
70
+ state.lastCall = undefined;
71
+ return fn;
72
+ };
73
+ return fn;
74
+ }
75
+ /** Property names that belong to MockFn — triggers stub creation */
76
+ const MOCK_FN_PROPS = new Set([
77
+ 'mock',
78
+ 'mockReturnValue',
79
+ 'mockResolvedValue',
80
+ 'mockRejectedValue',
81
+ 'mockImplementation',
82
+ 'mockReset',
83
+ 'mockClear',
84
+ ]);
85
+ /**
86
+ * Get or create a stub for a given path key.
87
+ */
88
+ function getOrCreateStub(pathMap, key) {
89
+ let stub = pathMap.get(key);
90
+ if (!stub) {
91
+ stub = createStubFn();
92
+ pathMap.set(key, stub);
93
+ }
94
+ return stub;
95
+ }
96
+ /**
97
+ * Create a recursive Proxy that lazily materializes MockFn stubs
98
+ * at any property access depth.
99
+ */
100
+ function createDeepProxy(pathMap, path = []) {
101
+ const cache = new Map();
102
+ // istanbul ignore next -- Proxy target is never called directly
103
+ return new Proxy(function () { }, {
104
+ get(_target, prop) {
105
+ // Prevent spurious thenable detection (await/Promise.resolve)
106
+ if (prop === 'then')
107
+ return undefined;
108
+ // Support typeof checks
109
+ if (prop === Symbol.toPrimitive)
110
+ return undefined;
111
+ if (prop === Symbol.iterator)
112
+ return undefined;
113
+ if (prop === Symbol.toStringTag)
114
+ return 'MockProxy';
115
+ // MockFn property access — create stub eagerly and delegate
116
+ if (typeof prop === 'string' && MOCK_FN_PROPS.has(prop)) {
117
+ const stub = getOrCreateStub(pathMap, path.join('.'));
118
+ return stub[prop];
119
+ }
120
+ // Return cached child proxy
121
+ if (cache.has(prop)) {
122
+ return cache.get(prop);
123
+ }
124
+ // Create child proxy for the next level
125
+ const childPath = [...path, String(prop)];
126
+ const child = createDeepProxy(pathMap, childPath);
127
+ cache.set(prop, child);
128
+ return child;
129
+ },
130
+ apply(_target, thisArg, args) {
131
+ const stub = getOrCreateStub(pathMap, path.join('.'));
132
+ return stub.apply(thisArg, args);
133
+ },
134
+ });
135
+ }
136
+ /**
137
+ * Create a fully-mocked AugurAPI client.
138
+ *
139
+ * Every property chain resolves to either a nested namespace or a callable
140
+ * MockFn. The same object serves as both `client` (passed to production code)
141
+ * and `mocks` (used in assertions).
142
+ *
143
+ * @returns `{ client, mocks }` — same object, dual-typed for ergonomics
144
+ *
145
+ * @example
146
+ * ```typescript
147
+ * const { client, mocks } = createMockClient();
148
+ *
149
+ * // Stub a return value
150
+ * mocks.items.products.get.mockResolvedValue({ data: { id: 1 } });
151
+ *
152
+ * // Call through the client
153
+ * const result = await client.items.products.get(1);
154
+ *
155
+ * // Assert
156
+ * expect(mocks.items.products.get.mock.calls).toHaveLength(1);
157
+ * expect(mocks.items.products.get.mock.calls[0]).toEqual([1]);
158
+ * ```
159
+ */
160
+ export function createMockClient() {
161
+ const pathMap = new Map();
162
+ const proxy = createDeepProxy(pathMap);
163
+ return {
164
+ client: proxy,
165
+ mocks: proxy,
166
+ };
167
+ }
168
+ //# sourceMappingURL=testing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.js","sourceRoot":"","sources":["../../src/testing.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export declare const VERSION = "0.9.10";
1
+ export declare const VERSION = "0.9.12";
2
2
  export { AugurAPI } from './client';
3
3
  export { authenticateUserForSite, createCrossSiteAuthenticator, type CrossSiteAuthParams, type CrossSiteAuthResult, } from './utils/cross-site-auth';
4
4
  export { AugurAPIConfig, RequestConfig, type AugurContext, ContextCreationError, } from './core/config';
@@ -18,7 +18,7 @@ export declare function createItemFavoritesResource(executeRequest: ExecuteReque
18
18
  */
19
19
  list: (usersId: number, params?: ItemFavoritesListParams) => Promise<{
20
20
  params: Record<string, unknown> | unknown[];
21
- data: number[];
21
+ data: Record<string, unknown>[];
22
22
  options: Record<string, unknown> | unknown[];
23
23
  status: number;
24
24
  message: string;
@@ -103,7 +103,7 @@ export declare function createItemFavoritesResource(executeRequest: ExecuteReque
103
103
  * Creates the itemFavoritesData resource methods (data-only versions)
104
104
  */
105
105
  export declare function createItemFavoritesDataResource(itemFavorites: ReturnType<typeof createItemFavoritesResource>): {
106
- list: (usersId: number, params?: ItemFavoritesListParams) => Promise<number[]>;
106
+ list: (usersId: number, params?: ItemFavoritesListParams) => Promise<Record<string, unknown>[]>;
107
107
  get: (usersId: number, invMastUid: number, options?: CacheParams) => Promise<unknown>;
108
108
  create: (usersId: number, data: unknown) => Promise<unknown>;
109
109
  update: (usersId: number, invMastUid: number, data: unknown) => Promise<unknown>;
@@ -35,10 +35,10 @@ export declare const ItemFavoritesListParamsSchema: z.ZodObject<{
35
35
  edgeCache: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<"30s">, z.ZodLiteral<"1m">, z.ZodLiteral<"5m">, z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>, z.ZodLiteral<4>, z.ZodLiteral<5>, z.ZodLiteral<8>, z.ZodLiteral<"1">, z.ZodLiteral<"2">, z.ZodLiteral<"3">, z.ZodLiteral<"4">, z.ZodLiteral<"5">, z.ZodLiteral<"8">]>>;
36
36
  }, z.ZodTypeAny, "passthrough">>;
37
37
  /**
38
- * GET response data - array of invMastUid numbers
39
- * API returns: { data: [86491, 12345, ...], ... }
38
+ * GET response data - array of item favorite objects
39
+ * API returns: { data: [{ invMastUid: 86491, ... }, ...], ... }
40
40
  */
41
- export declare const ItemFavoritesListDataSchema: z.ZodArray<z.ZodNumber, "many">;
41
+ export declare const ItemFavoritesListDataSchema: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>, "many">;
42
42
  export declare const ItemFavoriteResponseSchema: z.ZodEffects<z.ZodObject<{
43
43
  count: z.ZodNumber;
44
44
  data: z.ZodObject<{
@@ -109,7 +109,7 @@ export declare const ItemFavoriteResponseSchema: z.ZodEffects<z.ZodObject<{
109
109
  }>;
110
110
  export declare const ItemFavoriteListResponseSchema: z.ZodEffects<z.ZodObject<{
111
111
  count: z.ZodNumber;
112
- data: z.ZodArray<z.ZodNumber, "many">;
112
+ data: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>, "many">;
113
113
  message: z.ZodString;
114
114
  options: z.ZodUnion<[z.ZodArray<z.ZodUnknown, "many">, z.ZodRecord<z.ZodString, z.ZodUnknown>]>;
115
115
  params: z.ZodUnion<[z.ZodArray<z.ZodUnknown, "many">, z.ZodRecord<z.ZodString, z.ZodUnknown>]>;
@@ -118,7 +118,7 @@ export declare const ItemFavoriteListResponseSchema: z.ZodEffects<z.ZodObject<{
118
118
  totalResults: z.ZodNumber;
119
119
  }, "strip", z.ZodTypeAny, {
120
120
  params: Record<string, unknown> | unknown[];
121
- data: number[];
121
+ data: Record<string, unknown>[];
122
122
  options: Record<string, unknown> | unknown[];
123
123
  status: number;
124
124
  message: string;
@@ -127,7 +127,7 @@ export declare const ItemFavoriteListResponseSchema: z.ZodEffects<z.ZodObject<{
127
127
  totalResults: number;
128
128
  }, {
129
129
  params: Record<string, unknown> | unknown[];
130
- data: number[];
130
+ data: Record<string, unknown>[];
131
131
  options: Record<string, unknown> | unknown[];
132
132
  status: number;
133
133
  message: string;
@@ -136,7 +136,7 @@ export declare const ItemFavoriteListResponseSchema: z.ZodEffects<z.ZodObject<{
136
136
  totalResults: number;
137
137
  }>, {
138
138
  params: Record<string, unknown> | unknown[];
139
- data: number[];
139
+ data: Record<string, unknown>[];
140
140
  options: Record<string, unknown> | unknown[];
141
141
  status: number;
142
142
  message: string;
@@ -145,7 +145,7 @@ export declare const ItemFavoriteListResponseSchema: z.ZodEffects<z.ZodObject<{
145
145
  totalResults: number;
146
146
  }, {
147
147
  params: Record<string, unknown> | unknown[];
148
- data: number[];
148
+ data: Record<string, unknown>[];
149
149
  options: Record<string, unknown> | unknown[];
150
150
  status: number;
151
151
  message: string;
@@ -1 +1 @@
1
- {"version":3,"file":"favorites.d.ts","sourceRoot":"","sources":["../../../../../src/services/items/schemas/favorites.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,sEAAsE;AACtE,eAAO,MAAM,kBAAkB;;;;;;gCAAkE,CAAC;AAElG;;;GAGG;AACH,eAAO,MAAM,+BAA+B,iCAAsB,CAAC;AAEnE,sDAAsD;AACtD,eAAO,MAAM,+BAA+B,uJAA6B,CAAC;AAE1E,+DAA+D;AAC/D,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;gCAMX,CAAC;AAEhC;;;GAGG;AACH,eAAO,MAAM,2BAA2B,iCAAsB,CAAC;AAG/D,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAyC,CAAC;AACjF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAkD,CAAC;AAG9F,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AACxF,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AACxF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AACpF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AACtF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC"}
1
+ {"version":3,"file":"favorites.d.ts","sourceRoot":"","sources":["../../../../../src/services/items/schemas/favorites.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,sEAAsE;AACtE,eAAO,MAAM,kBAAkB;;;;;;gCAAkE,CAAC;AAElG;;;GAGG;AACH,eAAO,MAAM,+BAA+B,iCAAsB,CAAC;AAEnE,sDAAsD;AACtD,eAAO,MAAM,+BAA+B,uJAA6B,CAAC;AAE1E,+DAA+D;AAC/D,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;gCAMX,CAAC;AAEhC;;;GAGG;AACH,eAAO,MAAM,2BAA2B,4DAAiC,CAAC;AAG1E,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAyC,CAAC;AACjF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAkD,CAAC;AAG9F,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AACxF,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AACxF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AACpF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AACtF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC"}
@@ -2,12 +2,12 @@ import { z } from 'zod';
2
2
  /**
3
3
  * Response Schemas for /item-favorites endpoints
4
4
  *
5
- * GET /item-favorites/{usersId} returns: { data: [86491, 12345, ...], ... }
5
+ * GET /item-favorites/{usersId}/items returns: { data: [{ invMastUid: 86491, ... }, ...], ... }
6
6
  * POST/PUT/DELETE return standard BaseResponse
7
7
  */
8
8
  export declare const ItemFavoritesListResponseSchema: z.ZodEffects<z.ZodObject<{
9
9
  count: z.ZodNumber;
10
- data: z.ZodArray<z.ZodNumber, "many">;
10
+ data: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>, "many">;
11
11
  message: z.ZodString;
12
12
  options: z.ZodUnion<[z.ZodArray<z.ZodUnknown, "many">, z.ZodRecord<z.ZodString, z.ZodUnknown>]>;
13
13
  params: z.ZodUnion<[z.ZodArray<z.ZodUnknown, "many">, z.ZodRecord<z.ZodString, z.ZodUnknown>]>;
@@ -16,7 +16,7 @@ export declare const ItemFavoritesListResponseSchema: z.ZodEffects<z.ZodObject<{
16
16
  totalResults: z.ZodNumber;
17
17
  }, "strip", z.ZodTypeAny, {
18
18
  params: Record<string, unknown> | unknown[];
19
- data: number[];
19
+ data: Record<string, unknown>[];
20
20
  options: Record<string, unknown> | unknown[];
21
21
  status: number;
22
22
  message: string;
@@ -25,7 +25,7 @@ export declare const ItemFavoritesListResponseSchema: z.ZodEffects<z.ZodObject<{
25
25
  totalResults: number;
26
26
  }, {
27
27
  params: Record<string, unknown> | unknown[];
28
- data: number[];
28
+ data: Record<string, unknown>[];
29
29
  options: Record<string, unknown> | unknown[];
30
30
  status: number;
31
31
  message: string;
@@ -34,7 +34,7 @@ export declare const ItemFavoritesListResponseSchema: z.ZodEffects<z.ZodObject<{
34
34
  totalResults: number;
35
35
  }>, {
36
36
  params: Record<string, unknown> | unknown[];
37
- data: number[];
37
+ data: Record<string, unknown>[];
38
38
  options: Record<string, unknown> | unknown[];
39
39
  status: number;
40
40
  message: string;
@@ -43,7 +43,7 @@ export declare const ItemFavoritesListResponseSchema: z.ZodEffects<z.ZodObject<{
43
43
  totalResults: number;
44
44
  }, {
45
45
  params: Record<string, unknown> | unknown[];
46
- data: number[];
46
+ data: Record<string, unknown>[];
47
47
  options: Record<string, unknown> | unknown[];
48
48
  status: number;
49
49
  message: string;
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Testing utilities for @simpleapps-com/augur-api
3
+ *
4
+ * Provides a Proxy-based deep mock factory that automatically creates
5
+ * mock functions at any depth, matching the AugurAPI client shape.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { createMockClient } from '@simpleapps-com/augur-api/testing';
10
+ *
11
+ * const { client, mocks } = createMockClient();
12
+ * mocks.commerce.cartHeaders.lookup.mockResolvedValue({ data: [] });
13
+ *
14
+ * const result = await client.commerce.cartHeaders.lookup({ userId: 1 });
15
+ * expect(mocks.commerce.cartHeaders.lookup.mock.calls[0]).toEqual([{ userId: 1 }]);
16
+ * ```
17
+ */
18
+ import type { AugurAPI } from './client';
19
+ /** Recorded call arguments */
20
+ export interface MockCall {
21
+ args: unknown[];
22
+ timestamp: number;
23
+ }
24
+ /** Call tracking state */
25
+ export interface MockState {
26
+ calls: unknown[][];
27
+ results: Array<{
28
+ type: 'return' | 'throw';
29
+ value: unknown;
30
+ }>;
31
+ instances: unknown[];
32
+ lastCall: unknown[] | undefined;
33
+ }
34
+ /** A mock function with call tracking and return-value control */
35
+ export interface MockFn {
36
+ (...args: unknown[]): unknown;
37
+ mock: MockState;
38
+ mockReturnValue(value: unknown): MockFn;
39
+ mockResolvedValue(value: unknown): MockFn;
40
+ mockRejectedValue(value: unknown): MockFn;
41
+ mockImplementation(fn: (...args: unknown[]) => unknown): MockFn;
42
+ mockReset(): MockFn;
43
+ mockClear(): MockFn;
44
+ }
45
+ /** Recursively maps AugurAPI to MockFn leaves */
46
+ export type DeepMockClient<T> = {
47
+ [K in keyof T]: T[K] extends Function ? MockFn : DeepMockClient<T[K]>;
48
+ };
49
+ /** Return type of createMockClient */
50
+ export interface MockClientResult {
51
+ client: AugurAPI;
52
+ mocks: DeepMockClient<AugurAPI>;
53
+ }
54
+ /**
55
+ * Create a fully-mocked AugurAPI client.
56
+ *
57
+ * Every property chain resolves to either a nested namespace or a callable
58
+ * MockFn. The same object serves as both `client` (passed to production code)
59
+ * and `mocks` (used in assertions).
60
+ *
61
+ * @returns `{ client, mocks }` — same object, dual-typed for ergonomics
62
+ *
63
+ * @example
64
+ * ```typescript
65
+ * const { client, mocks } = createMockClient();
66
+ *
67
+ * // Stub a return value
68
+ * mocks.items.products.get.mockResolvedValue({ data: { id: 1 } });
69
+ *
70
+ * // Call through the client
71
+ * const result = await client.items.products.get(1);
72
+ *
73
+ * // Assert
74
+ * expect(mocks.items.products.get.mock.calls).toHaveLength(1);
75
+ * expect(mocks.items.products.get.mock.calls[0]).toEqual([1]);
76
+ * ```
77
+ */
78
+ export declare function createMockClient(): MockClientResult;
79
+ //# sourceMappingURL=testing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../../src/testing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC,8BAA8B;AAC9B,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,0BAA0B;AAC1B,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC;IACnB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC7D,SAAS,EAAE,OAAO,EAAE,CAAC;IACrB,QAAQ,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC;CACjC;AAED,kEAAkE;AAClE,MAAM,WAAW,MAAM;IACrB,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC9B,IAAI,EAAE,SAAS,CAAC;IAChB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;IACxC,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;IAC1C,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;IAC1C,kBAAkB,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,GAAG,MAAM,CAAC;IAChE,SAAS,IAAI,MAAM,CAAC;IACpB,SAAS,IAAI,MAAM,CAAC;CACrB;AAED,iDAAiD;AACjD,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;KAE7B,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,GAAG,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACtE,CAAC;AAEF,sCAAsC;AACtC,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,QAAQ,CAAC;IACjB,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;CACjC;AAwID;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,gBAAgB,IAAI,gBAAgB,CAQnD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simpleapps-com/augur-api",
3
- "version": "0.9.10",
3
+ "version": "0.9.12",
4
4
  "description": "TypeScript client library for Augur microservices API endpoints",
5
5
  "keywords": [
6
6
  "augur",
@@ -16,6 +16,11 @@
16
16
  "types": "./dist/types/index.d.ts",
17
17
  "require": "./dist/cjs/index.js",
18
18
  "import": "./dist/esm/index.js"
19
+ },
20
+ "./testing": {
21
+ "types": "./dist/types/testing.d.ts",
22
+ "require": "./dist/cjs/testing.js",
23
+ "import": "./dist/esm/testing.js"
19
24
  }
20
25
  },
21
26
  "main": "./dist/cjs/index.js",