diff --git a/dist/index.d.ts.map b/dist/index.d.ts.map index 6748644..7d281e9 100644 --- a/dist/index.d.ts.map +++ b/dist/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,KAAK,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE;;EA6C3D"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,KAAK,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE;;EAuD3D"} \ No newline at end of file diff --git a/dist/index.js b/dist/index.js index ac68c05..646f682 100644 --- a/dist/index.js +++ b/dist/index.js @@ -35,10 +35,18 @@ function mstdog(paths) { } if (Array.isArray(typeField)) { mockData[key] = handleArrayField(typeField, enumValues); + return; } - else { - mockData[key] = generateValueForType(typeField.name || typeField, enumValues && enumValues.length > 0 ? enumValues : undefined); + if (typeField instanceof mongoose_1.Schema) { + mockData[key] = mstdog(typeField.paths); + return; } + else if (typeField instanceof mongoose_1.Schema.Types.Subdocument) { + mockData[key] = mstdog(typeField.schema.paths); + return; + } + mockData[key] = generateValueForType(typeField.name || typeField, enumValues && enumValues.length > 0 ? enumValues : undefined); + return; } }); return mockData; diff --git a/dist/index.js.map b/dist/index.js.map index d1f01a2..f69bbdc 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index c3bab9c..8933916 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,14 +10,18 @@ "license": "MIT", "dependencies": { "@faker-js/faker": "^8.0.2", - "@types/node": "^20.6.2", "mongoose": "^7.5.2", "typescript": "^5.2.2" }, "devDependencies": { "@types/jest": "^29.5.5", + "@types/node": "^20.6.2", "jest": "^29.7.0", - "ts-jest": "^29.1.1" + "ts-jest": "^29.1.1", + "ts-node": "^10.9.1" + }, + "engines": { + "node": "^18.0.0" } }, "node_modules/@ampproject/remapping": { @@ -661,6 +665,28 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "node_modules/@faker-js/faker": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-8.0.2.tgz", @@ -1060,6 +1086,30 @@ "@sinonjs/commons": "^3.0.0" } }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true + }, "node_modules/@types/babel__core": { "version": "7.20.2", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.2.tgz", @@ -1184,6 +1234,27 @@ "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", "dev": true }, + "node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -1236,6 +1307,12 @@ "node": ">= 8" } }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, "node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -1612,6 +1689,12 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -1679,6 +1762,15 @@ "node": ">=8" } }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/diff-sequences": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", @@ -3760,6 +3852,49 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, + "node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, "node_modules/type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", @@ -3823,6 +3958,12 @@ "browserslist": ">= 4.21.0" } }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, "node_modules/v8-to-istanbul": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", @@ -3965,6 +4106,15 @@ "node": ">=12" } }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index 6b1cce1..da4dd11 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mstdog", - "version": "1.0.0", + "version": "1.0.1", "description": "Mongoose Schema To Dummy Object Generator", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -9,6 +9,7 @@ }, "scripts": { "start": "node dist/index.js", + "dev": "ts-node src/index.ts", "prestart": "npm run build", "build": "tsc", "test": "jest" @@ -33,6 +34,7 @@ "devDependencies": { "@types/node": "^20.6.2", "@types/jest": "^29.5.5", + "ts-node": "^10.9.1", "jest": "^29.7.0", "ts-jest": "^29.1.1" } diff --git a/src/index.ts b/src/index.ts index 07a6e2c..3fae8dc 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,4 @@ -import {Schema, Types} from "mongoose"; +import {Schema, SchemaTypes, Types} from "mongoose"; import {faker} from "@faker-js/faker" export default function mstdog(paths: { [key: string]: any }) { @@ -39,9 +39,19 @@ export default function mstdog(paths: { [key: string]: any }) { if (Array.isArray(typeField)) { mockData[key] = handleArrayField(typeField, enumValues); - } else { - mockData[key] = generateValueForType(typeField.name || typeField, enumValues && enumValues.length > 0 ? enumValues : undefined); + return; } + + if (typeField instanceof Schema) { + mockData[key] = mstdog(typeField.paths); + return; + } else if (typeField instanceof Schema.Types.Subdocument) { + mockData[key] = mstdog(typeField.schema.paths); + return; + } + + mockData[key] = generateValueForType(typeField.name || typeField, enumValues && enumValues.length > 0 ? enumValues : undefined); + return; } }); @@ -104,4 +114,4 @@ const handleDateType = (): Date => { const handleBooleanType = (): Boolean => { return faker.datatype.boolean() -} \ No newline at end of file +}