@warlock.js/core 3.0.40 → 4.0.2
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/cjs/code-quality/config.js +1 -7
- package/cjs/code-quality/config.js.map +1 -1
- package/cjs/code-quality/issue-tracker.js +1 -119
- package/cjs/code-quality/issue-tracker.js.map +1 -1
- package/cjs/dev2-server/config-handlers.d.ts +8 -0
- package/cjs/dev2-server/config-handlers.d.ts.map +1 -0
- package/cjs/dev2-server/config-handlers.js +56 -0
- package/cjs/dev2-server/config-handlers.js.map +1 -0
- package/cjs/dev2-server/config-loader.d.ts +61 -0
- package/cjs/dev2-server/config-loader.d.ts.map +1 -0
- package/cjs/dev2-server/config-loader.js +122 -0
- package/cjs/dev2-server/config-loader.js.map +1 -0
- package/cjs/dev2-server/connectors/base-connector.d.ts +49 -0
- package/cjs/dev2-server/connectors/base-connector.d.ts.map +1 -0
- package/cjs/dev2-server/connectors/base-connector.js +48 -0
- package/cjs/dev2-server/connectors/base-connector.js.map +1 -0
- package/cjs/dev2-server/connectors/cache-connector.d.ts +23 -0
- package/cjs/dev2-server/connectors/cache-connector.d.ts.map +1 -0
- package/cjs/dev2-server/connectors/cache-connector.js +35 -0
- package/cjs/dev2-server/connectors/cache-connector.js.map +1 -0
- package/cjs/dev2-server/connectors/database-connector.d.ts +23 -0
- package/cjs/dev2-server/connectors/database-connector.d.ts.map +1 -0
- package/cjs/dev2-server/connectors/database-connector.js +46 -0
- package/cjs/dev2-server/connectors/database-connector.js.map +1 -0
- package/cjs/dev2-server/connectors/http-connector.d.ts +29 -0
- package/cjs/dev2-server/connectors/http-connector.d.ts.map +1 -0
- package/cjs/dev2-server/connectors/http-connector.js +71 -0
- package/cjs/dev2-server/connectors/http-connector.js.map +1 -0
- package/cjs/dev2-server/connectors/index.d.ts +10 -0
- package/cjs/dev2-server/connectors/index.d.ts.map +1 -0
- package/cjs/dev2-server/connectors/types.d.ts +49 -0
- package/cjs/dev2-server/connectors/types.d.ts.map +1 -0
- package/cjs/dev2-server/connectors/types.js +9 -0
- package/cjs/dev2-server/connectors/types.js.map +1 -0
- package/cjs/dev2-server/dependency-graph.d.ts +93 -0
- package/cjs/dev2-server/dependency-graph.d.ts.map +1 -0
- package/cjs/dev2-server/dependency-graph.js +266 -0
- package/cjs/dev2-server/dependency-graph.js.map +1 -0
- package/cjs/dev2-server/dev-logger.d.ts +14 -0
- package/cjs/dev2-server/dev-logger.d.ts.map +1 -0
- package/cjs/dev2-server/dev-logger.js +105 -0
- package/cjs/dev2-server/dev-logger.js.map +1 -0
- package/cjs/dev2-server/development-server.d.ts +97 -0
- package/cjs/dev2-server/development-server.d.ts.map +1 -0
- package/cjs/dev2-server/development-server.js +224 -0
- package/cjs/dev2-server/development-server.js.map +1 -0
- package/cjs/dev2-server/events.d.ts +5 -0
- package/cjs/dev2-server/events.d.ts.map +1 -0
- package/cjs/dev2-server/events.js +4 -0
- package/cjs/dev2-server/events.js.map +1 -0
- package/cjs/dev2-server/file-event-handler.d.ts +58 -0
- package/cjs/dev2-server/file-event-handler.d.ts.map +1 -0
- package/cjs/dev2-server/file-event-handler.js +140 -0
- package/cjs/dev2-server/file-event-handler.js.map +1 -0
- package/cjs/dev2-server/file-manager.d.ts +115 -0
- package/cjs/dev2-server/file-manager.d.ts.map +1 -0
- package/cjs/dev2-server/file-manager.js +319 -0
- package/cjs/dev2-server/file-manager.js.map +1 -0
- package/cjs/dev2-server/file-operations.d.ts +54 -0
- package/cjs/dev2-server/file-operations.d.ts.map +1 -0
- package/cjs/dev2-server/file-operations.js +191 -0
- package/cjs/dev2-server/file-operations.js.map +1 -0
- package/cjs/dev2-server/files-orchestrator.d.ts +88 -0
- package/cjs/dev2-server/files-orchestrator.d.ts.map +1 -0
- package/cjs/dev2-server/files-orchestrator.js +273 -0
- package/cjs/dev2-server/files-orchestrator.js.map +1 -0
- package/cjs/dev2-server/files-watcher.d.ts +53 -0
- package/cjs/dev2-server/files-watcher.d.ts.map +1 -0
- package/cjs/dev2-server/files-watcher.js +88 -0
- package/cjs/dev2-server/files-watcher.js.map +1 -0
- package/cjs/dev2-server/flags.d.ts +10 -0
- package/cjs/dev2-server/flags.d.ts.map +1 -0
- package/cjs/dev2-server/flags.js +9 -0
- package/cjs/dev2-server/flags.js.map +1 -0
- package/cjs/dev2-server/health-checker.d.ts +3 -0
- package/cjs/dev2-server/health-checker.d.ts.map +1 -0
- package/cjs/dev2-server/health-checker.js +2 -0
- package/cjs/dev2-server/health-checker.js.map +1 -0
- package/cjs/dev2-server/import-transformer.d.ts +16 -0
- package/cjs/dev2-server/import-transformer.d.ts.map +1 -0
- package/cjs/dev2-server/import-transformer.js +248 -0
- package/cjs/dev2-server/import-transformer.js.map +1 -0
- package/cjs/dev2-server/index.d.ts +1 -0
- package/cjs/dev2-server/index.d.ts.map +1 -0
- package/cjs/dev2-server/layer-executor.d.ts +64 -0
- package/cjs/dev2-server/layer-executor.d.ts.map +1 -0
- package/cjs/dev2-server/layer-executor.js +292 -0
- package/cjs/dev2-server/layer-executor.js.map +1 -0
- package/cjs/dev2-server/manifest-manager.d.ts +80 -0
- package/cjs/dev2-server/manifest-manager.d.ts.map +1 -0
- package/cjs/dev2-server/manifest-manager.js +107 -0
- package/cjs/dev2-server/manifest-manager.js.map +1 -0
- package/cjs/dev2-server/module-loader.d.ts +100 -0
- package/cjs/dev2-server/module-loader.d.ts.map +1 -0
- package/cjs/dev2-server/module-loader.js +228 -0
- package/cjs/dev2-server/module-loader.js.map +1 -0
- package/cjs/dev2-server/package-json-manager.d.ts +16 -0
- package/cjs/dev2-server/package-json-manager.d.ts.map +1 -0
- package/cjs/dev2-server/package-json-manager.js +20 -0
- package/cjs/dev2-server/package-json-manager.js.map +1 -0
- package/cjs/dev2-server/parse-imports.d.ts +8 -0
- package/cjs/dev2-server/parse-imports.d.ts.map +1 -0
- package/cjs/dev2-server/parse-imports.js +322 -0
- package/cjs/dev2-server/parse-imports.js.map +1 -0
- package/cjs/dev2-server/path.d.ts +39 -0
- package/cjs/dev2-server/path.d.ts.map +1 -0
- package/cjs/dev2-server/path.js +56 -0
- package/cjs/dev2-server/path.js.map +1 -0
- package/cjs/dev2-server/runtime-import-helper.d.ts +9 -0
- package/cjs/dev2-server/runtime-import-helper.d.ts.map +1 -0
- package/cjs/dev2-server/runtime-import-helper.js +157 -0
- package/cjs/dev2-server/runtime-import-helper.js.map +1 -0
- package/cjs/dev2-server/special-files-collector.d.ts +114 -0
- package/cjs/dev2-server/special-files-collector.d.ts.map +1 -0
- package/cjs/dev2-server/special-files-collector.js +212 -0
- package/cjs/dev2-server/special-files-collector.js.map +1 -0
- package/cjs/dev2-server/start-development-server.d.ts +7 -0
- package/cjs/dev2-server/start-development-server.d.ts.map +1 -0
- package/cjs/dev2-server/start-development-server.js +21 -0
- package/cjs/dev2-server/start-development-server.js.map +1 -0
- package/cjs/dev2-server/transpile-file.d.ts +10 -0
- package/cjs/dev2-server/transpile-file.d.ts.map +1 -0
- package/cjs/dev2-server/transpile-file.js +31 -0
- package/cjs/dev2-server/transpile-file.js.map +1 -0
- package/cjs/dev2-server/tsconfig-manager.d.ts +45 -0
- package/cjs/dev2-server/tsconfig-manager.d.ts.map +1 -0
- package/cjs/dev2-server/tsconfig-manager.js +105 -0
- package/cjs/dev2-server/tsconfig-manager.js.map +1 -0
- package/cjs/dev2-server/types.d.ts +16 -0
- package/cjs/dev2-server/types.d.ts.map +1 -0
- package/cjs/dev2-server/utils.d.ts +8 -0
- package/cjs/dev2-server/utils.d.ts.map +1 -0
- package/cjs/dev2-server/utils.js +28 -0
- package/cjs/dev2-server/utils.js.map +1 -0
- package/cjs/router/route-registry.d.ts +4 -0
- package/cjs/router/route-registry.d.ts.map +1 -1
- package/cjs/router/route-registry.js +26 -7
- package/cjs/router/route-registry.js.map +1 -1
- package/cjs/router/router.d.ts +13 -8
- package/cjs/router/router.d.ts.map +1 -1
- package/cjs/router/router.js +73 -35
- package/cjs/router/router.js.map +1 -1
- package/cjs/router/types.d.ts +10 -2
- package/cjs/router/types.d.ts.map +1 -1
- package/cjs/starters/start-cli-server.js +1 -1
- package/cjs/starters/start-cli-server.js.map +1 -1
- package/cjs/starters/start-http-server.d.ts.map +1 -1
- package/cjs/starters/start-http-server.js +4 -99
- package/cjs/starters/start-http-server.js.map +1 -1
- package/esm/code-quality/config.js +1 -7
- package/esm/code-quality/config.js.map +1 -1
- package/esm/code-quality/issue-tracker.js +1 -119
- package/esm/code-quality/issue-tracker.js.map +1 -1
- package/esm/dev2-server/config-handlers.d.ts +8 -0
- package/esm/dev2-server/config-handlers.d.ts.map +1 -0
- package/esm/dev2-server/config-handlers.js +56 -0
- package/esm/dev2-server/config-handlers.js.map +1 -0
- package/esm/dev2-server/config-loader.d.ts +61 -0
- package/esm/dev2-server/config-loader.d.ts.map +1 -0
- package/esm/dev2-server/config-loader.js +122 -0
- package/esm/dev2-server/config-loader.js.map +1 -0
- package/esm/dev2-server/connectors/base-connector.d.ts +49 -0
- package/esm/dev2-server/connectors/base-connector.d.ts.map +1 -0
- package/esm/dev2-server/connectors/base-connector.js +48 -0
- package/esm/dev2-server/connectors/base-connector.js.map +1 -0
- package/esm/dev2-server/connectors/cache-connector.d.ts +23 -0
- package/esm/dev2-server/connectors/cache-connector.d.ts.map +1 -0
- package/esm/dev2-server/connectors/cache-connector.js +35 -0
- package/esm/dev2-server/connectors/cache-connector.js.map +1 -0
- package/esm/dev2-server/connectors/database-connector.d.ts +23 -0
- package/esm/dev2-server/connectors/database-connector.d.ts.map +1 -0
- package/esm/dev2-server/connectors/database-connector.js +46 -0
- package/esm/dev2-server/connectors/database-connector.js.map +1 -0
- package/esm/dev2-server/connectors/http-connector.d.ts +29 -0
- package/esm/dev2-server/connectors/http-connector.d.ts.map +1 -0
- package/esm/dev2-server/connectors/http-connector.js +71 -0
- package/esm/dev2-server/connectors/http-connector.js.map +1 -0
- package/esm/dev2-server/connectors/index.d.ts +10 -0
- package/esm/dev2-server/connectors/index.d.ts.map +1 -0
- package/esm/dev2-server/connectors/types.d.ts +49 -0
- package/esm/dev2-server/connectors/types.d.ts.map +1 -0
- package/esm/dev2-server/connectors/types.js +9 -0
- package/esm/dev2-server/connectors/types.js.map +1 -0
- package/esm/dev2-server/dependency-graph.d.ts +93 -0
- package/esm/dev2-server/dependency-graph.d.ts.map +1 -0
- package/esm/dev2-server/dependency-graph.js +266 -0
- package/esm/dev2-server/dependency-graph.js.map +1 -0
- package/esm/dev2-server/dev-logger.d.ts +14 -0
- package/esm/dev2-server/dev-logger.d.ts.map +1 -0
- package/esm/dev2-server/dev-logger.js +105 -0
- package/esm/dev2-server/dev-logger.js.map +1 -0
- package/esm/dev2-server/development-server.d.ts +97 -0
- package/esm/dev2-server/development-server.d.ts.map +1 -0
- package/esm/dev2-server/development-server.js +224 -0
- package/esm/dev2-server/development-server.js.map +1 -0
- package/esm/dev2-server/events.d.ts +5 -0
- package/esm/dev2-server/events.d.ts.map +1 -0
- package/esm/dev2-server/events.js +4 -0
- package/esm/dev2-server/events.js.map +1 -0
- package/esm/dev2-server/file-event-handler.d.ts +58 -0
- package/esm/dev2-server/file-event-handler.d.ts.map +1 -0
- package/esm/dev2-server/file-event-handler.js +140 -0
- package/esm/dev2-server/file-event-handler.js.map +1 -0
- package/esm/dev2-server/file-manager.d.ts +115 -0
- package/esm/dev2-server/file-manager.d.ts.map +1 -0
- package/esm/dev2-server/file-manager.js +319 -0
- package/esm/dev2-server/file-manager.js.map +1 -0
- package/esm/dev2-server/file-operations.d.ts +54 -0
- package/esm/dev2-server/file-operations.d.ts.map +1 -0
- package/esm/dev2-server/file-operations.js +191 -0
- package/esm/dev2-server/file-operations.js.map +1 -0
- package/esm/dev2-server/files-orchestrator.d.ts +88 -0
- package/esm/dev2-server/files-orchestrator.d.ts.map +1 -0
- package/esm/dev2-server/files-orchestrator.js +273 -0
- package/esm/dev2-server/files-orchestrator.js.map +1 -0
- package/esm/dev2-server/files-watcher.d.ts +53 -0
- package/esm/dev2-server/files-watcher.d.ts.map +1 -0
- package/esm/dev2-server/files-watcher.js +88 -0
- package/esm/dev2-server/files-watcher.js.map +1 -0
- package/esm/dev2-server/flags.d.ts +10 -0
- package/esm/dev2-server/flags.d.ts.map +1 -0
- package/esm/dev2-server/flags.js +9 -0
- package/esm/dev2-server/flags.js.map +1 -0
- package/esm/dev2-server/health-checker.d.ts +3 -0
- package/esm/dev2-server/health-checker.d.ts.map +1 -0
- package/esm/dev2-server/health-checker.js +2 -0
- package/esm/dev2-server/health-checker.js.map +1 -0
- package/esm/dev2-server/import-transformer.d.ts +16 -0
- package/esm/dev2-server/import-transformer.d.ts.map +1 -0
- package/esm/dev2-server/import-transformer.js +248 -0
- package/esm/dev2-server/import-transformer.js.map +1 -0
- package/esm/dev2-server/index.d.ts +1 -0
- package/esm/dev2-server/index.d.ts.map +1 -0
- package/esm/dev2-server/layer-executor.d.ts +64 -0
- package/esm/dev2-server/layer-executor.d.ts.map +1 -0
- package/esm/dev2-server/layer-executor.js +292 -0
- package/esm/dev2-server/layer-executor.js.map +1 -0
- package/esm/dev2-server/manifest-manager.d.ts +80 -0
- package/esm/dev2-server/manifest-manager.d.ts.map +1 -0
- package/esm/dev2-server/manifest-manager.js +107 -0
- package/esm/dev2-server/manifest-manager.js.map +1 -0
- package/esm/dev2-server/module-loader.d.ts +100 -0
- package/esm/dev2-server/module-loader.d.ts.map +1 -0
- package/esm/dev2-server/module-loader.js +228 -0
- package/esm/dev2-server/module-loader.js.map +1 -0
- package/esm/dev2-server/package-json-manager.d.ts +16 -0
- package/esm/dev2-server/package-json-manager.d.ts.map +1 -0
- package/esm/dev2-server/package-json-manager.js +20 -0
- package/esm/dev2-server/package-json-manager.js.map +1 -0
- package/esm/dev2-server/parse-imports.d.ts +8 -0
- package/esm/dev2-server/parse-imports.d.ts.map +1 -0
- package/esm/dev2-server/parse-imports.js +322 -0
- package/esm/dev2-server/parse-imports.js.map +1 -0
- package/esm/dev2-server/path.d.ts +39 -0
- package/esm/dev2-server/path.d.ts.map +1 -0
- package/esm/dev2-server/path.js +56 -0
- package/esm/dev2-server/path.js.map +1 -0
- package/esm/dev2-server/runtime-import-helper.d.ts +9 -0
- package/esm/dev2-server/runtime-import-helper.d.ts.map +1 -0
- package/esm/dev2-server/runtime-import-helper.js +157 -0
- package/esm/dev2-server/runtime-import-helper.js.map +1 -0
- package/esm/dev2-server/special-files-collector.d.ts +114 -0
- package/esm/dev2-server/special-files-collector.d.ts.map +1 -0
- package/esm/dev2-server/special-files-collector.js +212 -0
- package/esm/dev2-server/special-files-collector.js.map +1 -0
- package/esm/dev2-server/start-development-server.d.ts +7 -0
- package/esm/dev2-server/start-development-server.d.ts.map +1 -0
- package/esm/dev2-server/start-development-server.js +21 -0
- package/esm/dev2-server/start-development-server.js.map +1 -0
- package/esm/dev2-server/transpile-file.d.ts +10 -0
- package/esm/dev2-server/transpile-file.d.ts.map +1 -0
- package/esm/dev2-server/transpile-file.js +31 -0
- package/esm/dev2-server/transpile-file.js.map +1 -0
- package/esm/dev2-server/tsconfig-manager.d.ts +45 -0
- package/esm/dev2-server/tsconfig-manager.d.ts.map +1 -0
- package/esm/dev2-server/tsconfig-manager.js +105 -0
- package/esm/dev2-server/tsconfig-manager.js.map +1 -0
- package/esm/dev2-server/types.d.ts +16 -0
- package/esm/dev2-server/types.d.ts.map +1 -0
- package/esm/dev2-server/utils.d.ts +8 -0
- package/esm/dev2-server/utils.d.ts.map +1 -0
- package/esm/dev2-server/utils.js +28 -0
- package/esm/dev2-server/utils.js.map +1 -0
- package/esm/router/route-registry.d.ts +4 -0
- package/esm/router/route-registry.d.ts.map +1 -1
- package/esm/router/route-registry.js +26 -7
- package/esm/router/route-registry.js.map +1 -1
- package/esm/router/router.d.ts +13 -8
- package/esm/router/router.d.ts.map +1 -1
- package/esm/router/router.js +73 -35
- package/esm/router/router.js.map +1 -1
- package/esm/router/types.d.ts +10 -2
- package/esm/router/types.d.ts.map +1 -1
- package/esm/starters/start-cli-server.js +1 -1
- package/esm/starters/start-cli-server.js.map +1 -1
- package/esm/starters/start-http-server.d.ts.map +1 -1
- package/esm/starters/start-http-server.js +4 -99
- package/esm/starters/start-http-server.js.map +1 -1
- package/package.json +3 -3
- package/cjs/code-quality/checkers/eslint-checker.js +0 -39
- package/cjs/code-quality/checkers/eslint-checker.js.map +0 -1
- package/cjs/code-quality/checkers/typescript-checker.js +0 -76
- package/cjs/code-quality/checkers/typescript-checker.js.map +0 -1
- package/cjs/code-quality/formatters/eslint-formatter.js +0 -56
- package/cjs/code-quality/formatters/eslint-formatter.js.map +0 -1
- package/cjs/code-quality/formatters/summary-formatter.js +0 -102
- package/cjs/code-quality/formatters/summary-formatter.js.map +0 -1
- package/cjs/code-quality/formatters/typescript-formatter.js +0 -64
- package/cjs/code-quality/formatters/typescript-formatter.js.map +0 -1
- package/cjs/code-quality/project-scanner.js +0 -78
- package/cjs/code-quality/project-scanner.js.map +0 -1
- package/cjs/code-quality/single-file-checker.js +0 -153
- package/cjs/code-quality/single-file-checker.js.map +0 -1
- package/cjs/dev-server/file-health.d.ts +0 -9
- package/cjs/dev-server/file-health.d.ts.map +0 -1
- package/cjs/dev-server/file-manager.d.ts +0 -39
- package/cjs/dev-server/file-manager.d.ts.map +0 -1
- package/cjs/dev-server/files-orchestrator.d.ts +0 -1
- package/cjs/dev-server/files-orchestrator.d.ts.map +0 -1
- package/cjs/dev-server/types.d.ts +0 -2
- package/cjs/dev-server/types.d.ts.map +0 -1
- package/cjs/starters/http-server-starter.js +0 -34
- package/cjs/starters/http-server-starter.js.map +0 -1
- package/cjs/utils/internal.js +0 -3
- package/cjs/utils/internal.js.map +0 -1
- package/esm/code-quality/checkers/eslint-checker.js +0 -39
- package/esm/code-quality/checkers/eslint-checker.js.map +0 -1
- package/esm/code-quality/checkers/typescript-checker.js +0 -76
- package/esm/code-quality/checkers/typescript-checker.js.map +0 -1
- package/esm/code-quality/formatters/eslint-formatter.js +0 -56
- package/esm/code-quality/formatters/eslint-formatter.js.map +0 -1
- package/esm/code-quality/formatters/summary-formatter.js +0 -102
- package/esm/code-quality/formatters/summary-formatter.js.map +0 -1
- package/esm/code-quality/formatters/typescript-formatter.js +0 -64
- package/esm/code-quality/formatters/typescript-formatter.js.map +0 -1
- package/esm/code-quality/project-scanner.js +0 -78
- package/esm/code-quality/project-scanner.js.map +0 -1
- package/esm/code-quality/single-file-checker.js +0 -153
- package/esm/code-quality/single-file-checker.js.map +0 -1
- package/esm/dev-server/file-health.d.ts +0 -9
- package/esm/dev-server/file-health.d.ts.map +0 -1
- package/esm/dev-server/file-manager.d.ts +0 -39
- package/esm/dev-server/file-manager.d.ts.map +0 -1
- package/esm/dev-server/files-orchestrator.d.ts +0 -1
- package/esm/dev-server/files-orchestrator.d.ts.map +0 -1
- package/esm/dev-server/types.d.ts +0 -2
- package/esm/dev-server/types.d.ts.map +0 -1
- package/esm/starters/http-server-starter.js +0 -34
- package/esm/starters/http-server-starter.js.map +0 -1
- package/esm/utils/internal.js +0 -3
- package/esm/utils/internal.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transpile-file.js","sources":["../../src/dev2-server/transpile-file.ts"],"sourcesContent":[null],"names":[],"mappings":"oKAMA;;;;;;AAMG;AACI,eAAe,SAAS,CAAC,WAAwB,EAAA;AACtD,IAAA,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,MAAM,SAAS,CAC1D,WAAW,CAAC,MAAM,EAClB;AACE,QAAA,MAAM,EAAE,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG,IAAI;AAChE,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,SAAS,EAAE,UAAU;AACrB,QAAA,MAAM,EAAE,QAAQ;QAChB,UAAU,EAAE,WAAW,CAAC,YAAY;QACpC,WAAW,EAAE,eAAe,CAAC,QAAQ;AACtC,KAAA,CACF,CAAC;;AAGF,IAAA,IAAI,SAAS,EAAE;AACb,QAAA,MAAM,iBAAiB,GAAG,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAC5E,QAAA,MAAM,aAAa,GAAG,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;;;AAI1D,QAAA,MAAM,iBAAiB,GAAG,UAAU,GAAG,CAA0B,uBAAA,EAAA,iBAAiB,EAAE,CAAC;;QAGrF,YAAY,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,MAAK;;AAElD,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,iBAAiB,CAAC;AAC1B,KAAA;AAED,IAAA,OAAO,UAAU,CAAC;AACpB"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export declare class TSConfigManager {
|
|
2
|
+
/**
|
|
3
|
+
* Aliases list (from tsconfig paths)
|
|
4
|
+
*/
|
|
5
|
+
aliases: Record<string, string[]>;
|
|
6
|
+
/**
|
|
7
|
+
* Base URL for resolving paths
|
|
8
|
+
*/
|
|
9
|
+
baseUrl: string;
|
|
10
|
+
/**
|
|
11
|
+
* TSConfig
|
|
12
|
+
*/
|
|
13
|
+
tsconfig: any;
|
|
14
|
+
init(): Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* Check if the given path is an alias
|
|
17
|
+
* This checks if it's a REAL path alias (not an external package alias)
|
|
18
|
+
*
|
|
19
|
+
* Real aliases map to local paths (e.g., app/* -> src/app/*, src/* -> src/*)
|
|
20
|
+
* External package aliases map to themselves with @ prefix (e.g., @warlock.js/core -> @warlock.js/core)
|
|
21
|
+
*/
|
|
22
|
+
isAlias(path: string): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Get the alias key that matches the given import path
|
|
25
|
+
*/
|
|
26
|
+
getMatchingAlias(path: string): string | null;
|
|
27
|
+
/**
|
|
28
|
+
* Resolve an alias import path to a relative path based on tsconfig paths
|
|
29
|
+
* Example: "app/users/services/get-users.service" -> "src/app/users/services/get-users.service"
|
|
30
|
+
*
|
|
31
|
+
* @param path - The import path with alias (e.g., "app/users/services/get-users.service")
|
|
32
|
+
* @returns The resolved relative path or null if alias not found
|
|
33
|
+
*/
|
|
34
|
+
resolveAliasPath(checkingPath: string): string | null;
|
|
35
|
+
/**
|
|
36
|
+
* Resolve an alias import path to an absolute path
|
|
37
|
+
* Example: "app/users/services/get-users.service" -> "/absolute/path/to/src/app/users/services/get-users.service"
|
|
38
|
+
*
|
|
39
|
+
* @param path - The import path with alias
|
|
40
|
+
* @returns The resolved absolute path or null if alias not found
|
|
41
|
+
*/
|
|
42
|
+
resolveAliasToAbsolute(path: string): string | null;
|
|
43
|
+
}
|
|
44
|
+
export declare const tsconfigManager: TSConfigManager;
|
|
45
|
+
//# sourceMappingURL=tsconfig-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tsconfig-manager.d.ts","sourceRoot":"","sources":["../../src/dev2-server/tsconfig-manager.ts"],"names":[],"mappings":"AAIA,qBAAa,eAAe;IAC1B;;OAEG;IACI,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAM;IAE9C;;OAEG;IACI,OAAO,EAAE,MAAM,CAAO;IAE7B;;OAEG;IACI,QAAQ,EAAE,GAAG,CAAM;IAEb,IAAI;IAUjB;;;;;;OAMG;IACI,OAAO,CAAC,IAAI,EAAE,MAAM;IA8B3B;;OAEG;IACI,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IASpD;;;;;;OAMG;IACI,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IA4B5D;;;;;;OAMG;IACI,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAO3D;AAED,eAAO,MAAM,eAAe,iBAAwB,CAAC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import path from'node:path';import ts from'typescript';import {Path}from'./path.js';class TSConfigManager {
|
|
2
|
+
/**
|
|
3
|
+
* Aliases list (from tsconfig paths)
|
|
4
|
+
*/
|
|
5
|
+
aliases = {};
|
|
6
|
+
/**
|
|
7
|
+
* Base URL for resolving paths
|
|
8
|
+
*/
|
|
9
|
+
baseUrl = ".";
|
|
10
|
+
/**
|
|
11
|
+
* TSConfig
|
|
12
|
+
*/
|
|
13
|
+
tsconfig = {};
|
|
14
|
+
async init() {
|
|
15
|
+
// use typescript to load the tsconfig.json file
|
|
16
|
+
const output = await ts.readConfigFile(Path.toAbsolute("tsconfig.json"), ts.sys.readFile);
|
|
17
|
+
this.tsconfig = output.config;
|
|
18
|
+
this.aliases = output.config?.compilerOptions?.paths || {};
|
|
19
|
+
this.baseUrl = output.config?.compilerOptions?.baseUrl || ".";
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Check if the given path is an alias
|
|
23
|
+
* This checks if it's a REAL path alias (not an external package alias)
|
|
24
|
+
*
|
|
25
|
+
* Real aliases map to local paths (e.g., app/* -> src/app/*, src/* -> src/*)
|
|
26
|
+
* External package aliases map to themselves with @ prefix (e.g., @warlock.js/core -> @warlock.js/core)
|
|
27
|
+
*/
|
|
28
|
+
isAlias(path) {
|
|
29
|
+
return Object.keys(this.aliases).some((alias) => {
|
|
30
|
+
// Remove /* from alias pattern for matching
|
|
31
|
+
const aliasPattern = alias.replace("/*", "");
|
|
32
|
+
if (!path.startsWith(aliasPattern)) {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
// Check if this is a real alias or just an external package mapping
|
|
36
|
+
const aliasTargets = this.aliases[alias];
|
|
37
|
+
if (!Array.isArray(aliasTargets) || aliasTargets.length === 0) {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
aliasTargets[0].replace("/*", "");
|
|
41
|
+
// If the alias starts with @, it's likely an external package alias
|
|
42
|
+
// Example: "@warlock.js/core" -> "@warlock.js/core" (external package)
|
|
43
|
+
if (aliasPattern.startsWith("@")) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
// Otherwise, it's a real path alias (including self-referencing ones like src/* -> src/*)
|
|
47
|
+
// Example: "app/*" -> "src/app/*" (real alias)
|
|
48
|
+
// Example: "src/*" -> "src/*" (self-referencing alias, still valid)
|
|
49
|
+
return true;
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Get the alias key that matches the given import path
|
|
54
|
+
*/
|
|
55
|
+
getMatchingAlias(path) {
|
|
56
|
+
const aliasKey = Object.keys(this.aliases).find((alias) => {
|
|
57
|
+
const aliasPattern = alias.replace("/*", "");
|
|
58
|
+
return path.startsWith(aliasPattern);
|
|
59
|
+
});
|
|
60
|
+
return aliasKey || null;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Resolve an alias import path to a relative path based on tsconfig paths
|
|
64
|
+
* Example: "app/users/services/get-users.service" -> "src/app/users/services/get-users.service"
|
|
65
|
+
*
|
|
66
|
+
* @param path - The import path with alias (e.g., "app/users/services/get-users.service")
|
|
67
|
+
* @returns The resolved relative path or null if alias not found
|
|
68
|
+
*/
|
|
69
|
+
resolveAliasPath(checkingPath) {
|
|
70
|
+
// Find matching alias from tsconfig paths
|
|
71
|
+
const aliasKey = this.getMatchingAlias(checkingPath);
|
|
72
|
+
if (!aliasKey)
|
|
73
|
+
return null;
|
|
74
|
+
const aliasTargets = this.aliases[aliasKey];
|
|
75
|
+
if (!Array.isArray(aliasTargets) || aliasTargets.length === 0) {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
// Get the first target path (usually there's only one)
|
|
79
|
+
const targetPattern = aliasTargets[0];
|
|
80
|
+
// Replace alias pattern with target pattern
|
|
81
|
+
const aliasPattern = aliasKey.replace("/*", "");
|
|
82
|
+
const targetBase = targetPattern.replace("/*", "");
|
|
83
|
+
// Remove any leading slash so path.join does not drop the base
|
|
84
|
+
const relativePart = checkingPath
|
|
85
|
+
.substring(aliasPattern.length)
|
|
86
|
+
.replace(/^[/\\]/, "");
|
|
87
|
+
// Join the target base with the relative part
|
|
88
|
+
const resolvedPath = path.join(targetBase, relativePart);
|
|
89
|
+
return Path.normalize(resolvedPath);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Resolve an alias import path to an absolute path
|
|
93
|
+
* Example: "app/users/services/get-users.service" -> "/absolute/path/to/src/app/users/services/get-users.service"
|
|
94
|
+
*
|
|
95
|
+
* @param path - The import path with alias
|
|
96
|
+
* @returns The resolved absolute path or null if alias not found
|
|
97
|
+
*/
|
|
98
|
+
resolveAliasToAbsolute(path) {
|
|
99
|
+
const relativePath = this.resolveAliasPath(path);
|
|
100
|
+
if (!relativePath)
|
|
101
|
+
return null;
|
|
102
|
+
return Path.normalize(Path.toAbsolute(relativePath));
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
const tsconfigManager = new TSConfigManager();export{TSConfigManager,tsconfigManager};//# sourceMappingURL=tsconfig-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tsconfig-manager.js","sources":["../../src/dev2-server/tsconfig-manager.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export type LayerType = "FSR" | "HMR";
|
|
2
|
+
export type FileType = "main" | "config" | "event" | "route" | "controller" | "service" | "model" | "other";
|
|
3
|
+
export type FileManifest = {
|
|
4
|
+
absolutePath: string;
|
|
5
|
+
relativePath: string;
|
|
6
|
+
lastModified: number;
|
|
7
|
+
hash: string;
|
|
8
|
+
dependencies: string[];
|
|
9
|
+
dependents: string[];
|
|
10
|
+
version: number;
|
|
11
|
+
type: FileType;
|
|
12
|
+
layer: LayerType;
|
|
13
|
+
cachePath: string;
|
|
14
|
+
};
|
|
15
|
+
export type FileState = "idle" | "loading" | "ready" | "error" | "updating" | "deleted";
|
|
16
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/dev2-server/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,KAAK,CAAC;AACtC,MAAM,MAAM,QAAQ,GAChB,MAAM,GACN,QAAQ,GACR,OAAO,GACP,OAAO,GACP,YAAY,GACZ,SAAS,GACT,OAAO,GACP,OAAO,CAAC;AAEZ,MAAM,MAAM,YAAY,GAAG;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,SAAS,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare function createFreshWarlockDirectory(): Promise<void>;
|
|
2
|
+
export declare function getFilesFromDirectory(directoryPath?: string, pattern?: string): Promise<string[]>;
|
|
3
|
+
export declare function warlockCachePath(relativePath: string): string;
|
|
4
|
+
/**
|
|
5
|
+
* Compare two sets for equality
|
|
6
|
+
*/
|
|
7
|
+
export declare function areSetsEqual<T>(set1: Set<T>, set2: Set<T>): boolean;
|
|
8
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/dev2-server/utils.ts"],"names":[],"mappings":"AAOA,wBAAsB,2BAA2B,kBAMhD;AAED,wBAAsB,qBAAqB,CAAC,aAAa,SAAY,EAAE,OAAO,SAAkB,qBAM/F;AAED,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,UAEpD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAMnE"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import {directoryExists,removeDirectoryAsync,createDirectoryAsync}from'@mongez/fs';import'@warlock.js/logger';import'../utils/date-output.js';import'../http/middleware/inject-request-context.js';import {warlockPath,srcPath}from'../utils/paths.js';import'@mongez/slug';import'@mongez/supportive-is';import'@mongez/reinforcements';import glob from'fast-glob';import {Path}from'./path.js';const directoryPath = warlockPath();
|
|
2
|
+
async function createFreshWarlockDirectory() {
|
|
3
|
+
if (await directoryExists(directoryPath)) {
|
|
4
|
+
await removeDirectoryAsync(directoryPath);
|
|
5
|
+
}
|
|
6
|
+
await createDirectoryAsync(directoryPath + "/cache", { recursive: true });
|
|
7
|
+
}
|
|
8
|
+
async function getFilesFromDirectory(directoryPath = srcPath(), pattern = "**/*.{ts,tsx}") {
|
|
9
|
+
const files = await glob(`${Path.normalize(directoryPath)}/${pattern}`, {
|
|
10
|
+
absolute: true, // Return absolute paths
|
|
11
|
+
});
|
|
12
|
+
return files.map((file) => Path.normalize(file));
|
|
13
|
+
}
|
|
14
|
+
function warlockCachePath(relativePath) {
|
|
15
|
+
return `${warlockPath("cache")}/${relativePath}`;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Compare two sets for equality
|
|
19
|
+
*/
|
|
20
|
+
function areSetsEqual(set1, set2) {
|
|
21
|
+
if (set1.size !== set2.size)
|
|
22
|
+
return false;
|
|
23
|
+
for (const item of set1) {
|
|
24
|
+
if (!set2.has(item))
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
return true;
|
|
28
|
+
}export{areSetsEqual,createFreshWarlockDirectory,getFilesFromDirectory,warlockCachePath};//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../src/dev2-server/utils.ts"],"sourcesContent":[null],"names":[],"mappings":"kYAKA,MAAM,aAAa,GAAG,WAAW,EAAE,CAAC;AAE7B,eAAe,2BAA2B,GAAA;AAC/C,IAAA,IAAI,MAAM,eAAe,CAAC,aAAa,CAAC,EAAE;AACxC,QAAA,MAAM,oBAAoB,CAAC,aAAa,CAAC,CAAC;AAC3C,KAAA;AAED,IAAA,MAAM,oBAAoB,CAAC,aAAa,GAAG,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5E,CAAC;AAEM,eAAe,qBAAqB,CAAC,aAAa,GAAG,OAAO,EAAE,EAAE,OAAO,GAAG,eAAe,EAAA;AAC9F,IAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,CAAG,EAAA,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAI,CAAA,EAAA,OAAO,EAAE,EAAE;QACtE,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC,CAAC;AAEH,IAAA,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AACnD,CAAC;AAEK,SAAU,gBAAgB,CAAC,YAAoB,EAAA;IACnD,OAAO,CAAA,EAAG,WAAW,CAAC,OAAO,CAAC,CAAI,CAAA,EAAA,YAAY,EAAE,CAAC;AACnD,CAAC;AAED;;AAEG;AACa,SAAA,YAAY,CAAI,IAAY,EAAE,IAAY,EAAA;AACxD,IAAA,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,KAAK,CAAC;AAC1C,IAAA,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AAAE,YAAA,OAAO,KAAK,CAAC;AACnC,KAAA;AACD,IAAA,OAAO,IAAI,CAAC;AACd"}
|
|
@@ -10,6 +10,10 @@ export declare class RouteRegistry {
|
|
|
10
10
|
* Register all routes from the router's internal list
|
|
11
11
|
*/
|
|
12
12
|
register(routes: Route[]): void;
|
|
13
|
+
/**
|
|
14
|
+
* Register a single route
|
|
15
|
+
*/
|
|
16
|
+
registerRoute(route: Route): void;
|
|
13
17
|
/**
|
|
14
18
|
* Find a matching route for the given method and URL
|
|
15
19
|
* @returns Matched route with extracted params, or null if no match
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-registry.d.ts","sourceRoot":"","sources":["../../src/router/route-registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAgB;;IAS9B;;OAEG;IACI,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"route-registry.d.ts","sourceRoot":"","sources":["../../src/router/route-registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAgB;;IAS9B;;OAEG;IACI,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI;IAmBtC;;OAEG;IACI,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAOxC;;;OAGG;IACI,IAAI,CACT,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,GACV;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,IAAI;IAqB1D;;OAEG;IACI,aAAa,IAAI,MAAM;CAM/B"}
|
|
@@ -14,16 +14,32 @@ class RouteRegistry {
|
|
|
14
14
|
* Register all routes from the router's internal list
|
|
15
15
|
*/
|
|
16
16
|
register(routes) {
|
|
17
|
-
// Reset the router (clear all existing routes)
|
|
18
|
-
this.router.reset();
|
|
19
17
|
// Register each route
|
|
20
18
|
for (const route of routes) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
19
|
+
if (route.method === "all") {
|
|
20
|
+
this.registerRoute({
|
|
21
|
+
...route,
|
|
22
|
+
method: "GET",
|
|
23
|
+
});
|
|
24
|
+
this.registerRoute({
|
|
25
|
+
...route,
|
|
26
|
+
method: "POST",
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
this.registerRoute(route);
|
|
31
|
+
}
|
|
25
32
|
}
|
|
26
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* Register a single route
|
|
36
|
+
*/
|
|
37
|
+
registerRoute(route) {
|
|
38
|
+
this.router.on(route.method, route.path, (req, params) => {
|
|
39
|
+
// Store the route and params for later use
|
|
40
|
+
return { route, params };
|
|
41
|
+
});
|
|
42
|
+
}
|
|
27
43
|
/**
|
|
28
44
|
* Find a matching route for the given method and URL
|
|
29
45
|
* @returns Matched route with extracted params, or null if no match
|
|
@@ -43,6 +59,9 @@ class RouteRegistry {
|
|
|
43
59
|
* Get all registered routes count (for debugging)
|
|
44
60
|
*/
|
|
45
61
|
getRouteCount() {
|
|
46
|
-
return this.router
|
|
62
|
+
return this.router
|
|
63
|
+
.prettyPrint()
|
|
64
|
+
.split("\n")
|
|
65
|
+
.filter(line => line.trim()).length;
|
|
47
66
|
}
|
|
48
67
|
}export{RouteRegistry};//# sourceMappingURL=route-registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-registry.js","sources":["../../src/router/route-registry.ts"],"sourcesContent":[null],"names":[],"mappings":"mCAGA;;;AAGG;MACU,aAAa,CAAA;AAChB,IAAA,MAAM,CAAgB;AAE9B,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;AACtB,YAAA,mBAAmB,EAAE,IAAI;AACzB,YAAA,aAAa,EAAE,KAAK;AACrB,SAAA,CAAC,CAAC;KACJ;AAED;;AAEG;AACI,IAAA,QAAQ,CAAC,MAAe,EAAA;;AAE7B,QAAA,IAAI,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"route-registry.js","sources":["../../src/router/route-registry.ts"],"sourcesContent":[null],"names":[],"mappings":"mCAGA;;;AAGG;MACU,aAAa,CAAA;AAChB,IAAA,MAAM,CAAgB;AAE9B,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;AACtB,YAAA,mBAAmB,EAAE,IAAI;AACzB,YAAA,aAAa,EAAE,KAAK;AACrB,SAAA,CAAC,CAAC;KACJ;AAED;;AAEG;AACI,IAAA,QAAQ,CAAC,MAAe,EAAA;;AAE7B,QAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAC1B,YAAA,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,EAAE;gBAC1B,IAAI,CAAC,aAAa,CAAC;AACjB,oBAAA,GAAG,KAAK;AACR,oBAAA,MAAM,EAAE,KAAK;AACd,iBAAA,CAAC,CAAC;gBAEH,IAAI,CAAC,aAAa,CAAC;AACjB,oBAAA,GAAG,KAAK;AACR,oBAAA,MAAM,EAAE,MAAM;AACf,iBAAA,CAAC,CAAC;AACJ,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC3B,aAAA;AACF,SAAA;KACF;AAED;;AAEG;AACI,IAAA,aAAa,CAAC,KAAY,EAAA;AAC/B,QAAA,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,MAAoB,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAI;;AAErE,YAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC3B,SAAC,CAAC,CAAC;KACJ;AAED;;;AAGG;IACI,IAAI,CACT,MAAc,EACd,GAAW,EAAA;;QAGX,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAE/B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAoB,EAAE,IAAI,CAAC,CAAC;QAE3D,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;;;AAID,QAAA,OAAO,KAAK,CAAC,OAAO,CAClB,IAAW,EACX,IAAW,EACX,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,KAAK,EACX,EAAE,CACH,CAAC;KACH;AAED;;AAEG;IACI,aAAa,GAAA;QAClB,OAAO,IAAI,CAAC,MAAM;AACf,aAAA,WAAW,EAAE;aACb,KAAK,CAAC,IAAI,CAAC;AACX,aAAA,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;KACvC;AACF"}
|
package/esm/router/router.d.ts
CHANGED
|
@@ -24,10 +24,6 @@ export declare class Router {
|
|
|
24
24
|
* Stacks will be used for grouping routes to add prefix, name or middleware
|
|
25
25
|
*/
|
|
26
26
|
protected stacks: RouterStacks;
|
|
27
|
-
/**
|
|
28
|
-
* Route registry for dev server (HMR support)
|
|
29
|
-
*/
|
|
30
|
-
private routeRegistry;
|
|
31
27
|
/**
|
|
32
28
|
* Get router instance
|
|
33
29
|
*/
|
|
@@ -130,6 +126,19 @@ export declare class Router {
|
|
|
130
126
|
* Add prefix to all routes in the given callback
|
|
131
127
|
*/
|
|
132
128
|
prefix(prefix: string, callback: () => void): this;
|
|
129
|
+
/**
|
|
130
|
+
* Wrap route additions with a source file path
|
|
131
|
+
* Used for tracking which routes come from which file (for HMR)
|
|
132
|
+
* @param sourceFile Relative path to the source file (e.g., "src/app/users/routes.ts")
|
|
133
|
+
* @param callback Function that adds routes (will have sourceFile injected)
|
|
134
|
+
*/
|
|
135
|
+
withSourceFile(sourceFile: string, callback: () => void | Promise<void>): Promise<void>;
|
|
136
|
+
/**
|
|
137
|
+
* Remove all routes that belong to a specific source file
|
|
138
|
+
* Used when reloading routes files via HMR
|
|
139
|
+
* @param sourceFile Relative path to the source file
|
|
140
|
+
*/
|
|
141
|
+
removeRoutesBySourceFile(sourceFile: string): void;
|
|
133
142
|
/**
|
|
134
143
|
* Manage validation system for the given resource
|
|
135
144
|
*/
|
|
@@ -147,10 +156,6 @@ export declare class Router {
|
|
|
147
156
|
* Uses wildcard routing with find-my-way for HMR support
|
|
148
157
|
*/
|
|
149
158
|
scanDevServer(server: FastifyInstance): void;
|
|
150
|
-
/**
|
|
151
|
-
* Rebuild route registry (called after routes are reloaded via HMR)
|
|
152
|
-
*/
|
|
153
|
-
rebuildRouteRegistry(): void;
|
|
154
159
|
/**
|
|
155
160
|
* Get the route path for the given route name
|
|
156
161
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/router/router.ts"],"names":[],"mappings":"AACA,OAAc,EAAE,KAAK,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAsB,EAAE,KAAK,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAQ3E,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,OAAO,KAAK,EACV,oBAAoB,EACpB,cAAc,EACd,KAAK,EACL,YAAY,EACZ,gBAAgB,EAEhB,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,YAAY,EACb,MAAM,SAAS,CAAC;AAEjB,qBAAa,MAAM;IACjB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAe;IAE7B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAS;IAEhC;;OAEG;IACH,SAAS,CAAC,iBAAiB,EAAE,oBAAoB,EAAE,CAAM;IAEzD;;OAEG;IACH,SAAS,CAAC,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/router/router.ts"],"names":[],"mappings":"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"}
|
package/esm/router/router.js
CHANGED
|
@@ -25,10 +25,6 @@ class Router {
|
|
|
25
25
|
name: [],
|
|
26
26
|
middleware: [],
|
|
27
27
|
};
|
|
28
|
-
/**
|
|
29
|
-
* Route registry for dev server (HMR support)
|
|
30
|
-
*/
|
|
31
|
-
routeRegistry = null;
|
|
32
28
|
/**
|
|
33
29
|
* Get router instance
|
|
34
30
|
*/
|
|
@@ -45,14 +41,20 @@ class Router {
|
|
|
45
41
|
* Listen to router before scan
|
|
46
42
|
*/
|
|
47
43
|
beforeScanning(callback) {
|
|
48
|
-
this.eventListeners.beforeScan = [
|
|
44
|
+
this.eventListeners.beforeScan = [
|
|
45
|
+
...(this.eventListeners.beforeScan || []),
|
|
46
|
+
callback,
|
|
47
|
+
];
|
|
49
48
|
return this;
|
|
50
49
|
}
|
|
51
50
|
/**
|
|
52
51
|
* Listen to router after scanning
|
|
53
52
|
*/
|
|
54
53
|
afterScanning(callback) {
|
|
55
|
-
this.eventListeners.afterScanning = [
|
|
54
|
+
this.eventListeners.afterScanning = [
|
|
55
|
+
...(this.eventListeners.afterScanning || []),
|
|
56
|
+
callback,
|
|
57
|
+
];
|
|
56
58
|
return this;
|
|
57
59
|
}
|
|
58
60
|
/**
|
|
@@ -120,7 +122,7 @@ class Router {
|
|
|
120
122
|
*/
|
|
121
123
|
add(method, path, handler, options = {}) {
|
|
122
124
|
if (Array.isArray(path)) {
|
|
123
|
-
path.forEach(
|
|
125
|
+
path.forEach(p => this.add(method, p, handler, options));
|
|
124
126
|
return this;
|
|
125
127
|
}
|
|
126
128
|
const prefix = this.stacks.prefix.reduce((path, prefix) => {
|
|
@@ -132,10 +134,16 @@ class Router {
|
|
|
132
134
|
path = concatRoute(prefix, path);
|
|
133
135
|
const middlewarePrecedence = options.middlewarePrecedence || "after";
|
|
134
136
|
if (middlewarePrecedence === "before") {
|
|
135
|
-
options.middleware = [
|
|
137
|
+
options.middleware = [
|
|
138
|
+
...(options.middleware || []),
|
|
139
|
+
...this.stacks.middleware,
|
|
140
|
+
];
|
|
136
141
|
}
|
|
137
142
|
else {
|
|
138
|
-
options.middleware = [
|
|
143
|
+
options.middleware = [
|
|
144
|
+
...this.stacks.middleware,
|
|
145
|
+
...(options.middleware || []),
|
|
146
|
+
];
|
|
139
147
|
}
|
|
140
148
|
if (Array.isArray(handler)) {
|
|
141
149
|
const [controller, action] = handler;
|
|
@@ -166,10 +174,12 @@ class Router {
|
|
|
166
174
|
$prefix: prefix || "/",
|
|
167
175
|
// it must be a new array to avoid modifying the original array
|
|
168
176
|
$prefixStack: [...this.stacks.prefix],
|
|
177
|
+
// Inject source file from stacks if set
|
|
178
|
+
sourceFile: this.stacks.sourceFile || "",
|
|
169
179
|
};
|
|
170
180
|
if (routeData.name) {
|
|
171
181
|
// check if the name exists
|
|
172
|
-
const route = this.routes.find(
|
|
182
|
+
const route = this.routes.find(route => route.name === routeData.name);
|
|
173
183
|
if (route) {
|
|
174
184
|
// check again if the route name exists with the same method
|
|
175
185
|
if (route.method === routeData.method) {
|
|
@@ -273,7 +283,8 @@ class Router {
|
|
|
273
283
|
}
|
|
274
284
|
if (routeResource.create && isAcceptableResource("create")) {
|
|
275
285
|
const resourceName = baseResourceName + ".create";
|
|
276
|
-
const handler = options.replace?.create ||
|
|
286
|
+
const handler = options.replace?.create ||
|
|
287
|
+
this.manageValidation(routeResource, "create");
|
|
277
288
|
this.post(path, handler, {
|
|
278
289
|
...options,
|
|
279
290
|
name: resourceName,
|
|
@@ -282,7 +293,8 @@ class Router {
|
|
|
282
293
|
}
|
|
283
294
|
if (routeResource.update && isAcceptableResource("update")) {
|
|
284
295
|
const resourceName = baseResourceName + ".update";
|
|
285
|
-
const handler = options.replace?.update ||
|
|
296
|
+
const handler = options.replace?.update ||
|
|
297
|
+
this.manageValidation(routeResource, "update");
|
|
286
298
|
this.put(path + "/:id", handler, {
|
|
287
299
|
...options,
|
|
288
300
|
name: resourceName,
|
|
@@ -291,7 +303,8 @@ class Router {
|
|
|
291
303
|
}
|
|
292
304
|
if (routeResource.patch && isAcceptableResource("patch")) {
|
|
293
305
|
const resourceName = baseResourceName + ".patch";
|
|
294
|
-
const handler = options.replace?.patch ||
|
|
306
|
+
const handler = options.replace?.patch ||
|
|
307
|
+
this.manageValidation(routeResource, "patch");
|
|
295
308
|
this.patch(path + "/:id", handler, {
|
|
296
309
|
...options,
|
|
297
310
|
name: resourceName,
|
|
@@ -308,7 +321,8 @@ class Router {
|
|
|
308
321
|
}
|
|
309
322
|
if (routeResource.bulkDelete && isAcceptableResource("delete")) {
|
|
310
323
|
const resourceName = baseResourceName + ".bulkDelete";
|
|
311
|
-
this.delete(path, options.replace?.bulkDelete ||
|
|
324
|
+
this.delete(path, options.replace?.bulkDelete ||
|
|
325
|
+
routeResource.bulkDelete.bind(routeResource), {
|
|
312
326
|
...options,
|
|
313
327
|
name: resourceName,
|
|
314
328
|
restful: true,
|
|
@@ -356,6 +370,35 @@ class Router {
|
|
|
356
370
|
prefix(prefix, callback) {
|
|
357
371
|
return this.group({ prefix }, callback);
|
|
358
372
|
}
|
|
373
|
+
/**
|
|
374
|
+
* Wrap route additions with a source file path
|
|
375
|
+
* Used for tracking which routes come from which file (for HMR)
|
|
376
|
+
* @param sourceFile Relative path to the source file (e.g., "src/app/users/routes.ts")
|
|
377
|
+
* @param callback Function that adds routes (will have sourceFile injected)
|
|
378
|
+
*/
|
|
379
|
+
async withSourceFile(sourceFile, callback) {
|
|
380
|
+
// Set source file in stacks
|
|
381
|
+
this.stacks.sourceFile = sourceFile;
|
|
382
|
+
try {
|
|
383
|
+
// Execute callback (routes added here will have sourceFile injected)
|
|
384
|
+
await callback();
|
|
385
|
+
}
|
|
386
|
+
catch (error) {
|
|
387
|
+
console.log("Error in withSourceFile", error);
|
|
388
|
+
}
|
|
389
|
+
finally {
|
|
390
|
+
// Always clear source file from stacks
|
|
391
|
+
delete this.stacks.sourceFile;
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
/**
|
|
395
|
+
* Remove all routes that belong to a specific source file
|
|
396
|
+
* Used when reloading routes files via HMR
|
|
397
|
+
* @param sourceFile Relative path to the source file
|
|
398
|
+
*/
|
|
399
|
+
removeRoutesBySourceFile(sourceFile) {
|
|
400
|
+
this.routes = this.routes.filter(route => route.sourceFile !== sourceFile);
|
|
401
|
+
}
|
|
359
402
|
/**
|
|
360
403
|
* Manage validation system for the given resource
|
|
361
404
|
*/
|
|
@@ -365,7 +408,8 @@ class Router {
|
|
|
365
408
|
if (method === "patch") {
|
|
366
409
|
handler.validation = methodValidation;
|
|
367
410
|
if (handler.validation?.validate) {
|
|
368
|
-
handler.validation.validate =
|
|
411
|
+
handler.validation.validate =
|
|
412
|
+
handler.validation.validate.bind(resource);
|
|
369
413
|
}
|
|
370
414
|
if (resource.validation?.patch) {
|
|
371
415
|
handler.validation = merge(resource.validation.patch, handler.validation);
|
|
@@ -392,7 +436,8 @@ class Router {
|
|
|
392
436
|
// Case 3: Both exist - merge them (all is base, method overrides)
|
|
393
437
|
validation.schema = resource.validation.all.schema.merge(methodValidation.schema);
|
|
394
438
|
}
|
|
395
|
-
else if (methodValidation?.schema &&
|
|
439
|
+
else if (methodValidation?.schema &&
|
|
440
|
+
!resource.validation.all.schema) {
|
|
396
441
|
// Case 1: Only method schema exists - use it directly
|
|
397
442
|
validation.schema = methodValidation.schema;
|
|
398
443
|
}
|
|
@@ -418,7 +463,8 @@ class Router {
|
|
|
418
463
|
else {
|
|
419
464
|
handler.validation = resource.validation[method];
|
|
420
465
|
if (handler.validation?.validate) {
|
|
421
|
-
handler.validation.validate =
|
|
466
|
+
handler.validation.validate =
|
|
467
|
+
handler.validation.validate.bind(resource);
|
|
422
468
|
}
|
|
423
469
|
}
|
|
424
470
|
return handler;
|
|
@@ -433,8 +479,8 @@ class Router {
|
|
|
433
479
|
* Register routes to the server
|
|
434
480
|
*/
|
|
435
481
|
scan(server) {
|
|
436
|
-
this.eventListeners.beforeScan?.forEach(
|
|
437
|
-
this.routes.forEach(
|
|
482
|
+
this.eventListeners.beforeScan?.forEach(callback => callback(this, server));
|
|
483
|
+
this.routes.forEach(route => {
|
|
438
484
|
const requestMethod = route.method.toLowerCase();
|
|
439
485
|
const requestMethodFunction = server[requestMethod].bind(server);
|
|
440
486
|
requestMethodFunction(route.path, route.serverOptions || {}, async (baseRequest, reply) => {
|
|
@@ -448,21 +494,21 @@ class Router {
|
|
|
448
494
|
decorateReply: false,
|
|
449
495
|
});
|
|
450
496
|
}
|
|
451
|
-
this.eventListeners.afterScanning?.forEach(
|
|
497
|
+
this.eventListeners.afterScanning?.forEach(callback => callback(this, server));
|
|
452
498
|
}
|
|
453
499
|
/**
|
|
454
500
|
* Scan routes for the development server
|
|
455
501
|
* Uses wildcard routing with find-my-way for HMR support
|
|
456
502
|
*/
|
|
457
503
|
scanDevServer(server) {
|
|
458
|
-
this.eventListeners.beforeScan?.forEach(
|
|
504
|
+
this.eventListeners.beforeScan?.forEach(callback => callback(this, server));
|
|
459
505
|
// Shared handler for wildcard routing
|
|
460
506
|
const wildcardHandler = async (fastifyRequest, fastifyReply) => {
|
|
461
507
|
// Initialize route registry once (will be rebuilt on HMR via rebuildRouteRegistry)
|
|
462
|
-
|
|
463
|
-
|
|
508
|
+
const routeRegistry = new RouteRegistry();
|
|
509
|
+
routeRegistry.register(this.routes);
|
|
464
510
|
// Find matching route using find-my-way
|
|
465
|
-
const match =
|
|
511
|
+
const match = routeRegistry.find(fastifyRequest.method, fastifyRequest.url);
|
|
466
512
|
// No match found - return 404
|
|
467
513
|
if (!match) {
|
|
468
514
|
return fastifyReply.code(404).send({
|
|
@@ -494,27 +540,19 @@ class Router {
|
|
|
494
540
|
decorateReply: false,
|
|
495
541
|
});
|
|
496
542
|
}
|
|
497
|
-
this.eventListeners.afterScanning?.forEach(
|
|
498
|
-
}
|
|
499
|
-
/**
|
|
500
|
-
* Rebuild route registry (called after routes are reloaded via HMR)
|
|
501
|
-
*/
|
|
502
|
-
rebuildRouteRegistry() {
|
|
503
|
-
if (this.routeRegistry) {
|
|
504
|
-
this.routeRegistry.register(this.routes);
|
|
505
|
-
}
|
|
543
|
+
this.eventListeners.afterScanning?.forEach(callback => callback(this, server));
|
|
506
544
|
}
|
|
507
545
|
/**
|
|
508
546
|
* Get the route path for the given route name
|
|
509
547
|
*/
|
|
510
548
|
route(name, params = {}) {
|
|
511
|
-
const route = this.routes.find(
|
|
549
|
+
const route = this.routes.find(route => route.name === name);
|
|
512
550
|
if (!route) {
|
|
513
551
|
throw new Error(`Route name "${name}" not found`);
|
|
514
552
|
}
|
|
515
553
|
let path = route.path;
|
|
516
554
|
if (route.path.includes(":")) {
|
|
517
|
-
Object.keys(params).forEach(
|
|
555
|
+
Object.keys(params).forEach(key => {
|
|
518
556
|
path = path.replace(":" + key, params[key]);
|
|
519
557
|
});
|
|
520
558
|
}
|