@lovrabet/lovrabet-cli 2.2.2-beta.1 → 2.2.3-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/lib/cli.js +1 -1
- package/lib/commands/api-doc/index.js +1 -1
- package/lib/commands/app/cache.js +1 -1
- package/lib/commands/app/definitions.js +1 -1
- package/lib/commands/app/eligibility.js +1 -1
- package/lib/commands/app/mock-loader.js +1 -1
- package/lib/commands/app/remote-source.js +1 -1
- package/lib/commands/app/shared.js +1 -1
- package/lib/commands/app-config/get.js +1 -1
- package/lib/commands/app-config/index.js +1 -1
- package/lib/commands/artifact/index.js +1 -1
- package/lib/commands/auth/device.js +1 -1
- package/lib/commands/auth/index.js +1 -1
- package/lib/commands/auth/prompt.js +1 -1
- package/lib/commands/bff/detail.js +1 -1
- package/lib/commands/bff/exec.js +1 -1
- package/lib/commands/bff/index.js +1 -1
- package/lib/commands/cli-skill/index.js +1 -1
- package/lib/commands/common/config-policy.js +1 -1
- package/lib/commands/common/constraints.js +1 -1
- package/lib/commands/common/flags.js +1 -1
- package/lib/commands/common/local-file.js +1 -1
- package/lib/commands/config/definitions.js +1 -1
- package/lib/commands/config/shared.js +1 -1
- package/lib/commands/data/index.js +1 -1
- package/lib/commands/dataset/detail.js +1 -1
- package/lib/commands/dataset/index.js +1 -1
- package/lib/commands/dataset/list.js +1 -1
- package/lib/commands/dataset/sdk-doc.js +1 -1
- package/lib/commands/doctor.js +1 -1
- package/lib/commands/file/index.js +1 -1
- package/lib/commands/init.js +1 -1
- package/lib/commands/kb/index.js +1 -1
- package/lib/commands/logs/index.js +1 -1
- package/lib/commands/ocr/index.js +1 -1
- package/lib/commands/personal-bff/index.js +1 -1
- package/lib/commands/registry.js +1 -1
- package/lib/commands/schedule/index.js +1 -1
- package/lib/commands/schema.js +1 -1
- package/lib/commands/service/dynamic.js +1 -1
- package/lib/commands/service/function-name-adapter.js +1 -1
- package/lib/commands/service/index.js +1 -1
- package/lib/commands/service/registry.js +1 -1
- package/lib/commands/skill/commands/create.js +1 -1
- package/lib/commands/skill/commands/diagram.js +1 -1
- package/lib/commands/skill/commands/install.js +1 -1
- package/lib/commands/skill/commands/list.js +1 -1
- package/lib/commands/skill/commands/push.js +1 -1
- package/lib/commands/skill/commands/validate.js +1 -1
- package/lib/commands/skill/diagram.js +1 -1
- package/lib/commands/skill/flags.js +1 -1
- package/lib/commands/skill/index.js +1 -1
- package/lib/commands/skill/manifest-helpers.js +1 -1
- package/lib/commands/skill/push-execute.js +1 -1
- package/lib/commands/skill/push-flow-helpers.js +1 -1
- package/lib/commands/skill/push-retarget.js +1 -1
- package/lib/commands/skill/scopes.js +1 -1
- package/lib/commands/skill/summary.js +1 -1
- package/lib/commands/skill/templates.js +1 -1
- package/lib/commands/skill/validate.js +1 -1
- package/lib/commands/sql/detail.js +1 -1
- package/lib/commands/sql/exec.js +1 -1
- package/lib/commands/sql/index.js +1 -1
- package/lib/commands/update.js +1 -1
- package/lib/commands/user-account/bind.d.ts +2 -0
- package/lib/commands/user-account/bind.js +1 -0
- package/lib/commands/user-account/index.d.ts +2 -0
- package/lib/commands/user-account/index.js +1 -0
- package/lib/commands/workspace/index.js +1 -1
- package/lib/config/schema.js +1 -1
- package/lib/constant/app.js +1 -1
- package/lib/constant/auth-mode.js +1 -1
- package/lib/constant/cli.js +1 -1
- package/lib/constant/defaults.js +1 -1
- package/lib/constant/distribution.js +1 -1
- package/lib/constant/domain.js +1 -1
- package/lib/constant/env.js +1 -1
- package/lib/constant/output.js +1 -1
- package/lib/constant/product.js +1 -1
- package/lib/constant/risk.js +1 -1
- package/lib/constant/url.js +1 -1
- package/lib/context.js +1 -1
- package/lib/core/api-client.d.ts +2 -0
- package/lib/core/api-client.js +1 -1
- package/lib/core/db-resolver.js +1 -1
- package/lib/core/sdk-client.js +1 -1
- package/lib/errors.js +1 -1
- package/lib/framework/build-all-flags.js +1 -1
- package/lib/framework/dryrun.js +1 -1
- package/lib/framework/flags.js +1 -1
- package/lib/framework/help.js +1 -1
- package/lib/framework/index.js +1 -1
- package/lib/framework/output.js +1 -1
- package/lib/framework/preparse.js +1 -1
- package/lib/framework/rate-limit.js +1 -1
- package/lib/framework/raw-flags.js +1 -1
- package/lib/framework/response.js +1 -1
- package/lib/framework/runner-confirmation.js +1 -1
- package/lib/framework/runner-error.js +1 -1
- package/lib/framework/runner.js +1 -1
- package/lib/framework/schema-export.js +1 -1
- package/lib/framework/service-order.js +1 -1
- package/lib/framework/types.js +1 -1
- package/lib/generated/build-info.d.ts +4 -4
- package/lib/generated/build-info.js +1 -1
- package/lib/help.js +1 -1
- package/lib/postinstall.js +1 -1
- package/lib/runtime/confirmation.js +1 -1
- package/lib/runtime/event.js +1 -1
- package/lib/runtime/index.js +1 -1
- package/lib/runtime/queue.js +1 -1
- package/lib/runtime/resolve.js +1 -1
- package/lib/skills/builtin-skill.js +1 -1
- package/lib/skills/npx-skills-add.js +1 -1
- package/lib/skills/runtime-skill-sync/constants.js +1 -1
- package/lib/skills/runtime-skill-sync/fs-utils.js +1 -1
- package/lib/skills/runtime-skill-sync/hashing.js +1 -1
- package/lib/skills/runtime-skill-sync/install-target.js +1 -1
- package/lib/skills/runtime-skill-sync/links.js +1 -1
- package/lib/skills/runtime-skill-sync/list-local.js +1 -1
- package/lib/skills/runtime-skill-sync/local-files.js +1 -1
- package/lib/skills/runtime-skill-sync/materialize.js +1 -1
- package/lib/skills/runtime-skill-sync/metadata.js +1 -1
- package/lib/skills/runtime-skill-sync/paths.js +1 -1
- package/lib/skills/runtime-skill-sync/push.js +1 -1
- package/lib/skills/runtime-skill-sync/scopes.js +1 -1
- package/lib/skills/runtime-skill-sync/zip-codec.js +1 -1
- package/lib/skills/runtime-skill-sync/zip-package.js +1 -1
- package/lib/skills/runtime-skill-sync.js +1 -1
- package/lib/skills/skill-presence.js +1 -1
- package/lib/utils/apply-jq-filter.js +1 -1
- package/lib/utils/logger.js +1 -1
- package/lib/utils/lossless-json.js +1 -1
- package/lib/utils/params.js +1 -1
- package/lib/utils/platform.js +1 -1
- package/lib/utils/update-notice.js +1 -1
- package/lib/utils/version.js +1 -1
- package/lib/utils/write-cli-side-channel.js +1 -1
- package/package.json +1 -1
- package/skills/lovrabet/SKILL.md +7 -3
- package/skills/lovrabet/guides/sql-and-bff-workflow.md +5 -0
- package/skills/lovrabet/references/lovrabet-personal-bff-workflow.md +1 -1
- package/skills/lovrabet/references/lovrabet-service-tree.md +2 -0
- package/skills/lovrabet/references/lovrabet-sql-workflow.md +4 -1
- package/skills/lovrabet/references/lovrabet-user-account.md +46 -0
- package/skills/lovrabet.manifest.json +4 -3
package/README.md
CHANGED
|
@@ -108,6 +108,7 @@ existing user-level links or the cache they still reference.
|
|
|
108
108
|
| Area | Commands |
|
|
109
109
|
| --- | --- |
|
|
110
110
|
| Authentication | `lovrabet auth login`, `lovrabet auth info`, `lovrabet auth logout` |
|
|
111
|
+
| User accounts | `lovrabet user-account bind` |
|
|
111
112
|
| App and workspace | `lovrabet app list`, `lovrabet workspace init`, `lovrabet workspace use` |
|
|
112
113
|
| Dataset discovery | `lovrabet dataset list`, `lovrabet dataset detail`, `lovrabet dataset sdk-doc` |
|
|
113
114
|
| Data operations | `lovrabet data filter`, `lovrabet data getOne`, `lovrabet data create`, `lovrabet data update`, `lovrabet data delete`, `lovrabet data aggregate` |
|
|
@@ -153,6 +154,8 @@ Important options:
|
|
|
153
154
|
personal BFF, or Skill operations.
|
|
154
155
|
- Use `--yes` only when the target app, dataset, parameters, and impact are
|
|
155
156
|
already verified.
|
|
157
|
+
- Before binding a DingTalk account, use `auth info` and `--dry-run` to
|
|
158
|
+
verify the current AccessKey identity and target user ID.
|
|
156
159
|
- Do not commit Access Keys, generated credentials, or local user config files.
|
|
157
160
|
|
|
158
161
|
## Documentation
|
package/lib/cli.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
const
|
|
2
|
+
const a0_0x1aff55=a0_0x1716;(function(_0x10739d,_0x223107){const _0x288146=a0_0x1716,_0x3032fe=_0x10739d();while(!![]){try{const _0x1f27f6=parseInt(_0x288146(0x1fb))/0x1+parseInt(_0x288146(0x20f))/0x2*(-parseInt(_0x288146(0x205))/0x3)+-parseInt(_0x288146(0x1f8))/0x4*(-parseInt(_0x288146(0x1f7))/0x5)+-parseInt(_0x288146(0x200))/0x6+parseInt(_0x288146(0x1ff))/0x7+-parseInt(_0x288146(0x210))/0x8+-parseInt(_0x288146(0x202))/0x9;if(_0x1f27f6===_0x223107)break;else _0x3032fe['push'](_0x3032fe['shift']());}catch(_0x50c810){_0x3032fe['push'](_0x3032fe['shift']());}}}(a0_0x58d0,0xc1ae2));import{jsx as a0_0x2e61b0}from'react/jsx-runtime';import a0_0x5d877 from'meow';import{render}from'ink';import{Help}from'./help.js';import{CliError,CliErrors}from'./errors.js';import{buildConfigFromFlags,initGlobalEnvironment}from'./context.js';function a0_0x1716(_0x1e03d7,_0x220ac5){_0x1e03d7=_0x1e03d7-0x1f3;const _0x58d0b2=a0_0x58d0();let _0x171660=_0x58d0b2[_0x1e03d7];return _0x171660;}import{isKnownService,getServiceEntry,findDefinition,getAllDefinitions,resolveRemovedCommand}from'./commands/registry.js';import{generateDynamicServiceHelp,resolveDynamicServiceCommand}from'./commands/service/dynamic.js';import{runCommand,createPipelineEnv}from'./framework/runner.js';function a0_0x58d0(){const _0xbfa597=['corrected','write','flags','message','log','stderr','1462402SYxLDb','11405712hKwFaf','exit','Unexpected\x20error:','./framework/preparse.js','[preparse]\x20','hint','catch','error','original','args','validation','flatMap','Error:\x20','330AwRESX','90920yUkyri',':\x20--','help','1146489XqOPsS','Hint:\x20','input','name','5213873wMXtDF','2403714ZnKHSF','\x0aCancelled.\x0a','365940vqZhpS','defaultCommand','code','3nEPhoQ','definition','\x20->\x20--','ExitPromptError'];a0_0x58d0=function(){return _0xbfa597;};return a0_0x58d0();}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_0x5d877(helpText,{'importMeta':import.meta,'flags':buildMeowFlags(),'version':getCliVersionDisplay()});void main()[a0_0x1aff55(0x216)](handleError);async function main(){try{await run();}catch(_0x4bc257){handleError(_0x4bc257);}}async function run(){const _0x13f469=a0_0x1aff55;let _0x178ac6=cli[_0x13f469(0x1fd)][0x0],_0x2a5af1=cli['input'][0x1];const _0x27856b=cli['flags'];try{const {correctFlags:_0x2aa857}=await import(_0x13f469(0x213)),_0x800a5=getAllDefinitions()[_0x13f469(0x1f5)](_0x1fb759=>_0x1fb759[_0x13f469(0x20b)]??[]),{flags:_0x5391e3,corrections:_0xfa773b}=_0x2aa857(_0x27856b,_0x800a5);if(_0xfa773b['length']>0x0){for(const _0x395d26 of _0xfa773b){process['stderr'][_0x13f469(0x20a)](_0x13f469(0x214)+_0x395d26['handler']+_0x13f469(0x1f9)+_0x395d26[_0x13f469(0x218)]+_0x13f469(0x207)+_0x395d26[_0x13f469(0x209)]+'\x0a');}Object['assign'](_0x27856b,_0x5391e3);}}catch{}if(!_0x178ac6){const {waitUntilExit:_0x4637b6}=render(a0_0x2e61b0(Help,{}));await _0x4637b6();return;}const _0x16dc6c=resolveRemovedCommand(_0x178ac6,_0x2a5af1);if(_0x16dc6c)throw CliErrors[_0x13f469(0x1f4)](_0x16dc6c[_0x13f469(0x20c)],_0x16dc6c[_0x13f469(0x215)]);if(!isKnownService(_0x178ac6)){const _0x327f18=resolveDynamicServiceCommand(cli[_0x13f469(0x1fd)],_0x27856b);if(_0x327f18){if(_0x27856b[_0x13f469(0x1fa)]){console[_0x13f469(0x20d)](generateCommandHelp(_0x327f18[_0x13f469(0x206)]));return;}Object['assign'](_0x27856b,_0x327f18[_0x13f469(0x20b)]);const _0x46c7e6=buildConfigFromFlags(_0x27856b);await initGlobalEnvironment(_0x46c7e6);const _0x4b1b6d=createPipelineEnv(_0x46c7e6,_0x27856b);_0x4b1b6d[_0x13f469(0x1f3)]=_0x327f18[_0x13f469(0x1f3)],await runCommand(_0x327f18[_0x13f469(0x206)],_0x4b1b6d);return;}if(_0x27856b[_0x13f469(0x1fa)]){const _0x35c18d=generateDynamicServiceHelp(_0x178ac6);if(_0x35c18d){console['log'](_0x35c18d);return;}}const {waitUntilExit:_0x30ae4e}=render(a0_0x2e61b0(Help,{}));await _0x30ae4e();return;}const _0x31bb05=getServiceEntry(_0x178ac6);if(!_0x2a5af1){if(_0x27856b[_0x13f469(0x1fa)]){console['log'](generateServiceHelp(_0x178ac6));return;}if(_0x31bb05[_0x13f469(0x203)])_0x2a5af1=_0x31bb05[_0x13f469(0x203)];else{console[_0x13f469(0x20d)](generateServiceHelp(_0x178ac6));return;}}const _0x5bb803=findDefinition(_0x178ac6,_0x2a5af1);!_0x5bb803&&(console[_0x13f469(0x20d)](generateServiceHelp(_0x178ac6)),handleError(CliErrors['unknownCommand'](_0x178ac6+'\x20'+_0x2a5af1)));if(_0x27856b[_0x13f469(0x1fa)]){console['log'](generateCommandHelp(_0x5bb803));return;}const _0x303be8=buildConfigFromFlags(_0x27856b);await initGlobalEnvironment(_0x303be8);const _0x113b15=createPipelineEnv(_0x303be8,_0x27856b);_0x113b15[_0x13f469(0x1f3)]=cli[_0x13f469(0x1fd)]['slice'](0x2),await runCommand(_0x5bb803,_0x113b15);}function handleError(_0x34e39e){const _0x24cde9=a0_0x1aff55;if(_0x34e39e instanceof CliError){_0x34e39e['code']==='cancelled'&&(process[_0x24cde9(0x20e)][_0x24cde9(0x20a)](_0x24cde9(0x201)),process['exit'](0x0));console[_0x24cde9(0x217)](_0x24cde9(0x1f6)+_0x34e39e['message']);if(_0x34e39e['hint'])console[_0x24cde9(0x217)](_0x24cde9(0x1fc)+_0x34e39e[_0x24cde9(0x215)]);process[_0x24cde9(0x211)](_0x34e39e['exitCode']);}isUserCancellation(_0x34e39e)&&(process[_0x24cde9(0x20e)][_0x24cde9(0x20a)](_0x24cde9(0x201)),process[_0x24cde9(0x211)](0x0)),console[_0x24cde9(0x217)](_0x24cde9(0x212),_0x34e39e),process[_0x24cde9(0x211)](0x1);}function isUserCancellation(_0x2a3941){const _0x2d97aa=a0_0x1aff55;if(!(_0x2a3941 instanceof Error))return![];if(_0x2a3941[_0x2d97aa(0x1fe)]===_0x2d97aa(0x208))return!![];if(_0x2a3941['code']==='ERR_USE_AFTER_CLOSE')return!![];if(_0x2a3941[_0x2d97aa(0x204)]==='ERR_STREAM_DESTROYED')return!![];return![];}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function a1_0x5a5c(_0xa6fa67,_0x94eca2){_0xa6fa67=_0xa6fa67-0x1b1;const _0x34008b=a1_0x3400();let _0x5a5cab=_0x34008b[_0xa6fa67];return _0x5a5cab;}const a1_0x5c63cb=a1_0x5a5c;(function(_0x396795,_0x39923a){const _0x41d621=a1_0x5a5c,_0x5be9d7=_0x396795();while(!![]){try{const _0x30d3f2=parseInt(_0x41d621(0x1d2))/0x1*(parseInt(_0x41d621(0x1e6))/0x2)+parseInt(_0x41d621(0x1b8))/0x3*(-parseInt(_0x41d621(0x228))/0x4)+-parseInt(_0x41d621(0x1cf))/0x5+parseInt(_0x41d621(0x212))/0x6*(parseInt(_0x41d621(0x1b1))/0x7)+parseInt(_0x41d621(0x1b9))/0x8*(-parseInt(_0x41d621(0x1ba))/0x9)+-parseInt(_0x41d621(0x1e7))/0xa*(parseInt(_0x41d621(0x1fc))/0xb)+parseInt(_0x41d621(0x1fa))/0xc*(parseInt(_0x41d621(0x1ca))/0xd);if(_0x30d3f2===_0x39923a)break;else _0x5be9d7['push'](_0x5be9d7['shift']());}catch(_0x58f485){_0x5be9d7['push'](_0x5be9d7['shift']());}}}(a1_0x3400,0x5b483));import{CliErrors}from'../../errors.js';const CATEGORY_FLAG={'name':'category','type':a1_0x5c63cb(0x1d0),'description':a1_0x5c63cb(0x20b)},KEYWORD_FLAG={'name':a1_0x5c63cb(0x1f9),'type':'string','description':a1_0x5c63cb(0x215)},DOC_CODE_FLAG={'name':a1_0x5c63cb(0x1ea),'type':a1_0x5c63cb(0x1d0),'required':!![],'description':a1_0x5c63cb(0x1b3)},DOCS=[{'code':a1_0x5c63cb(0x210),'category':a1_0x5c63cb(0x205),'title':a1_0x5c63cb(0x1c9),'method':a1_0x5c63cb(0x1e9),'path':'/api/dataset/get-dataset-list-by-app-code','summary':a1_0x5c63cb(0x214),'whenToUse':a1_0x5c63cb(0x226),'pathParams':[],'queryParams':[],'bodySchema':a1_0x5c63cb(0x227),'responseHighlights':['tableData\x20contains\x20dataset\x20id/code/name',a1_0x5c63cb(0x209)],'examples':[a1_0x5c63cb(0x1fe)],'notes':['CLI\x20users\x20should\x20prefer\x20`lovrabet\x20dataset\x20list`\x20for\x20this\x20workflow.'],'markdown':[a1_0x5c63cb(0x1bb),'',a1_0x5c63cb(0x20d)][a1_0x5c63cb(0x1c6)]('\x0a')},{'code':'dataset_detail','category':a1_0x5c63cb(0x205),'title':a1_0x5c63cb(0x1d6),'method':a1_0x5c63cb(0x21c),'path':a1_0x5c63cb(0x1c5),'summary':a1_0x5c63cb(0x223),'whenToUse':a1_0x5c63cb(0x1f0),'pathParams':[],'queryParams':[{'name':'code','description':a1_0x5c63cb(0x1d4)}],'bodySchema':a1_0x5c63cb(0x1cb),'responseHighlights':[a1_0x5c63cb(0x207),a1_0x5c63cb(0x1fb),a1_0x5c63cb(0x22a)],'examples':[a1_0x5c63cb(0x22d)],'notes':[a1_0x5c63cb(0x203)],'markdown':['##\x20Dataset\x20detail','','Inspect\x20field\x20names,\x20relations,\x20and\x20operation\x20metadata\x20for\x20a\x20known\x20dataset\x20code.'][a1_0x5c63cb(0x1c6)]('\x0a')},{'code':a1_0x5c63cb(0x22b),'category':a1_0x5c63cb(0x205),'title':a1_0x5c63cb(0x1e1),'method':a1_0x5c63cb(0x1e9),'path':a1_0x5c63cb(0x1ff),'summary':a1_0x5c63cb(0x1f4),'whenToUse':a1_0x5c63cb(0x1d1),'pathParams':[{'name':a1_0x5c63cb(0x1eb),'description':a1_0x5c63cb(0x21a)},{'name':a1_0x5c63cb(0x1b4),'description':'32-character\x20dataset\x20code'}],'queryParams':[],'bodySchema':a1_0x5c63cb(0x1d7),'responseHighlights':[a1_0x5c63cb(0x1be),a1_0x5c63cb(0x20f)],'examples':[a1_0x5c63cb(0x1bc),a1_0x5c63cb(0x1df)],'notes':['where,\x20select,\x20orderBy,\x20currentPage,\x20and\x20pageSize\x20belong\x20inside\x20one\x20--params\x20JSON\x20object;\x20they\x20are\x20not\x20standalone\x20CLI\x20flags.',a1_0x5c63cb(0x1e4),'Verify\x20tableData\x20and\x20paging\x20before\x20treating\x20the\x20response\x20as\x20a\x20business\x20fact.',a1_0x5c63cb(0x1db)],'markdown':['##\x20Filter\x20dataset\x20data','',a1_0x5c63cb(0x1b5)]['join']('\x0a')},{'code':a1_0x5c63cb(0x1bd),'category':a1_0x5c63cb(0x205),'title':a1_0x5c63cb(0x22e),'method':'POST','path':'/api/{appCode}/{datasetCode}/aggregate','summary':a1_0x5c63cb(0x1e5),'whenToUse':a1_0x5c63cb(0x211),'pathParams':[{'name':'appCode','description':a1_0x5c63cb(0x21a)},{'name':a1_0x5c63cb(0x1b4),'description':a1_0x5c63cb(0x1d4)}],'queryParams':[],'bodySchema':a1_0x5c63cb(0x21d),'responseHighlights':[a1_0x5c63cb(0x1da),'where\x20filters\x20before\x20aggregation'],'examples':[a1_0x5c63cb(0x217)],'notes':[a1_0x5c63cb(0x1d3),'`field`\x20is\x20accepted\x20as\x20a\x20deprecated\x20alias\x20for\x20`column`;\x20new\x20calls\x20should\x20use\x20`column`.'],'markdown':[a1_0x5c63cb(0x1e8),'',a1_0x5c63cb(0x1c2)][a1_0x5c63cb(0x1c6)]('\x0a')},{'code':a1_0x5c63cb(0x1e3),'category':a1_0x5c63cb(0x205),'title':'Get\x20one\x20dataset\x20record','method':a1_0x5c63cb(0x1e9),'path':a1_0x5c63cb(0x1e2),'summary':a1_0x5c63cb(0x219),'whenToUse':a1_0x5c63cb(0x1cc),'pathParams':[{'name':'appCode','description':a1_0x5c63cb(0x21a)},{'name':a1_0x5c63cb(0x1b4),'description':a1_0x5c63cb(0x1d4)}],'queryParams':[],'bodySchema':a1_0x5c63cb(0x21b),'responseHighlights':[a1_0x5c63cb(0x1d5)],'examples':[a1_0x5c63cb(0x20e)],'notes':[a1_0x5c63cb(0x1f5)],'markdown':a1_0x5c63cb(0x1cd)},{'code':a1_0x5c63cb(0x1bf),'category':'dataset','title':a1_0x5c63cb(0x1b7),'method':a1_0x5c63cb(0x1e9),'path':a1_0x5c63cb(0x1de),'summary':'创建数据','whenToUse':a1_0x5c63cb(0x1f7),'pathParams':[{'name':'appCode','description':a1_0x5c63cb(0x21a)},{'name':a1_0x5c63cb(0x1b4),'description':a1_0x5c63cb(0x1d4)}],'queryParams':[],'bodySchema':'{\x22fieldName\x22:\x22value\x22}','responseHighlights':['Returns\x20the\x20created\x20record\x20or\x20backend\x20operation\x20result'],'examples':[a1_0x5c63cb(0x213)],'notes':[a1_0x5c63cb(0x229)],'markdown':a1_0x5c63cb(0x1c0)},{'code':a1_0x5c63cb(0x1dd),'category':'bf','title':a1_0x5c63cb(0x230),'method':a1_0x5c63cb(0x21c),'path':a1_0x5c63cb(0x220),'summary':a1_0x5c63cb(0x1c8),'whenToUse':a1_0x5c63cb(0x1f3),'pathParams':[{'name':a1_0x5c63cb(0x1eb),'description':'Current\x20app\x20code'},{'name':a1_0x5c63cb(0x221),'description':'Exact\x20endpoint\x20function\x20name'}],'queryParams':[],'bodySchema':a1_0x5c63cb(0x1cb),'responseHighlights':[a1_0x5c63cb(0x206)],'examples':['lovrabet\x20bff\x20detail\x20--name\x20<functionName>'],'notes':[a1_0x5c63cb(0x208)],'markdown':a1_0x5c63cb(0x204)},{'code':a1_0x5c63cb(0x224),'category':'bf','title':a1_0x5c63cb(0x216),'method':a1_0x5c63cb(0x1e9),'path':a1_0x5c63cb(0x1ef),'summary':a1_0x5c63cb(0x201),'whenToUse':a1_0x5c63cb(0x222),'pathParams':[{'name':a1_0x5c63cb(0x1eb),'description':'Current\x20app\x20code'},{'name':a1_0x5c63cb(0x221),'description':'Endpoint\x20function\x20name'}],'queryParams':[],'bodySchema':a1_0x5c63cb(0x20a),'responseHighlights':[a1_0x5c63cb(0x1c7)],'examples':['lovrabet\x20bff\x20exec\x20--name\x20<functionName>\x20--params\x20\x27{}\x27'],'notes':[a1_0x5c63cb(0x22c)],'markdown':a1_0x5c63cb(0x1ed)},{'code':'custom_sql_execute','category':a1_0x5c63cb(0x1b6),'title':a1_0x5c63cb(0x1e0),'method':a1_0x5c63cb(0x1e9),'path':a1_0x5c63cb(0x21f),'summary':a1_0x5c63cb(0x225),'whenToUse':a1_0x5c63cb(0x22f),'pathParams':[],'queryParams':[],'bodySchema':'{\x22appCode\x22:\x22app-aa63b188\x22,\x22sqlCode\x22:\x22xxxxxxxx-xxxxxxxx\x22,\x22params\x22:{}}','responseHighlights':['Returns\x20SQL\x20execution\x20payload'],'examples':['lovrabet\x20sql\x20exec\x20--sqlcode\x20<sqlCode>\x20--params\x20\x27{}\x27'],'notes':[a1_0x5c63cb(0x1ce)],'markdown':'##\x20Execute\x20custom\x20SQL\x0a\x0aExecute\x20a\x20configured\x20SQL\x20script\x20by\x20sqlCode.'}];function entrySummary(_0x272332){const _0x3376de=a1_0x5c63cb;return{'code':_0x272332[_0x3376de(0x1ea)],'category':_0x272332[_0x3376de(0x218)],'method':_0x272332[_0x3376de(0x1f6)],'path':_0x272332[_0x3376de(0x1c1)],'summary':_0x272332['summary'],'whenToUse':_0x272332[_0x3376de(0x1d9)]};}export function listApiDocEntries(_0x40347b={}){const _0x57322e=a1_0x5c63cb,_0x455a30=String(_0x40347b[_0x57322e(0x218)]||'')[_0x57322e(0x1dc)](),_0x1beb65=String(_0x40347b[_0x57322e(0x1f9)]||'')[_0x57322e(0x1dc)]()[_0x57322e(0x1ec)]();return DOCS[_0x57322e(0x1f1)](_0x50316c=>{const _0x1c0d65=_0x57322e;if(_0x455a30&&_0x50316c[_0x1c0d65(0x218)]!==_0x455a30)return![];if(!_0x1beb65)return!![];return[_0x50316c['code'],_0x50316c[_0x1c0d65(0x218)],_0x50316c['method'],_0x50316c[_0x1c0d65(0x1c1)],_0x50316c[_0x1c0d65(0x1c3)],_0x50316c[_0x1c0d65(0x1d9)],_0x50316c[_0x1c0d65(0x20c)]]['join']('\x20')['toLowerCase']()[_0x1c0d65(0x1ee)](_0x1beb65);})[_0x57322e(0x1c4)](entrySummary);}function a1_0x3400(){const _0x37b2b0=['{\x22appCode\x22:\x22app-aa63b188\x22,\x22currentPage\x22:1,\x22pageSize\x22:100}','111532HgDfBa','This\x20is\x20a\x20write\x20operation;\x20use\x20dry-run\x20when\x20available\x20and\x20safe\x20fixtures\x20for\x20smoke\x20tests.','operations\x20describes\x20runtime\x20APIs','dataset_data_filter','Script\x20behavior\x20may\x20have\x20side\x20effects;\x20inspect\x20detail\x20first.','lovrabet\x20dataset\x20detail\x20--code\x20<datasetCode>\x20--appcode\x20<appCode>','Aggregate\x20dataset\x20data','已经确认目标\x20sqlCode\x20存在,并需要实际执行该自定义\x20SQL\x20时使用','Get\x20BF\x20endpoint\x20function\x20contract','29771AMTtnz','list','API\x20doc\x20code,\x20for\x20example\x20dataset_list','datasetCode','Use\x20`where`,\x20`select`,\x20`orderBy`,\x20`currentPage`,\x20and\x20`pageSize`\x20to\x20inspect\x20live\x20data\x20shape.','custom_sql','Create\x20dataset\x20record','9xQUCSU','186664WKfRVV','207IGksKA','##\x20List\x20datasets','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','dataset_data_aggregate','tableData\x20contains\x20records','dataset_data_create','##\x20Create\x20dataset\x20record\x0a\x0aCreate\x20one\x20data\x20record\x20in\x20a\x20dataset.','path','Aggregate\x20supports\x20COUNT,\x20SUM,\x20AVG,\x20MAX,\x20and\x20MIN\x20definitions\x20in\x20the\x20`aggregate`\x20array.','summary','map','/api/dataset/getOneByCode?code={datasetCode}','join','Returns\x20script\x20business\x20payload','按应用和函数名精确获取\x20BF\x20运行契约','List\x20datasets','13ohmCsr','None','已经知道记录\x20id,需要按数据集读取单条业务数据时使用','##\x20Get\x20one\x20dataset\x20record\x0a\x0aRead\x20one\x20record\x20by\x20id.','Use\x20`lovrabet\x20sql\x20detail`\x20before\x20execution.','535085QiZmAb','string','需要携带\x20where、orderBy、分页等条件读取业务数据时使用','86069scpvNn','Use\x20`having`\x20only\x20for\x20post-aggregation\x20filters.','32-character\x20dataset\x20code','Returns\x20one\x20matching\x20business\x20record','Dataset\x20detail','{\x22where\x22:{},\x22currentPage\x22:1,\x22pageSize\x22:20}','API\x20doc\x20code\x20not\x20found:\x20','whenToUse','result\x20rows\x20contain\x20aggregate\x20aliases','Use\x20read-only\x20data\x20commands\x20before\x20writing\x20Artifacts\x20that\x20display\x20real\x20data.','trim','bf_detail','/api/{appCode}/{datasetCode}/create','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','Execute\x20custom\x20SQL','Filter\x20dataset\x20data','/api/{appCode}/{datasetCode}/getOne','dataset_data_get_one','For\x20the\x20next\x20page,\x20keep\x20where/select/orderBy/pageSize\x20unchanged\x20and\x20increment\x20only\x20currentPage,\x20which\x20starts\x20at\x201.','聚合查询数据集数据','8lRvqGW','10lEnapR','##\x20Aggregate\x20dataset\x20data','POST','code','appCode','toLowerCase','##\x20Execute\x20BF\x20endpoint\x20function\x0a\x0aExecute\x20a\x20known\x20endpoint\x20script.','includes','/api/endpoint/{appCode}/{functionName}','需要按数据集\x20code\x20获取字段、表信息、关联关系(relations)或操作定义时使用','filter','List\x20available\x20runtime\x20API\x20documentation\x20entries','已经从用户、平台\x20UI\x20或前序上下文确认函数名,需要查看该\x20ENDPOINT\x20的运行态元信息时使用','条件过滤查询数据','Prefer\x20`filter`\x20when\x20the\x20record\x20id\x20is\x20unknown.','method','需要向指定数据集新增一条业务数据时使用','detail','keyword','8894052zlfYMD','relations\x20contains\x20the\x20object-shaped\x20API\x20relations\x20value\x20when\x20returned','4785539ZCPkQq','str','lovrabet\x20dataset\x20list\x20--appcode\x20<appCode>\x20--format\x20compress','/api/{appCode}/{datasetCode}/filter','Show\x20runtime\x20API\x20documentation\x20by\x20code','执行指定\x20BF\x20函数','find','If\x20SDK\x20usage\x20is\x20needed,\x20follow\x20with\x20`lovrabet\x20dataset\x20sdk-doc\x20--code\x20<datasetCode>`.','##\x20Get\x20BF\x20endpoint\x20function\x20contract\x0a\x0aInspect\x20one\x20known\x20endpoint\x20function\x20through\x20the\x20AK-authenticated\x20exact\x20detail\x20API.','dataset','CLI\x20returns\x20appCode/functionName/description/version/gmtModified','fields/properties\x20describe\x20data\x20shape','This\x20is\x20an\x20exact\x20lookup\x20by\x20appCode\x20+\x20functionName.\x20The\x20CLI\x20does\x20not\x20enumerate\x20BFF\x20functions\x20or\x20expose\x20platform-only\x20fields.','paging.totalCount\x20gives\x20total\x20rows','{\x22param\x22:\x22value\x22}','Filter\x20docs\x20by\x20category,\x20for\x20example\x20dataset','title','Use\x20this\x20API\x20or\x20`lovrabet\x20dataset\x20list`\x20to\x20discover\x20available\x20dataset\x20codes\x20before\x20reading\x20data.','lovrabet\x20data\x20getOne\x20--code\x20<datasetCode>\x20--params\x20\x27{\x22id\x22:123}\x27','paging\x20contains\x20pagination','dataset_list','需要按\x20groupBy\x20分组并做\x20count、sum、avg、max、min\x20等聚合统计时使用','636zUXJNh','lovrabet\x20data\x20create\x20--code\x20<datasetCode>\x20--params\x20\x27{\x22name\x22:\x22demo\x22}\x27','分页获取数据集列表','Search\x20docs\x20by\x20code,\x20summary,\x20path,\x20or\x20usage\x20text','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','category','查询单条数据','Current\x20app\x20code','{\x22id\x22:123}','GET','{\x22aggregate\x22:[{\x22column\x22:\x20\x22id\x22,\x22type\x22:\x22COUNT\x22,\x22alias\x22:\x22cnt\x22}],\x22groupBy\x22:[]}','api-doc','/api/custom/executeSql','/client/bff/endpoint/{appCode}/{functionName}','functionName','已经确认目标\x20BF\x20的\x20functionName,且需要实际调用该\x20ENDPOINT\x20函数完成业务操作时使用','获取数据集详情','bf_execute','执行自定义\x20SQL','需要按\x20appCode\x20分页获取运行态数据集列表,并优先收敛可用\x20datasetCode\x20时使用'];a1_0x3400=function(){return _0x37b2b0;};return a1_0x3400();}export function getApiDocDetail(_0x32cec9){const _0x1ed228=a1_0x5c63cb,_0x255ba6=DOCS[_0x1ed228(0x202)](_0x226d34=>_0x226d34[_0x1ed228(0x1ea)]===_0x32cec9);if(!_0x255ba6)throw CliErrors['validation'](_0x1ed228(0x1d8)+_0x32cec9);return{..._0x255ba6};}const apiDocList={'service':'api-doc','command':a1_0x5c63cb(0x1b2),'description':a1_0x5c63cb(0x1f2),'risk':'read','requiresAppCode':![],'flags':[CATEGORY_FLAG,KEYWORD_FLAG],async 'execute'(_0x181677){const _0x4dc8b9=a1_0x5c63cb,_0x5e0ba5=listApiDocEntries({'category':_0x181677[_0x4dc8b9(0x1fd)](_0x4dc8b9(0x218)),'keyword':_0x181677[_0x4dc8b9(0x1fd)]('keyword')});return{'ok':!![],'data':{'total':_0x5e0ba5['length'],'items':_0x5e0ba5}};}},apiDocDetail={'service':a1_0x5c63cb(0x21e),'command':a1_0x5c63cb(0x1f8),'description':a1_0x5c63cb(0x200),'risk':'read','requiresAppCode':![],'flags':[DOC_CODE_FLAG],async 'execute'(_0x447e99){const _0x310694=a1_0x5c63cb;return{'ok':!![],'data':getApiDocDetail(_0x447e99[_0x310694(0x1fd)](_0x310694(0x1ea)))};}};export const apiDocDefinitions=[apiDocList,apiDocDetail];
|
|
1
|
+
const a1_0x3f1da8=a1_0x44bf;(function(_0x1daf32,_0x2a9837){const _0x3a7436=a1_0x44bf,_0x49cbb4=_0x1daf32();while(!![]){try{const _0x5d9e3=-parseInt(_0x3a7436(0xff))/0x1+parseInt(_0x3a7436(0xe2))/0x2*(-parseInt(_0x3a7436(0x135))/0x3)+parseInt(_0x3a7436(0xfb))/0x4+parseInt(_0x3a7436(0xca))/0x5+-parseInt(_0x3a7436(0x124))/0x6+parseInt(_0x3a7436(0xbf))/0x7+-parseInt(_0x3a7436(0xf2))/0x8*(-parseInt(_0x3a7436(0xf7))/0x9);if(_0x5d9e3===_0x2a9837)break;else _0x49cbb4['push'](_0x49cbb4['shift']());}catch(_0x54fa47){_0x49cbb4['push'](_0x49cbb4['shift']());}}}(a1_0xf575,0x8f87d));import{CliErrors}from'../../errors.js';const CATEGORY_FLAG={'name':'category','type':a1_0x3f1da8(0xd0),'description':a1_0x3f1da8(0xdc)},KEYWORD_FLAG={'name':a1_0x3f1da8(0xf3),'type':a1_0x3f1da8(0xd0),'description':a1_0x3f1da8(0x12f)},DOC_CODE_FLAG={'name':a1_0x3f1da8(0x138),'type':a1_0x3f1da8(0xd0),'required':!![],'description':'API\x20doc\x20code,\x20for\x20example\x20dataset_list'},DOCS=[{'code':a1_0x3f1da8(0x119),'category':a1_0x3f1da8(0xbe),'title':a1_0x3f1da8(0xe1),'method':'POST','path':a1_0x3f1da8(0x11e),'summary':'分页获取数据集列表','whenToUse':'需要按\x20appCode\x20分页获取运行态数据集列表,并优先收敛可用\x20datasetCode\x20时使用','pathParams':[],'queryParams':[],'bodySchema':'{\x22appCode\x22:\x22app-aa63b188\x22,\x22currentPage\x22:1,\x22pageSize\x22:100}','responseHighlights':[a1_0x3f1da8(0x12e),a1_0x3f1da8(0xe9)],'examples':[a1_0x3f1da8(0x12c)],'notes':[a1_0x3f1da8(0xd4)],'markdown':['##\x20List\x20datasets','','Use\x20this\x20API\x20or\x20`lovrabet\x20dataset\x20list`\x20to\x20discover\x20available\x20dataset\x20codes\x20before\x20reading\x20data.']['join']('\x0a')},{'code':a1_0x3f1da8(0x121),'category':a1_0x3f1da8(0xbe),'title':'Dataset\x20detail','method':a1_0x3f1da8(0xbd),'path':a1_0x3f1da8(0xc2),'summary':a1_0x3f1da8(0xc4),'whenToUse':a1_0x3f1da8(0x11d),'pathParams':[],'queryParams':[{'name':'code','description':a1_0x3f1da8(0x10a)}],'bodySchema':'None','responseHighlights':[a1_0x3f1da8(0x127),'relations\x20contains\x20the\x20object-shaped\x20API\x20relations\x20value\x20when\x20returned',a1_0x3f1da8(0x118)],'examples':[a1_0x3f1da8(0x115)],'notes':['If\x20SDK\x20usage\x20is\x20needed,\x20follow\x20with\x20`lovrabet\x20dataset\x20sdk-doc\x20--code\x20<datasetCode>`.'],'markdown':[a1_0x3f1da8(0x10c),'',a1_0x3f1da8(0xe8)][a1_0x3f1da8(0x109)]('\x0a')},{'code':a1_0x3f1da8(0xed),'category':a1_0x3f1da8(0xbe),'title':a1_0x3f1da8(0xc9),'method':a1_0x3f1da8(0x107),'path':a1_0x3f1da8(0xda),'summary':a1_0x3f1da8(0x123),'whenToUse':a1_0x3f1da8(0xbc),'pathParams':[{'name':a1_0x3f1da8(0xfe),'description':a1_0x3f1da8(0x134)},{'name':'datasetCode','description':a1_0x3f1da8(0x10a)}],'queryParams':[],'bodySchema':a1_0x3f1da8(0xdf),'responseHighlights':[a1_0x3f1da8(0xea),a1_0x3f1da8(0xd9)],'examples':[a1_0x3f1da8(0xf1),a1_0x3f1da8(0x120)],'notes':[a1_0x3f1da8(0x112),a1_0x3f1da8(0x11c),a1_0x3f1da8(0x139),a1_0x3f1da8(0xc8)],'markdown':['##\x20Filter\x20dataset\x20data','','Use\x20`where`,\x20`select`,\x20`orderBy`,\x20`currentPage`,\x20and\x20`pageSize`\x20to\x20inspect\x20live\x20data\x20shape.'][a1_0x3f1da8(0x109)]('\x0a')},{'code':a1_0x3f1da8(0xfa),'category':a1_0x3f1da8(0xbe),'title':a1_0x3f1da8(0x122),'method':a1_0x3f1da8(0x107),'path':a1_0x3f1da8(0x113),'summary':a1_0x3f1da8(0x116),'whenToUse':a1_0x3f1da8(0xd2),'pathParams':[{'name':a1_0x3f1da8(0xfe),'description':a1_0x3f1da8(0x134)},{'name':'datasetCode','description':a1_0x3f1da8(0x10a)}],'queryParams':[],'bodySchema':a1_0x3f1da8(0x12b),'responseHighlights':[a1_0x3f1da8(0x130),'where\x20filters\x20before\x20aggregation'],'examples':['lovrabet\x20data\x20aggregate\x20--code\x20<datasetCode>\x20--params\x20\x27{\x22aggregate\x22:[{\x22column\x22:\x22id\x22,\x22type\x22:\x22COUNT\x22,\x22alias\x22:\x22cnt\x22}]}\x27'],'notes':[a1_0x3f1da8(0x10d),a1_0x3f1da8(0xee)],'markdown':['##\x20Aggregate\x20dataset\x20data','',a1_0x3f1da8(0x103)][a1_0x3f1da8(0x109)]('\x0a')},{'code':a1_0x3f1da8(0xe0),'category':a1_0x3f1da8(0xbe),'title':a1_0x3f1da8(0xfc),'method':'POST','path':'/api/{appCode}/{datasetCode}/getOne','summary':a1_0x3f1da8(0xf9),'whenToUse':a1_0x3f1da8(0x108),'pathParams':[{'name':a1_0x3f1da8(0xfe),'description':a1_0x3f1da8(0x134)},{'name':a1_0x3f1da8(0xe3),'description':'32-character\x20dataset\x20code'}],'queryParams':[],'bodySchema':'{\x22id\x22:123}','responseHighlights':[a1_0x3f1da8(0xeb)],'examples':[a1_0x3f1da8(0x11a)],'notes':[a1_0x3f1da8(0xdd)],'markdown':a1_0x3f1da8(0x10e)},{'code':a1_0x3f1da8(0x131),'category':'dataset','title':a1_0x3f1da8(0x13a),'method':a1_0x3f1da8(0x107),'path':'/api/{appCode}/{datasetCode}/create','summary':a1_0x3f1da8(0xe6),'whenToUse':a1_0x3f1da8(0xf4),'pathParams':[{'name':a1_0x3f1da8(0xfe),'description':a1_0x3f1da8(0x134)},{'name':a1_0x3f1da8(0xe3),'description':'32-character\x20dataset\x20code'}],'queryParams':[],'bodySchema':a1_0x3f1da8(0x102),'responseHighlights':[a1_0x3f1da8(0xde)],'examples':[a1_0x3f1da8(0x125)],'notes':[a1_0x3f1da8(0xcc)],'markdown':a1_0x3f1da8(0xc7)},{'code':a1_0x3f1da8(0x11f),'category':'bf','title':'Get\x20BF\x20endpoint\x20function\x20contract','method':a1_0x3f1da8(0xbd),'path':'/client/bff/endpoint/{appCode}/{functionName}','summary':a1_0x3f1da8(0xcf),'whenToUse':'已经从用户、平台\x20UI\x20或前序上下文确认函数名,需要查看该\x20ENDPOINT\x20的运行态元信息时使用','pathParams':[{'name':a1_0x3f1da8(0xfe),'description':a1_0x3f1da8(0x134)},{'name':a1_0x3f1da8(0xe7),'description':a1_0x3f1da8(0x136)}],'queryParams':[],'bodySchema':a1_0x3f1da8(0x129),'responseHighlights':[a1_0x3f1da8(0xd3)],'examples':[a1_0x3f1da8(0xc5)],'notes':[a1_0x3f1da8(0x12a)],'markdown':a1_0x3f1da8(0xd1)},{'code':a1_0x3f1da8(0x105),'category':'bf','title':a1_0x3f1da8(0x11b),'method':a1_0x3f1da8(0x107),'path':a1_0x3f1da8(0xf8),'summary':a1_0x3f1da8(0xcd),'whenToUse':'已经确认目标\x20BF\x20的\x20functionName,且需要实际调用该\x20ENDPOINT\x20函数完成业务操作时使用','pathParams':[{'name':'appCode','description':'Current\x20app\x20code'},{'name':'functionName','description':'Endpoint\x20function\x20name'}],'queryParams':[],'bodySchema':a1_0x3f1da8(0x101),'responseHighlights':['Returns\x20script\x20business\x20payload'],'examples':[a1_0x3f1da8(0xce)],'notes':[a1_0x3f1da8(0xd7)],'markdown':a1_0x3f1da8(0x132)},{'code':a1_0x3f1da8(0x110),'category':a1_0x3f1da8(0x111),'title':a1_0x3f1da8(0xd8),'method':a1_0x3f1da8(0x107),'path':a1_0x3f1da8(0xfd),'summary':a1_0x3f1da8(0xc0),'whenToUse':a1_0x3f1da8(0x104),'pathParams':[],'queryParams':[],'bodySchema':a1_0x3f1da8(0xec),'responseHighlights':[a1_0x3f1da8(0x114)],'examples':[a1_0x3f1da8(0xd6)],'notes':[a1_0x3f1da8(0xf6)],'markdown':a1_0x3f1da8(0xd5)}];function a1_0x44bf(_0x3e32b1,_0x4250b7){_0x3e32b1=_0x3e32b1-0xbc;const _0xf575a3=a1_0xf575();let _0x44bf26=_0xf575a3[_0x3e32b1];return _0x44bf26;}function a1_0xf575(){const _0x4cebd7=['lovrabet\x20data\x20getOne\x20--code\x20<datasetCode>\x20--params\x20\x27{\x22id\x22:123}\x27','Execute\x20BF\x20endpoint\x20function','For\x20the\x20next\x20page,\x20keep\x20where/select/orderBy/pageSize\x20unchanged\x20and\x20increment\x20only\x20currentPage,\x20which\x20starts\x20at\x201.','需要按数据集\x20code\x20获取字段、表信息、关联关系(relations)或操作定义时使用','/api/dataset/get-dataset-list-by-app-code','bf_detail','lovrabet\x20data\x20filter\x20--code\x20<datasetCode>\x20--params\x20\x27{\x22where\x22:{\x22status\x22:{\x22$eq\x22:\x22active\x22}},\x22orderBy\x22:[{\x22id\x22:\x22asc\x22}],\x22currentPage\x22:2,\x22pageSize\x22:20}\x27','dataset_detail','Aggregate\x20dataset\x20data','条件过滤查询数据','3089292BbbOLj','lovrabet\x20data\x20create\x20--code\x20<datasetCode>\x20--params\x20\x27{\x22name\x22:\x22demo\x22}\x27','api-doc','fields/properties\x20describe\x20data\x20shape','list','None','This\x20is\x20an\x20exact\x20lookup\x20by\x20appCode\x20+\x20functionName.\x20The\x20CLI\x20does\x20not\x20enumerate\x20BFF\x20functions\x20or\x20expose\x20platform-only\x20fields.','{\x22aggregate\x22:[{\x22column\x22:\x20\x22id\x22,\x22type\x22:\x22COUNT\x22,\x22alias\x22:\x22cnt\x22}],\x22groupBy\x22:[]}','lovrabet\x20dataset\x20list\x20--appcode\x20<appCode>\x20--format\x20compress','detail','tableData\x20contains\x20dataset\x20id/code/name','Search\x20docs\x20by\x20code,\x20summary,\x20path,\x20or\x20usage\x20text','result\x20rows\x20contain\x20aggregate\x20aliases','dataset_data_create','##\x20Execute\x20BF\x20endpoint\x20function\x0a\x0aExecute\x20a\x20known\x20endpoint\x20script.','read','Current\x20app\x20code','3rCexPv','Exact\x20endpoint\x20function\x20name','category','code','Verify\x20tableData\x20and\x20paging\x20before\x20treating\x20the\x20response\x20as\x20a\x20business\x20fact.','Create\x20dataset\x20record','需要携带\x20where、orderBy、分页等条件读取业务数据时使用','GET','dataset','647696TwLxBc','执行自定义\x20SQL','str','/api/dataset/getOneByCode?code={datasetCode}','trim','获取数据集详情','lovrabet\x20bff\x20detail\x20--name\x20<functionName>','path','##\x20Create\x20dataset\x20record\x0a\x0aCreate\x20one\x20data\x20record\x20in\x20a\x20dataset.','Use\x20read-only\x20data\x20commands\x20before\x20writing\x20Artifacts\x20that\x20display\x20real\x20data.','Filter\x20dataset\x20data','4005345HVynis','List\x20available\x20runtime\x20API\x20documentation\x20entries','This\x20is\x20a\x20write\x20operation;\x20use\x20dry-run\x20when\x20available\x20and\x20safe\x20fixtures\x20for\x20smoke\x20tests.','执行指定\x20BF\x20函数','lovrabet\x20bff\x20exec\x20--name\x20<functionName>\x20--params\x20\x27{}\x27','按应用和函数名精确获取\x20BF\x20运行契约','string','##\x20Get\x20BF\x20endpoint\x20function\x20contract\x0a\x0aInspect\x20one\x20known\x20endpoint\x20function\x20through\x20the\x20AK-authenticated\x20exact\x20detail\x20API.','需要按\x20groupBy\x20分组并做\x20count、sum、avg、max、min\x20等聚合统计时使用','CLI\x20returns\x20appCode/functionName/description/version/gmtModified','CLI\x20users\x20should\x20prefer\x20`lovrabet\x20dataset\x20list`\x20for\x20this\x20workflow.','##\x20Execute\x20custom\x20SQL\x0a\x0aExecute\x20a\x20configured\x20SQL\x20script\x20by\x20sqlCode.','lovrabet\x20sql\x20exec\x20--sqlcode\x20<sqlCode>\x20--params\x20\x27{}\x27','Script\x20behavior\x20may\x20have\x20side\x20effects;\x20inspect\x20detail\x20first.','Execute\x20custom\x20SQL','paging\x20contains\x20pagination','/api/{appCode}/{datasetCode}/filter','find','Filter\x20docs\x20by\x20category,\x20for\x20example\x20dataset','Prefer\x20`filter`\x20when\x20the\x20record\x20id\x20is\x20unknown.','Returns\x20the\x20created\x20record\x20or\x20backend\x20operation\x20result','{\x22where\x22:{},\x22currentPage\x22:1,\x22pageSize\x22:20}','dataset_data_get_one','List\x20datasets','670930BRNcoe','datasetCode','map','method','创建数据','functionName','Inspect\x20field\x20names,\x20relations,\x20and\x20operation\x20metadata\x20for\x20a\x20known\x20dataset\x20code.','paging.totalCount\x20gives\x20total\x20rows','tableData\x20contains\x20records','Returns\x20one\x20matching\x20business\x20record','{\x22appCode\x22:\x22app-aa63b188\x22,\x22sqlCode\x22:\x22xxxxxxxx-xxxxxxxx\x22,\x22params\x22:{}}','dataset_data_filter','`field`\x20is\x20accepted\x20as\x20a\x20deprecated\x20alias\x20for\x20`column`;\x20new\x20calls\x20should\x20use\x20`column`.','includes','whenToUse','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','760lIOGuh','keyword','需要向指定数据集新增一条业务数据时使用','title','Use\x20`lovrabet\x20sql\x20detail`\x20before\x20execution.','63117pyRRzF','/api/endpoint/{appCode}/{functionName}','查询单条数据','dataset_data_aggregate','1408312ETfaFZ','Get\x20one\x20dataset\x20record','/api/custom/executeSql','appCode','473662kkgXAH','summary','{\x22param\x22:\x22value\x22}','{\x22fieldName\x22:\x22value\x22}','Aggregate\x20supports\x20COUNT,\x20SUM,\x20AVG,\x20MAX,\x20and\x20MIN\x20definitions\x20in\x20the\x20`aggregate`\x20array.','已经确认目标\x20sqlCode\x20存在,并需要实际执行该自定义\x20SQL\x20时使用','bf_execute','validation','POST','已经知道记录\x20id,需要按数据集读取单条业务数据时使用','join','32-character\x20dataset\x20code','length','##\x20Dataset\x20detail','Use\x20`having`\x20only\x20for\x20post-aggregation\x20filters.','##\x20Get\x20one\x20dataset\x20record\x0a\x0aRead\x20one\x20record\x20by\x20id.','toLowerCase','custom_sql_execute','custom_sql','where,\x20select,\x20orderBy,\x20currentPage,\x20and\x20pageSize\x20belong\x20inside\x20one\x20--params\x20JSON\x20object;\x20they\x20are\x20not\x20standalone\x20CLI\x20flags.','/api/{appCode}/{datasetCode}/aggregate','Returns\x20SQL\x20execution\x20payload','lovrabet\x20dataset\x20detail\x20--code\x20<datasetCode>\x20--appcode\x20<appCode>','聚合查询数据集数据','filter','operations\x20describes\x20runtime\x20APIs','dataset_list'];a1_0xf575=function(){return _0x4cebd7;};return a1_0xf575();}function entrySummary(_0x5e78d4){const _0x516db2=a1_0x3f1da8;return{'code':_0x5e78d4['code'],'category':_0x5e78d4[_0x516db2(0x137)],'method':_0x5e78d4[_0x516db2(0xe5)],'path':_0x5e78d4[_0x516db2(0xc6)],'summary':_0x5e78d4[_0x516db2(0x100)],'whenToUse':_0x5e78d4['whenToUse']};}export function listApiDocEntries(_0x70b91b={}){const _0x244b7e=a1_0x3f1da8,_0x307760=String(_0x70b91b[_0x244b7e(0x137)]||'')[_0x244b7e(0xc3)](),_0x1793ed=String(_0x70b91b[_0x244b7e(0xf3)]||'')['trim']()[_0x244b7e(0x10f)]();return DOCS[_0x244b7e(0x117)](_0x359f0c=>{const _0x236f45=_0x244b7e;if(_0x307760&&_0x359f0c[_0x236f45(0x137)]!==_0x307760)return![];if(!_0x1793ed)return!![];return[_0x359f0c[_0x236f45(0x138)],_0x359f0c['category'],_0x359f0c[_0x236f45(0xe5)],_0x359f0c[_0x236f45(0xc6)],_0x359f0c[_0x236f45(0x100)],_0x359f0c[_0x236f45(0xf0)],_0x359f0c[_0x236f45(0xf5)]][_0x236f45(0x109)]('\x20')[_0x236f45(0x10f)]()[_0x236f45(0xef)](_0x1793ed);})[_0x244b7e(0xe4)](entrySummary);}export function getApiDocDetail(_0x40dbff){const _0x3fea71=a1_0x3f1da8,_0x8a0c51=DOCS[_0x3fea71(0xdb)](_0x5e7cae=>_0x5e7cae['code']===_0x40dbff);if(!_0x8a0c51)throw CliErrors[_0x3fea71(0x106)]('API\x20doc\x20code\x20not\x20found:\x20'+_0x40dbff);return{..._0x8a0c51};}const apiDocList={'service':a1_0x3f1da8(0x126),'command':a1_0x3f1da8(0x128),'description':a1_0x3f1da8(0xcb),'risk':a1_0x3f1da8(0x133),'requiresAppCode':![],'flags':[CATEGORY_FLAG,KEYWORD_FLAG],async 'execute'(_0x56286c){const _0x5bce12=a1_0x3f1da8,_0x50adb5=listApiDocEntries({'category':_0x56286c[_0x5bce12(0xc1)](_0x5bce12(0x137)),'keyword':_0x56286c[_0x5bce12(0xc1)](_0x5bce12(0xf3))});return{'ok':!![],'data':{'total':_0x50adb5[_0x5bce12(0x10b)],'items':_0x50adb5}};}},apiDocDetail={'service':a1_0x3f1da8(0x126),'command':a1_0x3f1da8(0x12d),'description':'Show\x20runtime\x20API\x20documentation\x20by\x20code','risk':'read','requiresAppCode':![],'flags':[DOC_CODE_FLAG],async 'execute'(_0x5b50f0){const _0x379cbb=a1_0x3f1da8;return{'ok':!![],'data':getApiDocDetail(_0x5b50f0[_0x379cbb(0xc1)](_0x379cbb(0x138)))};}};export const apiDocDefinitions=[apiDocList,apiDocDetail];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x271af8,_0x53d895){const _0x280779=a2_0x22b6,_0x2377bd=_0x271af8();while(!![]){try{const _0x532eb0=-parseInt(_0x280779(0xea))/0x1+parseInt(_0x280779(0xef))/0x2*(-parseInt(_0x280779(0xed))/0x3)+parseInt(_0x280779(0xe6))/0x4*(parseInt(_0x280779(0xf7))/0x5)+-parseInt(_0x280779(0xe8))/0x6+-parseInt(_0x280779(0xfc))/0x7*(parseInt(_0x280779(0xe5))/0x8)+parseInt(_0x280779(0xf8))/0x9*(parseInt(_0x280779(0xf1))/0xa)+parseInt(_0x280779(0xf2))/0xb;if(_0x532eb0===_0x53d895)break;else _0x2377bd['push'](_0x2377bd['shift']());}catch(_0x2b3f41){_0x2377bd['push'](_0x2377bd['shift']());}}}(a2_0xeac0,0x8542f));import{createHash}from'node:crypto';import{existsSync,mkdirSync,readFileSync,renameSync,unlinkSync,writeFileSync}from'node:fs';function a2_0xeac0(){const _0x5e8109=['EACCES','10Kovkfk','19009375MJytQz','digest','EXDEV','homeDirName','my-apps.json','5KyvyhO','8357571alWsXq','.tmp','items','parse','12418fLSCGf','unknown','slice','find','trim','4712NrGLUg','529340alITeH','code','1254402hhISVy','EPERM','26522jovOMI','appName','stringify','2888295uflPVa','utf8','2YqGUVw'];a2_0xeac0=function(){return _0x5e8109;};return a2_0xeac0();}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(_0x1a9b09){const _0x16722b=a2_0x22b6,_0x537598=_0x1a9b09['trim'](),_0x569258=_0x537598['slice'](-0x6)||_0x16722b(0xfd),_0x5bddaa=createHash('sha256')['update'](_0x537598)[_0x16722b(0xf3)]('hex')[_0x16722b(0xe2)](0x0,0xc);return'ak_'+_0x569258+'_'+_0x5bddaa;}export function getAppCacheFilePath(_0x5829a9,_0x58d20b){const _0x191bb5=a2_0x22b6;return resolve(homedir(),PRODUCT_CONFIG[_0x191bb5(0xf5)],'cache',_0x5829a9,fingerprintAccessKey(_0x58d20b),_0x191bb5(0xf6));}function a2_0x22b6(_0x468c8b,_0x18c92c){_0x468c8b=_0x468c8b-0xe2;const _0xeac004=a2_0xeac0();let _0x22b657=_0xeac004[_0x468c8b];return _0x22b657;}export function readCachedAppList(_0x2b9284,_0x18e7fe){const _0x28c7f4=a2_0x22b6;if(!_0x18e7fe?.[_0x28c7f4(0xe4)]())return null;const _0x29590b=getAppCacheFilePath(_0x2b9284,_0x18e7fe);if(!existsSync(_0x29590b))return null;try{const _0x19c33b=readFileSync(_0x29590b,_0x28c7f4(0xee));if(!_0x19c33b['trim']())return null;const _0x581302=JSON[_0x28c7f4(0xfb)](_0x19c33b);if(!Array['isArray'](_0x581302['items']))return null;return _0x581302;}catch{return null;}}export function writeCachedAppList(_0x249f68,_0x227c09,_0x195acc){const _0x29923a=a2_0x22b6,_0x3315cb=getAppCacheFilePath(_0x249f68,_0x227c09),_0x180886=dirname(_0x3315cb);!existsSync(_0x180886)&&mkdirSync(_0x180886,{'recursive':!![]});const _0x2465c7=_0x3315cb+_0x29923a(0xf9);try{writeFileSync(_0x2465c7,JSON[_0x29923a(0xec)](_0x195acc,null,0x2)+'\x0a',{'encoding':_0x29923a(0xee),'mode':0x180});try{renameSync(_0x2465c7,_0x3315cb);}catch(_0x51c737){if(_0x51c737['code']===_0x29923a(0xe9)||_0x51c737[_0x29923a(0xe7)]===_0x29923a(0xf4)||_0x51c737[_0x29923a(0xe7)]===_0x29923a(0xf0)){writeFileSync(_0x3315cb,JSON[_0x29923a(0xec)](_0x195acc,null,0x2)+'\x0a',{'encoding':_0x29923a(0xee)});try{unlinkSync(_0x2465c7);}catch{}}else throw _0x51c737;}}catch(_0x22548c){try{unlinkSync(_0x2465c7);}catch{}throw _0x22548c;}return _0x3315cb;}export function resolveCachedAppCode(_0x1faa0f,_0x1cc7f8,_0x88be6b){const _0x15ac93=a2_0x22b6;if(!_0x1faa0f)return undefined;const _0x75da57=readCachedAppList(_0x1cc7f8,_0x88be6b),_0x15f210=_0x75da57?.[_0x15ac93(0xfa)][_0x15ac93(0xe3)](_0x38026e=>_0x38026e[_0x15ac93(0xeb)]===_0x1faa0f&&isRuntimeAccessibleApp(_0x38026e));return _0x15f210?.['appCode']?.[_0x15ac93(0xe4)]()||undefined;}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a3_0x359dcd=a3_0x3676;(function(_0x3e8e4c,_0xbf68dd){const _0x21a109=a3_0x3676,_0x203727=_0x3e8e4c();while(!![]){try{const _0x46faaa=parseInt(_0x21a109(0x160))/0x1+parseInt(_0x21a109(0x13a))/0x2+-parseInt(_0x21a109(0x158))/0x3*(parseInt(_0x21a109(0x14b))/0x4)+parseInt(_0x21a109(0x15d))/0x5*(parseInt(_0x21a109(0x141))/0x6)+-parseInt(_0x21a109(0x139))/0x7*(parseInt(_0x21a109(0x15c))/0x8)+-parseInt(_0x21a109(0x150))/0x9+parseInt(_0x21a109(0x137))/0xa;if(_0x46faaa===_0xbf68dd)break;else _0x203727['push'](_0x203727['shift']());}catch(_0x9ee7b0){_0x203727['push'](_0x203727['shift']());}}}(a3_0x3726,0x70bea));import{appImportFlagDefs,runAppImport}from'../../commands/init.js';import{getEnv,RUNTIME_ENV_VALUES}from'../../constant/env.js';import{buildAppProfileListFields}from'../../config/schema.js';import{enrichAppListItemsWithMergedSelection}from'../../commands/app/shared.js';import{filterRuntimeAccessibleApps,findAppByCode,isRuntimeAccessibleApp}from'../../commands/app/eligibility.js';function collectFlags(_0x5c6419,_0xcf643d){const _0x25afef=a3_0x3676,_0xb9f911={};for(const _0x85794e of _0xcf643d){const _0x3055b9=_0x85794e['type']==='boolean'?_0x5c6419[_0x25afef(0x14e)](_0x85794e[_0x25afef(0x155)]):_0x5c6419[_0x25afef(0x152)](_0x85794e[_0x25afef(0x155)]);if(_0x3055b9!==''&&_0x3055b9!==![])_0xb9f911[_0x85794e[_0x25afef(0x155)]]=_0x3055b9;}if(_0x5c6419[_0x25afef(0x162)])_0xb9f911[_0x25afef(0x162)]=!![];return _0xb9f911;}function normalizeLanguages(_0x1a76c3){const _0x144618=a3_0x3676;if(!Array['isArray'](_0x1a76c3))return[];return _0x1a76c3[_0x144618(0x124)](_0x542849=>typeof _0x542849===_0x144618(0x147))[_0x144618(0x15a)](_0x59ee27=>_0x59ee27[_0x144618(0x13b)]())[_0x144618(0x124)](Boolean);}function a3_0x3676(_0x4021d7,_0x57d971){_0x4021d7=_0x4021d7-0x122;const _0x372660=a3_0x3726();let _0x36760e=_0x372660[_0x4021d7];return _0x36760e;}function a3_0x3726(){const _0x2a791d=['从\x20.rabetbase.json\x20文件导入默认应用选择','29100LokraF','Force\x20remote\x20fetch\x20and\x20refresh\x20local\x20cache','list','bool','env','993519fLvTjz','cachePath','str','appPublishStatus','langs','name','entries','pull','147GIUwWi','enableI18n','map','List\x20apps\x20available\x20to\x20the\x20current\x20access\x20key','152IABMVL','5ocXpyV','appOwnerName','source','5700kAKVkH','read','nonInteractive','Refreshed\x20app\x20cache\x20with\x20','boolean','cache','filter','i18nInfo','\x20app(s)\x20for\x20env=\x22','Target\x20environment\x20(default:\x20current\x20env)','No\x20apps\x20found\x20on\x20the\x20platform.','items','no-cache','app','accessKey','mergedCli','Include\x20unpublished\x20apps\x20for\x20diagnostics','projectPath','write','appCode','globalPath','push','Read\x20app\x20list\x20from\x20local\x20cache\x20only','将从平台读取当前账号可用的应用列表,并覆盖对应环境的本地应用缓存;不会修改平台应用。','../../commands/app/remote-source.js','3002630TiozYl','local','39179tapIFz','1045340FHhWVS','trim','Filter\x20by\x20environment\x20(default:\x20current\x20env)','从平台刷新本地应用缓存','Read\x20from\x20local\x20cache\x20only','\x20cached\x20app(s)\x20for\x20env=\x22','appcode','1238268nApiUZ','appName','find','fetchedAt','remote','Loaded\x20','string','length','import'];a3_0x3726=function(){return _0x2a791d;};return a3_0x3726();}function buildRemoteAppI18nFields(_0x2ac4cf){const _0x4b49ca=a3_0x3676,_0x29b8dc=normalizeLanguages(_0x2ac4cf['i18nInfo']?.[_0x4b49ca(0x154)]);return{'enableI18n':typeof _0x2ac4cf[_0x4b49ca(0x159)]===_0x4b49ca(0x122)?_0x2ac4cf[_0x4b49ca(0x159)]:null,'languages':_0x29b8dc,'i18nInfo':_0x2ac4cf[_0x4b49ca(0x125)]?{..._0x2ac4cf[_0x4b49ca(0x125)],'langs':_0x29b8dc[_0x4b49ca(0x148)]?_0x29b8dc:null}:null};}const listDef={'service':'app','command':a3_0x359dcd(0x14d),'description':a3_0x359dcd(0x15b),'risk':a3_0x359dcd(0x161),'requiresAuth':!![],'requiresAppCode':![],'hasFormat':!![],'flags':[{'name':a3_0x359dcd(0x14f),'type':'string','description':a3_0x359dcd(0x13c),'enum':[...RUNTIME_ENV_VALUES]},{'name':a3_0x359dcd(0x138),'type':a3_0x359dcd(0x122),'description':a3_0x359dcd(0x134),'default':![]},{'name':'no-cache','type':a3_0x359dcd(0x122),'description':a3_0x359dcd(0x14c),'default':![]},{'name':'include-unpublished','type':'boolean','description':a3_0x359dcd(0x12e),'default':![]}],async 'execute'(_0xbf802c){const _0x3cc220=a3_0x359dcd,_0x57692b=_0xbf802c[_0x3cc220(0x152)](_0x3cc220(0x14f))||_0xbf802c['envName']||getEnv()||'production',_0x1e6e21=_0xbf802c[_0x3cc220(0x14e)](_0x3cc220(0x138)),_0x15c38b=_0xbf802c[_0x3cc220(0x14e)](_0x3cc220(0x12a)),_0x575791=_0xbf802c[_0x3cc220(0x14e)]('include-unpublished'),{readRawConfigWithLayers:_0x55e46e,resolveDefaultAppSource:_0x2e22b2,getLocalAppAliases:_0x163ad2}=await import('../../context.js'),{getRemoteAppList:_0x510a96}=await import(_0x3cc220(0x136)),{config:_0xedac48,layers:_0xc15fe5}=_0x55e46e(),_0x53aa8c=_0x2e22b2(_0xc15fe5),{defaultApp:_0x2943d6}=_0xedac48,_0x8e1b9c=await _0x510a96({'env':_0x57692b,'accessKey':_0xbf802c[_0x3cc220(0x12c)],'localOnly':_0x1e6e21,'noCache':_0x15c38b}),_0x3a0aeb=_0x575791?_0x8e1b9c[_0x3cc220(0x129)]:filterRuntimeAccessibleApps(_0x8e1b9c[_0x3cc220(0x129)]),_0x39a57e=_0x8e1b9c[_0x3cc220(0x129)][_0x3cc220(0x148)]-_0x3a0aeb[_0x3cc220(0x148)],_0x1a8bb4=_0x3a0aeb[_0x3cc220(0x15a)](_0x8f16d0=>{const _0x25e99a=_0x3cc220;return{'name':_0x8f16d0[_0x25e99a(0x142)],'appcode':_0x8f16d0[_0x25e99a(0x131)],'named':!![],'definedIn':_0x25e99a(0x145),'isDefault':_0x8f16d0[_0x25e99a(0x142)]===_0x2943d6,...buildAppProfileListFields(_0x57692b),...buildRemoteAppI18nFields(_0x8f16d0),'source':_0x8e1b9c['source'],'owner':_0x8f16d0[_0x25e99a(0x15e)]??null,'status':_0x8f16d0[_0x25e99a(0x153)]??null,'cachedAt':_0x8e1b9c[_0x25e99a(0x144)]};}),_0x1c13bc=_0x163ad2(_0xedac48);let _0x165858=0x0;for(const [_0x53fcff,_0x570964]of Object[_0x3cc220(0x156)](_0x1c13bc)){const _0x58c332=typeof _0x570964[_0x3cc220(0x140)]==='string'?_0x570964[_0x3cc220(0x140)][_0x3cc220(0x13b)]():'';if(!_0x58c332)continue;const _0x33a745=findAppByCode(_0x8e1b9c[_0x3cc220(0x129)],_0x58c332);if(!_0x575791&&_0x33a745&&!isRuntimeAccessibleApp(_0x33a745))continue;_0x165858+=0x1,_0x1a8bb4[_0x3cc220(0x133)]({'name':_0x53fcff,'appcode':_0x58c332,'named':!![],'definedIn':'local','isDefault':_0x53fcff===_0x2943d6,...buildAppProfileListFields(_0x57692b),'source':'config','owner':null,'status':null,'cachedAt':null});}enrichAppListItemsWithMergedSelection(_0x1a8bb4,_0xbf802c[_0x3cc220(0x12d)]);const _0x5db318=_0x1a8bb4[_0x3cc220(0x143)](_0x15717d=>_0x15717d['isCurrent']===!![]),_0x58c503=_0x2943d6??_0x5db318?.['name']??null,_0x59b7c8={'env':_0x57692b,'source':_0x8e1b9c[_0x3cc220(0x15f)],'fetchedAt':_0x8e1b9c[_0x3cc220(0x144)],'cachePath':_0x8e1b9c[_0x3cc220(0x151)],'globalPath':_0xc15fe5[_0x3cc220(0x132)]??null,'projectPath':_0xc15fe5[_0x3cc220(0x12f)]??null,'defaultApp':_0x58c503,'defaultAppSource':_0x2943d6!=null?_0x53aa8c:null,'localAliasCount':_0x165858,'remoteTotal':_0x8e1b9c[_0x3cc220(0x129)][_0x3cc220(0x148)],'hiddenUnpublishedCount':_0x39a57e,'includeUnpublished':_0x575791};if(_0x1a8bb4[_0x3cc220(0x148)]===0x0)return{'ok':!![],'data':{'items':_0x1a8bb4,'meta':_0x59b7c8},'message':_0x8e1b9c[_0x3cc220(0x15f)]==='cache'?'No\x20cached\x20apps\x20found.':_0x3cc220(0x128)};return{'ok':!![],'data':{'items':_0x1a8bb4,'meta':_0x59b7c8}};}},pullDef={'service':a3_0x359dcd(0x12b),'command':a3_0x359dcd(0x157),'description':a3_0x359dcd(0x13d),'risk':a3_0x359dcd(0x130),'confirmationDescription':a3_0x359dcd(0x135),'requiresAuth':!![],'requiresAppCode':![],'hasFormat':![],'flags':[{'name':a3_0x359dcd(0x14f),'type':a3_0x359dcd(0x147),'description':a3_0x359dcd(0x127),'enum':[...RUNTIME_ENV_VALUES]},{'name':'local','type':a3_0x359dcd(0x122),'description':a3_0x359dcd(0x13e),'default':![]},{'name':a3_0x359dcd(0x12a),'type':a3_0x359dcd(0x122),'description':a3_0x359dcd(0x14c),'default':![]}],async 'execute'(_0x40f8d0){const _0x36cdbb=a3_0x359dcd,_0x3fd7d6=_0x40f8d0[_0x36cdbb(0x152)]('env')||_0x40f8d0['envName']||getEnv()||'production',_0x225fb9=_0x40f8d0['bool'](_0x36cdbb(0x138)),_0xba2f3f=_0x40f8d0[_0x36cdbb(0x14e)](_0x36cdbb(0x12a)),{getRemoteAppList:_0x14d9c1}=await import(_0x36cdbb(0x136)),_0x10e2d9=await _0x14d9c1({'env':_0x3fd7d6,'accessKey':_0x40f8d0[_0x36cdbb(0x12c)],'localOnly':_0x225fb9,'noCache':_0xba2f3f});return{'ok':!![],'data':{'total':_0x10e2d9['items']['length'],'env':_0x3fd7d6,'source':_0x10e2d9[_0x36cdbb(0x15f)],'fetchedAt':_0x10e2d9[_0x36cdbb(0x144)],'cachePath':_0x10e2d9[_0x36cdbb(0x151)]},'message':_0x10e2d9[_0x36cdbb(0x15f)]===_0x36cdbb(0x123)?_0x36cdbb(0x146)+_0x10e2d9[_0x36cdbb(0x129)][_0x36cdbb(0x148)]+_0x36cdbb(0x13f)+_0x3fd7d6+'\x22.':_0x36cdbb(0x163)+_0x10e2d9[_0x36cdbb(0x129)][_0x36cdbb(0x148)]+_0x36cdbb(0x126)+_0x3fd7d6+'\x22.'};}},importDef={'service':'app','command':a3_0x359dcd(0x149),'description':a3_0x359dcd(0x14a),'risk':'write','confirmationDescription':'将读取指定的\x20.rabetbase.json,并把其中可用的默认应用设置导入本地\x20.lovrabet.json;同名配置可能被更新。','requiresAuth':![],'requiresAppCode':![],'hasFormat':![],'flags':appImportFlagDefs,async 'execute'(_0xd008a4){return await runAppImport(collectFlags(_0xd008a4,appImportFlagDefs)),{'ok':!![]};}};export const appDefinitions=[listDef,pullDef,importDef];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x25b257,_0x4fcf24){const _0x20f02a=a4_0x2765,_0x4ae0c0=_0x25b257();while(!![]){try{const _0x3de9a4=-parseInt(_0x20f02a(0xe5))/0x1+-parseInt(_0x20f02a(0xe1))/0x2*(parseInt(_0x20f02a(0xdb))/0x3)+parseInt(_0x20f02a(0xec))/0x4*(parseInt(_0x20f02a(0xd8))/0x5)+parseInt(_0x20f02a(0xda))/0x6+parseInt(_0x20f02a(0xd9))/0x7*(-parseInt(_0x20f02a(0xeb))/0x8)+parseInt(_0x20f02a(0xe4))/0x9+parseInt(_0x20f02a(0xde))/0xa*(parseInt(_0x20f02a(0xdc))/0xb);if(_0x3de9a4===_0x4fcf24)break;else _0x4ae0c0['push'](_0x4ae0c0['shift']());}catch(_0x477186){_0x4ae0c0['push'](_0x4ae0c0['shift']());}}}(a4_0x1199,0x858eb));function a4_0x1199(){const _0x1b7306=['App\x20','toUpperCase','appCode','7345JjZZxw','1044995DjRSMU','900648KQkPkc','2547003JQaGfT','11494263ELFWLs','UNKNOWN','10RpSQsn','trim','.\x20Publish\x20the\x20app\x20before\x20using\x20','2slwMXN','find','filter','4615020ZaJIci','789747yNHjnU','string','Current\x20status:\x20','\x20dataset/data/sql/bff\x20commands,\x20or\x20choose\x20a\x20published\x20app.','appPublishStatus','appName','8NiQjLs','1708ohqdHN'];a4_0x1199=function(){return _0x1b7306;};return a4_0x1199();}import{CLI_BIN_NAME}from'../../constant/cli.js';function a4_0x2765(_0x1851cd,_0x541391){_0x1851cd=_0x1851cd-0xd5;const _0x11999f=a4_0x1199();let _0x27653b=_0x11999f[_0x1851cd];return _0x27653b;}import{RUNTIME_ACCESSIBLE_APP_STATUS}from'../../constant/app.js';import{CliErrors}from'../../errors.js';export function normalizeAppPublishStatus(_0x2115dc){const _0x246290=a4_0x2765;if(typeof _0x2115dc!==_0x246290(0xe6))return null;const _0xbe59ab=_0x2115dc[_0x246290(0xdf)]();return _0xbe59ab?_0xbe59ab[_0x246290(0xd6)]():null;}export function isRuntimeAccessibleApp(_0x11995e){const _0x575ed7=a4_0x2765;return normalizeAppPublishStatus(_0x11995e[_0x575ed7(0xe9)])===RUNTIME_ACCESSIBLE_APP_STATUS;}export function filterRuntimeAccessibleApps(_0x592dc3){const _0x10eb90=a4_0x2765;return _0x592dc3[_0x10eb90(0xe3)](isRuntimeAccessibleApp);}export function findAppByName(_0x267b15,_0x1644fe){const _0x82e36d=a4_0x2765;return _0x267b15[_0x82e36d(0xe2)](_0x292ced=>_0x292ced[_0x82e36d(0xea)]===_0x1644fe);}export function findAppByCode(_0x2ad4c1,_0x8e28db){const _0x2a5dd2=a4_0x2765,_0x190668=_0x8e28db[_0x2a5dd2(0xdf)]();if(!_0x190668)return undefined;return _0x2ad4c1[_0x2a5dd2(0xe2)](_0x385d18=>_0x385d18[_0x2a5dd2(0xd7)]?.['trim']()===_0x190668);}export function runtimeInaccessibleAppError(_0x2413c5,_0x38aa18){const _0x5d5022=a4_0x2765,_0x4b9ffe=normalizeAppPublishStatus(_0x2413c5[_0x5d5022(0xe9)])??_0x5d5022(0xdd);return CliErrors['validation'](_0x5d5022(0xd5)+_0x38aa18+'\x20is\x20not\x20available\x20for\x20runtime\x20AI\x20access.',_0x5d5022(0xe7)+_0x4b9ffe+_0x5d5022(0xe0)+CLI_BIN_NAME+_0x5d5022(0xe8));}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x19742f,_0x1b1bf4){const _0x14f2af=a5_0x579b,_0x456fd5=_0x19742f();while(!![]){try{const _0x3029f5=-parseInt(_0x14f2af(0xe3))/0x1*(parseInt(_0x14f2af(0xe1))/0x2)+parseInt(_0x14f2af(0xdb))/0x3+parseInt(_0x14f2af(0xe0))/0x4+parseInt(_0x14f2af(0xd6))/0x5*(parseInt(_0x14f2af(0xdd))/0x6)+-parseInt(_0x14f2af(0xe7))/0x7*(-parseInt(_0x14f2af(0xe2))/0x8)+-parseInt(_0x14f2af(0xe5))/0x9+-parseInt(_0x14f2af(0xdf))/0xa;if(_0x3029f5===_0x1b1bf4)break;else _0x456fd5['push'](_0x456fd5['shift']());}catch(_0x3a44d7){_0x456fd5['push'](_0x456fd5['shift']());}}}(a5_0xf265,0x50aed));import{fileURLToPath}from'url';import{dirname,join}from'path';function a5_0xf265(){const _0x1bfe21=['utf-8','1940070AjrArk','199832RZcNsq','113908fIGWiu','88WMfFFK','4vtvcfj','errorMsg','3151125ZlzWEI','tableData','195153LYMFyO','39365lQQUtq','success','../../../mock/app-list.json','parse','data','1056444MJFHFC','errorCode','300odDZgV'];a5_0xf265=function(){return _0x1bfe21;};return a5_0xf265();}function a5_0x579b(_0x3cc450,_0x4c6d47){_0x3cc450=_0x3cc450-0xd6;const _0xf26592=a5_0xf265();let _0x579b2f=_0xf26592[_0x3cc450];return _0x579b2f;}import{readFileSync}from'fs';const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename);function loadMockAppList(){const _0x4cee51=a5_0x579b,_0x6c0fb8=join(__dirname,_0x4cee51(0xd8)),_0x26b529=readFileSync(_0x6c0fb8,_0x4cee51(0xde));return JSON[_0x4cee51(0xd9)](_0x26b529);}let _cached=null;export function getMockAppList(){return!_cached&&(_cached=loadMockAppList()),_cached;}export function getMockRemoteAppItems(){const _0x2c349c=a5_0x579b,_0x601915=getMockAppList();if(!_0x601915[_0x2c349c(0xd7)])throw new Error('Mock\x20API\x20error:\x20'+_0x601915[_0x2c349c(0xe4)]+'\x20('+_0x601915[_0x2c349c(0xdc)]+')');return _0x601915[_0x2c349c(0xda)][_0x2c349c(0xe6)];}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x357f3d,_0x482b67){const _0x289f29=a6_0x33fc,_0x186869=_0x357f3d();while(!![]){try{const _0x58a6b1=parseInt(_0x289f29(0xd3))/0x1+parseInt(_0x289f29(0xd5))/0x2+-parseInt(_0x289f29(0xc8))/0x3*(parseInt(_0x289f29(0xcf))/0x4)+parseInt(_0x289f29(0xc4))/0x5*(-parseInt(_0x289f29(0xd1))/0x6)+-parseInt(_0x289f29(0xcb))/0x7+parseInt(_0x289f29(0xce))/0x8+parseInt(_0x289f29(0xd0))/0x9*(parseInt(_0x289f29(0xc9))/0xa);if(_0x58a6b1===_0x482b67)break;else _0x186869['push'](_0x186869['shift']());}catch(_0x5e1918){_0x186869['push'](_0x186869['shift']());}}}(a6_0x7581,0x8c638));import{getMyApps}from'../../core/api-client.js';import{getMockRemoteAppItems}from'../../commands/app/mock-loader.js';function a6_0x33fc(_0x2822b1,_0x5d1049){_0x2822b1=_0x2822b1-0xc4;const _0x758160=a6_0x7581();let _0x33fc6d=_0x758160[_0x2822b1];return _0x33fc6d;}function a6_0x7581(){const _0x2130be=['toISOString','3qerFVD','30GICkxG','toLowerCase','6371078grkWwl','APP_LIST_SOURCE','trim','2512568ZyDsHR','1537876nopSqG','4817385KgusZE','7050BYTBOk','fetchedAt','135744wIfCwW','mock','1562140xsDWkn','4115PUXsLl','items','cache'];a6_0x7581=function(){return _0x2130be;};return a6_0x7581();}import{getAppCacheFilePath,readCachedAppList,writeCachedAppList}from'../../commands/app/cache.js';import{productEnv}from'../../constant/product.js';export function shouldUseMockRemoteApps(){const _0x13d588=a6_0x33fc,_0xe8be26=(productEnv(_0x13d588(0xcc))||'')['trim']()[_0x13d588(0xca)]();return _0xe8be26===_0x13d588(0xd4);}export async function getRemoteAppItems(){if(shouldUseMockRemoteApps())return getMockRemoteAppItems();return getMyApps();}export async function getRemoteAppList(_0x29ddd6){const _0x182156=a6_0x33fc,{env:_0x1c9cdd,accessKey:_0x1833a4,localOnly:localOnly=![],noCache:noCache=![]}=_0x29ddd6,_0xb99969=readCachedAppList(_0x1c9cdd,_0x1833a4),_0x39c5a3=_0x1833a4?.[_0x182156(0xcd)]()?getAppCacheFilePath(_0x1c9cdd,_0x1833a4):null;if(localOnly)return{'items':_0xb99969?.[_0x182156(0xc5)]??[],'source':'cache','fetchedAt':_0xb99969?.[_0x182156(0xd2)]??null,'cachePath':_0x39c5a3};try{const _0x588689=await getRemoteAppItems(),_0x6aafbd=shouldUseMockRemoteApps()?_0x182156(0xd4):'remote',_0xd9345=new Date()[_0x182156(0xc7)](),_0x53fad5=_0x1833a4?.[_0x182156(0xcd)]()?writeCachedAppList(_0x1c9cdd,_0x1833a4,{'env':_0x1c9cdd,'fetchedAt':_0xd9345,'source':_0x6aafbd,'items':_0x588689}):null;return{'items':_0x588689,'source':_0x6aafbd,'fetchedAt':_0xd9345,'cachePath':_0x53fad5};}catch(_0x10f24c){if(!noCache&&_0xb99969)return{'items':_0xb99969['items'],'source':_0x182156(0xc6),'fetchedAt':_0xb99969['fetchedAt'],'cachePath':_0x39c5a3};throw _0x10f24c;}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function a7_0x5d13(_0x5728ce,_0x4ae3cc){_0x5728ce=_0x5728ce-0x1e2;const _0x45e0b1=a7_0x45e0();let _0x5d13a4=_0x45e0b1[_0x5728ce];return _0x5d13a4;}function a7_0x45e0(){const _0x2a9af3=['find','1261524UxGmcl','currentApp','trim','941331KqGXUC','2WNxWIu','146902fPFrlg','425OZmdeY','5088yRhLqt','8GefywM','defaultApp','984753NSVwCl','appcode','402115bJyYPX','isCurrent','local','34661dmpmqk','3860oYdFGX','appCode','named'];a7_0x45e0=function(){return _0x2a9af3;};return a7_0x45e0();}(function(_0x1b90bd,_0x518a96){const _0x4eba6b=a7_0x5d13,_0x57884e=_0x1b90bd();while(!![]){try{const _0x73be0f=-parseInt(_0x4eba6b(0x1ea))/0x1+parseInt(_0x4eba6b(0x1e2))/0x2*(-parseInt(_0x4eba6b(0x1f5))/0x3)+-parseInt(_0x4eba6b(0x1f2))/0x4+-parseInt(_0x4eba6b(0x1e4))/0x5*(parseInt(_0x4eba6b(0x1e5))/0x6)+-parseInt(_0x4eba6b(0x1e3))/0x7+-parseInt(_0x4eba6b(0x1e6))/0x8*(-parseInt(_0x4eba6b(0x1e8))/0x9)+parseInt(_0x4eba6b(0x1ee))/0xa*(parseInt(_0x4eba6b(0x1ed))/0xb);if(_0x73be0f===_0x518a96)break;else _0x57884e['push'](_0x57884e['shift']());}catch(_0x347015){_0x57884e['push'](_0x57884e['shift']());}}}(a7_0x45e0,0x31294));export function enrichAppListItemsWithMergedSelection(_0x410a30,_0xf61d5){const _0x318972=a7_0x5d13;if(!_0xf61d5)return;const _0x2b6470=!!(_0xf61d5[_0x318972(0x1f3)]??_0xf61d5[_0x318972(0x1e7)]);for(const _0x28cbdc of _0x410a30){_0x28cbdc['isCurrent']=![];}const _0x34fa77=_0xf61d5[_0x318972(0x1ef)]!=null?String(_0xf61d5['appCode'])[_0x318972(0x1f4)]():'';if(_0x2b6470){const _0x1fa6ea=_0xf61d5['currentApp']??_0xf61d5[_0x318972(0x1e7)];if(_0x1fa6ea){const _0x318520=_0x410a30[_0x318972(0x1f1)](_0x39679e=>_0x39679e[_0x318972(0x1f0)]===!![]&&_0x39679e['name']===_0x1fa6ea&&_0x39679e['definedIn']===_0x318972(0x1ec)),_0x3deae7=_0x318520??_0x410a30['find'](_0x582c89=>_0x582c89[_0x318972(0x1f0)]===!![]&&_0x582c89['name']===_0x1fa6ea);if(_0x3deae7){const _0x10cab7=String(_0x3deae7[_0x318972(0x1e9)]??'')[_0x318972(0x1f4)]();if(!_0x34fa77||_0x10cab7===_0x34fa77){_0x3deae7[_0x318972(0x1eb)]=!![];return;}}}if(_0x34fa77){const _0xc9fc59=_0x410a30[_0x318972(0x1f1)](_0x50055c=>String(_0x50055c[_0x318972(0x1e9)]??'')[_0x318972(0x1f4)]()===_0x34fa77);_0xc9fc59&&(_0xc9fc59[_0x318972(0x1eb)]=!![]);}return;}if(!_0x34fa77)return;for(const _0x431361 of _0x410a30){String(_0x431361[_0x318972(0x1e9)]??'')[_0x318972(0x1f4)]()===_0x34fa77&&(_0x431361[_0x318972(0x1eb)]=!![]);}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a8_0x542da7=a8_0x1f3f;(function(_0x11c12a,_0x3e99be){const _0x4a7898=a8_0x1f3f,_0x233cab=_0x11c12a();while(!![]){try{const _0x5dfbd4=parseInt(_0x4a7898(0x87))/0x1+-parseInt(_0x4a7898(0x8b))/0x2+-parseInt(_0x4a7898(0x85))/0x3+parseInt(_0x4a7898(0x7a))/0x4+parseInt(_0x4a7898(0x8d))/0x5+-parseInt(_0x4a7898(0x7b))/0x6*(parseInt(_0x4a7898(0x7f))/0x7)+-parseInt(_0x4a7898(0x8e))/0x8*(-parseInt(_0x4a7898(0x80))/0x9);if(_0x5dfbd4===_0x3e99be)break;else _0x233cab['push'](_0x233cab['shift']());}catch(_0x2e03f0){_0x233cab['push'](_0x233cab['shift']());}}}(a8_0x49c8,0x3042b));import{getRuntimeAppConfigByKey}from'../../core/api-client.js';function a8_0x1f3f(_0x314bad,_0x4bfd71){_0x314bad=_0x314bad-0x7a;const _0x49c8ca=a8_0x49c8();let _0x1f3f15=_0x49c8ca[_0x314bad];return _0x1f3f15;}function a8_0x49c8(){const _0x9b6fd3=['232jRzseF','trim',',\x20appCode=','723528jgtJRT','21354QscsPg','appCode','apiError','app-config','483vmIVVG','148212yozYkn','read','App\x20config\x20key','args','\x20app-config\x20get\x20<key>','367020lQIgZC','Missing\x20app-config\x20key.','87695sNXDEe','get','Check\x20that\x20the\x20key\x20exists,\x20the\x20current\x20AccessKey\x20has\x20permission,\x20and\x20the\x20runtime\x20app-config\x20endpoint\x20is\x20available.','Get\x20one\x20runtime\x20app-config\x20value\x20by\x20key','777622jCFsSR','Unable\x20to\x20get\x20app-config\x20value:\x20key=','1041240eujTLf'];a8_0x49c8=function(){return _0x9b6fd3;};return a8_0x49c8();}import{CliErrors}from'../../errors.js';import{CLI_BIN_NAME}from'../../constant/cli.js';export const appConfigGet={'service':a8_0x542da7(0x7e),'command':a8_0x542da7(0x88),'description':a8_0x542da7(0x8a),'risk':a8_0x542da7(0x81),'args':[{'name':'key','description':a8_0x542da7(0x82),'required':!![]}],'flags':[],async 'execute'(_0x35714){const _0x5503da=a8_0x542da7,_0x5416d2=_0x35714[_0x5503da(0x83)][0x0]?.[_0x5503da(0x8f)]();if(!_0x5416d2)throw CliErrors['validation'](_0x5503da(0x86),'Usage:\x20'+CLI_BIN_NAME+_0x5503da(0x84));try{const _0x5d71b9=await getRuntimeAppConfigByKey(_0x35714['appCode'],_0x5416d2);return{'ok':!![],'data':_0x5d71b9};}catch{throw CliErrors[_0x5503da(0x7d)](_0x5503da(0x8c)+_0x5416d2+_0x5503da(0x90)+_0x35714[_0x5503da(0x7c)],_0x5503da(0x89));}}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x3970ef,_0x2e3012){const _0x95995e=a9_0x1040,_0x411d63=_0x3970ef();while(!![]){try{const _0x4f5f74=parseInt(_0x95995e(0x167))/0x1*(parseInt(_0x95995e(0x169))/0x2)+parseInt(_0x95995e(0x161))/0x3+parseInt(_0x95995e(0x166))/0x4+parseInt(_0x95995e(0x168))/0x5+parseInt(_0x95995e(0x16a))/0x6*(parseInt(_0x95995e(0x165))/0x7)+-parseInt(_0x95995e(0x163))/0x8*(-parseInt(_0x95995e(0x162))/0x9)+parseInt(_0x95995e(0x16b))/0xa*(-parseInt(_0x95995e(0x164))/0xb);if(_0x4f5f74===_0x2e3012)break;else _0x411d63['push'](_0x411d63['shift']());}catch(_0x55a70b){_0x411d63['push'](_0x411d63['shift']());}}}(a9_0x5046,0x3fa72));import{appConfigGet}from'../../commands/app-config/get.js';function a9_0x1040(_0x3badfb,_0xabb804){_0x3badfb=_0x3badfb-0x161;const _0x5046a1=a9_0x5046();let _0x1040f2=_0x5046a1[_0x3badfb];return _0x1040f2;}function a9_0x5046(){const _0x38a955=['364539dQxybn','9QonvZn','1448952ycICsp','33XYTnrW','153895zyXunn','686500pSBarH','12244ZiRLYx','1881885Qgflez','52JlFsak','108AckiMH','4346620zgPIRK'];a9_0x5046=function(){return _0x38a955;};return a9_0x5046();}export const appConfigDefinitions=[appConfigGet];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const a10_0x3e15df=a10_0x6222;(function(_0x11b643,_0xeec195){const _0x2aa71a=a10_0x6222,_0x6d2d31=_0x11b643();while(!![]){try{const _0x516209=parseInt(_0x2aa71a(0x136))/0x1*(-parseInt(_0x2aa71a(0x13e))/0x2)+parseInt(_0x2aa71a(0x16b))/0x3+parseInt(_0x2aa71a(0x144))/0x4*(parseInt(_0x2aa71a(0x13d))/0x5)+-parseInt(_0x2aa71a(0x14a))/0x6+parseInt(_0x2aa71a(0x14e))/0x7*(parseInt(_0x2aa71a(0x129))/0x8)+-parseInt(_0x2aa71a(0x164))/0x9*(parseInt(_0x2aa71a(0x16a))/0xa)+-parseInt(_0x2aa71a(0x135))/0xb*(-parseInt(_0x2aa71a(0x12a))/0xc);if(_0x516209===_0xeec195)break;else _0x6d2d31['push'](_0x6d2d31['shift']());}catch(_0x254c78){_0x6d2d31['push'](_0x6d2d31['shift']());}}}(a10_0x57e3,0x547fc));function a10_0x57e3(){const _0x1a1996=['object','根据本地源码文件创建\x20react_module\x20类型的\x20Artifact','favorite','detail','保存新的\x20Artifact\x20源码并重新编译;应用中的内嵌模块展示和交互可能立即发生变化。','3119058LgKwsF','artifact','@ant-design/icons','Artifact\x20metadata\x20as\x20JSON\x20object;\x20compiledContent\x20is\x20stripped','259091PCradm','some','Path\x20to\x20a\x20local\x20UTF-8\x20React\x20module\x20source\x20file','deleted','AGENT','react','parse','POST','filter','根据本地源码文件更新\x20react_module\x20类型的\x20Artifact','/client/artifact/create','exec','compiledContent','length','createTime','write','map','file','source','antd','description','body','27FHWVOa','utf8','string','split','str','add','2175090NfSMXY','716043zHGIsq','read','List\x20current-app\x20react_module\x20Artifacts','boolean','lodash','File\x20is\x20not\x20a\x20regular\x20file:\x20','name','num','validation','appCode','.\x20Unsupported:\x20','react-dom','Preview:\x20update\x20react_module\x20Artifact\x20','trim','保存新的\x20Artifact\x20源码并进行编译;成功后将在当前应用中新增可展示的内嵌模块。','includes','136ntlQmp','48mwAkmT','update','isFile','flag','dayjs','test','Show\x20one\x20Artifact\x20by\x20id','verbose','metadata','build','list','720269fkatMR','1chlFOY','Created\x20Artifact\x20','Updated\x20Artifact\x20','Artifact\x20ID','isArray','create','Invalid\x20JSON\x20for\x20--metadata:\x20','382715iNtcTz','141196ujSnNF','react_module','updateTime','Preview:\x20create\x20react_module\x20Artifact','--metadata\x20must\x20be\x20a\x20JSON\x20object.','Artifact\x20source\x20file\x20is\x20blank.','24LBnmkn'];a10_0x57e3=function(){return _0x1a1996;};return a10_0x57e3();}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_0x3e15df(0x13f),ARTIFACT_SOURCE_AGENT=a10_0x3e15df(0x152),ALLOWED_REACT_MODULE_IMPORTS=[a10_0x3e15df(0x153),a10_0x3e15df(0x124),a10_0x3e15df(0x11d),a10_0x3e15df(0x12e),a10_0x3e15df(0x161),a10_0x3e15df(0x14c)];export const ALLOWED_REACT_MODULE_IMPORTS_TEXT=ALLOWED_REACT_MODULE_IMPORTS['join'](',\x20');const IMPORT_SOURCE_PATTERNS=[/\bimport\s+(?:type\s+)?(?:[^'";]*?\s+from\s+)?["']([^"']+)["']/g,/\bexport\s+(?:type\s+)?[^'";]*?\s+from\s+["']([^"']+)["']/g,/\bimport\s*\(\s*["']([^"']+)["']\s*\)/g,/\brequire\s*\(\s*["']([^"']+)["']\s*\)/g],PAGE_LEVEL_PATTERNS=[/<!doctype\s+html/i,/<\s*html\b/i,/\bcreateRoot\s*\(/,/\bReactDOM\s*\.\s*render\s*\(/,/\bReactDOM\s*\.\s*createRoot\s*\(/],FILE_FLAG={'name':'file','type':a10_0x3e15df(0x166),'required':!![],'description':a10_0x3e15df(0x150)},ARTIFACT_NAME_FLAG={'name':a10_0x3e15df(0x11f),'type':'string','description':'Artifact\x20display\x20name'},METADATA_FLAG={'name':a10_0x3e15df(0x132),'type':'string','description':a10_0x3e15df(0x14d)};function isPlainObject(_0x4a3421){const _0x1f3b98=a10_0x3e15df;return typeof _0x4a3421===_0x1f3b98(0x145)&&_0x4a3421!==null&&!Array[_0x1f3b98(0x13a)](_0x4a3421);}function readSourceFile(_0x243b70){const _0x42585c=a10_0x3e15df;if(!_0x243b70)throw CliErrors[_0x42585c(0x121)]('File\x20path\x20is\x20required.');if(!existsSync(_0x243b70))throw CliErrors[_0x42585c(0x121)]('File\x20not\x20found:\x20'+_0x243b70);if(!statSync(_0x243b70)[_0x42585c(0x12c)]())throw CliErrors[_0x42585c(0x121)](_0x42585c(0x11e)+_0x243b70);const _0x8e1926=readFileSync(_0x243b70,_0x42585c(0x165));return validateReactModuleSource(_0x8e1926),_0x8e1926;}function parseMetadata(_0x5b9ed3){const _0x56da19=a10_0x3e15df;if(!_0x5b9ed3)return undefined;let _0xbcfe73;try{_0xbcfe73=JSON[_0x56da19(0x154)](_0x5b9ed3);}catch{throw CliErrors[_0x56da19(0x121)](_0x56da19(0x13c)+_0x5b9ed3);}if(!isPlainObject(_0xbcfe73))throw CliErrors[_0x56da19(0x121)](_0x56da19(0x142));const _0x2d431d={..._0xbcfe73};return delete _0x2d431d[_0x56da19(0x15a)],_0x2d431d;}function getPackageName(_0x2783a6){const _0x41f34f=a10_0x3e15df;if(_0x2783a6['startsWith']('@')){const [_0x411287,_0x9127aa]=_0x2783a6[_0x41f34f(0x167)]('/');return _0x411287&&_0x9127aa?_0x411287+'/'+_0x9127aa:_0x2783a6;}return _0x2783a6[_0x41f34f(0x167)]('/')[0x0]||_0x2783a6;}function validateAllowedImports(_0x59dcd1){const _0x4a5f4f=a10_0x3e15df,_0x70e6bc=new Set();for(const _0x27c5bb of IMPORT_SOURCE_PATTERNS){_0x27c5bb['lastIndex']=0x0;let _0x58c693;while((_0x58c693=_0x27c5bb[_0x4a5f4f(0x159)](_0x59dcd1))!==null){const _0x421f2e=_0x58c693[0x1]?.[_0x4a5f4f(0x126)]();_0x421f2e&&_0x70e6bc[_0x4a5f4f(0x169)](_0x421f2e);}}const _0x1d067b=[..._0x70e6bc][_0x4a5f4f(0x15e)](getPackageName)[_0x4a5f4f(0x156)](_0x69c44=>!ALLOWED_REACT_MODULE_IMPORTS[_0x4a5f4f(0x128)](_0x69c44));if(_0x1d067b[_0x4a5f4f(0x15b)]>0x0)throw CliErrors[_0x4a5f4f(0x121)]('react_module\x20imports\x20are\x20limited\x20to:\x20'+ALLOWED_REACT_MODULE_IMPORTS_TEXT+_0x4a5f4f(0x123)+[...new Set(_0x1d067b)]['join'](',\x20'));}function a10_0x6222(_0x5af894,_0x3ed34f){_0x5af894=_0x5af894-0x11d;const _0x57e3a6=a10_0x57e3();let _0x6222f7=_0x57e3a6[_0x5af894];return _0x6222f7;}export function validateReactModuleSource(_0x3906b5){const _0x5e5553=a10_0x3e15df;if(!_0x3906b5[_0x5e5553(0x126)]())throw CliErrors[_0x5e5553(0x121)](_0x5e5553(0x143));if(PAGE_LEVEL_PATTERNS[_0x5e5553(0x14f)](_0x41551b=>_0x41551b[_0x5e5553(0x12f)](_0x3906b5)))throw CliErrors['validation']('react_module\x20must\x20be\x20an\x20embeddable\x20React\x20module,\x20not\x20full\x20HTML\x20or\x20a\x20ReactDOM/createRoot\x20mount\x20entry.');validateAllowedImports(_0x3906b5);}function buildArtifactInput(_0x3ab4f1){const _0x5d6162=a10_0x3e15df,_0x326401=readSourceFile(_0x3ab4f1['str'](_0x5d6162(0x15f))),_0x326f25=_0x3ab4f1[_0x5d6162(0x168)](_0x5d6162(0x11f))[_0x5d6162(0x126)](),_0x4d3edd=parseMetadata(_0x3ab4f1[_0x5d6162(0x168)]('metadata'));return{'artifactType':ARTIFACT_TYPE_REACT_MODULE,..._0x326f25?{'name':_0x326f25}:{},'content':_0x326401,..._0x4d3edd?{'metadata':_0x4d3edd}:{},'source':ARTIFACT_SOURCE_AGENT};}function summarizeArtifact(_0x141ce5){const _0x2c7d54=a10_0x3e15df;return{'id':_0x141ce5['id'],'name':_0x141ce5[_0x2c7d54(0x11f)],'artifactType':_0x141ce5['artifactType'],'source':_0x141ce5[_0x2c7d54(0x160)],'favorite':_0x141ce5[_0x2c7d54(0x147)],'deleted':_0x141ce5[_0x2c7d54(0x151)],'createTime':_0x141ce5[_0x2c7d54(0x15c)],'updateTime':_0x141ce5[_0x2c7d54(0x140)]};}function detailArtifact(_0x545ff8){const _0x2938df=a10_0x3e15df;return{'id':_0x545ff8['id'],'appCode':_0x545ff8['appCode'],'name':_0x545ff8[_0x2938df(0x11f)],'artifactType':_0x545ff8['artifactType'],'source':_0x545ff8[_0x2938df(0x160)],'favorite':_0x545ff8[_0x2938df(0x147)],'deleted':_0x545ff8[_0x2938df(0x151)],'content':_0x545ff8['content']??'','compiledContent':_0x545ff8[_0x2938df(0x15a)],'metadata':_0x545ff8['metadata']??{},'createTime':_0x545ff8[_0x2938df(0x15c)],'updateTime':_0x545ff8[_0x2938df(0x140)]};}function readFavoriteFlag(_0x5a7f0c){const _0x53da62=a10_0x3e15df,_0xb86c65=_0x5a7f0c[_0x53da62(0x12d)](_0x53da62(0x147));return _0xb86c65===undefined||_0xb86c65===null||_0xb86c65===''?undefined:_0x5a7f0c['bool'](_0x53da62(0x147));}const artifactList={'service':'artifact','command':a10_0x3e15df(0x134),'description':a10_0x3e15df(0x16d),'risk':a10_0x3e15df(0x16c),'flags':[{'name':a10_0x3e15df(0x160),'type':a10_0x3e15df(0x166),'description':'Optional\x20source\x20filter,\x20for\x20example\x20AGENT'},{'name':'favorite','type':a10_0x3e15df(0x16e),'description':'Optional\x20favorite-state\x20filter'},VERBOSE_FLAG],async 'execute'(_0x5797fe){const _0x45339d=a10_0x3e15df,_0xf2383b=await listRuntimeArtifacts(_0x5797fe[_0x45339d(0x122)],{'artifactType':ARTIFACT_TYPE_REACT_MODULE,..._0x5797fe[_0x45339d(0x168)]('source')?{'source':_0x5797fe[_0x45339d(0x168)](_0x45339d(0x160))}:{},...readFavoriteFlag(_0x5797fe)!==undefined?{'favorite':readFavoriteFlag(_0x5797fe)}:{}});return{'ok':!![],'data':{'total':_0xf2383b[_0x45339d(0x15b)],'items':_0x5797fe['bool'](_0x45339d(0x131))?_0xf2383b:_0xf2383b[_0x45339d(0x15e)](summarizeArtifact)}};}},artifactDetail={'service':'artifact','command':a10_0x3e15df(0x148),'description':a10_0x3e15df(0x130),'risk':'read','flags':[{...ID_FLAG,'description':a10_0x3e15df(0x139)}],async 'execute'(_0x3cc894){const _0x29877d=a10_0x3e15df,_0x3feeb0=await getRuntimeArtifact(_0x3cc894[_0x29877d(0x120)]('id'),_0x3cc894[_0x29877d(0x122)]);return{'ok':!![],'data':detailArtifact(_0x3feeb0)};}},artifactCreate={'service':a10_0x3e15df(0x14b),'command':a10_0x3e15df(0x13b),'description':a10_0x3e15df(0x146),'risk':a10_0x3e15df(0x15d),'confirmationDescription':a10_0x3e15df(0x127),'flags':[FILE_FLAG,ARTIFACT_NAME_FLAG,METADATA_FLAG],async 'execute'(_0x33b644){const _0x36a512=a10_0x3e15df,_0x279e62=buildArtifactInput(_0x33b644),_0x1bc7a7=await createRuntimeArtifact(_0x33b644[_0x36a512(0x122)],_0x279e62);return{'ok':!![],'data':detailArtifact(_0x1bc7a7),'message':_0x36a512(0x137)+_0x1bc7a7['id']+(_0x1bc7a7[_0x36a512(0x11f)]?'\x20('+_0x1bc7a7[_0x36a512(0x11f)]+')':'')};},async 'dryRun'(_0x4bdf93){const _0x3366bf=a10_0x3e15df,_0x52a1cd=buildArtifactInput(_0x4bdf93);return dryRun(_0x3366bf(0x155),_0x3366bf(0x158))[_0x3366bf(0x163)]({'appCode':_0x4bdf93['appCode'],..._0x52a1cd})[_0x3366bf(0x162)](_0x3366bf(0x141))[_0x3366bf(0x133)]();},'writeEventSubject'(_0x263f4b){const _0x396738=a10_0x3e15df,_0xed26a9=_0x263f4b['data']?.['id'];if(typeof _0xed26a9!=='string'&&typeof _0xed26a9!=='number')return undefined;return{'kind':_0x396738(0x14b),'id':String(_0xed26a9),'action':_0x396738(0x13b)};}},artifactUpdate={'service':'artifact','command':a10_0x3e15df(0x12b),'description':a10_0x3e15df(0x157),'risk':'write','confirmationDescription':a10_0x3e15df(0x149),'flags':[{...ID_FLAG,'description':a10_0x3e15df(0x139)},FILE_FLAG,ARTIFACT_NAME_FLAG,METADATA_FLAG],async 'execute'(_0xec0b7c){const _0x439fd3=a10_0x3e15df,_0x30f6ae=_0xec0b7c['num']('id'),_0x7886cf=buildArtifactInput(_0xec0b7c),_0x5a185c=await updateRuntimeArtifact(_0x30f6ae,_0xec0b7c[_0x439fd3(0x122)],_0x7886cf);return{'ok':!![],'data':detailArtifact(_0x5a185c),'message':_0x439fd3(0x138)+_0x5a185c['id']+(_0x5a185c['name']?'\x20('+_0x5a185c[_0x439fd3(0x11f)]+')':'')};},async 'dryRun'(_0x26127e){const _0x585068=a10_0x3e15df,_0x3ab07f=_0x26127e[_0x585068(0x120)]('id'),_0x426096=buildArtifactInput(_0x26127e);return dryRun(_0x585068(0x155),'/client/artifact/'+_0x3ab07f+'/update')[_0x585068(0x163)]({'appCode':_0x26127e[_0x585068(0x122)],..._0x426096})[_0x585068(0x162)](_0x585068(0x125)+_0x3ab07f)['build']();},'writeEventSubject'(_0x10ada4){const _0xd3d761=a10_0x3e15df,_0x101e8e=_0x10ada4['data']?.['id'];if(typeof _0x101e8e!=='string'&&typeof _0x101e8e!=='number')return undefined;return{'kind':_0xd3d761(0x14b),'id':String(_0x101e8e),'action':'update'};}};export const artifactDefinitions=[artifactList,artifactDetail,artifactCreate,artifactUpdate];
|
|
1
|
+
const a10_0x51ba82=a10_0x1070;(function(_0xdb0e14,_0x3cf623){const _0x753a9c=a10_0x1070,_0x306ed2=_0xdb0e14();while(!![]){try{const _0x93cbe6=-parseInt(_0x753a9c(0x1f0))/0x1*(-parseInt(_0x753a9c(0x1de))/0x2)+parseInt(_0x753a9c(0x208))/0x3*(-parseInt(_0x753a9c(0x20b))/0x4)+-parseInt(_0x753a9c(0x204))/0x5*(-parseInt(_0x753a9c(0x203))/0x6)+-parseInt(_0x753a9c(0x1e1))/0x7*(parseInt(_0x753a9c(0x1e3))/0x8)+parseInt(_0x753a9c(0x1db))/0x9+parseInt(_0x753a9c(0x1fd))/0xa+parseInt(_0x753a9c(0x1f2))/0xb*(-parseInt(_0x753a9c(0x1fa))/0xc);if(_0x93cbe6===_0x3cf623)break;else _0x306ed2['push'](_0x306ed2['shift']());}catch(_0x482dd){_0x306ed2['push'](_0x306ed2['shift']());}}}(a10_0x51ce,0x9c003));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='react_module',ARTIFACT_SOURCE_AGENT=a10_0x51ba82(0x214),ALLOWED_REACT_MODULE_IMPORTS=[a10_0x51ba82(0x215),a10_0x51ba82(0x20f),a10_0x51ba82(0x1fb),a10_0x51ba82(0x1d6),a10_0x51ba82(0x209),'@ant-design/icons'];export const ALLOWED_REACT_MODULE_IMPORTS_TEXT=ALLOWED_REACT_MODULE_IMPORTS[a10_0x51ba82(0x206)](',\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_0x51ba82(0x1f8)},ARTIFACT_NAME_FLAG={'name':a10_0x51ba82(0x1ee),'type':a10_0x51ba82(0x1e4),'description':'Artifact\x20display\x20name'},METADATA_FLAG={'name':a10_0x51ba82(0x1fe),'type':a10_0x51ba82(0x1e4),'description':a10_0x51ba82(0x20a)};function isPlainObject(_0x2cfb9b){const _0x29c756=a10_0x51ba82;return typeof _0x2cfb9b===_0x29c756(0x1e2)&&_0x2cfb9b!==null&&!Array[_0x29c756(0x1cf)](_0x2cfb9b);}function readSourceFile(_0x3a917c){const _0x1ac917=a10_0x51ba82;if(!_0x3a917c)throw CliErrors[_0x1ac917(0x1d1)]('File\x20path\x20is\x20required.');if(!existsSync(_0x3a917c))throw CliErrors[_0x1ac917(0x1d1)]('File\x20not\x20found:\x20'+_0x3a917c);if(!statSync(_0x3a917c)[_0x1ac917(0x1ff)]())throw CliErrors[_0x1ac917(0x1d1)](_0x1ac917(0x212)+_0x3a917c);const _0x11ae0e=readFileSync(_0x3a917c,_0x1ac917(0x1f7));return validateReactModuleSource(_0x11ae0e),_0x11ae0e;}function parseMetadata(_0x1db204){const _0x4bfb63=a10_0x51ba82;if(!_0x1db204)return undefined;let _0x2adb68;try{_0x2adb68=JSON[_0x4bfb63(0x1f4)](_0x1db204);}catch{throw CliErrors[_0x4bfb63(0x1d1)](_0x4bfb63(0x1ea)+_0x1db204);}if(!isPlainObject(_0x2adb68))throw CliErrors[_0x4bfb63(0x1d1)](_0x4bfb63(0x219));const _0x20e4d5={..._0x2adb68};return delete _0x20e4d5[_0x4bfb63(0x1da)],_0x20e4d5;}function getPackageName(_0x42caba){const _0x6e6a41=a10_0x51ba82;if(_0x42caba[_0x6e6a41(0x1ce)]('@')){const [_0x418209,_0x5f2fba]=_0x42caba[_0x6e6a41(0x207)]('/');return _0x418209&&_0x5f2fba?_0x418209+'/'+_0x5f2fba:_0x42caba;}return _0x42caba[_0x6e6a41(0x207)]('/')[0x0]||_0x42caba;}function validateAllowedImports(_0x118d76){const _0x45ed10=a10_0x51ba82,_0x23f03c=new Set();for(const _0xa7d900 of IMPORT_SOURCE_PATTERNS){_0xa7d900[_0x45ed10(0x1ec)]=0x0;let _0x21800e;while((_0x21800e=_0xa7d900[_0x45ed10(0x1d5)](_0x118d76))!==null){const _0xd5b5bc=_0x21800e[0x1]?.[_0x45ed10(0x1ed)]();_0xd5b5bc&&_0x23f03c['add'](_0xd5b5bc);}}const _0x6d2ed7=[..._0x23f03c]['map'](getPackageName)[_0x45ed10(0x1e6)](_0xcd905c=>!ALLOWED_REACT_MODULE_IMPORTS[_0x45ed10(0x1d2)](_0xcd905c));if(_0x6d2ed7[_0x45ed10(0x1cd)]>0x0)throw CliErrors['validation'](_0x45ed10(0x1f6)+ALLOWED_REACT_MODULE_IMPORTS_TEXT+'.\x20Unsupported:\x20'+[...new Set(_0x6d2ed7)][_0x45ed10(0x206)](',\x20'));}export function validateReactModuleSource(_0x1136ad){const _0x89a417=a10_0x51ba82;if(!_0x1136ad[_0x89a417(0x1ed)]())throw CliErrors[_0x89a417(0x1d1)](_0x89a417(0x1ef));if(PAGE_LEVEL_PATTERNS[_0x89a417(0x211)](_0x17f0c1=>_0x17f0c1[_0x89a417(0x217)](_0x1136ad)))throw CliErrors[_0x89a417(0x1d1)]('react_module\x20must\x20be\x20an\x20embeddable\x20React\x20module,\x20not\x20full\x20HTML\x20or\x20a\x20ReactDOM/createRoot\x20mount\x20entry.');validateAllowedImports(_0x1136ad);}function a10_0x51ce(){const _0x340f7=['723279fRrSFN','antd','Artifact\x20metadata\x20as\x20JSON\x20object;\x20compiledContent\x20is\x20stripped','16sVNwrv','Optional\x20favorite-state\x20filter','保存新的\x20Artifact\x20源码并重新编译;应用中的内嵌模块展示和交互可能立即发生变化。','artifactType','react-dom','artifact','some','File\x20is\x20not\x20a\x20regular\x20file:\x20','Created\x20Artifact\x20','AGENT','react','Preview:\x20create\x20react_module\x20Artifact','test','update','--metadata\x20must\x20be\x20a\x20JSON\x20object.','根据本地源码文件创建\x20react_module\x20类型的\x20Artifact','Preview:\x20update\x20react_module\x20Artifact\x20','POST','length','startsWith','isArray','boolean','validation','includes','list','deleted','exec','dayjs','/update','number','body','compiledContent','9863802SRGKBK','description','flag','10RqXisB','str','create','602syDvfW','object','64744XEmVIS','string','appCode','filter','Artifact\x20ID','detail','favorite','Invalid\x20JSON\x20for\x20--metadata:\x20','num','lastIndex','trim','name','Artifact\x20source\x20file\x20is\x20blank.','117027IBNuNB','map','11SDTGNO','createTime','parse','file','react_module\x20imports\x20are\x20limited\x20to:\x20','utf8','Path\x20to\x20a\x20local\x20UTF-8\x20React\x20module\x20source\x20file','根据本地源码文件更新\x20react_module\x20类型的\x20Artifact','10966020JnnCYi','lodash','/client/artifact/create','9813210TqXyRD','metadata','isFile','data','bool','source','150GPBgmd','110150IbEeoU','read','join','split'];a10_0x51ce=function(){return _0x340f7;};return a10_0x51ce();}function a10_0x1070(_0x284386,_0x2b2636){_0x284386=_0x284386-0x1ca;const _0x51cea3=a10_0x51ce();let _0x1070b7=_0x51cea3[_0x284386];return _0x1070b7;}function buildArtifactInput(_0x29e9f5){const _0x3f8bbc=a10_0x51ba82,_0x581d61=readSourceFile(_0x29e9f5[_0x3f8bbc(0x1df)](_0x3f8bbc(0x1f5))),_0x28284a=_0x29e9f5[_0x3f8bbc(0x1df)]('name')[_0x3f8bbc(0x1ed)](),_0x423b69=parseMetadata(_0x29e9f5[_0x3f8bbc(0x1df)](_0x3f8bbc(0x1fe)));return{'artifactType':ARTIFACT_TYPE_REACT_MODULE,..._0x28284a?{'name':_0x28284a}:{},'content':_0x581d61,..._0x423b69?{'metadata':_0x423b69}:{},'source':ARTIFACT_SOURCE_AGENT};}function summarizeArtifact(_0x417a69){const _0x5291cf=a10_0x51ba82;return{'id':_0x417a69['id'],'name':_0x417a69[_0x5291cf(0x1ee)],'artifactType':_0x417a69[_0x5291cf(0x20e)],'source':_0x417a69[_0x5291cf(0x202)],'favorite':_0x417a69[_0x5291cf(0x1e9)],'deleted':_0x417a69['deleted'],'createTime':_0x417a69[_0x5291cf(0x1f3)],'updateTime':_0x417a69['updateTime']};}function detailArtifact(_0x8dc172){const _0x17c272=a10_0x51ba82;return{'id':_0x8dc172['id'],'appCode':_0x8dc172['appCode'],'name':_0x8dc172['name'],'artifactType':_0x8dc172['artifactType'],'source':_0x8dc172[_0x17c272(0x202)],'favorite':_0x8dc172['favorite'],'deleted':_0x8dc172[_0x17c272(0x1d4)],'content':_0x8dc172['content']??'','compiledContent':_0x8dc172[_0x17c272(0x1da)],'metadata':_0x8dc172[_0x17c272(0x1fe)]??{},'createTime':_0x8dc172[_0x17c272(0x1f3)],'updateTime':_0x8dc172['updateTime']};}function readFavoriteFlag(_0x141078){const _0xa878d4=a10_0x51ba82,_0x4eafe1=_0x141078[_0xa878d4(0x1dd)](_0xa878d4(0x1e9));return _0x4eafe1===undefined||_0x4eafe1===null||_0x4eafe1===''?undefined:_0x141078[_0xa878d4(0x201)]('favorite');}const artifactList={'service':a10_0x51ba82(0x210),'command':a10_0x51ba82(0x1d3),'description':'List\x20current-app\x20react_module\x20Artifacts','risk':a10_0x51ba82(0x205),'flags':[{'name':'source','type':a10_0x51ba82(0x1e4),'description':'Optional\x20source\x20filter,\x20for\x20example\x20AGENT'},{'name':'favorite','type':a10_0x51ba82(0x1d0),'description':a10_0x51ba82(0x20c)},VERBOSE_FLAG],async 'execute'(_0x223cec){const _0x536ea3=a10_0x51ba82,_0x28be80=await listRuntimeArtifacts(_0x223cec[_0x536ea3(0x1e5)],{'artifactType':ARTIFACT_TYPE_REACT_MODULE,..._0x223cec[_0x536ea3(0x1df)]('source')?{'source':_0x223cec[_0x536ea3(0x1df)](_0x536ea3(0x202))}:{},...readFavoriteFlag(_0x223cec)!==undefined?{'favorite':readFavoriteFlag(_0x223cec)}:{}});return{'ok':!![],'data':{'total':_0x28be80['length'],'items':_0x223cec['bool']('verbose')?_0x28be80:_0x28be80[_0x536ea3(0x1f1)](summarizeArtifact)}};}},artifactDetail={'service':a10_0x51ba82(0x210),'command':a10_0x51ba82(0x1e8),'description':'Show\x20one\x20Artifact\x20by\x20id','risk':a10_0x51ba82(0x205),'flags':[{...ID_FLAG,'description':'Artifact\x20ID'}],async 'execute'(_0x11ee0c){const _0x45fc6b=a10_0x51ba82,_0x188e7a=await getRuntimeArtifact(_0x11ee0c[_0x45fc6b(0x1eb)]('id'),_0x11ee0c[_0x45fc6b(0x1e5)]);return{'ok':!![],'data':detailArtifact(_0x188e7a)};}},artifactCreate={'service':a10_0x51ba82(0x210),'command':a10_0x51ba82(0x1e0),'description':a10_0x51ba82(0x1ca),'risk':'write','confirmationDescription':'保存新的\x20Artifact\x20源码并进行编译;成功后将在当前应用中新增可展示的内嵌模块。','flags':[FILE_FLAG,ARTIFACT_NAME_FLAG,METADATA_FLAG],async 'execute'(_0x485101){const _0x478aa4=a10_0x51ba82,_0x4a2838=buildArtifactInput(_0x485101),_0x587a31=await createRuntimeArtifact(_0x485101[_0x478aa4(0x1e5)],_0x4a2838);return{'ok':!![],'data':detailArtifact(_0x587a31),'message':_0x478aa4(0x213)+_0x587a31['id']+(_0x587a31[_0x478aa4(0x1ee)]?'\x20('+_0x587a31[_0x478aa4(0x1ee)]+')':'')};},async 'dryRun'(_0x1e12a2){const _0x58837b=a10_0x51ba82,_0x34c403=buildArtifactInput(_0x1e12a2);return dryRun(_0x58837b(0x1cc),_0x58837b(0x1fc))[_0x58837b(0x1d9)]({'appCode':_0x1e12a2[_0x58837b(0x1e5)],..._0x34c403})[_0x58837b(0x1dc)](_0x58837b(0x216))['build']();},'writeEventSubject'(_0x31aa10){const _0x189b6d=a10_0x51ba82,_0x4f8f02=_0x31aa10[_0x189b6d(0x200)]?.['id'];if(typeof _0x4f8f02!==_0x189b6d(0x1e4)&&typeof _0x4f8f02!==_0x189b6d(0x1d8))return undefined;return{'kind':'artifact','id':String(_0x4f8f02),'action':_0x189b6d(0x1e0)};}},artifactUpdate={'service':'artifact','command':a10_0x51ba82(0x218),'description':a10_0x51ba82(0x1f9),'risk':'write','confirmationDescription':a10_0x51ba82(0x20d),'flags':[{...ID_FLAG,'description':a10_0x51ba82(0x1e7)},FILE_FLAG,ARTIFACT_NAME_FLAG,METADATA_FLAG],async 'execute'(_0x358d01){const _0x1fff22=a10_0x51ba82,_0x5c506e=_0x358d01[_0x1fff22(0x1eb)]('id'),_0x5afb3a=buildArtifactInput(_0x358d01),_0x6b1577=await updateRuntimeArtifact(_0x5c506e,_0x358d01['appCode'],_0x5afb3a);return{'ok':!![],'data':detailArtifact(_0x6b1577),'message':'Updated\x20Artifact\x20'+_0x6b1577['id']+(_0x6b1577[_0x1fff22(0x1ee)]?'\x20('+_0x6b1577[_0x1fff22(0x1ee)]+')':'')};},async 'dryRun'(_0x36bb47){const _0x34f268=a10_0x51ba82,_0x190855=_0x36bb47[_0x34f268(0x1eb)]('id'),_0x53dd49=buildArtifactInput(_0x36bb47);return dryRun('POST','/client/artifact/'+_0x190855+_0x34f268(0x1d7))[_0x34f268(0x1d9)]({'appCode':_0x36bb47[_0x34f268(0x1e5)],..._0x53dd49})['description'](_0x34f268(0x1cb)+_0x190855)['build']();},'writeEventSubject'(_0x1ebdbd){const _0x438a82=a10_0x51ba82,_0x52d974=_0x1ebdbd[_0x438a82(0x200)]?.['id'];if(typeof _0x52d974!==_0x438a82(0x1e4)&&typeof _0x52d974!==_0x438a82(0x1d8))return undefined;return{'kind':_0x438a82(0x210),'id':String(_0x52d974),'action':_0x438a82(0x218)};}};export const artifactDefinitions=[artifactList,artifactDetail,artifactCreate,artifactUpdate];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const a11_0x78b5e8=a11_0x56eb;function a11_0x57d8(){const _0x1399b9=['\x20remaining','stringify','Device\x20auth\x20API\x20error\x20(','source','Device\x20authorization\x20timed\x20out\x20after\x2010\x20minutes.\x20Run\x20`lovrabet\x20auth\x20device`\x20to\x20get\x20a\x20new\x20code.','string','signal','object','The\x20device\x20code\x20is\x20valid\x20for\x2010\x20minutes.','907167UyRDjS','name','boolean','data','randomUUID','Write\x20to\x20global\x20config\x20(default)','84069lginAt','5FpTbLJ','),\x20retrying...','74ctdBvi','\x20auth\x20device','Print\x20URL\x20to\x20stdout\x20and\x20exit\x20(for\x20WorkBuddy\x20integration)','3071916XMAHZq','Device\x20auth\x20API\x20returned\x20HTTP\x20','Verify:\x20','cancelled','\x20config.','1888381yLxedp','floor','POST','611989gTohoW','log','SIGINT','Invalid\x20access_key\x20returned\x20by\x20server.','Device\x20code\x20expired.\x20Run\x20`lovrabet\x20auth\x20device`\x20to\x20get\x20a\x20new\x20code.','json','AccessKey\x20saved\x20to\x20','通过设备码流程完成授权(在浏览器中操作,无需复制粘贴)','removeListener','once','Device\x20authorization\x20cancelled.','nonInteractive','test','lovrabet-cli','getTime','Device\x20authorization\x20successful.','2764494GbbCoY','status','scope','740028dxmcTB','global','parse','createdAt','bool','toISOString','access_key','Invalid\x20device\x20auth\x20response','write','networkError','validation','accessKey','project','Waiting\x20for\x20authorization\x20(timeout:\x2010\x20minutes,\x20Ctrl+C\x20to\x20cancel)...','utf8','abort','10wPEriX','global-default','code','48dYPSIC','AbortError','aborted','url-only','stderr','apiError','Already\x20authorized.\x20Use\x20`lovrabet\x20auth\x20status`\x20to\x20verify.','App\x20name\x20shown\x20on\x20authorization\x20page\x20(default:\x20lovrabet)'];a11_0x57d8=function(){return _0x1399b9;};return a11_0x57d8();}(function(_0x2c3bc2,_0x1e67f8){const _0x2618a6=a11_0x56eb,_0xe18c27=_0x2c3bc2();while(!![]){try{const _0x549451=parseInt(_0x2618a6(0x12e))/0x1+-parseInt(_0x2618a6(0xec))/0x2*(parseInt(_0x2618a6(0x134))/0x3)+parseInt(_0x2618a6(0xef))/0x4+parseInt(_0x2618a6(0x135))/0x5*(parseInt(_0x2618a6(0x10a))/0x6)+parseInt(_0x2618a6(0xf7))/0x7*(-parseInt(_0x2618a6(0x11d))/0x8)+parseInt(_0x2618a6(0x107))/0x9+parseInt(_0x2618a6(0x11a))/0xa*(parseInt(_0x2618a6(0xf4))/0xb);if(_0x549451===_0x1e67f8)break;else _0xe18c27['push'](_0xe18c27['shift']());}catch(_0x46c6e4){_0xe18c27['push'](_0xe18c27['shift']());}}}(a11_0x57d8,0xaec84));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';function a11_0x56eb(_0x5cf252,_0x279927){_0x5cf252=_0x5cf252-0xeb;const _0x57d8c3=a11_0x57d8();let _0x56ebd2=_0x57d8c3[_0x5cf252];return _0x56ebd2;}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(_0x595a0a){const _0x2f7908=a11_0x56eb;return toScopeFlags(resolveConfigScope({'explicitGlobal':_0x595a0a['bool'](_0x2f7908(0x10b)),'explicitProject':_0x595a0a['bool'](_0x2f7908(0x116)),'policy':_0x2f7908(0x11b)}));}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 _0x59a336=a11_0x56eb;return crypto[_0x59a336(0x132)]();}export function buildDeviceAuthUrl(_0xf823da,_0x399d69,_0x14f6b7='lovrabet-cli'){return _0xf823da+'/device-auth?code='+encodeURIComponent(_0x399d69)+'&source='+encodeURIComponent(_0x14f6b7);}export function getDeviceCodePath(){return homedir()+'/'+PRODUCT_CONFIG['homeDirName']+'/.device-auth';}export function readStoredDeviceCode(){const _0x141c9d=a11_0x56eb,_0x103390=getDeviceCodePath();if(!existsSync(_0x103390))return null;try{const _0x490f7e=readFileSync(_0x103390,{'encoding':_0x141c9d(0x118)}),_0x571c3c=JSON[_0x141c9d(0x10c)](_0x490f7e);if(_0x571c3c&&typeof _0x571c3c[_0x141c9d(0x11c)]===_0x141c9d(0x12a)&&typeof _0x571c3c[_0x141c9d(0x10d)]===_0x141c9d(0x12a)&&(_0x571c3c[_0x141c9d(0x109)]===_0x141c9d(0x10b)||_0x571c3c[_0x141c9d(0x109)]===_0x141c9d(0x116)))return _0x571c3c;}catch{}return null;}export function writeStoredDeviceCode(_0x11b414,_0x1d61ee){const _0x51903d=a11_0x56eb,_0x23c2c8=getDeviceCodePath(),_0x910684=dirname(_0x23c2c8);!existsSync(_0x910684)&&mkdirSync(_0x910684,{'recursive':!![]});const _0x33d96f={'code':_0x11b414,'createdAt':new Date()[_0x51903d(0x10f)](),'scope':_0x1d61ee};writeFileSync(_0x23c2c8,JSON['stringify'](_0x33d96f),{'encoding':_0x51903d(0x118),'mode':0x180});}export function deleteStoredDeviceCode(){const _0x2a6b44=getDeviceCodePath();try{unlinkSync(_0x2a6b44);}catch{}}export function isStoredDeviceCodeExpired(_0x4f4228){const _0x5e5502=a11_0x56eb;return Date['now']()-new Date(_0x4f4228[_0x5e5502(0x10d)])[_0x5e5502(0x105)]()>DEVICE_CODE_TTL_MS;}export async function fetchDeviceToken(_0x5ea7f5,_0xc8479b){const _0x399566=a11_0x56eb,_0x2caab7=_0x5ea7f5+'/api/device-auth/token',_0x289598=new AbortController(),_0x33b611=setTimeout(()=>_0x289598[_0x399566(0x119)](),0x2710),_0x45029e=await fetch(_0x2caab7,{'method':_0x399566(0xf6),'headers':{'Content-Type':'application/json'},'body':JSON[_0x399566(0x126)]({'code':_0xc8479b}),'signal':_0x289598[_0x399566(0x12b)]});clearTimeout(_0x33b611);if(!_0x45029e['ok'])throw CliErrors[_0x399566(0x113)](_0x399566(0xf0)+_0x45029e['status']);const _0x1363f6=await _0x45029e[_0x399566(0xfc)](),_0x383337=_0x1363f6[_0x399566(0x131)]&&typeof _0x1363f6[_0x399566(0x131)]===_0x399566(0x12c)?_0x1363f6[_0x399566(0x131)]:_0x1363f6;if(!_0x383337||typeof _0x383337[_0x399566(0x108)]!=='string')throw CliErrors[_0x399566(0x122)](_0x399566(0x111));return{'status':_0x383337['status'],'access_key':typeof _0x383337[_0x399566(0x110)]===_0x399566(0x12a)?_0x383337[_0x399566(0x110)]:undefined};}export async function pollDeviceToken(_0x25aa96,_0x290d5a,_0x1fdbec){const _0x33e0e4=a11_0x56eb;let _0x8dbd42=0x0;for(let _0x113a6c=0x0;_0x113a6c<MAX_POLLS;_0x113a6c++){if(_0x1fdbec[_0x33e0e4(0x11f)])throw CliErrors[_0x33e0e4(0xf2)](_0x33e0e4(0x101));let _0x4a3538;try{_0x4a3538=await fetchDeviceToken(_0x25aa96,_0x290d5a);}catch(_0x5f52b5){if(_0x5f52b5 instanceof Error&&_0x5f52b5[_0x33e0e4(0x12f)]===_0x33e0e4(0x11e))throw CliErrors[_0x33e0e4(0xf2)](_0x33e0e4(0x101));_0x8dbd42++;if(_0x8dbd42>=MAX_CONSECUTIVE_NETWORK_ERRORS)throw CliErrors['networkError']('Device\x20auth\x20API\x20unreachable\x20after\x20multiple\x20retries.');writeCliSideChannelLine(_0x33e0e4(0x127)+_0x8dbd42+'/'+MAX_CONSECUTIVE_NETWORK_ERRORS+_0x33e0e4(0xeb)),await sleep(POLL_INTERVAL_MS);continue;}_0x8dbd42=0x0;if(_0x4a3538[_0x33e0e4(0x108)]==='success'){if(!_0x4a3538[_0x33e0e4(0x110)])throw CliErrors['apiError']('Invalid\x20access_key\x20returned\x20by\x20server.');return _0x4a3538['access_key'];}if(_0x4a3538[_0x33e0e4(0x108)]==='expired'){deleteStoredDeviceCode();throw CliErrors['validation'](_0x33e0e4(0xfb));}const _0x27c0c6=(_0x113a6c+0x1)*POLL_INTERVAL_MS,_0x8c90d8=DEVICE_CODE_TTL_MS-_0x27c0c6,_0x140917=Math['floor'](_0x8c90d8/0xea60),_0x3f479e=Math[_0x33e0e4(0xf5)](_0x8c90d8%0xea60/0x3e8);process[_0x33e0e4(0x121)][_0x33e0e4(0x112)]('\x0dWaiting\x20for\x20authorization...\x20'+_0x140917+':'+String(_0x3f479e)['padStart'](0x2,'0')+_0x33e0e4(0x125)),await sleep(POLL_INTERVAL_MS);}deleteStoredDeviceCode();throw CliErrors[_0x33e0e4(0x114)](_0x33e0e4(0x129));}function sleep(_0xa69c2a){return new Promise(_0x281b1b=>setTimeout(_0x281b1b,_0xa69c2a));}export const authDeviceDefinition={'service':'auth','command':'device','description':a11_0x78b5e8(0xfe),'risk':'write','confirmationDescription':'将启动设备码授权流程;授权成功后会把获取到的\x20AccessKey\x20保存到所选\x20Lovrabet\x20配置。确认界面不会显示设备码或密钥。','requiresAuth':![],'requiresAppCode':![],'hasFormat':![],'flags':[{'name':a11_0x78b5e8(0x10b),'type':'boolean','description':a11_0x78b5e8(0x133),'default':!![]},{'name':a11_0x78b5e8(0x116),'type':a11_0x78b5e8(0x130),'description':'Write\x20to\x20project\x20config','default':![]},{'name':a11_0x78b5e8(0x128),'type':'string','description':a11_0x78b5e8(0x124),'default':a11_0x78b5e8(0x104)},{'name':a11_0x78b5e8(0x120),'type':a11_0x78b5e8(0x130),'description':a11_0x78b5e8(0xee),'default':![]}],async 'execute'(_0x212c02){const _0xe36371=a11_0x78b5e8,_0x32b441=resolveAuthScopeFlags(_0x212c02),_0x3454ef=_0x32b441[_0xe36371(0x10b)]?_0xe36371(0x10b):_0xe36371(0x116),_0x3bc841=readScopedConfig(_0x32b441);if(_0x3bc841[_0xe36371(0x115)])return{'ok':!![],'message':_0xe36371(0x123)};const _0x3dd0c0=(_0x212c02['str'](_0xe36371(0x128))||_0xe36371(0x104))['trim'](),_0x43afb9=getUserDomain(),_0x52a881=readStoredDeviceCode(),_0x3090bb=_0x52a881&&!isStoredDeviceCodeExpired(_0x52a881)?_0x52a881['code']:((()=>{const _0x3fb606=generateDeviceCode();return writeStoredDeviceCode(_0x3fb606,_0x3454ef),_0x3fb606;})()),_0x500ef9=buildDeviceAuthUrl(_0x43afb9,_0x3090bb,_0x3dd0c0);if(_0x212c02[_0xe36371(0x10e)](_0xe36371(0x120)))return console[_0xe36371(0xf8)](_0x500ef9),{'ok':!![]};writeCliSideChannelLine('Open\x20this\x20URL\x20in\x20your\x20browser\x20to\x20authorize:'),writeCliSideChannelLine(''),writeCliSideChannelLine(_0x500ef9),writeCliSideChannelLine(''),writeCliSideChannelLine(_0xe36371(0x12d));if(_0x212c02[_0xe36371(0x102)])return writeCliSideChannelLine('After\x20authorizing,\x20re-run:\x20'+CLI_BIN_NAME+_0xe36371(0xed)),{'ok':!![],'message':'Device\x20authorization\x20URL\x20printed.\x20Complete\x20authorization\x20in\x20browser,\x20then\x20re-run.'};writeCliSideChannelLine(_0xe36371(0x117));const _0x4d0ce3=new AbortController(),_0x3e14b5=()=>{const _0xead832=_0xe36371;_0x4d0ce3[_0xead832(0x119)](),process[_0xead832(0xff)](_0xead832(0xf9),_0x3e14b5);};process[_0xe36371(0x100)]('SIGINT',_0x3e14b5);let _0x100bd6;try{_0x100bd6=await pollDeviceToken(_0x43afb9,_0x3090bb,_0x4d0ce3[_0xe36371(0x12b)]);}finally{process[_0xe36371(0xff)](_0xe36371(0xf9),_0x3e14b5);}if(!ACCESS_KEY_PATTERN[_0xe36371(0x103)](_0x100bd6))throw CliErrors['apiError'](_0xe36371(0xfa));const _0xf62e62=readScopedConfig(_0x32b441);return _0xf62e62['accessKey']=_0x100bd6,writeScopedConfig(_0xf62e62,_0x32b441),deleteStoredDeviceCode(),process['stderr'][_0xe36371(0x112)]('\x0a'),writeCliSideChannelLine(_0xe36371(0xfd)+_0x3454ef+_0xe36371(0xf3)),writeCliSideChannelLine(_0xe36371(0xf1)+CLI_BIN_NAME+'\x20auth\x20status'),{'ok':!![],'message':_0xe36371(0x106)};}};
|
|
1
|
+
const a11_0x9414e2=a11_0x486b;(function(_0x3e705f,_0x3c2893){const _0xe5ed89=a11_0x486b,_0x32bb97=_0x3e705f();while(!![]){try{const _0x234a9f=parseInt(_0xe5ed89(0x129))/0x1*(parseInt(_0xe5ed89(0x159))/0x2)+-parseInt(_0xe5ed89(0x150))/0x3*(-parseInt(_0xe5ed89(0x127))/0x4)+parseInt(_0xe5ed89(0x146))/0x5+parseInt(_0xe5ed89(0x124))/0x6*(-parseInt(_0xe5ed89(0x11e))/0x7)+parseInt(_0xe5ed89(0x134))/0x8+-parseInt(_0xe5ed89(0x164))/0x9*(parseInt(_0xe5ed89(0x141))/0xa)+-parseInt(_0xe5ed89(0x14d))/0xb;if(_0x234a9f===_0x3c2893)break;else _0x32bb97['push'](_0x32bb97['shift']());}catch(_0x2e08df){_0x32bb97['push'](_0x32bb97['shift']());}}}(a11_0x109b,0xf3e80));import{existsSync,mkdirSync,readFileSync,unlinkSync,writeFileSync}from'node:fs';import{dirname}from'node:path';function a11_0x486b(_0x15ba86,_0x2e6411){_0x15ba86=_0x15ba86-0x119;const _0x109baf=a11_0x109b();let _0x486b87=_0x109baf[_0x15ba86];return _0x486b87;}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(_0x2cb540){const _0xc70e46=a11_0x486b;return toScopeFlags(resolveConfigScope({'explicitGlobal':_0x2cb540[_0xc70e46(0x12b)](_0xc70e46(0x125)),'explicitProject':_0x2cb540['bool'](_0xc70e46(0x15e)),'policy':_0xc70e46(0x167)}));}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 _0xafecf4=a11_0x486b;return crypto[_0xafecf4(0x13d)]();}export function buildDeviceAuthUrl(_0x3eb1bc,_0x256110,_0x25a89a=a11_0x9414e2(0x152)){return _0x3eb1bc+'/device-auth?code='+encodeURIComponent(_0x256110)+'&source='+encodeURIComponent(_0x25a89a);}export function getDeviceCodePath(){const _0x4b0ee9=a11_0x9414e2;return homedir()+'/'+PRODUCT_CONFIG[_0x4b0ee9(0x168)]+_0x4b0ee9(0x147);}export function readStoredDeviceCode(){const _0x1d58fc=a11_0x9414e2,_0x3d1c6c=getDeviceCodePath();if(!existsSync(_0x3d1c6c))return null;try{const _0x24d1d0=readFileSync(_0x3d1c6c,{'encoding':_0x1d58fc(0x15f)}),_0x3426d6=JSON[_0x1d58fc(0x12e)](_0x24d1d0);if(_0x3426d6&&typeof _0x3426d6[_0x1d58fc(0x12c)]===_0x1d58fc(0x163)&&typeof _0x3426d6[_0x1d58fc(0x15c)]===_0x1d58fc(0x163)&&(_0x3426d6['scope']===_0x1d58fc(0x125)||_0x3426d6[_0x1d58fc(0x137)]==='project'))return _0x3426d6;}catch{}return null;}export function writeStoredDeviceCode(_0xcf380,_0x378838){const _0x106744=a11_0x9414e2,_0x3f6c35=getDeviceCodePath(),_0x571b1a=dirname(_0x3f6c35);!existsSync(_0x571b1a)&&mkdirSync(_0x571b1a,{'recursive':!![]});const _0x2218b1={'code':_0xcf380,'createdAt':new Date()[_0x106744(0x142)](),'scope':_0x378838};writeFileSync(_0x3f6c35,JSON[_0x106744(0x157)](_0x2218b1),{'encoding':_0x106744(0x15f),'mode':0x180});}export function deleteStoredDeviceCode(){const _0x158c6d=getDeviceCodePath();try{unlinkSync(_0x158c6d);}catch{}}export function isStoredDeviceCodeExpired(_0x40ceb3){const _0x5612a9=a11_0x9414e2;return Date[_0x5612a9(0x133)]()-new Date(_0x40ceb3[_0x5612a9(0x15c)])[_0x5612a9(0x156)]()>DEVICE_CODE_TTL_MS;}export async function fetchDeviceToken(_0x269ec8,_0x32dae4){const _0x147442=a11_0x9414e2,_0x135657=_0x269ec8+_0x147442(0x151),_0x43cded=new AbortController(),_0x2a5886=setTimeout(()=>_0x43cded[_0x147442(0x120)](),0x2710),_0x25b768=await fetch(_0x135657,{'method':_0x147442(0x140),'headers':{'Content-Type':_0x147442(0x12f)},'body':JSON['stringify']({'code':_0x32dae4}),'signal':_0x43cded['signal']});clearTimeout(_0x2a5886);if(!_0x25b768['ok'])throw CliErrors[_0x147442(0x121)](_0x147442(0x128)+_0x25b768[_0x147442(0x14f)]);const _0x23127e=await _0x25b768[_0x147442(0x135)](),_0x53f3b0=_0x23127e[_0x147442(0x122)]&&typeof _0x23127e[_0x147442(0x122)]===_0x147442(0x165)?_0x23127e[_0x147442(0x122)]:_0x23127e;if(!_0x53f3b0||typeof _0x53f3b0[_0x147442(0x14f)]!==_0x147442(0x163))throw CliErrors['apiError'](_0x147442(0x11f));return{'status':_0x53f3b0[_0x147442(0x14f)],'access_key':typeof _0x53f3b0[_0x147442(0x13f)]===_0x147442(0x163)?_0x53f3b0[_0x147442(0x13f)]:undefined};}export async function pollDeviceToken(_0x5a1f1d,_0x1d95f3,_0xfded9a){const _0x5b9108=a11_0x9414e2;let _0x385033=0x0;for(let _0x117249=0x0;_0x117249<MAX_POLLS;_0x117249++){if(_0xfded9a[_0x5b9108(0x14e)])throw CliErrors[_0x5b9108(0x158)]('Device\x20authorization\x20cancelled.');let _0x35c690;try{_0x35c690=await fetchDeviceToken(_0x5a1f1d,_0x1d95f3);}catch(_0xfd0596){if(_0xfd0596 instanceof Error&&_0xfd0596[_0x5b9108(0x138)]==='AbortError')throw CliErrors[_0x5b9108(0x158)](_0x5b9108(0x11a));_0x385033++;if(_0x385033>=MAX_CONSECUTIVE_NETWORK_ERRORS)throw CliErrors['networkError'](_0x5b9108(0x144));writeCliSideChannelLine(_0x5b9108(0x16b)+_0x385033+'/'+MAX_CONSECUTIVE_NETWORK_ERRORS+_0x5b9108(0x149)),await sleep(POLL_INTERVAL_MS);continue;}_0x385033=0x0;if(_0x35c690[_0x5b9108(0x14f)]===_0x5b9108(0x130)){if(!_0x35c690[_0x5b9108(0x13f)])throw CliErrors[_0x5b9108(0x154)]('Invalid\x20access_key\x20returned\x20by\x20server.');return _0x35c690[_0x5b9108(0x13f)];}if(_0x35c690[_0x5b9108(0x14f)]===_0x5b9108(0x12a)){deleteStoredDeviceCode();throw CliErrors['validation'](_0x5b9108(0x145));}const _0x34ddba=(_0x117249+0x1)*POLL_INTERVAL_MS,_0xc5eec7=DEVICE_CODE_TTL_MS-_0x34ddba,_0x483f90=Math['floor'](_0xc5eec7/0xea60),_0x46cc90=Math['floor'](_0xc5eec7%0xea60/0x3e8);process[_0x5b9108(0x139)][_0x5b9108(0x11b)](_0x5b9108(0x148)+_0x483f90+':'+String(_0x46cc90)[_0x5b9108(0x143)](0x2,'0')+_0x5b9108(0x15d)),await sleep(POLL_INTERVAL_MS);}deleteStoredDeviceCode();throw CliErrors[_0x5b9108(0x13e)](_0x5b9108(0x16c));}function sleep(_0x994e){return new Promise(_0x2637ca=>setTimeout(_0x2637ca,_0x994e));}function a11_0x109b(){const _0x3e3247=['url-only','Device\x20authorization\x20cancelled.','write','通过设备码流程完成授权(在浏览器中操作,无需复制粘贴)','\x20config.','2003575QWtGDT','Invalid\x20device\x20auth\x20response','abort','networkError','data','\x20auth\x20status','24xEWrBk','global','AccessKey\x20saved\x20to\x20','62212QoKrjX','Device\x20auth\x20API\x20returned\x20HTTP\x20','1986109mdieRT','expired','bool','code','source','parse','application/json','success','Verify:\x20','SIGINT','now','14823864JJMPfV','json','Print\x20URL\x20to\x20stdout\x20and\x20exit\x20(for\x20WorkBuddy\x20integration)','scope','name','stderr','log','Already\x20authorized.\x20Use\x20`lovrabet\x20auth\x20status`\x20to\x20verify.','removeListener','randomUUID','validation','access_key','POST','11810QEyFRx','toISOString','padStart','Device\x20auth\x20API\x20unreachable\x20after\x20multiple\x20retries.','Device\x20code\x20expired.\x20Run\x20`lovrabet\x20auth\x20device`\x20to\x20get\x20a\x20new\x20code.','7708355AswgBT','/.device-auth','\x0dWaiting\x20for\x20authorization...\x20','),\x20retrying...','Device\x20authorization\x20successful.','Write\x20to\x20project\x20config','accessKey','44454014mIsPpj','aborted','status','180JnlAXb','/api/device-auth/token','lovrabet-cli','将启动设备码授权流程;授权成功后会把获取到的\x20AccessKey\x20保存到所选\x20Lovrabet\x20配置。确认界面不会显示设备码或密钥。','apiError','The\x20device\x20code\x20is\x20valid\x20for\x2010\x20minutes.','getTime','stringify','cancelled','2KGcSOe','Invalid\x20access_key\x20returned\x20by\x20server.','boolean','createdAt','\x20remaining','project','utf8','nonInteractive','After\x20authorizing,\x20re-run:\x20','trim','string','981sWcPqZ','object','Open\x20this\x20URL\x20in\x20your\x20browser\x20to\x20authorize:','global-default','homeDirName','\x20auth\x20device','Write\x20to\x20global\x20config\x20(default)','Device\x20auth\x20API\x20error\x20(','Device\x20authorization\x20timed\x20out\x20after\x2010\x20minutes.\x20Run\x20`lovrabet\x20auth\x20device`\x20to\x20get\x20a\x20new\x20code.'];a11_0x109b=function(){return _0x3e3247;};return a11_0x109b();}export const authDeviceDefinition={'service':'auth','command':'device','description':a11_0x9414e2(0x11c),'risk':a11_0x9414e2(0x11b),'confirmationDescription':a11_0x9414e2(0x153),'requiresAuth':![],'requiresAppCode':![],'hasFormat':![],'flags':[{'name':a11_0x9414e2(0x125),'type':a11_0x9414e2(0x15b),'description':a11_0x9414e2(0x16a),'default':!![]},{'name':a11_0x9414e2(0x15e),'type':a11_0x9414e2(0x15b),'description':a11_0x9414e2(0x14b),'default':![]},{'name':a11_0x9414e2(0x12d),'type':a11_0x9414e2(0x163),'description':'App\x20name\x20shown\x20on\x20authorization\x20page\x20(default:\x20lovrabet)','default':'lovrabet-cli'},{'name':'url-only','type':a11_0x9414e2(0x15b),'description':a11_0x9414e2(0x136),'default':![]}],async 'execute'(_0x20f07b){const _0x4fc305=a11_0x9414e2,_0x13475a=resolveAuthScopeFlags(_0x20f07b),_0x2a1af2=_0x13475a[_0x4fc305(0x125)]?'global':_0x4fc305(0x15e),_0x13312d=readScopedConfig(_0x13475a);if(_0x13312d['accessKey'])return{'ok':!![],'message':_0x4fc305(0x13b)};const _0x4b8a21=(_0x20f07b['str'](_0x4fc305(0x12d))||_0x4fc305(0x152))[_0x4fc305(0x162)](),_0x40bcb7=getUserDomain(),_0x432ca2=readStoredDeviceCode(),_0x6980ca=_0x432ca2&&!isStoredDeviceCodeExpired(_0x432ca2)?_0x432ca2[_0x4fc305(0x12c)]:((()=>{const _0x16efbc=generateDeviceCode();return writeStoredDeviceCode(_0x16efbc,_0x2a1af2),_0x16efbc;})()),_0x327e99=buildDeviceAuthUrl(_0x40bcb7,_0x6980ca,_0x4b8a21);if(_0x20f07b[_0x4fc305(0x12b)](_0x4fc305(0x119)))return console[_0x4fc305(0x13a)](_0x327e99),{'ok':!![]};writeCliSideChannelLine(_0x4fc305(0x166)),writeCliSideChannelLine(''),writeCliSideChannelLine(_0x327e99),writeCliSideChannelLine(''),writeCliSideChannelLine(_0x4fc305(0x155));if(_0x20f07b[_0x4fc305(0x160)])return writeCliSideChannelLine(_0x4fc305(0x161)+CLI_BIN_NAME+_0x4fc305(0x169)),{'ok':!![],'message':'Device\x20authorization\x20URL\x20printed.\x20Complete\x20authorization\x20in\x20browser,\x20then\x20re-run.'};writeCliSideChannelLine('Waiting\x20for\x20authorization\x20(timeout:\x2010\x20minutes,\x20Ctrl+C\x20to\x20cancel)...');const _0x39663=new AbortController(),_0x276cf5=()=>{const _0x252a5b=_0x4fc305;_0x39663[_0x252a5b(0x120)](),process[_0x252a5b(0x13c)]('SIGINT',_0x276cf5);};process['once'](_0x4fc305(0x132),_0x276cf5);let _0x614e98;try{_0x614e98=await pollDeviceToken(_0x40bcb7,_0x6980ca,_0x39663['signal']);}finally{process[_0x4fc305(0x13c)](_0x4fc305(0x132),_0x276cf5);}if(!ACCESS_KEY_PATTERN['test'](_0x614e98))throw CliErrors['apiError'](_0x4fc305(0x15a));const _0x1a8e38=readScopedConfig(_0x13475a);return _0x1a8e38[_0x4fc305(0x14c)]=_0x614e98,writeScopedConfig(_0x1a8e38,_0x13475a),deleteStoredDeviceCode(),process[_0x4fc305(0x139)][_0x4fc305(0x11b)]('\x0a'),writeCliSideChannelLine(_0x4fc305(0x126)+_0x2a1af2+_0x4fc305(0x11d)),writeCliSideChannelLine(_0x4fc305(0x131)+CLI_BIN_NAME+_0x4fc305(0x123)),{'ok':!![],'message':_0x4fc305(0x14a)};}};
|