@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,191 @@
|
|
|
1
|
+
import events from'@mongez/events';import {unlinkAsync}from'@mongez/fs';import {DEV_SERVER_EVENTS}from'./events.js';import {FileManager}from'./file-manager.js';import {Path}from'./path.js';import {areSetsEqual,warlockCachePath}from'./utils.js';/**
|
|
2
|
+
* FileOperations
|
|
3
|
+
* Handles file lifecycle operations: add, update, delete
|
|
4
|
+
*
|
|
5
|
+
* Responsibilities:
|
|
6
|
+
* - Create/update/delete FileManager instances
|
|
7
|
+
* - Manage cache files
|
|
8
|
+
* - Update dependency graph
|
|
9
|
+
* - Update special files collector
|
|
10
|
+
* - Trigger events
|
|
11
|
+
*/
|
|
12
|
+
class FileOperations {
|
|
13
|
+
files;
|
|
14
|
+
dependencyGraph;
|
|
15
|
+
manifest;
|
|
16
|
+
specialFilesCollector;
|
|
17
|
+
constructor(files, dependencyGraph, manifest, specialFilesCollector) {
|
|
18
|
+
this.files = files;
|
|
19
|
+
this.dependencyGraph = dependencyGraph;
|
|
20
|
+
this.manifest = manifest;
|
|
21
|
+
this.specialFilesCollector = specialFilesCollector;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Add a new file to the system
|
|
25
|
+
* @param relativePath - Relative path of the file
|
|
26
|
+
* @returns The created FileManager instance
|
|
27
|
+
*/
|
|
28
|
+
async addFile(relativePath) {
|
|
29
|
+
// Check if already tracked
|
|
30
|
+
if (this.files.has(relativePath)) {
|
|
31
|
+
throw new Error(`File already exists: ${relativePath}`);
|
|
32
|
+
}
|
|
33
|
+
const absolutePath = Path.toAbsolute(relativePath);
|
|
34
|
+
const fileManager = new FileManager(absolutePath, this.files);
|
|
35
|
+
// Add to tracking
|
|
36
|
+
this.files.set(relativePath, fileManager);
|
|
37
|
+
// Initialize the file (load, transpile, transform imports)
|
|
38
|
+
await fileManager.init();
|
|
39
|
+
// Add to dependency graph
|
|
40
|
+
for (const dependency of fileManager.dependencies) {
|
|
41
|
+
this.dependencyGraph.addDependency(relativePath, dependency);
|
|
42
|
+
}
|
|
43
|
+
// Add to special files collector
|
|
44
|
+
this.specialFilesCollector?.addFile(fileManager);
|
|
45
|
+
// Check if any existing files were waiting for this dependency
|
|
46
|
+
// (i.e., they have broken imports that can now be resolved)
|
|
47
|
+
await this.reloadFilesWaitingForDependency(relativePath);
|
|
48
|
+
// Trigger event
|
|
49
|
+
events.trigger(DEV_SERVER_EVENTS.FILE_READY, fileManager);
|
|
50
|
+
return fileManager;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Reload files that might have been waiting for this dependency
|
|
54
|
+
* When a file is added, check if any existing files have imports
|
|
55
|
+
* that could now resolve to this new file
|
|
56
|
+
*/
|
|
57
|
+
async reloadFilesWaitingForDependency(newFilePath) {
|
|
58
|
+
const { parseImports } = await import('./parse-imports.js');
|
|
59
|
+
const newFileRelativePath = newFilePath;
|
|
60
|
+
const potentialDependents = [];
|
|
61
|
+
// Check all existing files to see if any of their imports could resolve to the new file
|
|
62
|
+
for (const [existingPath, existingFile] of this.files) {
|
|
63
|
+
if (existingPath === newFilePath)
|
|
64
|
+
continue;
|
|
65
|
+
// Re-parse imports from the source to check if any could resolve to the new file
|
|
66
|
+
try {
|
|
67
|
+
const importMap = await parseImports(existingFile.source, existingFile.absolutePath);
|
|
68
|
+
// Check if any import in the map resolves to the new file
|
|
69
|
+
for (const [importPath, resolvedPath] of importMap) {
|
|
70
|
+
if (resolvedPath && Path.toRelative(resolvedPath) === newFileRelativePath) {
|
|
71
|
+
// This import could now be resolved! Add to dependents
|
|
72
|
+
potentialDependents.push(existingPath);
|
|
73
|
+
break; // Found a match, no need to check other imports
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
// Skip files that can't be parsed
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
// Retranspile and reload potential dependents
|
|
83
|
+
if (potentialDependents.length > 0) {
|
|
84
|
+
for (const dependentPath of potentialDependents) {
|
|
85
|
+
const dependentFile = this.files.get(dependentPath);
|
|
86
|
+
if (dependentFile) {
|
|
87
|
+
try {
|
|
88
|
+
// Force reprocess to re-parse imports and resolve to new file (with bundle awareness)
|
|
89
|
+
await dependentFile.forceReprocess(this.bundler);
|
|
90
|
+
// Update dependency graph
|
|
91
|
+
this.dependencyGraph.updateFile(dependentPath, dependentFile.dependencies);
|
|
92
|
+
// Trigger reload event
|
|
93
|
+
events.trigger(DEV_SERVER_EVENTS.FILE_READY, dependentFile);
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
// Ignore errors - the file might still have broken imports
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Update an existing file
|
|
104
|
+
* @param relativePath - Relative path of the file
|
|
105
|
+
* @returns True if file was changed, false if unchanged
|
|
106
|
+
*/
|
|
107
|
+
async updateFile(relativePath) {
|
|
108
|
+
const fileManager = this.files.get(relativePath);
|
|
109
|
+
if (!fileManager) {
|
|
110
|
+
// File not tracked, treat as new file
|
|
111
|
+
await this.addFile(relativePath);
|
|
112
|
+
return true;
|
|
113
|
+
}
|
|
114
|
+
// Store old dependencies
|
|
115
|
+
const oldDependencies = new Set(fileManager.dependencies);
|
|
116
|
+
try {
|
|
117
|
+
// Update the file (with bundle awareness)
|
|
118
|
+
const hasChanged = await fileManager.update(this.bundler);
|
|
119
|
+
if (!hasChanged) {
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
// Update dependency graph if dependencies changed
|
|
123
|
+
const newDependencies = fileManager.dependencies;
|
|
124
|
+
if (!areSetsEqual(oldDependencies, newDependencies)) {
|
|
125
|
+
this.dependencyGraph.updateFile(relativePath, newDependencies);
|
|
126
|
+
}
|
|
127
|
+
// Update special files collector
|
|
128
|
+
this.specialFilesCollector.updateFile(fileManager);
|
|
129
|
+
// Trigger event
|
|
130
|
+
events.trigger(DEV_SERVER_EVENTS.FILE_READY, fileManager);
|
|
131
|
+
return true;
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
// Failed to update (likely broken imports)
|
|
135
|
+
// Don't trigger FILE_READY event for broken files
|
|
136
|
+
return false;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Delete a file from the system
|
|
141
|
+
* @param relativePath - Relative path of the file
|
|
142
|
+
*/
|
|
143
|
+
async deleteFile(relativePath) {
|
|
144
|
+
const fileManager = this.files.get(relativePath);
|
|
145
|
+
if (!fileManager) {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
// Get dependents before removing (so we can notify them)
|
|
149
|
+
const dependents = this.dependencyGraph.getDependents(relativePath);
|
|
150
|
+
// Delete cache file
|
|
151
|
+
try {
|
|
152
|
+
const cachePath = warlockCachePath(fileManager.cachePath);
|
|
153
|
+
await unlinkAsync(cachePath);
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
// Cache file might not exist, ignore
|
|
157
|
+
}
|
|
158
|
+
// Remove from dependency graph
|
|
159
|
+
this.dependencyGraph.removeFile(relativePath);
|
|
160
|
+
// Remove from special files collector
|
|
161
|
+
this.specialFilesCollector.removeFile(relativePath);
|
|
162
|
+
// Remove from tracking
|
|
163
|
+
this.files.delete(relativePath);
|
|
164
|
+
this.manifest.removeFile(relativePath);
|
|
165
|
+
// Trigger reload of dependents so they see the broken import error
|
|
166
|
+
for (const dependentPath of dependents) {
|
|
167
|
+
const dependentFile = this.files.get(dependentPath);
|
|
168
|
+
if (dependentFile) {
|
|
169
|
+
// Trigger event to reload the dependent (will fail with import error)
|
|
170
|
+
events.trigger(DEV_SERVER_EVENTS.FILE_READY, dependentFile);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Update dependents in all FileManager instances from dependency graph
|
|
176
|
+
*/
|
|
177
|
+
updateFileDependents() {
|
|
178
|
+
for (const [relativePath, fileManager] of this.files) {
|
|
179
|
+
const dependents = this.dependencyGraph.getDependents(relativePath);
|
|
180
|
+
fileManager.dependents = dependents;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Sync all FileManager instances to manifest
|
|
185
|
+
*/
|
|
186
|
+
syncFilesToManifest() {
|
|
187
|
+
for (const [relativePath, fileManager] of this.files) {
|
|
188
|
+
this.manifest.setFile(relativePath, fileManager.toManifest());
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}export{FileOperations};//# sourceMappingURL=file-operations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-operations.js","sources":["../../src/dev2-server/file-operations.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { DependencyGraph } from "./dependency-graph";
|
|
2
|
+
import { FileManager } from "./file-manager";
|
|
3
|
+
import type { SpecialFilesCollector } from "./special-files-collector";
|
|
4
|
+
export declare class FilesOrchestrator {
|
|
5
|
+
private readonly files;
|
|
6
|
+
private readonly manifest;
|
|
7
|
+
private readonly dependencyGraph;
|
|
8
|
+
private readonly healthChecker;
|
|
9
|
+
private readonly filesWatcher;
|
|
10
|
+
private readonly fileOperations;
|
|
11
|
+
private readonly eventHandler;
|
|
12
|
+
private readonly specialFilesCollector;
|
|
13
|
+
/**
|
|
14
|
+
* Set the special files collector
|
|
15
|
+
* This should be called before starting file watching
|
|
16
|
+
*/
|
|
17
|
+
constructor(collector: SpecialFilesCollector);
|
|
18
|
+
/**
|
|
19
|
+
* Get the dependency graph
|
|
20
|
+
* Provides read-only access to the dependency graph for external use
|
|
21
|
+
*/
|
|
22
|
+
getDependencyGraph(): DependencyGraph;
|
|
23
|
+
/**
|
|
24
|
+
* Get invalidation chain for a file
|
|
25
|
+
* Returns all files that need to be reloaded when the given file changes
|
|
26
|
+
*/
|
|
27
|
+
getInvalidationChain(file: string): string[];
|
|
28
|
+
/**
|
|
29
|
+
* Get all tracked files
|
|
30
|
+
*/
|
|
31
|
+
getFiles(): Map<string, FileManager>;
|
|
32
|
+
/**
|
|
33
|
+
* Initialize the files orchestrator
|
|
34
|
+
*/
|
|
35
|
+
init(): Promise<void>;
|
|
36
|
+
/**
|
|
37
|
+
* Get all TypeScript/JavaScript files from the filesystem
|
|
38
|
+
* This always scans the actual filesystem, ignoring any cached data
|
|
39
|
+
* @returns Array of relative file paths
|
|
40
|
+
*/
|
|
41
|
+
private getAllFilesFromFilesystem;
|
|
42
|
+
/**
|
|
43
|
+
* Process all files fresh (no manifest exists)
|
|
44
|
+
* This happens on first run or when manifest is deleted
|
|
45
|
+
* @param filePaths Array of relative file paths
|
|
46
|
+
*/
|
|
47
|
+
private processAllFilesFresh;
|
|
48
|
+
/**
|
|
49
|
+
* Reconcile filesystem state with manifest data
|
|
50
|
+
* This handles: new files, deleted files, and changed files
|
|
51
|
+
*/
|
|
52
|
+
private reconcileFiles;
|
|
53
|
+
/**
|
|
54
|
+
* Process newly discovered files
|
|
55
|
+
* @param filePaths Array of relative file paths
|
|
56
|
+
*/
|
|
57
|
+
private processNewFiles;
|
|
58
|
+
/**
|
|
59
|
+
* Remove deleted files from tracking
|
|
60
|
+
* @param filePaths Array of relative file paths
|
|
61
|
+
*/
|
|
62
|
+
private processDeletedFiles;
|
|
63
|
+
/**
|
|
64
|
+
* Process existing files (check if they changed since last run)
|
|
65
|
+
* @param filePaths Array of relative file paths
|
|
66
|
+
*/
|
|
67
|
+
private processExistingFiles;
|
|
68
|
+
/**
|
|
69
|
+
* Update dependents in all FileManager instances from dependency graph
|
|
70
|
+
*/
|
|
71
|
+
private updateFileDependents;
|
|
72
|
+
/**
|
|
73
|
+
* Sync all FileManager instances to manifest
|
|
74
|
+
* Uses relative paths as keys for portability
|
|
75
|
+
*/
|
|
76
|
+
private syncFilesToManifest;
|
|
77
|
+
/**
|
|
78
|
+
* Start file watcher to detect changes during development
|
|
79
|
+
*/
|
|
80
|
+
private startFileWatcher;
|
|
81
|
+
/**
|
|
82
|
+
* Transform all imports to use cache paths
|
|
83
|
+
* This is called AFTER all files are processed and transpiled
|
|
84
|
+
* Only transforms files that haven't been transformed yet (freshly transpiled)
|
|
85
|
+
*/
|
|
86
|
+
private transformAllImports;
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=files-orchestrator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"files-orchestrator.d.ts","sourceRoot":"","sources":["../../src/dev2-server/files-orchestrator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAS7C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAQvE,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkC;IACxD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmC;IAC5D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAyB;IACzD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAuB;IACrD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmB;IAChD,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAwB;IAE9D;;;OAGG;gBACgB,SAAS,EAAE,qBAAqB;IAkBnD;;;OAGG;IACI,kBAAkB,IAAI,eAAe;IAK5C;;;OAGG;IACI,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IAInD;;OAEG;IACI,QAAQ,IAAI,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC;IAI3C;;OAEG;IACU,IAAI;IAyCjB;;;;OAIG;YACW,yBAAyB;IAMvC;;;;OAIG;YACW,oBAAoB;IA2BlC;;;OAGG;YACW,cAAc;IAwC5B;;;OAGG;YACW,eAAe;IAqB7B;;;OAGG;YACW,mBAAmB;IAwBjC;;;OAGG;YACW,oBAAoB;IAyBlC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAO5B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAM3B;;OAEG;YACW,gBAAgB;IAmB9B;;;;OAIG;YACW,mBAAmB;CAyClC"}
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
import {colors}from'@mongez/copper';import {unlinkAsync,putFileAsync}from'@mongez/fs';import {init}from'es-module-lexer';import {DependencyGraph}from'./dependency-graph.js';import {devLogDim,devLogSuccess}from'./dev-logger.js';import {FileEventHandler}from'./file-event-handler.js';import {FileManager}from'./file-manager.js';import {FileOperations}from'./file-operations.js';import {FilesWatcher}from'./files-watcher.js';import {FILE_PROCESSING_BATCH_SIZE}from'./flags.js';import {HealthChecker}from'./health-checker.js';import {transformImports}from'./import-transformer.js';import {ManifestManager}from'./manifest-manager.js';import {packageJsonManager}from'./package-json-manager.js';import {Path}from'./path.js';import {tsconfigManager}from'./tsconfig-manager.js';import {getFilesFromDirectory,createFreshWarlockDirectory,warlockCachePath}from'./utils.js';class FilesOrchestrator {
|
|
2
|
+
files = new Map();
|
|
3
|
+
manifest = new ManifestManager(this.files);
|
|
4
|
+
dependencyGraph = new DependencyGraph();
|
|
5
|
+
healthChecker = new HealthChecker();
|
|
6
|
+
filesWatcher = new FilesWatcher();
|
|
7
|
+
fileOperations;
|
|
8
|
+
eventHandler;
|
|
9
|
+
specialFilesCollector;
|
|
10
|
+
/**
|
|
11
|
+
* Set the special files collector
|
|
12
|
+
* This should be called before starting file watching
|
|
13
|
+
*/
|
|
14
|
+
constructor(collector) {
|
|
15
|
+
this.specialFilesCollector = collector;
|
|
16
|
+
// Recreate file operations with the collector
|
|
17
|
+
this.fileOperations = new FileOperations(this.files, this.dependencyGraph, this.manifest, collector);
|
|
18
|
+
// Recreate event handler with updated file operations
|
|
19
|
+
this.eventHandler = new FileEventHandler(this.fileOperations, this.manifest);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Get the dependency graph
|
|
23
|
+
* Provides read-only access to the dependency graph for external use
|
|
24
|
+
*/
|
|
25
|
+
getDependencyGraph() {
|
|
26
|
+
return this.dependencyGraph;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Get invalidation chain for a file
|
|
30
|
+
* Returns all files that need to be reloaded when the given file changes
|
|
31
|
+
*/
|
|
32
|
+
getInvalidationChain(file) {
|
|
33
|
+
return this.dependencyGraph.getInvalidationChain(file);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Get all tracked files
|
|
37
|
+
*/
|
|
38
|
+
getFiles() {
|
|
39
|
+
return this.files;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Initialize the files orchestrator
|
|
43
|
+
*/
|
|
44
|
+
async init() {
|
|
45
|
+
// Initialize es-module-lexer (it's a promise, not a function)
|
|
46
|
+
await init;
|
|
47
|
+
// Initialize configuration managers
|
|
48
|
+
await Promise.all([tsconfigManager.init(), packageJsonManager.init()]);
|
|
49
|
+
// STEP 1: Parallel - Get filesystem state + Load manifest
|
|
50
|
+
const [filesInFilesystem, manifestExists] = await Promise.all([
|
|
51
|
+
this.getAllFilesFromFilesystem(),
|
|
52
|
+
this.manifest.init(),
|
|
53
|
+
]);
|
|
54
|
+
// STEP 2: Reconcile filesystem with manifest
|
|
55
|
+
if (!manifestExists) {
|
|
56
|
+
// No manifest = fresh start
|
|
57
|
+
await this.processAllFilesFresh(filesInFilesystem);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
// Manifest exists = reconcile differences
|
|
61
|
+
await this.reconcileFiles(filesInFilesystem);
|
|
62
|
+
}
|
|
63
|
+
// STEP 3: Build dependency graph from all files
|
|
64
|
+
this.dependencyGraph.build(this.files);
|
|
65
|
+
// STEP 4: Update dependents in FileManager instances
|
|
66
|
+
this.updateFileDependents();
|
|
67
|
+
// STEP 5: Sync all files to manifest
|
|
68
|
+
this.syncFilesToManifest();
|
|
69
|
+
// STEP 6: Transform all imports to use cache paths
|
|
70
|
+
await this.transformAllImports();
|
|
71
|
+
// STEP 7: Save updated manifest
|
|
72
|
+
await this.manifest.save();
|
|
73
|
+
// STEP 8: Start file watcher
|
|
74
|
+
await this.startFileWatcher();
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Get all TypeScript/JavaScript files from the filesystem
|
|
78
|
+
* This always scans the actual filesystem, ignoring any cached data
|
|
79
|
+
* @returns Array of relative file paths
|
|
80
|
+
*/
|
|
81
|
+
async getAllFilesFromFilesystem() {
|
|
82
|
+
const absolutePaths = await getFilesFromDirectory();
|
|
83
|
+
// Convert to relative paths for consistency throughout the system
|
|
84
|
+
return absolutePaths.map(absPath => Path.toRelative(absPath));
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Process all files fresh (no manifest exists)
|
|
88
|
+
* This happens on first run or when manifest is deleted
|
|
89
|
+
* @param filePaths Array of relative file paths
|
|
90
|
+
*/
|
|
91
|
+
async processAllFilesFresh(filePaths) {
|
|
92
|
+
devLogDim(`processing ${filePaths.length} files...`);
|
|
93
|
+
// Ensure .warlock directory exists
|
|
94
|
+
await createFreshWarlockDirectory();
|
|
95
|
+
// Process files in batches for optimal performance
|
|
96
|
+
const BATCH_SIZE = FILE_PROCESSING_BATCH_SIZE;
|
|
97
|
+
for (let i = 0; i < filePaths.length; i += BATCH_SIZE) {
|
|
98
|
+
const batch = filePaths.slice(i, i + BATCH_SIZE);
|
|
99
|
+
await Promise.all(batch.map(async (relativePath) => {
|
|
100
|
+
// Convert to absolute path for FileManager
|
|
101
|
+
const absolutePath = Path.toAbsolute(relativePath);
|
|
102
|
+
const fileManager = new FileManager(absolutePath, this.files);
|
|
103
|
+
// Store in map using relative path as key
|
|
104
|
+
this.files.set(relativePath, fileManager);
|
|
105
|
+
await fileManager.init(); // No manifest data
|
|
106
|
+
}));
|
|
107
|
+
}
|
|
108
|
+
devLogSuccess(`processed ${filePaths.length} files`);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Reconcile filesystem state with manifest data
|
|
112
|
+
* This handles: new files, deleted files, and changed files
|
|
113
|
+
*/
|
|
114
|
+
async reconcileFiles(filesInFilesystem) {
|
|
115
|
+
const filesInManifest = new Set(this.manifest.getAllFilePaths());
|
|
116
|
+
const filesInFilesystemSet = new Set(filesInFilesystem);
|
|
117
|
+
// Find new files (in filesystem but not in manifest)
|
|
118
|
+
const newFiles = filesInFilesystem.filter(file => !filesInManifest.has(file));
|
|
119
|
+
// Find deleted files (in manifest but not in filesystem)
|
|
120
|
+
const deletedFiles = Array.from(filesInManifest).filter(file => !filesInFilesystemSet.has(file));
|
|
121
|
+
// Find existing files (in both)
|
|
122
|
+
const existingFiles = filesInFilesystem.filter(file => filesInManifest.has(file));
|
|
123
|
+
if (newFiles.length > 0 || deletedFiles.length > 0) {
|
|
124
|
+
const newText = newFiles.length > 0 ? colors.green(newFiles.length) : 0;
|
|
125
|
+
const deletedText = deletedFiles.length > 0 ? colors.red(deletedFiles.length) : 0;
|
|
126
|
+
const existingText = existingFiles.length > 0 ? colors.blue(existingFiles.length) : 0;
|
|
127
|
+
devLogDim(`reconciling: ${newText} new, ${deletedText} deleted, ${existingText} existing`);
|
|
128
|
+
}
|
|
129
|
+
// Process new files
|
|
130
|
+
await this.processNewFiles(newFiles);
|
|
131
|
+
// Remove deleted files
|
|
132
|
+
await this.processDeletedFiles(deletedFiles);
|
|
133
|
+
// Process existing files (check for changes)
|
|
134
|
+
await this.processExistingFiles(existingFiles);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Process newly discovered files
|
|
138
|
+
* @param filePaths Array of relative file paths
|
|
139
|
+
*/
|
|
140
|
+
async processNewFiles(filePaths) {
|
|
141
|
+
if (filePaths.length === 0)
|
|
142
|
+
return;
|
|
143
|
+
const BATCH_SIZE = FILE_PROCESSING_BATCH_SIZE;
|
|
144
|
+
for (let i = 0; i < filePaths.length; i += BATCH_SIZE) {
|
|
145
|
+
const batch = filePaths.slice(i, i + BATCH_SIZE);
|
|
146
|
+
await Promise.all(batch.map(async (relativePath) => {
|
|
147
|
+
// Convert to absolute path for FileManager
|
|
148
|
+
const absolutePath = Path.toAbsolute(relativePath);
|
|
149
|
+
const fileManager = new FileManager(absolutePath, this.files);
|
|
150
|
+
// Store in map using relative path as key
|
|
151
|
+
this.files.set(relativePath, fileManager);
|
|
152
|
+
await fileManager.init(); // No manifest data = process fresh
|
|
153
|
+
}));
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Remove deleted files from tracking
|
|
158
|
+
* @param filePaths Array of relative file paths
|
|
159
|
+
*/
|
|
160
|
+
async processDeletedFiles(filePaths) {
|
|
161
|
+
if (filePaths.length === 0)
|
|
162
|
+
return;
|
|
163
|
+
for (const relativePath of filePaths) {
|
|
164
|
+
// Get file info from manifest before deletion
|
|
165
|
+
const manifestEntry = this.manifest.getFile(relativePath);
|
|
166
|
+
if (manifestEntry) {
|
|
167
|
+
// Delete cache file
|
|
168
|
+
try {
|
|
169
|
+
await unlinkAsync(warlockCachePath(manifestEntry.cachePath));
|
|
170
|
+
}
|
|
171
|
+
catch (error) {
|
|
172
|
+
// Cache file might not exist, ignore
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
// Remove from manifest
|
|
176
|
+
this.manifest.removeFile(relativePath);
|
|
177
|
+
// Remove from files map
|
|
178
|
+
this.files.delete(relativePath);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Process existing files (check if they changed since last run)
|
|
183
|
+
* @param filePaths Array of relative file paths
|
|
184
|
+
*/
|
|
185
|
+
async processExistingFiles(filePaths) {
|
|
186
|
+
if (filePaths.length === 0)
|
|
187
|
+
return;
|
|
188
|
+
const BATCH_SIZE = FILE_PROCESSING_BATCH_SIZE;
|
|
189
|
+
for (let i = 0; i < filePaths.length; i += BATCH_SIZE) {
|
|
190
|
+
const batch = filePaths.slice(i, i + BATCH_SIZE);
|
|
191
|
+
await Promise.all(batch.map(async (relativePath) => {
|
|
192
|
+
// Get manifest data using relative path
|
|
193
|
+
const manifestData = this.manifest.getFile(relativePath);
|
|
194
|
+
// Convert to absolute path for FileManager
|
|
195
|
+
const absolutePath = Path.toAbsolute(relativePath);
|
|
196
|
+
const fileManager = new FileManager(absolutePath, this.files);
|
|
197
|
+
// Store in map using relative path as key
|
|
198
|
+
this.files.set(relativePath, fileManager);
|
|
199
|
+
// Pass manifest data to FileManager for comparison
|
|
200
|
+
await fileManager.init(manifestData);
|
|
201
|
+
}));
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Update dependents in all FileManager instances from dependency graph
|
|
206
|
+
*/
|
|
207
|
+
updateFileDependents() {
|
|
208
|
+
for (const [relativePath, fileManager] of this.files) {
|
|
209
|
+
const dependents = this.dependencyGraph.getDependents(relativePath);
|
|
210
|
+
fileManager.dependents = dependents;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Sync all FileManager instances to manifest
|
|
215
|
+
* Uses relative paths as keys for portability
|
|
216
|
+
*/
|
|
217
|
+
syncFilesToManifest() {
|
|
218
|
+
for (const [relativePath, fileManager] of this.files) {
|
|
219
|
+
this.manifest.setFile(relativePath, fileManager.toManifest());
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Start file watcher to detect changes during development
|
|
224
|
+
*/
|
|
225
|
+
async startFileWatcher() {
|
|
226
|
+
devLogSuccess("watching for file changes");
|
|
227
|
+
// Connect file watcher to event handler
|
|
228
|
+
this.filesWatcher.onFileChange(absolutePath => {
|
|
229
|
+
this.eventHandler.handleFileChange(absolutePath);
|
|
230
|
+
});
|
|
231
|
+
this.filesWatcher.onFileAdd(absolutePath => {
|
|
232
|
+
this.eventHandler.handleFileAdd(absolutePath);
|
|
233
|
+
});
|
|
234
|
+
this.filesWatcher.onFileDelete(absolutePath => {
|
|
235
|
+
this.eventHandler.handleFileDelete(absolutePath);
|
|
236
|
+
});
|
|
237
|
+
await this.filesWatcher.watch();
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Transform all imports to use cache paths
|
|
241
|
+
* This is called AFTER all files are processed and transpiled
|
|
242
|
+
* Only transforms files that haven't been transformed yet (freshly transpiled)
|
|
243
|
+
*/
|
|
244
|
+
async transformAllImports() {
|
|
245
|
+
let transformedCount = 0;
|
|
246
|
+
for (const [relativePath, fileManager] of this.files) {
|
|
247
|
+
// Skip files that already have transformed imports (loaded from cache)
|
|
248
|
+
if (fileManager.importsTransformed) {
|
|
249
|
+
continue;
|
|
250
|
+
}
|
|
251
|
+
// Only transform files that have dependencies
|
|
252
|
+
if (fileManager.dependencies.size === 0) {
|
|
253
|
+
// Mark as transformed even if no dependencies
|
|
254
|
+
fileManager.importsTransformed = true;
|
|
255
|
+
continue;
|
|
256
|
+
}
|
|
257
|
+
try {
|
|
258
|
+
// Transform imports in transpiled code
|
|
259
|
+
const transformedCode = transformImports(fileManager, this.files);
|
|
260
|
+
// Update the transpiled code
|
|
261
|
+
fileManager.transpiled = transformedCode;
|
|
262
|
+
// Save the transformed code back to cache
|
|
263
|
+
await putFileAsync(warlockCachePath(fileManager.cachePath), transformedCode);
|
|
264
|
+
// Mark as transformed
|
|
265
|
+
fileManager.importsTransformed = true;
|
|
266
|
+
transformedCount++;
|
|
267
|
+
}
|
|
268
|
+
catch (error) {
|
|
269
|
+
console.error(`Error transforming imports for ${relativePath}:`, error);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}export{FilesOrchestrator};//# sourceMappingURL=files-orchestrator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"files-orchestrator.js","sources":["../../src/dev2-server/files-orchestrator.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
type FileWatcherEvent = "change" | "delete" | "add" | "error" | "addDir" | "unlinkDir";
|
|
2
|
+
type FileChangeCallback = (filePath: string) => void;
|
|
3
|
+
type FileDeleteCallback = (filePath: string) => void;
|
|
4
|
+
type FileAddCallback = (filePath: string) => void;
|
|
5
|
+
type FileErrorCallback = (filePath: string, error: Error) => void;
|
|
6
|
+
type FileAddDirCallback = (filePath: string) => void;
|
|
7
|
+
type FileUnlinkDirCallback = (filePath: string) => void;
|
|
8
|
+
type OnFileEventCallback = FileChangeCallback | FileDeleteCallback | FileAddCallback | FileErrorCallback | FileAddDirCallback | FileUnlinkDirCallback;
|
|
9
|
+
export declare class FilesWatcher {
|
|
10
|
+
/**
|
|
11
|
+
* File watcher id
|
|
12
|
+
*/
|
|
13
|
+
private id;
|
|
14
|
+
/**
|
|
15
|
+
* Watch for files changes
|
|
16
|
+
*/
|
|
17
|
+
watch(): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Trigger event immediately (no debouncing here)
|
|
20
|
+
* Debouncing is handled at the orchestrator level for batch processing
|
|
21
|
+
*/
|
|
22
|
+
private triggerEvent;
|
|
23
|
+
/**
|
|
24
|
+
* On file change event
|
|
25
|
+
*/
|
|
26
|
+
onFileChange(callback: FileChangeCallback): import("@mongez/events").EventSubscription;
|
|
27
|
+
/**
|
|
28
|
+
* On file delete event
|
|
29
|
+
*/
|
|
30
|
+
onFileDelete(callback: FileDeleteCallback): import("@mongez/events").EventSubscription;
|
|
31
|
+
/**
|
|
32
|
+
* On file add event
|
|
33
|
+
*/
|
|
34
|
+
onFileAdd(callback: FileAddCallback): import("@mongez/events").EventSubscription;
|
|
35
|
+
/**
|
|
36
|
+
* On file error event
|
|
37
|
+
*/
|
|
38
|
+
onFileError(callback: FileErrorCallback): import("@mongez/events").EventSubscription;
|
|
39
|
+
/**
|
|
40
|
+
* On file add dir event
|
|
41
|
+
*/
|
|
42
|
+
onDirectoryAdd(callback: FileAddDirCallback): import("@mongez/events").EventSubscription;
|
|
43
|
+
/**
|
|
44
|
+
* On file unlink dir event
|
|
45
|
+
*/
|
|
46
|
+
onDirectoryRemove(callback: FileUnlinkDirCallback): import("@mongez/events").EventSubscription;
|
|
47
|
+
/**
|
|
48
|
+
* On file event
|
|
49
|
+
*/
|
|
50
|
+
on(event: FileWatcherEvent, callback: OnFileEventCallback): import("@mongez/events").EventSubscription;
|
|
51
|
+
}
|
|
52
|
+
export {};
|
|
53
|
+
//# sourceMappingURL=files-watcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"files-watcher.d.ts","sourceRoot":"","sources":["../../src/dev2-server/files-watcher.ts"],"names":[],"mappings":"AAMA,KAAK,gBAAgB,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEvF,KAAK,kBAAkB,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;AACrD,KAAK,kBAAkB,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;AACrD,KAAK,eAAe,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;AAClD,KAAK,iBAAiB,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;AAClE,KAAK,kBAAkB,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;AACrD,KAAK,qBAAqB,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;AACxD,KAAK,mBAAmB,GACpB,kBAAkB,GAClB,kBAAkB,GAClB,eAAe,GACf,iBAAiB,GACjB,kBAAkB,GAClB,qBAAqB,CAAC;AAE1B,qBAAa,YAAY;IACvB;;OAEG;IACH,OAAO,CAAC,EAAE,CAAmB;IAE7B;;OAEG;IACU,KAAK;IAkClB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAIpB;;OAEG;IACI,YAAY,CAAC,QAAQ,EAAE,kBAAkB;IAIhD;;OAEG;IACI,YAAY,CAAC,QAAQ,EAAE,kBAAkB;IAIhD;;OAEG;IACI,SAAS,CAAC,QAAQ,EAAE,eAAe;IAI1C;;OAEG;IACI,WAAW,CAAC,QAAQ,EAAE,iBAAiB;IAI9C;;OAEG;IACI,cAAc,CAAC,QAAQ,EAAE,kBAAkB;IAIlD;;OAEG;IACI,iBAAiB,CAAC,QAAQ,EAAE,qBAAqB;IAIxD;;OAEG;IACI,EAAE,CAAC,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,mBAAmB;CAGjE"}
|