diff options
Diffstat (limited to 'vanilla/node_modules/@vitest/mocker/dist/index.js')
| -rw-r--r-- | vanilla/node_modules/@vitest/mocker/dist/index.js | 185 |
1 files changed, 0 insertions, 185 deletions
diff --git a/vanilla/node_modules/@vitest/mocker/dist/index.js b/vanilla/node_modules/@vitest/mocker/dist/index.js deleted file mode 100644 index 79c5c9a..0000000 --- a/vanilla/node_modules/@vitest/mocker/dist/index.js +++ /dev/null @@ -1,185 +0,0 @@ -export { A as AutomockedModule, b as AutospiedModule, a as ManualMockedModule, M as MockerRegistry, R as RedirectedModule } from './chunk-registry.js'; - -function mockObject(options, object, mockExports = {}) { - const finalizers = new Array(); - const refs = new RefTracker(); - const define = (container, key, value) => { - try { - container[key] = value; - return true; - } catch { - return false; - } - }; - const createMock = (currentValue) => { - if (!options.createMockInstance) { - throw new Error("[@vitest/mocker] `createMockInstance` is not defined. This is a Vitest error. Please open a new issue with reproduction."); - } - const createMockInstance = options.createMockInstance; - const prototypeMembers = currentValue.prototype ? collectFunctionProperties(currentValue.prototype) : []; - return createMockInstance({ - name: currentValue.name, - prototypeMembers, - originalImplementation: options.type === "autospy" ? currentValue : undefined, - keepMembersImplementation: options.type === "autospy" - }); - }; - const mockPropertiesOf = (container, newContainer) => { - const containerType = getType(container); - const isModule = containerType === "Module" || !!container.__esModule; - for (const { key: property, descriptor } of getAllMockableProperties(container, isModule, options.globalConstructors)) { - // Modules define their exports as getters. We want to process those. - if (!isModule && descriptor.get) { - try { - if (options.type === "autospy") { - Object.defineProperty(newContainer, property, descriptor); - } else { - Object.defineProperty(newContainer, property, { - configurable: descriptor.configurable, - enumerable: descriptor.enumerable, - get: () => {}, - set: descriptor.set ? () => {} : undefined - }); - } - } catch {} - continue; - } - // Skip special read-only props, we don't want to mess with those. - if (isReadonlyProp(container[property], property)) { - continue; - } - const value = container[property]; - // Special handling of references we've seen before to prevent infinite - // recursion in circular objects. - const refId = refs.getId(value); - if (refId !== undefined) { - finalizers.push(() => define(newContainer, property, refs.getMockedValue(refId))); - continue; - } - const type = getType(value); - if (Array.isArray(value)) { - if (options.type === "automock") { - define(newContainer, property, []); - } else { - const array = value.map((value) => { - if (value && typeof value === "object") { - const newObject = {}; - mockPropertiesOf(value, newObject); - return newObject; - } - if (typeof value === "function") { - return createMock(value); - } - return value; - }); - define(newContainer, property, array); - } - continue; - } - const isFunction = type.includes("Function") && typeof value === "function"; - if ((!isFunction || value._isMockFunction) && type !== "Object" && type !== "Module") { - define(newContainer, property, value); - continue; - } - // Sometimes this assignment fails for some unknown reason. If it does, - // just move along. - if (!define(newContainer, property, isFunction || options.type === "autospy" ? value : {})) { - continue; - } - if (isFunction) { - const mock = createMock(newContainer[property]); - newContainer[property] = mock; - } - refs.track(value, newContainer[property]); - mockPropertiesOf(value, newContainer[property]); - } - }; - const mockedObject = mockExports; - mockPropertiesOf(object, mockedObject); - // Plug together refs - for (const finalizer of finalizers) { - finalizer(); - } - return mockedObject; -} -class RefTracker { - idMap = new Map(); - mockedValueMap = new Map(); - getId(value) { - return this.idMap.get(value); - } - getMockedValue(id) { - return this.mockedValueMap.get(id); - } - track(originalValue, mockedValue) { - const newId = this.idMap.size; - this.idMap.set(originalValue, newId); - this.mockedValueMap.set(newId, mockedValue); - return newId; - } -} -function getType(value) { - return Object.prototype.toString.apply(value).slice(8, -1); -} -function isReadonlyProp(object, prop) { - if (prop === "arguments" || prop === "caller" || prop === "callee" || prop === "name" || prop === "length") { - const typeName = getType(object); - return typeName === "Function" || typeName === "AsyncFunction" || typeName === "GeneratorFunction" || typeName === "AsyncGeneratorFunction"; - } - if (prop === "source" || prop === "global" || prop === "ignoreCase" || prop === "multiline") { - return getType(object) === "RegExp"; - } - return false; -} -function getAllMockableProperties(obj, isModule, constructors) { - const { Map, Object, Function, RegExp, Array } = constructors; - const allProps = new Map(); - let curr = obj; - do { - // we don't need properties from these - if (curr === Object.prototype || curr === Function.prototype || curr === RegExp.prototype) { - break; - } - collectOwnProperties(curr, (key) => { - const descriptor = Object.getOwnPropertyDescriptor(curr, key); - if (descriptor) { - allProps.set(key, { - key, - descriptor - }); - } - }); - } while (curr = Object.getPrototypeOf(curr)); - // default is not specified in ownKeys, if module is interoped - if (isModule && !allProps.has("default") && "default" in obj) { - const descriptor = Object.getOwnPropertyDescriptor(obj, "default"); - if (descriptor) { - allProps.set("default", { - key: "default", - descriptor - }); - } - } - return Array.from(allProps.values()); -} -function collectOwnProperties(obj, collector) { - const collect = typeof collector === "function" ? collector : (key) => collector.add(key); - Object.getOwnPropertyNames(obj).forEach(collect); - Object.getOwnPropertySymbols(obj).forEach(collect); -} -function collectFunctionProperties(prototype) { - const properties = new Set(); - collectOwnProperties(prototype, (prop) => { - const descriptor = Object.getOwnPropertyDescriptor(prototype, prop); - if (!descriptor || descriptor.get) { - return; - } - const type = getType(descriptor.value); - if (type.includes("Function") && !isReadonlyProp(descriptor.value, prop)) { - properties.add(prop); - } - }); - return Array.from(properties); -} - -export { mockObject }; |
