@lovrabet/lovrabet-cli 2.2.2 → 2.2.3-beta.2
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/README.md +3 -0
- package/lib/cli.js +1 -1
- package/lib/commands/api-doc/index.js +1 -1
- package/lib/commands/app/cache.js +1 -1
- package/lib/commands/app/definitions.js +1 -1
- package/lib/commands/app/eligibility.js +1 -1
- package/lib/commands/app/mock-loader.js +1 -1
- package/lib/commands/app/remote-source.js +1 -1
- package/lib/commands/app/shared.js +1 -1
- package/lib/commands/app-config/get.js +1 -1
- package/lib/commands/app-config/index.js +1 -1
- package/lib/commands/artifact/index.js +1 -1
- package/lib/commands/auth/device.js +1 -1
- package/lib/commands/auth/index.js +1 -1
- package/lib/commands/auth/prompt.js +1 -1
- package/lib/commands/bff/detail.js +1 -1
- package/lib/commands/bff/exec.js +1 -1
- package/lib/commands/bff/index.js +1 -1
- package/lib/commands/cli-skill/index.js +1 -1
- package/lib/commands/common/config-policy.js +1 -1
- package/lib/commands/common/constraints.js +1 -1
- package/lib/commands/common/flags.js +1 -1
- package/lib/commands/common/local-file.js +1 -1
- package/lib/commands/config/definitions.js +1 -1
- package/lib/commands/config/shared.js +1 -1
- package/lib/commands/data/index.js +1 -1
- package/lib/commands/dataset/detail.js +1 -1
- package/lib/commands/dataset/index.js +1 -1
- package/lib/commands/dataset/list.js +1 -1
- package/lib/commands/dataset/sdk-doc.js +1 -1
- package/lib/commands/doctor.js +1 -1
- package/lib/commands/file/index.js +1 -1
- package/lib/commands/init.js +1 -1
- package/lib/commands/kb/index.js +1 -1
- package/lib/commands/logs/index.js +1 -1
- package/lib/commands/ocr/index.js +1 -1
- package/lib/commands/personal-bff/index.js +1 -1
- package/lib/commands/registry.js +1 -1
- package/lib/commands/schedule/index.js +1 -1
- package/lib/commands/schema.js +1 -1
- package/lib/commands/service/dynamic.js +1 -1
- package/lib/commands/service/function-name-adapter.js +1 -1
- package/lib/commands/service/index.js +1 -1
- package/lib/commands/service/registry.js +1 -1
- package/lib/commands/skill/commands/create.js +1 -1
- package/lib/commands/skill/commands/diagram.js +1 -1
- package/lib/commands/skill/commands/install.js +1 -1
- package/lib/commands/skill/commands/list.js +1 -1
- package/lib/commands/skill/commands/push.js +1 -1
- package/lib/commands/skill/commands/validate.js +1 -1
- package/lib/commands/skill/diagram.js +1 -1
- package/lib/commands/skill/flags.js +1 -1
- package/lib/commands/skill/index.js +1 -1
- package/lib/commands/skill/manifest-helpers.js +1 -1
- package/lib/commands/skill/push-execute.js +1 -1
- package/lib/commands/skill/push-flow-helpers.js +1 -1
- package/lib/commands/skill/push-retarget.js +1 -1
- package/lib/commands/skill/scopes.js +1 -1
- package/lib/commands/skill/summary.js +1 -1
- package/lib/commands/skill/templates.js +1 -1
- package/lib/commands/skill/validate.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/update.js +1 -1
- package/lib/commands/user-account/bind.d.ts +2 -0
- package/lib/commands/user-account/bind.js +1 -0
- package/lib/commands/user-account/index.d.ts +2 -0
- package/lib/commands/user-account/index.js +1 -0
- package/lib/commands/workspace/index.js +1 -1
- package/lib/config/schema.js +1 -1
- package/lib/constant/app.js +1 -1
- package/lib/constant/auth-mode.js +1 -1
- package/lib/constant/cli.js +1 -1
- package/lib/constant/defaults.js +1 -1
- package/lib/constant/distribution.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/product.js +1 -1
- package/lib/constant/risk.js +1 -1
- package/lib/constant/url.js +1 -1
- package/lib/context.js +1 -1
- package/lib/core/api-client.d.ts +2 -0
- package/lib/core/api-client.js +1 -1
- package/lib/core/db-resolver.js +1 -1
- package/lib/core/sdk-client.js +1 -1
- package/lib/errors.js +1 -1
- package/lib/framework/build-all-flags.js +1 -1
- package/lib/framework/dryrun.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/preparse.js +1 -1
- package/lib/framework/rate-limit.js +1 -1
- package/lib/framework/raw-flags.js +1 -1
- package/lib/framework/response.js +1 -1
- package/lib/framework/runner-confirmation.js +1 -1
- package/lib/framework/runner-error.js +1 -1
- package/lib/framework/runner.js +1 -1
- package/lib/framework/schema-export.js +1 -1
- package/lib/framework/service-order.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/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/npx-skills-add.js +1 -1
- package/lib/skills/runtime-skill-sync/constants.js +1 -1
- package/lib/skills/runtime-skill-sync/fs-utils.js +1 -1
- package/lib/skills/runtime-skill-sync/hashing.js +1 -1
- package/lib/skills/runtime-skill-sync/install-target.js +1 -1
- package/lib/skills/runtime-skill-sync/links.js +1 -1
- package/lib/skills/runtime-skill-sync/list-local.js +1 -1
- package/lib/skills/runtime-skill-sync/local-files.js +1 -1
- package/lib/skills/runtime-skill-sync/materialize.js +1 -1
- package/lib/skills/runtime-skill-sync/metadata.js +1 -1
- package/lib/skills/runtime-skill-sync/paths.js +1 -1
- package/lib/skills/runtime-skill-sync/push.js +1 -1
- package/lib/skills/runtime-skill-sync/scopes.js +1 -1
- package/lib/skills/runtime-skill-sync/zip-codec.js +1 -1
- package/lib/skills/runtime-skill-sync/zip-package.js +1 -1
- package/lib/skills/runtime-skill-sync.js +1 -1
- package/lib/skills/skill-presence.js +1 -1
- package/lib/utils/apply-jq-filter.js +1 -1
- package/lib/utils/logger.js +1 -1
- package/lib/utils/lossless-json.js +1 -1
- package/lib/utils/params.js +1 -1
- package/lib/utils/platform.js +1 -1
- package/lib/utils/update-notice.js +1 -1
- package/lib/utils/version.js +1 -1
- package/lib/utils/write-cli-side-channel.js +1 -1
- package/package.json +1 -1
- package/skills/lovrabet/SKILL.md +7 -3
- package/skills/lovrabet/guides/sql-and-bff-workflow.md +5 -0
- package/skills/lovrabet/references/lovrabet-personal-bff-workflow.md +1 -1
- package/skills/lovrabet/references/lovrabet-service-tree.md +2 -0
- package/skills/lovrabet/references/lovrabet-sql-workflow.md +4 -1
- package/skills/lovrabet/references/lovrabet-user-account.md +46 -0
- package/skills/lovrabet.manifest.json +4 -3
package/README.md
CHANGED
|
@@ -108,6 +108,7 @@ existing user-level links or the cache they still reference.
|
|
|
108
108
|
| Area | Commands |
|
|
109
109
|
| --- | --- |
|
|
110
110
|
| Authentication | `lovrabet auth login`, `lovrabet auth info`, `lovrabet auth logout` |
|
|
111
|
+
| User accounts | `lovrabet user-account bind` |
|
|
111
112
|
| App and workspace | `lovrabet app list`, `lovrabet workspace init`, `lovrabet workspace use` |
|
|
112
113
|
| Dataset discovery | `lovrabet dataset list`, `lovrabet dataset detail`, `lovrabet dataset sdk-doc` |
|
|
113
114
|
| Data operations | `lovrabet data filter`, `lovrabet data getOne`, `lovrabet data create`, `lovrabet data update`, `lovrabet data delete`, `lovrabet data aggregate` |
|
|
@@ -153,6 +154,8 @@ Important options:
|
|
|
153
154
|
personal BFF, or Skill operations.
|
|
154
155
|
- Use `--yes` only when the target app, dataset, parameters, and impact are
|
|
155
156
|
already verified.
|
|
157
|
+
- Before binding a DingTalk account, use `auth info` and `--dry-run` to
|
|
158
|
+
verify the current AccessKey identity and target user ID.
|
|
156
159
|
- Do not commit Access Keys, generated credentials, or local user config files.
|
|
157
160
|
|
|
158
161
|
## Documentation
|
package/lib/cli.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
const
|
|
2
|
+
const a0_0x50d014=a0_0x1bcd;(function(_0x519892,_0x47386f){const _0x20cdc1=a0_0x1bcd,_0x31f910=_0x519892();while(!![]){try{const _0x5a9503=-parseInt(_0x20cdc1(0x8b))/0x1+parseInt(_0x20cdc1(0x8a))/0x2*(parseInt(_0x20cdc1(0x94))/0x3)+-parseInt(_0x20cdc1(0xa7))/0x4*(parseInt(_0x20cdc1(0x93))/0x5)+-parseInt(_0x20cdc1(0xa2))/0x6*(-parseInt(_0x20cdc1(0x98))/0x7)+parseInt(_0x20cdc1(0x89))/0x8*(-parseInt(_0x20cdc1(0x88))/0x9)+parseInt(_0x20cdc1(0xa6))/0xa*(-parseInt(_0x20cdc1(0x87))/0xb)+-parseInt(_0x20cdc1(0x99))/0xc*(-parseInt(_0x20cdc1(0xa0))/0xd);if(_0x5a9503===_0x47386f)break;else _0x31f910['push'](_0x31f910['shift']());}catch(_0x24ba2d){_0x31f910['push'](_0x31f910['shift']());}}}(a0_0x234f,0x72254));import{jsx as a0_0x33af88}from'react/jsx-runtime';import a0_0x4dff19 from'meow';import{render}from'ink';import{Help}from'./help.js';import{CliError,CliErrors}from'./errors.js';import{buildConfigFromFlags,initGlobalEnvironment}from'./context.js';import{isKnownService,getServiceEntry,findDefinition,getAllDefinitions,resolveRemovedCommand}from'./commands/registry.js';import{generateDynamicServiceHelp,resolveDynamicServiceCommand}from'./commands/service/dynamic.js';import{runCommand,createPipelineEnv}from'./framework/runner.js';import{generateCommandHelp,generateServiceHelp,generateFullHelp}from'./framework/help.js';import{buildMeowFlags}from'./constant/cli.js';import{getCliVersionDisplay}from'./utils/version.js';const helpText=generateFullHelp(),cli=a0_0x4dff19(helpText,{'importMeta':import.meta,'flags':buildMeowFlags(),'version':getCliVersionDisplay()});void main()[a0_0x50d014(0xac)](handleError);async function main(){try{await run();}catch(_0x1aef21){handleError(_0x1aef21);}}async function run(){const _0x4bd0dd=a0_0x50d014;let _0x9a26b3=cli[_0x4bd0dd(0xa5)][0x0],_0x33dac5=cli[_0x4bd0dd(0xa5)][0x1];const _0xf6036c=cli['flags'];try{const {correctFlags:_0x5a771b}=await import(_0x4bd0dd(0x9f)),_0x315de3=getAllDefinitions()[_0x4bd0dd(0x97)](_0x2a1cc3=>_0x2a1cc3['flags']??[]),{flags:_0x8b9719,corrections:_0x5335f9}=_0x5a771b(_0xf6036c,_0x315de3);if(_0x5335f9['length']>0x0){for(const _0x16f9c2 of _0x5335f9){process[_0x4bd0dd(0xab)][_0x4bd0dd(0x8c)]('[preparse]\x20'+_0x16f9c2[_0x4bd0dd(0x82)]+_0x4bd0dd(0x91)+_0x16f9c2[_0x4bd0dd(0x7f)]+_0x4bd0dd(0x9a)+_0x16f9c2['corrected']+'\x0a');}Object['assign'](_0xf6036c,_0x8b9719);}}catch{}if(!_0x9a26b3){const {waitUntilExit:_0x5f015c}=render(a0_0x33af88(Help,{}));await _0x5f015c();return;}const _0x1af8b2=resolveRemovedCommand(_0x9a26b3,_0x33dac5);if(_0x1af8b2)throw CliErrors[_0x4bd0dd(0x84)](_0x1af8b2[_0x4bd0dd(0xa1)],_0x1af8b2[_0x4bd0dd(0x92)]);if(!isKnownService(_0x9a26b3)){const _0x3082fa=resolveDynamicServiceCommand(cli[_0x4bd0dd(0xa5)],_0xf6036c);if(_0x3082fa){if(_0xf6036c[_0x4bd0dd(0x80)]){console[_0x4bd0dd(0x8e)](generateCommandHelp(_0x3082fa[_0x4bd0dd(0x8d)]));return;}Object[_0x4bd0dd(0x86)](_0xf6036c,_0x3082fa[_0x4bd0dd(0x9b)]);const _0x14452a=buildConfigFromFlags(_0xf6036c);await initGlobalEnvironment(_0x14452a);const _0x52fccb=createPipelineEnv(_0x14452a,_0xf6036c);_0x52fccb[_0x4bd0dd(0xa8)]=_0x3082fa[_0x4bd0dd(0xa8)],await runCommand(_0x3082fa[_0x4bd0dd(0x8d)],_0x52fccb);return;}if(_0xf6036c[_0x4bd0dd(0x80)]){const _0x628083=generateDynamicServiceHelp(_0x9a26b3);if(_0x628083){console['log'](_0x628083);return;}}const {waitUntilExit:_0x4b2226}=render(a0_0x33af88(Help,{}));await _0x4b2226();return;}const _0x3b17c1=getServiceEntry(_0x9a26b3);if(!_0x33dac5){if(_0xf6036c[_0x4bd0dd(0x80)]){console[_0x4bd0dd(0x8e)](generateServiceHelp(_0x9a26b3));return;}if(_0x3b17c1['defaultCommand'])_0x33dac5=_0x3b17c1[_0x4bd0dd(0x9d)];else{console['log'](generateServiceHelp(_0x9a26b3));return;}}const _0x3087bb=findDefinition(_0x9a26b3,_0x33dac5);!_0x3087bb&&(console[_0x4bd0dd(0x8e)](generateServiceHelp(_0x9a26b3)),handleError(CliErrors[_0x4bd0dd(0x7e)](_0x9a26b3+'\x20'+_0x33dac5)));if(_0xf6036c[_0x4bd0dd(0x80)]){console[_0x4bd0dd(0x8e)](generateCommandHelp(_0x3087bb));return;}const _0x3efd63=buildConfigFromFlags(_0xf6036c);await initGlobalEnvironment(_0x3efd63);const _0x4d4f16=createPipelineEnv(_0x3efd63,_0xf6036c);_0x4d4f16[_0x4bd0dd(0xa8)]=cli[_0x4bd0dd(0xa5)][_0x4bd0dd(0xa9)](0x2),await runCommand(_0x3087bb,_0x4d4f16);}function handleError(_0x55dcf8){const _0x7e6633=a0_0x50d014;if(_0x55dcf8 instanceof CliError){_0x55dcf8['code']==='cancelled'&&(process[_0x7e6633(0xab)][_0x7e6633(0x8c)](_0x7e6633(0x90)),process[_0x7e6633(0x8f)](0x0));console[_0x7e6633(0x81)](_0x7e6633(0x9c)+_0x55dcf8[_0x7e6633(0xa1)]);if(_0x55dcf8[_0x7e6633(0x92)])console[_0x7e6633(0x81)](_0x7e6633(0x96)+_0x55dcf8[_0x7e6633(0x92)]);process[_0x7e6633(0x8f)](_0x55dcf8[_0x7e6633(0xa3)]);}isUserCancellation(_0x55dcf8)&&(process[_0x7e6633(0xab)][_0x7e6633(0x8c)](_0x7e6633(0x90)),process[_0x7e6633(0x8f)](0x0)),console[_0x7e6633(0x81)](_0x7e6633(0x83),_0x55dcf8),process[_0x7e6633(0x8f)](0x1);}function isUserCancellation(_0x109e0b){const _0x11fdec=a0_0x50d014;if(!(_0x109e0b instanceof Error))return![];if(_0x109e0b[_0x11fdec(0x95)]===_0x11fdec(0x85))return!![];if(_0x109e0b[_0x11fdec(0xa4)]===_0x11fdec(0x9e))return!![];if(_0x109e0b['code']===_0x11fdec(0xaa))return!![];return![];}function a0_0x1bcd(_0x4ebc85,_0x376080){_0x4ebc85=_0x4ebc85-0x7e;const _0x234fd8=a0_0x234f();let _0x1bcdd5=_0x234fd8[_0x4ebc85];return _0x1bcdd5;}function a0_0x234f(){const _0x307698=['612331LsVOJU','write','definition','log','exit','\x0aCancelled.\x0a',':\x20--','hint','519685nBmnGd','2514591LRzPwq','name','Hint:\x20','flatMap','88718GsPJcq','756riBzCI','\x20->\x20--','flags','Error:\x20','defaultCommand','ERR_USE_AFTER_CLOSE','./framework/preparse.js','119613ZDeJPJ','message','84XGQcHh','exitCode','code','input','65070cSEzcU','4krtVVw','args','slice','ERR_STREAM_DESTROYED','stderr','catch','unknownCommand','original','help','error','handler','Unexpected\x20error:','validation','ExitPromptError','assign','187ogabin','2707821qTzEqL','8iGdwGo','2xMIvrS'];a0_0x234f=function(){return _0x307698;};return a0_0x234f();}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function a1_0x8911(){const _0x1883e8=['Get\x20BF\x20endpoint\x20function\x20contract','CLI\x20returns\x20appCode/functionName/description/version/gmtModified','Aggregate\x20supports\x20COUNT,\x20SUM,\x20AVG,\x20MAX,\x20and\x20MIN\x20definitions\x20in\x20the\x20`aggregate`\x20array.','##\x20Dataset\x20detail','Exact\x20endpoint\x20function\x20name','聚合查询数据集数据','dataset_data_create','需要按数据集\x20code\x20获取字段、表信息、关联关系(relations)或操作定义时使用','##\x20Get\x20one\x20dataset\x20record\x0a\x0aRead\x20one\x20record\x20by\x20id.','dataset_data_aggregate','执行自定义\x20SQL','find','join','fields/properties\x20describe\x20data\x20shape','keyword','已经确认目标\x20sqlCode\x20存在,并需要实际执行该自定义\x20SQL\x20时使用','length','detail','lovrabet\x20data\x20filter\x20--code\x20<datasetCode>\x20--params\x20\x27{\x22where\x22:{\x22status\x22:{\x22$eq\x22:\x22active\x22}},\x22orderBy\x22:[{\x22id\x22:\x22asc\x22}],\x22currentPage\x22:2,\x22pageSize\x22:20}\x27','Use\x20read-only\x20data\x20commands\x20before\x20writing\x20Artifacts\x20that\x20display\x20real\x20data.','Returns\x20one\x20matching\x20business\x20record','dataset_list','None','32-character\x20dataset\x20code','code','Returns\x20the\x20created\x20record\x20or\x20backend\x20operation\x20result','api-doc','8MDDkIW','dataset_data_filter','需要按\x20groupBy\x20分组并做\x20count、sum、avg、max、min\x20等聚合统计时使用','984732ezsFxQ','paging\x20contains\x20pagination','/api/endpoint/{appCode}/{functionName}','List\x20available\x20runtime\x20API\x20documentation\x20entries','获取数据集详情','##\x20Filter\x20dataset\x20data','Use\x20`having`\x20only\x20for\x20post-aggregation\x20filters.','1382232ERkAlM','bf_execute','Verify\x20tableData\x20and\x20paging\x20before\x20treating\x20the\x20response\x20as\x20a\x20business\x20fact.','path','title','whenToUse','3787bEVSnD','已经确认目标\x20BF\x20的\x20functionName,且需要实际调用该\x20ENDPOINT\x20函数完成业务操作时使用','map','创建数据','/client/bff/endpoint/{appCode}/{functionName}','6576777QYZamq','GET','##\x20Execute\x20custom\x20SQL\x0a\x0aExecute\x20a\x20configured\x20SQL\x20script\x20by\x20sqlCode.','tableData\x20contains\x20dataset\x20id/code/name','validation','lovrabet\x20dataset\x20list\x20--appcode\x20<appCode>\x20--format\x20compress','functionName','string','##\x20Execute\x20BF\x20endpoint\x20function\x0a\x0aExecute\x20a\x20known\x20endpoint\x20script.','/api/{appCode}/{datasetCode}/filter','Filter\x20dataset\x20data','lovrabet\x20bff\x20detail\x20--name\x20<functionName>','POST','CLI\x20users\x20should\x20prefer\x20`lovrabet\x20dataset\x20list`\x20for\x20this\x20workflow.','需要按\x20appCode\x20分页获取运行态数据集列表,并优先收敛可用\x20datasetCode\x20时使用','按应用和函数名精确获取\x20BF\x20运行契约','filter','appCode','tableData\x20contains\x20records','{\x22fieldName\x22:\x22value\x22}','Show\x20runtime\x20API\x20documentation\x20by\x20code','346YrKFSy','{\x22appCode\x22:\x22app-aa63b188\x22,\x22currentPage\x22:1,\x22pageSize\x22:100}','1922850XhyLfq','121528jvxpWa','bf_detail','1450smIzLE','Prefer\x20`filter`\x20when\x20the\x20record\x20id\x20is\x20unknown.','Create\x20dataset\x20record','Use\x20`lovrabet\x20sql\x20detail`\x20before\x20execution.','{\x22aggregate\x22:[{\x22column\x22:\x20\x22id\x22,\x22type\x22:\x22COUNT\x22,\x22alias\x22:\x22cnt\x22}],\x22groupBy\x22:[]}','result\x20rows\x20contain\x20aggregate\x20aliases','Use\x20`where`,\x20`select`,\x20`orderBy`,\x20`currentPage`,\x20and\x20`pageSize`\x20to\x20inspect\x20live\x20data\x20shape.','str','{\x22appCode\x22:\x22app-aa63b188\x22,\x22sqlCode\x22:\x22xxxxxxxx-xxxxxxxx\x22,\x22params\x22:{}}','dataset_data_get_one','已经知道记录\x20id,需要按数据集读取单条业务数据时使用','dataset','category','/api/{appCode}/{datasetCode}/create','Search\x20docs\x20by\x20code,\x20summary,\x20path,\x20or\x20usage\x20text','For\x20the\x20next\x20page,\x20keep\x20where/select/orderBy/pageSize\x20unchanged\x20and\x20increment\x20only\x20currentPage,\x20which\x20starts\x20at\x201.','Execute\x20BF\x20endpoint\x20function','trim','lovrabet\x20data\x20getOne\x20--code\x20<datasetCode>\x20--params\x20\x27{\x22id\x22:123}\x27','##\x20Create\x20dataset\x20record\x0a\x0aCreate\x20one\x20data\x20record\x20in\x20a\x20dataset.','Get\x20one\x20dataset\x20record','List\x20datasets','分页获取数据集列表','Script\x20behavior\x20may\x20have\x20side\x20effects;\x20inspect\x20detail\x20first.','datasetCode','where\x20filters\x20before\x20aggregation','This\x20is\x20an\x20exact\x20lookup\x20by\x20appCode\x20+\x20functionName.\x20The\x20CLI\x20does\x20not\x20enumerate\x20BFF\x20functions\x20or\x20expose\x20platform-only\x20fields.','lovrabet\x20data\x20filter\x20--code\x20<datasetCode>\x20--params\x20\x27{\x22where\x22:{\x22status\x22:{\x22$eq\x22:\x22active\x22}},\x22orderBy\x22:[{\x22id\x22:\x22asc\x22}],\x22currentPage\x22:1,\x22pageSize\x22:20}\x27','{\x22id\x22:123}','Aggregate\x20dataset\x20data','method','includes','Current\x20app\x20code','operations\x20describes\x20runtime\x20APIs','lovrabet\x20data\x20create\x20--code\x20<datasetCode>\x20--params\x20\x27{\x22name\x22:\x22demo\x22}\x27','toLowerCase','##\x20Aggregate\x20dataset\x20data','/api/custom/executeSql','summary','read','paging.totalCount\x20gives\x20total\x20rows','Returns\x20script\x20business\x20payload','This\x20is\x20a\x20write\x20operation;\x20use\x20dry-run\x20when\x20available\x20and\x20safe\x20fixtures\x20for\x20smoke\x20tests.','1602080mOZZxe','15XjfTrj','/api/dataset/get-dataset-list-by-app-code','/api/dataset/getOneByCode?code={datasetCode}','需要携带\x20where、orderBy、分页等条件读取业务数据时使用','Endpoint\x20function\x20name'];a1_0x8911=function(){return _0x1883e8;};return a1_0x8911();}function a1_0x32c5(_0x133aa5,_0x2f0ecb){_0x133aa5=_0x133aa5-0xac;const _0x89114e=a1_0x8911();let _0x32c56d=_0x89114e[_0x133aa5];return _0x32c56d;}const a1_0x1f9e01=a1_0x32c5;(function(_0x542f8c,_0x30f223){const _0x5659ed=a1_0x32c5,_0x1f1fdc=_0x542f8c();while(!![]){try{const _0x2b419d=parseInt(_0x5659ed(0xd3))/0x1*(-parseInt(_0x5659ed(0xed))/0x2)+parseInt(_0x5659ed(0xef))/0x3+parseInt(_0x5659ed(0x11d))/0x4+-parseInt(_0x5659ed(0x11e))/0x5*(parseInt(_0x5659ed(0xcd))/0x6)+-parseInt(_0x5659ed(0xc6))/0x7+-parseInt(_0x5659ed(0xc3))/0x8*(parseInt(_0x5659ed(0xd8))/0x9)+parseInt(_0x5659ed(0xf2))/0xa*(parseInt(_0x5659ed(0xf0))/0xb);if(_0x2b419d===_0x30f223)break;else _0x1f1fdc['push'](_0x1f1fdc['shift']());}catch(_0x282c35){_0x1f1fdc['push'](_0x1f1fdc['shift']());}}}(a1_0x8911,0x67f06));import{CliErrors}from'../../errors.js';const CATEGORY_FLAG={'name':a1_0x1f9e01(0xfe),'type':'string','description':'Filter\x20docs\x20by\x20category,\x20for\x20example\x20dataset'},KEYWORD_FLAG={'name':a1_0x1f9e01(0xb6),'type':a1_0x1f9e01(0xdf),'description':a1_0x1f9e01(0x100)},DOC_CODE_FLAG={'name':a1_0x1f9e01(0xc0),'type':'string','required':!![],'description':'API\x20doc\x20code,\x20for\x20example\x20dataset_list'},DOCS=[{'code':a1_0x1f9e01(0xbd),'category':a1_0x1f9e01(0xfd),'title':a1_0x1f9e01(0x107),'method':a1_0x1f9e01(0xe4),'path':a1_0x1f9e01(0x11f),'summary':a1_0x1f9e01(0x108),'whenToUse':a1_0x1f9e01(0xe6),'pathParams':[],'queryParams':[],'bodySchema':a1_0x1f9e01(0xee),'responseHighlights':[a1_0x1f9e01(0xdb),a1_0x1f9e01(0x11a)],'examples':[a1_0x1f9e01(0xdd)],'notes':[a1_0x1f9e01(0xe5)],'markdown':['##\x20List\x20datasets','','Use\x20this\x20API\x20or\x20`lovrabet\x20dataset\x20list`\x20to\x20discover\x20available\x20dataset\x20codes\x20before\x20reading\x20data.']['join']('\x0a')},{'code':'dataset_detail','category':a1_0x1f9e01(0xfd),'title':'Dataset\x20detail','method':a1_0x1f9e01(0xd9),'path':a1_0x1f9e01(0x120),'summary':a1_0x1f9e01(0xca),'whenToUse':a1_0x1f9e01(0xaf),'pathParams':[],'queryParams':[{'name':a1_0x1f9e01(0xc0),'description':a1_0x1f9e01(0xbf)}],'bodySchema':a1_0x1f9e01(0xbe),'responseHighlights':[a1_0x1f9e01(0xb5),'relations\x20contains\x20the\x20object-shaped\x20API\x20relations\x20value\x20when\x20returned',a1_0x1f9e01(0x113)],'examples':['lovrabet\x20dataset\x20detail\x20--code\x20<datasetCode>\x20--appcode\x20<appCode>'],'notes':['If\x20SDK\x20usage\x20is\x20needed,\x20follow\x20with\x20`lovrabet\x20dataset\x20sdk-doc\x20--code\x20<datasetCode>`.'],'markdown':[a1_0x1f9e01(0x126),'','Inspect\x20field\x20names,\x20relations,\x20and\x20operation\x20metadata\x20for\x20a\x20known\x20dataset\x20code.'][a1_0x1f9e01(0xb4)]('\x0a')},{'code':a1_0x1f9e01(0xc4),'category':'dataset','title':a1_0x1f9e01(0xe2),'method':a1_0x1f9e01(0xe4),'path':a1_0x1f9e01(0xe1),'summary':'条件过滤查询数据','whenToUse':a1_0x1f9e01(0x121),'pathParams':[{'name':a1_0x1f9e01(0xe9),'description':a1_0x1f9e01(0x112)},{'name':a1_0x1f9e01(0x10a),'description':a1_0x1f9e01(0xbf)}],'queryParams':[],'bodySchema':'{\x22where\x22:{},\x22currentPage\x22:1,\x22pageSize\x22:20}','responseHighlights':[a1_0x1f9e01(0xea),a1_0x1f9e01(0xc7)],'examples':[a1_0x1f9e01(0x10d),a1_0x1f9e01(0xba)],'notes':['where,\x20select,\x20orderBy,\x20currentPage,\x20and\x20pageSize\x20belong\x20inside\x20one\x20--params\x20JSON\x20object;\x20they\x20are\x20not\x20standalone\x20CLI\x20flags.',a1_0x1f9e01(0x101),a1_0x1f9e01(0xcf),a1_0x1f9e01(0xbb)],'markdown':[a1_0x1f9e01(0xcb),'',a1_0x1f9e01(0xf8)][a1_0x1f9e01(0xb4)]('\x0a')},{'code':a1_0x1f9e01(0xb1),'category':a1_0x1f9e01(0xfd),'title':a1_0x1f9e01(0x10f),'method':'POST','path':'/api/{appCode}/{datasetCode}/aggregate','summary':a1_0x1f9e01(0xad),'whenToUse':a1_0x1f9e01(0xc5),'pathParams':[{'name':'appCode','description':a1_0x1f9e01(0x112)},{'name':a1_0x1f9e01(0x10a),'description':'32-character\x20dataset\x20code'}],'queryParams':[],'bodySchema':a1_0x1f9e01(0xf6),'responseHighlights':[a1_0x1f9e01(0xf7),a1_0x1f9e01(0x10b)],'examples':['lovrabet\x20data\x20aggregate\x20--code\x20<datasetCode>\x20--params\x20\x27{\x22aggregate\x22:[{\x22column\x22:\x22id\x22,\x22type\x22:\x22COUNT\x22,\x22alias\x22:\x22cnt\x22}]}\x27'],'notes':[a1_0x1f9e01(0xcc),'`field`\x20is\x20accepted\x20as\x20a\x20deprecated\x20alias\x20for\x20`column`;\x20new\x20calls\x20should\x20use\x20`column`.'],'markdown':[a1_0x1f9e01(0x116),'',a1_0x1f9e01(0x125)][a1_0x1f9e01(0xb4)]('\x0a')},{'code':a1_0x1f9e01(0xfb),'category':'dataset','title':a1_0x1f9e01(0x106),'method':'POST','path':'/api/{appCode}/{datasetCode}/getOne','summary':'查询单条数据','whenToUse':a1_0x1f9e01(0xfc),'pathParams':[{'name':a1_0x1f9e01(0xe9),'description':a1_0x1f9e01(0x112)},{'name':a1_0x1f9e01(0x10a),'description':'32-character\x20dataset\x20code'}],'queryParams':[],'bodySchema':a1_0x1f9e01(0x10e),'responseHighlights':[a1_0x1f9e01(0xbc)],'examples':[a1_0x1f9e01(0x104)],'notes':[a1_0x1f9e01(0xf3)],'markdown':a1_0x1f9e01(0xb0)},{'code':a1_0x1f9e01(0xae),'category':a1_0x1f9e01(0xfd),'title':a1_0x1f9e01(0xf4),'method':a1_0x1f9e01(0xe4),'path':a1_0x1f9e01(0xff),'summary':a1_0x1f9e01(0xd6),'whenToUse':'需要向指定数据集新增一条业务数据时使用','pathParams':[{'name':a1_0x1f9e01(0xe9),'description':a1_0x1f9e01(0x112)},{'name':'datasetCode','description':a1_0x1f9e01(0xbf)}],'queryParams':[],'bodySchema':a1_0x1f9e01(0xeb),'responseHighlights':[a1_0x1f9e01(0xc1)],'examples':[a1_0x1f9e01(0x114)],'notes':[a1_0x1f9e01(0x11c)],'markdown':a1_0x1f9e01(0x105)},{'code':a1_0x1f9e01(0xf1),'category':'bf','title':a1_0x1f9e01(0x123),'method':a1_0x1f9e01(0xd9),'path':a1_0x1f9e01(0xd7),'summary':a1_0x1f9e01(0xe7),'whenToUse':'已经从用户、平台\x20UI\x20或前序上下文确认函数名,需要查看该\x20ENDPOINT\x20的运行态元信息时使用','pathParams':[{'name':a1_0x1f9e01(0xe9),'description':a1_0x1f9e01(0x112)},{'name':a1_0x1f9e01(0xde),'description':a1_0x1f9e01(0xac)}],'queryParams':[],'bodySchema':a1_0x1f9e01(0xbe),'responseHighlights':[a1_0x1f9e01(0x124)],'examples':[a1_0x1f9e01(0xe3)],'notes':[a1_0x1f9e01(0x10c)],'markdown':'##\x20Get\x20BF\x20endpoint\x20function\x20contract\x0a\x0aInspect\x20one\x20known\x20endpoint\x20function\x20through\x20the\x20AK-authenticated\x20exact\x20detail\x20API.'},{'code':a1_0x1f9e01(0xce),'category':'bf','title':a1_0x1f9e01(0x102),'method':'POST','path':a1_0x1f9e01(0xc8),'summary':'执行指定\x20BF\x20函数','whenToUse':a1_0x1f9e01(0xd4),'pathParams':[{'name':a1_0x1f9e01(0xe9),'description':'Current\x20app\x20code'},{'name':'functionName','description':a1_0x1f9e01(0x122)}],'queryParams':[],'bodySchema':'{\x22param\x22:\x22value\x22}','responseHighlights':[a1_0x1f9e01(0x11b)],'examples':['lovrabet\x20bff\x20exec\x20--name\x20<functionName>\x20--params\x20\x27{}\x27'],'notes':[a1_0x1f9e01(0x109)],'markdown':a1_0x1f9e01(0xe0)},{'code':'custom_sql_execute','category':'custom_sql','title':'Execute\x20custom\x20SQL','method':'POST','path':a1_0x1f9e01(0x117),'summary':a1_0x1f9e01(0xb2),'whenToUse':a1_0x1f9e01(0xb7),'pathParams':[],'queryParams':[],'bodySchema':a1_0x1f9e01(0xfa),'responseHighlights':['Returns\x20SQL\x20execution\x20payload'],'examples':['lovrabet\x20sql\x20exec\x20--sqlcode\x20<sqlCode>\x20--params\x20\x27{}\x27'],'notes':[a1_0x1f9e01(0xf5)],'markdown':a1_0x1f9e01(0xda)}];function entrySummary(_0x27ceff){const _0x39480c=a1_0x1f9e01;return{'code':_0x27ceff[_0x39480c(0xc0)],'category':_0x27ceff[_0x39480c(0xfe)],'method':_0x27ceff[_0x39480c(0x110)],'path':_0x27ceff[_0x39480c(0xd0)],'summary':_0x27ceff[_0x39480c(0x118)],'whenToUse':_0x27ceff[_0x39480c(0xd2)]};}export function listApiDocEntries(_0x4d6b02={}){const _0xd107eb=a1_0x1f9e01,_0x343509=String(_0x4d6b02[_0xd107eb(0xfe)]||'')[_0xd107eb(0x103)](),_0x5d0d36=String(_0x4d6b02[_0xd107eb(0xb6)]||'')[_0xd107eb(0x103)]()[_0xd107eb(0x115)]();return DOCS[_0xd107eb(0xe8)](_0x3f90e8=>{const _0x5c54fa=_0xd107eb;if(_0x343509&&_0x3f90e8[_0x5c54fa(0xfe)]!==_0x343509)return![];if(!_0x5d0d36)return!![];return[_0x3f90e8[_0x5c54fa(0xc0)],_0x3f90e8[_0x5c54fa(0xfe)],_0x3f90e8[_0x5c54fa(0x110)],_0x3f90e8['path'],_0x3f90e8['summary'],_0x3f90e8[_0x5c54fa(0xd2)],_0x3f90e8[_0x5c54fa(0xd1)]]['join']('\x20')['toLowerCase']()[_0x5c54fa(0x111)](_0x5d0d36);})[_0xd107eb(0xd5)](entrySummary);}export function getApiDocDetail(_0x54597b){const _0x5485c7=a1_0x1f9e01,_0x372346=DOCS[_0x5485c7(0xb3)](_0xf9a8f7=>_0xf9a8f7[_0x5485c7(0xc0)]===_0x54597b);if(!_0x372346)throw CliErrors[_0x5485c7(0xdc)]('API\x20doc\x20code\x20not\x20found:\x20'+_0x54597b);return{..._0x372346};}const apiDocList={'service':a1_0x1f9e01(0xc2),'command':'list','description':a1_0x1f9e01(0xc9),'risk':'read','requiresAppCode':![],'flags':[CATEGORY_FLAG,KEYWORD_FLAG],async 'execute'(_0x5f3025){const _0x14df61=a1_0x1f9e01,_0x457604=listApiDocEntries({'category':_0x5f3025[_0x14df61(0xf9)](_0x14df61(0xfe)),'keyword':_0x5f3025[_0x14df61(0xf9)](_0x14df61(0xb6))});return{'ok':!![],'data':{'total':_0x457604[_0x14df61(0xb8)],'items':_0x457604}};}},apiDocDetail={'service':a1_0x1f9e01(0xc2),'command':a1_0x1f9e01(0xb9),'description':a1_0x1f9e01(0xec),'risk':a1_0x1f9e01(0x119),'requiresAppCode':![],'flags':[DOC_CODE_FLAG],async 'execute'(_0x56ea85){return{'ok':!![],'data':getApiDocDetail(_0x56ea85['str']('code'))};}};export const apiDocDefinitions=[apiDocList,apiDocDetail];
|
|
1
|
+
function a1_0x35e0(){const _0x22aa25=['lovrabet\x20data\x20filter\x20--code\x20<datasetCode>\x20--params\x20\x27{\x22where\x22:{\x22status\x22:{\x22$eq\x22:\x22active\x22}},\x22orderBy\x22:[{\x22id\x22:\x22asc\x22}],\x22currentPage\x22:1,\x22pageSize\x22:20}\x27','str','需要按数据集\x20code\x20获取字段、表信息、关联关系(relations)或操作定义时使用','Search\x20docs\x20by\x20code,\x20summary,\x20path,\x20or\x20usage\x20text','category','GET','357290rQrfBb','code','tableData\x20contains\x20records','Exact\x20endpoint\x20function\x20name','POST','For\x20the\x20next\x20page,\x20keep\x20where/select/orderBy/pageSize\x20unchanged\x20and\x20increment\x20only\x20currentPage,\x20which\x20starts\x20at\x201.','lovrabet\x20data\x20aggregate\x20--code\x20<datasetCode>\x20--params\x20\x27{\x22aggregate\x22:[{\x22column\x22:\x22id\x22,\x22type\x22:\x22COUNT\x22,\x22alias\x22:\x22cnt\x22}]}\x27','/api/custom/executeSql','2755521inUiDF','lovrabet\x20bff\x20exec\x20--name\x20<functionName>\x20--params\x20\x27{}\x27','##\x20Aggregate\x20dataset\x20data','Create\x20dataset\x20record','appCode','If\x20SDK\x20usage\x20is\x20needed,\x20follow\x20with\x20`lovrabet\x20dataset\x20sdk-doc\x20--code\x20<datasetCode>`.','Returns\x20the\x20created\x20record\x20or\x20backend\x20operation\x20result','fields/properties\x20describe\x20data\x20shape','/api/{appCode}/{datasetCode}/aggregate','2145619YOuOlT','已经确认目标\x20BF\x20的\x20functionName,且需要实际调用该\x20ENDPOINT\x20函数完成业务操作时使用','summary','Filter\x20docs\x20by\x20category,\x20for\x20example\x20dataset','Use\x20read-only\x20data\x20commands\x20before\x20writing\x20Artifacts\x20that\x20display\x20real\x20data.','Get\x20one\x20dataset\x20record','/api/{appCode}/{datasetCode}/create','聚合查询数据集数据','relations\x20contains\x20the\x20object-shaped\x20API\x20relations\x20value\x20when\x20returned','Endpoint\x20function\x20name','detail','##\x20Get\x20one\x20dataset\x20record\x0a\x0aRead\x20one\x20record\x20by\x20id.','需要按\x20groupBy\x20分组并做\x20count、sum、avg、max、min\x20等聚合统计时使用','dataset_data_aggregate','read','Use\x20`where`,\x20`select`,\x20`orderBy`,\x20`currentPage`,\x20and\x20`pageSize`\x20to\x20inspect\x20live\x20data\x20shape.','datasetCode','Verify\x20tableData\x20and\x20paging\x20before\x20treating\x20the\x20response\x20as\x20a\x20business\x20fact.','paging\x20contains\x20pagination','{\x22where\x22:{},\x22currentPage\x22:1,\x22pageSize\x22:20}','trim','Execute\x20custom\x20SQL','已经知道记录\x20id,需要按数据集读取单条业务数据时使用','2293184bAsdlk','/api/dataset/getOneByCode?code={datasetCode}','lovrabet\x20data\x20getOne\x20--code\x20<datasetCode>\x20--params\x20\x27{\x22id\x22:123}\x27','find','##\x20Dataset\x20detail','{\x22appCode\x22:\x22app-aa63b188\x22,\x22currentPage\x22:1,\x22pageSize\x22:100}','##\x20Filter\x20dataset\x20data','map','##\x20List\x20datasets','{\x22id\x22:123}','string','validation','Get\x20BF\x20endpoint\x20function\x20contract','list','按应用和函数名精确获取\x20BF\x20运行契约','dataset_data_create','API\x20doc\x20code\x20not\x20found:\x20','{\x22aggregate\x22:[{\x22column\x22:\x20\x22id\x22,\x22type\x22:\x22COUNT\x22,\x22alias\x22:\x22cnt\x22}],\x22groupBy\x22:[]}','Returns\x20one\x20matching\x20business\x20record','条件过滤查询数据','operations\x20describes\x20runtime\x20APIs','44944ETvIqT','78tEFrZm','lovrabet\x20sql\x20exec\x20--sqlcode\x20<sqlCode>\x20--params\x20\x27{}\x27','Use\x20`having`\x20only\x20for\x20post-aggregation\x20filters.','分页获取数据集列表','lovrabet\x20data\x20filter\x20--code\x20<datasetCode>\x20--params\x20\x27{\x22where\x22:{\x22status\x22:{\x22$eq\x22:\x22active\x22}},\x22orderBy\x22:[{\x22id\x22:\x22asc\x22}],\x22currentPage\x22:2,\x22pageSize\x22:20}\x27','custom_sql','/api/endpoint/{appCode}/{functionName}','method','CLI\x20returns\x20appCode/functionName/description/version/gmtModified','Returns\x20SQL\x20execution\x20payload','CLI\x20users\x20should\x20prefer\x20`lovrabet\x20dataset\x20list`\x20for\x20this\x20workflow.','Current\x20app\x20code','join','lovrabet\x20data\x20create\x20--code\x20<datasetCode>\x20--params\x20\x27{\x22name\x22:\x22demo\x22}\x27','tableData\x20contains\x20dataset\x20id/code/name','List\x20available\x20runtime\x20API\x20documentation\x20entries','None','5855BoHwgu','`field`\x20is\x20accepted\x20as\x20a\x20deprecated\x20alias\x20for\x20`column`;\x20new\x20calls\x20should\x20use\x20`column`.','bf_detail','153407FTAgjs','api-doc','includes','/api/{appCode}/{datasetCode}/filter','已经确认目标\x20sqlCode\x20存在,并需要实际执行该自定义\x20SQL\x20时使用','{\x22fieldName\x22:\x22value\x22}','paging.totalCount\x20gives\x20total\x20rows','lovrabet\x20dataset\x20detail\x20--code\x20<datasetCode>\x20--appcode\x20<appCode>','32-character\x20dataset\x20code','path','result\x20rows\x20contain\x20aggregate\x20aliases','API\x20doc\x20code,\x20for\x20example\x20dataset_list','whenToUse','{\x22appCode\x22:\x22app-aa63b188\x22,\x22sqlCode\x22:\x22xxxxxxxx-xxxxxxxx\x22,\x22params\x22:{}}','Use\x20this\x20API\x20or\x20`lovrabet\x20dataset\x20list`\x20to\x20discover\x20available\x20dataset\x20codes\x20before\x20reading\x20data.','dataset_data_filter','title','dataset_list','创建数据','toLowerCase','获取数据集详情','执行指定\x20BF\x20函数','##\x20Execute\x20custom\x20SQL\x0a\x0aExecute\x20a\x20configured\x20SQL\x20script\x20by\x20sqlCode.','length','dataset','Dataset\x20detail','需要按\x20appCode\x20分页获取运行态数据集列表,并优先收敛可用\x20datasetCode\x20时使用','45cUMwai','functionName','/client/bff/endpoint/{appCode}/{functionName}','需要携带\x20where、orderBy、分页等条件读取业务数据时使用','Execute\x20BF\x20endpoint\x20function'];a1_0x35e0=function(){return _0x22aa25;};return a1_0x35e0();}const a1_0x3b8444=a1_0x2f08;(function(_0x354fdf,_0x40757f){const _0x3609fe=a1_0x2f08,_0x238220=_0x354fdf();while(!![]){try{const _0xa36c3a=parseInt(_0x3609fe(0x146))/0x1+parseInt(_0x3609fe(0xf4))/0x2+-parseInt(_0x3609fe(0xe9))/0x3*(-parseInt(_0x3609fe(0x131))/0x4)+-parseInt(_0x3609fe(0x143))/0x5*(parseInt(_0x3609fe(0x132))/0x6)+-parseInt(_0x3609fe(0x105))/0x7+parseInt(_0x3609fe(0x11c))/0x8+-parseInt(_0x3609fe(0xfc))/0x9;if(_0xa36c3a===_0x40757f)break;else _0x238220['push'](_0x238220['shift']());}catch(_0x472358){_0x238220['push'](_0x238220['shift']());}}}(a1_0x35e0,0x26e63));function a1_0x2f08(_0x5d3f0f,_0x28b31a){_0x5d3f0f=_0x5d3f0f-0xe8;const _0x35e028=a1_0x35e0();let _0x2f08ce=_0x35e028[_0x5d3f0f];return _0x2f08ce;}import{CliErrors}from'../../errors.js';const CATEGORY_FLAG={'name':a1_0x3b8444(0xf2),'type':a1_0x3b8444(0x126),'description':a1_0x3b8444(0x108)},KEYWORD_FLAG={'name':'keyword','type':a1_0x3b8444(0x126),'description':a1_0x3b8444(0xf1)},DOC_CODE_FLAG={'name':a1_0x3b8444(0xf5),'type':a1_0x3b8444(0x126),'required':!![],'description':a1_0x3b8444(0x151)},DOCS=[{'code':a1_0x3b8444(0x157),'category':'dataset','title':'List\x20datasets','method':a1_0x3b8444(0xf8),'path':'/api/dataset/get-dataset-list-by-app-code','summary':a1_0x3b8444(0x135),'whenToUse':a1_0x3b8444(0xe8),'pathParams':[],'queryParams':[],'bodySchema':a1_0x3b8444(0x121),'responseHighlights':[a1_0x3b8444(0x140),a1_0x3b8444(0x14c)],'examples':['lovrabet\x20dataset\x20list\x20--appcode\x20<appCode>\x20--format\x20compress'],'notes':[a1_0x3b8444(0x13c)],'markdown':[a1_0x3b8444(0x124),'',a1_0x3b8444(0x154)]['join']('\x0a')},{'code':'dataset_detail','category':a1_0x3b8444(0x15e),'title':a1_0x3b8444(0x15f),'method':a1_0x3b8444(0xf3),'path':a1_0x3b8444(0x11d),'summary':a1_0x3b8444(0x15a),'whenToUse':a1_0x3b8444(0xf0),'pathParams':[],'queryParams':[{'name':'code','description':'32-character\x20dataset\x20code'}],'bodySchema':a1_0x3b8444(0x142),'responseHighlights':[a1_0x3b8444(0x103),a1_0x3b8444(0x10d),a1_0x3b8444(0x130)],'examples':[a1_0x3b8444(0x14d)],'notes':[a1_0x3b8444(0x101)],'markdown':[a1_0x3b8444(0x120),'','Inspect\x20field\x20names,\x20relations,\x20and\x20operation\x20metadata\x20for\x20a\x20known\x20dataset\x20code.'][a1_0x3b8444(0x13e)]('\x0a')},{'code':a1_0x3b8444(0x155),'category':'dataset','title':'Filter\x20dataset\x20data','method':'POST','path':a1_0x3b8444(0x149),'summary':a1_0x3b8444(0x12f),'whenToUse':a1_0x3b8444(0xec),'pathParams':[{'name':'appCode','description':a1_0x3b8444(0x13d)},{'name':a1_0x3b8444(0x115),'description':a1_0x3b8444(0x14e)}],'queryParams':[],'bodySchema':a1_0x3b8444(0x118),'responseHighlights':[a1_0x3b8444(0xf6),a1_0x3b8444(0x117)],'examples':[a1_0x3b8444(0xee),a1_0x3b8444(0x136)],'notes':['where,\x20select,\x20orderBy,\x20currentPage,\x20and\x20pageSize\x20belong\x20inside\x20one\x20--params\x20JSON\x20object;\x20they\x20are\x20not\x20standalone\x20CLI\x20flags.',a1_0x3b8444(0xf9),a1_0x3b8444(0x116),a1_0x3b8444(0x109)],'markdown':[a1_0x3b8444(0x122),'',a1_0x3b8444(0x114)][a1_0x3b8444(0x13e)]('\x0a')},{'code':a1_0x3b8444(0x112),'category':a1_0x3b8444(0x15e),'title':'Aggregate\x20dataset\x20data','method':a1_0x3b8444(0xf8),'path':a1_0x3b8444(0x104),'summary':a1_0x3b8444(0x10c),'whenToUse':a1_0x3b8444(0x111),'pathParams':[{'name':'appCode','description':a1_0x3b8444(0x13d)},{'name':a1_0x3b8444(0x115),'description':a1_0x3b8444(0x14e)}],'queryParams':[],'bodySchema':a1_0x3b8444(0x12d),'responseHighlights':[a1_0x3b8444(0x150),'where\x20filters\x20before\x20aggregation'],'examples':[a1_0x3b8444(0xfa)],'notes':[a1_0x3b8444(0x134),a1_0x3b8444(0x144)],'markdown':[a1_0x3b8444(0xfe),'','Aggregate\x20supports\x20COUNT,\x20SUM,\x20AVG,\x20MAX,\x20and\x20MIN\x20definitions\x20in\x20the\x20`aggregate`\x20array.'][a1_0x3b8444(0x13e)]('\x0a')},{'code':'dataset_data_get_one','category':'dataset','title':a1_0x3b8444(0x10a),'method':a1_0x3b8444(0xf8),'path':'/api/{appCode}/{datasetCode}/getOne','summary':'查询单条数据','whenToUse':a1_0x3b8444(0x11b),'pathParams':[{'name':a1_0x3b8444(0x100),'description':a1_0x3b8444(0x13d)},{'name':'datasetCode','description':a1_0x3b8444(0x14e)}],'queryParams':[],'bodySchema':a1_0x3b8444(0x125),'responseHighlights':[a1_0x3b8444(0x12e)],'examples':[a1_0x3b8444(0x11e)],'notes':['Prefer\x20`filter`\x20when\x20the\x20record\x20id\x20is\x20unknown.'],'markdown':a1_0x3b8444(0x110)},{'code':a1_0x3b8444(0x12b),'category':'dataset','title':a1_0x3b8444(0xff),'method':a1_0x3b8444(0xf8),'path':a1_0x3b8444(0x10b),'summary':a1_0x3b8444(0x158),'whenToUse':'需要向指定数据集新增一条业务数据时使用','pathParams':[{'name':a1_0x3b8444(0x100),'description':a1_0x3b8444(0x13d)},{'name':a1_0x3b8444(0x115),'description':'32-character\x20dataset\x20code'}],'queryParams':[],'bodySchema':a1_0x3b8444(0x14b),'responseHighlights':[a1_0x3b8444(0x102)],'examples':[a1_0x3b8444(0x13f)],'notes':['This\x20is\x20a\x20write\x20operation;\x20use\x20dry-run\x20when\x20available\x20and\x20safe\x20fixtures\x20for\x20smoke\x20tests.'],'markdown':'##\x20Create\x20dataset\x20record\x0a\x0aCreate\x20one\x20data\x20record\x20in\x20a\x20dataset.'},{'code':a1_0x3b8444(0x145),'category':'bf','title':a1_0x3b8444(0x128),'method':a1_0x3b8444(0xf3),'path':a1_0x3b8444(0xeb),'summary':a1_0x3b8444(0x12a),'whenToUse':'已经从用户、平台\x20UI\x20或前序上下文确认函数名,需要查看该\x20ENDPOINT\x20的运行态元信息时使用','pathParams':[{'name':'appCode','description':a1_0x3b8444(0x13d)},{'name':a1_0x3b8444(0xea),'description':a1_0x3b8444(0xf7)}],'queryParams':[],'bodySchema':a1_0x3b8444(0x142),'responseHighlights':[a1_0x3b8444(0x13a)],'examples':['lovrabet\x20bff\x20detail\x20--name\x20<functionName>'],'notes':['This\x20is\x20an\x20exact\x20lookup\x20by\x20appCode\x20+\x20functionName.\x20The\x20CLI\x20does\x20not\x20enumerate\x20BFF\x20functions\x20or\x20expose\x20platform-only\x20fields.'],'markdown':'##\x20Get\x20BF\x20endpoint\x20function\x20contract\x0a\x0aInspect\x20one\x20known\x20endpoint\x20function\x20through\x20the\x20AK-authenticated\x20exact\x20detail\x20API.'},{'code':'bf_execute','category':'bf','title':a1_0x3b8444(0xed),'method':'POST','path':a1_0x3b8444(0x138),'summary':a1_0x3b8444(0x15b),'whenToUse':a1_0x3b8444(0x106),'pathParams':[{'name':a1_0x3b8444(0x100),'description':'Current\x20app\x20code'},{'name':a1_0x3b8444(0xea),'description':a1_0x3b8444(0x10e)}],'queryParams':[],'bodySchema':'{\x22param\x22:\x22value\x22}','responseHighlights':['Returns\x20script\x20business\x20payload'],'examples':[a1_0x3b8444(0xfd)],'notes':['Script\x20behavior\x20may\x20have\x20side\x20effects;\x20inspect\x20detail\x20first.'],'markdown':'##\x20Execute\x20BF\x20endpoint\x20function\x0a\x0aExecute\x20a\x20known\x20endpoint\x20script.'},{'code':'custom_sql_execute','category':a1_0x3b8444(0x137),'title':a1_0x3b8444(0x11a),'method':a1_0x3b8444(0xf8),'path':a1_0x3b8444(0xfb),'summary':'执行自定义\x20SQL','whenToUse':a1_0x3b8444(0x14a),'pathParams':[],'queryParams':[],'bodySchema':a1_0x3b8444(0x153),'responseHighlights':[a1_0x3b8444(0x13b)],'examples':[a1_0x3b8444(0x133)],'notes':['Use\x20`lovrabet\x20sql\x20detail`\x20before\x20execution.'],'markdown':a1_0x3b8444(0x15c)}];function entrySummary(_0x35b0c1){const _0x2e7c90=a1_0x3b8444;return{'code':_0x35b0c1[_0x2e7c90(0xf5)],'category':_0x35b0c1[_0x2e7c90(0xf2)],'method':_0x35b0c1[_0x2e7c90(0x139)],'path':_0x35b0c1[_0x2e7c90(0x14f)],'summary':_0x35b0c1[_0x2e7c90(0x107)],'whenToUse':_0x35b0c1[_0x2e7c90(0x152)]};}export function listApiDocEntries(_0x25e69f={}){const _0x95db25=a1_0x3b8444,_0x1aa470=String(_0x25e69f['category']||'')['trim'](),_0x17635d=String(_0x25e69f['keyword']||'')[_0x95db25(0x119)]()[_0x95db25(0x159)]();return DOCS['filter'](_0x3c3256=>{const _0x33197f=_0x95db25;if(_0x1aa470&&_0x3c3256[_0x33197f(0xf2)]!==_0x1aa470)return![];if(!_0x17635d)return!![];return[_0x3c3256[_0x33197f(0xf5)],_0x3c3256[_0x33197f(0xf2)],_0x3c3256[_0x33197f(0x139)],_0x3c3256['path'],_0x3c3256[_0x33197f(0x107)],_0x3c3256[_0x33197f(0x152)],_0x3c3256[_0x33197f(0x156)]][_0x33197f(0x13e)]('\x20')[_0x33197f(0x159)]()[_0x33197f(0x148)](_0x17635d);})[_0x95db25(0x123)](entrySummary);}export function getApiDocDetail(_0x5856b6){const _0x2cfec8=a1_0x3b8444,_0x363ce0=DOCS[_0x2cfec8(0x11f)](_0x4b2fc8=>_0x4b2fc8[_0x2cfec8(0xf5)]===_0x5856b6);if(!_0x363ce0)throw CliErrors[_0x2cfec8(0x127)](_0x2cfec8(0x12c)+_0x5856b6);return{..._0x363ce0};}const apiDocList={'service':'api-doc','command':a1_0x3b8444(0x129),'description':a1_0x3b8444(0x141),'risk':a1_0x3b8444(0x113),'requiresAppCode':![],'flags':[CATEGORY_FLAG,KEYWORD_FLAG],async 'execute'(_0x12bb7e){const _0x30f3a0=a1_0x3b8444,_0x1a80e0=listApiDocEntries({'category':_0x12bb7e[_0x30f3a0(0xef)](_0x30f3a0(0xf2)),'keyword':_0x12bb7e['str']('keyword')});return{'ok':!![],'data':{'total':_0x1a80e0[_0x30f3a0(0x15d)],'items':_0x1a80e0}};}},apiDocDetail={'service':a1_0x3b8444(0x147),'command':a1_0x3b8444(0x10f),'description':'Show\x20runtime\x20API\x20documentation\x20by\x20code','risk':a1_0x3b8444(0x113),'requiresAppCode':![],'flags':[DOC_CODE_FLAG],async 'execute'(_0x64d1de){const _0x1af446=a1_0x3b8444;return{'ok':!![],'data':getApiDocDetail(_0x64d1de['str'](_0x1af446(0xf5)))};}};export const apiDocDefinitions=[apiDocList,apiDocDetail];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0xdea826,_0x3d46cd){const _0x2bdc63=a2_0x4113,_0x146fdd=_0xdea826();while(!![]){try{const _0x1afa8d=parseInt(_0x2bdc63(0x14e))/0x1+parseInt(_0x2bdc63(0x147))/0x2*(-parseInt(_0x2bdc63(0x148))/0x3)+-parseInt(_0x2bdc63(0x146))/0x4*(parseInt(_0x2bdc63(0x14f))/0x5)+-parseInt(_0x2bdc63(0x153))/0x6*(parseInt(_0x2bdc63(0x15f))/0x7)+parseInt(_0x2bdc63(0x157))/0x8+-parseInt(_0x2bdc63(0x15c))/0x9*(-parseInt(_0x2bdc63(0x15b))/0xa)+parseInt(_0x2bdc63(0x162))/0xb*(parseInt(_0x2bdc63(0x14b))/0xc);if(_0x1afa8d===_0x3d46cd)break;else _0x146fdd['push'](_0x146fdd['shift']());}catch(_0x448baa){_0x146fdd['push'](_0x146fdd['shift']());}}}(a2_0x2abc,0x619be));import{createHash}from'node:crypto';import{existsSync,mkdirSync,readFileSync,renameSync,unlinkSync,writeFileSync}from'node:fs';import{homedir}from'node:os';import{dirname,resolve}from'node:path';import{PRODUCT_CONFIG}from'../../constant/product.js';function a2_0x4113(_0xb96a32,_0x3a19c5){_0xb96a32=_0xb96a32-0x145;const _0x2abc7f=a2_0x2abc();let _0x4113eb=_0x2abc7f[_0xb96a32];return _0x4113eb;}import{isRuntimeAccessibleApp}from'../../commands/app/eligibility.js';export function fingerprintAccessKey(_0x491ce7){const _0x690c2a=a2_0x4113,_0x4bb3bc=_0x491ce7[_0x690c2a(0x149)](),_0x41711d=_0x4bb3bc[_0x690c2a(0x160)](-0x6)||_0x690c2a(0x154),_0x2d4d9b=createHash(_0x690c2a(0x14c))[_0x690c2a(0x15e)](_0x4bb3bc)['digest']('hex')[_0x690c2a(0x160)](0x0,0xc);return _0x690c2a(0x165)+_0x41711d+'_'+_0x2d4d9b;}function a2_0x2abc(){const _0x30175e=['sha256','isArray','68685CQTAfw','396065EHKKix','EXDEV','EPERM','.tmp','783750ukRyfH','unknown','utf8','find','2503552jbIquH','EACCES','appName','code','20FwINde','2431413AQFcyI','homeDirName','update','14KBXgmF','slice','parse','253kvflqi','my-apps.json','stringify','ak_','appCode','24CYqyLT','18SmSfli','53802abJKNZ','trim','items','196068SuxpUd'];a2_0x2abc=function(){return _0x30175e;};return a2_0x2abc();}export function getAppCacheFilePath(_0x16bb4b,_0x1c3d4e){const _0x5398a5=a2_0x4113;return resolve(homedir(),PRODUCT_CONFIG[_0x5398a5(0x15d)],'cache',_0x16bb4b,fingerprintAccessKey(_0x1c3d4e),_0x5398a5(0x163));}export function readCachedAppList(_0x3823c3,_0x20df03){const _0x159b27=a2_0x4113;if(!_0x20df03?.[_0x159b27(0x149)]())return null;const _0x2a3d90=getAppCacheFilePath(_0x3823c3,_0x20df03);if(!existsSync(_0x2a3d90))return null;try{const _0x4ad2ea=readFileSync(_0x2a3d90,_0x159b27(0x155));if(!_0x4ad2ea[_0x159b27(0x149)]())return null;const _0x5cbf06=JSON[_0x159b27(0x161)](_0x4ad2ea);if(!Array[_0x159b27(0x14d)](_0x5cbf06[_0x159b27(0x14a)]))return null;return _0x5cbf06;}catch{return null;}}export function writeCachedAppList(_0x1e55ed,_0x5c667e,_0x13ce61){const _0x3cb59c=a2_0x4113,_0x572622=getAppCacheFilePath(_0x1e55ed,_0x5c667e),_0x412727=dirname(_0x572622);!existsSync(_0x412727)&&mkdirSync(_0x412727,{'recursive':!![]});const _0x5ca986=_0x572622+_0x3cb59c(0x152);try{writeFileSync(_0x5ca986,JSON[_0x3cb59c(0x164)](_0x13ce61,null,0x2)+'\x0a',{'encoding':'utf8','mode':0x180});try{renameSync(_0x5ca986,_0x572622);}catch(_0x7bbe0b){if(_0x7bbe0b[_0x3cb59c(0x15a)]===_0x3cb59c(0x151)||_0x7bbe0b[_0x3cb59c(0x15a)]===_0x3cb59c(0x150)||_0x7bbe0b[_0x3cb59c(0x15a)]===_0x3cb59c(0x158)){writeFileSync(_0x572622,JSON[_0x3cb59c(0x164)](_0x13ce61,null,0x2)+'\x0a',{'encoding':_0x3cb59c(0x155)});try{unlinkSync(_0x5ca986);}catch{}}else throw _0x7bbe0b;}}catch(_0x3457aa){try{unlinkSync(_0x5ca986);}catch{}throw _0x3457aa;}return _0x572622;}export function resolveCachedAppCode(_0x5a3809,_0x4a1e0d,_0x4743b5){const _0x1e9e74=a2_0x4113;if(!_0x5a3809)return undefined;const _0x53b57d=readCachedAppList(_0x4a1e0d,_0x4743b5),_0x9a8342=_0x53b57d?.[_0x1e9e74(0x14a)][_0x1e9e74(0x156)](_0x1cc6be=>_0x1cc6be[_0x1e9e74(0x159)]===_0x5a3809&&isRuntimeAccessibleApp(_0x1cc6be));return _0x9a8342?.[_0x1e9e74(0x145)]?.[_0x1e9e74(0x149)]()||undefined;}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a3_0x37bb72=a3_0x3501;function a3_0x5f0b(){const _0x5b51e7=['find','296RBuuGc','Read\x20app\x20list\x20from\x20local\x20cache\x20only','将从平台读取当前账号可用的应用列表,并覆盖对应环境的本地应用缓存;不会修改平台应用。','cachePath','enableI18n','bool','trim','remote','11vWkkkz','14579480uXOiQI','str','234hteaMQ','map','env','production','Target\x20environment\x20(default:\x20current\x20env)','21NAxrAq','i18nInfo','appCode','type','2256zYgMDh','include-unpublished','Read\x20from\x20local\x20cache\x20only','360140VGhWcv','\x20app(s)\x20for\x20env=\x22','cache','import','Force\x20remote\x20fetch\x20and\x20refresh\x20local\x20cache','langs','appPublishStatus','globalPath','isArray','write','fetchedAt','app','2580FZNCUt','No\x20cached\x20apps\x20found.','pull','Refreshed\x20app\x20cache\x20with\x20','envName','filter','1702740WGtqLy','read','mergedCli','string','isCurrent','appcode','source','length','boolean','local','list','../../commands/app/remote-source.js','nonInteractive','33724116Fjglky','items','13814649cYgVDB','name','8mEqMst','appName','从平台刷新本地应用缓存'];a3_0x5f0b=function(){return _0x5b51e7;};return a3_0x5f0b();}(function(_0x81d17,_0x35e1b9){const _0x3e5c49=a3_0x3501,_0x4df059=_0x81d17();while(!![]){try{const _0x437d02=parseInt(_0x3e5c49(0x15b))/0x1*(-parseInt(_0x3e5c49(0x138))/0x2)+parseInt(_0x3e5c49(0x143))/0x3*(parseInt(_0x3e5c49(0x14c))/0x4)+parseInt(_0x3e5c49(0x14f))/0x5+-parseInt(_0x3e5c49(0x161))/0x6*(-parseInt(_0x3e5c49(0x148))/0x7)+-parseInt(_0x3e5c49(0x134))/0x8*(-parseInt(_0x3e5c49(0x132))/0x9)+parseInt(_0x3e5c49(0x141))/0xa+-parseInt(_0x3e5c49(0x140))/0xb*(parseInt(_0x3e5c49(0x130))/0xc);if(_0x437d02===_0x35e1b9)break;else _0x4df059['push'](_0x4df059['shift']());}catch(_0x545dcc){_0x4df059['push'](_0x4df059['shift']());}}}(a3_0x5f0b,0xbb874));import{appImportFlagDefs,runAppImport}from'../../commands/init.js';import{getEnv,RUNTIME_ENV_VALUES}from'../../constant/env.js';import{buildAppProfileListFields}from'../../config/schema.js';import{enrichAppListItemsWithMergedSelection}from'../../commands/app/shared.js';import{filterRuntimeAccessibleApps,findAppByCode,isRuntimeAccessibleApp}from'../../commands/app/eligibility.js';function collectFlags(_0x3e46f7,_0x5e581f){const _0x56d37e=a3_0x3501,_0x4dcd91={};for(const _0xf4f0a6 of _0x5e581f){const _0x157429=_0xf4f0a6[_0x56d37e(0x14b)]==='boolean'?_0x3e46f7[_0x56d37e(0x13d)](_0xf4f0a6['name']):_0x3e46f7['str'](_0xf4f0a6[_0x56d37e(0x133)]);if(_0x157429!==''&&_0x157429!==![])_0x4dcd91[_0xf4f0a6['name']]=_0x157429;}if(_0x3e46f7[_0x56d37e(0x12f)])_0x4dcd91[_0x56d37e(0x12f)]=!![];return _0x4dcd91;}function a3_0x3501(_0x5058f9,_0x2141c4){_0x5058f9=_0x5058f9-0x12a;const _0x5f0b99=a3_0x5f0b();let _0x3501a9=_0x5f0b99[_0x5058f9];return _0x3501a9;}function normalizeLanguages(_0x5733c9){const _0x441722=a3_0x3501;if(!Array[_0x441722(0x157)](_0x5733c9))return[];return _0x5733c9[_0x441722(0x160)](_0x4e4b9e=>typeof _0x4e4b9e===_0x441722(0x164))[_0x441722(0x144)](_0x1d788c=>_0x1d788c[_0x441722(0x13e)]())[_0x441722(0x160)](Boolean);}function buildRemoteAppI18nFields(_0x21b151){const _0x13b03c=a3_0x3501,_0x52f254=normalizeLanguages(_0x21b151[_0x13b03c(0x149)]?.[_0x13b03c(0x154)]);return{'enableI18n':typeof _0x21b151['enableI18n']==='boolean'?_0x21b151[_0x13b03c(0x13c)]:null,'languages':_0x52f254,'i18nInfo':_0x21b151[_0x13b03c(0x149)]?{..._0x21b151['i18nInfo'],'langs':_0x52f254[_0x13b03c(0x12a)]?_0x52f254:null}:null};}const listDef={'service':a3_0x37bb72(0x15a),'command':a3_0x37bb72(0x12d),'description':'List\x20apps\x20available\x20to\x20the\x20current\x20access\x20key','risk':a3_0x37bb72(0x162),'requiresAuth':!![],'requiresAppCode':![],'hasFormat':!![],'flags':[{'name':a3_0x37bb72(0x145),'type':a3_0x37bb72(0x164),'description':'Filter\x20by\x20environment\x20(default:\x20current\x20env)','enum':[...RUNTIME_ENV_VALUES]},{'name':a3_0x37bb72(0x12c),'type':a3_0x37bb72(0x12b),'description':a3_0x37bb72(0x139),'default':![]},{'name':'no-cache','type':a3_0x37bb72(0x12b),'description':a3_0x37bb72(0x153),'default':![]},{'name':a3_0x37bb72(0x14d),'type':'boolean','description':'Include\x20unpublished\x20apps\x20for\x20diagnostics','default':![]}],async 'execute'(_0x5ce125){const _0x2eaf33=a3_0x37bb72,_0x5b94f4=_0x5ce125['str'](_0x2eaf33(0x145))||_0x5ce125[_0x2eaf33(0x15f)]||getEnv()||_0x2eaf33(0x146),_0x53843e=_0x5ce125[_0x2eaf33(0x13d)](_0x2eaf33(0x12c)),_0xa4e7eb=_0x5ce125[_0x2eaf33(0x13d)]('no-cache'),_0x195c9d=_0x5ce125['bool'](_0x2eaf33(0x14d)),{readRawConfigWithLayers:_0x407601,resolveDefaultAppSource:_0x374b93,getLocalAppAliases:_0x416059}=await import('../../context.js'),{getRemoteAppList:_0x56d36e}=await import(_0x2eaf33(0x12e)),{config:_0x3509e0,layers:_0x4a4390}=_0x407601(),_0xeda91c=_0x374b93(_0x4a4390),{defaultApp:_0x4abf40}=_0x3509e0,_0x1a210b=await _0x56d36e({'env':_0x5b94f4,'accessKey':_0x5ce125['accessKey'],'localOnly':_0x53843e,'noCache':_0xa4e7eb}),_0x277012=_0x195c9d?_0x1a210b[_0x2eaf33(0x131)]:filterRuntimeAccessibleApps(_0x1a210b[_0x2eaf33(0x131)]),_0x12e514=_0x1a210b[_0x2eaf33(0x131)][_0x2eaf33(0x12a)]-_0x277012[_0x2eaf33(0x12a)],_0x5426b0=_0x277012[_0x2eaf33(0x144)](_0x7300cc=>{const _0x3b5fe4=_0x2eaf33;return{'name':_0x7300cc[_0x3b5fe4(0x135)],'appcode':_0x7300cc[_0x3b5fe4(0x14a)],'named':!![],'definedIn':_0x3b5fe4(0x13f),'isDefault':_0x7300cc['appName']===_0x4abf40,...buildAppProfileListFields(_0x5b94f4),...buildRemoteAppI18nFields(_0x7300cc),'source':_0x1a210b[_0x3b5fe4(0x167)],'owner':_0x7300cc['appOwnerName']??null,'status':_0x7300cc[_0x3b5fe4(0x155)]??null,'cachedAt':_0x1a210b[_0x3b5fe4(0x159)]};}),_0x22703f=_0x416059(_0x3509e0);let _0xa26227=0x0;for(const [_0x577fe2,_0x484494]of Object['entries'](_0x22703f)){const _0x1897e7=typeof _0x484494['appcode']==='string'?_0x484494[_0x2eaf33(0x166)]['trim']():'';if(!_0x1897e7)continue;const _0x41188d=findAppByCode(_0x1a210b[_0x2eaf33(0x131)],_0x1897e7);if(!_0x195c9d&&_0x41188d&&!isRuntimeAccessibleApp(_0x41188d))continue;_0xa26227+=0x1,_0x5426b0['push']({'name':_0x577fe2,'appcode':_0x1897e7,'named':!![],'definedIn':_0x2eaf33(0x12c),'isDefault':_0x577fe2===_0x4abf40,...buildAppProfileListFields(_0x5b94f4),'source':'config','owner':null,'status':null,'cachedAt':null});}enrichAppListItemsWithMergedSelection(_0x5426b0,_0x5ce125[_0x2eaf33(0x163)]);const _0xe76a5d=_0x5426b0[_0x2eaf33(0x137)](_0x36c958=>_0x36c958[_0x2eaf33(0x165)]===!![]),_0x2c246f=_0x4abf40??_0xe76a5d?.['name']??null,_0x175efb={'env':_0x5b94f4,'source':_0x1a210b['source'],'fetchedAt':_0x1a210b[_0x2eaf33(0x159)],'cachePath':_0x1a210b[_0x2eaf33(0x13b)],'globalPath':_0x4a4390[_0x2eaf33(0x156)]??null,'projectPath':_0x4a4390['projectPath']??null,'defaultApp':_0x2c246f,'defaultAppSource':_0x4abf40!=null?_0xeda91c:null,'localAliasCount':_0xa26227,'remoteTotal':_0x1a210b[_0x2eaf33(0x131)]['length'],'hiddenUnpublishedCount':_0x12e514,'includeUnpublished':_0x195c9d};if(_0x5426b0['length']===0x0)return{'ok':!![],'data':{'items':_0x5426b0,'meta':_0x175efb},'message':_0x1a210b[_0x2eaf33(0x167)]==='cache'?_0x2eaf33(0x15c):'No\x20apps\x20found\x20on\x20the\x20platform.'};return{'ok':!![],'data':{'items':_0x5426b0,'meta':_0x175efb}};}},pullDef={'service':a3_0x37bb72(0x15a),'command':a3_0x37bb72(0x15d),'description':a3_0x37bb72(0x136),'risk':a3_0x37bb72(0x158),'confirmationDescription':a3_0x37bb72(0x13a),'requiresAuth':!![],'requiresAppCode':![],'hasFormat':![],'flags':[{'name':'env','type':a3_0x37bb72(0x164),'description':a3_0x37bb72(0x147),'enum':[...RUNTIME_ENV_VALUES]},{'name':a3_0x37bb72(0x12c),'type':a3_0x37bb72(0x12b),'description':a3_0x37bb72(0x14e),'default':![]},{'name':'no-cache','type':'boolean','description':a3_0x37bb72(0x153),'default':![]}],async 'execute'(_0x3571e9){const _0x17f1c6=a3_0x37bb72,_0x51eb18=_0x3571e9[_0x17f1c6(0x142)](_0x17f1c6(0x145))||_0x3571e9[_0x17f1c6(0x15f)]||getEnv()||_0x17f1c6(0x146),_0x4b362a=_0x3571e9[_0x17f1c6(0x13d)](_0x17f1c6(0x12c)),_0x3acece=_0x3571e9[_0x17f1c6(0x13d)]('no-cache'),{getRemoteAppList:_0x5ecf9f}=await import(_0x17f1c6(0x12e)),_0x4066d4=await _0x5ecf9f({'env':_0x51eb18,'accessKey':_0x3571e9['accessKey'],'localOnly':_0x4b362a,'noCache':_0x3acece});return{'ok':!![],'data':{'total':_0x4066d4['items'][_0x17f1c6(0x12a)],'env':_0x51eb18,'source':_0x4066d4[_0x17f1c6(0x167)],'fetchedAt':_0x4066d4[_0x17f1c6(0x159)],'cachePath':_0x4066d4['cachePath']},'message':_0x4066d4[_0x17f1c6(0x167)]===_0x17f1c6(0x151)?'Loaded\x20'+_0x4066d4[_0x17f1c6(0x131)][_0x17f1c6(0x12a)]+'\x20cached\x20app(s)\x20for\x20env=\x22'+_0x51eb18+'\x22.':_0x17f1c6(0x15e)+_0x4066d4[_0x17f1c6(0x131)][_0x17f1c6(0x12a)]+_0x17f1c6(0x150)+_0x51eb18+'\x22.'};}},importDef={'service':'app','command':a3_0x37bb72(0x152),'description':'从\x20.rabetbase.json\x20文件导入默认应用选择','risk':a3_0x37bb72(0x158),'confirmationDescription':'将读取指定的\x20.rabetbase.json,并把其中可用的默认应用设置导入本地\x20.lovrabet.json;同名配置可能被更新。','requiresAuth':![],'requiresAppCode':![],'hasFormat':![],'flags':appImportFlagDefs,async 'execute'(_0x3735d0){return await runAppImport(collectFlags(_0x3735d0,appImportFlagDefs)),{'ok':!![]};}};export const appDefinitions=[listDef,pullDef,importDef];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x39a9b8,_0x19c64b){const _0x592155=a4_0x5086,_0x1f4012=_0x39a9b8();while(!![]){try{const _0x83c74b=parseInt(_0x592155(0xe3))/0x1*(-parseInt(_0x592155(0xe8))/0x2)+parseInt(_0x592155(0xed))/0x3+parseInt(_0x592155(0xec))/0x4+parseInt(_0x592155(0xea))/0x5*(-parseInt(_0x592155(0xe7))/0x6)+parseInt(_0x592155(0xdd))/0x7*(-parseInt(_0x592155(0xf0))/0x8)+parseInt(_0x592155(0xe4))/0x9+parseInt(_0x592155(0xe9))/0xa;if(_0x83c74b===_0x19c64b)break;else _0x1f4012['push'](_0x1f4012['shift']());}catch(_0x1ed23e){_0x1f4012['push'](_0x1f4012['shift']());}}}(a4_0x1c4d,0xad79a));function a4_0x5086(_0x54c460,_0x4cbefc){_0x54c460=_0x54c460-0xdd;const _0x1c4db0=a4_0x1c4d();let _0x50864a=_0x1c4db0[_0x54c460];return _0x50864a;}import{CLI_BIN_NAME}from'../../constant/cli.js';import{RUNTIME_ACCESSIBLE_APP_STATUS}from'../../constant/app.js';import{CliErrors}from'../../errors.js';export function normalizeAppPublishStatus(_0x546146){const _0x2bd617=a4_0x5086;if(typeof _0x546146!=='string')return null;const _0x59fcbd=_0x546146[_0x2bd617(0xe1)]();return _0x59fcbd?_0x59fcbd['toUpperCase']():null;}export function isRuntimeAccessibleApp(_0x2a0369){const _0x5cd368=a4_0x5086;return normalizeAppPublishStatus(_0x2a0369[_0x5cd368(0xdf)])===RUNTIME_ACCESSIBLE_APP_STATUS;}export function filterRuntimeAccessibleApps(_0x2be10f){const _0x27e929=a4_0x5086;return _0x2be10f[_0x27e929(0xe0)](isRuntimeAccessibleApp);}export function findAppByName(_0x212f8a,_0x48b7e7){const _0xe3f26d=a4_0x5086;return _0x212f8a[_0xe3f26d(0xe5)](_0xf7a429=>_0xf7a429[_0xe3f26d(0xeb)]===_0x48b7e7);}export function findAppByCode(_0xab146c,_0x45830e){const _0x109132=a4_0x5086,_0x8f36fa=_0x45830e[_0x109132(0xe1)]();if(!_0x8f36fa)return undefined;return _0xab146c[_0x109132(0xe5)](_0x56dba3=>_0x56dba3[_0x109132(0xde)]?.['trim']()===_0x8f36fa);}export function runtimeInaccessibleAppError(_0x99d6a6,_0x5ead79){const _0x401dc5=a4_0x5086,_0x39dd5d=normalizeAppPublishStatus(_0x99d6a6[_0x401dc5(0xdf)])??_0x401dc5(0xe6);return CliErrors[_0x401dc5(0xe2)]('App\x20'+_0x5ead79+'\x20is\x20not\x20available\x20for\x20runtime\x20AI\x20access.',_0x401dc5(0xf1)+_0x39dd5d+_0x401dc5(0xee)+CLI_BIN_NAME+_0x401dc5(0xef));}function a4_0x1c4d(){const _0x4d92d4=['appCode','appPublishStatus','filter','trim','validation','6VSlzsD','3775635iaZHbT','find','UNKNOWN','7584054LcHJjl','70130VTpmde','6717640oZoEPe','5KTjROU','appName','3948708pLvCGF','1194069AfMnhg','.\x20Publish\x20the\x20app\x20before\x20using\x20','\x20dataset/data/sql/bff\x20commands,\x20or\x20choose\x20a\x20published\x20app.','16424qeVPKx','Current\x20status:\x20','994RbcAii'];a4_0x1c4d=function(){return _0x4d92d4;};return a4_0x1c4d();}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
function a5_0x1cbf(){const _0x135077=['errorMsg','1530584qxSxho','40btZhqN','tableData','success','84PYSzeL','366zhuyDi','5091acknDc','762620atYONf','utf-8','data','Mock\x20API\x20error:\x20','../../../mock/app-list.json','339104gQQbQe','errorCode','235759vnwtlb','parse','1128klXIhI','232290SGhDlB'];a5_0x1cbf=function(){return _0x135077;};return a5_0x1cbf();}(function(_0x1a205a,_0x34be75){const _0x54847e=a5_0xf539,_0xf678ea=_0x1a205a();while(!![]){try{const _0x48ef82=parseInt(_0x54847e(0x1e3))/0x1+-parseInt(_0x54847e(0x1ed))/0x2*(-parseInt(_0x54847e(0x1ee))/0x3)+-parseInt(_0x54847e(0x1e1))/0x4+-parseInt(_0x54847e(0x1ef))/0x5+parseInt(_0x54847e(0x1e5))/0x6*(parseInt(_0x54847e(0x1ec))/0x7)+-parseInt(_0x54847e(0x1e8))/0x8+parseInt(_0x54847e(0x1e6))/0x9*(parseInt(_0x54847e(0x1e9))/0xa);if(_0x48ef82===_0x34be75)break;else _0xf678ea['push'](_0xf678ea['shift']());}catch(_0x155b37){_0xf678ea['push'](_0xf678ea['shift']());}}}(a5_0x1cbf,0x367cf));import{fileURLToPath}from'url';import{dirname,join}from'path';import{readFileSync}from'fs';const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename);function a5_0xf539(_0x30f5d5,_0x100f27){_0x30f5d5=_0x30f5d5-0x1e1;const _0x1cbffe=a5_0x1cbf();let _0xf539db=_0x1cbffe[_0x30f5d5];return _0xf539db;}function loadMockAppList(){const _0x42849a=a5_0xf539,_0x5201d=join(__dirname,_0x42849a(0x1f3)),_0x57cf31=readFileSync(_0x5201d,_0x42849a(0x1f0));return JSON[_0x42849a(0x1e4)](_0x57cf31);}let _cached=null;export function getMockAppList(){return!_cached&&(_cached=loadMockAppList()),_cached;}export function getMockRemoteAppItems(){const _0xaf5190=a5_0xf539,_0x507f40=getMockAppList();if(!_0x507f40[_0xaf5190(0x1eb)])throw new Error(_0xaf5190(0x1f2)+_0x507f40[_0xaf5190(0x1e7)]+'\x20('+_0x507f40[_0xaf5190(0x1e2)]+')');return _0x507f40[_0xaf5190(0x1f1)][_0xaf5190(0x1ea)];}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x11a5e7,_0xa9e768){const _0x50ae4b=a6_0x35dd,_0x56dd98=_0x11a5e7();while(!![]){try{const _0x86e487=parseInt(_0x50ae4b(0x1e4))/0x1*(parseInt(_0x50ae4b(0x1de))/0x2)+-parseInt(_0x50ae4b(0x1db))/0x3+-parseInt(_0x50ae4b(0x1e3))/0x4+-parseInt(_0x50ae4b(0x1dc))/0x5*(parseInt(_0x50ae4b(0x1e0))/0x6)+parseInt(_0x50ae4b(0x1d8))/0x7+parseInt(_0x50ae4b(0x1d7))/0x8*(-parseInt(_0x50ae4b(0x1e5))/0x9)+parseInt(_0x50ae4b(0x1df))/0xa*(parseInt(_0x50ae4b(0x1d5))/0xb);if(_0x86e487===_0xa9e768)break;else _0x56dd98['push'](_0x56dd98['shift']());}catch(_0x411a74){_0x56dd98['push'](_0x56dd98['shift']());}}}(a6_0x357c,0xd3aae));import{getMyApps}from'../../core/api-client.js';import{getMockRemoteAppItems}from'../../commands/app/mock-loader.js';function a6_0x35dd(_0x246a96,_0x4bd37e){_0x246a96=_0x246a96-0x1d5;const _0x357c06=a6_0x357c();let _0x35ddd2=_0x357c06[_0x246a96];return _0x35ddd2;}import{getAppCacheFilePath,readCachedAppList,writeCachedAppList}from'../../commands/app/cache.js';function a6_0x357c(){const _0x5ba466=['647538llSPMQ','cache','mock','2243792VylNlB','268EgUFOA','9cvZWTo','220lhWxxx','trim','7922224qBDxUK','4105157PxmWhU','remote','fetchedAt','2504658IkFlnV','35PhspHX','items','6998YgOwea','1242190JpHoBm'];a6_0x357c=function(){return _0x5ba466;};return a6_0x357c();}import{productEnv}from'../../constant/product.js';export function shouldUseMockRemoteApps(){const _0x5be223=a6_0x35dd,_0x3c7d02=(productEnv('APP_LIST_SOURCE')||'')['trim']()['toLowerCase']();return _0x3c7d02===_0x5be223(0x1e2);}export async function getRemoteAppItems(){if(shouldUseMockRemoteApps())return getMockRemoteAppItems();return getMyApps();}export async function getRemoteAppList(_0x3e1f92){const _0x54371d=a6_0x35dd,{env:_0x83e29,accessKey:_0x361cd3,localOnly:localOnly=![],noCache:noCache=![]}=_0x3e1f92,_0x4efba2=readCachedAppList(_0x83e29,_0x361cd3),_0x321085=_0x361cd3?.[_0x54371d(0x1d6)]()?getAppCacheFilePath(_0x83e29,_0x361cd3):null;if(localOnly)return{'items':_0x4efba2?.[_0x54371d(0x1dd)]??[],'source':_0x54371d(0x1e1),'fetchedAt':_0x4efba2?.[_0x54371d(0x1da)]??null,'cachePath':_0x321085};try{const _0x61e9da=await getRemoteAppItems(),_0x29be07=shouldUseMockRemoteApps()?_0x54371d(0x1e2):_0x54371d(0x1d9),_0x51b2e5=new Date()['toISOString'](),_0x2edc33=_0x361cd3?.[_0x54371d(0x1d6)]()?writeCachedAppList(_0x83e29,_0x361cd3,{'env':_0x83e29,'fetchedAt':_0x51b2e5,'source':_0x29be07,'items':_0x61e9da}):null;return{'items':_0x61e9da,'source':_0x29be07,'fetchedAt':_0x51b2e5,'cachePath':_0x2edc33};}catch(_0x330255){if(!noCache&&_0x4efba2)return{'items':_0x4efba2[_0x54371d(0x1dd)],'source':_0x54371d(0x1e1),'fetchedAt':_0x4efba2[_0x54371d(0x1da)],'cachePath':_0x321085};throw _0x330255;}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function a7_0x20a8(_0x114954,_0xf2a48){_0x114954=_0x114954-0x157;const _0x214589=a7_0x2145();let _0x20a8f6=_0x214589[_0x114954];return _0x20a8f6;}(function(_0x37655f,_0x29f8bb){const _0x4645dc=a7_0x20a8,_0x37ad8f=_0x37655f();while(!![]){try{const _0xbdc6c=parseInt(_0x4645dc(0x15e))/0x1+parseInt(_0x4645dc(0x15a))/0x2+parseInt(_0x4645dc(0x15f))/0x3+parseInt(_0x4645dc(0x168))/0x4+-parseInt(_0x4645dc(0x15b))/0x5+parseInt(_0x4645dc(0x15c))/0x6*(parseInt(_0x4645dc(0x162))/0x7)+-parseInt(_0x4645dc(0x159))/0x8;if(_0xbdc6c===_0x29f8bb)break;else _0x37ad8f['push'](_0x37ad8f['shift']());}catch(_0x574c52){_0x37ad8f['push'](_0x37ad8f['shift']());}}}(a7_0x2145,0x6f1ef));export function enrichAppListItemsWithMergedSelection(_0x1196f9,_0x52fefa){const _0x37ae02=a7_0x20a8;if(!_0x52fefa)return;const _0x825bb8=!!(_0x52fefa[_0x37ae02(0x164)]??_0x52fefa[_0x37ae02(0x15d)]);for(const _0x52d0aa of _0x1196f9){_0x52d0aa[_0x37ae02(0x160)]=![];}const _0x3fb9ee=_0x52fefa['appCode']!=null?String(_0x52fefa['appCode'])['trim']():'';if(_0x825bb8){const _0x394b03=_0x52fefa[_0x37ae02(0x164)]??_0x52fefa['defaultApp'];if(_0x394b03){const _0x5113e9=_0x1196f9[_0x37ae02(0x167)](_0x19d057=>_0x19d057[_0x37ae02(0x157)]===!![]&&_0x19d057[_0x37ae02(0x158)]===_0x394b03&&_0x19d057[_0x37ae02(0x163)]===_0x37ae02(0x166)),_0x515d08=_0x5113e9??_0x1196f9[_0x37ae02(0x167)](_0x144bb7=>_0x144bb7['named']===!![]&&_0x144bb7[_0x37ae02(0x158)]===_0x394b03);if(_0x515d08){const _0xf476da=String(_0x515d08['appcode']??'')[_0x37ae02(0x165)]();if(!_0x3fb9ee||_0xf476da===_0x3fb9ee){_0x515d08['isCurrent']=!![];return;}}}if(_0x3fb9ee){const _0x45e729=_0x1196f9[_0x37ae02(0x167)](_0x3581ae=>String(_0x3581ae['appcode']??'')[_0x37ae02(0x165)]()===_0x3fb9ee);_0x45e729&&(_0x45e729[_0x37ae02(0x160)]=!![]);}return;}if(!_0x3fb9ee)return;for(const _0x1c7e51 of _0x1196f9){String(_0x1c7e51[_0x37ae02(0x161)]??'')[_0x37ae02(0x165)]()===_0x3fb9ee&&(_0x1c7e51[_0x37ae02(0x160)]=!![]);}}function a7_0x2145(){const _0x3d1023=['683371jjiFKr','2420847OfKVFr','isCurrent','appcode','71869ipQHZi','definedIn','currentApp','trim','local','find','468928nEKNEb','named','name','15685792WgGwJp','1467904vkWZsT','1065525iAzfML','168LipIgM','defaultApp'];a7_0x2145=function(){return _0x3d1023;};return a7_0x2145();}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
const a8_0x53f961=a8_0x4cad;(function(_0xba8e3b,_0x3595c6){const _0x1328d9=a8_0x4cad,_0x15b0b9=_0xba8e3b();while(!![]){try{const _0x5501f0=parseInt(_0x1328d9(0x11d))/0x1+parseInt(_0x1328d9(0x11f))/0x2*(-parseInt(_0x1328d9(0x115))/0x3)+-parseInt(_0x1328d9(0x11b))/0x4*(-parseInt(_0x1328d9(0x121))/0x5)+parseInt(_0x1328d9(0x118))/0x6*(parseInt(_0x1328d9(0x117))/0x7)+-parseInt(_0x1328d9(0x11c))/0x8+parseInt(_0x1328d9(0x124))/0x9+-parseInt(_0x1328d9(0x10d))/0xa;if(_0x5501f0===_0x3595c6)break;else _0x15b0b9['push'](_0x15b0b9['shift']());}catch(_0x3251f4){_0x15b0b9['push'](_0x15b0b9['shift']());}}}(a8_0xf8b2,0x30690));function a8_0xf8b2(){const _0x17c5ca=['validation','82KccSUi','get','45GniEqp','Get\x20one\x20runtime\x20app-config\x20value\x20by\x20key','App\x20config\x20key','1941084DohUer','app-config','apiError','1484580pjqRJq','read','args','trim','key',',\x20appCode=','Usage:\x20','Unable\x20to\x20get\x20app-config\x20value:\x20key=','9693NLEUtM','Check\x20that\x20the\x20key\x20exists,\x20the\x20current\x20AccessKey\x20has\x20permission,\x20and\x20the\x20runtime\x20app-config\x20endpoint\x20is\x20available.','154YKkWgc','95250XFNTWh','appCode','\x20app-config\x20get\x20<key>','17124NqgKfj','2396128eNaZdR','175278ETqQef'];a8_0xf8b2=function(){return _0x17c5ca;};return a8_0xf8b2();}import{getRuntimeAppConfigByKey}from'../../core/api-client.js';import{CliErrors}from'../../errors.js';function a8_0x4cad(_0x41d601,_0x5e20cb){_0x41d601=_0x41d601-0x10c;const _0xf8b209=a8_0xf8b2();let _0x4cade2=_0xf8b209[_0x41d601];return _0x4cade2;}import{CLI_BIN_NAME}from'../../constant/cli.js';export const appConfigGet={'service':a8_0x53f961(0x125),'command':a8_0x53f961(0x120),'description':a8_0x53f961(0x122),'risk':a8_0x53f961(0x10e),'args':[{'name':a8_0x53f961(0x111),'description':a8_0x53f961(0x123),'required':!![]}],'flags':[],async 'execute'(_0x34d31f){const _0x4ac021=a8_0x53f961,_0x4c6d04=_0x34d31f[_0x4ac021(0x10f)][0x0]?.[_0x4ac021(0x110)]();if(!_0x4c6d04)throw CliErrors[_0x4ac021(0x11e)]('Missing\x20app-config\x20key.',_0x4ac021(0x113)+CLI_BIN_NAME+_0x4ac021(0x11a));try{const _0x40294d=await getRuntimeAppConfigByKey(_0x34d31f[_0x4ac021(0x119)],_0x4c6d04);return{'ok':!![],'data':_0x40294d};}catch{throw CliErrors[_0x4ac021(0x10c)](_0x4ac021(0x114)+_0x4c6d04+_0x4ac021(0x112)+_0x34d31f[_0x4ac021(0x119)],_0x4ac021(0x116));}}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function a9_0x19ac(_0x3bdc03,_0xf94e88){_0x3bdc03=_0x3bdc03-0x1e8;const _0x1c15cb=a9_0x1c15();let _0x19acc6=_0x1c15cb[_0x3bdc03];return _0x19acc6;}function a9_0x1c15(){const _0x5b3b5c=['739854wqxSPr','9vvYugb','7505649MzBQMr','63tLHXjU','12184MVKbhV','825LcqIFG','59158peUQWZ','1090oiDVcw','5372568UiWsyU','98128iClrKT','2604057unBjpi'];a9_0x1c15=function(){return _0x5b3b5c;};return a9_0x1c15();}(function(_0xcd60c7,_0x4352ba){const _0x23063b=a9_0x19ac,_0xf4cfc1=_0xcd60c7();while(!![]){try{const _0x129afb=-parseInt(_0x23063b(0x1ea))/0x1*(parseInt(_0x23063b(0x1f2))/0x2)+parseInt(_0x23063b(0x1e8))/0x3+parseInt(_0x23063b(0x1ed))/0x4*(parseInt(_0x23063b(0x1ee))/0x5)+parseInt(_0x23063b(0x1e9))/0x6*(-parseInt(_0x23063b(0x1ec))/0x7)+-parseInt(_0x23063b(0x1f1))/0x8+parseInt(_0x23063b(0x1eb))/0x9+-parseInt(_0x23063b(0x1f0))/0xa*(-parseInt(_0x23063b(0x1ef))/0xb);if(_0x129afb===_0x4352ba)break;else _0xf4cfc1['push'](_0xf4cfc1['shift']());}catch(_0x21eb74){_0xf4cfc1['push'](_0xf4cfc1['shift']());}}}(a9_0x1c15,0x8aa24));import{appConfigGet}from'../../commands/app-config/get.js';export const appConfigDefinitions=[appConfigGet];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const a10_0x1edf68=a10_0x3cb8;(function(_0x54f5f5,_0x2b8ca8){const _0x3e4ead=a10_0x3cb8,_0x300c9f=_0x54f5f5();while(!![]){try{const _0x3adb58=parseInt(_0x3e4ead(0x165))/0x1+parseInt(_0x3e4ead(0x141))/0x2*(parseInt(_0x3e4ead(0x170))/0x3)+parseInt(_0x3e4ead(0x153))/0x4*(parseInt(_0x3e4ead(0x16a))/0x5)+parseInt(_0x3e4ead(0x132))/0x6*(-parseInt(_0x3e4ead(0x166))/0x7)+-parseInt(_0x3e4ead(0x13e))/0x8*(-parseInt(_0x3e4ead(0x14d))/0x9)+parseInt(_0x3e4ead(0x147))/0xa+-parseInt(_0x3e4ead(0x128))/0xb;if(_0x3adb58===_0x2b8ca8)break;else _0x300c9f['push'](_0x300c9f['shift']());}catch(_0x57e470){_0x300c9f['push'](_0x300c9f['shift']());}}}(a10_0x17ae,0x91020));import{existsSync,readFileSync,statSync}from'node:fs';import{createRuntimeArtifact,getRuntimeArtifact,listRuntimeArtifacts,updateRuntimeArtifact}from'../../core/api-client.js';import{ID_FLAG,VERBOSE_FLAG}from'../../commands/common/flags.js';function a10_0x17ae(){const _0x12092b=['@ant-design/icons','verbose','isArray','Artifact\x20display\x20name','boolean','filter','source','/update','react_module','365734lRDljl','221494cswkpv','test','trim','/client/artifact/','5nIUJUg','Path\x20to\x20a\x20local\x20UTF-8\x20React\x20module\x20source\x20file','body','dayjs','num','add','35583XIXjjm','split','name','file','exec','metadata','Artifact\x20metadata\x20as\x20JSON\x20object;\x20compiledContent\x20is\x20stripped','update','data','updateTime','Created\x20Artifact\x20','antd','isFile','19192800FQLqRq','build','detail','favorite','File\x20path\x20is\x20required.','List\x20current-app\x20react_module\x20Artifacts','startsWith','parse','Optional\x20favorite-state\x20filter','object','18dyjWYf','createTime','根据本地源码文件创建\x20react_module\x20类型的\x20Artifact','some','write','react_module\x20must\x20be\x20an\x20embeddable\x20React\x20module,\x20not\x20full\x20HTML\x20or\x20a\x20ReactDOM/createRoot\x20mount\x20entry.','artifactType','length','compiledContent','content','map','read','1024248xVvQBv','validation','artifact','78SHrXwG','File\x20not\x20found:\x20','AGENT','POST','Artifact\x20ID','Updated\x20Artifact\x20','9563120PsCsXC','/client/artifact/create','utf8','File\x20is\x20not\x20a\x20regular\x20file:\x20','str','create','45YYJzHS','保存新的\x20Artifact\x20源码并进行编译;成功后将在当前应用中新增可展示的内嵌模块。','Preview:\x20create\x20react_module\x20Artifact','includes','deleted','Artifact\x20source\x20file\x20is\x20blank.','35592rEugXM','保存新的\x20Artifact\x20源码并重新编译;应用中的内嵌模块展示和交互可能立即发生变化。','react_module\x20imports\x20are\x20limited\x20to:\x20','appCode','join','Show\x20one\x20Artifact\x20by\x20id','description','Optional\x20source\x20filter,\x20for\x20example\x20AGENT','string'];a10_0x17ae=function(){return _0x12092b;};return a10_0x17ae();}function a10_0x3cb8(_0x387be1,_0x56062f){_0x387be1=_0x387be1-0x128;const _0x17ae26=a10_0x17ae();let _0x3cb882=_0x17ae26[_0x387be1];return _0x3cb882;}import{CliErrors}from'../../errors.js';import{dryRun}from'../../framework/dryrun.js';const ARTIFACT_TYPE_REACT_MODULE=a10_0x1edf68(0x164),ARTIFACT_SOURCE_AGENT=a10_0x1edf68(0x143),ALLOWED_REACT_MODULE_IMPORTS=['react','react-dom','lodash',a10_0x1edf68(0x16d),a10_0x1edf68(0x17b),a10_0x1edf68(0x15c)];export const ALLOWED_REACT_MODULE_IMPORTS_TEXT=ALLOWED_REACT_MODULE_IMPORTS['join'](',\x20');const IMPORT_SOURCE_PATTERNS=[/\bimport\s+(?:type\s+)?(?:[^'";]*?\s+from\s+)?["']([^"']+)["']/g,/\bexport\s+(?:type\s+)?[^'";]*?\s+from\s+["']([^"']+)["']/g,/\bimport\s*\(\s*["']([^"']+)["']\s*\)/g,/\brequire\s*\(\s*["']([^"']+)["']\s*\)/g],PAGE_LEVEL_PATTERNS=[/<!doctype\s+html/i,/<\s*html\b/i,/\bcreateRoot\s*\(/,/\bReactDOM\s*\.\s*render\s*\(/,/\bReactDOM\s*\.\s*createRoot\s*\(/],FILE_FLAG={'name':'file','type':'string','required':!![],'description':a10_0x1edf68(0x16b)},ARTIFACT_NAME_FLAG={'name':a10_0x1edf68(0x172),'type':a10_0x1edf68(0x15b),'description':a10_0x1edf68(0x15f)},METADATA_FLAG={'name':a10_0x1edf68(0x175),'type':a10_0x1edf68(0x15b),'description':a10_0x1edf68(0x176)};function isPlainObject(_0x2d423d){const _0x42c96e=a10_0x1edf68;return typeof _0x2d423d===_0x42c96e(0x131)&&_0x2d423d!==null&&!Array[_0x42c96e(0x15e)](_0x2d423d);}function readSourceFile(_0x5de640){const _0x5f10fb=a10_0x1edf68;if(!_0x5de640)throw CliErrors['validation'](_0x5f10fb(0x12c));if(!existsSync(_0x5de640))throw CliErrors['validation'](_0x5f10fb(0x142)+_0x5de640);if(!statSync(_0x5de640)[_0x5f10fb(0x17c)]())throw CliErrors[_0x5f10fb(0x13f)](_0x5f10fb(0x14a)+_0x5de640);const _0x2e6135=readFileSync(_0x5de640,_0x5f10fb(0x149));return validateReactModuleSource(_0x2e6135),_0x2e6135;}function parseMetadata(_0xee98f9){const _0x30b15b=a10_0x1edf68;if(!_0xee98f9)return undefined;let _0x2e4cf1;try{_0x2e4cf1=JSON[_0x30b15b(0x12f)](_0xee98f9);}catch{throw CliErrors['validation']('Invalid\x20JSON\x20for\x20--metadata:\x20'+_0xee98f9);}if(!isPlainObject(_0x2e4cf1))throw CliErrors[_0x30b15b(0x13f)]('--metadata\x20must\x20be\x20a\x20JSON\x20object.');const _0x150d14={..._0x2e4cf1};return delete _0x150d14[_0x30b15b(0x13a)],_0x150d14;}function getPackageName(_0x1ab4cf){const _0x25a44f=a10_0x1edf68;if(_0x1ab4cf[_0x25a44f(0x12e)]('@')){const [_0x1d2373,_0x30627e]=_0x1ab4cf['split']('/');return _0x1d2373&&_0x30627e?_0x1d2373+'/'+_0x30627e:_0x1ab4cf;}return _0x1ab4cf[_0x25a44f(0x171)]('/')[0x0]||_0x1ab4cf;}function validateAllowedImports(_0x58f2ba){const _0x133467=a10_0x1edf68,_0x20a098=new Set();for(const _0x3a11c3 of IMPORT_SOURCE_PATTERNS){_0x3a11c3['lastIndex']=0x0;let _0x55186b;while((_0x55186b=_0x3a11c3[_0x133467(0x174)](_0x58f2ba))!==null){const _0x169c6d=_0x55186b[0x1]?.[_0x133467(0x168)]();_0x169c6d&&_0x20a098[_0x133467(0x16f)](_0x169c6d);}}const _0x350fb6=[..._0x20a098][_0x133467(0x13c)](getPackageName)[_0x133467(0x161)](_0x5cc33e=>!ALLOWED_REACT_MODULE_IMPORTS[_0x133467(0x150)](_0x5cc33e));if(_0x350fb6[_0x133467(0x139)]>0x0)throw CliErrors['validation'](_0x133467(0x155)+ALLOWED_REACT_MODULE_IMPORTS_TEXT+'.\x20Unsupported:\x20'+[...new Set(_0x350fb6)][_0x133467(0x157)](',\x20'));}export function validateReactModuleSource(_0x584677){const _0x19d8a6=a10_0x1edf68;if(!_0x584677[_0x19d8a6(0x168)]())throw CliErrors[_0x19d8a6(0x13f)](_0x19d8a6(0x152));if(PAGE_LEVEL_PATTERNS[_0x19d8a6(0x135)](_0x34889e=>_0x34889e[_0x19d8a6(0x167)](_0x584677)))throw CliErrors[_0x19d8a6(0x13f)](_0x19d8a6(0x137));validateAllowedImports(_0x584677);}function buildArtifactInput(_0x5582fb){const _0x39a50d=a10_0x1edf68,_0x1503dd=readSourceFile(_0x5582fb[_0x39a50d(0x14b)](_0x39a50d(0x173))),_0x346823=_0x5582fb[_0x39a50d(0x14b)]('name')[_0x39a50d(0x168)](),_0x5907c5=parseMetadata(_0x5582fb[_0x39a50d(0x14b)](_0x39a50d(0x175)));return{'artifactType':ARTIFACT_TYPE_REACT_MODULE,..._0x346823?{'name':_0x346823}:{},'content':_0x1503dd,..._0x5907c5?{'metadata':_0x5907c5}:{},'source':ARTIFACT_SOURCE_AGENT};}function summarizeArtifact(_0xf4f27b){const _0x32babd=a10_0x1edf68;return{'id':_0xf4f27b['id'],'name':_0xf4f27b['name'],'artifactType':_0xf4f27b[_0x32babd(0x138)],'source':_0xf4f27b['source'],'favorite':_0xf4f27b[_0x32babd(0x12b)],'deleted':_0xf4f27b[_0x32babd(0x151)],'createTime':_0xf4f27b[_0x32babd(0x133)],'updateTime':_0xf4f27b[_0x32babd(0x179)]};}function detailArtifact(_0x4bd420){const _0x1b5258=a10_0x1edf68;return{'id':_0x4bd420['id'],'appCode':_0x4bd420[_0x1b5258(0x156)],'name':_0x4bd420['name'],'artifactType':_0x4bd420[_0x1b5258(0x138)],'source':_0x4bd420[_0x1b5258(0x162)],'favorite':_0x4bd420[_0x1b5258(0x12b)],'deleted':_0x4bd420['deleted'],'content':_0x4bd420[_0x1b5258(0x13b)]??'','compiledContent':_0x4bd420[_0x1b5258(0x13a)],'metadata':_0x4bd420[_0x1b5258(0x175)]??{},'createTime':_0x4bd420['createTime'],'updateTime':_0x4bd420[_0x1b5258(0x179)]};}function readFavoriteFlag(_0x5e26de){const _0x3afe97=a10_0x1edf68,_0x327188=_0x5e26de['flag'](_0x3afe97(0x12b));return _0x327188===undefined||_0x327188===null||_0x327188===''?undefined:_0x5e26de['bool'](_0x3afe97(0x12b));}const artifactList={'service':a10_0x1edf68(0x140),'command':'list','description':a10_0x1edf68(0x12d),'risk':a10_0x1edf68(0x13d),'flags':[{'name':'source','type':a10_0x1edf68(0x15b),'description':a10_0x1edf68(0x15a)},{'name':a10_0x1edf68(0x12b),'type':a10_0x1edf68(0x160),'description':a10_0x1edf68(0x130)},VERBOSE_FLAG],async 'execute'(_0x21856a){const _0x5a8407=a10_0x1edf68,_0x2a394c=await listRuntimeArtifacts(_0x21856a[_0x5a8407(0x156)],{'artifactType':ARTIFACT_TYPE_REACT_MODULE,..._0x21856a['str']('source')?{'source':_0x21856a['str']('source')}:{},...readFavoriteFlag(_0x21856a)!==undefined?{'favorite':readFavoriteFlag(_0x21856a)}:{}});return{'ok':!![],'data':{'total':_0x2a394c['length'],'items':_0x21856a['bool'](_0x5a8407(0x15d))?_0x2a394c:_0x2a394c[_0x5a8407(0x13c)](summarizeArtifact)}};}},artifactDetail={'service':a10_0x1edf68(0x140),'command':a10_0x1edf68(0x12a),'description':a10_0x1edf68(0x158),'risk':'read','flags':[{...ID_FLAG,'description':a10_0x1edf68(0x145)}],async 'execute'(_0x5052c7){const _0x381088=a10_0x1edf68,_0x65c599=await getRuntimeArtifact(_0x5052c7[_0x381088(0x16e)]('id'),_0x5052c7['appCode']);return{'ok':!![],'data':detailArtifact(_0x65c599)};}},artifactCreate={'service':a10_0x1edf68(0x140),'command':a10_0x1edf68(0x14c),'description':a10_0x1edf68(0x134),'risk':a10_0x1edf68(0x136),'confirmationDescription':a10_0x1edf68(0x14e),'flags':[FILE_FLAG,ARTIFACT_NAME_FLAG,METADATA_FLAG],async 'execute'(_0x351669){const _0x238979=a10_0x1edf68,_0x415145=buildArtifactInput(_0x351669),_0x445808=await createRuntimeArtifact(_0x351669[_0x238979(0x156)],_0x415145);return{'ok':!![],'data':detailArtifact(_0x445808),'message':_0x238979(0x17a)+_0x445808['id']+(_0x445808[_0x238979(0x172)]?'\x20('+_0x445808['name']+')':'')};},async 'dryRun'(_0x4908eb){const _0x12ab87=a10_0x1edf68,_0x2dac76=buildArtifactInput(_0x4908eb);return dryRun(_0x12ab87(0x144),_0x12ab87(0x148))[_0x12ab87(0x16c)]({'appCode':_0x4908eb[_0x12ab87(0x156)],..._0x2dac76})[_0x12ab87(0x159)](_0x12ab87(0x14f))[_0x12ab87(0x129)]();},'writeEventSubject'(_0x540002){const _0xc1555f=a10_0x1edf68,_0x57626e=_0x540002[_0xc1555f(0x178)]?.['id'];if(typeof _0x57626e!==_0xc1555f(0x15b)&&typeof _0x57626e!=='number')return undefined;return{'kind':_0xc1555f(0x140),'id':String(_0x57626e),'action':'create'};}},artifactUpdate={'service':a10_0x1edf68(0x140),'command':a10_0x1edf68(0x177),'description':'根据本地源码文件更新\x20react_module\x20类型的\x20Artifact','risk':a10_0x1edf68(0x136),'confirmationDescription':a10_0x1edf68(0x154),'flags':[{...ID_FLAG,'description':a10_0x1edf68(0x145)},FILE_FLAG,ARTIFACT_NAME_FLAG,METADATA_FLAG],async 'execute'(_0x2aeb29){const _0x502e27=a10_0x1edf68,_0x1dd996=_0x2aeb29[_0x502e27(0x16e)]('id'),_0x5d98f7=buildArtifactInput(_0x2aeb29),_0x49f037=await updateRuntimeArtifact(_0x1dd996,_0x2aeb29[_0x502e27(0x156)],_0x5d98f7);return{'ok':!![],'data':detailArtifact(_0x49f037),'message':_0x502e27(0x146)+_0x49f037['id']+(_0x49f037[_0x502e27(0x172)]?'\x20('+_0x49f037[_0x502e27(0x172)]+')':'')};},async 'dryRun'(_0x3170f2){const _0x246d39=a10_0x1edf68,_0x3f8c2a=_0x3170f2['num']('id'),_0xc40913=buildArtifactInput(_0x3170f2);return dryRun(_0x246d39(0x144),_0x246d39(0x169)+_0x3f8c2a+_0x246d39(0x163))[_0x246d39(0x16c)]({'appCode':_0x3170f2[_0x246d39(0x156)],..._0xc40913})['description']('Preview:\x20update\x20react_module\x20Artifact\x20'+_0x3f8c2a)['build']();},'writeEventSubject'(_0x26199b){const _0x371f0d=a10_0x1edf68,_0x339667=_0x26199b['data']?.['id'];if(typeof _0x339667!==_0x371f0d(0x15b)&&typeof _0x339667!=='number')return undefined;return{'kind':_0x371f0d(0x140),'id':String(_0x339667),'action':_0x371f0d(0x177)};}};export const artifactDefinitions=[artifactList,artifactDetail,artifactCreate,artifactUpdate];
|
|
1
|
+
const a10_0x5371fa=a10_0x472e;(function(_0x17e04d,_0x486bb0){const _0x51eb28=a10_0x472e,_0x5c5a9c=_0x17e04d();while(!![]){try{const _0x3cd643=parseInt(_0x51eb28(0x1e8))/0x1+-parseInt(_0x51eb28(0x228))/0x2+parseInt(_0x51eb28(0x1ef))/0x3+parseInt(_0x51eb28(0x21d))/0x4+parseInt(_0x51eb28(0x20d))/0x5+-parseInt(_0x51eb28(0x222))/0x6+-parseInt(_0x51eb28(0x215))/0x7*(parseInt(_0x51eb28(0x1f5))/0x8);if(_0x3cd643===_0x486bb0)break;else _0x5c5a9c['push'](_0x5c5a9c['shift']());}catch(_0x1a6d38){_0x5c5a9c['push'](_0x5c5a9c['shift']());}}}(a10_0x56d4,0x71a11));import{existsSync,readFileSync,statSync}from'node:fs';import{createRuntimeArtifact,getRuntimeArtifact,listRuntimeArtifacts,updateRuntimeArtifact}from'../../core/api-client.js';import{ID_FLAG,VERBOSE_FLAG}from'../../commands/common/flags.js';import{CliErrors}from'../../errors.js';import{dryRun}from'../../framework/dryrun.js';function a10_0x472e(_0x50fd61,_0x3e8ae1){_0x50fd61=_0x50fd61-0x1e5;const _0x56d4e7=a10_0x56d4();let _0x472e68=_0x56d4e7[_0x50fd61];return _0x472e68;}const ARTIFACT_TYPE_REACT_MODULE=a10_0x5371fa(0x207),ARTIFACT_SOURCE_AGENT='AGENT',ALLOWED_REACT_MODULE_IMPORTS=[a10_0x5371fa(0x1f8),'react-dom',a10_0x5371fa(0x1fa),a10_0x5371fa(0x1f3),a10_0x5371fa(0x212),a10_0x5371fa(0x200)];export const ALLOWED_REACT_MODULE_IMPORTS_TEXT=ALLOWED_REACT_MODULE_IMPORTS[a10_0x5371fa(0x225)](',\x20');const IMPORT_SOURCE_PATTERNS=[/\bimport\s+(?:type\s+)?(?:[^'";]*?\s+from\s+)?["']([^"']+)["']/g,/\bexport\s+(?:type\s+)?[^'";]*?\s+from\s+["']([^"']+)["']/g,/\bimport\s*\(\s*["']([^"']+)["']\s*\)/g,/\brequire\s*\(\s*["']([^"']+)["']\s*\)/g],PAGE_LEVEL_PATTERNS=[/<!doctype\s+html/i,/<\s*html\b/i,/\bcreateRoot\s*\(/,/\bReactDOM\s*\.\s*render\s*\(/,/\bReactDOM\s*\.\s*createRoot\s*\(/],FILE_FLAG={'name':a10_0x5371fa(0x227),'type':a10_0x5371fa(0x217),'required':!![],'description':a10_0x5371fa(0x20c)},ARTIFACT_NAME_FLAG={'name':a10_0x5371fa(0x202),'type':a10_0x5371fa(0x217),'description':a10_0x5371fa(0x21a)},METADATA_FLAG={'name':a10_0x5371fa(0x1eb),'type':a10_0x5371fa(0x217),'description':'Artifact\x20metadata\x20as\x20JSON\x20object;\x20compiledContent\x20is\x20stripped'};function isPlainObject(_0x31ba3d){const _0x59e2a7=a10_0x5371fa;return typeof _0x31ba3d==='object'&&_0x31ba3d!==null&&!Array[_0x59e2a7(0x1f7)](_0x31ba3d);}function readSourceFile(_0x44ba90){const _0x14016a=a10_0x5371fa;if(!_0x44ba90)throw CliErrors['validation'](_0x14016a(0x1f9));if(!existsSync(_0x44ba90))throw CliErrors[_0x14016a(0x214)]('File\x20not\x20found:\x20'+_0x44ba90);if(!statSync(_0x44ba90)['isFile']())throw CliErrors[_0x14016a(0x214)](_0x14016a(0x220)+_0x44ba90);const _0x64fc9d=readFileSync(_0x44ba90,_0x14016a(0x1f4));return validateReactModuleSource(_0x64fc9d),_0x64fc9d;}function parseMetadata(_0x6b50e1){const _0x568b6e=a10_0x5371fa;if(!_0x6b50e1)return undefined;let _0x48e376;try{_0x48e376=JSON[_0x568b6e(0x20b)](_0x6b50e1);}catch{throw CliErrors[_0x568b6e(0x214)](_0x568b6e(0x1e5)+_0x6b50e1);}if(!isPlainObject(_0x48e376))throw CliErrors[_0x568b6e(0x214)](_0x568b6e(0x21f));const _0x5bb4f0={..._0x48e376};return delete _0x5bb4f0[_0x568b6e(0x1f0)],_0x5bb4f0;}function getPackageName(_0x4c15fb){if(_0x4c15fb['startsWith']('@')){const [_0x1191e1,_0x42ea56]=_0x4c15fb['split']('/');return _0x1191e1&&_0x42ea56?_0x1191e1+'/'+_0x42ea56:_0x4c15fb;}return _0x4c15fb['split']('/')[0x0]||_0x4c15fb;}function validateAllowedImports(_0xede79f){const _0x1235f9=a10_0x5371fa,_0x458a4d=new Set();for(const _0x587075 of IMPORT_SOURCE_PATTERNS){_0x587075[_0x1235f9(0x211)]=0x0;let _0x27a566;while((_0x27a566=_0x587075['exec'](_0xede79f))!==null){const _0x1e5c8c=_0x27a566[0x1]?.[_0x1235f9(0x203)]();_0x1e5c8c&&_0x458a4d[_0x1235f9(0x21b)](_0x1e5c8c);}}const _0x47cac0=[..._0x458a4d][_0x1235f9(0x1ff)](getPackageName)[_0x1235f9(0x216)](_0x2e146a=>!ALLOWED_REACT_MODULE_IMPORTS[_0x1235f9(0x1e6)](_0x2e146a));if(_0x47cac0['length']>0x0)throw CliErrors[_0x1235f9(0x214)]('react_module\x20imports\x20are\x20limited\x20to:\x20'+ALLOWED_REACT_MODULE_IMPORTS_TEXT+_0x1235f9(0x1ec)+[...new Set(_0x47cac0)][_0x1235f9(0x225)](',\x20'));}export function validateReactModuleSource(_0x4dd1d9){const _0x48a1ce=a10_0x5371fa;if(!_0x4dd1d9[_0x48a1ce(0x203)]())throw CliErrors[_0x48a1ce(0x214)]('Artifact\x20source\x20file\x20is\x20blank.');if(PAGE_LEVEL_PATTERNS['some'](_0x286d9f=>_0x286d9f[_0x48a1ce(0x1fe)](_0x4dd1d9)))throw CliErrors[_0x48a1ce(0x214)](_0x48a1ce(0x20a));validateAllowedImports(_0x4dd1d9);}function buildArtifactInput(_0x5e347b){const _0xbc4835=a10_0x5371fa,_0x2430ab=readSourceFile(_0x5e347b['str'](_0xbc4835(0x227))),_0x4b6e77=_0x5e347b[_0xbc4835(0x1ed)](_0xbc4835(0x202))['trim'](),_0x2d2393=parseMetadata(_0x5e347b[_0xbc4835(0x1ed)](_0xbc4835(0x1eb)));return{'artifactType':ARTIFACT_TYPE_REACT_MODULE,..._0x4b6e77?{'name':_0x4b6e77}:{},'content':_0x2430ab,..._0x2d2393?{'metadata':_0x2d2393}:{},'source':ARTIFACT_SOURCE_AGENT};}function summarizeArtifact(_0x2e0d0e){const _0x31dacb=a10_0x5371fa;return{'id':_0x2e0d0e['id'],'name':_0x2e0d0e['name'],'artifactType':_0x2e0d0e['artifactType'],'source':_0x2e0d0e[_0x31dacb(0x208)],'favorite':_0x2e0d0e[_0x31dacb(0x224)],'deleted':_0x2e0d0e[_0x31dacb(0x1ee)],'createTime':_0x2e0d0e[_0x31dacb(0x21e)],'updateTime':_0x2e0d0e[_0x31dacb(0x22b)]};}function detailArtifact(_0x76121d){const _0x4270eb=a10_0x5371fa;return{'id':_0x76121d['id'],'appCode':_0x76121d['appCode'],'name':_0x76121d[_0x4270eb(0x202)],'artifactType':_0x76121d['artifactType'],'source':_0x76121d['source'],'favorite':_0x76121d[_0x4270eb(0x224)],'deleted':_0x76121d['deleted'],'content':_0x76121d['content']??'','compiledContent':_0x76121d['compiledContent'],'metadata':_0x76121d['metadata']??{},'createTime':_0x76121d[_0x4270eb(0x21e)],'updateTime':_0x76121d[_0x4270eb(0x22b)]};}function readFavoriteFlag(_0x36355c){const _0x176a21=a10_0x5371fa,_0x3a3ba4=_0x36355c['flag'](_0x176a21(0x224));return _0x3a3ba4===undefined||_0x3a3ba4===null||_0x3a3ba4===''?undefined:_0x36355c[_0x176a21(0x22a)](_0x176a21(0x224));}function a10_0x56d4(){const _0x57c618=['filter','string','read','detail','Artifact\x20display\x20name','add','Updated\x20Artifact\x20','2436100wMhEqI','createTime','--metadata\x20must\x20be\x20a\x20JSON\x20object.','File\x20is\x20not\x20a\x20regular\x20file:\x20','/client/artifact/create','2036790xlkTDa','Preview:\x20update\x20react_module\x20Artifact\x20','favorite','join','build','file','557258wKpHtE','POST','bool','updateTime','Invalid\x20JSON\x20for\x20--metadata:\x20','includes','num','709161GBoQNU','根据本地源码文件更新\x20react_module\x20类型的\x20Artifact','Preview:\x20create\x20react_module\x20Artifact','metadata','.\x20Unsupported:\x20','str','deleted','803877yoYsKS','compiledContent','body','Show\x20one\x20Artifact\x20by\x20id','dayjs','utf8','8MNqxZv','artifact','isArray','react','File\x20path\x20is\x20required.','lodash','Optional\x20favorite-state\x20filter','length','create','test','map','@ant-design/icons','List\x20current-app\x20react_module\x20Artifacts','name','trim','data','update','write','react_module','source','appCode','react_module\x20must\x20be\x20an\x20embeddable\x20React\x20module,\x20not\x20full\x20HTML\x20or\x20a\x20ReactDOM/createRoot\x20mount\x20entry.','parse','Path\x20to\x20a\x20local\x20UTF-8\x20React\x20module\x20source\x20file','835550iiaOgI','description','list','Artifact\x20ID','lastIndex','antd','verbose','validation','4688152WUFGAm'];a10_0x56d4=function(){return _0x57c618;};return a10_0x56d4();}const artifactList={'service':'artifact','command':a10_0x5371fa(0x20f),'description':a10_0x5371fa(0x201),'risk':a10_0x5371fa(0x218),'flags':[{'name':a10_0x5371fa(0x208),'type':a10_0x5371fa(0x217),'description':'Optional\x20source\x20filter,\x20for\x20example\x20AGENT'},{'name':a10_0x5371fa(0x224),'type':'boolean','description':a10_0x5371fa(0x1fb)},VERBOSE_FLAG],async 'execute'(_0x17fbe2){const _0x5f413c=a10_0x5371fa,_0x64da03=await listRuntimeArtifacts(_0x17fbe2['appCode'],{'artifactType':ARTIFACT_TYPE_REACT_MODULE,..._0x17fbe2['str'](_0x5f413c(0x208))?{'source':_0x17fbe2[_0x5f413c(0x1ed)](_0x5f413c(0x208))}:{},...readFavoriteFlag(_0x17fbe2)!==undefined?{'favorite':readFavoriteFlag(_0x17fbe2)}:{}});return{'ok':!![],'data':{'total':_0x64da03[_0x5f413c(0x1fc)],'items':_0x17fbe2[_0x5f413c(0x22a)](_0x5f413c(0x213))?_0x64da03:_0x64da03[_0x5f413c(0x1ff)](summarizeArtifact)}};}},artifactDetail={'service':a10_0x5371fa(0x1f6),'command':a10_0x5371fa(0x219),'description':a10_0x5371fa(0x1f2),'risk':a10_0x5371fa(0x218),'flags':[{...ID_FLAG,'description':'Artifact\x20ID'}],async 'execute'(_0x154dc5){const _0x50c41f=a10_0x5371fa,_0x5dfa4e=await getRuntimeArtifact(_0x154dc5[_0x50c41f(0x1e7)]('id'),_0x154dc5[_0x50c41f(0x209)]);return{'ok':!![],'data':detailArtifact(_0x5dfa4e)};}},artifactCreate={'service':a10_0x5371fa(0x1f6),'command':a10_0x5371fa(0x1fd),'description':'根据本地源码文件创建\x20react_module\x20类型的\x20Artifact','risk':a10_0x5371fa(0x206),'confirmationDescription':'保存新的\x20Artifact\x20源码并进行编译;成功后将在当前应用中新增可展示的内嵌模块。','flags':[FILE_FLAG,ARTIFACT_NAME_FLAG,METADATA_FLAG],async 'execute'(_0xbc40b3){const _0x621fd8=buildArtifactInput(_0xbc40b3),_0x5835c8=await createRuntimeArtifact(_0xbc40b3['appCode'],_0x621fd8);return{'ok':!![],'data':detailArtifact(_0x5835c8),'message':'Created\x20Artifact\x20'+_0x5835c8['id']+(_0x5835c8['name']?'\x20('+_0x5835c8['name']+')':'')};},async 'dryRun'(_0x5ac79e){const _0x219f44=a10_0x5371fa,_0x301fd3=buildArtifactInput(_0x5ac79e);return dryRun('POST',_0x219f44(0x221))[_0x219f44(0x1f1)]({'appCode':_0x5ac79e['appCode'],..._0x301fd3})[_0x219f44(0x20e)](_0x219f44(0x1ea))[_0x219f44(0x226)]();},'writeEventSubject'(_0x3e355c){const _0x5e852d=a10_0x5371fa,_0x4d0309=_0x3e355c[_0x5e852d(0x204)]?.['id'];if(typeof _0x4d0309!==_0x5e852d(0x217)&&typeof _0x4d0309!=='number')return undefined;return{'kind':_0x5e852d(0x1f6),'id':String(_0x4d0309),'action':_0x5e852d(0x1fd)};}},artifactUpdate={'service':'artifact','command':a10_0x5371fa(0x205),'description':a10_0x5371fa(0x1e9),'risk':a10_0x5371fa(0x206),'confirmationDescription':'保存新的\x20Artifact\x20源码并重新编译;应用中的内嵌模块展示和交互可能立即发生变化。','flags':[{...ID_FLAG,'description':a10_0x5371fa(0x210)},FILE_FLAG,ARTIFACT_NAME_FLAG,METADATA_FLAG],async 'execute'(_0x291e92){const _0x4c45ac=a10_0x5371fa,_0x431bd8=_0x291e92['num']('id'),_0x13ab74=buildArtifactInput(_0x291e92),_0x5b8974=await updateRuntimeArtifact(_0x431bd8,_0x291e92['appCode'],_0x13ab74);return{'ok':!![],'data':detailArtifact(_0x5b8974),'message':_0x4c45ac(0x21c)+_0x5b8974['id']+(_0x5b8974[_0x4c45ac(0x202)]?'\x20('+_0x5b8974[_0x4c45ac(0x202)]+')':'')};},async 'dryRun'(_0x4bd4dd){const _0x112a9c=a10_0x5371fa,_0x3f9846=_0x4bd4dd[_0x112a9c(0x1e7)]('id'),_0x4fcce5=buildArtifactInput(_0x4bd4dd);return dryRun(_0x112a9c(0x229),'/client/artifact/'+_0x3f9846+'/update')[_0x112a9c(0x1f1)]({'appCode':_0x4bd4dd[_0x112a9c(0x209)],..._0x4fcce5})['description'](_0x112a9c(0x223)+_0x3f9846)[_0x112a9c(0x226)]();},'writeEventSubject'(_0x1e8e3c){const _0x140cb1=a10_0x5371fa,_0xd7cc88=_0x1e8e3c[_0x140cb1(0x204)]?.['id'];if(typeof _0xd7cc88!=='string'&&typeof _0xd7cc88!=='number')return undefined;return{'kind':_0x140cb1(0x1f6),'id':String(_0xd7cc88),'action':'update'};}};export const artifactDefinitions=[artifactList,artifactDetail,artifactCreate,artifactUpdate];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const a11_0x313270=a11_0x4ce9;(function(_0x12700a,_0x1d7c46){const _0x55512d=a11_0x4ce9,_0x1a5b68=_0x12700a();while(!![]){try{const _0x2b7b03=-parseInt(_0x55512d(0x1a2))/0x1+-parseInt(_0x55512d(0x17c))/0x2+-parseInt(_0x55512d(0x164))/0x3*(-parseInt(_0x55512d(0x182))/0x4)+parseInt(_0x55512d(0x17a))/0x5+parseInt(_0x55512d(0x17b))/0x6+parseInt(_0x55512d(0x1a0))/0x7*(-parseInt(_0x55512d(0x167))/0x8)+parseInt(_0x55512d(0x196))/0x9;if(_0x2b7b03===_0x1d7c46)break;else _0x1a5b68['push'](_0x1a5b68['shift']());}catch(_0x3523e2){_0x1a5b68['push'](_0x1a5b68['shift']());}}}(a11_0xafba,0x2512e));import{existsSync,mkdirSync,readFileSync,unlinkSync,writeFileSync}from'node:fs';import{dirname}from'node:path';function a11_0x4ce9(_0x3ac66b,_0x45dd63){_0x3ac66b=_0x3ac66b-0x161;const _0xafbae6=a11_0xafba();let _0x4ce9a0=_0xafbae6[_0x3ac66b];return _0x4ce9a0;}import{homedir}from'node:os';import{readScopedConfig,writeScopedConfig}from'../../context.js';import{CLI_BIN_NAME}from'../../constant/cli.js';import{PRODUCT_CONFIG}from'../../constant/product.js';import{getUserDomain}from'../../constant/domain.js';function a11_0xafba(){const _0x25723e=['project','\x20auth\x20device','cancelled','test','Print\x20URL\x20to\x20stdout\x20and\x20exit\x20(for\x20WorkBuddy\x20integration)','Waiting\x20for\x20authorization\x20(timeout:\x2010\x20minutes,\x20Ctrl+C\x20to\x20cancel)...','AbortError','auth','parse','access_key','str','apiError','createdAt','nonInteractive','source','864507nOlGFI','Write\x20to\x20project\x20config','),\x20retrying...','77160DotshV','\x20config.','SIGINT','code','stderr','padStart','name','Write\x20to\x20global\x20config\x20(default)','boolean','aborted','App\x20name\x20shown\x20on\x20authorization\x20page\x20(default:\x20lovrabet)','/device-auth?code=','abort','通过设备码流程完成授权(在浏览器中操作,无需复制粘贴)','write','removeListener','AccessKey\x20saved\x20to\x20','After\x20authorizing,\x20re-run:\x20','Device\x20authorization\x20timed\x20out\x20after\x2010\x20minutes.\x20Run\x20`lovrabet\x20auth\x20device`\x20to\x20get\x20a\x20new\x20code.','9035WVhZdI','149898gQHsCB','577760JKsUlt','scope','Verify:\x20','Invalid\x20device\x20auth\x20response','success','url-only','4iqwGzf','data','accessKey','Device\x20code\x20expired.\x20Run\x20`lovrabet\x20auth\x20device`\x20to\x20get\x20a\x20new\x20code.','The\x20device\x20code\x20is\x20valid\x20for\x2010\x20minutes.','global-default','\x0dWaiting\x20for\x20authorization...\x20','bool','utf8','application/json','Device\x20auth\x20API\x20unreachable\x20after\x20multiple\x20retries.','&source=','now','lovrabet-cli','stringify','\x20auth\x20status','once','json','global','Device\x20auth\x20API\x20error\x20(','3849129wZaQQJ','Device\x20auth\x20API\x20returned\x20HTTP\x20','POST','Device\x20authorization\x20cancelled.','\x20remaining','randomUUID','networkError','Invalid\x20access_key\x20returned\x20by\x20server.','device','status','119XNDHLN','Device\x20authorization\x20URL\x20printed.\x20Complete\x20authorization\x20in\x20browser,\x20then\x20re-run.','137941MIcRqb','signal','validation','string'];a11_0xafba=function(){return _0x25723e;};return a11_0xafba();}import{CliErrors}from'../../errors.js';import{resolveConfigScope,toScopeFlags}from'../../commands/common/config-policy.js';import{writeCliSideChannelLine}from'../../utils/write-cli-side-channel.js';function resolveAuthScopeFlags(_0x50091e){const _0x200fb9=a11_0x4ce9;return toScopeFlags(resolveConfigScope({'explicitGlobal':_0x50091e[_0x200fb9(0x189)](_0x200fb9(0x194)),'explicitProject':_0x50091e[_0x200fb9(0x189)](_0x200fb9(0x1a6)),'policy':_0x200fb9(0x187)}));}const ACCESS_KEY_PATTERN=/^ak_[A-Za-z0-9]{16,}$/,DEVICE_CODE_TTL_MS=0x927c0,POLL_INTERVAL_MS=0xbb8,MAX_POLLS=0xc8,MAX_CONSECUTIVE_NETWORK_ERRORS=0x5;export function generateDeviceCode(){const _0x1c5fee=a11_0x4ce9;return crypto[_0x1c5fee(0x19b)]();}export function buildDeviceAuthUrl(_0x369808,_0x18ade5,_0x8a5df4=a11_0x313270(0x18f)){const _0xd02047=a11_0x313270;return _0x369808+_0xd02047(0x172)+encodeURIComponent(_0x18ade5)+_0xd02047(0x18d)+encodeURIComponent(_0x8a5df4);}export function getDeviceCodePath(){return homedir()+'/'+PRODUCT_CONFIG['homeDirName']+'/.device-auth';}export function readStoredDeviceCode(){const _0x15f536=a11_0x313270,_0x365055=getDeviceCodePath();if(!existsSync(_0x365055))return null;try{const _0x4593de=readFileSync(_0x365055,{'encoding':_0x15f536(0x18a)}),_0x109a92=JSON[_0x15f536(0x1ae)](_0x4593de);if(_0x109a92&&typeof _0x109a92['code']===_0x15f536(0x1a5)&&typeof _0x109a92[_0x15f536(0x161)]===_0x15f536(0x1a5)&&(_0x109a92[_0x15f536(0x17d)]==='global'||_0x109a92['scope']==='project'))return _0x109a92;}catch{}return null;}export function writeStoredDeviceCode(_0x30ab58,_0x4d4611){const _0x192dda=a11_0x313270,_0xb56145=getDeviceCodePath(),_0x3267d3=dirname(_0xb56145);!existsSync(_0x3267d3)&&mkdirSync(_0x3267d3,{'recursive':!![]});const _0x37eca7={'code':_0x30ab58,'createdAt':new Date()['toISOString'](),'scope':_0x4d4611};writeFileSync(_0xb56145,JSON[_0x192dda(0x190)](_0x37eca7),{'encoding':_0x192dda(0x18a),'mode':0x180});}export function deleteStoredDeviceCode(){const _0x50a751=getDeviceCodePath();try{unlinkSync(_0x50a751);}catch{}}export function isStoredDeviceCodeExpired(_0xe03f90){const _0x26b080=a11_0x313270;return Date[_0x26b080(0x18e)]()-new Date(_0xe03f90[_0x26b080(0x161)])['getTime']()>DEVICE_CODE_TTL_MS;}export async function fetchDeviceToken(_0x228629,_0x13e9a4){const _0x2fa6b4=a11_0x313270,_0x29d849=_0x228629+'/api/device-auth/token',_0x3d4b87=new AbortController(),_0x266a4d=setTimeout(()=>_0x3d4b87[_0x2fa6b4(0x173)](),0x2710),_0x2b84b3=await fetch(_0x29d849,{'method':_0x2fa6b4(0x198),'headers':{'Content-Type':_0x2fa6b4(0x18b)},'body':JSON[_0x2fa6b4(0x190)]({'code':_0x13e9a4}),'signal':_0x3d4b87['signal']});clearTimeout(_0x266a4d);if(!_0x2b84b3['ok'])throw CliErrors[_0x2fa6b4(0x19c)](_0x2fa6b4(0x197)+_0x2b84b3[_0x2fa6b4(0x19f)]);const _0x424741=await _0x2b84b3[_0x2fa6b4(0x193)](),_0x3a2956=_0x424741['data']&&typeof _0x424741[_0x2fa6b4(0x183)]==='object'?_0x424741['data']:_0x424741;if(!_0x3a2956||typeof _0x3a2956[_0x2fa6b4(0x19f)]!==_0x2fa6b4(0x1a5))throw CliErrors[_0x2fa6b4(0x1b1)](_0x2fa6b4(0x17f));return{'status':_0x3a2956['status'],'access_key':typeof _0x3a2956['access_key']===_0x2fa6b4(0x1a5)?_0x3a2956[_0x2fa6b4(0x1af)]:undefined};}export async function pollDeviceToken(_0x1e056c,_0x5272ae,_0xad50ff){const _0x22d179=a11_0x313270;let _0x6d140b=0x0;for(let _0x45b7a3=0x0;_0x45b7a3<MAX_POLLS;_0x45b7a3++){if(_0xad50ff[_0x22d179(0x170)])throw CliErrors[_0x22d179(0x1a8)](_0x22d179(0x199));let _0x1db6ca;try{_0x1db6ca=await fetchDeviceToken(_0x1e056c,_0x5272ae);}catch(_0x357525){if(_0x357525 instanceof Error&&_0x357525[_0x22d179(0x16d)]===_0x22d179(0x1ac))throw CliErrors[_0x22d179(0x1a8)](_0x22d179(0x199));_0x6d140b++;if(_0x6d140b>=MAX_CONSECUTIVE_NETWORK_ERRORS)throw CliErrors[_0x22d179(0x19c)](_0x22d179(0x18c));writeCliSideChannelLine(_0x22d179(0x195)+_0x6d140b+'/'+MAX_CONSECUTIVE_NETWORK_ERRORS+_0x22d179(0x166)),await sleep(POLL_INTERVAL_MS);continue;}_0x6d140b=0x0;if(_0x1db6ca[_0x22d179(0x19f)]===_0x22d179(0x180)){if(!_0x1db6ca[_0x22d179(0x1af)])throw CliErrors['apiError'](_0x22d179(0x19d));return _0x1db6ca[_0x22d179(0x1af)];}if(_0x1db6ca[_0x22d179(0x19f)]==='expired'){deleteStoredDeviceCode();throw CliErrors['validation'](_0x22d179(0x185));}const _0x466604=(_0x45b7a3+0x1)*POLL_INTERVAL_MS,_0x1ef4c5=DEVICE_CODE_TTL_MS-_0x466604,_0x2a61ed=Math['floor'](_0x1ef4c5/0xea60),_0x261802=Math['floor'](_0x1ef4c5%0xea60/0x3e8);process['stderr']['write'](_0x22d179(0x188)+_0x2a61ed+':'+String(_0x261802)[_0x22d179(0x16c)](0x2,'0')+_0x22d179(0x19a)),await sleep(POLL_INTERVAL_MS);}deleteStoredDeviceCode();throw CliErrors[_0x22d179(0x1a4)](_0x22d179(0x179));}function sleep(_0x5791cc){return new Promise(_0x4da9f6=>setTimeout(_0x4da9f6,_0x5791cc));}export const authDeviceDefinition={'service':a11_0x313270(0x1ad),'command':a11_0x313270(0x19e),'description':a11_0x313270(0x174),'risk':a11_0x313270(0x175),'confirmationDescription':'将启动设备码授权流程;授权成功后会把获取到的\x20AccessKey\x20保存到所选\x20Lovrabet\x20配置。确认界面不会显示设备码或密钥。','requiresAuth':![],'requiresAppCode':![],'hasFormat':![],'flags':[{'name':a11_0x313270(0x194),'type':a11_0x313270(0x16f),'description':a11_0x313270(0x16e),'default':!![]},{'name':a11_0x313270(0x1a6),'type':a11_0x313270(0x16f),'description':a11_0x313270(0x165),'default':![]},{'name':a11_0x313270(0x163),'type':a11_0x313270(0x1a5),'description':a11_0x313270(0x171),'default':a11_0x313270(0x18f)},{'name':a11_0x313270(0x181),'type':a11_0x313270(0x16f),'description':a11_0x313270(0x1aa),'default':![]}],async 'execute'(_0x1841fc){const _0x2801bb=a11_0x313270,_0x392db3=resolveAuthScopeFlags(_0x1841fc),_0xec75f2=_0x392db3[_0x2801bb(0x194)]?_0x2801bb(0x194):_0x2801bb(0x1a6),_0x1db16d=readScopedConfig(_0x392db3);if(_0x1db16d[_0x2801bb(0x184)])return{'ok':!![],'message':'Already\x20authorized.\x20Use\x20`lovrabet\x20auth\x20status`\x20to\x20verify.'};const _0x434ba2=(_0x1841fc[_0x2801bb(0x1b0)](_0x2801bb(0x163))||_0x2801bb(0x18f))['trim'](),_0x445d7c=getUserDomain(),_0x581d2c=readStoredDeviceCode(),_0x393bfd=_0x581d2c&&!isStoredDeviceCodeExpired(_0x581d2c)?_0x581d2c[_0x2801bb(0x16a)]:((()=>{const _0x2f175d=generateDeviceCode();return writeStoredDeviceCode(_0x2f175d,_0xec75f2),_0x2f175d;})()),_0x3dae54=buildDeviceAuthUrl(_0x445d7c,_0x393bfd,_0x434ba2);if(_0x1841fc['bool'](_0x2801bb(0x181)))return console['log'](_0x3dae54),{'ok':!![]};writeCliSideChannelLine('Open\x20this\x20URL\x20in\x20your\x20browser\x20to\x20authorize:'),writeCliSideChannelLine(''),writeCliSideChannelLine(_0x3dae54),writeCliSideChannelLine(''),writeCliSideChannelLine(_0x2801bb(0x186));if(_0x1841fc[_0x2801bb(0x162)])return writeCliSideChannelLine(_0x2801bb(0x178)+CLI_BIN_NAME+_0x2801bb(0x1a7)),{'ok':!![],'message':_0x2801bb(0x1a1)};writeCliSideChannelLine(_0x2801bb(0x1ab));const _0x2c8d58=new AbortController(),_0x4ad881=()=>{const _0x437d7b=_0x2801bb;_0x2c8d58['abort'](),process[_0x437d7b(0x176)](_0x437d7b(0x169),_0x4ad881);};process[_0x2801bb(0x192)]('SIGINT',_0x4ad881);let _0xa83307;try{_0xa83307=await pollDeviceToken(_0x445d7c,_0x393bfd,_0x2c8d58[_0x2801bb(0x1a3)]);}finally{process[_0x2801bb(0x176)](_0x2801bb(0x169),_0x4ad881);}if(!ACCESS_KEY_PATTERN[_0x2801bb(0x1a9)](_0xa83307))throw CliErrors['apiError'](_0x2801bb(0x19d));const _0x3b61f1=readScopedConfig(_0x392db3);return _0x3b61f1['accessKey']=_0xa83307,writeScopedConfig(_0x3b61f1,_0x392db3),deleteStoredDeviceCode(),process[_0x2801bb(0x16b)][_0x2801bb(0x175)]('\x0a'),writeCliSideChannelLine(_0x2801bb(0x177)+_0xec75f2+_0x2801bb(0x168)),writeCliSideChannelLine(_0x2801bb(0x17e)+CLI_BIN_NAME+_0x2801bb(0x191)),{'ok':!![],'message':'Device\x20authorization\x20successful.'};}};
|
|
1
|
+
function a11_0x2a02(_0x20bb21,_0x450ed7){_0x20bb21=_0x20bb21-0x1a6;const _0x5e32f1=a11_0x5e32();let _0x2a0260=_0x5e32f1[_0x20bb21];return _0x2a0260;}const a11_0x11a61a=a11_0x2a02;(function(_0x2f4687,_0x4dc4f7){const _0x9ee3c1=a11_0x2a02,_0x31e0ff=_0x2f4687();while(!![]){try{const _0xbb8cff=parseInt(_0x9ee3c1(0x1a8))/0x1*(-parseInt(_0x9ee3c1(0x1c0))/0x2)+parseInt(_0x9ee3c1(0x1cc))/0x3*(parseInt(_0x9ee3c1(0x1e7))/0x4)+-parseInt(_0x9ee3c1(0x1c4))/0x5*(parseInt(_0x9ee3c1(0x1db))/0x6)+-parseInt(_0x9ee3c1(0x1f6))/0x7*(parseInt(_0x9ee3c1(0x1e9))/0x8)+-parseInt(_0x9ee3c1(0x1ea))/0x9*(parseInt(_0x9ee3c1(0x1b7))/0xa)+parseInt(_0x9ee3c1(0x1f4))/0xb*(-parseInt(_0x9ee3c1(0x1ee))/0xc)+parseInt(_0x9ee3c1(0x1e4))/0xd*(parseInt(_0x9ee3c1(0x1dc))/0xe);if(_0xbb8cff===_0x4dc4f7)break;else _0x31e0ff['push'](_0x31e0ff['shift']());}catch(_0x596f8e){_0x31e0ff['push'](_0x31e0ff['shift']());}}}(a11_0x5e32,0xa904e));import{existsSync,mkdirSync,readFileSync,unlinkSync,writeFileSync}from'node:fs';import{dirname}from'node:path';import{homedir}from'node:os';function a11_0x5e32(){const _0x4c79cc=['validation','project','lovrabet-cli','\x20auth\x20device','354183ruTAjs','signal','After\x20authorizing,\x20re-run:\x20','Already\x20authorized.\x20Use\x20`lovrabet\x20auth\x20status`\x20to\x20verify.','Invalid\x20access_key\x20returned\x20by\x20server.','\x20config.','success','SIGINT','stringify','networkError','source','Device\x20auth\x20API\x20returned\x20HTTP\x20','createdAt','Device\x20authorization\x20URL\x20printed.\x20Complete\x20authorization\x20in\x20browser,\x20then\x20re-run.','scope','50394FcEApM','14HrecxD','write','AbortError','global','The\x20device\x20code\x20is\x20valid\x20for\x2010\x20minutes.','Device\x20authorization\x20successful.','aborted','apiError','52137059PrhVCJ','Device\x20auth\x20API\x20unreachable\x20after\x20multiple\x20retries.','utf8','8ZiaViD','stderr','944XTglzv','207dtjBUw','),\x20retrying...','parse','Write\x20to\x20project\x20config','851352YawwMj','Device\x20auth\x20API\x20error\x20(','string','\x0dWaiting\x20for\x20authorization...\x20','/api/device-auth/token','toISOString','55NSnNxh','application/json','16513QFKLgD','auth','通过设备码流程完成授权(在浏览器中操作,无需复制粘贴)','homeDirName','Invalid\x20device\x20auth\x20response','将启动设备码授权流程;授权成功后会把获取到的\x20AccessKey\x20保存到所选\x20Lovrabet\x20配置。确认界面不会显示设备码或密钥。','expired','17wtuOli','abort','accessKey','removeListener','padStart','object','device','AccessKey\x20saved\x20to\x20','&source=','Device\x20authorization\x20timed\x20out\x20after\x2010\x20minutes.\x20Run\x20`lovrabet\x20auth\x20device`\x20to\x20get\x20a\x20new\x20code.','code','status','log','bool','once','465230ETDiaV','boolean','/.device-auth','App\x20name\x20shown\x20on\x20authorization\x20page\x20(default:\x20lovrabet)','Device\x20code\x20expired.\x20Run\x20`lovrabet\x20auth\x20device`\x20to\x20get\x20a\x20new\x20code.','Verify:\x20','Print\x20URL\x20to\x20stdout\x20and\x20exit\x20(for\x20WorkBuddy\x20integration)','floor','access_key','90326lyDGaV','global-default','POST','Device\x20authorization\x20cancelled.','645HdSCzH','nonInteractive','Write\x20to\x20global\x20config\x20(default)','data'];a11_0x5e32=function(){return _0x4c79cc;};return a11_0x5e32();}import{readScopedConfig,writeScopedConfig}from'../../context.js';import{CLI_BIN_NAME}from'../../constant/cli.js';import{PRODUCT_CONFIG}from'../../constant/product.js';import{getUserDomain}from'../../constant/domain.js';import{CliErrors}from'../../errors.js';import{resolveConfigScope,toScopeFlags}from'../../commands/common/config-policy.js';import{writeCliSideChannelLine}from'../../utils/write-cli-side-channel.js';function resolveAuthScopeFlags(_0x40ac3a){const _0x534692=a11_0x2a02;return toScopeFlags(resolveConfigScope({'explicitGlobal':_0x40ac3a[_0x534692(0x1b5)](_0x534692(0x1df)),'explicitProject':_0x40ac3a['bool'](_0x534692(0x1c9)),'policy':_0x534692(0x1c1)}));}const ACCESS_KEY_PATTERN=/^ak_[A-Za-z0-9]{16,}$/,DEVICE_CODE_TTL_MS=0x927c0,POLL_INTERVAL_MS=0xbb8,MAX_POLLS=0xc8,MAX_CONSECUTIVE_NETWORK_ERRORS=0x5;export function generateDeviceCode(){return crypto['randomUUID']();}export function buildDeviceAuthUrl(_0xfa80e5,_0xeaaa3c,_0x3de060=a11_0x11a61a(0x1ca)){const _0x3040aa=a11_0x11a61a;return _0xfa80e5+'/device-auth?code='+encodeURIComponent(_0xeaaa3c)+_0x3040aa(0x1b0)+encodeURIComponent(_0x3de060);}export function getDeviceCodePath(){const _0x219c58=a11_0x11a61a;return homedir()+'/'+PRODUCT_CONFIG[_0x219c58(0x1f9)]+_0x219c58(0x1b9);}export function readStoredDeviceCode(){const _0x3b8623=a11_0x11a61a,_0x2e8efc=getDeviceCodePath();if(!existsSync(_0x2e8efc))return null;try{const _0x4a2856=readFileSync(_0x2e8efc,{'encoding':_0x3b8623(0x1e6)}),_0x5215f7=JSON[_0x3b8623(0x1ec)](_0x4a2856);if(_0x5215f7&&typeof _0x5215f7[_0x3b8623(0x1b2)]===_0x3b8623(0x1f0)&&typeof _0x5215f7[_0x3b8623(0x1d8)]==='string'&&(_0x5215f7[_0x3b8623(0x1da)]==='global'||_0x5215f7[_0x3b8623(0x1da)]===_0x3b8623(0x1c9)))return _0x5215f7;}catch{}return null;}export function writeStoredDeviceCode(_0x578810,_0x6c03e9){const _0x371e0f=a11_0x11a61a,_0x127ddf=getDeviceCodePath(),_0x58d057=dirname(_0x127ddf);!existsSync(_0x58d057)&&mkdirSync(_0x58d057,{'recursive':!![]});const _0x1d5073={'code':_0x578810,'createdAt':new Date()[_0x371e0f(0x1f3)](),'scope':_0x6c03e9};writeFileSync(_0x127ddf,JSON[_0x371e0f(0x1d4)](_0x1d5073),{'encoding':_0x371e0f(0x1e6),'mode':0x180});}export function deleteStoredDeviceCode(){const _0x1330f8=getDeviceCodePath();try{unlinkSync(_0x1330f8);}catch{}}export function isStoredDeviceCodeExpired(_0x517ee0){const _0x12b006=a11_0x11a61a;return Date['now']()-new Date(_0x517ee0[_0x12b006(0x1d8)])['getTime']()>DEVICE_CODE_TTL_MS;}export async function fetchDeviceToken(_0x203104,_0x5628bb){const _0x20b6e9=a11_0x11a61a,_0x136968=_0x203104+_0x20b6e9(0x1f2),_0x151467=new AbortController(),_0x55b4cb=setTimeout(()=>_0x151467['abort'](),0x2710),_0x7f396d=await fetch(_0x136968,{'method':_0x20b6e9(0x1c2),'headers':{'Content-Type':_0x20b6e9(0x1f5)},'body':JSON[_0x20b6e9(0x1d4)]({'code':_0x5628bb}),'signal':_0x151467[_0x20b6e9(0x1cd)]});clearTimeout(_0x55b4cb);if(!_0x7f396d['ok'])throw CliErrors[_0x20b6e9(0x1d5)](_0x20b6e9(0x1d7)+_0x7f396d[_0x20b6e9(0x1b3)]);const _0xf3985b=await _0x7f396d['json'](),_0x337961=_0xf3985b[_0x20b6e9(0x1c7)]&&typeof _0xf3985b['data']===_0x20b6e9(0x1ad)?_0xf3985b[_0x20b6e9(0x1c7)]:_0xf3985b;if(!_0x337961||typeof _0x337961[_0x20b6e9(0x1b3)]!=='string')throw CliErrors[_0x20b6e9(0x1e3)](_0x20b6e9(0x1fa));return{'status':_0x337961['status'],'access_key':typeof _0x337961[_0x20b6e9(0x1bf)]==='string'?_0x337961[_0x20b6e9(0x1bf)]:undefined};}export async function pollDeviceToken(_0xcd4023,_0x27df8a,_0x4235c1){const _0x3a9953=a11_0x11a61a;let _0x5b030d=0x0;for(let _0x52be58=0x0;_0x52be58<MAX_POLLS;_0x52be58++){if(_0x4235c1[_0x3a9953(0x1e2)])throw CliErrors['cancelled'](_0x3a9953(0x1c3));let _0x36e263;try{_0x36e263=await fetchDeviceToken(_0xcd4023,_0x27df8a);}catch(_0x43bce6){if(_0x43bce6 instanceof Error&&_0x43bce6['name']===_0x3a9953(0x1de))throw CliErrors['cancelled'](_0x3a9953(0x1c3));_0x5b030d++;if(_0x5b030d>=MAX_CONSECUTIVE_NETWORK_ERRORS)throw CliErrors['networkError'](_0x3a9953(0x1e5));writeCliSideChannelLine(_0x3a9953(0x1ef)+_0x5b030d+'/'+MAX_CONSECUTIVE_NETWORK_ERRORS+_0x3a9953(0x1eb)),await sleep(POLL_INTERVAL_MS);continue;}_0x5b030d=0x0;if(_0x36e263[_0x3a9953(0x1b3)]===_0x3a9953(0x1d2)){if(!_0x36e263[_0x3a9953(0x1bf)])throw CliErrors[_0x3a9953(0x1e3)](_0x3a9953(0x1d0));return _0x36e263['access_key'];}if(_0x36e263['status']===_0x3a9953(0x1a7)){deleteStoredDeviceCode();throw CliErrors[_0x3a9953(0x1c8)](_0x3a9953(0x1bb));}const _0x4dcdb1=(_0x52be58+0x1)*POLL_INTERVAL_MS,_0x9ca2c7=DEVICE_CODE_TTL_MS-_0x4dcdb1,_0x59e2c2=Math['floor'](_0x9ca2c7/0xea60),_0x2a5e66=Math[_0x3a9953(0x1be)](_0x9ca2c7%0xea60/0x3e8);process[_0x3a9953(0x1e8)][_0x3a9953(0x1dd)](_0x3a9953(0x1f1)+_0x59e2c2+':'+String(_0x2a5e66)[_0x3a9953(0x1ac)](0x2,'0')+'\x20remaining'),await sleep(POLL_INTERVAL_MS);}deleteStoredDeviceCode();throw CliErrors[_0x3a9953(0x1c8)](_0x3a9953(0x1b1));}function sleep(_0x511f0b){return new Promise(_0x514976=>setTimeout(_0x514976,_0x511f0b));}export const authDeviceDefinition={'service':a11_0x11a61a(0x1f7),'command':a11_0x11a61a(0x1ae),'description':a11_0x11a61a(0x1f8),'risk':a11_0x11a61a(0x1dd),'confirmationDescription':a11_0x11a61a(0x1a6),'requiresAuth':![],'requiresAppCode':![],'hasFormat':![],'flags':[{'name':a11_0x11a61a(0x1df),'type':a11_0x11a61a(0x1b8),'description':a11_0x11a61a(0x1c6),'default':!![]},{'name':a11_0x11a61a(0x1c9),'type':a11_0x11a61a(0x1b8),'description':a11_0x11a61a(0x1ed),'default':![]},{'name':a11_0x11a61a(0x1d6),'type':a11_0x11a61a(0x1f0),'description':a11_0x11a61a(0x1ba),'default':a11_0x11a61a(0x1ca)},{'name':'url-only','type':a11_0x11a61a(0x1b8),'description':a11_0x11a61a(0x1bd),'default':![]}],async 'execute'(_0x69d12b){const _0x53e11d=a11_0x11a61a,_0x49b22e=resolveAuthScopeFlags(_0x69d12b),_0x3ea085=_0x49b22e['global']?_0x53e11d(0x1df):_0x53e11d(0x1c9),_0x133f72=readScopedConfig(_0x49b22e);if(_0x133f72[_0x53e11d(0x1aa)])return{'ok':!![],'message':_0x53e11d(0x1cf)};const _0x30f141=(_0x69d12b['str']('source')||_0x53e11d(0x1ca))['trim'](),_0x429b50=getUserDomain(),_0x191f7f=readStoredDeviceCode(),_0x516827=_0x191f7f&&!isStoredDeviceCodeExpired(_0x191f7f)?_0x191f7f[_0x53e11d(0x1b2)]:((()=>{const _0x2e9844=generateDeviceCode();return writeStoredDeviceCode(_0x2e9844,_0x3ea085),_0x2e9844;})()),_0x3315f2=buildDeviceAuthUrl(_0x429b50,_0x516827,_0x30f141);if(_0x69d12b[_0x53e11d(0x1b5)]('url-only'))return console[_0x53e11d(0x1b4)](_0x3315f2),{'ok':!![]};writeCliSideChannelLine('Open\x20this\x20URL\x20in\x20your\x20browser\x20to\x20authorize:'),writeCliSideChannelLine(''),writeCliSideChannelLine(_0x3315f2),writeCliSideChannelLine(''),writeCliSideChannelLine(_0x53e11d(0x1e0));if(_0x69d12b[_0x53e11d(0x1c5)])return writeCliSideChannelLine(_0x53e11d(0x1ce)+CLI_BIN_NAME+_0x53e11d(0x1cb)),{'ok':!![],'message':_0x53e11d(0x1d9)};writeCliSideChannelLine('Waiting\x20for\x20authorization\x20(timeout:\x2010\x20minutes,\x20Ctrl+C\x20to\x20cancel)...');const _0x2493a9=new AbortController(),_0x4f7c79=()=>{const _0x5c32e8=_0x53e11d;_0x2493a9[_0x5c32e8(0x1a9)](),process[_0x5c32e8(0x1ab)](_0x5c32e8(0x1d3),_0x4f7c79);};process[_0x53e11d(0x1b6)](_0x53e11d(0x1d3),_0x4f7c79);let _0x49d282;try{_0x49d282=await pollDeviceToken(_0x429b50,_0x516827,_0x2493a9[_0x53e11d(0x1cd)]);}finally{process[_0x53e11d(0x1ab)]('SIGINT',_0x4f7c79);}if(!ACCESS_KEY_PATTERN['test'](_0x49d282))throw CliErrors['apiError']('Invalid\x20access_key\x20returned\x20by\x20server.');const _0x107bdb=readScopedConfig(_0x49b22e);return _0x107bdb[_0x53e11d(0x1aa)]=_0x49d282,writeScopedConfig(_0x107bdb,_0x49b22e),deleteStoredDeviceCode(),process[_0x53e11d(0x1e8)][_0x53e11d(0x1dd)]('\x0a'),writeCliSideChannelLine(_0x53e11d(0x1af)+_0x3ea085+_0x53e11d(0x1d1)),writeCliSideChannelLine(_0x53e11d(0x1bc)+CLI_BIN_NAME+'\x20auth\x20status'),{'ok':!![],'message':_0x53e11d(0x1e1)};}};
|