@cloudbase/cli 2.10.0-beta.0 → 2.10.1-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/ccr +2 -0
- package/bin/cloudbase +2 -0
- package/bin/cloudbase-mcp +2 -0
- package/bin/tcb +2 -0
- package/dist/standalone/cli.js +230877 -158160
- package/package.json +15 -132
- package/.augment-guidelines +0 -119
- package/.claude/settings.local.json +0 -6
- package/.clinerules/cloudbase-rules.mdc +0 -119
- package/.cursor/rules/cloudbase-rules.mdc +0 -119
- package/.editorconfig +0 -10
- package/.eslintignore +0 -8
- package/.eslintrc +0 -35
- package/.mcp.json +0 -11
- package/.prettierignore +0 -1
- package/.prettierrc.js +0 -29
- package/.vscode/launch.json +0 -26
- package/.yarnrc.yml +0 -1
- package/CLAUDE.md +0 -119
- package/LICENSE +0 -6
- package/bin/ccr.js +0 -3
- package/bin/cloudbase.js +0 -7
- package/bin/tcb.js +0 -339
- package/changelog.md +0 -6
- package/cloudbase-cli-2.7.8.tgz +0 -0
- package/cloudbaserc.json +0 -13
- package/jest.config.js +0 -17
- package/lib/auth/index.js +0 -18
- package/lib/auth/login.js +0 -111
- package/lib/auth/logout.js +0 -20
- package/lib/commands/account/index.js +0 -18
- package/lib/commands/account/login.js +0 -252
- package/lib/commands/account/logout.js +0 -56
- package/lib/commands/ai/index.js +0 -200
- package/lib/commands/cloudfunction/base.js +0 -369
- package/lib/commands/cloudfunction/index.js +0 -17
- package/lib/commands/cloudrun/base.js +0 -1040
- package/lib/commands/cloudrun/cloudrun-run-ui/index.html +0 -193
- package/lib/commands/cloudrun/index.js +0 -17
- package/lib/commands/common.js +0 -225
- package/lib/commands/config/delete.js +0 -72
- package/lib/commands/config/get.js +0 -69
- package/lib/commands/config/index.js +0 -21
- package/lib/commands/config/interface.js +0 -25
- package/lib/commands/config/list.js +0 -72
- package/lib/commands/config/set.js +0 -89
- package/lib/commands/constants.js +0 -11
- package/lib/commands/db/base.js +0 -396
- package/lib/commands/db/index.js +0 -17
- package/lib/commands/env/base.js +0 -129
- package/lib/commands/env/domain.js +0 -222
- package/lib/commands/env/index.js +0 -19
- package/lib/commands/env/login.js +0 -271
- package/lib/commands/framework/index.js +0 -196
- package/lib/commands/fun/base.js +0 -434
- package/lib/commands/fun/index.js +0 -17
- package/lib/commands/functions/alias/getRoute.js +0 -99
- package/lib/commands/functions/alias/index.js +0 -18
- package/lib/commands/functions/alias/setRoute.js +0 -101
- package/lib/commands/functions/code-download.js +0 -123
- package/lib/commands/functions/code-update.js +0 -96
- package/lib/commands/functions/concurrency/delete.js +0 -71
- package/lib/commands/functions/concurrency/index.js +0 -19
- package/lib/commands/functions/concurrency/list.js +0 -82
- package/lib/commands/functions/concurrency/set.js +0 -73
- package/lib/commands/functions/config-update.js +0 -103
- package/lib/commands/functions/copy.js +0 -82
- package/lib/commands/functions/delete.js +0 -102
- package/lib/commands/functions/deploy.js +0 -331
- package/lib/commands/functions/detail.js +0 -166
- package/lib/commands/functions/index.js +0 -33
- package/lib/commands/functions/invoke.js +0 -140
- package/lib/commands/functions/layer/bind.js +0 -191
- package/lib/commands/functions/layer/common.js +0 -13
- package/lib/commands/functions/layer/create.js +0 -88
- package/lib/commands/functions/layer/delete.js +0 -92
- package/lib/commands/functions/layer/download.js +0 -112
- package/lib/commands/functions/layer/index.js +0 -23
- package/lib/commands/functions/layer/list.js +0 -105
- package/lib/commands/functions/layer/sort.js +0 -98
- package/lib/commands/functions/list.js +0 -92
- package/lib/commands/functions/log.js +0 -156
- package/lib/commands/functions/run.js +0 -245
- package/lib/commands/functions/trigger-create.js +0 -99
- package/lib/commands/functions/trigger-delete.js +0 -121
- package/lib/commands/functions/version/index.js +0 -18
- package/lib/commands/functions/version/list.js +0 -97
- package/lib/commands/functions/version/publish.js +0 -71
- package/lib/commands/gateway/create.js +0 -125
- package/lib/commands/gateway/delete.js +0 -111
- package/lib/commands/gateway/domain.js +0 -202
- package/lib/commands/gateway/index.js +0 -21
- package/lib/commands/gateway/list.js +0 -107
- package/lib/commands/gateway/switch.js +0 -144
- package/lib/commands/helpers/index.js +0 -19
- package/lib/commands/helpers/init.js +0 -395
- package/lib/commands/helpers/new.js +0 -130
- package/lib/commands/helpers/open.js +0 -90
- package/lib/commands/hosting/hosting.js +0 -378
- package/lib/commands/hosting/index.js +0 -17
- package/lib/commands/index.js +0 -38
- package/lib/commands/lowcode/app.js +0 -415
- package/lib/commands/lowcode/comps.js +0 -373
- package/lib/commands/lowcode/index.js +0 -18
- package/lib/commands/lowcode/utils.js +0 -83
- package/lib/commands/pull/index.js +0 -17
- package/lib/commands/pull/pull.js +0 -107
- package/lib/commands/run/delete.js +0 -102
- package/lib/commands/run/image/common.js +0 -13
- package/lib/commands/run/image/delete.js +0 -91
- package/lib/commands/run/image/download.js +0 -86
- package/lib/commands/run/image/index.js +0 -21
- package/lib/commands/run/image/list.js +0 -104
- package/lib/commands/run/image/upload.js +0 -114
- package/lib/commands/run/index.js +0 -21
- package/lib/commands/run/list.js +0 -104
- package/lib/commands/run/service/config.js +0 -113
- package/lib/commands/run/service/deploy.js +0 -155
- package/lib/commands/run/service/index.js +0 -20
- package/lib/commands/run/service/list.js +0 -116
- package/lib/commands/run/service/update.js +0 -141
- package/lib/commands/run/standalonegateway/common.js +0 -13
- package/lib/commands/run/standalonegateway/create.js +0 -106
- package/lib/commands/run/standalonegateway/destroy.js +0 -82
- package/lib/commands/run/standalonegateway/index.js +0 -21
- package/lib/commands/run/standalonegateway/list.js +0 -78
- package/lib/commands/run/standalonegateway/package.js +0 -87
- package/lib/commands/run/standalonegateway/turn.js +0 -87
- package/lib/commands/run/version/common.js +0 -13
- package/lib/commands/run/version/create.js +0 -329
- package/lib/commands/run/version/delete.js +0 -90
- package/lib/commands/run/version/index.js +0 -21
- package/lib/commands/run/version/list.js +0 -109
- package/lib/commands/run/version/modify.js +0 -142
- package/lib/commands/run/version/update.js +0 -353
- package/lib/commands/runf/base.js +0 -453
- package/lib/commands/runf/index.js +0 -17
- package/lib/commands/self-update.js +0 -134
- package/lib/commands/smart.js +0 -124
- package/lib/commands/storage/index.js +0 -17
- package/lib/commands/storage/storage.js +0 -515
- package/lib/commands/third/index.js +0 -17
- package/lib/commands/third/thirdAttach.js +0 -78
- package/lib/commands/utils.js +0 -197
- package/lib/completion/index.js +0 -15
- package/lib/constant.js +0 -142
- package/lib/db/index.js +0 -85
- package/lib/decorators/captureError.js +0 -30
- package/lib/decorators/constants.js +0 -15
- package/lib/decorators/deprecate.js +0 -18
- package/lib/decorators/guard.js +0 -35
- package/lib/decorators/index.js +0 -25
- package/lib/decorators/injectParams.js +0 -58
- package/lib/decorators/params/common.js +0 -16
- package/lib/decorators/params/index.js +0 -34
- package/lib/env/domain.js +0 -42
- package/lib/env/index.js +0 -80
- package/lib/env/login.js +0 -78
- package/lib/error.js +0 -17
- package/lib/function/alias.js +0 -54
- package/lib/function/base.js +0 -266
- package/lib/function/code.js +0 -28
- package/lib/function/concurrency.js +0 -70
- package/lib/function/create.js +0 -72
- package/lib/function/delete.js +0 -53
- package/lib/function/index.js +0 -27
- package/lib/function/layer/attach.js +0 -63
- package/lib/function/layer/create.js +0 -63
- package/lib/function/layer/delete.js +0 -24
- package/lib/function/layer/download.js +0 -37
- package/lib/function/layer/index.js +0 -23
- package/lib/function/layer/list.js +0 -36
- package/lib/function/layer/sort.js +0 -25
- package/lib/function/trigger.js +0 -106
- package/lib/function/update.js +0 -41
- package/lib/function/version.js +0 -52
- package/lib/function/vpc.js +0 -35
- package/lib/gateway/index.js +0 -136
- package/lib/help.js +0 -44
- package/lib/hosting.js +0 -244
- package/lib/i18n/index.js +0 -73
- package/lib/index.js +0 -13
- package/lib/logger.js +0 -19
- package/lib/run/delete.js +0 -22
- package/lib/run/image/build.js +0 -37
- package/lib/run/image/delete.js +0 -22
- package/lib/run/image/index.js +0 -20
- package/lib/run/image/info.js +0 -29
- package/lib/run/image/list.js +0 -30
- package/lib/run/index.js +0 -23
- package/lib/run/list.js +0 -39
- package/lib/run/repo.js +0 -31
- package/lib/run/service/common.js +0 -271
- package/lib/run/service/config.js +0 -70
- package/lib/run/service/deployPackage.js +0 -83
- package/lib/run/service/index.js +0 -22
- package/lib/run/service/list.js +0 -31
- package/lib/run/service/showLogs.js +0 -117
- package/lib/run/service/update.js +0 -84
- package/lib/run/standalonegateway/create.js +0 -32
- package/lib/run/standalonegateway/destroy.js +0 -28
- package/lib/run/standalonegateway/index.js +0 -21
- package/lib/run/standalonegateway/list.js +0 -48
- package/lib/run/standalonegateway/package/index.js +0 -17
- package/lib/run/standalonegateway/package/list.js +0 -32
- package/lib/run/standalonegateway/turn/index.js +0 -18
- package/lib/run/standalonegateway/turn/off.js +0 -28
- package/lib/run/standalonegateway/turn/on.js +0 -28
- package/lib/run/version/create.js +0 -50
- package/lib/run/version/delete.js +0 -23
- package/lib/run/version/index.js +0 -22
- package/lib/run/version/list.js +0 -24
- package/lib/run/version/modify.js +0 -24
- package/lib/run/version/repo.js +0 -33
- package/lib/run/version/update.js +0 -39
- package/lib/storage.js +0 -125
- package/lib/third/index.js +0 -25
- package/lib/types.js +0 -12
- package/lib/utils/ai/banner.js +0 -102
- package/lib/utils/ai/claudeWindows.js +0 -64
- package/lib/utils/ai/config.js +0 -290
- package/lib/utils/ai/const.js +0 -178
- package/lib/utils/ai/ensureFiles.js +0 -27
- package/lib/utils/ai/env.js +0 -37
- package/lib/utils/ai/envLocalManager.js +0 -145
- package/lib/utils/ai/nodeVersion.js +0 -19
- package/lib/utils/ai/router.js +0 -1306
- package/lib/utils/ai/setup.js +0 -707
- package/lib/utils/auth.js +0 -28
- package/lib/utils/checkTcbrEnv.js +0 -76
- package/lib/utils/cli-table.js +0 -19
- package/lib/utils/commonParamsCheck.js +0 -49
- package/lib/utils/config.js +0 -59
- package/lib/utils/debug-logger.js +0 -31
- package/lib/utils/dts.js +0 -154
- package/lib/utils/env.js +0 -222
- package/lib/utils/fs/del.js +0 -11
- package/lib/utils/fs/index.js +0 -94
- package/lib/utils/function-packer.js +0 -87
- package/lib/utils/index.js +0 -38
- package/lib/utils/log.js +0 -85
- package/lib/utils/mcp-config-modifier.js +0 -235
- package/lib/utils/net/cloud-api-request.js +0 -64
- package/lib/utils/net/credential.js +0 -61
- package/lib/utils/net/http-request.js +0 -108
- package/lib/utils/net/index.js +0 -21
- package/lib/utils/net/manager-service.js +0 -51
- package/lib/utils/net/proxy.js +0 -9
- package/lib/utils/notice.js +0 -37
- package/lib/utils/output/highlight.js +0 -11
- package/lib/utils/output/index.js +0 -19
- package/lib/utils/output/link.js +0 -16
- package/lib/utils/output/loading.js +0 -68
- package/lib/utils/parallel.js +0 -65
- package/lib/utils/platform/index.js +0 -19
- package/lib/utils/platform/mac.js +0 -37
- package/lib/utils/platform/os.js +0 -59
- package/lib/utils/platform/port.js +0 -26
- package/lib/utils/progress-bar.js +0 -44
- package/lib/utils/prompt/index.js +0 -17
- package/lib/utils/prompt/select.js +0 -54
- package/lib/utils/report.js +0 -78
- package/lib/utils/reporter/agree.js +0 -31
- package/lib/utils/reporter/download.js +0 -37
- package/lib/utils/reporter/index.js +0 -19
- package/lib/utils/reporter/usage.js +0 -32
- package/lib/utils/store/auth.js +0 -59
- package/lib/utils/store/common.js +0 -8
- package/lib/utils/store/config.js +0 -49
- package/lib/utils/store/db.js +0 -84
- package/lib/utils/store/index.js +0 -21
- package/lib/utils/store/usage.js +0 -9
- package/lib/utils/tcbrApi/callTcbrApi.js +0 -39
- package/lib/utils/tcbrApi/index.js +0 -17
- package/lib/utils/template-manager.js +0 -458
- package/lib/utils/template.js +0 -131
- package/lib/utils/tools/common.js +0 -74
- package/lib/utils/tools/encoding.js +0 -13
- package/lib/utils/tools/index.js +0 -20
- package/lib/utils/tools/object.js +0 -28
- package/lib/utils/tools/time.js +0 -49
- package/lib/utils/tools/uid.js +0 -25
- package/lib/utils/url.js +0 -19
- package/lib/utils/validator.js +0 -72
- package/locales/README.md +0 -160
- package/locales/i18next-scanner.config.js +0 -206
- package/locales/index.js +0 -5
- package/locales/langs/en.json +0 -1235
- package/locales/langs/zh.json +0 -1235
- package/locales/mapping.json +0 -1235
- package/patches/@musistudio+claude-code-router+1.0.36.patch +0 -40
- package/post-install.js +0 -63
- package/rules/cloudbase-platform.mdc +0 -44
- package/rules/database.mdc +0 -25
- package/rules/miniprogram-development.mdc +0 -61
- package/rules/ui-design.mdc +0 -24
- package/rules/web-development.mdc +0 -44
- package/rules/workflows.mdc +0 -30
- package/runtime/nodejs/bootstrap.js +0 -255
- package/runtime/nodejs/runtime.js +0 -183
- package/specs/ai-cli-bootstrap/QWEN.md +0 -196
- package/specs/ai-cli-bootstrap/design.md +0 -185
- package/specs/ai-cli-bootstrap/requirements.md +0 -51
- package/specs/ai-cli-bootstrap/tasks.md +0 -70
- package/specs/ai-cli-bootstrap/technical-docs.md +0 -421
- package/specs/cli-install-upgrade/design.md +0 -207
- package/specs/cli-install-upgrade/requirements.md +0 -315
- package/specs/cli-install-upgrade/tasks.md +0 -120
- package/specs/codebuddy-integration/design.md +0 -152
- package/specs/codebuddy-integration/requirements.md +0 -85
- package/specs/codebuddy-integration/tasks.md +0 -159
- package/specs/mcp-global-bin/design.md +0 -57
- package/specs/mcp-global-bin/requirements.md +0 -43
- package/specs/mcp-global-bin/tasks.md +0 -54
- package/specs/ssl-fix/design.md +0 -93
- package/specs/ssl-fix/requirements.md +0 -47
- package/specs/ssl-fix/tasks.md +0 -65
- package/specs/tcb-pull-cnb-support/design.md +0 -137
- package/specs/tcb-pull-cnb-support/requirements.md +0 -56
- package/specs/tcb-pull-cnb-support/tasks.md +0 -101
- package/specs/tcb-pull-mcp-integration/design.md +0 -153
- package/specs/tcb-pull-mcp-integration/implementation-summary.md +0 -127
- package/specs/tcb-pull-mcp-integration/requirements.md +0 -68
- package/specs/tcb-pull-mcp-integration/tasks.md +0 -125
- package/specs/template-pull-command/design.md +0 -135
- package/specs/template-pull-command/implementation-summary.md +0 -160
- package/specs/template-pull-command/requirements.md +0 -73
- package/specs/template-pull-command/tasks.md +0 -101
- package/templates/html/loginFail.html +0 -90
- package/templates/html/loginSuccess.html +0 -86
- package/templates/server/node/_gitignore +0 -54
- package/templates/server/node/cloudbaserc.json +0 -10
- package/templates/server/node/index.js +0 -6
- package/templates/server/node/package.json +0 -9
- package/test-mcp-integration.js +0 -68
- package/tsconfig.json +0 -20
- package/tsconfig.test.json +0 -13
- package/types/auth/index.d.ts +0 -2
- package/types/auth/login.d.ts +0 -25
- package/types/auth/logout.d.ts +0 -1
- package/types/commands/account/index.d.ts +0 -2
- package/types/commands/account/login.d.ts +0 -15
- package/types/commands/account/logout.d.ts +0 -12
- package/types/commands/ai/index.d.ts +0 -23
- package/types/commands/cloudfunction/base.d.ts +0 -43
- package/types/commands/cloudfunction/index.d.ts +0 -1
- package/types/commands/cloudrun/base.d.ts +0 -160
- package/types/commands/cloudrun/index.d.ts +0 -1
- package/types/commands/common.d.ts +0 -38
- package/types/commands/config/delete.d.ts +0 -13
- package/types/commands/config/get.d.ts +0 -13
- package/types/commands/config/index.d.ts +0 -5
- package/types/commands/config/interface.d.ts +0 -17
- package/types/commands/config/list.d.ts +0 -13
- package/types/commands/config/set.d.ts +0 -13
- package/types/commands/constants.d.ts +0 -8
- package/types/commands/db/base.d.ts +0 -44
- package/types/commands/db/index.d.ts +0 -1
- package/types/commands/env/base.d.ts +0 -27
- package/types/commands/env/domain.d.ts +0 -53
- package/types/commands/env/index.d.ts +0 -3
- package/types/commands/env/login.d.ts +0 -47
- package/types/commands/framework/index.d.ts +0 -42
- package/types/commands/fun/base.d.ts +0 -43
- package/types/commands/fun/index.d.ts +0 -1
- package/types/commands/functions/alias/getRoute.d.ts +0 -13
- package/types/commands/functions/alias/index.d.ts +0 -2
- package/types/commands/functions/alias/setRoute.d.ts +0 -13
- package/types/commands/functions/code-download.d.ts +0 -18
- package/types/commands/functions/code-update.d.ts +0 -18
- package/types/commands/functions/concurrency/delete.d.ts +0 -13
- package/types/commands/functions/concurrency/index.d.ts +0 -3
- package/types/commands/functions/concurrency/list.d.ts +0 -13
- package/types/commands/functions/concurrency/set.d.ts +0 -13
- package/types/commands/functions/config-update.d.ts +0 -19
- package/types/commands/functions/copy.d.ts +0 -15
- package/types/commands/functions/delete.d.ts +0 -14
- package/types/commands/functions/deploy.d.ts +0 -22
- package/types/commands/functions/detail.d.ts +0 -16
- package/types/commands/functions/index.d.ts +0 -17
- package/types/commands/functions/invoke.d.ts +0 -15
- package/types/commands/functions/layer/bind.d.ts +0 -35
- package/types/commands/functions/layer/common.d.ts +0 -8
- package/types/commands/functions/layer/create.d.ts +0 -18
- package/types/commands/functions/layer/delete.d.ts +0 -18
- package/types/commands/functions/layer/download.d.ts +0 -18
- package/types/commands/functions/layer/index.d.ts +0 -7
- package/types/commands/functions/layer/list.d.ts +0 -19
- package/types/commands/functions/layer/sort.d.ts +0 -18
- package/types/commands/functions/list.d.ts +0 -14
- package/types/commands/functions/log.d.ts +0 -15
- package/types/commands/functions/run.d.ts +0 -17
- package/types/commands/functions/trigger-create.d.ts +0 -18
- package/types/commands/functions/trigger-delete.d.ts +0 -18
- package/types/commands/functions/version/index.d.ts +0 -2
- package/types/commands/functions/version/list.d.ts +0 -13
- package/types/commands/functions/version/publish.d.ts +0 -13
- package/types/commands/gateway/create.d.ts +0 -14
- package/types/commands/gateway/delete.d.ts +0 -14
- package/types/commands/gateway/domain.d.ts +0 -47
- package/types/commands/gateway/index.d.ts +0 -5
- package/types/commands/gateway/list.d.ts +0 -15
- package/types/commands/gateway/switch.d.ts +0 -31
- package/types/commands/helpers/index.d.ts +0 -3
- package/types/commands/helpers/init.d.ts +0 -22
- package/types/commands/helpers/new.d.ts +0 -17
- package/types/commands/helpers/open.d.ts +0 -11
- package/types/commands/hosting/hosting.d.ts +0 -66
- package/types/commands/hosting/index.d.ts +0 -1
- package/types/commands/index.d.ts +0 -22
- package/types/commands/lowcode/app.d.ts +0 -81
- package/types/commands/lowcode/comps.d.ts +0 -77
- package/types/commands/lowcode/index.d.ts +0 -2
- package/types/commands/lowcode/utils.d.ts +0 -9
- package/types/commands/pull/index.d.ts +0 -1
- package/types/commands/pull/pull.d.ts +0 -16
- package/types/commands/run/delete.d.ts +0 -13
- package/types/commands/run/image/common.d.ts +0 -8
- package/types/commands/run/image/delete.d.ts +0 -17
- package/types/commands/run/image/download.d.ts +0 -17
- package/types/commands/run/image/index.d.ts +0 -5
- package/types/commands/run/image/list.d.ts +0 -17
- package/types/commands/run/image/upload.d.ts +0 -17
- package/types/commands/run/index.d.ts +0 -5
- package/types/commands/run/list.d.ts +0 -13
- package/types/commands/run/service/config.d.ts +0 -14
- package/types/commands/run/service/deploy.d.ts +0 -13
- package/types/commands/run/service/index.d.ts +0 -4
- package/types/commands/run/service/list.d.ts +0 -13
- package/types/commands/run/service/update.d.ts +0 -13
- package/types/commands/run/standalonegateway/common.d.ts +0 -8
- package/types/commands/run/standalonegateway/create.d.ts +0 -17
- package/types/commands/run/standalonegateway/destroy.d.ts +0 -17
- package/types/commands/run/standalonegateway/index.d.ts +0 -5
- package/types/commands/run/standalonegateway/list.d.ts +0 -17
- package/types/commands/run/standalonegateway/package.d.ts +0 -17
- package/types/commands/run/standalonegateway/turn.d.ts +0 -17
- package/types/commands/run/version/common.d.ts +0 -8
- package/types/commands/run/version/create.d.ts +0 -17
- package/types/commands/run/version/delete.d.ts +0 -17
- package/types/commands/run/version/index.d.ts +0 -5
- package/types/commands/run/version/list.d.ts +0 -17
- package/types/commands/run/version/modify.d.ts +0 -17
- package/types/commands/run/version/update.d.ts +0 -17
- package/types/commands/runf/base.d.ts +0 -43
- package/types/commands/runf/index.d.ts +0 -1
- package/types/commands/self-update.d.ts +0 -24
- package/types/commands/smart.d.ts +0 -1
- package/types/commands/storage/index.d.ts +0 -1
- package/types/commands/storage/storage.d.ts +0 -106
- package/types/commands/third/index.d.ts +0 -1
- package/types/commands/third/thirdAttach.d.ts +0 -15
- package/types/commands/utils.d.ts +0 -28
- package/types/completion/index.d.ts +0 -4
- package/types/constant.d.ts +0 -71
- package/types/db/index.d.ts +0 -24
- package/types/decorators/captureError.d.ts +0 -1
- package/types/decorators/constants.d.ts +0 -11
- package/types/decorators/deprecate.d.ts +0 -4
- package/types/decorators/guard.d.ts +0 -5
- package/types/decorators/index.d.ts +0 -7
- package/types/decorators/injectParams.d.ts +0 -1
- package/types/decorators/params/common.d.ts +0 -4
- package/types/decorators/params/index.d.ts +0 -8
- package/types/env/domain.d.ts +0 -11
- package/types/env/index.d.ts +0 -12
- package/types/env/login.d.ts +0 -16
- package/types/error.d.ts +0 -20
- package/types/function/alias.d.ts +0 -3
- package/types/function/base.d.ts +0 -32
- package/types/function/code.d.ts +0 -8
- package/types/function/concurrency.d.ts +0 -4
- package/types/function/create.d.ts +0 -3
- package/types/function/delete.d.ts +0 -8
- package/types/function/index.d.ts +0 -11
- package/types/function/layer/attach.d.ts +0 -9
- package/types/function/layer/create.d.ts +0 -8
- package/types/function/layer/delete.d.ts +0 -5
- package/types/function/layer/download.d.ts +0 -7
- package/types/function/layer/index.d.ts +0 -7
- package/types/function/layer/list.d.ts +0 -10
- package/types/function/layer/sort.d.ts +0 -10
- package/types/function/trigger.d.ts +0 -5
- package/types/function/update.d.ts +0 -2
- package/types/function/version.d.ts +0 -3
- package/types/function/vpc.d.ts +0 -2
- package/types/gateway/index.d.ts +0 -18
- package/types/help.d.ts +0 -1
- package/types/hosting.d.ts +0 -35
- package/types/i18n/index.d.ts +0 -3
- package/types/index.d.ts +0 -4
- package/types/logger.d.ts +0 -3
- package/types/run/delete.d.ts +0 -2
- package/types/run/image/build.d.ts +0 -10
- package/types/run/image/delete.d.ts +0 -2
- package/types/run/image/index.d.ts +0 -4
- package/types/run/image/info.d.ts +0 -1
- package/types/run/image/list.d.ts +0 -3
- package/types/run/index.d.ts +0 -7
- package/types/run/list.d.ts +0 -2
- package/types/run/repo.d.ts +0 -5
- package/types/run/service/common.d.ts +0 -42
- package/types/run/service/config.d.ts +0 -23
- package/types/run/service/deployPackage.d.ts +0 -11
- package/types/run/service/index.d.ts +0 -6
- package/types/run/service/list.d.ts +0 -2
- package/types/run/service/showLogs.d.ts +0 -2
- package/types/run/service/update.d.ts +0 -3
- package/types/run/standalonegateway/create.d.ts +0 -2
- package/types/run/standalonegateway/destroy.d.ts +0 -2
- package/types/run/standalonegateway/index.d.ts +0 -5
- package/types/run/standalonegateway/list.d.ts +0 -2
- package/types/run/standalonegateway/package/index.d.ts +0 -1
- package/types/run/standalonegateway/package/list.d.ts +0 -2
- package/types/run/standalonegateway/turn/index.d.ts +0 -2
- package/types/run/standalonegateway/turn/off.d.ts +0 -2
- package/types/run/standalonegateway/turn/on.d.ts +0 -2
- package/types/run/version/create.d.ts +0 -10
- package/types/run/version/delete.d.ts +0 -2
- package/types/run/version/index.d.ts +0 -6
- package/types/run/version/list.d.ts +0 -2
- package/types/run/version/modify.d.ts +0 -2
- package/types/run/version/repo.d.ts +0 -10
- package/types/run/version/update.d.ts +0 -6
- package/types/storage.d.ts +0 -34
- package/types/third/index.d.ts +0 -1
- package/types/types.d.ts +0 -590
- package/types/utils/ai/banner.d.ts +0 -2
- package/types/utils/ai/claudeWindows.d.ts +0 -2
- package/types/utils/ai/config.d.ts +0 -89
- package/types/utils/ai/const.d.ts +0 -401
- package/types/utils/ai/ensureFiles.d.ts +0 -1
- package/types/utils/ai/env.d.ts +0 -2
- package/types/utils/ai/envLocalManager.d.ts +0 -23
- package/types/utils/ai/nodeVersion.d.ts +0 -2
- package/types/utils/ai/router.d.ts +0 -55
- package/types/utils/ai/setup.d.ts +0 -26
- package/types/utils/auth.d.ts +0 -3
- package/types/utils/checkTcbrEnv.d.ts +0 -3
- package/types/utils/cli-table.d.ts +0 -2
- package/types/utils/commonParamsCheck.d.ts +0 -3
- package/types/utils/config.d.ts +0 -27
- package/types/utils/debug-logger.d.ts +0 -1
- package/types/utils/dts.d.ts +0 -6
- package/types/utils/env.d.ts +0 -5
- package/types/utils/fs/del.d.ts +0 -1
- package/types/utils/fs/index.d.ts +0 -7
- package/types/utils/function-packer.d.ts +0 -18
- package/types/utils/index.d.ts +0 -22
- package/types/utils/log.d.ts +0 -22
- package/types/utils/mcp-config-modifier.d.ts +0 -7
- package/types/utils/net/cloud-api-request.d.ts +0 -9
- package/types/utils/net/credential.d.ts +0 -5
- package/types/utils/net/http-request.d.ts +0 -8
- package/types/utils/net/index.d.ts +0 -5
- package/types/utils/net/manager-service.d.ts +0 -4
- package/types/utils/net/proxy.d.ts +0 -1
- package/types/utils/notice.d.ts +0 -1
- package/types/utils/output/highlight.d.ts +0 -1
- package/types/utils/output/index.d.ts +0 -3
- package/types/utils/output/link.d.ts +0 -1
- package/types/utils/output/loading.d.ts +0 -18
- package/types/utils/parallel.d.ts +0 -11
- package/types/utils/platform/index.d.ts +0 -3
- package/types/utils/platform/mac.d.ts +0 -2
- package/types/utils/platform/os.d.ts +0 -2
- package/types/utils/platform/port.d.ts +0 -1
- package/types/utils/progress-bar.d.ts +0 -1
- package/types/utils/prompt/index.d.ts +0 -1
- package/types/utils/prompt/select.d.ts +0 -4
- package/types/utils/report.d.ts +0 -16
- package/types/utils/reporter/agree.d.ts +0 -1
- package/types/utils/reporter/download.d.ts +0 -1
- package/types/utils/reporter/index.d.ts +0 -3
- package/types/utils/reporter/usage.d.ts +0 -1
- package/types/utils/store/auth.d.ts +0 -8
- package/types/utils/store/common.d.ts +0 -2
- package/types/utils/store/config.d.ts +0 -8
- package/types/utils/store/db.d.ts +0 -17
- package/types/utils/store/index.d.ts +0 -5
- package/types/utils/store/usage.d.ts +0 -2
- package/types/utils/tcbrApi/callTcbrApi.d.ts +0 -1
- package/types/utils/tcbrApi/index.d.ts +0 -1
- package/types/utils/template-manager.d.ts +0 -27
- package/types/utils/template.d.ts +0 -8
- package/types/utils/tools/common.d.ts +0 -1
- package/types/utils/tools/encoding.d.ts +0 -1
- package/types/utils/tools/index.d.ts +0 -4
- package/types/utils/tools/object.d.ts +0 -1
- package/types/utils/tools/time.d.ts +0 -2
- package/types/utils/tools/uid.d.ts +0 -2
- package/types/utils/url.d.ts +0 -18
- package/types/utils/validator.d.ts +0 -9
|
@@ -1,458 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
-
});
|
|
33
|
-
};
|
|
34
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
|
-
};
|
|
37
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
-
exports.TemplateManager = void 0;
|
|
39
|
-
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
40
|
-
const path_1 = __importDefault(require("path"));
|
|
41
|
-
const simple_git_1 = require("simple-git");
|
|
42
|
-
const error_1 = require("../error");
|
|
43
|
-
const mcp_config_modifier_1 = require("./mcp-config-modifier");
|
|
44
|
-
const i18n_1 = require("../i18n");
|
|
45
|
-
const BUILTIN_TEMPLATES = {
|
|
46
|
-
miniprogram: {
|
|
47
|
-
url: 'https://static.cloudbase.net/cloudbase-examples/miniprogram-cloudbase-miniprogram-template.zip',
|
|
48
|
-
name: `${(0, i18n_1.t)('微信小程序')} + CloudBase`
|
|
49
|
-
},
|
|
50
|
-
react: {
|
|
51
|
-
url: 'https://static.cloudbase.net/cloudbase-examples/web-cloudbase-react-template.zip',
|
|
52
|
-
name: `${(0, i18n_1.t)('Web 应用')} - React + CloudBase`
|
|
53
|
-
},
|
|
54
|
-
vue: {
|
|
55
|
-
url: 'https://static.cloudbase.net/cloudbase-examples/web-cloudbase-vue-template.zip',
|
|
56
|
-
name: `${(0, i18n_1.t)('Web 应用')} - Vue + CloudBase`
|
|
57
|
-
},
|
|
58
|
-
uniapp: {
|
|
59
|
-
url: 'https://static.cloudbase.net/cloudbase-examples/universal-cloudbase-uniapp-template.zip',
|
|
60
|
-
name: `${(0, i18n_1.t)('跨端应用')} - UniApp + CloudBase`
|
|
61
|
-
},
|
|
62
|
-
rules: {
|
|
63
|
-
url: 'https://static.cloudbase.net/cloudbase-examples/web-cloudbase-project.zip',
|
|
64
|
-
name: `${(0, i18n_1.t)('AI 规则和配置')}`
|
|
65
|
-
}
|
|
66
|
-
};
|
|
67
|
-
class TemplateManager {
|
|
68
|
-
constructor() {
|
|
69
|
-
this.git = (0, simple_git_1.simpleGit)();
|
|
70
|
-
this.mcpConfigModifier = new mcp_config_modifier_1.MCPConfigModifier();
|
|
71
|
-
}
|
|
72
|
-
pullTemplate(source, options = {}, log) {
|
|
73
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
74
|
-
const targetPath = options.output || process.cwd();
|
|
75
|
-
const { force = false } = options;
|
|
76
|
-
yield fs_extra_1.default.ensureDir(targetPath);
|
|
77
|
-
const tempDir = path_1.default.join(process.cwd(), '.temp-template-' + Date.now());
|
|
78
|
-
try {
|
|
79
|
-
if (this.isBuiltinTemplate(source)) {
|
|
80
|
-
yield this.downloadBuiltinTemplateToTemp(source, tempDir, log);
|
|
81
|
-
}
|
|
82
|
-
else if (this.isZipUrl(source)) {
|
|
83
|
-
yield this.downloadZipTemplateToTemp(source, tempDir, log);
|
|
84
|
-
}
|
|
85
|
-
else if (this.isGitUrl(source)) {
|
|
86
|
-
const gitInfo = this.parseGitUrl(source);
|
|
87
|
-
yield this.downloadGitTemplateToTemp(gitInfo, tempDir, log);
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
throw new error_1.CloudBaseError((0, i18n_1.t)('不支持的模板来源: {{source}}', { source: typeof source === 'string' ? source : JSON.stringify(source) }));
|
|
91
|
-
}
|
|
92
|
-
yield this.copyFromTempToTarget(tempDir, targetPath, force, log);
|
|
93
|
-
log.info((0, i18n_1.t)('✅ 模板拉取完成: {{targetPath}}', { targetPath }));
|
|
94
|
-
}
|
|
95
|
-
finally {
|
|
96
|
-
yield fs_extra_1.default.remove(tempDir);
|
|
97
|
-
}
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
isBuiltinTemplate(source) {
|
|
101
|
-
return Object.keys(BUILTIN_TEMPLATES).includes(source);
|
|
102
|
-
}
|
|
103
|
-
isZipUrl(source) {
|
|
104
|
-
console.log('zip source', source);
|
|
105
|
-
if (!source || typeof source !== 'string') {
|
|
106
|
-
return false;
|
|
107
|
-
}
|
|
108
|
-
if (!(source.startsWith('http://') || source.startsWith('https://'))) {
|
|
109
|
-
return false;
|
|
110
|
-
}
|
|
111
|
-
try {
|
|
112
|
-
const url = new URL(source);
|
|
113
|
-
const pathname = url.pathname.toLowerCase();
|
|
114
|
-
return pathname.endsWith('.zip');
|
|
115
|
-
}
|
|
116
|
-
catch (error) {
|
|
117
|
-
return source.toLowerCase().endsWith('.zip');
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
isGitUrl(source) {
|
|
121
|
-
if (!source || typeof source !== 'string') {
|
|
122
|
-
return false;
|
|
123
|
-
}
|
|
124
|
-
return source.startsWith('http') || source.startsWith('git@') ||
|
|
125
|
-
source.includes('github.com') || source.includes('gitee.com') || source.includes('cnb.cool');
|
|
126
|
-
}
|
|
127
|
-
parseGitUrl(url) {
|
|
128
|
-
const githubMatch = url.match(/https?:\/\/github\.com\/([^\/]+)\/([^\/]+)(?:\/tree\/([^\/]+)\/(.+))?/);
|
|
129
|
-
if (githubMatch) {
|
|
130
|
-
return {
|
|
131
|
-
platform: 'github',
|
|
132
|
-
owner: githubMatch[1],
|
|
133
|
-
repo: githubMatch[2].replace('.git', ''),
|
|
134
|
-
branch: githubMatch[3] || 'master',
|
|
135
|
-
subpath: githubMatch[4]
|
|
136
|
-
};
|
|
137
|
-
}
|
|
138
|
-
const giteeMatch = url.match(/https?:\/\/gitee\.com\/([^\/]+)\/([^\/]+)(?:\/tree\/([^\/]+)\/(.+))?/);
|
|
139
|
-
if (giteeMatch) {
|
|
140
|
-
return {
|
|
141
|
-
platform: 'gitee',
|
|
142
|
-
owner: giteeMatch[1],
|
|
143
|
-
repo: giteeMatch[2].replace('.git', ''),
|
|
144
|
-
branch: giteeMatch[3] || 'master',
|
|
145
|
-
subpath: giteeMatch[4]
|
|
146
|
-
};
|
|
147
|
-
}
|
|
148
|
-
const cnbMatchWithDash = url.match(/https?:\/\/cnb\.cool\/(.+?)\/-\/tree\/([^\/]+)\/(.+)$/);
|
|
149
|
-
if (cnbMatchWithDash) {
|
|
150
|
-
const pathParts = cnbMatchWithDash[1].split('/').filter(p => p.length > 0);
|
|
151
|
-
if (pathParts.length >= 2) {
|
|
152
|
-
return {
|
|
153
|
-
platform: 'cnb',
|
|
154
|
-
owner: pathParts[0],
|
|
155
|
-
repo: pathParts.slice(1).join('/'),
|
|
156
|
-
branch: cnbMatchWithDash[2] || 'main',
|
|
157
|
-
subpath: cnbMatchWithDash[3]
|
|
158
|
-
};
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
const cnbMatch = url.match(/https?:\/\/cnb\.cool\/(.+?)(?:\/tree\/([^\/]+)\/(.+))?$/);
|
|
162
|
-
if (cnbMatch) {
|
|
163
|
-
const pathParts = cnbMatch[1].split('/').filter(p => p.length > 0);
|
|
164
|
-
if (pathParts.length >= 2) {
|
|
165
|
-
return {
|
|
166
|
-
platform: 'cnb',
|
|
167
|
-
owner: pathParts[0],
|
|
168
|
-
repo: pathParts.slice(1).join('/'),
|
|
169
|
-
branch: cnbMatch[2] || 'main',
|
|
170
|
-
subpath: cnbMatch[3]
|
|
171
|
-
};
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
const sshMatch = url.match(/git@([^:]+):([^\/]+)\/([^\/]+)\.git/);
|
|
175
|
-
if (sshMatch) {
|
|
176
|
-
return {
|
|
177
|
-
platform: sshMatch[1] === 'github.com' ? 'github' : (sshMatch[1] === 'cnb.cool' ? 'cnb' : 'gitee'),
|
|
178
|
-
owner: sshMatch[2],
|
|
179
|
-
repo: sshMatch[3],
|
|
180
|
-
branch: 'main'
|
|
181
|
-
};
|
|
182
|
-
}
|
|
183
|
-
throw new error_1.CloudBaseError((0, i18n_1.t)('无法解析 Git URL: {{url}}', { url }));
|
|
184
|
-
}
|
|
185
|
-
buildGitUrl(gitInfo) {
|
|
186
|
-
if (gitInfo.platform === 'github') {
|
|
187
|
-
return `https://github.com/${gitInfo.owner}/${gitInfo.repo}.git`;
|
|
188
|
-
}
|
|
189
|
-
else if (gitInfo.platform === 'gitee') {
|
|
190
|
-
return `https://gitee.com/${gitInfo.owner}/${gitInfo.repo}.git`;
|
|
191
|
-
}
|
|
192
|
-
else if (gitInfo.platform === 'cnb') {
|
|
193
|
-
return `https://cnb.cool/${gitInfo.owner}/${gitInfo.repo}.git`;
|
|
194
|
-
}
|
|
195
|
-
throw new error_1.CloudBaseError((0, i18n_1.t)('不支持的 Git 平台: {{platform}}', { platform: gitInfo.platform }));
|
|
196
|
-
}
|
|
197
|
-
cloneWithSubpathOptimized(gitUrl, tempDir, gitInfo, log) {
|
|
198
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
199
|
-
try {
|
|
200
|
-
yield this.git.clone(gitUrl, tempDir, [
|
|
201
|
-
'--depth', '1',
|
|
202
|
-
'--single-branch',
|
|
203
|
-
'--branch', gitInfo.branch,
|
|
204
|
-
'--filter=blob:none'
|
|
205
|
-
]);
|
|
206
|
-
const subpathFull = path_1.default.join(tempDir, gitInfo.subpath);
|
|
207
|
-
if (!(yield fs_extra_1.default.pathExists(subpathFull))) {
|
|
208
|
-
throw new error_1.CloudBaseError((0, i18n_1.t)('子目录不存在: {{subpath}}', { subpath: gitInfo.subpath }));
|
|
209
|
-
}
|
|
210
|
-
const tempContentDir = path_1.default.join(tempDir, '.temp-content-' + Date.now());
|
|
211
|
-
yield fs_extra_1.default.move(subpathFull, tempContentDir);
|
|
212
|
-
const tempFiles = yield fs_extra_1.default.readdir(tempDir);
|
|
213
|
-
for (const file of tempFiles) {
|
|
214
|
-
if (file !== path_1.default.basename(tempContentDir)) {
|
|
215
|
-
yield fs_extra_1.default.remove(path_1.default.join(tempDir, file));
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
const contentFiles = yield fs_extra_1.default.readdir(tempContentDir);
|
|
219
|
-
for (const file of contentFiles) {
|
|
220
|
-
yield fs_extra_1.default.move(path_1.default.join(tempContentDir, file), path_1.default.join(tempDir, file));
|
|
221
|
-
}
|
|
222
|
-
yield fs_extra_1.default.remove(tempContentDir);
|
|
223
|
-
}
|
|
224
|
-
catch (error) {
|
|
225
|
-
throw new error_1.CloudBaseError((0, i18n_1.t)('克隆子目录失败: {{error}}', { error: error.message }), { original: error });
|
|
226
|
-
}
|
|
227
|
-
});
|
|
228
|
-
}
|
|
229
|
-
cloneWithSubpath(gitUrl, tempDir, gitInfo, log) {
|
|
230
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
231
|
-
try {
|
|
232
|
-
yield this.git.clone(gitUrl, tempDir);
|
|
233
|
-
const tempGit = (0, simple_git_1.simpleGit)(tempDir);
|
|
234
|
-
yield tempGit.checkout(gitInfo.branch);
|
|
235
|
-
const subpathFull = path_1.default.join(tempDir, gitInfo.subpath);
|
|
236
|
-
if (!(yield fs_extra_1.default.pathExists(subpathFull))) {
|
|
237
|
-
throw new error_1.CloudBaseError((0, i18n_1.t)('子目录不存在: {{subpath}}', { subpath: gitInfo.subpath }));
|
|
238
|
-
}
|
|
239
|
-
const tempContentDir = path_1.default.join(tempDir, '.temp-content-' + Date.now());
|
|
240
|
-
yield fs_extra_1.default.move(subpathFull, tempContentDir);
|
|
241
|
-
const tempFiles = yield fs_extra_1.default.readdir(tempDir);
|
|
242
|
-
for (const file of tempFiles) {
|
|
243
|
-
if (file !== path_1.default.basename(tempContentDir)) {
|
|
244
|
-
yield fs_extra_1.default.remove(path_1.default.join(tempDir, file));
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
const contentFiles = yield fs_extra_1.default.readdir(tempContentDir);
|
|
248
|
-
for (const file of contentFiles) {
|
|
249
|
-
yield fs_extra_1.default.move(path_1.default.join(tempContentDir, file), path_1.default.join(tempDir, file));
|
|
250
|
-
}
|
|
251
|
-
yield fs_extra_1.default.remove(tempContentDir);
|
|
252
|
-
}
|
|
253
|
-
catch (error) {
|
|
254
|
-
throw new error_1.CloudBaseError((0, i18n_1.t)('克隆子目录失败: {{error}}', { error: error.message }), { original: error });
|
|
255
|
-
}
|
|
256
|
-
});
|
|
257
|
-
}
|
|
258
|
-
downloadBuiltinTemplateToTemp(templateId, tempDir, log) {
|
|
259
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
260
|
-
const template = BUILTIN_TEMPLATES[templateId];
|
|
261
|
-
if (!template) {
|
|
262
|
-
throw new error_1.CloudBaseError((0, i18n_1.t)('未知的内置模板: {{templateId}}', { templateId }));
|
|
263
|
-
}
|
|
264
|
-
log.info((0, i18n_1.t)('📦 正在下载 {{templateName}} 模板到临时目录...', { templateName: template.name }));
|
|
265
|
-
try {
|
|
266
|
-
const { downloadAndExtractRemoteZip } = yield Promise.resolve().then(() => __importStar(require('./tools/common')));
|
|
267
|
-
yield downloadAndExtractRemoteZip(template.url, tempDir);
|
|
268
|
-
log.info((0, i18n_1.t)('✅ {{templateName}} 模板下载完成到临时目录', { templateName: template.name }));
|
|
269
|
-
}
|
|
270
|
-
catch (error) {
|
|
271
|
-
throw new error_1.CloudBaseError((0, i18n_1.t)('下载内置模板失败: {{error}}', { error: error.message }), { original: error });
|
|
272
|
-
}
|
|
273
|
-
});
|
|
274
|
-
}
|
|
275
|
-
downloadZipTemplateToTemp(zipUrl, tempDir, log) {
|
|
276
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
277
|
-
log.info((0, i18n_1.t)('📦 正在下载 zip 文件模板到临时目录: {{zipUrl}}', { zipUrl }));
|
|
278
|
-
try {
|
|
279
|
-
const { downloadAndExtractRemoteZip } = yield Promise.resolve().then(() => __importStar(require('./tools/common')));
|
|
280
|
-
yield downloadAndExtractRemoteZip(zipUrl, tempDir);
|
|
281
|
-
log.info((0, i18n_1.t)('✅ zip 文件模板下载完成到临时目录'));
|
|
282
|
-
}
|
|
283
|
-
catch (error) {
|
|
284
|
-
throw new error_1.CloudBaseError((0, i18n_1.t)('下载 zip 文件模板失败: {{error}}', { error: error.message }), { original: error });
|
|
285
|
-
}
|
|
286
|
-
});
|
|
287
|
-
}
|
|
288
|
-
downloadGitTemplateToTemp(gitInfo, tempDir, log) {
|
|
289
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
290
|
-
const gitUrl = this.buildGitUrl(gitInfo);
|
|
291
|
-
log.info((0, i18n_1.t)('📦 正在从 {{platform}} 下载模板到临时目录...', { platform: gitInfo.platform }));
|
|
292
|
-
try {
|
|
293
|
-
if (gitInfo.subpath) {
|
|
294
|
-
yield this.cloneWithSubpathOptimized(gitUrl, tempDir, gitInfo, log);
|
|
295
|
-
}
|
|
296
|
-
else {
|
|
297
|
-
yield this.git.clone(gitUrl, tempDir, ['--depth', '1', '--single-branch', '--branch', gitInfo.branch]);
|
|
298
|
-
}
|
|
299
|
-
log.info((0, i18n_1.t)('✅ Git 模板下载完成到临时目录'));
|
|
300
|
-
}
|
|
301
|
-
catch (error) {
|
|
302
|
-
throw new error_1.CloudBaseError((0, i18n_1.t)('Git 模板下载失败: {{error}}', { error: error.message }), { original: error });
|
|
303
|
-
}
|
|
304
|
-
});
|
|
305
|
-
}
|
|
306
|
-
copyFromTempToTarget(tempDir, targetPath, force, log) {
|
|
307
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
308
|
-
log.info((0, i18n_1.t)('📦 正在从临时目录复制到目标目录 {{targetPath}}...', { targetPath }));
|
|
309
|
-
try {
|
|
310
|
-
if (force) {
|
|
311
|
-
if (yield fs_extra_1.default.pathExists(targetPath)) {
|
|
312
|
-
const files = yield fs_extra_1.default.readdir(targetPath);
|
|
313
|
-
if (files.length > 0) {
|
|
314
|
-
log.info((0, i18n_1.t)('⚠️ 使用 --force 参数,将覆盖目标目录中的现有文件'));
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
yield this.copyFilesWithOverwrite(tempDir, targetPath, log);
|
|
318
|
-
}
|
|
319
|
-
else {
|
|
320
|
-
if (yield fs_extra_1.default.pathExists(targetPath)) {
|
|
321
|
-
const files = yield fs_extra_1.default.readdir(targetPath);
|
|
322
|
-
if (files.length > 0) {
|
|
323
|
-
log.info((0, i18n_1.t)('ℹ️ 目标目录不为空,将跳过已存在的文件,只复制新文件'));
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
yield this.copyFilesSkipExisting(tempDir, targetPath, log);
|
|
327
|
-
}
|
|
328
|
-
log.info((0, i18n_1.t)('✅ 模板复制完成'));
|
|
329
|
-
try {
|
|
330
|
-
log.debug((0, i18n_1.t)('🔧 开始调用 MCP 配置修改器...'));
|
|
331
|
-
yield this.mcpConfigModifier.modifyMCPConfigs(targetPath, log);
|
|
332
|
-
log.debug((0, i18n_1.t)('✅ MCP 配置修改器调用完成'));
|
|
333
|
-
}
|
|
334
|
-
catch (error) {
|
|
335
|
-
log.warn((0, i18n_1.t)('⚠️ MCP 配置修改失败: {{error}}', { error: error.message }));
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
catch (error) {
|
|
339
|
-
throw new error_1.CloudBaseError((0, i18n_1.t)('复制模板失败: {{error}}', { error: error.message }), { original: error });
|
|
340
|
-
}
|
|
341
|
-
});
|
|
342
|
-
}
|
|
343
|
-
copyFilesWithOverwrite(sourceDir, targetDir, log) {
|
|
344
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
345
|
-
let copiedCount = 0;
|
|
346
|
-
let overwrittenCount = 0;
|
|
347
|
-
const copyFile = (srcPath, destPath) => __awaiter(this, void 0, void 0, function* () {
|
|
348
|
-
try {
|
|
349
|
-
const stat = yield fs_extra_1.default.stat(srcPath);
|
|
350
|
-
if (stat.isDirectory()) {
|
|
351
|
-
yield fs_extra_1.default.ensureDir(destPath);
|
|
352
|
-
const entries = yield fs_extra_1.default.readdir(srcPath, { withFileTypes: true });
|
|
353
|
-
const copyPromises = entries.map(entry => {
|
|
354
|
-
const entrySrcPath = path_1.default.join(srcPath, entry.name);
|
|
355
|
-
const entryDestPath = path_1.default.join(destPath, entry.name);
|
|
356
|
-
return copyFile(entrySrcPath, entryDestPath);
|
|
357
|
-
});
|
|
358
|
-
const chunks = this.chunkArray(copyPromises, 10);
|
|
359
|
-
for (const chunk of chunks) {
|
|
360
|
-
yield Promise.all(chunk);
|
|
361
|
-
}
|
|
362
|
-
}
|
|
363
|
-
else {
|
|
364
|
-
const exists = yield fs_extra_1.default.pathExists(destPath);
|
|
365
|
-
yield fs_extra_1.default.ensureDir(path_1.default.dirname(destPath));
|
|
366
|
-
yield fs_extra_1.default.copy(srcPath, destPath);
|
|
367
|
-
const relativePath = path_1.default.relative(sourceDir, srcPath);
|
|
368
|
-
if (exists) {
|
|
369
|
-
overwrittenCount++;
|
|
370
|
-
}
|
|
371
|
-
else {
|
|
372
|
-
copiedCount++;
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
}
|
|
376
|
-
catch (error) {
|
|
377
|
-
log.warn((0, i18n_1.t)('⚠️ 复制失败: {{path}} - {{error}}', { path: path_1.default.relative(sourceDir, srcPath), error: error.message }));
|
|
378
|
-
}
|
|
379
|
-
});
|
|
380
|
-
const entries = yield fs_extra_1.default.readdir(sourceDir, { withFileTypes: true });
|
|
381
|
-
const copyPromises = entries.map(entry => {
|
|
382
|
-
const srcPath = path_1.default.join(sourceDir, entry.name);
|
|
383
|
-
const destPath = path_1.default.join(targetDir, entry.name);
|
|
384
|
-
return copyFile(srcPath, destPath);
|
|
385
|
-
});
|
|
386
|
-
const chunks = this.chunkArray(copyPromises, 5);
|
|
387
|
-
for (const chunk of chunks) {
|
|
388
|
-
yield Promise.all(chunk);
|
|
389
|
-
}
|
|
390
|
-
log.info((0, i18n_1.t)('📊 复制统计: {{copiedCount}} 个新文件复制, {{overwrittenCount}} 个文件覆盖', { copiedCount, overwrittenCount }));
|
|
391
|
-
});
|
|
392
|
-
}
|
|
393
|
-
copyFilesSkipExisting(sourceDir, targetDir, log) {
|
|
394
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
395
|
-
let copiedCount = 0;
|
|
396
|
-
let skippedCount = 0;
|
|
397
|
-
const copyFile = (srcPath, destPath) => __awaiter(this, void 0, void 0, function* () {
|
|
398
|
-
try {
|
|
399
|
-
const stat = yield fs_extra_1.default.stat(srcPath);
|
|
400
|
-
if (stat.isDirectory()) {
|
|
401
|
-
yield fs_extra_1.default.ensureDir(destPath);
|
|
402
|
-
const entries = yield fs_extra_1.default.readdir(srcPath, { withFileTypes: true });
|
|
403
|
-
const copyPromises = entries.map(entry => {
|
|
404
|
-
const entrySrcPath = path_1.default.join(srcPath, entry.name);
|
|
405
|
-
const entryDestPath = path_1.default.join(destPath, entry.name);
|
|
406
|
-
return copyFile(entrySrcPath, entryDestPath);
|
|
407
|
-
});
|
|
408
|
-
const chunks = this.chunkArray(copyPromises, 10);
|
|
409
|
-
for (const chunk of chunks) {
|
|
410
|
-
yield Promise.all(chunk);
|
|
411
|
-
}
|
|
412
|
-
}
|
|
413
|
-
else {
|
|
414
|
-
if (!(yield fs_extra_1.default.pathExists(destPath))) {
|
|
415
|
-
yield fs_extra_1.default.ensureDir(path_1.default.dirname(destPath));
|
|
416
|
-
yield fs_extra_1.default.copy(srcPath, destPath);
|
|
417
|
-
const relativePath = path_1.default.relative(sourceDir, srcPath);
|
|
418
|
-
copiedCount++;
|
|
419
|
-
}
|
|
420
|
-
else {
|
|
421
|
-
const relativePath = path_1.default.relative(sourceDir, srcPath);
|
|
422
|
-
skippedCount++;
|
|
423
|
-
}
|
|
424
|
-
}
|
|
425
|
-
}
|
|
426
|
-
catch (error) {
|
|
427
|
-
log.warn((0, i18n_1.t)('⚠️ 复制失败: {{path}} - {{error}}', { path: path_1.default.relative(sourceDir, srcPath), error: error.message }));
|
|
428
|
-
}
|
|
429
|
-
});
|
|
430
|
-
const entries = yield fs_extra_1.default.readdir(sourceDir, { withFileTypes: true });
|
|
431
|
-
const copyPromises = entries.map(entry => {
|
|
432
|
-
const srcPath = path_1.default.join(sourceDir, entry.name);
|
|
433
|
-
const destPath = path_1.default.join(targetDir, entry.name);
|
|
434
|
-
return copyFile(srcPath, destPath);
|
|
435
|
-
});
|
|
436
|
-
const chunks = this.chunkArray(copyPromises, 5);
|
|
437
|
-
for (const chunk of chunks) {
|
|
438
|
-
yield Promise.all(chunk);
|
|
439
|
-
}
|
|
440
|
-
log.info((0, i18n_1.t)('📊 复制统计: {{copiedCount}} 个文件复制完成, {{skippedCount}} 个文件跳过', { copiedCount, skippedCount }));
|
|
441
|
-
});
|
|
442
|
-
}
|
|
443
|
-
chunkArray(array, chunkSize) {
|
|
444
|
-
const chunks = [];
|
|
445
|
-
for (let i = 0; i < array.length; i += chunkSize) {
|
|
446
|
-
chunks.push(array.slice(i, i + chunkSize));
|
|
447
|
-
}
|
|
448
|
-
return chunks;
|
|
449
|
-
}
|
|
450
|
-
getBuiltinTemplates() {
|
|
451
|
-
const templates = {};
|
|
452
|
-
for (const [key, template] of Object.entries(BUILTIN_TEMPLATES)) {
|
|
453
|
-
templates[key] = template.name;
|
|
454
|
-
}
|
|
455
|
-
return templates;
|
|
456
|
-
}
|
|
457
|
-
}
|
|
458
|
-
exports.TemplateManager = TemplateManager;
|
package/lib/utils/template.js
DELETED
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.initProjectConfig = exports.extractTemplate = exports.downloadTemplate = void 0;
|
|
16
|
-
const fs_1 = __importDefault(require("fs"));
|
|
17
|
-
const path_1 = __importDefault(require("path"));
|
|
18
|
-
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
19
|
-
const enquirer_1 = require("enquirer");
|
|
20
|
-
const toolbox_1 = require("@cloudbase/toolbox");
|
|
21
|
-
const error_1 = require("../error");
|
|
22
|
-
const net_1 = require("./net");
|
|
23
|
-
const log_1 = require("./log");
|
|
24
|
-
const fs_2 = require("./fs");
|
|
25
|
-
const output_1 = require("./output");
|
|
26
|
-
const reporter_1 = require("./reporter");
|
|
27
|
-
const i18n_1 = require("../i18n");
|
|
28
|
-
const listUrl = 'https://tcli.service.tcloudbase.com/templates';
|
|
29
|
-
const getTemplateAddress = (templatePath) => `https://7463-tcli-1258016615.tcb.qcloud.la/cloudbase-templates/${templatePath}.zip`;
|
|
30
|
-
function downloadTemplate(options = {}) {
|
|
31
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
32
|
-
let { templateUri, appName, newProject, projectPath = process.cwd() } = options;
|
|
33
|
-
const templates = yield (0, output_1.execWithLoading)(() => (0, net_1.fetch)(listUrl), {
|
|
34
|
-
startTip: (0, i18n_1.t)('获取应用模板列表中')
|
|
35
|
-
});
|
|
36
|
-
let templateName;
|
|
37
|
-
let tempateId;
|
|
38
|
-
if (templateUri) {
|
|
39
|
-
tempateId = templateUri;
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
const { selectTemplateName } = yield (0, enquirer_1.prompt)({
|
|
43
|
-
type: 'select',
|
|
44
|
-
name: 'selectTemplateName',
|
|
45
|
-
message: (0, i18n_1.t)('请选择应用模板'),
|
|
46
|
-
choices: templates.map((item) => item.name)
|
|
47
|
-
});
|
|
48
|
-
templateName = selectTemplateName;
|
|
49
|
-
}
|
|
50
|
-
const selectedTemplate = templateName
|
|
51
|
-
? templates.find((item) => item.name === templateName)
|
|
52
|
-
: templates.find((item) => item.path === tempateId);
|
|
53
|
-
if (!selectedTemplate) {
|
|
54
|
-
log_1.logger.info((0, i18n_1.t)('模板 `{{template}}` 不存在', { template: templateName || tempateId }));
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
if (newProject) {
|
|
58
|
-
if (!appName) {
|
|
59
|
-
const { projectName } = yield (0, enquirer_1.prompt)({
|
|
60
|
-
type: 'input',
|
|
61
|
-
name: 'projectName',
|
|
62
|
-
message: (0, i18n_1.t)('请输入项目名称'),
|
|
63
|
-
initial: selectedTemplate.path
|
|
64
|
-
});
|
|
65
|
-
appName = projectName;
|
|
66
|
-
}
|
|
67
|
-
projectPath = path_1.default.join(process.cwd(), appName);
|
|
68
|
-
if ((0, fs_2.checkFullAccess)(projectPath)) {
|
|
69
|
-
const { cover } = yield (0, enquirer_1.prompt)({
|
|
70
|
-
type: 'confirm',
|
|
71
|
-
name: 'cover',
|
|
72
|
-
message: (0, i18n_1.t)('已存在同名文件夹:{{name}},是否覆盖?', { name: appName }),
|
|
73
|
-
initial: false
|
|
74
|
-
});
|
|
75
|
-
if (!cover) {
|
|
76
|
-
throw new error_1.CloudBaseError((0, i18n_1.t)('操作终止!'));
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
fs_extra_1.default.removeSync(projectPath);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
yield (0, output_1.execWithLoading)(() => __awaiter(this, void 0, void 0, function* () {
|
|
84
|
-
yield (0, reporter_1.templateDownloadReport)(selectedTemplate.path, selectedTemplate.name);
|
|
85
|
-
yield extractTemplate(projectPath, selectedTemplate.path, selectedTemplate.url);
|
|
86
|
-
}), {
|
|
87
|
-
startTip: (0, i18n_1.t)('下载文件中')
|
|
88
|
-
});
|
|
89
|
-
return projectPath;
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
exports.downloadTemplate = downloadTemplate;
|
|
93
|
-
function extractTemplate(projectPath, templatePath, remoteUrl) {
|
|
94
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
95
|
-
const url = remoteUrl || getTemplateAddress(templatePath);
|
|
96
|
-
return (0, net_1.fetchStream)(url).then((res) => __awaiter(this, void 0, void 0, function* () {
|
|
97
|
-
if (!res) {
|
|
98
|
-
throw new error_1.CloudBaseError((0, i18n_1.t)('请求异常'));
|
|
99
|
-
}
|
|
100
|
-
if (res.status !== 200) {
|
|
101
|
-
throw new error_1.CloudBaseError((0, i18n_1.t)('未找到文件'));
|
|
102
|
-
}
|
|
103
|
-
yield (0, toolbox_1.unzipStream)(res.body, projectPath);
|
|
104
|
-
}));
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
exports.extractTemplate = extractTemplate;
|
|
108
|
-
function initProjectConfig(envId, region, projectPath = process.cwd()) {
|
|
109
|
-
var _a;
|
|
110
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
111
|
-
let filepath = (_a = (yield (0, toolbox_1.searchConfig)(projectPath))) === null || _a === void 0 ? void 0 : _a.filepath;
|
|
112
|
-
if (!filepath) {
|
|
113
|
-
fs_1.default.writeFileSync(path_1.default.join(projectPath, 'cloudbaserc.json'), JSON.stringify({
|
|
114
|
-
envId,
|
|
115
|
-
region,
|
|
116
|
-
version: '2.0',
|
|
117
|
-
$schema: 'https://framework-1258016615.tcloudbaseapp.com/schema/latest.json'
|
|
118
|
-
}));
|
|
119
|
-
}
|
|
120
|
-
else {
|
|
121
|
-
const configContent = fs_1.default.readFileSync(filepath).toString();
|
|
122
|
-
fs_1.default.writeFileSync(filepath, configContent.replace('{{envId}}', envId));
|
|
123
|
-
const configPath = filepath || path_1.default.join(projectPath, 'cloudbaserc.json');
|
|
124
|
-
const parser = new toolbox_1.ConfigParser({
|
|
125
|
-
configPath
|
|
126
|
-
});
|
|
127
|
-
parser.update('region', region);
|
|
128
|
-
}
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
exports.initProjectConfig = initProjectConfig;
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.downloadAndExtractRemoteZip = void 0;
|
|
16
|
-
const toolbox_1 = require("@cloudbase/toolbox");
|
|
17
|
-
const path_1 = __importDefault(require("path"));
|
|
18
|
-
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
19
|
-
const unzipper_1 = __importDefault(require("unzipper"));
|
|
20
|
-
const i18n_1 = require("../../i18n");
|
|
21
|
-
function downloadAndExtractRemoteZip(downloadUrl, targetPath) {
|
|
22
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
23
|
-
const downloadResponse = yield (0, toolbox_1.fetchStream)(downloadUrl);
|
|
24
|
-
if (!downloadResponse.ok) {
|
|
25
|
-
throw new Error((0, i18n_1.t)('下载失败,状态码: {{status}}', { status: downloadResponse.status }));
|
|
26
|
-
}
|
|
27
|
-
if (!downloadResponse.body) {
|
|
28
|
-
throw new Error((0, i18n_1.t)('下载响应中没有数据流'));
|
|
29
|
-
}
|
|
30
|
-
const dirPath = path_1.default.resolve(targetPath);
|
|
31
|
-
yield fs_extra_1.default.ensureDir(dirPath);
|
|
32
|
-
yield new Promise((resolve, reject) => {
|
|
33
|
-
let totalEntries = 0;
|
|
34
|
-
let processedEntries = 0;
|
|
35
|
-
downloadResponse
|
|
36
|
-
.body.pipe(unzipper_1.default.Parse())
|
|
37
|
-
.on('error', reject)
|
|
38
|
-
.on('entry', (entry) => __awaiter(this, void 0, void 0, function* () {
|
|
39
|
-
const filePath = path_1.default.join(dirPath, entry.path);
|
|
40
|
-
totalEntries++;
|
|
41
|
-
try {
|
|
42
|
-
yield fs_extra_1.default.ensureDir(path_1.default.dirname(filePath));
|
|
43
|
-
if (entry.type === 'Directory') {
|
|
44
|
-
yield fs_extra_1.default.ensureDir(filePath);
|
|
45
|
-
processedEntries++;
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
entry
|
|
49
|
-
.pipe(fs_extra_1.default.createWriteStream(filePath))
|
|
50
|
-
.on('error', reject)
|
|
51
|
-
.on('finish', () => {
|
|
52
|
-
processedEntries++;
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
catch (err) {
|
|
57
|
-
reject(err);
|
|
58
|
-
}
|
|
59
|
-
}))
|
|
60
|
-
.on('close', () => {
|
|
61
|
-
const checkProcessed = () => {
|
|
62
|
-
if (processedEntries === totalEntries) {
|
|
63
|
-
resolve('');
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
setTimeout(checkProcessed, 10);
|
|
67
|
-
}
|
|
68
|
-
};
|
|
69
|
-
checkProcessed();
|
|
70
|
-
});
|
|
71
|
-
});
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
exports.downloadAndExtractRemoteZip = downloadAndExtractRemoteZip;
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.md5 = void 0;
|
|
7
|
-
const crypto_1 = __importDefault(require("crypto"));
|
|
8
|
-
function md5(str = '') {
|
|
9
|
-
const hash = crypto_1.default.createHash('md5');
|
|
10
|
-
hash.update(str);
|
|
11
|
-
return hash.digest('hex');
|
|
12
|
-
}
|
|
13
|
-
exports.md5 = md5;
|