@lovrabet/rabetbase-cli 2.5.3-beta.3 → 2.5.3-beta.4
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/lib/api/api-doc.js +1 -1
- package/lib/api/api-group.js +1 -1
- package/lib/api/fetch-model-list.js +1 -1
- package/lib/api/generate-api-file.js +1 -1
- package/lib/api/generate-sdk-config-file.js +1 -1
- package/lib/api/legacy-api-file.js +1 -1
- package/lib/api/model-registry-file.js +1 -1
- package/lib/api/model-registry-scaffold.js +1 -1
- package/lib/api/model-source.js +1 -1
- package/lib/auth/auth-server-ui.js +1 -1
- package/lib/auth/auth-server.js +1 -1
- package/lib/auth/constant.js +1 -1
- package/lib/auth/get-cookie.js +1 -1
- package/lib/auth/get-session-user.js +1 -1
- package/lib/auth/is-session-valid.js +1 -1
- package/lib/auth/login-success-html.js +1 -1
- package/lib/auth/logout.js +1 -1
- package/lib/cli-flags.js +1 -1
- package/lib/cli.js +1 -1
- package/lib/commands/api/generate.js +1 -1
- package/lib/commands/api/index.js +1 -1
- package/lib/commands/api/list.js +1 -1
- package/lib/commands/api/pull.js +1 -1
- package/lib/commands/api/shared.js +1 -1
- package/lib/commands/app/index.js +1 -1
- package/lib/commands/app/list.js +1 -1
- package/lib/commands/app/members-list.js +1 -1
- package/lib/commands/app/remote-directory.js +1 -1
- package/lib/commands/app/shared.js +1 -1
- package/lib/commands/app-config/delete.js +1 -1
- package/lib/commands/app-config/get.js +1 -1
- package/lib/commands/app-config/index.js +1 -1
- package/lib/commands/app-config/list.js +1 -1
- package/lib/commands/app-config/set.js +1 -1
- package/lib/commands/app-config/shared.js +1 -1
- package/lib/commands/auth/index.js +1 -1
- package/lib/commands/bff/create.js +1 -1
- package/lib/commands/bff/delete.js +1 -1
- package/lib/commands/bff/detail.js +1 -1
- package/lib/commands/bff/index.js +1 -1
- package/lib/commands/bff/list.js +1 -1
- package/lib/commands/bff/logs.js +1 -1
- package/lib/commands/bff/pull.js +1 -1
- package/lib/commands/bff/push.js +1 -1
- package/lib/commands/bff/status.js +1 -1
- package/lib/commands/cli-skill/index.js +1 -1
- package/lib/commands/cli-update.js +1 -1
- package/lib/commands/codegen/index.js +1 -1
- package/lib/commands/codegen/sdk.js +1 -1
- package/lib/commands/codegen/sql.js +1 -1
- package/lib/commands/common/app-registry.js +1 -1
- package/lib/commands/common/app-selector.js +1 -1
- package/lib/commands/common/async-task.js +1 -1
- package/lib/commands/common/dry-run.js +1 -1
- package/lib/commands/common/flags.js +1 -1
- package/lib/commands/common/local-file.js +1 -1
- package/lib/commands/common/validate.js +1 -1
- package/lib/commands/config/delete.js +1 -1
- package/lib/commands/config/get.js +1 -1
- package/lib/commands/config/index.js +1 -1
- package/lib/commands/config/init.js +1 -1
- package/lib/commands/config/list.js +1 -1
- package/lib/commands/config/set.js +1 -1
- package/lib/commands/config/shared.js +1 -1
- package/lib/commands/dataset/batch-design.js +1 -1
- package/lib/commands/dataset/business-group-update.js +1 -1
- package/lib/commands/dataset/business-groups.js +1 -1
- package/lib/commands/dataset/capability.js +1 -1
- package/lib/commands/dataset/cross-relation-create.js +1 -1
- package/lib/commands/dataset/cross-relation-delete.js +1 -1
- package/lib/commands/dataset/cross-relation-list.js +1 -1
- package/lib/commands/dataset/cross-relation-shared.js +1 -1
- package/lib/commands/dataset/cross-relation-update.js +1 -1
- package/lib/commands/dataset/delete.js +1 -1
- package/lib/commands/dataset/detail.js +1 -1
- package/lib/commands/dataset/extend-update.js +1 -1
- package/lib/commands/dataset/field-restore.js +1 -1
- package/lib/commands/dataset/field-update.js +1 -1
- package/lib/commands/dataset/generate.js +1 -1
- package/lib/commands/dataset/index.js +1 -1
- package/lib/commands/dataset/list.js +1 -1
- package/lib/commands/dataset/operations.js +1 -1
- package/lib/commands/dataset/relation-audit.js +1 -1
- package/lib/commands/dataset/relation-create.js +1 -1
- package/lib/commands/dataset/relation-delete.js +1 -1
- package/lib/commands/dataset/relation-shared.js +1 -1
- package/lib/commands/dataset/relation-update.js +1 -1
- package/lib/commands/dataset/relations.js +1 -1
- package/lib/commands/dataset/rename.js +1 -1
- package/lib/commands/dataset/restore.js +1 -1
- package/lib/commands/dataset/user-deleted-field-list.js +1 -1
- package/lib/commands/db/analysis-batching.js +1 -1
- package/lib/commands/db/analyze-batch-plan.js +1 -1
- package/lib/commands/db/analyze-cancel.js +1 -1
- package/lib/commands/db/analyze-start.js +1 -1
- package/lib/commands/db/analyze-status.js +1 -1
- package/lib/commands/db/create.js +1 -1
- package/lib/commands/db/delete.js +1 -1
- package/lib/commands/db/detail.js +1 -1
- package/lib/commands/db/diff-refresh-start.js +1 -1
- package/lib/commands/db/diff-refresh-status.js +1 -1
- package/lib/commands/db/diff.js +1 -1
- package/lib/commands/db/index.js +1 -1
- package/lib/commands/db/list.js +1 -1
- package/lib/commands/db/shared.js +1 -1
- package/lib/commands/db/table-diff-shared.js +1 -1
- package/lib/commands/db/tables.js +1 -1
- package/lib/commands/db/test.js +1 -1
- package/lib/commands/db/update.js +1 -1
- package/lib/commands/deployment/index.js +1 -1
- package/lib/commands/deployment/sync-all.js +1 -1
- package/lib/commands/deployment/sync-jobs.js +1 -1
- package/lib/commands/deployment/sync-status.js +1 -1
- package/lib/commands/doctor.js +1 -1
- package/lib/commands/file/index.js +1 -1
- package/lib/commands/flow/create.js +1 -1
- package/lib/commands/flow/detail.js +1 -1
- package/lib/commands/flow/index.js +1 -1
- package/lib/commands/flow/list.js +1 -1
- package/lib/commands/flow/publish.js +1 -1
- package/lib/commands/flow/runtime-resources-shared.js +1 -1
- package/lib/commands/flow/runtime-role-list.js +1 -1
- package/lib/commands/flow/runtime-role-user-list.js +1 -1
- package/lib/commands/flow/runtime-user-search.js +1 -1
- package/lib/commands/flow/shared.js +1 -1
- package/lib/commands/flow/update.js +1 -1
- package/lib/commands/flow/validate.js +1 -1
- package/lib/commands/instant-api-policy/current.js +1 -1
- package/lib/commands/instant-api-policy/index.js +1 -1
- package/lib/commands/instant-api-policy/init.js +1 -1
- package/lib/commands/instant-api-policy/publish.js +1 -1
- package/lib/commands/instant-api-policy/pull.js +1 -1
- package/lib/commands/instant-api-policy/revision.js +1 -1
- package/lib/commands/instant-api-policy/revisions.js +1 -1
- package/lib/commands/instant-api-policy/rollback.js +1 -1
- package/lib/commands/instant-api-policy/shared.js +1 -1
- package/lib/commands/instant-api-policy/validate.js +1 -1
- package/lib/commands/issue/index.js +1 -1
- package/lib/commands/issue/nudge.js +1 -1
- package/lib/commands/issue/report.js +1 -1
- package/lib/commands/issue/shared.js +1 -1
- package/lib/commands/kb/create.js +1 -1
- package/lib/commands/kb/delete.js +1 -1
- package/lib/commands/kb/detail.js +1 -1
- package/lib/commands/kb/index.js +1 -1
- package/lib/commands/kb/list.js +1 -1
- package/lib/commands/kb/search.js +1 -1
- package/lib/commands/kb/shared.js +1 -1
- package/lib/commands/kb/update.js +1 -1
- package/lib/commands/logs/index.js +1 -1
- package/lib/commands/menu/asset-update.js +1 -1
- package/lib/commands/menu/delete.js +1 -1
- package/lib/commands/menu/external-link-create.js +1 -1
- package/lib/commands/menu/external-link-update.js +1 -1
- package/lib/commands/menu/group-create.js +1 -1
- package/lib/commands/menu/group-update.js +1 -1
- package/lib/commands/menu/index.js +1 -1
- package/lib/commands/menu/list.js +1 -1
- package/lib/commands/menu/move.js +1 -1
- package/lib/commands/menu/regroup-start.js +1 -1
- package/lib/commands/menu/rename.js +1 -1
- package/lib/commands/menu/shared/compare-table.js +1 -1
- package/lib/commands/menu/shared/delete-plan.js +1 -1
- package/lib/commands/menu/shared/facts.js +1 -1
- package/lib/commands/menu/shared/index.js +1 -1
- package/lib/commands/menu/shared/inquirer.js +1 -1
- package/lib/commands/menu/shared/local-pages.js +1 -1
- package/lib/commands/menu/shared/logic.js +1 -1
- package/lib/commands/menu/shared/mutations.js +1 -1
- package/lib/commands/menu/shared/service.js +1 -1
- package/lib/commands/menu/shared/sync-core.js +1 -1
- package/lib/commands/menu/shared/update-core.js +1 -1
- package/lib/commands/menu/shared/valid-url.js +1 -1
- package/lib/commands/menu/sync.js +1 -1
- package/lib/commands/menu/visibility-update.js +1 -1
- package/lib/commands/notification/config-create.js +1 -1
- package/lib/commands/notification/config-delete.js +1 -1
- package/lib/commands/notification/config-list.js +1 -1
- package/lib/commands/notification/config-update.js +1 -1
- package/lib/commands/notification/index.js +1 -1
- package/lib/commands/notification/shared.js +1 -1
- package/lib/commands/ocr/index.js +1 -1
- package/lib/commands/page/create.js +1 -1
- package/lib/commands/page/custom/detail.js +1 -1
- package/lib/commands/page/custom/list.js +1 -1
- package/lib/commands/page/custom/publish.js +1 -1
- package/lib/commands/page/custom/shared.js +1 -1
- package/lib/commands/page/custom/syntax.js +1 -1
- package/lib/commands/page/custom/update.js +1 -1
- package/lib/commands/page/data-list-status.js +1 -1
- package/lib/commands/page/generate-start.js +1 -1
- package/lib/commands/page/generate-status.js +1 -1
- package/lib/commands/page/index.js +1 -1
- package/lib/commands/page/pull.js +1 -1
- package/lib/commands/page/push.js +1 -1
- package/lib/commands/page/relation-audit.js +1 -1
- package/lib/commands/page/restore.js +1 -1
- package/lib/commands/page/shared.js +1 -1
- package/lib/commands/page/sync.js +1 -1
- package/lib/commands/project/api-architecture-upgrade.js +1 -1
- package/lib/commands/project/create/enhanced-guided-create.js +1 -1
- package/lib/commands/project/create/format-elapsed.js +1 -1
- package/lib/commands/project/create/main.js +1 -1
- package/lib/commands/project/create/materialize-project-template.js +1 -1
- package/lib/commands/project/create/project-name.js +1 -1
- package/lib/commands/project/create/project-template-archive.js +1 -1
- package/lib/commands/project/create/project-template-path.js +1 -1
- package/lib/commands/project/create/use-copy-project-template.js +1 -1
- package/lib/commands/project/create/use-format-code.js +1 -1
- package/lib/commands/project/create/use-install-dependencies.js +1 -1
- package/lib/commands/project/domain-routing-sync.js +1 -1
- package/lib/commands/project/index.js +1 -1
- package/lib/commands/project/upgrade.js +1 -1
- package/lib/commands/registry.js +1 -1
- package/lib/commands/role/delete.js +1 -1
- package/lib/commands/role/detail.js +1 -1
- package/lib/commands/role/index.js +1 -1
- package/lib/commands/role/list.js +1 -1
- package/lib/commands/role/shared.js +1 -1
- package/lib/commands/role/update.js +1 -1
- package/lib/commands/role/user-add.js +1 -1
- package/lib/commands/role/user-remove.js +1 -1
- package/lib/commands/role/user-resolve.js +1 -1
- package/lib/commands/rule/get.js +1 -1
- package/lib/commands/rule/index.js +1 -1
- package/lib/commands/rule/list.js +1 -1
- package/lib/commands/rule/set.js +1 -1
- package/lib/commands/rule/shared.js +1 -1
- package/lib/commands/run/index.js +1 -1
- package/lib/commands/schema.js +1 -1
- package/lib/commands/sql/create.js +1 -1
- package/lib/commands/sql/delete.js +1 -1
- package/lib/commands/sql/detail.js +1 -1
- package/lib/commands/sql/exec.js +1 -1
- package/lib/commands/sql/index.js +1 -1
- package/lib/commands/sql/list.js +1 -1
- package/lib/commands/sql/pull.js +1 -1
- package/lib/commands/sql/push.js +1 -1
- package/lib/commands/sql/shared.js +1 -1
- package/lib/commands/sql/status.js +1 -1
- package/lib/commands/sql/validate.js +1 -1
- package/lib/commands/task/index.js +1 -1
- package/lib/commands/task/status.js +1 -1
- package/lib/commands/tenant/index.js +1 -1
- package/lib/commands/tenant/members-list.js +1 -1
- package/lib/commands/tenant/shared.js +1 -1
- package/lib/commands/user-account/dingding-sandbox-bind.js +1 -1
- package/lib/commands/user-account/index.js +1 -1
- package/lib/commands/workspace/add.js +1 -1
- package/lib/commands/workspace/index.js +1 -1
- package/lib/commands/workspace/remove.js +1 -1
- package/lib/config/domain-config.js +1 -1
- package/lib/config/project-domain-routing.js +1 -1
- package/lib/config/region-config.js +1 -1
- package/lib/config/schema.js +1 -1
- package/lib/constant/cdn.d.ts +5 -3
- package/lib/constant/cdn.js +1 -1
- package/lib/constant/cli.js +1 -1
- package/lib/constant/defaults.js +1 -1
- package/lib/constant/domain.js +1 -1
- package/lib/constant/env.js +1 -1
- package/lib/constant/output.js +1 -1
- package/lib/constant/paths.js +1 -1
- package/lib/constant/region.js +1 -1
- package/lib/constant/risk.js +1 -1
- package/lib/constant/routing-profile.js +1 -1
- package/lib/context/app-resolver.js +1 -1
- package/lib/context/auth-resolver.js +1 -1
- package/lib/context/config-loader.js +1 -1
- package/lib/context.js +1 -1
- package/lib/core/alias-resolver.js +1 -1
- package/lib/core/api-client.js +1 -1
- package/lib/core/bff/config.js +1 -1
- package/lib/core/bff/file-system.js +1 -1
- package/lib/core/bff/hash.js +1 -1
- package/lib/core/bff/hook-directory.js +1 -1
- package/lib/core/bff/lock.js +1 -1
- package/lib/core/bff/utils.js +1 -1
- package/lib/core/cross-db-relation.js +1 -1
- package/lib/core/db-resolver.js +1 -1
- package/lib/core/flow-config.js +1 -1
- package/lib/core/instant-api-policy/config.js +1 -1
- package/lib/core/kb-search-client.js +1 -1
- package/lib/core/page/file-system.js +1 -1
- package/lib/core/page/hash.js +1 -1
- package/lib/core/page/lock.js +1 -1
- package/lib/core/page/lr-smart-jsx.js +1 -1
- package/lib/core/sql-index-auditor.js +1 -1
- package/lib/core/sql-sync/config.js +1 -1
- package/lib/core/sql-sync/file-system.js +1 -1
- package/lib/core/sql-sync/hash.js +1 -1
- package/lib/core/sql-sync/lock.js +1 -1
- package/lib/core/sql-sync/utils.js +1 -1
- package/lib/core/sql-validator.js +1 -1
- package/lib/errors.js +1 -1
- package/lib/framework/build-all-flags.js +1 -1
- package/lib/framework/error-output.js +1 -1
- package/lib/framework/explicit-yes.js +1 -1
- package/lib/framework/flags.js +1 -1
- package/lib/framework/help.js +1 -1
- package/lib/framework/index.js +1 -1
- package/lib/framework/output.js +1 -1
- package/lib/framework/response.js +1 -1
- package/lib/framework/runner-alias.js +1 -1
- package/lib/framework/runner.js +1 -1
- package/lib/framework/schema-export.js +1 -1
- package/lib/framework/supported-flags.js +1 -1
- package/lib/framework/types.js +1 -1
- package/lib/generated/build-info.d.ts +4 -4
- package/lib/generated/build-info.js +1 -1
- package/lib/generated/official-routing.js +1 -1
- package/lib/generated/routing-contract.js +1 -1
- package/lib/help.js +1 -1
- package/lib/postinstall.js +1 -1
- package/lib/runtime/confirmation.js +1 -1
- package/lib/runtime/event.js +1 -1
- package/lib/runtime/index.js +1 -1
- package/lib/runtime/queue.js +1 -1
- package/lib/runtime/resolve.js +1 -1
- package/lib/skills/builtin-skill.js +1 -1
- package/lib/skills/main.js +1 -1
- package/lib/skills/npx-skills-add.js +1 -1
- package/lib/skills/skill-presence.js +1 -1
- package/lib/telemetry/cli-command-trace.js +1 -1
- package/lib/telemetry/cli-help-trace.js +1 -1
- package/lib/telemetry/ensure-cli-otel-config.js +1 -1
- package/lib/telemetry/register-otel-exit-shutdown.js +1 -1
- package/lib/telemetry/send-cli-trace-log.js +1 -1
- package/lib/telemetry/send-platform-issue-collect-log.js +1 -1
- package/lib/utils/ai_config.js +1 -1
- package/lib/utils/apply-jq-filter.js +1 -1
- package/lib/utils/cdn-config.js +1 -1
- package/lib/utils/check-sdk-version.js +1 -1
- package/lib/utils/cli-version-check.js +1 -1
- package/lib/utils/cli-version-policy.d.ts +7 -0
- package/lib/utils/cli-version-policy.js +1 -1
- package/lib/utils/config.js +1 -1
- package/lib/utils/entity-with-id.js +1 -1
- package/lib/utils/file-utils.js +1 -1
- package/lib/utils/guides-cdn.js +1 -1
- package/lib/utils/http-client.js +1 -1
- package/lib/utils/is-non-interactive.js +1 -1
- package/lib/utils/logger.js +1 -1
- package/lib/utils/params.js +1 -1
- package/lib/utils/platform.js +1 -1
- package/lib/utils/sleep.js +1 -1
- package/lib/utils/template-replacer.js +1 -1
- package/lib/utils/update-notice.js +1 -1
- package/lib/utils/version.js +1 -1
- package/lib/utils/with-active-cookie.js +1 -1
- package/lib/utils/write-cli-side-channel.js +1 -1
- package/package.json +3 -1
- package/skills/rabetbase/SKILL.md +7 -5
- package/skills/rabetbase/guides/backend-function.md +5 -1
- package/skills/rabetbase/guides/bff-creation-workflow.md +3 -1
- package/skills/rabetbase/guides/cross-database-bff.md +70 -0
- package/skills/rabetbase/guides/data-api-guidelines.md +35 -33
- package/skills/rabetbase/guides/sql-creation-workflow.md +2 -0
- package/skills/rabetbase/references/rabetbase-dataset-cross-relations.md +5 -1
- package/skills/rabetbase.manifest.json +4 -3
- package/templates/README.md +41 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a34_0x3a1b86=a34_0x5297;(function(_0x590be2,_0x3a0751){const _0x3dd8c9=a34_0x5297,_0x5c984e=_0x590be2();while(!![]){try{const _0x4a9d18=parseInt(_0x3dd8c9(0xd4))/0x1+parseInt(_0x3dd8c9(0xd2))/0x2+-parseInt(_0x3dd8c9(0xe9))/0x3+parseInt(_0x3dd8c9(0xd5))/0x4+parseInt(_0x3dd8c9(0xf0))/0x5*(parseInt(_0x3dd8c9(0xfb))/0x6)+-parseInt(_0x3dd8c9(0xc6))/0x7*(parseInt(_0x3dd8c9(0xfc))/0x8)+parseInt(_0x3dd8c9(0xf3))/0x9*(-parseInt(_0x3dd8c9(0xc2))/0xa);if(_0x4a9d18===_0x3a0751)break;else _0x5c984e['push'](_0x5c984e['shift']());}catch(_0x3d7703){_0x5c984e['push'](_0x5c984e['shift']());}}}(a34_0x3891,0xcacf8));import{access,readFile}from'node:fs/promises';import{CliErrors}from'../../errors.js';export const KEY_ARG={'name':a34_0x3a1b86(0xe1),'description':a34_0x3a1b86(0xbf),'required':!![]};export const VALUE_ARG={'name':a34_0x3a1b86(0xc0),'description':a34_0x3a1b86(0xdc),'required':![]};export const TAGS_FLAG={'name':a34_0x3a1b86(0xca),'type':'string','description':a34_0x3a1b86(0xfa)};export const STDIN_FLAG={'name':'stdin','type':a34_0x3a1b86(0xe6),'description':a34_0x3a1b86(0xbe),'default':![]};function a34_0x3891(){const _0xb8e44f=['Failed\x20to\x20','Reveal\x20the\x20sensitive\x20value\x20for\x20this\x20single\x20key','validation','error','path','22645mUPgmQ','reveal','env','27414pyafhN','Environment\x20variable\x20is\x20not\x20set:\x20','kind','hasValue','length','App\x20config\x20tags\x20length\x20cannot\x20exceed\x2032.','setEncoding','Config\x20tags\x20for\x20filtering/display\x20metadata','1032FVqmGH','32TIOdEq','file','join','str','appCode:\x20','utf8','args','data','Read\x20config\x20value\x20from\x20stdin','Runtime\x20app-config\x20key','value','gmtModified','3730tTwxWw','Missing\x20app-config\x20value\x20source.','argument','name','976409BdxEtr','before','gmtCreate','appCode','tags','stdin','\x20app\x20config.','operation','flag','Use\x20one\x20of:\x20positional\x20<value>,\x20--stdin,\x20--from-env\x20<NAME>,\x20or\x20--file\x20<path>.','from-env','App\x20config\x20key\x20length\x20cannot\x20exceed\x20256.','1254374ypjeoj','App\x20config\x20value\x20source\x20is\x20ambiguous.','1480153OwBJIa','278188LCcelA','Use\x20exactly\x20one\x20of:\x20positional\x20<value>,\x20--stdin,\x20--from-env\x20<NAME>,\x20or\x20--file\x20<path>.','apiError','string','warnings','Value\x20was\x20provided\x20as\x20a\x20command\x20argument;\x20prefer\x20--stdin,\x20--from-env,\x20or\x20--file\x20for\x20secrets.','trim','Sensitive\x20config\x20value.\x20Prefer\x20--stdin,\x20--from-env,\x20or\x20--file\x20for\x20secrets.','Value\x20file\x20is\x20not\x20readable:\x20','method','end','dryRun','key','url','bool','defineProperties','key:\x20','boolean','push','after','1293171iATQly','slice'];a34_0x3891=function(){return _0xb8e44f;};return a34_0x3891();}export const FROM_ENV_FLAG={'name':'from-env','type':a34_0x3a1b86(0xd8),'description':'Read\x20config\x20value\x20from\x20the\x20named\x20environment\x20variable'};export const REVEAL_FLAG={'name':a34_0x3a1b86(0xf1),'type':'boolean','description':a34_0x3a1b86(0xec),'default':![]};export function readKeyArg(_0x4dd56a){const _0x30ed30=a34_0x3a1b86,_0x4008da=_0x4dd56a['args'][0x0]?.[_0x30ed30(0xdb)]()??'';return validateKey(_0x4008da),_0x4008da;}export function readOptionalTags(_0x2bc0df){const _0x4ddf6c=a34_0x3a1b86,_0x49e847=_0x2bc0df[_0x4ddf6c(0xff)](_0x4ddf6c(0xca))['trim']();if(!_0x49e847)return undefined;if(_0x49e847[_0x4ddf6c(0xf7)]>0x20)throw CliErrors['validation'](_0x4ddf6c(0xf8));return _0x49e847;}function a34_0x5297(_0x2ca249,_0x3c899f){_0x2ca249=_0x2ca249-0xbe;const _0x3891ef=a34_0x3891();let _0x52974c=_0x3891ef[_0x2ca249];return _0x52974c;}export function validateKey(_0x59b40d){const _0x5b59a3=a34_0x3a1b86;if(!_0x59b40d)throw CliErrors[_0x5b59a3(0xed)]('Missing\x20app-config\x20key.');if(_0x59b40d['length']>0x100)throw CliErrors[_0x5b59a3(0xed)](_0x5b59a3(0xd1));}export function projectAppConfig(_0x47384b,_0x16c570){const _0x9ede22=a34_0x3a1b86,_0x53316e=_0x47384b[_0x9ede22(0xc0)]!==undefined&&_0x47384b[_0x9ede22(0xc0)]!==null&&_0x47384b['value']!=='',_0x5ee509={'appCode':_0x47384b[_0x9ede22(0xc9)],'key':_0x47384b['key'],'tags':_0x47384b[_0x9ede22(0xca)]??undefined,'hasValue':_0x53316e,'valueRedacted':_0x53316e&&!_0x16c570?.[_0x9ede22(0xf1)],'gmtCreate':_0x47384b[_0x9ede22(0xc8)],'gmtModified':_0x47384b[_0x9ede22(0xc1)]};return _0x16c570?.[_0x9ede22(0xf1)]&&(_0x5ee509['value']=_0x47384b[_0x9ede22(0xc0)]??'',_0x5ee509['valueRedacted']=![]),_0x5ee509;}export function plannedAppConfig(_0x59bd39){const _0x2d8d95=a34_0x3a1b86,_0x3c9e96=_0x59bd39[_0x2d8d95(0xf6)]??!![];return{'appCode':_0x59bd39[_0x2d8d95(0xc9)],'key':_0x59bd39['key'],'tags':_0x59bd39[_0x2d8d95(0xca)]??undefined,'hasValue':_0x3c9e96,'valueRedacted':_0x3c9e96};}export function buildMutationData(_0x107e3c){const _0x2c4fff=a34_0x3a1b86;return{'operation':_0x107e3c[_0x2c4fff(0xcd)],'selector':{'appCode':_0x107e3c[_0x2c4fff(0xc9)],'key':_0x107e3c[_0x2c4fff(0xe1)]},'before':_0x107e3c[_0x2c4fff(0xc7)],'after':_0x107e3c[_0x2c4fff(0xe8)],'dryRun':_0x107e3c[_0x2c4fff(0xe0)],'warnings':_0x107e3c[_0x2c4fff(0xd9)]??[]};}export async function withAppConfigApiBoundary(_0x36f1fb,_0xaa6cf0,_0x1749c9){const _0x694144=a34_0x3a1b86;try{return await _0x1749c9();}catch{const _0x4c8e84=[_0x694144(0x100)+_0xaa6cf0['appCode']];if(_0xaa6cf0['key'])_0x4c8e84[_0x694144(0xe7)](_0x694144(0xe5)+_0xaa6cf0[_0x694144(0xe1)]);_0x4c8e84['push']('value\x20is\x20redacted');throw CliErrors[_0x694144(0xd7)](_0x694144(0xeb)+_0x36f1fb+_0x694144(0xcc),_0x4c8e84[_0x694144(0xfe)](';\x20')+'.');}}export function asAppConfigDryRunResult(_0x562721,_0x17138a){const _0x3cc7bf=a34_0x3a1b86;return Object[_0x3cc7bf(0xe4)](_0x562721,{'method':{'value':_0x17138a[_0x3cc7bf(0xde)],'enumerable':![]},'url':{'value':_0x17138a[_0x3cc7bf(0xe2)],'enumerable':![]}});}export function assertSingleValueSource(_0x222a71){const _0x46288b=a34_0x3a1b86,_0x38ecff=[];_0x222a71[_0x46288b(0x102)]['length']>0x1&&_0x38ecff[_0x46288b(0xe7)]({'kind':_0x46288b(0xc4),'value':_0x222a71[_0x46288b(0x102)][_0x46288b(0xea)](0x1)[_0x46288b(0xfe)]('\x20')});const _0xcf8397=_0x222a71[_0x46288b(0xce)]('value');_0xcf8397!==undefined&&_0xcf8397!==null&&_0x38ecff['push']({'kind':_0x46288b(0xc4),'value':String(_0xcf8397)});_0x222a71[_0x46288b(0xe3)]('stdin')&&_0x38ecff[_0x46288b(0xe7)]({'kind':_0x46288b(0xcb)});const _0x78bb62=_0x222a71[_0x46288b(0xff)](_0x46288b(0xd0))[_0x46288b(0xdb)]();_0x78bb62&&_0x38ecff[_0x46288b(0xe7)]({'kind':_0x46288b(0xf2),'name':_0x78bb62});const _0xa89652=_0x222a71[_0x46288b(0xff)](_0x46288b(0xfd))['trim']();_0xa89652&&_0x38ecff[_0x46288b(0xe7)]({'kind':_0x46288b(0xfd),'path':_0xa89652});if(_0x38ecff[_0x46288b(0xf7)]===0x0)throw CliErrors['validation'](_0x46288b(0xc3),_0x46288b(0xcf));if(_0x38ecff['length']>0x1)throw CliErrors['validation'](_0x46288b(0xd3),_0x46288b(0xd6));return _0x38ecff[0x0];}export async function assertValueSourceReadable(_0x3f1d68){const _0x25e86e=a34_0x3a1b86;if(_0x3f1d68[_0x25e86e(0xf5)]===_0x25e86e(0xf2)&&!(_0x3f1d68[_0x25e86e(0xc5)]in process.env))throw CliErrors[_0x25e86e(0xed)]('Environment\x20variable\x20is\x20not\x20set:\x20'+_0x3f1d68[_0x25e86e(0xc5)]);if(_0x3f1d68[_0x25e86e(0xf5)]===_0x25e86e(0xfd))try{await access(_0x3f1d68['path']);}catch{throw CliErrors['validation'](_0x25e86e(0xdd)+_0x3f1d68[_0x25e86e(0xef)]);}}export async function readAppConfigValue(_0x3f9a06){const _0x297856=a34_0x3a1b86,_0x23f834=assertSingleValueSource(_0x3f9a06),_0x468e2a=[];if(_0x23f834['kind']===_0x297856(0xc4))return _0x468e2a[_0x297856(0xe7)](_0x297856(0xda)),{'value':_0x23f834[_0x297856(0xc0)]??'','source':_0x23f834['kind'],'warnings':_0x468e2a};if(_0x23f834[_0x297856(0xf5)]===_0x297856(0xcb))return{'value':await readStdin(),'source':_0x23f834[_0x297856(0xf5)],'warnings':_0x468e2a};if(_0x23f834[_0x297856(0xf5)]===_0x297856(0xf2)){if(!(_0x23f834[_0x297856(0xc5)]in process.env))throw CliErrors['validation'](_0x297856(0xf4)+_0x23f834[_0x297856(0xc5)]);return{'value':process.env[_0x23f834.name]??'','source':_0x23f834[_0x297856(0xf5)],'warnings':_0x468e2a};}return{'value':await readFile(_0x23f834[_0x297856(0xef)],_0x297856(0x101)),'source':_0x23f834['kind'],'warnings':_0x468e2a};}function readStdin(){return new Promise((_0x789b83,_0x411ac0)=>{const _0x5c22a4=a34_0x5297;let _0x4774e6='';process[_0x5c22a4(0xcb)][_0x5c22a4(0xf9)](_0x5c22a4(0x101)),process[_0x5c22a4(0xcb)]['on'](_0x5c22a4(0x103),_0x4a751=>{_0x4774e6+=_0x4a751;}),process[_0x5c22a4(0xcb)]['once'](_0x5c22a4(0xdf),()=>_0x789b83(_0x4774e6)),process[_0x5c22a4(0xcb)]['once'](_0x5c22a4(0xee),_0x411ac0);});}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
function a35_0x3d90(){const _0x3889d8=['843821vJlmBS','1680MRcZak','143418lcYOsw','logout','✓\x20Logged\x20out','Skip\x20login\x20confirmation\x20and\x20start\x20browser\x20auth\x20immediately','log','52885rfYInS','nonInteractive','auth','285114vQUDzN','!\x20Not\x20logged\x20in','40rpSGHz','Clear\x20login\x20session','16YLpOaG','bool','login','2510peTAFP','Login\x20via\x20browser','31568uXIHGd','yes','66mLuZlg','boolean','write','../../auth/auth-server-ui.js','384597ueZOmu'];a35_0x3d90=function(){return _0x3889d8;};return a35_0x3d90();}const a35_0x19ba80=a35_0x46e7;(function(_0x360e5f,_0x1b0c75){const _0x52f185=a35_0x46e7,_0x532079=_0x360e5f();while(!![]){try{const _0x1bc8cd=parseInt(_0x52f185(0x9c))/0x1+-parseInt(_0x52f185(0x94))/0x2+parseInt(_0x52f185(0xa7))/0x3*(-parseInt(_0x52f185(0xa5))/0x4)+-parseInt(_0x52f185(0xa3))/0x5*(parseInt(_0x52f185(0x93))/0x6)+parseInt(_0x52f185(0x99))/0x7+-parseInt(_0x52f185(0xa0))/0x8*(-parseInt(_0x52f185(0x91))/0x9)+parseInt(_0x52f185(0x9e))/0xa*(parseInt(_0x52f185(0x92))/0xb);if(_0x1bc8cd===_0x1b0c75)break;else _0x532079['push'](_0x532079['shift']());}catch(_0x300da5){_0x532079['push'](_0x532079['shift']());}}}(a35_0x3d90,0x4904e));function a35_0x46e7(_0x45475b,_0x1868c1){_0x45475b=_0x45475b-0x8f;const _0x3d9010=a35_0x3d90();let _0x46e75c=_0x3d9010[_0x45475b];return _0x46e75c;}import{unlinkSync,existsSync}from'node:fs';import{cookieFile}from'../../auth/constant.js';export const authDefinitions=[{'service':a35_0x19ba80(0x9b),'command':a35_0x19ba80(0xa2),'description':a35_0x19ba80(0xa4),'risk':a35_0x19ba80(0x8f),'requiresAuth':![],'requiresAppCode':![],'hasFormat':![],'flags':[{'name':a35_0x19ba80(0xa6),'type':a35_0x19ba80(0xa8),'description':a35_0x19ba80(0x97),'default':![]}],async 'execute'(_0x27644f){const _0x2bb15c=a35_0x19ba80,{runAuthServer:_0x165515}=await import(_0x2bb15c(0x90));return await _0x165515({'autoYes':_0x27644f[_0x2bb15c(0xa1)](_0x2bb15c(0xa6)),'nonInteractive':_0x27644f[_0x2bb15c(0x9a)]}),{'ok':!![]};}},{'service':a35_0x19ba80(0x9b),'command':a35_0x19ba80(0x95),'description':a35_0x19ba80(0x9f),'risk':a35_0x19ba80(0x8f),'requiresAuth':![],'requiresAppCode':![],'hasFormat':![],'flags':[],async 'execute'(_0x24f49e){const _0x37e78a=a35_0x19ba80;return existsSync(cookieFile)?(unlinkSync(cookieFile),console[_0x37e78a(0x98)](_0x37e78a(0x96))):console[_0x37e78a(0x98)](_0x37e78a(0x9d)),{'ok':!![]};}}];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const a36_0x5721ca=a36_0x2943;(function(_0x42e405,_0x2523ce){const _0x41fc2f=a36_0x2943,_0x199da4=_0x42e405();while(!![]){try{const _0x170b2a=-parseInt(_0x41fc2f(0x111))/0x1*(-parseInt(_0x41fc2f(0x118))/0x2)+parseInt(_0x41fc2f(0x101))/0x3+parseInt(_0x41fc2f(0xe5))/0x4+-parseInt(_0x41fc2f(0xc8))/0x5+-parseInt(_0x41fc2f(0xe7))/0x6*(parseInt(_0x41fc2f(0x100))/0x7)+parseInt(_0x41fc2f(0xe4))/0x8+-parseInt(_0x41fc2f(0xc6))/0x9;if(_0x170b2a===_0x2523ce)break;else _0x199da4['push'](_0x199da4['shift']());}catch(_0x242a91){_0x199da4['push'](_0x199da4['shift']());}}}(a36_0x5796,0xdbdd0));import{createInterface}from'node:readline';import{mkdir,writeFile}from'node:fs/promises';import{dirname,join}from'node:path';function a36_0x2943(_0x4b9af8,_0x405716){_0x4b9af8=_0x4b9af8-0xbe;const _0x5796d7=a36_0x5796();let _0x2943e=_0x5796d7[_0x4b9af8];return _0x2943e;}import{listDatasets,listBffDatasetOperations}from'../../core/api-client.js';import{loadAliasMap,resolveAlias}from'../../core/alias-resolver.js';import{resolveApiModelSource}from'../../api/model-source.js';import{loadBffProjectConfig}from'../../core/bff/config.js';function a36_0x5796(){const _0x453cd3=['6393248RbHQpS','Function\x20name\x20(valid\x20JS\x20identifier)','372WDABiI','\x20\x20Enter\x20a\x20number\x20between\x201\x20and\x20','\x0a\x20*/\x0aexport\x20default\x20async\x20function\x20','create','Created\x20','--function-node\x20is\x20required\x20for\x20HOOK\x20in\x20non-interactive\x20mode.','parseInt','datasetcode','\x0a\x20*\x20[参数字段]\x20按实际请求体为\x20params.<字段名>\x20补充\x20JSDoc\x20参数标签;无字段时仅保留根参数\x0a\x20*\x20[异常说明]\x20无;显式抛出异常时补充异常类型与触发条件\x0a\x20*\x0a\x20*\x20@param\x20{Object}\x20params\x20HTTP\x20请求体参数\x0a\x20*\x20@param\x20{Object}\x20context\x20平台注入的执行上下文\x0a\x20*\x20@returns\x20{Promise<Object>}\x20TODO:\x20补充业务返回数据结构\x0a\x20*/\x0aexport\x20default\x20async\x20function\x20','Script\x20type','str','Invalid\x20dataset\x20selection.','HOOK','Operation\x20type\x20(HOOK\x20only)','\x0a\x20*\x20[平台配置]\x20',']\x20(','.js\x0a\x20*\x20[调用方式]\x20context.client.bff.execute({\x20scriptName:\x20\x22','datasetCode','stderr','--function-node\x20must\x20be\x20\x27before\x27\x20or\x20\x27after\x27.','No\x20datasets\x20found\x20for\x20this\x20app.','\x0a\x20*\x0a\x20*\x20[脚本类型]\x20COMMON\x0a\x20*\x20[脚本名称]\x20','/**\x0a\x20*\x20','/ENDPOINT/','\x0a\x20*\x20@param\x20{Object}\x20context\x20平台注入的执行上下文\x0a\x20*\x20@returns\x20{Promise<Object>}\x20','78253UVKfXM','1157523ryyCPv','No\x20model\x20aliases\x20found.\x20Run\x20`','appCode','No\x20operation\x20types\x20found\x20for\x20dataset\x20','HOOK\x20requires\x20alias/operation/node\x20options.','question','\x20*\x20[依赖数据集]\x20无(如有依赖,DB_TABLE\x20填物理表名;METADATA\x20填数据集编码与用途)\x0a\x20*\x20[调用\x20BF]\x20无(如有调用,填写脚本名称与用途)\x0a\x20*\x20[执行\x20SQL]\x20无(如有执行,填写\x20SQL\x20名称与用途)\x0a\x20*\x20[副作用]\x20无(如有通知或外部调用,说明影响与失败策略)','datasetId','The\x20generated\x20model\x20facts\x20may\x20be\x20stale\x20—\x20run\x20`','apiDir','write','validation','isInteger','before','Trigger\x20node\x20(HOOK\x20only)','includes','9JISiSj','filePath','name','\x0a\x20*\x20[参数字段]\x20按实际输入为\x20params.<字段名>\x20补充\x20JSDoc\x20参数标签;无字段时仅保留根参数\x0a\x20*\x20[异常说明]\x20无;显式抛出异常时补充异常类型与触发条件\x0a\x20*\x0a\x20*\x20@param\x20{Object}\x20params\x20请求参数\x0a\x20*\x20@param\x20{Object}\x20context\x20平台注入的执行上下文\x0a\x20*\x20@returns\x20{Promise<Object>}\x20TODO:\x20补充返回数据结构\x0a\x20*/\x0aexport\x20default\x20async\x20function\x20','\x0a\x20*\x0a\x20*\x20[脚本类型]\x20ENDPOINT\x0a\x20*\x20[脚本名称]\x20','Dataset\x20code\x20(HOOK\x20only,\x20fallback\x20when\x20alias\x20unavailable)','map','201944xzlHVT','Alias\x20\x22','(params,\x20context)\x20{\x0a\x20\x20return\x20params;\x0a}\x0a','\x20api\x20pull`\x20to\x20refresh.','code','string','after','修改后的请求参数','operationType','nonInteractive','functionNode','\x22\x20not\x20found.\x20','Script\x20description','Dataset\x20not\x20found\x20for\x20code\x20\x22','/COMMON/','.js\x0a','type','10637550mOumPJ','\x0a\x20*\x0a\x20*\x20[脚本类型]\x20HOOK\x0a\x20*\x20[脚本名称]\x20','7040945TaosIP','currentApp','Scaffold\x20a\x20new\x20Backend\x20Function\x20script\x20from\x20template','\x22.\x20','/data/backend-function\x0a\x20*\x20[本地路径]\x20.rabetbase/bff/','alias','COMMON','length','/HOOK/','profileName','Available:\x20','read','\x0a\x20*\x20[接口路径]\x20POST\x20/api/endpoint/','\x22,\x20params\x20})\x0a','Invalid\x20function\x20name\x20\x22','Select\x20operation\x20type:','HOOK\x20requires\x20hookOptions\x20for\x20template\x20generation.','ENDPOINT','scriptsRootDir','join','function-node','find','当前响应结果','operation-type','--alias\x20or\x20--datasetcode\x20is\x20required\x20for\x20HOOK\x20in\x20non-interactive\x20mode.','keys','description','Select\x20dataset:','10327168udLqUw'];a36_0x5796=function(){return _0x453cd3;};return a36_0x5796();}import{fileExists}from'../../core/bff/file-system.js';import{DEFAULT_BFF_SCRIPT_DESCRIPTION,isValidBffFunctionName,normalizeHookFunctionNode}from'../../core/bff/utils.js';import{CliErrors}from'../../errors.js';import{CLI_BIN_NAME}from'../../constant/cli.js';import{getAppBaseUrl}from'../../constant/domain.js';export const bffCreate={'service':'bff','command':a36_0x5721ca(0xea),'description':a36_0x5721ca(0xca),'risk':a36_0x5721ca(0xd3),'flags':[{'name':a36_0x5721ca(0xc5),'type':a36_0x5721ca(0x11d),'required':!![],'enum':[a36_0x5721ca(0xce),'ENDPOINT',a36_0x5721ca(0xf3)],'description':a36_0x5721ca(0xf0)},{'name':a36_0x5721ca(0x113),'type':'string','required':!![],'description':a36_0x5721ca(0xe6)},{'name':'description','type':'string','description':a36_0x5721ca(0xc1)},{'name':a36_0x5721ca(0xcd),'type':a36_0x5721ca(0x11d),'description':'Dataset\x20alias\x20from\x20api.ts\x20(HOOK\x20only,\x20preferred)'},{'name':a36_0x5721ca(0xee),'type':a36_0x5721ca(0x11d),'description':a36_0x5721ca(0x116)},{'name':'operation-type','type':a36_0x5721ca(0x11d),'description':a36_0x5721ca(0xf4)},{'name':a36_0x5721ca(0xdc),'type':a36_0x5721ca(0x11d),'description':a36_0x5721ca(0x10f),'enum':[a36_0x5721ca(0x10e),a36_0x5721ca(0x11e)]}],async 'validate'(_0x438949){const _0x3210c8=a36_0x5721ca,_0x52d735=_0x438949[_0x3210c8(0xf1)](_0x3210c8(0x113));if(!isValidBffFunctionName(_0x52d735))throw CliErrors['validation'](_0x3210c8(0xd6)+_0x52d735+'\x22.\x20Must\x20be\x20a\x20valid\x20JS\x20identifier\x20(e.g.\x20createOrder,\x20beforeFilter).');},async 'execute'(_0x34ec3c){const _0x51b7ff=a36_0x5721ca,_0x27a237=loadBffProjectConfig(_0x34ec3c['appCode']),_0x3c37fc=_0x34ec3c[_0x51b7ff(0xf1)](_0x51b7ff(0xc5)),_0x282698=_0x34ec3c[_0x51b7ff(0xf1)]('name'),_0x4c7a30=_0x34ec3c[_0x51b7ff(0xf1)]('description')||undefined,_0x39f032=_0x3c37fc===_0x51b7ff(0xf3)?await resolveHookOptions(_0x27a237,_0x34ec3c):undefined,_0x5c71a9=buildFilePath(_0x27a237,_0x3c37fc,_0x282698,_0x39f032);if(await fileExists(_0x5c71a9))throw CliErrors['validation']('File\x20already\x20exists:\x20'+_0x5c71a9);await mkdir(dirname(_0x5c71a9),{'recursive':!![]});const _0x1ec34a=generateTemplate(_0x3c37fc,_0x282698,_0x34ec3c[_0x51b7ff(0x103)],_0x4c7a30,_0x39f032);await writeFile(_0x5c71a9,_0x1ec34a,'utf8');const _0x18448d={'type':_0x3c37fc,'name':_0x282698,'path':_0x5c71a9};if(_0x4c7a30)_0x18448d[_0x51b7ff(0xe2)]=_0x4c7a30;if(_0x39f032){if(_0x39f032['alias'])_0x18448d[_0x51b7ff(0xcd)]=_0x39f032[_0x51b7ff(0xcd)];_0x18448d[_0x51b7ff(0xf8)]=_0x39f032[_0x51b7ff(0xf8)],_0x18448d['operationType']=_0x39f032[_0x51b7ff(0x120)],_0x18448d[_0x51b7ff(0xbf)]=_0x39f032[_0x51b7ff(0xbf)];}return{'ok':!![],'data':_0x18448d,'message':_0x51b7ff(0xeb)+_0x3c37fc+'\x20function:\x20'+_0x282698};}};async function resolveHookOptions(_0x309b5d,_0x31322e){const _0x295108=a36_0x5721ca,_0x1351e4=resolveApiModelSource(_0x31322e[_0x295108(0x10a)],_0x31322e[_0x295108(0x103)],_0x31322e['selectedAppName']||_0x31322e['mergedCli']?.[_0x295108(0xc9)]||_0x31322e['mergedCli']?.['defaultApp']),_0x3ce4b6=loadAliasMap(_0x31322e[_0x295108(0x10a)],undefined,_0x1351e4[_0x295108(0x112)],_0x1351e4[_0x295108(0xd1)]),_0x3dd41e=_0x3ce4b6[_0x295108(0xcf)]>0x0;let _0x20835a,_0x5d5423,_0x29b9fa;const _0x3a8536=_0x31322e['str'](_0x295108(0xcd)),_0x43f7f3=_0x31322e[_0x295108(0xf1)]('datasetcode');if(_0x3a8536){const _0x33acfc=resolveAlias(_0x31322e[_0x295108(0x10a)],_0x3a8536,undefined,_0x1351e4[_0x295108(0x112)],_0x1351e4[_0x295108(0xd1)]);if(!_0x33acfc){const _0xde619e=_0x3dd41e?'Available\x20aliases:\x20'+_0x3ce4b6[_0x295108(0x117)](_0x211f21=>_0x211f21['alias'])[_0x295108(0xdb)](',\x20'):_0x295108(0x102)+CLI_BIN_NAME+'\x20api\x20pull`\x20first,\x20or\x20use\x20--datasetcode\x20instead.';throw CliErrors[_0x295108(0x10c)](_0x295108(0x119)+_0x3a8536+_0x295108(0xc0)+_0xde619e);}_0x20835a=_0x3a8536,_0x5d5423=_0x33acfc;}else{if(_0x43f7f3){_0x5d5423=_0x43f7f3;const _0x4f9daa=_0x3ce4b6[_0x295108(0xdd)](_0x1303eb=>_0x1303eb[_0x295108(0xf8)]===_0x43f7f3);_0x20835a=_0x4f9daa?.[_0x295108(0xcd)];}else{if(_0x31322e[_0x295108(0xbe)])throw CliErrors['validation'](_0x295108(0xe0));else{if(_0x3dd41e){const _0x58f335=_0x3ce4b6['map'](_0x5e3795=>_0x5e3795['alias']+'\x20('+_0x5e3795['tableName']+')'),_0x4e94dc=await promptSelect(_0x295108(0xe3),_0x58f335),_0x4849ee=_0x3ce4b6[_0x4e94dc];if(!_0x4849ee)throw CliErrors['validation'](_0x295108(0xf2));_0x20835a=_0x4849ee['alias'],_0x5d5423=_0x4849ee[_0x295108(0xf8)];}else{const _0x5eb1ea=await listDatasets(_0x31322e['appCode']);if(_0x5eb1ea['length']===0x0)throw CliErrors[_0x295108(0x10c)](_0x295108(0xfb));const _0x2ad5e5=_0x5eb1ea['map'](_0x58fb5a=>_0x58fb5a[_0x295108(0x113)]+'\x20['+(_0x58fb5a['source']??'UNKNOWN')+_0x295108(0xf6)+_0x58fb5a[_0x295108(0x11c)]+')'),_0x272f2b=await promptSelect(_0x295108(0xe3),_0x2ad5e5),_0x3aa307=_0x5eb1ea[_0x272f2b];if(!_0x3aa307)throw CliErrors['validation']('Invalid\x20dataset\x20selection.');_0x5d5423=_0x3aa307[_0x295108(0x11c)],_0x20835a=undefined;}}}}const _0x2add64=await listDatasets(_0x31322e['appCode']),_0x164fd3=_0x2add64['find'](_0x50766a=>_0x50766a[_0x295108(0x11c)]===_0x5d5423);if(!_0x164fd3)throw CliErrors[_0x295108(0x10c)](_0x295108(0xc2)+_0x5d5423+_0x295108(0xcb)+(_0x20835a?_0x295108(0x109)+CLI_BIN_NAME+_0x295108(0x11b):''));_0x29b9fa=_0x164fd3['id'];const _0x3f954d=_0x20835a??_0x5d5423,_0x461450=await listBffDatasetOperations(_0x31322e[_0x295108(0x103)],_0x29b9fa),_0x5e4bac=_0x461450?Object[_0x295108(0xe1)](_0x461450):[];if(_0x5e4bac[_0x295108(0xcf)]===0x0)throw CliErrors[_0x295108(0x10c)](_0x295108(0x104)+_0x3f954d+'.');let _0x817576;const _0x8863dc=_0x31322e[_0x295108(0xf1)](_0x295108(0xdf));if(_0x8863dc){if(!_0x5e4bac[_0x295108(0x110)](_0x8863dc))throw CliErrors['validation']('Operation\x20type\x20\x22'+_0x8863dc+'\x22\x20not\x20found\x20for\x20dataset\x20'+_0x3f954d+'.\x20'+(_0x295108(0xd2)+_0x5e4bac[_0x295108(0xdb)](',\x20')));_0x817576=_0x8863dc;}else{if(_0x31322e['nonInteractive'])throw CliErrors[_0x295108(0x10c)]('--operation-type\x20is\x20required\x20for\x20HOOK\x20in\x20non-interactive\x20mode.');const _0x479c9a=await promptSelect(_0x295108(0xd7),_0x5e4bac);_0x817576=_0x5e4bac[_0x479c9a]??_0x5e4bac[0x0];}let _0x408eb6=normalizeHookFunctionNode(_0x31322e['str'](_0x295108(0xdc)));if(!_0x408eb6){if(_0x31322e[_0x295108(0xf1)](_0x295108(0xdc)))throw CliErrors['validation'](_0x295108(0xfa));if(_0x31322e[_0x295108(0xbe)])throw CliErrors[_0x295108(0x10c)](_0x295108(0xec));const _0x52b545=await promptSelect('Select\x20trigger\x20node:',[_0x295108(0x10e),'after']);_0x408eb6=[_0x295108(0x10e),_0x295108(0x11e)][_0x52b545]??_0x295108(0x10e);}return{'alias':_0x20835a,'datasetCode':_0x5d5423,'datasetId':_0x29b9fa,'operationType':_0x817576,'functionNode':_0x408eb6};}async function promptSelect(_0x3d3aa,_0x200dc1){const _0x39101a=a36_0x5721ca;if(_0x200dc1['length']===0x1)return 0x0;for(const [_0x4ce069,_0x19b33f]of _0x200dc1['entries']()){process['stderr'][_0x39101a(0x10b)]('\x20\x20'+(_0x4ce069+0x1)+'.\x20'+_0x19b33f+'\x0a');}const _0x236300=createInterface({'input':process['stdin'],'output':process['stderr']});while(!![]){const _0xc7ef41=await new Promise(_0x1daab1=>{const _0x35336b=_0x39101a;_0x236300[_0x35336b(0x106)](_0x3d3aa+'\x20',_0x1daab1);}),_0x4f48dc=Number[_0x39101a(0xed)](_0xc7ef41['trim'](),0xa);if(Number[_0x39101a(0x10d)](_0x4f48dc)&&_0x4f48dc>=0x1&&_0x4f48dc<=_0x200dc1['length'])return _0x236300['close'](),_0x4f48dc-0x1;process[_0x39101a(0xf9)][_0x39101a(0x10b)](_0x39101a(0xe8)+_0x200dc1[_0x39101a(0xcf)]+'.\x0a');}}function buildFilePath(_0x2cfeef,_0x8b9cdd,_0x521f7b,_0x594eb7){const _0x583e25=a36_0x5721ca;if(_0x8b9cdd===_0x583e25(0xf3)){if(!_0x594eb7)throw CliErrors[_0x583e25(0x10c)](_0x583e25(0x105));const _0x1f9395=_0x594eb7[_0x583e25(0xcd)]??_0x594eb7[_0x583e25(0xf8)];return join(_0x2cfeef[_0x583e25(0xda)],_0x583e25(0xf3),_0x1f9395,_0x594eb7['operationType'],_0x594eb7['functionNode'],_0x521f7b+'.js');}return join(_0x2cfeef[_0x583e25(0xda)],_0x8b9cdd,_0x521f7b+'.js');}export function generateTemplate(_0x4c2b3f,_0x4864db,_0x1acd2e,_0x156169,_0x43b52c){const _0x11a48a=a36_0x5721ca,_0x5d0df6=_0x156169?.['trim']()||DEFAULT_BFF_SCRIPT_DESCRIPTION,_0x35eb47=getAppBaseUrl(_0x1acd2e),_0x311c31=_0x11a48a(0x107);if(_0x4c2b3f===_0x11a48a(0xce))return _0x11a48a(0xfd)+_0x5d0df6+_0x11a48a(0xfc)+_0x4864db+'\x0a\x20*\x20[平台配置]\x20'+_0x35eb47+'/data/backend-function\x0a\x20*\x20[本地路径]\x20.rabetbase/bff/'+_0x1acd2e+_0x11a48a(0xc3)+_0x4864db+_0x11a48a(0xf7)+_0x4864db+_0x11a48a(0xd5)+_0x311c31+_0x11a48a(0x114)+_0x4864db+_0x11a48a(0x11a);if(_0x4c2b3f===_0x11a48a(0xd9))return _0x11a48a(0xfd)+_0x5d0df6+_0x11a48a(0x115)+_0x4864db+_0x11a48a(0xd4)+_0x1acd2e+'/'+_0x4864db+_0x11a48a(0xf5)+_0x35eb47+_0x11a48a(0xcc)+_0x1acd2e+_0x11a48a(0xfe)+_0x4864db+_0x11a48a(0xc4)+_0x311c31+_0x11a48a(0xef)+_0x4864db+_0x11a48a(0x11a);if(!_0x43b52c)throw CliErrors['validation'](_0x11a48a(0xd8));const _0x577df2=_0x43b52c[_0x11a48a(0xcd)]??_0x43b52c['datasetCode'],_0x178e61=_0x43b52c[_0x11a48a(0xbf)]===_0x11a48a(0x10e)?'当前请求参数':_0x11a48a(0xde),_0x514894=_0x43b52c['functionNode']===_0x11a48a(0x10e)?_0x11a48a(0x11f):'修改后的响应结果';return _0x11a48a(0xfd)+_0x5d0df6+_0x11a48a(0xc7)+_0x4864db+'\x0a\x20*\x20[接口路径]\x20POST\x20/api/'+_0x1acd2e+'/'+_0x43b52c[_0x11a48a(0xf8)]+'/'+_0x43b52c[_0x11a48a(0x120)]+_0x11a48a(0xf5)+_0x35eb47+'/data/dataset/'+_0x43b52c[_0x11a48a(0x108)]+'#api-list\x0a\x20*\x20[本地路径]\x20.rabetbase/bff/'+_0x1acd2e+_0x11a48a(0xd0)+_0x577df2+'/'+_0x43b52c[_0x11a48a(0x120)]+'/'+_0x43b52c[_0x11a48a(0xbf)]+'/'+_0x4864db+'.js\x0a\x20*\x20[触发节点]\x20'+_0x43b52c[_0x11a48a(0xbf)]+'\x0a'+_0x311c31+'\x0a\x20*\x20[参数字段]\x20按实际输入为\x20params.<字段名>\x20补充\x20JSDoc\x20参数标签;无字段时仅保留根参数\x0a\x20*\x20[异常说明]\x20无;显式抛出异常时补充异常类型与触发条件\x0a\x20*\x0a\x20*\x20@param\x20{Object}\x20params\x20'+_0x178e61+_0x11a48a(0xff)+_0x514894+_0x11a48a(0xe9)+_0x4864db+'(params,\x20context)\x20{\x0a\x20\x20return\x20params;\x0a}\x0a';}
|
|
1
|
+
const a36_0x45984b=a36_0x52f9;(function(_0x370ec0,_0x2a6b14){const _0x5ab867=a36_0x52f9,_0x2aa2da=_0x370ec0();while(!![]){try{const _0x17e77f=-parseInt(_0x5ab867(0x201))/0x1*(-parseInt(_0x5ab867(0x1d3))/0x2)+-parseInt(_0x5ab867(0x1d6))/0x3+parseInt(_0x5ab867(0x1a3))/0x4+-parseInt(_0x5ab867(0x1a8))/0x5*(-parseInt(_0x5ab867(0x19b))/0x6)+parseInt(_0x5ab867(0x1fe))/0x7*(-parseInt(_0x5ab867(0x1b9))/0x8)+-parseInt(_0x5ab867(0x1c4))/0x9*(parseInt(_0x5ab867(0x1d1))/0xa)+parseInt(_0x5ab867(0x1e4))/0xb;if(_0x17e77f===_0x2a6b14)break;else _0x2aa2da['push'](_0x2aa2da['shift']());}catch(_0x74ef6e){_0x2aa2da['push'](_0x2aa2da['shift']());}}}(a36_0x5092,0xe4462));import{createInterface}from'node:readline';import{mkdir,writeFile}from'node:fs/promises';import{dirname,join}from'node:path';import{listDatasets,listBffDatasetOperations}from'../../core/api-client.js';function a36_0x5092(){const _0xae0256=['.js','Alias\x20\x22','utf8','filePath','entries','962874DZHHfW','当前响应结果','write','\x0a\x20*\x20[接口路径]\x20POST\x20/api/endpoint/','includes','\x0a\x20*\x20[平台配置]\x20','stdin','Function\x20name\x20(valid\x20JS\x20identifier)','trim','selectedAppName','/data/backend-function\x0a\x20*\x20[本地路径]\x20.rabetbase/bff/','--function-node\x20must\x20be\x20\x27before\x27\x20or\x20\x27after\x27.','after','30KIBOHP','stderr','2dFvGmq','function-node','Dataset\x20code\x20(HOOK\x20only,\x20fallback\x20when\x20alias\x20unavailable)','1680900mCwqmN','keys','\x22\x20not\x20found\x20for\x20dataset\x20','Available\x20aliases:\x20','\x22,\x20params\x20})\x0a','\x0a\x20*\x0a\x20*\x20[脚本类型]\x20HOOK\x0a\x20*\x20[脚本名称]\x20','string','ENDPOINT','operationType','read','length','name','find','HOOK\x20requires\x20alias/operation/node\x20options.','18948952Ufnpwo','/**\x0a\x20*\x20','(params,\x20context)\x20{\x0a\x20\x20return\x20params;\x0a}\x0a','appCode','Script\x20type','\x0a\x20*\x0a\x20*\x20[脚本类型]\x20ENDPOINT\x0a\x20*\x20[脚本名称]\x20','Select\x20operation\x20type:','code','map','COMMON','Operation\x20type\x20\x22','UNKNOWN','str','\x20function:\x20','close','Select\x20dataset:','alias','parseInt','nonInteractive','datasetCode','description','\x0a\x20*\x20[接口路径]\x20POST\x20/api/','\x0a\x20*/\x0aexport\x20default\x20async\x20function\x20','scriptsRootDir','Dataset\x20not\x20found\x20for\x20code\x20\x22','isInteger','350PohxfL','operation-type','datasetId','153756gDqjLn','source','2717082VdfCBN','Invalid\x20function\x20name\x20\x22','validation','.js\x0a\x20*\x20[调用方式]\x20context.client.bff.execute({\x20scriptName:\x20\x22','defaultApp','No\x20datasets\x20found\x20for\x20this\x20app.','/data/dataset/','No\x20model\x20aliases\x20found.\x20Run\x20`','1797932bJgyYA','\x20api\x20pull`\x20to\x20refresh.','\x0a\x20*\x20@param\x20{Object}\x20context\x20平台注入的执行上下文\x0a\x20*\x20@returns\x20{Promise<Object>}\x20','before','修改后的响应结果','5lptmEB','mergedCli','#api-list\x0a\x20*\x20[本地路径]\x20.rabetbase/bff/','question','Created\x20','type','Scaffold\x20a\x20new\x20Backend\x20Function\x20script\x20from\x20template','Trigger\x20node\x20(HOOK\x20only)','\x0a\x20*\x20[参数字段]\x20按实际输入为\x20params.<字段名>\x20补充\x20JSDoc\x20参数标签;无字段时仅保留根参数\x0a\x20*\x20[异常说明]\x20无;显式抛出异常时补充异常类型与触发条件\x0a\x20*\x0a\x20*\x20@param\x20{Object}\x20params\x20','HOOK\x20requires\x20hookOptions\x20for\x20template\x20generation.','create','Operation\x20type\x20(HOOK\x20only)','\x20\x20Enter\x20a\x20number\x20between\x201\x20and\x20','apiDir','No\x20operation\x20types\x20found\x20for\x20dataset\x20','修改后的请求参数','\x20*\x20[依赖数据集]\x20无(如有依赖,DB_TABLE\x20填物理表名;METADATA\x20填数据集编码与用途)\x0a\x20*\x20[调用\x20BF]\x20无(如有调用,填写脚本名称与用途)\x0a\x20*\x20[执行\x20SQL]\x20无(如有执行,填写\x20SQL\x20名称与用途)\x0a\x20*\x20[副作用]\x20无(如有通知或外部调用,说明影响与失败策略)','153992OMraXy','profileName','bff','\x22.\x20','functionNode','HOOK'];a36_0x5092=function(){return _0xae0256;};return a36_0x5092();}function a36_0x52f9(_0x19a828,_0x27a8ad){_0x19a828=_0x19a828-0x19b;const _0x5092f2=a36_0x5092();let _0x52f975=_0x5092f2[_0x19a828];return _0x52f975;}import{loadAliasMap,resolveAlias}from'../../core/alias-resolver.js';import{resolveApiModelSource}from'../../api/model-source.js';import{loadBffProjectConfig}from'../../core/bff/config.js';import{fileExists}from'../../core/bff/file-system.js';import{DEFAULT_BFF_SCRIPT_DESCRIPTION,isValidBffFunctionName,normalizeHookFunctionNode}from'../../core/bff/utils.js';import{CliErrors}from'../../errors.js';import{CLI_BIN_NAME}from'../../constant/cli.js';import{getAppBaseUrl}from'../../constant/domain.js';export const bffCreate={'service':a36_0x45984b(0x1bb),'command':a36_0x45984b(0x1b2),'description':a36_0x45984b(0x1ae),'risk':a36_0x45984b(0x1df),'flags':[{'name':a36_0x45984b(0x1ad),'type':a36_0x45984b(0x1dc),'required':!![],'enum':[a36_0x45984b(0x1ed),a36_0x45984b(0x1dd),'HOOK'],'description':a36_0x45984b(0x1e8)},{'name':a36_0x45984b(0x1e1),'type':a36_0x45984b(0x1dc),'required':!![],'description':a36_0x45984b(0x1cb)},{'name':a36_0x45984b(0x1f8),'type':'string','description':'Script\x20description'},{'name':a36_0x45984b(0x1f4),'type':a36_0x45984b(0x1dc),'description':'Dataset\x20alias\x20from\x20api.ts\x20(HOOK\x20only,\x20preferred)'},{'name':'datasetcode','type':'string','description':a36_0x45984b(0x1d5)},{'name':a36_0x45984b(0x1ff),'type':a36_0x45984b(0x1dc),'description':a36_0x45984b(0x1b3)},{'name':a36_0x45984b(0x1d4),'type':'string','description':a36_0x45984b(0x1af),'enum':['before',a36_0x45984b(0x1d0)]}],async 'validate'(_0x5eea64){const _0x57715e=a36_0x45984b,_0x405d70=_0x5eea64[_0x57715e(0x1f0)](_0x57715e(0x1e1));if(!isValidBffFunctionName(_0x405d70))throw CliErrors[_0x57715e(0x19d)](_0x57715e(0x19c)+_0x405d70+'\x22.\x20Must\x20be\x20a\x20valid\x20JS\x20identifier\x20(e.g.\x20createOrder,\x20beforeFilter).');},async 'execute'(_0x1c2e17){const _0x133872=a36_0x45984b,_0x5b1d31=loadBffProjectConfig(_0x1c2e17['appCode']),_0x5b82e8=_0x1c2e17['str'](_0x133872(0x1ad)),_0x59c115=_0x1c2e17[_0x133872(0x1f0)]('name'),_0x3cbb58=_0x1c2e17['str']('description')||undefined,_0xcee513=_0x5b82e8===_0x133872(0x1be)?await resolveHookOptions(_0x5b1d31,_0x1c2e17):undefined,_0x24bda2=buildFilePath(_0x5b1d31,_0x5b82e8,_0x59c115,_0xcee513);if(await fileExists(_0x24bda2))throw CliErrors[_0x133872(0x19d)]('File\x20already\x20exists:\x20'+_0x24bda2);await mkdir(dirname(_0x24bda2),{'recursive':!![]});const _0x8496fb=generateTemplate(_0x5b82e8,_0x59c115,_0x1c2e17['appCode'],_0x3cbb58,_0xcee513);await writeFile(_0x24bda2,_0x8496fb,_0x133872(0x1c1));const _0x57ebd9={'type':_0x5b82e8,'name':_0x59c115,'path':_0x24bda2};if(_0x3cbb58)_0x57ebd9[_0x133872(0x1f8)]=_0x3cbb58;if(_0xcee513){if(_0xcee513['alias'])_0x57ebd9[_0x133872(0x1f4)]=_0xcee513['alias'];_0x57ebd9[_0x133872(0x1f7)]=_0xcee513['datasetCode'],_0x57ebd9['operationType']=_0xcee513[_0x133872(0x1de)],_0x57ebd9[_0x133872(0x1bd)]=_0xcee513['functionNode'];}return{'ok':!![],'data':_0x57ebd9,'message':_0x133872(0x1ac)+_0x5b82e8+_0x133872(0x1f1)+_0x59c115};}};async function resolveHookOptions(_0x45dc53,_0x5cdc96){const _0x114193=a36_0x45984b,_0x3d3ca6=resolveApiModelSource(_0x5cdc96['apiDir'],_0x5cdc96[_0x114193(0x1e7)],_0x5cdc96[_0x114193(0x1cd)]||_0x5cdc96[_0x114193(0x1a9)]?.['currentApp']||_0x5cdc96['mergedCli']?.[_0x114193(0x19f)]),_0xac3dd7=loadAliasMap(_0x5cdc96[_0x114193(0x1b5)],undefined,_0x3d3ca6[_0x114193(0x1c2)],_0x3d3ca6[_0x114193(0x1ba)]),_0x2ce739=_0xac3dd7[_0x114193(0x1e0)]>0x0;let _0x52ff13,_0x323b59,_0x1f034a;const _0x457329=_0x5cdc96['str'](_0x114193(0x1f4)),_0x325e90=_0x5cdc96[_0x114193(0x1f0)]('datasetcode');if(_0x457329){const _0x4149e5=resolveAlias(_0x5cdc96[_0x114193(0x1b5)],_0x457329,undefined,_0x3d3ca6['filePath'],_0x3d3ca6[_0x114193(0x1ba)]);if(!_0x4149e5){const _0x119e2d=_0x2ce739?_0x114193(0x1d9)+_0xac3dd7[_0x114193(0x1ec)](_0x1c8645=>_0x1c8645[_0x114193(0x1f4)])['join'](',\x20'):_0x114193(0x1a2)+CLI_BIN_NAME+'\x20api\x20pull`\x20first,\x20or\x20use\x20--datasetcode\x20instead.';throw CliErrors[_0x114193(0x19d)](_0x114193(0x1c0)+_0x457329+'\x22\x20not\x20found.\x20'+_0x119e2d);}_0x52ff13=_0x457329,_0x323b59=_0x4149e5;}else{if(_0x325e90){_0x323b59=_0x325e90;const _0x2bb2f7=_0xac3dd7[_0x114193(0x1e2)](_0x21d321=>_0x21d321[_0x114193(0x1f7)]===_0x325e90);_0x52ff13=_0x2bb2f7?.[_0x114193(0x1f4)];}else{if(_0x5cdc96[_0x114193(0x1f6)])throw CliErrors[_0x114193(0x19d)]('--alias\x20or\x20--datasetcode\x20is\x20required\x20for\x20HOOK\x20in\x20non-interactive\x20mode.');else{if(_0x2ce739){const _0x547c31=_0xac3dd7['map'](_0x4b2c04=>_0x4b2c04['alias']+'\x20('+_0x4b2c04['tableName']+')'),_0x364eb1=await promptSelect(_0x114193(0x1f3),_0x547c31),_0xab961a=_0xac3dd7[_0x364eb1];if(!_0xab961a)throw CliErrors[_0x114193(0x19d)]('Invalid\x20dataset\x20selection.');_0x52ff13=_0xab961a[_0x114193(0x1f4)],_0x323b59=_0xab961a[_0x114193(0x1f7)];}else{const _0x222855=await listDatasets(_0x5cdc96[_0x114193(0x1e7)]);if(_0x222855[_0x114193(0x1e0)]===0x0)throw CliErrors[_0x114193(0x19d)](_0x114193(0x1a0));const _0x2e67e3=_0x222855[_0x114193(0x1ec)](_0x4423fa=>_0x4423fa[_0x114193(0x1e1)]+'\x20['+(_0x4423fa[_0x114193(0x202)]??_0x114193(0x1ef))+']\x20('+_0x4423fa[_0x114193(0x1eb)]+')'),_0x4cd0d2=await promptSelect(_0x114193(0x1f3),_0x2e67e3),_0x23a482=_0x222855[_0x4cd0d2];if(!_0x23a482)throw CliErrors[_0x114193(0x19d)]('Invalid\x20dataset\x20selection.');_0x323b59=_0x23a482[_0x114193(0x1eb)],_0x52ff13=undefined;}}}}const _0x405b20=await listDatasets(_0x5cdc96[_0x114193(0x1e7)]),_0x1de604=_0x405b20[_0x114193(0x1e2)](_0x110544=>_0x110544['code']===_0x323b59);if(!_0x1de604)throw CliErrors['validation'](_0x114193(0x1fc)+_0x323b59+_0x114193(0x1bc)+(_0x52ff13?'The\x20generated\x20model\x20facts\x20may\x20be\x20stale\x20—\x20run\x20`'+CLI_BIN_NAME+_0x114193(0x1a4):''));_0x1f034a=_0x1de604['id'];const _0x5f04ea=_0x52ff13??_0x323b59,_0x2b75c4=await listBffDatasetOperations(_0x5cdc96['appCode'],_0x1f034a),_0x5acf25=_0x2b75c4?Object[_0x114193(0x1d7)](_0x2b75c4):[];if(_0x5acf25[_0x114193(0x1e0)]===0x0)throw CliErrors[_0x114193(0x19d)](_0x114193(0x1b6)+_0x5f04ea+'.');let _0x4037d5;const _0x3bcd38=_0x5cdc96['str'](_0x114193(0x1ff));if(_0x3bcd38){if(!_0x5acf25[_0x114193(0x1c8)](_0x3bcd38))throw CliErrors[_0x114193(0x19d)](_0x114193(0x1ee)+_0x3bcd38+_0x114193(0x1d8)+_0x5f04ea+'.\x20'+('Available:\x20'+_0x5acf25['join'](',\x20')));_0x4037d5=_0x3bcd38;}else{if(_0x5cdc96['nonInteractive'])throw CliErrors[_0x114193(0x19d)]('--operation-type\x20is\x20required\x20for\x20HOOK\x20in\x20non-interactive\x20mode.');const _0x3aa7fe=await promptSelect(_0x114193(0x1ea),_0x5acf25);_0x4037d5=_0x5acf25[_0x3aa7fe]??_0x5acf25[0x0];}let _0x13bad0=normalizeHookFunctionNode(_0x5cdc96[_0x114193(0x1f0)](_0x114193(0x1d4)));if(!_0x13bad0){if(_0x5cdc96[_0x114193(0x1f0)](_0x114193(0x1d4)))throw CliErrors[_0x114193(0x19d)](_0x114193(0x1cf));if(_0x5cdc96[_0x114193(0x1f6)])throw CliErrors[_0x114193(0x19d)]('--function-node\x20is\x20required\x20for\x20HOOK\x20in\x20non-interactive\x20mode.');const _0x1f13a6=await promptSelect('Select\x20trigger\x20node:',[_0x114193(0x1a6),_0x114193(0x1d0)]);_0x13bad0=[_0x114193(0x1a6),_0x114193(0x1d0)][_0x1f13a6]??_0x114193(0x1a6);}return{'alias':_0x52ff13,'datasetCode':_0x323b59,'datasetId':_0x1f034a,'operationType':_0x4037d5,'functionNode':_0x13bad0};}async function promptSelect(_0x334a05,_0x21715b){const _0x55ffba=a36_0x45984b;if(_0x21715b[_0x55ffba(0x1e0)]===0x1)return 0x0;for(const [_0x59bcea,_0xa138a7]of _0x21715b[_0x55ffba(0x1c3)]()){process[_0x55ffba(0x1d2)][_0x55ffba(0x1c6)]('\x20\x20'+(_0x59bcea+0x1)+'.\x20'+_0xa138a7+'\x0a');}const _0x50fe95=createInterface({'input':process[_0x55ffba(0x1ca)],'output':process[_0x55ffba(0x1d2)]});while(!![]){const _0x199521=await new Promise(_0x1deead=>{const _0x514fe4=_0x55ffba;_0x50fe95[_0x514fe4(0x1ab)](_0x334a05+'\x20',_0x1deead);}),_0x3145c8=Number[_0x55ffba(0x1f5)](_0x199521[_0x55ffba(0x1cc)](),0xa);if(Number[_0x55ffba(0x1fd)](_0x3145c8)&&_0x3145c8>=0x1&&_0x3145c8<=_0x21715b['length'])return _0x50fe95[_0x55ffba(0x1f2)](),_0x3145c8-0x1;process['stderr']['write'](_0x55ffba(0x1b4)+_0x21715b[_0x55ffba(0x1e0)]+'.\x0a');}}function buildFilePath(_0x221741,_0x5843c9,_0x5451e3,_0x3073be){const _0x3fbf00=a36_0x45984b;if(_0x5843c9===_0x3fbf00(0x1be)){if(!_0x3073be)throw CliErrors[_0x3fbf00(0x19d)](_0x3fbf00(0x1e3));const _0x5a624c=_0x3073be[_0x3fbf00(0x1f4)]??_0x3073be['datasetCode'];return join(_0x221741[_0x3fbf00(0x1fb)],_0x3fbf00(0x1be),_0x5a624c,_0x3073be['operationType'],_0x3073be[_0x3fbf00(0x1bd)],_0x5451e3+_0x3fbf00(0x1bf));}return join(_0x221741[_0x3fbf00(0x1fb)],_0x5843c9,_0x5451e3+_0x3fbf00(0x1bf));}export function generateTemplate(_0x4615cf,_0xe2d8e7,_0x175c06,_0x18c429,_0x1e5fc1){const _0x408473=a36_0x45984b,_0x124e23=_0x18c429?.[_0x408473(0x1cc)]()||DEFAULT_BFF_SCRIPT_DESCRIPTION,_0x4511c1=getAppBaseUrl(_0x175c06),_0x1bca6b=_0x408473(0x1b8);if(_0x4615cf===_0x408473(0x1ed))return _0x408473(0x1e5)+_0x124e23+'\x0a\x20*\x0a\x20*\x20[脚本类型]\x20COMMON\x0a\x20*\x20[脚本名称]\x20'+_0xe2d8e7+'\x0a\x20*\x20[平台配置]\x20'+_0x4511c1+_0x408473(0x1ce)+_0x175c06+'/COMMON/'+_0xe2d8e7+_0x408473(0x19e)+_0xe2d8e7+_0x408473(0x1da)+_0x1bca6b+'\x0a\x20*\x20[参数字段]\x20按实际输入为\x20params.<字段名>\x20补充\x20JSDoc\x20参数标签;无字段时仅保留根参数\x0a\x20*\x20[异常说明]\x20无;显式抛出异常时补充异常类型与触发条件\x0a\x20*\x0a\x20*\x20@param\x20{Object}\x20params\x20请求参数\x0a\x20*\x20@param\x20{Object}\x20context\x20平台注入的执行上下文\x0a\x20*\x20@returns\x20{Promise<Object>}\x20TODO:\x20补充返回数据结构\x0a\x20*/\x0aexport\x20default\x20async\x20function\x20'+_0xe2d8e7+_0x408473(0x1e6);if(_0x4615cf===_0x408473(0x1dd))return'/**\x0a\x20*\x20'+_0x124e23+_0x408473(0x1e9)+_0xe2d8e7+_0x408473(0x1c7)+_0x175c06+'/'+_0xe2d8e7+'\x0a\x20*\x20[平台配置]\x20'+_0x4511c1+_0x408473(0x1ce)+_0x175c06+'/ENDPOINT/'+_0xe2d8e7+'.js\x0a'+_0x1bca6b+'\x0a\x20*\x20[参数字段]\x20按实际请求体为\x20params.<字段名>\x20补充\x20JSDoc\x20参数标签;无字段时仅保留根参数\x0a\x20*\x20[异常说明]\x20无;显式抛出异常时补充异常类型与触发条件\x0a\x20*\x0a\x20*\x20@param\x20{Object}\x20params\x20HTTP\x20请求体参数\x0a\x20*\x20@param\x20{Object}\x20context\x20平台注入的执行上下文\x0a\x20*\x20@returns\x20{Promise<Object>}\x20TODO:\x20补充业务返回数据结构\x0a\x20*/\x0aexport\x20default\x20async\x20function\x20'+_0xe2d8e7+_0x408473(0x1e6);if(!_0x1e5fc1)throw CliErrors['validation'](_0x408473(0x1b1));const _0x13a410=_0x1e5fc1[_0x408473(0x1f4)]??_0x1e5fc1[_0x408473(0x1f7)],_0x2e1083=_0x1e5fc1['functionNode']===_0x408473(0x1a6)?'当前请求参数':_0x408473(0x1c5),_0x24da1c=_0x1e5fc1['functionNode']==='before'?_0x408473(0x1b7):_0x408473(0x1a7);return'/**\x0a\x20*\x20'+_0x124e23+_0x408473(0x1db)+_0xe2d8e7+_0x408473(0x1f9)+_0x175c06+'/'+_0x1e5fc1['datasetCode']+'/'+_0x1e5fc1[_0x408473(0x1de)]+_0x408473(0x1c9)+_0x4511c1+_0x408473(0x1a1)+_0x1e5fc1[_0x408473(0x200)]+_0x408473(0x1aa)+_0x175c06+'/HOOK/'+_0x13a410+'/'+_0x1e5fc1['operationType']+'/'+_0x1e5fc1[_0x408473(0x1bd)]+'/'+_0xe2d8e7+'.js\x0a\x20*\x20[触发节点]\x20'+_0x1e5fc1['functionNode']+'\x0a'+_0x1bca6b+_0x408473(0x1b0)+_0x2e1083+_0x408473(0x1a5)+_0x24da1c+_0x408473(0x1fa)+_0xe2d8e7+_0x408473(0x1e6);}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
function a37_0x1764(){const _0x54873b=['Function\x20not\x20found:\x20','remoteId','scriptsRoot','high-risk-write','includes','trashedTo','1582pizaiU','find','stringify','6739182LUXUId','Would\x20delete\x20','map','No\x20lock\x20entry\x20found\x20for\x20\x22','1158SHtKvE','Deleted\x20','appCode','Lock\x20scope\x20for\x20app\x20\x22','lockFilePath','/api/management/library/scripts/delete','apps','trashDir','Backend\x20Function\x20lock\x20file\x20not\x20found.','validation','replace','keys','scriptsRootDir','toISOString','string','delete','Multiple\x20functions\x20match\x20\x22','Delete\x20a\x20Backend\x20Function\x20script\x20from\x20remote\x20and\x20local','functions','POST','parse','target','\x20\x20-\x20','1549952FwBTLz','\x22\x20not\x20found\x20after\x20ensureLockScope.','\x20(local\x20file\x20moved\x20to\x20trash)','Backend\x20Function\x20lock\x20file\x20not\x20found.\x20Run\x20`push`\x20or\x20`pull`\x20first\x20to\x20initialize\x20sync\x20state.','str','\x20from\x20remote\x20and\x20move\x20local\x20file\x20to\x20trash','\x22.\x20Use\x20the\x20full\x20lock\x20key:\x0a','2308NEJcAO','lastSync','split','filter','projectRoot','bff','217473IrBShA','Lock\x20key\x20(e.g.\x20ENDPOINT/createOrder)\x20or\x20short\x20function\x20name','1137330POswbv','1398MPjaym','length','Local\x20delete\x20not\x20settled\x20for\x20','89320dLtkRc'];a37_0x1764=function(){return _0x54873b;};return a37_0x1764();}const a37_0x50eb36=a37_0x598d;function a37_0x598d(_0x4557d3,_0x5d3612){_0x4557d3=_0x4557d3-0x1c9;const _0x1764bd=a37_0x1764();let _0x598d09=_0x1764bd[_0x4557d3];return _0x598d09;}(function(_0x1e82d7,_0x452c59){const _0x4001f5=a37_0x598d,_0x5f0864=_0x1e82d7();while(!![]){try{const _0x29618e=parseInt(_0x4001f5(0x1f3))/0x1+-parseInt(_0x4001f5(0x1f9))/0x2+parseInt(_0x4001f5(0x1cf))/0x3*(parseInt(_0x4001f5(0x1ed))/0x4)+parseInt(_0x4001f5(0x1f5))/0x5+-parseInt(_0x4001f5(0x1f6))/0x6*(-parseInt(_0x4001f5(0x200))/0x7)+parseInt(_0x4001f5(0x1e6))/0x8+-parseInt(_0x4001f5(0x1cb))/0x9;if(_0x29618e===_0x452c59)break;else _0x5f0864['push'](_0x5f0864['shift']());}catch(_0x54b1a2){_0x5f0864['push'](_0x5f0864['shift']());}}}(a37_0x1764,0x1d71d));import{mkdir,readdir,rename,rmdir}from'node:fs/promises';import{dirname,join,relative,resolve,sep}from'node:path';import{deleteBffScript}from'../../core/api-client.js';import{loadBffProjectConfig}from'../../core/bff/config.js';import{fileExists,resolveLocalFilePathFromLockKey}from'../../core/bff/file-system.js';import{ensureLockScope,readBffLockFile,writeBffLockFile}from'../../core/bff/lock.js';import{CliErrors}from'../../errors.js';import{sleep}from'../../utils/sleep.js';export const bffDelete={'service':a37_0x50eb36(0x1f2),'command':a37_0x50eb36(0x1de),'description':a37_0x50eb36(0x1e0),'risk':a37_0x50eb36(0x1fd),'flags':[{'name':'target','type':a37_0x50eb36(0x1dd),'required':!![],'description':a37_0x50eb36(0x1f4)}],async 'validate'(_0x37d926){const _0x2da553=a37_0x50eb36,_0x521247=loadBffProjectConfig(_0x37d926[_0x2da553(0x1d1)]),_0x404a19=await readBffLockFile(_0x521247[_0x2da553(0x1d3)]);if(!_0x404a19)throw CliErrors['validation'](_0x2da553(0x1e9));},async 'dryRun'(_0x402e52){const _0x4b3390=a37_0x50eb36,_0x256eff=loadBffProjectConfig(_0x402e52[_0x4b3390(0x1d1)]),_0x3dc1b5=await readBffLockFile(_0x256eff[_0x4b3390(0x1d3)]);if(!_0x3dc1b5)throw CliErrors['validation'](_0x4b3390(0x1d7));const {appLock:_0x11cb78}=ensureLockScope(_0x3dc1b5,_0x402e52[_0x4b3390(0x1d1)],_0x256eff['scriptsRoot'],_0x4b3390(0x1de)),_0x420e0f=_0x402e52[_0x4b3390(0x1ea)](_0x4b3390(0x1e4)),_0xc465a2=Object['keys'](_0x11cb78[_0x4b3390(0x1e1)]),_0x42f67e=resolveDeleteTarget(_0x420e0f,_0xc465a2),_0x5138db=_0x11cb78[_0x4b3390(0x1e1)][_0x42f67e];if(!_0x5138db)throw CliErrors[_0x4b3390(0x1d8)](_0x4b3390(0x1ce)+_0x42f67e+'\x22.');const _0x19818f=resolveLocalFilePathFromLockKey(_0x256eff,_0x42f67e),_0x15db0a=relative(_0x256eff['projectRoot'],_0x19818f),_0x2e4438=join(_0x256eff[_0x4b3390(0x1d6)],'<timestamp>',_0x15db0a);return{'method':_0x4b3390(0x1e2),'url':_0x4b3390(0x1d4),'body':{'appCode':_0x402e52[_0x4b3390(0x1d1)],'target':_0x42f67e,'remoteId':_0x5138db['remoteId'],'localFilePath':_0x19818f,'trashedPath':_0x2e4438},'description':_0x4b3390(0x1cc)+_0x42f67e+_0x4b3390(0x1eb)};},async 'execute'(_0x2753b1){const _0x3055fa=a37_0x50eb36,_0x23dd6c=loadBffProjectConfig(_0x2753b1['appCode']),_0x54bc45=await readBffLockFile(_0x23dd6c[_0x3055fa(0x1d3)]);if(!_0x54bc45)throw CliErrors[_0x3055fa(0x1d8)](_0x3055fa(0x1d7));const {lockData:_0x5ef65c,appLock:_0x14ff25}=ensureLockScope(_0x54bc45,_0x2753b1['appCode'],_0x23dd6c[_0x3055fa(0x1fc)],_0x3055fa(0x1de)),_0x5ba018=JSON[_0x3055fa(0x1e3)](JSON[_0x3055fa(0x1ca)](_0x5ef65c)),_0x56dbe4=_0x5ba018['apps'][_0x2753b1[_0x3055fa(0x1d1)]];if(!_0x56dbe4)throw new Error(_0x3055fa(0x1d2)+_0x2753b1[_0x3055fa(0x1d1)]+_0x3055fa(0x1e7));const _0x479c5f=_0x2753b1[_0x3055fa(0x1ea)](_0x3055fa(0x1e4)),_0x458c20=Object[_0x3055fa(0x1da)](_0x56dbe4['functions']),_0x3240f3=resolveDeleteTarget(_0x479c5f,_0x458c20),_0x15dcf6=_0x56dbe4['functions'][_0x3240f3];if(!_0x15dcf6)throw CliErrors[_0x3055fa(0x1d8)](_0x3055fa(0x1ce)+_0x3240f3+'\x22.');await deleteBffScript(_0x15dcf6['remoteId']),delete _0x56dbe4[_0x3055fa(0x1e1)][_0x3240f3],_0x56dbe4[_0x3055fa(0x1ee)]=new Date()['toISOString'](),await writeBffLockFile(_0x23dd6c['lockFilePath'],_0x5ba018);const _0x3ee12a=resolveLocalFilePathFromLockKey(_0x23dd6c,_0x3240f3);let _0x1d8a41;await fileExists(_0x3ee12a)&&(_0x1d8a41=await moveToTrash(_0x23dd6c[_0x3055fa(0x1f1)],_0x23dd6c['trashDir'],_0x3ee12a),await cleanupEmptyDirectories(dirname(_0x3ee12a),_0x23dd6c[_0x3055fa(0x1db)]));await waitForDeleteSettlement(_0x23dd6c[_0x3055fa(0x1d3)],_0x2753b1[_0x3055fa(0x1d1)],_0x3240f3,_0x3ee12a),await sleep(0x96);const _0x911190={'deleted':_0x3240f3,'remoteId':_0x15dcf6[_0x3055fa(0x1fb)]};if(_0x1d8a41)_0x911190[_0x3055fa(0x1ff)]=_0x1d8a41;return{'ok':!![],'data':_0x911190,'message':_0x3055fa(0x1d0)+_0x3240f3+(_0x1d8a41?_0x3055fa(0x1e8):'')};}};function resolveDeleteTarget(_0x3adb19,_0x404418){const _0x5dc50a=a37_0x50eb36;if(_0x3adb19[_0x5dc50a(0x1fe)]('/')){const _0x4ddc3d=_0x404418[_0x5dc50a(0x1c9)](_0x3cb548=>_0x3cb548===_0x3adb19);if(!_0x4ddc3d)throw CliErrors[_0x5dc50a(0x1d8)](_0x5dc50a(0x1fa)+_0x3adb19);return _0x4ddc3d;}const _0x45c6df=_0x404418[_0x5dc50a(0x1f0)](_0x327993=>_0x327993[_0x5dc50a(0x1ef)]('/')['at'](-0x1)===_0x3adb19);if(_0x45c6df[_0x5dc50a(0x1f7)]===0x0)throw CliErrors[_0x5dc50a(0x1d8)](_0x5dc50a(0x1fa)+_0x3adb19);if(_0x45c6df[_0x5dc50a(0x1f7)]>0x1)throw CliErrors[_0x5dc50a(0x1d8)](_0x5dc50a(0x1df)+_0x3adb19+_0x5dc50a(0x1ec)+_0x45c6df[_0x5dc50a(0x1cd)](_0x18312d=>_0x5dc50a(0x1e5)+_0x18312d)['join']('\x0a'));return _0x45c6df[0x0];}async function moveToTrash(_0x106a8e,_0x3ac8a5,_0x35e0e8){const _0x19af8d=a37_0x50eb36,_0x3b2ba6=new Date()[_0x19af8d(0x1dc)]()[_0x19af8d(0x1d9)](/[:.]/g,'-'),_0x1aec86=relative(_0x106a8e,_0x35e0e8),_0x31bf97=join(_0x3ac8a5,_0x3b2ba6,_0x1aec86);return await mkdir(dirname(_0x31bf97),{'recursive':!![]}),await rename(_0x35e0e8,_0x31bf97),_0x31bf97;}async function cleanupEmptyDirectories(_0x545ed3,_0x204837){const _0x1100f6=a37_0x50eb36;let _0x546155=resolve(_0x545ed3);const _0x1b8cea=resolve(_0x204837);while(_0x546155['startsWith'](''+_0x1b8cea+sep)||_0x546155===_0x1b8cea){if(_0x546155===_0x1b8cea)return;try{const _0x3b879a=await readdir(_0x546155);if(_0x3b879a[_0x1100f6(0x1f7)]>0x0)return;await rmdir(_0x546155);}catch{return;}_0x546155=dirname(_0x546155);}}const DELETE_SETTLE_RETRY_COUNT=0x14,DELETE_SETTLE_DELAY_MS=0x64;async function waitForDeleteSettlement(_0x11500f,_0x5b03d0,_0x27950e,_0x1d6089){const _0x5511c1=a37_0x50eb36;for(let _0x3d6fb6=0x0;_0x3d6fb6<DELETE_SETTLE_RETRY_COUNT;_0x3d6fb6+=0x1){const _0x5311be=await readBffLockFile(_0x11500f),_0x4577a7=!!_0x5311be?.[_0x5511c1(0x1d5)]?.[_0x5b03d0]?.[_0x5511c1(0x1e1)]?.[_0x27950e],_0x432f2c=await fileExists(_0x1d6089);if(!_0x4577a7&&!_0x432f2c)return;await sleep(DELETE_SETTLE_DELAY_MS);}throw new Error(_0x5511c1(0x1f8)+_0x27950e+'.');}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a38_0x532ca5=a38_0xed54;(function(_0x4140b2,_0x3e7ad2){const _0x4dd535=a38_0xed54,_0x3375bb=_0x4140b2();while(!![]){try{const _0x4c8f9b=-parseInt(_0x4dd535(0xd6))/0x1+-parseInt(_0x4dd535(0xe1))/0x2*(parseInt(_0x4dd535(0xde))/0x3)+parseInt(_0x4dd535(0xcb))/0x4+parseInt(_0x4dd535(0xd2))/0x5*(parseInt(_0x4dd535(0xd0))/0x6)+parseInt(_0x4dd535(0xcc))/0x7+parseInt(_0x4dd535(0xcd))/0x8+-parseInt(_0x4dd535(0xd3))/0x9*(-parseInt(_0x4dd535(0xd7))/0xa);if(_0x4c8f9b===_0x3e7ad2)break;else _0x3375bb['push'](_0x3375bb['shift']());}catch(_0x22dcfe){_0x3375bb['push'](_0x3375bb['shift']());}}}(a38_0x56da,0xc8e8b));function a38_0x56da(){const _0x3eea1d=['138BBOeEg','number','21960fyQrfk','9wQoaPL','version','scriptContent','1519826xhNbrP','1213780zKFgqf','num','detail','read','(none)','description','verbose','4863yveBzZ','bff','scriptType','278UeVhRE','boolean','createdTime','functionName','updateUserName','132616FdTzDo','5663364KVTULt','12027744mRuwof','bool','Get\x20Backend\x20Function\x20script\x20details\x20by\x20ID'];a38_0x56da=function(){return _0x3eea1d;};return a38_0x56da();}import{getBffScriptInfo}from'../../core/api-client.js';function a38_0xed54(_0x1c079a,_0x5719ec){_0x1c079a=_0x1c079a-0xca;const _0x56da61=a38_0x56da();let _0xed5456=_0x56da61[_0x1c079a];return _0xed5456;}export const bffDetail={'service':a38_0x532ca5(0xdf),'command':a38_0x532ca5(0xd9),'description':a38_0x532ca5(0xcf),'risk':a38_0x532ca5(0xda),'flags':[{'name':'id','type':a38_0x532ca5(0xd1),'required':!![],'description':'Script\x20ID'},{'name':a38_0x532ca5(0xdd),'type':a38_0x532ca5(0xe2),'description':'Return\x20full\x20raw\x20script\x20object'}],async 'execute'(_0x4bbe9f){const _0x11d936=a38_0x532ca5,_0x4525eb=await getBffScriptInfo(_0x4bbe9f[_0x11d936(0xd8)]('id')),_0x21ddda=_0x4bbe9f[_0x11d936(0xce)]('verbose');if(_0x21ddda)return{'ok':!![],'data':_0x4525eb};return{'ok':!![],'data':{'id':_0x4525eb['id'],'functionName':_0x4525eb[_0x11d936(0xe4)]??'','version':_0x4525eb[_0x11d936(0xd4)]??'','updateUserName':_0x4525eb[_0x11d936(0xca)]??'','appCode':_0x4525eb['appCode'],'scriptType':_0x4525eb[_0x11d936(0xe0)],'description':_0x4525eb[_0x11d936(0xdc)]||_0x11d936(0xdb),'createdTime':_0x4525eb[_0x11d936(0xe3)]??'','updatedTime':_0x4525eb['updatedTime']??'','scriptContent':_0x4525eb[_0x11d936(0xd5)]??''}};}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x57379c,_0x6fb29b){const _0x200395=a39_0xf05b,_0x3cb6c=_0x57379c();while(!![]){try{const _0x45c120=parseInt(_0x200395(0xb7))/0x1+parseInt(_0x200395(0xba))/0x2*(-parseInt(_0x200395(0xbf))/0x3)+-parseInt(_0x200395(0xb8))/0x4*(-parseInt(_0x200395(0xc0))/0x5)+parseInt(_0x200395(0xbd))/0x6+parseInt(_0x200395(0xbc))/0x7+-parseInt(_0x200395(0xbb))/0x8+-parseInt(_0x200395(0xbe))/0x9*(parseInt(_0x200395(0xb9))/0xa);if(_0x45c120===_0x6fb29b)break;else _0x3cb6c['push'](_0x3cb6c['shift']());}catch(_0x52028a){_0x3cb6c['push'](_0x3cb6c['shift']());}}}(a39_0x1776,0x61097));import{bffList}from'../../commands/bff/list.js';function a39_0x1776(){const _0x295723=['2331822EoIwXs','5GRThzj','268805mYtqRb','3115516sXXtUH','11233070tNOobb','2PIWJtr','40560EjUwYt','5010852AjQXVv','3237564rVgKZs','9SueEqs'];a39_0x1776=function(){return _0x295723;};return a39_0x1776();}import{bffDetail}from'../../commands/bff/detail.js';function a39_0xf05b(_0x105fa1,_0x2162b1){_0x105fa1=_0x105fa1-0xb7;const _0x17769a=a39_0x1776();let _0xf05b48=_0x17769a[_0x105fa1];return _0xf05b48;}import{bffStatus}from'../../commands/bff/status.js';import{bffCreate}from'../../commands/bff/create.js';import{bffPush}from'../../commands/bff/push.js';import{bffPull}from'../../commands/bff/pull.js';import{bffDelete}from'../../commands/bff/delete.js';import{bffLogs}from'../../commands/bff/logs.js';export const bffDefinitions=[bffList,bffDetail,bffLogs,bffStatus,bffCreate,bffPush,bffPull,bffDelete];
|
package/lib/commands/bff/list.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a40_0x4738e3=a40_0x20d5;(function(_0x3a2200,_0x1cd64b){const _0x431a4b=a40_0x20d5,_0x404ae2=_0x3a2200();while(!![]){try{const _0x3461df=-parseInt(_0x431a4b(0xe8))/0x1+-parseInt(_0x431a4b(0xe5))/0x2*(-parseInt(_0x431a4b(0xe4))/0x3)+-parseInt(_0x431a4b(0xe7))/0x4+-parseInt(_0x431a4b(0xe9))/0x5+parseInt(_0x431a4b(0xd8))/0x6*(parseInt(_0x431a4b(0xda))/0x7)+parseInt(_0x431a4b(0xd2))/0x8+-parseInt(_0x431a4b(0xde))/0x9;if(_0x3461df===_0x1cd64b)break;else _0x404ae2['push'](_0x404ae2['shift']());}catch(_0x57740e){_0x404ae2['push'](_0x404ae2['shift']());}}}(a40_0x5725,0xcb6bc));function a40_0x5725(){const _0x366629=['type','7209153VEnYNW','name','bool','list','COMMON','Return\x20full\x20script\x20objects','11679AkTJhd','810ErxNGY','Filter\x20by\x20script\x20name','3686948IKivuy','829297fxQTwa','639940NKrJLD','scriptType','Script\x20type\x20filter','description','3586944retSWI','boolean','verbose','(unnamed)','str','length','8929308eaEPYo','List\x20Backend\x20Function\x20scripts','7hbpyyI','No\x20Backend\x20Function\x20scripts\x20found.','ENDPOINT'];a40_0x5725=function(){return _0x366629;};return a40_0x5725();}function a40_0x20d5(_0x412ff4,_0x4a2aa1){_0x412ff4=_0x412ff4-0xd0;const _0x57257e=a40_0x5725();let _0x20d5ee=_0x57257e[_0x412ff4];return _0x20d5ee;}import{listBffScripts}from'../../core/api-client.js';export const bffList={'service':'bff','command':a40_0x4738e3(0xe1),'description':a40_0x4738e3(0xd9),'risk':'read','flags':[{'name':'type','type':'string','description':a40_0x4738e3(0xd0),'default':a40_0x4738e3(0xdc),'enum':['ENDPOINT',a40_0x4738e3(0xe2)]},{'name':a40_0x4738e3(0xdf),'type':'string','description':a40_0x4738e3(0xe6)},{'name':a40_0x4738e3(0xd4),'type':a40_0x4738e3(0xd3),'description':a40_0x4738e3(0xe3)}],async 'execute'(_0x5963c3){const _0x3ff205=a40_0x4738e3,_0x2c9147=await listBffScripts(_0x5963c3['appCode'],_0x5963c3['str'](_0x3ff205(0xdd)),{'scriptName':_0x5963c3[_0x3ff205(0xd6)](_0x3ff205(0xdf))||undefined}),_0x14e66c=_0x5963c3[_0x3ff205(0xe0)](_0x3ff205(0xd4));return{'ok':!![],'data':_0x14e66c?_0x2c9147:_0x2c9147['map'](_0x9dd5c1=>({'id':_0x9dd5c1['id'],'functionName':_0x9dd5c1['functionName']??'','description':_0x9dd5c1[_0x3ff205(0xd1)]||_0x3ff205(0xd5),'scriptType':_0x9dd5c1[_0x3ff205(0xea)]})),'message':_0x2c9147[_0x3ff205(0xd7)]===0x0?_0x3ff205(0xdb):undefined};}};
|
package/lib/commands/bff/logs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
const a41_0x2fd151=a41_0x593a;(function(_0x4a7ed3,_0x553ceb){const _0x37a94b=a41_0x593a,_0x351b6d=_0x4a7ed3();while(!![]){try{const _0x21c64b=parseInt(_0x37a94b(0xf2))/0x1*(-parseInt(_0x37a94b(0xeb))/0x2)+-parseInt(_0x37a94b(0xf1))/0x3*(-parseInt(_0x37a94b(0xf5))/0x4)+parseInt(_0x37a94b(0xef))/0x5*(-parseInt(_0x37a94b(0xe2))/0x6)+parseInt(_0x37a94b(0xfd))/0x7*(-parseInt(_0x37a94b(0xfe))/0x8)+-parseInt(_0x37a94b(0xd7))/0x9+-parseInt(_0x37a94b(0xe5))/0xa*(parseInt(_0x37a94b(0xd2))/0xb)+parseInt(_0x37a94b(0xe1))/0xc;if(_0x21c64b===_0x553ceb)break;else _0x351b6d['push'](_0x351b6d['shift']());}catch(_0xe043af){_0x351b6d['push'](_0x351b6d['shift']());}}}(a41_0xfe55,0xf2ed8));import{APPCODE_FLAG_OPTIONAL}from'../../commands/common/flags.js';function a41_0x593a(_0x3ec895,_0xb00c42){_0x3ec895=_0x3ec895-0xce;const _0xfe55dd=a41_0xfe55();let _0x593ae0=_0xfe55dd[_0x3ec895];return _0x593ae0;}import{searchBffScriptLogs}from'../../core/api-client.js';import{CliErrors}from'../../errors.js';const DEFAULT_SINCE_MINUTES=0x1e,DEFAULT_LIMIT=0xc8,MAX_LIMIT=0x3e8,LOG_LEVELS=[a41_0x2fd151(0xde),a41_0x2fd151(0xe6),a41_0x2fd151(0xf0),a41_0x2fd151(0xcf)];export function resolveBffLogQuery(_0x5e617a,_0x52df58=Date[a41_0x2fd151(0xe7)]()){const _0x2974f8=a41_0x2fd151,_0x182a9f=_0x5e617a['flag']('since'),_0xd1bf8e=_0x5e617a[_0x2974f8(0xf7)](_0x2974f8(0xd6)),_0x3b2e8e=_0x5e617a['flag'](_0x2974f8(0x101));if(_0x182a9f!==undefined&&_0xd1bf8e!==undefined)throw CliErrors['validation'](_0x2974f8(0xd3));const _0x46ec05=_0x3b2e8e===undefined?_0x52df58:readPositiveInteger(_0x5e617a['num'](_0x2974f8(0x101)),_0x2974f8(0xfa)),_0x1642ac=_0xd1bf8e===undefined?_0x46ec05-readSinceMinutes(_0x5e617a)*0xea60:readPositiveInteger(_0x5e617a['num'](_0x2974f8(0xd6)),_0x2974f8(0xf6));if(_0x1642ac<=0x0)throw CliErrors[_0x2974f8(0xd5)](_0x2974f8(0xec));if(_0x1642ac>_0x46ec05)throw CliErrors[_0x2974f8(0xd5)](_0x2974f8(0xce));const _0x1cf838=readPositiveInteger(_0x5e617a[_0x2974f8(0xe0)](_0x2974f8(0xdd),DEFAULT_LIMIT),_0x2974f8(0xf4));if(_0x1cf838>MAX_LIMIT)throw CliErrors['validation'](_0x2974f8(0xff)+MAX_LIMIT+'.');const _0xa70fc8=_0x5e617a['str'](_0x2974f8(0xf3))[_0x2974f8(0xdb)]()[_0x2974f8(0xd0)]()||undefined,_0x3d6a0e=_0x5e617a[_0x2974f8(0xea)](_0x2974f8(0xd1))[_0x2974f8(0xdb)]()||undefined;return{'appCode':_0x5e617a[_0x2974f8(0xd9)],'startTime':_0x1642ac,'endTime':_0x46ec05,..._0xd1bf8e===undefined?{'sinceMinutes':readSinceMinutes(_0x5e617a)}:{},..._0xa70fc8?{'level':_0xa70fc8}:{},..._0x3d6a0e?{'keyword':_0x3d6a0e}:{},'limit':_0x1cf838};}function a41_0xfe55(){const _0x41d868=['6378300vmaDxG','--start-time','flag','isSafeInteger','logs','--end-time','since','Query\x20start\x20time\x20as\x20a\x20Unix\x20timestamp\x20in\x20milliseconds','148568lmjLjp','560CeZozs','--limit\x20must\x20be\x20between\x201\x20and\x20','Query\x20end\x20time\x20as\x20a\x20Unix\x20timestamp\x20in\x20milliseconds\x20(default:\x20now)','end-time','--start-time\x20must\x20be\x20less\x20than\x20or\x20equal\x20to\x20--end-time.','ERROR','toUpperCase','keyword','11IhdVHa','--since\x20cannot\x20be\x20combined\x20with\x20--start-time.','\x20must\x20be\x20a\x20positive\x20integer.','validation','start-time','17573022hUEiSE','Filter\x20by\x20log\x20level','appCode','Filter\x20formatted\x20log\x20lines\x20by\x20keyword','trim','Found\x20','limit','DEBUG','Minutes\x20before\x20the\x20end\x20time\x20to\x20query\x20(default:\x20','num','72778872NQGXGw','2430rmdaLV','No\x20Backend\x20Function\x20logs\x20found\x20for\x20the\x20selected\x20range.','\x20Backend\x20Function\x20log\x20line(s).','2656420xEIoAQ','INFO','now','string','Maximum\x20log\x20lines\x20to\x20return\x20(1-','str','2AWAqYQ','The\x20resolved\x20log\x20start\x20time\x20must\x20be\x20greater\x20than\x200.','number','length','18235PHdvKS','WARN','3CyuOXI','1483534AqHdbZ','level','--limit'];a41_0xfe55=function(){return _0x41d868;};return a41_0xfe55();}function readSinceMinutes(_0x50821c){const _0x140376=a41_0x2fd151;return readPositiveInteger(_0x50821c['num'](_0x140376(0xfb),DEFAULT_SINCE_MINUTES),'--since');}function readPositiveInteger(_0x55e898,_0x55d8f2){const _0x3e6872=a41_0x2fd151;if(!Number[_0x3e6872(0xf8)](_0x55e898)||_0x55e898<=0x0)throw CliErrors[_0x3e6872(0xd5)](_0x55d8f2+_0x3e6872(0xd4));return _0x55e898;}export const bffLogs={'service':'bff','command':a41_0x2fd151(0xf9),'description':'Query\x20recent\x20Backend\x20Function\x20runtime\x20logs\x20for\x20development\x20debugging','risk':'read','structuredErrors':!![],'flags':[APPCODE_FLAG_OPTIONAL,{'name':a41_0x2fd151(0xfb),'type':a41_0x2fd151(0xed),'description':a41_0x2fd151(0xdf)+DEFAULT_SINCE_MINUTES+')'},{'name':a41_0x2fd151(0xd6),'type':'number','description':a41_0x2fd151(0xfc)},{'name':a41_0x2fd151(0x101),'type':a41_0x2fd151(0xed),'description':a41_0x2fd151(0x100)},{'name':'level','type':a41_0x2fd151(0xe8),'description':a41_0x2fd151(0xd8),'enum':LOG_LEVELS},{'name':'keyword','type':a41_0x2fd151(0xe8),'description':a41_0x2fd151(0xda)},{'name':a41_0x2fd151(0xdd),'type':a41_0x2fd151(0xed),'description':a41_0x2fd151(0xe9)+MAX_LIMIT+')','default':DEFAULT_LIMIT}],async 'validate'(_0x101a7f){resolveBffLogQuery(_0x101a7f);},async 'execute'(_0x3a1d1f){const _0x27c48b=a41_0x2fd151,_0x3c2cc5=resolveBffLogQuery(_0x3a1d1f),{sinceMinutes:_0x3566fd,..._0x4042e9}=_0x3c2cc5,_0x214c4e=await searchBffScriptLogs(_0x4042e9);return{'ok':!![],'data':{'query':_0x3c2cc5,'count':_0x214c4e['length'],'logs':_0x214c4e},'message':_0x214c4e[_0x27c48b(0xee)]===0x0?_0x27c48b(0xe3):_0x27c48b(0xdc)+_0x214c4e[_0x27c48b(0xee)]+_0x27c48b(0xe4)};}};
|
package/lib/commands/bff/pull.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const a42_0x346709=a42_0x3677;(function(_0x14845d,_0x212d8b){const _0x4a95a6=a42_0x3677,_0x44b4d7=_0x14845d();while(!![]){try{const _0x63e061=parseInt(_0x4a95a6(0x169))/0x1+-parseInt(_0x4a95a6(0x10b))/0x2*(-parseInt(_0x4a95a6(0x146))/0x3)+parseInt(_0x4a95a6(0x117))/0x4+-parseInt(_0x4a95a6(0x112))/0x5*(-parseInt(_0x4a95a6(0x118))/0x6)+-parseInt(_0x4a95a6(0x17d))/0x7+parseInt(_0x4a95a6(0x14b))/0x8*(-parseInt(_0x4a95a6(0x11e))/0x9)+-parseInt(_0x4a95a6(0x134))/0xa;if(_0x63e061===_0x212d8b)break;else _0x44b4d7['push'](_0x44b4d7['shift']());}catch(_0x597bc2){_0x44b4d7['push'](_0x44b4d7['shift']());}}}(a42_0x4fd5,0xaa6cb));function a42_0x4fd5(){const _0x3c3915=['alias','rollback','boolean','functions','bool','remoteId','scriptType','\x20--name\x20','map','\x22:\x20','Force\x20overwrite\x20local\x20unsynced\x20changes','\x22.\x20Resolve\x20the\x20lock\x20entries\x20manually\x20before\x20retrying.','.hook-directory-migrate-','22hSQtIg','push','HOOK/','Pull\x20only\x20this\x20script\x20type','delete','filePath','stringify','5BmBAOB','datasetCode','Cannot\x20migrate\x20HOOK\x20lock\x20key\x20\x22','\x20pulled','\x22:\x20both\x20target\x20\x22','1956324QaZZCZ','4153422HexpIp','hookLocation','appCode','keyChanges','Cannot\x20migrate\x20HOOK\x20directories\x20\x22','HOOK','26127rRiaOy','code','type','\x20Recovery\x20errors:\x20','write','utf8','pull','NFC','dev','apps','oldDirectoryPath','\x22:\x20its\x20target\x20\x22','migrations','selectedAppName','all','Would\x20inspect\x20','oldLockKey','bff','some','\x22\x20not\x20found\x20after\x20ensureLockScope.','Could\x20not\x20restore\x20HOOK\x20directory\x20\x22','sourceDirectoryPathByNewDirectory','12919010aaQFNq','\x20conflict','str','newLockKey','require','\x22:\x20it\x20is\x20tracked\x20by\x20multiple\x20Datasets.','length','ino','move','newDirectoryPath','Cannot\x20migrate\x20unsafe\x20HOOK\x20directory\x20\x22','Failed\x20to\x20write\x20the\x20Backend\x20Function\x20lock\x20file;\x20local\x20changes\x20could\x20not\x20be\x20completely\x20rolled\x20back.','Cannot\x20migrate\x20HOOK\x20directory\x20\x22','Failed\x20to\x20migrate\x20HOOK\x20directories;\x20local\x20changes\x20could\x20not\x20be\x20completely\x20rolled\x20back.','toISOString','cancelled','Failed\x20to\x20write\x20local\x20script\x20\x22','parse','276063xdZyFC','¤tPage=1&pageSize=','\x22\x20to\x20\x22','lockKey','scriptContent','2776ncQskd','\x20--format\x20compress','mode','\x22:\x20the\x20destination\x20is\x20another\x20Dataset\x20alias.\x20Resolve\x20the\x20directory\x20manually\x20before\x20retrying.','COMMON','\x22:\x20target\x20lock\x20key\x20is\x20already\x20bound\x20to\x20another\x20script.','scriptsRoot','would_pull','message','toLowerCase','\x22\x20is\x20another\x20legacy\x20key\x20being\x20migrated.\x20Resolve\x20the\x20lock\x20entries\x20manually\x20before\x20retrying.','apiDir','flatMap','nonInteractive','string','scriptsRootDir','skipped','Force\x20pull\x20will\x20overwrite\x20local\x20unsynced\x20changes.\x20Continue?\x20[y/N]\x20','content','\x22:\x20it\x20is\x20now\x20another\x20Dataset\x20alias\x20and\x20contains\x20untracked\x20scripts.\x20Resolve\x20the\x20directory\x20manually\x20before\x20retrying.','split','\x22\x20and\x20\x22','\x22:\x20the\x20target\x20directory\x20already\x20exists.\x20Resolve\x20the\x20directories\x20and\x20retry.','mergedCli','profileName','close','Cannot\x20migrate\x20HOOK\x20lock\x20keys\x20\x22','lastSync','functionName','force','1374882ElyWzj','has','ENOENT','reverse','projectedFunctions','\x20bff\x20push\x20--type\x20','stdin','\x20failed','trim','sourceFilePathByNewLockKey','operationType','entry','--type\x20must\x20be\x20COMMON,\x20ENDPOINT,\x20or\x20HOOK.','Could\x20not\x20restore\x20local\x20script\x20\x22','read','question','.js','functionNode','currentApp','Force\x20pull\x20cancelled.','3997910EMHxTj','set','&type=','newDirectory','lockFilePath','case-rename','join','Cannot\x20migrate\x20unsafe\x20HOOK\x20lock\x20key\x20\x22','rekey','Lock\x20scope\x20for\x20app\x20\x22','existed','push_local','\x22:\x20its\x20target\x20directory\x20is\x20unsafe.','\x20resolution','Remote\x20script\x20missing\x20id.','unresolvable\x20target\x20path','requires','\x22\x20from\x20\x22','oldDirectory','includes','defaultApp','entries','get','validation','BFF_LOCAL_UNSYNCED'];a42_0x4fd5=function(){return _0x3c3915;};return a42_0x4fd5();}import{createInterface}from'node:readline';import{readFile,rename,stat,unlink,writeFile}from'node:fs/promises';import{randomUUID}from'node:crypto';import{dirname,join}from'node:path';import{BFF_LIST_PAGE_SIZE,listBffScripts,getBffScriptStatistics}from'../../core/api-client.js';import{loadAliasMap}from'../../core/alias-resolver.js';import{resolveApiModelSource}from'../../api/model-source.js';import{loadBffProjectConfig}from'../../core/bff/config.js';import{createHookLocationMap,directoryExists,ensureParentDirectory,fileExists,isSafeLockKeySegment,normalizeBffType,resolveLocalFilePathFromLockKey,resolveRemoteScriptTarget,scanLocalBffFunctions}from'../../core/bff/file-system.js';import{computeContentHash,computeFileHash}from'../../core/bff/hash.js';import{assertUnambiguousHookAliases}from'../../core/bff/hook-directory.js';import{createEmptyBffLock,ensureLockScope,readBffLockFile,writeBffLockFile}from'../../core/bff/lock.js';import{CliErrors}from'../../errors.js';import{CLI_BIN_NAME}from'../../constant/cli.js';export const bffPull={'service':a42_0x346709(0x12f),'command':a42_0x346709(0x124),'description':'Pull\x20remote\x20Backend\x20Function\x20scripts\x20to\x20local','risk':a42_0x346709(0x177),'structuredErrors':!![],'flags':[{'name':a42_0x346709(0x120),'type':a42_0x346709(0x159),'description':a42_0x346709(0x10e),'enum':[a42_0x346709(0x14f),'ENDPOINT','HOOK']},{'name':a42_0x346709(0x168),'type':a42_0x346709(0x100),'description':a42_0x346709(0x108)}],async 'dryRun'(_0x2026ef){const _0x577863=a42_0x346709,_0x258c7f=loadBffProjectConfig(_0x2026ef[_0x577863(0x11a)]),_0x15601d=await readBffLockFile(_0x258c7f[_0x577863(0x181)]),{appLock:_0x4e697d}=ensureLockScope(_0x15601d??createEmptyBffLock(),_0x2026ef['appCode'],_0x258c7f[_0x577863(0x151)],_0x577863(0x124)),_0x4a881b=normalizeBffType(_0x2026ef[_0x577863(0x136)](_0x577863(0x120)))??undefined,[_0x343b29,_0x71614c]=await Promise['all']([listBffScripts(_0x2026ef['appCode'],_0x4a881b),getBffScriptStatistics(_0x2026ef[_0x577863(0x11a)])]),_0x245448=_0x343b29['some'](_0x28f6ba=>normalizeBffType(_0x28f6ba['scriptType'])===_0x577863(0x11d)),_0x4b6a88=_0x245448?buildDatasetCodeToAliasMap(_0x2026ef[_0x577863(0x156)],_0x2026ef['appCode'],_0x2026ef[_0x577863(0x12b)]||_0x2026ef['mergedCli']?.[_0x577863(0x17b)]||_0x2026ef['mergedCli']?.[_0x577863(0xf9)]):new Map(),_0x29e478=_0x245448?await planHookDirectoryMigration(_0x258c7f,_0x4e697d,_0x4b6a88,await scanLocalBffFunctions(_0x258c7f,'HOOK')):undefined,_0x22de7c=createHookLocationMap(_0x71614c),_0x161bed=[];for(const _0x1e07c8 of _0x343b29){const _0x4b4002=resolveRemoteScriptTarget(_0x258c7f,_0x1e07c8,_0x22de7c,_0x29e478?.[_0x577863(0x16d)]??_0x4e697d['functions'],_0x4b6a88);if(!_0x4b4002){_0x161bed[_0x577863(0x10c)]({'scriptType':_0x1e07c8[_0x577863(0x104)],'functionName':_0x1e07c8['functionName']??'','status':_0x577863(0x15b),'reason':_0x577863(0x18c)});continue;}const _0x9f679c=(_0x29e478?.[_0x577863(0x16d)]??_0x4e697d[_0x577863(0x101)])[_0x4b4002[_0x577863(0x149)]],_0x200703=_0x1e07c8[_0x577863(0x14a)]!=null?computeContentHash(_0x1e07c8[_0x577863(0x14a)]):undefined,_0x2cbf6e=await hasUnsyncedLocalChanges(resolveMigratedSourceFilePath(_0x29e478,_0x4b4002)??_0x4b4002[_0x577863(0x110)],_0x9f679c,_0x200703),_0x3c00cb=_0x2cbf6e?localUnsyncedConflict(_0x4b4002,_0x1e07c8['id']):undefined;_0x161bed[_0x577863(0x10c)]({'lockKey':_0x4b4002[_0x577863(0x149)],'filePath':_0x4b4002[_0x577863(0x110)],'remoteId':_0x1e07c8['id']??null,'status':_0x3c00cb?'conflict':_0x577863(0x152),..._0x3c00cb?{'conflict':_0x3c00cb}:{},..._0x4b4002['hookLocation']?{'alias':_0x4b4002[_0x577863(0x119)]['alias']??null,'datasetCode':_0x4b4002[_0x577863(0x119)]['datasetCode'],'operationType':_0x4b4002[_0x577863(0x119)][_0x577863(0x173)],'functionNode':_0x4b4002['hookLocation'][_0x577863(0x17a)]}:{}});}return{'method':'GET','url':'/api/management/library/scripts/list?appCode='+_0x2026ef[_0x577863(0x11a)]+(_0x4a881b?_0x577863(0x17f)+_0x4a881b:'')+_0x577863(0x147)+BFF_LIST_PAGE_SIZE,'body':{'appCode':_0x2026ef[_0x577863(0x11a)],'filterType':_0x4a881b??null,..._0x29e478&&_0x29e478[_0x577863(0x12a)][_0x577863(0x13a)]>0x0?{'hookDirectoryMigrations':_0x29e478['migrations'][_0x577863(0x106)](_0x5374b7=>({'from':_0x5374b7[_0x577863(0xf7)],'to':_0x5374b7[_0x577863(0x180)]}))}:{},'files':_0x161bed},'description':_0x577863(0x12d)+_0x161bed[_0x577863(0x13a)]+'\x20remote\x20Backend\x20Function\x20script(s)\x20for\x20pull'};},async 'execute'(_0xe67e87){const _0x258be4=a42_0x346709,_0x4d18a3=loadBffProjectConfig(_0xe67e87[_0x258be4(0x11a)]),_0x1e5457=await readBffLockFile(_0x4d18a3[_0x258be4(0x181)]),{lockData:_0x19da7f,appLock:_0x58e51b}=ensureLockScope(_0x1e5457??createEmptyBffLock(),_0xe67e87[_0x258be4(0x11a)],_0x4d18a3[_0x258be4(0x151)],_0x258be4(0x124)),_0x7e8f76=normalizeBffType(_0xe67e87[_0x258be4(0x136)]('type'))??undefined;if(_0xe67e87['str'](_0x258be4(0x120))&&!_0x7e8f76)throw CliErrors[_0x258be4(0xfc)](_0x258be4(0x175));const [_0x2f71e0,_0x4c2f11]=await Promise['all']([listBffScripts(_0xe67e87['appCode'],_0x7e8f76),getBffScriptStatistics(_0xe67e87[_0x258be4(0x11a)])]);if(_0x2f71e0[_0x258be4(0x13a)]===0x0)return{'ok':!![],'data':{'pulled':[],'skipped':[],'conflicts':[],'failed':[]},'message':'No\x20remote\x20Backend\x20Function\x20scripts\x20found.'};const _0x10a193=_0xe67e87[_0x258be4(0x102)](_0x258be4(0x168));if(_0x10a193&&!_0xe67e87[_0x258be4(0x158)]){const _0x2440fd=await confirmForce();if(!_0x2440fd)throw CliErrors[_0x258be4(0x143)](_0x258be4(0x17c));}if(_0x10a193&&_0xe67e87[_0x258be4(0x158)]){}const _0x2fffd1=_0x2f71e0[_0x258be4(0x130)](_0x2cc5da=>normalizeBffType(_0x2cc5da[_0x258be4(0x104)])===_0x258be4(0x11d)),_0x10e3b5=_0x2fffd1?buildDatasetCodeToAliasMap(_0xe67e87[_0x258be4(0x156)],_0xe67e87[_0x258be4(0x11a)],_0xe67e87[_0x258be4(0x12b)]||_0xe67e87[_0x258be4(0x162)]?.[_0x258be4(0x17b)]||_0xe67e87['mergedCli']?.[_0x258be4(0xf9)]):new Map(),_0x719014=createHookLocationMap(_0x4c2f11),_0x72d963=JSON[_0x258be4(0x145)](JSON[_0x258be4(0x111)](_0x19da7f)),_0x71452f=_0xe67e87['appCode'],_0x7d0b00=_0x72d963[_0x258be4(0x127)][_0x71452f];if(!_0x7d0b00)throw new Error(_0x258be4(0x186)+_0x71452f+_0x258be4(0x131));const _0x3003c7=_0x2fffd1?await applyHookDirectoryMigration(await planHookDirectoryMigration(_0x4d18a3,_0x7d0b00,_0x10e3b5,await scanLocalBffFunctions(_0x4d18a3,_0x258be4(0x11d))),_0x7d0b00):undefined,_0x196aba=createPullFileTransaction(),_0x56f7b5=[],_0x53ee36=[],_0x5a94ec=[],_0x5dee9e=[];for(const _0x4e6b14 of _0x2f71e0){const _0x272c5c=resolveRemoteScriptTarget(_0x4d18a3,_0x4e6b14,_0x719014,_0x7d0b00[_0x258be4(0x101)],_0x10e3b5);if(!_0x272c5c){_0x53ee36[_0x258be4(0x10c)]({'lockKey':_0x4e6b14['scriptType']+'/'+_0x4e6b14[_0x258be4(0x167)],'reason':_0x258be4(0x18c)});continue;}const _0x275491=_0x7d0b00[_0x258be4(0x101)][_0x272c5c[_0x258be4(0x149)]];try{if(!_0x4e6b14['id'])throw new Error(_0x258be4(0x18b));if(_0x4e6b14[_0x258be4(0x14a)]==null)throw new Error('Remote\x20script\x20missing\x20content.');const _0x409bef=_0x4e6b14['scriptContent'],_0x2840da=computeContentHash(_0x409bef);if(!_0x10a193){const _0x3ee432=await hasUnsyncedLocalChanges(_0x272c5c[_0x258be4(0x110)],_0x275491,_0x2840da);if(_0x3ee432){_0x5a94ec[_0x258be4(0x10c)](localUnsyncedConflict(_0x272c5c,_0x4e6b14['id']));continue;}}await _0x196aba[_0x258be4(0x122)](_0x272c5c['filePath'],_0x409bef);const _0xac86f6={'hash':_0x2840da,'remoteId':_0x4e6b14['id'],'version':_0x4e6b14['version']};_0x272c5c[_0x258be4(0x120)]===_0x258be4(0x11d)&&_0x272c5c[_0x258be4(0x119)]&&(_0xac86f6[_0x258be4(0xfe)]=_0x272c5c[_0x258be4(0x119)][_0x258be4(0xfe)],_0xac86f6[_0x258be4(0x113)]=_0x272c5c['hookLocation'][_0x258be4(0x113)],_0xac86f6[_0x258be4(0x173)]=_0x272c5c['hookLocation'][_0x258be4(0x173)],_0xac86f6['functionNode']=_0x272c5c[_0x258be4(0x119)][_0x258be4(0x17a)]),_0x7d0b00[_0x258be4(0x101)][_0x272c5c[_0x258be4(0x149)]]=_0xac86f6,_0x56f7b5[_0x258be4(0x10c)]({'lockKey':_0x272c5c['lockKey'],'remoteId':_0x4e6b14['id']});}catch(_0x27bebf){_0x5dee9e[_0x258be4(0x10c)]({'lockKey':_0x272c5c[_0x258be4(0x149)],'error':_0x27bebf instanceof Error?_0x27bebf[_0x258be4(0x153)]:String(_0x27bebf)});}}_0x7d0b00[_0x258be4(0x166)]=new Date()[_0x258be4(0x142)]();try{await writeBffLockFile(_0x4d18a3['lockFilePath'],_0x72d963);}catch(_0x2bbfc6){const _0x1501e5=[...await _0x196aba[_0x258be4(0xff)](),...await _0x3003c7?.['rollback']()??[]];throw withRollbackErrors(_0x2bbfc6,_0x258be4(0x13f),_0x1501e5);}return{'ok':_0x5dee9e['length']===0x0,'data':{'pulled':_0x56f7b5,'skipped':_0x53ee36,'conflicts':_0x5a94ec,'failed':_0x5dee9e},'message':formatPullMessage(_0x56f7b5[_0x258be4(0x13a)],_0x53ee36[_0x258be4(0x13a)],_0x5a94ec['length'],_0x5dee9e[_0x258be4(0x13a)])};}};function localUnsyncedConflict(_0x52ef4f,_0x4c1d42){const _0x3c8e5d=a42_0x346709,_0x1e0f12=_0x52ef4f[_0x3c8e5d(0x149)][_0x3c8e5d(0x15f)]('/')['at'](-0x1);return{'code':_0x3c8e5d(0xfd),'lockKey':_0x52ef4f['lockKey'],'filePath':_0x52ef4f[_0x3c8e5d(0x110)],..._0x4c1d42!=null?{'remoteId':_0x4c1d42}:{},'message':'Local\x20script\x20differs\x20from\x20the\x20last\x20pulled\x20version.\x20Review\x20it\x20before\x20choosing\x20the\x20source\x20of\x20truth.','nextAction':{'action':_0x3c8e5d(0x188),'command':CLI_BIN_NAME+_0x3c8e5d(0x16e)+_0x52ef4f['type']+_0x3c8e5d(0x105)+_0x1e0f12+_0x3c8e5d(0x14c),'requiresReview':!![],'message':'If\x20the\x20reviewed\x20local\x20script\x20should\x20win,\x20run\x20this\x20command\x20to\x20update\x20the\x20remote\x20script.\x20Do\x20not\x20use\x20--force\x20to\x20resolve\x20a\x20content\x20conflict.'}};}function formatPullMessage(_0x3c8336,_0x2cfd9b,_0x3deef3,_0x13e951){const _0x5372f7=a42_0x346709,_0x93e2ca=['Pull\x20complete:\x20'+_0x3c8336+_0x5372f7(0x115),_0x2cfd9b+'\x20skipped'];_0x3deef3>0x0&&_0x93e2ca[_0x5372f7(0x10c)](_0x3deef3+_0x5372f7(0x135)+(_0x3deef3===0x1?'':'s')+'\x20'+(_0x3deef3===0x1?_0x5372f7(0x18d):_0x5372f7(0x138))+_0x5372f7(0x18a));if(_0x13e951>0x0)_0x93e2ca['push'](_0x13e951+_0x5372f7(0x170));return _0x93e2ca[_0x5372f7(0x183)](',\x20');}async function hasUnsyncedLocalChanges(_0x26a4a2,_0x3ac702,_0x4ad5f7){if(!await fileExists(_0x26a4a2))return![];const _0x55ee36=await computeFileHash(_0x26a4a2);if(!_0x3ac702)return _0x4ad5f7?_0x55ee36!==_0x4ad5f7:!![];return _0x55ee36!==_0x3ac702['hash'];}function createPullFileTransaction(){const _0x3e5800=new Map(),_0x274e5b=async(_0x5d4b58,_0x4bb3bb)=>{const _0x4bfd80=a42_0x3677;try{if(_0x4bb3bb[_0x4bfd80(0x187)])await ensureParentDirectory(_0x5d4b58),await writeFile(_0x5d4b58,_0x4bb3bb[_0x4bfd80(0x15d)]);else try{await unlink(_0x5d4b58);}catch(_0x2dfb87){if(_0x2dfb87['code']!=='ENOENT')throw _0x2dfb87;}return undefined;}catch(_0x56a07b){return _0x56a07b instanceof Error?_0x56a07b:new Error(String(_0x56a07b));}};return{async 'write'(_0x13d65c,_0x2eb6ee){const _0x4ff43e=a42_0x3677;if(!_0x3e5800[_0x4ff43e(0x16a)](_0x13d65c))try{_0x3e5800[_0x4ff43e(0x17e)](_0x13d65c,{'existed':!![],'content':await readFile(_0x13d65c)});}catch(_0x2fdf69){if(_0x2fdf69[_0x4ff43e(0x11f)]!==_0x4ff43e(0x16b))throw _0x2fdf69;_0x3e5800[_0x4ff43e(0x17e)](_0x13d65c,{'existed':![]});}try{await ensureParentDirectory(_0x13d65c),await writeFile(_0x13d65c,_0x2eb6ee,_0x4ff43e(0x123));}catch(_0x28eca4){const _0x2b8585=await _0x274e5b(_0x13d65c,_0x3e5800[_0x4ff43e(0xfb)](_0x13d65c));if(!_0x2b8585)_0x3e5800[_0x4ff43e(0x10f)](_0x13d65c);throw withRollbackErrors(_0x28eca4,_0x4ff43e(0x144)+_0x13d65c+'\x22.',_0x2b8585?[_0x2b8585]:[]);}},async 'rollback'(){const _0x2aee4c=a42_0x3677,_0xb11421=[];for(const [_0x3f497c,_0x3b21b9]of[..._0x3e5800[_0x2aee4c(0xfa)]()]['reverse']()){const _0x1089b4=await _0x274e5b(_0x3f497c,_0x3b21b9);_0x1089b4&&_0xb11421[_0x2aee4c(0x10c)](new Error(_0x2aee4c(0x176)+_0x3f497c+_0x2aee4c(0x107)+_0x1089b4[_0x2aee4c(0x153)]));}return _0xb11421;}};}function withRollbackErrors(_0x4a5b22,_0x14e0bf,_0x4aa728){const _0x35574c=a42_0x346709,_0x48bfff=_0x4a5b22 instanceof Error?_0x4a5b22:new Error(String(_0x4a5b22));if(_0x4aa728['length']===0x0)return _0x48bfff;return new AggregateError([_0x48bfff,..._0x4aa728],_0x14e0bf+_0x35574c(0x121)+_0x4aa728[_0x35574c(0x106)](_0xb72283=>_0xb72283[_0x35574c(0x153)])[_0x35574c(0x183)](';\x20'));}function buildDatasetCodeToAliasMap(_0x251952,_0x43ff8e,_0x446401){const _0x5ce698=a42_0x346709,_0x255bbf=resolveApiModelSource(_0x251952,_0x43ff8e,_0x446401),_0x39b3cc=loadAliasMap(_0x251952,undefined,_0x255bbf[_0x5ce698(0x110)],_0x255bbf[_0x5ce698(0x163)]);return assertUnambiguousHookAliases(_0x39b3cc),new Map(_0x39b3cc['map'](_0x235a7e=>[_0x235a7e['datasetCode'][_0x5ce698(0x154)](),_0x235a7e[_0x5ce698(0xfe)]]));}async function planHookDirectoryMigration(_0x330b4d,_0x4e13cb,_0x57191c,_0x5da2ec){const _0x37b4a2=a42_0x346709,_0x69ef0a=new Map();for(const [_0x7f6451,_0x1a3aee]of Object[_0x37b4a2(0xfa)](_0x4e13cb[_0x37b4a2(0x101)])){const [_0x18f368,_0x1506ef,_0x57c54a,_0x37ec79,_0x31ca4a,..._0x14658a]=_0x7f6451['split']('/');if(_0x18f368!==_0x37b4a2(0x11d)||!_0x1506ef||!_0x57c54a||!_0x37ec79||!_0x31ca4a||_0x14658a[_0x37b4a2(0x13a)]>0x0||!_0x1a3aee[_0x37b4a2(0x113)])continue;const _0x1411c5=_0x57191c[_0x37b4a2(0xfb)](_0x1a3aee[_0x37b4a2(0x113)][_0x37b4a2(0x154)]()),_0x5ed6a1=_0x1411c5??_0x1a3aee[_0x37b4a2(0x113)];if(!isSafeHookDirectorySegment(_0x1506ef))throw CliErrors[_0x37b4a2(0xfc)](_0x37b4a2(0x13e)+_0x1506ef+'\x22\x20from\x20the\x20lock\x20file.');if(!isSafeHookDirectorySegment(_0x5ed6a1))throw CliErrors[_0x37b4a2(0xfc)](_0x37b4a2(0x140)+_0x1506ef+_0x37b4a2(0x189));if(_0x1506ef===_0x5ed6a1)continue;const _0x24ab3f=_0x69ef0a[_0x37b4a2(0xfb)](_0x1506ef)??{'datasetCode':_0x1a3aee[_0x37b4a2(0x113)],'alias':_0x1411c5,'keyChanges':[]};if(_0x24ab3f[_0x37b4a2(0x113)]!==_0x1a3aee[_0x37b4a2(0x113)])throw CliErrors[_0x37b4a2(0xfc)](_0x37b4a2(0x140)+_0x1506ef+_0x37b4a2(0x139));const _0x37c4b5=_0x37b4a2(0x10d)+_0x5ed6a1+'/'+_0x57c54a+'/'+_0x37ec79+'/'+_0x31ca4a;try{resolveLocalFilePathFromLockKey(_0x330b4d,_0x7f6451),resolveLocalFilePathFromLockKey(_0x330b4d,_0x37c4b5);}catch(_0x5eadc2){throw CliErrors[_0x37b4a2(0xfc)](_0x37b4a2(0x184)+_0x7f6451+_0x37b4a2(0x107)+(_0x5eadc2 instanceof Error?_0x5eadc2[_0x37b4a2(0x153)]:String(_0x5eadc2)));}_0x24ab3f[_0x37b4a2(0x11b)][_0x37b4a2(0x10c)]({'oldLockKey':_0x7f6451,'newLockKey':_0x37c4b5,'entry':_0x1a3aee}),_0x69ef0a[_0x37b4a2(0x17e)](_0x1506ef,_0x24ab3f);}const _0x56cdf6=new Set([..._0x69ef0a['values']()][_0x37b4a2(0x157)](_0x16adf1=>_0x16adf1[_0x37b4a2(0x11b)][_0x37b4a2(0x106)](_0x3d9d97=>_0x3d9d97['oldLockKey']))),_0x3577fb=new Map(),_0x1dfd3f=new Map();for(const [_0x5659f2,_0x4ae4cd]of _0x69ef0a){const _0x2970e3=_0x4ae4cd[_0x37b4a2(0xfe)]??_0x4ae4cd['datasetCode'],_0x48e8f1=hookDirectoryIdentity(_0x2970e3),_0xebe2ed=_0x3577fb[_0x37b4a2(0xfb)](_0x48e8f1);if(_0xebe2ed&&_0xebe2ed!==_0x5659f2)throw CliErrors[_0x37b4a2(0xfc)](_0x37b4a2(0x11c)+_0xebe2ed+_0x37b4a2(0x160)+_0x5659f2+_0x37b4a2(0x116)+_0x2970e3+'\x22.\x20Resolve\x20the\x20directories\x20manually\x20before\x20retrying.');_0x3577fb[_0x37b4a2(0x17e)](_0x48e8f1,_0x5659f2);for(const _0x207cff of _0x4ae4cd[_0x37b4a2(0x11b)]){const _0x47ac7f=_0x1dfd3f[_0x37b4a2(0xfb)](_0x207cff['newLockKey']);if(_0x47ac7f&&_0x47ac7f!==_0x207cff[_0x37b4a2(0x12e)])throw CliErrors['validation'](_0x37b4a2(0x165)+_0x47ac7f+_0x37b4a2(0x160)+_0x207cff['oldLockKey']+'\x22:\x20both\x20target\x20\x22'+_0x207cff[_0x37b4a2(0x137)]+_0x37b4a2(0x109));if(_0x56cdf6[_0x37b4a2(0x16a)](_0x207cff[_0x37b4a2(0x137)]))throw CliErrors['validation'](_0x37b4a2(0x114)+_0x207cff[_0x37b4a2(0x12e)]+_0x37b4a2(0x129)+_0x207cff[_0x37b4a2(0x137)]+_0x37b4a2(0x155));_0x1dfd3f[_0x37b4a2(0x17e)](_0x207cff[_0x37b4a2(0x137)],_0x207cff['oldLockKey']);}}const _0x6b3f6d=new Map();for(const [_0x486729,_0x489ca2]of _0x57191c){_0x6b3f6d[_0x37b4a2(0x17e)](hookDirectoryIdentity(_0x489ca2),_0x486729);}const _0x2fce06=[];for(const [_0x2fb24e,_0x2da0e3]of _0x69ef0a){const _0x5882b2=_0x2da0e3['alias']??_0x2da0e3[_0x37b4a2(0x113)],_0x305c71=join(_0x330b4d[_0x37b4a2(0x15a)],_0x37b4a2(0x11d),_0x2fb24e),_0x135126=join(_0x330b4d[_0x37b4a2(0x15a)],_0x37b4a2(0x11d),_0x5882b2),_0x2e44db=await directoryExists(_0x305c71),_0x38e02e=await directoryExists(_0x135126),_0x4801cf=_0x2e44db?_0x38e02e?await sameDirectory(_0x305c71,_0x135126)?_0x37b4a2(0x182):undefined:_0x37b4a2(0x13c):_0x37b4a2(0x185);if(!_0x4801cf)throw CliErrors[_0x37b4a2(0xfc)](_0x37b4a2(0x140)+_0x2fb24e+_0x37b4a2(0x148)+_0x5882b2+_0x37b4a2(0x161));const _0x32fe09=_0x6b3f6d[_0x37b4a2(0xfb)](hookDirectoryIdentity(_0x2fb24e));if(_0x32fe09&&_0x32fe09!==_0x2da0e3[_0x37b4a2(0x113)][_0x37b4a2(0x154)]()){const _0x990774=new Set(_0x2da0e3[_0x37b4a2(0x11b)]['map'](_0x1b4f8f=>_0x1b4f8f['oldLockKey'])),_0x502a19=_0x5da2ec['filter'](_0x4ecaf2=>_0x4ecaf2[_0x37b4a2(0x120)]===_0x37b4a2(0x11d)&&_0x4ecaf2[_0x37b4a2(0xfe)]!=null&&hookDirectoryIdentity(_0x4ecaf2[_0x37b4a2(0xfe)])===hookDirectoryIdentity(_0x2fb24e)&&!_0x990774[_0x37b4a2(0x16a)](_0x4ecaf2[_0x37b4a2(0x149)]));if(_0x502a19[_0x37b4a2(0x13a)]>0x0)throw CliErrors['validation'](_0x37b4a2(0x140)+_0x2fb24e+_0x37b4a2(0x15e));}const _0x59758a=_0x6b3f6d['get'](hookDirectoryIdentity(_0x5882b2));if(_0x59758a&&_0x59758a!==_0x2da0e3['datasetCode'][_0x37b4a2(0x154)]())throw CliErrors['validation'](_0x37b4a2(0x140)+_0x2fb24e+_0x37b4a2(0x148)+_0x5882b2+_0x37b4a2(0x14e));for(const _0x58e1da of _0x2da0e3[_0x37b4a2(0x11b)]){const _0x25873b=_0x4e13cb[_0x37b4a2(0x101)][_0x58e1da[_0x37b4a2(0x137)]];if(_0x25873b&&!_0x56cdf6[_0x37b4a2(0x16a)](_0x58e1da['newLockKey'])&&!sameHookIdentity(_0x58e1da[_0x37b4a2(0x174)],_0x25873b))throw CliErrors[_0x37b4a2(0xfc)](_0x37b4a2(0x140)+_0x2fb24e+_0x37b4a2(0x148)+_0x5882b2+_0x37b4a2(0x150));}_0x2fce06[_0x37b4a2(0x10c)]({'oldDirectory':_0x2fb24e,'newDirectory':_0x5882b2,'oldDirectoryPath':_0x305c71,'newDirectoryPath':_0x135126,'mode':_0x4801cf,'alias':_0x2da0e3[_0x37b4a2(0xfe)],'keyChanges':_0x2da0e3[_0x37b4a2(0x11b)]});}const _0x32845f={..._0x4e13cb['functions']},_0x3c03e9=new Map(),_0x3af3ac=new Map();for(const _0x39782e of _0x2fce06){const _0xbb3dff=_0x39782e['mode']!==_0x37b4a2(0x185);_0xbb3dff&&_0x3af3ac[_0x37b4a2(0x17e)](hookDirectoryIdentity(_0x39782e[_0x37b4a2(0x180)]),_0x39782e['oldDirectoryPath']);for(const _0xc8c796 of _0x39782e[_0x37b4a2(0x11b)]){const _0x1a41b1=_0x32845f[_0xc8c796['newLockKey']],_0x53c083=_0xbb3dff?_0xc8c796[_0x37b4a2(0x174)]:_0x1a41b1??_0xc8c796['entry'];_0x32845f[_0xc8c796[_0x37b4a2(0x137)]]=canonicalizeHookEntry(_0x53c083,_0x39782e[_0x37b4a2(0xfe)]),delete _0x32845f[_0xc8c796[_0x37b4a2(0x12e)]],_0xbb3dff&&_0x3c03e9['set'](_0xc8c796['newLockKey'],resolveLocalFilePathFromLockKey(_0x330b4d,_0xc8c796[_0x37b4a2(0x12e)]));}}return{'migrations':_0x2fce06,'projectedFunctions':_0x32845f,'sourceFilePathByNewLockKey':_0x3c03e9,'sourceDirectoryPathByNewDirectory':_0x3af3ac};}function resolveMigratedSourceFilePath(_0x4b739f,_0x40ecfb){const _0x2409bc=a42_0x346709;if(!_0x4b739f||!_0x40ecfb)return undefined;const _0x1be3bb=_0x4b739f[_0x2409bc(0x172)]['get'](_0x40ecfb[_0x2409bc(0x149)]);if(_0x1be3bb)return _0x1be3bb;if(_0x40ecfb[_0x2409bc(0x120)]!==_0x2409bc(0x11d))return undefined;const [,_0x1f49c6,..._0x46a470]=_0x40ecfb[_0x2409bc(0x149)]['split']('/');if(!_0x1f49c6||_0x46a470[_0x2409bc(0x13a)]===0x0)return undefined;const _0x57778c=_0x4b739f[_0x2409bc(0x133)][_0x2409bc(0xfb)](hookDirectoryIdentity(_0x1f49c6));return _0x57778c?join(_0x57778c,..._0x46a470)+_0x2409bc(0x179):undefined;}function sameHookIdentity(_0x2bd441,_0x7f9c94){const _0x366fe1=a42_0x346709;return _0x2bd441[_0x366fe1(0x103)]===_0x7f9c94[_0x366fe1(0x103)]&&_0x2bd441[_0x366fe1(0x113)]===_0x7f9c94[_0x366fe1(0x113)]&&_0x2bd441[_0x366fe1(0x173)]===_0x7f9c94['operationType']&&_0x2bd441['functionNode']===_0x7f9c94['functionNode'];}function a42_0x3677(_0x2f3520,_0x18654b){_0x2f3520=_0x2f3520-0xf6;const _0x4fd575=a42_0x4fd5();let _0x367787=_0x4fd575[_0x2f3520];return _0x367787;}function canonicalizeHookEntry(_0x4bd1ac,_0x25c848){const {alias:_0x1b8c55,..._0x5b6892}=_0x4bd1ac;return _0x25c848?{..._0x5b6892,'alias':_0x25c848}:_0x5b6892;}function hookDirectoryIdentity(_0x240488){const _0xb13916=a42_0x346709;return _0x240488['normalize'](_0xb13916(0x125))['toLowerCase']();}function isSafeHookDirectorySegment(_0xe3422){return isSafeLockKeySegment(_0xe3422);}async function sameDirectory(_0x21cd83,_0x6e698c){const _0xc5954b=a42_0x346709,[_0x4d14c0,_0x4d1a05]=await Promise[_0xc5954b(0x12c)]([stat(_0x21cd83),stat(_0x6e698c)]);return _0x4d14c0[_0xc5954b(0x126)]===_0x4d1a05[_0xc5954b(0x126)]&&_0x4d14c0[_0xc5954b(0x13b)]===_0x4d1a05[_0xc5954b(0x13b)];}async function applyHookDirectoryMigration(_0x5191a3,_0x4b7892){const _0x2cca76=a42_0x346709,_0x17c2ea=_0x4b7892[_0x2cca76(0x101)],_0xa40d5c=_0x4b7892[_0x2cca76(0x166)],_0x184d3d=[],_0x245f3a=async()=>{const _0x317293=_0x2cca76,_0x40e64f=[];_0x4b7892[_0x317293(0x101)]=_0x17c2ea,_0x4b7892['lastSync']=_0xa40d5c;for(const {migration:_0x5941a8,temporaryPath:_0x42a772}of[..._0x184d3d][_0x317293(0x16c)]()){try{_0x42a772?(await rename(_0x5941a8[_0x317293(0x13d)],_0x42a772),await rename(_0x42a772,_0x5941a8[_0x317293(0x128)])):await rename(_0x5941a8['newDirectoryPath'],_0x5941a8['oldDirectoryPath']);}catch(_0x367543){_0x40e64f[_0x317293(0x10c)](new Error(_0x317293(0x132)+_0x5941a8[_0x317293(0xf7)]+_0x317293(0xf6)+_0x5941a8[_0x317293(0x180)]+_0x317293(0x107)+(_0x367543 instanceof Error?_0x367543[_0x317293(0x153)]:String(_0x367543))));}}return _0x40e64f;};try{for(const _0x1faeb4 of _0x5191a3['migrations']){if(_0x1faeb4[_0x2cca76(0x14d)]===_0x2cca76(0x13c))await ensureParentDirectory(_0x1faeb4[_0x2cca76(0x13d)]),await rename(_0x1faeb4['oldDirectoryPath'],_0x1faeb4[_0x2cca76(0x13d)]),_0x184d3d[_0x2cca76(0x10c)]({'migration':_0x1faeb4});else{if(_0x1faeb4[_0x2cca76(0x14d)]==='case-rename'){const _0x4559c0=join(dirname(_0x1faeb4[_0x2cca76(0x128)]),_0x2cca76(0x10a)+randomUUID());await rename(_0x1faeb4[_0x2cca76(0x128)],_0x4559c0);try{await rename(_0x4559c0,_0x1faeb4[_0x2cca76(0x13d)]);}catch(_0x29531e){try{await rename(_0x4559c0,_0x1faeb4[_0x2cca76(0x128)]);}catch(_0x4df7ad){throw withRollbackErrors(_0x29531e,'Failed\x20to\x20rename\x20HOOK\x20directory\x20\x22'+_0x1faeb4[_0x2cca76(0xf7)]+'\x22\x20to\x20\x22'+_0x1faeb4[_0x2cca76(0x180)]+'\x22;\x20temporary\x20directory\x20\x22'+_0x4559c0+'\x22\x20may\x20remain.',[new Error('Could\x20not\x20restore\x20temporary\x20HOOK\x20directory\x20\x22'+_0x4559c0+'\x22\x20to\x20\x22'+_0x1faeb4['oldDirectory']+_0x2cca76(0x107)+(_0x4df7ad instanceof Error?_0x4df7ad[_0x2cca76(0x153)]:String(_0x4df7ad)))]);}throw _0x29531e;}_0x184d3d[_0x2cca76(0x10c)]({'migration':_0x1faeb4,'temporaryPath':_0x4559c0});}}}return _0x4b7892[_0x2cca76(0x101)]=_0x5191a3['projectedFunctions'],{'rollback':_0x245f3a};}catch(_0x77eb79){const _0x57addf=await _0x245f3a();throw withRollbackErrors(_0x77eb79,_0x2cca76(0x141),_0x57addf);}}async function confirmForce(){const _0x193439=a42_0x346709,_0x5b0544=createInterface({'input':process[_0x193439(0x16f)],'output':process['stderr']}),_0x4fd12f=await new Promise(_0x2a857e=>{const _0x299b78=_0x193439;_0x5b0544[_0x299b78(0x178)](_0x299b78(0x15c),_0x2a857e);});return _0x5b0544[_0x193439(0x164)](),['y','yes'][_0x193439(0xf8)](_0x4fd12f[_0x193439(0x171)]()[_0x193439(0x154)]());}
|
|
1
|
+
const a42_0x4347eb=a42_0xebcf;(function(_0x2cc54f,_0x314e29){const _0x4018e1=a42_0xebcf,_0x5087ab=_0x2cc54f();while(!![]){try{const _0xfd1d28=-parseInt(_0x4018e1(0x1fa))/0x1+-parseInt(_0x4018e1(0x21c))/0x2*(-parseInt(_0x4018e1(0x282))/0x3)+-parseInt(_0x4018e1(0x250))/0x4+parseInt(_0x4018e1(0x227))/0x5*(-parseInt(_0x4018e1(0x272))/0x6)+-parseInt(_0x4018e1(0x268))/0x7*(-parseInt(_0x4018e1(0x25e))/0x8)+parseInt(_0x4018e1(0x275))/0x9+-parseInt(_0x4018e1(0x1f8))/0xa*(parseInt(_0x4018e1(0x1ef))/0xb);if(_0xfd1d28===_0x314e29)break;else _0x5087ab['push'](_0x5087ab['shift']());}catch(_0x1a9b81){_0x5087ab['push'](_0x5087ab['shift']());}}}(a42_0x2151,0x978a3));import{createInterface}from'node:readline';import{readFile,rename,stat,unlink,writeFile}from'node:fs/promises';import{randomUUID}from'node:crypto';import{dirname,join}from'node:path';function a42_0xebcf(_0x47adca,_0x6daf72){_0x47adca=_0x47adca-0x1eb;const _0x2151e3=a42_0x2151();let _0xebcfa4=_0x2151e3[_0x47adca];return _0xebcfa4;}import{BFF_LIST_PAGE_SIZE,listBffScripts,getBffScriptStatistics}from'../../core/api-client.js';import{loadAliasMap}from'../../core/alias-resolver.js';import{resolveApiModelSource}from'../../api/model-source.js';import{loadBffProjectConfig}from'../../core/bff/config.js';import{createHookLocationMap,directoryExists,ensureParentDirectory,fileExists,isSafeLockKeySegment,normalizeBffType,resolveLocalFilePathFromLockKey,resolveRemoteScriptTarget,scanLocalBffFunctions}from'../../core/bff/file-system.js';import{computeContentHash,computeFileHash}from'../../core/bff/hash.js';import{assertUnambiguousHookAliases}from'../../core/bff/hook-directory.js';import{createEmptyBffLock,ensureLockScope,readBffLockFile,writeBffLockFile}from'../../core/bff/lock.js';import{CliErrors}from'../../errors.js';import{CLI_BIN_NAME}from'../../constant/cli.js';export const bffPull={'service':'bff','command':'pull','description':a42_0x4347eb(0x203),'risk':a42_0x4347eb(0x205),'structuredErrors':!![],'flags':[{'name':'type','type':a42_0x4347eb(0x20a),'description':a42_0x4347eb(0x23a),'enum':[a42_0x4347eb(0x27f),a42_0x4347eb(0x27e),a42_0x4347eb(0x258)]},{'name':a42_0x4347eb(0x22b),'type':a42_0x4347eb(0x247),'description':a42_0x4347eb(0x276)}],async 'dryRun'(_0x4fe904){const _0x447572=a42_0x4347eb,_0x439ee4=loadBffProjectConfig(_0x4fe904[_0x447572(0x266)]),_0x3412e1=await readBffLockFile(_0x439ee4['lockFilePath']),{appLock:_0x4853c4}=ensureLockScope(_0x3412e1??createEmptyBffLock(),_0x4fe904[_0x447572(0x266)],_0x439ee4[_0x447572(0x219)],'pull'),_0x26f8e3=normalizeBffType(_0x4fe904[_0x447572(0x238)]('type'))??undefined,[_0xb6e962,_0x3b7b71]=await Promise[_0x447572(0x21f)]([listBffScripts(_0x4fe904[_0x447572(0x266)],_0x26f8e3),getBffScriptStatistics(_0x4fe904['appCode'])]),_0x1530ae=_0xb6e962[_0x447572(0x257)](_0x5ac752=>normalizeBffType(_0x5ac752[_0x447572(0x1f4)])===_0x447572(0x258)),_0x1b1e8e=_0x1530ae?buildDatasetCodeToAliasMap(_0x4fe904[_0x447572(0x231)],_0x4fe904[_0x447572(0x266)],_0x4fe904[_0x447572(0x1ff)]||_0x4fe904[_0x447572(0x201)]?.[_0x447572(0x24b)]||_0x4fe904[_0x447572(0x201)]?.['defaultApp']):new Map(),_0x21b0ab=_0x1530ae?await planHookDirectoryMigration(_0x439ee4,_0x4853c4,_0x1b1e8e,await scanLocalBffFunctions(_0x439ee4,_0x447572(0x258))):undefined,_0x554677=createHookLocationMap(_0x3b7b71),_0x5d37f5=[];for(const _0x17422d of _0xb6e962){const _0x567f6c=resolveRemoteScriptTarget(_0x439ee4,_0x17422d,_0x554677,_0x21b0ab?.[_0x447572(0x21e)]??_0x4853c4[_0x447572(0x273)],_0x1b1e8e);if(!_0x567f6c){_0x5d37f5['push']({'scriptType':_0x17422d[_0x447572(0x1f4)],'functionName':_0x17422d[_0x447572(0x21b)]??'','status':_0x447572(0x200),'reason':_0x447572(0x235)});continue;}const _0x1aa842=(_0x21b0ab?.['projectedFunctions']??_0x4853c4[_0x447572(0x273)])[_0x567f6c[_0x447572(0x206)]],_0x5ea450=_0x17422d[_0x447572(0x212)]!=null?computeContentHash(_0x17422d[_0x447572(0x212)]):undefined,_0xb4608a=await hasUnsyncedLocalChanges(resolveMigratedSourceFilePath(_0x21b0ab,_0x567f6c)??_0x567f6c[_0x447572(0x274)],_0x1aa842,_0x5ea450),_0x1dd216=_0xb4608a?localUnsyncedConflict(_0x567f6c,_0x17422d['id']):undefined;_0x5d37f5[_0x447572(0x224)]({'lockKey':_0x567f6c[_0x447572(0x206)],'filePath':_0x567f6c[_0x447572(0x274)],'remoteId':_0x17422d['id']??null,'status':_0x1dd216?_0x447572(0x26e):_0x447572(0x1eb),..._0x1dd216?{'conflict':_0x1dd216}:{},..._0x567f6c[_0x447572(0x23c)]?{'alias':_0x567f6c[_0x447572(0x23c)][_0x447572(0x255)]??null,'datasetCode':_0x567f6c['hookLocation'][_0x447572(0x240)],'operationType':_0x567f6c[_0x447572(0x23c)][_0x447572(0x1f1)],'functionNode':_0x567f6c[_0x447572(0x23c)][_0x447572(0x263)]}:{}});}return{'method':_0x447572(0x24f),'url':_0x447572(0x217)+_0x4fe904[_0x447572(0x266)]+(_0x26f8e3?_0x447572(0x261)+_0x26f8e3:'')+_0x447572(0x207)+BFF_LIST_PAGE_SIZE,'body':{'appCode':_0x4fe904['appCode'],'filterType':_0x26f8e3??null,..._0x21b0ab&&_0x21b0ab[_0x447572(0x1ee)]['length']>0x0?{'hookDirectoryMigrations':_0x21b0ab['migrations'][_0x447572(0x280)](_0x27e51a=>({'from':_0x27e51a[_0x447572(0x27a)],'to':_0x27e51a['newDirectory']}))}:{},'files':_0x5d37f5},'description':_0x447572(0x269)+_0x5d37f5[_0x447572(0x25a)]+_0x447572(0x226)};},async 'execute'(_0xf7e605){const _0x60a015=a42_0x4347eb,_0x15a83b=loadBffProjectConfig(_0xf7e605['appCode']),_0xbb3a8=await readBffLockFile(_0x15a83b[_0x60a015(0x21d)]),{lockData:_0x13ef09,appLock:_0x58e9ef}=ensureLockScope(_0xbb3a8??createEmptyBffLock(),_0xf7e605[_0x60a015(0x266)],_0x15a83b['scriptsRoot'],_0x60a015(0x264)),_0x3b581f=normalizeBffType(_0xf7e605[_0x60a015(0x238)](_0x60a015(0x259)))??undefined;if(_0xf7e605['str'](_0x60a015(0x259))&&!_0x3b581f)throw CliErrors[_0x60a015(0x23e)](_0x60a015(0x234));const [_0x1f9c54,_0x1f031a]=await Promise[_0x60a015(0x21f)]([listBffScripts(_0xf7e605[_0x60a015(0x266)],_0x3b581f),getBffScriptStatistics(_0xf7e605[_0x60a015(0x266)])]);if(_0x1f9c54[_0x60a015(0x25a)]===0x0)return{'ok':!![],'data':{'pulled':[],'skipped':[],'conflicts':[],'failed':[]},'message':_0x60a015(0x262)};const _0x195788=_0xf7e605[_0x60a015(0x211)](_0x60a015(0x22b));if(_0x195788&&!_0xf7e605[_0x60a015(0x1f9)]){const _0x5a7118=await confirmForce();if(!_0x5a7118)throw CliErrors['cancelled'](_0x60a015(0x22d));}if(_0x195788&&_0xf7e605['nonInteractive']){}const _0x34450e=_0x1f9c54[_0x60a015(0x257)](_0x11084c=>normalizeBffType(_0x11084c[_0x60a015(0x1f4)])===_0x60a015(0x258)),_0xc7c624=_0x34450e?buildDatasetCodeToAliasMap(_0xf7e605['apiDir'],_0xf7e605['appCode'],_0xf7e605[_0x60a015(0x1ff)]||_0xf7e605[_0x60a015(0x201)]?.[_0x60a015(0x24b)]||_0xf7e605[_0x60a015(0x201)]?.[_0x60a015(0x237)]):new Map(),_0x2804d8=createHookLocationMap(_0x1f031a),_0x186a84=JSON[_0x60a015(0x260)](JSON['stringify'](_0x13ef09)),_0x45fca9=_0xf7e605[_0x60a015(0x266)],_0x8d5825=_0x186a84[_0x60a015(0x265)][_0x45fca9];if(!_0x8d5825)throw new Error(_0x60a015(0x221)+_0x45fca9+_0x60a015(0x22c));const _0x54f389=_0x34450e?await applyHookDirectoryMigration(await planHookDirectoryMigration(_0x15a83b,_0x8d5825,_0xc7c624,await scanLocalBffFunctions(_0x15a83b,_0x60a015(0x258))),_0x8d5825):undefined,_0x5160ad=createPullFileTransaction(),_0xcda1e2=[],_0x239831=[],_0x28abf8=[],_0x5405d6=[];for(const _0xfbadb9 of _0x1f9c54){const _0x1f8301=resolveRemoteScriptTarget(_0x15a83b,_0xfbadb9,_0x2804d8,_0x8d5825[_0x60a015(0x273)],_0xc7c624);if(!_0x1f8301){_0x239831[_0x60a015(0x224)]({'lockKey':_0xfbadb9[_0x60a015(0x1f4)]+'/'+_0xfbadb9[_0x60a015(0x21b)],'reason':_0x60a015(0x235)});continue;}const _0x2f6a7e=_0x8d5825['functions'][_0x1f8301[_0x60a015(0x206)]];try{if(!_0xfbadb9['id'])throw new Error(_0x60a015(0x283));if(_0xfbadb9[_0x60a015(0x212)]==null)throw new Error(_0x60a015(0x236));const _0x53f2e0=_0xfbadb9[_0x60a015(0x212)],_0x5bc369=computeContentHash(_0x53f2e0);if(!_0x195788){const _0xfc9c82=await hasUnsyncedLocalChanges(_0x1f8301['filePath'],_0x2f6a7e,_0x5bc369);if(_0xfc9c82){_0x28abf8[_0x60a015(0x224)](localUnsyncedConflict(_0x1f8301,_0xfbadb9['id']));continue;}}await _0x5160ad[_0x60a015(0x26c)](_0x1f8301[_0x60a015(0x274)],_0x53f2e0);const _0x35cd3d={'hash':_0x5bc369,'remoteId':_0xfbadb9['id'],'version':_0xfbadb9[_0x60a015(0x24e)]};_0x1f8301['type']===_0x60a015(0x258)&&_0x1f8301[_0x60a015(0x23c)]&&(_0x35cd3d[_0x60a015(0x255)]=_0x1f8301[_0x60a015(0x23c)][_0x60a015(0x255)],_0x35cd3d['datasetCode']=_0x1f8301[_0x60a015(0x23c)][_0x60a015(0x240)],_0x35cd3d[_0x60a015(0x1f1)]=_0x1f8301[_0x60a015(0x23c)][_0x60a015(0x1f1)],_0x35cd3d[_0x60a015(0x263)]=_0x1f8301[_0x60a015(0x23c)][_0x60a015(0x263)]),_0x8d5825[_0x60a015(0x273)][_0x1f8301[_0x60a015(0x206)]]=_0x35cd3d,_0xcda1e2['push']({'lockKey':_0x1f8301[_0x60a015(0x206)],'remoteId':_0xfbadb9['id']});}catch(_0x683d80){_0x5405d6[_0x60a015(0x224)]({'lockKey':_0x1f8301[_0x60a015(0x206)],'error':_0x683d80 instanceof Error?_0x683d80['message']:String(_0x683d80)});}}_0x8d5825[_0x60a015(0x1fe)]=new Date()[_0x60a015(0x20c)]();try{await writeBffLockFile(_0x15a83b[_0x60a015(0x21d)],_0x186a84);}catch(_0x574ef3){const _0xf826d5=[...await _0x5160ad['rollback'](),...await _0x54f389?.[_0x60a015(0x20f)]()??[]];throw withRollbackErrors(_0x574ef3,_0x60a015(0x281),_0xf826d5);}return{'ok':_0x5405d6[_0x60a015(0x25a)]===0x0,'data':{'pulled':_0xcda1e2,'skipped':_0x239831,'conflicts':_0x28abf8,'failed':_0x5405d6},'message':formatPullMessage(_0xcda1e2[_0x60a015(0x25a)],_0x239831[_0x60a015(0x25a)],_0x28abf8[_0x60a015(0x25a)],_0x5405d6['length'])};}};function localUnsyncedConflict(_0x1ca2a5,_0xabeb53){const _0x51c18c=a42_0x4347eb,_0x82dfde=_0x1ca2a5[_0x51c18c(0x206)][_0x51c18c(0x1f0)]('/')['at'](-0x1);return{'code':_0x51c18c(0x26d),'lockKey':_0x1ca2a5[_0x51c18c(0x206)],'filePath':_0x1ca2a5[_0x51c18c(0x274)],..._0xabeb53!=null?{'remoteId':_0xabeb53}:{},'message':_0x51c18c(0x279),'nextAction':{'action':'push_local','command':CLI_BIN_NAME+_0x51c18c(0x248)+_0x1ca2a5[_0x51c18c(0x259)]+_0x51c18c(0x20b)+_0x82dfde+_0x51c18c(0x246),'requiresReview':!![],'message':_0x51c18c(0x214)}};}function formatPullMessage(_0x5f2a8e,_0x2678a9,_0x246521,_0x2078f4){const _0x131f22=a42_0x4347eb,_0x38acbb=[_0x131f22(0x230)+_0x5f2a8e+_0x131f22(0x216),_0x2678a9+_0x131f22(0x25f)];_0x246521>0x0&&_0x38acbb['push'](_0x246521+_0x131f22(0x233)+(_0x246521===0x1?'':'s')+'\x20'+(_0x246521===0x1?_0x131f22(0x22e):'require')+_0x131f22(0x21a));if(_0x2078f4>0x0)_0x38acbb[_0x131f22(0x224)](_0x2078f4+_0x131f22(0x26a));return _0x38acbb[_0x131f22(0x229)](',\x20');}async function hasUnsyncedLocalChanges(_0xc24aa9,_0x33ccf0,_0x383c8a){const _0x11b3af=a42_0x4347eb;if(!await fileExists(_0xc24aa9))return![];const _0x497444=await computeFileHash(_0xc24aa9);if(!_0x33ccf0)return _0x383c8a?_0x497444!==_0x383c8a:!![];return _0x497444!==_0x33ccf0[_0x11b3af(0x1f5)];}function createPullFileTransaction(){const _0x162883=new Map(),_0x382c16=async(_0x5cb721,_0x2ed764)=>{const _0x596ed2=a42_0xebcf;try{if(_0x2ed764[_0x596ed2(0x210)])await ensureParentDirectory(_0x5cb721),await writeFile(_0x5cb721,_0x2ed764[_0x596ed2(0x24a)]);else try{await unlink(_0x5cb721);}catch(_0x28ef4b){if(_0x28ef4b[_0x596ed2(0x1ed)]!==_0x596ed2(0x20d))throw _0x28ef4b;}return undefined;}catch(_0x24e78a){return _0x24e78a instanceof Error?_0x24e78a:new Error(String(_0x24e78a));}};return{async 'write'(_0x21ae4d,_0x1d8fa3){const _0x119110=a42_0xebcf;if(!_0x162883[_0x119110(0x26f)](_0x21ae4d))try{_0x162883[_0x119110(0x208)](_0x21ae4d,{'existed':!![],'content':await readFile(_0x21ae4d)});}catch(_0x4889ac){if(_0x4889ac[_0x119110(0x1ed)]!==_0x119110(0x20d))throw _0x4889ac;_0x162883[_0x119110(0x208)](_0x21ae4d,{'existed':![]});}try{await ensureParentDirectory(_0x21ae4d),await writeFile(_0x21ae4d,_0x1d8fa3,_0x119110(0x284));}catch(_0x41e649){const _0x2bc91d=await _0x382c16(_0x21ae4d,_0x162883[_0x119110(0x202)](_0x21ae4d));if(!_0x2bc91d)_0x162883[_0x119110(0x25c)](_0x21ae4d);throw withRollbackErrors(_0x41e649,'Failed\x20to\x20write\x20local\x20script\x20\x22'+_0x21ae4d+'\x22.',_0x2bc91d?[_0x2bc91d]:[]);}},async 'rollback'(){const _0x105517=a42_0xebcf,_0xee4b15=[];for(const [_0x53eb7a,_0x569e96]of[..._0x162883[_0x105517(0x22f)]()]['reverse']()){const _0x2c04ed=await _0x382c16(_0x53eb7a,_0x569e96);_0x2c04ed&&_0xee4b15[_0x105517(0x224)](new Error(_0x105517(0x27c)+_0x53eb7a+_0x105517(0x252)+_0x2c04ed[_0x105517(0x25b)]));}return _0xee4b15;}};}function withRollbackErrors(_0xb16fbc,_0x3e2e6e,_0xb34d23){const _0x280409=a42_0x4347eb,_0x5b0208=_0xb16fbc instanceof Error?_0xb16fbc:new Error(String(_0xb16fbc));if(_0xb34d23[_0x280409(0x25a)]===0x0)return _0x5b0208;return new AggregateError([_0x5b0208,..._0xb34d23],_0x3e2e6e+'\x20Recovery\x20errors:\x20'+_0xb34d23[_0x280409(0x280)](_0x308f3f=>_0x308f3f['message'])[_0x280409(0x229)](';\x20'));}function a42_0x2151(){const _0x4f02aa=['\x22:\x20target\x20lock\x20key\x20is\x20already\x20bound\x20to\x20another\x20script.','\x22:\x20its\x20target\x20directory\x20is\x20unsafe.','Local\x20script\x20differs\x20from\x20the\x20last\x20pulled\x20version.\x20Review\x20it\x20before\x20choosing\x20the\x20source\x20of\x20truth.','oldDirectory','\x22.\x20Resolve\x20the\x20lock\x20entries\x20manually\x20before\x20retrying.','Could\x20not\x20restore\x20local\x20script\x20\x22','Cannot\x20migrate\x20HOOK\x20lock\x20key\x20\x22','ENDPOINT','COMMON','map','Failed\x20to\x20write\x20the\x20Backend\x20Function\x20lock\x20file;\x20local\x20changes\x20could\x20not\x20be\x20completely\x20rolled\x20back.','3WmbGTA','Remote\x20script\x20missing\x20id.','utf8','mode','would_pull','\x22:\x20it\x20is\x20tracked\x20by\x20multiple\x20Datasets.','code','migrations','210969qjDVDh','split','operationType','trim','\x22:\x20the\x20target\x20directory\x20already\x20exists.\x20Resolve\x20the\x20directories\x20and\x20retry.','scriptType','hash','toLowerCase','reverse','790MNmBYv','nonInteractive','497463kasczs','newDirectory','newLockKey','ino','lastSync','selectedAppName','skipped','mergedCli','get','Pull\x20remote\x20Backend\x20Function\x20scripts\x20to\x20local','\x22:\x20it\x20is\x20now\x20another\x20Dataset\x20alias\x20and\x20contains\x20untracked\x20scripts.\x20Resolve\x20the\x20directory\x20manually\x20before\x20retrying.','read','lockKey','¤tPage=1&pageSize=','set','dev','string','\x20--name\x20','toISOString','ENOENT','sourceFilePathByNewLockKey','rollback','existed','bool','scriptContent','\x22\x20is\x20another\x20legacy\x20key\x20being\x20migrated.\x20Resolve\x20the\x20lock\x20entries\x20manually\x20before\x20retrying.','If\x20the\x20reviewed\x20local\x20script\x20should\x20win,\x20run\x20this\x20command\x20to\x20update\x20the\x20remote\x20script.\x20Do\x20not\x20use\x20--force\x20to\x20resolve\x20a\x20content\x20conflict.','includes','\x20pulled','/api/management/library/scripts/list?appCode=','move','scriptsRoot','\x20resolution','functionName','1431938PajYgv','lockFilePath','projectedFunctions','all','\x22\x20and\x20\x22','Lock\x20scope\x20for\x20app\x20\x22','case-rename','HOOK/','push','keyChanges','\x20remote\x20Backend\x20Function\x20script(s)\x20for\x20pull','1210aHtspz','filter','join','newDirectoryPath','force','\x22\x20not\x20found\x20after\x20ensureLockScope.','Force\x20pull\x20cancelled.','requires','entries','Pull\x20complete:\x20','apiDir','\x22:\x20its\x20target\x20\x22','\x20conflict','--type\x20must\x20be\x20COMMON,\x20ENDPOINT,\x20or\x20HOOK.','unresolvable\x20target\x20path','Remote\x20script\x20missing\x20content.','defaultApp','str','Cannot\x20migrate\x20HOOK\x20directories\x20\x22','Pull\x20only\x20this\x20script\x20type','Force\x20pull\x20will\x20overwrite\x20local\x20unsynced\x20changes.\x20Continue?\x20[y/N]\x20','hookLocation','\x22:\x20both\x20target\x20\x22','validation','\x22\x20to\x20\x22','datasetCode','yes','scriptsRootDir','\x22\x20may\x20remain.','oldDirectoryPath','values','\x20--format\x20compress','boolean','\x20bff\x20push\x20--type\x20','Failed\x20to\x20rename\x20HOOK\x20directory\x20\x22','content','currentApp','Could\x20not\x20restore\x20HOOK\x20directory\x20\x22','flatMap','version','GET','546180rYCjPe','Cannot\x20migrate\x20HOOK\x20lock\x20keys\x20\x22','\x22:\x20','rekey','Cannot\x20migrate\x20HOOK\x20directory\x20\x22','alias','oldLockKey','some','HOOK','type','length','message','delete','close','2881912FVnKMi','\x20skipped','parse','&type=','No\x20remote\x20Backend\x20Function\x20scripts\x20found.','functionNode','pull','apps','appCode','stderr','21mjTGBw','Would\x20inspect\x20','\x20failed','Could\x20not\x20restore\x20temporary\x20HOOK\x20directory\x20\x22','write','BFF_LOCAL_UNSYNCED','conflict','has','\x22;\x20temporary\x20directory\x20\x22','entry','1506FMOrAh','functions','filePath','9305208zGepQU','Force\x20overwrite\x20local\x20unsynced\x20changes'];a42_0x2151=function(){return _0x4f02aa;};return a42_0x2151();}function buildDatasetCodeToAliasMap(_0x531ecf,_0x2e33e5,_0x27fde3){const _0x252852=a42_0x4347eb,_0x1576d1=resolveApiModelSource(_0x531ecf,_0x2e33e5,_0x27fde3),_0x55103b=loadAliasMap(_0x531ecf,undefined,_0x1576d1['filePath'],_0x1576d1['profileName']);return assertUnambiguousHookAliases(_0x55103b),new Map(_0x55103b[_0x252852(0x280)](_0x52c506=>[_0x52c506[_0x252852(0x240)]['toLowerCase'](),_0x52c506[_0x252852(0x255)]]));}async function planHookDirectoryMigration(_0x52a9af,_0x4b4939,_0x4d97fa,_0x1d27b5){const _0x16f824=a42_0x4347eb,_0x4fbf1e=new Map();for(const [_0x4f3b97,_0x107b28]of Object['entries'](_0x4b4939['functions'])){const [_0x4717d1,_0x193033,_0x40a7d3,_0x4473a9,_0x298152,..._0x130c99]=_0x4f3b97[_0x16f824(0x1f0)]('/');if(_0x4717d1!==_0x16f824(0x258)||!_0x193033||!_0x40a7d3||!_0x4473a9||!_0x298152||_0x130c99['length']>0x0||!_0x107b28[_0x16f824(0x240)])continue;const _0x4a40a1=_0x4d97fa[_0x16f824(0x202)](_0x107b28[_0x16f824(0x240)][_0x16f824(0x1f6)]()),_0x2a3b7f=_0x4a40a1??_0x107b28[_0x16f824(0x240)];if(!isSafeHookDirectorySegment(_0x193033))throw CliErrors[_0x16f824(0x23e)]('Cannot\x20migrate\x20unsafe\x20HOOK\x20directory\x20\x22'+_0x193033+'\x22\x20from\x20the\x20lock\x20file.');if(!isSafeHookDirectorySegment(_0x2a3b7f))throw CliErrors[_0x16f824(0x23e)](_0x16f824(0x254)+_0x193033+_0x16f824(0x278));if(_0x193033===_0x2a3b7f)continue;const _0x33a114=_0x4fbf1e[_0x16f824(0x202)](_0x193033)??{'datasetCode':_0x107b28[_0x16f824(0x240)],'alias':_0x4a40a1,'keyChanges':[]};if(_0x33a114[_0x16f824(0x240)]!==_0x107b28[_0x16f824(0x240)])throw CliErrors[_0x16f824(0x23e)](_0x16f824(0x254)+_0x193033+_0x16f824(0x1ec));const _0x2fa439=_0x16f824(0x223)+_0x2a3b7f+'/'+_0x40a7d3+'/'+_0x4473a9+'/'+_0x298152;try{resolveLocalFilePathFromLockKey(_0x52a9af,_0x4f3b97),resolveLocalFilePathFromLockKey(_0x52a9af,_0x2fa439);}catch(_0x4e4833){throw CliErrors[_0x16f824(0x23e)]('Cannot\x20migrate\x20unsafe\x20HOOK\x20lock\x20key\x20\x22'+_0x4f3b97+_0x16f824(0x252)+(_0x4e4833 instanceof Error?_0x4e4833[_0x16f824(0x25b)]:String(_0x4e4833)));}_0x33a114[_0x16f824(0x225)][_0x16f824(0x224)]({'oldLockKey':_0x4f3b97,'newLockKey':_0x2fa439,'entry':_0x107b28}),_0x4fbf1e[_0x16f824(0x208)](_0x193033,_0x33a114);}const _0x569b19=new Set([..._0x4fbf1e[_0x16f824(0x245)]()][_0x16f824(0x24d)](_0xaf74d0=>_0xaf74d0[_0x16f824(0x225)][_0x16f824(0x280)](_0x331599=>_0x331599[_0x16f824(0x256)]))),_0x3fc197=new Map(),_0x5b5af7=new Map();for(const [_0x25d6aa,_0xa84af4]of _0x4fbf1e){const _0x45e20b=_0xa84af4[_0x16f824(0x255)]??_0xa84af4['datasetCode'],_0x15c43e=hookDirectoryIdentity(_0x45e20b),_0x145bd0=_0x3fc197[_0x16f824(0x202)](_0x15c43e);if(_0x145bd0&&_0x145bd0!==_0x25d6aa)throw CliErrors['validation'](_0x16f824(0x239)+_0x145bd0+_0x16f824(0x220)+_0x25d6aa+_0x16f824(0x23d)+_0x45e20b+'\x22.\x20Resolve\x20the\x20directories\x20manually\x20before\x20retrying.');_0x3fc197[_0x16f824(0x208)](_0x15c43e,_0x25d6aa);for(const _0x10196e of _0xa84af4[_0x16f824(0x225)]){const _0x19997e=_0x5b5af7['get'](_0x10196e['newLockKey']);if(_0x19997e&&_0x19997e!==_0x10196e[_0x16f824(0x256)])throw CliErrors[_0x16f824(0x23e)](_0x16f824(0x251)+_0x19997e+_0x16f824(0x220)+_0x10196e[_0x16f824(0x256)]+_0x16f824(0x23d)+_0x10196e[_0x16f824(0x1fc)]+_0x16f824(0x27b));if(_0x569b19[_0x16f824(0x26f)](_0x10196e[_0x16f824(0x1fc)]))throw CliErrors[_0x16f824(0x23e)](_0x16f824(0x27d)+_0x10196e['oldLockKey']+_0x16f824(0x232)+_0x10196e[_0x16f824(0x1fc)]+_0x16f824(0x213));_0x5b5af7[_0x16f824(0x208)](_0x10196e[_0x16f824(0x1fc)],_0x10196e[_0x16f824(0x256)]);}}const _0x8c092d=new Map();for(const [_0x1a6613,_0x855087]of _0x4d97fa){_0x8c092d[_0x16f824(0x208)](hookDirectoryIdentity(_0x855087),_0x1a6613);}const _0x57cafa=[];for(const [_0x5da91f,_0x234d1c]of _0x4fbf1e){const _0x17ddd7=_0x234d1c['alias']??_0x234d1c[_0x16f824(0x240)],_0x4b8786=join(_0x52a9af[_0x16f824(0x242)],'HOOK',_0x5da91f),_0x219738=join(_0x52a9af[_0x16f824(0x242)],_0x16f824(0x258),_0x17ddd7),_0x16baa5=await directoryExists(_0x4b8786),_0x16ba6d=await directoryExists(_0x219738),_0x1f8549=_0x16baa5?_0x16ba6d?await sameDirectory(_0x4b8786,_0x219738)?_0x16f824(0x222):undefined:'move':_0x16f824(0x253);if(!_0x1f8549)throw CliErrors['validation'](_0x16f824(0x254)+_0x5da91f+_0x16f824(0x23f)+_0x17ddd7+_0x16f824(0x1f3));const _0x575d57=_0x8c092d[_0x16f824(0x202)](hookDirectoryIdentity(_0x5da91f));if(_0x575d57&&_0x575d57!==_0x234d1c[_0x16f824(0x240)]['toLowerCase']()){const _0x33f81f=new Set(_0x234d1c[_0x16f824(0x225)]['map'](_0x45a453=>_0x45a453[_0x16f824(0x256)])),_0x8723c2=_0x1d27b5[_0x16f824(0x228)](_0xa88c7d=>_0xa88c7d[_0x16f824(0x259)]===_0x16f824(0x258)&&_0xa88c7d['alias']!=null&&hookDirectoryIdentity(_0xa88c7d[_0x16f824(0x255)])===hookDirectoryIdentity(_0x5da91f)&&!_0x33f81f['has'](_0xa88c7d[_0x16f824(0x206)]));if(_0x8723c2['length']>0x0)throw CliErrors[_0x16f824(0x23e)](_0x16f824(0x254)+_0x5da91f+_0x16f824(0x204));}const _0x490e80=_0x8c092d[_0x16f824(0x202)](hookDirectoryIdentity(_0x17ddd7));if(_0x490e80&&_0x490e80!==_0x234d1c[_0x16f824(0x240)][_0x16f824(0x1f6)]())throw CliErrors[_0x16f824(0x23e)](_0x16f824(0x254)+_0x5da91f+_0x16f824(0x23f)+_0x17ddd7+'\x22:\x20the\x20destination\x20is\x20another\x20Dataset\x20alias.\x20Resolve\x20the\x20directory\x20manually\x20before\x20retrying.');for(const _0x41a304 of _0x234d1c['keyChanges']){const _0x648856=_0x4b4939['functions'][_0x41a304[_0x16f824(0x1fc)]];if(_0x648856&&!_0x569b19[_0x16f824(0x26f)](_0x41a304[_0x16f824(0x1fc)])&&!sameHookIdentity(_0x41a304['entry'],_0x648856))throw CliErrors['validation'](_0x16f824(0x254)+_0x5da91f+_0x16f824(0x23f)+_0x17ddd7+_0x16f824(0x277));}_0x57cafa['push']({'oldDirectory':_0x5da91f,'newDirectory':_0x17ddd7,'oldDirectoryPath':_0x4b8786,'newDirectoryPath':_0x219738,'mode':_0x1f8549,'alias':_0x234d1c[_0x16f824(0x255)],'keyChanges':_0x234d1c[_0x16f824(0x225)]});}const _0x242ac6={..._0x4b4939[_0x16f824(0x273)]},_0x276957=new Map(),_0x53b7aa=new Map();for(const _0x4cbc5e of _0x57cafa){const _0x26fec7=_0x4cbc5e[_0x16f824(0x285)]!==_0x16f824(0x253);_0x26fec7&&_0x53b7aa['set'](hookDirectoryIdentity(_0x4cbc5e[_0x16f824(0x1fb)]),_0x4cbc5e['oldDirectoryPath']);for(const _0x2bbd07 of _0x4cbc5e[_0x16f824(0x225)]){const _0x4a6f24=_0x242ac6[_0x2bbd07[_0x16f824(0x1fc)]],_0x3acb9b=_0x26fec7?_0x2bbd07[_0x16f824(0x271)]:_0x4a6f24??_0x2bbd07[_0x16f824(0x271)];_0x242ac6[_0x2bbd07[_0x16f824(0x1fc)]]=canonicalizeHookEntry(_0x3acb9b,_0x4cbc5e[_0x16f824(0x255)]),delete _0x242ac6[_0x2bbd07['oldLockKey']],_0x26fec7&&_0x276957['set'](_0x2bbd07[_0x16f824(0x1fc)],resolveLocalFilePathFromLockKey(_0x52a9af,_0x2bbd07[_0x16f824(0x256)]));}}return{'migrations':_0x57cafa,'projectedFunctions':_0x242ac6,'sourceFilePathByNewLockKey':_0x276957,'sourceDirectoryPathByNewDirectory':_0x53b7aa};}function resolveMigratedSourceFilePath(_0x10f867,_0x3a5eca){const _0x5df7a1=a42_0x4347eb;if(!_0x10f867||!_0x3a5eca)return undefined;const _0x5d1c13=_0x10f867[_0x5df7a1(0x20e)][_0x5df7a1(0x202)](_0x3a5eca[_0x5df7a1(0x206)]);if(_0x5d1c13)return _0x5d1c13;if(_0x3a5eca[_0x5df7a1(0x259)]!=='HOOK')return undefined;const [,_0x4e8cf9,..._0x508d31]=_0x3a5eca['lockKey'][_0x5df7a1(0x1f0)]('/');if(!_0x4e8cf9||_0x508d31[_0x5df7a1(0x25a)]===0x0)return undefined;const _0xadbe30=_0x10f867['sourceDirectoryPathByNewDirectory'][_0x5df7a1(0x202)](hookDirectoryIdentity(_0x4e8cf9));return _0xadbe30?join(_0xadbe30,..._0x508d31)+'.js':undefined;}function sameHookIdentity(_0x360d7b,_0x4c4acc){const _0x561afa=a42_0x4347eb;return _0x360d7b['remoteId']===_0x4c4acc['remoteId']&&_0x360d7b[_0x561afa(0x240)]===_0x4c4acc[_0x561afa(0x240)]&&_0x360d7b[_0x561afa(0x1f1)]===_0x4c4acc['operationType']&&_0x360d7b[_0x561afa(0x263)]===_0x4c4acc['functionNode'];}function canonicalizeHookEntry(_0x1cdf53,_0x156d5a){const {alias:_0x1ad242,..._0x50eb3d}=_0x1cdf53;return _0x156d5a?{..._0x50eb3d,'alias':_0x156d5a}:_0x50eb3d;}function hookDirectoryIdentity(_0x3f4a3f){const _0x18d546=a42_0x4347eb;return _0x3f4a3f['normalize']('NFC')[_0x18d546(0x1f6)]();}function isSafeHookDirectorySegment(_0x33229c){return isSafeLockKeySegment(_0x33229c);}async function sameDirectory(_0x24caef,_0x73aaaa){const _0x18a83d=a42_0x4347eb,[_0x28fd66,_0x6aa05f]=await Promise[_0x18a83d(0x21f)]([stat(_0x24caef),stat(_0x73aaaa)]);return _0x28fd66[_0x18a83d(0x209)]===_0x6aa05f[_0x18a83d(0x209)]&&_0x28fd66[_0x18a83d(0x1fd)]===_0x6aa05f[_0x18a83d(0x1fd)];}async function applyHookDirectoryMigration(_0x521d69,_0xaa939f){const _0x28f8ea=a42_0x4347eb,_0x2e777b=_0xaa939f[_0x28f8ea(0x273)],_0x4026b8=_0xaa939f[_0x28f8ea(0x1fe)],_0x2f6339=[],_0xef035a=async()=>{const _0x9aaaea=_0x28f8ea,_0x536a78=[];_0xaa939f[_0x9aaaea(0x273)]=_0x2e777b,_0xaa939f[_0x9aaaea(0x1fe)]=_0x4026b8;for(const {migration:_0x3ee354,temporaryPath:_0x215386}of[..._0x2f6339][_0x9aaaea(0x1f7)]()){try{_0x215386?(await rename(_0x3ee354['newDirectoryPath'],_0x215386),await rename(_0x215386,_0x3ee354[_0x9aaaea(0x244)])):await rename(_0x3ee354[_0x9aaaea(0x22a)],_0x3ee354[_0x9aaaea(0x244)]);}catch(_0x33771e){_0x536a78['push'](new Error(_0x9aaaea(0x24c)+_0x3ee354[_0x9aaaea(0x27a)]+'\x22\x20from\x20\x22'+_0x3ee354[_0x9aaaea(0x1fb)]+'\x22:\x20'+(_0x33771e instanceof Error?_0x33771e[_0x9aaaea(0x25b)]:String(_0x33771e))));}}return _0x536a78;};try{for(const _0x37d059 of _0x521d69['migrations']){if(_0x37d059['mode']===_0x28f8ea(0x218))await ensureParentDirectory(_0x37d059['newDirectoryPath']),await rename(_0x37d059[_0x28f8ea(0x244)],_0x37d059['newDirectoryPath']),_0x2f6339['push']({'migration':_0x37d059});else{if(_0x37d059[_0x28f8ea(0x285)]===_0x28f8ea(0x222)){const _0x59377f=join(dirname(_0x37d059['oldDirectoryPath']),'.hook-directory-migrate-'+randomUUID());await rename(_0x37d059[_0x28f8ea(0x244)],_0x59377f);try{await rename(_0x59377f,_0x37d059['newDirectoryPath']);}catch(_0x1696cf){try{await rename(_0x59377f,_0x37d059[_0x28f8ea(0x244)]);}catch(_0x1aa01d){throw withRollbackErrors(_0x1696cf,_0x28f8ea(0x249)+_0x37d059['oldDirectory']+_0x28f8ea(0x23f)+_0x37d059['newDirectory']+_0x28f8ea(0x270)+_0x59377f+_0x28f8ea(0x243),[new Error(_0x28f8ea(0x26b)+_0x59377f+_0x28f8ea(0x23f)+_0x37d059[_0x28f8ea(0x27a)]+'\x22:\x20'+(_0x1aa01d instanceof Error?_0x1aa01d[_0x28f8ea(0x25b)]:String(_0x1aa01d)))]);}throw _0x1696cf;}_0x2f6339['push']({'migration':_0x37d059,'temporaryPath':_0x59377f});}}}return _0xaa939f['functions']=_0x521d69[_0x28f8ea(0x21e)],{'rollback':_0xef035a};}catch(_0x117e37){const _0xc2ce48=await _0xef035a();throw withRollbackErrors(_0x117e37,'Failed\x20to\x20migrate\x20HOOK\x20directories;\x20local\x20changes\x20could\x20not\x20be\x20completely\x20rolled\x20back.',_0xc2ce48);}}async function confirmForce(){const _0x276add=a42_0x4347eb,_0x40305c=createInterface({'input':process['stdin'],'output':process[_0x276add(0x267)]}),_0xf9cc25=await new Promise(_0x38d63f=>{const _0x904eca=_0x276add;_0x40305c['question'](_0x904eca(0x23b),_0x38d63f);});return _0x40305c[_0x276add(0x25d)](),['y',_0x276add(0x241)][_0x276add(0x215)](_0xf9cc25[_0x276add(0x1f2)]()[_0x276add(0x1f6)]());}
|