@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,314 @@
|
|
|
1
|
+
import events from'@mongez/events';import {getFileAsync,lastModifiedAsync,putFileAsync}from'@mongez/fs';import crypto from'crypto';import {DEV_SERVER_EVENTS}from'./events.js';import {transformImports}from'./import-transformer.js';import {parseImports}from'./parse-imports.js';import {Path}from'./path.js';import {transpile}from'./transpile-file.js';import {warlockCachePath}from'./utils.js';class FileManager {
|
|
2
|
+
absolutePath;
|
|
3
|
+
files;
|
|
4
|
+
/**
|
|
5
|
+
* Relative path to root directory
|
|
6
|
+
*/
|
|
7
|
+
relativePath = "";
|
|
8
|
+
/**
|
|
9
|
+
* Last modified timestamp
|
|
10
|
+
*/
|
|
11
|
+
lastModified = 0;
|
|
12
|
+
/**
|
|
13
|
+
* Hash of the file content
|
|
14
|
+
*/
|
|
15
|
+
hash = "";
|
|
16
|
+
/**
|
|
17
|
+
* Source code of the file
|
|
18
|
+
*/
|
|
19
|
+
source = "";
|
|
20
|
+
/**
|
|
21
|
+
* Transpiled code of the file
|
|
22
|
+
*/
|
|
23
|
+
transpiled = "";
|
|
24
|
+
/**
|
|
25
|
+
* Dependencies of the file (relative paths)
|
|
26
|
+
*/
|
|
27
|
+
dependencies = new Set();
|
|
28
|
+
/**
|
|
29
|
+
* Import map: original import path -> resolved absolute path
|
|
30
|
+
* Used for import transformation
|
|
31
|
+
*/
|
|
32
|
+
importMap = new Map();
|
|
33
|
+
/**
|
|
34
|
+
* Dependents of the file
|
|
35
|
+
*/
|
|
36
|
+
dependents = new Set();
|
|
37
|
+
/**
|
|
38
|
+
* Version of the file
|
|
39
|
+
*/
|
|
40
|
+
version = 0;
|
|
41
|
+
/**
|
|
42
|
+
* Type of the file
|
|
43
|
+
*/
|
|
44
|
+
type;
|
|
45
|
+
/**
|
|
46
|
+
* Layer of the file
|
|
47
|
+
*/
|
|
48
|
+
layer;
|
|
49
|
+
/**
|
|
50
|
+
* Cache path of the file
|
|
51
|
+
*/
|
|
52
|
+
cachePath = "";
|
|
53
|
+
/**
|
|
54
|
+
* Whether imports have been transformed to cache paths
|
|
55
|
+
*/
|
|
56
|
+
importsTransformed = false;
|
|
57
|
+
/**
|
|
58
|
+
* File state
|
|
59
|
+
*/
|
|
60
|
+
state = "idle";
|
|
61
|
+
/**
|
|
62
|
+
* Constructor
|
|
63
|
+
*/
|
|
64
|
+
constructor(absolutePath, files) {
|
|
65
|
+
this.absolutePath = absolutePath;
|
|
66
|
+
this.files = files;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Initialize the file manager
|
|
70
|
+
* @param fileManifest Optional manifest data from previous build
|
|
71
|
+
* @param filesMap Optional map of all FileManager instances (for import transformation)
|
|
72
|
+
*/
|
|
73
|
+
async init(fileManifest) {
|
|
74
|
+
this.state = "loading";
|
|
75
|
+
// No manifest = fresh file, load from disk
|
|
76
|
+
if (!fileManifest) {
|
|
77
|
+
await this.loadFromDisk();
|
|
78
|
+
// Import transformation will happen later in FilesOrchestrator.transformAllImports()
|
|
79
|
+
// after all files are processed and available in the files map
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
// Manifest exists = check if file changed since last build
|
|
83
|
+
await this.loadFromManifest(fileManifest);
|
|
84
|
+
// Import transformation will happen later in FilesOrchestrator.transformAllImports()
|
|
85
|
+
// for files that were reprocessed (importsTransformed = false)
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Load file with manifest data (check if changed)
|
|
89
|
+
*/
|
|
90
|
+
async loadFromManifest(fileManifest) {
|
|
91
|
+
// Set basic properties from manifest
|
|
92
|
+
this.relativePath =
|
|
93
|
+
fileManifest.relativePath || Path.toRelative(this.absolutePath);
|
|
94
|
+
this.version = fileManifest.version || 0;
|
|
95
|
+
this.type = fileManifest.type;
|
|
96
|
+
this.layer = fileManifest.layer;
|
|
97
|
+
this.cachePath =
|
|
98
|
+
fileManifest.cachePath ||
|
|
99
|
+
this.relativePath.replace(/\//g, "-").replace(/\.(ts|tsx)$/, ".js");
|
|
100
|
+
// Check if file still exists
|
|
101
|
+
try {
|
|
102
|
+
this.source = await getFileAsync(this.absolutePath);
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
this.state = "deleted";
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
// Calculate current hash
|
|
109
|
+
const currentHash = crypto
|
|
110
|
+
.createHash("sha256")
|
|
111
|
+
.update(this.source)
|
|
112
|
+
.digest("hex");
|
|
113
|
+
const currentLastModified = (await lastModifiedAsync(this.absolutePath)).getTime();
|
|
114
|
+
// Compare with manifest data
|
|
115
|
+
const hasChanged = currentHash !== fileManifest.hash;
|
|
116
|
+
if (hasChanged) {
|
|
117
|
+
// File changed - reprocess it
|
|
118
|
+
this.hash = currentHash;
|
|
119
|
+
this.lastModified = currentLastModified;
|
|
120
|
+
this.version++;
|
|
121
|
+
await this.processFile();
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
// File unchanged - load from cache
|
|
125
|
+
this.hash = fileManifest.hash;
|
|
126
|
+
this.lastModified = fileManifest.lastModified;
|
|
127
|
+
this.dependencies = new Set(fileManifest.dependencies || []);
|
|
128
|
+
this.dependents = new Set(fileManifest.dependents || []);
|
|
129
|
+
// Load cached transpiled code
|
|
130
|
+
try {
|
|
131
|
+
this.transpiled = await getFileAsync(warlockCachePath(this.cachePath));
|
|
132
|
+
// Cached files already have transformed imports
|
|
133
|
+
this.importsTransformed = true;
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
// Cache missing - retranspile
|
|
137
|
+
await this.processFile();
|
|
138
|
+
// Will need import transformation
|
|
139
|
+
this.importsTransformed = false;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
this.state = "ready";
|
|
143
|
+
events.trigger(DEV_SERVER_EVENTS.FILE_READY, this);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Load file from disk (fresh, no manifest)
|
|
147
|
+
*/
|
|
148
|
+
async loadFromDisk() {
|
|
149
|
+
this.source = await getFileAsync(this.absolutePath);
|
|
150
|
+
this.hash = crypto.createHash("sha256").update(this.source).digest("hex");
|
|
151
|
+
this.relativePath = Path.toRelative(this.absolutePath);
|
|
152
|
+
this.lastModified = (await lastModifiedAsync(this.absolutePath)).getTime();
|
|
153
|
+
this.version = 0;
|
|
154
|
+
this.detectFileTypeAndLayer();
|
|
155
|
+
// Generate cache path (replace / with - and change extension to .js)
|
|
156
|
+
this.cachePath = this.relativePath
|
|
157
|
+
.replace(/\//g, "-")
|
|
158
|
+
.replace(/\.(ts|tsx)$/, ".js");
|
|
159
|
+
await this.processFile();
|
|
160
|
+
this.state = "ready";
|
|
161
|
+
events.trigger(DEV_SERVER_EVENTS.FILE_READY, this);
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Process file: parse imports first, then transpile
|
|
165
|
+
*/
|
|
166
|
+
async processFile() {
|
|
167
|
+
// STEP 1: Parse imports from source (must be first to get dependencies)
|
|
168
|
+
const importMap = await parseImports(this.source, this.absolutePath);
|
|
169
|
+
// Store dependencies as relative paths
|
|
170
|
+
this.dependencies = new Set(Array.from(importMap.values()).map(absPath => Path.toRelative(absPath)));
|
|
171
|
+
// Store import map for later use in import transformation
|
|
172
|
+
this.importMap = importMap;
|
|
173
|
+
// STEP 2: Transpile source code
|
|
174
|
+
this.transpiled = await transpile(this);
|
|
175
|
+
// STEP 3: Save transpiled code to cache
|
|
176
|
+
await putFileAsync(warlockCachePath(this.cachePath), this.transpiled);
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Detect file type and layer based on path
|
|
180
|
+
*/
|
|
181
|
+
detectFileTypeAndLayer() {
|
|
182
|
+
// Main entry files
|
|
183
|
+
if (this.relativePath.includes("main.ts") ||
|
|
184
|
+
this.relativePath.includes("main.tsx")) {
|
|
185
|
+
this.type = "main";
|
|
186
|
+
this.layer = "HMR";
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
// Config files - FSR but handled specially (reload config + restart affected connectors)
|
|
190
|
+
if (this.relativePath.startsWith("src/config/")) {
|
|
191
|
+
this.type = "config";
|
|
192
|
+
this.layer = "HMR";
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
// Routes files
|
|
196
|
+
if (this.relativePath.endsWith("routes.ts") ||
|
|
197
|
+
this.relativePath.endsWith("routes.tsx")) {
|
|
198
|
+
this.type = "route";
|
|
199
|
+
this.layer = "HMR"; // For now FSR, will be HMR with wildcard routing
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
// Event files
|
|
203
|
+
if (this.relativePath.includes("/events/")) {
|
|
204
|
+
this.type = "event";
|
|
205
|
+
this.layer = "HMR";
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
// Controllers
|
|
209
|
+
if (this.relativePath.includes("controller")) {
|
|
210
|
+
this.type = "controller";
|
|
211
|
+
this.layer = "HMR";
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
// Services
|
|
215
|
+
if (this.relativePath.includes("service")) {
|
|
216
|
+
this.type = "service";
|
|
217
|
+
this.layer = "HMR";
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
// Models
|
|
221
|
+
if (this.relativePath.includes("model")) {
|
|
222
|
+
this.type = "model";
|
|
223
|
+
this.layer = "HMR";
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
// Default: other files use HMR
|
|
227
|
+
this.type = "other";
|
|
228
|
+
this.layer = "HMR";
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Update file when changed during development
|
|
232
|
+
*/
|
|
233
|
+
async update() {
|
|
234
|
+
performance.now();
|
|
235
|
+
const newSource = await getFileAsync(this.absolutePath);
|
|
236
|
+
// No change in content
|
|
237
|
+
if (newSource.trim() === this.source.trim()) {
|
|
238
|
+
return false;
|
|
239
|
+
}
|
|
240
|
+
this.state = "updating";
|
|
241
|
+
this.source = newSource;
|
|
242
|
+
this.version++;
|
|
243
|
+
// Update hash and last modified
|
|
244
|
+
this.hash = crypto.createHash("sha256").update(this.source).digest("hex");
|
|
245
|
+
this.lastModified = (await lastModifiedAsync(this.absolutePath)).getTime();
|
|
246
|
+
// Reprocess file
|
|
247
|
+
await this.processFile();
|
|
248
|
+
// Transform imports if filesMap is provided
|
|
249
|
+
if (this.dependencies.size > 0) {
|
|
250
|
+
this.importsTransformed = false;
|
|
251
|
+
await this.transformImports();
|
|
252
|
+
}
|
|
253
|
+
this.state = "ready";
|
|
254
|
+
return true;
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Force reprocess file even if source hasn't changed
|
|
258
|
+
* Useful when dependencies become available (e.g., missing file is added back)
|
|
259
|
+
*/
|
|
260
|
+
async forceReprocess() {
|
|
261
|
+
this.state = "updating";
|
|
262
|
+
this.version++;
|
|
263
|
+
// Reprocess file (re-parse imports, retranspile, transform imports)
|
|
264
|
+
await this.processFile();
|
|
265
|
+
// Transform imports
|
|
266
|
+
if (this.dependencies.size > 0) {
|
|
267
|
+
this.importsTransformed = false;
|
|
268
|
+
await this.transformImports();
|
|
269
|
+
}
|
|
270
|
+
this.state = "ready";
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Transform imports in transpiled code to use cache paths
|
|
274
|
+
*/
|
|
275
|
+
async transformImports() {
|
|
276
|
+
if (this.importsTransformed) {
|
|
277
|
+
return; // Already transformed
|
|
278
|
+
}
|
|
279
|
+
try {
|
|
280
|
+
// Transform imports in transpiled code
|
|
281
|
+
const transformedCode = transformImports(this, this.files);
|
|
282
|
+
// Update the transpiled code
|
|
283
|
+
this.transpiled = transformedCode;
|
|
284
|
+
// Save the transformed code back to cache
|
|
285
|
+
await putFileAsync(warlockCachePath(this.cachePath), transformedCode);
|
|
286
|
+
// Mark as transformed
|
|
287
|
+
this.importsTransformed = true;
|
|
288
|
+
}
|
|
289
|
+
catch (error) {
|
|
290
|
+
throw error;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Export file data as manifest entry
|
|
295
|
+
* Note: source and transpiled code are NOT stored in manifest
|
|
296
|
+
* - Source code is in the original file
|
|
297
|
+
* - Transpiled code is in .warlock/cache/
|
|
298
|
+
* - Hash is used to detect changes
|
|
299
|
+
*/
|
|
300
|
+
toManifest() {
|
|
301
|
+
return {
|
|
302
|
+
absolutePath: this.absolutePath,
|
|
303
|
+
relativePath: this.relativePath,
|
|
304
|
+
lastModified: this.lastModified,
|
|
305
|
+
hash: this.hash,
|
|
306
|
+
dependencies: Array.from(this.dependencies),
|
|
307
|
+
dependents: Array.from(this.dependents),
|
|
308
|
+
version: this.version,
|
|
309
|
+
type: this.type,
|
|
310
|
+
layer: this.layer,
|
|
311
|
+
cachePath: this.cachePath,
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
}export{FileManager};//# sourceMappingURL=file-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-manager.js","sources":["../../src/dev2-server/file-manager.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { DependencyGraph } from "./dependency-graph";
|
|
2
|
+
import { FileManager } from "./file-manager";
|
|
3
|
+
import type { ManifestManager } from "./manifest-manager";
|
|
4
|
+
import type { SpecialFilesCollector } from "./special-files-collector";
|
|
5
|
+
/**
|
|
6
|
+
* FileOperations
|
|
7
|
+
* Handles file lifecycle operations: add, update, delete
|
|
8
|
+
*
|
|
9
|
+
* Responsibilities:
|
|
10
|
+
* - Create/update/delete FileManager instances
|
|
11
|
+
* - Manage cache files
|
|
12
|
+
* - Update dependency graph
|
|
13
|
+
* - Update special files collector
|
|
14
|
+
* - Trigger events
|
|
15
|
+
*/
|
|
16
|
+
export declare class FileOperations {
|
|
17
|
+
private readonly files;
|
|
18
|
+
private readonly dependencyGraph;
|
|
19
|
+
private readonly manifest;
|
|
20
|
+
private readonly specialFilesCollector;
|
|
21
|
+
constructor(files: Map<string, FileManager>, dependencyGraph: DependencyGraph, manifest: ManifestManager, specialFilesCollector: SpecialFilesCollector);
|
|
22
|
+
/**
|
|
23
|
+
* Add a new file to the system
|
|
24
|
+
* @param relativePath - Relative path of the file
|
|
25
|
+
* @returns The created FileManager instance
|
|
26
|
+
*/
|
|
27
|
+
addFile(relativePath: string): Promise<FileManager>;
|
|
28
|
+
/**
|
|
29
|
+
* Reload files that might have been waiting for this dependency
|
|
30
|
+
* When a file is added, check if any existing files have imports
|
|
31
|
+
* that could now resolve to this new file
|
|
32
|
+
*/
|
|
33
|
+
private reloadFilesWaitingForDependency;
|
|
34
|
+
/**
|
|
35
|
+
* Update an existing file
|
|
36
|
+
* @param relativePath - Relative path of the file
|
|
37
|
+
* @returns True if file was changed, false if unchanged
|
|
38
|
+
*/
|
|
39
|
+
updateFile(relativePath: string): Promise<boolean>;
|
|
40
|
+
/**
|
|
41
|
+
* Delete a file from the system
|
|
42
|
+
* @param relativePath - Relative path of the file
|
|
43
|
+
*/
|
|
44
|
+
deleteFile(relativePath: string): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* Update dependents in all FileManager instances from dependency graph
|
|
47
|
+
*/
|
|
48
|
+
updateFileDependents(): void;
|
|
49
|
+
/**
|
|
50
|
+
* Sync all FileManager instances to manifest
|
|
51
|
+
*/
|
|
52
|
+
syncFilesToManifest(): void;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=file-operations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-operations.d.ts","sourceRoot":"","sources":["../../src/dev2-server/file-operations.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGvE;;;;;;;;;;GAUG;AACH,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,qBAAqB;gBAHrB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EAC/B,eAAe,EAAE,eAAe,EAChC,QAAQ,EAAE,eAAe,EACzB,qBAAqB,EAAE,qBAAqB;IAG/D;;;;OAIG;IACU,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAiChE;;;;OAIG;YACW,+BAA+B;IAiD7C;;;;OAIG;IACU,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAwC/D;;;OAGG;IACU,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsC5D;;OAEG;IACI,oBAAoB,IAAI,IAAI;IAOnC;;OAEG;IACI,mBAAmB,IAAI,IAAI;CAKnC"}
|
|
@@ -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
|
|
89
|
+
await dependentFile.forceReprocess();
|
|
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
|
|
118
|
+
const hasChanged = await fileManager.update();
|
|
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
|