@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,228 @@
|
|
|
1
|
+
import {pathToFileURL}from'node:url';import {router}from'../router/router.js';import {devLogInfo,devLogSuccess,devLogError,formatModuleNotFoundError}from'./dev-logger.js';import {warlockCachePath}from'./utils.js';/**
|
|
2
|
+
* Module Loader
|
|
3
|
+
* Dynamically loads and manages application modules (main, routes, events, locales)
|
|
4
|
+
* Handles module cache invalidation for HMR
|
|
5
|
+
*/
|
|
6
|
+
class ModuleLoader {
|
|
7
|
+
specialFilesCollector;
|
|
8
|
+
/**
|
|
9
|
+
* Loaded modules cache
|
|
10
|
+
* Maps absolute path to loaded module
|
|
11
|
+
*/
|
|
12
|
+
loadedModules = new Map();
|
|
13
|
+
/**
|
|
14
|
+
* Constructor
|
|
15
|
+
*/
|
|
16
|
+
constructor(specialFilesCollector) {
|
|
17
|
+
this.specialFilesCollector = specialFilesCollector;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Load all special files in correct order
|
|
21
|
+
*/
|
|
22
|
+
async loadAll() {
|
|
23
|
+
// Load in specific order
|
|
24
|
+
await this.loadLocaleFiles();
|
|
25
|
+
await this.loadEventFiles();
|
|
26
|
+
await this.loadMainFiles();
|
|
27
|
+
await this.loadRouteFiles();
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Load all main.ts files
|
|
31
|
+
* Main files are module entry points that run initialization code
|
|
32
|
+
* Loaded in parallel as they should be independent
|
|
33
|
+
*/
|
|
34
|
+
async loadMainFiles() {
|
|
35
|
+
const mainFiles = this.specialFilesCollector.getMainFiles();
|
|
36
|
+
if (mainFiles.length === 0) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
// Load all main files in parallel
|
|
40
|
+
for (const file of mainFiles) {
|
|
41
|
+
await this.loadModule(file, "main");
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Load all locale files
|
|
46
|
+
* Locale files register translations
|
|
47
|
+
* Loaded in parallel as they are independent
|
|
48
|
+
*/
|
|
49
|
+
async loadLocaleFiles() {
|
|
50
|
+
const localeFiles = this.specialFilesCollector.getLocaleFiles();
|
|
51
|
+
if (localeFiles.length === 0) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
// Load all locale files in parallel
|
|
55
|
+
for (const file of localeFiles) {
|
|
56
|
+
await this.loadModule(file, "locale");
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Load all event files
|
|
61
|
+
* Event files register event handlers
|
|
62
|
+
* Loaded in parallel as they are independent
|
|
63
|
+
*/
|
|
64
|
+
async loadEventFiles() {
|
|
65
|
+
const eventFiles = this.specialFilesCollector.getEventFiles();
|
|
66
|
+
if (eventFiles.length === 0) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
// Load all event files in parallel
|
|
70
|
+
for (const file of eventFiles) {
|
|
71
|
+
await this.loadModule(file, "event");
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Load all route files
|
|
76
|
+
* Route files register HTTP routes
|
|
77
|
+
* Loaded sequentially as order might matter
|
|
78
|
+
*/
|
|
79
|
+
async loadRouteFiles() {
|
|
80
|
+
const routeFiles = this.specialFilesCollector.getRouteFiles();
|
|
81
|
+
if (routeFiles.length === 0) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
// Load route files sequentially
|
|
85
|
+
// because we are registering the source file, we must load routes sequentially
|
|
86
|
+
for (const file of routeFiles) {
|
|
87
|
+
await this.loadModule(file, "route");
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Load a single module
|
|
92
|
+
* @param file FileManager instance
|
|
93
|
+
* @param type Module type for logging
|
|
94
|
+
* @param bustCache Whether to add timestamp for cache busting (for HMR)
|
|
95
|
+
*/
|
|
96
|
+
async loadModule(file, type, bustCache = false) {
|
|
97
|
+
// Get the cached transpiled file path
|
|
98
|
+
const cachedFilePath = warlockCachePath(file.cachePath);
|
|
99
|
+
devLogInfo(`Loading module: ${file.relativePath} (${type})`);
|
|
100
|
+
let now = performance.now();
|
|
101
|
+
// Convert to file:// URL for cross-platform compatibility
|
|
102
|
+
let fileUrl = pathToFileURL(cachedFilePath).href;
|
|
103
|
+
try {
|
|
104
|
+
// Add timestamp for cache busting (forces re-import for HMR)
|
|
105
|
+
if (bustCache) {
|
|
106
|
+
const timestamp = Date.now();
|
|
107
|
+
fileUrl += `?t=${timestamp}`;
|
|
108
|
+
}
|
|
109
|
+
// For route files, wrap the import with source file tracking
|
|
110
|
+
if (type === "route") {
|
|
111
|
+
await router.withSourceFile(file.relativePath, async () => {
|
|
112
|
+
// Dynamic import the module (routes will be registered with sourceFile)
|
|
113
|
+
const module = await import(fileUrl);
|
|
114
|
+
// Store in cache (use source path as key for consistency)
|
|
115
|
+
this.loadedModules.set(file.absolutePath, module);
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
// Dynamic import the module
|
|
120
|
+
const module = await import(fileUrl);
|
|
121
|
+
// Store in cache (use source path as key for consistency)
|
|
122
|
+
this.loadedModules.set(file.absolutePath, module);
|
|
123
|
+
}
|
|
124
|
+
devLogSuccess(`Module loaded: ${file.relativePath} (${type}) in ${performance.now() - now}ms`);
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
// Format error message (especially for MODULE_NOT_FOUND)
|
|
128
|
+
if (error.code === "ERR_MODULE_NOT_FOUND") {
|
|
129
|
+
devLogError(formatModuleNotFoundError(error));
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
console.log("Failed to load module", fileUrl);
|
|
133
|
+
devLogError(`Failed to load ${type}: ${file.relativePath} - ${error.message || error}`);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Reload a single module (for HMR)
|
|
139
|
+
* @param file FileManager instance
|
|
140
|
+
*/
|
|
141
|
+
async reloadModule(file) {
|
|
142
|
+
const moduleType = this.specialFilesCollector.getFileType(file.relativePath);
|
|
143
|
+
if (!moduleType) {
|
|
144
|
+
// Not a special file, no need to reload
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
try {
|
|
148
|
+
// For route files, remove old routes before reloading
|
|
149
|
+
if (moduleType === "route") {
|
|
150
|
+
router.removeRoutesBySourceFile(file.relativePath);
|
|
151
|
+
}
|
|
152
|
+
// Clear module cache
|
|
153
|
+
this.clearModuleCache(file.absolutePath);
|
|
154
|
+
// Reload the module with cache busting
|
|
155
|
+
await this.loadModule(file, moduleType, true);
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
// Format error message (especially for MODULE_NOT_FOUND)
|
|
159
|
+
if (error.code === "ERR_MODULE_NOT_FOUND") {
|
|
160
|
+
devLogError(formatModuleNotFoundError(error));
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
devLogError(`Failed to reload module: ${error.message || error}`);
|
|
164
|
+
}
|
|
165
|
+
throw error;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Clear module cache for a specific file
|
|
170
|
+
* This forces Node.js to re-import the module
|
|
171
|
+
* @param absolutePath Absolute path to the module
|
|
172
|
+
*/
|
|
173
|
+
clearModuleCache(absolutePath) {
|
|
174
|
+
// Remove from our cache
|
|
175
|
+
this.loadedModules.delete(absolutePath);
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Clear module cache for multiple files
|
|
179
|
+
* @param absolutePaths Array of absolute paths
|
|
180
|
+
*/
|
|
181
|
+
clearModuleCacheMultiple(absolutePaths) {
|
|
182
|
+
for (const path of absolutePaths) {
|
|
183
|
+
this.clearModuleCache(path);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Clear all application module cache
|
|
188
|
+
* Used for full server restart
|
|
189
|
+
*/
|
|
190
|
+
clearAllModuleCache() {
|
|
191
|
+
// Clear all loaded modules
|
|
192
|
+
for (const absolutePath of this.loadedModules.keys()) {
|
|
193
|
+
this.clearModuleCache(absolutePath);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Get loaded module by path
|
|
198
|
+
* @param absolutePath Absolute path to the module
|
|
199
|
+
*/
|
|
200
|
+
getLoadedModule(absolutePath) {
|
|
201
|
+
return this.loadedModules.get(absolutePath);
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Check if a module is loaded
|
|
205
|
+
* @param absolutePath Absolute path to the module
|
|
206
|
+
*/
|
|
207
|
+
isModuleLoaded(absolutePath) {
|
|
208
|
+
return this.loadedModules.has(absolutePath);
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Get all loaded module paths
|
|
212
|
+
*/
|
|
213
|
+
getLoadedModulePaths() {
|
|
214
|
+
return Array.from(this.loadedModules.keys());
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Get statistics about loaded modules
|
|
218
|
+
*/
|
|
219
|
+
getStats() {
|
|
220
|
+
return {
|
|
221
|
+
totalLoaded: this.loadedModules.size,
|
|
222
|
+
mainFiles: this.specialFilesCollector.getMainFiles().length,
|
|
223
|
+
routeFiles: this.specialFilesCollector.getRouteFiles().length,
|
|
224
|
+
eventFiles: this.specialFilesCollector.getEventFiles().length,
|
|
225
|
+
localeFiles: this.specialFilesCollector.getLocaleFiles().length,
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
}export{ModuleLoader};//# sourceMappingURL=module-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-loader.js","sources":["../../src/dev2-server/module-loader.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare class PackageJsonManager {
|
|
2
|
+
/**
|
|
3
|
+
* Package.json data
|
|
4
|
+
*/
|
|
5
|
+
packageJson: any;
|
|
6
|
+
/**
|
|
7
|
+
* Initialize the package.json manager
|
|
8
|
+
*/
|
|
9
|
+
init(): Promise<void>;
|
|
10
|
+
/**
|
|
11
|
+
* Check if the given path is a package path
|
|
12
|
+
*/
|
|
13
|
+
isPathPackage(path: string): boolean;
|
|
14
|
+
}
|
|
15
|
+
export declare const packageJsonManager: PackageJsonManager;
|
|
16
|
+
//# sourceMappingURL=package-json-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-json-manager.d.ts","sourceRoot":"","sources":["../../src/dev2-server/package-json-manager.ts"],"names":[],"mappings":"AAGA,qBAAa,kBAAkB;IAC7B;;OAEG;IACI,WAAW,EAAE,GAAG,CAAM;IAE7B;;OAEG;IACU,IAAI;IAIjB;;OAEG;IACI,aAAa,CAAC,IAAI,EAAE,MAAM;CAOlC;AAED,eAAO,MAAM,kBAAkB,oBAA2B,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import {getJsonFileAsync}from'@mongez/fs';import {Path}from'./path.js';class PackageJsonManager {
|
|
2
|
+
/**
|
|
3
|
+
* Package.json data
|
|
4
|
+
*/
|
|
5
|
+
packageJson = {};
|
|
6
|
+
/**
|
|
7
|
+
* Initialize the package.json manager
|
|
8
|
+
*/
|
|
9
|
+
async init() {
|
|
10
|
+
this.packageJson = await getJsonFileAsync(Path.toAbsolute("package.json"));
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Check if the given path is a package path
|
|
14
|
+
*/
|
|
15
|
+
isPathPackage(path) {
|
|
16
|
+
const allPackages = Object.keys(this.packageJson.dependencies || {}).concat(Object.keys(this.packageJson.devDependencies || {}));
|
|
17
|
+
return allPackages.some((packageName) => path.startsWith(packageName));
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
const packageJsonManager = new PackageJsonManager();export{PackageJsonManager,packageJsonManager};//# sourceMappingURL=package-json-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-json-manager.js","sources":["../../src/dev2-server/package-json-manager.ts"],"sourcesContent":[null],"names":[],"mappings":"6EAGa,kBAAkB,CAAA;AAC7B;;AAEG;IACI,WAAW,GAAQ,EAAE,CAAC;AAE7B;;AAEG;AACI,IAAA,MAAM,IAAI,GAAA;AACf,QAAA,IAAI,CAAC,WAAW,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC;KAC5E;AAED;;AAEG;AACI,IAAA,aAAa,CAAC,IAAY,EAAA;AAC/B,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,MAAM,CACzE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,IAAI,EAAE,CAAC,CACpD,CAAC;AAEF,QAAA,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;KACxE;AACF,CAAA;AAEY,MAAA,kBAAkB,GAAG,IAAI,kBAAkB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This function will transpile the given ts/tsx code to js code
|
|
3
|
+
* // also it will return the dependencies of the file
|
|
4
|
+
*
|
|
5
|
+
* @returns Map of originalImportPath -> resolvedAbsolutePath
|
|
6
|
+
*/
|
|
7
|
+
export declare function parseImports(source: string, filePath: string): Promise<Map<string, string>>;
|
|
8
|
+
//# sourceMappingURL=parse-imports.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-imports.d.ts","sourceRoot":"","sources":["../../src/dev2-server/parse-imports.ts"],"names":[],"mappings":"AAoJA;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,gCAqDlE"}
|
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
import {isDirectoryAsync,fileExistsAsync}from'@mongez/fs';import {parse}from'es-module-lexer';import path from'node:path';import {Path}from'./path.js';import {tsconfigManager}from'./tsconfig-manager.js';/**
|
|
2
|
+
* Extract import paths using regex (more reliable for TypeScript)
|
|
3
|
+
* This is a fallback when es-module-lexer fails
|
|
4
|
+
*/
|
|
5
|
+
function extractImportPathsWithRegex(source) {
|
|
6
|
+
const imports = [];
|
|
7
|
+
const seenPaths = new Set();
|
|
8
|
+
/**
|
|
9
|
+
* Check if an import line is type-only
|
|
10
|
+
* Handles:
|
|
11
|
+
* - import type { Foo } from "module"
|
|
12
|
+
* - import type Foo from "module"
|
|
13
|
+
* - import type * as Foo from "module"
|
|
14
|
+
*/
|
|
15
|
+
const isTypeOnlyImport = (line) => {
|
|
16
|
+
const trimmed = line.trim();
|
|
17
|
+
return (trimmed.startsWith("import type ") ||
|
|
18
|
+
!!trimmed.match(/^import\s+type\s+[\{\*]/));
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Check if an import has any runtime (non-type) imports
|
|
22
|
+
* Handles mixed imports: import { type Foo, runtimeBar } from "module"
|
|
23
|
+
* Returns true if there are runtime imports (should be tracked)
|
|
24
|
+
*/
|
|
25
|
+
const hasRuntimeImports = (line) => {
|
|
26
|
+
const trimmed = line.trim();
|
|
27
|
+
// If it's a pure type-only import, no runtime imports
|
|
28
|
+
if (isTypeOnlyImport(trimmed)) {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
// Extract the import specifiers part: import { ... } from "module"
|
|
32
|
+
const specifiersMatch = trimmed.match(/import\s+\{([^}]+)\}/);
|
|
33
|
+
if (!specifiersMatch) {
|
|
34
|
+
// Not a destructured import, or it's a default/namespace import
|
|
35
|
+
// These are runtime imports unless marked with "import type"
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
38
|
+
const specifiers = specifiersMatch[1];
|
|
39
|
+
// Split by comma and check each specifier
|
|
40
|
+
const items = specifiers.split(',').map(s => s.trim());
|
|
41
|
+
// Check if ALL items are type-only (prefixed with "type ")
|
|
42
|
+
const allTypeOnly = items.every(item => {
|
|
43
|
+
// Match: "type Foo" or "type Foo as Bar"
|
|
44
|
+
return /^type\s+\w+/.test(item);
|
|
45
|
+
});
|
|
46
|
+
// If all are type-only, this import has no runtime imports
|
|
47
|
+
// Otherwise, it has at least one runtime import
|
|
48
|
+
return !allTypeOnly;
|
|
49
|
+
};
|
|
50
|
+
// Pattern 1: Standard ES module imports (handles multiline)
|
|
51
|
+
// Matches: import { ... } from "path", import Foo from "path", import Foo, { ... } from "path"
|
|
52
|
+
const importRegex = /import\s+(?:type\s+)?(\{[\s\S]*?\}|\*\s+as\s+\w+|\w+(?:\s*,\s*\{[\s\S]*?\})?)\s+from\s+['"]([^'"]+)['"]/g;
|
|
53
|
+
let match;
|
|
54
|
+
while ((match = importRegex.exec(source)) !== null) {
|
|
55
|
+
const fullMatch = match[0];
|
|
56
|
+
match[1];
|
|
57
|
+
const importPath = match[2];
|
|
58
|
+
// Skip type-only imports
|
|
59
|
+
if (fullMatch.match(/^import\s+type\s+/)) {
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
// Skip if it's a mixed import with only types
|
|
63
|
+
if (!hasRuntimeImports(fullMatch)) {
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
if (importPath && !seenPaths.has(importPath)) {
|
|
67
|
+
seenPaths.add(importPath);
|
|
68
|
+
imports.push({
|
|
69
|
+
path: importPath,
|
|
70
|
+
originalLine: fullMatch,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// Pattern 1b: Side-effect imports - import "path"
|
|
75
|
+
const sideEffectRegex = /import\s+['"]([^'"]+)['"]/g;
|
|
76
|
+
while ((match = sideEffectRegex.exec(source)) !== null) {
|
|
77
|
+
const importPath = match[1];
|
|
78
|
+
if (importPath && !seenPaths.has(importPath)) {
|
|
79
|
+
seenPaths.add(importPath);
|
|
80
|
+
imports.push({
|
|
81
|
+
path: importPath,
|
|
82
|
+
originalLine: match[0],
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// Pattern 2: Dynamic imports - import("path")
|
|
87
|
+
const dynamicImportPattern = /import\s*\(\s*['"]([^'"]+)['"]\s*\)/g;
|
|
88
|
+
while ((match = dynamicImportPattern.exec(source)) !== null) {
|
|
89
|
+
const importPath = match[1];
|
|
90
|
+
if (importPath && !seenPaths.has(importPath)) {
|
|
91
|
+
seenPaths.add(importPath);
|
|
92
|
+
imports.push({
|
|
93
|
+
path: importPath,
|
|
94
|
+
originalLine: match[0],
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
// Pattern 3: Export from - export ... from "path"
|
|
99
|
+
// Skip export type statements (e.g., export type { Foo } from "module")
|
|
100
|
+
const exportFromPattern = /export\s+(?:\{[^}]*\}|\*|\w+)\s+from\s+['"]([^'"]+)['"]/g;
|
|
101
|
+
while ((match = exportFromPattern.exec(source)) !== null) {
|
|
102
|
+
const fullMatch = match[0];
|
|
103
|
+
// Skip type-only exports: export type ... from "module"
|
|
104
|
+
if (/^export\s+type\s+/.test(fullMatch)) {
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
const importPath = match[1];
|
|
108
|
+
if (importPath && !seenPaths.has(importPath)) {
|
|
109
|
+
seenPaths.add(importPath);
|
|
110
|
+
imports.push({
|
|
111
|
+
path: importPath,
|
|
112
|
+
originalLine: fullMatch,
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return imports;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* This function will transpile the given ts/tsx code to js code
|
|
120
|
+
* // also it will return the dependencies of the file
|
|
121
|
+
*
|
|
122
|
+
* @returns Map of originalImportPath -> resolvedAbsolutePath
|
|
123
|
+
*/
|
|
124
|
+
async function parseImports(source, filePath) {
|
|
125
|
+
try {
|
|
126
|
+
// Skip .d.ts files - they're type declarations, not runtime code
|
|
127
|
+
if (filePath.endsWith(".d.ts")) {
|
|
128
|
+
return new Map();
|
|
129
|
+
}
|
|
130
|
+
// Try es-module-lexer first (faster and more accurate for simple cases)
|
|
131
|
+
try {
|
|
132
|
+
const [imports] = await parse(source);
|
|
133
|
+
if (imports && imports.length > 0) {
|
|
134
|
+
return await resolveImports(imports, filePath);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
catch (lexerError) {
|
|
138
|
+
// es-module-lexer failed, fall back to regex-based extraction
|
|
139
|
+
// This is common with TypeScript files that have complex syntax
|
|
140
|
+
}
|
|
141
|
+
// Fallback: Use regex-based extraction (more forgiving with TypeScript)
|
|
142
|
+
const regexImports = extractImportPathsWithRegex(source);
|
|
143
|
+
const resolvedImports = new Map();
|
|
144
|
+
for (const { path: importPath } of regexImports) {
|
|
145
|
+
// Skip node built-ins and external packages
|
|
146
|
+
if (isNodeBuiltin(importPath)) {
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
// Skip external node_modules packages (not starting with . or alias)
|
|
150
|
+
if (!importPath.startsWith(".") && !tsconfigManager.isAlias(importPath)) {
|
|
151
|
+
continue;
|
|
152
|
+
}
|
|
153
|
+
let resolvedPath = null;
|
|
154
|
+
// Handle alias imports
|
|
155
|
+
if (tsconfigManager.isAlias(importPath)) {
|
|
156
|
+
resolvedPath = await resolveAliasImport(importPath);
|
|
157
|
+
}
|
|
158
|
+
else if (importPath.startsWith(".")) {
|
|
159
|
+
// Handle relative imports
|
|
160
|
+
resolvedPath = await resolveRelativeImport(importPath, filePath);
|
|
161
|
+
}
|
|
162
|
+
if (resolvedPath) {
|
|
163
|
+
resolvedImports.set(importPath, resolvedPath);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return resolvedImports;
|
|
167
|
+
}
|
|
168
|
+
catch (error) {
|
|
169
|
+
console.error(`Error parsing imports for ${filePath}:`, error);
|
|
170
|
+
return new Map();
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
async function resolveImports(imports, filePath) {
|
|
174
|
+
const resolvedImports = new Map();
|
|
175
|
+
for (const imp of imports) {
|
|
176
|
+
const importPath = imp.n;
|
|
177
|
+
if (!importPath)
|
|
178
|
+
continue;
|
|
179
|
+
// Skip node built-ins and external packages
|
|
180
|
+
if (isNodeBuiltin(importPath)) {
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
183
|
+
// Skip external node_modules packages (not starting with . or alias)
|
|
184
|
+
if (!importPath.startsWith(".") && !tsconfigManager.isAlias(importPath)) {
|
|
185
|
+
continue;
|
|
186
|
+
}
|
|
187
|
+
let resolvedPath = null;
|
|
188
|
+
// Handle alias imports (e.g., app/users/services/get-users.service)
|
|
189
|
+
if (tsconfigManager.isAlias(importPath)) {
|
|
190
|
+
resolvedPath = await resolveAliasImport(importPath);
|
|
191
|
+
}
|
|
192
|
+
else if (importPath.startsWith(".")) {
|
|
193
|
+
// Handle relative imports (e.g., ./../services/get-user.service)
|
|
194
|
+
resolvedPath = await resolveRelativeImport(importPath, filePath);
|
|
195
|
+
}
|
|
196
|
+
if (resolvedPath) {
|
|
197
|
+
// Store mapping: original import path -> resolved absolute path
|
|
198
|
+
resolvedImports.set(importPath, resolvedPath);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
return resolvedImports;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Resolve alias imports to actual file paths with extensions
|
|
205
|
+
* Example: app/users/services/get-users.service -> /absolute/path/to/src/app/users/services/get-users.service.ts
|
|
206
|
+
*/
|
|
207
|
+
async function resolveAliasImport(importPath) {
|
|
208
|
+
// Use tsconfig manager to resolve the alias to an absolute path
|
|
209
|
+
const resolvedBase = tsconfigManager.resolveAliasToAbsolute(importPath);
|
|
210
|
+
if (!resolvedBase)
|
|
211
|
+
return null;
|
|
212
|
+
// Try to resolve with extensions
|
|
213
|
+
const resolvedPath = await tryResolveWithExtensions(resolvedBase);
|
|
214
|
+
return resolvedPath;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Resolve relative imports to actual file paths
|
|
218
|
+
* Example: ./../services/get-user.service -> /absolute/path/to/services/get-user.service.ts
|
|
219
|
+
*/
|
|
220
|
+
async function resolveRelativeImport(importPath, currentFilePath) {
|
|
221
|
+
const dir = path.dirname(currentFilePath);
|
|
222
|
+
// Use path.resolve to handle .. and . properly, then normalize to forward slashes
|
|
223
|
+
const resolvedBase = Path.normalize(path.resolve(dir, importPath));
|
|
224
|
+
// Try to resolve with extensions
|
|
225
|
+
const resolvedPath = await tryResolveWithExtensions(resolvedBase);
|
|
226
|
+
return resolvedPath;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Try to resolve a file path by checking different extensions
|
|
230
|
+
* TypeScript/JavaScript files can be imported without extensions
|
|
231
|
+
*
|
|
232
|
+
* @TODO: For better performance, we need to check the files in files orchestrator
|
|
233
|
+
* instead of using the file system as we will be fetching all project files anyway.
|
|
234
|
+
*/
|
|
235
|
+
// Cache for file existence checks to avoid redundant filesystem calls
|
|
236
|
+
const fileExistsCache = new Map();
|
|
237
|
+
async function cachedFileExists(filePath) {
|
|
238
|
+
if (fileExistsCache.has(filePath)) {
|
|
239
|
+
return fileExistsCache.get(filePath);
|
|
240
|
+
}
|
|
241
|
+
const exists = await fileExistsAsync(filePath);
|
|
242
|
+
fileExistsCache.set(filePath, exists);
|
|
243
|
+
return exists;
|
|
244
|
+
}
|
|
245
|
+
async function tryResolveWithExtensions(basePath) {
|
|
246
|
+
// Normalize the base path first (handle Windows paths)
|
|
247
|
+
const normalizedBase = Path.normalize(basePath);
|
|
248
|
+
// List of extensions to try, in order of preference
|
|
249
|
+
const extensions = [".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs"];
|
|
250
|
+
const validExtensions = new Set(extensions);
|
|
251
|
+
// If the path already has a VALID code file extension, check if it exists
|
|
252
|
+
const ext = path.extname(normalizedBase);
|
|
253
|
+
if (ext && validExtensions.has(ext)) {
|
|
254
|
+
if (await cachedFileExists(normalizedBase)) {
|
|
255
|
+
return normalizedBase;
|
|
256
|
+
}
|
|
257
|
+
// If explicit extension doesn't exist, return null
|
|
258
|
+
return null;
|
|
259
|
+
}
|
|
260
|
+
// Try all extensions in parallel for better performance
|
|
261
|
+
const pathsToCheck = extensions.map(extension => normalizedBase + extension);
|
|
262
|
+
const results = await Promise.all(pathsToCheck.map(async (p) => ({ path: p, exists: await cachedFileExists(p) })));
|
|
263
|
+
// Return the first one that exists (in order of preference)
|
|
264
|
+
for (const result of results) {
|
|
265
|
+
if (result.exists) {
|
|
266
|
+
return result.path;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
// Try index files in directory
|
|
270
|
+
if (await isDirectoryAsync(normalizedBase)) {
|
|
271
|
+
const indexPaths = extensions.map(extension => Path.join(normalizedBase, `index${extension}`));
|
|
272
|
+
const indexResults = await Promise.all(indexPaths.map(async (p) => ({ path: p, exists: await cachedFileExists(p) })));
|
|
273
|
+
for (const result of indexResults) {
|
|
274
|
+
if (result.exists) {
|
|
275
|
+
return result.path;
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
return null;
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Check if import is a Node.js built-in module
|
|
283
|
+
*/
|
|
284
|
+
function isNodeBuiltin(importPath) {
|
|
285
|
+
const builtins = [
|
|
286
|
+
"fs",
|
|
287
|
+
"path",
|
|
288
|
+
"http",
|
|
289
|
+
"https",
|
|
290
|
+
"crypto",
|
|
291
|
+
"stream",
|
|
292
|
+
"util",
|
|
293
|
+
"events",
|
|
294
|
+
"buffer",
|
|
295
|
+
"child_process",
|
|
296
|
+
"os",
|
|
297
|
+
"url",
|
|
298
|
+
"querystring",
|
|
299
|
+
"zlib",
|
|
300
|
+
"net",
|
|
301
|
+
"tls",
|
|
302
|
+
"dns",
|
|
303
|
+
"dgram",
|
|
304
|
+
"cluster",
|
|
305
|
+
"worker_threads",
|
|
306
|
+
"perf_hooks",
|
|
307
|
+
"async_hooks",
|
|
308
|
+
"timers",
|
|
309
|
+
"readline",
|
|
310
|
+
"repl",
|
|
311
|
+
"vm",
|
|
312
|
+
"assert",
|
|
313
|
+
"console",
|
|
314
|
+
"process",
|
|
315
|
+
"v8",
|
|
316
|
+
];
|
|
317
|
+
// Check for node: prefix or direct builtin name
|
|
318
|
+
if (importPath.startsWith("node:"))
|
|
319
|
+
return true;
|
|
320
|
+
const moduleName = importPath.split("/")[0];
|
|
321
|
+
return builtins.includes(moduleName);
|
|
322
|
+
}export{parseImports};//# sourceMappingURL=parse-imports.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-imports.js","sources":["../../src/dev2-server/parse-imports.ts"],"sourcesContent":[null],"names":[],"mappings":"2MAMA;;;AAGG;AACH,SAAS,2BAA2B,CAClC,MAAc,EAAA;IAEd,MAAM,OAAO,GAAkD,EAAE,CAAC;AAClE,IAAA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;AAEpC;;;;;;AAMG;AACH,IAAA,MAAM,gBAAgB,GAAG,CAAC,IAAY,KAAa;AACjD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AAC5B,QAAA,QACE,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC;YAClC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,EAC1C;AACJ,KAAC,CAAC;AAEF;;;;AAIG;AACH,IAAA,MAAM,iBAAiB,GAAG,CAAC,IAAY,KAAa;AAClD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;;AAG5B,QAAA,IAAI,gBAAgB,CAAC,OAAO,CAAC,EAAE;AAC7B,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;;QAGD,MAAM,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC9D,IAAI,CAAC,eAAe,EAAE;;;AAGpB,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AAED,QAAA,MAAM,UAAU,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;;QAGtC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;;QAGvD,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,IAAG;;AAErC,YAAA,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,SAAC,CAAC,CAAC;;;QAIH,OAAO,CAAC,WAAW,CAAC;AACtB,KAAC,CAAC;;;IAIF,MAAM,WAAW,GAAG,0GAA0G,CAAC;AAE/H,IAAA,IAAI,KAAK,CAAC;AACV,IAAA,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE;AAClD,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3B,QAAwB,KAAK,CAAC,CAAC,EAAE;AACjC,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;;AAG5B,QAAA,IAAI,SAAS,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE;YACxC,SAAS;AACV,SAAA;;AAGD,QAAA,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE;YACjC,SAAS;AACV,SAAA;QAED,IAAI,UAAU,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AAC5C,YAAA,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC;AACX,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,YAAY,EAAE,SAAS;AACxB,aAAA,CAAC,CAAC;AACJ,SAAA;AACF,KAAA;;IAGD,MAAM,eAAe,GAAG,4BAA4B,CAAC;AACrD,IAAA,OAAO,CAAC,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE;AACtD,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,UAAU,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AAC5C,YAAA,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC;AACX,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;AACvB,aAAA,CAAC,CAAC;AACJ,SAAA;AACF,KAAA;;IAGD,MAAM,oBAAoB,GAAG,sCAAsC,CAAC;AACpE,IAAA,OAAO,CAAC,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE;AAC3D,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,UAAU,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AAC5C,YAAA,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC;AACX,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;AACvB,aAAA,CAAC,CAAC;AACJ,SAAA;AACF,KAAA;;;IAID,MAAM,iBAAiB,GACrB,0DAA0D,CAAC;AAC7D,IAAA,OAAO,CAAC,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE;AACxD,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;;AAG3B,QAAA,IAAI,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACvC,SAAS;AACV,SAAA;AAED,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,UAAU,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AAC5C,YAAA,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC;AACX,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,YAAY,EAAE,SAAS;AACxB,aAAA,CAAC,CAAC;AACJ,SAAA;AACF,KAAA;AAED,IAAA,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;AAKG;AACI,eAAe,YAAY,CAAC,MAAc,EAAE,QAAgB,EAAA;IACjE,IAAI;;AAEF,QAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;YAC9B,OAAO,IAAI,GAAG,EAAkB,CAAC;AAClC,SAAA;;QAGD,IAAI;YACF,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;AACtC,YAAA,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACjC,gBAAA,OAAO,MAAM,cAAc,CAAC,OAA4B,EAAE,QAAQ,CAAC,CAAC;AACrE,aAAA;AACF,SAAA;AAAC,QAAA,OAAO,UAAU,EAAE;;;AAGpB,SAAA;;AAGD,QAAA,MAAM,YAAY,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;AACzD,QAAA,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;QAElD,KAAK,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,YAAY,EAAE;;AAE/C,YAAA,IAAI,aAAa,CAAC,UAAU,CAAC,EAAE;gBAC7B,SAAS;AACV,aAAA;;AAGD,YAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;gBACvE,SAAS;AACV,aAAA;YAED,IAAI,YAAY,GAAkB,IAAI,CAAC;;AAGvC,YAAA,IAAI,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AACvC,gBAAA,YAAY,GAAG,MAAM,kBAAkB,CAAC,UAAU,CAAC,CAAC;AACrD,aAAA;AAAM,iBAAA,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;;gBAErC,YAAY,GAAG,MAAM,qBAAqB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AAClE,aAAA;AAED,YAAA,IAAI,YAAY,EAAE;AAChB,gBAAA,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;AAC/C,aAAA;AACF,SAAA;AAED,QAAA,OAAO,eAAe,CAAC;AACxB,KAAA;AAAC,IAAA,OAAO,KAAK,EAAE;QACd,OAAO,CAAC,KAAK,CAAC,CAAA,0BAAA,EAA6B,QAAQ,CAAG,CAAA,CAAA,EAAE,KAAK,CAAC,CAAC;QAC/D,OAAO,IAAI,GAAG,EAAkB,CAAC;AAClC,KAAA;AACH,CAAC;AAED,eAAe,cAAc,CAAC,OAA0B,EAAE,QAAgB,EAAA;AACxE,IAAA,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;AAElD,IAAA,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;AACzB,QAAA,MAAM,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC;AAEzB,QAAA,IAAI,CAAC,UAAU;YAAE,SAAS;;AAG1B,QAAA,IAAI,aAAa,CAAC,UAAU,CAAC,EAAE;YAC7B,SAAS;AACV,SAAA;;AAGD,QAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YACvE,SAAS;AACV,SAAA;QAED,IAAI,YAAY,GAAkB,IAAI,CAAC;;AAGvC,QAAA,IAAI,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AACvC,YAAA,YAAY,GAAG,MAAM,kBAAkB,CAAC,UAAU,CAAC,CAAC;AACrD,SAAA;AAAM,aAAA,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;;YAErC,YAAY,GAAG,MAAM,qBAAqB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AAClE,SAAA;AAED,QAAA,IAAI,YAAY,EAAE;;AAEhB,YAAA,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;AAC/C,SAAA;AACF,KAAA;AAED,IAAA,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;;AAGG;AACH,eAAe,kBAAkB,CAAC,UAAkB,EAAA;;IAElD,MAAM,YAAY,GAAG,eAAe,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;AAExE,IAAA,IAAI,CAAC,YAAY;AAAE,QAAA,OAAO,IAAI,CAAC;;AAG/B,IAAA,MAAM,YAAY,GAAG,MAAM,wBAAwB,CAAC,YAAY,CAAC,CAAC;AAElE,IAAA,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;AAGG;AACH,eAAe,qBAAqB,CAClC,UAAkB,EAClB,eAAuB,EAAA;IAEvB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;;AAE1C,IAAA,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;;AAGnE,IAAA,MAAM,YAAY,GAAG,MAAM,wBAAwB,CAAC,YAAY,CAAC,CAAC;AAElE,IAAA,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;;AAMG;AACH;AACA,MAAM,eAAe,GAAG,IAAI,GAAG,EAAmB,CAAC;AAEnD,eAAe,gBAAgB,CAAC,QAAgB,EAAA;AAC9C,IAAA,IAAI,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AACjC,QAAA,OAAO,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;AACvC,KAAA;AACD,IAAA,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;AAC/C,IAAA,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACtC,IAAA,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,eAAe,wBAAwB,CACrC,QAAgB,EAAA;;IAGhB,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;;AAGhD,IAAA,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAClE,IAAA,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;;IAG5C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACzC,IAAI,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACnC,QAAA,IAAI,MAAM,gBAAgB,CAAC,cAAc,CAAC,EAAE;AAC1C,YAAA,OAAO,cAAc,CAAC;AACvB,SAAA;;AAED,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;;AAGD,IAAA,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,IAAI,cAAc,GAAG,SAAS,CAAC,CAAC;AAC7E,IAAA,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,YAAY,CAAC,GAAG,CAAC,OAAM,CAAC,MAAK,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAC9E,CAAC;;AAGF,IAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;QAC5B,IAAI,MAAM,CAAC,MAAM,EAAE;YACjB,OAAO,MAAM,CAAC,IAAI,CAAC;AACpB,SAAA;AACF,KAAA;;AAGD,IAAA,IAAI,MAAM,gBAAgB,CAAC,cAAc,CAAC,EAAE;QAC1C,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,IACzC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,SAAS,CAAA,CAAE,CAAC,CAC/C,CAAC;AACF,QAAA,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CACpC,UAAU,CAAC,GAAG,CAAC,OAAM,CAAC,MAAK,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAC5E,CAAC;AAEF,QAAA,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE;YACjC,IAAI,MAAM,CAAC,MAAM,EAAE;gBACjB,OAAO,MAAM,CAAC,IAAI,CAAC;AACpB,aAAA;AACF,SAAA;AACF,KAAA;AAED,IAAA,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;AAEG;AACH,SAAS,aAAa,CAAC,UAAkB,EAAA;AACvC,IAAA,MAAM,QAAQ,GAAG;QACf,IAAI;QACJ,MAAM;QACN,MAAM;QACN,OAAO;QACP,QAAQ;QACR,QAAQ;QACR,MAAM;QACN,QAAQ;QACR,QAAQ;QACR,eAAe;QACf,IAAI;QACJ,KAAK;QACL,aAAa;QACb,MAAM;QACN,KAAK;QACL,KAAK;QACL,KAAK;QACL,OAAO;QACP,SAAS;QACT,gBAAgB;QAChB,YAAY;QACZ,aAAa;QACb,QAAQ;QACR,UAAU;QACV,MAAM;QACN,IAAI;QACJ,QAAQ;QACR,SAAS;QACT,SAAS;QACT,IAAI;KACL,CAAC;;AAGF,IAAA,IAAI,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC;AAAE,QAAA,OAAO,IAAI,CAAC;IAEhD,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,IAAA,OAAO,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AACvC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export declare class Path {
|
|
2
|
+
/**
|
|
3
|
+
* Convert the given absolute path to a relative path
|
|
4
|
+
*/
|
|
5
|
+
static toRelative(absolutePath: string): string;
|
|
6
|
+
/**
|
|
7
|
+
* Get relative path of the given path
|
|
8
|
+
*/
|
|
9
|
+
static relative(relativePath: string): string;
|
|
10
|
+
/**
|
|
11
|
+
* Get normalized absolute path of the given path
|
|
12
|
+
*/
|
|
13
|
+
static toNormalizedAbsolute(relativePath: string): string;
|
|
14
|
+
/**
|
|
15
|
+
* Get absolute path of the given path
|
|
16
|
+
*/
|
|
17
|
+
static toAbsolute(relativePath: string): string;
|
|
18
|
+
/**
|
|
19
|
+
* Normalize the given path (convert backslashes to forward slashes)
|
|
20
|
+
*/
|
|
21
|
+
static normalize(filePath: string): string;
|
|
22
|
+
/**
|
|
23
|
+
* Join paths and normalize
|
|
24
|
+
*/
|
|
25
|
+
static join(...paths: string[]): string;
|
|
26
|
+
/**
|
|
27
|
+
* Get directory name of a path
|
|
28
|
+
*/
|
|
29
|
+
static dirname(filePath: string): string;
|
|
30
|
+
/**
|
|
31
|
+
* Get base name of a path
|
|
32
|
+
*/
|
|
33
|
+
static basename(filePath: string, ext?: string): string;
|
|
34
|
+
/**
|
|
35
|
+
* Get extension of a path
|
|
36
|
+
*/
|
|
37
|
+
static extname(filePath: string): string;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=path.d.ts.map
|