@lovrabet/lovrabet-cli 2.2.5-beta.2 → 2.2.6-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 -3
- 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.d.ts +1 -1
- package/lib/commands/bff/detail.js +1 -1
- package/lib/commands/bff/exec.d.ts +2 -2
- 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.d.ts +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/notification/config-list.js +1 -1
- package/lib/commands/notification/index.js +1 -1
- package/lib/commands/notification/shared.js +1 -1
- package/lib/commands/ocr/index.js +1 -1
- package/lib/commands/permit/dataset-get.js +1 -1
- package/lib/commands/permit/dataset-set.js +1 -1
- package/lib/commands/permit/index.js +1 -1
- package/lib/commands/permit/page-get.js +1 -1
- package/lib/commands/permit/page-set.js +1 -1
- package/lib/commands/permit/role-menus-set.js +1 -1
- package/lib/commands/permit/role-menus.js +1 -1
- package/lib/commands/permit/shared.js +1 -1
- package/lib/commands/personal-bff/index.js +1 -1
- package/lib/commands/registry.js +1 -1
- package/lib/commands/role/create.js +1 -1
- package/lib/commands/role/delete.js +1 -1
- package/lib/commands/role/detail.js +1 -1
- package/lib/commands/role/index.js +1 -1
- package/lib/commands/role/list.js +1 -1
- package/lib/commands/role/shared.js +1 -1
- package/lib/commands/role/update.js +1 -1
- package/lib/commands/role/user-add.js +1 -1
- package/lib/commands/role/user-remove.js +1 -1
- package/lib/commands/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.js +1 -1
- package/lib/commands/user-account/index.js +1 -1
- package/lib/commands/workspace/index.js +1 -1
- package/lib/config/schema.js +1 -1
- package/lib/constant/app.js +1 -1
- package/lib/constant/auth-mode.js +1 -1
- package/lib/constant/cli.js +1 -1
- package/lib/constant/defaults.js +1 -1
- package/lib/constant/distribution.js +1 -1
- package/lib/constant/domain.d.ts +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 +6 -6
- package/lib/core/api-client.js +1 -1
- package/lib/core/db-resolver.js +1 -1
- package/lib/core/sdk-client.d.ts +3 -3
- 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.d.ts +3 -3
- 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 +2 -2
- package/skills/lovrabet/SKILL.md +19 -18
- package/skills/lovrabet/guides/dataset-and-data-workflow.md +2 -2
- package/skills/lovrabet/guides/sql-and-bff-workflow.md +7 -5
- package/skills/lovrabet/references/dataset-discovery-workflow.md +2 -2
- package/skills/lovrabet/references/lovrabet-app-config.md +1 -1
- package/skills/lovrabet/references/lovrabet-bff-workflow.md +1 -1
- package/skills/lovrabet/references/lovrabet-file-workflow.md +1 -1
- package/skills/lovrabet/references/lovrabet-personal-bff-workflow.md +35 -7
- package/skills/lovrabet/references/lovrabet-schedule-workflow.md +7 -6
- package/skills/lovrabet.manifest.json +3 -3
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Lovrabet CLI is the runtime command-line interface for Lovrabet applications. It
|
|
4
4
|
helps developers, delivery teams, operators, and AI agents work with published
|
|
5
|
-
apps, datasets, records, SQL queries,
|
|
5
|
+
apps, datasets, records, SQL queries, Backend Function scripts, files, OCR, knowledge bases,
|
|
6
6
|
artifacts, and runtime Skills from a stable terminal surface.
|
|
7
7
|
|
|
8
8
|
The CLI is designed for runtime operations: discover the right app, inspect data
|
|
@@ -112,7 +112,7 @@ existing user-level links or the cache they still reference.
|
|
|
112
112
|
| App and workspace | `lovrabet app list`, `lovrabet workspace init`, `lovrabet workspace use` |
|
|
113
113
|
| Dataset discovery | `lovrabet dataset list`, `lovrabet dataset detail`, `lovrabet dataset sdk-doc` |
|
|
114
114
|
| Data operations | `lovrabet data filter`, `lovrabet data getOne`, `lovrabet data create`, `lovrabet data update`, `lovrabet data delete`, `lovrabet data aggregate` |
|
|
115
|
-
| SQL and
|
|
115
|
+
| SQL and Backend Function | `lovrabet sql detail`, `lovrabet sql exec`, `lovrabet bff detail`, `lovrabet bff exec` |
|
|
116
116
|
| Personal assets | `lovrabet personal-bff list`, `lovrabet artifact list`, `lovrabet kb list` |
|
|
117
117
|
| Runtime files and OCR | `lovrabet file upload`, `lovrabet file query-url`, `lovrabet ocr recognize` |
|
|
118
118
|
| Skills | `lovrabet cli-skill install`, `lovrabet skill install`, `lovrabet skill create`, `lovrabet skill validate`, `lovrabet skill push --diagram-file`, `lovrabet skill diagram-show` |
|
|
@@ -151,7 +151,7 @@ Important options:
|
|
|
151
151
|
- Inspect dataset contracts with `dataset detail` before writing records.
|
|
152
152
|
- Prefer read commands before write commands when diagnosing data issues.
|
|
153
153
|
- Use `--dry-run` where supported before create, update, delete, artifact,
|
|
154
|
-
|
|
154
|
+
Personal Backend Function, or Skill operations.
|
|
155
155
|
- Use `--yes` only when the target app, dataset, parameters, and impact are
|
|
156
156
|
already verified.
|
|
157
157
|
- Before binding a DingTalk account, use `auth info` and `--dry-run` to
|
package/lib/cli.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
2
|
+
(function(_0x5e57df,_0x37aab9){const _0x271483=a0_0x4835,_0x141e71=_0x5e57df();while(!![]){try{const _0x269752=-parseInt(_0x271483(0x10d))/0x1+-parseInt(_0x271483(0x105))/0x2*(-parseInt(_0x271483(0x100))/0x3)+-parseInt(_0x271483(0x114))/0x4*(parseInt(_0x271483(0x117))/0x5)+parseInt(_0x271483(0x110))/0x6*(-parseInt(_0x271483(0xfe))/0x7)+-parseInt(_0x271483(0xf6))/0x8+parseInt(_0x271483(0x118))/0x9*(-parseInt(_0x271483(0xf1))/0xa)+parseInt(_0x271483(0x10e))/0xb*(parseInt(_0x271483(0xf2))/0xc);if(_0x269752===_0x37aab9)break;else _0x141e71['push'](_0x141e71['shift']());}catch(_0x3df9ac){_0x141e71['push'](_0x141e71['shift']());}}}(a0_0x75aa,0x2ae59));import{jsx as a0_0x2a7365}from'react/jsx-runtime';function a0_0x4835(_0xa76614,_0x4914cc){_0xa76614=_0xa76614-0xef;const _0x75aa89=a0_0x75aa();let _0x483529=_0x75aa89[_0xa76614];return _0x483529;}import a0_0x223c33 from'meow';import{render}from'ink';import{Help}from'./help.js';import{CliError,CliErrors}from'./errors.js';import{buildConfigFromFlags,initGlobalEnvironment}from'./context.js';import{isKnownService,getServiceEntry,findDefinition,getAllDefinitions,resolveRemovedCommand}from'./commands/registry.js';import{generateDynamicServiceHelp,resolveDynamicServiceCommand}from'./commands/service/dynamic.js';import{runCommand,createPipelineEnv}from'./framework/runner.js';import{generateCommandHelp,generateServiceHelp,generateFullHelp}from'./framework/help.js';import{buildMeowFlags}from'./constant/cli.js';import{getCliVersionDisplay}from'./utils/version.js';const helpText=generateFullHelp(),cli=a0_0x223c33(helpText,{'importMeta':import.meta,'flags':buildMeowFlags(),'version':getCliVersionDisplay()});function a0_0x75aa(){const _0x2410a4=['handler','Hint:\x20','args','262985LTIDhO','2563IunEVF','corrected','5682lTzsrx','assign','\x0aCancelled.\x0a','original','115684FayZXx','exitCode','\x20->\x20--','20GZrzPK','324252Xxegry','unknownCommand','hint','20QFfwGX','37992XXhPNz','write','Unexpected\x20error:','message','986352IIhfQQ','length','exit','flags','[preparse]\x20','flatMap','name','input','2471HdKSom','log','1039011frBbun','definition','stderr','validation','code','2fGTxod','help','error','./framework/preparse.js','ExitPromptError'];a0_0x75aa=function(){return _0x2410a4;};return a0_0x75aa();}void main()['catch'](handleError);async function main(){try{await run();}catch(_0x1321b5){handleError(_0x1321b5);}}async function run(){const _0x3057c4=a0_0x4835;let _0x14fda4=cli[_0x3057c4(0xfd)][0x0],_0x316509=cli[_0x3057c4(0xfd)][0x1];const _0x301f81=cli['flags'];try{const {correctFlags:_0x79477c}=await import(_0x3057c4(0x108)),_0x6cf5a7=getAllDefinitions()[_0x3057c4(0xfb)](_0x4bbd82=>_0x4bbd82['flags']??[]),{flags:_0x5949bb,corrections:_0x2463bd}=_0x79477c(_0x301f81,_0x6cf5a7);if(_0x2463bd[_0x3057c4(0xf7)]>0x0){for(const _0x4b06db of _0x2463bd){process['stderr'][_0x3057c4(0xf3)](_0x3057c4(0xfa)+_0x4b06db[_0x3057c4(0x10a)]+':\x20--'+_0x4b06db[_0x3057c4(0x113)]+_0x3057c4(0x116)+_0x4b06db[_0x3057c4(0x10f)]+'\x0a');}Object[_0x3057c4(0x111)](_0x301f81,_0x5949bb);}}catch{}if(!_0x14fda4){const {waitUntilExit:_0x2d82b1}=render(a0_0x2a7365(Help,{}));await _0x2d82b1();return;}const _0x4737fa=resolveRemovedCommand(_0x14fda4,_0x316509);if(_0x4737fa)throw CliErrors[_0x3057c4(0x103)](_0x4737fa[_0x3057c4(0xf5)],_0x4737fa[_0x3057c4(0xf0)]);if(!isKnownService(_0x14fda4)){const _0x36ee72=resolveDynamicServiceCommand(cli[_0x3057c4(0xfd)],_0x301f81);if(_0x36ee72){if(_0x301f81[_0x3057c4(0x106)]){console['log'](generateCommandHelp(_0x36ee72['definition']));return;}Object[_0x3057c4(0x111)](_0x301f81,_0x36ee72[_0x3057c4(0xf9)]);const _0x2aff27=buildConfigFromFlags(_0x301f81);await initGlobalEnvironment(_0x2aff27);const _0x551cd5=createPipelineEnv(_0x2aff27,_0x301f81);_0x551cd5[_0x3057c4(0x10c)]=_0x36ee72[_0x3057c4(0x10c)],await runCommand(_0x36ee72[_0x3057c4(0x101)],_0x551cd5);return;}if(_0x301f81['help']){const _0x57c820=generateDynamicServiceHelp(_0x14fda4);if(_0x57c820){console['log'](_0x57c820);return;}}const {waitUntilExit:_0x20d4e3}=render(a0_0x2a7365(Help,{}));await _0x20d4e3();return;}const _0x423bdc=getServiceEntry(_0x14fda4);if(!_0x316509){if(_0x301f81['help']){console[_0x3057c4(0xff)](generateServiceHelp(_0x14fda4));return;}if(_0x423bdc['defaultCommand'])_0x316509=_0x423bdc['defaultCommand'];else{console[_0x3057c4(0xff)](generateServiceHelp(_0x14fda4));return;}}const _0x44794a=findDefinition(_0x14fda4,_0x316509);!_0x44794a&&(console[_0x3057c4(0xff)](generateServiceHelp(_0x14fda4)),handleError(CliErrors[_0x3057c4(0xef)](_0x14fda4+'\x20'+_0x316509)));if(_0x301f81[_0x3057c4(0x106)]){console['log'](generateCommandHelp(_0x44794a));return;}const _0x42f847=buildConfigFromFlags(_0x301f81);await initGlobalEnvironment(_0x42f847);const _0x1bb134=createPipelineEnv(_0x42f847,_0x301f81);_0x1bb134[_0x3057c4(0x10c)]=cli[_0x3057c4(0xfd)]['slice'](0x2),await runCommand(_0x44794a,_0x1bb134);}function handleError(_0x5d6297){const _0x2d71b9=a0_0x4835;if(_0x5d6297 instanceof CliError){_0x5d6297[_0x2d71b9(0x104)]==='cancelled'&&(process['stderr'][_0x2d71b9(0xf3)](_0x2d71b9(0x112)),process[_0x2d71b9(0xf8)](0x0));console[_0x2d71b9(0x107)]('Error:\x20'+_0x5d6297[_0x2d71b9(0xf5)]);if(_0x5d6297[_0x2d71b9(0xf0)])console['error'](_0x2d71b9(0x10b)+_0x5d6297['hint']);process[_0x2d71b9(0xf8)](_0x5d6297[_0x2d71b9(0x115)]);}isUserCancellation(_0x5d6297)&&(process[_0x2d71b9(0x102)][_0x2d71b9(0xf3)](_0x2d71b9(0x112)),process[_0x2d71b9(0xf8)](0x0)),console[_0x2d71b9(0x107)](_0x2d71b9(0xf4),_0x5d6297),process['exit'](0x1);}function isUserCancellation(_0x30a062){const _0x57b6cc=a0_0x4835;if(!(_0x30a062 instanceof Error))return![];if(_0x30a062[_0x57b6cc(0xfc)]===_0x57b6cc(0x109))return!![];if(_0x30a062['code']==='ERR_USE_AFTER_CLOSE')return!![];if(_0x30a062[_0x57b6cc(0x104)]==='ERR_STREAM_DESTROYED')return!![];return![];}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const a1_0x451a29=a1_0x5b2e;(function(_0x7080a8,_0x48d7eb){const _0x4c4911=a1_0x5b2e,_0x4f11d1=_0x7080a8();while(!![]){try{const _0x5b3782=parseInt(_0x4c4911(0x12e))/0x1+parseInt(_0x4c4911(0x11d))/0x2*(parseInt(_0x4c4911(0x124))/0x3)+parseInt(_0x4c4911(0x137))/0x4*(-parseInt(_0x4c4911(0x107))/0x5)+parseInt(_0x4c4911(0x126))/0x6+parseInt(_0x4c4911(0xf8))/0x7*(parseInt(_0x4c4911(0x163))/0x8)+parseInt(_0x4c4911(0x173))/0x9*(parseInt(_0x4c4911(0x13f))/0xa)+-parseInt(_0x4c4911(0x135))/0xb*(parseInt(_0x4c4911(0x175))/0xc);if(_0x5b3782===_0x48d7eb)break;else _0x4f11d1['push'](_0x4f11d1['shift']());}catch(_0x52524c){_0x4f11d1['push'](_0x4f11d1['shift']());}}}(a1_0x2714,0xe4449));import{CliErrors}from'../../errors.js';const CATEGORY_FLAG={'name':a1_0x451a29(0x160),'type':a1_0x451a29(0x16a),'description':'Filter\x20docs\x20by\x20category,\x20for\x20example\x20dataset'},KEYWORD_FLAG={'name':'keyword','type':a1_0x451a29(0x16a),'description':a1_0x451a29(0x168)},DOC_CODE_FLAG={'name':a1_0x451a29(0x117),'type':'string','required':!![],'description':a1_0x451a29(0x14d)},DOCS=[{'code':a1_0x451a29(0x127),'category':'dataset','title':'List\x20datasets','method':'POST','path':a1_0x451a29(0x143),'summary':a1_0x451a29(0x10b),'whenToUse':a1_0x451a29(0x16b),'pathParams':[],'queryParams':[],'bodySchema':a1_0x451a29(0x16e),'responseHighlights':[a1_0x451a29(0xfe),a1_0x451a29(0x120)],'examples':[a1_0x451a29(0x144)],'notes':[a1_0x451a29(0x154)],'markdown':['##\x20List\x20datasets','',a1_0x451a29(0x111)][a1_0x451a29(0x14f)]('\x0a')},{'code':'dataset_detail','category':a1_0x451a29(0x110),'title':'Dataset\x20detail','method':'GET','path':'/api/dataset/getOneByCode?code={datasetCode}','summary':a1_0x451a29(0x118),'whenToUse':a1_0x451a29(0x136),'pathParams':[],'queryParams':[{'name':a1_0x451a29(0x117),'description':a1_0x451a29(0x16d)}],'bodySchema':a1_0x451a29(0x161),'responseHighlights':[a1_0x451a29(0x14c),'relations\x20contains\x20the\x20object-shaped\x20API\x20relations\x20value\x20when\x20returned',a1_0x451a29(0xfa)],'examples':[a1_0x451a29(0x123)],'notes':[a1_0x451a29(0xf9)],'markdown':[a1_0x451a29(0x146),'',a1_0x451a29(0x10d)][a1_0x451a29(0x14f)]('\x0a')},{'code':a1_0x451a29(0x114),'category':a1_0x451a29(0x110),'title':a1_0x451a29(0x150),'method':a1_0x451a29(0x145),'path':a1_0x451a29(0x162),'summary':a1_0x451a29(0x169),'whenToUse':a1_0x451a29(0x139),'pathParams':[{'name':'appCode','description':a1_0x451a29(0x15c)},{'name':a1_0x451a29(0x166),'description':a1_0x451a29(0x16d)}],'queryParams':[],'bodySchema':a1_0x451a29(0x12d),'responseHighlights':[a1_0x451a29(0xfc),'paging\x20contains\x20pagination'],'examples':[a1_0x451a29(0x151),'lovrabet\x20data\x20filter\x20--code\x20<datasetCode>\x20--params\x20\x27{\x22where\x22:{\x22status\x22:{\x22$eq\x22:\x22active\x22}},\x22orderBy\x22:[{\x22id\x22:\x22asc\x22}],\x22currentPage\x22:2,\x22pageSize\x22:20}\x27'],'notes':[a1_0x451a29(0x157),a1_0x451a29(0x152),a1_0x451a29(0x153),a1_0x451a29(0x13a)],'markdown':[a1_0x451a29(0x10f),'',a1_0x451a29(0x14e)][a1_0x451a29(0x14f)]('\x0a')},{'code':a1_0x451a29(0x104),'category':'dataset','title':a1_0x451a29(0x121),'method':a1_0x451a29(0x145),'path':a1_0x451a29(0x122),'summary':a1_0x451a29(0x125),'whenToUse':a1_0x451a29(0x101),'pathParams':[{'name':a1_0x451a29(0x15b),'description':'Current\x20app\x20code'},{'name':'datasetCode','description':a1_0x451a29(0x16d)}],'queryParams':[],'bodySchema':a1_0x451a29(0x174),'responseHighlights':[a1_0x451a29(0x100),a1_0x451a29(0xfb)],'examples':[a1_0x451a29(0x12c)],'notes':[a1_0x451a29(0x12b),a1_0x451a29(0x155)],'markdown':[a1_0x451a29(0x17b),'',a1_0x451a29(0x159)][a1_0x451a29(0x14f)]('\x0a')},{'code':a1_0x451a29(0x178),'category':a1_0x451a29(0x110),'title':a1_0x451a29(0x11a),'method':a1_0x451a29(0x145),'path':a1_0x451a29(0x156),'summary':a1_0x451a29(0x15e),'whenToUse':a1_0x451a29(0x134),'pathParams':[{'name':a1_0x451a29(0x15b),'description':a1_0x451a29(0x15c)},{'name':a1_0x451a29(0x166),'description':'32-character\x20dataset\x20code'}],'queryParams':[],'bodySchema':a1_0x451a29(0x13b),'responseHighlights':[a1_0x451a29(0x14a)],'examples':['lovrabet\x20data\x20getOne\x20--code\x20<datasetCode>\x20--params\x20\x27{\x22id\x22:123}\x27'],'notes':['Prefer\x20`filter`\x20when\x20the\x20record\x20id\x20is\x20unknown.'],'markdown':a1_0x451a29(0x17a)},{'code':a1_0x451a29(0x133),'category':'dataset','title':a1_0x451a29(0x11e),'method':'POST','path':a1_0x451a29(0x105),'summary':a1_0x451a29(0x130),'whenToUse':a1_0x451a29(0x16c),'pathParams':[{'name':a1_0x451a29(0x15b),'description':a1_0x451a29(0x15c)},{'name':a1_0x451a29(0x166),'description':a1_0x451a29(0x16d)}],'queryParams':[],'bodySchema':a1_0x451a29(0x14b),'responseHighlights':[a1_0x451a29(0x119)],'examples':[a1_0x451a29(0x132)],'notes':[a1_0x451a29(0x116)],'markdown':a1_0x451a29(0x147)},{'code':a1_0x451a29(0x171),'category':'bf','title':a1_0x451a29(0x15d),'method':a1_0x451a29(0x148),'path':a1_0x451a29(0x10a),'summary':a1_0x451a29(0xf7),'whenToUse':a1_0x451a29(0x103),'pathParams':[{'name':a1_0x451a29(0x15b),'description':a1_0x451a29(0x15c)},{'name':'functionName','description':a1_0x451a29(0x177)}],'queryParams':[],'bodySchema':a1_0x451a29(0x161),'responseHighlights':[a1_0x451a29(0x13e)],'examples':['lovrabet\x20bff\x20detail\x20--name\x20<functionName>'],'notes':[a1_0x451a29(0x170)],'markdown':a1_0x451a29(0x179)},{'code':a1_0x451a29(0x131),'category':'bf','title':a1_0x451a29(0x172),'method':a1_0x451a29(0x145),'path':a1_0x451a29(0x109),'summary':a1_0x451a29(0x115),'whenToUse':'已经确认目标\x20BF\x20的\x20functionName,且需要实际调用该\x20ENDPOINT\x20函数完成业务操作时使用','pathParams':[{'name':a1_0x451a29(0x15b),'description':a1_0x451a29(0x15c)},{'name':a1_0x451a29(0x141),'description':a1_0x451a29(0xff)}],'queryParams':[],'bodySchema':a1_0x451a29(0x12f),'responseHighlights':['Returns\x20script\x20business\x20payload'],'examples':['lovrabet\x20bff\x20exec\x20--name\x20<functionName>\x20--params\x20\x27{}\x27'],'notes':[a1_0x451a29(0x165)],'markdown':a1_0x451a29(0x10e)},{'code':a1_0x451a29(0x149),'category':a1_0x451a29(0x140),'title':'Execute\x20custom\x20SQL','method':a1_0x451a29(0x145),'path':a1_0x451a29(0xfd),'summary':a1_0x451a29(0x113),'whenToUse':a1_0x451a29(0x176),'pathParams':[],'queryParams':[],'bodySchema':'{\x22appCode\x22:\x22app-aa63b188\x22,\x22sqlCode\x22:\x22xxxxxxxx-xxxxxxxx\x22,\x22params\x22:{}}','responseHighlights':[a1_0x451a29(0x112)],'examples':[a1_0x451a29(0x11c)],'notes':['Use\x20`lovrabet\x20sql\x20detail`\x20before\x20execution.'],'markdown':a1_0x451a29(0x102)}];function entrySummary(_0x101302){const _0x4f43d3=a1_0x451a29;return{'code':_0x101302[_0x4f43d3(0x117)],'category':_0x101302[_0x4f43d3(0x160)],'method':_0x101302['method'],'path':_0x101302['path'],'summary':_0x101302[_0x4f43d3(0x129)],'whenToUse':_0x101302['whenToUse']};}function a1_0x5b2e(_0xe4efdf,_0x4e78d5){_0xe4efdf=_0xe4efdf-0xf7;const _0x2714d1=a1_0x2714();let _0x5b2e56=_0x2714d1[_0xe4efdf];return _0x5b2e56;}export function listApiDocEntries(_0x16a5ad={}){const _0x5c0ee7=a1_0x451a29,_0xa56e39=String(_0x16a5ad[_0x5c0ee7(0x160)]||'')['trim'](),_0x73f3=String(_0x16a5ad[_0x5c0ee7(0x106)]||'')[_0x5c0ee7(0x15a)]()[_0x5c0ee7(0x11b)]();return DOCS[_0x5c0ee7(0x13d)](_0x4282ad=>{const _0x9545fd=_0x5c0ee7;if(_0xa56e39&&_0x4282ad[_0x9545fd(0x160)]!==_0xa56e39)return![];if(!_0x73f3)return!![];return[_0x4282ad['code'],_0x4282ad['category'],_0x4282ad[_0x9545fd(0x16f)],_0x4282ad['path'],_0x4282ad[_0x9545fd(0x129)],_0x4282ad[_0x9545fd(0x12a)],_0x4282ad[_0x9545fd(0x108)]][_0x9545fd(0x14f)]('\x20')[_0x9545fd(0x11b)]()['includes'](_0x73f3);})[_0x5c0ee7(0x11f)](entrySummary);}export function getApiDocDetail(_0x632b5e){const _0x293615=a1_0x451a29,_0x3c0bb6=DOCS[_0x293615(0x10c)](_0x34caf6=>_0x34caf6['code']===_0x632b5e);if(!_0x3c0bb6)throw CliErrors[_0x293615(0x13c)](_0x293615(0x138)+_0x632b5e);return{..._0x3c0bb6};}function a1_0x2714(){const _0x3575a8=['111mHjpbe','聚合查询数据集数据','6265260ogrkLp','dataset_list','Show\x20runtime\x20API\x20documentation\x20by\x20code','summary','whenToUse','Use\x20`having`\x20only\x20for\x20post-aggregation\x20filters.','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','{\x22where\x22:{},\x22currentPage\x22:1,\x22pageSize\x22:20}','666279fICVzl','{\x22param\x22:\x22value\x22}','创建数据','bf_execute','lovrabet\x20data\x20create\x20--code\x20<datasetCode>\x20--params\x20\x27{\x22name\x22:\x22demo\x22}\x27','dataset_data_create','已经知道记录\x20id,需要按数据集读取单条业务数据时使用','713768GhsxYd','需要按数据集\x20code\x20获取字段、表信息、关联关系(relations)或操作定义时使用','3812gawgLc','API\x20doc\x20code\x20not\x20found:\x20','需要携带\x20where、orderBy、分页等条件读取业务数据时使用','Use\x20read-only\x20data\x20commands\x20before\x20writing\x20Artifacts\x20that\x20display\x20real\x20data.','{\x22id\x22:123}','validation','filter','CLI\x20returns\x20appCode/functionName/description/version/gmtModified','12430QieKFo','custom_sql','functionName','api-doc','/api/dataset/get-dataset-list-by-app-code','lovrabet\x20dataset\x20list\x20--appcode\x20<appCode>\x20--format\x20compress','POST','##\x20Dataset\x20detail','##\x20Create\x20dataset\x20record\x0a\x0aCreate\x20one\x20data\x20record\x20in\x20a\x20dataset.','GET','custom_sql_execute','Returns\x20one\x20matching\x20business\x20record','{\x22fieldName\x22:\x22value\x22}','fields/properties\x20describe\x20data\x20shape','API\x20doc\x20code,\x20for\x20example\x20dataset_list','Use\x20`where`,\x20`select`,\x20`orderBy`,\x20`currentPage`,\x20and\x20`pageSize`\x20to\x20inspect\x20live\x20data\x20shape.','join','Filter\x20dataset\x20data','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','For\x20the\x20next\x20page,\x20keep\x20where/select/orderBy/pageSize\x20unchanged\x20and\x20increment\x20only\x20currentPage,\x20which\x20starts\x20at\x201.','Verify\x20tableData\x20and\x20paging\x20before\x20treating\x20the\x20response\x20as\x20a\x20business\x20fact.','CLI\x20users\x20should\x20prefer\x20`lovrabet\x20dataset\x20list`\x20for\x20this\x20workflow.','`field`\x20is\x20accepted\x20as\x20a\x20deprecated\x20alias\x20for\x20`column`;\x20new\x20calls\x20should\x20use\x20`column`.','/api/{appCode}/{datasetCode}/getOne','where,\x20select,\x20orderBy,\x20currentPage,\x20and\x20pageSize\x20belong\x20inside\x20one\x20--params\x20JSON\x20object;\x20they\x20are\x20not\x20standalone\x20CLI\x20flags.','detail','Aggregate\x20supports\x20COUNT,\x20SUM,\x20AVG,\x20MAX,\x20and\x20MIN\x20definitions\x20in\x20the\x20`aggregate`\x20array.','trim','appCode','Current\x20app\x20code','Get\x20BF\x20endpoint\x20function\x20contract','查询单条数据','str','category','None','/api/{appCode}/{datasetCode}/filter','8HNfmwg','length','Script\x20behavior\x20may\x20have\x20side\x20effects;\x20inspect\x20detail\x20first.','datasetCode','read','Search\x20docs\x20by\x20code,\x20summary,\x20path,\x20or\x20usage\x20text','条件过滤查询数据','string','需要按\x20appCode\x20分页获取运行态数据集列表,并优先收敛可用\x20datasetCode\x20时使用','需要向指定数据集新增一条业务数据时使用','32-character\x20dataset\x20code','{\x22appCode\x22:\x22app-aa63b188\x22,\x22currentPage\x22:1,\x22pageSize\x22:100}','method','This\x20is\x20an\x20exact\x20lookup\x20by\x20appCode\x20+\x20functionName.\x20The\x20CLI\x20does\x20not\x20enumerate\x20BFF\x20functions\x20or\x20expose\x20platform-only\x20fields.','bf_detail','Execute\x20BF\x20endpoint\x20function','7875nCSOIw','{\x22aggregate\x22:[{\x22column\x22:\x20\x22id\x22,\x22type\x22:\x22COUNT\x22,\x22alias\x22:\x22cnt\x22}],\x22groupBy\x22:[]}','444yqeegU','已经确认目标\x20sqlCode\x20存在,并需要实际执行该自定义\x20SQL\x20时使用','Exact\x20endpoint\x20function\x20name','dataset_data_get_one','##\x20Get\x20BF\x20endpoint\x20function\x20contract\x0a\x0aInspect\x20one\x20known\x20endpoint\x20function\x20through\x20the\x20AK-authenticated\x20exact\x20detail\x20API.','##\x20Get\x20one\x20dataset\x20record\x0a\x0aRead\x20one\x20record\x20by\x20id.','##\x20Aggregate\x20dataset\x20data','按应用和函数名精确获取\x20BF\x20运行契约','2765231uuMXsT','If\x20SDK\x20usage\x20is\x20needed,\x20follow\x20with\x20`lovrabet\x20dataset\x20sdk-doc\x20--code\x20<datasetCode>`.','operations\x20describes\x20runtime\x20APIs','where\x20filters\x20before\x20aggregation','tableData\x20contains\x20records','/api/custom/executeSql','tableData\x20contains\x20dataset\x20id/code/name','Endpoint\x20function\x20name','result\x20rows\x20contain\x20aggregate\x20aliases','需要按\x20groupBy\x20分组并做\x20count、sum、avg、max、min\x20等聚合统计时使用','##\x20Execute\x20custom\x20SQL\x0a\x0aExecute\x20a\x20configured\x20SQL\x20script\x20by\x20sqlCode.','已经从用户、平台\x20UI\x20或前序上下文确认函数名,需要查看该\x20ENDPOINT\x20的运行态元信息时使用','dataset_data_aggregate','/api/{appCode}/{datasetCode}/create','keyword','2705DrQygv','title','/api/endpoint/{appCode}/{functionName}','/client/bff/endpoint/{appCode}/{functionName}','分页获取数据集列表','find','Inspect\x20field\x20names,\x20relations,\x20and\x20operation\x20metadata\x20for\x20a\x20known\x20dataset\x20code.','##\x20Execute\x20BF\x20endpoint\x20function\x0a\x0aExecute\x20a\x20known\x20endpoint\x20script.','##\x20Filter\x20dataset\x20data','dataset','Use\x20this\x20API\x20or\x20`lovrabet\x20dataset\x20list`\x20to\x20discover\x20available\x20dataset\x20codes\x20before\x20reading\x20data.','Returns\x20SQL\x20execution\x20payload','执行自定义\x20SQL','dataset_data_filter','执行指定\x20BF\x20函数','This\x20is\x20a\x20write\x20operation;\x20use\x20dry-run\x20when\x20available\x20and\x20safe\x20fixtures\x20for\x20smoke\x20tests.','code','获取数据集详情','Returns\x20the\x20created\x20record\x20or\x20backend\x20operation\x20result','Get\x20one\x20dataset\x20record','toLowerCase','lovrabet\x20sql\x20exec\x20--sqlcode\x20<sqlCode>\x20--params\x20\x27{}\x27','35582efwKof','Create\x20dataset\x20record','map','paging.totalCount\x20gives\x20total\x20rows','Aggregate\x20dataset\x20data','/api/{appCode}/{datasetCode}/aggregate','lovrabet\x20dataset\x20detail\x20--code\x20<datasetCode>\x20--appcode\x20<appCode>'];a1_0x2714=function(){return _0x3575a8;};return a1_0x2714();}const apiDocList={'service':a1_0x451a29(0x142),'command':'list','description':'List\x20available\x20runtime\x20API\x20documentation\x20entries','risk':a1_0x451a29(0x167),'requiresAppCode':![],'flags':[CATEGORY_FLAG,KEYWORD_FLAG],async 'execute'(_0x2c285e){const _0x189f82=a1_0x451a29,_0x1a6df0=listApiDocEntries({'category':_0x2c285e[_0x189f82(0x15f)]('category'),'keyword':_0x2c285e[_0x189f82(0x15f)](_0x189f82(0x106))});return{'ok':!![],'data':{'total':_0x1a6df0[_0x189f82(0x164)],'items':_0x1a6df0}};}},apiDocDetail={'service':'api-doc','command':a1_0x451a29(0x158),'description':a1_0x451a29(0x128),'risk':a1_0x451a29(0x167),'requiresAppCode':![],'flags':[DOC_CODE_FLAG],async 'execute'(_0x300622){const _0x631642=a1_0x451a29;return{'ok':!![],'data':getApiDocDetail(_0x300622[_0x631642(0x15f)](_0x631642(0x117)))};}};export const apiDocDefinitions=[apiDocList,apiDocDetail];
|
|
1
|
+
const a1_0x2cb7c2=a1_0x2253;(function(_0x3a1831,_0x26dd21){const _0x4025a7=a1_0x2253,_0x1435f3=_0x3a1831();while(!![]){try{const _0x2bc015=parseInt(_0x4025a7(0x15c))/0x1*(parseInt(_0x4025a7(0x10f))/0x2)+-parseInt(_0x4025a7(0x134))/0x3+-parseInt(_0x4025a7(0x14b))/0x4+-parseInt(_0x4025a7(0x157))/0x5*(-parseInt(_0x4025a7(0xfe))/0x6)+parseInt(_0x4025a7(0x150))/0x7*(parseInt(_0x4025a7(0x101))/0x8)+parseInt(_0x4025a7(0x130))/0x9*(parseInt(_0x4025a7(0x138))/0xa)+parseInt(_0x4025a7(0x159))/0xb;if(_0x2bc015===_0x26dd21)break;else _0x1435f3['push'](_0x1435f3['shift']());}catch(_0x2fdcfb){_0x1435f3['push'](_0x1435f3['shift']());}}}(a1_0x2e3a,0x72a4f));import{CliErrors}from'../../errors.js';const CATEGORY_FLAG={'name':a1_0x2cb7c2(0x145),'type':a1_0x2cb7c2(0x140),'description':a1_0x2cb7c2(0x111)},KEYWORD_FLAG={'name':'keyword','type':a1_0x2cb7c2(0x140),'description':a1_0x2cb7c2(0xec)},DOC_CODE_FLAG={'name':a1_0x2cb7c2(0x107),'type':a1_0x2cb7c2(0x140),'required':!![],'description':'API\x20doc\x20code,\x20for\x20example\x20dataset_list'},DOCS=[{'code':a1_0x2cb7c2(0x103),'category':a1_0x2cb7c2(0xf0),'title':a1_0x2cb7c2(0x124),'method':a1_0x2cb7c2(0xfd),'path':a1_0x2cb7c2(0x139),'summary':'分页获取数据集列表','whenToUse':a1_0x2cb7c2(0x125),'pathParams':[],'queryParams':[],'bodySchema':a1_0x2cb7c2(0xff),'responseHighlights':[a1_0x2cb7c2(0x115),a1_0x2cb7c2(0xfc)],'examples':[a1_0x2cb7c2(0xf5)],'notes':[a1_0x2cb7c2(0x15d)],'markdown':[a1_0x2cb7c2(0x13b),'',a1_0x2cb7c2(0x12c)][a1_0x2cb7c2(0x121)]('\x0a')},{'code':a1_0x2cb7c2(0x155),'category':'dataset','title':a1_0x2cb7c2(0x13d),'method':a1_0x2cb7c2(0x11c),'path':'/api/dataset/getOneByCode?code={datasetCode}','summary':'获取数据集详情','whenToUse':a1_0x2cb7c2(0x14c),'pathParams':[],'queryParams':[{'name':a1_0x2cb7c2(0x107),'description':a1_0x2cb7c2(0x118)}],'bodySchema':'None','responseHighlights':['fields/properties\x20describe\x20data\x20shape',a1_0x2cb7c2(0xeb),a1_0x2cb7c2(0x10a)],'examples':[a1_0x2cb7c2(0x12f)],'notes':[a1_0x2cb7c2(0x116)],'markdown':[a1_0x2cb7c2(0x15b),'',a1_0x2cb7c2(0x146)]['join']('\x0a')},{'code':a1_0x2cb7c2(0x10d),'category':a1_0x2cb7c2(0xf0),'title':'Filter\x20dataset\x20data','method':'POST','path':a1_0x2cb7c2(0x129),'summary':a1_0x2cb7c2(0xe7),'whenToUse':'需要携带\x20where、orderBy、分页等条件读取业务数据时使用','pathParams':[{'name':'appCode','description':a1_0x2cb7c2(0xf3)},{'name':a1_0x2cb7c2(0x12a),'description':a1_0x2cb7c2(0x118)}],'queryParams':[],'bodySchema':a1_0x2cb7c2(0x104),'responseHighlights':['tableData\x20contains\x20records',a1_0x2cb7c2(0x15a)],'examples':[a1_0x2cb7c2(0x127),'lovrabet\x20data\x20filter\x20--code\x20<datasetCode>\x20--params\x20\x27{\x22where\x22:{\x22status\x22:{\x22$eq\x22:\x22active\x22}},\x22orderBy\x22:[{\x22id\x22:\x22asc\x22}],\x22currentPage\x22:2,\x22pageSize\x22:20}\x27'],'notes':[a1_0x2cb7c2(0x13c),a1_0x2cb7c2(0x10e),a1_0x2cb7c2(0x10b),a1_0x2cb7c2(0x13e)],'markdown':[a1_0x2cb7c2(0x13f),'','Use\x20`where`,\x20`select`,\x20`orderBy`,\x20`currentPage`,\x20and\x20`pageSize`\x20to\x20inspect\x20live\x20data\x20shape.'][a1_0x2cb7c2(0x121)]('\x0a')},{'code':a1_0x2cb7c2(0x153),'category':a1_0x2cb7c2(0xf0),'title':a1_0x2cb7c2(0xfb),'method':a1_0x2cb7c2(0xfd),'path':a1_0x2cb7c2(0x119),'summary':a1_0x2cb7c2(0x132),'whenToUse':'需要按\x20groupBy\x20分组并做\x20count、sum、avg、max、min\x20等聚合统计时使用','pathParams':[{'name':a1_0x2cb7c2(0x131),'description':'Current\x20app\x20code'},{'name':a1_0x2cb7c2(0x12a),'description':a1_0x2cb7c2(0x118)}],'queryParams':[],'bodySchema':a1_0x2cb7c2(0x158),'responseHighlights':[a1_0x2cb7c2(0x123),a1_0x2cb7c2(0x13a)],'examples':[a1_0x2cb7c2(0x102)],'notes':[a1_0x2cb7c2(0x14d),a1_0x2cb7c2(0x11e)],'markdown':['##\x20Aggregate\x20dataset\x20data','',a1_0x2cb7c2(0x142)][a1_0x2cb7c2(0x121)]('\x0a')},{'code':a1_0x2cb7c2(0xe6),'category':a1_0x2cb7c2(0xf0),'title':a1_0x2cb7c2(0xe8),'method':a1_0x2cb7c2(0xfd),'path':'/api/{appCode}/{datasetCode}/getOne','summary':a1_0x2cb7c2(0x149),'whenToUse':'已经知道记录\x20id,需要按数据集读取单条业务数据时使用','pathParams':[{'name':a1_0x2cb7c2(0x131),'description':a1_0x2cb7c2(0xf3)},{'name':a1_0x2cb7c2(0x12a),'description':a1_0x2cb7c2(0x118)}],'queryParams':[],'bodySchema':'{\x22id\x22:123}','responseHighlights':[a1_0x2cb7c2(0x113)],'examples':['lovrabet\x20data\x20getOne\x20--code\x20<datasetCode>\x20--params\x20\x27{\x22id\x22:123}\x27'],'notes':[a1_0x2cb7c2(0x110)],'markdown':a1_0x2cb7c2(0x136)},{'code':a1_0x2cb7c2(0xf2),'category':'dataset','title':a1_0x2cb7c2(0xf8),'method':a1_0x2cb7c2(0xfd),'path':'/api/{appCode}/{datasetCode}/create','summary':a1_0x2cb7c2(0x156),'whenToUse':'需要向指定数据集新增一条业务数据时使用','pathParams':[{'name':a1_0x2cb7c2(0x131),'description':a1_0x2cb7c2(0xf3)},{'name':a1_0x2cb7c2(0x12a),'description':a1_0x2cb7c2(0x118)}],'queryParams':[],'bodySchema':a1_0x2cb7c2(0x135),'responseHighlights':[a1_0x2cb7c2(0x154)],'examples':[a1_0x2cb7c2(0x143)],'notes':[a1_0x2cb7c2(0x128)],'markdown':a1_0x2cb7c2(0x147)},{'code':'bf_detail','category':'bf','title':'Get\x20BF\x20endpoint\x20function\x20contract','method':a1_0x2cb7c2(0x11c),'path':a1_0x2cb7c2(0x108),'summary':a1_0x2cb7c2(0x12b),'whenToUse':'已经从用户、平台\x20UI\x20或前序上下文确认函数名,需要查看该\x20ENDPOINT\x20的运行态元信息时使用','pathParams':[{'name':a1_0x2cb7c2(0x131),'description':'Current\x20app\x20code'},{'name':a1_0x2cb7c2(0x12e),'description':a1_0x2cb7c2(0xf6)}],'queryParams':[],'bodySchema':a1_0x2cb7c2(0x126),'responseHighlights':[a1_0x2cb7c2(0xfa)],'examples':[a1_0x2cb7c2(0xf1)],'notes':['This\x20is\x20an\x20exact\x20lookup\x20by\x20appCode\x20+\x20functionName.\x20The\x20CLI\x20does\x20not\x20enumerate\x20Backend\x20Function\x20definitions\x20or\x20expose\x20platform-only\x20fields.'],'markdown':a1_0x2cb7c2(0xf9)},{'code':a1_0x2cb7c2(0x141),'category':'bf','title':'Execute\x20BF\x20endpoint\x20function','method':a1_0x2cb7c2(0xfd),'path':'/api/endpoint/{appCode}/{functionName}','summary':'执行指定\x20BF\x20函数','whenToUse':a1_0x2cb7c2(0x100),'pathParams':[{'name':a1_0x2cb7c2(0x131),'description':a1_0x2cb7c2(0xf3)},{'name':a1_0x2cb7c2(0x12e),'description':a1_0x2cb7c2(0x120)}],'queryParams':[],'bodySchema':a1_0x2cb7c2(0x117),'responseHighlights':['Returns\x20script\x20business\x20payload'],'examples':[a1_0x2cb7c2(0x11f)],'notes':['Script\x20behavior\x20may\x20have\x20side\x20effects;\x20inspect\x20detail\x20first.'],'markdown':a1_0x2cb7c2(0x151)},{'code':a1_0x2cb7c2(0x114),'category':a1_0x2cb7c2(0x14a),'title':'Execute\x20custom\x20SQL','method':a1_0x2cb7c2(0xfd),'path':a1_0x2cb7c2(0x10c),'summary':a1_0x2cb7c2(0x12d),'whenToUse':a1_0x2cb7c2(0xed),'pathParams':[],'queryParams':[],'bodySchema':a1_0x2cb7c2(0x137),'responseHighlights':[a1_0x2cb7c2(0x14f)],'examples':[a1_0x2cb7c2(0x105)],'notes':['Use\x20`lovrabet\x20sql\x20detail`\x20before\x20execution.'],'markdown':a1_0x2cb7c2(0xf7)}];function entrySummary(_0x45bd34){const _0x38c043=a1_0x2cb7c2;return{'code':_0x45bd34[_0x38c043(0x107)],'category':_0x45bd34[_0x38c043(0x145)],'method':_0x45bd34['method'],'path':_0x45bd34[_0x38c043(0x133)],'summary':_0x45bd34[_0x38c043(0xee)],'whenToUse':_0x45bd34[_0x38c043(0x144)]};}export function listApiDocEntries(_0x184a76={}){const _0x28bae1=a1_0x2cb7c2,_0x5335e2=String(_0x184a76[_0x28bae1(0x145)]||'')[_0x28bae1(0x148)](),_0x5f0de1=String(_0x184a76[_0x28bae1(0xf4)]||'')[_0x28bae1(0x148)]()[_0x28bae1(0x109)]();return DOCS['filter'](_0x2a58eb=>{const _0x409722=_0x28bae1;if(_0x5335e2&&_0x2a58eb[_0x409722(0x145)]!==_0x5335e2)return![];if(!_0x5f0de1)return!![];return[_0x2a58eb['code'],_0x2a58eb[_0x409722(0x145)],_0x2a58eb[_0x409722(0x11a)],_0x2a58eb[_0x409722(0x133)],_0x2a58eb['summary'],_0x2a58eb[_0x409722(0x144)],_0x2a58eb[_0x409722(0x122)]]['join']('\x20')['toLowerCase']()[_0x409722(0x11d)](_0x5f0de1);})['map'](entrySummary);}export function getApiDocDetail(_0x545d5d){const _0xa055f6=a1_0x2cb7c2,_0x2e54b6=DOCS[_0xa055f6(0x11b)](_0x1001f0=>_0x1001f0[_0xa055f6(0x107)]===_0x545d5d);if(!_0x2e54b6)throw CliErrors[_0xa055f6(0xef)]('API\x20doc\x20code\x20not\x20found:\x20'+_0x545d5d);return{..._0x2e54b6};}const apiDocList={'service':a1_0x2cb7c2(0xea),'command':a1_0x2cb7c2(0x14e),'description':'List\x20available\x20runtime\x20API\x20documentation\x20entries','risk':a1_0x2cb7c2(0x152),'requiresAppCode':![],'flags':[CATEGORY_FLAG,KEYWORD_FLAG],async 'execute'(_0x53ce3c){const _0x34c3a6=a1_0x2cb7c2,_0x270f8e=listApiDocEntries({'category':_0x53ce3c['str'](_0x34c3a6(0x145)),'keyword':_0x53ce3c['str']('keyword')});return{'ok':!![],'data':{'total':_0x270f8e[_0x34c3a6(0x106)],'items':_0x270f8e}};}},apiDocDetail={'service':a1_0x2cb7c2(0xea),'command':a1_0x2cb7c2(0xe9),'description':a1_0x2cb7c2(0x112),'risk':'read','requiresAppCode':![],'flags':[DOC_CODE_FLAG],async 'execute'(_0xa699ec){const _0x26be45=a1_0x2cb7c2;return{'ok':!![],'data':getApiDocDetail(_0xa699ec['str'](_0x26be45(0x107)))};}};function a1_0x2253(_0x5d3703,_0x126968){_0x5d3703=_0x5d3703-0xe6;const _0x2e3abf=a1_0x2e3a();let _0x2253e4=_0x2e3abf[_0x5d3703];return _0x2253e4;}function a1_0x2e3a(){const _0x458540=['##\x20Execute\x20BF\x20endpoint\x20function\x0a\x0aExecute\x20a\x20known\x20endpoint\x20script.','read','dataset_data_aggregate','Returns\x20the\x20created\x20record\x20or\x20backend\x20operation\x20result','dataset_detail','创建数据','3200560OXiBFP','{\x22aggregate\x22:[{\x22column\x22:\x20\x22id\x22,\x22type\x22:\x22COUNT\x22,\x22alias\x22:\x22cnt\x22}],\x22groupBy\x22:[]}','2359852AqkRtR','paging\x20contains\x20pagination','##\x20Dataset\x20detail','8pOqjSW','CLI\x20users\x20should\x20prefer\x20`lovrabet\x20dataset\x20list`\x20for\x20this\x20workflow.','dataset_data_get_one','条件过滤查询数据','Get\x20one\x20dataset\x20record','detail','api-doc','relations\x20contains\x20the\x20object-shaped\x20API\x20relations\x20value\x20when\x20returned','Search\x20docs\x20by\x20code,\x20summary,\x20path,\x20or\x20usage\x20text','已经确认目标\x20sqlCode\x20存在,并需要实际执行该自定义\x20SQL\x20时使用','summary','validation','dataset','lovrabet\x20bff\x20detail\x20--name\x20<functionName>','dataset_data_create','Current\x20app\x20code','keyword','lovrabet\x20dataset\x20list\x20--appcode\x20<appCode>\x20--format\x20compress','Exact\x20endpoint\x20function\x20name','##\x20Execute\x20custom\x20SQL\x0a\x0aExecute\x20a\x20configured\x20SQL\x20script\x20by\x20sqlCode.','Create\x20dataset\x20record','##\x20Get\x20BF\x20endpoint\x20function\x20contract\x0a\x0aInspect\x20one\x20known\x20endpoint\x20function\x20through\x20the\x20AK-authenticated\x20exact\x20detail\x20API.','CLI\x20returns\x20appCode/functionName/description/version/gmtModified','Aggregate\x20dataset\x20data','paging.totalCount\x20gives\x20total\x20rows','POST','6tWdCMm','{\x22appCode\x22:\x22app-aa63b188\x22,\x22currentPage\x22:1,\x22pageSize\x22:100}','已经确认目标\x20BF\x20的\x20functionName,且需要实际调用该\x20ENDPOINT\x20函数完成业务操作时使用','992aMzAzb','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','dataset_list','{\x22where\x22:{},\x22currentPage\x22:1,\x22pageSize\x22:20}','lovrabet\x20sql\x20exec\x20--sqlcode\x20<sqlCode>\x20--params\x20\x27{}\x27','length','code','/client/bff/endpoint/{appCode}/{functionName}','toLowerCase','operations\x20describes\x20runtime\x20APIs','Verify\x20tableData\x20and\x20paging\x20before\x20treating\x20the\x20response\x20as\x20a\x20business\x20fact.','/api/custom/executeSql','dataset_data_filter','For\x20the\x20next\x20page,\x20keep\x20where/select/orderBy/pageSize\x20unchanged\x20and\x20increment\x20only\x20currentPage,\x20which\x20starts\x20at\x201.','638gsxRyM','Prefer\x20`filter`\x20when\x20the\x20record\x20id\x20is\x20unknown.','Filter\x20docs\x20by\x20category,\x20for\x20example\x20dataset','Show\x20runtime\x20API\x20documentation\x20by\x20code','Returns\x20one\x20matching\x20business\x20record','custom_sql_execute','tableData\x20contains\x20dataset\x20id/code/name','If\x20SDK\x20usage\x20is\x20needed,\x20follow\x20with\x20`lovrabet\x20dataset\x20sdk-doc\x20--code\x20<datasetCode>`.','{\x22param\x22:\x22value\x22}','32-character\x20dataset\x20code','/api/{appCode}/{datasetCode}/aggregate','method','find','GET','includes','`field`\x20is\x20accepted\x20as\x20a\x20deprecated\x20alias\x20for\x20`column`;\x20new\x20calls\x20should\x20use\x20`column`.','lovrabet\x20bff\x20exec\x20--name\x20<functionName>\x20--params\x20\x27{}\x27','Endpoint\x20function\x20name','join','title','result\x20rows\x20contain\x20aggregate\x20aliases','List\x20datasets','需要按\x20appCode\x20分页获取运行态数据集列表,并优先收敛可用\x20datasetCode\x20时使用','None','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','This\x20is\x20a\x20write\x20operation;\x20use\x20dry-run\x20when\x20available\x20and\x20safe\x20fixtures\x20for\x20smoke\x20tests.','/api/{appCode}/{datasetCode}/filter','datasetCode','按应用和函数名精确获取\x20BF\x20运行契约','Use\x20this\x20API\x20or\x20`lovrabet\x20dataset\x20list`\x20to\x20discover\x20available\x20dataset\x20codes\x20before\x20reading\x20data.','执行自定义\x20SQL','functionName','lovrabet\x20dataset\x20detail\x20--code\x20<datasetCode>\x20--appcode\x20<appCode>','162927dJZXAA','appCode','聚合查询数据集数据','path','2494218zHfpwf','{\x22fieldName\x22:\x22value\x22}','##\x20Get\x20one\x20dataset\x20record\x0a\x0aRead\x20one\x20record\x20by\x20id.','{\x22appCode\x22:\x22app-aa63b188\x22,\x22sqlCode\x22:\x22xxxxxxxx-xxxxxxxx\x22,\x22params\x22:{}}','340kSgWDx','/api/dataset/get-dataset-list-by-app-code','where\x20filters\x20before\x20aggregation','##\x20List\x20datasets','where,\x20select,\x20orderBy,\x20currentPage,\x20and\x20pageSize\x20belong\x20inside\x20one\x20--params\x20JSON\x20object;\x20they\x20are\x20not\x20standalone\x20CLI\x20flags.','Dataset\x20detail','Use\x20read-only\x20data\x20commands\x20before\x20writing\x20Artifacts\x20that\x20display\x20real\x20data.','##\x20Filter\x20dataset\x20data','string','bf_execute','Aggregate\x20supports\x20COUNT,\x20SUM,\x20AVG,\x20MAX,\x20and\x20MIN\x20definitions\x20in\x20the\x20`aggregate`\x20array.','lovrabet\x20data\x20create\x20--code\x20<datasetCode>\x20--params\x20\x27{\x22name\x22:\x22demo\x22}\x27','whenToUse','category','Inspect\x20field\x20names,\x20relations,\x20and\x20operation\x20metadata\x20for\x20a\x20known\x20dataset\x20code.','##\x20Create\x20dataset\x20record\x0a\x0aCreate\x20one\x20data\x20record\x20in\x20a\x20dataset.','trim','查询单条数据','custom_sql','1224500LVrJLr','需要按数据集\x20code\x20获取字段、表信息、关联关系(relations)或操作定义时使用','Use\x20`having`\x20only\x20for\x20post-aggregation\x20filters.','list','Returns\x20SQL\x20execution\x20payload','7588dbIAOW'];a1_0x2e3a=function(){return _0x458540;};return a1_0x2e3a();}export const apiDocDefinitions=[apiDocList,apiDocDetail];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x25fe9b,_0x442384){const _0x12a238=a2_0x5bcf,_0x3e6a0e=_0x25fe9b();while(!![]){try{const _0x1aa675=parseInt(_0x12a238(0xd7))/0x1+parseInt(_0x12a238(0xdd))/0x2*(-parseInt(_0x12a238(0xe8))/0x3)+parseInt(_0x12a238(0xf2))/0x4*(parseInt(_0x12a238(0xd6))/0x5)+parseInt(_0x12a238(0xf1))/0x6+parseInt(_0x12a238(0xdf))/0x7+parseInt(_0x12a238(0xed))/0x8+-parseInt(_0x12a238(0xd9))/0x9;if(_0x1aa675===_0x442384)break;else _0x3e6a0e['push'](_0x3e6a0e['shift']());}catch(_0x33d481){_0x3e6a0e['push'](_0x3e6a0e['shift']());}}}(a2_0x1da6,0xbe70a));import{createHash}from'node:crypto';import{existsSync,mkdirSync,readFileSync,renameSync,unlinkSync,writeFileSync}from'node:fs';import{homedir}from'node:os';import{dirname,resolve}from'node:path';import{PRODUCT_CONFIG}from'../../constant/product.js';import{isRuntimeAccessibleApp}from'../../commands/app/eligibility.js';function a2_0x1da6(){const _0x9d5898=['utf8','find','906054idTSJF','EACCES','9089780fDkxUW','EPERM','appName','update','unknown','stringify','EXDEV','code','items','9SdOmfp','.tmp','my-apps.json','ak_','slice','3287352HDAool','appCode','parse','homeDirName','3430050FbPLOi','288ChLown','trim','23700PZzHyO','286051hyahCQ','sha256','6924078oWYvtB','hex'];a2_0x1da6=function(){return _0x9d5898;};return a2_0x1da6();}function a2_0x5bcf(_0xbb5954,_0x48a2d8){_0xbb5954=_0xbb5954-0xd6;const _0x1da60d=a2_0x1da6();let _0x5bcfee=_0x1da60d[_0xbb5954];return _0x5bcfee;}export function fingerprintAccessKey(_0x14b8b3){const _0xe4a819=a2_0x5bcf,_0x4f13cb=_0x14b8b3[_0xe4a819(0xf3)](),_0x32a0fc=_0x4f13cb['slice'](-0x6)||_0xe4a819(0xe3),_0x3fedec=createHash(_0xe4a819(0xd8))[_0xe4a819(0xe2)](_0x4f13cb)['digest'](_0xe4a819(0xda))[_0xe4a819(0xec)](0x0,0xc);return _0xe4a819(0xeb)+_0x32a0fc+'_'+_0x3fedec;}export function getAppCacheFilePath(_0x3bbd7c,_0x37b38c){const _0x1841c4=a2_0x5bcf;return resolve(homedir(),PRODUCT_CONFIG[_0x1841c4(0xf0)],'cache',_0x3bbd7c,fingerprintAccessKey(_0x37b38c),_0x1841c4(0xea));}export function readCachedAppList(_0x4f381d,_0x13fb3d){const _0x4ed551=a2_0x5bcf;if(!_0x13fb3d?.['trim']())return null;const _0x525c22=getAppCacheFilePath(_0x4f381d,_0x13fb3d);if(!existsSync(_0x525c22))return null;try{const _0x1cb4aa=readFileSync(_0x525c22,_0x4ed551(0xdb));if(!_0x1cb4aa[_0x4ed551(0xf3)]())return null;const _0x45cffb=JSON[_0x4ed551(0xef)](_0x1cb4aa);if(!Array['isArray'](_0x45cffb[_0x4ed551(0xe7)]))return null;return _0x45cffb;}catch{return null;}}export function writeCachedAppList(_0x4c05ec,_0x370551,_0x3b9af6){const _0x183707=a2_0x5bcf,_0x3ffec0=getAppCacheFilePath(_0x4c05ec,_0x370551),_0x53d321=dirname(_0x3ffec0);!existsSync(_0x53d321)&&mkdirSync(_0x53d321,{'recursive':!![]});const _0x3b4706=_0x3ffec0+_0x183707(0xe9);try{writeFileSync(_0x3b4706,JSON[_0x183707(0xe4)](_0x3b9af6,null,0x2)+'\x0a',{'encoding':_0x183707(0xdb),'mode':0x180});try{renameSync(_0x3b4706,_0x3ffec0);}catch(_0x55679c){if(_0x55679c[_0x183707(0xe6)]===_0x183707(0xe0)||_0x55679c['code']===_0x183707(0xe5)||_0x55679c[_0x183707(0xe6)]===_0x183707(0xde)){writeFileSync(_0x3ffec0,JSON[_0x183707(0xe4)](_0x3b9af6,null,0x2)+'\x0a',{'encoding':_0x183707(0xdb)});try{unlinkSync(_0x3b4706);}catch{}}else throw _0x55679c;}}catch(_0x36d636){try{unlinkSync(_0x3b4706);}catch{}throw _0x36d636;}return _0x3ffec0;}export function resolveCachedAppCode(_0x2344ad,_0x4cf645,_0xc34726){const _0x880e9c=a2_0x5bcf;if(!_0x2344ad)return undefined;const _0x1907b2=readCachedAppList(_0x4cf645,_0xc34726),_0x495315=_0x1907b2?.[_0x880e9c(0xe7)][_0x880e9c(0xdc)](_0x53373c=>_0x53373c[_0x880e9c(0xe1)]===_0x2344ad&&isRuntimeAccessibleApp(_0x53373c));return _0x495315?.[_0x880e9c(0xee)]?.['trim']()||undefined;}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a3_0x2a2c83=a3_0xab9c;(function(_0x1588ba,_0x2a8b0d){const _0x546ba4=a3_0xab9c,_0x2a9de9=_0x1588ba();while(!![]){try{const _0x36a1d5=parseInt(_0x546ba4(0xde))/0x1+parseInt(_0x546ba4(0x107))/0x2+parseInt(_0x546ba4(0xd6))/0x3+parseInt(_0x546ba4(0x104))/0x4+parseInt(_0x546ba4(0xd4))/0x5*(-parseInt(_0x546ba4(0xcf))/0x6)+parseInt(_0x546ba4(0xfc))/0x7+-parseInt(_0x546ba4(0x100))/0x8;if(_0x36a1d5===_0x2a8b0d)break;else _0x2a9de9['push'](_0x2a9de9['shift']());}catch(_0x2bdd76){_0x2a9de9['push'](_0x2a9de9['shift']());}}}(a3_0x7b1d,0x6c13a));import{appImportFlagDefs,runAppImport}from'../../commands/init.js';function a3_0xab9c(_0x22b243,_0x28bc0a){_0x22b243=_0x22b243-0xcf;const _0x7b1d5f=a3_0x7b1d();let _0xab9c4f=_0x7b1d5f[_0x22b243];return _0xab9c4f;}function a3_0x7b1d(){const _0x3ecd74=['globalPath','i18nInfo','将从平台读取当前账号可用的应用列表,并覆盖对应环境的本地应用缓存;不会修改平台应用。','nonInteractive','appName','pull','mergedCli','trim','write','cachePath','Read\x20app\x20list\x20from\x20local\x20cache\x20only','Target\x20environment\x20(default:\x20current\x20env)','map','705040PhViHZ','import','从平台刷新本地应用缓存','local','7162128dvBohe','boolean','entries','production','3335680reZoGa','No\x20cached\x20apps\x20found.','include-unpublished','198560pordKA','app','Include\x20unpublished\x20apps\x20for\x20diagnostics','Refreshed\x20app\x20cache\x20with\x20','filter','2431818GcFEUj','appcode','Force\x20remote\x20fetch\x20and\x20refresh\x20local\x20cache','../../context.js','str','5vOaaXz','length','82263MGKUgU','remote','../../commands/app/remote-source.js','enableI18n','push','type','list','appCode','681910VoFqgO','name','\x20app(s)\x20for\x20env=\x22','bool','\x20cached\x20app(s)\x20for\x20env=\x22','cache','Read\x20from\x20local\x20cache\x20only','items','envName','string','No\x20apps\x20found\x20on\x20the\x20platform.','env','accessKey','fetchedAt','no-cache','source','projectPath'];a3_0x7b1d=function(){return _0x3ecd74;};return a3_0x7b1d();}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(_0x149449,_0x3e2300){const _0x12f1ba=a3_0xab9c,_0x4b3509={};for(const _0xa7c397 of _0x3e2300){const _0xcd61a=_0xa7c397[_0x12f1ba(0xdb)]==='boolean'?_0x149449[_0x12f1ba(0xe1)](_0xa7c397[_0x12f1ba(0xdf)]):_0x149449['str'](_0xa7c397[_0x12f1ba(0xdf)]);if(_0xcd61a!==''&&_0xcd61a!==![])_0x4b3509[_0xa7c397[_0x12f1ba(0xdf)]]=_0xcd61a;}if(_0x149449[_0x12f1ba(0xf2)])_0x4b3509['nonInteractive']=!![];return _0x4b3509;}function normalizeLanguages(_0xb82371){const _0x1dd24a=a3_0xab9c;if(!Array['isArray'](_0xb82371))return[];return _0xb82371[_0x1dd24a(0x10b)](_0x39ffe2=>typeof _0x39ffe2===_0x1dd24a(0xe7))[_0x1dd24a(0xfb)](_0xb9d4f=>_0xb9d4f[_0x1dd24a(0xf6)]())[_0x1dd24a(0x10b)](Boolean);}function buildRemoteAppI18nFields(_0xdc193b){const _0x245c28=a3_0xab9c,_0x3a3658=normalizeLanguages(_0xdc193b['i18nInfo']?.['langs']);return{'enableI18n':typeof _0xdc193b[_0x245c28(0xd9)]==='boolean'?_0xdc193b[_0x245c28(0xd9)]:null,'languages':_0x3a3658,'i18nInfo':_0xdc193b['i18nInfo']?{..._0xdc193b[_0x245c28(0xf0)],'langs':_0x3a3658['length']?_0x3a3658:null}:null};}const listDef={'service':a3_0x2a2c83(0x108),'command':a3_0x2a2c83(0xdc),'description':'List\x20apps\x20available\x20to\x20the\x20current\x20access\x20key','risk':'read','requiresAuth':!![],'requiresAppCode':![],'hasFormat':!![],'flags':[{'name':a3_0x2a2c83(0xe9),'type':a3_0x2a2c83(0xe7),'description':'Filter\x20by\x20environment\x20(default:\x20current\x20env)','enum':[...RUNTIME_ENV_VALUES]},{'name':a3_0x2a2c83(0xff),'type':a3_0x2a2c83(0x101),'description':a3_0x2a2c83(0xf9),'default':![]},{'name':'no-cache','type':a3_0x2a2c83(0x101),'description':a3_0x2a2c83(0xd1),'default':![]},{'name':a3_0x2a2c83(0x106),'type':a3_0x2a2c83(0x101),'description':a3_0x2a2c83(0x109),'default':![]}],async 'execute'(_0x4f133b){const _0x3621ab=a3_0x2a2c83,_0x1246b6=_0x4f133b[_0x3621ab(0xd3)](_0x3621ab(0xe9))||_0x4f133b[_0x3621ab(0xe6)]||getEnv()||_0x3621ab(0x103),_0x40fcb5=_0x4f133b[_0x3621ab(0xe1)](_0x3621ab(0xff)),_0x58eead=_0x4f133b[_0x3621ab(0xe1)](_0x3621ab(0xec)),_0x435889=_0x4f133b[_0x3621ab(0xe1)](_0x3621ab(0x106)),{readRawConfigWithLayers:_0x26a03a,resolveDefaultAppSource:_0xd173fc,getLocalAppAliases:_0x3e6265}=await import(_0x3621ab(0xd2)),{getRemoteAppList:_0x15bcfa}=await import(_0x3621ab(0xd8)),{config:_0x5a59b1,layers:_0x50c7d9}=_0x26a03a(),_0x140d74=_0xd173fc(_0x50c7d9),{defaultApp:_0x30be60}=_0x5a59b1,_0x1d658c=await _0x15bcfa({'env':_0x1246b6,'accessKey':_0x4f133b[_0x3621ab(0xea)],'localOnly':_0x40fcb5,'noCache':_0x58eead}),_0x1edab0=_0x435889?_0x1d658c[_0x3621ab(0xe5)]:filterRuntimeAccessibleApps(_0x1d658c[_0x3621ab(0xe5)]),_0x210eab=_0x1d658c[_0x3621ab(0xe5)][_0x3621ab(0xd5)]-_0x1edab0[_0x3621ab(0xd5)],_0x5545e3=_0x1edab0[_0x3621ab(0xfb)](_0x4e2e54=>{const _0x170693=_0x3621ab;return{'name':_0x4e2e54[_0x170693(0xf3)],'appcode':_0x4e2e54[_0x170693(0xdd)],'named':!![],'definedIn':_0x170693(0xd7),'isDefault':_0x4e2e54[_0x170693(0xf3)]===_0x30be60,...buildAppProfileListFields(_0x1246b6),...buildRemoteAppI18nFields(_0x4e2e54),'source':_0x1d658c[_0x170693(0xed)],'owner':_0x4e2e54['appOwnerName']??null,'status':_0x4e2e54['appPublishStatus']??null,'cachedAt':_0x1d658c[_0x170693(0xeb)]};}),_0x1a8713=_0x3e6265(_0x5a59b1);let _0x1b328b=0x0;for(const [_0x3422e6,_0x350b21]of Object[_0x3621ab(0x102)](_0x1a8713)){const _0x177d71=typeof _0x350b21['appcode']===_0x3621ab(0xe7)?_0x350b21[_0x3621ab(0xd0)][_0x3621ab(0xf6)]():'';if(!_0x177d71)continue;const _0x12716a=findAppByCode(_0x1d658c[_0x3621ab(0xe5)],_0x177d71);if(!_0x435889&&_0x12716a&&!isRuntimeAccessibleApp(_0x12716a))continue;_0x1b328b+=0x1,_0x5545e3[_0x3621ab(0xda)]({'name':_0x3422e6,'appcode':_0x177d71,'named':!![],'definedIn':_0x3621ab(0xff),'isDefault':_0x3422e6===_0x30be60,...buildAppProfileListFields(_0x1246b6),'source':'config','owner':null,'status':null,'cachedAt':null});}enrichAppListItemsWithMergedSelection(_0x5545e3,_0x4f133b[_0x3621ab(0xf5)]);const _0x2f5604=_0x5545e3['find'](_0x2fc8cf=>_0x2fc8cf['isCurrent']===!![]),_0x5ab717=_0x30be60??_0x2f5604?.[_0x3621ab(0xdf)]??null,_0x127945={'env':_0x1246b6,'source':_0x1d658c[_0x3621ab(0xed)],'fetchedAt':_0x1d658c[_0x3621ab(0xeb)],'cachePath':_0x1d658c[_0x3621ab(0xf8)],'globalPath':_0x50c7d9[_0x3621ab(0xef)]??null,'projectPath':_0x50c7d9[_0x3621ab(0xee)]??null,'defaultApp':_0x5ab717,'defaultAppSource':_0x30be60!=null?_0x140d74:null,'localAliasCount':_0x1b328b,'remoteTotal':_0x1d658c[_0x3621ab(0xe5)][_0x3621ab(0xd5)],'hiddenUnpublishedCount':_0x210eab,'includeUnpublished':_0x435889};if(_0x5545e3['length']===0x0)return{'ok':!![],'data':{'items':_0x5545e3,'meta':_0x127945},'message':_0x1d658c[_0x3621ab(0xed)]===_0x3621ab(0xe3)?_0x3621ab(0x105):_0x3621ab(0xe8)};return{'ok':!![],'data':{'items':_0x5545e3,'meta':_0x127945}};}},pullDef={'service':a3_0x2a2c83(0x108),'command':a3_0x2a2c83(0xf4),'description':a3_0x2a2c83(0xfe),'risk':a3_0x2a2c83(0xf7),'confirmationDescription':a3_0x2a2c83(0xf1),'requiresAuth':!![],'requiresAppCode':![],'hasFormat':![],'flags':[{'name':a3_0x2a2c83(0xe9),'type':'string','description':a3_0x2a2c83(0xfa),'enum':[...RUNTIME_ENV_VALUES]},{'name':a3_0x2a2c83(0xff),'type':a3_0x2a2c83(0x101),'description':a3_0x2a2c83(0xe4),'default':![]},{'name':'no-cache','type':a3_0x2a2c83(0x101),'description':a3_0x2a2c83(0xd1),'default':![]}],async 'execute'(_0x598897){const _0x116fbf=a3_0x2a2c83,_0x104bd2=_0x598897[_0x116fbf(0xd3)](_0x116fbf(0xe9))||_0x598897['envName']||getEnv()||_0x116fbf(0x103),_0x2bd8ee=_0x598897[_0x116fbf(0xe1)](_0x116fbf(0xff)),_0x52204b=_0x598897[_0x116fbf(0xe1)](_0x116fbf(0xec)),{getRemoteAppList:_0x95aa04}=await import(_0x116fbf(0xd8)),_0x3cab27=await _0x95aa04({'env':_0x104bd2,'accessKey':_0x598897['accessKey'],'localOnly':_0x2bd8ee,'noCache':_0x52204b});return{'ok':!![],'data':{'total':_0x3cab27[_0x116fbf(0xe5)]['length'],'env':_0x104bd2,'source':_0x3cab27[_0x116fbf(0xed)],'fetchedAt':_0x3cab27[_0x116fbf(0xeb)],'cachePath':_0x3cab27[_0x116fbf(0xf8)]},'message':_0x3cab27[_0x116fbf(0xed)]===_0x116fbf(0xe3)?'Loaded\x20'+_0x3cab27['items']['length']+_0x116fbf(0xe2)+_0x104bd2+'\x22.':_0x116fbf(0x10a)+_0x3cab27[_0x116fbf(0xe5)][_0x116fbf(0xd5)]+_0x116fbf(0xe0)+_0x104bd2+'\x22.'};}},importDef={'service':'app','command':a3_0x2a2c83(0xfd),'description':'从\x20.rabetbase.json\x20文件导入默认应用选择','risk':a3_0x2a2c83(0xf7),'confirmationDescription':'将读取指定的\x20.rabetbase.json,并把其中可用的默认应用设置导入本地\x20.lovrabet.json;同名配置可能被更新。','requiresAuth':![],'requiresAppCode':![],'hasFormat':![],'flags':appImportFlagDefs,async 'execute'(_0x4e205a){return await runAppImport(collectFlags(_0x4e205a,appImportFlagDefs)),{'ok':!![]};}};export const appDefinitions=[listDef,pullDef,importDef];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x5597cf,_0x5c1615){const _0x47e4a1=a4_0xc53a,_0x38e6e3=_0x5597cf();while(!![]){try{const _0x596688=parseInt(_0x47e4a1(0x1ea))/0x1+-parseInt(_0x47e4a1(0x1eb))/0x2*(-parseInt(_0x47e4a1(0x1ee))/0x3)+parseInt(_0x47e4a1(0x1f0))/0x4+-parseInt(_0x47e4a1(0x1ec))/0x5+-parseInt(_0x47e4a1(0x1f1))/0x6*(-parseInt(_0x47e4a1(0x1e6))/0x7)+-parseInt(_0x47e4a1(0x1ef))/0x8+-parseInt(_0x47e4a1(0x1e4))/0x9;if(_0x596688===_0x5c1615)break;else _0x38e6e3['push'](_0x38e6e3['shift']());}catch(_0x43c574){_0x38e6e3['push'](_0x38e6e3['shift']());}}}(a4_0x4a53,0xeeb3f));import{CLI_BIN_NAME}from'../../constant/cli.js';function a4_0xc53a(_0x4ef94a,_0x2bf921){_0x4ef94a=_0x4ef94a-0x1de;const _0x4a5398=a4_0x4a53();let _0xc53af2=_0x4a5398[_0x4ef94a];return _0xc53af2;}import{RUNTIME_ACCESSIBLE_APP_STATUS}from'../../constant/app.js';import{CliErrors}from'../../errors.js';export function normalizeAppPublishStatus(_0x56671a){const _0x38861a=a4_0xc53a;if(typeof _0x56671a!==_0x38861a(0x1e8))return null;const _0xf0b876=_0x56671a[_0x38861a(0x1e7)]();return _0xf0b876?_0xf0b876[_0x38861a(0x1e3)]():null;}export function isRuntimeAccessibleApp(_0x261a0d){return normalizeAppPublishStatus(_0x261a0d['appPublishStatus'])===RUNTIME_ACCESSIBLE_APP_STATUS;}export function filterRuntimeAccessibleApps(_0x31f234){const _0x2a1831=a4_0xc53a;return _0x31f234[_0x2a1831(0x1e1)](isRuntimeAccessibleApp);}function a4_0x4a53(){const _0x1df95d=['appName','UNKNOWN','filter','\x20is\x20not\x20available\x20for\x20runtime\x20AI\x20access.','toUpperCase','6229953jdfUCL','App\x20','21zXmIyA','trim','string','Current\x20status:\x20','1926788iybZti','568566TrBthf','3080080xnvBJT','validation','3mVENXk','14910096oDIgBU','289956HlCZuS','3732324vxiVpr','appCode','find'];a4_0x4a53=function(){return _0x1df95d;};return a4_0x4a53();}export function findAppByName(_0x57671d,_0x56c479){const _0x315e42=a4_0xc53a;return _0x57671d[_0x315e42(0x1de)](_0x13af90=>_0x13af90[_0x315e42(0x1df)]===_0x56c479);}export function findAppByCode(_0x5a4bc9,_0x2eb89b){const _0x5f5bc0=a4_0xc53a,_0x1253e0=_0x2eb89b[_0x5f5bc0(0x1e7)]();if(!_0x1253e0)return undefined;return _0x5a4bc9[_0x5f5bc0(0x1de)](_0x1b7ce8=>_0x1b7ce8[_0x5f5bc0(0x1f2)]?.['trim']()===_0x1253e0);}export function runtimeInaccessibleAppError(_0x515ef9,_0x37e72c){const _0x3e7d5b=a4_0xc53a,_0x383fad=normalizeAppPublishStatus(_0x515ef9['appPublishStatus'])??_0x3e7d5b(0x1e0);return CliErrors[_0x3e7d5b(0x1ed)](_0x3e7d5b(0x1e5)+_0x37e72c+_0x3e7d5b(0x1e2),_0x3e7d5b(0x1e9)+_0x383fad+'.\x20Publish\x20the\x20app\x20before\x20using\x20'+CLI_BIN_NAME+'\x20dataset/data/sql/bff\x20commands,\x20or\x20choose\x20a\x20published\x20app.');}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x122820,_0x187384){const _0x2dbc6f=a5_0x340a,_0x34887e=_0x122820();while(!![]){try{const _0x327180=-parseInt(_0x2dbc6f(0x12d))/0x1+-parseInt(_0x2dbc6f(0x126))/0x2+parseInt(_0x2dbc6f(0x11c))/0x3*(parseInt(_0x2dbc6f(0x11f))/0x4)+parseInt(_0x2dbc6f(0x128))/0x5+parseInt(_0x2dbc6f(0x123))/0x6*(-parseInt(_0x2dbc6f(0x124))/0x7)+parseInt(_0x2dbc6f(0x127))/0x8*(parseInt(_0x2dbc6f(0x129))/0x9)+-parseInt(_0x2dbc6f(0x121))/0xa*(-parseInt(_0x2dbc6f(0x122))/0xb);if(_0x327180===_0x187384)break;else _0x34887e['push'](_0x34887e['shift']());}catch(_0x47ce2c){_0x34887e['push'](_0x34887e['shift']());}}}(a5_0x19db,0xc66c9));import{fileURLToPath}from'url';import{dirname,join}from'path';function a5_0x19db(){const _0x3463a0=['42IzMDmp','1436113jzEwdX','parse','1144812fnKjyT','992vErXiK','6707230sdTwfU','1521ByIFYC','tableData','errorMsg','data','812748BunIvU','1440biCPNJ','../../../mock/app-list.json','errorCode','6044wxjGnl','utf-8','6470qPALbd','26290ApgGxc'];a5_0x19db=function(){return _0x3463a0;};return a5_0x19db();}import{readFileSync}from'fs';const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename);function loadMockAppList(){const _0x12e84c=a5_0x340a,_0x5d8a16=join(__dirname,_0x12e84c(0x11d)),_0x109f9e=readFileSync(_0x5d8a16,_0x12e84c(0x120));return JSON[_0x12e84c(0x125)](_0x109f9e);}let _cached=null;function a5_0x340a(_0x472079,_0x1ba550){_0x472079=_0x472079-0x11c;const _0x19dbf0=a5_0x19db();let _0x340af7=_0x19dbf0[_0x472079];return _0x340af7;}export function getMockAppList(){return!_cached&&(_cached=loadMockAppList()),_cached;}export function getMockRemoteAppItems(){const _0x2afd54=a5_0x340a,_0x427066=getMockAppList();if(!_0x427066['success'])throw new Error('Mock\x20API\x20error:\x20'+_0x427066[_0x2afd54(0x12b)]+'\x20('+_0x427066[_0x2afd54(0x11e)]+')');return _0x427066[_0x2afd54(0x12c)][_0x2afd54(0x12a)];}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x4e924d,_0x227956){const _0x4fa723=a6_0x2b3c,_0xef819d=_0x4e924d();while(!![]){try{const _0x15fc83=parseInt(_0x4fa723(0x1eb))/0x1*(parseInt(_0x4fa723(0x1f2))/0x2)+parseInt(_0x4fa723(0x1ee))/0x3*(-parseInt(_0x4fa723(0x1f3))/0x4)+parseInt(_0x4fa723(0x1e5))/0x5+parseInt(_0x4fa723(0x1e6))/0x6+-parseInt(_0x4fa723(0x1e4))/0x7+parseInt(_0x4fa723(0x1e3))/0x8*(-parseInt(_0x4fa723(0x1ea))/0x9)+-parseInt(_0x4fa723(0x1f4))/0xa;if(_0x15fc83===_0x227956)break;else _0xef819d['push'](_0xef819d['shift']());}catch(_0x738586){_0xef819d['push'](_0xef819d['shift']());}}}(a6_0x4872,0x460a7));import{getMyApps}from'../../core/api-client.js';import{getMockRemoteAppItems}from'../../commands/app/mock-loader.js';import{getAppCacheFilePath,readCachedAppList,writeCachedAppList}from'../../commands/app/cache.js';import{productEnv}from'../../constant/product.js';export function shouldUseMockRemoteApps(){const _0x24d750=a6_0x2b3c,_0x5cf136=(productEnv(_0x24d750(0x1f5))||'')[_0x24d750(0x1ef)]()[_0x24d750(0x1f1)]();return _0x5cf136===_0x24d750(0x1ed);}export async function getRemoteAppItems(){if(shouldUseMockRemoteApps())return getMockRemoteAppItems();return getMyApps();}export async function getRemoteAppList(_0x539b0c){const _0x4b07c7=a6_0x2b3c,{env:_0x17038a,accessKey:_0x36626b,localOnly:localOnly=![],noCache:noCache=![]}=_0x539b0c,_0xf90e8f=readCachedAppList(_0x17038a,_0x36626b),_0x2549f0=_0x36626b?.[_0x4b07c7(0x1ef)]()?getAppCacheFilePath(_0x17038a,_0x36626b):null;if(localOnly)return{'items':_0xf90e8f?.[_0x4b07c7(0x1ec)]??[],'source':_0x4b07c7(0x1f0),'fetchedAt':_0xf90e8f?.[_0x4b07c7(0x1e9)]??null,'cachePath':_0x2549f0};try{const _0x34e1dc=await getRemoteAppItems(),_0x48d436=shouldUseMockRemoteApps()?'mock':_0x4b07c7(0x1e8),_0x514127=new Date()[_0x4b07c7(0x1e7)](),_0x3b96e1=_0x36626b?.[_0x4b07c7(0x1ef)]()?writeCachedAppList(_0x17038a,_0x36626b,{'env':_0x17038a,'fetchedAt':_0x514127,'source':_0x48d436,'items':_0x34e1dc}):null;return{'items':_0x34e1dc,'source':_0x48d436,'fetchedAt':_0x514127,'cachePath':_0x3b96e1};}catch(_0x46dd15){if(!noCache&&_0xf90e8f)return{'items':_0xf90e8f[_0x4b07c7(0x1ec)],'source':'cache','fetchedAt':_0xf90e8f[_0x4b07c7(0x1e9)],'cachePath':_0x2549f0};throw _0x46dd15;}}function a6_0x2b3c(_0x33d3a2,_0x484f6b){_0x33d3a2=_0x33d3a2-0x1e3;const _0x4872e5=a6_0x4872();let _0x2b3c4e=_0x4872e5[_0x33d3a2];return _0x2b3c4e;}function a6_0x4872(){const _0xa22ff4=['88385udlXXE','items','mock','6ssSrPl','trim','cache','toLowerCase','2mNVPQa','361168aZLhEj','963280UItPDO','APP_LIST_SOURCE','8CQNxKy','1555057LdThjc','2795870OsfLTd','2562438wlsIYu','toISOString','remote','fetchedAt','2598138hYHGHx'];a6_0x4872=function(){return _0xa22ff4;};return a6_0x4872();}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function a7_0x547d(){const _0x4746a0=['6515993VIdhuw','7666MMoXXA','named','18WRAqHu','trim','find','5IxlMuW','local','appcode','609861FozkNm','2094918QQkhAg','12QJIvYt','isCurrent','definedIn','name','2679OwJhgL','259504raFKjs','81yUDtIY','appCode','973760LmfBbk','620XIQFdF'];a7_0x547d=function(){return _0x4746a0;};return a7_0x547d();}function a7_0x530a(_0x310c2,_0x4c58c8){_0x310c2=_0x310c2-0x1b7;const _0x547d0d=a7_0x547d();let _0x530aa6=_0x547d0d[_0x310c2];return _0x530aa6;}(function(_0x351621,_0x5db1df){const _0x46cddc=a7_0x530a,_0x29792c=_0x351621();while(!![]){try{const _0x2b82fe=parseInt(_0x46cddc(0x1ba))/0x1*(parseInt(_0x46cddc(0x1bf))/0x2)+parseInt(_0x46cddc(0x1b8))/0x3*(-parseInt(_0x46cddc(0x1bd))/0x4)+-parseInt(_0x46cddc(0x1c4))/0x5*(-parseInt(_0x46cddc(0x1c8))/0x6)+parseInt(_0x46cddc(0x1c7))/0x7+-parseInt(_0x46cddc(0x1b9))/0x8+parseInt(_0x46cddc(0x1c1))/0x9*(parseInt(_0x46cddc(0x1bc))/0xa)+parseInt(_0x46cddc(0x1be))/0xb*(-parseInt(_0x46cddc(0x1c9))/0xc);if(_0x2b82fe===_0x5db1df)break;else _0x29792c['push'](_0x29792c['shift']());}catch(_0x5525ec){_0x29792c['push'](_0x29792c['shift']());}}}(a7_0x547d,0x2b86d));export function enrichAppListItemsWithMergedSelection(_0x51ab35,_0x529a47){const _0x254cfa=a7_0x530a;if(!_0x529a47)return;const _0x5b0968=!!(_0x529a47['currentApp']??_0x529a47['defaultApp']);for(const _0x27a34f of _0x51ab35){_0x27a34f[_0x254cfa(0x1ca)]=![];}const _0x596fbc=_0x529a47['appCode']!=null?String(_0x529a47[_0x254cfa(0x1bb)])[_0x254cfa(0x1c2)]():'';if(_0x5b0968){const _0x589a15=_0x529a47['currentApp']??_0x529a47['defaultApp'];if(_0x589a15){const _0x46bdc7=_0x51ab35[_0x254cfa(0x1c3)](_0x5a4a8d=>_0x5a4a8d[_0x254cfa(0x1c0)]===!![]&&_0x5a4a8d[_0x254cfa(0x1b7)]===_0x589a15&&_0x5a4a8d[_0x254cfa(0x1cb)]===_0x254cfa(0x1c5)),_0x55d959=_0x46bdc7??_0x51ab35[_0x254cfa(0x1c3)](_0x58d196=>_0x58d196['named']===!![]&&_0x58d196[_0x254cfa(0x1b7)]===_0x589a15);if(_0x55d959){const _0x3ec3ed=String(_0x55d959[_0x254cfa(0x1c6)]??'')['trim']();if(!_0x596fbc||_0x3ec3ed===_0x596fbc){_0x55d959[_0x254cfa(0x1ca)]=!![];return;}}}if(_0x596fbc){const _0x972e11=_0x51ab35[_0x254cfa(0x1c3)](_0x35cc36=>String(_0x35cc36['appcode']??'')[_0x254cfa(0x1c2)]()===_0x596fbc);_0x972e11&&(_0x972e11[_0x254cfa(0x1ca)]=!![]);}return;}if(!_0x596fbc)return;for(const _0x95ad6f of _0x51ab35){String(_0x95ad6f[_0x254cfa(0x1c6)]??'')[_0x254cfa(0x1c2)]()===_0x596fbc&&(_0x95ad6f[_0x254cfa(0x1ca)]=!![]);}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function a8_0x3039(_0x288bed,_0x24cc8d){_0x288bed=_0x288bed-0x133;const _0x51dc6c=a8_0x51dc();let _0x3039e0=_0x51dc6c[_0x288bed];return _0x3039e0;}const a8_0x162a5d=a8_0x3039;(function(_0x3e2234,_0x2a3700){const _0x2154b6=a8_0x3039,_0x7cf3e8=_0x3e2234();while(!![]){try{const _0x298ffa=-parseInt(_0x2154b6(0x13f))/0x1+-parseInt(_0x2154b6(0x145))/0x2*(parseInt(_0x2154b6(0x140))/0x3)+-parseInt(_0x2154b6(0x135))/0x4+-parseInt(_0x2154b6(0x138))/0x5+-parseInt(_0x2154b6(0x142))/0x6*(parseInt(_0x2154b6(0x134))/0x7)+-parseInt(_0x2154b6(0x136))/0x8+-parseInt(_0x2154b6(0x144))/0x9*(-parseInt(_0x2154b6(0x13b))/0xa);if(_0x298ffa===_0x2a3700)break;else _0x7cf3e8['push'](_0x7cf3e8['shift']());}catch(_0xc2d7d3){_0x7cf3e8['push'](_0x7cf3e8['shift']());}}}(a8_0x51dc,0x94ddf));function a8_0x51dc(){const _0x2df816=['2168GuINsY','apiError','1525797LIRAiM','2240768kdssIP','5015440byMxtg',',\x20appCode=','4497150IbXaEh','validation','appCode','3640dlkVrR','Usage:\x20','key','Missing\x20app-config\x20key.','974990rTgjrv','111NTJoCh','\x20app-config\x20get\x20<key>','6ndCLdk','Unable\x20to\x20get\x20app-config\x20value:\x20key=','97155AQsZdZ'];a8_0x51dc=function(){return _0x2df816;};return a8_0x51dc();}import{getRuntimeAppConfigByKey}from'../../core/api-client.js';import{CliErrors}from'../../errors.js';import{CLI_BIN_NAME}from'../../constant/cli.js';export const appConfigGet={'service':'app-config','command':'get','description':'Get\x20one\x20runtime\x20app-config\x20value\x20by\x20key','risk':'read','args':[{'name':a8_0x162a5d(0x13d),'description':'App\x20config\x20key','required':!![]}],'flags':[],async 'execute'(_0x10ef68){const _0x1e1821=a8_0x162a5d,_0x14beac=_0x10ef68['args'][0x0]?.['trim']();if(!_0x14beac)throw CliErrors[_0x1e1821(0x139)](_0x1e1821(0x13e),_0x1e1821(0x13c)+CLI_BIN_NAME+_0x1e1821(0x141));try{const _0x5dc2ea=await getRuntimeAppConfigByKey(_0x10ef68[_0x1e1821(0x13a)],_0x14beac);return{'ok':!![],'data':_0x5dc2ea};}catch{throw CliErrors[_0x1e1821(0x133)](_0x1e1821(0x143)+_0x14beac+_0x1e1821(0x137)+_0x10ef68[_0x1e1821(0x13a)],'Check\x20that\x20the\x20key\x20exists,\x20the\x20current\x20AccessKey\x20has\x20permission,\x20and\x20the\x20runtime\x20app-config\x20endpoint\x20is\x20available.');}}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
function a9_0x3f0c(){const _0xacf5a9=['1809988weLSXi','3192JWURKp','3700824lLvYrS','6000464RiftBN','5VqgyvR','2944746cLWJeK','531163bAsPUd','8640162jzczoh','2IhDmqZ'];a9_0x3f0c=function(){return _0xacf5a9;};return a9_0x3f0c();}(function(_0x114dc7,_0x4ebe3c){const _0x4c5cb3=a9_0x5417,_0x1c2b99=_0x114dc7();while(!![]){try{const _0x1055cf=parseInt(_0x4c5cb3(0x7d))/0x1*(parseInt(_0x4c5cb3(0x7f))/0x2)+parseInt(_0x4c5cb3(0x78))/0x3+-parseInt(_0x4c5cb3(0x77))/0x4*(parseInt(_0x4c5cb3(0x7b))/0x5)+parseInt(_0x4c5cb3(0x79))/0x6+-parseInt(_0x4c5cb3(0x7c))/0x7+-parseInt(_0x4c5cb3(0x7a))/0x8+parseInt(_0x4c5cb3(0x7e))/0x9;if(_0x1055cf===_0x4ebe3c)break;else _0x1c2b99['push'](_0x1c2b99['shift']());}catch(_0x192423){_0x1c2b99['push'](_0x1c2b99['shift']());}}}(a9_0x3f0c,0x769b8));import{appConfigGet}from'../../commands/app-config/get.js';function a9_0x5417(_0x2fd35a,_0x3ab050){_0x2fd35a=_0x2fd35a-0x77;const _0x3f0c78=a9_0x3f0c();let _0x5417f0=_0x3f0c78[_0x2fd35a];return _0x5417f0;}export const appConfigDefinitions=[appConfigGet];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const a10_0x1511ae=a10_0x105a;(function(_0x2d2391,_0x8610ef){const _0x2037b0=a10_0x105a,_0x45709a=_0x2d2391();while(!![]){try{const _0x4fcf4d=-parseInt(_0x2037b0(0xf5))/0x1+-parseInt(_0x2037b0(0x11e))/0x2*(parseInt(_0x2037b0(0xe5))/0x3)+parseInt(_0x2037b0(0xed))/0x4*(-parseInt(_0x2037b0(0xea))/0x5)+-parseInt(_0x2037b0(0xd7))/0x6*(parseInt(_0x2037b0(0x10b))/0x7)+parseInt(_0x2037b0(0xd6))/0x8+parseInt(_0x2037b0(0xd9))/0x9+parseInt(_0x2037b0(0xda))/0xa*(parseInt(_0x2037b0(0xe0))/0xb);if(_0x4fcf4d===_0x8610ef)break;else _0x45709a['push'](_0x45709a['shift']());}catch(_0x3cee9d){_0x45709a['push'](_0x45709a['shift']());}}}(a10_0x22fd,0x2a0d3));import{existsSync,readFileSync,statSync}from'node:fs';function a10_0x22fd(){const _0x584d3c=['Path\x20to\x20a\x20local\x20UTF-8\x20React\x20module\x20source\x20file','File\x20not\x20found:\x20','str','artifactType','Created\x20Artifact\x20','deleted','favorite','36193lDWjCD','bool','write','split','content','antd','List\x20current-app\x20react_module\x20Artifacts','name','num','join','Optional\x20source\x20filter,\x20for\x20example\x20AGENT','createTime','create','/client/artifact/create','detail','exec','Artifact\x20metadata\x20as\x20JSON\x20object;\x20compiledContent\x20is\x20stripped','utf8','string','update','data','boolean','10997wfLhSs','source','validation','react_module\x20imports\x20are\x20limited\x20to:\x20','length','react-dom','verbose','list','map','isFile','AGENT','--metadata\x20must\x20be\x20a\x20JSON\x20object.','/client/artifact/','File\x20path\x20is\x20required.','react','read','file','updateTime','react_module','506EZGMtv','Updated\x20Artifact\x20','test','/update','根据本地源码文件更新\x20react_module\x20类型的\x20Artifact','Artifact\x20ID','some','description','appCode','compiledContent','532872lUvXhG','1128YcayHN','Invalid\x20JSON\x20for\x20--metadata:\x20','554778YzkLfY','2954760QWBVRj','flag','File\x20is\x20not\x20a\x20regular\x20file:\x20','add','Show\x20one\x20Artifact\x20by\x20id','number','22YxMVzF','artifact','build','metadata','Optional\x20favorite-state\x20filter','447VDBCzv','lastIndex','trim','@ant-design/icons','Artifact\x20source\x20file\x20is\x20blank.','888610zvbSRR','includes','Artifact\x20display\x20name','4ycBvcx'];a10_0x22fd=function(){return _0x584d3c;};return a10_0x22fd();}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_0x1511ae(0x11d),ARTIFACT_SOURCE_AGENT=a10_0x1511ae(0x115),ALLOWED_REACT_MODULE_IMPORTS=[a10_0x1511ae(0x119),a10_0x1511ae(0x110),'lodash','dayjs',a10_0x1511ae(0xfa),a10_0x1511ae(0xe8)];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':a10_0x1511ae(0x11b),'type':a10_0x1511ae(0x107),'required':!![],'description':a10_0x1511ae(0xee)},ARTIFACT_NAME_FLAG={'name':a10_0x1511ae(0xfc),'type':a10_0x1511ae(0x107),'description':a10_0x1511ae(0xec)},METADATA_FLAG={'name':'metadata','type':a10_0x1511ae(0x107),'description':a10_0x1511ae(0x105)};function isPlainObject(_0x584de4){return typeof _0x584de4==='object'&&_0x584de4!==null&&!Array['isArray'](_0x584de4);}function readSourceFile(_0x49232){const _0x4d315f=a10_0x1511ae;if(!_0x49232)throw CliErrors['validation'](_0x4d315f(0x118));if(!existsSync(_0x49232))throw CliErrors[_0x4d315f(0x10d)](_0x4d315f(0xef)+_0x49232);if(!statSync(_0x49232)[_0x4d315f(0x114)]())throw CliErrors[_0x4d315f(0x10d)](_0x4d315f(0xdc)+_0x49232);const _0x58017a=readFileSync(_0x49232,_0x4d315f(0x106));return validateReactModuleSource(_0x58017a),_0x58017a;}function parseMetadata(_0x24d0eb){const _0x3d81e9=a10_0x1511ae;if(!_0x24d0eb)return undefined;let _0x1469e3;try{_0x1469e3=JSON['parse'](_0x24d0eb);}catch{throw CliErrors[_0x3d81e9(0x10d)](_0x3d81e9(0xd8)+_0x24d0eb);}if(!isPlainObject(_0x1469e3))throw CliErrors[_0x3d81e9(0x10d)](_0x3d81e9(0x116));const _0x5cccae={..._0x1469e3};return delete _0x5cccae[_0x3d81e9(0xd5)],_0x5cccae;}function getPackageName(_0x1e3c86){const _0x2f421a=a10_0x1511ae;if(_0x1e3c86['startsWith']('@')){const [_0x13da5b,_0x5cb305]=_0x1e3c86[_0x2f421a(0xf8)]('/');return _0x13da5b&&_0x5cb305?_0x13da5b+'/'+_0x5cb305:_0x1e3c86;}return _0x1e3c86[_0x2f421a(0xf8)]('/')[0x0]||_0x1e3c86;}function validateAllowedImports(_0x5c2276){const _0x25111c=a10_0x1511ae,_0x383942=new Set();for(const _0x32e742 of IMPORT_SOURCE_PATTERNS){_0x32e742[_0x25111c(0xe6)]=0x0;let _0x426d14;while((_0x426d14=_0x32e742[_0x25111c(0x104)](_0x5c2276))!==null){const _0x524d68=_0x426d14[0x1]?.['trim']();_0x524d68&&_0x383942[_0x25111c(0xdd)](_0x524d68);}}const _0x3c2fc7=[..._0x383942][_0x25111c(0x113)](getPackageName)['filter'](_0x24b3bb=>!ALLOWED_REACT_MODULE_IMPORTS[_0x25111c(0xeb)](_0x24b3bb));if(_0x3c2fc7[_0x25111c(0x10f)]>0x0)throw CliErrors[_0x25111c(0x10d)](_0x25111c(0x10e)+ALLOWED_REACT_MODULE_IMPORTS_TEXT+'.\x20Unsupported:\x20'+[...new Set(_0x3c2fc7)][_0x25111c(0xfe)](',\x20'));}export function validateReactModuleSource(_0x5ca46e){const _0x391cef=a10_0x1511ae;if(!_0x5ca46e[_0x391cef(0xe7)]())throw CliErrors[_0x391cef(0x10d)](_0x391cef(0xe9));if(PAGE_LEVEL_PATTERNS[_0x391cef(0x124)](_0x2e124c=>_0x2e124c[_0x391cef(0x120)](_0x5ca46e)))throw CliErrors[_0x391cef(0x10d)]('react_module\x20must\x20be\x20an\x20embeddable\x20React\x20module,\x20not\x20full\x20HTML\x20or\x20a\x20ReactDOM/createRoot\x20mount\x20entry.');validateAllowedImports(_0x5ca46e);}function buildArtifactInput(_0x3b2477){const _0xf983aa=a10_0x1511ae,_0x45a96a=readSourceFile(_0x3b2477['str'](_0xf983aa(0x11b))),_0x2c097f=_0x3b2477[_0xf983aa(0xf0)](_0xf983aa(0xfc))[_0xf983aa(0xe7)](),_0x14af12=parseMetadata(_0x3b2477[_0xf983aa(0xf0)]('metadata'));return{'artifactType':ARTIFACT_TYPE_REACT_MODULE,..._0x2c097f?{'name':_0x2c097f}:{},'content':_0x45a96a,..._0x14af12?{'metadata':_0x14af12}:{},'source':ARTIFACT_SOURCE_AGENT};}function summarizeArtifact(_0x13e7a9){const _0x29275b=a10_0x1511ae;return{'id':_0x13e7a9['id'],'name':_0x13e7a9[_0x29275b(0xfc)],'artifactType':_0x13e7a9[_0x29275b(0xf1)],'source':_0x13e7a9['source'],'favorite':_0x13e7a9['favorite'],'deleted':_0x13e7a9[_0x29275b(0xf3)],'createTime':_0x13e7a9[_0x29275b(0x100)],'updateTime':_0x13e7a9[_0x29275b(0x11c)]};}function detailArtifact(_0x408729){const _0x21b7cf=a10_0x1511ae;return{'id':_0x408729['id'],'appCode':_0x408729[_0x21b7cf(0x126)],'name':_0x408729[_0x21b7cf(0xfc)],'artifactType':_0x408729[_0x21b7cf(0xf1)],'source':_0x408729['source'],'favorite':_0x408729[_0x21b7cf(0xf4)],'deleted':_0x408729[_0x21b7cf(0xf3)],'content':_0x408729[_0x21b7cf(0xf9)]??'','compiledContent':_0x408729[_0x21b7cf(0xd5)],'metadata':_0x408729[_0x21b7cf(0xe3)]??{},'createTime':_0x408729[_0x21b7cf(0x100)],'updateTime':_0x408729['updateTime']};}function readFavoriteFlag(_0x1bdbb1){const _0x2f58d1=a10_0x1511ae,_0x21f72d=_0x1bdbb1[_0x2f58d1(0xdb)](_0x2f58d1(0xf4));return _0x21f72d===undefined||_0x21f72d===null||_0x21f72d===''?undefined:_0x1bdbb1[_0x2f58d1(0xf6)](_0x2f58d1(0xf4));}function a10_0x105a(_0x6adb91,_0x1c1d19){_0x6adb91=_0x6adb91-0xd5;const _0x22fd03=a10_0x22fd();let _0x105a32=_0x22fd03[_0x6adb91];return _0x105a32;}const artifactList={'service':'artifact','command':a10_0x1511ae(0x112),'description':a10_0x1511ae(0xfb),'risk':a10_0x1511ae(0x11a),'flags':[{'name':a10_0x1511ae(0x10c),'type':a10_0x1511ae(0x107),'description':a10_0x1511ae(0xff)},{'name':a10_0x1511ae(0xf4),'type':a10_0x1511ae(0x10a),'description':a10_0x1511ae(0xe4)},VERBOSE_FLAG],async 'execute'(_0x3a9dbd){const _0x29b411=a10_0x1511ae,_0x38fa63=await listRuntimeArtifacts(_0x3a9dbd[_0x29b411(0x126)],{'artifactType':ARTIFACT_TYPE_REACT_MODULE,..._0x3a9dbd[_0x29b411(0xf0)](_0x29b411(0x10c))?{'source':_0x3a9dbd[_0x29b411(0xf0)](_0x29b411(0x10c))}:{},...readFavoriteFlag(_0x3a9dbd)!==undefined?{'favorite':readFavoriteFlag(_0x3a9dbd)}:{}});return{'ok':!![],'data':{'total':_0x38fa63[_0x29b411(0x10f)],'items':_0x3a9dbd[_0x29b411(0xf6)](_0x29b411(0x111))?_0x38fa63:_0x38fa63[_0x29b411(0x113)](summarizeArtifact)}};}},artifactDetail={'service':a10_0x1511ae(0xe1),'command':a10_0x1511ae(0x103),'description':a10_0x1511ae(0xde),'risk':a10_0x1511ae(0x11a),'flags':[{...ID_FLAG,'description':a10_0x1511ae(0x123)}],async 'execute'(_0x418874){const _0x4c10aa=a10_0x1511ae,_0x4352e3=await getRuntimeArtifact(_0x418874[_0x4c10aa(0xfd)]('id'),_0x418874['appCode']);return{'ok':!![],'data':detailArtifact(_0x4352e3)};}},artifactCreate={'service':'artifact','command':a10_0x1511ae(0x101),'description':'根据本地源码文件创建\x20react_module\x20类型的\x20Artifact','risk':a10_0x1511ae(0xf7),'confirmationDescription':'保存新的\x20Artifact\x20源码并进行编译;成功后将在当前应用中新增可展示的内嵌模块。','flags':[FILE_FLAG,ARTIFACT_NAME_FLAG,METADATA_FLAG],async 'execute'(_0x233bc5){const _0x1583fa=a10_0x1511ae,_0x1ede83=buildArtifactInput(_0x233bc5),_0x115532=await createRuntimeArtifact(_0x233bc5['appCode'],_0x1ede83);return{'ok':!![],'data':detailArtifact(_0x115532),'message':_0x1583fa(0xf2)+_0x115532['id']+(_0x115532[_0x1583fa(0xfc)]?'\x20('+_0x115532[_0x1583fa(0xfc)]+')':'')};},async 'dryRun'(_0x983f52){const _0x40d5d8=a10_0x1511ae,_0x4a623c=buildArtifactInput(_0x983f52);return dryRun('POST',_0x40d5d8(0x102))['body']({'appCode':_0x983f52[_0x40d5d8(0x126)],..._0x4a623c})[_0x40d5d8(0x125)]('Preview:\x20create\x20react_module\x20Artifact')['build']();},'writeEventSubject'(_0x4926b9){const _0x1c28f6=a10_0x1511ae,_0x966e93=_0x4926b9[_0x1c28f6(0x109)]?.['id'];if(typeof _0x966e93!=='string'&&typeof _0x966e93!=='number')return undefined;return{'kind':_0x1c28f6(0xe1),'id':String(_0x966e93),'action':_0x1c28f6(0x101)};}},artifactUpdate={'service':a10_0x1511ae(0xe1),'command':a10_0x1511ae(0x108),'description':a10_0x1511ae(0x122),'risk':a10_0x1511ae(0xf7),'confirmationDescription':'保存新的\x20Artifact\x20源码并重新编译;应用中的内嵌模块展示和交互可能立即发生变化。','flags':[{...ID_FLAG,'description':'Artifact\x20ID'},FILE_FLAG,ARTIFACT_NAME_FLAG,METADATA_FLAG],async 'execute'(_0x3c01c3){const _0x5a74c5=a10_0x1511ae,_0x2b8d7d=_0x3c01c3['num']('id'),_0x1f7146=buildArtifactInput(_0x3c01c3),_0x19d9ca=await updateRuntimeArtifact(_0x2b8d7d,_0x3c01c3[_0x5a74c5(0x126)],_0x1f7146);return{'ok':!![],'data':detailArtifact(_0x19d9ca),'message':_0x5a74c5(0x11f)+_0x19d9ca['id']+(_0x19d9ca[_0x5a74c5(0xfc)]?'\x20('+_0x19d9ca[_0x5a74c5(0xfc)]+')':'')};},async 'dryRun'(_0x43fca3){const _0x5b55e9=a10_0x1511ae,_0x534a44=_0x43fca3[_0x5b55e9(0xfd)]('id'),_0x17d077=buildArtifactInput(_0x43fca3);return dryRun('POST',_0x5b55e9(0x117)+_0x534a44+_0x5b55e9(0x121))['body']({'appCode':_0x43fca3[_0x5b55e9(0x126)],..._0x17d077})[_0x5b55e9(0x125)]('Preview:\x20update\x20react_module\x20Artifact\x20'+_0x534a44)[_0x5b55e9(0xe2)]();},'writeEventSubject'(_0x44f84b){const _0x1ef8fa=a10_0x1511ae,_0x5175bd=_0x44f84b['data']?.['id'];if(typeof _0x5175bd!==_0x1ef8fa(0x107)&&typeof _0x5175bd!==_0x1ef8fa(0xdf))return undefined;return{'kind':_0x1ef8fa(0xe1),'id':String(_0x5175bd),'action':'update'};}};export const artifactDefinitions=[artifactList,artifactDetail,artifactCreate,artifactUpdate];
|
|
1
|
+
const a10_0x298ce6=a10_0x4c3e;(function(_0x26c5ac,_0x2eb8c3){const _0x4021f0=a10_0x4c3e,_0x32504e=_0x26c5ac();while(!![]){try{const _0x4a9e06=parseInt(_0x4021f0(0x16b))/0x1+parseInt(_0x4021f0(0x158))/0x2+-parseInt(_0x4021f0(0x18d))/0x3*(parseInt(_0x4021f0(0x190))/0x4)+-parseInt(_0x4021f0(0x179))/0x5+parseInt(_0x4021f0(0x1a2))/0x6*(parseInt(_0x4021f0(0x16f))/0x7)+-parseInt(_0x4021f0(0x168))/0x8*(parseInt(_0x4021f0(0x178))/0x9)+parseInt(_0x4021f0(0x18e))/0xa*(parseInt(_0x4021f0(0x16e))/0xb);if(_0x4a9e06===_0x2eb8c3)break;else _0x32504e['push'](_0x32504e['shift']());}catch(_0x505147){_0x32504e['push'](_0x32504e['shift']());}}}(a10_0xf798,0x674ef));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_0x298ce6(0x182),ARTIFACT_SOURCE_AGENT='AGENT',ALLOWED_REACT_MODULE_IMPORTS=[a10_0x298ce6(0x195),'react-dom',a10_0x298ce6(0x166),a10_0x298ce6(0x17f),a10_0x298ce6(0x164),a10_0x298ce6(0x18b)];export const ALLOWED_REACT_MODULE_IMPORTS_TEXT=ALLOWED_REACT_MODULE_IMPORTS[a10_0x298ce6(0x17e)](',\x20');function a10_0x4c3e(_0x13baf6,_0x308edb){_0x13baf6=_0x13baf6-0x152;const _0xf798a5=a10_0xf798();let _0x4c3e7c=_0xf798a5[_0x13baf6];return _0x4c3e7c;}const IMPORT_SOURCE_PATTERNS=[/\bimport\s+(?:type\s+)?(?:[^'";]*?\s+from\s+)?["']([^"']+)["']/g,/\bexport\s+(?:type\s+)?[^'";]*?\s+from\s+["']([^"']+)["']/g,/\bimport\s*\(\s*["']([^"']+)["']\s*\)/g,/\brequire\s*\(\s*["']([^"']+)["']\s*\)/g],PAGE_LEVEL_PATTERNS=[/<!doctype\s+html/i,/<\s*html\b/i,/\bcreateRoot\s*\(/,/\bReactDOM\s*\.\s*render\s*\(/,/\bReactDOM\s*\.\s*createRoot\s*\(/],FILE_FLAG={'name':a10_0x298ce6(0x199),'type':a10_0x298ce6(0x171),'required':!![],'description':'Path\x20to\x20a\x20local\x20UTF-8\x20React\x20module\x20source\x20file'},ARTIFACT_NAME_FLAG={'name':a10_0x298ce6(0x1a6),'type':a10_0x298ce6(0x171),'description':a10_0x298ce6(0x18f)},METADATA_FLAG={'name':a10_0x298ce6(0x17c),'type':a10_0x298ce6(0x171),'description':a10_0x298ce6(0x15d)};function isPlainObject(_0x22eed3){const _0x11631f=a10_0x298ce6;return typeof _0x22eed3===_0x11631f(0x159)&&_0x22eed3!==null&&!Array[_0x11631f(0x19a)](_0x22eed3);}function readSourceFile(_0x53c116){const _0x692ded=a10_0x298ce6;if(!_0x53c116)throw CliErrors['validation'](_0x692ded(0x180));if(!existsSync(_0x53c116))throw CliErrors[_0x692ded(0x155)](_0x692ded(0x157)+_0x53c116);if(!statSync(_0x53c116)[_0x692ded(0x16d)]())throw CliErrors['validation'](_0x692ded(0x160)+_0x53c116);const _0x4fb37a=readFileSync(_0x53c116,_0x692ded(0x19d));return validateReactModuleSource(_0x4fb37a),_0x4fb37a;}function parseMetadata(_0x91d831){const _0x3d8ba9=a10_0x298ce6;if(!_0x91d831)return undefined;let _0x546207;try{_0x546207=JSON[_0x3d8ba9(0x153)](_0x91d831);}catch{throw CliErrors['validation'](_0x3d8ba9(0x16c)+_0x91d831);}if(!isPlainObject(_0x546207))throw CliErrors[_0x3d8ba9(0x155)](_0x3d8ba9(0x165));const _0x2caef5={..._0x546207};return delete _0x2caef5[_0x3d8ba9(0x1a8)],_0x2caef5;}function getPackageName(_0x3a6856){const _0x100e8c=a10_0x298ce6;if(_0x3a6856[_0x100e8c(0x1a1)]('@')){const [_0x333909,_0x54b40a]=_0x3a6856[_0x100e8c(0x15a)]('/');return _0x333909&&_0x54b40a?_0x333909+'/'+_0x54b40a:_0x3a6856;}return _0x3a6856[_0x100e8c(0x15a)]('/')[0x0]||_0x3a6856;}function a10_0xf798(){const _0x17761b=['isFile','2113573ZGuIgv','101465InsIpc','createTime','string','str','update','artifact','Created\x20Artifact\x20','appCode','updateTime','29583XmZNag','746260eKEEtv','includes','根据本地源码文件更新\x20react_module\x20类型的\x20Artifact','metadata','/update','join','dayjs','File\x20path\x20is\x20required.','/client/artifact/create','react_module','lastIndex','POST','trim','length','根据本地源码文件创建\x20react_module\x20类型的\x20Artifact','add','description','Updated\x20Artifact\x20','@ant-design/icons','artifactType','39yJrfgk','20DjEgtf','Artifact\x20display\x20name','216148FAhwYF','num','favorite','.\x20Unsupported:\x20','number','react','Show\x20one\x20Artifact\x20by\x20id','filter','map','file','isArray','react_module\x20imports\x20are\x20limited\x20to:\x20','some','utf8','bool','write','boolean','startsWith','138ndabNo','Optional\x20source\x20filter,\x20for\x20example\x20AGENT','Preview:\x20create\x20react_module\x20Artifact','deleted','name','test','compiledContent','build','parse','Artifact\x20source\x20file\x20is\x20blank.','validation','保存新的\x20Artifact\x20源码并重新编译;应用中的内嵌模块展示和交互可能立即发生变化。','File\x20not\x20found:\x20','1258868yQsHNE','object','split','data','list','Artifact\x20metadata\x20as\x20JSON\x20object;\x20compiledContent\x20is\x20stripped','content','source','File\x20is\x20not\x20a\x20regular\x20file:\x20','Optional\x20favorite-state\x20filter','List\x20current-app\x20react_module\x20Artifacts','/client/artifact/','antd','--metadata\x20must\x20be\x20a\x20JSON\x20object.','lodash','create','1816RLRIjv','flag','read','673928eWBNpg','Invalid\x20JSON\x20for\x20--metadata:\x20'];a10_0xf798=function(){return _0x17761b;};return a10_0xf798();}function validateAllowedImports(_0x503675){const _0x14d729=a10_0x298ce6,_0x34a061=new Set();for(const _0x163090 of IMPORT_SOURCE_PATTERNS){_0x163090[_0x14d729(0x183)]=0x0;let _0x3e96fd;while((_0x3e96fd=_0x163090['exec'](_0x503675))!==null){const _0x3a909c=_0x3e96fd[0x1]?.[_0x14d729(0x185)]();_0x3a909c&&_0x34a061[_0x14d729(0x188)](_0x3a909c);}}const _0x2e27dc=[..._0x34a061]['map'](getPackageName)[_0x14d729(0x197)](_0x16a531=>!ALLOWED_REACT_MODULE_IMPORTS[_0x14d729(0x17a)](_0x16a531));if(_0x2e27dc[_0x14d729(0x186)]>0x0)throw CliErrors[_0x14d729(0x155)](_0x14d729(0x19b)+ALLOWED_REACT_MODULE_IMPORTS_TEXT+_0x14d729(0x193)+[...new Set(_0x2e27dc)][_0x14d729(0x17e)](',\x20'));}export function validateReactModuleSource(_0x593cf4){const _0x3d936b=a10_0x298ce6;if(!_0x593cf4[_0x3d936b(0x185)]())throw CliErrors[_0x3d936b(0x155)](_0x3d936b(0x154));if(PAGE_LEVEL_PATTERNS[_0x3d936b(0x19c)](_0x3846d0=>_0x3846d0[_0x3d936b(0x1a7)](_0x593cf4)))throw CliErrors[_0x3d936b(0x155)]('react_module\x20must\x20be\x20an\x20embeddable\x20React\x20module,\x20not\x20full\x20HTML\x20or\x20a\x20ReactDOM/createRoot\x20mount\x20entry.');validateAllowedImports(_0x593cf4);}function buildArtifactInput(_0xaf5e3){const _0x267d06=a10_0x298ce6,_0x3a9b18=readSourceFile(_0xaf5e3[_0x267d06(0x172)](_0x267d06(0x199))),_0x1d472c=_0xaf5e3[_0x267d06(0x172)](_0x267d06(0x1a6))[_0x267d06(0x185)](),_0x3cc33b=parseMetadata(_0xaf5e3[_0x267d06(0x172)]('metadata'));return{'artifactType':ARTIFACT_TYPE_REACT_MODULE,..._0x1d472c?{'name':_0x1d472c}:{},'content':_0x3a9b18,..._0x3cc33b?{'metadata':_0x3cc33b}:{},'source':ARTIFACT_SOURCE_AGENT};}function summarizeArtifact(_0x26d65a){const _0x4e7a1a=a10_0x298ce6;return{'id':_0x26d65a['id'],'name':_0x26d65a['name'],'artifactType':_0x26d65a['artifactType'],'source':_0x26d65a[_0x4e7a1a(0x15f)],'favorite':_0x26d65a[_0x4e7a1a(0x192)],'deleted':_0x26d65a[_0x4e7a1a(0x1a5)],'createTime':_0x26d65a[_0x4e7a1a(0x170)],'updateTime':_0x26d65a[_0x4e7a1a(0x177)]};}function detailArtifact(_0x1c2f91){const _0x45b371=a10_0x298ce6;return{'id':_0x1c2f91['id'],'appCode':_0x1c2f91[_0x45b371(0x176)],'name':_0x1c2f91['name'],'artifactType':_0x1c2f91[_0x45b371(0x18c)],'source':_0x1c2f91[_0x45b371(0x15f)],'favorite':_0x1c2f91[_0x45b371(0x192)],'deleted':_0x1c2f91[_0x45b371(0x1a5)],'content':_0x1c2f91[_0x45b371(0x15e)]??'','compiledContent':_0x1c2f91[_0x45b371(0x1a8)],'metadata':_0x1c2f91[_0x45b371(0x17c)]??{},'createTime':_0x1c2f91[_0x45b371(0x170)],'updateTime':_0x1c2f91[_0x45b371(0x177)]};}function readFavoriteFlag(_0x1fb2d8){const _0x3c7110=a10_0x298ce6,_0x7e05bd=_0x1fb2d8[_0x3c7110(0x169)](_0x3c7110(0x192));return _0x7e05bd===undefined||_0x7e05bd===null||_0x7e05bd===''?undefined:_0x1fb2d8[_0x3c7110(0x19e)]('favorite');}const artifactList={'service':a10_0x298ce6(0x174),'command':a10_0x298ce6(0x15c),'description':a10_0x298ce6(0x162),'risk':a10_0x298ce6(0x16a),'flags':[{'name':a10_0x298ce6(0x15f),'type':a10_0x298ce6(0x171),'description':a10_0x298ce6(0x1a3)},{'name':a10_0x298ce6(0x192),'type':a10_0x298ce6(0x1a0),'description':a10_0x298ce6(0x161)},VERBOSE_FLAG],async 'execute'(_0x4fbae4){const _0x645a0d=a10_0x298ce6,_0x5bc4d2=await listRuntimeArtifacts(_0x4fbae4[_0x645a0d(0x176)],{'artifactType':ARTIFACT_TYPE_REACT_MODULE,..._0x4fbae4[_0x645a0d(0x172)](_0x645a0d(0x15f))?{'source':_0x4fbae4[_0x645a0d(0x172)](_0x645a0d(0x15f))}:{},...readFavoriteFlag(_0x4fbae4)!==undefined?{'favorite':readFavoriteFlag(_0x4fbae4)}:{}});return{'ok':!![],'data':{'total':_0x5bc4d2[_0x645a0d(0x186)],'items':_0x4fbae4['bool']('verbose')?_0x5bc4d2:_0x5bc4d2[_0x645a0d(0x198)](summarizeArtifact)}};}},artifactDetail={'service':a10_0x298ce6(0x174),'command':'detail','description':a10_0x298ce6(0x196),'risk':a10_0x298ce6(0x16a),'flags':[{...ID_FLAG,'description':'Artifact\x20ID'}],async 'execute'(_0x4551bf){const _0x26adcd=a10_0x298ce6,_0x536e45=await getRuntimeArtifact(_0x4551bf[_0x26adcd(0x191)]('id'),_0x4551bf['appCode']);return{'ok':!![],'data':detailArtifact(_0x536e45)};}},artifactCreate={'service':'artifact','command':a10_0x298ce6(0x167),'description':a10_0x298ce6(0x187),'risk':a10_0x298ce6(0x19f),'confirmationDescription':'保存新的\x20Artifact\x20源码并进行编译;成功后将在当前应用中新增可展示的内嵌模块。','flags':[FILE_FLAG,ARTIFACT_NAME_FLAG,METADATA_FLAG],async 'execute'(_0x2c88a7){const _0x3ec0d8=a10_0x298ce6,_0x16e60b=buildArtifactInput(_0x2c88a7),_0x33c973=await createRuntimeArtifact(_0x2c88a7[_0x3ec0d8(0x176)],_0x16e60b);return{'ok':!![],'data':detailArtifact(_0x33c973),'message':_0x3ec0d8(0x175)+_0x33c973['id']+(_0x33c973[_0x3ec0d8(0x1a6)]?'\x20('+_0x33c973[_0x3ec0d8(0x1a6)]+')':'')};},async 'dryRun'(_0x36f73c){const _0x4e1543=a10_0x298ce6,_0x11b151=buildArtifactInput(_0x36f73c);return dryRun(_0x4e1543(0x184),_0x4e1543(0x181))['body']({'appCode':_0x36f73c['appCode'],..._0x11b151})[_0x4e1543(0x189)](_0x4e1543(0x1a4))[_0x4e1543(0x152)]();},'writeEventSubject'(_0x554565){const _0x3f2c89=a10_0x298ce6,_0x3bcb72=_0x554565['data']?.['id'];if(typeof _0x3bcb72!==_0x3f2c89(0x171)&&typeof _0x3bcb72!==_0x3f2c89(0x194))return undefined;return{'kind':_0x3f2c89(0x174),'id':String(_0x3bcb72),'action':'create'};}},artifactUpdate={'service':a10_0x298ce6(0x174),'command':a10_0x298ce6(0x173),'description':a10_0x298ce6(0x17b),'risk':a10_0x298ce6(0x19f),'confirmationDescription':a10_0x298ce6(0x156),'flags':[{...ID_FLAG,'description':'Artifact\x20ID'},FILE_FLAG,ARTIFACT_NAME_FLAG,METADATA_FLAG],async 'execute'(_0xc535af){const _0x52d0b0=a10_0x298ce6,_0x5a1788=_0xc535af[_0x52d0b0(0x191)]('id'),_0x46861f=buildArtifactInput(_0xc535af),_0x1bf9ef=await updateRuntimeArtifact(_0x5a1788,_0xc535af[_0x52d0b0(0x176)],_0x46861f);return{'ok':!![],'data':detailArtifact(_0x1bf9ef),'message':_0x52d0b0(0x18a)+_0x1bf9ef['id']+(_0x1bf9ef['name']?'\x20('+_0x1bf9ef[_0x52d0b0(0x1a6)]+')':'')};},async 'dryRun'(_0x4e5cd7){const _0x2159d0=a10_0x298ce6,_0x3df950=_0x4e5cd7[_0x2159d0(0x191)]('id'),_0x19ac5f=buildArtifactInput(_0x4e5cd7);return dryRun(_0x2159d0(0x184),_0x2159d0(0x163)+_0x3df950+_0x2159d0(0x17d))['body']({'appCode':_0x4e5cd7[_0x2159d0(0x176)],..._0x19ac5f})[_0x2159d0(0x189)]('Preview:\x20update\x20react_module\x20Artifact\x20'+_0x3df950)[_0x2159d0(0x152)]();},'writeEventSubject'(_0x370935){const _0x472497=a10_0x298ce6,_0x5efff8=_0x370935[_0x472497(0x15b)]?.['id'];if(typeof _0x5efff8!==_0x472497(0x171)&&typeof _0x5efff8!==_0x472497(0x194))return undefined;return{'kind':_0x472497(0x174),'id':String(_0x5efff8),'action':_0x472497(0x173)};}};export const artifactDefinitions=[artifactList,artifactDetail,artifactCreate,artifactUpdate];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function a11_0x4572(){const _0xdbdfff=['success','removeListener','floor','application/json','access_key','parse','57805JZPiov','cancelled','expired','Device\x20auth\x20API\x20returned\x20HTTP\x20','Invalid\x20device\x20auth\x20response','boolean','Device\x20authorization\x20cancelled.','Write\x20to\x20project\x20config','code','\x20auth\x20device','scope','/.device-auth','Already\x20authorized.\x20Use\x20`lovrabet\x20auth\x20status`\x20to\x20verify.','string','8623352mJGISp','Device\x20authorization\x20timed\x20out\x20after\x2010\x20minutes.\x20Run\x20`lovrabet\x20auth\x20device`\x20to\x20get\x20a\x20new\x20code.','68829miiIex','url-only','networkError','App\x20name\x20shown\x20on\x20authorization\x20page\x20(default:\x20lovrabet)','396xjZaam','apiError','accessKey','data','The\x20device\x20code\x20is\x20valid\x20for\x2010\x20minutes.','aborted','device','Device\x20code\x20expired.\x20Run\x20`lovrabet\x20auth\x20device`\x20to\x20get\x20a\x20new\x20code.','/api/device-auth/token','将启动设备码授权流程;授权成功后会把获取到的\x20AccessKey\x20保存到所选\x20Lovrabet\x20配置。确认界面不会显示设备码或密钥。','auth','createdAt','write','randomUUID','Device\x20authorization\x20successful.','通过设备码流程完成授权(在浏览器中操作,无需复制粘贴)','/device-auth?code=','signal','96692vbALEq','global','),\x20retrying...','name','str','\x20auth\x20status','92DUwOxV','SIGINT','project','&source=','AccessKey\x20saved\x20to\x20','124745sfisgA','POST','object','stderr','AbortError','Open\x20this\x20URL\x20in\x20your\x20browser\x20to\x20authorize:','json','4315927uqKcRj','Device\x20authorization\x20URL\x20printed.\x20Complete\x20authorization\x20in\x20browser,\x20then\x20re-run.','lovrabet-cli','status','abort','validation','nonInteractive','source','bool','log','stringify','Invalid\x20access_key\x20returned\x20by\x20server.','8109CVVPfP','\x0dWaiting\x20for\x20authorization...\x20','27140qAFRKy','getTime','utf8','toISOString'];a11_0x4572=function(){return _0xdbdfff;};return a11_0x4572();}const a11_0x25cc79=a11_0x185d;(function(_0x273872,_0x589551){const _0x5ac76d=a11_0x185d,_0x4e0f75=_0x273872();while(!![]){try{const _0x2af6e6=parseInt(_0x5ac76d(0xfc))/0x1+parseInt(_0x5ac76d(0x141))/0x2+-parseInt(_0x5ac76d(0x12b))/0x3*(-parseInt(_0x5ac76d(0xf7))/0x4)+parseInt(_0x5ac76d(0x11b))/0x5*(-parseInt(_0x5ac76d(0x12f))/0x6)+-parseInt(_0x5ac76d(0x103))/0x7+-parseInt(_0x5ac76d(0x129))/0x8+parseInt(_0x5ac76d(0x10f))/0x9*(parseInt(_0x5ac76d(0x111))/0xa);if(_0x2af6e6===_0x589551)break;else _0x4e0f75['push'](_0x4e0f75['shift']());}catch(_0x5bcc60){_0x4e0f75['push'](_0x4e0f75['shift']());}}}(a11_0x4572,0xa81cc));import{existsSync,mkdirSync,readFileSync,unlinkSync,writeFileSync}from'node:fs';import{dirname}from'node:path';function a11_0x185d(_0x54112d,_0x4a19c2){_0x54112d=_0x54112d-0xf6;const _0x4572bf=a11_0x4572();let _0x185d21=_0x4572bf[_0x54112d];return _0x185d21;}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(_0x23be9c){const _0x20ca2e=a11_0x185d;return toScopeFlags(resolveConfigScope({'explicitGlobal':_0x23be9c['bool'](_0x20ca2e(0x142)),'explicitProject':_0x23be9c[_0x20ca2e(0x10b)](_0x20ca2e(0xf9)),'policy':'global-default'}));}const ACCESS_KEY_PATTERN=/^ak_[A-Za-z0-9]{16,}$/,DEVICE_CODE_TTL_MS=0x927c0,POLL_INTERVAL_MS=0xbb8,MAX_POLLS=0xc8,MAX_CONSECUTIVE_NETWORK_ERRORS=0x5;export function generateDeviceCode(){const _0x169f63=a11_0x185d;return crypto[_0x169f63(0x13c)]();}export function buildDeviceAuthUrl(_0x2ca857,_0x4a86e4,_0x4b687e='lovrabet-cli'){const _0x7ffbb0=a11_0x185d;return _0x2ca857+_0x7ffbb0(0x13f)+encodeURIComponent(_0x4a86e4)+_0x7ffbb0(0xfa)+encodeURIComponent(_0x4b687e);}export function getDeviceCodePath(){const _0x5c2ff5=a11_0x185d;return homedir()+'/'+PRODUCT_CONFIG['homeDirName']+_0x5c2ff5(0x126);}export function readStoredDeviceCode(){const _0x43daa0=a11_0x185d,_0x1b78cd=getDeviceCodePath();if(!existsSync(_0x1b78cd))return null;try{const _0x48def4=readFileSync(_0x1b78cd,{'encoding':'utf8'}),_0x4d2100=JSON[_0x43daa0(0x11a)](_0x48def4);if(_0x4d2100&&typeof _0x4d2100['code']===_0x43daa0(0x128)&&typeof _0x4d2100[_0x43daa0(0x13a)]==='string'&&(_0x4d2100[_0x43daa0(0x125)]==='global'||_0x4d2100['scope']===_0x43daa0(0xf9)))return _0x4d2100;}catch{}return null;}export function writeStoredDeviceCode(_0x57f79d,_0x309159){const _0x4fb9b2=a11_0x185d,_0xfa6a5a=getDeviceCodePath(),_0x972e91=dirname(_0xfa6a5a);!existsSync(_0x972e91)&&mkdirSync(_0x972e91,{'recursive':!![]});const _0x3ba8af={'code':_0x57f79d,'createdAt':new Date()[_0x4fb9b2(0x114)](),'scope':_0x309159};writeFileSync(_0xfa6a5a,JSON['stringify'](_0x3ba8af),{'encoding':_0x4fb9b2(0x113),'mode':0x180});}export function deleteStoredDeviceCode(){const _0x57a872=getDeviceCodePath();try{unlinkSync(_0x57a872);}catch{}}export function isStoredDeviceCodeExpired(_0x561a2f){const _0x1b76cc=a11_0x185d;return Date['now']()-new Date(_0x561a2f[_0x1b76cc(0x13a)])[_0x1b76cc(0x112)]()>DEVICE_CODE_TTL_MS;}export async function fetchDeviceToken(_0x36e8fe,_0x51f21a){const _0x5adcb5=a11_0x185d,_0x2d1636=_0x36e8fe+_0x5adcb5(0x137),_0x31dbe5=new AbortController(),_0x45dcd9=setTimeout(()=>_0x31dbe5[_0x5adcb5(0x107)](),0x2710),_0x1bf27e=await fetch(_0x2d1636,{'method':_0x5adcb5(0xfd),'headers':{'Content-Type':_0x5adcb5(0x118)},'body':JSON[_0x5adcb5(0x10d)]({'code':_0x51f21a}),'signal':_0x31dbe5[_0x5adcb5(0x140)]});clearTimeout(_0x45dcd9);if(!_0x1bf27e['ok'])throw CliErrors[_0x5adcb5(0x12d)](_0x5adcb5(0x11e)+_0x1bf27e[_0x5adcb5(0x106)]);const _0x5ce6c9=await _0x1bf27e[_0x5adcb5(0x102)](),_0x108e23=_0x5ce6c9[_0x5adcb5(0x132)]&&typeof _0x5ce6c9[_0x5adcb5(0x132)]===_0x5adcb5(0xfe)?_0x5ce6c9[_0x5adcb5(0x132)]:_0x5ce6c9;if(!_0x108e23||typeof _0x108e23[_0x5adcb5(0x106)]!==_0x5adcb5(0x128))throw CliErrors['apiError'](_0x5adcb5(0x11f));return{'status':_0x108e23['status'],'access_key':typeof _0x108e23[_0x5adcb5(0x119)]==='string'?_0x108e23[_0x5adcb5(0x119)]:undefined};}export async function pollDeviceToken(_0x7fa677,_0x54387c,_0x5daee3){const _0x20fc22=a11_0x185d;let _0x458fb5=0x0;for(let _0x52de2a=0x0;_0x52de2a<MAX_POLLS;_0x52de2a++){if(_0x5daee3[_0x20fc22(0x134)])throw CliErrors[_0x20fc22(0x11c)](_0x20fc22(0x121));let _0x412720;try{_0x412720=await fetchDeviceToken(_0x7fa677,_0x54387c);}catch(_0x24b93a){if(_0x24b93a instanceof Error&&_0x24b93a[_0x20fc22(0x144)]===_0x20fc22(0x100))throw CliErrors[_0x20fc22(0x11c)](_0x20fc22(0x121));_0x458fb5++;if(_0x458fb5>=MAX_CONSECUTIVE_NETWORK_ERRORS)throw CliErrors[_0x20fc22(0x12d)]('Device\x20auth\x20API\x20unreachable\x20after\x20multiple\x20retries.');writeCliSideChannelLine('Device\x20auth\x20API\x20error\x20('+_0x458fb5+'/'+MAX_CONSECUTIVE_NETWORK_ERRORS+_0x20fc22(0x143)),await sleep(POLL_INTERVAL_MS);continue;}_0x458fb5=0x0;if(_0x412720[_0x20fc22(0x106)]===_0x20fc22(0x115)){if(!_0x412720['access_key'])throw CliErrors[_0x20fc22(0x130)](_0x20fc22(0x10e));return _0x412720[_0x20fc22(0x119)];}if(_0x412720[_0x20fc22(0x106)]===_0x20fc22(0x11d)){deleteStoredDeviceCode();throw CliErrors['validation'](_0x20fc22(0x136));}const _0x4715be=(_0x52de2a+0x1)*POLL_INTERVAL_MS,_0xdc1e3c=DEVICE_CODE_TTL_MS-_0x4715be,_0x41e1ef=Math['floor'](_0xdc1e3c/0xea60),_0x3ff5cf=Math[_0x20fc22(0x117)](_0xdc1e3c%0xea60/0x3e8);process[_0x20fc22(0xff)]['write'](_0x20fc22(0x110)+_0x41e1ef+':'+String(_0x3ff5cf)['padStart'](0x2,'0')+'\x20remaining'),await sleep(POLL_INTERVAL_MS);}deleteStoredDeviceCode();throw CliErrors[_0x20fc22(0x108)](_0x20fc22(0x12a));}function sleep(_0x2be3cb){return new Promise(_0x5c384f=>setTimeout(_0x5c384f,_0x2be3cb));}export const authDeviceDefinition={'service':a11_0x25cc79(0x139),'command':a11_0x25cc79(0x135),'description':a11_0x25cc79(0x13e),'risk':a11_0x25cc79(0x13b),'confirmationDescription':a11_0x25cc79(0x138),'requiresAuth':![],'requiresAppCode':![],'hasFormat':![],'flags':[{'name':'global','type':a11_0x25cc79(0x120),'description':'Write\x20to\x20global\x20config\x20(default)','default':!![]},{'name':a11_0x25cc79(0xf9),'type':a11_0x25cc79(0x120),'description':a11_0x25cc79(0x122),'default':![]},{'name':a11_0x25cc79(0x10a),'type':'string','description':a11_0x25cc79(0x12e),'default':a11_0x25cc79(0x105)},{'name':a11_0x25cc79(0x12c),'type':'boolean','description':'Print\x20URL\x20to\x20stdout\x20and\x20exit\x20(for\x20WorkBuddy\x20integration)','default':![]}],async 'execute'(_0x150e65){const _0x5ed39b=a11_0x25cc79,_0x5a46f6=resolveAuthScopeFlags(_0x150e65),_0x395ffa=_0x5a46f6[_0x5ed39b(0x142)]?_0x5ed39b(0x142):_0x5ed39b(0xf9),_0x598233=readScopedConfig(_0x5a46f6);if(_0x598233['accessKey'])return{'ok':!![],'message':_0x5ed39b(0x127)};const _0x5b8d64=(_0x150e65[_0x5ed39b(0x145)](_0x5ed39b(0x10a))||'lovrabet-cli')['trim'](),_0x566a05=getUserDomain(),_0x295c24=readStoredDeviceCode(),_0x10f2a0=_0x295c24&&!isStoredDeviceCodeExpired(_0x295c24)?_0x295c24[_0x5ed39b(0x123)]:((()=>{const _0x5a18cb=generateDeviceCode();return writeStoredDeviceCode(_0x5a18cb,_0x395ffa),_0x5a18cb;})()),_0x544fa2=buildDeviceAuthUrl(_0x566a05,_0x10f2a0,_0x5b8d64);if(_0x150e65[_0x5ed39b(0x10b)](_0x5ed39b(0x12c)))return console[_0x5ed39b(0x10c)](_0x544fa2),{'ok':!![]};writeCliSideChannelLine(_0x5ed39b(0x101)),writeCliSideChannelLine(''),writeCliSideChannelLine(_0x544fa2),writeCliSideChannelLine(''),writeCliSideChannelLine(_0x5ed39b(0x133));if(_0x150e65[_0x5ed39b(0x109)])return writeCliSideChannelLine('After\x20authorizing,\x20re-run:\x20'+CLI_BIN_NAME+_0x5ed39b(0x124)),{'ok':!![],'message':_0x5ed39b(0x104)};writeCliSideChannelLine('Waiting\x20for\x20authorization\x20(timeout:\x2010\x20minutes,\x20Ctrl+C\x20to\x20cancel)...');const _0x2dfbb8=new AbortController(),_0x2cd035=()=>{const _0x2be6b3=_0x5ed39b;_0x2dfbb8[_0x2be6b3(0x107)](),process[_0x2be6b3(0x116)](_0x2be6b3(0xf8),_0x2cd035);};process['once'](_0x5ed39b(0xf8),_0x2cd035);let _0x110c9d;try{_0x110c9d=await pollDeviceToken(_0x566a05,_0x10f2a0,_0x2dfbb8[_0x5ed39b(0x140)]);}finally{process[_0x5ed39b(0x116)](_0x5ed39b(0xf8),_0x2cd035);}if(!ACCESS_KEY_PATTERN['test'](_0x110c9d))throw CliErrors[_0x5ed39b(0x130)](_0x5ed39b(0x10e));const _0xc834df=readScopedConfig(_0x5a46f6);return _0xc834df[_0x5ed39b(0x131)]=_0x110c9d,writeScopedConfig(_0xc834df,_0x5a46f6),deleteStoredDeviceCode(),process[_0x5ed39b(0xff)][_0x5ed39b(0x13b)]('\x0a'),writeCliSideChannelLine(_0x5ed39b(0xfb)+_0x395ffa+'\x20config.'),writeCliSideChannelLine('Verify:\x20'+CLI_BIN_NAME+_0x5ed39b(0xf6)),{'ok':!![],'message':_0x5ed39b(0x13d)};}};
|
|
1
|
+
const a11_0x5f3886=a11_0x4a53;(function(_0x485ea2,_0x4ab332){const _0x48d525=a11_0x4a53,_0x23d566=_0x485ea2();while(!![]){try{const _0x3c115e=parseInt(_0x48d525(0xe7))/0x1*(-parseInt(_0x48d525(0xcf))/0x2)+parseInt(_0x48d525(0xe9))/0x3*(-parseInt(_0x48d525(0x104))/0x4)+-parseInt(_0x48d525(0xf5))/0x5*(-parseInt(_0x48d525(0xe3))/0x6)+-parseInt(_0x48d525(0xe4))/0x7+parseInt(_0x48d525(0xf8))/0x8*(parseInt(_0x48d525(0xca))/0x9)+-parseInt(_0x48d525(0xfa))/0xa*(-parseInt(_0x48d525(0xd2))/0xb)+parseInt(_0x48d525(0xd7))/0xc*(parseInt(_0x48d525(0xc8))/0xd);if(_0x3c115e===_0x4ab332)break;else _0x23d566['push'](_0x23d566['shift']());}catch(_0x43beb5){_0x23d566['push'](_0x23d566['shift']());}}}(a11_0x1a86,0xb0f84));function a11_0x4a53(_0x2360e7,_0x5ecf99){_0x2360e7=_0x2360e7-0xbe;const _0x1a868f=a11_0x1a86();let _0x4a53b4=_0x1a868f[_0x2360e7];return _0x4a53b4;}import{existsSync,mkdirSync,readFileSync,unlinkSync,writeFileSync}from'node:fs';import{dirname}from'node:path';import{homedir}from'node:os';import{readScopedConfig,writeScopedConfig}from'../../context.js';import{CLI_BIN_NAME}from'../../constant/cli.js';import{PRODUCT_CONFIG}from'../../constant/product.js';import{getUserDomain}from'../../constant/domain.js';import{CliErrors}from'../../errors.js';function a11_0x1a86(){const _0x13ea98=['nonInteractive','name','Device\x20auth\x20API\x20unreachable\x20after\x20multiple\x20retries.','48066PvqZwS','3253131XCZUVz','padStart','Invalid\x20access_key\x20returned\x20by\x20server.','25073FuDXuJ','/device-auth?code=','3fOzINF','access_key','toISOString','log','aborted','Device\x20code\x20expired.\x20Run\x20`lovrabet\x20auth\x20device`\x20to\x20get\x20a\x20new\x20code.','Device\x20authorization\x20cancelled.','\x0dWaiting\x20for\x20authorization...\x20','\x20config.','),\x20retrying...','device','Device\x20auth\x20API\x20error\x20(','265dLeNau','Invalid\x20device\x20auth\x20response','object','3105160qUkqIS','/api/device-auth/token','100lGrvhc','createdAt','lovrabet-cli','once','string','randomUUID','floor','cancelled','signal','Waiting\x20for\x20authorization\x20(timeout:\x2010\x20minutes,\x20Ctrl+C\x20to\x20cancel)...','5420164oTVXAh','validation','accessKey','将启动设备码授权流程;授权成功后会把获取到的\x20AccessKey\x20保存到所选\x20Lovrabet\x20配置。确认界面不会显示设备码或密钥。','scope','now','test','stderr','boolean','\x20auth\x20status','Write\x20to\x20project\x20config','utf8','通过设备码流程完成授权(在浏览器中操作,无需复制粘贴)','auth','bool','Device\x20authorization\x20successful.','write','url-only','Verify:\x20','Open\x20this\x20URL\x20in\x20your\x20browser\x20to\x20authorize:','project','global','success','SIGINT','13dnEgzA','apiError','18oCZxaO','abort','homeDirName','removeListener','status','106MAdnjr','parse','data','277552myJbqh','source','networkError','Device\x20authorization\x20timed\x20out\x20after\x2010\x20minutes.\x20Run\x20`lovrabet\x20auth\x20device`\x20to\x20get\x20a\x20new\x20code.','code','29043816UsGCtl','\x20auth\x20device','Write\x20to\x20global\x20config\x20(default)','stringify','trim','expired','After\x20authorizing,\x20re-run:\x20','global-default','getTime'];a11_0x1a86=function(){return _0x13ea98;};return a11_0x1a86();}import{resolveConfigScope,toScopeFlags}from'../../commands/common/config-policy.js';import{writeCliSideChannelLine}from'../../utils/write-cli-side-channel.js';function resolveAuthScopeFlags(_0x1f2cf7){const _0x47d768=a11_0x4a53;return toScopeFlags(resolveConfigScope({'explicitGlobal':_0x1f2cf7[_0x47d768(0xbe)](_0x47d768(0xc5)),'explicitProject':_0x1f2cf7[_0x47d768(0xbe)](_0x47d768(0xc4)),'policy':_0x47d768(0xde)}));}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 _0x99c65b=a11_0x4a53;return crypto[_0x99c65b(0xff)]();}export function buildDeviceAuthUrl(_0x3332a4,_0x28f1bf,_0x136148=a11_0x5f3886(0xfc)){const _0x443de7=a11_0x5f3886;return _0x3332a4+_0x443de7(0xe8)+encodeURIComponent(_0x28f1bf)+'&source='+encodeURIComponent(_0x136148);}export function getDeviceCodePath(){const _0x2dd37e=a11_0x5f3886;return homedir()+'/'+PRODUCT_CONFIG[_0x2dd37e(0xcc)]+'/.device-auth';}export function readStoredDeviceCode(){const _0x3e01bc=a11_0x5f3886,_0x2a4860=getDeviceCodePath();if(!existsSync(_0x2a4860))return null;try{const _0x1f1009=readFileSync(_0x2a4860,{'encoding':'utf8'}),_0x2f731f=JSON[_0x3e01bc(0xd0)](_0x1f1009);if(_0x2f731f&&typeof _0x2f731f[_0x3e01bc(0xd6)]==='string'&&typeof _0x2f731f[_0x3e01bc(0xfb)]==='string'&&(_0x2f731f['scope']===_0x3e01bc(0xc5)||_0x2f731f[_0x3e01bc(0x108)]===_0x3e01bc(0xc4)))return _0x2f731f;}catch{}return null;}export function writeStoredDeviceCode(_0x2a130b,_0x1aedb6){const _0x298401=a11_0x5f3886,_0xd174a6=getDeviceCodePath(),_0x3119bf=dirname(_0xd174a6);!existsSync(_0x3119bf)&&mkdirSync(_0x3119bf,{'recursive':!![]});const _0x4412b6={'code':_0x2a130b,'createdAt':new Date()[_0x298401(0xeb)](),'scope':_0x1aedb6};writeFileSync(_0xd174a6,JSON[_0x298401(0xda)](_0x4412b6),{'encoding':_0x298401(0x10f),'mode':0x180});}export function deleteStoredDeviceCode(){const _0x4edbbd=getDeviceCodePath();try{unlinkSync(_0x4edbbd);}catch{}}export function isStoredDeviceCodeExpired(_0x3ad9c2){const _0x2c1a27=a11_0x5f3886;return Date[_0x2c1a27(0x109)]()-new Date(_0x3ad9c2[_0x2c1a27(0xfb)])[_0x2c1a27(0xdf)]()>DEVICE_CODE_TTL_MS;}export async function fetchDeviceToken(_0x1a127d,_0x3ff850){const _0xa19995=a11_0x5f3886,_0x1ff0de=_0x1a127d+_0xa19995(0xf9),_0x3e638f=new AbortController(),_0x180bba=setTimeout(()=>_0x3e638f[_0xa19995(0xcb)](),0x2710),_0x3db3af=await fetch(_0x1ff0de,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'code':_0x3ff850}),'signal':_0x3e638f[_0xa19995(0x102)]});clearTimeout(_0x180bba);if(!_0x3db3af['ok'])throw CliErrors['networkError']('Device\x20auth\x20API\x20returned\x20HTTP\x20'+_0x3db3af[_0xa19995(0xce)]);const _0x4adfe0=await _0x3db3af['json'](),_0x497d7b=_0x4adfe0['data']&&typeof _0x4adfe0[_0xa19995(0xd1)]===_0xa19995(0xf7)?_0x4adfe0[_0xa19995(0xd1)]:_0x4adfe0;if(!_0x497d7b||typeof _0x497d7b[_0xa19995(0xce)]!==_0xa19995(0xfe))throw CliErrors[_0xa19995(0xc9)](_0xa19995(0xf6));return{'status':_0x497d7b[_0xa19995(0xce)],'access_key':typeof _0x497d7b[_0xa19995(0xea)]==='string'?_0x497d7b['access_key']:undefined};}export async function pollDeviceToken(_0x1e564b,_0x357e2a,_0x2cd69a){const _0x358059=a11_0x5f3886;let _0x178dea=0x0;for(let _0x292935=0x0;_0x292935<MAX_POLLS;_0x292935++){if(_0x2cd69a[_0x358059(0xed)])throw CliErrors[_0x358059(0x101)](_0x358059(0xef));let _0x333dc9;try{_0x333dc9=await fetchDeviceToken(_0x1e564b,_0x357e2a);}catch(_0x2c54e1){if(_0x2c54e1 instanceof Error&&_0x2c54e1[_0x358059(0xe1)]==='AbortError')throw CliErrors['cancelled'](_0x358059(0xef));_0x178dea++;if(_0x178dea>=MAX_CONSECUTIVE_NETWORK_ERRORS)throw CliErrors[_0x358059(0xd4)](_0x358059(0xe2));writeCliSideChannelLine(_0x358059(0xf4)+_0x178dea+'/'+MAX_CONSECUTIVE_NETWORK_ERRORS+_0x358059(0xf2)),await sleep(POLL_INTERVAL_MS);continue;}_0x178dea=0x0;if(_0x333dc9[_0x358059(0xce)]===_0x358059(0xc6)){if(!_0x333dc9[_0x358059(0xea)])throw CliErrors[_0x358059(0xc9)](_0x358059(0xe6));return _0x333dc9['access_key'];}if(_0x333dc9[_0x358059(0xce)]===_0x358059(0xdc)){deleteStoredDeviceCode();throw CliErrors[_0x358059(0x105)](_0x358059(0xee));}const _0x2ee315=(_0x292935+0x1)*POLL_INTERVAL_MS,_0x55619d=DEVICE_CODE_TTL_MS-_0x2ee315,_0x46a0d2=Math[_0x358059(0x100)](_0x55619d/0xea60),_0x162528=Math[_0x358059(0x100)](_0x55619d%0xea60/0x3e8);process['stderr'][_0x358059(0xc0)](_0x358059(0xf0)+_0x46a0d2+':'+String(_0x162528)[_0x358059(0xe5)](0x2,'0')+'\x20remaining'),await sleep(POLL_INTERVAL_MS);}deleteStoredDeviceCode();throw CliErrors[_0x358059(0x105)](_0x358059(0xd5));}function sleep(_0x136e42){return new Promise(_0x5e18fd=>setTimeout(_0x5e18fd,_0x136e42));}export const authDeviceDefinition={'service':a11_0x5f3886(0x111),'command':a11_0x5f3886(0xf3),'description':a11_0x5f3886(0x110),'risk':a11_0x5f3886(0xc0),'confirmationDescription':a11_0x5f3886(0x107),'requiresAuth':![],'requiresAppCode':![],'hasFormat':![],'flags':[{'name':a11_0x5f3886(0xc5),'type':a11_0x5f3886(0x10c),'description':a11_0x5f3886(0xd9),'default':!![]},{'name':a11_0x5f3886(0xc4),'type':'boolean','description':a11_0x5f3886(0x10e),'default':![]},{'name':a11_0x5f3886(0xd3),'type':'string','description':'App\x20name\x20shown\x20on\x20authorization\x20page\x20(default:\x20lovrabet)','default':a11_0x5f3886(0xfc)},{'name':a11_0x5f3886(0xc1),'type':a11_0x5f3886(0x10c),'description':'Print\x20URL\x20to\x20stdout\x20and\x20exit\x20(for\x20WorkBuddy\x20integration)','default':![]}],async 'execute'(_0x70e54c){const _0x63d0be=a11_0x5f3886,_0x593c7d=resolveAuthScopeFlags(_0x70e54c),_0x333247=_0x593c7d[_0x63d0be(0xc5)]?_0x63d0be(0xc5):'project',_0x1f4c15=readScopedConfig(_0x593c7d);if(_0x1f4c15['accessKey'])return{'ok':!![],'message':'Already\x20authorized.\x20Use\x20`lovrabet\x20auth\x20status`\x20to\x20verify.'};const _0x285c7f=(_0x70e54c['str'](_0x63d0be(0xd3))||_0x63d0be(0xfc))[_0x63d0be(0xdb)](),_0x3ba6c8=getUserDomain(),_0x4ccd0e=readStoredDeviceCode(),_0x1c555c=_0x4ccd0e&&!isStoredDeviceCodeExpired(_0x4ccd0e)?_0x4ccd0e[_0x63d0be(0xd6)]:((()=>{const _0x4dc110=generateDeviceCode();return writeStoredDeviceCode(_0x4dc110,_0x333247),_0x4dc110;})()),_0x55cde2=buildDeviceAuthUrl(_0x3ba6c8,_0x1c555c,_0x285c7f);if(_0x70e54c[_0x63d0be(0xbe)]('url-only'))return console[_0x63d0be(0xec)](_0x55cde2),{'ok':!![]};writeCliSideChannelLine(_0x63d0be(0xc3)),writeCliSideChannelLine(''),writeCliSideChannelLine(_0x55cde2),writeCliSideChannelLine(''),writeCliSideChannelLine('The\x20device\x20code\x20is\x20valid\x20for\x2010\x20minutes.');if(_0x70e54c[_0x63d0be(0xe0)])return writeCliSideChannelLine(_0x63d0be(0xdd)+CLI_BIN_NAME+_0x63d0be(0xd8)),{'ok':!![],'message':'Device\x20authorization\x20URL\x20printed.\x20Complete\x20authorization\x20in\x20browser,\x20then\x20re-run.'};writeCliSideChannelLine(_0x63d0be(0x103));const _0x5acdb2=new AbortController(),_0x2285ee=()=>{const _0x34036f=_0x63d0be;_0x5acdb2[_0x34036f(0xcb)](),process[_0x34036f(0xcd)](_0x34036f(0xc7),_0x2285ee);};process[_0x63d0be(0xfd)]('SIGINT',_0x2285ee);let _0x1cd7a9;try{_0x1cd7a9=await pollDeviceToken(_0x3ba6c8,_0x1c555c,_0x5acdb2[_0x63d0be(0x102)]);}finally{process[_0x63d0be(0xcd)](_0x63d0be(0xc7),_0x2285ee);}if(!ACCESS_KEY_PATTERN[_0x63d0be(0x10a)](_0x1cd7a9))throw CliErrors[_0x63d0be(0xc9)](_0x63d0be(0xe6));const _0x2c6d40=readScopedConfig(_0x593c7d);return _0x2c6d40[_0x63d0be(0x106)]=_0x1cd7a9,writeScopedConfig(_0x2c6d40,_0x593c7d),deleteStoredDeviceCode(),process[_0x63d0be(0x10b)][_0x63d0be(0xc0)]('\x0a'),writeCliSideChannelLine('AccessKey\x20saved\x20to\x20'+_0x333247+_0x63d0be(0xf1)),writeCliSideChannelLine(_0x63d0be(0xc2)+CLI_BIN_NAME+_0x63d0be(0x10d)),{'ok':!![],'message':_0x63d0be(0xbf)};}};
|