typescript 7.0.1-rc → 7.1.0-beta
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/NOTICE.txt +5 -36
- package/README.md +39 -14
- package/dist/api/async/api.d.ts +827 -123
- package/dist/api/async/api.d.ts.map +1 -1
- package/dist/api/async/api.js +2367 -340
- package/dist/api/async/api.js.map +1 -1
- package/dist/api/async/client.d.ts +35 -2
- package/dist/api/async/client.d.ts.map +1 -1
- package/dist/api/async/client.js +317 -59
- package/dist/api/async/client.js.map +1 -1
- package/dist/api/async/types.d.ts +199 -53
- package/dist/api/async/types.d.ts.map +1 -1
- package/dist/api/compilerOptions.generated.d.ts +123 -0
- package/dist/api/compilerOptions.generated.d.ts.map +1 -0
- package/dist/api/compilerOptions.generated.js +8 -0
- package/dist/api/compilerOptions.generated.js.map +1 -0
- package/dist/api/diagnosticFormatter.d.ts +9 -0
- package/dist/api/diagnosticFormatter.d.ts.map +1 -0
- package/dist/api/diagnosticFormatter.js +169 -0
- package/dist/api/diagnosticFormatter.js.map +1 -0
- package/dist/api/fs.d.ts +68 -13
- package/dist/api/fs.d.ts.map +1 -1
- package/dist/api/fs.js +62 -101
- package/dist/api/fs.js.map +1 -1
- package/dist/api/fsCallbacks.d.ts +27 -0
- package/dist/api/fsCallbacks.d.ts.map +1 -0
- package/dist/api/fsCallbacks.js +111 -0
- package/dist/api/fsCallbacks.js.map +1 -0
- package/dist/api/node/encoder.d.ts +3 -0
- package/dist/api/node/encoder.d.ts.map +1 -1
- package/dist/api/node/encoder.generated.js +2 -2
- package/dist/api/node/encoder.generated.js.map +1 -1
- package/dist/api/node/encoder.js +21 -33
- package/dist/api/node/encoder.js.map +1 -1
- package/dist/api/node/msgpack.d.ts.map +1 -1
- package/dist/api/node/msgpack.js +3 -3
- package/dist/api/node/msgpack.js.map +1 -1
- package/dist/api/node/node.d.ts +43 -10
- package/dist/api/node/node.d.ts.map +1 -1
- package/dist/api/node/node.generated.d.ts +20 -2
- package/dist/api/node/node.generated.d.ts.map +1 -1
- package/dist/api/node/node.generated.js +122 -52
- package/dist/api/node/node.generated.js.map +1 -1
- package/dist/api/node/node.infrastructure.d.ts +16 -3
- package/dist/api/node/node.infrastructure.d.ts.map +1 -1
- package/dist/api/node/node.infrastructure.js +20 -40
- package/dist/api/node/node.infrastructure.js.map +1 -1
- package/dist/api/node/node.js +269 -30
- package/dist/api/node/node.js.map +1 -1
- package/dist/api/node/protocol.d.ts +5 -2
- package/dist/api/node/protocol.d.ts.map +1 -1
- package/dist/api/node/protocol.generated.js +2 -2
- package/dist/api/node/protocol.generated.js.map +1 -1
- package/dist/api/node/protocol.js +5 -2
- package/dist/api/node/protocol.js.map +1 -1
- package/dist/api/node/wtf8.d.ts +10 -0
- package/dist/api/node/wtf8.d.ts.map +1 -0
- package/dist/api/node/wtf8.js +130 -0
- package/dist/api/node/wtf8.js.map +1 -0
- package/dist/api/options.d.ts +26 -6
- package/dist/api/options.d.ts.map +1 -1
- package/dist/api/options.js +21 -0
- package/dist/api/options.js.map +1 -1
- package/dist/api/path.d.ts +49 -39
- package/dist/api/path.d.ts.map +1 -1
- package/dist/api/path.js +409 -33
- package/dist/api/path.js.map +1 -1
- package/dist/api/prepareCompilerOptions.generated.d.ts +5 -0
- package/dist/api/prepareCompilerOptions.generated.d.ts.map +1 -0
- package/dist/api/prepareCompilerOptions.generated.js +24 -0
- package/dist/api/prepareCompilerOptions.generated.js.map +1 -0
- package/dist/api/proto.d.ts +58 -164
- package/dist/api/proto.d.ts.map +1 -1
- package/dist/api/proto.generated.d.ts +1419 -0
- package/dist/api/proto.generated.d.ts.map +1 -0
- package/dist/api/proto.generated.js +21 -0
- package/dist/api/proto.generated.js.map +1 -0
- package/dist/api/proto.js +28 -0
- package/dist/api/proto.js.map +1 -1
- package/dist/api/sourceFileCache.d.ts +51 -20
- package/dist/api/sourceFileCache.d.ts.map +1 -1
- package/dist/api/sourceFileCache.js +168 -37
- package/dist/api/sourceFileCache.js.map +1 -1
- package/dist/api/sync/api.d.ts +1553 -179
- package/dist/api/sync/api.d.ts.map +1 -1
- package/dist/api/sync/api.js +5086 -758
- package/dist/api/sync/api.js.map +1 -1
- package/dist/api/sync/client.d.ts +25 -2
- package/dist/api/sync/client.d.ts.map +1 -1
- package/dist/api/sync/client.js +132 -30
- package/dist/api/sync/client.js.map +1 -1
- package/dist/api/sync/generatorSupport.d.ts +32 -0
- package/dist/api/sync/generatorSupport.d.ts.map +1 -0
- package/dist/api/sync/generatorSupport.js +338 -0
- package/dist/api/sync/generatorSupport.js.map +1 -0
- package/dist/api/sync/types.d.ts +341 -68
- package/dist/api/sync/types.d.ts.map +1 -1
- package/dist/api/syncChannel.d.ts +7 -1
- package/dist/api/syncChannel.d.ts.map +1 -1
- package/dist/api/syncChannel.js +41 -3
- package/dist/api/syncChannel.js.map +1 -1
- package/dist/api/timing.d.ts +175 -0
- package/dist/api/timing.d.ts.map +1 -0
- package/dist/api/timing.js +149 -0
- package/dist/api/timing.js.map +1 -0
- package/dist/api/timingDump.d.ts +13 -0
- package/dist/api/timingDump.d.ts.map +1 -0
- package/dist/api/timingDump.js +38 -0
- package/dist/api/timingDump.js.map +1 -0
- package/dist/api/typedPaths.d.ts +3 -0
- package/dist/api/typedPaths.d.ts.map +1 -0
- package/dist/api/typedPaths.js +2 -0
- package/dist/api/typedPaths.js.map +1 -0
- package/dist/api/userPreferences.generated.d.ts +195 -0
- package/dist/api/userPreferences.generated.d.ts.map +1 -0
- package/dist/api/userPreferences.generated.js +3 -0
- package/dist/api/userPreferences.generated.js.map +1 -0
- package/dist/ast/ast.d.ts +125 -8
- package/dist/ast/ast.d.ts.map +1 -1
- package/dist/ast/ast.generated.d.ts +48 -42
- package/dist/ast/ast.generated.d.ts.map +1 -1
- package/dist/ast/ast.generated.js +1 -1
- package/dist/ast/ast.generated.js.map +1 -1
- package/dist/ast/ast.js +1 -0
- package/dist/ast/ast.js.map +1 -1
- package/dist/ast/astnav.d.ts +3 -2
- package/dist/ast/astnav.d.ts.map +1 -1
- package/dist/ast/astnav.js +148 -3
- package/dist/ast/astnav.js.map +1 -1
- package/dist/ast/factory.generated.d.ts +12 -150
- package/dist/ast/factory.generated.d.ts.map +1 -1
- package/dist/ast/factory.generated.js +2736 -8
- package/dist/ast/factory.generated.js.map +1 -1
- package/dist/ast/index.d.ts +7 -0
- package/dist/ast/index.d.ts.map +1 -1
- package/dist/ast/index.js +7 -0
- package/dist/ast/index.js.map +1 -1
- package/dist/ast/is.d.ts +3 -12
- package/dist/ast/is.d.ts.map +1 -1
- package/dist/ast/is.generated.d.ts +890 -2
- package/dist/ast/is.generated.d.ts.map +1 -1
- package/dist/ast/is.generated.js +303 -7
- package/dist/ast/is.generated.js.map +1 -1
- package/dist/ast/is.js +231 -1
- package/dist/ast/is.js.map +1 -1
- package/dist/ast/jsdoc.d.ts +12 -0
- package/dist/ast/jsdoc.d.ts.map +1 -0
- package/dist/ast/jsdoc.js +208 -0
- package/dist/ast/jsdoc.js.map +1 -0
- package/dist/ast/modifiers.d.ts +4 -0
- package/dist/ast/modifiers.d.ts.map +1 -0
- package/dist/ast/modifiers.js +41 -0
- package/dist/ast/modifiers.js.map +1 -0
- package/dist/ast/scanner.d.ts.map +1 -1
- package/dist/ast/scanner.js +2 -1
- package/dist/ast/scanner.js.map +1 -1
- package/dist/ast/spanMap.d.ts +88 -0
- package/dist/ast/spanMap.d.ts.map +1 -0
- package/dist/ast/spanMap.js +417 -0
- package/dist/ast/spanMap.js.map +1 -0
- package/dist/ast/utils.d.ts +25 -0
- package/dist/ast/utils.d.ts.map +1 -1
- package/dist/ast/utils.js +291 -0
- package/dist/ast/utils.js.map +1 -1
- package/dist/ast/visitor.d.ts +2 -0
- package/dist/ast/visitor.d.ts.map +1 -1
- package/dist/ast/visitor.generated.d.ts.map +1 -1
- package/dist/ast/visitor.generated.js +5 -4
- package/dist/ast/visitor.generated.js.map +1 -1
- package/dist/ast/visitor.js +40 -0
- package/dist/ast/visitor.js.map +1 -1
- package/dist/enums/caseSensitivity.d.ts +2 -0
- package/dist/enums/caseSensitivity.d.ts.map +1 -0
- package/dist/enums/caseSensitivity.enum.d.ts +5 -0
- package/dist/enums/caseSensitivity.enum.d.ts.map +1 -0
- package/dist/enums/caseSensitivity.enum.js +7 -0
- package/dist/enums/caseSensitivity.enum.js.map +1 -0
- package/dist/enums/caseSensitivity.js +7 -0
- package/dist/enums/caseSensitivity.js.map +1 -0
- package/dist/enums/checkFlags.d.ts +2 -0
- package/dist/enums/checkFlags.d.ts.map +1 -0
- package/dist/enums/checkFlags.enum.d.ts +34 -0
- package/dist/enums/checkFlags.enum.d.ts.map +1 -0
- package/dist/enums/checkFlags.enum.js +36 -0
- package/dist/enums/checkFlags.enum.js.map +1 -0
- package/dist/enums/checkFlags.js +36 -0
- package/dist/enums/checkFlags.js.map +1 -0
- package/dist/enums/completionItemKind.enum.js +1 -1
- package/dist/enums/completionItemKind.enum.js.map +1 -1
- package/dist/enums/completionItemKind.js +1 -1
- package/dist/enums/completionItemKind.js.map +1 -1
- package/dist/enums/diagnosticCategory.enum.js +1 -1
- package/dist/enums/diagnosticCategory.enum.js.map +1 -1
- package/dist/enums/diagnosticCategory.js +1 -1
- package/dist/enums/diagnosticCategory.js.map +1 -1
- package/dist/enums/diagnosticDirectivePolicy.d.ts +2 -0
- package/dist/enums/diagnosticDirectivePolicy.d.ts.map +1 -0
- package/dist/enums/diagnosticDirectivePolicy.enum.d.ts +5 -0
- package/dist/enums/diagnosticDirectivePolicy.enum.d.ts.map +1 -0
- package/dist/enums/diagnosticDirectivePolicy.enum.js +7 -0
- package/dist/enums/diagnosticDirectivePolicy.enum.js.map +1 -0
- package/dist/enums/diagnosticDirectivePolicy.js +7 -0
- package/dist/enums/diagnosticDirectivePolicy.js.map +1 -0
- package/dist/enums/elementFlags.enum.js +1 -1
- package/dist/enums/elementFlags.enum.js.map +1 -1
- package/dist/enums/elementFlags.js +1 -1
- package/dist/enums/elementFlags.js.map +1 -1
- package/dist/enums/emitOnly.d.ts +2 -0
- package/dist/enums/emitOnly.d.ts.map +1 -0
- package/dist/enums/emitOnly.enum.d.ts +6 -0
- package/dist/enums/emitOnly.enum.d.ts.map +1 -0
- package/dist/enums/emitOnly.enum.js +8 -0
- package/dist/enums/emitOnly.enum.js.map +1 -0
- package/dist/enums/emitOnly.js +8 -0
- package/dist/enums/emitOnly.js.map +1 -0
- package/dist/enums/indexKind.d.ts +2 -0
- package/dist/enums/indexKind.d.ts.map +1 -0
- package/dist/enums/indexKind.enum.d.ts +5 -0
- package/dist/enums/indexKind.enum.d.ts.map +1 -0
- package/dist/enums/indexKind.enum.js +7 -0
- package/dist/enums/indexKind.enum.js.map +1 -0
- package/dist/enums/indexKind.js +7 -0
- package/dist/enums/indexKind.js.map +1 -0
- package/dist/enums/internalSymbolName.d.ts +2 -0
- package/dist/enums/internalSymbolName.d.ts.map +1 -0
- package/dist/enums/internalSymbolName.enum.d.ts +23 -0
- package/dist/enums/internalSymbolName.enum.d.ts.map +1 -0
- package/dist/enums/internalSymbolName.enum.js +25 -0
- package/dist/enums/internalSymbolName.enum.js.map +1 -0
- package/dist/enums/internalSymbolName.js +25 -0
- package/dist/enums/internalSymbolName.js.map +1 -0
- package/dist/enums/jsDeclarationKind.d.ts +2 -0
- package/dist/enums/jsDeclarationKind.d.ts.map +1 -0
- package/dist/enums/jsDeclarationKind.enum.d.ts +10 -0
- package/dist/enums/jsDeclarationKind.enum.d.ts.map +1 -0
- package/dist/enums/jsDeclarationKind.enum.js +12 -0
- package/dist/enums/jsDeclarationKind.enum.js.map +1 -0
- package/dist/enums/jsDeclarationKind.js +12 -0
- package/dist/enums/jsDeclarationKind.js.map +1 -0
- package/dist/enums/jsxEmit.d.ts +2 -0
- package/dist/enums/jsxEmit.d.ts.map +1 -0
- package/dist/enums/jsxEmit.enum.d.ts +9 -0
- package/dist/enums/jsxEmit.enum.d.ts.map +1 -0
- package/dist/enums/jsxEmit.enum.js +11 -0
- package/dist/enums/jsxEmit.enum.js.map +1 -0
- package/dist/enums/jsxEmit.js +11 -0
- package/dist/enums/jsxEmit.js.map +1 -0
- package/dist/enums/modifierFlags.enum.js +1 -1
- package/dist/enums/modifierFlags.enum.js.map +1 -1
- package/dist/enums/modifierFlags.js +1 -1
- package/dist/enums/modifierFlags.js.map +1 -1
- package/dist/enums/moduleDetectionKind.d.ts +2 -0
- package/dist/enums/moduleDetectionKind.d.ts.map +1 -0
- package/dist/enums/moduleDetectionKind.enum.d.ts +7 -0
- package/dist/enums/moduleDetectionKind.enum.d.ts.map +1 -0
- package/dist/enums/moduleDetectionKind.enum.js +9 -0
- package/dist/enums/moduleDetectionKind.enum.js.map +1 -0
- package/dist/enums/moduleDetectionKind.js +9 -0
- package/dist/enums/moduleDetectionKind.js.map +1 -0
- package/dist/enums/moduleKind.d.ts +2 -0
- package/dist/enums/moduleKind.d.ts.map +1 -0
- package/dist/enums/moduleKind.enum.d.ts +17 -0
- package/dist/enums/moduleKind.enum.d.ts.map +1 -0
- package/dist/enums/moduleKind.enum.js +19 -0
- package/dist/enums/moduleKind.enum.js.map +1 -0
- package/dist/enums/moduleKind.js +19 -0
- package/dist/enums/moduleKind.js.map +1 -0
- package/dist/enums/moduleResolutionKind.d.ts +2 -0
- package/dist/enums/moduleResolutionKind.d.ts.map +1 -0
- package/dist/enums/moduleResolutionKind.enum.d.ts +9 -0
- package/dist/enums/moduleResolutionKind.enum.d.ts.map +1 -0
- package/dist/enums/moduleResolutionKind.enum.js +11 -0
- package/dist/enums/moduleResolutionKind.enum.js.map +1 -0
- package/dist/enums/moduleResolutionKind.js +11 -0
- package/dist/enums/moduleResolutionKind.js.map +1 -0
- package/dist/enums/newLineKind.d.ts +2 -0
- package/dist/enums/newLineKind.d.ts.map +1 -0
- package/dist/enums/newLineKind.enum.d.ts +6 -0
- package/dist/enums/newLineKind.enum.d.ts.map +1 -0
- package/dist/enums/newLineKind.enum.js +8 -0
- package/dist/enums/newLineKind.enum.js.map +1 -0
- package/dist/enums/newLineKind.js +8 -0
- package/dist/enums/newLineKind.js.map +1 -0
- package/dist/enums/nodeBuilderFlags.enum.js +1 -1
- package/dist/enums/nodeBuilderFlags.enum.js.map +1 -1
- package/dist/enums/nodeBuilderFlags.js +1 -1
- package/dist/enums/nodeBuilderFlags.js.map +1 -1
- package/dist/enums/nodeFlags.enum.js +1 -1
- package/dist/enums/nodeFlags.enum.js.map +1 -1
- package/dist/enums/nodeFlags.js +1 -1
- package/dist/enums/nodeFlags.js.map +1 -1
- package/dist/enums/objectFlags.enum.d.ts +3 -2
- package/dist/enums/objectFlags.enum.d.ts.map +1 -1
- package/dist/enums/objectFlags.enum.js +4 -3
- package/dist/enums/objectFlags.enum.js.map +1 -1
- package/dist/enums/objectFlags.js +4 -3
- package/dist/enums/objectFlags.js.map +1 -1
- package/dist/enums/outerExpressionKinds.enum.d.ts +5 -1
- package/dist/enums/outerExpressionKinds.enum.d.ts.map +1 -1
- package/dist/enums/outerExpressionKinds.enum.js +5 -1
- package/dist/enums/outerExpressionKinds.enum.js.map +1 -1
- package/dist/enums/outerExpressionKinds.js +5 -1
- package/dist/enums/outerExpressionKinds.js.map +1 -1
- package/dist/enums/scriptKind.d.ts.map +1 -1
- package/dist/enums/scriptKind.enum.d.ts +1 -3
- package/dist/enums/scriptKind.enum.d.ts.map +1 -1
- package/dist/enums/scriptKind.enum.js +1 -2
- package/dist/enums/scriptKind.enum.js.map +1 -1
- package/dist/enums/scriptKind.js +1 -2
- package/dist/enums/scriptKind.js.map +1 -1
- package/dist/enums/scriptTarget.d.ts.map +1 -1
- package/dist/enums/scriptTarget.enum.d.ts +1 -0
- package/dist/enums/scriptTarget.enum.d.ts.map +1 -1
- package/dist/enums/scriptTarget.enum.js +2 -0
- package/dist/enums/scriptTarget.enum.js.map +1 -1
- package/dist/enums/scriptTarget.js +2 -0
- package/dist/enums/scriptTarget.js.map +1 -1
- package/dist/enums/signatureFlags.enum.js +1 -1
- package/dist/enums/signatureFlags.enum.js.map +1 -1
- package/dist/enums/signatureFlags.js +1 -1
- package/dist/enums/signatureFlags.js.map +1 -1
- package/dist/enums/signatureKind.enum.js +1 -1
- package/dist/enums/signatureKind.enum.js.map +1 -1
- package/dist/enums/signatureKind.js +1 -1
- package/dist/enums/signatureKind.js.map +1 -1
- package/dist/enums/spanMapFeature.d.ts +2 -0
- package/dist/enums/spanMapFeature.d.ts.map +1 -0
- package/dist/enums/spanMapFeature.enum.d.ts +25 -0
- package/dist/enums/spanMapFeature.enum.d.ts.map +1 -0
- package/dist/enums/spanMapFeature.enum.js +27 -0
- package/dist/enums/spanMapFeature.enum.js.map +1 -0
- package/dist/enums/spanMapFeature.js +27 -0
- package/dist/enums/spanMapFeature.js.map +1 -0
- package/dist/enums/spanMapFidelity.d.ts +2 -0
- package/dist/enums/spanMapFidelity.d.ts.map +1 -0
- package/dist/enums/spanMapFidelity.enum.d.ts +7 -0
- package/dist/enums/spanMapFidelity.enum.d.ts.map +1 -0
- package/dist/enums/spanMapFidelity.enum.js +9 -0
- package/dist/enums/spanMapFidelity.enum.js.map +1 -0
- package/dist/enums/spanMapFidelity.js +9 -0
- package/dist/enums/spanMapFidelity.js.map +1 -0
- package/dist/enums/spanMapKind.d.ts +2 -0
- package/dist/enums/spanMapKind.d.ts.map +1 -0
- package/dist/enums/spanMapKind.enum.d.ts +6 -0
- package/dist/enums/spanMapKind.enum.d.ts.map +1 -0
- package/dist/enums/spanMapKind.enum.js +8 -0
- package/dist/enums/spanMapKind.enum.js.map +1 -0
- package/dist/enums/spanMapKind.js +8 -0
- package/dist/enums/spanMapKind.js.map +1 -0
- package/dist/enums/symbolFlags.enum.d.ts +1 -2
- package/dist/enums/symbolFlags.enum.d.ts.map +1 -1
- package/dist/enums/symbolFlags.enum.js +2 -3
- package/dist/enums/symbolFlags.enum.js.map +1 -1
- package/dist/enums/symbolFlags.js +2 -3
- package/dist/enums/symbolFlags.js.map +1 -1
- package/dist/enums/symbolOwnerKind.d.ts +2 -0
- package/dist/enums/symbolOwnerKind.d.ts.map +1 -0
- package/dist/enums/symbolOwnerKind.enum.d.ts +5 -0
- package/dist/enums/symbolOwnerKind.enum.d.ts.map +1 -0
- package/dist/enums/symbolOwnerKind.enum.js +7 -0
- package/dist/enums/symbolOwnerKind.enum.js.map +1 -0
- package/dist/enums/symbolOwnerKind.js +7 -0
- package/dist/enums/symbolOwnerKind.js.map +1 -0
- package/dist/enums/syntaxKind.enum.d.ts +198 -197
- package/dist/enums/syntaxKind.enum.d.ts.map +1 -1
- package/dist/enums/syntaxKind.enum.js +199 -198
- package/dist/enums/syntaxKind.enum.js.map +1 -1
- package/dist/enums/syntaxKind.js +199 -198
- package/dist/enums/syntaxKind.js.map +1 -1
- package/dist/enums/tokenFlags.enum.js +1 -1
- package/dist/enums/tokenFlags.enum.js.map +1 -1
- package/dist/enums/tokenFlags.js +1 -1
- package/dist/enums/tokenFlags.js.map +1 -1
- package/dist/enums/typeFlags.enum.js +1 -1
- package/dist/enums/typeFlags.enum.js.map +1 -1
- package/dist/enums/typeFlags.js +1 -1
- package/dist/enums/typeFlags.js.map +1 -1
- package/dist/enums/typeFormatFlags.d.ts +2 -0
- package/dist/enums/typeFormatFlags.d.ts.map +1 -0
- package/dist/enums/typeFormatFlags.enum.d.ts +29 -0
- package/dist/enums/typeFormatFlags.enum.d.ts.map +1 -0
- package/dist/enums/typeFormatFlags.enum.js +31 -0
- package/dist/enums/typeFormatFlags.enum.js.map +1 -0
- package/dist/enums/typeFormatFlags.js +31 -0
- package/dist/enums/typeFormatFlags.js.map +1 -0
- package/dist/enums/typePredicateKind.enum.js +1 -1
- package/dist/enums/typePredicateKind.enum.js.map +1 -1
- package/dist/enums/typePredicateKind.js +1 -1
- package/dist/enums/typePredicateKind.js.map +1 -1
- package/dist/internal/utils.d.ts +23 -0
- package/dist/internal/utils.d.ts.map +1 -0
- package/dist/internal/utils.js +25 -0
- package/dist/internal/utils.js.map +1 -0
- package/dist/vscode/extensionApi.d.ts +101 -0
- package/dist/vscode/extensionApi.d.ts.map +1 -0
- package/dist/vscode/extensionApi.js +2 -0
- package/dist/vscode/extensionApi.js.map +1 -0
- package/dist/vscode/moduleLoader.d.ts +14 -0
- package/dist/vscode/moduleLoader.d.ts.map +1 -0
- package/dist/vscode/moduleLoader.js +36 -0
- package/dist/vscode/moduleLoader.js.map +1 -0
- package/dist/vscode/protocol.generated.d.ts +2886 -0
- package/dist/vscode/protocol.generated.d.ts.map +1 -0
- package/dist/vscode/protocol.generated.js +4 -0
- package/dist/vscode/protocol.generated.js.map +1 -0
- package/lib/getExePath.js +8 -5
- package/lib/tsc.js +1 -1
- package/lib/version.cjs +3 -0
- package/lib/version.d.cts +2 -0
- package/package.json +48 -41
- package/schemas/jsconfig.schema.json +2207 -0
- package/schemas/tsconfig.schema.json +2206 -0
- package/vendor/vscode-jsonrpc/lib/node/main.js +1 -1
- package/vendor/vscode-jsonrpc/package.json +1 -1
- package/dist/api/objectRegistry.d.ts +0 -40
- package/dist/api/objectRegistry.d.ts.map +0 -1
- package/dist/api/objectRegistry.js +0 -61
- package/dist/api/objectRegistry.js.map +0 -1
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { convertToRelativePath } from "./path.js";
|
|
2
|
+
const foregroundColorEscapeGrey = "\x1b[90m";
|
|
3
|
+
const foregroundColorEscapeRed = "\x1b[91m";
|
|
4
|
+
const foregroundColorEscapeYellow = "\x1b[93m";
|
|
5
|
+
const foregroundColorEscapeBlue = "\x1b[94m";
|
|
6
|
+
const foregroundColorEscapeCyan = "\x1b[96m";
|
|
7
|
+
const gutterStyleSequence = "\x1b[7m";
|
|
8
|
+
const gutterSeparator = " ";
|
|
9
|
+
const resetEscapeSequence = "\x1b[0m";
|
|
10
|
+
const ellipsis = "...";
|
|
11
|
+
const halfIndent = " ";
|
|
12
|
+
const indent = " ";
|
|
13
|
+
const fileAppearsToBeBinaryCode = 1490;
|
|
14
|
+
function diagnosticCategoryName(category) {
|
|
15
|
+
switch (category) {
|
|
16
|
+
case 0:
|
|
17
|
+
return "warning";
|
|
18
|
+
case 1:
|
|
19
|
+
return "error";
|
|
20
|
+
case 2:
|
|
21
|
+
return "suggestion";
|
|
22
|
+
case 3:
|
|
23
|
+
return "message";
|
|
24
|
+
default:
|
|
25
|
+
throw new Error(`Unknown diagnostic category: ${category}`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
function getCategoryFormat(category) {
|
|
29
|
+
switch (category) {
|
|
30
|
+
case 0:
|
|
31
|
+
return foregroundColorEscapeYellow;
|
|
32
|
+
case 1:
|
|
33
|
+
return foregroundColorEscapeRed;
|
|
34
|
+
case 2:
|
|
35
|
+
return foregroundColorEscapeGrey;
|
|
36
|
+
case 3:
|
|
37
|
+
return foregroundColorEscapeBlue;
|
|
38
|
+
default:
|
|
39
|
+
throw new Error(`Unknown diagnostic category: ${category}`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
function formatColorAndReset(text, formatStyle) {
|
|
43
|
+
return formatStyle + text + resetEscapeSequence;
|
|
44
|
+
}
|
|
45
|
+
function diagnosticPrefix(diagnostic) {
|
|
46
|
+
return diagnostic.source || "TS";
|
|
47
|
+
}
|
|
48
|
+
function flattenDiagnosticMessage(diagnostic, newLine, indentLevel = 0) {
|
|
49
|
+
let result = "";
|
|
50
|
+
if (indentLevel) {
|
|
51
|
+
result += newLine + " ".repeat(indentLevel);
|
|
52
|
+
}
|
|
53
|
+
result += diagnostic.text;
|
|
54
|
+
for (const child of diagnostic.messageChain ?? []) {
|
|
55
|
+
result += flattenDiagnosticMessage(child, newLine, indentLevel + 1);
|
|
56
|
+
}
|
|
57
|
+
return result;
|
|
58
|
+
}
|
|
59
|
+
function relativeFileName(fileName, host) {
|
|
60
|
+
return convertToRelativePath(fileName, host.getCurrentDirectory(), name => host.getCanonicalFileName(name));
|
|
61
|
+
}
|
|
62
|
+
function formatLocation(diagnostic, host) {
|
|
63
|
+
if (!diagnostic.fileName || !diagnostic.startPosition)
|
|
64
|
+
return "";
|
|
65
|
+
const fileName = relativeFileName(diagnostic.fileName, host);
|
|
66
|
+
const { line, character } = diagnostic.startPosition;
|
|
67
|
+
return formatColorAndReset(fileName, foregroundColorEscapeCyan) +
|
|
68
|
+
":" +
|
|
69
|
+
formatColorAndReset(`${line + 1}`, foregroundColorEscapeYellow) +
|
|
70
|
+
":" +
|
|
71
|
+
formatColorAndReset(`${character + 1}`, foregroundColorEscapeYellow);
|
|
72
|
+
}
|
|
73
|
+
function formatCodeSpan(diagnostic, lineIndent, squiggleColor, host) {
|
|
74
|
+
const { startPosition, endPosition, sourceLines } = diagnostic;
|
|
75
|
+
if (!startPosition || !endPosition || !sourceLines?.length)
|
|
76
|
+
return "";
|
|
77
|
+
const endCharacter = startPosition.line === endPosition.line &&
|
|
78
|
+
startPosition.character === endPosition.character
|
|
79
|
+
? endPosition.character + 1
|
|
80
|
+
: endPosition.character;
|
|
81
|
+
const hasMoreThanFiveLines = endPosition.line - startPosition.line >= 4;
|
|
82
|
+
const gutterWidth = hasMoreThanFiveLines
|
|
83
|
+
? Math.max(ellipsis.length, `${endPosition.line + 1}`.length)
|
|
84
|
+
: `${endPosition.line + 1}`.length;
|
|
85
|
+
let context = "";
|
|
86
|
+
let previousLine;
|
|
87
|
+
for (const sourceLine of sourceLines) {
|
|
88
|
+
if (previousLine !== undefined && sourceLine.line > previousLine + 1) {
|
|
89
|
+
context += host.getNewLine();
|
|
90
|
+
context += lineIndent +
|
|
91
|
+
formatColorAndReset(ellipsis.padStart(gutterWidth), gutterStyleSequence) +
|
|
92
|
+
gutterSeparator;
|
|
93
|
+
}
|
|
94
|
+
const lineContent = sourceLine.text.trimEnd().replace(/\t/g, " ");
|
|
95
|
+
context += host.getNewLine();
|
|
96
|
+
context += lineIndent +
|
|
97
|
+
formatColorAndReset(`${sourceLine.line + 1}`.padStart(gutterWidth), gutterStyleSequence) +
|
|
98
|
+
gutterSeparator +
|
|
99
|
+
lineContent +
|
|
100
|
+
host.getNewLine();
|
|
101
|
+
context += lineIndent +
|
|
102
|
+
formatColorAndReset("".padStart(gutterWidth), gutterStyleSequence) +
|
|
103
|
+
gutterSeparator +
|
|
104
|
+
squiggleColor;
|
|
105
|
+
if (sourceLine.line === startPosition.line) {
|
|
106
|
+
const lastCharacter = sourceLine.line === endPosition.line
|
|
107
|
+
? endCharacter
|
|
108
|
+
: lineContent.length;
|
|
109
|
+
context += " ".repeat(startPosition.character);
|
|
110
|
+
context += "~".repeat(Math.max(0, lastCharacter - startPosition.character));
|
|
111
|
+
}
|
|
112
|
+
else if (sourceLine.line === endPosition.line) {
|
|
113
|
+
context += "~".repeat(endCharacter);
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
context += "~".repeat(lineContent.length);
|
|
117
|
+
}
|
|
118
|
+
context += resetEscapeSequence;
|
|
119
|
+
previousLine = sourceLine.line;
|
|
120
|
+
}
|
|
121
|
+
return context;
|
|
122
|
+
}
|
|
123
|
+
export function formatDiagnostics(diagnostics, host) {
|
|
124
|
+
let output = "";
|
|
125
|
+
for (const diagnostic of diagnostics) {
|
|
126
|
+
const errorMessage = `${diagnosticCategoryName(diagnostic.category)} ${diagnosticPrefix(diagnostic)}${diagnostic.code}: ${flattenDiagnosticMessage(diagnostic, host.getNewLine())}${host.getNewLine()}`;
|
|
127
|
+
if (diagnostic.fileName && diagnostic.startPosition) {
|
|
128
|
+
const { line, character } = diagnostic.startPosition;
|
|
129
|
+
output += `${relativeFileName(diagnostic.fileName, host)}(${line + 1},${character + 1}): ${errorMessage}`;
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
output += errorMessage;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return output;
|
|
136
|
+
}
|
|
137
|
+
export function formatDiagnosticsWithColorAndContext(diagnostics, host) {
|
|
138
|
+
let output = "";
|
|
139
|
+
for (let i = 0; i < diagnostics.length; i++) {
|
|
140
|
+
if (i > 0) {
|
|
141
|
+
output += host.getNewLine();
|
|
142
|
+
}
|
|
143
|
+
const diagnostic = diagnostics[i];
|
|
144
|
+
if (diagnostic.fileName && diagnostic.startPosition) {
|
|
145
|
+
output += formatLocation(diagnostic, host) + " - ";
|
|
146
|
+
}
|
|
147
|
+
output += formatColorAndReset(diagnosticCategoryName(diagnostic.category), getCategoryFormat(diagnostic.category));
|
|
148
|
+
output += formatColorAndReset(` ${diagnosticPrefix(diagnostic)}${diagnostic.code}: `, foregroundColorEscapeGrey);
|
|
149
|
+
output += flattenDiagnosticMessage(diagnostic, host.getNewLine());
|
|
150
|
+
if (diagnostic.fileName && diagnostic.code !== fileAppearsToBeBinaryCode) {
|
|
151
|
+
output += host.getNewLine();
|
|
152
|
+
output += formatCodeSpan(diagnostic, "", getCategoryFormat(diagnostic.category), host);
|
|
153
|
+
output += host.getNewLine();
|
|
154
|
+
}
|
|
155
|
+
if (diagnostic.relatedInformation?.length) {
|
|
156
|
+
for (const related of diagnostic.relatedInformation) {
|
|
157
|
+
if (related.fileName && related.startPosition) {
|
|
158
|
+
output += host.getNewLine();
|
|
159
|
+
output += halfIndent + formatLocation(related, host);
|
|
160
|
+
output += " - " + flattenDiagnosticMessage(related, host.getNewLine());
|
|
161
|
+
output += formatCodeSpan(related, indent, foregroundColorEscapeCyan, host);
|
|
162
|
+
}
|
|
163
|
+
output += host.getNewLine();
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return output;
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=diagnosticFormatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnosticFormatter.js","sourceRoot":"","sources":["../../src/api/diagnosticFormatter.ts"],"names":[],"mappings":"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"}
|
package/dist/api/fs.d.ts
CHANGED
|
@@ -1,23 +1,78 @@
|
|
|
1
|
+
import type { RootedDirectoryPath, RootedFilePath, RootedPath } from "../ast/index.ts";
|
|
2
|
+
import type { RequestDirectoryEntries, RequestFileSystem, RequestSymlink } from "./proto.generated.ts";
|
|
3
|
+
import { type DocumentIdentifier } from "./proto.ts";
|
|
1
4
|
export interface FileSystemEntries {
|
|
2
5
|
files: string[];
|
|
3
6
|
directories: string[];
|
|
7
|
+
/** Names from `files` or `directories` that are symbolic links. */
|
|
8
|
+
symlinks: string[] | undefined;
|
|
4
9
|
}
|
|
5
|
-
export interface
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
10
|
+
export interface FileSystemStat {
|
|
11
|
+
/** POSIX-style file mode, matching Node.js `fs.Stats.mode`. */
|
|
12
|
+
mode: number;
|
|
13
|
+
/** File size in bytes, matching Node.js `fs.Stats.size`. */
|
|
14
|
+
size: number;
|
|
15
|
+
/** Last modification time, matching Node.js `fs.Stats.mtime`. */
|
|
16
|
+
mtime: Date;
|
|
17
|
+
}
|
|
18
|
+
declare const useOS: unique symbol;
|
|
19
|
+
declare const identity: unique symbol;
|
|
20
|
+
declare const fakeStat: unique symbol;
|
|
21
|
+
declare const noop: unique symbol;
|
|
22
|
+
declare const error: unique symbol;
|
|
23
|
+
export declare const serverFS: {
|
|
24
|
+
/** Delegate the configured operation, or the current callback invocation, to the server's operating-system filesystem. */
|
|
25
|
+
readonly useOS: typeof useOS;
|
|
26
|
+
/** Use the input path as its own real path without consulting a filesystem. Valid only for `realpath`. */
|
|
27
|
+
readonly identity: typeof identity;
|
|
28
|
+
/** Synthesize stat information from `directoryExists` and `fileExists`. Valid only for `stat`. */
|
|
29
|
+
readonly fakeStat: typeof fakeStat;
|
|
30
|
+
/** Ignore writes without invoking a callback or writing to the server's operating-system filesystem. Valid only for `writeFile`. */
|
|
31
|
+
readonly noop: typeof noop;
|
|
32
|
+
/** Panic if the configured operation, or current callback invocation, reaches the server filesystem. */
|
|
33
|
+
readonly error: typeof error;
|
|
34
|
+
};
|
|
35
|
+
export interface FileSystemCallbacks {
|
|
36
|
+
directoryExists: ((directoryName: RootedDirectoryPath) => boolean | typeof serverFS.useOS | typeof serverFS.error) | typeof serverFS.useOS | typeof serverFS.error;
|
|
37
|
+
fileExists: ((fileName: RootedFilePath) => boolean | typeof serverFS.useOS | typeof serverFS.error) | typeof serverFS.useOS | typeof serverFS.error;
|
|
38
|
+
getAccessibleEntries: ((directoryName: RootedDirectoryPath) => FileSystemEntries | typeof serverFS.useOS | typeof serverFS.error) | typeof serverFS.useOS | typeof serverFS.error;
|
|
9
39
|
/**
|
|
10
40
|
* Read a file's content.
|
|
11
41
|
* - Return the file content as a `string` (including `""` for empty files).
|
|
12
|
-
* - Return `
|
|
13
|
-
* - Return
|
|
42
|
+
* - Return `undefined` to indicate the file does not exist.
|
|
43
|
+
* - Return {@link serverFS.useOS} to fall back to the server's operating-system filesystem.
|
|
14
44
|
*/
|
|
15
|
-
readFile
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
45
|
+
readFile: ((fileName: RootedFilePath) => string | undefined | typeof serverFS.useOS | typeof serverFS.error) | typeof serverFS.useOS | typeof serverFS.error;
|
|
46
|
+
/** Relative results are resolved against the queried path's directory by the server. */
|
|
47
|
+
realpath: ((path: RootedPath) => string | typeof serverFS.useOS | typeof serverFS.identity | typeof serverFS.error) | typeof serverFS.useOS | typeof serverFS.identity | typeof serverFS.error;
|
|
48
|
+
stat: ((path: RootedPath) => FileSystemStat | undefined | typeof serverFS.useOS | typeof serverFS.fakeStat | typeof serverFS.error) | typeof serverFS.useOS | typeof serverFS.fakeStat | typeof serverFS.error;
|
|
49
|
+
writeFile: ((path: RootedFilePath, content: string) => void | typeof serverFS.useOS | typeof serverFS.noop | typeof serverFS.error) | typeof serverFS.useOS | typeof serverFS.noop | typeof serverFS.error;
|
|
50
|
+
removeFile: ((path: RootedPath) => void | typeof serverFS.useOS | typeof serverFS.noop | typeof serverFS.error) | typeof serverFS.useOS | typeof serverFS.noop | typeof serverFS.error;
|
|
51
|
+
}
|
|
52
|
+
export interface CreateFileSystemOptions {
|
|
53
|
+
/** Complete directory listings. Full filesystems derive these from `files` when omitted. */
|
|
54
|
+
directories?: Record<string, RequestDirectoryEntries> | undefined;
|
|
55
|
+
symlinks?: Record<string, RequestSymlink> | undefined;
|
|
56
|
+
/** Files or directory trees hidden from an underlying snapshot or host filesystem. */
|
|
57
|
+
removedPaths?: readonly string[] | undefined;
|
|
58
|
+
}
|
|
59
|
+
export interface CreateFileSystemWithLibOptions extends CreateFileSystemOptions {
|
|
60
|
+
/** Default library directory used by a custom or non-embedded compiler executable. */
|
|
61
|
+
defaultLibraryPath?: string | undefined;
|
|
19
62
|
}
|
|
20
|
-
/**
|
|
21
|
-
|
|
22
|
-
|
|
63
|
+
/**
|
|
64
|
+
* Files supplied to a request filesystem. String identifiers are file names;
|
|
65
|
+
* use `{ uri }` when supplying a document URI so it can be decoded correctly.
|
|
66
|
+
*/
|
|
67
|
+
export type RequestFileEntries = readonly (readonly [id: DocumentIdentifier, content: string])[];
|
|
68
|
+
/** Creates a full request filesystem. The server derives directory listings when omitted. */
|
|
69
|
+
export declare function createFileSystem(files: RequestFileEntries, options?: CreateFileSystemOptions): RequestFileSystem;
|
|
70
|
+
/**
|
|
71
|
+
* Creates a full request filesystem with the compiler's default library
|
|
72
|
+
* directory mounted read-only through the host filesystem.
|
|
73
|
+
*/
|
|
74
|
+
export declare function createFileSystemWithLib(files: RequestFileEntries, options?: CreateFileSystemWithLibOptions): RequestFileSystem;
|
|
75
|
+
/** Creates a request filesystem layer, merging base directory listings when omitted. */
|
|
76
|
+
export declare function createFileSystemLayer(files: RequestFileEntries, options?: CreateFileSystemOptions): RequestFileSystem;
|
|
77
|
+
export {};
|
|
23
78
|
//# sourceMappingURL=fs.d.ts.map
|
package/dist/api/fs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/api/fs.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAC9B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/api/fs.ts"],"names":[],"mappings":"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"}
|
package/dist/api/fs.js
CHANGED
|
@@ -1,109 +1,70 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
-
const child = current.children[segment];
|
|
34
|
-
if (!child) {
|
|
35
|
-
return undefined;
|
|
36
|
-
}
|
|
37
|
-
current = child;
|
|
38
|
-
}
|
|
39
|
-
return current;
|
|
40
|
-
}
|
|
41
|
-
function ensureDirectory(segments) {
|
|
42
|
-
let current = root;
|
|
43
|
-
for (const segment of segments) {
|
|
44
|
-
if (!current.children[segment]) {
|
|
45
|
-
current.children[segment] = { type: "directory", children: {} };
|
|
46
|
-
}
|
|
47
|
-
else if (current.children[segment].type !== "directory") {
|
|
48
|
-
throw new Error(`Cannot create directory: a file already exists at "/${segments.join("/")}"`);
|
|
49
|
-
}
|
|
50
|
-
current = current.children[segment];
|
|
51
|
-
}
|
|
52
|
-
return current;
|
|
53
|
-
}
|
|
54
|
-
function addToTree(path) {
|
|
55
|
-
const segments = getPathComponents(path).slice(1);
|
|
56
|
-
if (segments.length === 0) {
|
|
57
|
-
throw new Error(`Invalid file path: "${path}"`);
|
|
1
|
+
import getExePath from "#getExePath";
|
|
2
|
+
import { dirname } from "node:path";
|
|
3
|
+
import { normalizePath } from "./path.js";
|
|
4
|
+
import { resolveFileName, } from "./proto.js";
|
|
5
|
+
const useOS = Symbol("useOS");
|
|
6
|
+
const identity = Symbol("identity");
|
|
7
|
+
const fakeStat = Symbol("fakeStat");
|
|
8
|
+
const noop = Symbol("noop");
|
|
9
|
+
const error = Symbol("error");
|
|
10
|
+
export const serverFS = {
|
|
11
|
+
useOS: useOS,
|
|
12
|
+
identity: identity,
|
|
13
|
+
fakeStat: fakeStat,
|
|
14
|
+
noop: noop,
|
|
15
|
+
error: error,
|
|
16
|
+
};
|
|
17
|
+
/** Creates a full request filesystem. The server derives directory listings when omitted. */
|
|
18
|
+
export function createFileSystem(files, options = {}) {
|
|
19
|
+
return createRequestFileSystem("full", files, options);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Creates a full request filesystem with the compiler's default library
|
|
23
|
+
* directory mounted read-only through the host filesystem.
|
|
24
|
+
*/
|
|
25
|
+
export function createFileSystemWithLib(files, options = {}) {
|
|
26
|
+
const defaultLibraryPaths = options.defaultLibraryPath
|
|
27
|
+
? [normalizePath(options.defaultLibraryPath)]
|
|
28
|
+
: [normalizePath("bundled:///libs")];
|
|
29
|
+
if (!options.defaultLibraryPath) {
|
|
30
|
+
try {
|
|
31
|
+
defaultLibraryPaths.push(normalizePath(dirname(getExePath())));
|
|
58
32
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
}
|
|
63
|
-
function writeFile(path, data) {
|
|
64
|
-
content[path] = data;
|
|
65
|
-
addToTree(path);
|
|
66
|
-
}
|
|
67
|
-
function removeFile(path) {
|
|
68
|
-
delete content[path];
|
|
69
|
-
const segments = getPathComponents(path).slice(1);
|
|
70
|
-
if (segments.length === 0)
|
|
71
|
-
return;
|
|
72
|
-
const filename = segments.pop();
|
|
73
|
-
const dirNode = getNodeFromPath("/" + segments.join("/"));
|
|
74
|
-
if (dirNode && dirNode.type === "directory") {
|
|
75
|
-
delete dirNode.children[filename];
|
|
33
|
+
catch {
|
|
34
|
+
// A socket-connected embedded server can provide bundled libs without
|
|
35
|
+
// a locally installed compiler executable.
|
|
76
36
|
}
|
|
77
37
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
}
|
|
82
|
-
function fileExists(fileName) {
|
|
83
|
-
return fileName in content;
|
|
84
|
-
}
|
|
85
|
-
function getAccessibleEntries(directoryName) {
|
|
86
|
-
const node = getNodeFromPath(directoryName);
|
|
87
|
-
if (!node || node.type !== "directory") {
|
|
88
|
-
return undefined;
|
|
89
|
-
}
|
|
90
|
-
const fileEntries = [];
|
|
91
|
-
const directories = [];
|
|
92
|
-
for (const [name, child] of Object.entries(node.children)) {
|
|
93
|
-
if (child.type === "file") {
|
|
94
|
-
fileEntries.push(name);
|
|
95
|
-
}
|
|
96
|
-
else {
|
|
97
|
-
directories.push(name);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
return { files: fileEntries, directories };
|
|
38
|
+
const symlinks = { ...options.symlinks };
|
|
39
|
+
for (const defaultLibraryPath of defaultLibraryPaths) {
|
|
40
|
+
symlinks[defaultLibraryPath] ??= { target: defaultLibraryPath, host: true };
|
|
101
41
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
42
|
+
return createRequestFileSystem("full", files, {
|
|
43
|
+
symlinks,
|
|
44
|
+
directories: options.directories,
|
|
45
|
+
removedPaths: options.removedPaths?.length ? options.removedPaths : undefined,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
/** Creates a request filesystem layer, merging base directory listings when omitted. */
|
|
49
|
+
export function createFileSystemLayer(files, options = {}) {
|
|
50
|
+
return createRequestFileSystem("layer", files, options);
|
|
51
|
+
}
|
|
52
|
+
function createRequestFileSystem(kind, files, options) {
|
|
53
|
+
const normalizedFiles = new Map();
|
|
54
|
+
for (const [id, content] of files) {
|
|
55
|
+
const fileName = normalizePath(resolveFileName(id));
|
|
56
|
+
if (normalizedFiles.has(fileName)) {
|
|
57
|
+
throw new Error(`Duplicate request filesystem path: ${fileName}`);
|
|
105
58
|
}
|
|
106
|
-
|
|
59
|
+
normalizedFiles.set(fileName, content);
|
|
107
60
|
}
|
|
61
|
+
const fileRecord = Object.fromEntries(normalizedFiles);
|
|
62
|
+
return {
|
|
63
|
+
kind,
|
|
64
|
+
files: fileRecord,
|
|
65
|
+
directories: options.directories,
|
|
66
|
+
symlinks: options.symlinks,
|
|
67
|
+
removedPaths: options.removedPaths?.length ? [...options.removedPaths] : undefined,
|
|
68
|
+
};
|
|
108
69
|
}
|
|
109
70
|
//# sourceMappingURL=fs.js.map
|
package/dist/api/fs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/api/fs.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/api/fs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type FileSystemCallbacks, serverFS } from "./fs.ts";
|
|
2
|
+
type ServerFSSentinelName = keyof typeof serverFS;
|
|
3
|
+
type ServerFSSentinel = typeof serverFS[ServerFSSentinelName];
|
|
4
|
+
type ServerFSSentinelResponse = {
|
|
5
|
+
[K in ServerFSSentinelName]: {
|
|
6
|
+
kind: K;
|
|
7
|
+
};
|
|
8
|
+
}[ServerFSSentinelName];
|
|
9
|
+
export type FileSystemCallbackResponse = {
|
|
10
|
+
kind: "value";
|
|
11
|
+
value?: unknown;
|
|
12
|
+
} | {
|
|
13
|
+
kind: "missing";
|
|
14
|
+
} | ServerFSSentinelResponse;
|
|
15
|
+
interface FileSystemCallbackDefinition {
|
|
16
|
+
serverFS: readonly ServerFSSentinel[];
|
|
17
|
+
}
|
|
18
|
+
declare const fileSystemCallbackTable: Record<keyof FileSystemCallbacks, FileSystemCallbackDefinition>;
|
|
19
|
+
type FileSystemCallbackName = keyof typeof fileSystemCallbackTable;
|
|
20
|
+
export interface FileSystemCallbackConfiguration {
|
|
21
|
+
callbackNames: FileSystemCallbackName[];
|
|
22
|
+
arguments: string[];
|
|
23
|
+
}
|
|
24
|
+
export declare function configureFileSystemCallbacks(fs: FileSystemCallbacks | undefined): FileSystemCallbackConfiguration;
|
|
25
|
+
export declare function encodeFileSystemCallbackResult(name: FileSystemCallbackName, result: unknown): FileSystemCallbackResponse;
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=fsCallbacks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fsCallbacks.d.ts","sourceRoot":"","sources":["../../src/api/fsCallbacks.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,mBAAmB,EACxB,QAAQ,EACX,MAAM,SAAS,CAAC;AAEjB,KAAK,oBAAoB,GAAG,MAAM,OAAO,QAAQ,CAAC;AAClD,KAAK,gBAAgB,GAAG,OAAO,QAAQ,CAAC,oBAAoB,CAAC,CAAC;AAC9D,KAAK,wBAAwB,GAAG;KAC3B,CAAC,IAAI,oBAAoB,GAAG;QAAE,IAAI,EAAE,CAAC,CAAC;KAAE;CAC5C,CAAC,oBAAoB,CAAC,CAAC;AAExB,MAAM,MAAM,0BAA0B,GAChC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAAE,GACnC;IAAE,IAAI,EAAE,SAAS,CAAC;CAAE,GACpB,wBAAwB,CAAC;AAE/B,UAAU,4BAA4B;IAClC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,CAAC;CACzC;AAED,QAAA,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,mBAAmB,EAAE,4BAA4B,CAiB5F,CAAC;AAEF,KAAK,sBAAsB,GAAG,MAAM,OAAO,uBAAuB,CAAC;AAInE,MAAM,WAAW,+BAA+B;IAC5C,aAAa,EAAE,sBAAsB,EAAE,CAAC;IACxC,SAAS,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,wBAAgB,4BAA4B,CAAC,EAAE,EAAE,mBAAmB,GAAG,SAAS,GAAG,+BAA+B,CAyBjH;AAED,wBAAgB,8BAA8B,CAC1C,IAAI,EAAE,sBAAsB,EAC5B,MAAM,EAAE,OAAO,GAChB,0BAA0B,CAoD5B"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { serverFS, } from "./fs.js";
|
|
2
|
+
const fileSystemCallbackTable = {
|
|
3
|
+
readFile: { serverFS: [serverFS.useOS, serverFS.error] },
|
|
4
|
+
fileExists: { serverFS: [serverFS.useOS, serverFS.error] },
|
|
5
|
+
directoryExists: { serverFS: [serverFS.useOS, serverFS.error] },
|
|
6
|
+
getAccessibleEntries: { serverFS: [serverFS.useOS, serverFS.error] },
|
|
7
|
+
realpath: {
|
|
8
|
+
serverFS: [serverFS.useOS, serverFS.identity, serverFS.error],
|
|
9
|
+
},
|
|
10
|
+
stat: {
|
|
11
|
+
serverFS: [serverFS.useOS, serverFS.fakeStat, serverFS.error],
|
|
12
|
+
},
|
|
13
|
+
writeFile: {
|
|
14
|
+
serverFS: [serverFS.useOS, serverFS.noop, serverFS.error],
|
|
15
|
+
},
|
|
16
|
+
removeFile: {
|
|
17
|
+
serverFS: [serverFS.useOS, serverFS.noop, serverFS.error],
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
const fsCallbackNames = Object.keys(fileSystemCallbackTable);
|
|
21
|
+
const serverFSSentinelNames = Object.keys(serverFS);
|
|
22
|
+
export function configureFileSystemCallbacks(fs) {
|
|
23
|
+
if (!fs) {
|
|
24
|
+
return { callbackNames: [], arguments: [] };
|
|
25
|
+
}
|
|
26
|
+
const callbackNames = [];
|
|
27
|
+
const args = [];
|
|
28
|
+
for (const name of fsCallbackNames) {
|
|
29
|
+
const value = fs[name];
|
|
30
|
+
if (typeof value === "function") {
|
|
31
|
+
callbackNames.push(name);
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
const sentinel = fileSystemCallbackTable[name].serverFS.find(sentinel => sentinel === value);
|
|
35
|
+
if (sentinel) {
|
|
36
|
+
const sentinelName = getServerFSSentinelName(sentinel);
|
|
37
|
+
if (sentinelName !== "useOS") {
|
|
38
|
+
args.push(`${name}:${sentinelName}`);
|
|
39
|
+
}
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
throw new TypeError(`Invalid filesystem callback '${name}': expected a function or a supported serverFS sentinel`);
|
|
43
|
+
}
|
|
44
|
+
args.push(...callbackNames);
|
|
45
|
+
return { callbackNames, arguments: args };
|
|
46
|
+
}
|
|
47
|
+
export function encodeFileSystemCallbackResult(name, result) {
|
|
48
|
+
const sentinel = fileSystemCallbackTable[name].serverFS.find(sentinel => sentinel === result);
|
|
49
|
+
if (sentinel) {
|
|
50
|
+
return { kind: getServerFSSentinelName(sentinel) };
|
|
51
|
+
}
|
|
52
|
+
let valid;
|
|
53
|
+
switch (name) {
|
|
54
|
+
case "directoryExists":
|
|
55
|
+
case "fileExists":
|
|
56
|
+
valid = typeof result === "boolean";
|
|
57
|
+
break;
|
|
58
|
+
case "getAccessibleEntries": {
|
|
59
|
+
const entries = result;
|
|
60
|
+
valid = !!entries
|
|
61
|
+
&& isStringArray(entries.files)
|
|
62
|
+
&& isStringArray(entries.directories)
|
|
63
|
+
&& (entries.symlinks === undefined || isStringArray(entries.symlinks));
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
case "readFile":
|
|
67
|
+
if (result === undefined)
|
|
68
|
+
return { kind: "missing" };
|
|
69
|
+
valid = typeof result === "string";
|
|
70
|
+
break;
|
|
71
|
+
case "realpath":
|
|
72
|
+
valid = typeof result === "string";
|
|
73
|
+
break;
|
|
74
|
+
case "stat": {
|
|
75
|
+
if (result === undefined)
|
|
76
|
+
return { kind: "missing" };
|
|
77
|
+
const stat = result;
|
|
78
|
+
valid = !!stat
|
|
79
|
+
&& typeof stat.mode === "number"
|
|
80
|
+
&& Number.isSafeInteger(stat.mode)
|
|
81
|
+
&& stat.mode >= 0
|
|
82
|
+
&& stat.mode <= 0xffff_ffff
|
|
83
|
+
&& typeof stat.size === "number"
|
|
84
|
+
&& Number.isSafeInteger(stat.size)
|
|
85
|
+
&& stat.size >= 0
|
|
86
|
+
&& stat.mtime instanceof Date
|
|
87
|
+
&& !Number.isNaN(stat.mtime.getTime());
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
case "writeFile":
|
|
91
|
+
case "removeFile":
|
|
92
|
+
valid = result === undefined;
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
if (!valid) {
|
|
96
|
+
throw new TypeError(`Invalid result from filesystem callback '${name}'`);
|
|
97
|
+
}
|
|
98
|
+
return name === "writeFile" || name === "removeFile" ? { kind: "value" } : { kind: "value", value: result };
|
|
99
|
+
}
|
|
100
|
+
function isStringArray(value) {
|
|
101
|
+
return Array.isArray(value) && value.every(element => typeof element === "string");
|
|
102
|
+
}
|
|
103
|
+
function getServerFSSentinelName(sentinel) {
|
|
104
|
+
for (const name of serverFSSentinelNames) {
|
|
105
|
+
if (serverFS[name] === sentinel) {
|
|
106
|
+
return name;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
throw new TypeError("Unknown serverFS sentinel");
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=fsCallbacks.js.map
|