@depup/nestjs__core 11.1.17-depup.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/LICENSE +22 -0
- package/PACKAGE.md +1 -0
- package/README.md +25 -0
- package/Readme.md +146 -0
- package/adapters/http-adapter.d.ts +80 -0
- package/adapters/http-adapter.js +90 -0
- package/adapters/index.d.ts +1 -0
- package/adapters/index.js +4 -0
- package/application-config.d.ts +47 -0
- package/application-config.js +107 -0
- package/changes.json +5 -0
- package/constants.d.ts +14 -0
- package/constants.js +21 -0
- package/discovery/discoverable-meta-host-collection.d.ts +46 -0
- package/discovery/discoverable-meta-host-collection.js +98 -0
- package/discovery/discovery-module.d.ts +5 -0
- package/discovery/discovery-module.js +19 -0
- package/discovery/discovery-service.d.ts +76 -0
- package/discovery/discovery-service.js +98 -0
- package/discovery/index.d.ts +2 -0
- package/discovery/index.js +5 -0
- package/errors/exception-handler.d.ts +4 -0
- package/errors/exception-handler.js +11 -0
- package/errors/exceptions/circular-dependency.exception.d.ts +4 -0
- package/errors/exceptions/circular-dependency.exception.js +11 -0
- package/errors/exceptions/index.d.ts +8 -0
- package/errors/exceptions/index.js +11 -0
- package/errors/exceptions/invalid-class-module.exception.d.ts +4 -0
- package/errors/exceptions/invalid-class-module.exception.js +11 -0
- package/errors/exceptions/invalid-class-scope.exception.d.ts +5 -0
- package/errors/exceptions/invalid-class-scope.exception.js +16 -0
- package/errors/exceptions/invalid-class.exception.d.ts +4 -0
- package/errors/exceptions/invalid-class.exception.js +11 -0
- package/errors/exceptions/invalid-exception-filter.exception.d.ts +4 -0
- package/errors/exceptions/invalid-exception-filter.exception.js +11 -0
- package/errors/exceptions/invalid-middleware-configuration.exception.d.ts +4 -0
- package/errors/exceptions/invalid-middleware-configuration.exception.js +11 -0
- package/errors/exceptions/invalid-middleware.exception.d.ts +4 -0
- package/errors/exceptions/invalid-middleware.exception.js +11 -0
- package/errors/exceptions/invalid-module.exception.d.ts +4 -0
- package/errors/exceptions/invalid-module.exception.js +11 -0
- package/errors/exceptions/runtime.exception.d.ts +4 -0
- package/errors/exceptions/runtime.exception.js +12 -0
- package/errors/exceptions/undefined-dependency.exception.d.ts +6 -0
- package/errors/exceptions/undefined-dependency.exception.js +11 -0
- package/errors/exceptions/undefined-forwardref.exception.d.ts +5 -0
- package/errors/exceptions/undefined-forwardref.exception.js +11 -0
- package/errors/exceptions/undefined-module.exception.d.ts +4 -0
- package/errors/exceptions/undefined-module.exception.js +11 -0
- package/errors/exceptions/unknown-dependencies.exception.d.ts +16 -0
- package/errors/exceptions/unknown-dependencies.exception.js +15 -0
- package/errors/exceptions/unknown-element.exception.d.ts +4 -0
- package/errors/exceptions/unknown-element.exception.js +11 -0
- package/errors/exceptions/unknown-export.exception.d.ts +4 -0
- package/errors/exceptions/unknown-export.exception.js +11 -0
- package/errors/exceptions/unknown-module.exception.d.ts +4 -0
- package/errors/exceptions/unknown-module.exception.js +10 -0
- package/errors/exceptions/unknown-request-mapping.exception.d.ts +5 -0
- package/errors/exceptions/unknown-request-mapping.exception.js +11 -0
- package/errors/exceptions-zone.d.ts +5 -0
- package/errors/exceptions-zone.js +34 -0
- package/errors/messages.d.ts +17 -0
- package/errors/messages.js +174 -0
- package/exceptions/base-exception-filter-context.d.ts +14 -0
- package/exceptions/base-exception-filter-context.js +56 -0
- package/exceptions/base-exception-filter.d.ts +20 -0
- package/exceptions/base-exception-filter.js +72 -0
- package/exceptions/exceptions-handler.d.ts +10 -0
- package/exceptions/exceptions-handler.js +34 -0
- package/exceptions/external-exception-filter-context.d.ts +12 -0
- package/exceptions/external-exception-filter-context.js +42 -0
- package/exceptions/external-exception-filter.d.ts +5 -0
- package/exceptions/external-exception-filter.js +15 -0
- package/exceptions/external-exceptions-handler.d.ts +9 -0
- package/exceptions/external-exceptions-handler.js +34 -0
- package/exceptions/index.d.ts +1 -0
- package/exceptions/index.js +4 -0
- package/guards/constants.d.ts +1 -0
- package/guards/constants.js +4 -0
- package/guards/guards-consumer.d.ts +9 -0
- package/guards/guards-consumer.js +39 -0
- package/guards/guards-context-creator.d.ts +17 -0
- package/guards/guards-context-creator.js +70 -0
- package/guards/index.d.ts +3 -0
- package/guards/index.js +6 -0
- package/helpers/barrier.d.ts +30 -0
- package/helpers/barrier.js +46 -0
- package/helpers/context-creator.d.ts +10 -0
- package/helpers/context-creator.js +33 -0
- package/helpers/context-id-factory.d.ts +41 -0
- package/helpers/context-id-factory.js +67 -0
- package/helpers/context-utils.d.ts +23 -0
- package/helpers/context-utils.js +55 -0
- package/helpers/execution-context-host.d.ts +19 -0
- package/helpers/execution-context-host.js +50 -0
- package/helpers/external-context-creator.d.ts +51 -0
- package/helpers/external-context-creator.js +166 -0
- package/helpers/external-proxy.d.ts +5 -0
- package/helpers/external-proxy.js +19 -0
- package/helpers/get-class-scope.d.ts +3 -0
- package/helpers/get-class-scope.js +8 -0
- package/helpers/handler-metadata-storage.d.ts +27 -0
- package/helpers/handler-metadata-storage.js +26 -0
- package/helpers/http-adapter-host.d.ts +51 -0
- package/helpers/http-adapter-host.js +73 -0
- package/helpers/index.d.ts +3 -0
- package/helpers/index.js +6 -0
- package/helpers/interfaces/external-handler-metadata.interface.d.ts +11 -0
- package/helpers/interfaces/external-handler-metadata.interface.js +2 -0
- package/helpers/interfaces/index.d.ts +2 -0
- package/helpers/interfaces/index.js +5 -0
- package/helpers/interfaces/params-metadata.interface.d.ts +6 -0
- package/helpers/interfaces/params-metadata.interface.js +2 -0
- package/helpers/is-durable.d.ts +2 -0
- package/helpers/is-durable.js +8 -0
- package/helpers/load-adapter.d.ts +1 -0
- package/helpers/load-adapter.js +15 -0
- package/helpers/messages.d.ts +7 -0
- package/helpers/messages.js +29 -0
- package/helpers/optional-require.d.ts +1 -0
- package/helpers/optional-require.js +11 -0
- package/helpers/rethrow.d.ts +1 -0
- package/helpers/rethrow.js +7 -0
- package/helpers/router-method-factory.d.ts +23 -0
- package/helpers/router-method-factory.js +33 -0
- package/hooks/before-app-shutdown.hook.d.ts +9 -0
- package/hooks/before-app-shutdown.hook.js +51 -0
- package/hooks/index.d.ts +5 -0
- package/hooks/index.js +8 -0
- package/hooks/on-app-bootstrap.hook.d.ts +8 -0
- package/hooks/on-app-bootstrap.hook.js +53 -0
- package/hooks/on-app-shutdown.hook.d.ts +9 -0
- package/hooks/on-app-shutdown.hook.js +54 -0
- package/hooks/on-module-destroy.hook.d.ts +8 -0
- package/hooks/on-module-destroy.hook.js +53 -0
- package/hooks/on-module-init.hook.d.ts +8 -0
- package/hooks/on-module-init.hook.js +53 -0
- package/hooks/utils/get-instances-grouped-by-hierarchy-level.d.ts +3 -0
- package/hooks/utils/get-instances-grouped-by-hierarchy-level.js +27 -0
- package/hooks/utils/get-sorted-hierarchy-levels.d.ts +1 -0
- package/hooks/utils/get-sorted-hierarchy-levels.js +7 -0
- package/index.d.ts +17 -0
- package/index.js +32 -0
- package/injector/abstract-instance-resolver.d.ts +16 -0
- package/injector/abstract-instance-resolver.js +49 -0
- package/injector/compiler.d.ts +18 -0
- package/injector/compiler.js +35 -0
- package/injector/constants.d.ts +3 -0
- package/injector/constants.js +8 -0
- package/injector/container.d.ts +67 -0
- package/injector/container.js +233 -0
- package/injector/helpers/provider-classifier.d.ts +4 -0
- package/injector/helpers/provider-classifier.js +16 -0
- package/injector/helpers/silent-logger.d.ts +10 -0
- package/injector/helpers/silent-logger.js +18 -0
- package/injector/helpers/transient-instances.d.ts +12 -0
- package/injector/helpers/transient-instances.js +28 -0
- package/injector/index.d.ts +6 -0
- package/injector/index.js +8 -0
- package/injector/injector.d.ts +104 -0
- package/injector/injector.js +554 -0
- package/injector/inquirer/index.d.ts +1 -0
- package/injector/inquirer/index.js +4 -0
- package/injector/inquirer/inquirer-constants.d.ts +1 -0
- package/injector/inquirer/inquirer-constants.js +4 -0
- package/injector/inquirer/inquirer-providers.d.ts +2 -0
- package/injector/inquirer/inquirer-providers.js +11 -0
- package/injector/instance-links-host.d.ts +22 -0
- package/injector/instance-links-host.js +56 -0
- package/injector/instance-loader.d.ts +23 -0
- package/injector/instance-loader.js +88 -0
- package/injector/instance-wrapper.d.ts +99 -0
- package/injector/instance-wrapper.js +350 -0
- package/injector/internal-core-module/index.d.ts +1 -0
- package/injector/internal-core-module/index.js +4 -0
- package/injector/internal-core-module/internal-core-module-factory.d.ts +9 -0
- package/injector/internal-core-module/internal-core-module-factory.js +52 -0
- package/injector/internal-core-module/internal-core-module.d.ts +5 -0
- package/injector/internal-core-module/internal-core-module.js +40 -0
- package/injector/internal-providers-storage.d.ts +9 -0
- package/injector/internal-providers-storage.js +19 -0
- package/injector/lazy-module-loader/lazy-module-loader-options.interface.d.ts +6 -0
- package/injector/lazy-module-loader/lazy-module-loader-options.interface.js +2 -0
- package/injector/lazy-module-loader/lazy-module-loader.d.ts +20 -0
- package/injector/lazy-module-loader/lazy-module-loader.js +49 -0
- package/injector/module-ref.d.ts +106 -0
- package/injector/module-ref.js +66 -0
- package/injector/module.d.ts +82 -0
- package/injector/module.js +432 -0
- package/injector/modules-container.d.ts +27 -0
- package/injector/modules-container.js +42 -0
- package/injector/opaque-key-factory/by-reference-module-opaque-key-factory.d.ts +15 -0
- package/injector/opaque-key-factory/by-reference-module-opaque-key-factory.js +41 -0
- package/injector/opaque-key-factory/deep-hashed-module-opaque-key-factory.d.ts +15 -0
- package/injector/opaque-key-factory/deep-hashed-module-opaque-key-factory.js +83 -0
- package/injector/opaque-key-factory/interfaces/module-opaque-key-factory.interface.d.ts +18 -0
- package/injector/opaque-key-factory/interfaces/module-opaque-key-factory.interface.js +2 -0
- package/injector/settlement-signal.d.ts +37 -0
- package/injector/settlement-signal.js +55 -0
- package/injector/topology-tree/topology-tree.d.ts +8 -0
- package/injector/topology-tree/topology-tree.js +51 -0
- package/injector/topology-tree/tree-node.d.ts +14 -0
- package/injector/topology-tree/tree-node.js +54 -0
- package/inspector/deterministic-uuid-registry.d.ts +6 -0
- package/inspector/deterministic-uuid-registry.js +24 -0
- package/inspector/graph-inspector.d.ts +26 -0
- package/inspector/graph-inspector.js +166 -0
- package/inspector/index.d.ts +4 -0
- package/inspector/index.js +7 -0
- package/inspector/initialize-on-preview.allowlist.d.ts +6 -0
- package/inspector/initialize-on-preview.allowlist.js +13 -0
- package/inspector/interfaces/edge.interface.d.ts +28 -0
- package/inspector/interfaces/edge.interface.js +2 -0
- package/inspector/interfaces/enhancer-metadata-cache-entry.interface.d.ts +12 -0
- package/inspector/interfaces/enhancer-metadata-cache-entry.interface.js +2 -0
- package/inspector/interfaces/entrypoint.interface.d.ts +23 -0
- package/inspector/interfaces/entrypoint.interface.js +2 -0
- package/inspector/interfaces/extras.interface.d.ts +18 -0
- package/inspector/interfaces/extras.interface.js +2 -0
- package/inspector/interfaces/node.interface.d.ts +48 -0
- package/inspector/interfaces/node.interface.js +2 -0
- package/inspector/interfaces/serialized-graph-json.interface.d.ts +14 -0
- package/inspector/interfaces/serialized-graph-json.interface.js +2 -0
- package/inspector/interfaces/serialized-graph-metadata.interface.d.ts +10 -0
- package/inspector/interfaces/serialized-graph-metadata.interface.js +2 -0
- package/inspector/noop-graph-inspector.d.ts +2 -0
- package/inspector/noop-graph-inspector.js +8 -0
- package/inspector/partial-graph.host.d.ts +7 -0
- package/inspector/partial-graph.host.js +15 -0
- package/inspector/serialized-graph.d.ts +52 -0
- package/inspector/serialized-graph.js +124 -0
- package/inspector/uuid-factory.d.ts +9 -0
- package/inspector/uuid-factory.js +22 -0
- package/interceptors/index.d.ts +2 -0
- package/interceptors/index.js +5 -0
- package/interceptors/interceptors-consumer.d.ts +9 -0
- package/interceptors/interceptors-consumer.js +37 -0
- package/interceptors/interceptors-context-creator.d.ts +16 -0
- package/interceptors/interceptors-context-creator.js +69 -0
- package/interfaces/index.d.ts +2 -0
- package/interfaces/index.js +2 -0
- package/interfaces/module-definition.interface.d.ts +3 -0
- package/interfaces/module-definition.interface.js +2 -0
- package/interfaces/module-override.interface.d.ts +5 -0
- package/interfaces/module-override.interface.js +2 -0
- package/internal.d.ts +38 -0
- package/internal.js +46 -0
- package/metadata-scanner.d.ts +17 -0
- package/metadata-scanner.js +83 -0
- package/middleware/builder.d.ts +15 -0
- package/middleware/builder.js +91 -0
- package/middleware/container.d.ts +14 -0
- package/middleware/container.js +49 -0
- package/middleware/index.d.ts +1 -0
- package/middleware/index.js +4 -0
- package/middleware/middleware-module.d.ts +33 -0
- package/middleware/middleware-module.js +208 -0
- package/middleware/resolver.d.ts +10 -0
- package/middleware/resolver.js +18 -0
- package/middleware/route-info-path-extractor.d.ts +15 -0
- package/middleware/route-info-path-extractor.js +81 -0
- package/middleware/routes-mapper.d.ts +19 -0
- package/middleware/routes-mapper.js +117 -0
- package/middleware/utils.d.ts +8 -0
- package/middleware/utils.js +106 -0
- package/nest-application-context.d.ts +173 -0
- package/nest-application-context.js +327 -0
- package/nest-application.d.ts +64 -0
- package/nest-application.js +328 -0
- package/nest-factory.d.ts +83 -0
- package/nest-factory.js +232 -0
- package/package.json +73 -0
- package/pipes/index.d.ts +3 -0
- package/pipes/index.js +6 -0
- package/pipes/params-token-factory.d.ts +5 -0
- package/pipes/params-token-factory.js +19 -0
- package/pipes/pipes-consumer.d.ts +10 -0
- package/pipes/pipes-consumer.js +21 -0
- package/pipes/pipes-context-creator.d.ts +17 -0
- package/pipes/pipes-context-creator.js +72 -0
- package/repl/assign-to-object.util.d.ts +5 -0
- package/repl/assign-to-object.util.js +14 -0
- package/repl/constants.d.ts +1 -0
- package/repl/constants.js +4 -0
- package/repl/index.d.ts +1 -0
- package/repl/index.js +4 -0
- package/repl/native-functions/debug-repl-fn.d.ts +9 -0
- package/repl/native-functions/debug-repl-fn.js +46 -0
- package/repl/native-functions/get-repl-fn.d.ts +7 -0
- package/repl/native-functions/get-repl-fn.js +19 -0
- package/repl/native-functions/help-repl-fn.d.ts +7 -0
- package/repl/native-functions/help-repl-fn.js +29 -0
- package/repl/native-functions/index.d.ts +6 -0
- package/repl/native-functions/index.js +9 -0
- package/repl/native-functions/methods-repl-fn.d.ts +8 -0
- package/repl/native-functions/methods-repl-fn.js +28 -0
- package/repl/native-functions/resolve-repl-fn.d.ts +7 -0
- package/repl/native-functions/resolve-repl-fn.js +18 -0
- package/repl/native-functions/select-relp-fn.d.ts +7 -0
- package/repl/native-functions/select-relp-fn.js +18 -0
- package/repl/repl-context.d.ts +26 -0
- package/repl/repl-context.js +126 -0
- package/repl/repl-function.d.ts +18 -0
- package/repl/repl-function.js +19 -0
- package/repl/repl-logger.d.ts +5 -0
- package/repl/repl-logger.js +22 -0
- package/repl/repl-native-commands.d.ts +2 -0
- package/repl/repl-native-commands.js +46 -0
- package/repl/repl.d.ts +3 -0
- package/repl/repl.interfaces.d.ts +16 -0
- package/repl/repl.interfaces.js +2 -0
- package/repl/repl.js +32 -0
- package/router/index.d.ts +3 -0
- package/router/index.js +8 -0
- package/router/interfaces/exceptions-filter.interface.d.ts +6 -0
- package/router/interfaces/exceptions-filter.interface.js +2 -0
- package/router/interfaces/exclude-route-metadata.interface.d.ts +15 -0
- package/router/interfaces/exclude-route-metadata.interface.js +2 -0
- package/router/interfaces/index.d.ts +1 -0
- package/router/interfaces/index.js +4 -0
- package/router/interfaces/resolver.interface.d.ts +5 -0
- package/router/interfaces/resolver.interface.js +2 -0
- package/router/interfaces/route-params-factory.interface.d.ts +8 -0
- package/router/interfaces/route-params-factory.interface.js +2 -0
- package/router/interfaces/route-path-metadata.interface.d.ts +32 -0
- package/router/interfaces/route-path-metadata.interface.js +2 -0
- package/router/interfaces/routes.interface.d.ts +7 -0
- package/router/interfaces/routes.interface.js +2 -0
- package/router/legacy-route-converter.d.ts +16 -0
- package/router/legacy-route-converter.js +61 -0
- package/router/paths-explorer.d.ts +18 -0
- package/router/paths-explorer.js +45 -0
- package/router/request/index.d.ts +1 -0
- package/router/request/index.js +5 -0
- package/router/request/request-constants.d.ts +2 -0
- package/router/request/request-constants.js +5 -0
- package/router/request/request-providers.d.ts +2 -0
- package/router/request/request-providers.js +11 -0
- package/router/route-params-factory.d.ts +9 -0
- package/router/route-params-factory.js +41 -0
- package/router/route-path-factory.d.ts +14 -0
- package/router/route-path-factory.js +101 -0
- package/router/router-exception-filters.d.ts +14 -0
- package/router/router-exception-filters.js +40 -0
- package/router/router-execution-context.d.ts +54 -0
- package/router/router-execution-context.js +186 -0
- package/router/router-explorer.d.ts +47 -0
- package/router/router-explorer.js +234 -0
- package/router/router-module.d.ts +19 -0
- package/router/router-module.js +80 -0
- package/router/router-proxy.d.ts +6 -0
- package/router/router-proxy.js +31 -0
- package/router/router-response-controller.d.ts +28 -0
- package/router/router-response-controller.js +98 -0
- package/router/routes-resolver.d.ts +27 -0
- package/router/routes-resolver.js +129 -0
- package/router/sse-stream.d.ts +43 -0
- package/router/sse-stream.js +83 -0
- package/router/utils/exclude-route.util.d.ts +4 -0
- package/router/utils/exclude-route.util.js +19 -0
- package/router/utils/flatten-route-paths.util.d.ts +6 -0
- package/router/utils/flatten-route-paths.util.js +25 -0
- package/router/utils/index.d.ts +2 -0
- package/router/utils/index.js +5 -0
- package/scanner.d.ts +89 -0
- package/scanner.js +416 -0
- package/services/index.d.ts +1 -0
- package/services/index.js +4 -0
- package/services/reflector.service.d.ts +111 -0
- package/services/reflector.service.js +100 -0
- package/tsconfig.build.json +21 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SettlementSignal is used to signal the resolution of a provider/instance.
|
|
3
|
+
* Calling `complete` or `error` will resolve the promise returned by `asPromise`.
|
|
4
|
+
* Can be used to detect circular dependencies.
|
|
5
|
+
*/
|
|
6
|
+
export declare class SettlementSignal {
|
|
7
|
+
private readonly _refs;
|
|
8
|
+
private readonly settledPromise;
|
|
9
|
+
private settleFn;
|
|
10
|
+
private completed;
|
|
11
|
+
constructor();
|
|
12
|
+
/**
|
|
13
|
+
* Resolves the promise returned by `asPromise`.
|
|
14
|
+
*/
|
|
15
|
+
complete(): void;
|
|
16
|
+
/**
|
|
17
|
+
* Rejects the promise returned by `asPromise` with the given error.
|
|
18
|
+
* @param err Error to reject the promise returned by `asPromise` with.
|
|
19
|
+
*/
|
|
20
|
+
error(err: unknown): void;
|
|
21
|
+
/**
|
|
22
|
+
* Returns a promise that will be resolved when `complete` or `error` is called.
|
|
23
|
+
* @returns Promise that will be resolved when `complete` or `error` is called.
|
|
24
|
+
*/
|
|
25
|
+
asPromise(): Promise<unknown>;
|
|
26
|
+
/**
|
|
27
|
+
* Inserts a wrapper id that the host of this signal depends on.
|
|
28
|
+
* @param wrapperId Wrapper id to insert.
|
|
29
|
+
*/
|
|
30
|
+
insertRef(wrapperId: string): void;
|
|
31
|
+
/**
|
|
32
|
+
* Check if relationship is circular.
|
|
33
|
+
* @param wrapperId Wrapper id to check.
|
|
34
|
+
* @returns True if relationship is circular, false otherwise.
|
|
35
|
+
*/
|
|
36
|
+
isCycle(wrapperId: string): boolean;
|
|
37
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SettlementSignal = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* SettlementSignal is used to signal the resolution of a provider/instance.
|
|
6
|
+
* Calling `complete` or `error` will resolve the promise returned by `asPromise`.
|
|
7
|
+
* Can be used to detect circular dependencies.
|
|
8
|
+
*/
|
|
9
|
+
class SettlementSignal {
|
|
10
|
+
constructor() {
|
|
11
|
+
this._refs = new Set();
|
|
12
|
+
this.completed = false;
|
|
13
|
+
this.settledPromise = new Promise(resolve => {
|
|
14
|
+
this.settleFn = resolve;
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Resolves the promise returned by `asPromise`.
|
|
19
|
+
*/
|
|
20
|
+
complete() {
|
|
21
|
+
this.completed = true;
|
|
22
|
+
this.settleFn();
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Rejects the promise returned by `asPromise` with the given error.
|
|
26
|
+
* @param err Error to reject the promise returned by `asPromise` with.
|
|
27
|
+
*/
|
|
28
|
+
error(err) {
|
|
29
|
+
this.completed = true;
|
|
30
|
+
this.settleFn(err);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Returns a promise that will be resolved when `complete` or `error` is called.
|
|
34
|
+
* @returns Promise that will be resolved when `complete` or `error` is called.
|
|
35
|
+
*/
|
|
36
|
+
asPromise() {
|
|
37
|
+
return this.settledPromise;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Inserts a wrapper id that the host of this signal depends on.
|
|
41
|
+
* @param wrapperId Wrapper id to insert.
|
|
42
|
+
*/
|
|
43
|
+
insertRef(wrapperId) {
|
|
44
|
+
this._refs.add(wrapperId);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Check if relationship is circular.
|
|
48
|
+
* @param wrapperId Wrapper id to check.
|
|
49
|
+
* @returns True if relationship is circular, false otherwise.
|
|
50
|
+
*/
|
|
51
|
+
isCycle(wrapperId) {
|
|
52
|
+
return !this.completed && this._refs.has(wrapperId);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.SettlementSignal = SettlementSignal;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TopologyTree = void 0;
|
|
4
|
+
const tree_node_1 = require("./tree-node");
|
|
5
|
+
class TopologyTree {
|
|
6
|
+
constructor(moduleRef) {
|
|
7
|
+
this.links = new Map();
|
|
8
|
+
this.root = new tree_node_1.TreeNode({
|
|
9
|
+
value: moduleRef,
|
|
10
|
+
parent: null,
|
|
11
|
+
});
|
|
12
|
+
this.links.set(moduleRef, this.root);
|
|
13
|
+
this.traverseAndMapToTree(this.root);
|
|
14
|
+
}
|
|
15
|
+
walk(callback) {
|
|
16
|
+
function walkNode(node, depth = 1) {
|
|
17
|
+
callback(node.value, depth);
|
|
18
|
+
node.children.forEach(child => walkNode(child, depth + 1));
|
|
19
|
+
}
|
|
20
|
+
walkNode(this.root);
|
|
21
|
+
}
|
|
22
|
+
traverseAndMapToTree(node, depth = 1) {
|
|
23
|
+
if (!node.value.imports) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
node.value.imports.forEach(child => {
|
|
27
|
+
if (!child) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
if (this.links.has(child)) {
|
|
31
|
+
const existingSubtree = this.links.get(child);
|
|
32
|
+
if (node.hasCycleWith(child)) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const existingDepth = existingSubtree.getDepth();
|
|
36
|
+
if (existingDepth < depth) {
|
|
37
|
+
existingSubtree.relink(node);
|
|
38
|
+
}
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const childNode = new tree_node_1.TreeNode({
|
|
42
|
+
value: child,
|
|
43
|
+
parent: node,
|
|
44
|
+
});
|
|
45
|
+
node.addChild(childNode);
|
|
46
|
+
this.links.set(child, childNode);
|
|
47
|
+
this.traverseAndMapToTree(childNode, depth + 1);
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
exports.TopologyTree = TopologyTree;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare class TreeNode<T> {
|
|
2
|
+
readonly value: T;
|
|
3
|
+
readonly children: Set<TreeNode<T>>;
|
|
4
|
+
private parent;
|
|
5
|
+
constructor({ value, parent }: {
|
|
6
|
+
value: T;
|
|
7
|
+
parent: TreeNode<T> | null;
|
|
8
|
+
});
|
|
9
|
+
addChild(child: TreeNode<T>): void;
|
|
10
|
+
removeChild(child: TreeNode<T>): void;
|
|
11
|
+
relink(parent: TreeNode<T>): void;
|
|
12
|
+
getDepth(): number;
|
|
13
|
+
hasCycleWith(target: T): boolean;
|
|
14
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TreeNode = void 0;
|
|
4
|
+
class TreeNode {
|
|
5
|
+
constructor({ value, parent }) {
|
|
6
|
+
this.children = new Set();
|
|
7
|
+
this.value = value;
|
|
8
|
+
this.parent = parent;
|
|
9
|
+
}
|
|
10
|
+
addChild(child) {
|
|
11
|
+
this.children.add(child);
|
|
12
|
+
}
|
|
13
|
+
removeChild(child) {
|
|
14
|
+
this.children.delete(child);
|
|
15
|
+
}
|
|
16
|
+
relink(parent) {
|
|
17
|
+
this.parent?.removeChild(this);
|
|
18
|
+
this.parent = parent;
|
|
19
|
+
this.parent.addChild(this);
|
|
20
|
+
}
|
|
21
|
+
getDepth() {
|
|
22
|
+
const visited = new Set();
|
|
23
|
+
let depth = 0;
|
|
24
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
25
|
+
let current = this;
|
|
26
|
+
while (current) {
|
|
27
|
+
depth++;
|
|
28
|
+
current = current.parent;
|
|
29
|
+
// Stop on cycle
|
|
30
|
+
if (visited.has(current)) {
|
|
31
|
+
return -1;
|
|
32
|
+
}
|
|
33
|
+
visited.add(current);
|
|
34
|
+
}
|
|
35
|
+
return depth;
|
|
36
|
+
}
|
|
37
|
+
hasCycleWith(target) {
|
|
38
|
+
const visited = new Set();
|
|
39
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
40
|
+
let current = this;
|
|
41
|
+
while (current) {
|
|
42
|
+
if (current.value === target) {
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
current = current.parent;
|
|
46
|
+
if (visited.has(current)) {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
visited.add(current);
|
|
50
|
+
}
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.TreeNode = TreeNode;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DeterministicUuidRegistry = void 0;
|
|
4
|
+
class DeterministicUuidRegistry {
|
|
5
|
+
static get(str, inc = 0) {
|
|
6
|
+
const id = inc ? this.hashCode(`${str}_${inc}`) : this.hashCode(str);
|
|
7
|
+
if (this.registry.has(id)) {
|
|
8
|
+
return this.get(str, inc + 1);
|
|
9
|
+
}
|
|
10
|
+
this.registry.set(id, true);
|
|
11
|
+
return id;
|
|
12
|
+
}
|
|
13
|
+
static clear() {
|
|
14
|
+
this.registry.clear();
|
|
15
|
+
}
|
|
16
|
+
static hashCode(s) {
|
|
17
|
+
let h = 0;
|
|
18
|
+
for (let i = 0; i < s.length; i++)
|
|
19
|
+
h = (Math.imul(31, h) + s.charCodeAt(i)) | 0;
|
|
20
|
+
return h.toString();
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.DeterministicUuidRegistry = DeterministicUuidRegistry;
|
|
24
|
+
DeterministicUuidRegistry.registry = new Map();
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { NestContainer } from '../injector/container';
|
|
2
|
+
import { InstanceWrapper } from '../injector/instance-wrapper';
|
|
3
|
+
import { Module } from '../injector/module';
|
|
4
|
+
import { EnhancerMetadataCacheEntry } from './interfaces/enhancer-metadata-cache-entry.interface';
|
|
5
|
+
import { Entrypoint } from './interfaces/entrypoint.interface';
|
|
6
|
+
import { OrphanedEnhancerDefinition } from './interfaces/extras.interface';
|
|
7
|
+
import { Node } from './interfaces/node.interface';
|
|
8
|
+
export declare class GraphInspector {
|
|
9
|
+
private readonly container;
|
|
10
|
+
private readonly graph;
|
|
11
|
+
private readonly enhancersMetadataCache;
|
|
12
|
+
constructor(container: NestContainer);
|
|
13
|
+
inspectModules(modules?: Map<string, Module>): void;
|
|
14
|
+
registerPartial(error: unknown): void;
|
|
15
|
+
inspectInstanceWrapper<T = any>(source: InstanceWrapper<T>, moduleRef: Module): void;
|
|
16
|
+
insertEnhancerMetadataCache(entry: EnhancerMetadataCacheEntry): void;
|
|
17
|
+
insertOrphanedEnhancer(entry: OrphanedEnhancerDefinition): void;
|
|
18
|
+
insertAttachedEnhancer(wrapper: InstanceWrapper): void;
|
|
19
|
+
insertEntrypointDefinition<T>(definition: Entrypoint<T>, parentId: string): void;
|
|
20
|
+
insertClassNode(moduleRef: Module, wrapper: InstanceWrapper, type: Exclude<Node['metadata']['type'], 'module'>): void;
|
|
21
|
+
private insertModuleNode;
|
|
22
|
+
private insertModuleToModuleEdges;
|
|
23
|
+
private insertEnhancerEdge;
|
|
24
|
+
private insertClassToClassEdge;
|
|
25
|
+
private insertClassNodes;
|
|
26
|
+
}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GraphInspector = void 0;
|
|
4
|
+
const unknown_dependencies_exception_1 = require("../errors/exceptions/unknown-dependencies.exception");
|
|
5
|
+
const deterministic_uuid_registry_1 = require("./deterministic-uuid-registry");
|
|
6
|
+
const partial_graph_host_1 = require("./partial-graph.host");
|
|
7
|
+
class GraphInspector {
|
|
8
|
+
constructor(container) {
|
|
9
|
+
this.container = container;
|
|
10
|
+
this.enhancersMetadataCache = new Array();
|
|
11
|
+
this.graph = container.serializedGraph;
|
|
12
|
+
}
|
|
13
|
+
inspectModules(modules = this.container.getModules()) {
|
|
14
|
+
for (const moduleRef of modules.values()) {
|
|
15
|
+
this.insertModuleNode(moduleRef);
|
|
16
|
+
this.insertClassNodes(moduleRef);
|
|
17
|
+
this.insertModuleToModuleEdges(moduleRef);
|
|
18
|
+
}
|
|
19
|
+
this.enhancersMetadataCache.forEach(entry => this.insertEnhancerEdge(entry));
|
|
20
|
+
deterministic_uuid_registry_1.DeterministicUuidRegistry.clear();
|
|
21
|
+
}
|
|
22
|
+
registerPartial(error) {
|
|
23
|
+
this.graph.status = 'partial';
|
|
24
|
+
if (error instanceof unknown_dependencies_exception_1.UnknownDependenciesException) {
|
|
25
|
+
this.graph.metadata = {
|
|
26
|
+
cause: {
|
|
27
|
+
type: 'unknown-dependencies',
|
|
28
|
+
context: error.context,
|
|
29
|
+
moduleId: error.moduleRef?.id,
|
|
30
|
+
nodeId: error.metadata?.id,
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
this.graph.metadata = {
|
|
36
|
+
cause: {
|
|
37
|
+
type: 'unknown',
|
|
38
|
+
error,
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
partial_graph_host_1.PartialGraphHost.register(this.graph);
|
|
43
|
+
}
|
|
44
|
+
inspectInstanceWrapper(source, moduleRef) {
|
|
45
|
+
const ctorMetadata = source.getCtorMetadata();
|
|
46
|
+
ctorMetadata?.forEach((target, index) => this.insertClassToClassEdge(source, target, moduleRef, index, 'constructor'));
|
|
47
|
+
const propertiesMetadata = source.getPropertiesMetadata();
|
|
48
|
+
propertiesMetadata?.forEach(({ key, wrapper: target }) => this.insertClassToClassEdge(source, target, moduleRef, key, 'property'));
|
|
49
|
+
}
|
|
50
|
+
insertEnhancerMetadataCache(entry) {
|
|
51
|
+
this.enhancersMetadataCache.push(entry);
|
|
52
|
+
}
|
|
53
|
+
insertOrphanedEnhancer(entry) {
|
|
54
|
+
this.graph.insertOrphanedEnhancer({
|
|
55
|
+
...entry,
|
|
56
|
+
ref: entry.ref?.constructor?.name ?? 'Object',
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
insertAttachedEnhancer(wrapper) {
|
|
60
|
+
const existingNode = this.graph.getNodeById(wrapper.id);
|
|
61
|
+
existingNode.metadata.global = true;
|
|
62
|
+
this.graph.insertAttachedEnhancer(existingNode.id);
|
|
63
|
+
}
|
|
64
|
+
insertEntrypointDefinition(definition, parentId) {
|
|
65
|
+
definition = {
|
|
66
|
+
...definition,
|
|
67
|
+
id: `${definition.classNodeId}_${definition.methodName}`,
|
|
68
|
+
};
|
|
69
|
+
this.graph.insertEntrypoint(definition, parentId);
|
|
70
|
+
}
|
|
71
|
+
insertClassNode(moduleRef, wrapper, type) {
|
|
72
|
+
this.graph.insertNode({
|
|
73
|
+
id: wrapper.id,
|
|
74
|
+
label: wrapper.name,
|
|
75
|
+
parent: moduleRef.id,
|
|
76
|
+
metadata: {
|
|
77
|
+
type,
|
|
78
|
+
internal: wrapper.metatype === moduleRef.metatype,
|
|
79
|
+
sourceModuleName: moduleRef.name,
|
|
80
|
+
durable: wrapper.isDependencyTreeDurable(),
|
|
81
|
+
static: wrapper.isDependencyTreeStatic(),
|
|
82
|
+
scope: wrapper.scope,
|
|
83
|
+
transient: wrapper.isTransient,
|
|
84
|
+
exported: moduleRef.exports.has(wrapper.token),
|
|
85
|
+
token: wrapper.token,
|
|
86
|
+
subtype: wrapper.subtype,
|
|
87
|
+
initTime: wrapper.initTime,
|
|
88
|
+
},
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
insertModuleNode(moduleRef) {
|
|
92
|
+
const dynamicMetadata = this.container.getDynamicMetadataByToken(moduleRef.token);
|
|
93
|
+
const node = {
|
|
94
|
+
id: moduleRef.id,
|
|
95
|
+
label: moduleRef.name,
|
|
96
|
+
metadata: {
|
|
97
|
+
type: 'module',
|
|
98
|
+
global: moduleRef.isGlobal,
|
|
99
|
+
dynamic: !!dynamicMetadata,
|
|
100
|
+
internal: moduleRef.name === 'InternalCoreModule',
|
|
101
|
+
},
|
|
102
|
+
};
|
|
103
|
+
this.graph.insertNode(node);
|
|
104
|
+
}
|
|
105
|
+
insertModuleToModuleEdges(moduleRef) {
|
|
106
|
+
for (const targetModuleRef of moduleRef.imports) {
|
|
107
|
+
this.graph.insertEdge({
|
|
108
|
+
source: moduleRef.id,
|
|
109
|
+
target: targetModuleRef.id,
|
|
110
|
+
metadata: {
|
|
111
|
+
type: 'module-to-module',
|
|
112
|
+
sourceModuleName: moduleRef.name,
|
|
113
|
+
targetModuleName: targetModuleRef.name,
|
|
114
|
+
},
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
insertEnhancerEdge(entry) {
|
|
119
|
+
const moduleRef = this.container.getModuleByKey(entry.moduleToken);
|
|
120
|
+
const sourceInstanceWrapper = moduleRef.controllers.get(entry.classRef) ??
|
|
121
|
+
moduleRef.providers.get(entry.classRef);
|
|
122
|
+
const existingSourceNode = this.graph.getNodeById(sourceInstanceWrapper.id);
|
|
123
|
+
const enhancers = existingSourceNode.metadata.enhancers ?? [];
|
|
124
|
+
if (entry.enhancerInstanceWrapper) {
|
|
125
|
+
this.insertClassToClassEdge(sourceInstanceWrapper, entry.enhancerInstanceWrapper, moduleRef, undefined, 'decorator');
|
|
126
|
+
enhancers.push({
|
|
127
|
+
id: entry.enhancerInstanceWrapper.id,
|
|
128
|
+
methodKey: entry.methodKey,
|
|
129
|
+
subtype: entry.subtype,
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
const name = entry.enhancerRef.constructor?.name ??
|
|
134
|
+
entry.enhancerRef.name;
|
|
135
|
+
enhancers.push({
|
|
136
|
+
name,
|
|
137
|
+
methodKey: entry.methodKey,
|
|
138
|
+
subtype: entry.subtype,
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
existingSourceNode.metadata.enhancers = enhancers;
|
|
142
|
+
}
|
|
143
|
+
insertClassToClassEdge(source, target, moduleRef, keyOrIndex, injectionType) {
|
|
144
|
+
this.graph.insertEdge({
|
|
145
|
+
source: source.id,
|
|
146
|
+
target: target.id,
|
|
147
|
+
metadata: {
|
|
148
|
+
type: 'class-to-class',
|
|
149
|
+
sourceModuleName: moduleRef.name,
|
|
150
|
+
sourceClassName: source.name,
|
|
151
|
+
targetClassName: target.name,
|
|
152
|
+
sourceClassToken: source.token,
|
|
153
|
+
targetClassToken: target.token,
|
|
154
|
+
targetModuleName: target.host?.name,
|
|
155
|
+
keyOrIndex,
|
|
156
|
+
injectionType,
|
|
157
|
+
},
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
insertClassNodes(moduleRef) {
|
|
161
|
+
moduleRef.providers.forEach(value => this.insertClassNode(moduleRef, value, 'provider'));
|
|
162
|
+
moduleRef.injectables.forEach(value => this.insertClassNode(moduleRef, value, 'injectable'));
|
|
163
|
+
moduleRef.controllers.forEach(value => this.insertClassNode(moduleRef, value, 'controller'));
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
exports.GraphInspector = GraphInspector;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./graph-inspector"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./initialize-on-preview.allowlist"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./partial-graph.host"), exports);
|
|
7
|
+
tslib_1.__exportStar(require("./serialized-graph"), exports);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InitializeOnPreviewAllowlist = void 0;
|
|
4
|
+
class InitializeOnPreviewAllowlist {
|
|
5
|
+
static add(type) {
|
|
6
|
+
this.allowlist.set(type, true);
|
|
7
|
+
}
|
|
8
|
+
static has(type) {
|
|
9
|
+
return this.allowlist.has(type);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.InitializeOnPreviewAllowlist = InitializeOnPreviewAllowlist;
|
|
13
|
+
InitializeOnPreviewAllowlist.allowlist = new WeakMap();
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { InjectionToken } from '@nestjs/common';
|
|
2
|
+
type CommonEdgeMetadata = {
|
|
3
|
+
sourceModuleName: string;
|
|
4
|
+
targetModuleName: string;
|
|
5
|
+
};
|
|
6
|
+
type ModuleToModuleEdgeMetadata = {
|
|
7
|
+
type: 'module-to-module';
|
|
8
|
+
} & CommonEdgeMetadata;
|
|
9
|
+
type ClassToClassEdgeMetadata = {
|
|
10
|
+
type: 'class-to-class';
|
|
11
|
+
sourceClassName: string;
|
|
12
|
+
targetClassName: string;
|
|
13
|
+
sourceClassToken: InjectionToken;
|
|
14
|
+
targetClassToken: InjectionToken;
|
|
15
|
+
injectionType: 'constructor' | 'property' | 'decorator';
|
|
16
|
+
keyOrIndex?: string | number | symbol;
|
|
17
|
+
/**
|
|
18
|
+
* If true, indicates that this edge represents an internal providers connection
|
|
19
|
+
*/
|
|
20
|
+
internal?: boolean;
|
|
21
|
+
} & CommonEdgeMetadata;
|
|
22
|
+
export interface Edge {
|
|
23
|
+
id: string;
|
|
24
|
+
source: string;
|
|
25
|
+
target: string;
|
|
26
|
+
metadata: ModuleToModuleEdgeMetadata | ClassToClassEdgeMetadata;
|
|
27
|
+
}
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Type } from '@nestjs/common';
|
|
2
|
+
import { EnhancerSubtype } from '@nestjs/common/constants';
|
|
3
|
+
import { InstanceWrapper } from '../../injector/instance-wrapper';
|
|
4
|
+
export interface EnhancerMetadataCacheEntry {
|
|
5
|
+
targetNodeId?: string;
|
|
6
|
+
moduleToken: string;
|
|
7
|
+
classRef: Type;
|
|
8
|
+
methodKey: string | undefined;
|
|
9
|
+
enhancerRef?: unknown;
|
|
10
|
+
enhancerInstanceWrapper?: InstanceWrapper;
|
|
11
|
+
subtype: EnhancerSubtype;
|
|
12
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { RequestMethod } from '@nestjs/common';
|
|
2
|
+
import { VersionValue } from '@nestjs/common/interfaces';
|
|
3
|
+
export type HttpEntrypointMetadata = {
|
|
4
|
+
path: string;
|
|
5
|
+
requestMethod: keyof typeof RequestMethod;
|
|
6
|
+
methodVersion?: VersionValue;
|
|
7
|
+
controllerVersion?: VersionValue;
|
|
8
|
+
};
|
|
9
|
+
export type MiddlewareEntrypointMetadata = {
|
|
10
|
+
path: string;
|
|
11
|
+
requestMethod: keyof typeof RequestMethod;
|
|
12
|
+
version?: VersionValue;
|
|
13
|
+
};
|
|
14
|
+
export type Entrypoint<T> = {
|
|
15
|
+
id?: string;
|
|
16
|
+
type: string;
|
|
17
|
+
methodName: string;
|
|
18
|
+
className: string;
|
|
19
|
+
classNodeId: string;
|
|
20
|
+
metadata: {
|
|
21
|
+
key: string;
|
|
22
|
+
} & T;
|
|
23
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { EnhancerSubtype } from '@nestjs/common/constants';
|
|
2
|
+
/**
|
|
3
|
+
* Enhancers attached through APP_PIPE, APP_GUARD, APP_INTERCEPTOR, and APP_FILTER tokens.
|
|
4
|
+
*/
|
|
5
|
+
export interface AttachedEnhancerDefinition {
|
|
6
|
+
nodeId: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Enhancers registered through "app.useGlobalPipes()", "app.useGlobalGuards()", "app.useGlobalInterceptors()", and "app.useGlobalFilters()" methods.
|
|
10
|
+
*/
|
|
11
|
+
export interface OrphanedEnhancerDefinition {
|
|
12
|
+
subtype: EnhancerSubtype;
|
|
13
|
+
ref: unknown;
|
|
14
|
+
}
|
|
15
|
+
export interface Extras {
|
|
16
|
+
orphanedEnhancers: Array<OrphanedEnhancerDefinition>;
|
|
17
|
+
attachedEnhancers: Array<AttachedEnhancerDefinition>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { InjectionToken, Scope } from '@nestjs/common';
|
|
2
|
+
import { EnhancerSubtype } from '@nestjs/common/constants';
|
|
3
|
+
export type ModuleNode = {
|
|
4
|
+
metadata: {
|
|
5
|
+
type: 'module';
|
|
6
|
+
global: boolean;
|
|
7
|
+
dynamic: boolean;
|
|
8
|
+
internal: boolean;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
export type ClassNode = {
|
|
12
|
+
parent: string;
|
|
13
|
+
metadata: {
|
|
14
|
+
type: 'provider' | 'controller' | 'middleware' | 'injectable';
|
|
15
|
+
subtype?: EnhancerSubtype;
|
|
16
|
+
sourceModuleName: string;
|
|
17
|
+
durable: boolean;
|
|
18
|
+
static: boolean;
|
|
19
|
+
transient: boolean;
|
|
20
|
+
exported: boolean;
|
|
21
|
+
scope: Scope;
|
|
22
|
+
token: InjectionToken;
|
|
23
|
+
initTime: number;
|
|
24
|
+
/**
|
|
25
|
+
* Enhancers metadata collection
|
|
26
|
+
*/
|
|
27
|
+
enhancers?: Array<{
|
|
28
|
+
id: string;
|
|
29
|
+
subtype: EnhancerSubtype;
|
|
30
|
+
} | {
|
|
31
|
+
name: string;
|
|
32
|
+
methodKey?: string;
|
|
33
|
+
subtype: EnhancerSubtype;
|
|
34
|
+
}>;
|
|
35
|
+
/**
|
|
36
|
+
* If true, node is a globally registered enhancer
|
|
37
|
+
*/
|
|
38
|
+
global?: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* If true, indicates that this node represents an internal provider
|
|
41
|
+
*/
|
|
42
|
+
internal?: boolean;
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
export type Node = {
|
|
46
|
+
id: string;
|
|
47
|
+
label: string;
|
|
48
|
+
} & (ClassNode | ModuleNode);
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { SerializedGraphStatus } from '../serialized-graph';
|
|
2
|
+
import { Edge } from './edge.interface';
|
|
3
|
+
import { Entrypoint } from './entrypoint.interface';
|
|
4
|
+
import { Extras } from './extras.interface';
|
|
5
|
+
import { Node } from './node.interface';
|
|
6
|
+
import { SerializedGraphMetadata } from './serialized-graph-metadata.interface';
|
|
7
|
+
export interface SerializedGraphJson {
|
|
8
|
+
nodes: Record<string, Node>;
|
|
9
|
+
edges: Record<string, Edge>;
|
|
10
|
+
entrypoints: Record<string, Entrypoint<unknown>[]>;
|
|
11
|
+
extras: Extras;
|
|
12
|
+
status?: SerializedGraphStatus;
|
|
13
|
+
metadata?: SerializedGraphMetadata;
|
|
14
|
+
}
|