ts-ioc-container 47.1.1 → 47.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/cjm/hooks/HookContext.js +3 -1
- package/cjm/index.js +12 -2
- package/cjm/metadata/debounce.js +16 -0
- package/cjm/metadata/once.js +17 -0
- package/cjm/metadata/shallowCache.js +23 -0
- package/cjm/metadata/throttle.js +18 -0
- package/esm/hooks/HookContext.js +1 -0
- package/esm/index.js +5 -1
- package/esm/metadata/debounce.js +12 -0
- package/esm/metadata/once.js +13 -0
- package/esm/metadata/shallowCache.js +19 -0
- package/esm/metadata/throttle.js +14 -0
- package/package.json +10 -8
- package/typings/hooks/HookContext.d.ts +3 -0
- package/typings/index.d.ts +5 -1
- package/typings/metadata/debounce.d.ts +1 -0
- package/typings/metadata/once.d.ts +1 -0
- package/typings/metadata/shallowCache.d.ts +1 -0
- package/typings/metadata/throttle.d.ts +1 -0
package/README.md
CHANGED
|
@@ -1572,7 +1572,7 @@ describe('ProxyInjector', function () {
|
|
|
1572
1572
|
// In a real scenario, you'd register multiple loggers with the same alias.
|
|
1573
1573
|
const mockLoggers = [new FileLogger(), new ConsoleLogger()];
|
|
1574
1574
|
|
|
1575
|
-
container.resolveByAlias =
|
|
1575
|
+
container.resolveByAlias = vi.fn().mockReturnValue(mockLoggers);
|
|
1576
1576
|
|
|
1577
1577
|
const app = container.resolve(App);
|
|
1578
1578
|
|
package/cjm/hooks/HookContext.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createHookContext = exports.HookContext = void 0;
|
|
3
|
+
exports.createHookContextFactory = exports.createHookContext = exports.HookContext = void 0;
|
|
4
4
|
const inject_1 = require("../injector/inject");
|
|
5
5
|
const proxy_1 = require("../utils/proxy");
|
|
6
6
|
class HookContext {
|
|
@@ -32,3 +32,5 @@ class HookContext {
|
|
|
32
32
|
exports.HookContext = HookContext;
|
|
33
33
|
const createHookContext = (Target, scope, methodName = 'constructor') => new HookContext(Target, scope, methodName);
|
|
34
34
|
exports.createHookContext = createHookContext;
|
|
35
|
+
const createHookContextFactory = ({ args = [] } = {}) => (Target, scope, methodName) => (0, exports.createHookContext)(Target, scope, methodName).setInitialArgs(...args);
|
|
36
|
+
exports.createHookContextFactory = createHookContextFactory;
|
package/cjm/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.resolveConstructor = exports.Is = exports.pipe = exports.select = exports.getMethodTags = exports.methodTag = exports.getMethodLabels = exports.methodLabel = exports.getMethodMeta = exports.methodMeta = exports.getParamTags = exports.paramTag = exports.getParamLabels = exports.paramLabel = exports.getParamMeta = exports.paramMeta = exports.getClassTags = exports.classTag = exports.getClassLabels = exports.classLabel = exports.getClassMeta = exports.classMeta = exports.handleAsyncError = exports.handleError = exports.GroupInstanceToken = exports.ConstantToken = void 0;
|
|
3
|
+
exports.ClassToken = exports.toSingleAlias = exports.SingleAliasToken = exports.toGroupAlias = exports.GroupAliasToken = exports.InjectionToken = exports.HooksRunner = exports.AddOnDisposeHookModule = exports.onDispose = exports.onDisposeHooksRunner = exports.AddOnConstructHookModule = exports.onConstruct = exports.onConstructHooksRunner = exports.injectProp = exports.createHookContext = exports.createHookContextFactory = exports.HookContext = exports.hasHooks = exports.hook = exports.getHooks = exports.UnexpectedHookResultError = exports.ContainerDisposedError = exports.MethodNotImplementedError = exports.DependencyMissingKeyError = exports.DependencyNotFoundError = exports.Registration = exports.bindTo = exports.register = exports.scope = exports.decorate = exports.MultiCache = exports.multiCache = exports.SingletonProvider = exports.singleton = exports.Provider = exports.resolveByArgs = exports.ProviderDecorator = exports.args = exports.argsFn = exports.lazy = exports.scopeAccess = exports.ProxyInjector = exports.SimpleInjector = exports.MetadataInjector = exports.Injector = exports.resolveArgs = exports.inject = exports.EmptyContainer = exports.Container = exports.isDependencyKey = void 0;
|
|
4
|
+
exports.resolveConstructor = exports.Is = exports.pipe = exports.select = exports.getMethodTags = exports.methodTag = exports.getMethodLabels = exports.methodLabel = exports.getMethodMeta = exports.methodMeta = exports.getParamTags = exports.paramTag = exports.getParamLabels = exports.paramLabel = exports.getParamMeta = exports.paramMeta = exports.getClassTags = exports.classTag = exports.getClassLabels = exports.classLabel = exports.getClassMeta = exports.classMeta = exports.once = exports.shallowCache = exports.debounce = exports.throttle = exports.handleAsyncError = exports.handleError = exports.GroupInstanceToken = exports.ConstantToken = exports.FunctionToken = exports.SingleToken = void 0;
|
|
5
5
|
// Containers
|
|
6
6
|
var IContainer_1 = require("./container/IContainer");
|
|
7
7
|
Object.defineProperty(exports, "isDependencyKey", { enumerable: true, get: function () { return IContainer_1.isDependencyKey; } });
|
|
@@ -64,6 +64,8 @@ Object.defineProperty(exports, "hook", { enumerable: true, get: function () { re
|
|
|
64
64
|
Object.defineProperty(exports, "hasHooks", { enumerable: true, get: function () { return hook_1.hasHooks; } });
|
|
65
65
|
var HookContext_1 = require("./hooks/HookContext");
|
|
66
66
|
Object.defineProperty(exports, "HookContext", { enumerable: true, get: function () { return HookContext_1.HookContext; } });
|
|
67
|
+
Object.defineProperty(exports, "createHookContextFactory", { enumerable: true, get: function () { return HookContext_1.createHookContextFactory; } });
|
|
68
|
+
Object.defineProperty(exports, "createHookContext", { enumerable: true, get: function () { return HookContext_1.createHookContext; } });
|
|
67
69
|
var injectProp_1 = require("./hooks/injectProp");
|
|
68
70
|
Object.defineProperty(exports, "injectProp", { enumerable: true, get: function () { return injectProp_1.injectProp; } });
|
|
69
71
|
var onConstruct_1 = require("./hooks/onConstruct");
|
|
@@ -99,6 +101,14 @@ Object.defineProperty(exports, "GroupInstanceToken", { enumerable: true, get: fu
|
|
|
99
101
|
var errorHandler_1 = require("./metadata/errorHandler");
|
|
100
102
|
Object.defineProperty(exports, "handleError", { enumerable: true, get: function () { return errorHandler_1.handleError; } });
|
|
101
103
|
Object.defineProperty(exports, "handleAsyncError", { enumerable: true, get: function () { return errorHandler_1.handleAsyncError; } });
|
|
104
|
+
var throttle_1 = require("./metadata/throttle");
|
|
105
|
+
Object.defineProperty(exports, "throttle", { enumerable: true, get: function () { return throttle_1.throttle; } });
|
|
106
|
+
var debounce_1 = require("./metadata/debounce");
|
|
107
|
+
Object.defineProperty(exports, "debounce", { enumerable: true, get: function () { return debounce_1.debounce; } });
|
|
108
|
+
var shallowCache_1 = require("./metadata/shallowCache");
|
|
109
|
+
Object.defineProperty(exports, "shallowCache", { enumerable: true, get: function () { return shallowCache_1.shallowCache; } });
|
|
110
|
+
var once_1 = require("./metadata/once");
|
|
111
|
+
Object.defineProperty(exports, "once", { enumerable: true, get: function () { return once_1.once; } });
|
|
102
112
|
var class_1 = require("./metadata/class");
|
|
103
113
|
Object.defineProperty(exports, "classMeta", { enumerable: true, get: function () { return class_1.classMeta; } });
|
|
104
114
|
Object.defineProperty(exports, "getClassMeta", { enumerable: true, get: function () { return class_1.getClassMeta; } });
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.debounce = void 0;
|
|
4
|
+
const debounce = (ms) => (target, propertyKey, descriptor) => {
|
|
5
|
+
const originalMethod = descriptor.value;
|
|
6
|
+
const timerMap = new WeakMap();
|
|
7
|
+
descriptor.value = function (...args) {
|
|
8
|
+
const prev = timerMap.get(this);
|
|
9
|
+
if (prev !== undefined) {
|
|
10
|
+
clearTimeout(prev);
|
|
11
|
+
}
|
|
12
|
+
timerMap.set(this, setTimeout(() => originalMethod.apply(this, args), ms));
|
|
13
|
+
};
|
|
14
|
+
return descriptor;
|
|
15
|
+
};
|
|
16
|
+
exports.debounce = debounce;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.once = void 0;
|
|
4
|
+
const once = (target, propertyKey, descriptor) => {
|
|
5
|
+
const originalMethod = descriptor.value;
|
|
6
|
+
const cacheMap = new WeakMap();
|
|
7
|
+
descriptor.value = function (...args) {
|
|
8
|
+
if (cacheMap.has(this)) {
|
|
9
|
+
return cacheMap.get(this);
|
|
10
|
+
}
|
|
11
|
+
const result = originalMethod.apply(this, args);
|
|
12
|
+
cacheMap.set(this, result);
|
|
13
|
+
return result;
|
|
14
|
+
};
|
|
15
|
+
return descriptor;
|
|
16
|
+
};
|
|
17
|
+
exports.once = once;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.shallowCache = void 0;
|
|
4
|
+
const shallowCache = (getKeyByArgs) => (target, propertyKey, descriptor) => {
|
|
5
|
+
const originalMethod = descriptor.value;
|
|
6
|
+
const cacheMap = new WeakMap();
|
|
7
|
+
descriptor.value = function (...args) {
|
|
8
|
+
let cache = cacheMap.get(this);
|
|
9
|
+
if (cache === undefined) {
|
|
10
|
+
cache = new Map();
|
|
11
|
+
cacheMap.set(this, cache);
|
|
12
|
+
}
|
|
13
|
+
const key = getKeyByArgs(...args);
|
|
14
|
+
if (cache.has(key)) {
|
|
15
|
+
return cache.get(key);
|
|
16
|
+
}
|
|
17
|
+
const result = originalMethod.apply(this, args);
|
|
18
|
+
cache.set(key, result);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
return descriptor;
|
|
22
|
+
};
|
|
23
|
+
exports.shallowCache = shallowCache;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.throttle = void 0;
|
|
4
|
+
const throttle = (ms) => (target, propertyKey, descriptor) => {
|
|
5
|
+
const originalMethod = descriptor.value;
|
|
6
|
+
const lastCalledMap = new WeakMap();
|
|
7
|
+
descriptor.value = function (...args) {
|
|
8
|
+
const now = Date.now();
|
|
9
|
+
const lastCalled = lastCalledMap.get(this) ?? -Infinity;
|
|
10
|
+
if (now - lastCalled < ms) {
|
|
11
|
+
return undefined;
|
|
12
|
+
}
|
|
13
|
+
lastCalledMap.set(this, now);
|
|
14
|
+
return originalMethod.apply(this, args);
|
|
15
|
+
};
|
|
16
|
+
return descriptor;
|
|
17
|
+
};
|
|
18
|
+
exports.throttle = throttle;
|
package/esm/hooks/HookContext.js
CHANGED
|
@@ -27,3 +27,4 @@ export class HookContext {
|
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
export const createHookContext = (Target, scope, methodName = 'constructor') => new HookContext(Target, scope, methodName);
|
|
30
|
+
export const createHookContextFactory = ({ args = [] } = {}) => (Target, scope, methodName) => createHookContext(Target, scope, methodName).setInitialArgs(...args);
|
package/esm/index.js
CHANGED
|
@@ -25,7 +25,7 @@ export { ContainerDisposedError } from './errors/ContainerDisposedError';
|
|
|
25
25
|
export { UnexpectedHookResultError } from './errors/UnexpectedHookResultError';
|
|
26
26
|
// Hooks
|
|
27
27
|
export { getHooks, hook, hasHooks } from './hooks/hook';
|
|
28
|
-
export { HookContext } from './hooks/HookContext';
|
|
28
|
+
export { HookContext, createHookContextFactory, createHookContext } from './hooks/HookContext';
|
|
29
29
|
export { injectProp } from './hooks/injectProp';
|
|
30
30
|
export { onConstructHooksRunner, onConstruct, AddOnConstructHookModule } from './hooks/onConstruct';
|
|
31
31
|
export { onDisposeHooksRunner, onDispose, AddOnDisposeHookModule } from './hooks/onDispose';
|
|
@@ -41,6 +41,10 @@ export { ConstantToken } from './token/ConstantToken';
|
|
|
41
41
|
export { GroupInstanceToken } from './token/GroupInstanceToken';
|
|
42
42
|
// Metadata
|
|
43
43
|
export { handleError, handleAsyncError } from './metadata/errorHandler';
|
|
44
|
+
export { throttle } from './metadata/throttle';
|
|
45
|
+
export { debounce } from './metadata/debounce';
|
|
46
|
+
export { shallowCache } from './metadata/shallowCache';
|
|
47
|
+
export { once } from './metadata/once';
|
|
44
48
|
export { classMeta, getClassMeta, classLabel, getClassLabels, classTag, getClassTags } from './metadata/class';
|
|
45
49
|
export { paramMeta, getParamMeta, paramLabel, getParamLabels, paramTag, getParamTags } from './metadata/parameter';
|
|
46
50
|
export { methodMeta, getMethodMeta, methodLabel, getMethodLabels, methodTag, getMethodTags } from './metadata/method';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export const debounce = (ms) => (target, propertyKey, descriptor) => {
|
|
2
|
+
const originalMethod = descriptor.value;
|
|
3
|
+
const timerMap = new WeakMap();
|
|
4
|
+
descriptor.value = function (...args) {
|
|
5
|
+
const prev = timerMap.get(this);
|
|
6
|
+
if (prev !== undefined) {
|
|
7
|
+
clearTimeout(prev);
|
|
8
|
+
}
|
|
9
|
+
timerMap.set(this, setTimeout(() => originalMethod.apply(this, args), ms));
|
|
10
|
+
};
|
|
11
|
+
return descriptor;
|
|
12
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export const once = (target, propertyKey, descriptor) => {
|
|
2
|
+
const originalMethod = descriptor.value;
|
|
3
|
+
const cacheMap = new WeakMap();
|
|
4
|
+
descriptor.value = function (...args) {
|
|
5
|
+
if (cacheMap.has(this)) {
|
|
6
|
+
return cacheMap.get(this);
|
|
7
|
+
}
|
|
8
|
+
const result = originalMethod.apply(this, args);
|
|
9
|
+
cacheMap.set(this, result);
|
|
10
|
+
return result;
|
|
11
|
+
};
|
|
12
|
+
return descriptor;
|
|
13
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export const shallowCache = (getKeyByArgs) => (target, propertyKey, descriptor) => {
|
|
2
|
+
const originalMethod = descriptor.value;
|
|
3
|
+
const cacheMap = new WeakMap();
|
|
4
|
+
descriptor.value = function (...args) {
|
|
5
|
+
let cache = cacheMap.get(this);
|
|
6
|
+
if (cache === undefined) {
|
|
7
|
+
cache = new Map();
|
|
8
|
+
cacheMap.set(this, cache);
|
|
9
|
+
}
|
|
10
|
+
const key = getKeyByArgs(...args);
|
|
11
|
+
if (cache.has(key)) {
|
|
12
|
+
return cache.get(key);
|
|
13
|
+
}
|
|
14
|
+
const result = originalMethod.apply(this, args);
|
|
15
|
+
cache.set(key, result);
|
|
16
|
+
return result;
|
|
17
|
+
};
|
|
18
|
+
return descriptor;
|
|
19
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export const throttle = (ms) => (target, propertyKey, descriptor) => {
|
|
2
|
+
const originalMethod = descriptor.value;
|
|
3
|
+
const lastCalledMap = new WeakMap();
|
|
4
|
+
descriptor.value = function (...args) {
|
|
5
|
+
const now = Date.now();
|
|
6
|
+
const lastCalled = lastCalledMap.get(this) ?? -Infinity;
|
|
7
|
+
if (now - lastCalled < ms) {
|
|
8
|
+
return undefined;
|
|
9
|
+
}
|
|
10
|
+
lastCalledMap.set(this, now);
|
|
11
|
+
return originalMethod.apply(this, args);
|
|
12
|
+
};
|
|
13
|
+
return descriptor;
|
|
14
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ts-ioc-container",
|
|
3
|
-
"version": "47.
|
|
3
|
+
"version": "47.3.0",
|
|
4
4
|
"description": "Typescript IoC container",
|
|
5
5
|
"workspaces": [
|
|
6
6
|
"docs"
|
|
@@ -46,8 +46,8 @@
|
|
|
46
46
|
"build:types": "rimraf typings && tsc -p tsconfig.production.json --outDir typings --emitDeclarationOnly --declaration",
|
|
47
47
|
"generate:docs": "scripts/generate-readme/generate-readme.ts && git add README.md",
|
|
48
48
|
"build": "npm run build:cjm && npm run build:esm && npm run build:types",
|
|
49
|
-
"test": "
|
|
50
|
-
"test:coverage": "
|
|
49
|
+
"test": "vitest run",
|
|
50
|
+
"test:coverage": "vitest run --coverage --coverage.reporter=lcov",
|
|
51
51
|
"type-check": "tsc --noEmit",
|
|
52
52
|
"type-check:watch": "tsc --noEmit --watch",
|
|
53
53
|
"commit": "cz",
|
|
@@ -71,27 +71,29 @@
|
|
|
71
71
|
"@semantic-release/git": "^10.0.1",
|
|
72
72
|
"@semantic-release/github": "^12.0.2",
|
|
73
73
|
"@semantic-release/npm": "^13.1.2",
|
|
74
|
-
"@
|
|
74
|
+
"@swc/core": "^1.15.24",
|
|
75
75
|
"@types/node": "^25.5.2",
|
|
76
76
|
"@typescript-eslint/eslint-plugin": "8.29.1",
|
|
77
77
|
"@typescript-eslint/parser": "8.29.1",
|
|
78
|
+
"@vitest/coverage-v8": "^4.1.2",
|
|
78
79
|
"cz-conventional-changelog": "^3.3.0",
|
|
79
80
|
"eslint": "9.24.0",
|
|
80
81
|
"eslint-config-prettier": "10.1.1",
|
|
81
82
|
"eslint-plugin-prettier": "5.2.6",
|
|
82
83
|
"handlebars": "^4.7.8",
|
|
83
84
|
"husky": "^9.1.7",
|
|
84
|
-
"jest": "29.7.0",
|
|
85
85
|
"lint-staged": "^15.5.0",
|
|
86
|
-
"moq.ts": "^
|
|
86
|
+
"moq.ts": "^10.0.8",
|
|
87
87
|
"prettier": "3.5.3",
|
|
88
88
|
"prettier-plugin-astro": "^0.14.1",
|
|
89
89
|
"reflect-metadata": "^0.2.2",
|
|
90
90
|
"rimraf": "6.0.1",
|
|
91
91
|
"semantic-release": "^25.0.2",
|
|
92
|
-
"ts-jest": "29.3.1",
|
|
93
92
|
"tsx": "^4.21.0",
|
|
94
|
-
"typescript": "5.8.3"
|
|
93
|
+
"typescript": "5.8.3",
|
|
94
|
+
"unplugin-swc": "^1.5.9",
|
|
95
|
+
"vite": "^6.4.1",
|
|
96
|
+
"vitest": "^4.1.2"
|
|
95
97
|
},
|
|
96
98
|
"lint-staged": {
|
|
97
99
|
"*.{js,ts,tsx}": [
|
|
@@ -26,3 +26,6 @@ export declare class HookContext implements IHookContext {
|
|
|
26
26
|
}
|
|
27
27
|
export type CreateHookContext = (Target: object, scope: IContainer, methodName?: string) => IHookContext;
|
|
28
28
|
export declare const createHookContext: CreateHookContext;
|
|
29
|
+
export declare const createHookContextFactory: ({ args }?: {
|
|
30
|
+
args?: unknown[];
|
|
31
|
+
}) => CreateHookContext;
|
package/typings/index.d.ts
CHANGED
|
@@ -20,7 +20,7 @@ export { MethodNotImplementedError } from './errors/MethodNotImplementedError';
|
|
|
20
20
|
export { ContainerDisposedError } from './errors/ContainerDisposedError';
|
|
21
21
|
export { UnexpectedHookResultError } from './errors/UnexpectedHookResultError';
|
|
22
22
|
export { getHooks, hook, hasHooks, type HookFn, type HookClass, type InjectFn, type HooksOfClass } from './hooks/hook';
|
|
23
|
-
export { HookContext, type IHookContext } from './hooks/HookContext';
|
|
23
|
+
export { HookContext, createHookContextFactory, createHookContext, type IHookContext } from './hooks/HookContext';
|
|
24
24
|
export { injectProp } from './hooks/injectProp';
|
|
25
25
|
export { onConstructHooksRunner, onConstruct, AddOnConstructHookModule } from './hooks/onConstruct';
|
|
26
26
|
export { onDisposeHooksRunner, onDispose, AddOnDisposeHookModule } from './hooks/onDispose';
|
|
@@ -34,6 +34,10 @@ export { FunctionToken } from './token/FunctionToken';
|
|
|
34
34
|
export { ConstantToken } from './token/ConstantToken';
|
|
35
35
|
export { type InstancePredicate, GroupInstanceToken } from './token/GroupInstanceToken';
|
|
36
36
|
export { handleError, handleAsyncError, type HandleErrorParams } from './metadata/errorHandler';
|
|
37
|
+
export { throttle } from './metadata/throttle';
|
|
38
|
+
export { debounce } from './metadata/debounce';
|
|
39
|
+
export { shallowCache } from './metadata/shallowCache';
|
|
40
|
+
export { once } from './metadata/once';
|
|
37
41
|
export { classMeta, getClassMeta, classLabel, getClassLabels, classTag, getClassTags } from './metadata/class';
|
|
38
42
|
export { paramMeta, getParamMeta, paramLabel, getParamLabels, paramTag, getParamTags } from './metadata/parameter';
|
|
39
43
|
export { methodMeta, getMethodMeta, methodLabel, getMethodLabels, methodTag, getMethodTags } from './metadata/method';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const debounce: (ms: number) => MethodDecorator;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const once: MethodDecorator;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const shallowCache: (getKeyByArgs: (...args: unknown[]) => unknown) => MethodDecorator;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const throttle: (ms: number) => MethodDecorator;
|