@autowired-framework/core 0.0.1

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.
Files changed (48) hide show
  1. package/assets/banner.txt +6 -0
  2. package/dist/component-scanner.d.ts +60 -0
  3. package/dist/component-scanner.js +164 -0
  4. package/dist/decorators/autowired.d.ts +13 -0
  5. package/dist/decorators/autowired.js +24 -0
  6. package/dist/decorators/component.d.ts +9 -0
  7. package/dist/decorators/component.js +22 -0
  8. package/dist/decorators/decorator-factory.d.ts +38 -0
  9. package/dist/decorators/decorator-factory.js +76 -0
  10. package/dist/decorators/index.d.ts +5 -0
  11. package/dist/decorators/index.js +23 -0
  12. package/dist/decorators/inject.d.ts +10 -0
  13. package/dist/decorators/inject.js +21 -0
  14. package/dist/decorators/repository.d.ts +5 -0
  15. package/dist/decorators/repository.js +17 -0
  16. package/dist/decorators/service.d.ts +8 -0
  17. package/dist/decorators/service.js +22 -0
  18. package/dist/dependency-injection/injector.d.ts +67 -0
  19. package/dist/dependency-injection/injector.js +165 -0
  20. package/dist/hooks/decorators/hook.d.ts +11 -0
  21. package/dist/hooks/decorators/hook.js +23 -0
  22. package/dist/hooks/decorators/index.d.ts +2 -0
  23. package/dist/hooks/decorators/index.js +20 -0
  24. package/dist/hooks/decorators/lifecycle-hooks.d.ts +7 -0
  25. package/dist/hooks/decorators/lifecycle-hooks.js +27 -0
  26. package/dist/hooks/initialization.d.ts +0 -0
  27. package/dist/hooks/initialization.js +70 -0
  28. package/dist/hooks/registry/hook.registry.d.ts +23 -0
  29. package/dist/hooks/registry/hook.registry.js +50 -0
  30. package/dist/hooks/registry/registries.d.ts +5 -0
  31. package/dist/hooks/registry/registries.js +23 -0
  32. package/dist/index.d.ts +15 -0
  33. package/dist/index.js +55 -0
  34. package/dist/lifecycle/lifecycle.interface.d.ts +1 -0
  35. package/dist/lifecycle/lifecycle.interface.js +3 -0
  36. package/dist/symbols.d.ts +22 -0
  37. package/dist/symbols.js +27 -0
  38. package/dist/types.d.ts +3 -0
  39. package/dist/types.js +3 -0
  40. package/dist/utils/banner.utils.d.ts +1 -0
  41. package/dist/utils/banner.utils.js +20 -0
  42. package/dist/utils/metadata.utils.d.ts +36 -0
  43. package/dist/utils/metadata.utils.js +55 -0
  44. package/dist/utils/path.utils.d.ts +4 -0
  45. package/dist/utils/path.utils.js +23 -0
  46. package/dist/utils/time.utils.d.ts +11 -0
  47. package/dist/utils/time.utils.js +29 -0
  48. package/package.json +53 -0
