@simpleapps-com/augur-api 0.9.11 → 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.
@@ -1,4 +1,4 @@
1
- export declare const VERSION = "0.9.11";
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.11';
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; } });
@@ -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":";AAAA;;;;;;;;;;;;;;;;GAgBG;;AAwMH,4CAQC;AAtKD,qDAAqD;AACrD,SAAS,YAAY;IACnB,IAAI,cAAc,GAA6C,IAAI,CAAC;IAEpE,MAAM,KAAK,GAAc;QACvB,KAAK,EAAE,EAAE;QACT,OAAO,EAAE,EAAE;QACX,SAAS,EAAE,EAAE;QACb,QAAQ,EAAE,SAAS;KACpB,CAAC;IAEF,MAAM,EAAE,GAAG,SAAS,MAAM,CAAgB,GAAG,IAAe;QAC1D,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;QACtB,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE3B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACpE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACtD,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;YACpD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAW,CAAC;IAEZ,EAAE,CAAC,IAAI,GAAG,KAAK,CAAC;IAEhB,EAAE,CAAC,eAAe,GAAG,CAAC,KAAc,EAAU,EAAE;QAC9C,cAAc,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;IAEF,EAAE,CAAC,iBAAiB,GAAG,CAAC,KAAc,EAAU,EAAE;QAChD,cAAc,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9C,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;IAEF,EAAE,CAAC,iBAAiB,GAAG,CAAC,KAAc,EAAU,EAAE;QAChD,cAAc,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7C,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;IAEF,EAAE,CAAC,kBAAkB,GAAG,CAAC,MAAuC,EAAU,EAAE;QAC1E,cAAc,GAAG,MAAM,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;IAEF,EAAE,CAAC,SAAS,GAAG,GAAW,EAAE;QAC1B,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;QACjB,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;QACnB,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;QACrB,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC3B,cAAc,GAAG,IAAI,CAAC;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;IAEF,EAAE,CAAC,SAAS,GAAG,GAAW,EAAE;QAC1B,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;QACjB,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;QACnB,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;QACrB,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC3B,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;IAEF,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,oEAAoE;AACpE,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IAC5B,MAAM;IACN,iBAAiB;IACjB,mBAAmB;IACnB,mBAAmB;IACnB,oBAAoB;IACpB,WAAW;IACX,WAAW;CACZ,CAAC,CAAC;AAEH;;GAEG;AACH,SAAS,eAAe,CAAC,OAA4B,EAAE,GAAW;IAChE,IAAI,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,IAAI,GAAG,YAAY,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CAAC,OAA4B,EAAE,OAAiB,EAAE;IACxE,MAAM,KAAK,GAAG,IAAI,GAAG,EAA4B,CAAC;IAElD,gEAAgE;IAChE,OAAO,IAAI,KAAK,CAAC,cAAa,CAAsB,EAAE;QACpD,GAAG,CAAC,OAAe,EAAE,IAAqB;YACxC,8DAA8D;YAC9D,IAAI,IAAI,KAAK,MAAM;gBAAE,OAAO,SAAS,CAAC;YAEtC,wBAAwB;YACxB,IAAI,IAAI,KAAK,MAAM,CAAC,WAAW;gBAAE,OAAO,SAAS,CAAC;YAClD,IAAI,IAAI,KAAK,MAAM,CAAC,QAAQ;gBAAE,OAAO,SAAS,CAAC;YAC/C,IAAI,IAAI,KAAK,MAAM,CAAC,WAAW;gBAAE,OAAO,WAAW,CAAC;YAEpD,4DAA4D;YAC5D,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxD,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBACtD,OAAQ,IAA2C,CAAC,IAAI,CAAC,CAAC;YAC5D,CAAC;YAED,4BAA4B;YAC5B,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpB,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;YAED,wCAAwC;YACxC,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAC1C,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAClD,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACvB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,KAAK,CAAC,OAAe,EAAE,OAAgB,EAAE,IAAe;YACtD,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACtD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACnC,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,SAAgB,gBAAgB;IAC9B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAEvC,OAAO;QACL,MAAM,EAAE,KAA4B;QACpC,KAAK,EAAE,KAA4C;KACpD,CAAC;AACJ,CAAC"}
@@ -1,4 +1,4 @@
1
- export declare const VERSION = "0.9.11";
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.11';
1
+ export const VERSION = '0.9.12';
2
2
  // Main client
3
3
  export { AugurAPI } from './client';
4
4
  // Utilities
@@ -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.11";
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';
@@ -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.11",
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",