@caryhu/codemine-forge 0.0.1-alpha.0

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.
Files changed (84) hide show
  1. package/README.md +108 -0
  2. package/dist/build-pipeline/browser-bundle.d.ts +31 -0
  3. package/dist/build-pipeline/browser-bundle.js +584 -0
  4. package/dist/build-pipeline/diagnostics.d.ts +7 -0
  5. package/dist/build-pipeline/diagnostics.js +68 -0
  6. package/dist/build-pipeline/index.d.ts +3 -0
  7. package/dist/build-pipeline/index.js +16 -0
  8. package/dist/build-pipeline/pipeline.d.ts +12 -0
  9. package/dist/build-pipeline/pipeline.js +273 -0
  10. package/dist/build-pipeline/types.d.ts +77 -0
  11. package/dist/build-pipeline/types.js +4 -0
  12. package/dist/dev-server-preview/diagnostics.d.ts +5 -0
  13. package/dist/dev-server-preview/diagnostics.js +40 -0
  14. package/dist/dev-server-preview/index.d.ts +4 -0
  15. package/dist/dev-server-preview/index.js +16 -0
  16. package/dist/dev-server-preview/preview-document.d.ts +2 -0
  17. package/dist/dev-server-preview/preview-document.js +153 -0
  18. package/dist/dev-server-preview/server.d.ts +26 -0
  19. package/dist/dev-server-preview/server.js +279 -0
  20. package/dist/dev-server-preview/types.d.ts +105 -0
  21. package/dist/dev-server-preview/types.js +4 -0
  22. package/dist/esbuild-wasm-worker/diagnostics.d.ts +12 -0
  23. package/dist/esbuild-wasm-worker/diagnostics.js +53 -0
  24. package/dist/esbuild-wasm-worker/index.d.ts +4 -0
  25. package/dist/esbuild-wasm-worker/index.js +18 -0
  26. package/dist/esbuild-wasm-worker/service.d.ts +26 -0
  27. package/dist/esbuild-wasm-worker/service.js +260 -0
  28. package/dist/esbuild-wasm-worker/types.d.ts +139 -0
  29. package/dist/esbuild-wasm-worker/types.js +5 -0
  30. package/dist/esbuild-wasm-worker/worker-adapter.d.ts +38 -0
  31. package/dist/esbuild-wasm-worker/worker-adapter.js +165 -0
  32. package/dist/esbuild-wasm-worker/worker.d.ts +1 -0
  33. package/dist/esbuild-wasm-worker/worker.js +4 -0
  34. package/dist/forge-controller.d.ts +38 -0
  35. package/dist/forge-controller.js +79 -0
  36. package/dist/index.d.ts +7 -0
  37. package/dist/index.js +88 -0
  38. package/dist/package-resolution/cdn-source.d.ts +11 -0
  39. package/dist/package-resolution/cdn-source.js +164 -0
  40. package/dist/package-resolution/diagnostics.d.ts +15 -0
  41. package/dist/package-resolution/diagnostics.js +51 -0
  42. package/dist/package-resolution/errors.d.ts +5 -0
  43. package/dist/package-resolution/errors.js +11 -0
  44. package/dist/package-resolution/index.d.ts +6 -0
  45. package/dist/package-resolution/index.js +23 -0
  46. package/dist/package-resolution/manifest.d.ts +5 -0
  47. package/dist/package-resolution/manifest.js +128 -0
  48. package/dist/package-resolution/resolver.d.ts +17 -0
  49. package/dist/package-resolution/resolver.js +172 -0
  50. package/dist/package-resolution/types.d.ts +98 -0
  51. package/dist/package-resolution/types.js +4 -0
  52. package/dist/terminal-commands/diagnostics.d.ts +3 -0
  53. package/dist/terminal-commands/diagnostics.js +21 -0
  54. package/dist/terminal-commands/index.d.ts +7 -0
  55. package/dist/terminal-commands/index.js +22 -0
  56. package/dist/terminal-commands/npm-build.d.ts +7 -0
  57. package/dist/terminal-commands/npm-build.js +63 -0
  58. package/dist/terminal-commands/npm-dev.d.ts +7 -0
  59. package/dist/terminal-commands/npm-dev.js +68 -0
  60. package/dist/terminal-commands/npm-install.d.ts +8 -0
  61. package/dist/terminal-commands/npm-install.js +56 -0
  62. package/dist/terminal-commands/parser.d.ts +2 -0
  63. package/dist/terminal-commands/parser.js +52 -0
  64. package/dist/terminal-commands/terminal.d.ts +12 -0
  65. package/dist/terminal-commands/terminal.js +73 -0
  66. package/dist/terminal-commands/types.d.ts +65 -0
  67. package/dist/terminal-commands/types.js +4 -0
  68. package/dist/virtual-file-system/diagnostics.d.ts +14 -0
  69. package/dist/virtual-file-system/diagnostics.js +55 -0
  70. package/dist/virtual-file-system/errors.d.ts +5 -0
  71. package/dist/virtual-file-system/errors.js +11 -0
  72. package/dist/virtual-file-system/index.d.ts +26 -0
  73. package/dist/virtual-file-system/index.js +47 -0
  74. package/dist/virtual-file-system/limits.d.ts +4 -0
  75. package/dist/virtual-file-system/limits.js +33 -0
  76. package/dist/virtual-file-system/memory.d.ts +33 -0
  77. package/dist/virtual-file-system/memory.js +551 -0
  78. package/dist/virtual-file-system/path.d.ts +9 -0
  79. package/dist/virtual-file-system/path.js +47 -0
  80. package/dist/virtual-file-system/storage.d.ts +32 -0
  81. package/dist/virtual-file-system/storage.js +194 -0
  82. package/dist/virtual-file-system/types.d.ts +165 -0
  83. package/dist/virtual-file-system/types.js +2 -0
  84. package/package.json +43 -0
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.openForgeController = exports.createForgeController = void 0;
4
+ const build_pipeline_1 = require("./build-pipeline");
5
+ const dev_server_preview_1 = require("./dev-server-preview");
6
+ const virtual_file_system_1 = require("./virtual-file-system");
7
+ const package_resolution_1 = require("./package-resolution");
8
+ const terminal_commands_1 = require("./terminal-commands");
9
+ function createForgeController(options = {}) {
10
+ const fileSystem = options.fileSystem ?? (0, virtual_file_system_1.createVirtualFileSystem)();
11
+ const packageResolver = options.packageResolver ??
12
+ (0, package_resolution_1.createPackageResolver)({
13
+ ...options.packageResolution,
14
+ fileSystem,
15
+ });
16
+ const buildPipeline = options.buildPipeline ??
17
+ (0, build_pipeline_1.createBuildPipeline)({
18
+ ...options.buildPipelineOptions,
19
+ fileSystem,
20
+ packageResolver,
21
+ });
22
+ const devServerPreview = options.devServerPreview ??
23
+ (0, dev_server_preview_1.createDevServerPreview)({
24
+ ...options.devServerPreviewOptions,
25
+ fileSystem,
26
+ buildPipeline,
27
+ });
28
+ return new DefaultForgeController(fileSystem, buildPipeline, devServerPreview, packageResolver, options.terminal ??
29
+ (0, terminal_commands_1.createForgeTerminal)({
30
+ ...options.terminalOptions,
31
+ buildPipeline,
32
+ devServerPreview,
33
+ packageResolver,
34
+ }));
35
+ }
36
+ exports.createForgeController = createForgeController;
37
+ async function openForgeController(options) {
38
+ const storage = options.storage ?? (0, virtual_file_system_1.createIndexedDbForgeStorage)({ limits: options.limits });
39
+ const fileSystem = await (0, virtual_file_system_1.openVirtualFileSystem)({
40
+ ...options,
41
+ storage,
42
+ });
43
+ const packageResolver = (0, package_resolution_1.createPackageResolver)({
44
+ ...options.packageResolution,
45
+ fileSystem,
46
+ storage,
47
+ });
48
+ const buildPipeline = (0, build_pipeline_1.createBuildPipeline)({
49
+ fileSystem,
50
+ packageResolver,
51
+ });
52
+ const devServerPreview = (0, dev_server_preview_1.createDevServerPreview)({
53
+ fileSystem,
54
+ buildPipeline,
55
+ });
56
+ return new DefaultForgeController(fileSystem, buildPipeline, devServerPreview, packageResolver, (0, terminal_commands_1.createForgeTerminal)({ buildPipeline, devServerPreview, packageResolver }));
57
+ }
58
+ exports.openForgeController = openForgeController;
59
+ class DefaultForgeController {
60
+ constructor(fileSystem, buildPipeline, devServerPreview, packageResolver, terminal) {
61
+ this.fileSystem = fileSystem;
62
+ this.buildPipeline = buildPipeline;
63
+ this.devServerPreview = devServerPreview;
64
+ this.packageResolver = packageResolver;
65
+ this.terminal = terminal;
66
+ }
67
+ executeCommand(commandText, options) {
68
+ return this.terminal.execute(commandText, options);
69
+ }
70
+ rebuildDevSession(sessionId, options) {
71
+ return this.devServerPreview.rebuild(sessionId, options);
72
+ }
73
+ startDevSession(options) {
74
+ return this.devServerPreview.start(options);
75
+ }
76
+ stopDevSession(sessionId) {
77
+ return this.devServerPreview.stop(sessionId);
78
+ }
79
+ }
@@ -0,0 +1,7 @@
1
+ export { createEsbuildWasmWorkerMessageHandler, createEsbuildWasmWorkerService, createTransformFailureDiagnostic, createUnsupportedOperationDiagnostic, createWasmInitializationFailureDiagnostic, createWorkerNotInitializedDiagnostic, createWorkerStartupFailureDiagnostic, DefaultEsbuildWasmWorkerService, ESBUILD_WASM_WORKER_CAPABILITY, ESBUILD_WASM_WORKER_PROTOCOL, installEsbuildWasmWorker, type ForgeEsbuildWasmDiagnosticCauseCategory, type ForgeEsbuildWasmInitializeFailureResult, type ForgeEsbuildWasmInitializeRequest, type ForgeEsbuildWasmInitializeResult, type ForgeEsbuildWasmInitializeSuccessResult, type ForgeEsbuildWasmInitializeWorkerFailureResponse, type ForgeEsbuildWasmInitializeWorkerRequest, type ForgeEsbuildWasmInitializeWorkerSuccessResponse, type ForgeEsbuildWasmRuntime, type ForgeEsbuildWasmRuntimeMetadata, type ForgeEsbuildWasmTransformFailureResult, type ForgeEsbuildWasmTransformLoader, type ForgeEsbuildWasmTransformRequest, type ForgeEsbuildWasmTransformResult, type ForgeEsbuildWasmTransformSuccessResult, type ForgeEsbuildWasmTransformWarning, type ForgeEsbuildWasmTransformWorkerFailureResponse, type ForgeEsbuildWasmTransformWorkerRequest, type ForgeEsbuildWasmTransformWorkerSuccessResponse, type ForgeEsbuildWasmUnsupportedOperation, type ForgeEsbuildWasmUnsupportedOperationResult, type ForgeEsbuildWasmUrl, type ForgeEsbuildWasmWorkerAdapterOptions, type ForgeEsbuildWasmWorkerDiagnostic, type ForgeEsbuildWasmWorkerDiagnosticCode, type ForgeEsbuildWasmWorkerFactory, type ForgeEsbuildWasmWorkerGlobalScope, type ForgeEsbuildWasmWorkerMessageEvent, type ForgeEsbuildWasmWorkerPort, type ForgeEsbuildWasmWorkerRequestMessage, type ForgeEsbuildWasmWorkerResponseMessage, type ForgeEsbuildWasmWorkerService, type ForgeEsbuildWasmWorkerServiceOptions, } from "./esbuild-wasm-worker";
2
+ export { createForgeController, openForgeController, type ForgeController, type ForgeControllerOptions, type ForgeOpenControllerOptions, } from "./forge-controller";
3
+ export { BUILD_PIPELINE_CAPABILITY, createBuildPipeline, createEsbuildWorkerTransformDiagnostic, createMissingBuildScriptDiagnostic, createMissingEntryDiagnostic, createUnresolvedImportDiagnostic, createUnsupportedBuildScriptDiagnostic, createViteConfigNotExecutedDiagnostic, DefaultBuildPipeline, isSupportedViteBuildScript, type ForgeBrowserBundle, type ForgeBrowserBundleManifest, type ForgeBuildDiagnostic, type ForgeBuildManifest, type ForgeBuildMode, type ForgeBuildOutputFile, type ForgeBuildPipeline, type ForgeBuildPipelineDiagnostic, type ForgeBuildPipelineDiagnosticCode, type ForgeBuildPipelineOptions, type ForgeBuildRequest, type ForgeBuildResult, type ForgeBuildTiming, } from "./build-pipeline";
4
+ export { createInvalidDependencyDiagnostic, createInvalidManifestDiagnostic, createCdnPackageSource, createPackageCacheKey, createPackageResolutionDiagnostic, createPackageResolver, createUnsupportedRangeDiagnostic, createUnresolvedPackageDiagnostic, collectDependencyRequests, DEFAULT_FORGE_MANIFEST_PATH, DefaultPackageResolver, ForgePackageResolutionError, PACKAGE_RESOLUTION_CAPABILITY, readPackageManifest, type ForgeBundleAliases, type ForgeCdnPackageFetch, type ForgeCdnPackageMetadataUrlFactory, type ForgeCdnPackageSourceOptions, type ForgeDependencyKind, type ForgeDependencyRequest, type ForgeImportMap, type ForgePackageDiagnostic, type ForgePackageFile, type ForgePackageLockMetadata, type ForgePackageLockPackage, type ForgePackageManifest, type ForgePackageRecord, type ForgePackageResolutionDiagnostic, type ForgePackageResolutionDiagnosticCode, type ForgePackageResolutionMode, type ForgePackageResolutionResult, type ForgePackageResolver, type ForgePackageResolverOptions, type ForgePackageSource, type ForgeResolvePackagesOptions, } from "./package-resolution";
5
+ export { createDevServerPreview, createForgePreviewDocument, createMissingDevScriptDiagnostic, createSessionNotFoundDiagnostic, createSessionStoppedDiagnostic, createUnsupportedDevScriptDiagnostic, DefaultDevServerPreview, DEV_SERVER_PREVIEW_CAPABILITY, isSupportedViteDevScript, type ForgeCreatePreviewDocumentOptions, type ForgeDevServerPreview, type ForgeDevServerPreviewDiagnostic, type ForgeDevServerPreviewDiagnosticCode, type ForgeDevServerPreviewEvent, type ForgeDevServerPreviewEventListener, type ForgeDevServerPreviewOptions, type ForgeDevSession, type ForgeDevSessionDiagnostic, type ForgeDevSessionFailedEvent, type ForgeDevSessionFileChange, type ForgeDevSessionRefreshResult, type ForgeDevSessionStartedEvent, type ForgeDevSessionStartResult, type ForgeDevSessionStatus, type ForgeDevSessionStoppedEvent, type ForgeDevSessionStopResult, type ForgePreviewDocument, type ForgePreviewRefreshedEvent, type ForgeRebuildDevSessionOptions, type ForgeStartDevSessionOptions, } from "./dev-server-preview";
6
+ export { createForgeTerminal, createNpmInstallCommandHandler, createNpmRunBuildCommandHandler, createNpmRunDevCommandHandler, createParseErrorDiagnostic, createUnsupportedCommandDiagnostic, DefaultForgeTerminal, NpmInstallCommandHandler, NpmRunBuildCommandHandler, NpmRunDevCommandHandler, parseForgeCommandText, TERMINAL_COMMANDS_CAPABILITY, type ForgeCommand, type ForgeCommandContext, type ForgeCommandDiagnostic, type ForgeCommandHandler, type ForgeCommandParseResult, type ForgeCommandResult, type ForgeTerminal, type ForgeTerminalDiagnostic, type ForgeTerminalDiagnosticCode, type ForgeTerminalExecuteOptions, type ForgeTerminalOptions, type ForgeTerminalOutputKind, type ForgeTerminalOutputLine, } from "./terminal-commands";
7
+ export { createVirtualFileSystem, createForgeDiagnostic, createInvalidPathDiagnostic, createMissingParentDiagnostic, createNotFoundDiagnostic, createNotImplementedDiagnostic, createPathTraversalDiagnostic, createIndexedDbForgeStorage, createLimitExceededDiagnostic, ForgeFileSystemError, DEFAULT_FORGE_VFS_LIMITS, FORGE_INDEXED_DB_NAME, FORGE_INDEXED_DB_STORES, FORGE_INDEXED_DB_VERSION, IndexedDbForgeStorage, normalizeForgePath, openVirtualFileSystem, resolveForgeVirtualFileSystemLimits, VIRTUAL_FILE_SYSTEM_CAPABILITY, type ForgeBuildCacheRecord, type ForgeDiagnosticInput, type ForgeDeleteOptions, type ForgeDiagnostic, type ForgeDiagnosticCode, type ForgeDiagnosticSeverity, type ForgeDirEntry, type ForgeFileCreatedEvent, type ForgeFileDeletedEvent, type ForgeFileEvent, type ForgeFileKind, type ForgeFileRecord, type ForgeFileRenamedEvent, type ForgeFileSource, type ForgeFileStat, type ForgeFileUpdatedEvent, type ForgeFileWatchListener, type ForgeLimitDiagnostic, type ForgeMkdirOptions, type ForgeOpenVirtualFileSystemOptions, type ForgePackageCacheRecord, type ForgePersistedWorkspace, type ForgeVirtualFileSystemLimits, type ResolvedForgeVirtualFileSystemLimits, type ForgeRestoreOptions, type ForgeSnapshot, type ForgeSnapshotOptions, type ForgeUnsubscribe, type ForgeVirtualFileSystemOptions, type ForgeVirtualFileSystemStorage, type ForgeVirtualFileSystem, type ForgeWorkspace, type ForgeWorkspaceMetadata, type ForgeWriteFileOptions, type ForgePathNormalizationResult, type IndexedDbForgeStorageOptions, } from "./virtual-file-system";
package/dist/index.js ADDED
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createNpmRunDevCommandHandler = exports.createNpmRunBuildCommandHandler = exports.createNpmInstallCommandHandler = exports.createForgeTerminal = exports.isSupportedViteDevScript = exports.DEV_SERVER_PREVIEW_CAPABILITY = exports.DefaultDevServerPreview = exports.createUnsupportedDevScriptDiagnostic = exports.createSessionStoppedDiagnostic = exports.createSessionNotFoundDiagnostic = exports.createMissingDevScriptDiagnostic = exports.createForgePreviewDocument = exports.createDevServerPreview = exports.readPackageManifest = exports.PACKAGE_RESOLUTION_CAPABILITY = exports.ForgePackageResolutionError = exports.DefaultPackageResolver = exports.DEFAULT_FORGE_MANIFEST_PATH = exports.collectDependencyRequests = exports.createUnresolvedPackageDiagnostic = exports.createUnsupportedRangeDiagnostic = exports.createPackageResolver = exports.createPackageResolutionDiagnostic = exports.createPackageCacheKey = exports.createCdnPackageSource = exports.createInvalidManifestDiagnostic = exports.createInvalidDependencyDiagnostic = exports.isSupportedViteBuildScript = exports.DefaultBuildPipeline = exports.createViteConfigNotExecutedDiagnostic = exports.createUnsupportedBuildScriptDiagnostic = exports.createUnresolvedImportDiagnostic = exports.createMissingEntryDiagnostic = exports.createMissingBuildScriptDiagnostic = exports.createEsbuildWorkerTransformDiagnostic = exports.createBuildPipeline = exports.BUILD_PIPELINE_CAPABILITY = exports.openForgeController = exports.createForgeController = exports.installEsbuildWasmWorker = exports.ESBUILD_WASM_WORKER_PROTOCOL = exports.ESBUILD_WASM_WORKER_CAPABILITY = exports.DefaultEsbuildWasmWorkerService = exports.createWorkerStartupFailureDiagnostic = exports.createWorkerNotInitializedDiagnostic = exports.createWasmInitializationFailureDiagnostic = exports.createUnsupportedOperationDiagnostic = exports.createTransformFailureDiagnostic = exports.createEsbuildWasmWorkerService = exports.createEsbuildWasmWorkerMessageHandler = void 0;
4
+ exports.VIRTUAL_FILE_SYSTEM_CAPABILITY = exports.resolveForgeVirtualFileSystemLimits = exports.openVirtualFileSystem = exports.normalizeForgePath = exports.IndexedDbForgeStorage = exports.FORGE_INDEXED_DB_VERSION = exports.FORGE_INDEXED_DB_STORES = exports.FORGE_INDEXED_DB_NAME = exports.DEFAULT_FORGE_VFS_LIMITS = exports.ForgeFileSystemError = exports.createLimitExceededDiagnostic = exports.createIndexedDbForgeStorage = exports.createPathTraversalDiagnostic = exports.createNotImplementedDiagnostic = exports.createNotFoundDiagnostic = exports.createMissingParentDiagnostic = exports.createInvalidPathDiagnostic = exports.createForgeDiagnostic = exports.createVirtualFileSystem = exports.TERMINAL_COMMANDS_CAPABILITY = exports.parseForgeCommandText = exports.NpmRunDevCommandHandler = exports.NpmRunBuildCommandHandler = exports.NpmInstallCommandHandler = exports.DefaultForgeTerminal = exports.createUnsupportedCommandDiagnostic = exports.createParseErrorDiagnostic = void 0;
5
+ var esbuild_wasm_worker_1 = require("./esbuild-wasm-worker");
6
+ Object.defineProperty(exports, "createEsbuildWasmWorkerMessageHandler", { enumerable: true, get: function () { return esbuild_wasm_worker_1.createEsbuildWasmWorkerMessageHandler; } });
7
+ Object.defineProperty(exports, "createEsbuildWasmWorkerService", { enumerable: true, get: function () { return esbuild_wasm_worker_1.createEsbuildWasmWorkerService; } });
8
+ Object.defineProperty(exports, "createTransformFailureDiagnostic", { enumerable: true, get: function () { return esbuild_wasm_worker_1.createTransformFailureDiagnostic; } });
9
+ Object.defineProperty(exports, "createUnsupportedOperationDiagnostic", { enumerable: true, get: function () { return esbuild_wasm_worker_1.createUnsupportedOperationDiagnostic; } });
10
+ Object.defineProperty(exports, "createWasmInitializationFailureDiagnostic", { enumerable: true, get: function () { return esbuild_wasm_worker_1.createWasmInitializationFailureDiagnostic; } });
11
+ Object.defineProperty(exports, "createWorkerNotInitializedDiagnostic", { enumerable: true, get: function () { return esbuild_wasm_worker_1.createWorkerNotInitializedDiagnostic; } });
12
+ Object.defineProperty(exports, "createWorkerStartupFailureDiagnostic", { enumerable: true, get: function () { return esbuild_wasm_worker_1.createWorkerStartupFailureDiagnostic; } });
13
+ Object.defineProperty(exports, "DefaultEsbuildWasmWorkerService", { enumerable: true, get: function () { return esbuild_wasm_worker_1.DefaultEsbuildWasmWorkerService; } });
14
+ Object.defineProperty(exports, "ESBUILD_WASM_WORKER_CAPABILITY", { enumerable: true, get: function () { return esbuild_wasm_worker_1.ESBUILD_WASM_WORKER_CAPABILITY; } });
15
+ Object.defineProperty(exports, "ESBUILD_WASM_WORKER_PROTOCOL", { enumerable: true, get: function () { return esbuild_wasm_worker_1.ESBUILD_WASM_WORKER_PROTOCOL; } });
16
+ Object.defineProperty(exports, "installEsbuildWasmWorker", { enumerable: true, get: function () { return esbuild_wasm_worker_1.installEsbuildWasmWorker; } });
17
+ var forge_controller_1 = require("./forge-controller");
18
+ Object.defineProperty(exports, "createForgeController", { enumerable: true, get: function () { return forge_controller_1.createForgeController; } });
19
+ Object.defineProperty(exports, "openForgeController", { enumerable: true, get: function () { return forge_controller_1.openForgeController; } });
20
+ var build_pipeline_1 = require("./build-pipeline");
21
+ Object.defineProperty(exports, "BUILD_PIPELINE_CAPABILITY", { enumerable: true, get: function () { return build_pipeline_1.BUILD_PIPELINE_CAPABILITY; } });
22
+ Object.defineProperty(exports, "createBuildPipeline", { enumerable: true, get: function () { return build_pipeline_1.createBuildPipeline; } });
23
+ Object.defineProperty(exports, "createEsbuildWorkerTransformDiagnostic", { enumerable: true, get: function () { return build_pipeline_1.createEsbuildWorkerTransformDiagnostic; } });
24
+ Object.defineProperty(exports, "createMissingBuildScriptDiagnostic", { enumerable: true, get: function () { return build_pipeline_1.createMissingBuildScriptDiagnostic; } });
25
+ Object.defineProperty(exports, "createMissingEntryDiagnostic", { enumerable: true, get: function () { return build_pipeline_1.createMissingEntryDiagnostic; } });
26
+ Object.defineProperty(exports, "createUnresolvedImportDiagnostic", { enumerable: true, get: function () { return build_pipeline_1.createUnresolvedImportDiagnostic; } });
27
+ Object.defineProperty(exports, "createUnsupportedBuildScriptDiagnostic", { enumerable: true, get: function () { return build_pipeline_1.createUnsupportedBuildScriptDiagnostic; } });
28
+ Object.defineProperty(exports, "createViteConfigNotExecutedDiagnostic", { enumerable: true, get: function () { return build_pipeline_1.createViteConfigNotExecutedDiagnostic; } });
29
+ Object.defineProperty(exports, "DefaultBuildPipeline", { enumerable: true, get: function () { return build_pipeline_1.DefaultBuildPipeline; } });
30
+ Object.defineProperty(exports, "isSupportedViteBuildScript", { enumerable: true, get: function () { return build_pipeline_1.isSupportedViteBuildScript; } });
31
+ var package_resolution_1 = require("./package-resolution");
32
+ Object.defineProperty(exports, "createInvalidDependencyDiagnostic", { enumerable: true, get: function () { return package_resolution_1.createInvalidDependencyDiagnostic; } });
33
+ Object.defineProperty(exports, "createInvalidManifestDiagnostic", { enumerable: true, get: function () { return package_resolution_1.createInvalidManifestDiagnostic; } });
34
+ Object.defineProperty(exports, "createCdnPackageSource", { enumerable: true, get: function () { return package_resolution_1.createCdnPackageSource; } });
35
+ Object.defineProperty(exports, "createPackageCacheKey", { enumerable: true, get: function () { return package_resolution_1.createPackageCacheKey; } });
36
+ Object.defineProperty(exports, "createPackageResolutionDiagnostic", { enumerable: true, get: function () { return package_resolution_1.createPackageResolutionDiagnostic; } });
37
+ Object.defineProperty(exports, "createPackageResolver", { enumerable: true, get: function () { return package_resolution_1.createPackageResolver; } });
38
+ Object.defineProperty(exports, "createUnsupportedRangeDiagnostic", { enumerable: true, get: function () { return package_resolution_1.createUnsupportedRangeDiagnostic; } });
39
+ Object.defineProperty(exports, "createUnresolvedPackageDiagnostic", { enumerable: true, get: function () { return package_resolution_1.createUnresolvedPackageDiagnostic; } });
40
+ Object.defineProperty(exports, "collectDependencyRequests", { enumerable: true, get: function () { return package_resolution_1.collectDependencyRequests; } });
41
+ Object.defineProperty(exports, "DEFAULT_FORGE_MANIFEST_PATH", { enumerable: true, get: function () { return package_resolution_1.DEFAULT_FORGE_MANIFEST_PATH; } });
42
+ Object.defineProperty(exports, "DefaultPackageResolver", { enumerable: true, get: function () { return package_resolution_1.DefaultPackageResolver; } });
43
+ Object.defineProperty(exports, "ForgePackageResolutionError", { enumerable: true, get: function () { return package_resolution_1.ForgePackageResolutionError; } });
44
+ Object.defineProperty(exports, "PACKAGE_RESOLUTION_CAPABILITY", { enumerable: true, get: function () { return package_resolution_1.PACKAGE_RESOLUTION_CAPABILITY; } });
45
+ Object.defineProperty(exports, "readPackageManifest", { enumerable: true, get: function () { return package_resolution_1.readPackageManifest; } });
46
+ var dev_server_preview_1 = require("./dev-server-preview");
47
+ Object.defineProperty(exports, "createDevServerPreview", { enumerable: true, get: function () { return dev_server_preview_1.createDevServerPreview; } });
48
+ Object.defineProperty(exports, "createForgePreviewDocument", { enumerable: true, get: function () { return dev_server_preview_1.createForgePreviewDocument; } });
49
+ Object.defineProperty(exports, "createMissingDevScriptDiagnostic", { enumerable: true, get: function () { return dev_server_preview_1.createMissingDevScriptDiagnostic; } });
50
+ Object.defineProperty(exports, "createSessionNotFoundDiagnostic", { enumerable: true, get: function () { return dev_server_preview_1.createSessionNotFoundDiagnostic; } });
51
+ Object.defineProperty(exports, "createSessionStoppedDiagnostic", { enumerable: true, get: function () { return dev_server_preview_1.createSessionStoppedDiagnostic; } });
52
+ Object.defineProperty(exports, "createUnsupportedDevScriptDiagnostic", { enumerable: true, get: function () { return dev_server_preview_1.createUnsupportedDevScriptDiagnostic; } });
53
+ Object.defineProperty(exports, "DefaultDevServerPreview", { enumerable: true, get: function () { return dev_server_preview_1.DefaultDevServerPreview; } });
54
+ Object.defineProperty(exports, "DEV_SERVER_PREVIEW_CAPABILITY", { enumerable: true, get: function () { return dev_server_preview_1.DEV_SERVER_PREVIEW_CAPABILITY; } });
55
+ Object.defineProperty(exports, "isSupportedViteDevScript", { enumerable: true, get: function () { return dev_server_preview_1.isSupportedViteDevScript; } });
56
+ var terminal_commands_1 = require("./terminal-commands");
57
+ Object.defineProperty(exports, "createForgeTerminal", { enumerable: true, get: function () { return terminal_commands_1.createForgeTerminal; } });
58
+ Object.defineProperty(exports, "createNpmInstallCommandHandler", { enumerable: true, get: function () { return terminal_commands_1.createNpmInstallCommandHandler; } });
59
+ Object.defineProperty(exports, "createNpmRunBuildCommandHandler", { enumerable: true, get: function () { return terminal_commands_1.createNpmRunBuildCommandHandler; } });
60
+ Object.defineProperty(exports, "createNpmRunDevCommandHandler", { enumerable: true, get: function () { return terminal_commands_1.createNpmRunDevCommandHandler; } });
61
+ Object.defineProperty(exports, "createParseErrorDiagnostic", { enumerable: true, get: function () { return terminal_commands_1.createParseErrorDiagnostic; } });
62
+ Object.defineProperty(exports, "createUnsupportedCommandDiagnostic", { enumerable: true, get: function () { return terminal_commands_1.createUnsupportedCommandDiagnostic; } });
63
+ Object.defineProperty(exports, "DefaultForgeTerminal", { enumerable: true, get: function () { return terminal_commands_1.DefaultForgeTerminal; } });
64
+ Object.defineProperty(exports, "NpmInstallCommandHandler", { enumerable: true, get: function () { return terminal_commands_1.NpmInstallCommandHandler; } });
65
+ Object.defineProperty(exports, "NpmRunBuildCommandHandler", { enumerable: true, get: function () { return terminal_commands_1.NpmRunBuildCommandHandler; } });
66
+ Object.defineProperty(exports, "NpmRunDevCommandHandler", { enumerable: true, get: function () { return terminal_commands_1.NpmRunDevCommandHandler; } });
67
+ Object.defineProperty(exports, "parseForgeCommandText", { enumerable: true, get: function () { return terminal_commands_1.parseForgeCommandText; } });
68
+ Object.defineProperty(exports, "TERMINAL_COMMANDS_CAPABILITY", { enumerable: true, get: function () { return terminal_commands_1.TERMINAL_COMMANDS_CAPABILITY; } });
69
+ var virtual_file_system_1 = require("./virtual-file-system");
70
+ Object.defineProperty(exports, "createVirtualFileSystem", { enumerable: true, get: function () { return virtual_file_system_1.createVirtualFileSystem; } });
71
+ Object.defineProperty(exports, "createForgeDiagnostic", { enumerable: true, get: function () { return virtual_file_system_1.createForgeDiagnostic; } });
72
+ Object.defineProperty(exports, "createInvalidPathDiagnostic", { enumerable: true, get: function () { return virtual_file_system_1.createInvalidPathDiagnostic; } });
73
+ Object.defineProperty(exports, "createMissingParentDiagnostic", { enumerable: true, get: function () { return virtual_file_system_1.createMissingParentDiagnostic; } });
74
+ Object.defineProperty(exports, "createNotFoundDiagnostic", { enumerable: true, get: function () { return virtual_file_system_1.createNotFoundDiagnostic; } });
75
+ Object.defineProperty(exports, "createNotImplementedDiagnostic", { enumerable: true, get: function () { return virtual_file_system_1.createNotImplementedDiagnostic; } });
76
+ Object.defineProperty(exports, "createPathTraversalDiagnostic", { enumerable: true, get: function () { return virtual_file_system_1.createPathTraversalDiagnostic; } });
77
+ Object.defineProperty(exports, "createIndexedDbForgeStorage", { enumerable: true, get: function () { return virtual_file_system_1.createIndexedDbForgeStorage; } });
78
+ Object.defineProperty(exports, "createLimitExceededDiagnostic", { enumerable: true, get: function () { return virtual_file_system_1.createLimitExceededDiagnostic; } });
79
+ Object.defineProperty(exports, "ForgeFileSystemError", { enumerable: true, get: function () { return virtual_file_system_1.ForgeFileSystemError; } });
80
+ Object.defineProperty(exports, "DEFAULT_FORGE_VFS_LIMITS", { enumerable: true, get: function () { return virtual_file_system_1.DEFAULT_FORGE_VFS_LIMITS; } });
81
+ Object.defineProperty(exports, "FORGE_INDEXED_DB_NAME", { enumerable: true, get: function () { return virtual_file_system_1.FORGE_INDEXED_DB_NAME; } });
82
+ Object.defineProperty(exports, "FORGE_INDEXED_DB_STORES", { enumerable: true, get: function () { return virtual_file_system_1.FORGE_INDEXED_DB_STORES; } });
83
+ Object.defineProperty(exports, "FORGE_INDEXED_DB_VERSION", { enumerable: true, get: function () { return virtual_file_system_1.FORGE_INDEXED_DB_VERSION; } });
84
+ Object.defineProperty(exports, "IndexedDbForgeStorage", { enumerable: true, get: function () { return virtual_file_system_1.IndexedDbForgeStorage; } });
85
+ Object.defineProperty(exports, "normalizeForgePath", { enumerable: true, get: function () { return virtual_file_system_1.normalizeForgePath; } });
86
+ Object.defineProperty(exports, "openVirtualFileSystem", { enumerable: true, get: function () { return virtual_file_system_1.openVirtualFileSystem; } });
87
+ Object.defineProperty(exports, "resolveForgeVirtualFileSystemLimits", { enumerable: true, get: function () { return virtual_file_system_1.resolveForgeVirtualFileSystemLimits; } });
88
+ Object.defineProperty(exports, "VIRTUAL_FILE_SYSTEM_CAPABILITY", { enumerable: true, get: function () { return virtual_file_system_1.VIRTUAL_FILE_SYSTEM_CAPABILITY; } });
@@ -0,0 +1,11 @@
1
+ import type { ForgeDependencyRequest, ForgePackageSource } from "./types";
2
+ export type ForgeCdnPackageFetch = (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>;
3
+ export type ForgeCdnPackageMetadataUrlFactory = (request: ForgeDependencyRequest, baseUrl: string) => string | URL;
4
+ export interface ForgeCdnPackageSourceOptions {
5
+ readonly baseUrl: string | URL;
6
+ readonly id?: string;
7
+ readonly fetch?: ForgeCdnPackageFetch;
8
+ readonly headers?: HeadersInit;
9
+ readonly createMetadataUrl?: ForgeCdnPackageMetadataUrlFactory;
10
+ }
11
+ export declare function createCdnPackageSource(options: ForgeCdnPackageSourceOptions): ForgePackageSource;
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createCdnPackageSource = void 0;
4
+ const DEFAULT_CDN_SOURCE_ID = "cdn";
5
+ function createCdnPackageSource(options) {
6
+ const baseUrl = options.baseUrl.toString();
7
+ const fetchPackage = options.fetch ?? globalThis.fetch?.bind(globalThis);
8
+ const sourceId = options.id ?? DEFAULT_CDN_SOURCE_ID;
9
+ const createMetadataUrl = options.createMetadataUrl ?? createDefaultMetadataUrl;
10
+ return {
11
+ id: sourceId,
12
+ async resolvePackage(request) {
13
+ if (fetchPackage === undefined) {
14
+ return undefined;
15
+ }
16
+ let response;
17
+ try {
18
+ response = await fetchPackage(createMetadataUrl(request, baseUrl), {
19
+ headers: options.headers,
20
+ });
21
+ }
22
+ catch {
23
+ return undefined;
24
+ }
25
+ if (!response.ok) {
26
+ return undefined;
27
+ }
28
+ let metadata;
29
+ try {
30
+ metadata = await response.json();
31
+ }
32
+ catch {
33
+ return undefined;
34
+ }
35
+ return normalizeCdnPackageRecord(metadata, request, sourceId);
36
+ },
37
+ };
38
+ }
39
+ exports.createCdnPackageSource = createCdnPackageSource;
40
+ function createDefaultMetadataUrl(request, baseUrl) {
41
+ const trimmedBase = baseUrl.replace(/\/+$/, "");
42
+ const packageKey = `${encodeURIComponent(request.name)}@${encodeURIComponent(request.requestedRange)}`;
43
+ return `${trimmedBase}/${packageKey}.json`;
44
+ }
45
+ function normalizeCdnPackageRecord(metadata, request, sourceId) {
46
+ if (!isPlainObject(metadata)) {
47
+ return undefined;
48
+ }
49
+ const version = stringField(metadata, "version");
50
+ const entry = selectPackageEntry(metadata);
51
+ const entryUrl = stringField(metadata, "entryUrl");
52
+ if (version === undefined || entry === undefined) {
53
+ return undefined;
54
+ }
55
+ return {
56
+ name: request.name,
57
+ requestedRange: request.requestedRange,
58
+ sourceId,
59
+ version,
60
+ entry,
61
+ entryUrl,
62
+ browserEntry: stringField(metadata, "browserEntry") ?? browserEntryField(metadata),
63
+ moduleEntry: stringField(metadata, "moduleEntry") ?? stringField(metadata, "module"),
64
+ dependencies: stringRecordField(metadata, "dependencies") ?? {},
65
+ files: packageFilesField(metadata, "files") ?? {},
66
+ integrity: stringField(metadata, "integrity"),
67
+ };
68
+ }
69
+ function selectPackageEntry(metadata) {
70
+ return (stringField(metadata, "entry") ??
71
+ browserEntryField(metadata) ??
72
+ exportsEntryField(metadata) ??
73
+ stringField(metadata, "moduleEntry") ??
74
+ stringField(metadata, "module") ??
75
+ stringField(metadata, "main"));
76
+ }
77
+ function browserEntryField(metadata) {
78
+ const browser = metadata.browser;
79
+ return typeof browser === "string" && browser.length > 0
80
+ ? browser
81
+ : undefined;
82
+ }
83
+ function exportsEntryField(metadata) {
84
+ return selectExportEntry(metadata.exports);
85
+ }
86
+ function selectExportEntry(value) {
87
+ if (typeof value === "string" && value.length > 0) {
88
+ return value;
89
+ }
90
+ if (!isPlainObject(value)) {
91
+ return undefined;
92
+ }
93
+ const rootExport = value["."];
94
+ if (rootExport !== undefined) {
95
+ return selectExportEntry(rootExport);
96
+ }
97
+ return (selectExportCondition(value, "browser") ??
98
+ selectExportCondition(value, "import") ??
99
+ selectExportCondition(value, "default"));
100
+ }
101
+ function selectExportCondition(value, condition) {
102
+ return selectExportEntry(value[condition]);
103
+ }
104
+ function packageFilesField(value, field) {
105
+ const files = value[field];
106
+ if (files === undefined) {
107
+ return undefined;
108
+ }
109
+ if (!isPlainObject(files)) {
110
+ return undefined;
111
+ }
112
+ const result = {};
113
+ for (const [path, file] of Object.entries(files)) {
114
+ if (!isPlainObject(file)) {
115
+ return undefined;
116
+ }
117
+ const filePath = stringField(file, "path") ?? path;
118
+ const contentType = stringField(file, "contentType");
119
+ const size = numberField(file, "size");
120
+ const content = file.content;
121
+ if (content !== undefined &&
122
+ typeof content !== "string" &&
123
+ !(content instanceof Uint8Array)) {
124
+ return undefined;
125
+ }
126
+ result[path] = {
127
+ path: filePath,
128
+ content,
129
+ contentType,
130
+ size,
131
+ };
132
+ }
133
+ return result;
134
+ }
135
+ function stringRecordField(value, field) {
136
+ const record = value[field];
137
+ if (record === undefined) {
138
+ return undefined;
139
+ }
140
+ if (!isPlainObject(record)) {
141
+ return undefined;
142
+ }
143
+ const result = {};
144
+ for (const [key, item] of Object.entries(record)) {
145
+ if (typeof item !== "string") {
146
+ return undefined;
147
+ }
148
+ result[key] = item;
149
+ }
150
+ return result;
151
+ }
152
+ function stringField(value, field) {
153
+ const item = value[field];
154
+ return typeof item === "string" && item.length > 0 ? item : undefined;
155
+ }
156
+ function numberField(value, field) {
157
+ const item = value[field];
158
+ return typeof item === "number" && Number.isFinite(item) ? item : undefined;
159
+ }
160
+ function isPlainObject(value) {
161
+ return (typeof value === "object" &&
162
+ value !== null &&
163
+ !Array.isArray(value));
164
+ }
@@ -0,0 +1,15 @@
1
+ import type { ForgePackageResolutionDiagnostic, ForgePackageResolutionDiagnosticCode } from "./types";
2
+ interface ForgePackageDiagnosticInput {
3
+ readonly code: ForgePackageResolutionDiagnosticCode;
4
+ readonly message: string;
5
+ readonly path?: string;
6
+ readonly dependencyName?: string;
7
+ readonly requestedRange?: string;
8
+ readonly cause?: unknown;
9
+ }
10
+ export declare function createPackageResolutionDiagnostic(input: ForgePackageDiagnosticInput): ForgePackageResolutionDiagnostic;
11
+ export declare function createInvalidManifestDiagnostic(path: string, cause?: unknown): ForgePackageResolutionDiagnostic;
12
+ export declare function createInvalidDependencyDiagnostic(dependencyName: string, requestedRange: string | undefined, message?: string): ForgePackageResolutionDiagnostic;
13
+ export declare function createUnsupportedRangeDiagnostic(dependencyName: string, requestedRange: string): ForgePackageResolutionDiagnostic;
14
+ export declare function createUnresolvedPackageDiagnostic(dependencyName: string, requestedRange: string): ForgePackageResolutionDiagnostic;
15
+ export {};
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createUnresolvedPackageDiagnostic = exports.createUnsupportedRangeDiagnostic = exports.createInvalidDependencyDiagnostic = exports.createInvalidManifestDiagnostic = exports.createPackageResolutionDiagnostic = void 0;
4
+ function createPackageResolutionDiagnostic(input) {
5
+ return {
6
+ code: input.code,
7
+ severity: "error",
8
+ message: input.message,
9
+ path: input.path,
10
+ dependencyName: input.dependencyName,
11
+ requestedRange: input.requestedRange,
12
+ cause: input.cause,
13
+ };
14
+ }
15
+ exports.createPackageResolutionDiagnostic = createPackageResolutionDiagnostic;
16
+ function createInvalidManifestDiagnostic(path, cause) {
17
+ return createPackageResolutionDiagnostic({
18
+ code: "invalid_manifest",
19
+ message: "Package manifest is invalid.",
20
+ path,
21
+ cause,
22
+ });
23
+ }
24
+ exports.createInvalidManifestDiagnostic = createInvalidManifestDiagnostic;
25
+ function createInvalidDependencyDiagnostic(dependencyName, requestedRange, message = "Package dependency declaration is invalid.") {
26
+ return createPackageResolutionDiagnostic({
27
+ code: "invalid_dependency",
28
+ message,
29
+ dependencyName,
30
+ requestedRange,
31
+ });
32
+ }
33
+ exports.createInvalidDependencyDiagnostic = createInvalidDependencyDiagnostic;
34
+ function createUnsupportedRangeDiagnostic(dependencyName, requestedRange) {
35
+ return createPackageResolutionDiagnostic({
36
+ code: "unsupported_range",
37
+ message: "Package range uses an unsupported resolver protocol.",
38
+ dependencyName,
39
+ requestedRange,
40
+ });
41
+ }
42
+ exports.createUnsupportedRangeDiagnostic = createUnsupportedRangeDiagnostic;
43
+ function createUnresolvedPackageDiagnostic(dependencyName, requestedRange) {
44
+ return createPackageResolutionDiagnostic({
45
+ code: "unresolved_package",
46
+ message: "Package could not be resolved by configured sources.",
47
+ dependencyName,
48
+ requestedRange,
49
+ });
50
+ }
51
+ exports.createUnresolvedPackageDiagnostic = createUnresolvedPackageDiagnostic;
@@ -0,0 +1,5 @@
1
+ import type { ForgePackageDiagnostic } from "./types";
2
+ export declare class ForgePackageResolutionError extends Error {
3
+ readonly diagnostic: ForgePackageDiagnostic;
4
+ constructor(diagnostic: ForgePackageDiagnostic);
5
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ForgePackageResolutionError = void 0;
4
+ class ForgePackageResolutionError extends Error {
5
+ constructor(diagnostic) {
6
+ super(diagnostic.message);
7
+ this.diagnostic = diagnostic;
8
+ this.name = "ForgePackageResolutionError";
9
+ }
10
+ }
11
+ exports.ForgePackageResolutionError = ForgePackageResolutionError;
@@ -0,0 +1,6 @@
1
+ export { createCdnPackageSource, type ForgeCdnPackageFetch, type ForgeCdnPackageMetadataUrlFactory, type ForgeCdnPackageSourceOptions, } from "./cdn-source";
2
+ export { createInvalidDependencyDiagnostic, createInvalidManifestDiagnostic, createPackageResolutionDiagnostic, createUnsupportedRangeDiagnostic, createUnresolvedPackageDiagnostic, } from "./diagnostics";
3
+ export { ForgePackageResolutionError } from "./errors";
4
+ export { collectDependencyRequests, DEFAULT_FORGE_MANIFEST_PATH, readPackageManifest, } from "./manifest";
5
+ export { createPackageCacheKey, createPackageResolver, DefaultPackageResolver, } from "./resolver";
6
+ export { PACKAGE_RESOLUTION_CAPABILITY, type ForgeBundleAliases, type ForgeDependencyKind, type ForgeDependencyRequest, type ForgeImportMap, type ForgePackageDiagnostic, type ForgePackageFile, type ForgePackageLockMetadata, type ForgePackageLockPackage, type ForgePackageManifest, type ForgePackageRecord, type ForgePackageResolutionDiagnostic, type ForgePackageResolutionDiagnosticCode, type ForgePackageResolutionMode, type ForgePackageResolutionResult, type ForgePackageResolver, type ForgePackageResolverOptions, type ForgePackageSource, type ForgeResolvePackagesOptions, } from "./types";
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PACKAGE_RESOLUTION_CAPABILITY = exports.DefaultPackageResolver = exports.createPackageResolver = exports.createPackageCacheKey = exports.readPackageManifest = exports.DEFAULT_FORGE_MANIFEST_PATH = exports.collectDependencyRequests = exports.ForgePackageResolutionError = exports.createUnresolvedPackageDiagnostic = exports.createUnsupportedRangeDiagnostic = exports.createPackageResolutionDiagnostic = exports.createInvalidManifestDiagnostic = exports.createInvalidDependencyDiagnostic = exports.createCdnPackageSource = void 0;
4
+ var cdn_source_1 = require("./cdn-source");
5
+ Object.defineProperty(exports, "createCdnPackageSource", { enumerable: true, get: function () { return cdn_source_1.createCdnPackageSource; } });
6
+ var diagnostics_1 = require("./diagnostics");
7
+ Object.defineProperty(exports, "createInvalidDependencyDiagnostic", { enumerable: true, get: function () { return diagnostics_1.createInvalidDependencyDiagnostic; } });
8
+ Object.defineProperty(exports, "createInvalidManifestDiagnostic", { enumerable: true, get: function () { return diagnostics_1.createInvalidManifestDiagnostic; } });
9
+ Object.defineProperty(exports, "createPackageResolutionDiagnostic", { enumerable: true, get: function () { return diagnostics_1.createPackageResolutionDiagnostic; } });
10
+ Object.defineProperty(exports, "createUnsupportedRangeDiagnostic", { enumerable: true, get: function () { return diagnostics_1.createUnsupportedRangeDiagnostic; } });
11
+ Object.defineProperty(exports, "createUnresolvedPackageDiagnostic", { enumerable: true, get: function () { return diagnostics_1.createUnresolvedPackageDiagnostic; } });
12
+ var errors_1 = require("./errors");
13
+ Object.defineProperty(exports, "ForgePackageResolutionError", { enumerable: true, get: function () { return errors_1.ForgePackageResolutionError; } });
14
+ var manifest_1 = require("./manifest");
15
+ Object.defineProperty(exports, "collectDependencyRequests", { enumerable: true, get: function () { return manifest_1.collectDependencyRequests; } });
16
+ Object.defineProperty(exports, "DEFAULT_FORGE_MANIFEST_PATH", { enumerable: true, get: function () { return manifest_1.DEFAULT_FORGE_MANIFEST_PATH; } });
17
+ Object.defineProperty(exports, "readPackageManifest", { enumerable: true, get: function () { return manifest_1.readPackageManifest; } });
18
+ var resolver_1 = require("./resolver");
19
+ Object.defineProperty(exports, "createPackageCacheKey", { enumerable: true, get: function () { return resolver_1.createPackageCacheKey; } });
20
+ Object.defineProperty(exports, "createPackageResolver", { enumerable: true, get: function () { return resolver_1.createPackageResolver; } });
21
+ Object.defineProperty(exports, "DefaultPackageResolver", { enumerable: true, get: function () { return resolver_1.DefaultPackageResolver; } });
22
+ var types_1 = require("./types");
23
+ Object.defineProperty(exports, "PACKAGE_RESOLUTION_CAPABILITY", { enumerable: true, get: function () { return types_1.PACKAGE_RESOLUTION_CAPABILITY; } });
@@ -0,0 +1,5 @@
1
+ import type { ForgeVirtualFileSystem } from "../virtual-file-system";
2
+ import type { ForgeDependencyRequest, ForgePackageManifest } from "./types";
3
+ export declare const DEFAULT_FORGE_MANIFEST_PATH = "/package.json";
4
+ export declare function readPackageManifest(fileSystem: ForgeVirtualFileSystem, manifestPath?: string): Promise<ForgePackageManifest>;
5
+ export declare function collectDependencyRequests(manifest: ForgePackageManifest): readonly ForgeDependencyRequest[];
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.collectDependencyRequests = exports.readPackageManifest = exports.DEFAULT_FORGE_MANIFEST_PATH = void 0;
4
+ const virtual_file_system_1 = require("../virtual-file-system");
5
+ const diagnostics_1 = require("./diagnostics");
6
+ const errors_1 = require("./errors");
7
+ exports.DEFAULT_FORGE_MANIFEST_PATH = "/package.json";
8
+ async function readPackageManifest(fileSystem, manifestPath = exports.DEFAULT_FORGE_MANIFEST_PATH) {
9
+ let text;
10
+ try {
11
+ text = await fileSystem.readText(manifestPath);
12
+ }
13
+ catch (error) {
14
+ if (error instanceof virtual_file_system_1.ForgeFileSystemError) {
15
+ throw new errors_1.ForgePackageResolutionError(error.diagnostic);
16
+ }
17
+ throw error;
18
+ }
19
+ let parsed;
20
+ try {
21
+ parsed = JSON.parse(text);
22
+ }
23
+ catch (error) {
24
+ throw new errors_1.ForgePackageResolutionError((0, diagnostics_1.createInvalidManifestDiagnostic)(manifestPath, error));
25
+ }
26
+ if (!isPlainObject(parsed)) {
27
+ throw new errors_1.ForgePackageResolutionError((0, diagnostics_1.createInvalidManifestDiagnostic)(manifestPath));
28
+ }
29
+ return {
30
+ name: optionalString(parsed.name, manifestPath, "name"),
31
+ version: optionalString(parsed.version, manifestPath, "version"),
32
+ type: optionalString(parsed.type, manifestPath, "type"),
33
+ scripts: optionalStringRecord(parsed.scripts, manifestPath, "scripts"),
34
+ dependencies: optionalStringRecord(parsed.dependencies, manifestPath, "dependencies"),
35
+ devDependencies: optionalStringRecord(parsed.devDependencies, manifestPath, "devDependencies"),
36
+ imports: optionalUnknownRecord(parsed.imports),
37
+ };
38
+ }
39
+ exports.readPackageManifest = readPackageManifest;
40
+ function collectDependencyRequests(manifest) {
41
+ const requests = new Map();
42
+ addDependencyRequests(requests, manifest.dependencies, "dependency");
43
+ addDependencyRequests(requests, manifest.devDependencies, "devDependency");
44
+ return Array.from(requests.values()).sort((left, right) => compareDependencyRequests(left, right));
45
+ }
46
+ exports.collectDependencyRequests = collectDependencyRequests;
47
+ function addDependencyRequests(requests, dependencies, kind) {
48
+ const dependencyNames = Object.keys(dependencies).sort((left, right) => left.localeCompare(right));
49
+ for (const dependencyName of dependencyNames) {
50
+ const requestedRange = dependencies[dependencyName];
51
+ assertValidDependency(dependencyName, requestedRange);
52
+ const existing = requests.get(dependencyName);
53
+ if (existing !== undefined) {
54
+ if (existing.requestedRange !== requestedRange) {
55
+ throw new errors_1.ForgePackageResolutionError((0, diagnostics_1.createInvalidDependencyDiagnostic)(dependencyName, requestedRange, "Dependency is declared with conflicting ranges."));
56
+ }
57
+ continue;
58
+ }
59
+ requests.set(dependencyName, {
60
+ name: dependencyName,
61
+ requestedRange,
62
+ kind,
63
+ });
64
+ }
65
+ }
66
+ function compareDependencyRequests(left, right) {
67
+ const nameComparison = left.name.localeCompare(right.name);
68
+ if (nameComparison !== 0) {
69
+ return nameComparison;
70
+ }
71
+ return left.kind.localeCompare(right.kind);
72
+ }
73
+ function assertValidDependency(dependencyName, requestedRange) {
74
+ if (!isValidPackageName(dependencyName)) {
75
+ throw new errors_1.ForgePackageResolutionError((0, diagnostics_1.createInvalidDependencyDiagnostic)(dependencyName, requestedRange));
76
+ }
77
+ if (typeof requestedRange !== "string" || requestedRange.trim().length === 0) {
78
+ throw new errors_1.ForgePackageResolutionError((0, diagnostics_1.createInvalidDependencyDiagnostic)(dependencyName, requestedRange, "Dependency range must be a non-empty string."));
79
+ }
80
+ if (isUnsupportedRange(requestedRange)) {
81
+ throw new errors_1.ForgePackageResolutionError((0, diagnostics_1.createUnsupportedRangeDiagnostic)(dependencyName, requestedRange));
82
+ }
83
+ }
84
+ function optionalString(value, manifestPath, field) {
85
+ if (value === undefined) {
86
+ return undefined;
87
+ }
88
+ if (typeof value === "string") {
89
+ return value;
90
+ }
91
+ throw new errors_1.ForgePackageResolutionError((0, diagnostics_1.createInvalidManifestDiagnostic)(manifestPath, `${field} must be a string when present.`));
92
+ }
93
+ function optionalStringRecord(value, manifestPath, field) {
94
+ if (value === undefined) {
95
+ return {};
96
+ }
97
+ if (!isPlainObject(value)) {
98
+ throw new errors_1.ForgePackageResolutionError((0, diagnostics_1.createInvalidManifestDiagnostic)(manifestPath, `${field} must be an object when present.`));
99
+ }
100
+ const record = {};
101
+ for (const [key, item] of Object.entries(value)) {
102
+ if (typeof item !== "string") {
103
+ throw new errors_1.ForgePackageResolutionError((0, diagnostics_1.createInvalidManifestDiagnostic)(manifestPath, `${field}.${key} must be a string.`));
104
+ }
105
+ record[key] = item;
106
+ }
107
+ return record;
108
+ }
109
+ function optionalUnknownRecord(value) {
110
+ return isPlainObject(value) ? { ...value } : {};
111
+ }
112
+ function isPlainObject(value) {
113
+ return (typeof value === "object" &&
114
+ value !== null &&
115
+ !Array.isArray(value));
116
+ }
117
+ function isValidPackageName(name) {
118
+ if (name.length === 0 || name.length > 214 || name !== name.toLowerCase()) {
119
+ return false;
120
+ }
121
+ const packageNameSegment = "[a-z0-9][a-z0-9._~-]*";
122
+ const unscoped = new RegExp(`^${packageNameSegment}$`);
123
+ const scoped = new RegExp(`^@${packageNameSegment}/${packageNameSegment}$`);
124
+ return unscoped.test(name) || scoped.test(name);
125
+ }
126
+ function isUnsupportedRange(range) {
127
+ return /^(?:file:|link:|workspace:|git(?:\+|:)|https?:)/.test(range);
128
+ }