package/dist/index.js ADDED
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ // Core framework exports
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
16
+ };
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.resolveCallerDirectory = exports.printBanner = exports.timedFunction = exports.MetadataUtils = exports.PluginRegistration = exports.ApplicationStart = exports.LifecycleHooks = exports.Hook = exports.HookRegistry = exports.requestHooksRegistry = exports.lifecycleHooksRegistry = exports.Scope = exports.Injector = exports.DecoratorFactory = exports.ComponentScanner = void 0;
19
+ // Symbols
20
+ __exportStar(require("./symbols"), exports);
21
+ // Component scanner
22
+ var component_scanner_1 = require("./component-scanner");
23
+ Object.defineProperty(exports, "ComponentScanner", { enumerable: true, get: function () { return component_scanner_1.ComponentScanner; } });
24
+ // Decorators (Service, Repository, Inject, Component, etc.)
25
+ __exportStar(require("./decorators"), exports);
26
+ // Decorator factory
27
+ var decorator_factory_1 = require("./decorators/decorator-factory");
28
+ Object.defineProperty(exports, "DecoratorFactory", { enumerable: true, get: function () { return decorator_factory_1.DecoratorFactory; } });
29
+ // Dependency injection
30
+ var injector_1 = require("./dependency-injection/injector");
31
+ Object.defineProperty(exports, "Injector", { enumerable: true, get: function () { return injector_1.Injector; } });
32
+ Object.defineProperty(exports, "Scope", { enumerable: true, get: function () { return injector_1.Scope; } });
33
+ // Hooks registries
34
+ var registries_1 = require("./hooks/registry/registries");
35
+ Object.defineProperty(exports, "lifecycleHooksRegistry", { enumerable: true, get: function () { return registries_1.lifecycleHooksRegistry; } });
36
+ Object.defineProperty(exports, "requestHooksRegistry", { enumerable: true, get: function () { return registries_1.requestHooksRegistry; } });
37
+ var hook_registry_1 = require("./hooks/registry/hook.registry");
38
+ Object.defineProperty(exports, "HookRegistry", { enumerable: true, get: function () { return hook_registry_1.HookRegistry; } });
39
+ // Hook decorators and types
40
+ var hook_1 = require("./hooks/decorators/hook");
41
+ Object.defineProperty(exports, "Hook", { enumerable: true, get: function () { return hook_1.Hook; } });
42
+ var lifecycle_hooks_1 = require("./hooks/decorators/lifecycle-hooks");
43
+ Object.defineProperty(exports, "LifecycleHooks", { enumerable: true, get: function () { return lifecycle_hooks_1.LifecycleHooks; } });
44
+ Object.defineProperty(exports, "ApplicationStart", { enumerable: true, get: function () { return lifecycle_hooks_1.ApplicationStart; } });
45
+ Object.defineProperty(exports, "PluginRegistration", { enumerable: true, get: function () { return lifecycle_hooks_1.PluginRegistration; } });
46
+ // Utility classes and functions
47
+ var metadata_utils_1 = require("./utils/metadata.utils");
48
+ Object.defineProperty(exports, "MetadataUtils", { enumerable: true, get: function () { return metadata_utils_1.MetadataUtils; } });
49
+ var time_utils_1 = require("./utils/time.utils");
50
+ Object.defineProperty(exports, "timedFunction", { enumerable: true, get: function () { return time_utils_1.timedFunction; } });
51
+ var banner_utils_1 = require("./utils/banner.utils");
52
+ Object.defineProperty(exports, "printBanner", { enumerable: true, get: function () { return banner_utils_1.printBanner; } });
53
+ var path_utils_1 = require("./utils/path.utils");
54
+ Object.defineProperty(exports, "resolveCallerDirectory", { enumerable: true, get: function () { return path_utils_1.resolveCallerDirectory; } });
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHlCQUF5Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFekIsVUFBVTtBQUNWLDRDQUEwQjtBQUUxQixvQkFBb0I7QUFDcEIseURBQXVEO0FBQTlDLHFIQUFBLGdCQUFnQixPQUFBO0FBRXpCLDREQUE0RDtBQUM1RCwrQ0FBNkI7QUFDN0Isb0JBQW9CO0FBQ3BCLG9FQUFrRTtBQUF6RCxxSEFBQSxnQkFBZ0IsT0FBQTtBQUV6Qix1QkFBdUI7QUFDdkIsNERBQWtFO0FBQXpELG9HQUFBLFFBQVEsT0FBQTtBQUFFLGlHQUFBLEtBQUssT0FBQTtBQUV4QixtQkFBbUI7QUFDbkIsMERBR3FDO0FBRm5DLG9IQUFBLHNCQUFzQixPQUFBO0FBQ3RCLGtIQUFBLG9CQUFvQixPQUFBO0FBRXRCLGdFQUE4RDtBQUFyRCw2R0FBQSxZQUFZLE9BQUE7QUFFckIsNEJBQTRCO0FBQzVCLGdEQUlpQztBQUgvQiw0RkFBQSxJQUFJLE9BQUE7QUFJTixzRUFJNEM7QUFIMUMsaUhBQUEsY0FBYyxPQUFBO0FBQ2QsbUhBQUEsZ0JBQWdCLE9BQUE7QUFDaEIscUhBQUEsa0JBQWtCLE9BQUE7QUFHcEIsZ0NBQWdDO0FBQ2hDLHlEQUF1RDtBQUE5QywrR0FBQSxhQUFhLE9BQUE7QUFDdEIsaURBQW1EO0FBQTFDLDJHQUFBLGFBQWEsT0FBQTtBQUN0QixxREFBbUQ7QUFBMUMsMkdBQUEsV0FBVyxPQUFBO0FBQ3BCLGlEQUE0RDtBQUFuRCxvSEFBQSxzQkFBc0IsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcmUgZnJhbWV3b3JrIGV4cG9ydHNcblxuLy8gU3ltYm9sc1xuZXhwb3J0ICogZnJvbSBcIi4vc3ltYm9sc1wiO1xuXG4vLyBDb21wb25lbnQgc2Nhbm5lclxuZXhwb3J0IHsgQ29tcG9uZW50U2Nhbm5lciB9IGZyb20gXCIuL2NvbXBvbmVudC1zY2FubmVyXCI7XG5cbi8vIERlY29yYXRvcnMgKFNlcnZpY2UsIFJlcG9zaXRvcnksIEluamVjdCwgQ29tcG9uZW50LCBldGMuKVxuZXhwb3J0ICogZnJvbSBcIi4vZGVjb3JhdG9yc1wiO1xuLy8gRGVjb3JhdG9yIGZhY3RvcnlcbmV4cG9ydCB7IERlY29yYXRvckZhY3RvcnkgfSBmcm9tIFwiLi9kZWNvcmF0b3JzL2RlY29yYXRvci1mYWN0b3J5XCI7XG5cbi8vIERlcGVuZGVuY3kgaW5qZWN0aW9uXG5leHBvcnQgeyBJbmplY3RvciwgU2NvcGUgfSBmcm9tIFwiLi9kZXBlbmRlbmN5LWluamVjdGlvbi9pbmplY3RvclwiO1xuXG4vLyBIb29rcyByZWdpc3RyaWVzXG5leHBvcnQge1xuICBsaWZlY3ljbGVIb29rc1JlZ2lzdHJ5LFxuICByZXF1ZXN0SG9va3NSZWdpc3RyeSxcbn0gZnJvbSBcIi4vaG9va3MvcmVnaXN0cnkvcmVnaXN0cmllc1wiO1xuZXhwb3J0IHsgSG9va1JlZ2lzdHJ5IH0gZnJvbSBcIi4vaG9va3MvcmVnaXN0cnkvaG9vay5yZWdpc3RyeVwiO1xuXG4vLyBIb29rIGRlY29yYXRvcnMgYW5kIHR5cGVzXG5leHBvcnQge1xuICBIb29rLFxuICBSZXF1ZXN0SG9va3MsXG4gIFJlcXVlc3RIb29rcyBhcyBSZXF1ZXN0SG9vayxcbn0gZnJvbSBcIi4vaG9va3MvZGVjb3JhdG9ycy9ob29rXCI7XG5leHBvcnQge1xuICBMaWZlY3ljbGVIb29rcyxcbiAgQXBwbGljYXRpb25TdGFydCxcbiAgUGx1Z2luUmVnaXN0cmF0aW9uLFxufSBmcm9tIFwiLi9ob29rcy9kZWNvcmF0b3JzL2xpZmVjeWNsZS1ob29rc1wiO1xuXG4vLyBVdGlsaXR5IGNsYXNzZXMgYW5kIGZ1bmN0aW9uc1xuZXhwb3J0IHsgTWV0YWRhdGFVdGlscyB9IGZyb20gXCIuL3V0aWxzL21ldGFkYXRhLnV0aWxzXCI7XG5leHBvcnQgeyB0aW1lZEZ1bmN0aW9uIH0gZnJvbSBcIi4vdXRpbHMvdGltZS51dGlsc1wiO1xuZXhwb3J0IHsgcHJpbnRCYW5uZXIgfSBmcm9tIFwiLi91dGlscy9iYW5uZXIudXRpbHNcIjtcbmV4cG9ydCB7IHJlc29sdmVDYWxsZXJEaXJlY3RvcnkgfSBmcm9tIFwiLi91dGlscy9wYXRoLnV0aWxzXCI7XG5cbi8vIENvbW1vbiB0eXBlc1xuZXhwb3J0IHR5cGUgeyBDb25zdHJ1Y3RvciB9IGZyb20gXCIuL3R5cGVzXCI7XG5leHBvcnQgdHlwZSB7IExpZmVjeWNsZUhvb2sgfSBmcm9tIFwiLi9saWZlY3ljbGUvbGlmZWN5Y2xlLmludGVyZmFjZVwiO1xuIl19
@@ -0,0 +1 @@
1
+ export type LifecycleHook = "onRequest" | "preParsing" | "preValidation" | "preHandler" | "handler" | "preSerialization" | "onSend" | "onResponse" | "onError" | "onTimeout";
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlmZWN5Y2xlLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWZlY3ljbGUvbGlmZWN5Y2xlLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgTGlmZWN5Y2xlSG9vayA9XG4gIHwgXCJvblJlcXVlc3RcIlxuICB8IFwicHJlUGFyc2luZ1wiXG4gIHwgXCJwcmVWYWxpZGF0aW9uXCJcbiAgfCBcInByZUhhbmRsZXJcIlxuICB8IFwiaGFuZGxlclwiXG4gIHwgXCJwcmVTZXJpYWxpemF0aW9uXCJcbiAgfCBcIm9uU2VuZFwiXG4gIHwgXCJvblJlc3BvbnNlXCJcbiAgfCBcIm9uRXJyb3JcIlxuICB8IFwib25UaW1lb3V0XCI7XG4iXX0=
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Standard Metadata Keys: "design:type", "design:paramtypes", and "design:returntype" should always be string literals as per TypeScript's decorator metadata standards.
3
+ */
4
+ export declare const BUILT_IN_TYPE_METADATA = "design:type";
5
+ export declare const BUILT_IN_PARAMETER_TYPE_METADATA = "design:paramtypes";
6
+ export declare const BUILT_IN_RETURN_TYPE_METADATA = "design:returntype";
7
+ /**
8
+ * Custom Metadata Keys: Continue using Symbols for your custom metadata to avoid collisions and ensure uniqueness.
9
+ */
10
+ export declare const HOOK_METADATA: unique symbol;
11
+ export declare const REPOSITORY_METADATA: unique symbol;
12
+ export declare const SERVICE_METADATA: unique symbol;
13
+ /**
14
+ * Controller and Advice Metadata: Framework-agnostic keys for registering controllers and advices.
15
+ */
16
+ export declare const CONTROLLER_METADATA: unique symbol;
17
+ export declare const CONTROLLER_ADVICE_METADATA: unique symbol;
18
+ export declare const GLOBAL_CONTROLLER_ADVICE_METADATA: unique symbol;
19
+ /**
20
+ * Property Injection Metadata: Stores autowired properties for lazy injection after instance creation.
21
+ */
22
+ export declare const AUTOWIRED_PROPERTIES_METADATA: unique symbol;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ // src/core/symbols.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.AUTOWIRED_PROPERTIES_METADATA = exports.GLOBAL_CONTROLLER_ADVICE_METADATA = exports.CONTROLLER_ADVICE_METADATA = exports.CONTROLLER_METADATA = exports.SERVICE_METADATA = exports.REPOSITORY_METADATA = exports.HOOK_METADATA = exports.BUILT_IN_RETURN_TYPE_METADATA = exports.BUILT_IN_PARAMETER_TYPE_METADATA = exports.BUILT_IN_TYPE_METADATA = void 0;
5
+ /**
6
+ * Standard Metadata Keys: "design:type", "design:paramtypes", and "design:returntype" should always be string literals as per TypeScript's decorator metadata standards.
7
+ */
8
+ exports.BUILT_IN_TYPE_METADATA = "design:type";
9
+ exports.BUILT_IN_PARAMETER_TYPE_METADATA = "design:paramtypes";
10
+ exports.BUILT_IN_RETURN_TYPE_METADATA = "design:returntype";
11
+ /**
12
+ * Custom Metadata Keys: Continue using Symbols for your custom metadata to avoid collisions and ensure uniqueness.
13
+ */
14
+ exports.HOOK_METADATA = Symbol("fastify-autowired:hook-metadata");
15
+ exports.REPOSITORY_METADATA = Symbol("fastify-autowired:repository");
16
+ exports.SERVICE_METADATA = Symbol("fastify-autowired:service");
17
+ /**
18
+ * Controller and Advice Metadata: Framework-agnostic keys for registering controllers and advices.
19
+ */
20
+ exports.CONTROLLER_METADATA = Symbol("fastify-autowired:controller");
21
+ exports.CONTROLLER_ADVICE_METADATA = Symbol("fastify-autowired:controller-advice");
22
+ exports.GLOBAL_CONTROLLER_ADVICE_METADATA = Symbol("fastify-autowired:global-controller-advice");
23
+ /**
24
+ * Property Injection Metadata: Stores autowired properties for lazy injection after instance creation.
25
+ */
26
+ exports.AUTOWIRED_PROPERTIES_METADATA = Symbol("fastify-autowired:autowired-properties");
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ltYm9scy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zeW1ib2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxzQkFBc0I7OztBQUV0Qjs7R0FFRztBQUNVLFFBQUEsc0JBQXNCLEdBQUcsYUFBYSxDQUFDO0FBQ3ZDLFFBQUEsZ0NBQWdDLEdBQUcsbUJBQW1CLENBQUM7QUFDdkQsUUFBQSw2QkFBNkIsR0FBRyxtQkFBbUIsQ0FBQztBQUVqRTs7R0FFRztBQUNVLFFBQUEsYUFBYSxHQUFHLE1BQU0sQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0FBQzFELFFBQUEsbUJBQW1CLEdBQUcsTUFBTSxDQUFDLDhCQUE4QixDQUFDLENBQUM7QUFDN0QsUUFBQSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQztBQUVwRTs7R0FFRztBQUNVLFFBQUEsbUJBQW1CLEdBQUcsTUFBTSxDQUFDLDhCQUE4QixDQUFDLENBQUM7QUFDN0QsUUFBQSwwQkFBMEIsR0FBRyxNQUFNLENBQUMscUNBQXFDLENBQUMsQ0FBQztBQUMzRSxRQUFBLGlDQUFpQyxHQUFHLE1BQU0sQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO0FBRXRHOztHQUVHO0FBQ1UsUUFBQSw2QkFBNkIsR0FBRyxNQUFNLENBQUMsd0NBQXdDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHNyYy9jb3JlL3N5bWJvbHMudHNcblxuLyoqXG4gKiBTdGFuZGFyZCBNZXRhZGF0YSBLZXlzOiBcImRlc2lnbjp0eXBlXCIsIFwiZGVzaWduOnBhcmFtdHlwZXNcIiwgYW5kIFwiZGVzaWduOnJldHVybnR5cGVcIiBzaG91bGQgYWx3YXlzIGJlIHN0cmluZyBsaXRlcmFscyBhcyBwZXIgVHlwZVNjcmlwdCdzIGRlY29yYXRvciBtZXRhZGF0YSBzdGFuZGFyZHMuXG4gKi9cbmV4cG9ydCBjb25zdCBCVUlMVF9JTl9UWVBFX01FVEFEQVRBID0gXCJkZXNpZ246dHlwZVwiO1xuZXhwb3J0IGNvbnN0IEJVSUxUX0lOX1BBUkFNRVRFUl9UWVBFX01FVEFEQVRBID0gXCJkZXNpZ246cGFyYW10eXBlc1wiO1xuZXhwb3J0IGNvbnN0IEJVSUxUX0lOX1JFVFVSTl9UWVBFX01FVEFEQVRBID0gXCJkZXNpZ246cmV0dXJudHlwZVwiO1xuXG4vKipcbiAqIEN1c3RvbSBNZXRhZGF0YSBLZXlzOiBDb250aW51ZSB1c2luZyBTeW1ib2xzIGZvciB5b3VyIGN1c3RvbSBtZXRhZGF0YSB0byBhdm9pZCBjb2xsaXNpb25zIGFuZCBlbnN1cmUgdW5pcXVlbmVzcy5cbiAqL1xuZXhwb3J0IGNvbnN0IEhPT0tfTUVUQURBVEEgPSBTeW1ib2woXCJmYXN0aWZ5LWF1dG93aXJlZDpob29rLW1ldGFkYXRhXCIpO1xuZXhwb3J0IGNvbnN0IFJFUE9TSVRPUllfTUVUQURBVEEgPSBTeW1ib2woXCJmYXN0aWZ5LWF1dG93aXJlZDpyZXBvc2l0b3J5XCIpO1xuZXhwb3J0IGNvbnN0IFNFUlZJQ0VfTUVUQURBVEEgPSBTeW1ib2woXCJmYXN0aWZ5LWF1dG93aXJlZDpzZXJ2aWNlXCIpO1xuXG4vKipcbiAqIENvbnRyb2xsZXIgYW5kIEFkdmljZSBNZXRhZGF0YTogRnJhbWV3b3JrLWFnbm9zdGljIGtleXMgZm9yIHJlZ2lzdGVyaW5nIGNvbnRyb2xsZXJzIGFuZCBhZHZpY2VzLlxuICovXG5leHBvcnQgY29uc3QgQ09OVFJPTExFUl9NRVRBREFUQSA9IFN5bWJvbChcImZhc3RpZnktYXV0b3dpcmVkOmNvbnRyb2xsZXJcIik7XG5leHBvcnQgY29uc3QgQ09OVFJPTExFUl9BRFZJQ0VfTUVUQURBVEEgPSBTeW1ib2woXCJmYXN0aWZ5LWF1dG93aXJlZDpjb250cm9sbGVyLWFkdmljZVwiKTtcbmV4cG9ydCBjb25zdCBHTE9CQUxfQ09OVFJPTExFUl9BRFZJQ0VfTUVUQURBVEEgPSBTeW1ib2woXCJmYXN0aWZ5LWF1dG93aXJlZDpnbG9iYWwtY29udHJvbGxlci1hZHZpY2VcIik7XG5cbi8qKlxuICogUHJvcGVydHkgSW5qZWN0aW9uIE1ldGFkYXRhOiBTdG9yZXMgYXV0b3dpcmVkIHByb3BlcnRpZXMgZm9yIGxhenkgaW5qZWN0aW9uIGFmdGVyIGluc3RhbmNlIGNyZWF0aW9uLlxuICovXG5leHBvcnQgY29uc3QgQVVUT1dJUkVEX1BST1BFUlRJRVNfTUVUQURBVEEgPSBTeW1ib2woXCJmYXN0aWZ5LWF1dG93aXJlZDphdXRvd2lyZWQtcHJvcGVydGllc1wiKTtcbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export interface Constructor<T = any> {
2
+ new (...args: any[]): T;
3
+ }
package/dist/types.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQ29uc3RydWN0b3I8VCA9IGFueT4ge1xuICBuZXcgKC4uLmFyZ3M6IGFueVtdKTogVDtcbn1cbiJdfQ==
@@ -0,0 +1 @@
1
+ export declare const printBanner: () => Promise<void>;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.printBanner = void 0;
7
+ const promises_1 = __importDefault(require("fs/promises"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const printBanner = async () => {
10
+ try {
11
+ const bannerPath = path_1.default.resolve(__dirname, "../../assets/banner.txt");
12
+ const banner = await promises_1.default.readFile(bannerPath, "utf-8");
13
+ console.info(banner);
14
+ }
15
+ catch (error) {
16
+ console.error("Error loading banner", error);
17
+ }
18
+ };
19
+ exports.printBanner = printBanner;
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFubmVyLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2Jhbm5lci51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwyREFBNkI7QUFDN0IsZ0RBQXdCO0FBRWpCLE1BQU0sV0FBVyxHQUFHLEtBQUssSUFBbUIsRUFBRTtJQUVuRCxJQUFJLENBQUM7UUFDSCxNQUFNLFVBQVUsR0FBRyxjQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSx5QkFBeUIsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sTUFBTSxHQUFHLE1BQU0sa0JBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3RELE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUFDLE9BQU8sS0FBVSxFQUFFLENBQUM7UUFDcEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQyxDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBVFcsUUFBQSxXQUFXLGVBU3RCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gXCJmcy9wcm9taXNlc1wiO1xuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcblxuZXhwb3J0IGNvbnN0IHByaW50QmFubmVyID0gYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuXG4gIHRyeSB7XG4gICAgY29uc3QgYmFubmVyUGF0aCA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsIFwiLi4vLi4vYXNzZXRzL2Jhbm5lci50eHRcIik7XG4gICAgY29uc3QgYmFubmVyID0gYXdhaXQgZnMucmVhZEZpbGUoYmFubmVyUGF0aCwgXCJ1dGYtOFwiKTtcbiAgICBjb25zb2xlLmluZm8oYmFubmVyKTtcbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBsb2FkaW5nIGJhbm5lclwiLCBlcnJvcik7XG4gIH1cbn07XG4iXX0=
@@ -0,0 +1,36 @@
1
+ import "reflect-metadata";
2
+ export declare class MetadataUtils {
3
+ /**
4
+ * Checks if metadata exists for a given key and target.
5
+ * @param metadataKey - The symbol key for the metadata.
6
+ * @param target - The target object (constructor function or prototype).
7
+ * @param propertyKey - (Optional) The property key if checking for method metadata.
8
+ * @returns {boolean} - True if metadata exists, false otherwise.
9
+ */
10
+ static hasMetadata: (metadataKey: symbol, target: Function, propertyKey?: string | symbol) => boolean;
11
+ /**
12
+ * Retrieves metadata for a given key and target.
13
+ * @param metadataKey - The symbol key for the metadata.
14
+ * @param target - The target object (constructor function or prototype).
15
+ * @returns {any} - The metadata value or undefined.
16
+ */
17
+ static getMetadata: (metadataKey: symbol, target: Function) => any;
18
+ /**
19
+ * Checks if a class is a global controller advice.
20
+ * @param target - The class to check.
21
+ * @returns True if the class is a global controller advice, false otherwise.
22
+ */
23
+ static isGlobalControllerAdvice(target: any): boolean;
24
+ /**
25
+ * Checks if a class is a controller-specific advice.
26
+ * @param target - The class to check.
27
+ * @returns True if the class is a controller-specific advice, false otherwise.
28
+ */
29
+ static isControllerAdvice(target: any): boolean;
30
+ /**
31
+ * Checks if a class is a controller.
32
+ * @param target - The class to check.
33
+ * @returns True if the class is a controller, false otherwise.
34
+ */
35
+ static isController(target: any): boolean;
36
+ }
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MetadataUtils = void 0;
4
+ require("reflect-metadata");
5
+ const symbols_1 = require("../symbols");
6
+ class MetadataUtils {
7
+ /**
8
+ * Checks if a class is a global controller advice.
9
+ * @param target - The class to check.
10
+ * @returns True if the class is a global controller advice, false otherwise.
11
+ */
12
+ static isGlobalControllerAdvice(target) {
13
+ return Reflect.hasMetadata(symbols_1.GLOBAL_CONTROLLER_ADVICE_METADATA, target);
14
+ }
15
+ /**
16
+ * Checks if a class is a controller-specific advice.
17
+ * @param target - The class to check.
18
+ * @returns True if the class is a controller-specific advice, false otherwise.
19
+ */
20
+ static isControllerAdvice(target) {
21
+ return Reflect.hasMetadata(symbols_1.CONTROLLER_ADVICE_METADATA, target);
22
+ }
23
+ /**
24
+ * Checks if a class is a controller.
25
+ * @param target - The class to check.
26
+ * @returns True if the class is a controller, false otherwise.
27
+ */
28
+ static isController(target) {
29
+ return Reflect.hasMetadata(symbols_1.CONTROLLER_METADATA, target);
30
+ }
31
+ }
32
+ exports.MetadataUtils = MetadataUtils;
33
+ /**
34
+ * Checks if metadata exists for a given key and target.
35
+ * @param metadataKey - The symbol key for the metadata.
36
+ * @param target - The target object (constructor function or prototype).
37
+ * @param propertyKey - (Optional) The property key if checking for method metadata.
38
+ * @returns {boolean} - True if metadata exists, false otherwise.
39
+ */
40
+ MetadataUtils.hasMetadata = (metadataKey, target, propertyKey) => {
41
+ if (propertyKey) {
42
+ return Reflect.hasMetadata(metadataKey, target.prototype, propertyKey);
43
+ }
44
+ return Reflect.hasMetadata(metadataKey, target);
45
+ };
46
+ /**
47
+ * Retrieves metadata for a given key and target.
48
+ * @param metadataKey - The symbol key for the metadata.
49
+ * @param target - The target object (constructor function or prototype).
50
+ * @returns {any} - The metadata value or undefined.
51
+ */
52
+ MetadataUtils.getMetadata = (metadataKey, target) => {
53
+ return Reflect.getMetadata(metadataKey, target);
54
+ };
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvbWV0YWRhdGEudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNEJBQTBCO0FBQzFCLHdDQUFnSDtBQUVoSCxNQUFhLGFBQWE7SUF5QnhCOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsd0JBQXdCLENBQUMsTUFBVztRQUNoRCxPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUMsMkNBQWlDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsa0JBQWtCLENBQUMsTUFBVztRQUMxQyxPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUMsb0NBQTBCLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQVc7UUFDcEMsT0FBTyxPQUFPLENBQUMsV0FBVyxDQUFDLDZCQUFtQixFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzFELENBQUM7O0FBbERILHNDQW1EQztBQWxEQzs7Ozs7O0dBTUc7QUFDVyx5QkFBVyxHQUFHLENBQUMsV0FBbUIsRUFBRSxNQUFnQixFQUFFLFdBQTZCLEVBQVcsRUFBRTtJQUM1RyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ2hCLE9BQU8sT0FBTyxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNsRCxDQUFDLENBQUM7QUFFRjs7Ozs7R0FLRztBQUNXLHlCQUFXLEdBQUcsQ0FBQyxXQUFtQixFQUFFLE1BQWdCLEVBQU8sRUFBRTtJQUN6RSxPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2xELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcInJlZmxlY3QtbWV0YWRhdGFcIjtcbmltcG9ydCB7IEdMT0JBTF9DT05UUk9MTEVSX0FEVklDRV9NRVRBREFUQSwgQ09OVFJPTExFUl9BRFZJQ0VfTUVUQURBVEEsIENPTlRST0xMRVJfTUVUQURBVEEgfSBmcm9tIFwiLi4vc3ltYm9sc1wiO1xuXG5leHBvcnQgY2xhc3MgTWV0YWRhdGFVdGlscyB7XG4gIC8qKlxuICAgKiBDaGVja3MgaWYgbWV0YWRhdGEgZXhpc3RzIGZvciBhIGdpdmVuIGtleSBhbmQgdGFyZ2V0LlxuICAgKiBAcGFyYW0gbWV0YWRhdGFLZXkgLSBUaGUgc3ltYm9sIGtleSBmb3IgdGhlIG1ldGFkYXRhLlxuICAgKiBAcGFyYW0gdGFyZ2V0IC0gVGhlIHRhcmdldCBvYmplY3QgKGNvbnN0cnVjdG9yIGZ1bmN0aW9uIG9yIHByb3RvdHlwZSkuXG4gICAqIEBwYXJhbSBwcm9wZXJ0eUtleSAtIChPcHRpb25hbCkgVGhlIHByb3BlcnR5IGtleSBpZiBjaGVja2luZyBmb3IgbWV0aG9kIG1ldGFkYXRhLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBUcnVlIGlmIG1ldGFkYXRhIGV4aXN0cywgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBoYXNNZXRhZGF0YSA9IChtZXRhZGF0YUtleTogc3ltYm9sLCB0YXJnZXQ6IEZ1bmN0aW9uLCBwcm9wZXJ0eUtleT86IHN0cmluZyB8IHN5bWJvbCk6IGJvb2xlYW4gPT4ge1xuICAgIGlmIChwcm9wZXJ0eUtleSkge1xuICAgICAgcmV0dXJuIFJlZmxlY3QuaGFzTWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldC5wcm90b3R5cGUsIHByb3BlcnR5S2V5KTtcbiAgICB9XG4gICAgcmV0dXJuIFJlZmxlY3QuaGFzTWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyBtZXRhZGF0YSBmb3IgYSBnaXZlbiBrZXkgYW5kIHRhcmdldC5cbiAgICogQHBhcmFtIG1ldGFkYXRhS2V5IC0gVGhlIHN5bWJvbCBrZXkgZm9yIHRoZSBtZXRhZGF0YS5cbiAgICogQHBhcmFtIHRhcmdldCAtIFRoZSB0YXJnZXQgb2JqZWN0IChjb25zdHJ1Y3RvciBmdW5jdGlvbiBvciBwcm90b3R5cGUpLlxuICAgKiBAcmV0dXJucyB7YW55fSAtIFRoZSBtZXRhZGF0YSB2YWx1ZSBvciB1bmRlZmluZWQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldE1ldGFkYXRhID0gKG1ldGFkYXRhS2V5OiBzeW1ib2wsIHRhcmdldDogRnVuY3Rpb24pOiBhbnkgPT4ge1xuICAgIHJldHVybiBSZWZsZWN0LmdldE1ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSBjbGFzcyBpcyBhIGdsb2JhbCBjb250cm9sbGVyIGFkdmljZS5cbiAgICogQHBhcmFtIHRhcmdldCAtIFRoZSBjbGFzcyB0byBjaGVjay5cbiAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgY2xhc3MgaXMgYSBnbG9iYWwgY29udHJvbGxlciBhZHZpY2UsIGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNHbG9iYWxDb250cm9sbGVyQWR2aWNlKHRhcmdldDogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFJlZmxlY3QuaGFzTWV0YWRhdGEoR0xPQkFMX0NPTlRST0xMRVJfQURWSUNFX01FVEFEQVRBLCB0YXJnZXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhIGNsYXNzIGlzIGEgY29udHJvbGxlci1zcGVjaWZpYyBhZHZpY2UuXG4gICAqIEBwYXJhbSB0YXJnZXQgLSBUaGUgY2xhc3MgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGNsYXNzIGlzIGEgY29udHJvbGxlci1zcGVjaWZpYyBhZHZpY2UsIGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNDb250cm9sbGVyQWR2aWNlKHRhcmdldDogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFJlZmxlY3QuaGFzTWV0YWRhdGEoQ09OVFJPTExFUl9BRFZJQ0VfTUVUQURBVEEsIHRhcmdldCk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgY2xhc3MgaXMgYSBjb250cm9sbGVyLlxuICAgKiBAcGFyYW0gdGFyZ2V0IC0gVGhlIGNsYXNzIHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBjbGFzcyBpcyBhIGNvbnRyb2xsZXIsIGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNDb250cm9sbGVyKHRhcmdldDogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFJlZmxlY3QuaGFzTWV0YWRhdGEoQ09OVFJPTExFUl9NRVRBREFUQSwgdGFyZ2V0KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Resolves the file path of the calling class or returns "unknown".
3
+ */
4
+ export declare const resolveCallerDirectory: () => string;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.resolveCallerDirectory = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ /**
9
+ * Resolves the file path of the calling class or returns "unknown".
10
+ */
11
+ const resolveCallerDirectory = () => {
12
+ const error = new Error();
13
+ const stack = error.stack || "";
14
+ const stackLines = stack.split("\n");
15
+ const callerLine = stackLines.find(line => !line.includes(__filename) && line.includes("Object.<anonymous>"));
16
+ if (callerLine) {
17
+ const match = /\((.*?):(\d+):(\d+)\)/.exec(callerLine);
18
+ return match ? path_1.default.dirname(match[1]) : "unknown";
19
+ }
20
+ return "unknown";
21
+ };
22
+ exports.resolveCallerDirectory = resolveCallerDirectory;
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aC51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9wYXRoLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGdEQUF3QjtBQUV4Qjs7R0FFRztBQUNJLE1BQU0sc0JBQXNCLEdBQUcsR0FBVyxFQUFFO0lBQ2pELE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7SUFDMUIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDaEMsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO0lBRTlHLElBQUksVUFBVSxFQUFFLENBQUM7UUFDZixNQUFNLEtBQUssR0FBRyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdkQsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLGNBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNwRCxDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyxDQUFDO0FBWFcsUUFBQSxzQkFBc0IsMEJBV2pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgZmlsZSBwYXRoIG9mIHRoZSBjYWxsaW5nIGNsYXNzIG9yIHJldHVybnMgXCJ1bmtub3duXCIuXG4gKi9cbmV4cG9ydCBjb25zdCByZXNvbHZlQ2FsbGVyRGlyZWN0b3J5ID0gKCk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKCk7XG4gIGNvbnN0IHN0YWNrID0gZXJyb3Iuc3RhY2sgfHwgXCJcIjtcbiAgY29uc3Qgc3RhY2tMaW5lcyA9IHN0YWNrLnNwbGl0KFwiXFxuXCIpO1xuICBjb25zdCBjYWxsZXJMaW5lID0gc3RhY2tMaW5lcy5maW5kKGxpbmUgPT4gIWxpbmUuaW5jbHVkZXMoX19maWxlbmFtZSkgJiYgbGluZS5pbmNsdWRlcyhcIk9iamVjdC48YW5vbnltb3VzPlwiKSk7XG5cbiAgaWYgKGNhbGxlckxpbmUpIHtcbiAgICBjb25zdCBtYXRjaCA9IC9cXCgoLio/KTooXFxkKyk6KFxcZCspXFwpLy5leGVjKGNhbGxlckxpbmUpO1xuICAgIHJldHVybiBtYXRjaCA/IHBhdGguZGlybmFtZShtYXRjaFsxXSkgOiBcInVua25vd25cIjtcbiAgfVxuICByZXR1cm4gXCJ1bmtub3duXCI7XG59O1xuIl19
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Executes an asynchronous function while measuring its execution time.
3
+ * @param logger - Logger with info and error methods.
4
+ * @param description - A description of the operation being timed.
5
+ * @param fn - The asynchronous function to execute.
6
+ * @returns The result of the executed function.
7
+ */
8
+ export declare const timedFunction: <T>(logger: {
9
+ info: (msg: string) => void;
10
+ error: (msg: string) => void;
11
+ }, description: string, fn: () => Promise<T>) => Promise<T>;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ // src/utils/timedFunction.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.timedFunction = void 0;
5
+ /**
6
+ * Executes an asynchronous function while measuring its execution time.
7
+ * @param logger - Logger with info and error methods.
8
+ * @param description - A description of the operation being timed.
9
+ * @param fn - The asynchronous function to execute.
10
+ * @returns The result of the executed function.
11
+ */
12
+ const timedFunction = async (logger, description, fn) => {
13
+ const startTime = process.hrtime(); // Start the high-resolution timer
14
+ try {
15
+ const result = await fn(); // Execute the provided function
16
+ const diff = process.hrtime(startTime); // Get the difference
17
+ const durationInSeconds = diff[0] + diff[1] / 1e9; // Convert to seconds with nanosecond precision
18
+ logger.info(`${description} completed in ${durationInSeconds.toFixed(3)} second(s).`);
19
+ return result; // Return the result of the function
20
+ }
21
+ catch (error) {
22
+ const diff = process.hrtime(startTime);
23
+ const durationInSeconds = diff[0] + diff[1] / 1e9;
24
+ logger.error(`${description} failed after ${durationInSeconds.toFixed(3)} second(s):`);
25
+ throw error; // Re-throw the error after logging
26
+ }
27
+ };
28
+ exports.timedFunction = timedFunction;
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy90aW1lLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSw2QkFBNkI7OztBQUU3Qjs7Ozs7O0dBTUc7QUFDSSxNQUFNLGFBQWEsR0FBRyxLQUFLLEVBQ2hDLE1BQXFFLEVBQ3JFLFdBQW1CLEVBQ25CLEVBQW9CLEVBQ1IsRUFBRTtJQUNkLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLGtDQUFrQztJQUV0RSxJQUFJLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBRyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsZ0NBQWdDO1FBQzNELE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxxQkFBcUI7UUFDN0QsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLCtDQUErQztRQUVsRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsV0FBVyxpQkFBaUIsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUV0RixPQUFPLE1BQU0sQ0FBQyxDQUFDLG9DQUFvQztJQUNyRCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUVsRCxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsV0FBVyxpQkFBaUIsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUV2RixNQUFNLEtBQUssQ0FBQyxDQUFDLG1DQUFtQztJQUNsRCxDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBdkJXLFFBQUEsYUFBYSxpQkF1QnhCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gc3JjL3V0aWxzL3RpbWVkRnVuY3Rpb24udHNcblxuLyoqXG4gKiBFeGVjdXRlcyBhbiBhc3luY2hyb25vdXMgZnVuY3Rpb24gd2hpbGUgbWVhc3VyaW5nIGl0cyBleGVjdXRpb24gdGltZS5cbiAqIEBwYXJhbSBsb2dnZXIgLSBMb2dnZXIgd2l0aCBpbmZvIGFuZCBlcnJvciBtZXRob2RzLlxuICogQHBhcmFtIGRlc2NyaXB0aW9uIC0gQSBkZXNjcmlwdGlvbiBvZiB0aGUgb3BlcmF0aW9uIGJlaW5nIHRpbWVkLlxuICogQHBhcmFtIGZuIC0gVGhlIGFzeW5jaHJvbm91cyBmdW5jdGlvbiB0byBleGVjdXRlLlxuICogQHJldHVybnMgVGhlIHJlc3VsdCBvZiB0aGUgZXhlY3V0ZWQgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBjb25zdCB0aW1lZEZ1bmN0aW9uID0gYXN5bmMgPFQ+KFxuICBsb2dnZXI6IHsgaW5mbzogKG1zZzogc3RyaW5nKSA9PiB2b2lkOyBlcnJvcjogKG1zZzogc3RyaW5nKSA9PiB2b2lkIH0sXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmcsXG4gIGZuOiAoKSA9PiBQcm9taXNlPFQ+XG4pOiBQcm9taXNlPFQ+ID0+IHtcbiAgY29uc3Qgc3RhcnRUaW1lID0gcHJvY2Vzcy5ocnRpbWUoKTsgLy8gU3RhcnQgdGhlIGhpZ2gtcmVzb2x1dGlvbiB0aW1lclxuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZm4oKTsgLy8gRXhlY3V0ZSB0aGUgcHJvdmlkZWQgZnVuY3Rpb25cbiAgICBjb25zdCBkaWZmID0gcHJvY2Vzcy5ocnRpbWUoc3RhcnRUaW1lKTsgLy8gR2V0IHRoZSBkaWZmZXJlbmNlXG4gICAgY29uc3QgZHVyYXRpb25JblNlY29uZHMgPSBkaWZmWzBdICsgZGlmZlsxXSAvIDFlOTsgLy8gQ29udmVydCB0byBzZWNvbmRzIHdpdGggbmFub3NlY29uZCBwcmVjaXNpb25cblxuICAgIGxvZ2dlci5pbmZvKGAke2Rlc2NyaXB0aW9ufSBjb21wbGV0ZWQgaW4gJHtkdXJhdGlvbkluU2Vjb25kcy50b0ZpeGVkKDMpfSBzZWNvbmQocykuYCk7XG5cbiAgICByZXR1cm4gcmVzdWx0OyAvLyBSZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb25cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zdCBkaWZmID0gcHJvY2Vzcy5ocnRpbWUoc3RhcnRUaW1lKTtcbiAgICBjb25zdCBkdXJhdGlvbkluU2Vjb25kcyA9IGRpZmZbMF0gKyBkaWZmWzFdIC8gMWU5O1xuXG4gICAgbG9nZ2VyLmVycm9yKGAke2Rlc2NyaXB0aW9ufSBmYWlsZWQgYWZ0ZXIgJHtkdXJhdGlvbkluU2Vjb25kcy50b0ZpeGVkKDMpfSBzZWNvbmQocyk6YCk7XG5cbiAgICB0aHJvdyBlcnJvcjsgLy8gUmUtdGhyb3cgdGhlIGVycm9yIGFmdGVyIGxvZ2dpbmdcbiAgfVxufTtcbiJdfQ==
package/package.json ADDED
@@ -0,0 +1,53 @@
1
+ {
2
+ "name": "@autowired-framework/core",
3
+ "version": "0.0.1",
4
+ "description": "Core of the autowired-framework - provides dependency injection container, decorators, and utilities",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "files": [
8
+ "dist",
9
+ "assets"
10
+ ],
11
+ "exports": {
12
+ ".": {
13
+ "import": "./dist/index.js",
14
+ "require": "./dist/index.js",
15
+ "types": "./dist/index.d.ts"
16
+ },
17
+ "./dependency-injection/*": "./dist/dependency-injection/*.js",
18
+ "./decorators/*": "./dist/decorators/*.js",
19
+ "./hooks/*": "./dist/hooks/*.js",
20
+ "./utils/*": "./dist/utils/*.js",
21
+ "./types": "./dist/types.js",
22
+ "./dist/*": "./dist/*.js"
23
+ },
24
+ "scripts": {
25
+ "build": "tsc",
26
+ "publish": "npm publish",
27
+ "lint": "biome check .",
28
+ "lint:fix": "biome check . --write",
29
+ "format": "biome format . --write",
30
+ "test": "vitest run"
31
+ },
32
+ "author": "alexbaeza",
33
+ "license": "ISC",
34
+ "repository": {
35
+ "type": "git",
36
+ "url": "git+https://github.com/alexbaeza/autowired-framework.git",
37
+ "directory": "packages/core-packages/core"
38
+ },
39
+ "publishConfig": {
40
+ "access": "public"
41
+ },
42
+ "private": false,
43
+ "dependencies": {
44
+ "reflect-metadata": "^0.2.2",
45
+ "tslib": "^2.8.0"
46
+ },
47
+ "devDependencies": {
48
+ "@alexbaeza/shared-config": "^0.0.1",
49
+ "@types/node": "^25.5.0",
50
+ "typescript": "^5.9.3",
51
+ "vitest": "^3.0.0"
52
+ }
53
+ }