Commit 65462973 authored by nanahira's avatar nanahira

kick lodash out

parent 1604a67a
# schemastery-gen # schemastery-gen
Decorator style of [Schemastery](https://github.com/Shigma/schemastery) [Schemastery](https://github.com/Shigma/schemastery) 的装饰器定义形式。
## Install ## Install
...@@ -63,4 +63,4 @@ export class Config { ...@@ -63,4 +63,4 @@ export class Config {
// will resolve this class, just like how Schemastery works. // will resolve this class, just like how Schemastery works.
const config = new Config(myConfigObject); const config = new Config(myConfigObject);
``` ```
\ No newline at end of file
...@@ -9,13 +9,11 @@ ...@@ -9,13 +9,11 @@
"version": "3.1.16", "version": "3.1.16",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"lodash": "^4.17.21",
"reflect-metadata": "^0.1.13", "reflect-metadata": "^0.1.13",
"typed-reflector": "^1.0.10" "typed-reflector": "^1.0.10"
}, },
"devDependencies": { "devDependencies": {
"@types/jest": "^27.0.3", "@types/jest": "^27.0.3",
"@types/lodash": "^4.14.176",
"@types/node": "^16.11.9", "@types/node": "^16.11.9",
"@typescript-eslint/eslint-plugin": "^4.33.0", "@typescript-eslint/eslint-plugin": "^4.33.0",
"@typescript-eslint/parser": "^4.33.0", "@typescript-eslint/parser": "^4.33.0",
...@@ -29,7 +27,7 @@ ...@@ -29,7 +27,7 @@
"typescript": "^4.8.2" "typescript": "^4.8.2"
}, },
"peerDependencies": { "peerDependencies": {
"schemastery": "^3.5.3" "schemastery": "^3.6.1"
} }
}, },
"node_modules/@babel/code-frame": { "node_modules/@babel/code-frame": {
...@@ -1153,12 +1151,6 @@ ...@@ -1153,12 +1151,6 @@
"integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==",
"dev": true "dev": true
}, },
"node_modules/@types/lodash": {
"version": "4.14.176",
"resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.176.tgz",
"integrity": "sha512-xZmuPTa3rlZoIbtDUyJKZQimJV3bxCmzMIO2c9Pz9afyDro6kr7R79GwcB6mRhuoPmV2p1Vb66WOJH7F886WKQ==",
"dev": true
},
"node_modules/@types/node": { "node_modules/@types/node": {
"version": "16.11.9", "version": "16.11.9",
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.9.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.9.tgz",
...@@ -1886,9 +1878,9 @@ ...@@ -1886,9 +1878,9 @@
} }
}, },
"node_modules/cosmokit": { "node_modules/cosmokit": {
"version": "1.2.1", "version": "1.4.0",
"resolved": "https://registry.npmjs.org/cosmokit/-/cosmokit-1.2.1.tgz", "resolved": "https://registry.npmjs.org/cosmokit/-/cosmokit-1.4.0.tgz",
"integrity": "sha512-BTn7vRr31WUwX7Tq8Q/r+Qz+LPKTE3vA0d7xzVaYNes2NPvGPmIWiljYP0m/PIrdpqLLtdHpY1zGNr+OwDhA7A==", "integrity": "sha512-9Y5epwkPxnWDSjweuWoFATY8GKg9N1/r/3wL32Cjs7FIvo0S9syyY39xmNKq7+SZjbw+9bZUSbeQSbJaqufV3Q==",
"peer": true "peer": true
}, },
"node_modules/cross-spawn": { "node_modules/cross-spawn": {
...@@ -3882,7 +3874,8 @@ ...@@ -3882,7 +3874,8 @@
"node_modules/lodash": { "node_modules/lodash": {
"version": "4.17.21", "version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
"dev": true
}, },
"node_modules/lodash.memoize": { "node_modules/lodash.memoize": {
"version": "4.1.2", "version": "4.1.2",
...@@ -4551,12 +4544,12 @@ ...@@ -4551,12 +4544,12 @@
} }
}, },
"node_modules/schemastery": { "node_modules/schemastery": {
"version": "3.5.3", "version": "3.6.1",
"resolved": "https://registry.npmjs.org/schemastery/-/schemastery-3.5.3.tgz", "resolved": "https://registry.npmjs.org/schemastery/-/schemastery-3.6.1.tgz",
"integrity": "sha512-bjcLEbKu00PmAJ1JIkro60oYm6tlGC+B8PNJFPtf+atoUPgi8gigl4YmREyUrjM1Laohr3AZ4ZZZcdBwrZ7YwA==", "integrity": "sha512-Igh4oqaHco1AYmqpSgYgg411gNomSI9xE35Xo/FuzJZTMYWA5W1o+82Q5qMnt9FAQ76gZig0pea9OcHl0AM/Lw==",
"peer": true, "peer": true,
"dependencies": { "dependencies": {
"cosmokit": "^1.2.1" "cosmokit": "^1.3.4"
} }
}, },
"node_modules/semver": { "node_modules/semver": {
...@@ -6182,12 +6175,6 @@ ...@@ -6182,12 +6175,6 @@
"integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==",
"dev": true "dev": true
}, },
"@types/lodash": {
"version": "4.14.176",
"resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.176.tgz",
"integrity": "sha512-xZmuPTa3rlZoIbtDUyJKZQimJV3bxCmzMIO2c9Pz9afyDro6kr7R79GwcB6mRhuoPmV2p1Vb66WOJH7F886WKQ==",
"dev": true
},
"@types/node": { "@types/node": {
"version": "16.11.9", "version": "16.11.9",
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.9.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.9.tgz",
...@@ -6715,9 +6702,9 @@ ...@@ -6715,9 +6702,9 @@
} }
}, },
"cosmokit": { "cosmokit": {
"version": "1.2.1", "version": "1.4.0",
"resolved": "https://registry.npmjs.org/cosmokit/-/cosmokit-1.2.1.tgz", "resolved": "https://registry.npmjs.org/cosmokit/-/cosmokit-1.4.0.tgz",
"integrity": "sha512-BTn7vRr31WUwX7Tq8Q/r+Qz+LPKTE3vA0d7xzVaYNes2NPvGPmIWiljYP0m/PIrdpqLLtdHpY1zGNr+OwDhA7A==", "integrity": "sha512-9Y5epwkPxnWDSjweuWoFATY8GKg9N1/r/3wL32Cjs7FIvo0S9syyY39xmNKq7+SZjbw+9bZUSbeQSbJaqufV3Q==",
"peer": true "peer": true
}, },
"cross-spawn": { "cross-spawn": {
...@@ -8236,7 +8223,8 @@ ...@@ -8236,7 +8223,8 @@
"lodash": { "lodash": {
"version": "4.17.21", "version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
"dev": true
}, },
"lodash.memoize": { "lodash.memoize": {
"version": "4.1.2", "version": "4.1.2",
...@@ -8726,12 +8714,12 @@ ...@@ -8726,12 +8714,12 @@
} }
}, },
"schemastery": { "schemastery": {
"version": "3.5.3", "version": "3.6.1",
"resolved": "https://registry.npmjs.org/schemastery/-/schemastery-3.5.3.tgz", "resolved": "https://registry.npmjs.org/schemastery/-/schemastery-3.6.1.tgz",
"integrity": "sha512-bjcLEbKu00PmAJ1JIkro60oYm6tlGC+B8PNJFPtf+atoUPgi8gigl4YmREyUrjM1Laohr3AZ4ZZZcdBwrZ7YwA==", "integrity": "sha512-Igh4oqaHco1AYmqpSgYgg411gNomSI9xE35Xo/FuzJZTMYWA5W1o+82Q5qMnt9FAQ76gZig0pea9OcHl0AM/Lw==",
"peer": true, "peer": true,
"requires": { "requires": {
"cosmokit": "^1.2.1" "cosmokit": "^1.3.4"
} }
}, },
"semver": { "semver": {
......
...@@ -23,7 +23,6 @@ ...@@ -23,7 +23,6 @@
"homepage": "https://code.mycard.moe/3rdeye/schemastery-gen", "homepage": "https://code.mycard.moe/3rdeye/schemastery-gen",
"devDependencies": { "devDependencies": {
"@types/jest": "^27.0.3", "@types/jest": "^27.0.3",
"@types/lodash": "^4.14.176",
"@types/node": "^16.11.9", "@types/node": "^16.11.9",
"@typescript-eslint/eslint-plugin": "^4.33.0", "@typescript-eslint/eslint-plugin": "^4.33.0",
"@typescript-eslint/parser": "^4.33.0", "@typescript-eslint/parser": "^4.33.0",
...@@ -37,7 +36,6 @@ ...@@ -37,7 +36,6 @@
"typescript": "^4.8.2" "typescript": "^4.8.2"
}, },
"dependencies": { "dependencies": {
"lodash": "^4.17.21",
"reflect-metadata": "^0.1.13", "reflect-metadata": "^0.1.13",
"typed-reflector": "^1.0.10" "typed-reflector": "^1.0.10"
}, },
...@@ -59,6 +57,6 @@ ...@@ -59,6 +57,6 @@
"testEnvironment": "node" "testEnvironment": "node"
}, },
"peerDependencies": { "peerDependencies": {
"schemastery": "^3.5.3" "schemastery": "^3.6.1"
} }
} }
...@@ -15,6 +15,7 @@ import { reflector } from '../metadata/reflector'; ...@@ -15,6 +15,7 @@ import { reflector } from '../metadata/reflector';
import _ from 'lodash'; import _ from 'lodash';
import { Metadata } from '../metadata/metadata'; import { Metadata } from '../metadata/metadata';
import { kSchema } from '../utility/kschema'; import { kSchema } from '../utility/kschema';
import { mapValues } from '../utility/utility';
export function resolveSchemaType(schemaType: SchemaType): SchemaOrReference { export function resolveSchemaType(schemaType: SchemaType): SchemaOrReference {
if (schemaType && schemaType[RefSym]) { if (schemaType && schemaType[RefSym]) {
...@@ -125,7 +126,7 @@ function schemasFromDict<T>(dict: SchemaOptionsDict<T>) { ...@@ -125,7 +126,7 @@ function schemasFromDict<T>(dict: SchemaOptionsDict<T>) {
[P in keyof SchemaOptionsDict<T>]: SchemaOrReference< [P in keyof SchemaOptionsDict<T>]: SchemaOrReference<
SchemaOptionsDict<T>[P] SchemaOptionsDict<T>[P]
>; >;
} = _.mapValues(dict, (opt) => getPropertySchemaFromOptions(opt)); } = mapValues(dict, (opt) => getPropertySchemaFromOptions(opt));
const schema = Schema.object({}); const schema = Schema.object({});
for (const _key of Object.keys(schemaDict)) { for (const _key of Object.keys(schemaDict)) {
const key = _key as keyof T; const key = _key as keyof T;
......
...@@ -2,6 +2,7 @@ import { SchemaClassOptions, SchemaOptions } from '../def'; ...@@ -2,6 +2,7 @@ import { SchemaClassOptions, SchemaOptions } from '../def';
export interface MetadataArrayMap { export interface MetadataArrayMap {
SchemaMetaKey: string; SchemaMetaKey: string;
CordisConfigAcceptors: any; // in cordis-decorators
} }
export interface MetadataMap { export interface MetadataMap {
......
import { Metadata } from '../metadata/metadata'; import { Metadata } from '../metadata/metadata';
import { ClassType, RefSym, SchemaOrReference, SchemaReference } from '../def'; import { ClassType, RefSym, SchemaOrReference, SchemaReference } from '../def';
import Schema from 'schemastery'; import Schema from 'schemastery';
import _ from 'lodash';
import { kSchema } from './kschema'; import { kSchema } from './kschema';
import { resolveSchemaType } from '../decorators'; import { resolveSchemaType } from '../decorators';
import { mapValues } from './utility';
export function SetTransformer(transformer: (val: any) => any) { export function SetTransformer(transformer: (val: any) => any) {
return Metadata.set('Transformer', transformer); return Metadata.set('Transformer', transformer);
...@@ -46,10 +46,10 @@ export function transformDict<T>( ...@@ -46,10 +46,10 @@ export function transformDict<T>(
let result: any; let result: any;
if (array) { if (array) {
result = (val as Record<string, any>[]).map((v) => result = (val as Record<string, any>[]).map((v) =>
_.mapValues(v, (_v) => transformSingle(cl, _v)), mapValues(v, (_v) => transformSingle(cl, _v)),
); );
} else { } else {
result = _.mapValues(val, (_v) => transformSingle(cl, _v)); result = mapValues(val, (_v) => transformSingle(cl, _v));
} }
return result; return result;
} }
import Schema from 'schemastery'; import Schema from 'schemastery';
import { OriginalClassSym } from '../def';
// eslint-disable-next-line @typescript-eslint/ban-types // eslint-disable-next-line @typescript-eslint/ban-types
export function getStringFromNativeType(nativeType: Function) { export function getStringFromNativeType(nativeType: Function) {
...@@ -22,3 +21,12 @@ export function getStringFromNativeType(nativeType: Function) { ...@@ -22,3 +21,12 @@ export function getStringFromNativeType(nativeType: Function) {
} }
return nativeType.name?.toLowerCase(); return nativeType.name?.toLowerCase();
} }
export function mapValues<T extends Record<string, any>, R>(
obj: T,
fn: (v: T[keyof T], k: keyof T) => R,
): Record<keyof T, R> {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
return Object.fromEntries(Object.entries(obj).map(([k, v]) => [k, fn(v, k)]));
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment