@microsoft/teamsfx-core 3.0.13 → 3.0.14-alpha.0890e15c35.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.
- package/build/client/teamsDevPortalClient.d.ts +7 -2
- package/build/client/teamsDevPortalClient.d.ts.map +1 -1
- package/build/client/teamsDevPortalClient.js +63 -59
- package/build/client/teamsDevPortalClient.js.map +1 -1
- package/build/client/teamsGraphClient.d.ts +6 -3
- package/build/client/teamsGraphClient.d.ts.map +1 -1
- package/build/client/teamsGraphClient.js +20 -3
- package/build/client/teamsGraphClient.js.map +1 -1
- package/build/common/daSpecParser.d.ts +16 -1
- package/build/common/daSpecParser.d.ts.map +1 -1
- package/build/common/daSpecParser.js +34 -21
- package/build/common/daSpecParser.js.map +1 -1
- package/build/common/featureFlags.d.ts +22 -2
- package/build/common/featureFlags.d.ts.map +1 -1
- package/build/common/featureFlags.js +31 -3
- package/build/common/featureFlags.js.map +1 -1
- package/build/common/fetchHelper.d.ts.map +1 -1
- package/build/common/fetchHelper.js +41 -3
- package/build/common/fetchHelper.js.map +1 -1
- package/build/common/kiotaClient.d.ts +3 -3
- package/build/common/kiotaClient.d.ts.map +1 -1
- package/build/common/kiotaClient.js +10 -10
- package/build/common/kiotaClient.js.map +1 -1
- package/build/common/projectSettingsHelper.d.ts +0 -2
- package/build/common/projectSettingsHelper.d.ts.map +1 -1
- package/build/common/projectSettingsHelper.js +1 -56
- package/build/common/projectSettingsHelper.js.map +1 -1
- package/build/common/telemetry.d.ts +4 -15
- package/build/common/telemetry.d.ts.map +1 -1
- package/build/common/telemetry.js +7 -20
- package/build/common/telemetry.js.map +1 -1
- package/build/common/templates-config.json +9 -2
- package/build/common/tools.d.ts +6 -1
- package/build/common/tools.d.ts.map +1 -1
- package/build/common/tools.js +13 -8
- package/build/common/tools.js.map +1 -1
- package/build/common/wrappedAxiosClient.d.ts +1 -1
- package/build/common/wrappedAxiosClient.d.ts.map +1 -1
- package/build/common/wrappedAxiosClient.js +12 -13
- package/build/common/wrappedAxiosClient.js.map +1 -1
- package/build/component/configManager/actionInjector.d.ts +16 -1
- package/build/component/configManager/actionInjector.d.ts.map +1 -1
- package/build/component/configManager/actionInjector.js +106 -1
- package/build/component/configManager/actionInjector.js.map +1 -1
- package/build/component/configManager/validator.d.ts.map +1 -1
- package/build/component/configManager/validator.js +2 -0
- package/build/component/configManager/validator.js.map +1 -1
- package/build/component/coordinator/index.d.ts +4 -0
- package/build/component/coordinator/index.d.ts.map +1 -1
- package/build/component/coordinator/index.js +10 -3
- package/build/component/coordinator/index.js.map +1 -1
- package/build/component/deps-checker/internal/funcToolChecker.d.ts +6 -0
- package/build/component/deps-checker/internal/funcToolChecker.d.ts.map +1 -1
- package/build/component/deps-checker/internal/funcToolChecker.js +15 -12
- package/build/component/deps-checker/internal/funcToolChecker.js.map +1 -1
- package/build/component/deps-checker/internal/nodeChecker.js +1 -1
- package/build/component/deps-checker/internal/nodeChecker.js.map +1 -1
- package/build/component/deps-checker/internal/testToolChecker.d.ts +12 -0
- package/build/component/deps-checker/internal/testToolChecker.d.ts.map +1 -1
- package/build/component/deps-checker/internal/testToolChecker.js +23 -14
- package/build/component/deps-checker/internal/testToolChecker.js.map +1 -1
- package/build/component/developerPortalScaffoldUtils.d.ts +11 -1
- package/build/component/developerPortalScaffoldUtils.d.ts.map +1 -1
- package/build/component/developerPortalScaffoldUtils.js +21 -12
- package/build/component/developerPortalScaffoldUtils.js.map +1 -1
- package/build/component/driver/aad/utility/aadManifestHelper.d.ts +1 -1
- package/build/component/driver/aad/utility/aadManifestHelper.d.ts.map +1 -1
- package/build/component/driver/aad/utility/aadManifestHelper.js +7 -4
- package/build/component/driver/aad/utility/aadManifestHelper.js.map +1 -1
- package/build/component/driver/add/addWebPart.d.ts +9 -0
- package/build/component/driver/add/addWebPart.d.ts.map +1 -1
- package/build/component/driver/add/addWebPart.js +13 -7
- package/build/component/driver/add/addWebPart.js.map +1 -1
- package/build/component/driver/arm/util/handleError.d.ts +5 -0
- package/build/component/driver/arm/util/handleError.d.ts.map +1 -1
- package/build/component/driver/arm/util/handleError.js +10 -5
- package/build/component/driver/arm/util/handleError.js.map +1 -1
- package/build/component/driver/copilotAgent/interfaces/PublishArgs.d.ts +14 -0
- package/build/component/driver/copilotAgent/interfaces/PublishArgs.d.ts.map +1 -0
- package/build/component/driver/copilotAgent/interfaces/PublishArgs.js +5 -0
- package/build/component/driver/copilotAgent/interfaces/PublishArgs.js.map +1 -0
- package/build/component/driver/copilotAgent/publish.d.ts +16 -0
- package/build/component/driver/copilotAgent/publish.d.ts.map +1 -0
- package/build/component/driver/copilotAgent/publish.js +175 -0
- package/build/component/driver/copilotAgent/publish.js.map +1 -0
- package/build/component/driver/dcr/create.d.ts +10 -0
- package/build/component/driver/dcr/create.d.ts.map +1 -0
- package/build/component/driver/dcr/create.js +142 -0
- package/build/component/driver/dcr/create.js.map +1 -0
- package/build/component/driver/dcr/error/dcrNameTooLong.d.ts +5 -0
- package/build/component/driver/dcr/error/dcrNameTooLong.d.ts.map +1 -0
- package/build/component/driver/dcr/error/dcrNameTooLong.js +21 -0
- package/build/component/driver/dcr/error/dcrNameTooLong.js.map +1 -0
- package/build/component/driver/dcr/error/dcrWellKnownInvalid.d.ts +5 -0
- package/build/component/driver/dcr/error/dcrWellKnownInvalid.d.ts.map +1 -0
- package/build/component/driver/dcr/error/dcrWellKnownInvalid.js +21 -0
- package/build/component/driver/dcr/error/dcrWellKnownInvalid.js.map +1 -0
- package/build/component/driver/dcr/interface/createDcrArgs.d.ts +9 -0
- package/build/component/driver/dcr/interface/createDcrArgs.d.ts.map +1 -0
- package/build/component/driver/dcr/interface/createDcrArgs.js +5 -0
- package/build/component/driver/dcr/interface/createDcrArgs.js.map +1 -0
- package/build/component/driver/dcr/interface/createDcrOutputs.d.ts +7 -0
- package/build/component/driver/dcr/interface/createDcrOutputs.d.ts.map +1 -0
- package/build/component/driver/dcr/interface/createDcrOutputs.js +10 -0
- package/build/component/driver/dcr/interface/createDcrOutputs.js.map +1 -0
- package/build/component/driver/dcr/utility/constants.d.ts +7 -0
- package/build/component/driver/dcr/utility/constants.d.ts.map +1 -0
- package/build/component/driver/dcr/utility/constants.js +12 -0
- package/build/component/driver/dcr/utility/constants.js.map +1 -0
- package/build/component/driver/deploy/azure/azureStaticWebAppGetDeploymentTokenDriver.d.ts +8 -1
- package/build/component/driver/deploy/azure/azureStaticWebAppGetDeploymentTokenDriver.d.ts.map +1 -1
- package/build/component/driver/deploy/azure/azureStaticWebAppGetDeploymentTokenDriver.js +15 -10
- package/build/component/driver/deploy/azure/azureStaticWebAppGetDeploymentTokenDriver.js.map +1 -1
- package/build/component/driver/devTool/httpClient.d.ts +4 -0
- package/build/component/driver/devTool/httpClient.d.ts.map +1 -1
- package/build/component/driver/devTool/httpClient.js +6 -3
- package/build/component/driver/devTool/httpClient.js.map +1 -1
- package/build/component/driver/index.d.ts +2 -0
- package/build/component/driver/index.d.ts.map +1 -1
- package/build/component/driver/index.js +2 -0
- package/build/component/driver/index.js.map +1 -1
- package/build/component/driver/m365/acquire.d.ts +13 -1
- package/build/component/driver/m365/acquire.d.ts.map +1 -1
- package/build/component/driver/m365/acquire.js +16 -8
- package/build/component/driver/m365/acquire.js.map +1 -1
- package/build/component/driver/oauth/update.d.ts +6 -0
- package/build/component/driver/oauth/update.d.ts.map +1 -1
- package/build/component/driver/oauth/update.js +8 -4
- package/build/component/driver/oauth/update.js.map +1 -1
- package/build/component/driver/script/scriptDriver.d.ts +6 -0
- package/build/component/driver/script/scriptDriver.d.ts.map +1 -1
- package/build/component/driver/script/scriptDriver.js +9 -4
- package/build/component/driver/script/scriptDriver.js.map +1 -1
- package/build/component/driver/share/utils.d.ts.map +1 -1
- package/build/component/driver/share/utils.js +9 -7
- package/build/component/driver/share/utils.js.map +1 -1
- package/build/component/driver/teamsApp/constants.d.ts +4 -3
- package/build/component/driver/teamsApp/constants.d.ts.map +1 -1
- package/build/component/driver/teamsApp/constants.js +4 -3
- package/build/component/driver/teamsApp/constants.js.map +1 -1
- package/build/component/driver/teamsApp/createAppPackage.d.ts +8 -0
- package/build/component/driver/teamsApp/createAppPackage.d.ts.map +1 -1
- package/build/component/driver/teamsApp/createAppPackage.js +113 -13
- package/build/component/driver/teamsApp/createAppPackage.js.map +1 -1
- package/build/component/driver/teamsApp/interfaces/DcrRegistration.d.ts +10 -0
- package/build/component/driver/teamsApp/interfaces/DcrRegistration.d.ts.map +1 -0
- package/build/component/driver/teamsApp/interfaces/DcrRegistration.js +5 -0
- package/build/component/driver/teamsApp/interfaces/DcrRegistration.js.map +1 -0
- package/build/component/driver/teamsApp/interfaces/ValidationResult.d.ts +6 -0
- package/build/component/driver/teamsApp/interfaces/ValidationResult.d.ts.map +1 -1
- package/build/component/driver/teamsApp/publishAppPackage.d.ts +4 -2
- package/build/component/driver/teamsApp/publishAppPackage.d.ts.map +1 -1
- package/build/component/driver/teamsApp/publishAppPackage.js +9 -55
- package/build/component/driver/teamsApp/publishAppPackage.js.map +1 -1
- package/build/component/driver/teamsApp/syncManifest.d.ts +16 -3
- package/build/component/driver/teamsApp/syncManifest.d.ts.map +1 -1
- package/build/component/driver/teamsApp/syncManifest.js +28 -18
- package/build/component/driver/teamsApp/syncManifest.js.map +1 -1
- package/build/component/driver/teamsApp/teamsappMgr.d.ts +4 -0
- package/build/component/driver/teamsApp/teamsappMgr.d.ts.map +1 -1
- package/build/component/driver/teamsApp/teamsappMgr.js +6 -3
- package/build/component/driver/teamsApp/teamsappMgr.js.map +1 -1
- package/build/component/driver/teamsApp/utils/CopilotGptManifestUtils.d.ts +2 -0
- package/build/component/driver/teamsApp/utils/CopilotGptManifestUtils.d.ts.map +1 -1
- package/build/component/driver/teamsApp/utils/CopilotGptManifestUtils.js +113 -1
- package/build/component/driver/teamsApp/utils/CopilotGptManifestUtils.js.map +1 -1
- package/build/component/driver/teamsApp/utils/ManifestUtils.d.ts +5 -1
- package/build/component/driver/teamsApp/utils/ManifestUtils.d.ts.map +1 -1
- package/build/component/driver/teamsApp/utils/ManifestUtils.js +14 -3
- package/build/component/driver/teamsApp/utils/ManifestUtils.js.map +1 -1
- package/build/component/driver/teamsApp/utils/McpCertVerification.d.ts +17 -0
- package/build/component/driver/teamsApp/utils/McpCertVerification.d.ts.map +1 -0
- package/build/component/driver/teamsApp/utils/McpCertVerification.js +72 -0
- package/build/component/driver/teamsApp/utils/McpCertVerification.js.map +1 -0
- package/build/component/driver/teamsApp/utils/telemetry.d.ts +1 -0
- package/build/component/driver/teamsApp/utils/telemetry.d.ts.map +1 -1
- package/build/component/driver/teamsApp/utils/telemetry.js +1 -0
- package/build/component/driver/teamsApp/utils/telemetry.js.map +1 -1
- package/build/component/driver/teamsApp/validate.d.ts.map +1 -1
- package/build/component/driver/teamsApp/validate.js +12 -2
- package/build/component/driver/teamsApp/validate.js.map +1 -1
- package/build/component/driver/teamsApp/validateTestCases.d.ts +12 -0
- package/build/component/driver/teamsApp/validateTestCases.d.ts.map +1 -1
- package/build/component/driver/teamsApp/validateTestCases.js +17 -8
- package/build/component/driver/teamsApp/validateTestCases.js.map +1 -1
- package/build/component/driver/typeSpec/compile.d.ts +9 -0
- package/build/component/driver/typeSpec/compile.d.ts.map +1 -1
- package/build/component/driver/typeSpec/compile.js +16 -10
- package/build/component/driver/typeSpec/compile.js.map +1 -1
- package/build/component/generator/declarativeAgent/generator.d.ts +8 -0
- package/build/component/generator/declarativeAgent/generator.d.ts.map +1 -1
- package/build/component/generator/declarativeAgent/generator.js +16 -10
- package/build/component/generator/declarativeAgent/generator.js.map +1 -1
- package/build/component/generator/declarativeAgent/helper.d.ts +31 -0
- package/build/component/generator/declarativeAgent/helper.d.ts.map +1 -1
- package/build/component/generator/declarativeAgent/helper.js +237 -34
- package/build/component/generator/declarativeAgent/helper.js.map +1 -1
- package/build/component/generator/defaultGenerator.d.ts.map +1 -1
- package/build/component/generator/defaultGenerator.js +14 -1
- package/build/component/generator/defaultGenerator.js.map +1 -1
- package/build/component/generator/error.d.ts +3 -0
- package/build/component/generator/error.d.ts.map +1 -1
- package/build/component/generator/error.js +7 -1
- package/build/component/generator/error.js.map +1 -1
- package/build/component/generator/generatorAction.d.ts +9 -0
- package/build/component/generator/generatorAction.d.ts.map +1 -1
- package/build/component/generator/generatorAction.js +16 -8
- package/build/component/generator/generatorAction.js.map +1 -1
- package/build/component/generator/officeAddin/generator.d.ts +12 -0
- package/build/component/generator/officeAddin/generator.d.ts.map +1 -1
- package/build/component/generator/officeAddin/generator.js +53 -3
- package/build/component/generator/officeAddin/generator.js.map +1 -1
- package/build/component/generator/officeAddin/helperMethods.d.ts +4 -0
- package/build/component/generator/officeAddin/helperMethods.d.ts.map +1 -1
- package/build/component/generator/officeAddin/helperMethods.js +6 -3
- package/build/component/generator/officeAddin/helperMethods.js.map +1 -1
- package/build/component/generator/openApiSpec/customEngineAgentGenerator.d.ts +9 -0
- package/build/component/generator/openApiSpec/customEngineAgentGenerator.d.ts.map +1 -1
- package/build/component/generator/openApiSpec/customEngineAgentGenerator.js +11 -5
- package/build/component/generator/openApiSpec/customEngineAgentGenerator.js.map +1 -1
- package/build/component/generator/openPlugin/authorParser.d.ts +8 -0
- package/build/component/generator/openPlugin/authorParser.d.ts.map +1 -0
- package/build/component/generator/openPlugin/authorParser.js +49 -0
- package/build/component/generator/openPlugin/authorParser.js.map +1 -0
- package/build/component/generator/openPlugin/deterministicId.d.ts +6 -0
- package/build/component/generator/openPlugin/deterministicId.d.ts.map +1 -0
- package/build/component/generator/openPlugin/deterministicId.js +31 -0
- package/build/component/generator/openPlugin/deterministicId.js.map +1 -0
- package/build/component/generator/openPlugin/exporter.d.ts +18 -0
- package/build/component/generator/openPlugin/exporter.d.ts.map +1 -0
- package/build/component/generator/openPlugin/exporter.js +233 -0
- package/build/component/generator/openPlugin/exporter.js.map +1 -0
- package/build/component/generator/openPlugin/iconStrategy.d.ts +8 -0
- package/build/component/generator/openPlugin/iconStrategy.d.ts.map +1 -0
- package/build/component/generator/openPlugin/iconStrategy.js +62 -0
- package/build/component/generator/openPlugin/iconStrategy.js.map +1 -0
- package/build/component/generator/openPlugin/importer.d.ts +25 -0
- package/build/component/generator/openPlugin/importer.d.ts.map +1 -0
- package/build/component/generator/openPlugin/importer.js +140 -0
- package/build/component/generator/openPlugin/importer.js.map +1 -0
- package/build/component/generator/openPlugin/mapper.d.ts +6 -0
- package/build/component/generator/openPlugin/mapper.d.ts.map +1 -0
- package/build/component/generator/openPlugin/mapper.js +141 -0
- package/build/component/generator/openPlugin/mapper.js.map +1 -0
- package/build/component/generator/openPlugin/parser.d.ts +3 -0
- package/build/component/generator/openPlugin/parser.d.ts.map +1 -0
- package/build/component/generator/openPlugin/parser.js +153 -0
- package/build/component/generator/openPlugin/parser.js.map +1 -0
- package/build/component/generator/openPlugin/placeholderPng.d.ts +6 -0
- package/build/component/generator/openPlugin/placeholderPng.d.ts.map +1 -0
- package/build/component/generator/openPlugin/placeholderPng.js +71 -0
- package/build/component/generator/openPlugin/placeholderPng.js.map +1 -0
- package/build/component/generator/openPlugin/textUtils.d.ts +12 -0
- package/build/component/generator/openPlugin/textUtils.d.ts.map +1 -0
- package/build/component/generator/openPlugin/textUtils.js +43 -0
- package/build/component/generator/openPlugin/textUtils.js.map +1 -0
- package/build/component/generator/openPlugin/types.d.ts +128 -0
- package/build/component/generator/openPlugin/types.d.ts.map +1 -0
- package/build/component/generator/openPlugin/types.js.map +1 -0
- package/build/component/generator/spfx/utils/constants.d.ts +1 -1
- package/build/component/generator/spfx/utils/constants.js +1 -1
- package/build/component/generator/templateHelper.d.ts +15 -0
- package/build/component/generator/templateHelper.d.ts.map +1 -1
- package/build/component/generator/templateHelper.js +28 -0
- package/build/component/generator/templateHelper.js.map +1 -1
- package/build/component/generator/templates/metadata/index.d.ts.map +1 -1
- package/build/component/generator/templates/metadata/index.js +12 -5
- package/build/component/generator/templates/metadata/index.js.map +1 -1
- package/build/component/generator/templates/templateNames.d.ts +4 -1
- package/build/component/generator/templates/templateNames.d.ts.map +1 -1
- package/build/component/generator/templates/templateNames.js +5 -0
- package/build/component/generator/templates/templateNames.js.map +1 -1
- package/build/component/generator/templates/templateReplaceMap.d.ts.map +1 -1
- package/build/component/generator/templates/templateReplaceMap.js +4 -1
- package/build/component/generator/templates/templateReplaceMap.js.map +1 -1
- package/build/component/generator/utils.js +8 -8
- package/build/component/generator/utils.js.map +1 -1
- package/build/component/generator/v4MetadataSource.d.ts +23 -0
- package/build/component/generator/v4MetadataSource.d.ts.map +1 -0
- package/build/component/generator/v4MetadataSource.js +42 -0
- package/build/component/generator/v4MetadataSource.js.map +1 -0
- package/build/component/generator/v4TemplateBridge.d.ts +40 -0
- package/build/component/generator/v4TemplateBridge.d.ts.map +1 -0
- package/build/component/generator/v4TemplateBridge.js +125 -0
- package/build/component/generator/v4TemplateBridge.js.map +1 -0
- package/build/component/local/localCertificateManager.d.ts +17 -1
- package/build/component/local/localCertificateManager.d.ts.map +1 -1
- package/build/component/local/localCertificateManager.js +48 -31
- package/build/component/local/localCertificateManager.js.map +1 -1
- package/build/component/m365/packageService.d.ts +10 -0
- package/build/component/m365/packageService.d.ts.map +1 -1
- package/build/component/m365/packageService.js +55 -13
- package/build/component/m365/packageService.js.map +1 -1
- package/build/component/middleware/envMW.d.ts.map +1 -1
- package/build/component/middleware/envMW.js +5 -0
- package/build/component/middleware/envMW.js.map +1 -1
- package/build/component/utils/ResourceGroupHelper.d.ts +4 -0
- package/build/component/utils/ResourceGroupHelper.d.ts.map +1 -1
- package/build/component/utils/ResourceGroupHelper.js +7 -4
- package/build/component/utils/ResourceGroupHelper.js.map +1 -1
- package/build/component/utils/charsetUtils.js +3 -3
- package/build/component/utils/charsetUtils.js.map +1 -1
- package/build/component/utils/fileOperation.d.ts +10 -0
- package/build/component/utils/fileOperation.d.ts.map +1 -1
- package/build/component/utils/fileOperation.js +27 -17
- package/build/component/utils/fileOperation.js.map +1 -1
- package/build/component/utils/mcpAuthScaffolder.d.ts +106 -0
- package/build/component/utils/mcpAuthScaffolder.d.ts.map +1 -0
- package/build/component/utils/mcpAuthScaffolder.js +153 -0
- package/build/component/utils/mcpAuthScaffolder.js.map +1 -0
- package/build/component/utils/mcpToolFetcher.d.ts +12 -1
- package/build/component/utils/mcpToolFetcher.d.ts.map +1 -1
- package/build/component/utils/mcpToolFetcher.js +23 -3
- package/build/component/utils/mcpToolFetcher.js.map +1 -1
- package/build/component/utils/metadataGraphPermssion.d.ts +4 -0
- package/build/component/utils/metadataGraphPermssion.d.ts.map +1 -1
- package/build/component/utils/metadataGraphPermssion.js +7 -4
- package/build/component/utils/metadataGraphPermssion.js.map +1 -1
- package/build/component/utils/odrProvider.d.ts +6 -0
- package/build/component/utils/odrProvider.d.ts.map +1 -1
- package/build/component/utils/odrProvider.js +9 -4
- package/build/component/utils/odrProvider.js.map +1 -1
- package/build/core/FxCore.d.ts +46 -4
- package/build/core/FxCore.d.ts.map +1 -1
- package/build/core/FxCore.declarativeAgent.d.ts +9 -0
- package/build/core/FxCore.declarativeAgent.d.ts.map +1 -1
- package/build/core/FxCore.declarativeAgent.js +286 -174
- package/build/core/FxCore.declarativeAgent.js.map +1 -1
- package/build/core/FxCore.js +443 -140
- package/build/core/FxCore.js.map +1 -1
- package/build/core/FxCore.openPlugin.d.ts +29 -0
- package/build/core/FxCore.openPlugin.d.ts.map +1 -0
- package/build/core/FxCore.openPlugin.js +135 -0
- package/build/core/FxCore.openPlugin.js.map +1 -0
- package/build/core/collaborator.d.ts +4 -0
- package/build/core/collaborator.d.ts.map +1 -1
- package/build/core/collaborator.js +6 -3
- package/build/core/collaborator.js.map +1 -1
- package/build/core/middleware/concurrentLocker.d.ts +9 -0
- package/build/core/middleware/concurrentLocker.d.ts.map +1 -1
- package/build/core/middleware/concurrentLocker.js +14 -11
- package/build/core/middleware/concurrentLocker.js.map +1 -1
- package/build/core/middleware/errorHandler.d.ts.map +1 -1
- package/build/core/middleware/errorHandler.js +9 -0
- package/build/core/middleware/errorHandler.js.map +1 -1
- package/build/core/middleware/fileLocker.d.ts +6 -0
- package/build/core/middleware/fileLocker.d.ts.map +1 -1
- package/build/core/middleware/fileLocker.js +11 -6
- package/build/core/middleware/fileLocker.js.map +1 -1
- package/build/core/middleware/utils/v3MigrationUtils.d.ts +1 -34
- package/build/core/middleware/utils/v3MigrationUtils.d.ts.map +1 -1
- package/build/core/middleware/utils/v3MigrationUtils.js +6 -245
- package/build/core/middleware/utils/v3MigrationUtils.js.map +1 -1
- package/build/error/teamsApp.d.ts +3 -0
- package/build/error/teamsApp.d.ts.map +1 -1
- package/build/error/teamsApp.js +15 -1
- package/build/error/teamsApp.js.map +1 -1
- package/build/question/constants.d.ts.map +1 -1
- package/build/question/constants.js +1 -6
- package/build/question/constants.js.map +1 -1
- package/build/question/create.d.ts +8 -1
- package/build/question/create.d.ts.map +1 -1
- package/build/question/create.js +24 -15
- package/build/question/create.js.map +1 -1
- package/build/question/index.d.ts +1 -0
- package/build/question/index.d.ts.map +1 -1
- package/build/question/index.js +3 -0
- package/build/question/index.js.map +1 -1
- package/build/question/inputs/AddPluginInputs.d.ts +1 -1
- package/build/question/inputs/AddPluginInputs.d.ts.map +1 -1
- package/build/question/inputs/AddSkillInputs.d.ts +10 -0
- package/build/question/inputs/AddSkillInputs.d.ts.map +1 -0
- package/build/question/inputs/AddSkillInputs.js +5 -0
- package/build/question/inputs/AddSkillInputs.js.map +1 -0
- package/build/question/inputs/CreateProjectInputs.d.ts +7 -1
- package/build/question/inputs/CreateProjectInputs.d.ts.map +1 -1
- package/build/question/inputs/ExportOpenPluginInputs.d.ts +10 -0
- package/build/question/inputs/ExportOpenPluginInputs.d.ts.map +1 -0
- package/build/question/inputs/ExportOpenPluginInputs.js +5 -0
- package/build/question/inputs/ExportOpenPluginInputs.js.map +1 -0
- package/build/question/inputs/ImportOpenPluginInputs.d.ts +28 -0
- package/build/question/inputs/ImportOpenPluginInputs.d.ts.map +1 -0
- package/build/question/inputs/ImportOpenPluginInputs.js +5 -0
- package/build/question/inputs/ImportOpenPluginInputs.js.map +1 -0
- package/build/question/inputs/index.d.ts +3 -0
- package/build/question/inputs/index.d.ts.map +1 -1
- package/build/question/inputs/index.js +3 -0
- package/build/question/inputs/index.js.map +1 -1
- package/build/question/options/AddPluginOptions.js +1 -1
- package/build/question/options/AddPluginOptions.js.map +1 -1
- package/build/question/options/AddSkillOptions.d.ts +4 -0
- package/build/question/options/AddSkillOptions.d.ts.map +1 -0
- package/build/question/options/AddSkillOptions.js +47 -0
- package/build/question/options/AddSkillOptions.js.map +1 -0
- package/build/question/options/CreateProjectOptions.d.ts.map +1 -1
- package/build/question/options/CreateProjectOptions.js +17 -2
- package/build/question/options/CreateProjectOptions.js.map +1 -1
- package/build/question/options/ExportOpenPluginOptions.d.ts +4 -0
- package/build/question/options/ExportOpenPluginOptions.d.ts.map +1 -0
- package/build/question/options/ExportOpenPluginOptions.js +29 -0
- package/build/question/options/ExportOpenPluginOptions.js.map +1 -0
- package/build/question/options/ImportOpenPluginOptions.d.ts +4 -0
- package/build/question/options/ImportOpenPluginOptions.d.ts.map +1 -0
- package/build/question/options/ImportOpenPluginOptions.js +54 -0
- package/build/question/options/ImportOpenPluginOptions.js.map +1 -0
- package/build/question/options/index.d.ts +3 -0
- package/build/question/options/index.d.ts.map +1 -1
- package/build/question/options/index.js +3 -0
- package/build/question/options/index.js.map +1 -1
- package/build/question/other.d.ts +1 -0
- package/build/question/other.d.ts.map +1 -1
- package/build/question/other.js +152 -35
- package/build/question/other.js.map +1 -1
- package/build/question/questionNames.d.ts +10 -1
- package/build/question/questionNames.d.ts.map +1 -1
- package/build/question/questionNames.js +9 -0
- package/build/question/questionNames.js.map +1 -1
- package/build/question/scaffold/vsc/CapabilityOptions.d.ts +1 -0
- package/build/question/scaffold/vsc/CapabilityOptions.d.ts.map +1 -1
- package/build/question/scaffold/vsc/CapabilityOptions.js +11 -0
- package/build/question/scaffold/vsc/CapabilityOptions.js.map +1 -1
- package/build/question/scaffold/vsc/ProjectTypeOptions.d.ts +2 -0
- package/build/question/scaffold/vsc/ProjectTypeOptions.d.ts.map +1 -1
- package/build/question/scaffold/vsc/ProjectTypeOptions.js +9 -0
- package/build/question/scaffold/vsc/ProjectTypeOptions.js.map +1 -1
- package/build/question/scaffold/vsc/daProjectTypeNode.d.ts.map +1 -1
- package/build/question/scaffold/vsc/daProjectTypeNode.js +1 -3
- package/build/question/scaffold/vsc/daProjectTypeNode.js.map +1 -1
- package/build/question/scaffold/vsc/rootNode.js +6 -4
- package/build/question/scaffold/vsc/rootNode.js.map +1 -1
- package/build/question/scaffold/vsc/teamsProjectTypeNode.d.ts +32 -0
- package/build/question/scaffold/vsc/teamsProjectTypeNode.d.ts.map +1 -1
- package/build/question/scaffold/vsc/teamsProjectTypeNode.js +136 -36
- package/build/question/scaffold/vsc/teamsProjectTypeNode.js.map +1 -1
- package/build/question/share.d.ts +7 -0
- package/build/question/share.d.ts.map +1 -1
- package/build/question/share.js +7 -3
- package/build/question/share.js.map +1 -1
- package/build/v4/distribution/bundledFloor.d.ts +12 -0
- package/build/v4/distribution/bundledFloor.d.ts.map +1 -0
- package/build/v4/distribution/bundledFloor.js +80 -0
- package/build/v4/distribution/bundledFloor.js.map +1 -0
- package/build/v4/distribution/templateConfig.d.ts +79 -0
- package/build/v4/distribution/templateConfig.d.ts.map +1 -0
- package/build/v4/distribution/templateConfig.js +81 -0
- package/build/v4/distribution/templateConfig.js.map +1 -0
- package/build/v4/distribution/templatePackage.d.ts +29 -0
- package/build/v4/distribution/templatePackage.d.ts.map +1 -0
- package/build/v4/distribution/templatePackage.js +82 -0
- package/build/v4/distribution/templatePackage.js.map +1 -0
- package/build/v4/distribution/templateSource.d.ts +67 -0
- package/build/v4/distribution/templateSource.d.ts.map +1 -0
- package/build/v4/distribution/templateSource.js +220 -0
- package/build/v4/distribution/templateSource.js.map +1 -0
- package/build/v4/distribution/templateSourcePort.d.ts +50 -0
- package/build/v4/distribution/templateSourcePort.d.ts.map +1 -0
- package/build/v4/distribution/templateSourcePort.js +207 -0
- package/build/v4/distribution/templateSourcePort.js.map +1 -0
- package/build/v4/index.d.ts +13 -0
- package/build/v4/index.d.ts.map +1 -0
- package/build/v4/index.js +18 -0
- package/build/v4/index.js.map +1 -0
- package/package.json +18 -79
- package/resource/package.nls.cs.json +42 -14
- package/resource/package.nls.de.json +43 -15
- package/resource/package.nls.es.json +42 -14
- package/resource/package.nls.fr.json +42 -14
- package/resource/package.nls.it.json +43 -15
- package/resource/package.nls.ja.json +42 -14
- package/resource/package.nls.json +64 -14
- package/resource/package.nls.ko.json +42 -14
- package/resource/package.nls.pl.json +43 -15
- package/resource/package.nls.pt-BR.json +42 -14
- package/resource/package.nls.ru.json +43 -15
- package/resource/package.nls.tr.json +44 -16
- package/resource/package.nls.zh-Hans.json +42 -14
- package/resource/package.nls.zh-Hant.json +54 -26
- package/resource/templates/package.nls.cs.json +2 -0
- package/resource/templates/package.nls.de.json +2 -0
- package/resource/templates/package.nls.es.json +2 -0
- package/resource/templates/package.nls.fr.json +2 -0
- package/resource/templates/package.nls.it.json +2 -0
- package/resource/templates/package.nls.ja.json +2 -0
- package/resource/templates/package.nls.json +5 -0
- package/resource/templates/package.nls.ko.json +2 -0
- package/resource/templates/package.nls.pl.json +2 -0
- package/resource/templates/package.nls.pt-BR.json +2 -0
- package/resource/templates/package.nls.ru.json +2 -0
- package/resource/templates/package.nls.tr.json +2 -0
- package/resource/templates/package.nls.zh-Hans.json +2 -0
- package/resource/templates/package.nls.zh-Hant.json +2 -0
- package/resource/yaml-schema/v1.12/yaml.schema.json +2132 -0
- package/resource/yaml-schema/v1.13/yaml.schema.json +2193 -0
- package/resource/yaml-schema/yaml.schema.json +124 -2
- package/templates/fallback/common.zip +0 -0
- package/templates/fallback/csharp.zip +0 -0
- package/templates/fallback/js.zip +0 -0
- package/templates/fallback/python.zip +0 -0
- package/templates/fallback/ts.zip +0 -0
- package/templates/metadata/allTemplates.json +16 -0
- package/templates/metadata/defaultGeneratorTemplates.json +8 -0
- package/templates/metadata.zip +0 -0
- package/templates/ui/tdpNode.json +8 -2
- package/templates/ui/wizardNode.json +34 -2
- package/templates/v4/floor.json +3 -0
- package/templates/v4/templates.zip +0 -0
- package/build/core/middleware/projectMigratorV3.d.ts +0 -39
- package/build/core/middleware/projectMigratorV3.d.ts.map +0 -1
- package/build/core/middleware/projectMigratorV3.js +0 -694
- package/build/core/middleware/projectMigratorV3.js.map +0 -1
- package/build/core/middleware/projectVersionChecker.d.ts +0 -3
- package/build/core/middleware/projectVersionChecker.d.ts.map +0 -1
- package/build/core/middleware/projectVersionChecker.js +0 -60
- package/build/core/middleware/projectVersionChecker.js.map +0 -1
- package/build/core/middleware/types.d.ts +0 -9
- package/build/core/middleware/types.d.ts.map +0 -1
- package/build/core/middleware/types.js.map +0 -1
- package/build/core/middleware/utils/MigrationUtils.d.ts +0 -13
- package/build/core/middleware/utils/MigrationUtils.d.ts.map +0 -1
- package/build/core/middleware/utils/MigrationUtils.js +0 -212
- package/build/core/middleware/utils/MigrationUtils.js.map +0 -1
- package/build/core/middleware/utils/appYmlGenerator.d.ts +0 -34
- package/build/core/middleware/utils/appYmlGenerator.d.ts.map +0 -1
- package/build/core/middleware/utils/appYmlGenerator.js +0 -158
- package/build/core/middleware/utils/appYmlGenerator.js.map +0 -1
- package/build/core/middleware/utils/debug/appLocalYmlGenerator.d.ts +0 -65
- package/build/core/middleware/utils/debug/appLocalYmlGenerator.d.ts.map +0 -1
- package/build/core/middleware/utils/debug/appLocalYmlGenerator.js +0 -61
- package/build/core/middleware/utils/debug/appLocalYmlGenerator.js.map +0 -1
- package/build/core/middleware/utils/debug/constants.d.ts +0 -20
- package/build/core/middleware/utils/debug/constants.d.ts.map +0 -1
- package/build/core/middleware/utils/debug/constants.js +0 -28
- package/build/core/middleware/utils/debug/constants.js.map +0 -1
- package/build/core/middleware/utils/debug/debugMigrationContext.d.ts +0 -14
- package/build/core/middleware/utils/debug/debugMigrationContext.d.ts.map +0 -1
- package/build/core/middleware/utils/debug/debugMigrationContext.js +0 -23
- package/build/core/middleware/utils/debug/debugMigrationContext.js.map +0 -1
- package/build/core/middleware/utils/debug/debugV3MigrationUtils.d.ts +0 -37
- package/build/core/middleware/utils/debug/debugV3MigrationUtils.d.ts.map +0 -1
- package/build/core/middleware/utils/debug/debugV3MigrationUtils.js +0 -291
- package/build/core/middleware/utils/debug/debugV3MigrationUtils.js.map +0 -1
- package/build/core/middleware/utils/debug/taskMigrator.d.ts +0 -22
- package/build/core/middleware/utils/debug/taskMigrator.d.ts.map +0 -1
- package/build/core/middleware/utils/debug/taskMigrator.js +0 -935
- package/build/core/middleware/utils/debug/taskMigrator.js.map +0 -1
- package/build/core/middleware/utils/migrationContext.d.ts +0 -32
- package/build/core/middleware/utils/migrationContext.d.ts.map +0 -1
- package/build/core/middleware/utils/migrationContext.js +0 -104
- package/build/core/middleware/utils/migrationContext.js.map +0 -1
- /package/build/{core/middleware → component/generator/openPlugin}/types.js +0 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT license.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.computeBundled = computeBundled;
|
|
6
|
+
exports.computeV4PublishVersion = computeV4PublishVersion;
|
|
7
|
+
exports.computeRange = computeRange;
|
|
8
|
+
exports.computeV4TemplateConfig = computeV4TemplateConfig;
|
|
9
|
+
const tslib_1 = require("tslib");
|
|
10
|
+
const semver = tslib_1.__importStar(require("semver"));
|
|
11
|
+
/**
|
|
12
|
+
* `bundled` decides whether a build resolves from the bundled floor
|
|
13
|
+
* (offline-by-default) or the online release channel: it is simply the negation
|
|
14
|
+
* of `goproduct`. A build that is NOT shipping to users (internal / daily test
|
|
15
|
+
* builds) resolves from the bundled floor; a shipping build resolves online.
|
|
16
|
+
*
|
|
17
|
+
* A prerelease-SUFFIXED minted version does NOT force bundling: a shipping
|
|
18
|
+
* prerelease (odd-minor preview, `goproduct=true`) is published online under a
|
|
19
|
+
* clean, suffix-free version computed by `computeV4PublishVersion` so a
|
|
20
|
+
* `~major.minor` range can resolve it.
|
|
21
|
+
*/
|
|
22
|
+
function computeBundled(goproduct) {
|
|
23
|
+
return !goproduct;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* The clean, suffix-free version published to the v4 channel for a minted
|
|
27
|
+
* version, derived purely from the minted version's odd/even minor:
|
|
28
|
+
*
|
|
29
|
+
* - ODD minor (prerelease line, e.g. `6.11.x`): the build date stamped into
|
|
30
|
+
* the patch (`6.11.<YYYYMMDDHH>`). The date is read from the `-beta.<date>`
|
|
31
|
+
* preid the preview lane mints, so every preview build gets a unique,
|
|
32
|
+
* suffix-free version that satisfies `~major.minor`. Falls back to the raw
|
|
33
|
+
* patch when no date stamp is present.
|
|
34
|
+
* - EVEN minor (stable line, e.g. `6.10.x`): `major.minor.patch` as-is; the
|
|
35
|
+
* stable lane already mints a clean version.
|
|
36
|
+
*
|
|
37
|
+
* This is the v4-channel counterpart of the clean `templates@<major>.<minor>.<date>`
|
|
38
|
+
* pattern the v3 channel uses for prereleases. Refusing to publish an
|
|
39
|
+
* even-minor SUFFIXED version (a preview lane minted on a stable branch) is
|
|
40
|
+
* enforced at publish time, not here, so non-shipping test builds keep working.
|
|
41
|
+
*/
|
|
42
|
+
function computeV4PublishVersion(version) {
|
|
43
|
+
const parsed = semver.parse(version);
|
|
44
|
+
if (parsed === null) {
|
|
45
|
+
throw new Error(`Cannot compute v4 publish version: "${version}" is not valid SemVer.`);
|
|
46
|
+
}
|
|
47
|
+
if (parsed.minor % 2 === 1) {
|
|
48
|
+
const dateStamp = parsed.prerelease.find((segment) => typeof segment === "number" && segment >= 1_000_000_000);
|
|
49
|
+
if (dateStamp !== undefined) {
|
|
50
|
+
return `${parsed.major}.${parsed.minor}.${dateStamp}`;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return `${parsed.major}.${parsed.minor}.${parsed.patch}`;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* The range a build may resolve within: `~major.minor` of the minted version.
|
|
57
|
+
* v4 templates use an odd/even-minor split — odd-minor prereleases (`6.11.x`)
|
|
58
|
+
* and even-minor stables (`6.10.x`) live on different minors, so their ranges
|
|
59
|
+
* are naturally isolated. The range is only widened when the minted version no
|
|
60
|
+
* longer intersects the previous range; otherwise it is kept stable for
|
|
61
|
+
* reproducibility.
|
|
62
|
+
*/
|
|
63
|
+
function computeRange(version, previousRange) {
|
|
64
|
+
const parsed = semver.parse(version);
|
|
65
|
+
if (parsed === null) {
|
|
66
|
+
throw new Error(`Cannot compute v4 template range: "${version}" is not valid SemVer.`);
|
|
67
|
+
}
|
|
68
|
+
if (semver.intersects(previousRange, `${parsed.major}.${parsed.minor}.0`)) {
|
|
69
|
+
return previousRange;
|
|
70
|
+
}
|
|
71
|
+
return `~${parsed.major}.${parsed.minor}`;
|
|
72
|
+
}
|
|
73
|
+
/** Compute the full v4 distribution config block for `templates-config.json`. */
|
|
74
|
+
function computeV4TemplateConfig(input) {
|
|
75
|
+
return {
|
|
76
|
+
range: computeRange(input.version, input.previousRange),
|
|
77
|
+
bundled: computeBundled(input.goproduct),
|
|
78
|
+
localVersion: computeV4PublishVersion(input.version),
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=templateConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templateConfig.js","sourceRoot":"","sources":["../../../src/v4/distribution/templateConfig.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAuDlC,wCAEC;AAmBD,0DAcC;AAUD,oCASC;AAGD,0DAMC;;AApHD,uDAAiC;AA0CjC;;;;;;;;;;GAUG;AACH,SAAgB,cAAc,CAAC,SAAkB;IAC/C,OAAO,CAAC,SAAS,CAAC;AACpB,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,uBAAuB,CAAC,OAAe;IACrD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,uCAAuC,OAAO,wBAAwB,CAAC,CAAC;IAC1F,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CACtC,CAAC,OAAO,EAAqB,EAAE,CAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,IAAI,aAAa,CACxF,CAAC;QACF,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,OAAO,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,IAAI,SAAS,EAAE,CAAC;QACxD,CAAC;IACH,CAAC;IACD,OAAO,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;AAC3D,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,YAAY,CAAC,OAAe,EAAE,aAAqB;IACjE,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,sCAAsC,OAAO,wBAAwB,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,MAAM,CAAC,UAAU,CAAC,aAAa,EAAE,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;QAC1E,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,OAAO,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;AAC5C,CAAC;AAED,iFAAiF;AACjF,SAAgB,uBAAuB,CAAC,KAA4B;IAClE,OAAO;QACL,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC;QACvD,OAAO,EAAE,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC;QACxC,YAAY,EAAE,uBAAuB,CAAC,KAAK,CAAC,OAAO,CAAC;KACrD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { FxError } from "@microsoft/teamsfx-api";
|
|
2
|
+
import { Result } from "neverthrow";
|
|
3
|
+
/**
|
|
4
|
+
* Names which template inside the package to open. The boundary
|
|
5
|
+
* (open → locate → hand back entries) is permanent; this locator shape is
|
|
6
|
+
* transitional — `{ language, scenario }` matches the package's current
|
|
7
|
+
* `<language>/<scenario>/` layout and becomes `{ templateId }` when the
|
|
8
|
+
* proposal §3 authoring layout ships. Only the resolved prefix changes; the
|
|
9
|
+
* open/entry contract and every AC hold (INV-1).
|
|
10
|
+
*/
|
|
11
|
+
export interface TemplateLocator {
|
|
12
|
+
language: string;
|
|
13
|
+
scenario: string;
|
|
14
|
+
}
|
|
15
|
+
/** One file from the located template, rooted at the template's content. */
|
|
16
|
+
export interface TemplateFileEntry {
|
|
17
|
+
/** Path relative to the located template's content root, forward-slash normalized. */
|
|
18
|
+
path: string;
|
|
19
|
+
/** The file's raw bytes, verbatim — unrendered, `.tpl` suffix intact. */
|
|
20
|
+
data: Buffer;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Open the resolved template package and return the located template's file
|
|
24
|
+
* entries, the locator prefix stripped. Pure function of `(bytes, locator)`:
|
|
25
|
+
* no fs, no network, no render. Returns `Result` per the toolkit-wide
|
|
26
|
+
* neverthrow rule rather than throwing.
|
|
27
|
+
*/
|
|
28
|
+
export declare function openTemplatePackage(bytes: Buffer, locator: TemplateLocator): Result<TemplateFileEntry[], FxError>;
|
|
29
|
+
//# sourceMappingURL=templatePackage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templatePackage.d.ts","sourceRoot":"","sources":["../../../src/v4/distribution/templatePackage.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAe,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAE,MAAM,EAAW,MAAM,YAAY,CAAC;AAe7C;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,4EAA4E;AAC5E,MAAM,WAAW,iBAAiB;IAChC,sFAAsF;IACtF,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAC;CACd;AAiBD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,eAAe,GACvB,MAAM,CAAC,iBAAiB,EAAE,EAAE,OAAO,CAAC,CAiDtC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT license.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.openTemplatePackage = openTemplatePackage;
|
|
6
|
+
const tslib_1 = require("tslib");
|
|
7
|
+
const teamsfx_api_1 = require("@microsoft/teamsfx-api");
|
|
8
|
+
const adm_zip_1 = tslib_1.__importDefault(require("adm-zip"));
|
|
9
|
+
const neverthrow_1 = require("neverthrow");
|
|
10
|
+
/**
|
|
11
|
+
* The v4 template-package consume operation: open resolved package bytes and
|
|
12
|
+
* return one template's file entries, the locator prefix stripped, unrendered.
|
|
13
|
+
*
|
|
14
|
+
* Spec: docs/03-specs/operations/scaffolding/open-template-package.md
|
|
15
|
+
* Upstream: docs/03-specs/operations/scaffolding/resolve-template-source.md
|
|
16
|
+
*
|
|
17
|
+
* This module is part of the v4 world. It imports no v3 symbol; v3 code may
|
|
18
|
+
* call `openTemplatePackage`, but nothing here is tailored for v3.
|
|
19
|
+
*/
|
|
20
|
+
const SOURCE = "Scaffold";
|
|
21
|
+
/** The `<language>/<scenario>/` prefix this locator resolves to (trailing slash = boundary). */
|
|
22
|
+
function locatorPrefix(locator) {
|
|
23
|
+
return `${locator.language}/${locator.scenario}/`;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Reject a stripped entry path whose segments are empty / `.` / `..` (Zip-Slip
|
|
27
|
+
* guard, INV-8). A digest check proves the bytes equal what was published, not
|
|
28
|
+
* that the published archive is free of traversal entries; the renderer writes
|
|
29
|
+
* these paths to disk, so containment is enforced here.
|
|
30
|
+
*/
|
|
31
|
+
function isSafeRelativePath(rel) {
|
|
32
|
+
return rel.split("/").every((seg) => seg.length > 0 && seg !== "." && seg !== "..");
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Open the resolved template package and return the located template's file
|
|
36
|
+
* entries, the locator prefix stripped. Pure function of `(bytes, locator)`:
|
|
37
|
+
* no fs, no network, no render. Returns `Result` per the toolkit-wide
|
|
38
|
+
* neverthrow rule rather than throwing.
|
|
39
|
+
*/
|
|
40
|
+
function openTemplatePackage(bytes, locator) {
|
|
41
|
+
let zip;
|
|
42
|
+
try {
|
|
43
|
+
zip = new adm_zip_1.default(bytes);
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
return (0, neverthrow_1.err)(new teamsfx_api_1.SystemError({
|
|
47
|
+
source: SOURCE,
|
|
48
|
+
name: "TemplatePackageCorrupt",
|
|
49
|
+
message: "The resolved template package is not a valid archive.",
|
|
50
|
+
}));
|
|
51
|
+
}
|
|
52
|
+
const prefix = locatorPrefix(locator);
|
|
53
|
+
const entries = [];
|
|
54
|
+
for (const entry of zip.getEntries()) {
|
|
55
|
+
if (entry.isDirectory) {
|
|
56
|
+
continue; // INV-6 — directory entries excluded
|
|
57
|
+
}
|
|
58
|
+
const name = entry.entryName.replace(/\\/g, "/");
|
|
59
|
+
if (!name.startsWith(prefix)) {
|
|
60
|
+
continue; // INV-1 — trailing-slash prefix boundary; "da/" never matches "da-basic/"
|
|
61
|
+
}
|
|
62
|
+
const rel = name.slice(prefix.length);
|
|
63
|
+
if (!isSafeRelativePath(rel)) {
|
|
64
|
+
return (0, neverthrow_1.err)(new teamsfx_api_1.SystemError({
|
|
65
|
+
source: SOURCE,
|
|
66
|
+
name: "TemplatePackageUnsafePath",
|
|
67
|
+
message: `The resolved template package contains an unsafe entry path: "${entry.entryName}".`,
|
|
68
|
+
})); // INV-8 — Zip-Slip guard: reject empty / "." / ".." path segments
|
|
69
|
+
}
|
|
70
|
+
entries.push({ path: rel, data: entry.getData() });
|
|
71
|
+
}
|
|
72
|
+
if (entries.length === 0) {
|
|
73
|
+
return (0, neverthrow_1.err)(new teamsfx_api_1.SystemError({
|
|
74
|
+
source: SOURCE,
|
|
75
|
+
name: "TemplateNotFoundInPackage",
|
|
76
|
+
message: `Template "${prefix}" was not found in the resolved package.`,
|
|
77
|
+
}));
|
|
78
|
+
}
|
|
79
|
+
entries.sort((a, b) => (a.path < b.path ? -1 : a.path > b.path ? 1 : 0)); // INV-5 — deterministic order
|
|
80
|
+
return (0, neverthrow_1.ok)(entries);
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=templatePackage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templatePackage.js","sourceRoot":"","sources":["../../../src/v4/distribution/templatePackage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { FxError } from "@microsoft/teamsfx-api";
|
|
2
|
+
import { Result } from "neverthrow";
|
|
3
|
+
/** Where the resolved template-package bytes come from. */
|
|
4
|
+
export type TemplateOrigin = "bundled" | "online" | "cache" | "bundled-fallback";
|
|
5
|
+
/** A single channel-published version paired with its expected content digest (model A). */
|
|
6
|
+
export interface TagEntry {
|
|
7
|
+
version: string;
|
|
8
|
+
digest: string;
|
|
9
|
+
}
|
|
10
|
+
/** A cached template package: its content digest and the bytes themselves. */
|
|
11
|
+
export interface CachedPackage {
|
|
12
|
+
digest: string;
|
|
13
|
+
bytes: Buffer;
|
|
14
|
+
}
|
|
15
|
+
/** The bundled floor baked into the engine binary. */
|
|
16
|
+
export interface BundledFloor {
|
|
17
|
+
version: string;
|
|
18
|
+
digest: string;
|
|
19
|
+
location: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* The narrow port `resolveTemplateSource` depends on (interface-segregation).
|
|
23
|
+
* The full `ScaffoldRuntime` composes this later; this operation never reaches
|
|
24
|
+
* for faces it does not use.
|
|
25
|
+
*/
|
|
26
|
+
export interface TemplateSourcePort {
|
|
27
|
+
/** Read an environment variable (e.g. `TEMPLATE_VERSION`). */
|
|
28
|
+
env(name: string): string | undefined;
|
|
29
|
+
/** The channel's published `{ version, digest }` entries. */
|
|
30
|
+
tagList(): Promise<TagEntry[]>;
|
|
31
|
+
/** Download a package's bytes for a version (verified against `expectedDigest` by the caller). */
|
|
32
|
+
packages(version: string, expectedDigest: string): Promise<Buffer>;
|
|
33
|
+
/** The local digest-keyed package cache. */
|
|
34
|
+
cache: {
|
|
35
|
+
get(version: string): CachedPackage | undefined;
|
|
36
|
+
put(version: string, digest: string, bytes: Buffer): void;
|
|
37
|
+
keys(): string[];
|
|
38
|
+
};
|
|
39
|
+
/** The bundled floor baked into the engine. */
|
|
40
|
+
floor: BundledFloor;
|
|
41
|
+
}
|
|
42
|
+
/** The single resolved source a scaffold run will use. */
|
|
43
|
+
export interface TemplateSource {
|
|
44
|
+
origin: TemplateOrigin;
|
|
45
|
+
version: string;
|
|
46
|
+
digest: string;
|
|
47
|
+
location: string;
|
|
48
|
+
/** Set when the resolved source diverged from the intended online source (observable, never silent). */
|
|
49
|
+
warning?: string;
|
|
50
|
+
}
|
|
51
|
+
export interface ResolveTemplateSourceInput {
|
|
52
|
+
/** SemVer range the build is permitted to resolve within. */
|
|
53
|
+
range: string;
|
|
54
|
+
/** `true` for test/offline/daily builds (bundled floor); `false` for shipped builds (release channel). */
|
|
55
|
+
bundled: boolean;
|
|
56
|
+
port: TemplateSourcePort;
|
|
57
|
+
}
|
|
58
|
+
/** sha256 content hash of a package's bytes, prefixed `sha256:`. */
|
|
59
|
+
export declare function computeDigest(bytes: Buffer): string;
|
|
60
|
+
/**
|
|
61
|
+
* Resolve `(range, bundled, port)` to exactly one `TemplateSource` before any
|
|
62
|
+
* template is read or rendered. Pure with respect to its inputs and the
|
|
63
|
+
* current tag-list state (INV-6). Returns `Result` rather than throwing,
|
|
64
|
+
* consistent with the toolkit-wide neverthrow rule.
|
|
65
|
+
*/
|
|
66
|
+
export declare function resolveTemplateSource(input: ResolveTemplateSourceInput): Promise<Result<TemplateSource, FxError>>;
|
|
67
|
+
//# sourceMappingURL=templateSource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templateSource.d.ts","sourceRoot":"","sources":["../../../src/v4/distribution/templateSource.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAA0B,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,MAAM,EAAW,MAAM,YAAY,CAAC;AAgB7C,2DAA2D;AAC3D,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,kBAAkB,CAAC;AAEjF,4FAA4F;AAC5F,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,8EAA8E;AAC9E,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,sDAAsD;AACtD,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,8DAA8D;IAC9D,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACtC,6DAA6D;IAC7D,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC/B,kGAAkG;IAClG,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACnE,4CAA4C;IAC5C,KAAK,EAAE;QACL,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAAC;QAChD,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1D,IAAI,IAAI,MAAM,EAAE,CAAC;KAClB,CAAC;IACF,+CAA+C;IAC/C,KAAK,EAAE,YAAY,CAAC;CACrB;AAED,0DAA0D;AAC1D,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,wGAAwG;IACxG,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,0BAA0B;IACzC,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,0GAA0G;IAC1G,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,kBAAkB,CAAC;CAC1B;AAED,oEAAoE;AACpE,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,0BAA0B,GAChC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAc1C"}
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT license.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.computeDigest = computeDigest;
|
|
6
|
+
exports.resolveTemplateSource = resolveTemplateSource;
|
|
7
|
+
const tslib_1 = require("tslib");
|
|
8
|
+
const teamsfx_api_1 = require("@microsoft/teamsfx-api");
|
|
9
|
+
const neverthrow_1 = require("neverthrow");
|
|
10
|
+
const crypto = tslib_1.__importStar(require("crypto"));
|
|
11
|
+
const semver_1 = tslib_1.__importDefault(require("semver"));
|
|
12
|
+
/**
|
|
13
|
+
* The v4 template-distribution resolution operation.
|
|
14
|
+
*
|
|
15
|
+
* Spec: docs/03-specs/operations/scaffolding/resolve-template-source.md
|
|
16
|
+
* Decision: docs/02-architecture/adr/ADR-0006-template-distribution-channel.md
|
|
17
|
+
*
|
|
18
|
+
* This module is part of the v4 world. It imports no v3 symbol; v3 code may
|
|
19
|
+
* call `resolveTemplateSource`, but nothing here is tailored for v3.
|
|
20
|
+
*/
|
|
21
|
+
const SOURCE = "Scaffold";
|
|
22
|
+
/** sha256 content hash of a package's bytes, prefixed `sha256:`. */
|
|
23
|
+
function computeDigest(bytes) {
|
|
24
|
+
return "sha256:" + crypto.createHash("sha256").update(bytes).digest("hex");
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Resolve `(range, bundled, port)` to exactly one `TemplateSource` before any
|
|
28
|
+
* template is read or rendered. Pure with respect to its inputs and the
|
|
29
|
+
* current tag-list state (INV-6). Returns `Result` rather than throwing,
|
|
30
|
+
* consistent with the toolkit-wide neverthrow rule.
|
|
31
|
+
*/
|
|
32
|
+
async function resolveTemplateSource(input) {
|
|
33
|
+
const { range, bundled, port } = input;
|
|
34
|
+
const templateVersion = port.env("TEMPLATE_VERSION");
|
|
35
|
+
if (templateVersion === "local") {
|
|
36
|
+
return (0, neverthrow_1.ok)(floorSource(port.floor)); // AC-02 (override beats bundled=false)
|
|
37
|
+
}
|
|
38
|
+
if (templateVersion) {
|
|
39
|
+
return pinnedOnline(templateVersion, port); // AC-03
|
|
40
|
+
}
|
|
41
|
+
if (bundled) {
|
|
42
|
+
return (0, neverthrow_1.ok)(floorSource(port.floor)); // AC-01, AC-12 (never sniff package.json#version)
|
|
43
|
+
}
|
|
44
|
+
return resolveOnline(range, port);
|
|
45
|
+
}
|
|
46
|
+
function floorSource(floor) {
|
|
47
|
+
return {
|
|
48
|
+
origin: "bundled",
|
|
49
|
+
version: floor.version,
|
|
50
|
+
digest: floor.digest,
|
|
51
|
+
location: floor.location,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
async function pinnedOnline(version, port) {
|
|
55
|
+
let tags;
|
|
56
|
+
try {
|
|
57
|
+
tags = await port.tagList();
|
|
58
|
+
}
|
|
59
|
+
catch (e) {
|
|
60
|
+
// A pin never falls back (AC-16 intent): surface the channel failure as a
|
|
61
|
+
// Result instead of letting the rejection escape (neverthrow contract).
|
|
62
|
+
return (0, neverthrow_1.err)(asTagListError(e));
|
|
63
|
+
}
|
|
64
|
+
const entry = tags.find((t) => t.version === version);
|
|
65
|
+
if (!entry) {
|
|
66
|
+
return (0, neverthrow_1.err)(new teamsfx_api_1.UserError({
|
|
67
|
+
source: SOURCE,
|
|
68
|
+
name: "TemplatePinnedVersionNotFound",
|
|
69
|
+
message: `Pinned template version "${version}" is not published on the release channel.`,
|
|
70
|
+
}));
|
|
71
|
+
}
|
|
72
|
+
return fetchVerify(entry, port, "online");
|
|
73
|
+
}
|
|
74
|
+
async function resolveOnline(range, port) {
|
|
75
|
+
let tags;
|
|
76
|
+
try {
|
|
77
|
+
tags = await port.tagList();
|
|
78
|
+
}
|
|
79
|
+
catch (e) {
|
|
80
|
+
// A malformed channel document is a hard error (spec decision #7 / AC-17),
|
|
81
|
+
// distinct from an unreachable channel: it must never be masked as an
|
|
82
|
+
// offline fallback. Only a genuine reachability failure falls back.
|
|
83
|
+
if (isMalformedTagList(e)) {
|
|
84
|
+
return (0, neverthrow_1.err)(e);
|
|
85
|
+
}
|
|
86
|
+
return (0, neverthrow_1.ok)(offlineFallback(range, port)); // AC-07, AC-08 (unreachable only)
|
|
87
|
+
}
|
|
88
|
+
const picked = semver_1.default.maxSatisfying(tags.map((t) => t.version), range); // AC-09 (stable excludes -beta), AC-10 (range names -beta)
|
|
89
|
+
if (!picked) {
|
|
90
|
+
// Channel reachable but no version satisfies range (AC-14 / AC-15).
|
|
91
|
+
if (semver_1.default.satisfies(port.floor.version, range)) {
|
|
92
|
+
return (0, neverthrow_1.ok)(floorFallback(port.floor)); // AC-14
|
|
93
|
+
}
|
|
94
|
+
return (0, neverthrow_1.err)(new teamsfx_api_1.UserError({
|
|
95
|
+
source: SOURCE,
|
|
96
|
+
name: "TemplateVersionMismatch",
|
|
97
|
+
message: `No published template version satisfies range "${range}", and the bundled floor "${port.floor.version}" does not satisfy it either. The engine and template versions are incompatible.`,
|
|
98
|
+
})); // AC-15
|
|
99
|
+
}
|
|
100
|
+
if (picked === port.floor.version) {
|
|
101
|
+
return (0, neverthrow_1.ok)(floorSource(port.floor)); // AC-05 (floor is highest satisfier; no download)
|
|
102
|
+
}
|
|
103
|
+
const entry = tags.find((t) => t.version === picked);
|
|
104
|
+
/* istanbul ignore if -- defensive: `picked` is drawn from `tags`, so a miss
|
|
105
|
+
means the tag list mutated mid-resolution; not reproducible in a unit. */
|
|
106
|
+
if (!entry) {
|
|
107
|
+
return (0, neverthrow_1.err)(new teamsfx_api_1.SystemError({
|
|
108
|
+
source: SOURCE,
|
|
109
|
+
name: "TemplateTagListInconsistent",
|
|
110
|
+
message: `Resolved version "${picked}" is no longer present in the tag list.`,
|
|
111
|
+
}));
|
|
112
|
+
}
|
|
113
|
+
return fetchVerify(entry, port, "online"); // AC-04, AC-06, AC-11
|
|
114
|
+
}
|
|
115
|
+
/** A malformed channel tag-list (decision #7) is a hard error, distinct from an unreachable channel. */
|
|
116
|
+
function isMalformedTagList(e) {
|
|
117
|
+
return e instanceof teamsfx_api_1.SystemError && e.name === "TemplateTagListMalformed";
|
|
118
|
+
}
|
|
119
|
+
/** Preserve an existing FxError; wrap any other tag-list failure as a SystemError (neverthrow contract). */
|
|
120
|
+
function asTagListError(e) {
|
|
121
|
+
if (e instanceof teamsfx_api_1.UserError || e instanceof teamsfx_api_1.SystemError) {
|
|
122
|
+
return e;
|
|
123
|
+
}
|
|
124
|
+
/* istanbul ignore next -- the port rejects with an Error; the String(e)
|
|
125
|
+
fallback is defensive for non-Error rejections, not reproducible in a unit. */
|
|
126
|
+
const message = e instanceof Error ? e.message : String(e);
|
|
127
|
+
return new teamsfx_api_1.SystemError({
|
|
128
|
+
source: SOURCE,
|
|
129
|
+
name: "TemplateTagListUnavailable",
|
|
130
|
+
message: `Failed to read the template release channel: ${message}.`,
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
/** Preserve an existing FxError; wrap any other download failure as a SystemError (neverthrow contract). */
|
|
134
|
+
function asDownloadError(e, version) {
|
|
135
|
+
if (e instanceof teamsfx_api_1.UserError || e instanceof teamsfx_api_1.SystemError) {
|
|
136
|
+
return e;
|
|
137
|
+
}
|
|
138
|
+
/* istanbul ignore next -- the port rejects with an Error; the String(e)
|
|
139
|
+
fallback is defensive for non-Error rejections, not reproducible in a unit. */
|
|
140
|
+
const message = e instanceof Error ? e.message : String(e);
|
|
141
|
+
return new teamsfx_api_1.SystemError({
|
|
142
|
+
source: SOURCE,
|
|
143
|
+
name: "TemplateDownloadFailed",
|
|
144
|
+
message: `Failed to download template "${version}" from the release channel: ${message}.`,
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
async function fetchVerify(entry, port, origin) {
|
|
148
|
+
const cached = port.cache.get(entry.version);
|
|
149
|
+
if (cached && cached.digest === entry.digest) {
|
|
150
|
+
return (0, neverthrow_1.ok)({
|
|
151
|
+
origin: "cache",
|
|
152
|
+
version: entry.version,
|
|
153
|
+
digest: entry.digest,
|
|
154
|
+
location: cacheLocation(entry.version),
|
|
155
|
+
}); // AC-06 (zero download)
|
|
156
|
+
}
|
|
157
|
+
let bytes;
|
|
158
|
+
try {
|
|
159
|
+
bytes = await port.packages(entry.version, entry.digest);
|
|
160
|
+
}
|
|
161
|
+
catch (e) {
|
|
162
|
+
// The download (sendRequestWithRetry) can reject; surface it as a Result
|
|
163
|
+
// rather than letting it escape resolveTemplateSource (neverthrow contract).
|
|
164
|
+
return (0, neverthrow_1.err)(asDownloadError(e, entry.version));
|
|
165
|
+
}
|
|
166
|
+
const computed = computeDigest(bytes);
|
|
167
|
+
if (computed !== entry.digest) {
|
|
168
|
+
return (0, neverthrow_1.err)(new teamsfx_api_1.SystemError({
|
|
169
|
+
source: SOURCE,
|
|
170
|
+
name: "TemplateDigestMismatch",
|
|
171
|
+
message: `Downloaded template "${entry.version}" failed integrity check: expected ${entry.digest}, got ${computed}.`,
|
|
172
|
+
})); // AC-11 (cache not written, corrupt bytes never returned)
|
|
173
|
+
}
|
|
174
|
+
port.cache.put(entry.version, entry.digest, bytes);
|
|
175
|
+
return (0, neverthrow_1.ok)({
|
|
176
|
+
origin,
|
|
177
|
+
version: entry.version,
|
|
178
|
+
digest: entry.digest,
|
|
179
|
+
location: cacheLocation(entry.version),
|
|
180
|
+
}); // AC-04
|
|
181
|
+
}
|
|
182
|
+
/** Reached when the channel is unreachable: max(highest cached satisfying range, floor). */
|
|
183
|
+
function offlineFallback(range, port) {
|
|
184
|
+
const cachedSatisfying = port.cache.keys().filter((v) => semver_1.default.satisfies(v, range));
|
|
185
|
+
const highestCached = semver_1.default.maxSatisfying(cachedSatisfying, range);
|
|
186
|
+
const floorSatisfies = semver_1.default.satisfies(port.floor.version, range);
|
|
187
|
+
// Cache wins only when strictly higher than the floor; a tie goes to the floor (decision #2).
|
|
188
|
+
if (highestCached && (!floorSatisfies || semver_1.default.gt(highestCached, port.floor.version))) {
|
|
189
|
+
const cached = port.cache.get(highestCached);
|
|
190
|
+
/* istanbul ignore else -- highestCached is drawn from cache.keys(); a miss
|
|
191
|
+
means the cache mutated mid-resolution, so we degrade to the floor. */
|
|
192
|
+
if (cached) {
|
|
193
|
+
return {
|
|
194
|
+
origin: "cache",
|
|
195
|
+
version: highestCached,
|
|
196
|
+
digest: cached.digest,
|
|
197
|
+
location: cacheLocation(highestCached),
|
|
198
|
+
warning: offlineWarning(range),
|
|
199
|
+
}; // AC-07
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
return { ...floorFallback(port.floor), warning: offlineWarning(range) }; // AC-08
|
|
203
|
+
}
|
|
204
|
+
function floorFallback(floor) {
|
|
205
|
+
return {
|
|
206
|
+
origin: "bundled-fallback",
|
|
207
|
+
version: floor.version,
|
|
208
|
+
digest: floor.digest,
|
|
209
|
+
location: floor.location,
|
|
210
|
+
warning: `Falling back to the bundled template floor "${floor.version}".`,
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
function offlineWarning(range) {
|
|
214
|
+
return `The template release channel was unreachable; resolved offline within range "${range}".`;
|
|
215
|
+
}
|
|
216
|
+
function cacheLocation(version) {
|
|
217
|
+
// eslint-disable-next-line no-secrets/no-secrets
|
|
218
|
+
return `templates-v4@${version}`;
|
|
219
|
+
}
|
|
220
|
+
//# sourceMappingURL=templateSource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templateSource.js","sourceRoot":"","sources":["../../../src/v4/distribution/templateSource.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { FxError } from "@microsoft/teamsfx-api";
|
|
2
|
+
import { Result } from "neverthrow";
|
|
3
|
+
import { BundledFloor, TagEntry, TemplateSource, TemplateSourcePort } from "./templateSource";
|
|
4
|
+
/** v4 channel prefix and naming (ADR-0006 channel isolation). */
|
|
5
|
+
export declare const V4_TAG_PREFIX = "templates-v4@";
|
|
6
|
+
export declare const ZIP_EXT = ".zip";
|
|
7
|
+
export interface TemplateChannelConfig {
|
|
8
|
+
/** NDJSON tag-list URL for the v4 channel (separate from the frozen v3 `tagListURL`). */
|
|
9
|
+
templatesV4TagListURL: string;
|
|
10
|
+
/** Base URL release assets are downloaded from. */
|
|
11
|
+
templateDownloadBaseURL: string;
|
|
12
|
+
/** Network retry budget. */
|
|
13
|
+
tryLimits: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Parse the model-A NDJSON tag list: one `{ version, digest }` object per
|
|
17
|
+
* line. Blank lines and trailing `\r` are ignored; a malformed line is a hard
|
|
18
|
+
* error (no silent skip) — spec decision #7.
|
|
19
|
+
*/
|
|
20
|
+
export declare function parseTagList(ndjson: string): TagEntry[];
|
|
21
|
+
/** The download URL for a v4 template package version. */
|
|
22
|
+
export declare function templateZipUrl(baseURL: string, version: string): string;
|
|
23
|
+
/** The on-disk cache directory for the v4 template packages. */
|
|
24
|
+
export declare function cacheDir(): string;
|
|
25
|
+
/** The cache file path for one version. */
|
|
26
|
+
export declare function cacheFile(version: string): string;
|
|
27
|
+
/**
|
|
28
|
+
* Build the production port. `floor` is injected (it comes from the engine's
|
|
29
|
+
* baked bundled package); this factory does not fabricate it.
|
|
30
|
+
*/
|
|
31
|
+
export declare function createTemplateSourcePort(config: TemplateChannelConfig, floor: BundledFloor): TemplateSourcePort;
|
|
32
|
+
/**
|
|
33
|
+
* Load the bytes for an already-resolved {@link TemplateSource}.
|
|
34
|
+
*
|
|
35
|
+
* `resolveTemplateSource` decides *which* package a scaffold run uses but
|
|
36
|
+
* returns only the descriptor; this is the companion IO step that produces the
|
|
37
|
+
* bytes, the boundary the v3 chokepoint calls before `openTemplatePackage`.
|
|
38
|
+
*
|
|
39
|
+
* It never reaches the network: an `online`/`cache` source was already
|
|
40
|
+
* downloaded, verified, and cached during resolution, so re-downloading here
|
|
41
|
+
* would defeat the digest-keyed cache and reintroduce the v3 re-fetch churn. A
|
|
42
|
+
* cache miss is therefore an invariant violation (hard error), not a silent
|
|
43
|
+
* re-fetch. Every path re-checks the bytes against `source.digest` so
|
|
44
|
+
* `computeDigest` stays the single integrity authority and a corrupt package is
|
|
45
|
+
* never handed back.
|
|
46
|
+
*
|
|
47
|
+
* Spec: docs/03-specs/operations/scaffolding/resolve-template-source.md
|
|
48
|
+
*/
|
|
49
|
+
export declare function loadResolvedPackage(source: TemplateSource, port: TemplateSourcePort): Result<Buffer, FxError>;
|
|
50
|
+
//# sourceMappingURL=templateSourcePort.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templateSourcePort.d.ts","sourceRoot":"","sources":["../../../src/v4/distribution/templateSourcePort.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAe,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAE,MAAM,EAAW,MAAM,YAAY,CAAC;AAK7C,OAAO,EACL,YAAY,EAEZ,QAAQ,EACR,cAAc,EACd,kBAAkB,EAEnB,MAAM,kBAAkB,CAAC;AAc1B,iEAAiE;AAEjE,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,OAAO,SAAS,CAAC;AAE9B,MAAM,WAAW,qBAAqB;IACpC,yFAAyF;IACzF,qBAAqB,EAAE,MAAM,CAAC;IAC9B,mDAAmD;IACnD,uBAAuB,EAAE,MAAM,CAAC;IAChC,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,EAAE,CA4BvD;AAUD,0DAA0D;AAC1D,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED,gEAAgE;AAChE,wBAAgB,QAAQ,IAAI,MAAM,CAEjC;AAED,2CAA2C;AAC3C,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,qBAAqB,EAC7B,KAAK,EAAE,YAAY,GAClB,kBAAkB,CAwEpB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,kBAAkB,GACvB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAuCzB"}
|