Skip to content

Commit c4c6390

Browse files
authored
bring in map caching implementation (#4)
* fix: remove use of "any" types in cache type definitions * fix: use Set() for middleware cache * fix: reset state on tests, move class init to BeforeEach instead of BeforeAll * commit build * rebuild * remove time logs * update build o/p * update build * remove benchmark build output * update build * update package-lock * Merge pull request #3 from scope3data/feature/performance-improvements feat: major schema generation performance optimization - eliminate array-based type lookups
1 parent 34685f5 commit c4c6390

355 files changed

Lines changed: 7421 additions & 195 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
**/node_modules/
33

44
# Builded sources
5-
**/build/
6-
**/dist/
5+
!**/build/
6+
!**/dist/
77

88
# Coverage
99
**/coverage/

.npmrc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
11
engine-strict=true
2+
@scope3data:registry=https://npm.pkg.github.com
3+
//npm.pkg.github.com/:_authToken=${NPM_TOKEN}

build/cjs/decorators/Arg.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
"use strict";
2+
Object.defineProperty(exports, "__esModule", { value: true });
3+
exports.Arg = Arg;
4+
const decorators_1 = require("../helpers/decorators");
5+
const params_1 = require("../helpers/params");
6+
const getMetadataStorage_1 = require("../metadata/getMetadataStorage");
7+
function Arg(name, returnTypeFuncOrOptions, maybeOptions) {
8+
return (prototype, propertyKey, parameterIndex) => {
9+
const { options, returnTypeFunc } = (0, decorators_1.getTypeDecoratorParams)(returnTypeFuncOrOptions, maybeOptions);
10+
(0, getMetadataStorage_1.getMetadataStorage)().collectHandlerParamMetadata({
11+
kind: "arg",
12+
name,
13+
description: options.description,
14+
deprecationReason: options.deprecationReason,
15+
...(0, params_1.getParamInfo)({
16+
prototype,
17+
propertyKey,
18+
parameterIndex,
19+
returnTypeFunc,
20+
options,
21+
argName: name,
22+
}),
23+
});
24+
};
25+
}

build/cjs/decorators/Args.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
"use strict";
2+
Object.defineProperty(exports, "__esModule", { value: true });
3+
exports.Args = Args;
4+
const decorators_1 = require("../helpers/decorators");
5+
const params_1 = require("../helpers/params");
6+
const getMetadataStorage_1 = require("../metadata/getMetadataStorage");
7+
function Args(paramTypeFnOrOptions, maybeOptions) {
8+
const { options, returnTypeFunc } = (0, decorators_1.getTypeDecoratorParams)(paramTypeFnOrOptions, maybeOptions);
9+
return (prototype, propertyKey, parameterIndex) => {
10+
(0, getMetadataStorage_1.getMetadataStorage)().collectHandlerParamMetadata({
11+
kind: "args",
12+
...(0, params_1.getParamInfo)({ prototype, propertyKey, parameterIndex, returnTypeFunc, options }),
13+
});
14+
};
15+
}

build/cjs/decorators/ArgsType.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
"use strict";
2+
Object.defineProperty(exports, "__esModule", { value: true });
3+
exports.ArgsType = ArgsType;
4+
const getMetadataStorage_1 = require("../metadata/getMetadataStorage");
5+
function ArgsType() {
6+
return target => {
7+
(0, getMetadataStorage_1.getMetadataStorage)().collectArgsMetadata({
8+
name: target.name,
9+
target,
10+
});
11+
};
12+
}

build/cjs/decorators/Authorized.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
"use strict";
2+
Object.defineProperty(exports, "__esModule", { value: true });
3+
exports.Authorized = Authorized;
4+
const errors_1 = require("../errors");
5+
const decorators_1 = require("../helpers/decorators");
6+
const getMetadataStorage_1 = require("../metadata/getMetadataStorage");
7+
function Authorized(...rolesOrRolesArray) {
8+
const roles = (0, decorators_1.getArrayFromOverloadedRest)(rolesOrRolesArray);
9+
return (target, propertyKey, _descriptor) => {
10+
if (propertyKey == null) {
11+
(0, getMetadataStorage_1.getMetadataStorage)().collectAuthorizedResolverMetadata({
12+
target: target,
13+
roles,
14+
});
15+
return;
16+
}
17+
if (typeof propertyKey === "symbol") {
18+
throw new errors_1.SymbolKeysNotSupportedError();
19+
}
20+
(0, getMetadataStorage_1.getMetadataStorage)().collectAuthorizedFieldMetadata({
21+
target: target.constructor,
22+
fieldName: propertyKey,
23+
roles,
24+
});
25+
};
26+
}

build/cjs/decorators/Ctx.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
"use strict";
2+
Object.defineProperty(exports, "__esModule", { value: true });
3+
exports.Ctx = Ctx;
4+
const errors_1 = require("../errors");
5+
const getMetadataStorage_1 = require("../metadata/getMetadataStorage");
6+
function Ctx(propertyName) {
7+
return (prototype, propertyKey, parameterIndex) => {
8+
if (typeof propertyKey === "symbol") {
9+
throw new errors_1.SymbolKeysNotSupportedError();
10+
}
11+
(0, getMetadataStorage_1.getMetadataStorage)().collectHandlerParamMetadata({
12+
kind: "context",
13+
target: prototype.constructor,
14+
methodName: propertyKey,
15+
index: parameterIndex,
16+
propertyName,
17+
});
18+
};
19+
}

build/cjs/decorators/Directive.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
"use strict";
2+
Object.defineProperty(exports, "__esModule", { value: true });
3+
exports.Directive = Directive;
4+
const errors_1 = require("../errors");
5+
const getMetadataStorage_1 = require("../metadata/getMetadataStorage");
6+
function Directive(nameOrDefinition) {
7+
return (targetOrPrototype, propertyKey, parameterIndexOrDescriptor) => {
8+
const directive = { nameOrDefinition, args: {} };
9+
if (typeof propertyKey === "symbol") {
10+
throw new errors_1.SymbolKeysNotSupportedError();
11+
}
12+
if (propertyKey) {
13+
if (typeof parameterIndexOrDescriptor === "number") {
14+
(0, getMetadataStorage_1.getMetadataStorage)().collectDirectiveArgumentMetadata({
15+
target: targetOrPrototype.constructor,
16+
fieldName: propertyKey,
17+
parameterIndex: parameterIndexOrDescriptor,
18+
directive,
19+
});
20+
}
21+
else {
22+
(0, getMetadataStorage_1.getMetadataStorage)().collectDirectiveFieldMetadata({
23+
target: targetOrPrototype.constructor,
24+
fieldName: propertyKey,
25+
directive,
26+
});
27+
}
28+
}
29+
else {
30+
(0, getMetadataStorage_1.getMetadataStorage)().collectDirectiveClassMetadata({
31+
target: targetOrPrototype,
32+
directive,
33+
});
34+
}
35+
};
36+
}

build/cjs/decorators/Extensions.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
"use strict";
2+
Object.defineProperty(exports, "__esModule", { value: true });
3+
exports.Extensions = Extensions;
4+
const errors_1 = require("../errors");
5+
const getMetadataStorage_1 = require("../metadata/getMetadataStorage");
6+
function Extensions(extensions) {
7+
return (targetOrPrototype, propertyKey, _descriptor) => {
8+
if (typeof propertyKey === "symbol") {
9+
throw new errors_1.SymbolKeysNotSupportedError();
10+
}
11+
if (propertyKey) {
12+
(0, getMetadataStorage_1.getMetadataStorage)().collectExtensionsFieldMetadata({
13+
target: targetOrPrototype.constructor,
14+
fieldName: propertyKey,
15+
extensions,
16+
});
17+
}
18+
else {
19+
(0, getMetadataStorage_1.getMetadataStorage)().collectExtensionsClassMetadata({
20+
target: targetOrPrototype,
21+
extensions,
22+
});
23+
}
24+
};
25+
}

build/cjs/decorators/Field.js

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
"use strict";
2+
Object.defineProperty(exports, "__esModule", { value: true });
3+
exports.Field = Field;
4+
const errors_1 = require("../errors");
5+
const decorators_1 = require("../helpers/decorators");
6+
const findType_1 = require("../helpers/findType");
7+
const getMetadataStorage_1 = require("../metadata/getMetadataStorage");
8+
function Field(returnTypeFuncOrOptions, maybeOptions) {
9+
return (prototype, propertyKey, descriptor) => {
10+
if (typeof propertyKey === "symbol") {
11+
throw new errors_1.SymbolKeysNotSupportedError();
12+
}
13+
const { options, returnTypeFunc } = (0, decorators_1.getTypeDecoratorParams)(returnTypeFuncOrOptions, maybeOptions);
14+
const isResolver = Boolean(descriptor);
15+
const isResolverMethod = Boolean(descriptor && descriptor.value);
16+
const { getType, typeOptions } = (0, findType_1.findType)({
17+
metadataKey: isResolverMethod ? "design:returntype" : "design:type",
18+
prototype,
19+
propertyKey,
20+
returnTypeFunc,
21+
typeOptions: options,
22+
});
23+
(0, getMetadataStorage_1.getMetadataStorage)().collectClassFieldMetadata({
24+
name: propertyKey,
25+
schemaName: options.name || propertyKey,
26+
getType,
27+
typeOptions,
28+
complexity: options.complexity,
29+
target: prototype.constructor,
30+
description: options.description,
31+
deprecationReason: options.deprecationReason,
32+
simple: options.simple,
33+
});
34+
if (isResolver) {
35+
(0, getMetadataStorage_1.getMetadataStorage)().collectFieldResolverMetadata({
36+
kind: "internal",
37+
methodName: propertyKey,
38+
schemaName: options.name || propertyKey,
39+
target: prototype.constructor,
40+
complexity: options.complexity,
41+
});
42+
}
43+
};
44+
}

0 commit comments

Comments
 (0)