Commit 65462973 authored by nanahira's avatar nanahira

kick lodash out

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