@voiceflow/universal-mock 2.0.0 → 3.0.0

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.
@@ -0,0 +1,33 @@
1
+ /**
2
+ * this implementation was copied from the package `@golevelup/ts-jest`
3
+ * so that we can make it framework-agnostic (jest vs vitest)
4
+ *
5
+ * you can find the original implementation here:
6
+ * https://github.com/golevelup/nestjs/blob/master/packages/testing/ts-jest/src/mocks.ts
7
+ */
8
+ declare const IS_MOCK_FREE: unique symbol;
9
+ export interface MockInstance<T, Y extends any[], C = any> {}
10
+ interface FrameworkStatic<M> {
11
+ fn: <T, Y extends any[], C = any>(implementation?: (this: C, ...args: Y) => T) => M;
12
+ isMockFunction?: (fn: any) => boolean;
13
+ }
14
+ type ArgsType<T> = T extends ((...args: infer R) => any) ? R : never;
15
+ export type DeepPartial<T> = { [P in keyof T]?: T[P] extends Array<infer U> ? Array<PartialFuncReturn<U>> : T[P] extends ReadonlyArray<infer U> ? ReadonlyArray<PartialFuncReturn<U>> : unknown extends T[P] ? T[P] : PartialFuncReturn<T[P]>; };
16
+ export type PartialFuncReturn<T> = { [K in keyof T]?: T[K] extends ((...args: infer A) => infer U) ? (...args: A) => PartialFuncReturn<U> | PartialFuncReturn<Awaited<U>> : DeepPartial<T[K]>; };
17
+ export type DeepMocked<T> = { [K in keyof T]: Required<T>[K] extends ((...args: any[]) => infer U) ? MockInstance<ReturnType<Required<T>[K]>, ArgsType<T[K]>> & ((...args: ArgsType<T[K]>) => DeepMocked<U>) : T[K] extends object ? DeepMocked<T[K]> : T[K]; } & T;
18
+ /**
19
+ * tags objects that should not be extended with automatically mocked properties and methods
20
+ */
21
+ export declare const mockFree: <T extends object & {
22
+ [IS_MOCK_FREE]?: boolean;
23
+ }>(value: T) => T;
24
+ /**
25
+ * creates a mock proxy that can be treated as either a function or an object
26
+ */
27
+ export declare const createUniversalMockProxy: <M, T extends object>(framework: FrameworkStatic<M>, name: string) => DeepMocked<T>;
28
+ export interface MockOptions {
29
+ name?: string;
30
+ }
31
+ export declare const createMockFactory: <M>(framework: FrameworkStatic<M>) => <T extends object>(partial?: PartialFuncReturn<T>, options?: MockOptions) => DeepMocked<T>;
32
+ export {};
33
+ //# sourceMappingURL=main.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.d.mts","names":[],"sources":["../src/mock.ts"],"mappings":";;;;;;;cASM;iBAGW,aAAa,GAAG,iBAAiB;UAExC,gBAAgB;EACxB,KAAK,GAAG,iBAAiB,SAAS,kBAAkB,MAAM,MAAM,MAAM,MAAM,MAAM;EAClF,kBAAkB;;KAEf,SAAS,KAAK,eAAc,YAAY,aAAY;YAE7C,YAAY,QACrB,WAAW,KAAK,EAAE,WAAW,YAAY,KACtC,MAAM,kBAAkB,MACxB,EAAE,WAAW,oBAAoB,KAC/B,cAAc,kBAAkB,sBAChB,EAAE,KAChB,EAAE,KACF,kBAAkB,EAAE;YAGlB,kBAAkB,QAC3B,WAAW,KAAK,EAAE,gBAAe,YAAY,YAAY,SAClD,MAAM,MAAM,kBAAkB,KAAK,kBAAkB,QAAQ,MACjE,YAAY,EAAE;YAGR,WAAW,QACpB,WAAW,IAAI,SAAS,GAAG,gBAAe,sBAAsB,KAC7D,aAAa,WAAW,SAAS,GAAG,KAAK,SAAS,EAAE,YAAY,MAAM,SAAS,EAAE,QAAQ,WAAW,MACpG,EAAE,oBACA,WAAW,EAAE,MACb,EAAE,QACN;;;;qBAgBS,WAAY;GAAsB;GAA2B,OAAO,MAAI;;;;qBAsCxE,2BAA4B,GAAG,kBAC1C,WAAW,gBAAgB,IAC3B,iBACC,WAAW;iBAkCG;EACf;;qBAGW,oBACV,GAAG,WAAW,gBAAgB,QAC9B,kBAAkB,UAAS,kBAAkB,IAAS,UAAS,gBAAmB,WAAW"}
package/build/main.mjs ADDED
@@ -0,0 +1,90 @@
1
+ // src/mock.ts
2
+ /**
3
+ * this implementation was copied from the package `@golevelup/ts-jest`
4
+ * so that we can make it framework-agnostic (jest vs vitest)
5
+ *
6
+ * you can find the original implementation here:
7
+ * https://github.com/golevelup/nestjs/blob/master/packages/testing/ts-jest/src/mocks.ts
8
+ */
9
+ const IS_PROXY_MOCK = Symbol("is-proxy-mock");
10
+ const IS_MOCK_FREE = Symbol("is-mock-free");
11
+ const isReserved = (prop) => {
12
+ return prop === "inspect" || prop === "then" || typeof prop === "symbol" && prop.toString() === "Symbol(util.inspect.custom)";
13
+ };
14
+ const isProxyMock = (obj) => obj[IS_PROXY_MOCK] === true;
15
+ const isMockFree = (obj) => obj instanceof Map || obj instanceof Set || obj[IS_MOCK_FREE] === true;
16
+ /**
17
+ * tags objects that should not be extended with automatically mocked properties and methods
18
+ */
19
+ const mockFree = (value) => {
20
+ if (value) value[IS_MOCK_FREE] = true;
21
+ return value;
22
+ };
23
+ /**
24
+ * creates a mocked function that returns a mock proxy when called
25
+ */
26
+ const createRecursiveMockProxy = (framework, name) => {
27
+ const cache = /* @__PURE__ */ new Map();
28
+ const proxy = new Proxy({}, { get: (_obj, prop) => {
29
+ if (prop === IS_PROXY_MOCK) return true;
30
+ if (isReserved(prop)) return void 0;
31
+ if (cache.has(prop)) return cache.get(prop);
32
+ const mockedProp = createUniversalMockProxy(framework, `${name}.${prop.toString()}`);
33
+ cache.set(prop, mockedProp);
34
+ return mockedProp;
35
+ } });
36
+ return framework.fn(() => proxy);
37
+ };
38
+ /**
39
+ * creates a mock proxy that can be treated as either a function or an object
40
+ */
41
+ const createUniversalMockProxy = (framework, name) => {
42
+ const cache = /* @__PURE__ */ new Map();
43
+ return new Proxy(createRecursiveMockProxy(framework, name), {
44
+ set: (target, prop, newValue, receiver) => {
45
+ const didSet = Reflect.set(target, prop, newValue, receiver);
46
+ if (didSet) cache.delete(prop);
47
+ return didSet;
48
+ },
49
+ get: (obj, prop) => {
50
+ if (prop === IS_PROXY_MOCK) return true;
51
+ if (isReserved(prop)) return void 0;
52
+ if (cache.has(prop)) return cache.get(prop);
53
+ let mockedProp;
54
+ if (prop in obj) mockedProp = obj[prop];
55
+ else mockedProp = createUniversalMockProxy(framework, `${name}.${prop.toString()}`);
56
+ cache.set(prop, mockedProp);
57
+ return mockedProp;
58
+ }
59
+ });
60
+ };
61
+ const createMockFactory = (framework) => (partial = {}, options = {}) => {
62
+ const cache = /* @__PURE__ */ new Map();
63
+ const { name = "mock" } = options;
64
+ return new Proxy(partial, {
65
+ set: (target, prop, newValue, receiver) => {
66
+ const didSet = Reflect.set(target, prop, newValue, receiver);
67
+ if (didSet) cache.delete(prop);
68
+ return didSet;
69
+ },
70
+ get: (obj, prop) => {
71
+ if (prop === IS_PROXY_MOCK) return true;
72
+ if (isReserved(prop)) return void 0;
73
+ if (cache.has(prop)) return cache.get(prop);
74
+ let mockedProp;
75
+ if (prop in obj) {
76
+ const checkProp = obj[prop];
77
+ if (isProxyMock(checkProp) || isMockFree(checkProp) || framework.isMockFunction?.(checkProp)) mockedProp = checkProp;
78
+ else if (typeof checkProp === "function") mockedProp = framework.fn(checkProp);
79
+ else if (!!checkProp && typeof checkProp === "object" && !Array.isArray(checkProp)) mockedProp = createMockFactory(framework)(checkProp, { name: `${name}.${prop.toString()}` });
80
+ else mockedProp = checkProp;
81
+ } else if (prop === "constructor") mockedProp = () => void 0;
82
+ else mockedProp = createUniversalMockProxy(framework, `${name}.${prop.toString()}`);
83
+ cache.set(prop, mockedProp);
84
+ return mockedProp;
85
+ }
86
+ });
87
+ };
88
+ export { createMockFactory, createUniversalMockProxy, mockFree };
89
+
90
+ //# sourceMappingURL=main.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.mjs","names":[],"sources":["../src/mock.ts"],"sourcesContent":["/**\n * this implementation was copied from the package `@golevelup/ts-jest`\n * so that we can make it framework-agnostic (jest vs vitest)\n *\n * you can find the original implementation here:\n * https://github.com/golevelup/nestjs/blob/master/packages/testing/ts-jest/src/mocks.ts\n */\n\nconst IS_PROXY_MOCK = Symbol('is-proxy-mock');\nconst IS_MOCK_FREE = Symbol('is-mock-free');\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-object-type\nexport interface MockInstance<T, Y extends any[], C = any> {}\n\ninterface FrameworkStatic<M> {\n fn: <T, Y extends any[], C = any>(implementation?: (this: C, ...args: Y) => T) => M;\n isMockFunction?: (fn: any) => boolean;\n}\ntype ArgsType<T> = T extends (...args: infer R) => any ? R : never;\n\nexport type DeepPartial<T> = {\n [P in keyof T]?: T[P] extends Array<infer U>\n ? Array<PartialFuncReturn<U>>\n : T[P] extends ReadonlyArray<infer U>\n ? ReadonlyArray<PartialFuncReturn<U>>\n : unknown extends T[P]\n ? T[P]\n : PartialFuncReturn<T[P]>;\n};\n\nexport type PartialFuncReturn<T> = {\n [K in keyof T]?: T[K] extends (...args: infer A) => infer U\n ? (...args: A) => PartialFuncReturn<U> | PartialFuncReturn<Awaited<U>>\n : DeepPartial<T[K]>;\n};\n\nexport type DeepMocked<T> = {\n [K in keyof T]: Required<T>[K] extends (...args: any[]) => infer U\n ? MockInstance<ReturnType<Required<T>[K]>, ArgsType<T[K]>> & ((...args: ArgsType<T[K]>) => DeepMocked<U>)\n : T[K] extends object\n ? DeepMocked<T[K]>\n : T[K];\n} & T;\n\nconst isReserved = (prop: string | symbol) => {\n return (\n prop === 'inspect' ||\n prop === 'then' ||\n (typeof prop === 'symbol' && prop.toString() === 'Symbol(util.inspect.custom)')\n );\n};\n\nconst isProxyMock = (obj: any) => obj[IS_PROXY_MOCK] === true;\nconst isMockFree = (obj: any) => obj instanceof Map || obj instanceof Set || obj[IS_MOCK_FREE] === true;\n\n/**\n * tags objects that should not be extended with automatically mocked properties and methods\n */\nexport const mockFree = <T extends object & { [IS_MOCK_FREE]?: boolean }>(value: T): T => {\n if (value) {\n // eslint-disable-next-line no-param-reassign\n value[IS_MOCK_FREE] = true;\n }\n\n return value;\n};\n\n/**\n * creates a mocked function that returns a mock proxy when called\n */\nconst createRecursiveMockProxy = <T extends object>(\n framework: FrameworkStatic<any>,\n name: string\n): MockInstance<T, any[]> => {\n const cache = new Map<string | number | symbol, any>();\n\n const proxy = new Proxy({} as T, {\n get: (_obj, prop) => {\n if (prop === IS_PROXY_MOCK) return true;\n if (isReserved(prop)) return undefined;\n if (cache.has(prop)) return cache.get(prop);\n\n const mockedProp = createUniversalMockProxy(framework, `${name}.${prop.toString()}`);\n\n cache.set(prop, mockedProp);\n\n return mockedProp;\n },\n });\n\n return framework.fn(() => proxy);\n};\n\n/**\n * creates a mock proxy that can be treated as either a function or an object\n */\nexport const createUniversalMockProxy = <M, T extends object>(\n framework: FrameworkStatic<M>,\n name: string\n): DeepMocked<T> => {\n const cache = new Map<string | number | symbol, any>();\n\n const proxy = new Proxy(createRecursiveMockProxy(framework, name) as T, {\n set: (target, prop, newValue, receiver) => {\n const didSet = Reflect.set(target, prop, newValue, receiver);\n\n if (didSet) {\n cache.delete(prop);\n }\n\n return didSet;\n },\n get: (obj, prop) => {\n if (prop === IS_PROXY_MOCK) return true;\n if (isReserved(prop)) return undefined;\n if (cache.has(prop)) return cache.get(prop);\n\n let mockedProp: any;\n\n if (prop in obj) {\n mockedProp = obj[prop as keyof PartialFuncReturn<T>];\n } else {\n mockedProp = createUniversalMockProxy(framework, `${name}.${prop.toString()}`);\n }\n\n cache.set(prop, mockedProp);\n return mockedProp;\n },\n });\n\n return proxy as DeepMocked<T>;\n};\n\nexport interface MockOptions {\n name?: string;\n}\n\nexport const createMockFactory =\n <M>(framework: FrameworkStatic<M>) =>\n <T extends object>(partial: PartialFuncReturn<T> = {}, options: MockOptions = {}): DeepMocked<T> => {\n const cache = new Map<string | number | symbol, any>();\n const { name = 'mock' } = options;\n\n const proxy = new Proxy(partial, {\n set: (target, prop, newValue, receiver) => {\n const didSet = Reflect.set(target, prop, newValue, receiver);\n\n if (didSet) {\n cache.delete(prop);\n }\n\n return didSet;\n },\n get: (obj, prop) => {\n if (prop === IS_PROXY_MOCK) return true;\n if (isReserved(prop)) return undefined;\n if (cache.has(prop)) return cache.get(prop);\n\n let mockedProp: any;\n\n if (prop in obj) {\n const checkProp = obj[prop as keyof PartialFuncReturn<T>];\n\n if (isProxyMock(checkProp) || isMockFree(checkProp) || framework.isMockFunction?.(checkProp)) {\n mockedProp = checkProp;\n } else if (typeof checkProp === 'function') {\n // wrap functions using test framework\n mockedProp = framework.fn(checkProp);\n } else if (!!checkProp && typeof checkProp === 'object' && !Array.isArray(checkProp)) {\n // extend objects by automatically mocking other properties and methods\n mockedProp = createMockFactory(framework)(checkProp, { name: `${name}.${prop.toString()}` });\n } else {\n mockedProp = checkProp;\n }\n } else if (prop === 'constructor') {\n mockedProp = () => undefined;\n } else {\n // treats undefined properties as both mock functions and objects with automatically mocked properties\n mockedProp = createUniversalMockProxy(framework, `${name}.${prop.toString()}`);\n }\n\n cache.set(prop, mockedProp);\n return mockedProp;\n },\n });\n\n return proxy as DeepMocked<T>;\n };\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,26 +1,10 @@
1
1
  {
2
2
  "name": "@voiceflow/universal-mock",
3
- "version": "2.0.0",
3
+ "version": "3.0.0",
4
+ "type": "module",
4
5
  "exports": {
5
- ".": {
6
- "types": "./build/cjs/main.d.ts",
7
- "import": "./build/esm/main.js",
8
- "default": "./build/cjs/main.js"
9
- },
10
- "./vitest": {
11
- "types": "./vitest/main.d.ts",
12
- "import": "./vitest/main.mjs",
13
- "default": "./vitest/main.mjs"
14
- }
15
- },
16
- "main": "build/cjs/main.js",
17
- "types": "build/cjs/main.d.ts",
18
- "typesVersions": {
19
- "*": {
20
- "vitest": [
21
- "./vitest/main.d.ts"
22
- ]
23
- }
6
+ ".": "./build/main.mjs",
7
+ "./vitest": "./vitest/main.mjs"
24
8
  },
25
9
  "files": [
26
10
  "build",
@@ -28,9 +12,7 @@
28
12
  ],
29
13
  "scripts": {
30
14
  "build": "yarn g:turbo run build:cmd --filter=@voiceflow/universal-mock...",
31
- "build:cjs": "yarn g:build:pkg cjs",
32
- "build:cmd": "yarn g:run-p build:cjs build:esm",
33
- "build:esm": "yarn g:build:pkg esm",
15
+ "build:cmd": "yarn g:tsdown",
34
16
  "clean": "yarn g:rimraf build",
35
17
  "lint": "yarn g:run-p -c lint:eslint lint:prettier",
36
18
  "lint:eslint": "yarn g:eslint",
@@ -57,5 +39,5 @@
57
39
  "volta": {
58
40
  "extends": "../../package.json"
59
41
  },
60
- "gitHead": "450bc0578d83b6bb5fefbf9ebc105bc21e2412e7"
42
+ "gitHead": "856cf9c6f41c3510675115d0feb331c6165f0975"
61
43
  }
package/vitest/main.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  import { vi } from 'vitest';
2
2
 
3
- import { createMockFactory } from '../build/cjs/mock.js';
3
+ import { createMockFactory } from '../build/main.mjs';
4
4
 
5
- export { mockFree } from '../build/cjs/mock.js';
5
+ export { mockFree } from '../build/main.mjs';
6
6
 
7
7
  export const createMock = createMockFactory(vi);
@@ -1,2 +0,0 @@
1
- export * from './mock';
2
- //# sourceMappingURL=main.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC"}
package/build/cjs/main.js DELETED
@@ -1,18 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./mock"), exports);
18
- //# sourceMappingURL=main.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB"}
@@ -1,40 +0,0 @@
1
- /**
2
- * this implementation was copied from the package `@golevelup/ts-jest`
3
- * so that we can make it framework-agnostic (jest vs vitest)
4
- *
5
- * you can find the original implementation here:
6
- * https://github.com/golevelup/nestjs/blob/master/packages/testing/ts-jest/src/mocks.ts
7
- */
8
- declare const IS_MOCK_FREE: unique symbol;
9
- export interface MockInstance<T, Y extends any[], C = any> {
10
- }
11
- interface FrameworkStatic<M> {
12
- fn: <T, Y extends any[], C = any>(implementation?: (this: C, ...args: Y) => T) => M;
13
- isMockFunction?: (fn: any) => boolean;
14
- }
15
- type ArgsType<T> = T extends (...args: infer R) => any ? R : never;
16
- export type DeepPartial<T> = {
17
- [P in keyof T]?: T[P] extends Array<infer U> ? Array<PartialFuncReturn<U>> : T[P] extends ReadonlyArray<infer U> ? ReadonlyArray<PartialFuncReturn<U>> : unknown extends T[P] ? T[P] : PartialFuncReturn<T[P]>;
18
- };
19
- export type PartialFuncReturn<T> = {
20
- [K in keyof T]?: T[K] extends (...args: infer A) => infer U ? (...args: A) => PartialFuncReturn<U> | PartialFuncReturn<Awaited<U>> : DeepPartial<T[K]>;
21
- };
22
- export type DeepMocked<T> = {
23
- [K in keyof T]: Required<T>[K] extends (...args: any[]) => infer U ? MockInstance<ReturnType<Required<T>[K]>, ArgsType<T[K]>> & ((...args: ArgsType<T[K]>) => DeepMocked<U>) : T[K] extends object ? DeepMocked<T[K]> : T[K];
24
- } & T;
25
- /**
26
- * tags objects that should not be extended with automatically mocked properties and methods
27
- */
28
- export declare const mockFree: <T extends object & {
29
- [IS_MOCK_FREE]?: boolean;
30
- }>(value: T) => T;
31
- /**
32
- * creates a mock proxy that can be treated as either a function or an object
33
- */
34
- export declare const createUniversalMockProxy: <M, T extends object>(framework: FrameworkStatic<M>, name: string) => DeepMocked<T>;
35
- export interface MockOptions {
36
- name?: string;
37
- }
38
- export declare const createMockFactory: <M>(framework: FrameworkStatic<M>) => <T extends object>(partial?: PartialFuncReturn<T>, options?: MockOptions) => DeepMocked<T>;
39
- export {};
40
- //# sourceMappingURL=mock.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../src/mock.ts"],"names":[],"mappings":"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"}
package/build/cjs/mock.js DELETED
@@ -1,135 +0,0 @@
1
- "use strict";
2
- /**
3
- * this implementation was copied from the package `@golevelup/ts-jest`
4
- * so that we can make it framework-agnostic (jest vs vitest)
5
- *
6
- * you can find the original implementation here:
7
- * https://github.com/golevelup/nestjs/blob/master/packages/testing/ts-jest/src/mocks.ts
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.createMockFactory = exports.createUniversalMockProxy = exports.mockFree = void 0;
11
- const IS_PROXY_MOCK = Symbol('is-proxy-mock');
12
- const IS_MOCK_FREE = Symbol('is-mock-free');
13
- const isReserved = (prop) => {
14
- return (prop === 'inspect' ||
15
- prop === 'then' ||
16
- (typeof prop === 'symbol' && prop.toString() === 'Symbol(util.inspect.custom)'));
17
- };
18
- const isProxyMock = (obj) => obj[IS_PROXY_MOCK] === true;
19
- const isMockFree = (obj) => obj instanceof Map || obj instanceof Set || obj[IS_MOCK_FREE] === true;
20
- /**
21
- * tags objects that should not be extended with automatically mocked properties and methods
22
- */
23
- const mockFree = (value) => {
24
- if (value) {
25
- // eslint-disable-next-line no-param-reassign
26
- value[IS_MOCK_FREE] = true;
27
- }
28
- return value;
29
- };
30
- exports.mockFree = mockFree;
31
- /**
32
- * creates a mocked function that returns a mock proxy when called
33
- */
34
- const createRecursiveMockProxy = (framework, name) => {
35
- const cache = new Map();
36
- const proxy = new Proxy({}, {
37
- get: (_obj, prop) => {
38
- if (prop === IS_PROXY_MOCK)
39
- return true;
40
- if (isReserved(prop))
41
- return undefined;
42
- if (cache.has(prop))
43
- return cache.get(prop);
44
- const mockedProp = (0, exports.createUniversalMockProxy)(framework, `${name}.${prop.toString()}`);
45
- cache.set(prop, mockedProp);
46
- return mockedProp;
47
- },
48
- });
49
- return framework.fn(() => proxy);
50
- };
51
- /**
52
- * creates a mock proxy that can be treated as either a function or an object
53
- */
54
- const createUniversalMockProxy = (framework, name) => {
55
- const cache = new Map();
56
- const proxy = new Proxy(createRecursiveMockProxy(framework, name), {
57
- set: (target, prop, newValue, receiver) => {
58
- const didSet = Reflect.set(target, prop, newValue, receiver);
59
- if (didSet) {
60
- cache.delete(prop);
61
- }
62
- return didSet;
63
- },
64
- get: (obj, prop) => {
65
- if (prop === IS_PROXY_MOCK)
66
- return true;
67
- if (isReserved(prop))
68
- return undefined;
69
- if (cache.has(prop))
70
- return cache.get(prop);
71
- let mockedProp;
72
- if (prop in obj) {
73
- mockedProp = obj[prop];
74
- }
75
- else {
76
- mockedProp = (0, exports.createUniversalMockProxy)(framework, `${name}.${prop.toString()}`);
77
- }
78
- cache.set(prop, mockedProp);
79
- return mockedProp;
80
- },
81
- });
82
- return proxy;
83
- };
84
- exports.createUniversalMockProxy = createUniversalMockProxy;
85
- const createMockFactory = (framework) => (partial = {}, options = {}) => {
86
- const cache = new Map();
87
- const { name = 'mock' } = options;
88
- const proxy = new Proxy(partial, {
89
- set: (target, prop, newValue, receiver) => {
90
- const didSet = Reflect.set(target, prop, newValue, receiver);
91
- if (didSet) {
92
- cache.delete(prop);
93
- }
94
- return didSet;
95
- },
96
- get: (obj, prop) => {
97
- if (prop === IS_PROXY_MOCK)
98
- return true;
99
- if (isReserved(prop))
100
- return undefined;
101
- if (cache.has(prop))
102
- return cache.get(prop);
103
- let mockedProp;
104
- if (prop in obj) {
105
- const checkProp = obj[prop];
106
- if (isProxyMock(checkProp) || isMockFree(checkProp) || framework.isMockFunction?.(checkProp)) {
107
- mockedProp = checkProp;
108
- }
109
- else if (typeof checkProp === 'function') {
110
- // wrap functions using test framework
111
- mockedProp = framework.fn(checkProp);
112
- }
113
- else if (!!checkProp && typeof checkProp === 'object' && !Array.isArray(checkProp)) {
114
- // extend objects by automatically mocking other properties and methods
115
- mockedProp = (0, exports.createMockFactory)(framework)(checkProp, { name: `${name}.${prop.toString()}` });
116
- }
117
- else {
118
- mockedProp = checkProp;
119
- }
120
- }
121
- else if (prop === 'constructor') {
122
- mockedProp = () => undefined;
123
- }
124
- else {
125
- // treats undefined properties as both mock functions and objects with automatically mocked properties
126
- mockedProp = (0, exports.createUniversalMockProxy)(framework, `${name}.${prop.toString()}`);
127
- }
128
- cache.set(prop, mockedProp);
129
- return mockedProp;
130
- },
131
- });
132
- return proxy;
133
- };
134
- exports.createMockFactory = createMockFactory;
135
- //# sourceMappingURL=mock.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mock.js","sourceRoot":"","sources":["../../src/mock.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- { "type": "commonjs" }
@@ -1,2 +0,0 @@
1
- export * from './mock.js';
2
- //# sourceMappingURL=main.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC"}
package/build/esm/main.js DELETED
@@ -1,2 +0,0 @@
1
- export * from './mock.js';
2
- //# sourceMappingURL=main.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC"}
@@ -1,40 +0,0 @@
1
- /**
2
- * this implementation was copied from the package `@golevelup/ts-jest`
3
- * so that we can make it framework-agnostic (jest vs vitest)
4
- *
5
- * you can find the original implementation here:
6
- * https://github.com/golevelup/nestjs/blob/master/packages/testing/ts-jest/src/mocks.ts
7
- */
8
- declare const IS_MOCK_FREE: unique symbol;
9
- export interface MockInstance<T, Y extends any[], C = any> {
10
- }
11
- interface FrameworkStatic<M> {
12
- fn: <T, Y extends any[], C = any>(implementation?: (this: C, ...args: Y) => T) => M;
13
- isMockFunction?: (fn: any) => boolean;
14
- }
15
- type ArgsType<T> = T extends (...args: infer R) => any ? R : never;
16
- export type DeepPartial<T> = {
17
- [P in keyof T]?: T[P] extends Array<infer U> ? Array<PartialFuncReturn<U>> : T[P] extends ReadonlyArray<infer U> ? ReadonlyArray<PartialFuncReturn<U>> : unknown extends T[P] ? T[P] : PartialFuncReturn<T[P]>;
18
- };
19
- export type PartialFuncReturn<T> = {
20
- [K in keyof T]?: T[K] extends (...args: infer A) => infer U ? (...args: A) => PartialFuncReturn<U> | PartialFuncReturn<Awaited<U>> : DeepPartial<T[K]>;
21
- };
22
- export type DeepMocked<T> = {
23
- [K in keyof T]: Required<T>[K] extends (...args: any[]) => infer U ? MockInstance<ReturnType<Required<T>[K]>, ArgsType<T[K]>> & ((...args: ArgsType<T[K]>) => DeepMocked<U>) : T[K] extends object ? DeepMocked<T[K]> : T[K];
24
- } & T;
25
- /**
26
- * tags objects that should not be extended with automatically mocked properties and methods
27
- */
28
- export declare const mockFree: <T extends object & {
29
- [IS_MOCK_FREE]?: boolean;
30
- }>(value: T) => T;
31
- /**
32
- * creates a mock proxy that can be treated as either a function or an object
33
- */
34
- export declare const createUniversalMockProxy: <M, T extends object>(framework: FrameworkStatic<M>, name: string) => DeepMocked<T>;
35
- export interface MockOptions {
36
- name?: string;
37
- }
38
- export declare const createMockFactory: <M>(framework: FrameworkStatic<M>) => <T extends object>(partial?: PartialFuncReturn<T>, options?: MockOptions) => DeepMocked<T>;
39
- export {};
40
- //# sourceMappingURL=mock.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../src/mock.ts"],"names":[],"mappings":"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"}
package/build/esm/mock.js DELETED
@@ -1,129 +0,0 @@
1
- /**
2
- * this implementation was copied from the package `@golevelup/ts-jest`
3
- * so that we can make it framework-agnostic (jest vs vitest)
4
- *
5
- * you can find the original implementation here:
6
- * https://github.com/golevelup/nestjs/blob/master/packages/testing/ts-jest/src/mocks.ts
7
- */
8
- const IS_PROXY_MOCK = Symbol('is-proxy-mock');
9
- const IS_MOCK_FREE = Symbol('is-mock-free');
10
- const isReserved = (prop) => {
11
- return (prop === 'inspect' ||
12
- prop === 'then' ||
13
- (typeof prop === 'symbol' && prop.toString() === 'Symbol(util.inspect.custom)'));
14
- };
15
- const isProxyMock = (obj) => obj[IS_PROXY_MOCK] === true;
16
- const isMockFree = (obj) => obj instanceof Map || obj instanceof Set || obj[IS_MOCK_FREE] === true;
17
- /**
18
- * tags objects that should not be extended with automatically mocked properties and methods
19
- */
20
- export const mockFree = (value) => {
21
- if (value) {
22
- // eslint-disable-next-line no-param-reassign
23
- value[IS_MOCK_FREE] = true;
24
- }
25
- return value;
26
- };
27
- /**
28
- * creates a mocked function that returns a mock proxy when called
29
- */
30
- const createRecursiveMockProxy = (framework, name) => {
31
- const cache = new Map();
32
- const proxy = new Proxy({}, {
33
- get: (_obj, prop) => {
34
- if (prop === IS_PROXY_MOCK)
35
- return true;
36
- if (isReserved(prop))
37
- return undefined;
38
- if (cache.has(prop))
39
- return cache.get(prop);
40
- const mockedProp = createUniversalMockProxy(framework, `${name}.${prop.toString()}`);
41
- cache.set(prop, mockedProp);
42
- return mockedProp;
43
- },
44
- });
45
- return framework.fn(() => proxy);
46
- };
47
- /**
48
- * creates a mock proxy that can be treated as either a function or an object
49
- */
50
- export const createUniversalMockProxy = (framework, name) => {
51
- const cache = new Map();
52
- const proxy = new Proxy(createRecursiveMockProxy(framework, name), {
53
- set: (target, prop, newValue, receiver) => {
54
- const didSet = Reflect.set(target, prop, newValue, receiver);
55
- if (didSet) {
56
- cache.delete(prop);
57
- }
58
- return didSet;
59
- },
60
- get: (obj, prop) => {
61
- if (prop === IS_PROXY_MOCK)
62
- return true;
63
- if (isReserved(prop))
64
- return undefined;
65
- if (cache.has(prop))
66
- return cache.get(prop);
67
- let mockedProp;
68
- if (prop in obj) {
69
- mockedProp = obj[prop];
70
- }
71
- else {
72
- mockedProp = createUniversalMockProxy(framework, `${name}.${prop.toString()}`);
73
- }
74
- cache.set(prop, mockedProp);
75
- return mockedProp;
76
- },
77
- });
78
- return proxy;
79
- };
80
- export const createMockFactory = (framework) => (partial = {}, options = {}) => {
81
- const cache = new Map();
82
- const { name = 'mock' } = options;
83
- const proxy = new Proxy(partial, {
84
- set: (target, prop, newValue, receiver) => {
85
- const didSet = Reflect.set(target, prop, newValue, receiver);
86
- if (didSet) {
87
- cache.delete(prop);
88
- }
89
- return didSet;
90
- },
91
- get: (obj, prop) => {
92
- if (prop === IS_PROXY_MOCK)
93
- return true;
94
- if (isReserved(prop))
95
- return undefined;
96
- if (cache.has(prop))
97
- return cache.get(prop);
98
- let mockedProp;
99
- if (prop in obj) {
100
- const checkProp = obj[prop];
101
- if (isProxyMock(checkProp) || isMockFree(checkProp) || framework.isMockFunction?.(checkProp)) {
102
- mockedProp = checkProp;
103
- }
104
- else if (typeof checkProp === 'function') {
105
- // wrap functions using test framework
106
- mockedProp = framework.fn(checkProp);
107
- }
108
- else if (!!checkProp && typeof checkProp === 'object' && !Array.isArray(checkProp)) {
109
- // extend objects by automatically mocking other properties and methods
110
- mockedProp = createMockFactory(framework)(checkProp, { name: `${name}.${prop.toString()}` });
111
- }
112
- else {
113
- mockedProp = checkProp;
114
- }
115
- }
116
- else if (prop === 'constructor') {
117
- mockedProp = () => undefined;
118
- }
119
- else {
120
- // treats undefined properties as both mock functions and objects with automatically mocked properties
121
- mockedProp = createUniversalMockProxy(framework, `${name}.${prop.toString()}`);
122
- }
123
- cache.set(prop, mockedProp);
124
- return mockedProp;
125
- },
126
- });
127
- return proxy;
128
- };
129
- //# sourceMappingURL=mock.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mock.js","sourceRoot":"","sources":["../../src/mock.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- { "type": "module" }