@lovrabet/lovrabet-cli 2.1.22 → 2.1.23-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/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.d.ts +4 -8
- 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.d.ts +1 -16
- 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.d.ts +2 -2
- 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.d.ts +4 -8
- 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.d.ts +6 -24
- 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.d.ts +7 -0
- 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/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.d.ts +5 -5
- package/lib/context.js +1 -1
- 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/runtime/confirmation.js +1 -1
- package/lib/runtime/event.js +1 -1
- package/lib/runtime/index.d.ts +1 -1
- package/lib/runtime/index.js +1 -1
- package/lib/runtime/queue.d.ts +2 -1
- package/lib/runtime/queue.js +1 -1
- package/lib/runtime/resolve.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/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/lib/cli.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
const
|
|
2
|
+
const a0_0x3b82b=a0_0x1898;(function(_0x2944ac,_0x566813){const _0x59d3f6=a0_0x1898,_0x3ef39e=_0x2944ac();while(!![]){try{const _0x2dacab=parseInt(_0x59d3f6(0xa9))/0x1+-parseInt(_0x59d3f6(0x99))/0x2*(-parseInt(_0x59d3f6(0x82))/0x3)+parseInt(_0x59d3f6(0x9b))/0x4*(-parseInt(_0x59d3f6(0x85))/0x5)+parseInt(_0x59d3f6(0xa8))/0x6+parseInt(_0x59d3f6(0xa5))/0x7*(parseInt(_0x59d3f6(0x7d))/0x8)+parseInt(_0x59d3f6(0x8f))/0x9+-parseInt(_0x59d3f6(0x7e))/0xa*(parseInt(_0x59d3f6(0xa3))/0xb);if(_0x2dacab===_0x566813)break;else _0x3ef39e['push'](_0x3ef39e['shift']());}catch(_0x43f1a0){_0x3ef39e['push'](_0x3ef39e['shift']());}}}(a0_0x59a0,0xe182e));import{jsx as a0_0x50a433}from'react/jsx-runtime';import a0_0x523b5f 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';function a0_0x1898(_0x30123c,_0x133434){_0x30123c=_0x30123c-0x7d;const _0x59a027=a0_0x59a0();let _0x189896=_0x59a027[_0x30123c];return _0x189896;}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_0x523b5f(helpText,{'importMeta':import.meta,'flags':buildMeowFlags(),'version':getCliVersionDisplay()});void main()[a0_0x3b82b(0xa1)](handleError);async function main(){try{await run();}catch(_0x20a64c){handleError(_0x20a64c);}}async function run(){const _0x1754b9=a0_0x3b82b;let _0x2fbd71=cli['input'][0x0],_0x35629b=cli[_0x1754b9(0x9d)][0x1];const _0x11024b=cli[_0x1754b9(0x96)];try{const {correctFlags:_0x5786d1}=await import(_0x1754b9(0x88)),_0x29f270=getAllDefinitions()['flatMap'](_0x134fcb=>_0x134fcb['flags']??[]),{flags:_0x373566,corrections:_0x75a1bf}=_0x5786d1(_0x11024b,_0x29f270);if(_0x75a1bf[_0x1754b9(0x9a)]>0x0){for(const _0x259168 of _0x75a1bf){process[_0x1754b9(0x81)][_0x1754b9(0x98)](_0x1754b9(0x8a)+_0x259168[_0x1754b9(0x7f)]+_0x1754b9(0x9e)+_0x259168[_0x1754b9(0x86)]+_0x1754b9(0xa0)+_0x259168[_0x1754b9(0xa2)]+'\x0a');}Object['assign'](_0x11024b,_0x373566);}}catch{}if(!_0x2fbd71){const {waitUntilExit:_0x266fb6}=render(a0_0x50a433(Help,{}));await _0x266fb6();return;}const _0x261ae5=resolveRemovedCommand(_0x2fbd71,_0x35629b);if(_0x261ae5)throw CliErrors[_0x1754b9(0x92)](_0x261ae5[_0x1754b9(0x83)],_0x261ae5['hint']);if(!isKnownService(_0x2fbd71)){const _0x357982=resolveDynamicServiceCommand(cli[_0x1754b9(0x9d)],_0x11024b);if(_0x357982){if(_0x11024b[_0x1754b9(0x9c)]){console[_0x1754b9(0x8d)](generateCommandHelp(_0x357982[_0x1754b9(0x8e)]));return;}Object[_0x1754b9(0x84)](_0x11024b,_0x357982[_0x1754b9(0x96)]);const _0x73d27=buildConfigFromFlags(_0x11024b);await initGlobalEnvironment(_0x73d27);const _0x683fee=createPipelineEnv(_0x73d27,_0x11024b);_0x683fee[_0x1754b9(0xa7)]=_0x357982['args'],await runCommand(_0x357982['definition'],_0x683fee);return;}if(_0x11024b[_0x1754b9(0x9c)]){const _0x2e238b=generateDynamicServiceHelp(_0x2fbd71);if(_0x2e238b){console[_0x1754b9(0x8d)](_0x2e238b);return;}}const {waitUntilExit:_0x4f006f}=render(a0_0x50a433(Help,{}));await _0x4f006f();return;}const _0x191304=getServiceEntry(_0x2fbd71);if(!_0x35629b){if(_0x11024b[_0x1754b9(0x9c)]){console[_0x1754b9(0x8d)](generateServiceHelp(_0x2fbd71));return;}if(_0x191304[_0x1754b9(0x8b)])_0x35629b=_0x191304[_0x1754b9(0x8b)];else{console[_0x1754b9(0x8d)](generateServiceHelp(_0x2fbd71));return;}}const _0xfc3d99=findDefinition(_0x2fbd71,_0x35629b);!_0xfc3d99&&(console['log'](generateServiceHelp(_0x2fbd71)),handleError(CliErrors[_0x1754b9(0x93)](_0x2fbd71+'\x20'+_0x35629b)));if(_0x11024b['help']){console[_0x1754b9(0x8d)](generateCommandHelp(_0xfc3d99));return;}const _0x1510d0=buildConfigFromFlags(_0x11024b);await initGlobalEnvironment(_0x1510d0);const _0x522ed8=createPipelineEnv(_0x1510d0,_0x11024b);_0x522ed8['args']=cli[_0x1754b9(0x9d)]['slice'](0x2),await runCommand(_0xfc3d99,_0x522ed8);}function handleError(_0x1cc798){const _0x5c0813=a0_0x3b82b;if(_0x1cc798 instanceof CliError){_0x1cc798[_0x5c0813(0xa6)]==='cancelled'&&(process[_0x5c0813(0x81)][_0x5c0813(0x98)](_0x5c0813(0x91)),process[_0x5c0813(0x8c)](0x0));console[_0x5c0813(0x90)](_0x5c0813(0x9f)+_0x1cc798[_0x5c0813(0x83)]);if(_0x1cc798[_0x5c0813(0x89)])console[_0x5c0813(0x90)]('Hint:\x20'+_0x1cc798[_0x5c0813(0x89)]);process[_0x5c0813(0x8c)](_0x1cc798[_0x5c0813(0x95)]);}isUserCancellation(_0x1cc798)&&(process[_0x5c0813(0x81)][_0x5c0813(0x98)](_0x5c0813(0x91)),process[_0x5c0813(0x8c)](0x0)),console['error'](_0x5c0813(0x87),_0x1cc798),process['exit'](0x1);}function a0_0x59a0(){const _0x1682ee=['assign','5nMNTJU','original','Unexpected\x20error:','./framework/preparse.js','hint','[preparse]\x20','defaultCommand','exit','log','definition','3060918vMhQYW','error','\x0aCancelled.\x0a','validation','unknownCommand','ExitPromptError','exitCode','flags','ERR_USE_AFTER_CLOSE','write','52dDDDwp','length','4312244IrDKcL','help','input',':\x20--','Error:\x20','\x20->\x20--','catch','corrected','3677333urEzBc','ERR_STREAM_DESTROYED','28YOVCgG','code','args','3920964OtSfYu','1093132UqXvFz','3592216DTdLss','90LSswpH','handler','name','stderr','130113BtgNCq','message'];a0_0x59a0=function(){return _0x1682ee;};return a0_0x59a0();}function isUserCancellation(_0x3ae259){const _0x1147f9=a0_0x3b82b;if(!(_0x3ae259 instanceof Error))return![];if(_0x3ae259[_0x1147f9(0x80)]===_0x1147f9(0x94))return!![];if(_0x3ae259[_0x1147f9(0xa6)]===_0x1147f9(0x97))return!![];if(_0x3ae259['code']===_0x1147f9(0xa4))return!![];return![];}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const a1_0x450a36=a1_0x1649;(function(_0x4c8ff1,_0x57891c){const _0x4a5673=a1_0x1649,_0x43c90c=_0x4c8ff1();while(!![]){try{const _0x1fc67f=parseInt(_0x4a5673(0x11c))/0x1+-parseInt(_0x4a5673(0x10b))/0x2+-parseInt(_0x4a5673(0x150))/0x3*(-parseInt(_0x4a5673(0x15f))/0x4)+parseInt(_0x4a5673(0x171))/0x5*(-parseInt(_0x4a5673(0x15d))/0x6)+parseInt(_0x4a5673(0x110))/0x7+-parseInt(_0x4a5673(0x137))/0x8+parseInt(_0x4a5673(0x114))/0x9;if(_0x1fc67f===_0x57891c)break;else _0x43c90c['push'](_0x43c90c['shift']());}catch(_0x191cfd){_0x43c90c['push'](_0x43c90c['shift']());}}}(a1_0x4c57,0xb5c07));import{CliErrors}from'../../errors.js';const CATEGORY_FLAG={'name':a1_0x450a36(0x154),'type':a1_0x450a36(0x163),'description':a1_0x450a36(0x117)},KEYWORD_FLAG={'name':'keyword','type':a1_0x450a36(0x163),'description':a1_0x450a36(0x11b)},DOC_CODE_FLAG={'name':a1_0x450a36(0x102),'type':a1_0x450a36(0x163),'required':!![],'description':a1_0x450a36(0x147)},DOCS=[{'code':a1_0x450a36(0x11a),'category':a1_0x450a36(0x160),'title':a1_0x450a36(0x10e),'method':'POST','path':a1_0x450a36(0x12c),'summary':a1_0x450a36(0x13d),'whenToUse':a1_0x450a36(0x145),'pathParams':[],'queryParams':[],'bodySchema':a1_0x450a36(0x16b),'responseHighlights':[a1_0x450a36(0xfc),'paging.totalCount\x20gives\x20total\x20rows'],'examples':[a1_0x450a36(0xf7)],'notes':[a1_0x450a36(0x127)],'markdown':['##\x20List\x20datasets','','Use\x20this\x20API\x20or\x20`lovrabet\x20dataset\x20list`\x20to\x20discover\x20available\x20dataset\x20codes\x20before\x20reading\x20data.'][a1_0x450a36(0x152)]('\x0a')},{'code':a1_0x450a36(0x119),'category':a1_0x450a36(0x160),'title':a1_0x450a36(0x128),'method':'GET','path':a1_0x450a36(0x169),'summary':'获取数据集详情','whenToUse':'需要按数据集\x20code\x20获取字段、表信息、关联关系(relations)或操作定义时使用','pathParams':[],'queryParams':[{'name':a1_0x450a36(0x102),'description':a1_0x450a36(0x155)}],'bodySchema':a1_0x450a36(0xff),'responseHighlights':[a1_0x450a36(0x157),a1_0x450a36(0x141),a1_0x450a36(0x11d)],'examples':[a1_0x450a36(0x138)],'notes':['If\x20SDK\x20usage\x20is\x20needed,\x20follow\x20with\x20`lovrabet\x20dataset\x20sdk-doc\x20--code\x20<datasetCode>`.'],'markdown':[a1_0x450a36(0x125),'',a1_0x450a36(0x124)][a1_0x450a36(0x152)]('\x0a')},{'code':a1_0x450a36(0xf9),'category':a1_0x450a36(0x160),'title':a1_0x450a36(0x16a),'method':a1_0x450a36(0x153),'path':a1_0x450a36(0x139),'summary':a1_0x450a36(0x144),'whenToUse':a1_0x450a36(0xf8),'pathParams':[{'name':a1_0x450a36(0x11f),'description':a1_0x450a36(0x13b)},{'name':'datasetCode','description':'32-character\x20dataset\x20code'}],'queryParams':[],'bodySchema':a1_0x450a36(0xfe),'responseHighlights':[a1_0x450a36(0x156),a1_0x450a36(0x15b)],'examples':[a1_0x450a36(0x14a),a1_0x450a36(0x13a)],'notes':[a1_0x450a36(0x15a),a1_0x450a36(0x123),'Verify\x20tableData\x20and\x20paging\x20before\x20treating\x20the\x20response\x20as\x20a\x20business\x20fact.','Use\x20read-only\x20data\x20commands\x20before\x20writing\x20Artifacts\x20that\x20display\x20real\x20data.'],'markdown':[a1_0x450a36(0xfb),'',a1_0x450a36(0x12a)]['join']('\x0a')},{'code':a1_0x450a36(0x164),'category':'dataset','title':a1_0x450a36(0x14f),'method':a1_0x450a36(0x153),'path':'/api/{appCode}/{datasetCode}/aggregate','summary':a1_0x450a36(0x12e),'whenToUse':a1_0x450a36(0x116),'pathParams':[{'name':'appCode','description':a1_0x450a36(0x13b)},{'name':a1_0x450a36(0x121),'description':a1_0x450a36(0x155)}],'queryParams':[],'bodySchema':'{\x22aggregate\x22:[{\x22column\x22:\x20\x22id\x22,\x22type\x22:\x22COUNT\x22,\x22alias\x22:\x22cnt\x22}],\x22groupBy\x22:[]}','responseHighlights':[a1_0x450a36(0x10c),a1_0x450a36(0x148)],'examples':[a1_0x450a36(0x12b)],'notes':[a1_0x450a36(0x129),a1_0x450a36(0x112)],'markdown':[a1_0x450a36(0x14b),'',a1_0x450a36(0x13f)][a1_0x450a36(0x152)]('\x0a')},{'code':'dataset_data_get_one','category':a1_0x450a36(0x160),'title':a1_0x450a36(0x146),'method':a1_0x450a36(0x153),'path':a1_0x450a36(0x101),'summary':a1_0x450a36(0x108),'whenToUse':a1_0x450a36(0x100),'pathParams':[{'name':a1_0x450a36(0x11f),'description':a1_0x450a36(0x13b)},{'name':a1_0x450a36(0x121),'description':a1_0x450a36(0x155)}],'queryParams':[],'bodySchema':a1_0x450a36(0x133),'responseHighlights':[a1_0x450a36(0x167)],'examples':[a1_0x450a36(0xf6)],'notes':['Prefer\x20`filter`\x20when\x20the\x20record\x20id\x20is\x20unknown.'],'markdown':'##\x20Get\x20one\x20dataset\x20record\x0a\x0aRead\x20one\x20record\x20by\x20id.'},{'code':'dataset_data_create','category':'dataset','title':a1_0x450a36(0x16d),'method':'POST','path':a1_0x450a36(0x126),'summary':'创建数据','whenToUse':a1_0x450a36(0x158),'pathParams':[{'name':a1_0x450a36(0x11f),'description':'Current\x20app\x20code'},{'name':a1_0x450a36(0x121),'description':a1_0x450a36(0x155)}],'queryParams':[],'bodySchema':'{\x22fieldName\x22:\x22value\x22}','responseHighlights':['Returns\x20the\x20created\x20record\x20or\x20backend\x20operation\x20result'],'examples':[a1_0x450a36(0x15c)],'notes':['This\x20is\x20a\x20write\x20operation;\x20use\x20dry-run\x20when\x20available\x20and\x20safe\x20fixtures\x20for\x20smoke\x20tests.'],'markdown':a1_0x450a36(0x168)},{'code':a1_0x450a36(0x118),'category':'bf','title':a1_0x450a36(0x162),'method':a1_0x450a36(0x113),'path':a1_0x450a36(0xfa),'summary':a1_0x450a36(0x165),'whenToUse':a1_0x450a36(0x16c),'pathParams':[{'name':a1_0x450a36(0x11f),'description':a1_0x450a36(0x13b)},{'name':a1_0x450a36(0x14d),'description':'Exact\x20endpoint\x20function\x20name'}],'queryParams':[],'bodySchema':a1_0x450a36(0xff),'responseHighlights':[a1_0x450a36(0x105)],'examples':[a1_0x450a36(0x151)],'notes':[a1_0x450a36(0x131)],'markdown':a1_0x450a36(0x159)},{'code':a1_0x450a36(0x11e),'category':'bf','title':a1_0x450a36(0x115),'method':a1_0x450a36(0x153),'path':'/api/endpoint/{appCode}/{functionName}','summary':a1_0x450a36(0x166),'whenToUse':a1_0x450a36(0x134),'pathParams':[{'name':a1_0x450a36(0x11f),'description':a1_0x450a36(0x13b)},{'name':a1_0x450a36(0x14d),'description':a1_0x450a36(0x136)}],'queryParams':[],'bodySchema':'{\x22param\x22:\x22value\x22}','responseHighlights':[a1_0x450a36(0x16e)],'examples':[a1_0x450a36(0x107)],'notes':[a1_0x450a36(0x14e)],'markdown':a1_0x450a36(0x12d)},{'code':a1_0x450a36(0x10d),'category':a1_0x450a36(0x109),'title':a1_0x450a36(0x135),'method':a1_0x450a36(0x153),'path':'/api/custom/executeSql','summary':a1_0x450a36(0x12f),'whenToUse':'已经确认目标\x20sqlCode\x20存在,并需要实际执行该自定义\x20SQL\x20时使用','pathParams':[],'queryParams':[],'bodySchema':a1_0x450a36(0x161),'responseHighlights':[a1_0x450a36(0x143)],'examples':[a1_0x450a36(0x130)],'notes':['Use\x20`lovrabet\x20sql\x20detail`\x20before\x20execution.'],'markdown':a1_0x450a36(0x149)}];function entrySummary(_0x31fa18){const _0x4268da=a1_0x450a36;return{'code':_0x31fa18[_0x4268da(0x102)],'category':_0x31fa18[_0x4268da(0x154)],'method':_0x31fa18['method'],'path':_0x31fa18[_0x4268da(0x132)],'summary':_0x31fa18[_0x4268da(0x13e)],'whenToUse':_0x31fa18[_0x4268da(0x140)]};}export function listApiDocEntries(_0x2a6fdc={}){const _0x4f02d3=a1_0x450a36,_0xec2b2d=String(_0x2a6fdc['category']||'')[_0x4f02d3(0x10a)](),_0x1a2ef7=String(_0x2a6fdc[_0x4f02d3(0x142)]||'')[_0x4f02d3(0x10a)]()[_0x4f02d3(0x122)]();return DOCS[_0x4f02d3(0x16f)](_0xd81d41=>{const _0x41ad5f=_0x4f02d3;if(_0xec2b2d&&_0xd81d41[_0x41ad5f(0x154)]!==_0xec2b2d)return![];if(!_0x1a2ef7)return!![];return[_0xd81d41[_0x41ad5f(0x102)],_0xd81d41['category'],_0xd81d41[_0x41ad5f(0x106)],_0xd81d41[_0x41ad5f(0x132)],_0xd81d41[_0x41ad5f(0x13e)],_0xd81d41[_0x41ad5f(0x140)],_0xd81d41[_0x41ad5f(0x14c)]]['join']('\x20')[_0x41ad5f(0x122)]()[_0x41ad5f(0x104)](_0x1a2ef7);})['map'](entrySummary);}export function getApiDocDetail(_0x484158){const _0x4ab959=a1_0x450a36,_0x2343cb=DOCS['find'](_0x1d4a82=>_0x1d4a82[_0x4ab959(0x102)]===_0x484158);if(!_0x2343cb)throw CliErrors['validation'](_0x4ab959(0x15e)+_0x484158);return{..._0x2343cb};}const apiDocList={'service':a1_0x450a36(0x120),'command':'list','description':a1_0x450a36(0x13c),'risk':a1_0x450a36(0x111),'requiresAppCode':![],'flags':[CATEGORY_FLAG,KEYWORD_FLAG],async 'execute'(_0x112414){const _0x413ecb=a1_0x450a36,_0x5bbb49=listApiDocEntries({'category':_0x112414[_0x413ecb(0xfd)](_0x413ecb(0x154)),'keyword':_0x112414[_0x413ecb(0xfd)](_0x413ecb(0x142))});return{'ok':!![],'data':{'total':_0x5bbb49[_0x413ecb(0x103)],'items':_0x5bbb49}};}},apiDocDetail={'service':a1_0x450a36(0x120),'command':a1_0x450a36(0x10f),'description':a1_0x450a36(0x170),'risk':a1_0x450a36(0x111),'requiresAppCode':![],'flags':[DOC_CODE_FLAG],async 'execute'(_0x392d08){const _0x28e09e=a1_0x450a36;return{'ok':!![],'data':getApiDocDetail(_0x392d08[_0x28e09e(0xfd)]('code'))};}};function a1_0x1649(_0x90ca77,_0x3e7c7d){_0x90ca77=_0x90ca77-0xf6;const _0x4c571f=a1_0x4c57();let _0x1649c9=_0x4c571f[_0x90ca77];return _0x1649c9;}function a1_0x4c57(){const _0x16ce31=['dataset','{\x22appCode\x22:\x22app-aa63b188\x22,\x22sqlCode\x22:\x22xxxxxxxx-xxxxxxxx\x22,\x22params\x22:{}}','Get\x20BF\x20endpoint\x20function\x20contract','string','dataset_data_aggregate','按应用和函数名精确获取\x20BF\x20运行契约','执行指定\x20BF\x20函数','Returns\x20one\x20matching\x20business\x20record','##\x20Create\x20dataset\x20record\x0a\x0aCreate\x20one\x20data\x20record\x20in\x20a\x20dataset.','/api/dataset/getOneByCode?code={datasetCode}','Filter\x20dataset\x20data','{\x22appCode\x22:\x22app-aa63b188\x22,\x22currentPage\x22:1,\x22pageSize\x22:100}','已经从用户、平台\x20UI\x20或前序上下文确认函数名,需要查看该\x20ENDPOINT\x20的运行态元信息时使用','Create\x20dataset\x20record','Returns\x20script\x20business\x20payload','filter','Show\x20runtime\x20API\x20documentation\x20by\x20code','1879085eUOROb','lovrabet\x20data\x20getOne\x20--code\x20<datasetCode>\x20--params\x20\x27{\x22id\x22:123}\x27','lovrabet\x20dataset\x20list\x20--appcode\x20<appCode>\x20--format\x20compress','需要携带\x20where、orderBy、分页等条件读取业务数据时使用','dataset_data_filter','/client/bff/endpoint/{appCode}/{functionName}','##\x20Filter\x20dataset\x20data','tableData\x20contains\x20dataset\x20id/code/name','str','{\x22where\x22:{},\x22currentPage\x22:1,\x22pageSize\x22:20}','None','已经知道记录\x20id,需要按数据集读取单条业务数据时使用','/api/{appCode}/{datasetCode}/getOne','code','length','includes','CLI\x20returns\x20appCode/functionName/description/version/gmtModified','method','lovrabet\x20bff\x20exec\x20--name\x20<functionName>\x20--params\x20\x27{}\x27','查询单条数据','custom_sql','trim','2066424NRpIrk','result\x20rows\x20contain\x20aggregate\x20aliases','custom_sql_execute','List\x20datasets','detail','3353091nraPLq','read','`field`\x20is\x20accepted\x20as\x20a\x20deprecated\x20alias\x20for\x20`column`;\x20new\x20calls\x20should\x20use\x20`column`.','GET','12955383ctOZgO','Execute\x20BF\x20endpoint\x20function','需要按\x20groupBy\x20分组并做\x20count、sum、avg、max、min\x20等聚合统计时使用','Filter\x20docs\x20by\x20category,\x20for\x20example\x20dataset','bf_detail','dataset_detail','dataset_list','Search\x20docs\x20by\x20code,\x20summary,\x20path,\x20or\x20usage\x20text','1335745IZlnpo','operations\x20describes\x20runtime\x20APIs','bf_execute','appCode','api-doc','datasetCode','toLowerCase','For\x20the\x20next\x20page,\x20keep\x20where/select/orderBy/pageSize\x20unchanged\x20and\x20increment\x20only\x20currentPage,\x20which\x20starts\x20at\x201.','Inspect\x20field\x20names,\x20relations,\x20and\x20operation\x20metadata\x20for\x20a\x20known\x20dataset\x20code.','##\x20Dataset\x20detail','/api/{appCode}/{datasetCode}/create','CLI\x20users\x20should\x20prefer\x20`lovrabet\x20dataset\x20list`\x20for\x20this\x20workflow.','Dataset\x20detail','Use\x20`having`\x20only\x20for\x20post-aggregation\x20filters.','Use\x20`where`,\x20`select`,\x20`orderBy`,\x20`currentPage`,\x20and\x20`pageSize`\x20to\x20inspect\x20live\x20data\x20shape.','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/dataset/get-dataset-list-by-app-code','##\x20Execute\x20BF\x20endpoint\x20function\x0a\x0aExecute\x20a\x20known\x20endpoint\x20script.','聚合查询数据集数据','执行自定义\x20SQL','lovrabet\x20sql\x20exec\x20--sqlcode\x20<sqlCode>\x20--params\x20\x27{}\x27','This\x20is\x20an\x20exact\x20lookup\x20by\x20appCode\x20+\x20functionName.\x20The\x20CLI\x20does\x20not\x20enumerate\x20BFF\x20functions\x20or\x20expose\x20platform-only\x20fields.','path','{\x22id\x22:123}','已经确认目标\x20BF\x20的\x20functionName,且需要实际调用该\x20ENDPOINT\x20函数完成业务操作时使用','Execute\x20custom\x20SQL','Endpoint\x20function\x20name','9206064ntMLhh','lovrabet\x20dataset\x20detail\x20--code\x20<datasetCode>\x20--appcode\x20<appCode>','/api/{appCode}/{datasetCode}/filter','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','Current\x20app\x20code','List\x20available\x20runtime\x20API\x20documentation\x20entries','分页获取数据集列表','summary','Aggregate\x20supports\x20COUNT,\x20SUM,\x20AVG,\x20MAX,\x20and\x20MIN\x20definitions\x20in\x20the\x20`aggregate`\x20array.','whenToUse','relations\x20contains\x20the\x20object-shaped\x20API\x20relations\x20value\x20when\x20returned','keyword','Returns\x20SQL\x20execution\x20payload','条件过滤查询数据','需要按\x20appCode\x20分页获取运行态数据集列表,并优先收敛可用\x20datasetCode\x20时使用','Get\x20one\x20dataset\x20record','API\x20doc\x20code,\x20for\x20example\x20dataset_list','where\x20filters\x20before\x20aggregation','##\x20Execute\x20custom\x20SQL\x0a\x0aExecute\x20a\x20configured\x20SQL\x20script\x20by\x20sqlCode.','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','##\x20Aggregate\x20dataset\x20data','title','functionName','Script\x20behavior\x20may\x20have\x20side\x20effects;\x20inspect\x20detail\x20first.','Aggregate\x20dataset\x20data','867JCPpuu','lovrabet\x20bff\x20detail\x20--name\x20<functionName>','join','POST','category','32-character\x20dataset\x20code','tableData\x20contains\x20records','fields/properties\x20describe\x20data\x20shape','需要向指定数据集新增一条业务数据时使用','##\x20Get\x20BF\x20endpoint\x20function\x20contract\x0a\x0aInspect\x20one\x20known\x20endpoint\x20function\x20through\x20the\x20AK-authenticated\x20exact\x20detail\x20API.','where,\x20select,\x20orderBy,\x20currentPage,\x20and\x20pageSize\x20belong\x20inside\x20one\x20--params\x20JSON\x20object;\x20they\x20are\x20not\x20standalone\x20CLI\x20flags.','paging\x20contains\x20pagination','lovrabet\x20data\x20create\x20--code\x20<datasetCode>\x20--params\x20\x27{\x22name\x22:\x22demo\x22}\x27','6OALuxv','API\x20doc\x20code\x20not\x20found:\x20','692uDMUeK'];a1_0x4c57=function(){return _0x16ce31;};return a1_0x4c57();}export const apiDocDefinitions=[apiDocList,apiDocDetail];
|
|
1
|
+
const a1_0x4f5c3e=a1_0x2d14;(function(_0x68bd09,_0x323d78){const _0x59229d=a1_0x2d14,_0x10da07=_0x68bd09();while(!![]){try{const _0x2c9d04=-parseInt(_0x59229d(0x179))/0x1+-parseInt(_0x59229d(0x148))/0x2+parseInt(_0x59229d(0x16d))/0x3*(-parseInt(_0x59229d(0x157))/0x4)+parseInt(_0x59229d(0x171))/0x5+-parseInt(_0x59229d(0x166))/0x6*(parseInt(_0x59229d(0x177))/0x7)+-parseInt(_0x59229d(0x19c))/0x8+parseInt(_0x59229d(0x17b))/0x9;if(_0x2c9d04===_0x323d78)break;else _0x10da07['push'](_0x10da07['shift']());}catch(_0x1b1bb0){_0x10da07['push'](_0x10da07['shift']());}}}(a1_0x299d,0x86e67));import{CliErrors}from'../../errors.js';const CATEGORY_FLAG={'name':a1_0x4f5c3e(0x16a),'type':a1_0x4f5c3e(0x131),'description':a1_0x4f5c3e(0x190)},KEYWORD_FLAG={'name':'keyword','type':a1_0x4f5c3e(0x131),'description':a1_0x4f5c3e(0x15b)},DOC_CODE_FLAG={'name':a1_0x4f5c3e(0x1a2),'type':'string','required':!![],'description':a1_0x4f5c3e(0x12f)},DOCS=[{'code':a1_0x4f5c3e(0x159),'category':'dataset','title':'List\x20datasets','method':'POST','path':a1_0x4f5c3e(0x191),'summary':'分页获取数据集列表','whenToUse':a1_0x4f5c3e(0x134),'pathParams':[],'queryParams':[],'bodySchema':'{\x22appCode\x22:\x22app-aa63b188\x22,\x22currentPage\x22:1,\x22pageSize\x22:100}','responseHighlights':[a1_0x4f5c3e(0x14d),a1_0x4f5c3e(0x18f)],'examples':[a1_0x4f5c3e(0x185)],'notes':[a1_0x4f5c3e(0x184)],'markdown':['##\x20List\x20datasets','',a1_0x4f5c3e(0x19d)]['join']('\x0a')},{'code':'dataset_detail','category':a1_0x4f5c3e(0x12d),'title':'Dataset\x20detail','method':'GET','path':a1_0x4f5c3e(0x198),'summary':a1_0x4f5c3e(0x14c),'whenToUse':'需要按数据集\x20code\x20获取字段、表信息、关联关系(relations)或操作定义时使用','pathParams':[],'queryParams':[{'name':a1_0x4f5c3e(0x1a2),'description':'32-character\x20dataset\x20code'}],'bodySchema':a1_0x4f5c3e(0x147),'responseHighlights':[a1_0x4f5c3e(0x12e),a1_0x4f5c3e(0x18a),a1_0x4f5c3e(0x1a1)],'examples':[a1_0x4f5c3e(0x17f)],'notes':[a1_0x4f5c3e(0x161)],'markdown':['##\x20Dataset\x20detail','',a1_0x4f5c3e(0x13a)][a1_0x4f5c3e(0x142)]('\x0a')},{'code':a1_0x4f5c3e(0x18d),'category':a1_0x4f5c3e(0x12d),'title':a1_0x4f5c3e(0x130),'method':a1_0x4f5c3e(0x151),'path':a1_0x4f5c3e(0x15d),'summary':'条件过滤查询数据','whenToUse':a1_0x4f5c3e(0x138),'pathParams':[{'name':a1_0x4f5c3e(0x15f),'description':a1_0x4f5c3e(0x163)},{'name':'datasetCode','description':a1_0x4f5c3e(0x173)}],'queryParams':[],'bodySchema':a1_0x4f5c3e(0x188),'responseHighlights':['tableData\x20contains\x20records','paging\x20contains\x20pagination'],'examples':[a1_0x4f5c3e(0x14a),'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'],'notes':[a1_0x4f5c3e(0x15e),a1_0x4f5c3e(0x158),a1_0x4f5c3e(0x189),'Use\x20read-only\x20data\x20commands\x20before\x20writing\x20Artifacts\x20that\x20display\x20real\x20data.'],'markdown':[a1_0x4f5c3e(0x17d),'',a1_0x4f5c3e(0x15a)][a1_0x4f5c3e(0x142)]('\x0a')},{'code':'dataset_data_aggregate','category':a1_0x4f5c3e(0x12d),'title':a1_0x4f5c3e(0x18e),'method':a1_0x4f5c3e(0x151),'path':a1_0x4f5c3e(0x18b),'summary':'聚合查询数据集数据','whenToUse':a1_0x4f5c3e(0x141),'pathParams':[{'name':a1_0x4f5c3e(0x15f),'description':a1_0x4f5c3e(0x163)},{'name':a1_0x4f5c3e(0x162),'description':a1_0x4f5c3e(0x173)}],'queryParams':[],'bodySchema':a1_0x4f5c3e(0x19e),'responseHighlights':['result\x20rows\x20contain\x20aggregate\x20aliases',a1_0x4f5c3e(0x13f)],'examples':[a1_0x4f5c3e(0x194)],'notes':[a1_0x4f5c3e(0x144),a1_0x4f5c3e(0x180)],'markdown':[a1_0x4f5c3e(0x174),'',a1_0x4f5c3e(0x13c)][a1_0x4f5c3e(0x142)]('\x0a')},{'code':'dataset_data_get_one','category':a1_0x4f5c3e(0x12d),'title':a1_0x4f5c3e(0x16b),'method':a1_0x4f5c3e(0x151),'path':a1_0x4f5c3e(0x14b),'summary':a1_0x4f5c3e(0x15c),'whenToUse':a1_0x4f5c3e(0x160),'pathParams':[{'name':a1_0x4f5c3e(0x15f),'description':'Current\x20app\x20code'},{'name':a1_0x4f5c3e(0x162),'description':a1_0x4f5c3e(0x173)}],'queryParams':[],'bodySchema':a1_0x4f5c3e(0x132),'responseHighlights':[a1_0x4f5c3e(0x197)],'examples':[a1_0x4f5c3e(0x18c)],'notes':['Prefer\x20`filter`\x20when\x20the\x20record\x20id\x20is\x20unknown.'],'markdown':a1_0x4f5c3e(0x16c)},{'code':a1_0x4f5c3e(0x13d),'category':a1_0x4f5c3e(0x12d),'title':'Create\x20dataset\x20record','method':'POST','path':a1_0x4f5c3e(0x187),'summary':a1_0x4f5c3e(0x169),'whenToUse':'需要向指定数据集新增一条业务数据时使用','pathParams':[{'name':a1_0x4f5c3e(0x15f),'description':a1_0x4f5c3e(0x163)},{'name':a1_0x4f5c3e(0x162),'description':a1_0x4f5c3e(0x173)}],'queryParams':[],'bodySchema':'{\x22fieldName\x22:\x22value\x22}','responseHighlights':[a1_0x4f5c3e(0x155)],'examples':['lovrabet\x20data\x20create\x20--code\x20<datasetCode>\x20--params\x20\x27{\x22name\x22:\x22demo\x22}\x27'],'notes':[a1_0x4f5c3e(0x1a3)],'markdown':a1_0x4f5c3e(0x16f)},{'code':a1_0x4f5c3e(0x13e),'category':'bf','title':'Get\x20BF\x20endpoint\x20function\x20contract','method':a1_0x4f5c3e(0x14f),'path':'/client/bff/endpoint/{appCode}/{functionName}','summary':a1_0x4f5c3e(0x135),'whenToUse':'已经从用户、平台\x20UI\x20或前序上下文确认函数名,需要查看该\x20ENDPOINT\x20的运行态元信息时使用','pathParams':[{'name':a1_0x4f5c3e(0x15f),'description':'Current\x20app\x20code'},{'name':a1_0x4f5c3e(0x192),'description':a1_0x4f5c3e(0x196)}],'queryParams':[],'bodySchema':a1_0x4f5c3e(0x147),'responseHighlights':[a1_0x4f5c3e(0x154)],'examples':[a1_0x4f5c3e(0x1a5)],'notes':[a1_0x4f5c3e(0x150)],'markdown':a1_0x4f5c3e(0x13b)},{'code':a1_0x4f5c3e(0x1a0),'category':'bf','title':a1_0x4f5c3e(0x193),'method':'POST','path':a1_0x4f5c3e(0x17a),'summary':a1_0x4f5c3e(0x178),'whenToUse':a1_0x4f5c3e(0x133),'pathParams':[{'name':'appCode','description':'Current\x20app\x20code'},{'name':a1_0x4f5c3e(0x192),'description':a1_0x4f5c3e(0x181)}],'queryParams':[],'bodySchema':a1_0x4f5c3e(0x170),'responseHighlights':[a1_0x4f5c3e(0x139)],'examples':['lovrabet\x20bff\x20exec\x20--name\x20<functionName>\x20--params\x20\x27{}\x27'],'notes':[a1_0x4f5c3e(0x168)],'markdown':'##\x20Execute\x20BF\x20endpoint\x20function\x0a\x0aExecute\x20a\x20known\x20endpoint\x20script.'},{'code':'custom_sql_execute','category':a1_0x4f5c3e(0x146),'title':'Execute\x20custom\x20SQL','method':'POST','path':'/api/custom/executeSql','summary':a1_0x4f5c3e(0x164),'whenToUse':a1_0x4f5c3e(0x136),'pathParams':[],'queryParams':[],'bodySchema':a1_0x4f5c3e(0x1a4),'responseHighlights':[a1_0x4f5c3e(0x153)],'examples':[a1_0x4f5c3e(0x143)],'notes':[a1_0x4f5c3e(0x199)],'markdown':a1_0x4f5c3e(0x149)}];function entrySummary(_0x4dd127){const _0x46ddb7=a1_0x4f5c3e;return{'code':_0x4dd127[_0x46ddb7(0x1a2)],'category':_0x4dd127['category'],'method':_0x4dd127[_0x46ddb7(0x17e)],'path':_0x4dd127[_0x46ddb7(0x19a)],'summary':_0x4dd127['summary'],'whenToUse':_0x4dd127[_0x46ddb7(0x17c)]};}function a1_0x2d14(_0x30ed68,_0xf0093d){_0x30ed68=_0x30ed68-0x12d;const _0x299dfb=a1_0x299d();let _0x2d1481=_0x299dfb[_0x30ed68];return _0x2d1481;}export function listApiDocEntries(_0x4d39ec={}){const _0x4404c2=a1_0x4f5c3e,_0x8dbffc=String(_0x4d39ec['category']||'')[_0x4404c2(0x195)](),_0x1d381a=String(_0x4d39ec[_0x4404c2(0x167)]||'')[_0x4404c2(0x195)]()[_0x4404c2(0x172)]();return DOCS[_0x4404c2(0x19f)](_0x4fbf45=>{const _0x3c83b8=_0x4404c2;if(_0x8dbffc&&_0x4fbf45[_0x3c83b8(0x16a)]!==_0x8dbffc)return![];if(!_0x1d381a)return!![];return[_0x4fbf45[_0x3c83b8(0x1a2)],_0x4fbf45[_0x3c83b8(0x16a)],_0x4fbf45[_0x3c83b8(0x17e)],_0x4fbf45[_0x3c83b8(0x19a)],_0x4fbf45[_0x3c83b8(0x19b)],_0x4fbf45['whenToUse'],_0x4fbf45[_0x3c83b8(0x140)]][_0x3c83b8(0x142)]('\x20')[_0x3c83b8(0x172)]()['includes'](_0x1d381a);})[_0x4404c2(0x186)](entrySummary);}export function getApiDocDetail(_0xbb4e24){const _0x5f0a29=a1_0x4f5c3e,_0x5d59e5=DOCS[_0x5f0a29(0x182)](_0x2bbdda=>_0x2bbdda['code']===_0xbb4e24);if(!_0x5d59e5)throw CliErrors[_0x5f0a29(0x165)](_0x5f0a29(0x16e)+_0xbb4e24);return{..._0x5d59e5};}function a1_0x299d(){const _0x12481c=['lovrabet\x20sql\x20exec\x20--sqlcode\x20<sqlCode>\x20--params\x20\x27{}\x27','Use\x20`having`\x20only\x20for\x20post-aggregation\x20filters.','detail','custom_sql','None','1215238eQnqdH','##\x20Execute\x20custom\x20SQL\x0a\x0aExecute\x20a\x20configured\x20SQL\x20script\x20by\x20sqlCode.','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','/api/{appCode}/{datasetCode}/getOne','获取数据集详情','tableData\x20contains\x20dataset\x20id/code/name','read','GET','This\x20is\x20an\x20exact\x20lookup\x20by\x20appCode\x20+\x20functionName.\x20The\x20CLI\x20does\x20not\x20enumerate\x20BFF\x20functions\x20or\x20expose\x20platform-only\x20fields.','POST','str','Returns\x20SQL\x20execution\x20payload','CLI\x20returns\x20appCode/functionName/description/version/gmtModified','Returns\x20the\x20created\x20record\x20or\x20backend\x20operation\x20result','api-doc','701808NhJcgd','For\x20the\x20next\x20page,\x20keep\x20where/select/orderBy/pageSize\x20unchanged\x20and\x20increment\x20only\x20currentPage,\x20which\x20starts\x20at\x201.','dataset_list','Use\x20`where`,\x20`select`,\x20`orderBy`,\x20`currentPage`,\x20and\x20`pageSize`\x20to\x20inspect\x20live\x20data\x20shape.','Search\x20docs\x20by\x20code,\x20summary,\x20path,\x20or\x20usage\x20text','查询单条数据','/api/{appCode}/{datasetCode}/filter','where,\x20select,\x20orderBy,\x20currentPage,\x20and\x20pageSize\x20belong\x20inside\x20one\x20--params\x20JSON\x20object;\x20they\x20are\x20not\x20standalone\x20CLI\x20flags.','appCode','已经知道记录\x20id,需要按数据集读取单条业务数据时使用','If\x20SDK\x20usage\x20is\x20needed,\x20follow\x20with\x20`lovrabet\x20dataset\x20sdk-doc\x20--code\x20<datasetCode>`.','datasetCode','Current\x20app\x20code','执行自定义\x20SQL','validation','6MugVSx','keyword','Script\x20behavior\x20may\x20have\x20side\x20effects;\x20inspect\x20detail\x20first.','创建数据','category','Get\x20one\x20dataset\x20record','##\x20Get\x20one\x20dataset\x20record\x0a\x0aRead\x20one\x20record\x20by\x20id.','18jASeeb','API\x20doc\x20code\x20not\x20found:\x20','##\x20Create\x20dataset\x20record\x0a\x0aCreate\x20one\x20data\x20record\x20in\x20a\x20dataset.','{\x22param\x22:\x22value\x22}','1943335opRdGk','toLowerCase','32-character\x20dataset\x20code','##\x20Aggregate\x20dataset\x20data','length','Show\x20runtime\x20API\x20documentation\x20by\x20code','953449LDJcRp','执行指定\x20BF\x20函数','404734IOJrBW','/api/endpoint/{appCode}/{functionName}','24106257lodnhj','whenToUse','##\x20Filter\x20dataset\x20data','method','lovrabet\x20dataset\x20detail\x20--code\x20<datasetCode>\x20--appcode\x20<appCode>','`field`\x20is\x20accepted\x20as\x20a\x20deprecated\x20alias\x20for\x20`column`;\x20new\x20calls\x20should\x20use\x20`column`.','Endpoint\x20function\x20name','find','list','CLI\x20users\x20should\x20prefer\x20`lovrabet\x20dataset\x20list`\x20for\x20this\x20workflow.','lovrabet\x20dataset\x20list\x20--appcode\x20<appCode>\x20--format\x20compress','map','/api/{appCode}/{datasetCode}/create','{\x22where\x22:{},\x22currentPage\x22:1,\x22pageSize\x22:20}','Verify\x20tableData\x20and\x20paging\x20before\x20treating\x20the\x20response\x20as\x20a\x20business\x20fact.','relations\x20contains\x20the\x20object-shaped\x20API\x20relations\x20value\x20when\x20returned','/api/{appCode}/{datasetCode}/aggregate','lovrabet\x20data\x20getOne\x20--code\x20<datasetCode>\x20--params\x20\x27{\x22id\x22:123}\x27','dataset_data_filter','Aggregate\x20dataset\x20data','paging.totalCount\x20gives\x20total\x20rows','Filter\x20docs\x20by\x20category,\x20for\x20example\x20dataset','/api/dataset/get-dataset-list-by-app-code','functionName','Execute\x20BF\x20endpoint\x20function','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','trim','Exact\x20endpoint\x20function\x20name','Returns\x20one\x20matching\x20business\x20record','/api/dataset/getOneByCode?code={datasetCode}','Use\x20`lovrabet\x20sql\x20detail`\x20before\x20execution.','path','summary','2506536blBYgJ','Use\x20this\x20API\x20or\x20`lovrabet\x20dataset\x20list`\x20to\x20discover\x20available\x20dataset\x20codes\x20before\x20reading\x20data.','{\x22aggregate\x22:[{\x22column\x22:\x20\x22id\x22,\x22type\x22:\x22COUNT\x22,\x22alias\x22:\x22cnt\x22}],\x22groupBy\x22:[]}','filter','bf_execute','operations\x20describes\x20runtime\x20APIs','code','This\x20is\x20a\x20write\x20operation;\x20use\x20dry-run\x20when\x20available\x20and\x20safe\x20fixtures\x20for\x20smoke\x20tests.','{\x22appCode\x22:\x22app-aa63b188\x22,\x22sqlCode\x22:\x22xxxxxxxx-xxxxxxxx\x22,\x22params\x22:{}}','lovrabet\x20bff\x20detail\x20--name\x20<functionName>','dataset','fields/properties\x20describe\x20data\x20shape','API\x20doc\x20code,\x20for\x20example\x20dataset_list','Filter\x20dataset\x20data','string','{\x22id\x22:123}','已经确认目标\x20BF\x20的\x20functionName,且需要实际调用该\x20ENDPOINT\x20函数完成业务操作时使用','需要按\x20appCode\x20分页获取运行态数据集列表,并优先收敛可用\x20datasetCode\x20时使用','按应用和函数名精确获取\x20BF\x20运行契约','已经确认目标\x20sqlCode\x20存在,并需要实际执行该自定义\x20SQL\x20时使用','List\x20available\x20runtime\x20API\x20documentation\x20entries','需要携带\x20where、orderBy、分页等条件读取业务数据时使用','Returns\x20script\x20business\x20payload','Inspect\x20field\x20names,\x20relations,\x20and\x20operation\x20metadata\x20for\x20a\x20known\x20dataset\x20code.','##\x20Get\x20BF\x20endpoint\x20function\x20contract\x0a\x0aInspect\x20one\x20known\x20endpoint\x20function\x20through\x20the\x20AK-authenticated\x20exact\x20detail\x20API.','Aggregate\x20supports\x20COUNT,\x20SUM,\x20AVG,\x20MAX,\x20and\x20MIN\x20definitions\x20in\x20the\x20`aggregate`\x20array.','dataset_data_create','bf_detail','where\x20filters\x20before\x20aggregation','title','需要按\x20groupBy\x20分组并做\x20count、sum、avg、max、min\x20等聚合统计时使用','join'];a1_0x299d=function(){return _0x12481c;};return a1_0x299d();}const apiDocList={'service':a1_0x4f5c3e(0x156),'command':a1_0x4f5c3e(0x183),'description':a1_0x4f5c3e(0x137),'risk':a1_0x4f5c3e(0x14e),'requiresAppCode':![],'flags':[CATEGORY_FLAG,KEYWORD_FLAG],async 'execute'(_0x44aaff){const _0xec1bf2=a1_0x4f5c3e,_0x17c003=listApiDocEntries({'category':_0x44aaff[_0xec1bf2(0x152)](_0xec1bf2(0x16a)),'keyword':_0x44aaff[_0xec1bf2(0x152)](_0xec1bf2(0x167))});return{'ok':!![],'data':{'total':_0x17c003[_0xec1bf2(0x175)],'items':_0x17c003}};}},apiDocDetail={'service':a1_0x4f5c3e(0x156),'command':a1_0x4f5c3e(0x145),'description':a1_0x4f5c3e(0x176),'risk':a1_0x4f5c3e(0x14e),'requiresAppCode':![],'flags':[DOC_CODE_FLAG],async 'execute'(_0x2a3e64){const _0x55367d=a1_0x4f5c3e;return{'ok':!![],'data':getApiDocDetail(_0x2a3e64[_0x55367d(0x152)](_0x55367d(0x1a2)))};}};export const apiDocDefinitions=[apiDocList,apiDocDetail];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x5a0bb7,_0x5c3ec9){const _0x435a36=a2_0x2097,_0x55b6fa=_0x5a0bb7();while(!![]){try{const _0x5b576d=parseInt(_0x435a36(0x85))/0x1+parseInt(_0x435a36(0x83))/0x2+parseInt(_0x435a36(0x90))/0x3+-parseInt(_0x435a36(0x82))/0x4+-parseInt(_0x435a36(0x81))/0x5+parseInt(_0x435a36(0x93))/0x6+parseInt(_0x435a36(0x96))/0x7;if(_0x5b576d===_0x5c3ec9)break;else _0x55b6fa['push'](_0x55b6fa['shift']());}catch(_0x1d13a4){_0x55b6fa['push'](_0x55b6fa['shift']());}}}(a2_0x5b4a,0x96c33));import{createHash}from'node:crypto';function a2_0x5b4a(){const _0x71d417=['slice','1721888fNlXVf','update','stringify','ak_','code','5648025JnPmFL','3238696tcHQrT','617600PprMIC','homeDirName','622518DIJniR','EXDEV','isArray','parse','appCode','digest','trim','my-apps.json','items','appName','EACCES','2447025OUcAtr','utf8','find','3382950EJkNzl','cache'];a2_0x5b4a=function(){return _0x71d417;};return a2_0x5b4a();}function a2_0x2097(_0x1db79d,_0x1f6402){_0x1db79d=_0x1db79d-0x7e;const _0x5b4a44=a2_0x5b4a();let _0x209700=_0x5b4a44[_0x1db79d];return _0x209700;}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';import{isRuntimeAccessibleApp}from'../../commands/app/eligibility.js';export function fingerprintAccessKey(_0xd9453d){const _0x2e56e2=a2_0x2097,_0xa1032=_0xd9453d[_0x2e56e2(0x8b)](),_0x3f35ad=_0xa1032['slice'](-0x6)||'unknown',_0x45cb4a=createHash('sha256')[_0x2e56e2(0x97)](_0xa1032)[_0x2e56e2(0x8a)]('hex')[_0x2e56e2(0x95)](0x0,0xc);return _0x2e56e2(0x7f)+_0x3f35ad+'_'+_0x45cb4a;}export function getAppCacheFilePath(_0x3e0792,_0x5d5ab3){const _0x58eea8=a2_0x2097;return resolve(homedir(),PRODUCT_CONFIG[_0x58eea8(0x84)],_0x58eea8(0x94),_0x3e0792,fingerprintAccessKey(_0x5d5ab3),_0x58eea8(0x8c));}export function readCachedAppList(_0x3da85d,_0x41da60){const _0x4059fb=a2_0x2097;if(!_0x41da60?.[_0x4059fb(0x8b)]())return null;const _0x4a694e=getAppCacheFilePath(_0x3da85d,_0x41da60);if(!existsSync(_0x4a694e))return null;try{const _0x2b25cd=readFileSync(_0x4a694e,_0x4059fb(0x91));if(!_0x2b25cd[_0x4059fb(0x8b)]())return null;const _0x177d59=JSON[_0x4059fb(0x88)](_0x2b25cd);if(!Array[_0x4059fb(0x87)](_0x177d59['items']))return null;return _0x177d59;}catch{return null;}}export function writeCachedAppList(_0x557e38,_0x18ff37,_0x227f57){const _0x25fb36=a2_0x2097,_0x2a48e0=getAppCacheFilePath(_0x557e38,_0x18ff37),_0x453329=dirname(_0x2a48e0);!existsSync(_0x453329)&&mkdirSync(_0x453329,{'recursive':!![]});const _0xd909a1=_0x2a48e0+'.tmp';try{writeFileSync(_0xd909a1,JSON['stringify'](_0x227f57,null,0x2)+'\x0a',{'encoding':'utf8','mode':0x180});try{renameSync(_0xd909a1,_0x2a48e0);}catch(_0x56c07f){if(_0x56c07f[_0x25fb36(0x80)]==='EPERM'||_0x56c07f[_0x25fb36(0x80)]===_0x25fb36(0x86)||_0x56c07f[_0x25fb36(0x80)]===_0x25fb36(0x8f)){writeFileSync(_0x2a48e0,JSON[_0x25fb36(0x7e)](_0x227f57,null,0x2)+'\x0a',{'encoding':_0x25fb36(0x91)});try{unlinkSync(_0xd909a1);}catch{}}else throw _0x56c07f;}}catch(_0x172f6f){try{unlinkSync(_0xd909a1);}catch{}throw _0x172f6f;}return _0x2a48e0;}export function resolveCachedAppCode(_0x43b37c,_0x306858,_0x5d60ab){const _0xa45ab0=a2_0x2097;if(!_0x43b37c)return undefined;const _0x3df943=readCachedAppList(_0x306858,_0x5d60ab),_0x3e34ab=_0x3df943?.[_0xa45ab0(0x8d)][_0xa45ab0(0x92)](_0x19fb8d=>_0x19fb8d[_0xa45ab0(0x8e)]===_0x43b37c&&isRuntimeAccessibleApp(_0x19fb8d));return _0x3e34ab?.[_0xa45ab0(0x89)]?.[_0xa45ab0(0x8b)]()||undefined;}
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @fileoverview `app` subcommand definitions —
|
|
2
|
+
* @fileoverview `app` subcommand definitions — list, pull, import.
|
|
3
3
|
*
|
|
4
4
|
* Why a flat array of command objects: Lovrabet Runtime CLI uses the declarative
|
|
5
5
|
* `CommandDefinition[]` registry pattern (not a switch-based handler). Each command
|
|
6
6
|
* is a self-contained `CommandDefinition` that the framework runner dispatches.
|
|
7
7
|
*
|
|
8
8
|
* Commands:
|
|
9
|
-
* - init: initialize a `.lovrabet.json` config file for the current scope
|
|
10
9
|
* - list/pull: discover remote apps (cached) — read operations
|
|
11
|
-
* - use: set fallback app candidate — write operation
|
|
12
10
|
* - import: migrate from `.rabetbase.json` — write operation
|
|
13
11
|
*
|
|
14
12
|
* Why there is no `app add` / `app remove`: the runtime CLI does not manage
|
|
@@ -16,11 +14,9 @@
|
|
|
16
14
|
* truth for platform apps, while `.lovrabet.json` may define local aliases under
|
|
17
15
|
* `apps.<alias>.appcode` for operator-friendly names.
|
|
18
16
|
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* -
|
|
22
|
-
* - no flag + in project → write to project (takes precedence over global on merge)
|
|
23
|
-
* - no flag + outside project → write to global
|
|
17
|
+
* Workspace binding is intentionally owned by `workspace init/use`, not this
|
|
18
|
+
* service. Keeping one owner prevents duplicate command semantics in help and
|
|
19
|
+
* machine-readable schema output.
|
|
24
20
|
*/
|
|
25
21
|
import type { CommandDefinition } from "../../framework/types.js";
|
|
26
22
|
export declare const appDefinitions: CommandDefinition[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const a3_0x226d48=a3_0x3a81;function a3_0x54b4(){const _0x32af87=['cachePath','将读取指定的\x20.rabetbase.json,并把其中可用的默认应用设置导入本地\x20.lovrabet.json;同名配置可能被更新。','no-cache','../../context.js','entries','\x20app(s)\x20for\x20env=\x22','.appcode\x20to\x20.lovrabet.json.','boolean','fetchedAt','items','../../commands/app/remote-source.js','appPublishStatus','defaultApp','trim','mergedCli','join','list','appCode','\x20cached\x20app(s)\x20for\x20env=\x22','1411056QFkjqq','7629TQnojS','Usage:\x20','已废弃:请使用\x20workspace\x20init\x20为当前目录绑定应用','11922904jqFflK','Remote\x20app\x20name\x20to\x20activate','use','No\x20apps\x20found\x20on\x20the\x20platform.','i18nInfo','596WYNQqE','map','include-unpublished','read','args','local','Default\x20app\x20candidate\x20set\x20to\x20\x22','warn','\x20app\x20use\x20<name>\x20[--global]','name','Loaded\x20','230PfXdfw','\x20app\x20list`\x20to\x20discover\x20remote\x20apps,\x20or\x20add\x20apps.','remote','6669170mzinOo','Refreshed\x20app\x20cache\x20with\x20','find','`\x20instead.','appcode','已废弃:请使用\x20workspace\x20use\x20为当前目录绑定应用','raw','isArray','从\x20.rabetbase.json\x20文件导入默认应用选择','global','cache','Use\x20`','production','\x20workspace\x20init\x20--appcode\x20<code>\x20[--env\x20daily]','isCurrent','filter','List\x20apps\x20available\x20to\x20the\x20current\x20access\x20key','3784640OTWTPi','354266kuieCX','Read\x20from\x20local\x20cache\x20only','validation','Include\x20unpublished\x20apps\x20for\x20diagnostics','str','\x20is\x20deprecated.\x20Use\x20`','accessKey','enableI18n','6XKXgpA','bool','write','Target\x20environment\x20(default:\x20current\x20env)','Missing\x20app\x20name.','appName','将从平台读取当前账号可用的应用列表,并覆盖对应环境的本地应用缓存;不会修改平台应用。','159873zHCOqh','app','9wdOrZI','Read\x20app\x20list\x20from\x20local\x20cache\x20only','string','push','envName','source','从平台刷新本地应用缓存','config','init','Filter\x20by\x20environment\x20(default:\x20current\x20env)','Force\x20remote\x20fetch\x20and\x20refresh\x20local\x20cache','nonInteractive','globalPath','type','projectPath','Use\x20global\x20config\x20scope','length','env'];a3_0x54b4=function(){return _0x32af87;};return a3_0x54b4();}(function(_0x5240d8,_0x6e0d2e){const _0x1db93d=a3_0x3a81,_0x4e9b26=_0x5240d8();while(!![]){try{const _0x3d552e=-parseInt(_0x1db93d(0x140))/0x1+-parseInt(_0x1db93d(0x149))/0x2*(-parseInt(_0x1db93d(0x141))/0x3)+parseInt(_0x1db93d(0x168))/0x4+-parseInt(_0x1db93d(0x157))/0x5*(-parseInt(_0x1db93d(0x171))/0x6)+parseInt(_0x1db93d(0x178))/0x7+-parseInt(_0x1db93d(0x144))/0x8*(parseInt(_0x1db93d(0x17a))/0x9)+-parseInt(_0x1db93d(0x154))/0xa*(-parseInt(_0x1db93d(0x169))/0xb);if(_0x3d552e===_0x6e0d2e)break;else _0x4e9b26['push'](_0x4e9b26['shift']());}catch(_0x4d5fd6){_0x4e9b26['push'](_0x4e9b26['shift']());}}}(a3_0x54b4,0xdbb7e));import{CliErrors}from'../../errors.js';import{initCreateFlagDefs,initImportFlagDefs,runInit,runInitImport}from'../../commands/init.js';import{getEnv,RUNTIME_ENV_VALUES}from'../../constant/env.js';function a3_0x3a81(_0x52d6c1,_0xa8d899){_0x52d6c1=_0x52d6c1-0x127;const _0x54b49c=a3_0x54b4();let _0x3a81f2=_0x54b49c[_0x52d6c1];return _0x3a81f2;}import{buildAppProfileListFields}from'../../config/schema.js';import{CLI_BIN_NAME,readConfig,writeConfig,scopeLabel,enrichAppListItemsWithMergedSelection}from'../../commands/app/shared.js';import{resolveConfigScope,toScopeFlags}from'../../commands/common/config-policy.js';import{filterRuntimeAccessibleApps,findAppByCode,isRuntimeAccessibleApp,runtimeInaccessibleAppError}from'../../commands/app/eligibility.js';const GLOBAL_FLAG={'name':a3_0x226d48(0x160),'type':a3_0x226d48(0x134),'description':a3_0x226d48(0x12a),'default':![]};function collectFlags(_0xb037ee,_0x1721f2){const _0x1ddef1=a3_0x226d48,_0x4d8242={};for(const _0x392170 of _0x1721f2){const _0x1ecc74=_0x392170[_0x1ddef1(0x128)]==='boolean'?_0xb037ee[_0x1ddef1(0x172)](_0x392170[_0x1ddef1(0x152)]):_0xb037ee[_0x1ddef1(0x16d)](_0x392170[_0x1ddef1(0x152)]);if(_0x1ecc74!==''&&_0x1ecc74!==![])_0x4d8242[_0x392170[_0x1ddef1(0x152)]]=_0x1ecc74;}if(_0xb037ee[_0x1ddef1(0x185)])_0x4d8242[_0x1ddef1(0x185)]=!![];return _0x4d8242;}function normalizeLanguages(_0xc3a1ac){const _0x3c90d4=a3_0x226d48;if(!Array[_0x3c90d4(0x15e)](_0xc3a1ac))return[];return _0xc3a1ac[_0x3c90d4(0x166)](_0x31e807=>typeof _0x31e807===_0x3c90d4(0x17c))['map'](_0x30cb1f=>_0x30cb1f[_0x3c90d4(0x13a)]())['filter'](Boolean);}function buildRemoteAppI18nFields(_0x42f510){const _0x1a0fa1=a3_0x226d48,_0x4da83d=normalizeLanguages(_0x42f510['i18nInfo']?.['langs']);return{'enableI18n':typeof _0x42f510[_0x1a0fa1(0x170)]==='boolean'?_0x42f510['enableI18n']:null,'languages':_0x4da83d,'i18nInfo':_0x42f510[_0x1a0fa1(0x148)]?{..._0x42f510[_0x1a0fa1(0x148)],'langs':_0x4da83d['length']?_0x4da83d:null}:null};}const initDef={'service':a3_0x226d48(0x179),'command':a3_0x226d48(0x182),'description':a3_0x226d48(0x143),'risk':'write','confirmationDescription':'将通过已废弃的\x20app\x20init\x20流程写入本地\x20Lovrabet\x20应用配置;建议改用\x20workspace\x20init。','requiresAuth':![],'requiresAppCode':![],'hasFormat':![],'flags':initCreateFlagDefs,async 'execute'(_0x58db0f){const _0x216e36=a3_0x226d48;return warnDeprecatedAppCommand(_0x216e36(0x182),CLI_BIN_NAME+_0x216e36(0x164)),await runInit(collectFlags(_0x58db0f,initCreateFlagDefs)),{'ok':!![]};}},listDef={'service':a3_0x226d48(0x179),'command':a3_0x226d48(0x13d),'description':a3_0x226d48(0x167),'risk':a3_0x226d48(0x14c),'requiresAuth':!![],'requiresAppCode':![],'hasFormat':!![],'flags':[{'name':a3_0x226d48(0x12c),'type':a3_0x226d48(0x17c),'description':a3_0x226d48(0x183),'enum':[...RUNTIME_ENV_VALUES]},{'name':'local','type':a3_0x226d48(0x134),'description':a3_0x226d48(0x17b),'default':![]},{'name':a3_0x226d48(0x12f),'type':a3_0x226d48(0x134),'description':a3_0x226d48(0x184),'default':![]},{'name':a3_0x226d48(0x14b),'type':a3_0x226d48(0x134),'description':a3_0x226d48(0x16c),'default':![]}],async 'execute'(_0x5b3eed){const _0x1054c7=a3_0x226d48,_0x48f7af=_0x5b3eed[_0x1054c7(0x16d)]('env')||_0x5b3eed[_0x1054c7(0x17e)]||getEnv()||_0x1054c7(0x163),_0x5ee87c=_0x5b3eed[_0x1054c7(0x172)]('local'),_0x4c40cc=_0x5b3eed[_0x1054c7(0x172)]('no-cache'),_0x274f5f=_0x5b3eed[_0x1054c7(0x172)](_0x1054c7(0x14b)),{readRawConfigWithLayers:_0x33eb30,resolveDefaultAppSource:_0x18758c,getLocalAppAliases:_0x556ce5}=await import('../../context.js'),{getRemoteAppList:_0x5b1dd6}=await import('../../commands/app/remote-source.js'),{config:_0x938ae9,layers:_0x38c27d}=_0x33eb30(),_0xb52130=_0x18758c(_0x38c27d),{defaultApp:_0x3f9f40}=_0x938ae9,_0x114c1b=await _0x5b1dd6({'env':_0x48f7af,'accessKey':_0x5b3eed[_0x1054c7(0x16f)],'localOnly':_0x5ee87c,'noCache':_0x4c40cc}),_0x33c0e9=_0x274f5f?_0x114c1b[_0x1054c7(0x136)]:filterRuntimeAccessibleApps(_0x114c1b[_0x1054c7(0x136)]),_0x2a88f7=_0x114c1b[_0x1054c7(0x136)][_0x1054c7(0x12b)]-_0x33c0e9['length'],_0xc452db=_0x33c0e9[_0x1054c7(0x14a)](_0x95c9f5=>{const _0x27fb2d=_0x1054c7;return{'name':_0x95c9f5['appName'],'appcode':_0x95c9f5[_0x27fb2d(0x13e)],'named':!![],'definedIn':_0x27fb2d(0x156),'isDefault':_0x95c9f5[_0x27fb2d(0x176)]===_0x3f9f40,...buildAppProfileListFields(_0x48f7af),...buildRemoteAppI18nFields(_0x95c9f5),'source':_0x114c1b[_0x27fb2d(0x17f)],'owner':_0x95c9f5['appOwnerName']??null,'status':_0x95c9f5[_0x27fb2d(0x138)]??null,'cachedAt':_0x114c1b[_0x27fb2d(0x135)]};}),_0x4abf43=_0x556ce5(_0x938ae9);let _0x472397=0x0;for(const [_0x26e31e,_0x22ed8c]of Object[_0x1054c7(0x131)](_0x4abf43)){const _0xdae826=typeof _0x22ed8c[_0x1054c7(0x15b)]===_0x1054c7(0x17c)?_0x22ed8c[_0x1054c7(0x15b)][_0x1054c7(0x13a)]():'';if(!_0xdae826)continue;const _0x59ba25=findAppByCode(_0x114c1b[_0x1054c7(0x136)],_0xdae826);if(!_0x274f5f&&_0x59ba25&&!isRuntimeAccessibleApp(_0x59ba25))continue;_0x472397+=0x1,_0xc452db[_0x1054c7(0x17d)]({'name':_0x26e31e,'appcode':_0xdae826,'named':!![],'definedIn':_0x1054c7(0x14e),'isDefault':_0x26e31e===_0x3f9f40,...buildAppProfileListFields(_0x48f7af),'source':_0x1054c7(0x181),'owner':null,'status':null,'cachedAt':null});}enrichAppListItemsWithMergedSelection(_0xc452db,_0x5b3eed[_0x1054c7(0x13b)]);const _0x25bb7b=_0xc452db[_0x1054c7(0x159)](_0x85762b=>_0x85762b[_0x1054c7(0x165)]===!![]),_0x3c4215=_0x3f9f40??_0x25bb7b?.['name']??null,_0x364338={'env':_0x48f7af,'source':_0x114c1b[_0x1054c7(0x17f)],'fetchedAt':_0x114c1b[_0x1054c7(0x135)],'cachePath':_0x114c1b[_0x1054c7(0x12d)],'globalPath':_0x38c27d[_0x1054c7(0x127)]??null,'projectPath':_0x38c27d[_0x1054c7(0x129)]??null,'defaultApp':_0x3c4215,'defaultAppSource':_0x3f9f40!=null?_0xb52130:null,'localAliasCount':_0x472397,'remoteTotal':_0x114c1b[_0x1054c7(0x136)][_0x1054c7(0x12b)],'hiddenUnpublishedCount':_0x2a88f7,'includeUnpublished':_0x274f5f};if(_0xc452db[_0x1054c7(0x12b)]===0x0)return{'ok':!![],'data':{'items':_0xc452db,'meta':_0x364338},'message':_0x114c1b[_0x1054c7(0x17f)]===_0x1054c7(0x161)?'No\x20cached\x20apps\x20found.':_0x1054c7(0x147)};return{'ok':!![],'data':{'items':_0xc452db,'meta':_0x364338}};}},pullDef={'service':a3_0x226d48(0x179),'command':'pull','description':a3_0x226d48(0x180),'risk':'write','confirmationDescription':a3_0x226d48(0x177),'requiresAuth':!![],'requiresAppCode':![],'hasFormat':![],'flags':[{'name':a3_0x226d48(0x12c),'type':'string','description':a3_0x226d48(0x174),'enum':[...RUNTIME_ENV_VALUES]},{'name':a3_0x226d48(0x14e),'type':a3_0x226d48(0x134),'description':a3_0x226d48(0x16a),'default':![]},{'name':a3_0x226d48(0x12f),'type':a3_0x226d48(0x134),'description':a3_0x226d48(0x184),'default':![]}],async 'execute'(_0x276908){const _0x51ab42=a3_0x226d48,_0xeeeae6=_0x276908[_0x51ab42(0x16d)](_0x51ab42(0x12c))||_0x276908[_0x51ab42(0x17e)]||getEnv()||_0x51ab42(0x163),_0x197b0a=_0x276908['bool']('local'),_0x12f726=_0x276908['bool'](_0x51ab42(0x12f)),{getRemoteAppList:_0x39b89d}=await import(_0x51ab42(0x137)),_0x13dca9=await _0x39b89d({'env':_0xeeeae6,'accessKey':_0x276908['accessKey'],'localOnly':_0x197b0a,'noCache':_0x12f726});return{'ok':!![],'data':{'total':_0x13dca9['items'][_0x51ab42(0x12b)],'env':_0xeeeae6,'source':_0x13dca9[_0x51ab42(0x17f)],'fetchedAt':_0x13dca9['fetchedAt'],'cachePath':_0x13dca9['cachePath']},'message':_0x13dca9['source']===_0x51ab42(0x161)?_0x51ab42(0x153)+_0x13dca9[_0x51ab42(0x136)][_0x51ab42(0x12b)]+_0x51ab42(0x13f)+_0xeeeae6+'\x22.':_0x51ab42(0x158)+_0x13dca9[_0x51ab42(0x136)][_0x51ab42(0x12b)]+_0x51ab42(0x132)+_0xeeeae6+'\x22.'};}},useDef={'service':a3_0x226d48(0x179),'command':'use','description':a3_0x226d48(0x15c),'risk':a3_0x226d48(0x173),'confirmationDescription':'将通过已废弃的\x20app\x20use\x20流程更新本地默认应用;建议改用\x20workspace\x20use。','requiresAuth':![],'requiresAppCode':![],'hasFormat':![],'args':[{'name':a3_0x226d48(0x152),'description':a3_0x226d48(0x145),'required':!![]}],'flags':[GLOBAL_FLAG],async 'validate'(_0x2a34b8){const _0x50bf6b=a3_0x226d48;if(!_0x2a34b8['args'][0x0])throw CliErrors[_0x50bf6b(0x16b)]('Missing\x20app\x20name.',_0x50bf6b(0x142)+CLI_BIN_NAME+_0x50bf6b(0x151));},async 'execute'(_0x2d4e86){const _0x1d7967=a3_0x226d48;warnDeprecatedAppCommand(_0x1d7967(0x146),CLI_BIN_NAME+'\x20workspace\x20use\x20--app\x20<name>\x20[--env\x20daily]');const _0x2d6b2b=_0x2d4e86[_0x1d7967(0x14d)][0x0];if(!_0x2d6b2b)throw CliErrors[_0x1d7967(0x16b)](_0x1d7967(0x175),_0x1d7967(0x142)+CLI_BIN_NAME+'\x20app\x20use\x20<name>\x20[--global]');const {buildConfigFromFlags:_0x1cf62c,resolveLocalAppAliasCode:_0x2cdeb7}=await import('../../context.js'),{readCachedAppList:_0x5ccecf}=await import('../../commands/app/cache.js'),_0x473ead=_0x2d4e86[_0x1d7967(0x16d)](_0x1d7967(0x12c)),_0x437684=_0x1cf62c(_0x473ead?{'env':_0x473ead}:{}),_0x156143=_0x5ccecf(_0x437684['env'],_0x437684[_0x1d7967(0x16f)]),_0x4af1c0=_0x156143?.[_0x1d7967(0x136)][_0x1d7967(0x159)](_0x4167e4=>_0x4167e4[_0x1d7967(0x176)]===_0x2d6b2b),_0x4f99ff=_0x2cdeb7(_0x437684[_0x1d7967(0x15d)]??{},_0x2d6b2b);if(_0x4af1c0&&!isRuntimeAccessibleApp(_0x4af1c0))throw runtimeInaccessibleAppError(_0x4af1c0,'\x22'+_0x2d6b2b+'\x22');if(_0x4f99ff){const _0xc3ba1b=_0x156143?.[_0x1d7967(0x136)][_0x1d7967(0x159)](_0x17ed8b=>_0x17ed8b[_0x1d7967(0x13e)]?.[_0x1d7967(0x13a)]()===_0x4f99ff);if(_0xc3ba1b&&!isRuntimeAccessibleApp(_0xc3ba1b))throw runtimeInaccessibleAppError(_0xc3ba1b,'\x22'+_0x2d6b2b+'\x22');}if(!_0x4af1c0&&!_0x4f99ff&&_0x437684['defaultApp']!==_0x2d6b2b){const _0x47c164=[..._0x156143?.['items'][_0x1d7967(0x14a)](_0x55288e=>_0x55288e[_0x1d7967(0x176)])??[]],_0x414d6b=_0x47c164['length']===0x0?_0x1d7967(0x162)+CLI_BIN_NAME+_0x1d7967(0x155)+_0x2d6b2b+_0x1d7967(0x133):'Available\x20remote\x20apps:\x20'+Array['from'](new Set(_0x47c164))[_0x1d7967(0x13c)](',\x20')+'.\x20Local\x20aliases\x20can\x20be\x20added\x20under\x20apps.<alias>.appcode.';throw CliErrors[_0x1d7967(0x16b)]('App\x20\x22'+_0x2d6b2b+'\x22\x20not\x20found.',_0x414d6b);}const _0x53e826=_0x2d4e86[_0x1d7967(0x172)](_0x1d7967(0x160));let _0xd026b4;if(_0x53e826)_0xd026b4={'global':!![]};else{const {isInProject:_0x2a6c27}=await import(_0x1d7967(0x130)),_0x444cbd=_0x2a6c27();_0xd026b4=toScopeFlags(resolveConfigScope({'explicitGlobal':![],'policy':'project-default','inProject':_0x444cbd}));}const _0x29cb84=readConfig(_0xd026b4);return _0x29cb84[_0x1d7967(0x139)]=_0x2d6b2b,writeConfig(_0x29cb84,_0xd026b4),{'ok':!![],'message':_0x1d7967(0x14f)+_0x2d6b2b+'\x22'+scopeLabel(_0xd026b4)+'.'};}};function warnDeprecatedAppCommand(_0x72ffab,_0x25ce04){const _0x35a891=a3_0x226d48;console[_0x35a891(0x150)](CLI_BIN_NAME+'\x20app\x20'+_0x72ffab+_0x35a891(0x16e)+_0x25ce04+_0x35a891(0x15a));}const importDef={'service':'app','command':'import','description':a3_0x226d48(0x15f),'risk':'write','confirmationDescription':a3_0x226d48(0x12e),'requiresAuth':![],'requiresAppCode':![],'hasFormat':![],'flags':initImportFlagDefs,async 'execute'(_0x37927c){return await runInitImport(collectFlags(_0x37927c,initImportFlagDefs)),{'ok':!![]};}};export const appDefinitions=[initDef,listDef,pullDef,useDef,importDef];
|
|
1
|
+
const a3_0x1a0695=a3_0x4791;function a3_0x5ebb(){const _0x2e18fc=['i18nInfo','appCode','type','4708576ISzVCe','appPublishStatus','Loaded\x20','将读取指定的\x20.rabetbase.json,并把其中可用的默认应用设置导入本地\x20.lovrabet.json;同名配置可能被更新。','pull','string','production','env','\x20cached\x20app(s)\x20for\x20env=\x22','accessKey','appName','Force\x20remote\x20fetch\x20and\x20refresh\x20local\x20cache','include-unpublished','Read\x20from\x20local\x20cache\x20only','isCurrent','entries','name','1RrTqnR','No\x20apps\x20found\x20on\x20the\x20platform.','../../commands/app/remote-source.js','从\x20.rabetbase.json\x20文件导入默认应用选择','no-cache','从平台刷新本地应用缓存','appOwnerName','mergedCli','nonInteractive','cache','filter','9fXBvZF','No\x20cached\x20apps\x20found.','map','cachePath','boolean','app','List\x20apps\x20available\x20to\x20the\x20current\x20access\x20key','Refreshed\x20app\x20cache\x20with\x20','Include\x20unpublished\x20apps\x20for\x20diagnostics','1421976DkHyJE','94255zuOsRe','source','5934380gvwGYC','envName','bool','300mAFYok','find','items','length','将从平台读取当前账号可用的应用列表,并覆盖对应环境的本地应用缓存;不会修改平台应用。','\x20app(s)\x20for\x20env=\x22','local','trim','write','isArray','120670KVHdrX','projectPath','2893220iLxePm','969486fHHgfb','globalPath','appcode','../../context.js','read','1590QNenVk','list','str'];a3_0x5ebb=function(){return _0x2e18fc;};return a3_0x5ebb();}(function(_0x208fca,_0x5e3941){const _0x37fc3f=a3_0x4791,_0x2468bd=_0x208fca();while(!![]){try{const _0x23770b=-parseInt(_0x37fc3f(0x11b))/0x1*(parseInt(_0x37fc3f(0xfe))/0x2)+-parseInt(_0x37fc3f(0xff))/0x3+-parseInt(_0x37fc3f(0xec))/0x4+parseInt(_0x37fc3f(0xef))/0x5+-parseInt(_0x37fc3f(0xf2))/0x6*(-parseInt(_0x37fc3f(0xed))/0x7)+-parseInt(_0x37fc3f(0x10a))/0x8*(parseInt(_0x37fc3f(0xe3))/0x9)+parseInt(_0x37fc3f(0x104))/0xa*(parseInt(_0x37fc3f(0xfc))/0xb);if(_0x23770b===_0x5e3941)break;else _0x2468bd['push'](_0x2468bd['shift']());}catch(_0xe842d5){_0x2468bd['push'](_0x2468bd['shift']());}}}(a3_0x5ebb,0xd9696));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 a3_0x4791(_0xe96dad,_0x6a2f78){_0xe96dad=_0xe96dad-0xe2;const _0x5ebb56=a3_0x5ebb();let _0x479131=_0x5ebb56[_0xe96dad];return _0x479131;}function collectFlags(_0x3cb502,_0x197980){const _0x38158b=a3_0x4791,_0xb0259f={};for(const _0x20f347 of _0x197980){const _0x4e2f71=_0x20f347[_0x38158b(0x109)]===_0x38158b(0xe7)?_0x3cb502[_0x38158b(0xf1)](_0x20f347['name']):_0x3cb502['str'](_0x20f347['name']);if(_0x4e2f71!==''&&_0x4e2f71!==![])_0xb0259f[_0x20f347['name']]=_0x4e2f71;}if(_0x3cb502[_0x38158b(0x123)])_0xb0259f[_0x38158b(0x123)]=!![];return _0xb0259f;}function normalizeLanguages(_0x34cd52){const _0x10ad43=a3_0x4791;if(!Array[_0x10ad43(0xfb)](_0x34cd52))return[];return _0x34cd52[_0x10ad43(0xe2)](_0x104e33=>typeof _0x104e33===_0x10ad43(0x10f))[_0x10ad43(0xe5)](_0xb89172=>_0xb89172[_0x10ad43(0xf9)]())[_0x10ad43(0xe2)](Boolean);}function buildRemoteAppI18nFields(_0x308161){const _0x541ae0=a3_0x4791,_0x248092=normalizeLanguages(_0x308161[_0x541ae0(0x107)]?.['langs']);return{'enableI18n':typeof _0x308161['enableI18n']===_0x541ae0(0xe7)?_0x308161['enableI18n']:null,'languages':_0x248092,'i18nInfo':_0x308161[_0x541ae0(0x107)]?{..._0x308161[_0x541ae0(0x107)],'langs':_0x248092[_0x541ae0(0xf5)]?_0x248092:null}:null};}const listDef={'service':a3_0x1a0695(0xe8),'command':a3_0x1a0695(0x105),'description':a3_0x1a0695(0xe9),'risk':a3_0x1a0695(0x103),'requiresAuth':!![],'requiresAppCode':![],'hasFormat':!![],'flags':[{'name':a3_0x1a0695(0x111),'type':'string','description':'Filter\x20by\x20environment\x20(default:\x20current\x20env)','enum':[...RUNTIME_ENV_VALUES]},{'name':a3_0x1a0695(0xf8),'type':a3_0x1a0695(0xe7),'description':'Read\x20app\x20list\x20from\x20local\x20cache\x20only','default':![]},{'name':a3_0x1a0695(0x11f),'type':a3_0x1a0695(0xe7),'description':a3_0x1a0695(0x115),'default':![]},{'name':a3_0x1a0695(0x116),'type':'boolean','description':a3_0x1a0695(0xeb),'default':![]}],async 'execute'(_0x10a39d){const _0xa8866b=a3_0x1a0695,_0x394a01=_0x10a39d[_0xa8866b(0x106)](_0xa8866b(0x111))||_0x10a39d[_0xa8866b(0xf0)]||getEnv()||_0xa8866b(0x110),_0x51bee1=_0x10a39d[_0xa8866b(0xf1)](_0xa8866b(0xf8)),_0x248a4f=_0x10a39d[_0xa8866b(0xf1)]('no-cache'),_0x11396b=_0x10a39d[_0xa8866b(0xf1)](_0xa8866b(0x116)),{readRawConfigWithLayers:_0x75351d,resolveDefaultAppSource:_0x1ffdea,getLocalAppAliases:_0x42f959}=await import(_0xa8866b(0x102)),{getRemoteAppList:_0x78ec39}=await import(_0xa8866b(0x11d)),{config:_0x30fba6,layers:_0x58c395}=_0x75351d(),_0x8fefca=_0x1ffdea(_0x58c395),{defaultApp:_0x13f07c}=_0x30fba6,_0x3fa1ca=await _0x78ec39({'env':_0x394a01,'accessKey':_0x10a39d[_0xa8866b(0x113)],'localOnly':_0x51bee1,'noCache':_0x248a4f}),_0x146c2a=_0x11396b?_0x3fa1ca['items']:filterRuntimeAccessibleApps(_0x3fa1ca[_0xa8866b(0xf4)]),_0x59009f=_0x3fa1ca[_0xa8866b(0xf4)][_0xa8866b(0xf5)]-_0x146c2a[_0xa8866b(0xf5)],_0x2bcf84=_0x146c2a['map'](_0x4a98ae=>{const _0x193d74=_0xa8866b;return{'name':_0x4a98ae[_0x193d74(0x114)],'appcode':_0x4a98ae[_0x193d74(0x108)],'named':!![],'definedIn':'remote','isDefault':_0x4a98ae['appName']===_0x13f07c,...buildAppProfileListFields(_0x394a01),...buildRemoteAppI18nFields(_0x4a98ae),'source':_0x3fa1ca['source'],'owner':_0x4a98ae[_0x193d74(0x121)]??null,'status':_0x4a98ae[_0x193d74(0x10b)]??null,'cachedAt':_0x3fa1ca['fetchedAt']};}),_0x59e219=_0x42f959(_0x30fba6);let _0x68b438=0x0;for(const [_0x2ff06d,_0x1f6d6f]of Object[_0xa8866b(0x119)](_0x59e219)){const _0x55eb7e=typeof _0x1f6d6f[_0xa8866b(0x101)]===_0xa8866b(0x10f)?_0x1f6d6f[_0xa8866b(0x101)][_0xa8866b(0xf9)]():'';if(!_0x55eb7e)continue;const _0x3ee9f8=findAppByCode(_0x3fa1ca[_0xa8866b(0xf4)],_0x55eb7e);if(!_0x11396b&&_0x3ee9f8&&!isRuntimeAccessibleApp(_0x3ee9f8))continue;_0x68b438+=0x1,_0x2bcf84['push']({'name':_0x2ff06d,'appcode':_0x55eb7e,'named':!![],'definedIn':'local','isDefault':_0x2ff06d===_0x13f07c,...buildAppProfileListFields(_0x394a01),'source':'config','owner':null,'status':null,'cachedAt':null});}enrichAppListItemsWithMergedSelection(_0x2bcf84,_0x10a39d[_0xa8866b(0x122)]);const _0xf44ac6=_0x2bcf84[_0xa8866b(0xf3)](_0x30194e=>_0x30194e[_0xa8866b(0x118)]===!![]),_0x3cf5c5=_0x13f07c??_0xf44ac6?.[_0xa8866b(0x11a)]??null,_0x4a2b63={'env':_0x394a01,'source':_0x3fa1ca[_0xa8866b(0xee)],'fetchedAt':_0x3fa1ca['fetchedAt'],'cachePath':_0x3fa1ca[_0xa8866b(0xe6)],'globalPath':_0x58c395[_0xa8866b(0x100)]??null,'projectPath':_0x58c395[_0xa8866b(0xfd)]??null,'defaultApp':_0x3cf5c5,'defaultAppSource':_0x13f07c!=null?_0x8fefca:null,'localAliasCount':_0x68b438,'remoteTotal':_0x3fa1ca[_0xa8866b(0xf4)][_0xa8866b(0xf5)],'hiddenUnpublishedCount':_0x59009f,'includeUnpublished':_0x11396b};if(_0x2bcf84[_0xa8866b(0xf5)]===0x0)return{'ok':!![],'data':{'items':_0x2bcf84,'meta':_0x4a2b63},'message':_0x3fa1ca[_0xa8866b(0xee)]===_0xa8866b(0x124)?_0xa8866b(0xe4):_0xa8866b(0x11c)};return{'ok':!![],'data':{'items':_0x2bcf84,'meta':_0x4a2b63}};}},pullDef={'service':a3_0x1a0695(0xe8),'command':a3_0x1a0695(0x10e),'description':a3_0x1a0695(0x120),'risk':a3_0x1a0695(0xfa),'confirmationDescription':a3_0x1a0695(0xf6),'requiresAuth':!![],'requiresAppCode':![],'hasFormat':![],'flags':[{'name':a3_0x1a0695(0x111),'type':a3_0x1a0695(0x10f),'description':'Target\x20environment\x20(default:\x20current\x20env)','enum':[...RUNTIME_ENV_VALUES]},{'name':'local','type':a3_0x1a0695(0xe7),'description':a3_0x1a0695(0x117),'default':![]},{'name':a3_0x1a0695(0x11f),'type':'boolean','description':'Force\x20remote\x20fetch\x20and\x20refresh\x20local\x20cache','default':![]}],async 'execute'(_0x5b0bf6){const _0x4ce5b5=a3_0x1a0695,_0x5d8135=_0x5b0bf6['str'](_0x4ce5b5(0x111))||_0x5b0bf6[_0x4ce5b5(0xf0)]||getEnv()||_0x4ce5b5(0x110),_0x3f6f72=_0x5b0bf6[_0x4ce5b5(0xf1)](_0x4ce5b5(0xf8)),_0x4fc776=_0x5b0bf6[_0x4ce5b5(0xf1)](_0x4ce5b5(0x11f)),{getRemoteAppList:_0x362a6d}=await import(_0x4ce5b5(0x11d)),_0x248e22=await _0x362a6d({'env':_0x5d8135,'accessKey':_0x5b0bf6[_0x4ce5b5(0x113)],'localOnly':_0x3f6f72,'noCache':_0x4fc776});return{'ok':!![],'data':{'total':_0x248e22['items'][_0x4ce5b5(0xf5)],'env':_0x5d8135,'source':_0x248e22[_0x4ce5b5(0xee)],'fetchedAt':_0x248e22['fetchedAt'],'cachePath':_0x248e22[_0x4ce5b5(0xe6)]},'message':_0x248e22['source']==='cache'?_0x4ce5b5(0x10c)+_0x248e22[_0x4ce5b5(0xf4)][_0x4ce5b5(0xf5)]+_0x4ce5b5(0x112)+_0x5d8135+'\x22.':_0x4ce5b5(0xea)+_0x248e22[_0x4ce5b5(0xf4)]['length']+_0x4ce5b5(0xf7)+_0x5d8135+'\x22.'};}},importDef={'service':a3_0x1a0695(0xe8),'command':'import','description':a3_0x1a0695(0x11e),'risk':a3_0x1a0695(0xfa),'confirmationDescription':a3_0x1a0695(0x10d),'requiresAuth':![],'requiresAppCode':![],'hasFormat':![],'flags':appImportFlagDefs,async 'execute'(_0xcb6c34){return await runAppImport(collectFlags(_0xcb6c34,appImportFlagDefs)),{'ok':!![]};}};export const appDefinitions=[listDef,pullDef,importDef];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x14ed63,_0x1390ef){const _0x2dd8bc=a4_0x2aa3,_0x2023ac=_0x14ed63();while(!![]){try{const _0x4cebdd=-parseInt(_0x2dd8bc(0x11d))/0x1*(-parseInt(_0x2dd8bc(0x12a))/0x2)+parseInt(_0x2dd8bc(0x12e))/0x3*(parseInt(_0x2dd8bc(0x12b))/0x4)+-parseInt(_0x2dd8bc(0x129))/0x5*(-parseInt(_0x2dd8bc(0x12c))/0x6)+parseInt(_0x2dd8bc(0x124))/0x7+parseInt(_0x2dd8bc(0x125))/0x8+parseInt(_0x2dd8bc(0x122))/0x9+-parseInt(_0x2dd8bc(0x11f))/0xa;if(_0x4cebdd===_0x1390ef)break;else _0x2023ac['push'](_0x2023ac['shift']());}catch(_0x5f1ae8){_0x2023ac['push'](_0x2023ac['shift']());}}}(a4_0x58ae,0xa85b3));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(_0x3e2d4a){const _0x2f9d47=a4_0x2aa3;if(typeof _0x3e2d4a!==_0x2f9d47(0x12d))return null;const _0x593f9c=_0x3e2d4a[_0x2f9d47(0x128)]();return _0x593f9c?_0x593f9c[_0x2f9d47(0x123)]():null;}export function isRuntimeAccessibleApp(_0x300072){return normalizeAppPublishStatus(_0x300072['appPublishStatus'])===RUNTIME_ACCESSIBLE_APP_STATUS;}function a4_0x58ae(){const _0x2c7bb5=['toUpperCase','6080368SVAQtg','6596648rlgMYj','appName','\x20is\x20not\x20available\x20for\x20runtime\x20AI\x20access.','trim','75VoAEsm','1510294SzVpeo','1336GODjBc','300114ZJBWwJ','string','7563oJYbLt','Current\x20status:\x20','validation','appCode','1DQcijs','appPublishStatus','34871110qbFIvv','find','\x20dataset/data/sql/bff\x20commands,\x20or\x20choose\x20a\x20published\x20app.','1224423Muusaq'];a4_0x58ae=function(){return _0x2c7bb5;};return a4_0x58ae();}function a4_0x2aa3(_0x1ccfeb,_0x8b167f){_0x1ccfeb=_0x1ccfeb-0x11a;const _0x58aef7=a4_0x58ae();let _0x2aa39c=_0x58aef7[_0x1ccfeb];return _0x2aa39c;}export function filterRuntimeAccessibleApps(_0x2f0348){return _0x2f0348['filter'](isRuntimeAccessibleApp);}export function findAppByName(_0x560be9,_0x236fa6){const _0x981aa7=a4_0x2aa3;return _0x560be9[_0x981aa7(0x120)](_0x4780b2=>_0x4780b2[_0x981aa7(0x126)]===_0x236fa6);}export function findAppByCode(_0x233669,_0x3c01d2){const _0x5966ef=a4_0x2aa3,_0x33c552=_0x3c01d2[_0x5966ef(0x128)]();if(!_0x33c552)return undefined;return _0x233669['find'](_0x58754c=>_0x58754c[_0x5966ef(0x11c)]?.[_0x5966ef(0x128)]()===_0x33c552);}export function runtimeInaccessibleAppError(_0x485518,_0x5f33a0){const _0x4cd1fd=a4_0x2aa3,_0x27af0e=normalizeAppPublishStatus(_0x485518[_0x4cd1fd(0x11e)])??'UNKNOWN';return CliErrors[_0x4cd1fd(0x11b)]('App\x20'+_0x5f33a0+_0x4cd1fd(0x127),_0x4cd1fd(0x11a)+_0x27af0e+'.\x20Publish\x20the\x20app\x20before\x20using\x20'+CLI_BIN_NAME+_0x4cd1fd(0x121));}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x129f37,_0x4072ce){const _0x3044de=a5_0x1d5e,_0x587d25=_0x129f37();while(!![]){try{const _0x1084ab=-parseInt(_0x3044de(0x1cb))/0x1+parseInt(_0x3044de(0x1c8))/0x2+-parseInt(_0x3044de(0x1bc))/0x3*(-parseInt(_0x3044de(0x1c5))/0x4)+parseInt(_0x3044de(0x1bb))/0x5*(-parseInt(_0x3044de(0x1c0))/0x6)+parseInt(_0x3044de(0x1c4))/0x7+-parseInt(_0x3044de(0x1be))/0x8*(-parseInt(_0x3044de(0x1ca))/0x9)+-parseInt(_0x3044de(0x1c7))/0xa*(parseInt(_0x3044de(0x1c3))/0xb);if(_0x1084ab===_0x4072ce)break;else _0x587d25['push'](_0x587d25['shift']());}catch(_0x1dfce9){_0x587d25['push'](_0x587d25['shift']());}}}(a5_0x1481,0xef32f));import{fileURLToPath}from'url';import{dirname,join}from'path';import{readFileSync}from'fs';function a5_0x1481(){const _0x575b3a=['data','tableData','386804RJSZSm','9185092kpmiiC','27444YTtTwh','utf-8','250CoJIzC','2508890vDHXpK','Mock\x20API\x20error:\x20','3591syRfsY','1322600stxASL','errorMsg','5qfvzPJ','51jCjEYQ','../../../mock/app-list.json','27920IawupH','parse','5365734vjWhXs'];a5_0x1481=function(){return _0x575b3a;};return a5_0x1481();}const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename);function loadMockAppList(){const _0x394b7f=a5_0x1d5e,_0x5a6fe1=join(__dirname,_0x394b7f(0x1bd)),_0x1ba247=readFileSync(_0x5a6fe1,_0x394b7f(0x1c6));return JSON[_0x394b7f(0x1bf)](_0x1ba247);}let _cached=null;function a5_0x1d5e(_0x17ab27,_0x42e467){_0x17ab27=_0x17ab27-0x1bb;const _0x14812c=a5_0x1481();let _0x1d5eb7=_0x14812c[_0x17ab27];return _0x1d5eb7;}export function getMockAppList(){return!_cached&&(_cached=loadMockAppList()),_cached;}export function getMockRemoteAppItems(){const _0x210889=a5_0x1d5e,_0x2d6469=getMockAppList();if(!_0x2d6469['success'])throw new Error(_0x210889(0x1c9)+_0x2d6469[_0x210889(0x1cc)]+'\x20('+_0x2d6469['errorCode']+')');return _0x2d6469[_0x210889(0x1c1)][_0x210889(0x1c2)];}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x25f957,_0x13c3ba){const _0x3b08a3=a6_0x12c2,_0x25ced0=_0x25f957();while(!![]){try{const _0xe53cde=-parseInt(_0x3b08a3(0x93))/0x1+-parseInt(_0x3b08a3(0x95))/0x2+parseInt(_0x3b08a3(0x97))/0x3+-parseInt(_0x3b08a3(0x9a))/0x4+parseInt(_0x3b08a3(0x98))/0x5+parseInt(_0x3b08a3(0x92))/0x6*(parseInt(_0x3b08a3(0x9b))/0x7)+-parseInt(_0x3b08a3(0x9e))/0x8*(parseInt(_0x3b08a3(0x91))/0x9);if(_0xe53cde===_0x13c3ba)break;else _0x25ced0['push'](_0x25ced0['shift']());}catch(_0x363f2f){_0x25ced0['push'](_0x25ced0['shift']());}}}(a6_0x2f7f,0x3c4da));import{getMyApps}from'../../core/api-client.js';function a6_0x2f7f(){const _0x85a3de=['555496FyjczN','7007mqRfTm','fetchedAt','trim','1007824bRNyfU','9RTDoMM','1362MejQyW','255717VAaziD','cache','308376DNePjQ','items','1289457pPKUbt','1323565gckzXY','mock'];a6_0x2f7f=function(){return _0x85a3de;};return a6_0x2f7f();}import{getMockRemoteAppItems}from'../../commands/app/mock-loader.js';import{getAppCacheFilePath,readCachedAppList,writeCachedAppList}from'../../commands/app/cache.js';import{productEnv}from'../../constant/product.js';function a6_0x12c2(_0x320125,_0x45c310){_0x320125=_0x320125-0x91;const _0x2f7fbb=a6_0x2f7f();let _0x12c26c=_0x2f7fbb[_0x320125];return _0x12c26c;}export function shouldUseMockRemoteApps(){const _0x22eefa=a6_0x12c2,_0x49a3bb=(productEnv('APP_LIST_SOURCE')||'')[_0x22eefa(0x9d)]()['toLowerCase']();return _0x49a3bb==='mock';}export async function getRemoteAppItems(){if(shouldUseMockRemoteApps())return getMockRemoteAppItems();return getMyApps();}export async function getRemoteAppList(_0x35edee){const _0x5d83f3=a6_0x12c2,{env:_0xfed2f0,accessKey:_0x514a10,localOnly:localOnly=![],noCache:noCache=![]}=_0x35edee,_0x3a5e41=readCachedAppList(_0xfed2f0,_0x514a10),_0x2e4396=_0x514a10?.[_0x5d83f3(0x9d)]()?getAppCacheFilePath(_0xfed2f0,_0x514a10):null;if(localOnly)return{'items':_0x3a5e41?.[_0x5d83f3(0x96)]??[],'source':_0x5d83f3(0x94),'fetchedAt':_0x3a5e41?.[_0x5d83f3(0x9c)]??null,'cachePath':_0x2e4396};try{const _0x26117b=await getRemoteAppItems(),_0x3f3ddf=shouldUseMockRemoteApps()?_0x5d83f3(0x99):'remote',_0x5f13d2=new Date()['toISOString'](),_0x205d1d=_0x514a10?.[_0x5d83f3(0x9d)]()?writeCachedAppList(_0xfed2f0,_0x514a10,{'env':_0xfed2f0,'fetchedAt':_0x5f13d2,'source':_0x3f3ddf,'items':_0x26117b}):null;return{'items':_0x26117b,'source':_0x3f3ddf,'fetchedAt':_0x5f13d2,'cachePath':_0x205d1d};}catch(_0x1f8444){if(!noCache&&_0x3a5e41)return{'items':_0x3a5e41[_0x5d83f3(0x96)],'source':_0x5d83f3(0x94),'fetchedAt':_0x3a5e41[_0x5d83f3(0x9c)],'cachePath':_0x2e4396};throw _0x1f8444;}}
|
|
@@ -1,18 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @fileoverview
|
|
3
|
-
*
|
|
4
|
-
* Why this module exists: several `app/` commands need the same helpers
|
|
5
|
-
* (`readConfig`, `writeConfig`, `scopeLabel`, `enrichAppListItemsWithMergedSelection`).
|
|
6
|
-
* Rather than each command importing from `context.ts` directly (which creates
|
|
7
|
-
* coupling to the global env module), this module provides a stable re-export surface.
|
|
2
|
+
* @fileoverview Shared projection helper for `app list`.
|
|
8
3
|
*
|
|
9
4
|
* Design decision: `enrichAppListItemsWithMergedSelection` is placed here rather
|
|
10
5
|
* than in `cache.ts` because it operates on the merged CLI snapshot from the
|
|
11
6
|
* pipeline, not on the raw cache. This keeps cache.ts focused on cache I/O only.
|
|
12
7
|
*/
|
|
13
|
-
import { CLI_BIN_NAME } from "../../constant/cli.js";
|
|
14
8
|
import type { MergedCliSnapshot } from "../../framework/types.js";
|
|
15
|
-
export { CLI_BIN_NAME };
|
|
16
9
|
/**
|
|
17
10
|
* Marks which app in the list is "current" based on the merged CLI snapshot.
|
|
18
11
|
*
|
|
@@ -28,11 +21,3 @@ export { CLI_BIN_NAME };
|
|
|
28
21
|
* @param merged - Merged CLI snapshot from the pipeline context
|
|
29
22
|
*/
|
|
30
23
|
export declare function enrichAppListItemsWithMergedSelection(items: Record<string, unknown>[], merged: MergedCliSnapshot | undefined): void;
|
|
31
|
-
export { readScopedConfig as readConfig, writeScopedConfig as writeConfig, isInProject } from "../../context.js";
|
|
32
|
-
/**
|
|
33
|
-
* Formats a human-readable scope label for console output.
|
|
34
|
-
*
|
|
35
|
-
* @param flags - Must contain a `global` boolean key
|
|
36
|
-
* @returns Human label like " [global]" or "" (empty for project)
|
|
37
|
-
*/
|
|
38
|
-
export declare function scopeLabel(flags: Record<string, any>): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
function a7_0xbffc(_0x46abfc,_0x478be6){_0x46abfc=_0x46abfc-0x105;const _0x578baf=a7_0x578b();let _0xbffce4=_0x578baf[_0x46abfc];return _0xbffce4;}function a7_0x578b(){const _0x2e0786=['1983954gSZtGH','518445fMfCes','appCode','8nGDoKj','96zDJONi','named','1163390uuOdKW','2958898maGMcj','1057197Myoccs','isCurrent','357600diftiw','defaultApp','local','8785448qfMBaO','find','trim','appcode','name','currentApp','definedIn'];a7_0x578b=function(){return _0x2e0786;};return a7_0x578b();}(function(_0x33ced6,_0x19ab06){const _0x450808=a7_0xbffc,_0x430343=_0x33ced6();while(!![]){try{const _0x905770=parseInt(_0x450808(0x111))/0x1+parseInt(_0x450808(0x112))/0x2+-parseInt(_0x450808(0x113))/0x3*(-parseInt(_0x450808(0x10e))/0x4)+-parseInt(_0x450808(0x115))/0x5+-parseInt(_0x450808(0x10b))/0x6+-parseInt(_0x450808(0x118))/0x7+parseInt(_0x450808(0x10f))/0x8*(-parseInt(_0x450808(0x10c))/0x9);if(_0x905770===_0x19ab06)break;else _0x430343['push'](_0x430343['shift']());}catch(_0x17fb70){_0x430343['push'](_0x430343['shift']());}}}(a7_0x578b,0xf3ede));export function enrichAppListItemsWithMergedSelection(_0x5b174f,_0x33248b){const _0x3eae8d=a7_0xbffc;if(!_0x33248b)return;const _0x1e3e19=!!(_0x33248b[_0x3eae8d(0x109)]??_0x33248b['defaultApp']);for(const _0x19dd6f of _0x5b174f){_0x19dd6f[_0x3eae8d(0x114)]=![];}const _0x3f1c6b=_0x33248b[_0x3eae8d(0x10d)]!=null?String(_0x33248b[_0x3eae8d(0x10d)])[_0x3eae8d(0x106)]():'';if(_0x1e3e19){const _0x5e0161=_0x33248b[_0x3eae8d(0x109)]??_0x33248b[_0x3eae8d(0x116)];if(_0x5e0161){const _0x36ba81=_0x5b174f[_0x3eae8d(0x105)](_0x26ea92=>_0x26ea92[_0x3eae8d(0x110)]===!![]&&_0x26ea92[_0x3eae8d(0x108)]===_0x5e0161&&_0x26ea92[_0x3eae8d(0x10a)]===_0x3eae8d(0x117)),_0x2875f8=_0x36ba81??_0x5b174f[_0x3eae8d(0x105)](_0x26fdc8=>_0x26fdc8[_0x3eae8d(0x110)]===!![]&&_0x26fdc8[_0x3eae8d(0x108)]===_0x5e0161);if(_0x2875f8){const _0x1fc8d6=String(_0x2875f8[_0x3eae8d(0x107)]??'')[_0x3eae8d(0x106)]();if(!_0x3f1c6b||_0x1fc8d6===_0x3f1c6b){_0x2875f8[_0x3eae8d(0x114)]=!![];return;}}}if(_0x3f1c6b){const _0x215658=_0x5b174f['find'](_0x5e91ab=>String(_0x5e91ab[_0x3eae8d(0x107)]??'')['trim']()===_0x3f1c6b);_0x215658&&(_0x215658[_0x3eae8d(0x114)]=!![]);}return;}if(!_0x3f1c6b)return;for(const _0x5ab03f of _0x5b174f){String(_0x5ab03f[_0x3eae8d(0x107)]??'')['trim']()===_0x3f1c6b&&(_0x5ab03f[_0x3eae8d(0x114)]=!![]);}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a8_0x529b42=a8_0x46a3;function a8_0xdee3(){const _0x39b64c=['Check\x20that\x20the\x20key\x20exists,\x20the\x20current\x20AccessKey\x20has\x20permission,\x20and\x20the\x20runtime\x20app-config\x20endpoint\x20is\x20available.','get','App\x20config\x20key','app-config','2MguFOD','apiError','9xfuSWx','9378536CCGAlW','\x20app-config\x20get\x20<key>',',\x20appCode=','Get\x20one\x20runtime\x20app-config\x20value\x20by\x20key','5824907ZIlhlt','Usage:\x20','11928SlsXqP','validation','key','4047300yDLOrP','args','appCode','Unable\x20to\x20get\x20app-config\x20value:\x20key=','672443iLXhrh','Missing\x20app-config\x20key.','4314372OkKIyZ','1186977ORwxZA','80nfIQzd','2574vaiuao','trim'];a8_0xdee3=function(){return _0x39b64c;};return a8_0xdee3();}(function(_0x2c43f8,_0x3d8060){const _0x21feca=a8_0x46a3,_0x363036=_0x2c43f8();while(!![]){try{const _0x59a066=-parseInt(_0x21feca(0x168))/0x1*(-parseInt(_0x21feca(0x158))/0x2)+parseInt(_0x21feca(0x16b))/0x3+parseInt(_0x21feca(0x16a))/0x4+parseInt(_0x21feca(0x164))/0x5+-parseInt(_0x21feca(0x152))/0x6*(-parseInt(_0x21feca(0x161))/0x7)+-parseInt(_0x21feca(0x15b))/0x8*(-parseInt(_0x21feca(0x15a))/0x9)+-parseInt(_0x21feca(0x16c))/0xa*(parseInt(_0x21feca(0x15f))/0xb);if(_0x59a066===_0x3d8060)break;else _0x363036['push'](_0x363036['shift']());}catch(_0x5376b9){_0x363036['push'](_0x363036['shift']());}}}(a8_0xdee3,0x98258));import{getRuntimeAppConfigByKey}from'../../core/api-client.js';function a8_0x46a3(_0x3016a2,_0x1e8d13){_0x3016a2=_0x3016a2-0x152;const _0xdee3bf=a8_0xdee3();let _0x46a3ad=_0xdee3bf[_0x3016a2];return _0x46a3ad;}import{CliErrors}from'../../errors.js';import{CLI_BIN_NAME}from'../../constant/cli.js';export const appConfigGet={'service':a8_0x529b42(0x157),'command':a8_0x529b42(0x155),'description':a8_0x529b42(0x15e),'risk':'read','args':[{'name':a8_0x529b42(0x163),'description':a8_0x529b42(0x156),'required':!![]}],'flags':[],async 'execute'(_0x339295){const _0x4db866=a8_0x529b42,_0x18d174=_0x339295[_0x4db866(0x165)][0x0]?.[_0x4db866(0x153)]();if(!_0x18d174)throw CliErrors[_0x4db866(0x162)](_0x4db866(0x169),_0x4db866(0x160)+CLI_BIN_NAME+_0x4db866(0x15c));try{const _0x50c0da=await getRuntimeAppConfigByKey(_0x339295[_0x4db866(0x166)],_0x18d174);return{'ok':!![],'data':_0x50c0da};}catch{throw CliErrors[_0x4db866(0x159)](_0x4db866(0x167)+_0x18d174+_0x4db866(0x15d)+_0x339295['appCode'],_0x4db866(0x154));}}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
function a9_0x2611(_0x544282,_0x34136e){_0x544282=_0x544282-0x82;const _0x24dd94=a9_0x24dd();let _0x2611a9=_0x24dd94[_0x544282];return _0x2611a9;}(function(_0x3765c1,_0x28ae89){const _0x306afb=a9_0x2611,_0x212db0=_0x3765c1();while(!![]){try{const _0x5acda6=parseInt(_0x306afb(0x82))/0x1*(parseInt(_0x306afb(0x86))/0x2)+-parseInt(_0x306afb(0x89))/0x3+-parseInt(_0x306afb(0x8a))/0x4*(-parseInt(_0x306afb(0x83))/0x5)+-parseInt(_0x306afb(0x8d))/0x6*(parseInt(_0x306afb(0x8c))/0x7)+-parseInt(_0x306afb(0x84))/0x8+-parseInt(_0x306afb(0x87))/0x9*(parseInt(_0x306afb(0x88))/0xa)+-parseInt(_0x306afb(0x85))/0xb*(-parseInt(_0x306afb(0x8b))/0xc);if(_0x5acda6===_0x28ae89)break;else _0x212db0['push'](_0x212db0['shift']());}catch(_0x487a8f){_0x212db0['push'](_0x212db0['shift']());}}}(a9_0x24dd,0x872d3));import{appConfigGet}from'../../commands/app-config/get.js';export const appConfigDefinitions=[appConfigGet];function a9_0x24dd(){const _0x5920fb=['702873cbmajT','10dOyskT','1804527CvVfNa','219404ISvooP','12BJukPb','128023dMdhaU','30lxDpqQ','1XVndPV','50suTXcW','4165392xhDFNp','12830851CdkygK','260914vpoPwj'];a9_0x24dd=function(){return _0x5920fb;};return a9_0x24dd();}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const a10_0x5a66b8=a10_0x3e7d;(function(_0x77cdb9,_0x9a6339){const _0x520390=a10_0x3e7d,_0x510927=_0x77cdb9();while(!![]){try{const _0x4da1ee=-parseInt(_0x520390(0x1b0))/0x1*(-parseInt(_0x520390(0x1cb))/0x2)+-parseInt(_0x520390(0x1d1))/0x3*(parseInt(_0x520390(0x1b5))/0x4)+-parseInt(_0x520390(0x1f7))/0x5+parseInt(_0x520390(0x1ba))/0x6*(parseInt(_0x520390(0x1e6))/0x7)+-parseInt(_0x520390(0x1ad))/0x8*(-parseInt(_0x520390(0x1d6))/0x9)+-parseInt(_0x520390(0x1ea))/0xa+parseInt(_0x520390(0x1f2))/0xb*(parseInt(_0x520390(0x1e1))/0xc);if(_0x4da1ee===_0x9a6339)break;else _0x510927['push'](_0x510927['shift']());}catch(_0xd910f6){_0x510927['push'](_0x510927['shift']());}}}(a10_0x5d95,0xa9df7));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';function a10_0x5d95(){const _0x15f626=['artifactType','dayjs','createTime','compiledContent','1893834IkUOJW','read','Artifact\x20source\x20file\x20is\x20blank.','react_module\x20must\x20be\x20an\x20embeddable\x20React\x20module,\x20not\x20full\x20HTML\x20or\x20a\x20ReactDOM/createRoot\x20mount\x20entry.','List\x20current-app\x20react_module\x20Artifacts','add','appCode','File\x20path\x20is\x20required.','Artifact\x20ID','react-dom','update','3479772NYmhOM','some','保存新的\x20Artifact\x20源码并进行编译;成功后将在当前应用中新增可展示的内嵌模块。','object','metadata','777SKAuBc','join','Preview:\x20create\x20react_module\x20Artifact','AGENT','5011670oiTAWX','bool','utf8','deleted','name','artifact','Created\x20Artifact\x20','根据本地源码文件创建\x20react_module\x20类型的\x20Artifact','44gyTzRE','Preview:\x20update\x20react_module\x20Artifact\x20','lastIndex','flag','/update','3750375NABhqr','str','lodash','number','test','File\x20not\x20found:\x20','isFile','/client/artifact/','string','Updated\x20Artifact\x20','num','description','exec','Artifact\x20display\x20name','file','8MVgCKT','source','favorite','1265006OWrmPE','length','POST','antd','isArray','4uJWUia','Show\x20one\x20Artifact\x20by\x20id','create','body','react','14436zdXfIx','build','Optional\x20favorite-state\x20filter','includes','trim','根据本地源码文件更新\x20react_module\x20类型的\x20Artifact','split','@ant-design/icons','write','Invalid\x20JSON\x20for\x20--metadata:\x20','react_module','/client/artifact/create','validation','updateTime','react_module\x20imports\x20are\x20limited\x20to:\x20','Artifact\x20metadata\x20as\x20JSON\x20object;\x20compiledContent\x20is\x20stripped','data','2friUuF','保存新的\x20Artifact\x20源码并重新编译;应用中的内嵌模块展示和交互可能立即发生变化。','--metadata\x20must\x20be\x20a\x20JSON\x20object.','File\x20is\x20not\x20a\x20regular\x20file:\x20','startsWith','detail','2866143auUKwa'];a10_0x5d95=function(){return _0x15f626;};return a10_0x5d95();}import{dryRun}from'../../framework/dryrun.js';const ARTIFACT_TYPE_REACT_MODULE=a10_0x5a66b8(0x1c4),ARTIFACT_SOURCE_AGENT=a10_0x5a66b8(0x1e9),ALLOWED_REACT_MODULE_IMPORTS=[a10_0x5a66b8(0x1b9),a10_0x5a66b8(0x1df),a10_0x5a66b8(0x1f9),a10_0x5a66b8(0x1d3),a10_0x5a66b8(0x1b3),a10_0x5a66b8(0x1c1)];export const ALLOWED_REACT_MODULE_IMPORTS_TEXT=ALLOWED_REACT_MODULE_IMPORTS[a10_0x5a66b8(0x1e7)](',\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_0x5a66b8(0x1ac),'type':a10_0x5a66b8(0x1ff),'required':!![],'description':'Path\x20to\x20a\x20local\x20UTF-8\x20React\x20module\x20source\x20file'},ARTIFACT_NAME_FLAG={'name':a10_0x5a66b8(0x1ee),'type':a10_0x5a66b8(0x1ff),'description':a10_0x5a66b8(0x1ab)},METADATA_FLAG={'name':'metadata','type':'string','description':a10_0x5a66b8(0x1c9)};function isPlainObject(_0xb79c94){const _0x5f418e=a10_0x5a66b8;return typeof _0xb79c94===_0x5f418e(0x1e4)&&_0xb79c94!==null&&!Array[_0x5f418e(0x1b4)](_0xb79c94);}function readSourceFile(_0x18c3d8){const _0x4aae8=a10_0x5a66b8;if(!_0x18c3d8)throw CliErrors[_0x4aae8(0x1c6)](_0x4aae8(0x1dd));if(!existsSync(_0x18c3d8))throw CliErrors[_0x4aae8(0x1c6)](_0x4aae8(0x1fc)+_0x18c3d8);if(!statSync(_0x18c3d8)[_0x4aae8(0x1fd)]())throw CliErrors['validation'](_0x4aae8(0x1ce)+_0x18c3d8);const _0x111235=readFileSync(_0x18c3d8,_0x4aae8(0x1ec));return validateReactModuleSource(_0x111235),_0x111235;}function parseMetadata(_0x112a61){const _0x214515=a10_0x5a66b8;if(!_0x112a61)return undefined;let _0x4e3f6a;try{_0x4e3f6a=JSON['parse'](_0x112a61);}catch{throw CliErrors[_0x214515(0x1c6)](_0x214515(0x1c3)+_0x112a61);}if(!isPlainObject(_0x4e3f6a))throw CliErrors[_0x214515(0x1c6)](_0x214515(0x1cd));const _0x4d1afb={..._0x4e3f6a};return delete _0x4d1afb[_0x214515(0x1d5)],_0x4d1afb;}function getPackageName(_0x195211){const _0x430c22=a10_0x5a66b8;if(_0x195211[_0x430c22(0x1cf)]('@')){const [_0x45a5dc,_0x2b7f6c]=_0x195211[_0x430c22(0x1c0)]('/');return _0x45a5dc&&_0x2b7f6c?_0x45a5dc+'/'+_0x2b7f6c:_0x195211;}return _0x195211['split']('/')[0x0]||_0x195211;}function a10_0x3e7d(_0x53b076,_0x5bfa98){_0x53b076=_0x53b076-0x1a9;const _0x5d9567=a10_0x5d95();let _0x3e7d4a=_0x5d9567[_0x53b076];return _0x3e7d4a;}function validateAllowedImports(_0x3fc2d4){const _0x4dbc4b=a10_0x5a66b8,_0x3e5091=new Set();for(const _0x5c42ea of IMPORT_SOURCE_PATTERNS){_0x5c42ea[_0x4dbc4b(0x1f4)]=0x0;let _0x23f0f9;while((_0x23f0f9=_0x5c42ea[_0x4dbc4b(0x1aa)](_0x3fc2d4))!==null){const _0x153dd0=_0x23f0f9[0x1]?.['trim']();_0x153dd0&&_0x3e5091[_0x4dbc4b(0x1db)](_0x153dd0);}}const _0x2d2143=[..._0x3e5091]['map'](getPackageName)['filter'](_0x3ab3d3=>!ALLOWED_REACT_MODULE_IMPORTS[_0x4dbc4b(0x1bd)](_0x3ab3d3));if(_0x2d2143[_0x4dbc4b(0x1b1)]>0x0)throw CliErrors[_0x4dbc4b(0x1c6)](_0x4dbc4b(0x1c8)+ALLOWED_REACT_MODULE_IMPORTS_TEXT+'.\x20Unsupported:\x20'+[...new Set(_0x2d2143)][_0x4dbc4b(0x1e7)](',\x20'));}export function validateReactModuleSource(_0x37ee7f){const _0x5de1a1=a10_0x5a66b8;if(!_0x37ee7f[_0x5de1a1(0x1be)]())throw CliErrors[_0x5de1a1(0x1c6)](_0x5de1a1(0x1d8));if(PAGE_LEVEL_PATTERNS[_0x5de1a1(0x1e2)](_0x1bc1fe=>_0x1bc1fe[_0x5de1a1(0x1fb)](_0x37ee7f)))throw CliErrors[_0x5de1a1(0x1c6)](_0x5de1a1(0x1d9));validateAllowedImports(_0x37ee7f);}function buildArtifactInput(_0x5aac63){const _0x4eb212=a10_0x5a66b8,_0x85bee9=readSourceFile(_0x5aac63[_0x4eb212(0x1f8)](_0x4eb212(0x1ac))),_0x15639f=_0x5aac63['str']('name')[_0x4eb212(0x1be)](),_0x3df6d3=parseMetadata(_0x5aac63[_0x4eb212(0x1f8)](_0x4eb212(0x1e5)));return{'artifactType':ARTIFACT_TYPE_REACT_MODULE,..._0x15639f?{'name':_0x15639f}:{},'content':_0x85bee9,..._0x3df6d3?{'metadata':_0x3df6d3}:{},'source':ARTIFACT_SOURCE_AGENT};}function summarizeArtifact(_0x1465a2){const _0xa9cb68=a10_0x5a66b8;return{'id':_0x1465a2['id'],'name':_0x1465a2[_0xa9cb68(0x1ee)],'artifactType':_0x1465a2[_0xa9cb68(0x1d2)],'source':_0x1465a2[_0xa9cb68(0x1ae)],'favorite':_0x1465a2[_0xa9cb68(0x1af)],'deleted':_0x1465a2[_0xa9cb68(0x1ed)],'createTime':_0x1465a2[_0xa9cb68(0x1d4)],'updateTime':_0x1465a2['updateTime']};}function detailArtifact(_0x49c537){const _0x37a2f5=a10_0x5a66b8;return{'id':_0x49c537['id'],'appCode':_0x49c537[_0x37a2f5(0x1dc)],'name':_0x49c537[_0x37a2f5(0x1ee)],'artifactType':_0x49c537['artifactType'],'source':_0x49c537[_0x37a2f5(0x1ae)],'favorite':_0x49c537[_0x37a2f5(0x1af)],'deleted':_0x49c537[_0x37a2f5(0x1ed)],'content':_0x49c537['content']??'','compiledContent':_0x49c537['compiledContent'],'metadata':_0x49c537['metadata']??{},'createTime':_0x49c537['createTime'],'updateTime':_0x49c537[_0x37a2f5(0x1c7)]};}function readFavoriteFlag(_0x34084d){const _0x397e9e=a10_0x5a66b8,_0x5e4d7a=_0x34084d[_0x397e9e(0x1f5)]('favorite');return _0x5e4d7a===undefined||_0x5e4d7a===null||_0x5e4d7a===''?undefined:_0x34084d[_0x397e9e(0x1eb)](_0x397e9e(0x1af));}const artifactList={'service':a10_0x5a66b8(0x1ef),'command':'list','description':a10_0x5a66b8(0x1da),'risk':'read','flags':[{'name':a10_0x5a66b8(0x1ae),'type':a10_0x5a66b8(0x1ff),'description':'Optional\x20source\x20filter,\x20for\x20example\x20AGENT'},{'name':a10_0x5a66b8(0x1af),'type':'boolean','description':a10_0x5a66b8(0x1bc)},VERBOSE_FLAG],async 'execute'(_0xb62e8c){const _0x9c1789=a10_0x5a66b8,_0x4a18df=await listRuntimeArtifacts(_0xb62e8c[_0x9c1789(0x1dc)],{'artifactType':ARTIFACT_TYPE_REACT_MODULE,..._0xb62e8c[_0x9c1789(0x1f8)]('source')?{'source':_0xb62e8c['str'](_0x9c1789(0x1ae))}:{},...readFavoriteFlag(_0xb62e8c)!==undefined?{'favorite':readFavoriteFlag(_0xb62e8c)}:{}});return{'ok':!![],'data':{'total':_0x4a18df[_0x9c1789(0x1b1)],'items':_0xb62e8c[_0x9c1789(0x1eb)]('verbose')?_0x4a18df:_0x4a18df['map'](summarizeArtifact)}};}},artifactDetail={'service':a10_0x5a66b8(0x1ef),'command':a10_0x5a66b8(0x1d0),'description':a10_0x5a66b8(0x1b6),'risk':a10_0x5a66b8(0x1d7),'flags':[{...ID_FLAG,'description':'Artifact\x20ID'}],async 'execute'(_0x33ca29){const _0x3ed774=a10_0x5a66b8,_0x39536b=await getRuntimeArtifact(_0x33ca29[_0x3ed774(0x201)]('id'),_0x33ca29[_0x3ed774(0x1dc)]);return{'ok':!![],'data':detailArtifact(_0x39536b)};}},artifactCreate={'service':a10_0x5a66b8(0x1ef),'command':'create','description':a10_0x5a66b8(0x1f1),'risk':a10_0x5a66b8(0x1c2),'confirmationDescription':a10_0x5a66b8(0x1e3),'flags':[FILE_FLAG,ARTIFACT_NAME_FLAG,METADATA_FLAG],async 'execute'(_0x36ef4d){const _0xaa69e8=a10_0x5a66b8,_0x505fd9=buildArtifactInput(_0x36ef4d),_0x37e814=await createRuntimeArtifact(_0x36ef4d[_0xaa69e8(0x1dc)],_0x505fd9);return{'ok':!![],'data':detailArtifact(_0x37e814),'message':_0xaa69e8(0x1f0)+_0x37e814['id']+(_0x37e814[_0xaa69e8(0x1ee)]?'\x20('+_0x37e814['name']+')':'')};},async 'dryRun'(_0x4e630b){const _0x586805=a10_0x5a66b8,_0x4746ae=buildArtifactInput(_0x4e630b);return dryRun(_0x586805(0x1b2),_0x586805(0x1c5))[_0x586805(0x1b8)]({'appCode':_0x4e630b[_0x586805(0x1dc)],..._0x4746ae})[_0x586805(0x1a9)](_0x586805(0x1e8))[_0x586805(0x1bb)]();},'writeEventSubject'(_0x3a5728){const _0x5e0fe9=a10_0x5a66b8,_0x3e1a32=_0x3a5728[_0x5e0fe9(0x1ca)]?.['id'];if(typeof _0x3e1a32!==_0x5e0fe9(0x1ff)&&typeof _0x3e1a32!=='number')return undefined;return{'kind':_0x5e0fe9(0x1ef),'id':String(_0x3e1a32),'action':_0x5e0fe9(0x1b7)};}},artifactUpdate={'service':a10_0x5a66b8(0x1ef),'command':'update','description':a10_0x5a66b8(0x1bf),'risk':a10_0x5a66b8(0x1c2),'confirmationDescription':a10_0x5a66b8(0x1cc),'flags':[{...ID_FLAG,'description':a10_0x5a66b8(0x1de)},FILE_FLAG,ARTIFACT_NAME_FLAG,METADATA_FLAG],async 'execute'(_0xf2afdc){const _0x42cfd4=a10_0x5a66b8,_0x2f7d31=_0xf2afdc['num']('id'),_0x2b5df9=buildArtifactInput(_0xf2afdc),_0x7447ae=await updateRuntimeArtifact(_0x2f7d31,_0xf2afdc['appCode'],_0x2b5df9);return{'ok':!![],'data':detailArtifact(_0x7447ae),'message':_0x42cfd4(0x200)+_0x7447ae['id']+(_0x7447ae[_0x42cfd4(0x1ee)]?'\x20('+_0x7447ae[_0x42cfd4(0x1ee)]+')':'')};},async 'dryRun'(_0x3274eb){const _0x2fa479=a10_0x5a66b8,_0x4434ac=_0x3274eb[_0x2fa479(0x201)]('id'),_0x3a59a4=buildArtifactInput(_0x3274eb);return dryRun('POST',_0x2fa479(0x1fe)+_0x4434ac+_0x2fa479(0x1f6))['body']({'appCode':_0x3274eb[_0x2fa479(0x1dc)],..._0x3a59a4})['description'](_0x2fa479(0x1f3)+_0x4434ac)[_0x2fa479(0x1bb)]();},'writeEventSubject'(_0x1bd927){const _0x9c9eb6=a10_0x5a66b8,_0x8ab538=_0x1bd927['data']?.['id'];if(typeof _0x8ab538!==_0x9c9eb6(0x1ff)&&typeof _0x8ab538!==_0x9c9eb6(0x1fa))return undefined;return{'kind':_0x9c9eb6(0x1ef),'id':String(_0x8ab538),'action':_0x9c9eb6(0x1e0)};}};export const artifactDefinitions=[artifactList,artifactDetail,artifactCreate,artifactUpdate];
|
|
1
|
+
const a10_0xbe7793=a10_0x406b;(function(_0x3424e0,_0x55d36d){const _0x52b0c7=a10_0x406b,_0x53dd22=_0x3424e0();while(!![]){try{const _0x4f3c02=parseInt(_0x52b0c7(0x175))/0x1+parseInt(_0x52b0c7(0x189))/0x2*(parseInt(_0x52b0c7(0x16e))/0x3)+-parseInt(_0x52b0c7(0x18e))/0x4+parseInt(_0x52b0c7(0x18f))/0x5+-parseInt(_0x52b0c7(0x174))/0x6*(-parseInt(_0x52b0c7(0x184))/0x7)+parseInt(_0x52b0c7(0x15a))/0x8+parseInt(_0x52b0c7(0x177))/0x9*(-parseInt(_0x52b0c7(0x179))/0xa);if(_0x4f3c02===_0x55d36d)break;else _0x53dd22['push'](_0x53dd22['shift']());}catch(_0x1dbd4e){_0x53dd22['push'](_0x53dd22['shift']());}}}(a10_0x3257,0x614dd));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';const ARTIFACT_TYPE_REACT_MODULE=a10_0xbe7793(0x166),ARTIFACT_SOURCE_AGENT=a10_0xbe7793(0x14e),ALLOWED_REACT_MODULE_IMPORTS=[a10_0xbe7793(0x172),a10_0xbe7793(0x17d),'lodash',a10_0xbe7793(0x170),a10_0xbe7793(0x176),a10_0xbe7793(0x155)];export const ALLOWED_REACT_MODULE_IMPORTS_TEXT=ALLOWED_REACT_MODULE_IMPORTS[a10_0xbe7793(0x16b)](',\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_0xbe7793(0x17e)},ARTIFACT_NAME_FLAG={'name':a10_0xbe7793(0x165),'type':a10_0xbe7793(0x18b),'description':a10_0xbe7793(0x14f)},METADATA_FLAG={'name':'metadata','type':a10_0xbe7793(0x18b),'description':a10_0xbe7793(0x171)};function isPlainObject(_0x259cf2){return typeof _0x259cf2==='object'&&_0x259cf2!==null&&!Array['isArray'](_0x259cf2);}function readSourceFile(_0xaf5734){const _0x39c665=a10_0xbe7793;if(!_0xaf5734)throw CliErrors[_0x39c665(0x145)](_0x39c665(0x148));if(!existsSync(_0xaf5734))throw CliErrors[_0x39c665(0x145)](_0x39c665(0x149)+_0xaf5734);if(!statSync(_0xaf5734)[_0x39c665(0x173)]())throw CliErrors[_0x39c665(0x145)](_0x39c665(0x157)+_0xaf5734);const _0x33beaa=readFileSync(_0xaf5734,_0x39c665(0x15d));return validateReactModuleSource(_0x33beaa),_0x33beaa;}function parseMetadata(_0x1f25b4){const _0x1c2a69=a10_0xbe7793;if(!_0x1f25b4)return undefined;let _0x3672d7;try{_0x3672d7=JSON[_0x1c2a69(0x180)](_0x1f25b4);}catch{throw CliErrors[_0x1c2a69(0x145)](_0x1c2a69(0x191)+_0x1f25b4);}if(!isPlainObject(_0x3672d7))throw CliErrors[_0x1c2a69(0x145)](_0x1c2a69(0x162));const _0x3e08e9={..._0x3672d7};return delete _0x3e08e9[_0x1c2a69(0x190)],_0x3e08e9;}function getPackageName(_0x2763c7){const _0x5c6790=a10_0xbe7793;if(_0x2763c7[_0x5c6790(0x14d)]('@')){const [_0x216ff9,_0x6ca92c]=_0x2763c7[_0x5c6790(0x164)]('/');return _0x216ff9&&_0x6ca92c?_0x216ff9+'/'+_0x6ca92c:_0x2763c7;}return _0x2763c7[_0x5c6790(0x164)]('/')[0x0]||_0x2763c7;}function validateAllowedImports(_0x1c6db6){const _0x6c6268=a10_0xbe7793,_0x2642b9=new Set();for(const _0xbe32ac of IMPORT_SOURCE_PATTERNS){_0xbe32ac[_0x6c6268(0x14a)]=0x0;let _0x1f0ff9;while((_0x1f0ff9=_0xbe32ac['exec'](_0x1c6db6))!==null){const _0xaa3c86=_0x1f0ff9[0x1]?.[_0x6c6268(0x15c)]();_0xaa3c86&&_0x2642b9[_0x6c6268(0x167)](_0xaa3c86);}}const _0x61a41c=[..._0x2642b9][_0x6c6268(0x146)](getPackageName)[_0x6c6268(0x152)](_0x51d3fd=>!ALLOWED_REACT_MODULE_IMPORTS[_0x6c6268(0x15f)](_0x51d3fd));if(_0x61a41c[_0x6c6268(0x181)]>0x0)throw CliErrors[_0x6c6268(0x145)]('react_module\x20imports\x20are\x20limited\x20to:\x20'+ALLOWED_REACT_MODULE_IMPORTS_TEXT+_0x6c6268(0x161)+[...new Set(_0x61a41c)][_0x6c6268(0x16b)](',\x20'));}export function validateReactModuleSource(_0x9bc59e){const _0xbce60b=a10_0xbe7793;if(!_0x9bc59e['trim']())throw CliErrors['validation'](_0xbce60b(0x18a));if(PAGE_LEVEL_PATTERNS[_0xbce60b(0x153)](_0x3e3c0f=>_0x3e3c0f['test'](_0x9bc59e)))throw CliErrors[_0xbce60b(0x145)](_0xbce60b(0x159));validateAllowedImports(_0x9bc59e);}function buildArtifactInput(_0x56d0f1){const _0x235505=a10_0xbe7793,_0x1cd8e2=readSourceFile(_0x56d0f1['str'](_0x235505(0x18c))),_0x1e55de=_0x56d0f1[_0x235505(0x144)](_0x235505(0x165))['trim'](),_0x41d786=parseMetadata(_0x56d0f1['str'](_0x235505(0x185)));return{'artifactType':ARTIFACT_TYPE_REACT_MODULE,..._0x1e55de?{'name':_0x1e55de}:{},'content':_0x1cd8e2,..._0x41d786?{'metadata':_0x41d786}:{},'source':ARTIFACT_SOURCE_AGENT};}function summarizeArtifact(_0xf19a80){const _0x5ab489=a10_0xbe7793;return{'id':_0xf19a80['id'],'name':_0xf19a80['name'],'artifactType':_0xf19a80['artifactType'],'source':_0xf19a80['source'],'favorite':_0xf19a80[_0x5ab489(0x142)],'deleted':_0xf19a80[_0x5ab489(0x14b)],'createTime':_0xf19a80['createTime'],'updateTime':_0xf19a80[_0x5ab489(0x158)]};}function a10_0x406b(_0x1325c5,_0x877bd6){_0x1325c5=_0x1325c5-0x141;const _0x3257df=a10_0x3257();let _0x406b69=_0x3257df[_0x1325c5];return _0x406b69;}function detailArtifact(_0x50556d){const _0x5982a6=a10_0xbe7793;return{'id':_0x50556d['id'],'appCode':_0x50556d[_0x5982a6(0x16f)],'name':_0x50556d[_0x5982a6(0x165)],'artifactType':_0x50556d['artifactType'],'source':_0x50556d[_0x5982a6(0x147)],'favorite':_0x50556d['favorite'],'deleted':_0x50556d[_0x5982a6(0x14b)],'content':_0x50556d[_0x5982a6(0x17c)]??'','compiledContent':_0x50556d['compiledContent'],'metadata':_0x50556d['metadata']??{},'createTime':_0x50556d['createTime'],'updateTime':_0x50556d[_0x5982a6(0x158)]};}function readFavoriteFlag(_0x50fd83){const _0x2e4fd8=a10_0xbe7793,_0x196617=_0x50fd83[_0x2e4fd8(0x163)](_0x2e4fd8(0x142));return _0x196617===undefined||_0x196617===null||_0x196617===''?undefined:_0x50fd83[_0x2e4fd8(0x151)]('favorite');}const artifactList={'service':'artifact','command':a10_0xbe7793(0x16c),'description':a10_0xbe7793(0x169),'risk':a10_0xbe7793(0x156),'flags':[{'name':'source','type':a10_0xbe7793(0x18b),'description':a10_0xbe7793(0x154)},{'name':a10_0xbe7793(0x142),'type':a10_0xbe7793(0x15e),'description':'Optional\x20favorite-state\x20filter'},VERBOSE_FLAG],async 'execute'(_0x180345){const _0x585afa=a10_0xbe7793,_0x50f097=await listRuntimeArtifacts(_0x180345[_0x585afa(0x16f)],{'artifactType':ARTIFACT_TYPE_REACT_MODULE,..._0x180345[_0x585afa(0x144)](_0x585afa(0x147))?{'source':_0x180345[_0x585afa(0x144)](_0x585afa(0x147))}:{},...readFavoriteFlag(_0x180345)!==undefined?{'favorite':readFavoriteFlag(_0x180345)}:{}});return{'ok':!![],'data':{'total':_0x50f097['length'],'items':_0x180345[_0x585afa(0x151)]('verbose')?_0x50f097:_0x50f097['map'](summarizeArtifact)}};}},artifactDetail={'service':a10_0xbe7793(0x178),'command':a10_0xbe7793(0x18d),'description':a10_0xbe7793(0x17f),'risk':a10_0xbe7793(0x156),'flags':[{...ID_FLAG,'description':'Artifact\x20ID'}],async 'execute'(_0x5eb48b){const _0x28566c=a10_0xbe7793,_0x3a5dff=await getRuntimeArtifact(_0x5eb48b['num']('id'),_0x5eb48b[_0x28566c(0x16f)]);return{'ok':!![],'data':detailArtifact(_0x3a5dff)};}},artifactCreate={'service':'artifact','command':a10_0xbe7793(0x168),'description':'根据本地源码文件创建\x20react_module\x20类型的\x20Artifact','risk':'write','confirmationDescription':'保存新的\x20Artifact\x20源码并进行编译;成功后将在当前应用中新增可展示的内嵌模块。','flags':[FILE_FLAG,ARTIFACT_NAME_FLAG,METADATA_FLAG],async 'execute'(_0x51cd1b){const _0x304075=a10_0xbe7793,_0x11b723=buildArtifactInput(_0x51cd1b),_0x32265c=await createRuntimeArtifact(_0x51cd1b[_0x304075(0x16f)],_0x11b723);return{'ok':!![],'data':detailArtifact(_0x32265c),'message':_0x304075(0x187)+_0x32265c['id']+(_0x32265c[_0x304075(0x165)]?'\x20('+_0x32265c[_0x304075(0x165)]+')':'')};},async 'dryRun'(_0x53fc24){const _0xa066e3=a10_0xbe7793,_0x9e9c29=buildArtifactInput(_0x53fc24);return dryRun(_0xa066e3(0x16d),'/client/artifact/create')[_0xa066e3(0x17b)]({'appCode':_0x53fc24['appCode'],..._0x9e9c29})['description'](_0xa066e3(0x141))[_0xa066e3(0x17a)]();},'writeEventSubject'(_0xbd0ab1){const _0x2a9f8c=a10_0xbe7793,_0x407372=_0xbd0ab1[_0x2a9f8c(0x160)]?.['id'];if(typeof _0x407372!==_0x2a9f8c(0x18b)&&typeof _0x407372!==_0x2a9f8c(0x14c))return undefined;return{'kind':_0x2a9f8c(0x178),'id':String(_0x407372),'action':_0x2a9f8c(0x168)};}},artifactUpdate={'service':a10_0xbe7793(0x178),'command':'update','description':a10_0xbe7793(0x150),'risk':'write','confirmationDescription':a10_0xbe7793(0x188),'flags':[{...ID_FLAG,'description':a10_0xbe7793(0x186)},FILE_FLAG,ARTIFACT_NAME_FLAG,METADATA_FLAG],async 'execute'(_0x2871b1){const _0x146186=a10_0xbe7793,_0x150b9b=_0x2871b1[_0x146186(0x143)]('id'),_0x4a968a=buildArtifactInput(_0x2871b1),_0xe7d5da=await updateRuntimeArtifact(_0x150b9b,_0x2871b1[_0x146186(0x16f)],_0x4a968a);return{'ok':!![],'data':detailArtifact(_0xe7d5da),'message':'Updated\x20Artifact\x20'+_0xe7d5da['id']+(_0xe7d5da[_0x146186(0x165)]?'\x20('+_0xe7d5da[_0x146186(0x165)]+')':'')};},async 'dryRun'(_0x46388a){const _0x2d6650=a10_0xbe7793,_0x56c079=_0x46388a[_0x2d6650(0x143)]('id'),_0x3c8122=buildArtifactInput(_0x46388a);return dryRun('POST',_0x2d6650(0x183)+_0x56c079+_0x2d6650(0x16a))[_0x2d6650(0x17b)]({'appCode':_0x46388a[_0x2d6650(0x16f)],..._0x3c8122})['description'](_0x2d6650(0x15b)+_0x56c079)[_0x2d6650(0x17a)]();},'writeEventSubject'(_0x744c1a){const _0x2e6800=a10_0xbe7793,_0x56a0a6=_0x744c1a[_0x2e6800(0x160)]?.['id'];if(typeof _0x56a0a6!=='string'&&typeof _0x56a0a6!==_0x2e6800(0x14c))return undefined;return{'kind':_0x2e6800(0x178),'id':String(_0x56a0a6),'action':_0x2e6800(0x182)};}};function a10_0x3257(){const _0x2600f5=['2xelTxd','Artifact\x20source\x20file\x20is\x20blank.','string','file','detail','3170180tTMCuP','1206310niQTfl','compiledContent','Invalid\x20JSON\x20for\x20--metadata:\x20','Preview:\x20create\x20react_module\x20Artifact','favorite','num','str','validation','map','source','File\x20path\x20is\x20required.','File\x20not\x20found:\x20','lastIndex','deleted','number','startsWith','AGENT','Artifact\x20display\x20name','根据本地源码文件更新\x20react_module\x20类型的\x20Artifact','bool','filter','some','Optional\x20source\x20filter,\x20for\x20example\x20AGENT','@ant-design/icons','read','File\x20is\x20not\x20a\x20regular\x20file:\x20','updateTime','react_module\x20must\x20be\x20an\x20embeddable\x20React\x20module,\x20not\x20full\x20HTML\x20or\x20a\x20ReactDOM/createRoot\x20mount\x20entry.','5277016IBSIsp','Preview:\x20update\x20react_module\x20Artifact\x20','trim','utf8','boolean','includes','data','.\x20Unsupported:\x20','--metadata\x20must\x20be\x20a\x20JSON\x20object.','flag','split','name','react_module','add','create','List\x20current-app\x20react_module\x20Artifacts','/update','join','list','POST','401619SasANb','appCode','dayjs','Artifact\x20metadata\x20as\x20JSON\x20object;\x20compiledContent\x20is\x20stripped','react','isFile','1577202NHJaoJ','446877nnswic','antd','2490318VstUXo','artifact','20yzfKyN','build','body','content','react-dom','Path\x20to\x20a\x20local\x20UTF-8\x20React\x20module\x20source\x20file','Show\x20one\x20Artifact\x20by\x20id','parse','length','update','/client/artifact/','7fsBqRc','metadata','Artifact\x20ID','Created\x20Artifact\x20','保存新的\x20Artifact\x20源码并重新编译;应用中的内嵌模块展示和交互可能立即发生变化。'];a10_0x3257=function(){return _0x2600f5;};return a10_0x3257();}export const artifactDefinitions=[artifactList,artifactDetail,artifactCreate,artifactUpdate];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const a11_0x13860e=a11_0x1470;(function(_0x229172,_0x1564c3){const _0x21d0c6=a11_0x1470,_0x4776f4=_0x229172();while(!![]){try{const _0x5553ae=-parseInt(_0x21d0c6(0x1f3))/0x1+parseInt(_0x21d0c6(0x1d9))/0x2*(parseInt(_0x21d0c6(0x1e6))/0x3)+parseInt(_0x21d0c6(0x211))/0x4*(parseInt(_0x21d0c6(0x1e9))/0x5)+-parseInt(_0x21d0c6(0x1ed))/0x6+-parseInt(_0x21d0c6(0x1f1))/0x7*(-parseInt(_0x21d0c6(0x1fb))/0x8)+parseInt(_0x21d0c6(0x1ef))/0x9+-parseInt(_0x21d0c6(0x1e0))/0xa*(parseInt(_0x21d0c6(0x215))/0xb);if(_0x5553ae===_0x1564c3)break;else _0x4776f4['push'](_0x4776f4['shift']());}catch(_0x1f26eb){_0x4776f4['push'](_0x4776f4['shift']());}}}(a11_0x3da3,0xcb492));import{existsSync,mkdirSync,readFileSync,unlinkSync,writeFileSync}from'node:fs';import{dirname}from'node:path';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';import{CliErrors}from'../../errors.js';import{resolveConfigScope,toScopeFlags}from'../../commands/common/config-policy.js';function a11_0x3da3(){const _0x4b3035=['\x20auth\x20device','8wxQvBC','floor','code','Device\x20auth\x20API\x20unreachable\x20after\x20multiple\x20retries.','source','After\x20authorizing,\x20re-run:\x20','App\x20name\x20shown\x20on\x20authorization\x20page\x20(default:\x20lovrabet)','495310lhrMeI','将启动设备码授权流程;授权成功后会把获取到的\x20AccessKey\x20保存到所选\x20Lovrabet\x20配置。确认界面不会显示设备码或密钥。','Device\x20authorization\x20URL\x20printed.\x20Complete\x20authorization\x20in\x20browser,\x20then\x20re-run.','Write\x20to\x20project\x20config','Print\x20URL\x20to\x20stdout\x20and\x20exit\x20(for\x20WorkBuddy\x20integration)','getTime','1029174tKoEPh','stderr','AccessKey\x20saved\x20to\x20','95DuWnBF','SIGINT','json','/.device-auth','6392466JuWjTN','randomUUID','1563093PtqNGR','lovrabet-cli','25795WSDRRy','success','511201FUfnSX','write','utf8','auth','test','Waiting\x20for\x20authorization\x20(timeout:\x2010\x20minutes,\x20Ctrl+C\x20to\x20cancel)...','scope','nonInteractive','568mxDknZ','toISOString','cancelled','str','Device\x20code\x20expired.\x20Run\x20`lovrabet\x20auth\x20device`\x20to\x20get\x20a\x20new\x20code.','),\x20retrying...','parse','The\x20device\x20code\x20is\x20valid\x20for\x2010\x20minutes.','Open\x20this\x20URL\x20in\x20your\x20browser\x20to\x20authorize:','expired','/api/device-auth/token','once','Invalid\x20device\x20auth\x20response','\x20config.','Device\x20authorization\x20cancelled.','name','networkError','signal','apiError','Invalid\x20access_key\x20returned\x20by\x20server.','access_key','\x20auth\x20status','303948dNxzBM','POST','bool','AbortError','187buPhBh','url-only','data','Device\x20auth\x20API\x20returned\x20HTTP\x20','boolean','accessKey','removeListener','project','Device\x20auth\x20API\x20error\x20(','padStart','global','stringify','homeDirName','status','\x0dWaiting\x20for\x20authorization...\x20','&source=','Write\x20to\x20global\x20config\x20(default)','Device\x20authorization\x20timed\x20out\x20after\x2010\x20minutes.\x20Run\x20`lovrabet\x20auth\x20device`\x20to\x20get\x20a\x20new\x20code.','application/json','string','abort','device','通过设备码流程完成授权(在浏览器中操作,无需复制粘贴)'];a11_0x3da3=function(){return _0x4b3035;};return a11_0x3da3();}import{writeCliSideChannelLine}from'../../utils/write-cli-side-channel.js';function resolveAuthScopeFlags(_0x12a0b6){const _0x4aacbd=a11_0x1470;return toScopeFlags(resolveConfigScope({'explicitGlobal':_0x12a0b6[_0x4aacbd(0x213)](_0x4aacbd(0x21f)),'explicitProject':_0x12a0b6[_0x4aacbd(0x213)]('project'),'policy':'global-default'}));}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 _0x2a43c1=a11_0x1470;return crypto[_0x2a43c1(0x1ee)]();}export function buildDeviceAuthUrl(_0x49f604,_0x4c957e,_0xd21468=a11_0x13860e(0x1f0)){const _0xa5673b=a11_0x13860e;return _0x49f604+'/device-auth?code='+encodeURIComponent(_0x4c957e)+_0xa5673b(0x1d0)+encodeURIComponent(_0xd21468);}export function getDeviceCodePath(){const _0x28ded2=a11_0x13860e;return homedir()+'/'+PRODUCT_CONFIG[_0x28ded2(0x221)]+_0x28ded2(0x1ec);}export function readStoredDeviceCode(){const _0x54cc8e=a11_0x13860e,_0x2077dd=getDeviceCodePath();if(!existsSync(_0x2077dd))return null;try{const _0x32b01d=readFileSync(_0x2077dd,{'encoding':_0x54cc8e(0x1f5)}),_0x2d2382=JSON[_0x54cc8e(0x201)](_0x32b01d);if(_0x2d2382&&typeof _0x2d2382[_0x54cc8e(0x1db)]===_0x54cc8e(0x1d4)&&typeof _0x2d2382['createdAt']===_0x54cc8e(0x1d4)&&(_0x2d2382[_0x54cc8e(0x1f9)]===_0x54cc8e(0x21f)||_0x2d2382[_0x54cc8e(0x1f9)]===_0x54cc8e(0x21c)))return _0x2d2382;}catch{}return null;}export function writeStoredDeviceCode(_0x167240,_0x1188df){const _0x112f6e=a11_0x13860e,_0x261f55=getDeviceCodePath(),_0x4fe48c=dirname(_0x261f55);!existsSync(_0x4fe48c)&&mkdirSync(_0x4fe48c,{'recursive':!![]});const _0x1991c5={'code':_0x167240,'createdAt':new Date()[_0x112f6e(0x1fc)](),'scope':_0x1188df};writeFileSync(_0x261f55,JSON['stringify'](_0x1991c5),{'encoding':'utf8','mode':0x180});}export function deleteStoredDeviceCode(){const _0x12ba43=getDeviceCodePath();try{unlinkSync(_0x12ba43);}catch{}}export function isStoredDeviceCodeExpired(_0x692702){const _0x5ac2b2=a11_0x13860e;return Date['now']()-new Date(_0x692702['createdAt'])[_0x5ac2b2(0x1e5)]()>DEVICE_CODE_TTL_MS;}function a11_0x1470(_0x2a1e59,_0x1c7425){_0x2a1e59=_0x2a1e59-0x1cf;const _0x3da353=a11_0x3da3();let _0x147000=_0x3da353[_0x2a1e59];return _0x147000;}export async function fetchDeviceToken(_0xa6364f,_0x3f5bdd){const _0x540383=a11_0x13860e,_0x53f2e7=_0xa6364f+_0x540383(0x205),_0x474d4d=new AbortController(),_0x590969=setTimeout(()=>_0x474d4d[_0x540383(0x1d5)](),0x2710),_0x4c86f4=await fetch(_0x53f2e7,{'method':_0x540383(0x212),'headers':{'Content-Type':_0x540383(0x1d3)},'body':JSON[_0x540383(0x220)]({'code':_0x3f5bdd}),'signal':_0x474d4d[_0x540383(0x20c)]});clearTimeout(_0x590969);if(!_0x4c86f4['ok'])throw CliErrors[_0x540383(0x20b)](_0x540383(0x218)+_0x4c86f4[_0x540383(0x222)]);const _0x4ef92b=await _0x4c86f4[_0x540383(0x1eb)](),_0x4f4249=_0x4ef92b['data']&&typeof _0x4ef92b[_0x540383(0x217)]==='object'?_0x4ef92b[_0x540383(0x217)]:_0x4ef92b;if(!_0x4f4249||typeof _0x4f4249[_0x540383(0x222)]!==_0x540383(0x1d4))throw CliErrors[_0x540383(0x20d)](_0x540383(0x207));return{'status':_0x4f4249[_0x540383(0x222)],'access_key':typeof _0x4f4249[_0x540383(0x20f)]===_0x540383(0x1d4)?_0x4f4249['access_key']:undefined};}export async function pollDeviceToken(_0x28efc7,_0x3b256b,_0x18661e){const _0x3203c3=a11_0x13860e;let _0x27d1e0=0x0;for(let _0xbe1bb1=0x0;_0xbe1bb1<MAX_POLLS;_0xbe1bb1++){if(_0x18661e['aborted'])throw CliErrors[_0x3203c3(0x1fd)](_0x3203c3(0x209));let _0x296910;try{_0x296910=await fetchDeviceToken(_0x28efc7,_0x3b256b);}catch(_0x506fa5){if(_0x506fa5 instanceof Error&&_0x506fa5[_0x3203c3(0x20a)]===_0x3203c3(0x214))throw CliErrors[_0x3203c3(0x1fd)](_0x3203c3(0x209));_0x27d1e0++;if(_0x27d1e0>=MAX_CONSECUTIVE_NETWORK_ERRORS)throw CliErrors[_0x3203c3(0x20b)](_0x3203c3(0x1dc));writeCliSideChannelLine(_0x3203c3(0x21d)+_0x27d1e0+'/'+MAX_CONSECUTIVE_NETWORK_ERRORS+_0x3203c3(0x200)),await sleep(POLL_INTERVAL_MS);continue;}_0x27d1e0=0x0;if(_0x296910['status']===_0x3203c3(0x1f2)){if(!_0x296910[_0x3203c3(0x20f)])throw CliErrors['apiError'](_0x3203c3(0x20e));return _0x296910['access_key'];}if(_0x296910['status']===_0x3203c3(0x204)){deleteStoredDeviceCode();throw CliErrors['validation'](_0x3203c3(0x1ff));}const _0x13b85d=(_0xbe1bb1+0x1)*POLL_INTERVAL_MS,_0x31f705=DEVICE_CODE_TTL_MS-_0x13b85d,_0x1356d4=Math[_0x3203c3(0x1da)](_0x31f705/0xea60),_0x3c749f=Math['floor'](_0x31f705%0xea60/0x3e8);process[_0x3203c3(0x1e7)]['write'](_0x3203c3(0x1cf)+_0x1356d4+':'+String(_0x3c749f)[_0x3203c3(0x21e)](0x2,'0')+'\x20remaining'),await sleep(POLL_INTERVAL_MS);}deleteStoredDeviceCode();throw CliErrors['validation'](_0x3203c3(0x1d2));}function sleep(_0x325549){return new Promise(_0x3eff1d=>setTimeout(_0x3eff1d,_0x325549));}export const authDeviceDefinition={'service':a11_0x13860e(0x1f6),'command':a11_0x13860e(0x1d6),'description':a11_0x13860e(0x1d7),'risk':a11_0x13860e(0x1f4),'confirmationDescription':a11_0x13860e(0x1e1),'requiresAuth':![],'requiresAppCode':![],'hasFormat':![],'flags':[{'name':a11_0x13860e(0x21f),'type':a11_0x13860e(0x219),'description':a11_0x13860e(0x1d1),'default':!![]},{'name':a11_0x13860e(0x21c),'type':'boolean','description':a11_0x13860e(0x1e3),'default':![]},{'name':'source','type':a11_0x13860e(0x1d4),'description':a11_0x13860e(0x1df),'default':a11_0x13860e(0x1f0)},{'name':'url-only','type':'boolean','description':a11_0x13860e(0x1e4),'default':![]}],async 'execute'(_0x2267c8){const _0x22b22c=a11_0x13860e,_0x3f2685=resolveAuthScopeFlags(_0x2267c8),_0x303eae=_0x3f2685[_0x22b22c(0x21f)]?_0x22b22c(0x21f):_0x22b22c(0x21c),_0x3550d5=readScopedConfig(_0x3f2685);if(_0x3550d5[_0x22b22c(0x21a)])return{'ok':!![],'message':'Already\x20authorized.\x20Use\x20`lovrabet\x20auth\x20status`\x20to\x20verify.'};const _0x500f56=(_0x2267c8[_0x22b22c(0x1fe)](_0x22b22c(0x1dd))||_0x22b22c(0x1f0))['trim'](),_0xc958a7=getUserDomain(),_0x64311b=readStoredDeviceCode(),_0x3e32ef=_0x64311b&&!isStoredDeviceCodeExpired(_0x64311b)?_0x64311b[_0x22b22c(0x1db)]:((()=>{const _0x23a0a6=generateDeviceCode();return writeStoredDeviceCode(_0x23a0a6,_0x303eae),_0x23a0a6;})()),_0x87e17e=buildDeviceAuthUrl(_0xc958a7,_0x3e32ef,_0x500f56);if(_0x2267c8[_0x22b22c(0x213)](_0x22b22c(0x216)))return console['log'](_0x87e17e),{'ok':!![]};writeCliSideChannelLine(_0x22b22c(0x203)),writeCliSideChannelLine(''),writeCliSideChannelLine(_0x87e17e),writeCliSideChannelLine(''),writeCliSideChannelLine(_0x22b22c(0x202));if(_0x2267c8[_0x22b22c(0x1fa)])return writeCliSideChannelLine(_0x22b22c(0x1de)+CLI_BIN_NAME+_0x22b22c(0x1d8)),{'ok':!![],'message':_0x22b22c(0x1e2)};writeCliSideChannelLine(_0x22b22c(0x1f8));const _0x512b99=new AbortController(),_0x21202b=()=>{const _0x44fdcf=_0x22b22c;_0x512b99[_0x44fdcf(0x1d5)](),process[_0x44fdcf(0x21b)](_0x44fdcf(0x1ea),_0x21202b);};process[_0x22b22c(0x206)](_0x22b22c(0x1ea),_0x21202b);let _0x3ebd05;try{_0x3ebd05=await pollDeviceToken(_0xc958a7,_0x3e32ef,_0x512b99[_0x22b22c(0x20c)]);}finally{process['removeListener'](_0x22b22c(0x1ea),_0x21202b);}if(!ACCESS_KEY_PATTERN[_0x22b22c(0x1f7)](_0x3ebd05))throw CliErrors[_0x22b22c(0x20d)](_0x22b22c(0x20e));const _0x43d857=readScopedConfig(_0x3f2685);return _0x43d857[_0x22b22c(0x21a)]=_0x3ebd05,writeScopedConfig(_0x43d857,_0x3f2685),deleteStoredDeviceCode(),process[_0x22b22c(0x1e7)][_0x22b22c(0x1f4)]('\x0a'),writeCliSideChannelLine(_0x22b22c(0x1e8)+_0x303eae+_0x22b22c(0x208)),writeCliSideChannelLine('Verify:\x20'+CLI_BIN_NAME+_0x22b22c(0x210)),{'ok':!![],'message':'Device\x20authorization\x20successful.'};}};
|
|
1
|
+
const a11_0x5e8802=a11_0x3ee3;(function(_0x3f63fe,_0x28d3d5){const _0x5dd824=a11_0x3ee3,_0x287945=_0x3f63fe();while(!![]){try{const _0x4b6786=-parseInt(_0x5dd824(0xe8))/0x1*(parseInt(_0x5dd824(0x109))/0x2)+-parseInt(_0x5dd824(0x122))/0x3*(-parseInt(_0x5dd824(0x10e))/0x4)+-parseInt(_0x5dd824(0xea))/0x5*(parseInt(_0x5dd824(0x119))/0x6)+parseInt(_0x5dd824(0xf1))/0x7*(-parseInt(_0x5dd824(0x113))/0x8)+parseInt(_0x5dd824(0xf6))/0x9*(parseInt(_0x5dd824(0x128))/0xa)+parseInt(_0x5dd824(0x131))/0xb+parseInt(_0x5dd824(0xfd))/0xc*(parseInt(_0x5dd824(0x10b))/0xd);if(_0x4b6786===_0x28d3d5)break;else _0x287945['push'](_0x287945['shift']());}catch(_0x3f56d5){_0x287945['push'](_0x287945['shift']());}}}(a11_0x34e8,0x70f6e));import{existsSync,mkdirSync,readFileSync,unlinkSync,writeFileSync}from'node:fs';import{dirname}from'node:path';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';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(_0x5dc361){const _0x31aa96=a11_0x3ee3;return toScopeFlags(resolveConfigScope({'explicitGlobal':_0x5dc361[_0x31aa96(0x11d)]('global'),'explicitProject':_0x5dc361['bool'](_0x31aa96(0x118)),'policy':_0x31aa96(0x108)}));}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(_0x24f10c,_0x1ef0a9,_0x1d6cba=a11_0x5e8802(0x10c)){const _0x188452=a11_0x5e8802;return _0x24f10c+_0x188452(0x103)+encodeURIComponent(_0x1ef0a9)+'&source='+encodeURIComponent(_0x1d6cba);}export function getDeviceCodePath(){const _0x11e66b=a11_0x5e8802;return homedir()+'/'+PRODUCT_CONFIG[_0x11e66b(0x10d)]+_0x11e66b(0x136);}export function readStoredDeviceCode(){const _0xf97e0d=a11_0x5e8802,_0x205f04=getDeviceCodePath();if(!existsSync(_0x205f04))return null;try{const _0x48a5a0=readFileSync(_0x205f04,{'encoding':'utf8'}),_0x516cc2=JSON[_0xf97e0d(0x100)](_0x48a5a0);if(_0x516cc2&&typeof _0x516cc2[_0xf97e0d(0x12c)]===_0xf97e0d(0xe4)&&typeof _0x516cc2['createdAt']===_0xf97e0d(0xe4)&&(_0x516cc2[_0xf97e0d(0x12e)]===_0xf97e0d(0xf7)||_0x516cc2[_0xf97e0d(0x12e)]==='project'))return _0x516cc2;}catch{}return null;}export function writeStoredDeviceCode(_0x15b1b3,_0x297964){const _0x1a85b7=a11_0x5e8802,_0x38020d=getDeviceCodePath(),_0x1ca53c=dirname(_0x38020d);!existsSync(_0x1ca53c)&&mkdirSync(_0x1ca53c,{'recursive':!![]});const _0x3023a9={'code':_0x15b1b3,'createdAt':new Date()[_0x1a85b7(0x11b)](),'scope':_0x297964};writeFileSync(_0x38020d,JSON[_0x1a85b7(0x111)](_0x3023a9),{'encoding':'utf8','mode':0x180});}export function deleteStoredDeviceCode(){const _0x38736a=getDeviceCodePath();try{unlinkSync(_0x38736a);}catch{}}function a11_0x34e8(){const _0xfe0e6=['once','device','915caIVnt','Device\x20auth\x20API\x20unreachable\x20after\x20multiple\x20retries.','10iQDKyL','\x20remaining','\x20config.','Verify:\x20','\x20auth\x20status','access_key','boolean','46186wMnmsP','\x20auth\x20device','application/json','createdAt','test','9xmXdiL','global','getTime','\x0dWaiting\x20for\x20authorization...\x20','expired','log','networkError','6489636oBhBrn','floor','通过设备码流程完成授权(在浏览器中操作,无需复制粘贴)','parse','POST','success','/device-auth?code=','padStart','url-only','Device\x20authorization\x20successful.','SIGINT','global-default','1430ptDHOA','/api/device-auth/token','39suIxgG','lovrabet-cli','homeDirName','52QKhvZX','Device\x20auth\x20API\x20returned\x20HTTP\x20','removeListener','stringify','source','760eDvzBP','signal','apiError','accessKey','Already\x20authorized.\x20Use\x20`lovrabet\x20auth\x20status`\x20to\x20verify.','project','2537328GsCJTP','now','toISOString','Device\x20authorization\x20timed\x20out\x20after\x2010\x20minutes.\x20Run\x20`lovrabet\x20auth\x20device`\x20to\x20get\x20a\x20new\x20code.','bool','status','write','Invalid\x20access_key\x20returned\x20by\x20server.','stderr','119253VNCxad','Open\x20this\x20URL\x20in\x20your\x20browser\x20to\x20authorize:','AbortError','validation','Invalid\x20device\x20auth\x20response','str','1155740TEbqKB','json','将启动设备码授权流程;授权成功后会把获取到的\x20AccessKey\x20保存到所选\x20Lovrabet\x20配置。确认界面不会显示设备码或密钥。','cancelled','code','Waiting\x20for\x20authorization\x20(timeout:\x2010\x20minutes,\x20Ctrl+C\x20to\x20cancel)...','scope','Device\x20authorization\x20cancelled.','abort','3682437dSwRqq','name','After\x20authorizing,\x20re-run:\x20','AccessKey\x20saved\x20to\x20','trim','/.device-auth','string','auth'];a11_0x34e8=function(){return _0xfe0e6;};return a11_0x34e8();}function a11_0x3ee3(_0x5abf68,_0x42f72a){_0x5abf68=_0x5abf68-0xe4;const _0x34e8d6=a11_0x34e8();let _0x3ee382=_0x34e8d6[_0x5abf68];return _0x3ee382;}export function isStoredDeviceCodeExpired(_0x46574a){const _0x3879dc=a11_0x5e8802;return Date[_0x3879dc(0x11a)]()-new Date(_0x46574a[_0x3879dc(0xf4)])[_0x3879dc(0xf8)]()>DEVICE_CODE_TTL_MS;}export async function fetchDeviceToken(_0x143213,_0x36f96e){const _0x2091e8=a11_0x5e8802,_0x34824b=_0x143213+_0x2091e8(0x10a),_0x45c974=new AbortController(),_0x3058b0=setTimeout(()=>_0x45c974[_0x2091e8(0x130)](),0x2710),_0x3bd129=await fetch(_0x34824b,{'method':_0x2091e8(0x101),'headers':{'Content-Type':_0x2091e8(0xf3)},'body':JSON[_0x2091e8(0x111)]({'code':_0x36f96e}),'signal':_0x45c974[_0x2091e8(0x114)]});clearTimeout(_0x3058b0);if(!_0x3bd129['ok'])throw CliErrors['networkError'](_0x2091e8(0x10f)+_0x3bd129['status']);const _0x2f16df=await _0x3bd129[_0x2091e8(0x129)](),_0x3c8e7f=_0x2f16df['data']&&typeof _0x2f16df['data']==='object'?_0x2f16df['data']:_0x2f16df;if(!_0x3c8e7f||typeof _0x3c8e7f[_0x2091e8(0x11e)]!==_0x2091e8(0xe4))throw CliErrors[_0x2091e8(0x115)](_0x2091e8(0x126));return{'status':_0x3c8e7f[_0x2091e8(0x11e)],'access_key':typeof _0x3c8e7f[_0x2091e8(0xef)]===_0x2091e8(0xe4)?_0x3c8e7f[_0x2091e8(0xef)]:undefined};}export async function pollDeviceToken(_0x334b4a,_0x2e04a6,_0x52dd5a){const _0xdbe5f6=a11_0x5e8802;let _0x587d4d=0x0;for(let _0x323154=0x0;_0x323154<MAX_POLLS;_0x323154++){if(_0x52dd5a['aborted'])throw CliErrors['cancelled'](_0xdbe5f6(0x12f));let _0xfaf095;try{_0xfaf095=await fetchDeviceToken(_0x334b4a,_0x2e04a6);}catch(_0x12c87d){if(_0x12c87d instanceof Error&&_0x12c87d[_0xdbe5f6(0x132)]===_0xdbe5f6(0x124))throw CliErrors[_0xdbe5f6(0x12b)](_0xdbe5f6(0x12f));_0x587d4d++;if(_0x587d4d>=MAX_CONSECUTIVE_NETWORK_ERRORS)throw CliErrors[_0xdbe5f6(0xfc)](_0xdbe5f6(0xe9));writeCliSideChannelLine('Device\x20auth\x20API\x20error\x20('+_0x587d4d+'/'+MAX_CONSECUTIVE_NETWORK_ERRORS+'),\x20retrying...'),await sleep(POLL_INTERVAL_MS);continue;}_0x587d4d=0x0;if(_0xfaf095['status']===_0xdbe5f6(0x102)){if(!_0xfaf095[_0xdbe5f6(0xef)])throw CliErrors['apiError'](_0xdbe5f6(0x120));return _0xfaf095[_0xdbe5f6(0xef)];}if(_0xfaf095[_0xdbe5f6(0x11e)]===_0xdbe5f6(0xfa)){deleteStoredDeviceCode();throw CliErrors[_0xdbe5f6(0x125)]('Device\x20code\x20expired.\x20Run\x20`lovrabet\x20auth\x20device`\x20to\x20get\x20a\x20new\x20code.');}const _0x426e7e=(_0x323154+0x1)*POLL_INTERVAL_MS,_0x12bf53=DEVICE_CODE_TTL_MS-_0x426e7e,_0x3edbc2=Math[_0xdbe5f6(0xfe)](_0x12bf53/0xea60),_0x599c9b=Math[_0xdbe5f6(0xfe)](_0x12bf53%0xea60/0x3e8);process['stderr'][_0xdbe5f6(0x11f)](_0xdbe5f6(0xf9)+_0x3edbc2+':'+String(_0x599c9b)[_0xdbe5f6(0x104)](0x2,'0')+_0xdbe5f6(0xeb)),await sleep(POLL_INTERVAL_MS);}deleteStoredDeviceCode();throw CliErrors[_0xdbe5f6(0x125)](_0xdbe5f6(0x11c));}function sleep(_0x3570a4){return new Promise(_0x129d43=>setTimeout(_0x129d43,_0x3570a4));}export const authDeviceDefinition={'service':a11_0x5e8802(0xe5),'command':a11_0x5e8802(0xe7),'description':a11_0x5e8802(0xff),'risk':a11_0x5e8802(0x11f),'confirmationDescription':a11_0x5e8802(0x12a),'requiresAuth':![],'requiresAppCode':![],'hasFormat':![],'flags':[{'name':a11_0x5e8802(0xf7),'type':a11_0x5e8802(0xf0),'description':'Write\x20to\x20global\x20config\x20(default)','default':!![]},{'name':a11_0x5e8802(0x118),'type':'boolean','description':'Write\x20to\x20project\x20config','default':![]},{'name':'source','type':a11_0x5e8802(0xe4),'description':'App\x20name\x20shown\x20on\x20authorization\x20page\x20(default:\x20lovrabet)','default':a11_0x5e8802(0x10c)},{'name':'url-only','type':a11_0x5e8802(0xf0),'description':'Print\x20URL\x20to\x20stdout\x20and\x20exit\x20(for\x20WorkBuddy\x20integration)','default':![]}],async 'execute'(_0x384e53){const _0x3f0c8d=a11_0x5e8802,_0x2c3035=resolveAuthScopeFlags(_0x384e53),_0x2868fe=_0x2c3035['global']?_0x3f0c8d(0xf7):_0x3f0c8d(0x118),_0x44650b=readScopedConfig(_0x2c3035);if(_0x44650b[_0x3f0c8d(0x116)])return{'ok':!![],'message':_0x3f0c8d(0x117)};const _0x5c2628=(_0x384e53[_0x3f0c8d(0x127)](_0x3f0c8d(0x112))||'lovrabet-cli')[_0x3f0c8d(0x135)](),_0x12e4d1=getUserDomain(),_0x597774=readStoredDeviceCode(),_0x316cc7=_0x597774&&!isStoredDeviceCodeExpired(_0x597774)?_0x597774[_0x3f0c8d(0x12c)]:((()=>{const _0x21d80f=generateDeviceCode();return writeStoredDeviceCode(_0x21d80f,_0x2868fe),_0x21d80f;})()),_0x25f214=buildDeviceAuthUrl(_0x12e4d1,_0x316cc7,_0x5c2628);if(_0x384e53[_0x3f0c8d(0x11d)](_0x3f0c8d(0x105)))return console[_0x3f0c8d(0xfb)](_0x25f214),{'ok':!![]};writeCliSideChannelLine(_0x3f0c8d(0x123)),writeCliSideChannelLine(''),writeCliSideChannelLine(_0x25f214),writeCliSideChannelLine(''),writeCliSideChannelLine('The\x20device\x20code\x20is\x20valid\x20for\x2010\x20minutes.');if(_0x384e53['nonInteractive'])return writeCliSideChannelLine(_0x3f0c8d(0x133)+CLI_BIN_NAME+_0x3f0c8d(0xf2)),{'ok':!![],'message':'Device\x20authorization\x20URL\x20printed.\x20Complete\x20authorization\x20in\x20browser,\x20then\x20re-run.'};writeCliSideChannelLine(_0x3f0c8d(0x12d));const _0xdf4723=new AbortController(),_0x1a54c7=()=>{const _0x519127=_0x3f0c8d;_0xdf4723['abort'](),process[_0x519127(0x110)](_0x519127(0x107),_0x1a54c7);};process[_0x3f0c8d(0xe6)]('SIGINT',_0x1a54c7);let _0x430948;try{_0x430948=await pollDeviceToken(_0x12e4d1,_0x316cc7,_0xdf4723[_0x3f0c8d(0x114)]);}finally{process['removeListener'](_0x3f0c8d(0x107),_0x1a54c7);}if(!ACCESS_KEY_PATTERN[_0x3f0c8d(0xf5)](_0x430948))throw CliErrors[_0x3f0c8d(0x115)](_0x3f0c8d(0x120));const _0x28d79d=readScopedConfig(_0x2c3035);return _0x28d79d[_0x3f0c8d(0x116)]=_0x430948,writeScopedConfig(_0x28d79d,_0x2c3035),deleteStoredDeviceCode(),process[_0x3f0c8d(0x121)][_0x3f0c8d(0x11f)]('\x0a'),writeCliSideChannelLine(_0x3f0c8d(0x134)+_0x2868fe+_0x3f0c8d(0xec)),writeCliSideChannelLine(_0x3f0c8d(0xed)+CLI_BIN_NAME+_0x3f0c8d(0xee)),{'ok':!![],'message':_0x3f0c8d(0x106)};}};
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
* on multiple projects). Writing to global by default means one `auth login`
|
|
12
12
|
* suffices for all projects. `--project` is opt-in for project-isolated creds.
|
|
13
13
|
*
|
|
14
|
-
* Why `resolveAuthScopeFlags` uses `policy: "global-default"`:
|
|
15
|
-
*
|
|
14
|
+
* Why `resolveAuthScopeFlags` uses `policy: "global-default"`: auth credentials
|
|
15
|
+
* should default to global, while workspace binding always targets the current directory.
|
|
16
16
|
* Project-specific auth is an edge case handled by `--project`.
|
|
17
17
|
*
|
|
18
18
|
* Design decision: `auth status` reads the product-scoped access key env var
|