@warlock.js/core 3.0.40 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +117 -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 +42 -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 +86 -0
- package/cjs/dev2-server/dependency-graph.d.ts.map +1 -0
- package/cjs/dev2-server/dependency-graph.js +225 -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 +117 -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 +212 -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 +110 -0
- package/cjs/dev2-server/file-manager.d.ts.map +1 -0
- package/cjs/dev2-server/file-manager.js +314 -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 +271 -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 +219 -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 +287 -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 +229 -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 +268 -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 +79 -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 +6 -0
- package/cjs/dev2-server/transpile-file.d.ts.map +1 -0
- package/cjs/dev2-server/transpile-file.js +14 -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 +104 -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/router.d.ts +14 -8
- package/cjs/router/router.d.ts.map +1 -1
- package/cjs/router/router.js +77 -35
- package/cjs/router/router.js.map +1 -1
- package/cjs/router/types.d.ts +8 -0
- 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 +117 -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 +42 -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 +86 -0
- package/esm/dev2-server/dependency-graph.d.ts.map +1 -0
- package/esm/dev2-server/dependency-graph.js +225 -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 +117 -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 +212 -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 +110 -0
- package/esm/dev2-server/file-manager.d.ts.map +1 -0
- package/esm/dev2-server/file-manager.js +314 -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 +271 -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 +219 -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 +287 -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 +229 -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 +268 -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 +79 -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 +6 -0
- package/esm/dev2-server/transpile-file.d.ts.map +1 -0
- package/esm/dev2-server/transpile-file.js +14 -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 +104 -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/router.d.ts +14 -8
- package/esm/router/router.d.ts.map +1 -1
- package/esm/router/router.js +78 -36
- package/esm/router/router.js.map +1 -1
- package/esm/router/types.d.ts +8 -0
- 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/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/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,212 @@
|
|
|
1
|
+
import {colors}from'@mongez/copper';import events from'@mongez/events';import {bootstrap}from'../bootstrap.js';import {registerConfigHandlers}from'./config-handlers.js';import {ConfigLoader}from'./config-loader.js';import {CacheConnector}from'./connectors/cache-connector.js';import {DatabaseConnector}from'./connectors/database-connector.js';import {HttpConnector}from'./connectors/http-connector.js';import {devLogSection,devLogInfo,devLogReady,devServeLog}from'./dev-logger.js';import {FilesOrchestrator}from'./files-orchestrator.js';import {LayerExecutor}from'./layer-executor.js';import {ModuleLoader}from'./module-loader.js';import {initializeRuntimeImportHelper}from'./runtime-import-helper.js';import {SpecialFilesCollector}from'./special-files-collector.js';/**
|
|
2
|
+
* Development Server
|
|
3
|
+
* Main coordinator for the dev server
|
|
4
|
+
* Manages file system, connectors, and hot reloading
|
|
5
|
+
*/
|
|
6
|
+
class DevelopmentServer {
|
|
7
|
+
/**
|
|
8
|
+
* Special files collector - categorizes and provides access to special files
|
|
9
|
+
*/
|
|
10
|
+
specialFilesCollector = new SpecialFilesCollector();
|
|
11
|
+
/**
|
|
12
|
+
* Files orchestrator - manages file discovery, watching, and dependency graph
|
|
13
|
+
*/
|
|
14
|
+
filesOrchestrator = new FilesOrchestrator(this.specialFilesCollector);
|
|
15
|
+
/**
|
|
16
|
+
* Config loader - dynamically loads configuration files
|
|
17
|
+
*/
|
|
18
|
+
configLoader = new ConfigLoader();
|
|
19
|
+
/**
|
|
20
|
+
* Module loader - dynamically loads application modules
|
|
21
|
+
*/
|
|
22
|
+
moduleLoader;
|
|
23
|
+
/**
|
|
24
|
+
* Layer executor - handles HMR and FSR execution
|
|
25
|
+
*/
|
|
26
|
+
layerExecutor;
|
|
27
|
+
/**
|
|
28
|
+
* Registered connectors (Database, HTTP, Cache, etc.)
|
|
29
|
+
* Sorted by priority
|
|
30
|
+
*/
|
|
31
|
+
connectors = [];
|
|
32
|
+
/**
|
|
33
|
+
* Whether the server is currently running
|
|
34
|
+
*/
|
|
35
|
+
running = false;
|
|
36
|
+
constructor() {
|
|
37
|
+
devLogSection("Starting Development Server...");
|
|
38
|
+
// Register special config handlers
|
|
39
|
+
registerConfigHandlers(this.configLoader);
|
|
40
|
+
// Register default connectors
|
|
41
|
+
this.registerConnector(new DatabaseConnector());
|
|
42
|
+
this.registerConnector(new CacheConnector());
|
|
43
|
+
this.registerConnector(new HttpConnector());
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Register a connector
|
|
47
|
+
* Connectors are automatically sorted by priority
|
|
48
|
+
*/
|
|
49
|
+
registerConnector(connector) {
|
|
50
|
+
this.connectors.push(connector);
|
|
51
|
+
// Sort by priority (lower numbers first)
|
|
52
|
+
this.connectors.sort((a, b) => a.priority - b.priority);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Initialize and start the development server
|
|
56
|
+
*/
|
|
57
|
+
async start() {
|
|
58
|
+
try {
|
|
59
|
+
// STEP 1: Initialize file system (discover and process files)
|
|
60
|
+
await this.filesOrchestrator.init();
|
|
61
|
+
devLogInfo("Initializing special files...");
|
|
62
|
+
// STEP 2: Collect special files
|
|
63
|
+
this.specialFilesCollector.collect(this.filesOrchestrator.getFiles());
|
|
64
|
+
devLogInfo("Bootstrapping...");
|
|
65
|
+
// STEP 3: Bootstrap (load environment variables)
|
|
66
|
+
await bootstrap();
|
|
67
|
+
devLogInfo("Initializing runtime import helper...");
|
|
68
|
+
// STEP 4: Initialize runtime import helper (for HMR cache busting)
|
|
69
|
+
initializeRuntimeImportHelper();
|
|
70
|
+
devLogInfo("Loading configuration files...");
|
|
71
|
+
// STEP 5: Load configuration files
|
|
72
|
+
const configFiles = this.specialFilesCollector.getConfigFiles();
|
|
73
|
+
await this.configLoader.loadAll(configFiles);
|
|
74
|
+
devLogInfo("Setting up event listeners...");
|
|
75
|
+
// STEP 6: Setup event listeners
|
|
76
|
+
this.setupEventListeners();
|
|
77
|
+
// STEP 7: Load application modules
|
|
78
|
+
devLogInfo("Loading application modules...");
|
|
79
|
+
this.moduleLoader = new ModuleLoader(this.specialFilesCollector);
|
|
80
|
+
await this.moduleLoader.loadAll();
|
|
81
|
+
// STEP 8: Initialize connectors
|
|
82
|
+
devLogInfo("Initializing connectors...");
|
|
83
|
+
this.initConnectors();
|
|
84
|
+
// STEP 9: Initialize layer executor
|
|
85
|
+
devLogInfo("Initializing layer executor...");
|
|
86
|
+
this.layerExecutor = new LayerExecutor(this.filesOrchestrator.getDependencyGraph(), this.specialFilesCollector, this.connectors, this.moduleLoader, this.configLoader);
|
|
87
|
+
// Mark as running
|
|
88
|
+
this.running = true;
|
|
89
|
+
devLogReady("Development Server is ready!");
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
devServeLog(colors.redBright(`❌ Failed to start Development Server: ${error}`));
|
|
93
|
+
await this.shutdown();
|
|
94
|
+
throw error;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Initialize all registered connectors in priority order
|
|
99
|
+
*/
|
|
100
|
+
async initConnectors() {
|
|
101
|
+
devLogInfo("Initializing connectors...");
|
|
102
|
+
for (const connector of this.connectors) {
|
|
103
|
+
connector.start().catch((error) => {
|
|
104
|
+
devServeLog(colors.redBright(`❌ Failed to initialize ${connector.name}: ${error}`));
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Setup event listeners for file changes
|
|
110
|
+
*/
|
|
111
|
+
setupEventListeners() {
|
|
112
|
+
// Listen to batch completion events from FileEventHandler
|
|
113
|
+
events.on("dev-server:batch-complete", (batch) => {
|
|
114
|
+
this.handleBatchComplete(batch);
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Handle batch completion event
|
|
119
|
+
* Triggered when a batch of files has been processed
|
|
120
|
+
*/
|
|
121
|
+
async handleBatchComplete(batch) {
|
|
122
|
+
// Only execute reload if server is running (skip during initial startup)
|
|
123
|
+
if (!this.running || !this.layerExecutor) {
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
// Get all changed files (added + changed + deleted)
|
|
127
|
+
const allChangedPaths = [...batch.added, ...batch.changed, ...batch.deleted];
|
|
128
|
+
if (allChangedPaths.length === 0) {
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
// Delegate to layer executor for batch reload
|
|
132
|
+
try {
|
|
133
|
+
await this.layerExecutor.executeBatchReload(allChangedPaths, this.filesOrchestrator.getFiles());
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
devServeLog(colors.redBright(`❌ Failed to execute batch reload: ${error}`));
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* @deprecated Use LayerExecutor instead
|
|
141
|
+
*/
|
|
142
|
+
async handleFullServerRestart(connectorsToRestart, affectedFiles) {
|
|
143
|
+
devServeLog(colors.yellowBright(`🔄 FSR: Restarting ${connectorsToRestart.length} connector(s)...`));
|
|
144
|
+
devServeLog(colors.yellowBright(` Affected files: ${affectedFiles.length} file(s)`));
|
|
145
|
+
for (const connector of connectorsToRestart) {
|
|
146
|
+
try {
|
|
147
|
+
await connector.restart();
|
|
148
|
+
}
|
|
149
|
+
catch (error) {
|
|
150
|
+
devServeLog(colors.redBright(`❌ Failed to restart ${connector.name}: ${error}`));
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
devServeLog(colors.greenBright(`✅ FSR completed`));
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Gracefully shutdown the development server
|
|
157
|
+
*/
|
|
158
|
+
async shutdown() {
|
|
159
|
+
if (!this.running) {
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
devServeLog(colors.redBright("🛑 Shutting down Development Server..."));
|
|
163
|
+
this.running = false;
|
|
164
|
+
// Shutdown connectors in reverse priority order
|
|
165
|
+
const reversedConnectors = [...this.connectors].reverse();
|
|
166
|
+
for (const connector of reversedConnectors) {
|
|
167
|
+
try {
|
|
168
|
+
await connector.shutdown();
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
devServeLog(colors.redBright(`❌ Failed to shutdown ${connector.name}: ${error}`));
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
devServeLog(colors.greenBright("✅ Development Server stopped"));
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Check if server is running
|
|
178
|
+
*/
|
|
179
|
+
isRunning() {
|
|
180
|
+
return this.running;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Get files orchestrator (for advanced usage)
|
|
184
|
+
*/
|
|
185
|
+
getFilesOrchestrator() {
|
|
186
|
+
return this.filesOrchestrator;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Get special files collector
|
|
190
|
+
*/
|
|
191
|
+
getSpecialFilesCollector() {
|
|
192
|
+
return this.specialFilesCollector;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Get config loader
|
|
196
|
+
*/
|
|
197
|
+
getConfigLoader() {
|
|
198
|
+
return this.configLoader;
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Get module loader
|
|
202
|
+
*/
|
|
203
|
+
getModuleLoader() {
|
|
204
|
+
return this.moduleLoader;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Get registered connectors
|
|
208
|
+
*/
|
|
209
|
+
getConnectors() {
|
|
210
|
+
return [...this.connectors];
|
|
211
|
+
}
|
|
212
|
+
}export{DevelopmentServer};//# sourceMappingURL=development-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"development-server.js","sources":["../../src/dev2-server/development-server.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/dev2-server/events.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB;;;CAG7B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sources":["../../src/dev2-server/events.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAa,MAAA,iBAAiB,GAAG;AAC/B,IAAA,kBAAkB,EAAE,+BAA+B;AACnD,IAAA,UAAU,EAAE,uBAAuB;"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { FileOperations } from "./file-operations";
|
|
2
|
+
import type { ManifestManager } from "./manifest-manager";
|
|
3
|
+
/**
|
|
4
|
+
* File Event Handler
|
|
5
|
+
* Handles runtime file system events (change, add, delete)
|
|
6
|
+
* Collects events and processes them in batches for optimal performance
|
|
7
|
+
*/
|
|
8
|
+
export declare class FileEventHandler {
|
|
9
|
+
private readonly fileOperations;
|
|
10
|
+
private readonly manifest;
|
|
11
|
+
/**
|
|
12
|
+
* Pending events to process in batch
|
|
13
|
+
*/
|
|
14
|
+
private pendingChanges;
|
|
15
|
+
private pendingAdds;
|
|
16
|
+
private pendingDeletes;
|
|
17
|
+
/**
|
|
18
|
+
* Debounced batch processor
|
|
19
|
+
* Waits for events to settle, then processes all at once
|
|
20
|
+
*/
|
|
21
|
+
private readonly processPendingEvents;
|
|
22
|
+
/**
|
|
23
|
+
* Constructor
|
|
24
|
+
*/
|
|
25
|
+
constructor(fileOperations: FileOperations, manifest: ManifestManager);
|
|
26
|
+
/**
|
|
27
|
+
* Handle file change event
|
|
28
|
+
* Collects events for batch processing
|
|
29
|
+
*/
|
|
30
|
+
handleFileChange(absolutePath: string): void;
|
|
31
|
+
/**
|
|
32
|
+
* Handle new file added
|
|
33
|
+
* Collects events for batch processing
|
|
34
|
+
*/
|
|
35
|
+
handleFileAdd(absolutePath: string): void;
|
|
36
|
+
/**
|
|
37
|
+
* Handle file deleted
|
|
38
|
+
* Collects events for batch processing
|
|
39
|
+
*/
|
|
40
|
+
handleFileDelete(absolutePath: string): void;
|
|
41
|
+
/**
|
|
42
|
+
* Process all pending events in batch
|
|
43
|
+
*/
|
|
44
|
+
private processBatch;
|
|
45
|
+
/**
|
|
46
|
+
* Process batch of changed files
|
|
47
|
+
*/
|
|
48
|
+
private processBatchChanges;
|
|
49
|
+
/**
|
|
50
|
+
* Process batch of added files
|
|
51
|
+
*/
|
|
52
|
+
private processBatchAdds;
|
|
53
|
+
/**
|
|
54
|
+
* Process batch of deleted files
|
|
55
|
+
*/
|
|
56
|
+
private processBatchDeletes;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=file-event-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-event-handler.d.ts","sourceRoot":"","sources":["../../src/dev2-server/file-event-handler.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG1D;;;;GAIG;AACH,qBAAa,gBAAgB;IAoBzB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IApB3B;;OAEG;IACH,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,cAAc,CAAqB;IAE3C;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAE7B;IAER;;OAEG;gBAEgB,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,eAAe;IAG5C;;;OAGG;IACI,gBAAgB,CAAC,YAAY,EAAE,MAAM;IAU5C;;;OAGG;IACI,aAAa,CAAC,YAAY,EAAE,MAAM;IAUzC;;;OAGG;IACI,gBAAgB,CAAC,YAAY,EAAE,MAAM;IAU5C;;OAEG;YACW,YAAY;IAqC1B;;OAEG;YACW,mBAAmB;IAgBjC;;OAEG;YACW,gBAAgB;IAqB9B;;OAEG;YACW,mBAAmB;CAQlC"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import events from'@mongez/events';import {debounce}from'@mongez/reinforcements';import {devLogSuccess}from'./dev-logger.js';import {FILE_PROCESSING_BATCH_SIZE}from'./flags.js';import {Path}from'./path.js';/**
|
|
2
|
+
* File Event Handler
|
|
3
|
+
* Handles runtime file system events (change, add, delete)
|
|
4
|
+
* Collects events and processes them in batches for optimal performance
|
|
5
|
+
*/
|
|
6
|
+
class FileEventHandler {
|
|
7
|
+
fileOperations;
|
|
8
|
+
manifest;
|
|
9
|
+
/**
|
|
10
|
+
* Pending events to process in batch
|
|
11
|
+
*/
|
|
12
|
+
pendingChanges = new Set();
|
|
13
|
+
pendingAdds = new Set();
|
|
14
|
+
pendingDeletes = new Set();
|
|
15
|
+
/**
|
|
16
|
+
* Debounced batch processor
|
|
17
|
+
* Waits for events to settle, then processes all at once
|
|
18
|
+
*/
|
|
19
|
+
processPendingEvents = debounce(async () => {
|
|
20
|
+
await this.processBatch();
|
|
21
|
+
}, 150); // Wait 250ms after last event
|
|
22
|
+
/**
|
|
23
|
+
* Constructor
|
|
24
|
+
*/
|
|
25
|
+
constructor(fileOperations, manifest) {
|
|
26
|
+
this.fileOperations = fileOperations;
|
|
27
|
+
this.manifest = manifest;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Handle file change event
|
|
31
|
+
* Collects events for batch processing
|
|
32
|
+
*/
|
|
33
|
+
handleFileChange(absolutePath) {
|
|
34
|
+
const relativePath = Path.toRelative(absolutePath);
|
|
35
|
+
// Add to pending changes
|
|
36
|
+
this.pendingChanges.add(relativePath);
|
|
37
|
+
// Trigger debounced batch processor
|
|
38
|
+
this.processPendingEvents();
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Handle new file added
|
|
42
|
+
* Collects events for batch processing
|
|
43
|
+
*/
|
|
44
|
+
handleFileAdd(absolutePath) {
|
|
45
|
+
const relativePath = Path.toRelative(absolutePath);
|
|
46
|
+
// Add to pending adds
|
|
47
|
+
this.pendingAdds.add(relativePath);
|
|
48
|
+
// Trigger debounced batch processor
|
|
49
|
+
this.processPendingEvents();
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Handle file deleted
|
|
53
|
+
* Collects events for batch processing
|
|
54
|
+
*/
|
|
55
|
+
handleFileDelete(absolutePath) {
|
|
56
|
+
const relativePath = Path.toRelative(absolutePath);
|
|
57
|
+
// Add to pending deletes
|
|
58
|
+
this.pendingDeletes.add(relativePath);
|
|
59
|
+
// Trigger debounced batch processor
|
|
60
|
+
this.processPendingEvents();
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Process all pending events in batch
|
|
64
|
+
*/
|
|
65
|
+
async processBatch() {
|
|
66
|
+
// Get snapshots of pending events
|
|
67
|
+
const changes = Array.from(this.pendingChanges);
|
|
68
|
+
const adds = Array.from(this.pendingAdds);
|
|
69
|
+
const deletes = Array.from(this.pendingDeletes);
|
|
70
|
+
// Clear pending sets
|
|
71
|
+
this.pendingChanges.clear();
|
|
72
|
+
this.pendingAdds.clear();
|
|
73
|
+
this.pendingDeletes.clear();
|
|
74
|
+
// Skip if nothing to process
|
|
75
|
+
if (changes.length === 0 && adds.length === 0 && deletes.length === 0) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
// Silent batch processing
|
|
79
|
+
// Process in order: adds first (so new files are available for import transformation),
|
|
80
|
+
// then changes (can reference newly added files), then deletes
|
|
81
|
+
await this.processBatchAdds(adds);
|
|
82
|
+
await this.processBatchChanges(changes);
|
|
83
|
+
await this.processBatchDeletes(deletes);
|
|
84
|
+
// Update dependency graph and manifest once
|
|
85
|
+
this.fileOperations.updateFileDependents();
|
|
86
|
+
this.fileOperations.syncFilesToManifest();
|
|
87
|
+
await this.manifest.save();
|
|
88
|
+
// Trigger batch completion event (for reload execution)
|
|
89
|
+
events.trigger("dev-server:batch-complete", {
|
|
90
|
+
added: adds,
|
|
91
|
+
changed: changes,
|
|
92
|
+
deleted: deletes,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Process batch of changed files
|
|
97
|
+
*/
|
|
98
|
+
async processBatchChanges(relativePaths) {
|
|
99
|
+
if (relativePaths.length === 0)
|
|
100
|
+
return;
|
|
101
|
+
const BATCH_SIZE = FILE_PROCESSING_BATCH_SIZE;
|
|
102
|
+
for (let i = 0; i < relativePaths.length; i += BATCH_SIZE) {
|
|
103
|
+
const batch = relativePaths.slice(i, i + BATCH_SIZE);
|
|
104
|
+
await Promise.all(batch.map(async (relativePath) => {
|
|
105
|
+
await this.fileOperations.updateFile(relativePath);
|
|
106
|
+
}));
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Process batch of added files
|
|
111
|
+
*/
|
|
112
|
+
async processBatchAdds(relativePaths) {
|
|
113
|
+
if (relativePaths.length === 0)
|
|
114
|
+
return;
|
|
115
|
+
const BATCH_SIZE = FILE_PROCESSING_BATCH_SIZE;
|
|
116
|
+
for (let i = 0; i < relativePaths.length; i += BATCH_SIZE) {
|
|
117
|
+
const batch = relativePaths.slice(i, i + BATCH_SIZE);
|
|
118
|
+
await Promise.all(batch.map(async (relativePath) => {
|
|
119
|
+
try {
|
|
120
|
+
await this.fileOperations.addFile(relativePath);
|
|
121
|
+
devLogSuccess(`Added file: ${relativePath}`);
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
// File might already exist, ignore
|
|
125
|
+
}
|
|
126
|
+
}));
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Process batch of deleted files
|
|
131
|
+
*/
|
|
132
|
+
async processBatchDeletes(relativePaths) {
|
|
133
|
+
if (relativePaths.length === 0)
|
|
134
|
+
return;
|
|
135
|
+
for (const relativePath of relativePaths) {
|
|
136
|
+
await this.fileOperations.deleteFile(relativePath);
|
|
137
|
+
devLogSuccess(`Deleted file: ${relativePath}`);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}export{FileEventHandler};//# sourceMappingURL=file-event-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-event-handler.js","sources":["../../src/dev2-server/file-event-handler.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import type { FileManifest, FileState, FileType, LayerType } from "./types";
|
|
2
|
+
export declare class FileManager {
|
|
3
|
+
readonly absolutePath: string;
|
|
4
|
+
files: Map<string, FileManager>;
|
|
5
|
+
/**
|
|
6
|
+
* Relative path to root directory
|
|
7
|
+
*/
|
|
8
|
+
relativePath: string;
|
|
9
|
+
/**
|
|
10
|
+
* Last modified timestamp
|
|
11
|
+
*/
|
|
12
|
+
lastModified: number;
|
|
13
|
+
/**
|
|
14
|
+
* Hash of the file content
|
|
15
|
+
*/
|
|
16
|
+
hash: string;
|
|
17
|
+
/**
|
|
18
|
+
* Source code of the file
|
|
19
|
+
*/
|
|
20
|
+
source: string;
|
|
21
|
+
/**
|
|
22
|
+
* Transpiled code of the file
|
|
23
|
+
*/
|
|
24
|
+
transpiled: string;
|
|
25
|
+
/**
|
|
26
|
+
* Dependencies of the file (relative paths)
|
|
27
|
+
*/
|
|
28
|
+
dependencies: Set<string>;
|
|
29
|
+
/**
|
|
30
|
+
* Import map: original import path -> resolved absolute path
|
|
31
|
+
* Used for import transformation
|
|
32
|
+
*/
|
|
33
|
+
importMap: Map<string, string>;
|
|
34
|
+
/**
|
|
35
|
+
* Dependents of the file
|
|
36
|
+
*/
|
|
37
|
+
dependents: Set<string>;
|
|
38
|
+
/**
|
|
39
|
+
* Version of the file
|
|
40
|
+
*/
|
|
41
|
+
version: number;
|
|
42
|
+
/**
|
|
43
|
+
* Type of the file
|
|
44
|
+
*/
|
|
45
|
+
type: FileType | undefined;
|
|
46
|
+
/**
|
|
47
|
+
* Layer of the file
|
|
48
|
+
*/
|
|
49
|
+
layer: LayerType | undefined;
|
|
50
|
+
/**
|
|
51
|
+
* Cache path of the file
|
|
52
|
+
*/
|
|
53
|
+
cachePath: string;
|
|
54
|
+
/**
|
|
55
|
+
* Whether imports have been transformed to cache paths
|
|
56
|
+
*/
|
|
57
|
+
importsTransformed: boolean;
|
|
58
|
+
/**
|
|
59
|
+
* File state
|
|
60
|
+
*/
|
|
61
|
+
state: FileState;
|
|
62
|
+
/**
|
|
63
|
+
* Constructor
|
|
64
|
+
*/
|
|
65
|
+
constructor(absolutePath: string, files: Map<string, FileManager>);
|
|
66
|
+
/**
|
|
67
|
+
* Initialize the file manager
|
|
68
|
+
* @param fileManifest Optional manifest data from previous build
|
|
69
|
+
* @param filesMap Optional map of all FileManager instances (for import transformation)
|
|
70
|
+
*/
|
|
71
|
+
init(fileManifest?: Partial<FileManifest>): Promise<void>;
|
|
72
|
+
/**
|
|
73
|
+
* Load file with manifest data (check if changed)
|
|
74
|
+
*/
|
|
75
|
+
protected loadFromManifest(fileManifest: Partial<FileManifest>): Promise<void>;
|
|
76
|
+
/**
|
|
77
|
+
* Load file from disk (fresh, no manifest)
|
|
78
|
+
*/
|
|
79
|
+
protected loadFromDisk(): Promise<void>;
|
|
80
|
+
/**
|
|
81
|
+
* Process file: parse imports first, then transpile
|
|
82
|
+
*/
|
|
83
|
+
protected processFile(): Promise<void>;
|
|
84
|
+
/**
|
|
85
|
+
* Detect file type and layer based on path
|
|
86
|
+
*/
|
|
87
|
+
protected detectFileTypeAndLayer(): void;
|
|
88
|
+
/**
|
|
89
|
+
* Update file when changed during development
|
|
90
|
+
*/
|
|
91
|
+
update(): Promise<boolean>;
|
|
92
|
+
/**
|
|
93
|
+
* Force reprocess file even if source hasn't changed
|
|
94
|
+
* Useful when dependencies become available (e.g., missing file is added back)
|
|
95
|
+
*/
|
|
96
|
+
forceReprocess(): Promise<void>;
|
|
97
|
+
/**
|
|
98
|
+
* Transform imports in transpiled code to use cache paths
|
|
99
|
+
*/
|
|
100
|
+
private transformImports;
|
|
101
|
+
/**
|
|
102
|
+
* Export file data as manifest entry
|
|
103
|
+
* Note: source and transpiled code are NOT stored in manifest
|
|
104
|
+
* - Source code is in the original file
|
|
105
|
+
* - Transpiled code is in .warlock/cache/
|
|
106
|
+
* - Hash is used to detect changes
|
|
107
|
+
*/
|
|
108
|
+
toManifest(): FileManifest;
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=file-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-manager.d.ts","sourceRoot":"","sources":["../../src/dev2-server/file-manager.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAG5E,qBAAa,WAAW;aAgEJ,YAAY,EAAE,MAAM;IAC7B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC;IAhExC;;OAEG;IACI,YAAY,SAAM;IACzB;;OAEG;IACI,YAAY,SAAK;IACxB;;OAEG;IACI,IAAI,SAAM;IACjB;;OAEG;IACI,MAAM,SAAM;IACnB;;OAEG;IACI,UAAU,SAAM;IACvB;;OAEG;IACI,YAAY,cAAqB;IACxC;;;OAGG;IACI,SAAS,sBAA6B;IAC7C;;OAEG;IACI,UAAU,cAAqB;IACtC;;OAEG;IACI,OAAO,SAAK;IACnB;;OAEG;IACI,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;IAClC;;OAEG;IACI,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;IACpC;;OAEG;IACI,SAAS,SAAM;IACtB;;OAEG;IACI,kBAAkB,UAAS;IAElC;;OAEG;IACI,KAAK,EAAE,SAAS,CAAU;IAEjC;;OAEG;gBAEe,YAAY,EAAE,MAAM,EAC7B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC;IAGxC;;;;OAIG;IACU,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC;IAiBtD;;OAEG;cACa,gBAAgB,CAAC,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC;IA6DpE;;OAEG;cACa,YAAY;IAoB5B;;OAEG;cACa,WAAW;IAmB3B;;OAEG;IACH,SAAS,CAAC,sBAAsB;IA6DhC;;OAEG;IACU,MAAM;IA+BnB;;;OAGG;IACU,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB5C;;OAEG;YACW,gBAAgB;IAsB9B;;;;;;OAMG;IACI,UAAU,IAAI,YAAY;CAclC"}
|