@lovrabet/lovrabet-cli 2.1.23 → 2.2.0
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 +13 -10
- package/lib/cli.js +1 -1
- package/lib/commands/api-doc/index.js +1 -1
- package/lib/commands/app/cache.js +1 -1
- package/lib/commands/app/definitions.js +1 -1
- package/lib/commands/app/eligibility.js +1 -1
- package/lib/commands/app/mock-loader.js +1 -1
- package/lib/commands/app/remote-source.js +1 -1
- package/lib/commands/app/shared.js +1 -1
- package/lib/commands/app-config/get.js +1 -1
- package/lib/commands/app-config/index.js +1 -1
- package/lib/commands/artifact/index.js +1 -1
- package/lib/commands/auth/device.js +1 -1
- package/lib/commands/auth/index.js +1 -1
- package/lib/commands/auth/prompt.js +1 -1
- package/lib/commands/bff/detail.js +1 -1
- package/lib/commands/bff/exec.js +1 -1
- package/lib/commands/bff/index.js +1 -1
- package/lib/commands/cli-skill/index.js +1 -1
- package/lib/commands/common/config-policy.js +1 -1
- package/lib/commands/common/constraints.js +1 -1
- package/lib/commands/common/flags.js +1 -1
- package/lib/commands/common/local-file.js +1 -1
- package/lib/commands/config/definitions.js +1 -1
- package/lib/commands/config/shared.js +1 -1
- package/lib/commands/data/index.js +1 -1
- package/lib/commands/dataset/detail.js +1 -1
- package/lib/commands/dataset/index.js +1 -1
- package/lib/commands/dataset/list.js +1 -1
- package/lib/commands/dataset/sdk-doc.js +1 -1
- package/lib/commands/doctor.js +1 -1
- package/lib/commands/file/index.js +1 -1
- package/lib/commands/init.js +1 -1
- package/lib/commands/kb/index.js +1 -1
- package/lib/commands/logs/index.js +1 -1
- package/lib/commands/ocr/index.js +1 -1
- package/lib/commands/personal-bff/index.js +1 -1
- package/lib/commands/registry.js +1 -1
- package/lib/commands/schedule/index.js +1 -1
- package/lib/commands/schema.js +1 -1
- package/lib/commands/service/dynamic.js +1 -1
- package/lib/commands/service/function-name-adapter.js +1 -1
- package/lib/commands/service/index.js +1 -1
- package/lib/commands/service/registry.js +1 -1
- package/lib/commands/skill/commands/create.js +1 -1
- package/lib/commands/skill/commands/diagram.js +1 -1
- package/lib/commands/skill/commands/install.js +1 -1
- package/lib/commands/skill/commands/list.js +1 -1
- package/lib/commands/skill/commands/push.js +1 -1
- package/lib/commands/skill/commands/validate.js +1 -1
- package/lib/commands/skill/diagram.js +1 -1
- package/lib/commands/skill/flags.js +1 -1
- package/lib/commands/skill/index.js +1 -1
- package/lib/commands/skill/manifest-helpers.js +1 -1
- package/lib/commands/skill/push-execute.js +1 -1
- package/lib/commands/skill/push-flow-helpers.js +1 -1
- package/lib/commands/skill/push-retarget.js +1 -1
- package/lib/commands/skill/scopes.js +1 -1
- package/lib/commands/skill/summary.js +1 -1
- package/lib/commands/skill/templates.js +1 -1
- package/lib/commands/skill/validate.js +1 -1
- package/lib/commands/sql/detail.js +1 -1
- package/lib/commands/sql/exec.js +1 -1
- package/lib/commands/sql/index.js +1 -1
- package/lib/commands/update.d.ts +2 -2
- package/lib/commands/update.js +1 -1
- package/lib/commands/workspace/index.js +1 -1
- package/lib/config/schema.js +1 -1
- package/lib/constant/app.js +1 -1
- package/lib/constant/auth-mode.js +1 -1
- package/lib/constant/cli.js +1 -1
- package/lib/constant/defaults.js +1 -1
- package/lib/constant/distribution.js +1 -1
- package/lib/constant/domain.js +1 -1
- package/lib/constant/env.js +1 -1
- package/lib/constant/output.js +1 -1
- package/lib/constant/product.js +1 -1
- package/lib/constant/risk.js +1 -1
- package/lib/constant/url.js +1 -1
- package/lib/context.js +1 -1
- package/lib/core/api-client.js +1 -1
- package/lib/core/db-resolver.js +1 -1
- package/lib/core/sdk-client.js +1 -1
- package/lib/errors.js +1 -1
- package/lib/framework/build-all-flags.js +1 -1
- package/lib/framework/dryrun.js +1 -1
- package/lib/framework/flags.js +1 -1
- package/lib/framework/help.js +1 -1
- package/lib/framework/index.js +1 -1
- package/lib/framework/output.js +1 -1
- package/lib/framework/preparse.js +1 -1
- package/lib/framework/rate-limit.js +1 -1
- package/lib/framework/raw-flags.js +1 -1
- package/lib/framework/response.js +1 -1
- package/lib/framework/runner-confirmation.js +1 -1
- package/lib/framework/runner-error.js +1 -1
- package/lib/framework/runner.js +1 -1
- package/lib/framework/schema-export.js +1 -1
- package/lib/framework/service-order.js +1 -1
- package/lib/framework/types.js +1 -1
- package/lib/generated/build-info.d.ts +4 -4
- package/lib/generated/build-info.js +1 -1
- package/lib/help.js +1 -1
- package/lib/postinstall.d.ts +2 -0
- package/lib/postinstall.js +1 -0
- 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.d.ts +37 -0
- package/lib/skills/builtin-skill.js +1 -0
- package/lib/skills/npx-skills-add.d.ts +3 -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 +14 -3
- package/scripts/postinstall.mjs +24 -0
- package/skills/lovrabet/SKILL.md +702 -0
- package/skills/lovrabet/guides/app-resolution.md +165 -0
- package/skills/lovrabet/guides/dataset-and-data-workflow.md +170 -0
- package/skills/lovrabet/guides/sql-and-bff-workflow.md +132 -0
- package/skills/lovrabet/guides/troubleshooting.md +91 -0
- package/skills/lovrabet/references/dataset-discovery-workflow.md +160 -0
- package/skills/lovrabet/references/instant-api-workflow.md +259 -0
- package/skills/lovrabet/references/lovrabet-app-config.md +51 -0
- package/skills/lovrabet/references/lovrabet-app.md +113 -0
- package/skills/lovrabet/references/lovrabet-auth.md +136 -0
- package/skills/lovrabet/references/lovrabet-bff-workflow.md +139 -0
- package/skills/lovrabet/references/lovrabet-config-commands.md +104 -0
- package/skills/lovrabet/references/lovrabet-config.md +124 -0
- package/skills/lovrabet/references/lovrabet-doctor.md +26 -0
- package/skills/lovrabet/references/lovrabet-file-workflow.md +62 -0
- package/skills/lovrabet/references/lovrabet-kb-workflow.md +78 -0
- package/skills/lovrabet/references/lovrabet-logs.md +19 -0
- package/skills/lovrabet/references/lovrabet-ocr-workflow.md +83 -0
- package/skills/lovrabet/references/lovrabet-output-format-jq.md +40 -0
- package/skills/lovrabet/references/lovrabet-personal-bff-workflow.md +108 -0
- package/skills/lovrabet/references/lovrabet-schedule-workflow.md +175 -0
- package/skills/lovrabet/references/lovrabet-service-tree.md +279 -0
- package/skills/lovrabet/references/lovrabet-skill-authoring.md +128 -0
- package/skills/lovrabet/references/lovrabet-skill-install.md +34 -0
- package/skills/lovrabet/references/lovrabet-skill-sync.md +146 -0
- package/skills/lovrabet/references/lovrabet-sql-workflow.md +111 -0
- package/skills/lovrabet/references/lovrabet-update.md +34 -0
- package/skills/lovrabet/references/lovrabet-workspace.md +82 -0
- package/skills/lovrabet.manifest.json +38 -0
package/README.md
CHANGED
|
@@ -11,7 +11,7 @@ repeatable workflows into agent-ready Skills.
|
|
|
11
11
|
|
|
12
12
|
## Requirements
|
|
13
13
|
|
|
14
|
-
- Node.js 20 or later
|
|
14
|
+
- Node.js 22.20.0 or later
|
|
15
15
|
- A Lovrabet account with access to the target runtime app
|
|
16
16
|
- A User Access Key for authenticated commands
|
|
17
17
|
|
|
@@ -23,6 +23,15 @@ lovrabet --version
|
|
|
23
23
|
lovrabet --help
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
+
The npm package automatically installs the same-version Built-in Skill. If the
|
|
27
|
+
postinstall warning reports an external Skills CLI, network, or permission
|
|
28
|
+
problem, repair it after resolving the cause:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
lovrabet cli-skill install
|
|
32
|
+
lovrabet doctor
|
|
33
|
+
```
|
|
34
|
+
|
|
26
35
|
You can also run a specific version with npm tooling:
|
|
27
36
|
|
|
28
37
|
```bash
|
|
@@ -71,20 +80,14 @@ Use `--format pretty` for human-readable output and `--format json` or
|
|
|
71
80
|
|
|
72
81
|
## AI Agent Skill
|
|
73
82
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
83
|
+
The Lovrabet CLI Built-in Skill ships inside the npm package and is installed
|
|
84
|
+
with the CLI. Use the repair command when `lovrabet doctor` reports it missing
|
|
85
|
+
or inconsistent:
|
|
77
86
|
|
|
78
87
|
```bash
|
|
79
88
|
lovrabet cli-skill install
|
|
80
89
|
```
|
|
81
90
|
|
|
82
|
-
Equivalent direct installation:
|
|
83
|
-
|
|
84
|
-
```bash
|
|
85
|
-
npx skills add lovrabet/lovrabet-cli -g -y
|
|
86
|
-
```
|
|
87
|
-
|
|
88
91
|
After selecting an app, install app-specific business Skills when available:
|
|
89
92
|
|
|
90
93
|
```bash
|
package/lib/cli.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
2
|
+
(function(_0x3fb630,_0x1c3ae5){const _0x5eb25d=a0_0x1208,_0x44eb9d=_0x3fb630();while(!![]){try{const _0x2ff3fe=-parseInt(_0x5eb25d(0xcf))/0x1+-parseInt(_0x5eb25d(0xb8))/0x2+parseInt(_0x5eb25d(0xa7))/0x3+parseInt(_0x5eb25d(0xcc))/0x4+-parseInt(_0x5eb25d(0xc0))/0x5*(parseInt(_0x5eb25d(0xcd))/0x6)+parseInt(_0x5eb25d(0xc2))/0x7*(-parseInt(_0x5eb25d(0xb7))/0x8)+-parseInt(_0x5eb25d(0xb6))/0x9*(-parseInt(_0x5eb25d(0xaa))/0xa);if(_0x2ff3fe===_0x1c3ae5)break;else _0x44eb9d['push'](_0x44eb9d['shift']());}catch(_0x2d8110){_0x44eb9d['push'](_0x44eb9d['shift']());}}}(a0_0x72c7,0x9add3));import{jsx as a0_0x82a25a}from'react/jsx-runtime';function a0_0x72c7(){const _0x43a1c8=['length','message','510867NqszVM','3281232ixOYKK','363062QXgSXw','stderr','name','definition','./framework/preparse.js','help','assign','exitCode','10VYzizV','flags','21TdjuAd','write','Hint:\x20','input','handler',':\x20--','\x0aCancelled.\x0a','ERR_STREAM_DESTROYED','log','hint','4698572XhhDNG','3397596pSpfxL','ERR_USE_AFTER_CLOSE','118615JNeekw','flatMap','3473547qPAGom','args','error','170oUaYKU','unknownCommand','corrected','defaultCommand','ExitPromptError','code','exit','cancelled','slice','Error:\x20'];a0_0x72c7=function(){return _0x43a1c8;};return a0_0x72c7();}import a0_0xaf41d7 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_0xaf41d7(helpText,{'importMeta':import.meta,'flags':buildMeowFlags(),'version':getCliVersionDisplay()});void main()['catch'](handleError);async function main(){try{await run();}catch(_0x175fa0){handleError(_0x175fa0);}}async function run(){const _0x4fa305=a0_0x1208;let _0x28936a=cli[_0x4fa305(0xc5)][0x0],_0x121cef=cli['input'][0x1];const _0x166aae=cli[_0x4fa305(0xc1)];try{const {correctFlags:_0x1ea903}=await import(_0x4fa305(0xbc)),_0xc643f2=getAllDefinitions()[_0x4fa305(0xd0)](_0x317c24=>_0x317c24[_0x4fa305(0xc1)]??[]),{flags:_0x550285,corrections:_0x457f9b}=_0x1ea903(_0x166aae,_0xc643f2);if(_0x457f9b[_0x4fa305(0xb4)]>0x0){for(const _0x52f334 of _0x457f9b){process['stderr'][_0x4fa305(0xc3)]('[preparse]\x20'+_0x52f334[_0x4fa305(0xc6)]+_0x4fa305(0xc7)+_0x52f334['original']+'\x20->\x20--'+_0x52f334[_0x4fa305(0xac)]+'\x0a');}Object[_0x4fa305(0xbe)](_0x166aae,_0x550285);}}catch{}if(!_0x28936a){const {waitUntilExit:_0xeabb79}=render(a0_0x82a25a(Help,{}));await _0xeabb79();return;}const _0x3734c4=resolveRemovedCommand(_0x28936a,_0x121cef);if(_0x3734c4)throw CliErrors['validation'](_0x3734c4[_0x4fa305(0xb5)],_0x3734c4[_0x4fa305(0xcb)]);if(!isKnownService(_0x28936a)){const _0x5b278e=resolveDynamicServiceCommand(cli[_0x4fa305(0xc5)],_0x166aae);if(_0x5b278e){if(_0x166aae[_0x4fa305(0xbd)]){console[_0x4fa305(0xca)](generateCommandHelp(_0x5b278e['definition']));return;}Object[_0x4fa305(0xbe)](_0x166aae,_0x5b278e[_0x4fa305(0xc1)]);const _0x5d9457=buildConfigFromFlags(_0x166aae);await initGlobalEnvironment(_0x5d9457);const _0x3abcbe=createPipelineEnv(_0x5d9457,_0x166aae);_0x3abcbe[_0x4fa305(0xa8)]=_0x5b278e[_0x4fa305(0xa8)],await runCommand(_0x5b278e[_0x4fa305(0xbb)],_0x3abcbe);return;}if(_0x166aae[_0x4fa305(0xbd)]){const _0x7b2444=generateDynamicServiceHelp(_0x28936a);if(_0x7b2444){console[_0x4fa305(0xca)](_0x7b2444);return;}}const {waitUntilExit:_0x321424}=render(a0_0x82a25a(Help,{}));await _0x321424();return;}const _0xb457b1=getServiceEntry(_0x28936a);if(!_0x121cef){if(_0x166aae[_0x4fa305(0xbd)]){console[_0x4fa305(0xca)](generateServiceHelp(_0x28936a));return;}if(_0xb457b1['defaultCommand'])_0x121cef=_0xb457b1[_0x4fa305(0xad)];else{console[_0x4fa305(0xca)](generateServiceHelp(_0x28936a));return;}}const _0x2546f0=findDefinition(_0x28936a,_0x121cef);!_0x2546f0&&(console[_0x4fa305(0xca)](generateServiceHelp(_0x28936a)),handleError(CliErrors[_0x4fa305(0xab)](_0x28936a+'\x20'+_0x121cef)));if(_0x166aae[_0x4fa305(0xbd)]){console[_0x4fa305(0xca)](generateCommandHelp(_0x2546f0));return;}const _0x524dca=buildConfigFromFlags(_0x166aae);await initGlobalEnvironment(_0x524dca);const _0x19553d=createPipelineEnv(_0x524dca,_0x166aae);_0x19553d[_0x4fa305(0xa8)]=cli[_0x4fa305(0xc5)][_0x4fa305(0xb2)](0x2),await runCommand(_0x2546f0,_0x19553d);}function a0_0x1208(_0x2d4fde,_0x566e95){_0x2d4fde=_0x2d4fde-0xa7;const _0x72c7c0=a0_0x72c7();let _0x120848=_0x72c7c0[_0x2d4fde];return _0x120848;}function handleError(_0x4f7df2){const _0x4f1144=a0_0x1208;if(_0x4f7df2 instanceof CliError){_0x4f7df2['code']===_0x4f1144(0xb1)&&(process[_0x4f1144(0xb9)]['write'](_0x4f1144(0xc8)),process[_0x4f1144(0xb0)](0x0));console[_0x4f1144(0xa9)](_0x4f1144(0xb3)+_0x4f7df2[_0x4f1144(0xb5)]);if(_0x4f7df2[_0x4f1144(0xcb)])console[_0x4f1144(0xa9)](_0x4f1144(0xc4)+_0x4f7df2[_0x4f1144(0xcb)]);process[_0x4f1144(0xb0)](_0x4f7df2[_0x4f1144(0xbf)]);}isUserCancellation(_0x4f7df2)&&(process[_0x4f1144(0xb9)]['write'](_0x4f1144(0xc8)),process['exit'](0x0)),console['error']('Unexpected\x20error:',_0x4f7df2),process[_0x4f1144(0xb0)](0x1);}function isUserCancellation(_0x4bdf66){const _0x5439cc=a0_0x1208;if(!(_0x4bdf66 instanceof Error))return![];if(_0x4bdf66[_0x5439cc(0xba)]===_0x5439cc(0xae))return!![];if(_0x4bdf66[_0x5439cc(0xaf)]===_0x5439cc(0xce))return!![];if(_0x4bdf66['code']===_0x5439cc(0xc9))return!![];return![];}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const a1_0x20374b=a1_0x4990;function a1_0x4990(_0x174d35,_0x19d93f){_0x174d35=_0x174d35-0x94;const _0x2391dd=a1_0x2391();let _0x49906a=_0x2391dd[_0x174d35];return _0x49906a;}(function(_0x36d4ff,_0x5b9a49){const _0x57fb88=a1_0x4990,_0x412d2c=_0x36d4ff();while(!![]){try{const _0xa2e018=-parseInt(_0x57fb88(0xdd))/0x1*(parseInt(_0x57fb88(0xf4))/0x2)+parseInt(_0x57fb88(0xce))/0x3*(parseInt(_0x57fb88(0xf6))/0x4)+parseInt(_0x57fb88(0xac))/0x5*(-parseInt(_0x57fb88(0xec))/0x6)+parseInt(_0x57fb88(0xdc))/0x7*(parseInt(_0x57fb88(0xa8))/0x8)+-parseInt(_0x57fb88(0xcc))/0x9+parseInt(_0x57fb88(0xbc))/0xa+parseInt(_0x57fb88(0xab))/0xb*(parseInt(_0x57fb88(0x98))/0xc);if(_0xa2e018===_0x5b9a49)break;else _0x412d2c['push'](_0x412d2c['shift']());}catch(_0x40c91b){_0x412d2c['push'](_0x412d2c['shift']());}}}(a1_0x2391,0x1e77f));import{CliErrors}from'../../errors.js';const CATEGORY_FLAG={'name':'category','type':'string','description':a1_0x20374b(0xeb)},KEYWORD_FLAG={'name':a1_0x20374b(0x9e),'type':'string','description':'Search\x20docs\x20by\x20code,\x20summary,\x20path,\x20or\x20usage\x20text'},DOC_CODE_FLAG={'name':'code','type':'string','required':!![],'description':a1_0x20374b(0xf7)},DOCS=[{'code':a1_0x20374b(0xb3),'category':a1_0x20374b(0xf3),'title':a1_0x20374b(0x99),'method':a1_0x20374b(0x9a),'path':a1_0x20374b(0x105),'summary':'分页获取数据集列表','whenToUse':a1_0x20374b(0xb6),'pathParams':[],'queryParams':[],'bodySchema':a1_0x20374b(0xa2),'responseHighlights':[a1_0x20374b(0xe7),'paging.totalCount\x20gives\x20total\x20rows'],'examples':['lovrabet\x20dataset\x20list\x20--appcode\x20<appCode>\x20--format\x20compress'],'notes':['CLI\x20users\x20should\x20prefer\x20`lovrabet\x20dataset\x20list`\x20for\x20this\x20workflow.'],'markdown':[a1_0x20374b(0x9d),'','Use\x20this\x20API\x20or\x20`lovrabet\x20dataset\x20list`\x20to\x20discover\x20available\x20dataset\x20codes\x20before\x20reading\x20data.'][a1_0x20374b(0xc3)]('\x0a')},{'code':'dataset_detail','category':a1_0x20374b(0xf3),'title':a1_0x20374b(0xd2),'method':a1_0x20374b(0xc7),'path':a1_0x20374b(0xc2),'summary':a1_0x20374b(0xe4),'whenToUse':a1_0x20374b(0xf0),'pathParams':[],'queryParams':[{'name':a1_0x20374b(0xa9),'description':'32-character\x20dataset\x20code'}],'bodySchema':'None','responseHighlights':[a1_0x20374b(0xd7),a1_0x20374b(0xba),'operations\x20describes\x20runtime\x20APIs'],'examples':['lovrabet\x20dataset\x20detail\x20--code\x20<datasetCode>\x20--appcode\x20<appCode>'],'notes':[a1_0x20374b(0xd3)],'markdown':[a1_0x20374b(0xc5),'',a1_0x20374b(0xfa)]['join']('\x0a')},{'code':a1_0x20374b(0xc9),'category':a1_0x20374b(0xf3),'title':a1_0x20374b(0x102),'method':'POST','path':a1_0x20374b(0x109),'summary':'条件过滤查询数据','whenToUse':a1_0x20374b(0xc8),'pathParams':[{'name':a1_0x20374b(0x10a),'description':a1_0x20374b(0xea)},{'name':'datasetCode','description':a1_0x20374b(0x10b)}],'queryParams':[],'bodySchema':a1_0x20374b(0xc1),'responseHighlights':[a1_0x20374b(0xfd),a1_0x20374b(0xcb)],'examples':['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','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_0x20374b(0xb9),a1_0x20374b(0x95),'Verify\x20tableData\x20and\x20paging\x20before\x20treating\x20the\x20response\x20as\x20a\x20business\x20fact.',a1_0x20374b(0xad)],'markdown':[a1_0x20374b(0xe6),'',a1_0x20374b(0xbd)][a1_0x20374b(0xc3)]('\x0a')},{'code':a1_0x20374b(0xf2),'category':a1_0x20374b(0xf3),'title':a1_0x20374b(0xbb),'method':a1_0x20374b(0x9a),'path':a1_0x20374b(0xa7),'summary':a1_0x20374b(0xaf),'whenToUse':a1_0x20374b(0xa1),'pathParams':[{'name':a1_0x20374b(0x10a),'description':a1_0x20374b(0xea)},{'name':'datasetCode','description':a1_0x20374b(0x10b)}],'queryParams':[],'bodySchema':a1_0x20374b(0xbe),'responseHighlights':['result\x20rows\x20contain\x20aggregate\x20aliases',a1_0x20374b(0x10d)],'examples':[a1_0x20374b(0xa5)],'notes':[a1_0x20374b(0xd1),'`field`\x20is\x20accepted\x20as\x20a\x20deprecated\x20alias\x20for\x20`column`;\x20new\x20calls\x20should\x20use\x20`column`.'],'markdown':[a1_0x20374b(0x94),'',a1_0x20374b(0xb5)][a1_0x20374b(0xc3)]('\x0a')},{'code':a1_0x20374b(0xd8),'category':a1_0x20374b(0xf3),'title':a1_0x20374b(0x107),'method':a1_0x20374b(0x9a),'path':a1_0x20374b(0x101),'summary':a1_0x20374b(0x106),'whenToUse':a1_0x20374b(0xb2),'pathParams':[{'name':a1_0x20374b(0x10a),'description':'Current\x20app\x20code'},{'name':a1_0x20374b(0xee),'description':a1_0x20374b(0x10b)}],'queryParams':[],'bodySchema':a1_0x20374b(0x100),'responseHighlights':[a1_0x20374b(0xdf)],'examples':[a1_0x20374b(0xe3)],'notes':[a1_0x20374b(0xf8)],'markdown':'##\x20Get\x20one\x20dataset\x20record\x0a\x0aRead\x20one\x20record\x20by\x20id.'},{'code':'dataset_data_create','category':a1_0x20374b(0xf3),'title':a1_0x20374b(0x104),'method':a1_0x20374b(0x9a),'path':a1_0x20374b(0xae),'summary':a1_0x20374b(0xb4),'whenToUse':a1_0x20374b(0xe0),'pathParams':[{'name':a1_0x20374b(0x10a),'description':a1_0x20374b(0xea)},{'name':'datasetCode','description':a1_0x20374b(0x10b)}],'queryParams':[],'bodySchema':a1_0x20374b(0xf9),'responseHighlights':[a1_0x20374b(0xe5)],'examples':[a1_0x20374b(0xa0)],'notes':[a1_0x20374b(0x9f)],'markdown':a1_0x20374b(0xb7)},{'code':a1_0x20374b(0xf5),'category':'bf','title':'Get\x20BF\x20endpoint\x20function\x20contract','method':a1_0x20374b(0xc7),'path':a1_0x20374b(0xe8),'summary':a1_0x20374b(0xb1),'whenToUse':a1_0x20374b(0x103),'pathParams':[{'name':a1_0x20374b(0x10a),'description':a1_0x20374b(0xea)},{'name':'functionName','description':a1_0x20374b(0xa3)}],'queryParams':[],'bodySchema':'None','responseHighlights':['CLI\x20returns\x20appCode/functionName/description/version/gmtModified'],'examples':['lovrabet\x20bff\x20detail\x20--name\x20<functionName>'],'notes':[a1_0x20374b(0xe1)],'markdown':'##\x20Get\x20BF\x20endpoint\x20function\x20contract\x0a\x0aInspect\x20one\x20known\x20endpoint\x20function\x20through\x20the\x20AK-authenticated\x20exact\x20detail\x20API.'},{'code':a1_0x20374b(0xfe),'category':'bf','title':'Execute\x20BF\x20endpoint\x20function','method':'POST','path':a1_0x20374b(0xaa),'summary':a1_0x20374b(0x96),'whenToUse':'已经确认目标\x20BF\x20的\x20functionName,且需要实际调用该\x20ENDPOINT\x20函数完成业务操作时使用','pathParams':[{'name':a1_0x20374b(0x10a),'description':a1_0x20374b(0xea)},{'name':a1_0x20374b(0x108),'description':a1_0x20374b(0xb8)}],'queryParams':[],'bodySchema':'{\x22param\x22:\x22value\x22}','responseHighlights':[a1_0x20374b(0x97)],'examples':[a1_0x20374b(0xa6)],'notes':[a1_0x20374b(0xc0)],'markdown':a1_0x20374b(0xe9)},{'code':'custom_sql_execute','category':a1_0x20374b(0xf1),'title':a1_0x20374b(0xc4),'method':'POST','path':a1_0x20374b(0xd9),'summary':a1_0x20374b(0xcf),'whenToUse':a1_0x20374b(0x9c),'pathParams':[],'queryParams':[],'bodySchema':a1_0x20374b(0xda),'responseHighlights':['Returns\x20SQL\x20execution\x20payload'],'examples':[a1_0x20374b(0xd0)],'notes':['Use\x20`lovrabet\x20sql\x20detail`\x20before\x20execution.'],'markdown':a1_0x20374b(0xef)}];function entrySummary(_0x1f0adb){const _0x28d4c8=a1_0x20374b;return{'code':_0x1f0adb['code'],'category':_0x1f0adb[_0x28d4c8(0xde)],'method':_0x1f0adb[_0x28d4c8(0xcd)],'path':_0x1f0adb[_0x28d4c8(0xbf)],'summary':_0x1f0adb[_0x28d4c8(0xca)],'whenToUse':_0x1f0adb[_0x28d4c8(0xfb)]};}export function listApiDocEntries(_0x162e7d={}){const _0x2a438f=a1_0x20374b,_0x364e20=String(_0x162e7d[_0x2a438f(0xde)]||'')[_0x2a438f(0xd5)](),_0xeff698=String(_0x162e7d[_0x2a438f(0x9e)]||'')[_0x2a438f(0xd5)]()['toLowerCase']();return DOCS['filter'](_0x4af2b9=>{const _0x2b635d=_0x2a438f;if(_0x364e20&&_0x4af2b9[_0x2b635d(0xde)]!==_0x364e20)return![];if(!_0xeff698)return!![];return[_0x4af2b9['code'],_0x4af2b9[_0x2b635d(0xde)],_0x4af2b9[_0x2b635d(0xcd)],_0x4af2b9[_0x2b635d(0xbf)],_0x4af2b9[_0x2b635d(0xca)],_0x4af2b9['whenToUse'],_0x4af2b9[_0x2b635d(0x10c)]]['join']('\x20')[_0x2b635d(0xe2)]()[_0x2b635d(0xd4)](_0xeff698);})[_0x2a438f(0xdb)](entrySummary);}function a1_0x2391(){const _0x4e7772=['whenToUse','detail','tableData\x20contains\x20records','bf_execute','length','{\x22id\x22:123}','/api/{appCode}/{datasetCode}/getOne','Filter\x20dataset\x20data','已经从用户、平台\x20UI\x20或前序上下文确认函数名,需要查看该\x20ENDPOINT\x20的运行态元信息时使用','Create\x20dataset\x20record','/api/dataset/get-dataset-list-by-app-code','查询单条数据','Get\x20one\x20dataset\x20record','functionName','/api/{appCode}/{datasetCode}/filter','appCode','32-character\x20dataset\x20code','title','where\x20filters\x20before\x20aggregation','##\x20Aggregate\x20dataset\x20data','For\x20the\x20next\x20page,\x20keep\x20where/select/orderBy/pageSize\x20unchanged\x20and\x20increment\x20only\x20currentPage,\x20which\x20starts\x20at\x201.','执行指定\x20BF\x20函数','Returns\x20script\x20business\x20payload','1068wIkmmf','List\x20datasets','POST','API\x20doc\x20code\x20not\x20found:\x20','已经确认目标\x20sqlCode\x20存在,并需要实际执行该自定义\x20SQL\x20时使用','##\x20List\x20datasets','keyword','This\x20is\x20a\x20write\x20operation;\x20use\x20dry-run\x20when\x20available\x20and\x20safe\x20fixtures\x20for\x20smoke\x20tests.','lovrabet\x20data\x20create\x20--code\x20<datasetCode>\x20--params\x20\x27{\x22name\x22:\x22demo\x22}\x27','需要按\x20groupBy\x20分组并做\x20count、sum、avg、max、min\x20等聚合统计时使用','{\x22appCode\x22:\x22app-aa63b188\x22,\x22currentPage\x22:1,\x22pageSize\x22:100}','Exact\x20endpoint\x20function\x20name','List\x20available\x20runtime\x20API\x20documentation\x20entries','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','lovrabet\x20bff\x20exec\x20--name\x20<functionName>\x20--params\x20\x27{}\x27','/api/{appCode}/{datasetCode}/aggregate','8AFjHfF','code','/api/endpoint/{appCode}/{functionName}','14938CGNJUw','11885mPviFQ','Use\x20read-only\x20data\x20commands\x20before\x20writing\x20Artifacts\x20that\x20display\x20real\x20data.','/api/{appCode}/{datasetCode}/create','聚合查询数据集数据','read','按应用和函数名精确获取\x20BF\x20运行契约','已经知道记录\x20id,需要按数据集读取单条业务数据时使用','dataset_list','创建数据','Aggregate\x20supports\x20COUNT,\x20SUM,\x20AVG,\x20MAX,\x20and\x20MIN\x20definitions\x20in\x20the\x20`aggregate`\x20array.','需要按\x20appCode\x20分页获取运行态数据集列表,并优先收敛可用\x20datasetCode\x20时使用','##\x20Create\x20dataset\x20record\x0a\x0aCreate\x20one\x20data\x20record\x20in\x20a\x20dataset.','Endpoint\x20function\x20name','where,\x20select,\x20orderBy,\x20currentPage,\x20and\x20pageSize\x20belong\x20inside\x20one\x20--params\x20JSON\x20object;\x20they\x20are\x20not\x20standalone\x20CLI\x20flags.','relations\x20contains\x20the\x20object-shaped\x20API\x20relations\x20value\x20when\x20returned','Aggregate\x20dataset\x20data','969470CHRIHX','Use\x20`where`,\x20`select`,\x20`orderBy`,\x20`currentPage`,\x20and\x20`pageSize`\x20to\x20inspect\x20live\x20data\x20shape.','{\x22aggregate\x22:[{\x22column\x22:\x20\x22id\x22,\x22type\x22:\x22COUNT\x22,\x22alias\x22:\x22cnt\x22}],\x22groupBy\x22:[]}','path','Script\x20behavior\x20may\x20have\x20side\x20effects;\x20inspect\x20detail\x20first.','{\x22where\x22:{},\x22currentPage\x22:1,\x22pageSize\x22:20}','/api/dataset/getOneByCode?code={datasetCode}','join','Execute\x20custom\x20SQL','##\x20Dataset\x20detail','find','GET','需要携带\x20where、orderBy、分页等条件读取业务数据时使用','dataset_data_filter','summary','paging\x20contains\x20pagination','2235474VajJtB','method','6wKlEcQ','执行自定义\x20SQL','lovrabet\x20sql\x20exec\x20--sqlcode\x20<sqlCode>\x20--params\x20\x27{}\x27','Use\x20`having`\x20only\x20for\x20post-aggregation\x20filters.','Dataset\x20detail','If\x20SDK\x20usage\x20is\x20needed,\x20follow\x20with\x20`lovrabet\x20dataset\x20sdk-doc\x20--code\x20<datasetCode>`.','includes','trim','Show\x20runtime\x20API\x20documentation\x20by\x20code','fields/properties\x20describe\x20data\x20shape','dataset_data_get_one','/api/custom/executeSql','{\x22appCode\x22:\x22app-aa63b188\x22,\x22sqlCode\x22:\x22xxxxxxxx-xxxxxxxx\x22,\x22params\x22:{}}','map','1605989iWpUrX','39147EaBkus','category','Returns\x20one\x20matching\x20business\x20record','需要向指定数据集新增一条业务数据时使用','This\x20is\x20an\x20exact\x20lookup\x20by\x20appCode\x20+\x20functionName.\x20The\x20CLI\x20does\x20not\x20enumerate\x20BFF\x20functions\x20or\x20expose\x20platform-only\x20fields.','toLowerCase','lovrabet\x20data\x20getOne\x20--code\x20<datasetCode>\x20--params\x20\x27{\x22id\x22:123}\x27','获取数据集详情','Returns\x20the\x20created\x20record\x20or\x20backend\x20operation\x20result','##\x20Filter\x20dataset\x20data','tableData\x20contains\x20dataset\x20id/code/name','/client/bff/endpoint/{appCode}/{functionName}','##\x20Execute\x20BF\x20endpoint\x20function\x0a\x0aExecute\x20a\x20known\x20endpoint\x20script.','Current\x20app\x20code','Filter\x20docs\x20by\x20category,\x20for\x20example\x20dataset','258DJxSus','str','datasetCode','##\x20Execute\x20custom\x20SQL\x0a\x0aExecute\x20a\x20configured\x20SQL\x20script\x20by\x20sqlCode.','需要按数据集\x20code\x20获取字段、表信息、关联关系(relations)或操作定义时使用','custom_sql','dataset_data_aggregate','dataset','8bAuovw','bf_detail','369496bUUgmq','API\x20doc\x20code,\x20for\x20example\x20dataset_list','Prefer\x20`filter`\x20when\x20the\x20record\x20id\x20is\x20unknown.','{\x22fieldName\x22:\x22value\x22}','Inspect\x20field\x20names,\x20relations,\x20and\x20operation\x20metadata\x20for\x20a\x20known\x20dataset\x20code.'];a1_0x2391=function(){return _0x4e7772;};return a1_0x2391();}export function getApiDocDetail(_0x450b5a){const _0x1cdc71=a1_0x20374b,_0x47fe74=DOCS[_0x1cdc71(0xc6)](_0x15768a=>_0x15768a[_0x1cdc71(0xa9)]===_0x450b5a);if(!_0x47fe74)throw CliErrors['validation'](_0x1cdc71(0x9b)+_0x450b5a);return{..._0x47fe74};}const apiDocList={'service':'api-doc','command':'list','description':a1_0x20374b(0xa4),'risk':a1_0x20374b(0xb0),'requiresAppCode':![],'flags':[CATEGORY_FLAG,KEYWORD_FLAG],async 'execute'(_0x2c8507){const _0x33240c=a1_0x20374b,_0x3123d2=listApiDocEntries({'category':_0x2c8507['str'](_0x33240c(0xde)),'keyword':_0x2c8507[_0x33240c(0xed)](_0x33240c(0x9e))});return{'ok':!![],'data':{'total':_0x3123d2[_0x33240c(0xff)],'items':_0x3123d2}};}},apiDocDetail={'service':'api-doc','command':a1_0x20374b(0xfc),'description':a1_0x20374b(0xd6),'risk':a1_0x20374b(0xb0),'requiresAppCode':![],'flags':[DOC_CODE_FLAG],async 'execute'(_0x3a01cc){const _0x1a3adc=a1_0x20374b;return{'ok':!![],'data':getApiDocDetail(_0x3a01cc[_0x1a3adc(0xed)]('code'))};}};export const apiDocDefinitions=[apiDocList,apiDocDetail];
|
|
1
|
+
const a1_0x44fe7e=a1_0x135a;function a1_0x135a(_0x38e43f,_0x2a17b7){_0x38e43f=_0x38e43f-0x6e;const _0x319eb9=a1_0x319e();let _0x135a8e=_0x319eb9[_0x38e43f];return _0x135a8e;}(function(_0x207c1d,_0x21a951){const _0x29c5c2=a1_0x135a,_0x5e547d=_0x207c1d();while(!![]){try{const _0x388004=-parseInt(_0x29c5c2(0xe1))/0x1+parseInt(_0x29c5c2(0xc1))/0x2*(-parseInt(_0x29c5c2(0x7b))/0x3)+-parseInt(_0x29c5c2(0x86))/0x4+parseInt(_0x29c5c2(0xdf))/0x5*(parseInt(_0x29c5c2(0x9b))/0x6)+parseInt(_0x29c5c2(0x7a))/0x7*(parseInt(_0x29c5c2(0xb6))/0x8)+-parseInt(_0x29c5c2(0xc0))/0x9*(-parseInt(_0x29c5c2(0xc9))/0xa)+parseInt(_0x29c5c2(0xa4))/0xb;if(_0x388004===_0x21a951)break;else _0x5e547d['push'](_0x5e547d['shift']());}catch(_0x2c05bf){_0x5e547d['push'](_0x5e547d['shift']());}}}(a1_0x319e,0x32348));function a1_0x319e(){const _0x4a1b68=['32575gXuEEC','已经确认目标\x20BF\x20的\x20functionName,且需要实际调用该\x20ENDPOINT\x20函数完成业务操作时使用','167828zrmDWB','lovrabet\x20data\x20getOne\x20--code\x20<datasetCode>\x20--params\x20\x27{\x22id\x22:123}\x27','{\x22aggregate\x22:[{\x22column\x22:\x20\x22id\x22,\x22type\x22:\x22COUNT\x22,\x22alias\x22:\x22cnt\x22}],\x22groupBy\x22:[]}','This\x20is\x20an\x20exact\x20lookup\x20by\x20appCode\x20+\x20functionName.\x20The\x20CLI\x20does\x20not\x20enumerate\x20BFF\x20functions\x20or\x20expose\x20platform-only\x20fields.','If\x20SDK\x20usage\x20is\x20needed,\x20follow\x20with\x20`lovrabet\x20dataset\x20sdk-doc\x20--code\x20<datasetCode>`.','{\x22where\x22:{},\x22currentPage\x22:1,\x22pageSize\x22:20}','paging.totalCount\x20gives\x20total\x20rows','获取数据集详情','Use\x20`where`,\x20`select`,\x20`orderBy`,\x20`currentPage`,\x20and\x20`pageSize`\x20to\x20inspect\x20live\x20data\x20shape.','method','Execute\x20BF\x20endpoint\x20function','appCode','str','lovrabet\x20dataset\x20detail\x20--code\x20<datasetCode>\x20--appcode\x20<appCode>','##\x20Create\x20dataset\x20record\x0a\x0aCreate\x20one\x20data\x20record\x20in\x20a\x20dataset.','7InYwAH','17889HmRsTa','##\x20Get\x20one\x20dataset\x20record\x0a\x0aRead\x20one\x20record\x20by\x20id.','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','查询单条数据','datasetCode','/api/{appCode}/{datasetCode}/getOne','执行自定义\x20SQL','/api/dataset/get-dataset-list-by-app-code','Get\x20BF\x20endpoint\x20function\x20contract','List\x20available\x20runtime\x20API\x20documentation\x20entries','##\x20Dataset\x20detail','55672uTxwKN','whenToUse','List\x20datasets','This\x20is\x20a\x20write\x20operation;\x20use\x20dry-run\x20when\x20available\x20and\x20safe\x20fixtures\x20for\x20smoke\x20tests.','tableData\x20contains\x20dataset\x20id/code/name','32-character\x20dataset\x20code','validation','bf_execute','dataset_data_aggregate','code','filter','custom_sql','dataset_data_filter','Returns\x20script\x20business\x20payload','Returns\x20one\x20matching\x20business\x20record','Inspect\x20field\x20names,\x20relations,\x20and\x20operation\x20metadata\x20for\x20a\x20known\x20dataset\x20code.','join','Script\x20behavior\x20may\x20have\x20side\x20effects;\x20inspect\x20detail\x20first.','Returns\x20SQL\x20execution\x20payload','##\x20Aggregate\x20dataset\x20data','tableData\x20contains\x20records','156evoVVl','/api/endpoint/{appCode}/{functionName}','{\x22fieldName\x22:\x22value\x22}','POST','Dataset\x20detail','##\x20List\x20datasets','relations\x20contains\x20the\x20object-shaped\x20API\x20relations\x20value\x20when\x20returned','title','{\x22appCode\x22:\x22app-aa63b188\x22,\x22sqlCode\x22:\x22xxxxxxxx-xxxxxxxx\x22,\x22params\x22:{}}','893926xAJGKy','toLowerCase','聚合查询数据集数据','Use\x20this\x20API\x20or\x20`lovrabet\x20dataset\x20list`\x20to\x20discover\x20available\x20dataset\x20codes\x20before\x20reading\x20data.','按应用和函数名精确获取\x20BF\x20运行契约','detail','需要携带\x20where、orderBy、分页等条件读取业务数据时使用','For\x20the\x20next\x20page,\x20keep\x20where/select/orderBy/pageSize\x20unchanged\x20and\x20increment\x20only\x20currentPage,\x20which\x20starts\x20at\x201.','keyword','Current\x20app\x20code','lovrabet\x20sql\x20exec\x20--sqlcode\x20<sqlCode>\x20--params\x20\x27{}\x27','Exact\x20endpoint\x20function\x20name','path','分页获取数据集列表','创建数据','{\x22id\x22:123}','/api/custom/executeSql','paging\x20contains\x20pagination','383312Makvsi','find','operations\x20describes\x20runtime\x20APIs','API\x20doc\x20code\x20not\x20found:\x20','GET','dataset_data_get_one','string','where,\x20select,\x20orderBy,\x20currentPage,\x20and\x20pageSize\x20belong\x20inside\x20one\x20--params\x20JSON\x20object;\x20they\x20are\x20not\x20standalone\x20CLI\x20flags.','Aggregate\x20supports\x20COUNT,\x20SUM,\x20AVG,\x20MAX,\x20and\x20MIN\x20definitions\x20in\x20the\x20`aggregate`\x20array.','{\x22appCode\x22:\x22app-aa63b188\x22,\x22currentPage\x22:1,\x22pageSize\x22:100}','18HGsrrx','4bSvTeD','where\x20filters\x20before\x20aggregation','API\x20doc\x20code,\x20for\x20example\x20dataset_list','Returns\x20the\x20created\x20record\x20or\x20backend\x20operation\x20result','Search\x20docs\x20by\x20code,\x20summary,\x20path,\x20or\x20usage\x20text','functionName','`field`\x20is\x20accepted\x20as\x20a\x20deprecated\x20alias\x20for\x20`column`;\x20new\x20calls\x20should\x20use\x20`column`.','category','503710suExZB','/api/{appCode}/{datasetCode}/create','dataset','Execute\x20custom\x20SQL','执行指定\x20BF\x20函数','lovrabet\x20dataset\x20list\x20--appcode\x20<appCode>\x20--format\x20compress','已经从用户、平台\x20UI\x20或前序上下文确认函数名,需要查看该\x20ENDPOINT\x20的运行态元信息时使用','api-doc','CLI\x20users\x20should\x20prefer\x20`lovrabet\x20dataset\x20list`\x20for\x20this\x20workflow.','Prefer\x20`filter`\x20when\x20the\x20record\x20id\x20is\x20unknown.','summary','map','None','read','trim','lovrabet\x20bff\x20detail\x20--name\x20<functionName>','Use\x20`having`\x20only\x20for\x20post-aggregation\x20filters.','##\x20Get\x20BF\x20endpoint\x20function\x20contract\x0a\x0aInspect\x20one\x20known\x20endpoint\x20function\x20through\x20the\x20AK-authenticated\x20exact\x20detail\x20API.','已经确认目标\x20sqlCode\x20存在,并需要实际执行该自定义\x20SQL\x20时使用','Verify\x20tableData\x20and\x20paging\x20before\x20treating\x20the\x20response\x20as\x20a\x20business\x20fact.','dataset_detail','lovrabet\x20data\x20filter\x20--code\x20<datasetCode>\x20--params\x20\x27{\x22where\x22:{\x22status\x22:{\x22$eq\x22:\x22active\x22}},\x22orderBy\x22:[{\x22id\x22:\x22asc\x22}],\x22currentPage\x22:1,\x22pageSize\x22:20}\x27'];a1_0x319e=function(){return _0x4a1b68;};return a1_0x319e();}import{CliErrors}from'../../errors.js';const CATEGORY_FLAG={'name':a1_0x44fe7e(0xc8),'type':a1_0x44fe7e(0xbc),'description':'Filter\x20docs\x20by\x20category,\x20for\x20example\x20dataset'},KEYWORD_FLAG={'name':a1_0x44fe7e(0xac),'type':'string','description':a1_0x44fe7e(0xc5)},DOC_CODE_FLAG={'name':a1_0x44fe7e(0x8f),'type':a1_0x44fe7e(0xbc),'required':!![],'description':a1_0x44fe7e(0xc3)},DOCS=[{'code':'dataset_list','category':a1_0x44fe7e(0xcb),'title':a1_0x44fe7e(0x88),'method':a1_0x44fe7e(0x9e),'path':a1_0x44fe7e(0x82),'summary':a1_0x44fe7e(0xb1),'whenToUse':'需要按\x20appCode\x20分页获取运行态数据集列表,并优先收敛可用\x20datasetCode\x20时使用','pathParams':[],'queryParams':[],'bodySchema':a1_0x44fe7e(0xbf),'responseHighlights':[a1_0x44fe7e(0x8a),a1_0x44fe7e(0x71)],'examples':[a1_0x44fe7e(0xce)],'notes':[a1_0x44fe7e(0xd1)],'markdown':[a1_0x44fe7e(0xa0),'',a1_0x44fe7e(0xa7)]['join']('\x0a')},{'code':a1_0x44fe7e(0xdd),'category':a1_0x44fe7e(0xcb),'title':a1_0x44fe7e(0x9f),'method':a1_0x44fe7e(0xba),'path':'/api/dataset/getOneByCode?code={datasetCode}','summary':a1_0x44fe7e(0x72),'whenToUse':'需要按数据集\x20code\x20获取字段、表信息、关联关系(relations)或操作定义时使用','pathParams':[],'queryParams':[{'name':a1_0x44fe7e(0x8f),'description':a1_0x44fe7e(0x8b)}],'bodySchema':a1_0x44fe7e(0xd5),'responseHighlights':['fields/properties\x20describe\x20data\x20shape',a1_0x44fe7e(0xa1),a1_0x44fe7e(0xb8)],'examples':[a1_0x44fe7e(0x78)],'notes':[a1_0x44fe7e(0x6f)],'markdown':[a1_0x44fe7e(0x85),'',a1_0x44fe7e(0x95)][a1_0x44fe7e(0x96)]('\x0a')},{'code':a1_0x44fe7e(0x92),'category':'dataset','title':'Filter\x20dataset\x20data','method':a1_0x44fe7e(0x9e),'path':'/api/{appCode}/{datasetCode}/filter','summary':'条件过滤查询数据','whenToUse':a1_0x44fe7e(0xaa),'pathParams':[{'name':a1_0x44fe7e(0x76),'description':a1_0x44fe7e(0xad)},{'name':a1_0x44fe7e(0x7f),'description':'32-character\x20dataset\x20code'}],'queryParams':[],'bodySchema':a1_0x44fe7e(0x70),'responseHighlights':[a1_0x44fe7e(0x9a),a1_0x44fe7e(0xb5)],'examples':[a1_0x44fe7e(0xde),a1_0x44fe7e(0x7d)],'notes':[a1_0x44fe7e(0xbd),a1_0x44fe7e(0xab),a1_0x44fe7e(0xdc),'Use\x20read-only\x20data\x20commands\x20before\x20writing\x20Artifacts\x20that\x20display\x20real\x20data.'],'markdown':['##\x20Filter\x20dataset\x20data','',a1_0x44fe7e(0x73)][a1_0x44fe7e(0x96)]('\x0a')},{'code':a1_0x44fe7e(0x8e),'category':'dataset','title':'Aggregate\x20dataset\x20data','method':a1_0x44fe7e(0x9e),'path':'/api/{appCode}/{datasetCode}/aggregate','summary':a1_0x44fe7e(0xa6),'whenToUse':'需要按\x20groupBy\x20分组并做\x20count、sum、avg、max、min\x20等聚合统计时使用','pathParams':[{'name':'appCode','description':a1_0x44fe7e(0xad)},{'name':'datasetCode','description':a1_0x44fe7e(0x8b)}],'queryParams':[],'bodySchema':a1_0x44fe7e(0xe3),'responseHighlights':['result\x20rows\x20contain\x20aggregate\x20aliases',a1_0x44fe7e(0xc2)],'examples':['lovrabet\x20data\x20aggregate\x20--code\x20<datasetCode>\x20--params\x20\x27{\x22aggregate\x22:[{\x22column\x22:\x22id\x22,\x22type\x22:\x22COUNT\x22,\x22alias\x22:\x22cnt\x22}]}\x27'],'notes':[a1_0x44fe7e(0xd9),a1_0x44fe7e(0xc7)],'markdown':[a1_0x44fe7e(0x99),'',a1_0x44fe7e(0xbe)][a1_0x44fe7e(0x96)]('\x0a')},{'code':a1_0x44fe7e(0xbb),'category':'dataset','title':'Get\x20one\x20dataset\x20record','method':a1_0x44fe7e(0x9e),'path':a1_0x44fe7e(0x80),'summary':a1_0x44fe7e(0x7e),'whenToUse':'已经知道记录\x20id,需要按数据集读取单条业务数据时使用','pathParams':[{'name':a1_0x44fe7e(0x76),'description':a1_0x44fe7e(0xad)},{'name':a1_0x44fe7e(0x7f),'description':a1_0x44fe7e(0x8b)}],'queryParams':[],'bodySchema':a1_0x44fe7e(0xb3),'responseHighlights':[a1_0x44fe7e(0x94)],'examples':[a1_0x44fe7e(0xe2)],'notes':[a1_0x44fe7e(0xd2)],'markdown':a1_0x44fe7e(0x7c)},{'code':'dataset_data_create','category':'dataset','title':'Create\x20dataset\x20record','method':a1_0x44fe7e(0x9e),'path':a1_0x44fe7e(0xca),'summary':a1_0x44fe7e(0xb2),'whenToUse':'需要向指定数据集新增一条业务数据时使用','pathParams':[{'name':a1_0x44fe7e(0x76),'description':a1_0x44fe7e(0xad)},{'name':a1_0x44fe7e(0x7f),'description':'32-character\x20dataset\x20code'}],'queryParams':[],'bodySchema':a1_0x44fe7e(0x9d),'responseHighlights':[a1_0x44fe7e(0xc4)],'examples':['lovrabet\x20data\x20create\x20--code\x20<datasetCode>\x20--params\x20\x27{\x22name\x22:\x22demo\x22}\x27'],'notes':[a1_0x44fe7e(0x89)],'markdown':a1_0x44fe7e(0x79)},{'code':'bf_detail','category':'bf','title':a1_0x44fe7e(0x83),'method':'GET','path':'/client/bff/endpoint/{appCode}/{functionName}','summary':a1_0x44fe7e(0xa8),'whenToUse':a1_0x44fe7e(0xcf),'pathParams':[{'name':a1_0x44fe7e(0x76),'description':a1_0x44fe7e(0xad)},{'name':'functionName','description':a1_0x44fe7e(0xaf)}],'queryParams':[],'bodySchema':a1_0x44fe7e(0xd5),'responseHighlights':['CLI\x20returns\x20appCode/functionName/description/version/gmtModified'],'examples':[a1_0x44fe7e(0xd8)],'notes':[a1_0x44fe7e(0x6e)],'markdown':a1_0x44fe7e(0xda)},{'code':a1_0x44fe7e(0x8d),'category':'bf','title':a1_0x44fe7e(0x75),'method':a1_0x44fe7e(0x9e),'path':a1_0x44fe7e(0x9c),'summary':a1_0x44fe7e(0xcd),'whenToUse':a1_0x44fe7e(0xe0),'pathParams':[{'name':'appCode','description':a1_0x44fe7e(0xad)},{'name':a1_0x44fe7e(0xc6),'description':'Endpoint\x20function\x20name'}],'queryParams':[],'bodySchema':'{\x22param\x22:\x22value\x22}','responseHighlights':[a1_0x44fe7e(0x93)],'examples':['lovrabet\x20bff\x20exec\x20--name\x20<functionName>\x20--params\x20\x27{}\x27'],'notes':[a1_0x44fe7e(0x97)],'markdown':'##\x20Execute\x20BF\x20endpoint\x20function\x0a\x0aExecute\x20a\x20known\x20endpoint\x20script.'},{'code':'custom_sql_execute','category':a1_0x44fe7e(0x91),'title':a1_0x44fe7e(0xcc),'method':a1_0x44fe7e(0x9e),'path':a1_0x44fe7e(0xb4),'summary':a1_0x44fe7e(0x81),'whenToUse':a1_0x44fe7e(0xdb),'pathParams':[],'queryParams':[],'bodySchema':a1_0x44fe7e(0xa3),'responseHighlights':[a1_0x44fe7e(0x98)],'examples':[a1_0x44fe7e(0xae)],'notes':['Use\x20`lovrabet\x20sql\x20detail`\x20before\x20execution.'],'markdown':'##\x20Execute\x20custom\x20SQL\x0a\x0aExecute\x20a\x20configured\x20SQL\x20script\x20by\x20sqlCode.'}];function entrySummary(_0x257248){const _0x48bf33=a1_0x44fe7e;return{'code':_0x257248[_0x48bf33(0x8f)],'category':_0x257248['category'],'method':_0x257248[_0x48bf33(0x74)],'path':_0x257248[_0x48bf33(0xb0)],'summary':_0x257248[_0x48bf33(0xd3)],'whenToUse':_0x257248[_0x48bf33(0x87)]};}export function listApiDocEntries(_0x4cdd9c={}){const _0x37c230=a1_0x44fe7e,_0x5df399=String(_0x4cdd9c[_0x37c230(0xc8)]||'')[_0x37c230(0xd7)](),_0x1c8bfb=String(_0x4cdd9c[_0x37c230(0xac)]||'')[_0x37c230(0xd7)]()[_0x37c230(0xa5)]();return DOCS[_0x37c230(0x90)](_0x1d727a=>{const _0x442b76=_0x37c230;if(_0x5df399&&_0x1d727a['category']!==_0x5df399)return![];if(!_0x1c8bfb)return!![];return[_0x1d727a['code'],_0x1d727a[_0x442b76(0xc8)],_0x1d727a[_0x442b76(0x74)],_0x1d727a[_0x442b76(0xb0)],_0x1d727a['summary'],_0x1d727a[_0x442b76(0x87)],_0x1d727a[_0x442b76(0xa2)]][_0x442b76(0x96)]('\x20')['toLowerCase']()['includes'](_0x1c8bfb);})[_0x37c230(0xd4)](entrySummary);}export function getApiDocDetail(_0x5a323a){const _0x263263=a1_0x44fe7e,_0x436b00=DOCS[_0x263263(0xb7)](_0x1ff97c=>_0x1ff97c[_0x263263(0x8f)]===_0x5a323a);if(!_0x436b00)throw CliErrors[_0x263263(0x8c)](_0x263263(0xb9)+_0x5a323a);return{..._0x436b00};}const apiDocList={'service':'api-doc','command':'list','description':a1_0x44fe7e(0x84),'risk':a1_0x44fe7e(0xd6),'requiresAppCode':![],'flags':[CATEGORY_FLAG,KEYWORD_FLAG],async 'execute'(_0xa1ff50){const _0x16bc2b=a1_0x44fe7e,_0x4a71ca=listApiDocEntries({'category':_0xa1ff50['str'](_0x16bc2b(0xc8)),'keyword':_0xa1ff50[_0x16bc2b(0x77)](_0x16bc2b(0xac))});return{'ok':!![],'data':{'total':_0x4a71ca['length'],'items':_0x4a71ca}};}},apiDocDetail={'service':a1_0x44fe7e(0xd0),'command':a1_0x44fe7e(0xa9),'description':'Show\x20runtime\x20API\x20documentation\x20by\x20code','risk':a1_0x44fe7e(0xd6),'requiresAppCode':![],'flags':[DOC_CODE_FLAG],async 'execute'(_0x5c9d6a){const _0x55ee30=a1_0x44fe7e;return{'ok':!![],'data':getApiDocDetail(_0x5c9d6a['str'](_0x55ee30(0x8f)))};}};export const apiDocDefinitions=[apiDocList,apiDocDetail];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
function a2_0x472d(){const _0x428861=['4AUPAyb','ak_','534250zRWWnF','slice','trim','4023IfVlYT','code','items','2315537krUxTq','EACCES','stringify','.tmp','33bAuGNf','543890devxMm','30510KCMajK','isArray','update','2529976nIHtCE','digest','24IOVBJk','homeDirName','EPERM','EXDEV','utf8','sha256','appName','4678323ellowl','8318868oDKdQx','find','2VijVeE','appCode'];a2_0x472d=function(){return _0x428861;};return a2_0x472d();}(function(_0x337f95,_0x12eb3a){const _0x5a41e1=a2_0xe7a6,_0x48642a=_0x337f95();while(!![]){try{const _0x4eb8a7=parseInt(_0x5a41e1(0x12d))/0x1+-parseInt(_0x5a41e1(0x129))/0x2*(parseInt(_0x5a41e1(0x145))/0x3)+parseInt(_0x5a41e1(0x12b))/0x4*(parseInt(_0x5a41e1(0x138))/0x5)+parseInt(_0x5a41e1(0x13e))/0x6*(-parseInt(_0x5a41e1(0x133))/0x7)+-parseInt(_0x5a41e1(0x13c))/0x8+parseInt(_0x5a41e1(0x130))/0x9*(parseInt(_0x5a41e1(0x139))/0xa)+parseInt(_0x5a41e1(0x137))/0xb*(parseInt(_0x5a41e1(0x127))/0xc);if(_0x4eb8a7===_0x12eb3a)break;else _0x48642a['push'](_0x48642a['shift']());}catch(_0x36545b){_0x48642a['push'](_0x48642a['shift']());}}}(a2_0x472d,0xd8b8a));import{createHash}from'node:crypto';import{existsSync,mkdirSync,readFileSync,renameSync,unlinkSync,writeFileSync}from'node:fs';function a2_0xe7a6(_0x590a3e,_0x25b9e9){_0x590a3e=_0x590a3e-0x127;const _0x472d81=a2_0x472d();let _0xe7a627=_0x472d81[_0x590a3e];return _0xe7a627;}import{homedir}from'node:os';import{dirname,resolve}from'node:path';import{PRODUCT_CONFIG}from'../../constant/product.js';import{isRuntimeAccessibleApp}from'../../commands/app/eligibility.js';export function fingerprintAccessKey(_0x476173){const _0x1208b7=a2_0xe7a6,_0x2c9c85=_0x476173[_0x1208b7(0x12f)](),_0x263750=_0x2c9c85['slice'](-0x6)||'unknown',_0x324c16=createHash(_0x1208b7(0x143))[_0x1208b7(0x13b)](_0x2c9c85)[_0x1208b7(0x13d)]('hex')[_0x1208b7(0x12e)](0x0,0xc);return _0x1208b7(0x12c)+_0x263750+'_'+_0x324c16;}export function getAppCacheFilePath(_0x4341f8,_0x2856da){const _0x5c5669=a2_0xe7a6;return resolve(homedir(),PRODUCT_CONFIG[_0x5c5669(0x13f)],'cache',_0x4341f8,fingerprintAccessKey(_0x2856da),'my-apps.json');}export function readCachedAppList(_0x35388e,_0xf39d2a){const _0x110480=a2_0xe7a6;if(!_0xf39d2a?.[_0x110480(0x12f)]())return null;const _0x4e6c6e=getAppCacheFilePath(_0x35388e,_0xf39d2a);if(!existsSync(_0x4e6c6e))return null;try{const _0x4da2a4=readFileSync(_0x4e6c6e,_0x110480(0x142));if(!_0x4da2a4[_0x110480(0x12f)]())return null;const _0x1e4854=JSON['parse'](_0x4da2a4);if(!Array[_0x110480(0x13a)](_0x1e4854['items']))return null;return _0x1e4854;}catch{return null;}}export function writeCachedAppList(_0x391d4c,_0x339651,_0x1b4a98){const _0x56a573=a2_0xe7a6,_0x31646e=getAppCacheFilePath(_0x391d4c,_0x339651),_0x24abf2=dirname(_0x31646e);!existsSync(_0x24abf2)&&mkdirSync(_0x24abf2,{'recursive':!![]});const _0x42a6e6=_0x31646e+_0x56a573(0x136);try{writeFileSync(_0x42a6e6,JSON[_0x56a573(0x135)](_0x1b4a98,null,0x2)+'\x0a',{'encoding':_0x56a573(0x142),'mode':0x180});try{renameSync(_0x42a6e6,_0x31646e);}catch(_0x33d9b4){if(_0x33d9b4[_0x56a573(0x131)]===_0x56a573(0x140)||_0x33d9b4['code']===_0x56a573(0x141)||_0x33d9b4[_0x56a573(0x131)]===_0x56a573(0x134)){writeFileSync(_0x31646e,JSON[_0x56a573(0x135)](_0x1b4a98,null,0x2)+'\x0a',{'encoding':'utf8'});try{unlinkSync(_0x42a6e6);}catch{}}else throw _0x33d9b4;}}catch(_0x70c8c3){try{unlinkSync(_0x42a6e6);}catch{}throw _0x70c8c3;}return _0x31646e;}export function resolveCachedAppCode(_0x82f863,_0x1d8193,_0xacb1c9){const _0x4677de=a2_0xe7a6;if(!_0x82f863)return undefined;const _0x476d7b=readCachedAppList(_0x1d8193,_0xacb1c9),_0x1fba1a=_0x476d7b?.[_0x4677de(0x132)][_0x4677de(0x128)](_0x4f63f3=>_0x4f63f3[_0x4677de(0x144)]===_0x82f863&&isRuntimeAccessibleApp(_0x4f63f3));return _0x1fba1a?.[_0x4677de(0x12a)]?.[_0x4677de(0x12f)]()||undefined;}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a3_0x4c639b=a3_0x2353;(function(_0x334b78,_0x879a82){const _0x1bbad8=a3_0x2353,_0x1811a9=_0x334b78();while(!![]){try{const _0x4f3aa7=parseInt(_0x1bbad8(0x1d8))/0x1+parseInt(_0x1bbad8(0x1d7))/0x2+-parseInt(_0x1bbad8(0x1cb))/0x3*(-parseInt(_0x1bbad8(0x1e1))/0x4)+parseInt(_0x1bbad8(0x1d4))/0x5*(-parseInt(_0x1bbad8(0x1bb))/0x6)+-parseInt(_0x1bbad8(0x1c6))/0x7+-parseInt(_0x1bbad8(0x1ce))/0x8*(-parseInt(_0x1bbad8(0x1b8))/0x9)+-parseInt(_0x1bbad8(0x1dc))/0xa;if(_0x4f3aa7===_0x879a82)break;else _0x1811a9['push'](_0x1811a9['shift']());}catch(_0x1879a8){_0x1811a9['push'](_0x1811a9['shift']());}}}(a3_0xe824,0x2030f));import{appImportFlagDefs,runAppImport}from'../../commands/init.js';function a3_0x2353(_0x4e7e36,_0x41d547){_0x4e7e36=_0x4e7e36-0x19f;const _0xe8240f=a3_0xe824();let _0x2353b0=_0xe8240f[_0x4e7e36];return _0x2353b0;}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(_0x317371,_0x27a4d5){const _0xe05453=a3_0x2353,_0x5e3c0f={};for(const _0x147a4e of _0x27a4d5){const _0x24b20c=_0x147a4e[_0xe05453(0x1cd)]===_0xe05453(0x1c3)?_0x317371[_0xe05453(0x1c4)](_0x147a4e[_0xe05453(0x1ac)]):_0x317371[_0xe05453(0x1c5)](_0x147a4e[_0xe05453(0x1ac)]);if(_0x24b20c!==''&&_0x24b20c!==![])_0x5e3c0f[_0x147a4e[_0xe05453(0x1ac)]]=_0x24b20c;}if(_0x317371[_0xe05453(0x1a1)])_0x5e3c0f[_0xe05453(0x1a1)]=!![];return _0x5e3c0f;}function normalizeLanguages(_0x23060d){const _0x9a2f59=a3_0x2353;if(!Array[_0x9a2f59(0x1ab)](_0x23060d))return[];return _0x23060d[_0x9a2f59(0x1a7)](_0x2681fd=>typeof _0x2681fd===_0x9a2f59(0x1a2))[_0x9a2f59(0x1a9)](_0x62ecf9=>_0x62ecf9[_0x9a2f59(0x1c2)]())['filter'](Boolean);}function buildRemoteAppI18nFields(_0x32dc30){const _0x4febcd=a3_0x2353,_0x695d6c=normalizeLanguages(_0x32dc30[_0x4febcd(0x1bf)]?.['langs']);return{'enableI18n':typeof _0x32dc30[_0x4febcd(0x1aa)]===_0x4febcd(0x1c3)?_0x32dc30[_0x4febcd(0x1aa)]:null,'languages':_0x695d6c,'i18nInfo':_0x32dc30['i18nInfo']?{..._0x32dc30[_0x4febcd(0x1bf)],'langs':_0x695d6c[_0x4febcd(0x1b9)]?_0x695d6c:null}:null};}const listDef={'service':a3_0x4c639b(0x1b7),'command':'list','description':a3_0x4c639b(0x1c0),'risk':a3_0x4c639b(0x1e0),'requiresAuth':!![],'requiresAppCode':![],'hasFormat':!![],'flags':[{'name':a3_0x4c639b(0x1a3),'type':'string','description':a3_0x4c639b(0x1ca),'enum':[...RUNTIME_ENV_VALUES]},{'name':'local','type':a3_0x4c639b(0x1c3),'description':'Read\x20app\x20list\x20from\x20local\x20cache\x20only','default':![]},{'name':a3_0x4c639b(0x1bd),'type':'boolean','description':'Force\x20remote\x20fetch\x20and\x20refresh\x20local\x20cache','default':![]},{'name':a3_0x4c639b(0x1bc),'type':a3_0x4c639b(0x1c3),'description':a3_0x4c639b(0x1d6),'default':![]}],async 'execute'(_0x255c8f){const _0x2ae035=a3_0x4c639b,_0x6e5fee=_0x255c8f[_0x2ae035(0x1c5)](_0x2ae035(0x1a3))||_0x255c8f[_0x2ae035(0x1df)]||getEnv()||_0x2ae035(0x1c8),_0x30886d=_0x255c8f[_0x2ae035(0x1c4)](_0x2ae035(0x1ae)),_0x3e34aa=_0x255c8f[_0x2ae035(0x1c4)](_0x2ae035(0x1bd)),_0x5a11e1=_0x255c8f[_0x2ae035(0x1c4)](_0x2ae035(0x1bc)),{readRawConfigWithLayers:_0x50688c,resolveDefaultAppSource:_0x4e6279,getLocalAppAliases:_0x1e3fb0}=await import(_0x2ae035(0x1b5)),{getRemoteAppList:_0x3020c5}=await import(_0x2ae035(0x19f)),{config:_0x2658c5,layers:_0x12f768}=_0x50688c(),_0x5caaed=_0x4e6279(_0x12f768),{defaultApp:_0x3d8f3f}=_0x2658c5,_0x24854f=await _0x3020c5({'env':_0x6e5fee,'accessKey':_0x255c8f[_0x2ae035(0x1b4)],'localOnly':_0x30886d,'noCache':_0x3e34aa}),_0x1def7d=_0x5a11e1?_0x24854f['items']:filterRuntimeAccessibleApps(_0x24854f[_0x2ae035(0x1cc)]),_0x4893bc=_0x24854f[_0x2ae035(0x1cc)][_0x2ae035(0x1b9)]-_0x1def7d['length'],_0x4b731a=_0x1def7d['map'](_0x4e1cbe=>{const _0x317019=_0x2ae035;return{'name':_0x4e1cbe[_0x317019(0x1b3)],'appcode':_0x4e1cbe['appCode'],'named':!![],'definedIn':_0x317019(0x1d1),'isDefault':_0x4e1cbe[_0x317019(0x1b3)]===_0x3d8f3f,...buildAppProfileListFields(_0x6e5fee),...buildRemoteAppI18nFields(_0x4e1cbe),'source':_0x24854f[_0x317019(0x1dd)],'owner':_0x4e1cbe[_0x317019(0x1a8)]??null,'status':_0x4e1cbe[_0x317019(0x1d3)]??null,'cachedAt':_0x24854f[_0x317019(0x1c7)]};}),_0x1d0c18=_0x1e3fb0(_0x2658c5);let _0x363bce=0x0;for(const [_0x97430,_0x4a63fc]of Object[_0x2ae035(0x1ad)](_0x1d0c18)){const _0x22bc88=typeof _0x4a63fc[_0x2ae035(0x1ba)]==='string'?_0x4a63fc[_0x2ae035(0x1ba)][_0x2ae035(0x1c2)]():'';if(!_0x22bc88)continue;const _0x434f56=findAppByCode(_0x24854f[_0x2ae035(0x1cc)],_0x22bc88);if(!_0x5a11e1&&_0x434f56&&!isRuntimeAccessibleApp(_0x434f56))continue;_0x363bce+=0x1,_0x4b731a[_0x2ae035(0x1c1)]({'name':_0x97430,'appcode':_0x22bc88,'named':!![],'definedIn':_0x2ae035(0x1ae),'isDefault':_0x97430===_0x3d8f3f,...buildAppProfileListFields(_0x6e5fee),'source':_0x2ae035(0x1a5),'owner':null,'status':null,'cachedAt':null});}enrichAppListItemsWithMergedSelection(_0x4b731a,_0x255c8f[_0x2ae035(0x1a4)]);const _0x463078=_0x4b731a[_0x2ae035(0x1b2)](_0x139121=>_0x139121[_0x2ae035(0x1e3)]===!![]),_0x1b0b01=_0x3d8f3f??_0x463078?.[_0x2ae035(0x1ac)]??null,_0x189e64={'env':_0x6e5fee,'source':_0x24854f['source'],'fetchedAt':_0x24854f[_0x2ae035(0x1c7)],'cachePath':_0x24854f['cachePath'],'globalPath':_0x12f768[_0x2ae035(0x1db)]??null,'projectPath':_0x12f768['projectPath']??null,'defaultApp':_0x1b0b01,'defaultAppSource':_0x3d8f3f!=null?_0x5caaed:null,'localAliasCount':_0x363bce,'remoteTotal':_0x24854f[_0x2ae035(0x1cc)][_0x2ae035(0x1b9)],'hiddenUnpublishedCount':_0x4893bc,'includeUnpublished':_0x5a11e1};if(_0x4b731a[_0x2ae035(0x1b9)]===0x0)return{'ok':!![],'data':{'items':_0x4b731a,'meta':_0x189e64},'message':_0x24854f[_0x2ae035(0x1dd)]==='cache'?'No\x20cached\x20apps\x20found.':_0x2ae035(0x1b0)};return{'ok':!![],'data':{'items':_0x4b731a,'meta':_0x189e64}};}},pullDef={'service':a3_0x4c639b(0x1b7),'command':a3_0x4c639b(0x1a0),'description':a3_0x4c639b(0x1e2),'risk':a3_0x4c639b(0x1cf),'confirmationDescription':a3_0x4c639b(0x1d0),'requiresAuth':!![],'requiresAppCode':![],'hasFormat':![],'flags':[{'name':a3_0x4c639b(0x1a3),'type':'string','description':a3_0x4c639b(0x1b6),'enum':[...RUNTIME_ENV_VALUES]},{'name':a3_0x4c639b(0x1ae),'type':a3_0x4c639b(0x1c3),'description':a3_0x4c639b(0x1b1),'default':![]},{'name':'no-cache','type':a3_0x4c639b(0x1c3),'description':a3_0x4c639b(0x1be),'default':![]}],async 'execute'(_0x433e71){const _0x27a1af=a3_0x4c639b,_0x3a3b6c=_0x433e71[_0x27a1af(0x1c5)]('env')||_0x433e71[_0x27a1af(0x1df)]||getEnv()||_0x27a1af(0x1c8),_0x578989=_0x433e71['bool'](_0x27a1af(0x1ae)),_0x396326=_0x433e71[_0x27a1af(0x1c4)]('no-cache'),{getRemoteAppList:_0x1850fe}=await import(_0x27a1af(0x19f)),_0x3fe165=await _0x1850fe({'env':_0x3a3b6c,'accessKey':_0x433e71[_0x27a1af(0x1b4)],'localOnly':_0x578989,'noCache':_0x396326});return{'ok':!![],'data':{'total':_0x3fe165[_0x27a1af(0x1cc)]['length'],'env':_0x3a3b6c,'source':_0x3fe165[_0x27a1af(0x1dd)],'fetchedAt':_0x3fe165['fetchedAt'],'cachePath':_0x3fe165[_0x27a1af(0x1d9)]},'message':_0x3fe165[_0x27a1af(0x1dd)]===_0x27a1af(0x1d5)?_0x27a1af(0x1da)+_0x3fe165[_0x27a1af(0x1cc)][_0x27a1af(0x1b9)]+_0x27a1af(0x1de)+_0x3a3b6c+'\x22.':'Refreshed\x20app\x20cache\x20with\x20'+_0x3fe165[_0x27a1af(0x1cc)]['length']+_0x27a1af(0x1af)+_0x3a3b6c+'\x22.'};}},importDef={'service':a3_0x4c639b(0x1b7),'command':a3_0x4c639b(0x1a6),'description':a3_0x4c639b(0x1c9),'risk':a3_0x4c639b(0x1cf),'confirmationDescription':a3_0x4c639b(0x1d2),'requiresAuth':![],'requiresAppCode':![],'hasFormat':![],'flags':appImportFlagDefs,async 'execute'(_0x36b738){return await runAppImport(collectFlags(_0x36b738,appImportFlagDefs)),{'ok':!![]};}};export const appDefinitions=[listDef,pullDef,importDef];function a3_0xe824(){const _0x4b2af4=['push','trim','boolean','bool','str','323183shfwao','fetchedAt','production','从\x20.rabetbase.json\x20文件导入默认应用选择','Filter\x20by\x20environment\x20(default:\x20current\x20env)','580137POttpi','items','type','3848UvsVpV','write','将从平台读取当前账号可用的应用列表,并覆盖对应环境的本地应用缓存;不会修改平台应用。','remote','将读取指定的\x20.rabetbase.json,并把其中可用的默认应用设置导入本地\x20.lovrabet.json;同名配置可能被更新。','appPublishStatus','354825mXTOgN','cache','Include\x20unpublished\x20apps\x20for\x20diagnostics','121412Kycdex','201025ymSJbg','cachePath','Loaded\x20','globalPath','3941920awXCgs','source','\x20cached\x20app(s)\x20for\x20env=\x22','envName','read','4peSsrS','从平台刷新本地应用缓存','isCurrent','../../commands/app/remote-source.js','pull','nonInteractive','string','env','mergedCli','config','import','filter','appOwnerName','map','enableI18n','isArray','name','entries','local','\x20app(s)\x20for\x20env=\x22','No\x20apps\x20found\x20on\x20the\x20platform.','Read\x20from\x20local\x20cache\x20only','find','appName','accessKey','../../context.js','Target\x20environment\x20(default:\x20current\x20env)','app','3519OQUjAF','length','appcode','6vjprdD','include-unpublished','no-cache','Force\x20remote\x20fetch\x20and\x20refresh\x20local\x20cache','i18nInfo','List\x20apps\x20available\x20to\x20the\x20current\x20access\x20key'];a3_0xe824=function(){return _0x4b2af4;};return a3_0xe824();}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
function a4_0x4e58(){const _0x30bda7=['6930243GBqZGv','1015878wLaPja','\x20is\x20not\x20available\x20for\x20runtime\x20AI\x20access.','filter','trim','find','30AuItXp','appPublishStatus','598764NKjGxy','appName','419563eyBmXo','validation','\x20dataset/data/sql/bff\x20commands,\x20or\x20choose\x20a\x20published\x20app.','string','6142269DzhQLt','App\x20','12cAaACz','8jSlRsu','Current\x20status:\x20','appCode','10YISVIt','4UFUkvA','4207506pJgduF','24488959pTssmY'];a4_0x4e58=function(){return _0x30bda7;};return a4_0x4e58();}(function(_0x40beaa,_0x14ccc1){const _0x4b5a53=a4_0x3216,_0x325615=_0x40beaa();while(!![]){try{const _0x45acba=parseInt(_0x4b5a53(0x197))/0x1*(parseInt(_0x4b5a53(0x1a2))/0x2)+-parseInt(_0x4b5a53(0x1a3))/0x3+parseInt(_0x4b5a53(0x1ad))/0x4*(-parseInt(_0x4b5a53(0x1ab))/0x5)+parseInt(_0x4b5a53(0x1a6))/0x6+-parseInt(_0x4b5a53(0x19b))/0x7*(parseInt(_0x4b5a53(0x19e))/0x8)+parseInt(_0x4b5a53(0x1a5))/0x9*(parseInt(_0x4b5a53(0x1a1))/0xa)+parseInt(_0x4b5a53(0x1a4))/0xb*(parseInt(_0x4b5a53(0x19d))/0xc);if(_0x45acba===_0x14ccc1)break;else _0x325615['push'](_0x325615['shift']());}catch(_0x306701){_0x325615['push'](_0x325615['shift']());}}}(a4_0x4e58,0xc9cfc));import{CLI_BIN_NAME}from'../../constant/cli.js';import{RUNTIME_ACCESSIBLE_APP_STATUS}from'../../constant/app.js';import{CliErrors}from'../../errors.js';function a4_0x3216(_0x4a4652,_0x3875ec){_0x4a4652=_0x4a4652-0x197;const _0x4e58f8=a4_0x4e58();let _0x3216eb=_0x4e58f8[_0x4a4652];return _0x3216eb;}export function normalizeAppPublishStatus(_0x3a0cc4){const _0x12d5cc=a4_0x3216;if(typeof _0x3a0cc4!==_0x12d5cc(0x19a))return null;const _0x22cb5b=_0x3a0cc4['trim']();return _0x22cb5b?_0x22cb5b['toUpperCase']():null;}export function isRuntimeAccessibleApp(_0xf0621f){return normalizeAppPublishStatus(_0xf0621f['appPublishStatus'])===RUNTIME_ACCESSIBLE_APP_STATUS;}export function filterRuntimeAccessibleApps(_0x12e8e4){const _0x52196b=a4_0x3216;return _0x12e8e4[_0x52196b(0x1a8)](isRuntimeAccessibleApp);}export function findAppByName(_0x5463fe,_0x166aa1){const _0x1ae9c6=a4_0x3216;return _0x5463fe[_0x1ae9c6(0x1aa)](_0x317f53=>_0x317f53[_0x1ae9c6(0x1ae)]===_0x166aa1);}export function findAppByCode(_0xec7fad,_0x36255b){const _0x3dcdd3=a4_0x3216,_0x3d03cb=_0x36255b[_0x3dcdd3(0x1a9)]();if(!_0x3d03cb)return undefined;return _0xec7fad[_0x3dcdd3(0x1aa)](_0x326610=>_0x326610[_0x3dcdd3(0x1a0)]?.[_0x3dcdd3(0x1a9)]()===_0x3d03cb);}export function runtimeInaccessibleAppError(_0x4c0f14,_0x1b8f34){const _0x3ce870=a4_0x3216,_0x212e14=normalizeAppPublishStatus(_0x4c0f14[_0x3ce870(0x1ac)])??'UNKNOWN';return CliErrors[_0x3ce870(0x198)](_0x3ce870(0x19c)+_0x1b8f34+_0x3ce870(0x1a7),_0x3ce870(0x19f)+_0x212e14+'.\x20Publish\x20the\x20app\x20before\x20using\x20'+CLI_BIN_NAME+_0x3ce870(0x199));}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x383947,_0x333d88){const _0xd1efc8=a5_0x405d,_0x210b5c=_0x383947();while(!![]){try{const _0x5e8e02=parseInt(_0xd1efc8(0x179))/0x1+parseInt(_0xd1efc8(0x172))/0x2*(parseInt(_0xd1efc8(0x177))/0x3)+parseInt(_0xd1efc8(0x174))/0x4+-parseInt(_0xd1efc8(0x17a))/0x5*(-parseInt(_0xd1efc8(0x17b))/0x6)+parseInt(_0xd1efc8(0x178))/0x7*(parseInt(_0xd1efc8(0x176))/0x8)+-parseInt(_0xd1efc8(0x180))/0x9*(parseInt(_0xd1efc8(0x171))/0xa)+-parseInt(_0xd1efc8(0x17c))/0xb;if(_0x5e8e02===_0x333d88)break;else _0x210b5c['push'](_0x210b5c['shift']());}catch(_0xdeae91){_0x210b5c['push'](_0x210b5c['shift']());}}}(a5_0x58cb,0xe8d2d));import{fileURLToPath}from'url';function a5_0x58cb(){const _0x3c5030=['1160777DxMYKF','30FTMmym','676554aFcxeK','27182287PVVncD','../../../mock/app-list.json','tableData','success','3067668APdnlt','20deCyet','1194958umupFW','parse','619676COUcKm','data','2574232eKxuBW','9AYvgLr','7GfUaVZ'];a5_0x58cb=function(){return _0x3c5030;};return a5_0x58cb();}import{dirname,join}from'path';import{readFileSync}from'fs';const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename);function loadMockAppList(){const _0x2ea38b=a5_0x405d,_0x2dda2a=join(__dirname,_0x2ea38b(0x17d)),_0x2fc0e7=readFileSync(_0x2dda2a,'utf-8');return JSON[_0x2ea38b(0x173)](_0x2fc0e7);}let _cached=null;export function getMockAppList(){return!_cached&&(_cached=loadMockAppList()),_cached;}function a5_0x405d(_0x271272,_0x55aceb){_0x271272=_0x271272-0x171;const _0x58cb64=a5_0x58cb();let _0x405dd6=_0x58cb64[_0x271272];return _0x405dd6;}export function getMockRemoteAppItems(){const _0x2aa1a2=a5_0x405d,_0x52e97b=getMockAppList();if(!_0x52e97b[_0x2aa1a2(0x17f)])throw new Error('Mock\x20API\x20error:\x20'+_0x52e97b['errorMsg']+'\x20('+_0x52e97b['errorCode']+')');return _0x52e97b[_0x2aa1a2(0x175)][_0x2aa1a2(0x17e)];}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x15cd97,_0x125271){const _0x2d5ee8=a6_0x333e,_0x505c17=_0x15cd97();while(!![]){try{const _0x197cbb=parseInt(_0x2d5ee8(0xbe))/0x1+parseInt(_0x2d5ee8(0xb9))/0x2*(parseInt(_0x2d5ee8(0xb7))/0x3)+parseInt(_0x2d5ee8(0xb3))/0x4*(-parseInt(_0x2d5ee8(0xbc))/0x5)+parseInt(_0x2d5ee8(0xb6))/0x6+parseInt(_0x2d5ee8(0xb8))/0x7+-parseInt(_0x2d5ee8(0xb2))/0x8+parseInt(_0x2d5ee8(0xbd))/0x9;if(_0x197cbb===_0x125271)break;else _0x505c17['push'](_0x505c17['shift']());}catch(_0x3c2d09){_0x505c17['push'](_0x505c17['shift']());}}}(a6_0x5057,0xe7209));function a6_0x5057(){const _0x3404e3=['222ZjReGA','fetchedAt','trim','385015speBWG','20991654usOMXM','1164546EDwcWr','mock','toISOString','remote','13051216IsYYvC','92PSoWgP','APP_LIST_SOURCE','items','348804MsZkZR','13989MMfChL','1935423FSDopW'];a6_0x5057=function(){return _0x3404e3;};return a6_0x5057();}function a6_0x333e(_0x2e0541,_0x17751a){_0x2e0541=_0x2e0541-0xaf;const _0x5057a3=a6_0x5057();let _0x333eab=_0x5057a3[_0x2e0541];return _0x333eab;}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 _0x2c3f22=a6_0x333e,_0x12eafe=(productEnv(_0x2c3f22(0xb4))||'')[_0x2c3f22(0xbb)]()['toLowerCase']();return _0x12eafe===_0x2c3f22(0xaf);}export async function getRemoteAppItems(){if(shouldUseMockRemoteApps())return getMockRemoteAppItems();return getMyApps();}export async function getRemoteAppList(_0x430448){const _0x3d2923=a6_0x333e,{env:_0x11b2c3,accessKey:_0x38e53e,localOnly:localOnly=![],noCache:noCache=![]}=_0x430448,_0x2a04c4=readCachedAppList(_0x11b2c3,_0x38e53e),_0x4ebac7=_0x38e53e?.['trim']()?getAppCacheFilePath(_0x11b2c3,_0x38e53e):null;if(localOnly)return{'items':_0x2a04c4?.[_0x3d2923(0xb5)]??[],'source':'cache','fetchedAt':_0x2a04c4?.[_0x3d2923(0xba)]??null,'cachePath':_0x4ebac7};try{const _0x45cc6a=await getRemoteAppItems(),_0xac6302=shouldUseMockRemoteApps()?_0x3d2923(0xaf):_0x3d2923(0xb1),_0x46b4fe=new Date()[_0x3d2923(0xb0)](),_0x397254=_0x38e53e?.[_0x3d2923(0xbb)]()?writeCachedAppList(_0x11b2c3,_0x38e53e,{'env':_0x11b2c3,'fetchedAt':_0x46b4fe,'source':_0xac6302,'items':_0x45cc6a}):null;return{'items':_0x45cc6a,'source':_0xac6302,'fetchedAt':_0x46b4fe,'cachePath':_0x397254};}catch(_0x3ae679){if(!noCache&&_0x2a04c4)return{'items':_0x2a04c4[_0x3d2923(0xb5)],'source':'cache','fetchedAt':_0x2a04c4[_0x3d2923(0xba)],'cachePath':_0x4ebac7};throw _0x3ae679;}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x3b4d4e,_0x2d7cd3){const _0x388b06=a7_0x5979,_0x2bccbf=_0x3b4d4e();while(!![]){try{const _0x477174=-parseInt(_0x388b06(0xb5))/0x1+-parseInt(_0x388b06(0xb2))/0x2*(parseInt(_0x388b06(0xab))/0x3)+-parseInt(_0x388b06(0xa9))/0x4*(-parseInt(_0x388b06(0xa5))/0x5)+parseInt(_0x388b06(0xb0))/0x6*(parseInt(_0x388b06(0xa2))/0x7)+-parseInt(_0x388b06(0xa8))/0x8+parseInt(_0x388b06(0xaf))/0x9+parseInt(_0x388b06(0xa1))/0xa;if(_0x477174===_0x2d7cd3)break;else _0x2bccbf['push'](_0x2bccbf['shift']());}catch(_0x5ad909){_0x2bccbf['push'](_0x2bccbf['shift']());}}}(a7_0x571c,0xcd8dc));function a7_0x571c(){const _0x1bf4cf=['4338189lGxGXt','48DUnmen','trim','445918yDTDbZ','appcode','name','1067831RrscNd','2032020Ukiqsb','976213IjFGXT','find','defaultApp','15jciHQI','named','local','3213216hBFbmi','2167108CdgYdO','isCurrent','15upUIeI','definedIn','currentApp','appCode'];a7_0x571c=function(){return _0x1bf4cf;};return a7_0x571c();}function a7_0x5979(_0x511775,_0x22370b){_0x511775=_0x511775-0xa1;const _0x571c0f=a7_0x571c();let _0x5979a3=_0x571c0f[_0x511775];return _0x5979a3;}export function enrichAppListItemsWithMergedSelection(_0x4bb407,_0x51d486){const _0x3dfd46=a7_0x5979;if(!_0x51d486)return;const _0x4df5b8=!!(_0x51d486[_0x3dfd46(0xad)]??_0x51d486[_0x3dfd46(0xa4)]);for(const _0x539257 of _0x4bb407){_0x539257[_0x3dfd46(0xaa)]=![];}const _0xdc475b=_0x51d486['appCode']!=null?String(_0x51d486[_0x3dfd46(0xae)])[_0x3dfd46(0xb1)]():'';if(_0x4df5b8){const _0x538420=_0x51d486['currentApp']??_0x51d486[_0x3dfd46(0xa4)];if(_0x538420){const _0x4f3a44=_0x4bb407[_0x3dfd46(0xa3)](_0x59f418=>_0x59f418[_0x3dfd46(0xa6)]===!![]&&_0x59f418[_0x3dfd46(0xb4)]===_0x538420&&_0x59f418[_0x3dfd46(0xac)]===_0x3dfd46(0xa7)),_0x9cb893=_0x4f3a44??_0x4bb407['find'](_0x24667e=>_0x24667e[_0x3dfd46(0xa6)]===!![]&&_0x24667e[_0x3dfd46(0xb4)]===_0x538420);if(_0x9cb893){const _0xadb29f=String(_0x9cb893[_0x3dfd46(0xb3)]??'')[_0x3dfd46(0xb1)]();if(!_0xdc475b||_0xadb29f===_0xdc475b){_0x9cb893['isCurrent']=!![];return;}}}if(_0xdc475b){const _0xce2454=_0x4bb407[_0x3dfd46(0xa3)](_0x283a59=>String(_0x283a59[_0x3dfd46(0xb3)]??'')[_0x3dfd46(0xb1)]()===_0xdc475b);_0xce2454&&(_0xce2454[_0x3dfd46(0xaa)]=!![]);}return;}if(!_0xdc475b)return;for(const _0x30c458 of _0x4bb407){String(_0x30c458[_0x3dfd46(0xb3)]??'')['trim']()===_0xdc475b&&(_0x30c458[_0x3dfd46(0xaa)]=!![]);}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a8_0x50b6f7=a8_0x38d5;(function(_0x1fd815,_0x3b4876){const _0x2cd26d=a8_0x38d5,_0x582d33=_0x1fd815();while(!![]){try{const _0x183041=-parseInt(_0x2cd26d(0x11c))/0x1+parseInt(_0x2cd26d(0x121))/0x2+-parseInt(_0x2cd26d(0x120))/0x3*(parseInt(_0x2cd26d(0x129))/0x4)+parseInt(_0x2cd26d(0x125))/0x5*(-parseInt(_0x2cd26d(0x12e))/0x6)+parseInt(_0x2cd26d(0x12d))/0x7+parseInt(_0x2cd26d(0x12a))/0x8*(parseInt(_0x2cd26d(0x131))/0x9)+parseInt(_0x2cd26d(0x11b))/0xa*(parseInt(_0x2cd26d(0x127))/0xb);if(_0x183041===_0x3b4876)break;else _0x582d33['push'](_0x582d33['shift']());}catch(_0x13f9bf){_0x582d33['push'](_0x582d33['shift']());}}}(a8_0x30de,0x1b1e5));function a8_0x30de(){const _0xb0e0bf=['40RvHNQM','key','get','989982ynGLie','661806pyJTuF','appCode','Check\x20that\x20the\x20key\x20exists,\x20the\x20current\x20AccessKey\x20has\x20permission,\x20and\x20the\x20runtime\x20app-config\x20endpoint\x20is\x20available.','272619xkhlRR','20tsFnyd','117632DgvHcr','Unable\x20to\x20get\x20app-config\x20value:\x20key=','validation',',\x20appCode=','218157yRHNWm','11716lrxHwL','trim','Missing\x20app-config\x20key.','args','5oqYuFd','Usage:\x20','1421354zBEHbI','Get\x20one\x20runtime\x20app-config\x20value\x20by\x20key','12ksAlLJ'];a8_0x30de=function(){return _0xb0e0bf;};return a8_0x30de();}import{getRuntimeAppConfigByKey}from'../../core/api-client.js';function a8_0x38d5(_0xa91692,_0x362c4b){_0xa91692=_0xa91692-0x11b;const _0x30de5b=a8_0x30de();let _0x38d509=_0x30de5b[_0xa91692];return _0x38d509;}import{CliErrors}from'../../errors.js';import{CLI_BIN_NAME}from'../../constant/cli.js';export const appConfigGet={'service':'app-config','command':a8_0x50b6f7(0x12c),'description':a8_0x50b6f7(0x128),'risk':'read','args':[{'name':a8_0x50b6f7(0x12b),'description':'App\x20config\x20key','required':!![]}],'flags':[],async 'execute'(_0x5d97c9){const _0x31b3ce=a8_0x50b6f7,_0x42923a=_0x5d97c9[_0x31b3ce(0x124)][0x0]?.[_0x31b3ce(0x122)]();if(!_0x42923a)throw CliErrors[_0x31b3ce(0x11e)](_0x31b3ce(0x123),_0x31b3ce(0x126)+CLI_BIN_NAME+'\x20app-config\x20get\x20<key>');try{const _0x1092d2=await getRuntimeAppConfigByKey(_0x5d97c9[_0x31b3ce(0x12f)],_0x42923a);return{'ok':!![],'data':_0x1092d2};}catch{throw CliErrors['apiError'](_0x31b3ce(0x11d)+_0x42923a+_0x31b3ce(0x11f)+_0x5d97c9[_0x31b3ce(0x12f)],_0x31b3ce(0x130));}}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
function a9_0x4d84(_0x28b74d,_0x366b6b){_0x28b74d=_0x28b74d-0xd4;const _0xabce2d=a9_0xabce();let _0x4d8409=_0xabce2d[_0x28b74d];return _0x4d8409;}(function(_0x10450f,_0x5e7aaf){const _0xadb71c=a9_0x4d84,_0x312855=_0x10450f();while(!![]){try{const _0x79762e=parseInt(_0xadb71c(0xd8))/0x1*(-parseInt(_0xadb71c(0xda))/0x2)+-parseInt(_0xadb71c(0xd4))/0x3+parseInt(_0xadb71c(0xd9))/0x4+parseInt(_0xadb71c(0xd7))/0x5+-parseInt(_0xadb71c(0xd5))/0x6+-parseInt(_0xadb71c(0xdb))/0x7+parseInt(_0xadb71c(0xd6))/0x8;if(_0x79762e===_0x5e7aaf)break;else _0x312855['push'](_0x312855['shift']());}catch(_0x2ab7d7){_0x312855['push'](_0x312855['shift']());}}}(a9_0xabce,0xa8828));import{appConfigGet}from'../../commands/app-config/get.js';function a9_0xabce(){const _0x1b6348=['16614832lZAnmT','701015BflBcE','117638GhpcTE','4753024UtWpzS','6zvYOeu','7042602ZBLKFV','1465362cBwgHk','5205858klJMoX'];a9_0xabce=function(){return _0x1b6348;};return a9_0xabce();}export const appConfigDefinitions=[appConfigGet];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const a10_0x532a01=a10_0x5049;(function(_0x446f92,_0x4b2b50){const _0x44b8ec=a10_0x5049,_0x36b9bd=_0x446f92();while(!![]){try{const _0x5eebe1=-parseInt(_0x44b8ec(0x10c))/0x1+-parseInt(_0x44b8ec(0x104))/0x2*(-parseInt(_0x44b8ec(0x11b))/0x3)+-parseInt(_0x44b8ec(0x125))/0x4*(-parseInt(_0x44b8ec(0x108))/0x5)+-parseInt(_0x44b8ec(0xfa))/0x6*(-parseInt(_0x44b8ec(0xee))/0x7)+parseInt(_0x44b8ec(0x100))/0x8+-parseInt(_0x44b8ec(0xe8))/0x9*(parseInt(_0x44b8ec(0xf8))/0xa)+-parseInt(_0x44b8ec(0xea))/0xb;if(_0x5eebe1===_0x4b2b50)break;else _0x36b9bd['push'](_0x36b9bd['shift']());}catch(_0x150399){_0x36b9bd['push'](_0x36b9bd['shift']());}}}(a10_0x49c4,0x91d88));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_0x532a01(0xf6),ARTIFACT_SOURCE_AGENT=a10_0x532a01(0xec),ALLOWED_REACT_MODULE_IMPORTS=[a10_0x532a01(0x137),a10_0x532a01(0x10f),a10_0x532a01(0x12b),a10_0x532a01(0xf4),a10_0x532a01(0xff),'@ant-design/icons'];export const ALLOWED_REACT_MODULE_IMPORTS_TEXT=ALLOWED_REACT_MODULE_IMPORTS[a10_0x532a01(0xef)](',\x20');const IMPORT_SOURCE_PATTERNS=[/\bimport\s+(?:type\s+)?(?:[^'";]*?\s+from\s+)?["']([^"']+)["']/g,/\bexport\s+(?:type\s+)?[^'";]*?\s+from\s+["']([^"']+)["']/g,/\bimport\s*\(\s*["']([^"']+)["']\s*\)/g,/\brequire\s*\(\s*["']([^"']+)["']\s*\)/g],PAGE_LEVEL_PATTERNS=[/<!doctype\s+html/i,/<\s*html\b/i,/\bcreateRoot\s*\(/,/\bReactDOM\s*\.\s*render\s*\(/,/\bReactDOM\s*\.\s*createRoot\s*\(/],FILE_FLAG={'name':'file','type':a10_0x532a01(0x136),'required':!![],'description':a10_0x532a01(0x10b)},ARTIFACT_NAME_FLAG={'name':a10_0x532a01(0x127),'type':a10_0x532a01(0x136),'description':a10_0x532a01(0xf3)},METADATA_FLAG={'name':a10_0x532a01(0x120),'type':a10_0x532a01(0x136),'description':a10_0x532a01(0xe9)};function isPlainObject(_0x25a1ef){const _0x36d858=a10_0x532a01;return typeof _0x25a1ef===_0x36d858(0x121)&&_0x25a1ef!==null&&!Array[_0x36d858(0xe6)](_0x25a1ef);}function readSourceFile(_0x3637c4){const _0x56cace=a10_0x532a01;if(!_0x3637c4)throw CliErrors[_0x56cace(0x124)](_0x56cace(0x119));if(!existsSync(_0x3637c4))throw CliErrors[_0x56cace(0x124)](_0x56cace(0xf7)+_0x3637c4);if(!statSync(_0x3637c4)['isFile']())throw CliErrors[_0x56cace(0x124)](_0x56cace(0x112)+_0x3637c4);const _0x3a8853=readFileSync(_0x3637c4,_0x56cace(0x105));return validateReactModuleSource(_0x3a8853),_0x3a8853;}function parseMetadata(_0x5ca0bd){const _0x6e8830=a10_0x532a01;if(!_0x5ca0bd)return undefined;let _0x179e2c;try{_0x179e2c=JSON['parse'](_0x5ca0bd);}catch{throw CliErrors[_0x6e8830(0x124)](_0x6e8830(0x11f)+_0x5ca0bd);}if(!isPlainObject(_0x179e2c))throw CliErrors[_0x6e8830(0x124)]('--metadata\x20must\x20be\x20a\x20JSON\x20object.');const _0x4e826d={..._0x179e2c};return delete _0x4e826d['compiledContent'],_0x4e826d;}function a10_0x49c4(){const _0x227e6f=['createTime','add','Artifact\x20display\x20name','dayjs','content','react_module','File\x20not\x20found:\x20','2618730RFBnBy','Optional\x20source\x20filter,\x20for\x20example\x20AGENT','60HPenSU','length','react_module\x20imports\x20are\x20limited\x20to:\x20','根据本地源码文件创建\x20react_module\x20类型的\x20Artifact','updateTime','antd','6958200bwqwgj','str','data','react_module\x20must\x20be\x20an\x20embeddable\x20React\x20module,\x20not\x20full\x20HTML\x20or\x20a\x20ReactDOM/createRoot\x20mount\x20entry.','604gDcqMO','utf8','map','trim','1985nQcTtz','.\x20Unsupported:\x20','deleted','Path\x20to\x20a\x20local\x20UTF-8\x20React\x20module\x20source\x20file','102674LAnrML','lastIndex','test','react-dom','description','/client/artifact/create','File\x20is\x20not\x20a\x20regular\x20file:\x20','Preview:\x20update\x20react_module\x20Artifact\x20','body','List\x20current-app\x20react_module\x20Artifacts','num','verbose','Artifact\x20ID','File\x20path\x20is\x20required.','flag','10698jfoDMQ','favorite','source','includes','Invalid\x20JSON\x20for\x20--metadata:\x20','metadata','object','/client/artifact/','bool','validation','5068qxiOdP','POST','name','Updated\x20Artifact\x20','artifact','Artifact\x20source\x20file\x20is\x20blank.','lodash','appCode','boolean','artifactType','exec','Preview:\x20create\x20react_module\x20Artifact','number','/update','update','build','read','string','react','compiledContent','detail','isArray','write','27MGtqbJ','Artifact\x20metadata\x20as\x20JSON\x20object;\x20compiledContent\x20is\x20stripped','12598729jhxsmt','startsWith','AGENT','some','126917SNQGCF','join','create'];a10_0x49c4=function(){return _0x227e6f;};return a10_0x49c4();}function a10_0x5049(_0x51d6cb,_0x44b027){_0x51d6cb=_0x51d6cb-0xe5;const _0x49c487=a10_0x49c4();let _0x504994=_0x49c487[_0x51d6cb];return _0x504994;}function getPackageName(_0x309c67){const _0x128df1=a10_0x532a01;if(_0x309c67[_0x128df1(0xeb)]('@')){const [_0x3e4803,_0x50acd2]=_0x309c67['split']('/');return _0x3e4803&&_0x50acd2?_0x3e4803+'/'+_0x50acd2:_0x309c67;}return _0x309c67['split']('/')[0x0]||_0x309c67;}function validateAllowedImports(_0x570b14){const _0x6ee171=a10_0x532a01,_0x37871c=new Set();for(const _0x3ba46c of IMPORT_SOURCE_PATTERNS){_0x3ba46c[_0x6ee171(0x10d)]=0x0;let _0x1a149c;while((_0x1a149c=_0x3ba46c[_0x6ee171(0x12f)](_0x570b14))!==null){const _0x5db067=_0x1a149c[0x1]?.[_0x6ee171(0x107)]();_0x5db067&&_0x37871c[_0x6ee171(0xf2)](_0x5db067);}}const _0x36dba6=[..._0x37871c][_0x6ee171(0x106)](getPackageName)['filter'](_0x108746=>!ALLOWED_REACT_MODULE_IMPORTS[_0x6ee171(0x11e)](_0x108746));if(_0x36dba6[_0x6ee171(0xfb)]>0x0)throw CliErrors[_0x6ee171(0x124)](_0x6ee171(0xfc)+ALLOWED_REACT_MODULE_IMPORTS_TEXT+_0x6ee171(0x109)+[...new Set(_0x36dba6)][_0x6ee171(0xef)](',\x20'));}export function validateReactModuleSource(_0x236089){const _0x2ff60d=a10_0x532a01;if(!_0x236089['trim']())throw CliErrors[_0x2ff60d(0x124)](_0x2ff60d(0x12a));if(PAGE_LEVEL_PATTERNS[_0x2ff60d(0xed)](_0x2da356=>_0x2da356[_0x2ff60d(0x10e)](_0x236089)))throw CliErrors[_0x2ff60d(0x124)](_0x2ff60d(0x103));validateAllowedImports(_0x236089);}function buildArtifactInput(_0x30cccd){const _0x360e08=a10_0x532a01,_0x145b2a=readSourceFile(_0x30cccd[_0x360e08(0x101)]('file')),_0x2f298d=_0x30cccd[_0x360e08(0x101)](_0x360e08(0x127))[_0x360e08(0x107)](),_0x12e21d=parseMetadata(_0x30cccd[_0x360e08(0x101)](_0x360e08(0x120)));return{'artifactType':ARTIFACT_TYPE_REACT_MODULE,..._0x2f298d?{'name':_0x2f298d}:{},'content':_0x145b2a,..._0x12e21d?{'metadata':_0x12e21d}:{},'source':ARTIFACT_SOURCE_AGENT};}function summarizeArtifact(_0x5b1841){const _0x58d54b=a10_0x532a01;return{'id':_0x5b1841['id'],'name':_0x5b1841[_0x58d54b(0x127)],'artifactType':_0x5b1841[_0x58d54b(0x12e)],'source':_0x5b1841[_0x58d54b(0x11d)],'favorite':_0x5b1841['favorite'],'deleted':_0x5b1841[_0x58d54b(0x10a)],'createTime':_0x5b1841[_0x58d54b(0xf1)],'updateTime':_0x5b1841[_0x58d54b(0xfe)]};}function detailArtifact(_0x27afab){const _0x3ff4a9=a10_0x532a01;return{'id':_0x27afab['id'],'appCode':_0x27afab['appCode'],'name':_0x27afab[_0x3ff4a9(0x127)],'artifactType':_0x27afab[_0x3ff4a9(0x12e)],'source':_0x27afab[_0x3ff4a9(0x11d)],'favorite':_0x27afab[_0x3ff4a9(0x11c)],'deleted':_0x27afab[_0x3ff4a9(0x10a)],'content':_0x27afab[_0x3ff4a9(0xf5)]??'','compiledContent':_0x27afab[_0x3ff4a9(0x138)],'metadata':_0x27afab['metadata']??{},'createTime':_0x27afab[_0x3ff4a9(0xf1)],'updateTime':_0x27afab[_0x3ff4a9(0xfe)]};}function readFavoriteFlag(_0x1210a6){const _0x5b9e44=a10_0x532a01,_0x189499=_0x1210a6[_0x5b9e44(0x11a)]('favorite');return _0x189499===undefined||_0x189499===null||_0x189499===''?undefined:_0x1210a6[_0x5b9e44(0x123)](_0x5b9e44(0x11c));}const artifactList={'service':a10_0x532a01(0x129),'command':'list','description':a10_0x532a01(0x115),'risk':'read','flags':[{'name':a10_0x532a01(0x11d),'type':'string','description':a10_0x532a01(0xf9)},{'name':'favorite','type':a10_0x532a01(0x12d),'description':'Optional\x20favorite-state\x20filter'},VERBOSE_FLAG],async 'execute'(_0x399189){const _0x254c14=a10_0x532a01,_0x39114c=await listRuntimeArtifacts(_0x399189[_0x254c14(0x12c)],{'artifactType':ARTIFACT_TYPE_REACT_MODULE,..._0x399189[_0x254c14(0x101)](_0x254c14(0x11d))?{'source':_0x399189[_0x254c14(0x101)](_0x254c14(0x11d))}:{},...readFavoriteFlag(_0x399189)!==undefined?{'favorite':readFavoriteFlag(_0x399189)}:{}});return{'ok':!![],'data':{'total':_0x39114c[_0x254c14(0xfb)],'items':_0x399189[_0x254c14(0x123)](_0x254c14(0x117))?_0x39114c:_0x39114c[_0x254c14(0x106)](summarizeArtifact)}};}},artifactDetail={'service':a10_0x532a01(0x129),'command':a10_0x532a01(0xe5),'description':'Show\x20one\x20Artifact\x20by\x20id','risk':a10_0x532a01(0x135),'flags':[{...ID_FLAG,'description':a10_0x532a01(0x118)}],async 'execute'(_0x270e1d){const _0x4447f0=a10_0x532a01,_0x2a5ce1=await getRuntimeArtifact(_0x270e1d['num']('id'),_0x270e1d[_0x4447f0(0x12c)]);return{'ok':!![],'data':detailArtifact(_0x2a5ce1)};}},artifactCreate={'service':a10_0x532a01(0x129),'command':a10_0x532a01(0xf0),'description':a10_0x532a01(0xfd),'risk':a10_0x532a01(0xe7),'confirmationDescription':'保存新的\x20Artifact\x20源码并进行编译;成功后将在当前应用中新增可展示的内嵌模块。','flags':[FILE_FLAG,ARTIFACT_NAME_FLAG,METADATA_FLAG],async 'execute'(_0x47e2ab){const _0x41a26e=a10_0x532a01,_0x2bace7=buildArtifactInput(_0x47e2ab),_0xcd3ae7=await createRuntimeArtifact(_0x47e2ab['appCode'],_0x2bace7);return{'ok':!![],'data':detailArtifact(_0xcd3ae7),'message':'Created\x20Artifact\x20'+_0xcd3ae7['id']+(_0xcd3ae7[_0x41a26e(0x127)]?'\x20('+_0xcd3ae7['name']+')':'')};},async 'dryRun'(_0xc4c399){const _0x23a60f=a10_0x532a01,_0x551f5b=buildArtifactInput(_0xc4c399);return dryRun(_0x23a60f(0x126),_0x23a60f(0x111))[_0x23a60f(0x114)]({'appCode':_0xc4c399[_0x23a60f(0x12c)],..._0x551f5b})[_0x23a60f(0x110)](_0x23a60f(0x130))[_0x23a60f(0x134)]();},'writeEventSubject'(_0x496cb8){const _0x4866c0=a10_0x532a01,_0x3aec36=_0x496cb8[_0x4866c0(0x102)]?.['id'];if(typeof _0x3aec36!==_0x4866c0(0x136)&&typeof _0x3aec36!=='number')return undefined;return{'kind':'artifact','id':String(_0x3aec36),'action':'create'};}},artifactUpdate={'service':'artifact','command':a10_0x532a01(0x133),'description':'根据本地源码文件更新\x20react_module\x20类型的\x20Artifact','risk':a10_0x532a01(0xe7),'confirmationDescription':'保存新的\x20Artifact\x20源码并重新编译;应用中的内嵌模块展示和交互可能立即发生变化。','flags':[{...ID_FLAG,'description':'Artifact\x20ID'},FILE_FLAG,ARTIFACT_NAME_FLAG,METADATA_FLAG],async 'execute'(_0x3686d7){const _0x42c8fb=a10_0x532a01,_0x202679=_0x3686d7[_0x42c8fb(0x116)]('id'),_0x563cca=buildArtifactInput(_0x3686d7),_0x574d73=await updateRuntimeArtifact(_0x202679,_0x3686d7['appCode'],_0x563cca);return{'ok':!![],'data':detailArtifact(_0x574d73),'message':_0x42c8fb(0x128)+_0x574d73['id']+(_0x574d73['name']?'\x20('+_0x574d73[_0x42c8fb(0x127)]+')':'')};},async 'dryRun'(_0x2717bd){const _0x2d8d3a=a10_0x532a01,_0x5d17b2=_0x2717bd[_0x2d8d3a(0x116)]('id'),_0x2501b7=buildArtifactInput(_0x2717bd);return dryRun(_0x2d8d3a(0x126),_0x2d8d3a(0x122)+_0x5d17b2+_0x2d8d3a(0x132))[_0x2d8d3a(0x114)]({'appCode':_0x2717bd[_0x2d8d3a(0x12c)],..._0x2501b7})[_0x2d8d3a(0x110)](_0x2d8d3a(0x113)+_0x5d17b2)[_0x2d8d3a(0x134)]();},'writeEventSubject'(_0x19e59f){const _0x57f428=a10_0x532a01,_0x376a33=_0x19e59f[_0x57f428(0x102)]?.['id'];if(typeof _0x376a33!==_0x57f428(0x136)&&typeof _0x376a33!==_0x57f428(0x131))return undefined;return{'kind':_0x57f428(0x129),'id':String(_0x376a33),'action':_0x57f428(0x133)};}};export const artifactDefinitions=[artifactList,artifactDetail,artifactCreate,artifactUpdate];
|
|
1
|
+
const a10_0x2f2ff1=a10_0x120b;(function(_0x69f0bb,_0x1cfd7a){const _0x345bef=a10_0x120b,_0x52facb=_0x69f0bb();while(!![]){try{const _0x26ed84=parseInt(_0x345bef(0x219))/0x1+parseInt(_0x345bef(0x1f4))/0x2+parseInt(_0x345bef(0x209))/0x3*(parseInt(_0x345bef(0x1da))/0x4)+parseInt(_0x345bef(0x1f6))/0x5+parseInt(_0x345bef(0x212))/0x6+parseInt(_0x345bef(0x221))/0x7+parseInt(_0x345bef(0x1e3))/0x8*(-parseInt(_0x345bef(0x21e))/0x9);if(_0x26ed84===_0x1cfd7a)break;else _0x52facb['push'](_0x52facb['shift']());}catch(_0x29ee0d){_0x52facb['push'](_0x52facb['shift']());}}}(a10_0x575a,0xbdcab));import{existsSync,readFileSync,statSync}from'node:fs';import{createRuntimeArtifact,getRuntimeArtifact,listRuntimeArtifacts,updateRuntimeArtifact}from'../../core/api-client.js';import{ID_FLAG,VERBOSE_FLAG}from'../../commands/common/flags.js';function a10_0x575a(){const _0x2e7007=['object','POST','build','Optional\x20source\x20filter,\x20for\x20example\x20AGENT','list','dayjs','File\x20not\x20found:\x20','808qcxEBK','updateTime','body','content','data','createTime','File\x20is\x20not\x20a\x20regular\x20file:\x20','utf8','some','.\x20Unsupported:\x20','Artifact\x20display\x20name','@ant-design/icons','trim','metadata','Created\x20Artifact\x20','bool','update','2404900fEoGOo','Optional\x20favorite-state\x20filter','1608220lieiqE','Artifact\x20ID','artifactType','react','react_module','favorite','Preview:\x20create\x20react_module\x20Artifact','string','str','includes','detail','flag','length','validation','write','lodash','根据本地源码文件创建\x20react_module\x20类型的\x20Artifact','number','create','1299dMfznj','react_module\x20imports\x20are\x20limited\x20to:\x20','/update','read','source','verbose','boolean','description','name','1652676YIbYmO','isFile','add','file','compiledContent','react-dom','artifact','154842xsDJVx','保存新的\x20Artifact\x20源码并进行编译;成功后将在当前应用中新增可展示的内嵌模块。','num','--metadata\x20must\x20be\x20a\x20JSON\x20object.','split','213957kNrYav','Artifact\x20metadata\x20as\x20JSON\x20object;\x20compiledContent\x20is\x20stripped','join','5813367eEDrGC','根据本地源码文件更新\x20react_module\x20类型的\x20Artifact','antd','Path\x20to\x20a\x20local\x20UTF-8\x20React\x20module\x20source\x20file','List\x20current-app\x20react_module\x20Artifacts','deleted','react_module\x20must\x20be\x20an\x20embeddable\x20React\x20module,\x20not\x20full\x20HTML\x20or\x20a\x20ReactDOM/createRoot\x20mount\x20entry.','parse','保存新的\x20Artifact\x20源码并重新编译;应用中的内嵌模块展示和交互可能立即发生变化。','3636cGZhEw','appCode'];a10_0x575a=function(){return _0x2e7007;};return a10_0x575a();}import{CliErrors}from'../../errors.js';import{dryRun}from'../../framework/dryrun.js';const ARTIFACT_TYPE_REACT_MODULE=a10_0x2f2ff1(0x1fa),ARTIFACT_SOURCE_AGENT='AGENT',ALLOWED_REACT_MODULE_IMPORTS=[a10_0x2f2ff1(0x1f9),a10_0x2f2ff1(0x217),a10_0x2f2ff1(0x205),a10_0x2f2ff1(0x1e1),a10_0x2f2ff1(0x223),a10_0x2f2ff1(0x1ee)];export const ALLOWED_REACT_MODULE_IMPORTS_TEXT=ALLOWED_REACT_MODULE_IMPORTS[a10_0x2f2ff1(0x220)](',\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_0x2f2ff1(0x215),'type':a10_0x2f2ff1(0x1fd),'required':!![],'description':a10_0x2f2ff1(0x224)},ARTIFACT_NAME_FLAG={'name':'name','type':'string','description':a10_0x2f2ff1(0x1ed)},METADATA_FLAG={'name':a10_0x2f2ff1(0x1f0),'type':a10_0x2f2ff1(0x1fd),'description':a10_0x2f2ff1(0x21f)};function isPlainObject(_0x35108b){const _0x3407ae=a10_0x2f2ff1;return typeof _0x35108b===_0x3407ae(0x1dc)&&_0x35108b!==null&&!Array['isArray'](_0x35108b);}function readSourceFile(_0x13157b){const _0x2bda03=a10_0x2f2ff1;if(!_0x13157b)throw CliErrors[_0x2bda03(0x203)]('File\x20path\x20is\x20required.');if(!existsSync(_0x13157b))throw CliErrors[_0x2bda03(0x203)](_0x2bda03(0x1e2)+_0x13157b);if(!statSync(_0x13157b)[_0x2bda03(0x213)]())throw CliErrors['validation'](_0x2bda03(0x1e9)+_0x13157b);const _0x696647=readFileSync(_0x13157b,_0x2bda03(0x1ea));return validateReactModuleSource(_0x696647),_0x696647;}function parseMetadata(_0x361722){const _0x49fe01=a10_0x2f2ff1;if(!_0x361722)return undefined;let _0x16bb95;try{_0x16bb95=JSON[_0x49fe01(0x1d8)](_0x361722);}catch{throw CliErrors[_0x49fe01(0x203)]('Invalid\x20JSON\x20for\x20--metadata:\x20'+_0x361722);}if(!isPlainObject(_0x16bb95))throw CliErrors[_0x49fe01(0x203)](_0x49fe01(0x21c));const _0x406c7d={..._0x16bb95};return delete _0x406c7d[_0x49fe01(0x216)],_0x406c7d;}function a10_0x120b(_0x4fea16,_0x480585){_0x4fea16=_0x4fea16-0x1d7;const _0x575a82=a10_0x575a();let _0x120baf=_0x575a82[_0x4fea16];return _0x120baf;}function getPackageName(_0x36834a){const _0x1a3337=a10_0x2f2ff1;if(_0x36834a['startsWith']('@')){const [_0x48e4b3,_0x4bcad2]=_0x36834a[_0x1a3337(0x21d)]('/');return _0x48e4b3&&_0x4bcad2?_0x48e4b3+'/'+_0x4bcad2:_0x36834a;}return _0x36834a['split']('/')[0x0]||_0x36834a;}function validateAllowedImports(_0x2107b5){const _0x4b14e7=a10_0x2f2ff1,_0x38a21a=new Set();for(const _0x128bfe of IMPORT_SOURCE_PATTERNS){_0x128bfe['lastIndex']=0x0;let _0x472087;while((_0x472087=_0x128bfe['exec'](_0x2107b5))!==null){const _0x46449d=_0x472087[0x1]?.['trim']();_0x46449d&&_0x38a21a[_0x4b14e7(0x214)](_0x46449d);}}const _0x3d00a6=[..._0x38a21a]['map'](getPackageName)['filter'](_0x35c63c=>!ALLOWED_REACT_MODULE_IMPORTS[_0x4b14e7(0x1ff)](_0x35c63c));if(_0x3d00a6[_0x4b14e7(0x202)]>0x0)throw CliErrors[_0x4b14e7(0x203)](_0x4b14e7(0x20a)+ALLOWED_REACT_MODULE_IMPORTS_TEXT+_0x4b14e7(0x1ec)+[...new Set(_0x3d00a6)][_0x4b14e7(0x220)](',\x20'));}export function validateReactModuleSource(_0x184615){const _0x347a3a=a10_0x2f2ff1;if(!_0x184615[_0x347a3a(0x1ef)]())throw CliErrors[_0x347a3a(0x203)]('Artifact\x20source\x20file\x20is\x20blank.');if(PAGE_LEVEL_PATTERNS[_0x347a3a(0x1eb)](_0x135790=>_0x135790['test'](_0x184615)))throw CliErrors[_0x347a3a(0x203)](_0x347a3a(0x1d7));validateAllowedImports(_0x184615);}function buildArtifactInput(_0x2ebb16){const _0x5108f5=a10_0x2f2ff1,_0x309bb7=readSourceFile(_0x2ebb16[_0x5108f5(0x1fe)](_0x5108f5(0x215))),_0x5b7c08=_0x2ebb16[_0x5108f5(0x1fe)](_0x5108f5(0x211))[_0x5108f5(0x1ef)](),_0x5080ec=parseMetadata(_0x2ebb16[_0x5108f5(0x1fe)](_0x5108f5(0x1f0)));return{'artifactType':ARTIFACT_TYPE_REACT_MODULE,..._0x5b7c08?{'name':_0x5b7c08}:{},'content':_0x309bb7,..._0x5080ec?{'metadata':_0x5080ec}:{},'source':ARTIFACT_SOURCE_AGENT};}function summarizeArtifact(_0x43765b){const _0x34448d=a10_0x2f2ff1;return{'id':_0x43765b['id'],'name':_0x43765b[_0x34448d(0x211)],'artifactType':_0x43765b[_0x34448d(0x1f8)],'source':_0x43765b[_0x34448d(0x20d)],'favorite':_0x43765b['favorite'],'deleted':_0x43765b[_0x34448d(0x226)],'createTime':_0x43765b[_0x34448d(0x1e8)],'updateTime':_0x43765b[_0x34448d(0x1e4)]};}function detailArtifact(_0x32675e){const _0x196f8b=a10_0x2f2ff1;return{'id':_0x32675e['id'],'appCode':_0x32675e['appCode'],'name':_0x32675e[_0x196f8b(0x211)],'artifactType':_0x32675e[_0x196f8b(0x1f8)],'source':_0x32675e[_0x196f8b(0x20d)],'favorite':_0x32675e[_0x196f8b(0x1fb)],'deleted':_0x32675e[_0x196f8b(0x226)],'content':_0x32675e[_0x196f8b(0x1e6)]??'','compiledContent':_0x32675e[_0x196f8b(0x216)],'metadata':_0x32675e[_0x196f8b(0x1f0)]??{},'createTime':_0x32675e[_0x196f8b(0x1e8)],'updateTime':_0x32675e[_0x196f8b(0x1e4)]};}function readFavoriteFlag(_0x941bb1){const _0x1bd5a4=a10_0x2f2ff1,_0x106036=_0x941bb1[_0x1bd5a4(0x201)](_0x1bd5a4(0x1fb));return _0x106036===undefined||_0x106036===null||_0x106036===''?undefined:_0x941bb1[_0x1bd5a4(0x1f2)](_0x1bd5a4(0x1fb));}const artifactList={'service':'artifact','command':a10_0x2f2ff1(0x1e0),'description':a10_0x2f2ff1(0x225),'risk':'read','flags':[{'name':a10_0x2f2ff1(0x20d),'type':a10_0x2f2ff1(0x1fd),'description':a10_0x2f2ff1(0x1df)},{'name':a10_0x2f2ff1(0x1fb),'type':a10_0x2f2ff1(0x20f),'description':a10_0x2f2ff1(0x1f5)},VERBOSE_FLAG],async 'execute'(_0x556ab3){const _0x33dc12=a10_0x2f2ff1,_0x1a2c6f=await listRuntimeArtifacts(_0x556ab3[_0x33dc12(0x1db)],{'artifactType':ARTIFACT_TYPE_REACT_MODULE,..._0x556ab3[_0x33dc12(0x1fe)](_0x33dc12(0x20d))?{'source':_0x556ab3['str'](_0x33dc12(0x20d))}:{},...readFavoriteFlag(_0x556ab3)!==undefined?{'favorite':readFavoriteFlag(_0x556ab3)}:{}});return{'ok':!![],'data':{'total':_0x1a2c6f[_0x33dc12(0x202)],'items':_0x556ab3[_0x33dc12(0x1f2)](_0x33dc12(0x20e))?_0x1a2c6f:_0x1a2c6f['map'](summarizeArtifact)}};}},artifactDetail={'service':a10_0x2f2ff1(0x218),'command':a10_0x2f2ff1(0x200),'description':'Show\x20one\x20Artifact\x20by\x20id','risk':a10_0x2f2ff1(0x20c),'flags':[{...ID_FLAG,'description':'Artifact\x20ID'}],async 'execute'(_0x516a0c){const _0x5cdc20=a10_0x2f2ff1,_0x540d0a=await getRuntimeArtifact(_0x516a0c[_0x5cdc20(0x21b)]('id'),_0x516a0c[_0x5cdc20(0x1db)]);return{'ok':!![],'data':detailArtifact(_0x540d0a)};}},artifactCreate={'service':a10_0x2f2ff1(0x218),'command':'create','description':a10_0x2f2ff1(0x206),'risk':a10_0x2f2ff1(0x204),'confirmationDescription':a10_0x2f2ff1(0x21a),'flags':[FILE_FLAG,ARTIFACT_NAME_FLAG,METADATA_FLAG],async 'execute'(_0x5e9554){const _0x5aad1f=a10_0x2f2ff1,_0x5245b9=buildArtifactInput(_0x5e9554),_0x195971=await createRuntimeArtifact(_0x5e9554[_0x5aad1f(0x1db)],_0x5245b9);return{'ok':!![],'data':detailArtifact(_0x195971),'message':_0x5aad1f(0x1f1)+_0x195971['id']+(_0x195971[_0x5aad1f(0x211)]?'\x20('+_0x195971[_0x5aad1f(0x211)]+')':'')};},async 'dryRun'(_0x10c095){const _0x1c2396=a10_0x2f2ff1,_0x5985e7=buildArtifactInput(_0x10c095);return dryRun(_0x1c2396(0x1dd),'/client/artifact/create')[_0x1c2396(0x1e5)]({'appCode':_0x10c095[_0x1c2396(0x1db)],..._0x5985e7})['description'](_0x1c2396(0x1fc))['build']();},'writeEventSubject'(_0x285ddd){const _0xfa571c=a10_0x2f2ff1,_0x35b36e=_0x285ddd[_0xfa571c(0x1e7)]?.['id'];if(typeof _0x35b36e!==_0xfa571c(0x1fd)&&typeof _0x35b36e!=='number')return undefined;return{'kind':'artifact','id':String(_0x35b36e),'action':_0xfa571c(0x208)};}},artifactUpdate={'service':a10_0x2f2ff1(0x218),'command':'update','description':a10_0x2f2ff1(0x222),'risk':'write','confirmationDescription':a10_0x2f2ff1(0x1d9),'flags':[{...ID_FLAG,'description':a10_0x2f2ff1(0x1f7)},FILE_FLAG,ARTIFACT_NAME_FLAG,METADATA_FLAG],async 'execute'(_0x5a9473){const _0xa0c99d=a10_0x2f2ff1,_0x479c73=_0x5a9473[_0xa0c99d(0x21b)]('id'),_0x5d4fda=buildArtifactInput(_0x5a9473),_0x4fb938=await updateRuntimeArtifact(_0x479c73,_0x5a9473[_0xa0c99d(0x1db)],_0x5d4fda);return{'ok':!![],'data':detailArtifact(_0x4fb938),'message':'Updated\x20Artifact\x20'+_0x4fb938['id']+(_0x4fb938[_0xa0c99d(0x211)]?'\x20('+_0x4fb938[_0xa0c99d(0x211)]+')':'')};},async 'dryRun'(_0x1b0fa9){const _0x5b6444=a10_0x2f2ff1,_0x57abd7=_0x1b0fa9[_0x5b6444(0x21b)]('id'),_0xc64cdf=buildArtifactInput(_0x1b0fa9);return dryRun('POST','/client/artifact/'+_0x57abd7+_0x5b6444(0x20b))[_0x5b6444(0x1e5)]({'appCode':_0x1b0fa9[_0x5b6444(0x1db)],..._0xc64cdf})[_0x5b6444(0x210)]('Preview:\x20update\x20react_module\x20Artifact\x20'+_0x57abd7)[_0x5b6444(0x1de)]();},'writeEventSubject'(_0x49e093){const _0x48a44e=a10_0x2f2ff1,_0x51630a=_0x49e093[_0x48a44e(0x1e7)]?.['id'];if(typeof _0x51630a!==_0x48a44e(0x1fd)&&typeof _0x51630a!==_0x48a44e(0x207))return undefined;return{'kind':_0x48a44e(0x218),'id':String(_0x51630a),'action':_0x48a44e(0x1f3)};}};export const artifactDefinitions=[artifactList,artifactDetail,artifactCreate,artifactUpdate];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const a11_0x14c6dd=a11_0x1468;(function(_0xd26a98,_0x1d271f){const _0x12eea2=a11_0x1468,_0x56aa63=_0xd26a98();while(!![]){try{const _0x27b61b=parseInt(_0x12eea2(0x1d5))/0x1*(-parseInt(_0x12eea2(0x217))/0x2)+parseInt(_0x12eea2(0x1d2))/0x3*(-parseInt(_0x12eea2(0x20a))/0x4)+parseInt(_0x12eea2(0x1e9))/0x5*(parseInt(_0x12eea2(0x210))/0x6)+parseInt(_0x12eea2(0x1cd))/0x7+parseInt(_0x12eea2(0x1f5))/0x8+-parseInt(_0x12eea2(0x206))/0x9*(-parseInt(_0x12eea2(0x202))/0xa)+parseInt(_0x12eea2(0x1e7))/0xb;if(_0x27b61b===_0x1d271f)break;else _0x56aa63['push'](_0x56aa63['shift']());}catch(_0x267cb4){_0x56aa63['push'](_0x56aa63['shift']());}}}(a11_0x5aef,0xeb0ef));import{existsSync,mkdirSync,readFileSync,unlinkSync,writeFileSync}from'node:fs';import{dirname}from'node:path';function a11_0x1468(_0x211e02,_0x5de48f){_0x211e02=_0x211e02-0x1c5;const _0x5aef91=a11_0x5aef();let _0x146881=_0x5aef91[_0x211e02];return _0x146881;}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 a11_0x5aef(){const _0xbf8c25=['randomUUID','string','11301YvqpXI','apiError','AccessKey\x20saved\x20to\x20','31bFmNpF','scope','stderr','将启动设备码授权流程;授权成功后会把获取到的\x20AccessKey\x20保存到所选\x20Lovrabet\x20配置。确认界面不会显示设备码或密钥。','status','write','object','\x20remaining','stringify','getTime','global-default','expired','source','abort','padStart','Write\x20to\x20project\x20config','data','Waiting\x20for\x20authorization\x20(timeout:\x2010\x20minutes,\x20Ctrl+C\x20to\x20cancel)...','7304550cwLoIx','auth','10qgMPFa','code','),\x20retrying...','POST','/.device-auth','createdAt','Invalid\x20device\x20auth\x20response','validation','lovrabet-cli','Device\x20code\x20expired.\x20Run\x20`lovrabet\x20auth\x20device`\x20to\x20get\x20a\x20new\x20code.','Already\x20authorized.\x20Use\x20`lovrabet\x20auth\x20status`\x20to\x20verify.','Verify:\x20','6606912yATkpx','once','/device-auth?code=','Device\x20auth\x20API\x20unreachable\x20after\x20multiple\x20retries.','Invalid\x20access_key\x20returned\x20by\x20server.','\x0dWaiting\x20for\x20authorization...\x20','The\x20device\x20code\x20is\x20valid\x20for\x2010\x20minutes.','networkError','project','AbortError','\x20config.','Device\x20auth\x20API\x20returned\x20HTTP\x20','bool','5070gxjmAT','global','now','/api/device-auth/token','4302ItgJBj','json','parse','After\x20authorizing,\x20re-run:\x20','1020exAFtM','nonInteractive','signal','Print\x20URL\x20to\x20stdout\x20and\x20exit\x20(for\x20WorkBuddy\x20integration)','Device\x20auth\x20API\x20error\x20(','boolean','1096410slnPBc','str','cancelled','removeListener','application/json','Device\x20authorization\x20URL\x20printed.\x20Complete\x20authorization\x20in\x20browser,\x20then\x20re-run.','通过设备码流程完成授权(在浏览器中操作,无需复制粘贴)','118828tDgKDT','SIGINT','utf8','access_key','aborted','device','homeDirName','Write\x20to\x20global\x20config\x20(default)','floor','url-only','11672416fkRvQC','Open\x20this\x20URL\x20in\x20your\x20browser\x20to\x20authorize:','trim'];a11_0x5aef=function(){return _0xbf8c25;};return a11_0x5aef();}function resolveAuthScopeFlags(_0x315f32){const _0x16834b=a11_0x1468;return toScopeFlags(resolveConfigScope({'explicitGlobal':_0x315f32[_0x16834b(0x201)](_0x16834b(0x203)),'explicitProject':_0x315f32[_0x16834b(0x201)](_0x16834b(0x1fd)),'policy':_0x16834b(0x1df)}));}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 _0x5e495f=a11_0x1468;return crypto[_0x5e495f(0x1d0)]();}export function buildDeviceAuthUrl(_0x580056,_0x1e8430,_0x52f291=a11_0x14c6dd(0x1f1)){const _0x29b695=a11_0x14c6dd;return _0x580056+_0x29b695(0x1f7)+encodeURIComponent(_0x1e8430)+'&source='+encodeURIComponent(_0x52f291);}export function getDeviceCodePath(){const _0x22bd5c=a11_0x14c6dd;return homedir()+'/'+PRODUCT_CONFIG[_0x22bd5c(0x1c9)]+_0x22bd5c(0x1ed);}export function readStoredDeviceCode(){const _0x7f7d92=a11_0x14c6dd,_0x5257b4=getDeviceCodePath();if(!existsSync(_0x5257b4))return null;try{const _0x4d312b=readFileSync(_0x5257b4,{'encoding':_0x7f7d92(0x1c5)}),_0x16dccf=JSON[_0x7f7d92(0x208)](_0x4d312b);if(_0x16dccf&&typeof _0x16dccf['code']===_0x7f7d92(0x1d1)&&typeof _0x16dccf['createdAt']===_0x7f7d92(0x1d1)&&(_0x16dccf[_0x7f7d92(0x1d6)]===_0x7f7d92(0x203)||_0x16dccf[_0x7f7d92(0x1d6)]===_0x7f7d92(0x1fd)))return _0x16dccf;}catch{}return null;}export function writeStoredDeviceCode(_0x857a47,_0x5a15c6){const _0x42a4b3=a11_0x14c6dd,_0xcdeecc=getDeviceCodePath(),_0x55d07d=dirname(_0xcdeecc);!existsSync(_0x55d07d)&&mkdirSync(_0x55d07d,{'recursive':!![]});const _0x168f86={'code':_0x857a47,'createdAt':new Date()['toISOString'](),'scope':_0x5a15c6};writeFileSync(_0xcdeecc,JSON[_0x42a4b3(0x1dd)](_0x168f86),{'encoding':_0x42a4b3(0x1c5),'mode':0x180});}export function deleteStoredDeviceCode(){const _0x3411b=getDeviceCodePath();try{unlinkSync(_0x3411b);}catch{}}export function isStoredDeviceCodeExpired(_0x4c8f76){const _0x40f27a=a11_0x14c6dd;return Date[_0x40f27a(0x204)]()-new Date(_0x4c8f76[_0x40f27a(0x1ee)])[_0x40f27a(0x1de)]()>DEVICE_CODE_TTL_MS;}export async function fetchDeviceToken(_0x31520c,_0x54b0bd){const _0x47a8c1=a11_0x14c6dd,_0x194f9c=_0x31520c+_0x47a8c1(0x205),_0x3b1aa8=new AbortController(),_0x5be41e=setTimeout(()=>_0x3b1aa8['abort'](),0x2710),_0x3eca4e=await fetch(_0x194f9c,{'method':_0x47a8c1(0x1ec),'headers':{'Content-Type':_0x47a8c1(0x214)},'body':JSON[_0x47a8c1(0x1dd)]({'code':_0x54b0bd}),'signal':_0x3b1aa8[_0x47a8c1(0x20c)]});clearTimeout(_0x5be41e);if(!_0x3eca4e['ok'])throw CliErrors['networkError'](_0x47a8c1(0x200)+_0x3eca4e[_0x47a8c1(0x1d9)]);const _0x33c75b=await _0x3eca4e[_0x47a8c1(0x207)](),_0x42b219=_0x33c75b[_0x47a8c1(0x1e5)]&&typeof _0x33c75b[_0x47a8c1(0x1e5)]===_0x47a8c1(0x1db)?_0x33c75b[_0x47a8c1(0x1e5)]:_0x33c75b;if(!_0x42b219||typeof _0x42b219[_0x47a8c1(0x1d9)]!==_0x47a8c1(0x1d1))throw CliErrors['apiError'](_0x47a8c1(0x1ef));return{'status':_0x42b219['status'],'access_key':typeof _0x42b219[_0x47a8c1(0x1c6)]==='string'?_0x42b219[_0x47a8c1(0x1c6)]:undefined};}export async function pollDeviceToken(_0x351b4a,_0x41cb78,_0x4c17ca){const _0x2e710b=a11_0x14c6dd;let _0x3fc292=0x0;for(let _0x3d2343=0x0;_0x3d2343<MAX_POLLS;_0x3d2343++){if(_0x4c17ca[_0x2e710b(0x1c7)])throw CliErrors[_0x2e710b(0x212)]('Device\x20authorization\x20cancelled.');let _0x3f6e39;try{_0x3f6e39=await fetchDeviceToken(_0x351b4a,_0x41cb78);}catch(_0x59013a){if(_0x59013a instanceof Error&&_0x59013a['name']===_0x2e710b(0x1fe))throw CliErrors[_0x2e710b(0x212)]('Device\x20authorization\x20cancelled.');_0x3fc292++;if(_0x3fc292>=MAX_CONSECUTIVE_NETWORK_ERRORS)throw CliErrors[_0x2e710b(0x1fc)](_0x2e710b(0x1f8));writeCliSideChannelLine(_0x2e710b(0x20e)+_0x3fc292+'/'+MAX_CONSECUTIVE_NETWORK_ERRORS+_0x2e710b(0x1eb)),await sleep(POLL_INTERVAL_MS);continue;}_0x3fc292=0x0;if(_0x3f6e39['status']==='success'){if(!_0x3f6e39[_0x2e710b(0x1c6)])throw CliErrors[_0x2e710b(0x1d3)](_0x2e710b(0x1f9));return _0x3f6e39[_0x2e710b(0x1c6)];}if(_0x3f6e39[_0x2e710b(0x1d9)]===_0x2e710b(0x1e0)){deleteStoredDeviceCode();throw CliErrors[_0x2e710b(0x1f0)](_0x2e710b(0x1f2));}const _0x2d6612=(_0x3d2343+0x1)*POLL_INTERVAL_MS,_0x569465=DEVICE_CODE_TTL_MS-_0x2d6612,_0x29ae67=Math['floor'](_0x569465/0xea60),_0x10c0d4=Math[_0x2e710b(0x1cb)](_0x569465%0xea60/0x3e8);process[_0x2e710b(0x1d7)][_0x2e710b(0x1da)](_0x2e710b(0x1fa)+_0x29ae67+':'+String(_0x10c0d4)[_0x2e710b(0x1e3)](0x2,'0')+_0x2e710b(0x1dc)),await sleep(POLL_INTERVAL_MS);}deleteStoredDeviceCode();throw CliErrors[_0x2e710b(0x1f0)]('Device\x20authorization\x20timed\x20out\x20after\x2010\x20minutes.\x20Run\x20`lovrabet\x20auth\x20device`\x20to\x20get\x20a\x20new\x20code.');}function sleep(_0x3cc538){return new Promise(_0x32d9e6=>setTimeout(_0x32d9e6,_0x3cc538));}export const authDeviceDefinition={'service':a11_0x14c6dd(0x1e8),'command':a11_0x14c6dd(0x1c8),'description':a11_0x14c6dd(0x216),'risk':a11_0x14c6dd(0x1da),'confirmationDescription':a11_0x14c6dd(0x1d8),'requiresAuth':![],'requiresAppCode':![],'hasFormat':![],'flags':[{'name':a11_0x14c6dd(0x203),'type':a11_0x14c6dd(0x20f),'description':a11_0x14c6dd(0x1ca),'default':!![]},{'name':'project','type':a11_0x14c6dd(0x20f),'description':a11_0x14c6dd(0x1e4),'default':![]},{'name':a11_0x14c6dd(0x1e1),'type':a11_0x14c6dd(0x1d1),'description':'App\x20name\x20shown\x20on\x20authorization\x20page\x20(default:\x20lovrabet)','default':a11_0x14c6dd(0x1f1)},{'name':a11_0x14c6dd(0x1cc),'type':'boolean','description':a11_0x14c6dd(0x20d),'default':![]}],async 'execute'(_0x76d196){const _0x2bc9aa=a11_0x14c6dd,_0x184958=resolveAuthScopeFlags(_0x76d196),_0x12bd42=_0x184958[_0x2bc9aa(0x203)]?_0x2bc9aa(0x203):_0x2bc9aa(0x1fd),_0x330ca3=readScopedConfig(_0x184958);if(_0x330ca3['accessKey'])return{'ok':!![],'message':_0x2bc9aa(0x1f3)};const _0x3bc5d4=(_0x76d196[_0x2bc9aa(0x211)](_0x2bc9aa(0x1e1))||'lovrabet-cli')[_0x2bc9aa(0x1cf)](),_0x4cab73=getUserDomain(),_0x297aba=readStoredDeviceCode(),_0xf89f0a=_0x297aba&&!isStoredDeviceCodeExpired(_0x297aba)?_0x297aba[_0x2bc9aa(0x1ea)]:((()=>{const _0x2aa622=generateDeviceCode();return writeStoredDeviceCode(_0x2aa622,_0x12bd42),_0x2aa622;})()),_0x4138b2=buildDeviceAuthUrl(_0x4cab73,_0xf89f0a,_0x3bc5d4);if(_0x76d196[_0x2bc9aa(0x201)]('url-only'))return console['log'](_0x4138b2),{'ok':!![]};writeCliSideChannelLine(_0x2bc9aa(0x1ce)),writeCliSideChannelLine(''),writeCliSideChannelLine(_0x4138b2),writeCliSideChannelLine(''),writeCliSideChannelLine(_0x2bc9aa(0x1fb));if(_0x76d196[_0x2bc9aa(0x20b)])return writeCliSideChannelLine(_0x2bc9aa(0x209)+CLI_BIN_NAME+'\x20auth\x20device'),{'ok':!![],'message':_0x2bc9aa(0x215)};writeCliSideChannelLine(_0x2bc9aa(0x1e6));const _0x35424e=new AbortController(),_0x5914dd=()=>{const _0x5aad1d=_0x2bc9aa;_0x35424e[_0x5aad1d(0x1e2)](),process[_0x5aad1d(0x213)](_0x5aad1d(0x218),_0x5914dd);};process[_0x2bc9aa(0x1f6)](_0x2bc9aa(0x218),_0x5914dd);let _0x4d2ba8;try{_0x4d2ba8=await pollDeviceToken(_0x4cab73,_0xf89f0a,_0x35424e['signal']);}finally{process[_0x2bc9aa(0x213)]('SIGINT',_0x5914dd);}if(!ACCESS_KEY_PATTERN['test'](_0x4d2ba8))throw CliErrors[_0x2bc9aa(0x1d3)](_0x2bc9aa(0x1f9));const _0x592d0f=readScopedConfig(_0x184958);return _0x592d0f['accessKey']=_0x4d2ba8,writeScopedConfig(_0x592d0f,_0x184958),deleteStoredDeviceCode(),process[_0x2bc9aa(0x1d7)]['write']('\x0a'),writeCliSideChannelLine(_0x2bc9aa(0x1d4)+_0x12bd42+_0x2bc9aa(0x1ff)),writeCliSideChannelLine(_0x2bc9aa(0x1f4)+CLI_BIN_NAME+'\x20auth\x20status'),{'ok':!![],'message':'Device\x20authorization\x20successful.'};}};
|
|
1
|
+
const a11_0x3e0177=a11_0x5adb;(function(_0x211f65,_0x309c8e){const _0x26432a=a11_0x5adb,_0x2196c8=_0x211f65();while(!![]){try{const _0x1b9ea6=-parseInt(_0x26432a(0xa6))/0x1*(-parseInt(_0x26432a(0xe3))/0x2)+parseInt(_0x26432a(0xaf))/0x3*(parseInt(_0x26432a(0xab))/0x4)+-parseInt(_0x26432a(0xce))/0x5+-parseInt(_0x26432a(0xd6))/0x6+parseInt(_0x26432a(0xd4))/0x7+-parseInt(_0x26432a(0xe5))/0x8+parseInt(_0x26432a(0xd0))/0x9;if(_0x1b9ea6===_0x309c8e)break;else _0x2196c8['push'](_0x2196c8['shift']());}catch(_0x792234){_0x2196c8['push'](_0x2196c8['shift']());}}}(a11_0x5cb1,0x3639a));function a11_0x5adb(_0x5b90eb,_0x2cedc2){_0x5b90eb=_0x5b90eb-0xa2;const _0x5cb105=a11_0x5cb1();let _0x5adb49=_0x5cb105[_0x5b90eb];return _0x5adb49;}import{existsSync,mkdirSync,readFileSync,unlinkSync,writeFileSync}from'node:fs';import{dirname}from'node:path';import{homedir}from'node:os';import{readScopedConfig,writeScopedConfig}from'../../context.js';import{CLI_BIN_NAME}from'../../constant/cli.js';import{PRODUCT_CONFIG}from'../../constant/product.js';import{getUserDomain}from'../../constant/domain.js';import{CliErrors}from'../../errors.js';import{resolveConfigScope,toScopeFlags}from'../../commands/common/config-policy.js';import{writeCliSideChannelLine}from'../../utils/write-cli-side-channel.js';function resolveAuthScopeFlags(_0x384244){const _0x2db07f=a11_0x5adb;return toScopeFlags(resolveConfigScope({'explicitGlobal':_0x384244[_0x2db07f(0xbb)]('global'),'explicitProject':_0x384244[_0x2db07f(0xbb)]('project'),'policy':_0x2db07f(0xcd)}));}const ACCESS_KEY_PATTERN=/^ak_[A-Za-z0-9]{16,}$/,DEVICE_CODE_TTL_MS=0x927c0,POLL_INTERVAL_MS=0xbb8,MAX_POLLS=0xc8,MAX_CONSECUTIVE_NETWORK_ERRORS=0x5;export function generateDeviceCode(){return crypto['randomUUID']();}export function buildDeviceAuthUrl(_0x2a94dc,_0x58cc52,_0x5f0b42=a11_0x3e0177(0xa4)){const _0x3d93c5=a11_0x3e0177;return _0x2a94dc+_0x3d93c5(0xdc)+encodeURIComponent(_0x58cc52)+_0x3d93c5(0xea)+encodeURIComponent(_0x5f0b42);}export function getDeviceCodePath(){const _0x5722e6=a11_0x3e0177;return homedir()+'/'+PRODUCT_CONFIG['homeDirName']+_0x5722e6(0xa2);}export function readStoredDeviceCode(){const _0x5a5255=a11_0x3e0177,_0x4fc614=getDeviceCodePath();if(!existsSync(_0x4fc614))return null;try{const _0x1394c6=readFileSync(_0x4fc614,{'encoding':_0x5a5255(0xe1)}),_0xe0967=JSON[_0x5a5255(0xbc)](_0x1394c6);if(_0xe0967&&typeof _0xe0967['code']===_0x5a5255(0xb4)&&typeof _0xe0967[_0x5a5255(0xbe)]===_0x5a5255(0xb4)&&(_0xe0967[_0x5a5255(0xee)]==='global'||_0xe0967[_0x5a5255(0xee)]===_0x5a5255(0xe4)))return _0xe0967;}catch{}return null;}export function writeStoredDeviceCode(_0x1dece7,_0x170eab){const _0x20a32d=a11_0x3e0177,_0x3aba0c=getDeviceCodePath(),_0x4d0cd8=dirname(_0x3aba0c);!existsSync(_0x4d0cd8)&&mkdirSync(_0x4d0cd8,{'recursive':!![]});const _0x581cc7={'code':_0x1dece7,'createdAt':new Date()['toISOString'](),'scope':_0x170eab};writeFileSync(_0x3aba0c,JSON[_0x20a32d(0xc2)](_0x581cc7),{'encoding':_0x20a32d(0xe1),'mode':0x180});}export function deleteStoredDeviceCode(){const _0x183cd8=getDeviceCodePath();try{unlinkSync(_0x183cd8);}catch{}}export function isStoredDeviceCodeExpired(_0x521f8a){const _0x239389=a11_0x3e0177;return Date[_0x239389(0xe2)]()-new Date(_0x521f8a[_0x239389(0xbe)])['getTime']()>DEVICE_CODE_TTL_MS;}function a11_0x5cb1(){const _0x56cb6a=['trim','Print\x20URL\x20to\x20stdout\x20and\x20exit\x20(for\x20WorkBuddy\x20integration)','/api/device-auth/token','status','global','AbortError','data','auth','url-only','global-default','1497770RmKQIp','Already\x20authorized.\x20Use\x20`lovrabet\x20auth\x20status`\x20to\x20verify.','3408687CoOLBg','Invalid\x20access_key\x20returned\x20by\x20server.','Write\x20to\x20project\x20config','expired','224861RpWcUk','str','997344iueUSe','padStart','signal','),\x20retrying...','code','Device\x20authorization\x20URL\x20printed.\x20Complete\x20authorization\x20in\x20browser,\x20then\x20re-run.','/device-auth?code=','After\x20authorizing,\x20re-run:\x20','accessKey','source','abort','utf8','now','2FFMOLD','project','81320DxuIbo','将启动设备码授权流程;授权成功后会把获取到的\x20AccessKey\x20保存到所选\x20Lovrabet\x20配置。确认界面不会显示设备码或密钥。','write','log','POST','&source=','Device\x20auth\x20API\x20returned\x20HTTP\x20','test','floor','scope','access_key','/.device-auth','success','lovrabet-cli','\x20config.','228584NkGuKc','AccessKey\x20saved\x20to\x20','nonInteractive','aborted','Device\x20auth\x20API\x20error\x20(','4596KfpyNv','device','apiError','removeListener','153paIzlV','Device\x20authorization\x20cancelled.','stderr','\x20remaining','json','string','validation','App\x20name\x20shown\x20on\x20authorization\x20page\x20(default:\x20lovrabet)','networkError','SIGINT','boolean','通过设备码流程完成授权(在浏览器中操作,无需复制粘贴)','bool','parse','Waiting\x20for\x20authorization\x20(timeout:\x2010\x20minutes,\x20Ctrl+C\x20to\x20cancel)...','createdAt','The\x20device\x20code\x20is\x20valid\x20for\x2010\x20minutes.','Verify:\x20','\x0dWaiting\x20for\x20authorization...\x20','stringify','Device\x20authorization\x20successful.'];a11_0x5cb1=function(){return _0x56cb6a;};return a11_0x5cb1();}export async function fetchDeviceToken(_0x3552c5,_0x168384){const _0x288e28=a11_0x3e0177,_0x2a6687=_0x3552c5+_0x288e28(0xc6),_0xaf7ba5=new AbortController(),_0x291dcf=setTimeout(()=>_0xaf7ba5[_0x288e28(0xe0)](),0x2710),_0x1c84dd=await fetch(_0x2a6687,{'method':_0x288e28(0xe9),'headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'code':_0x168384}),'signal':_0xaf7ba5[_0x288e28(0xd8)]});clearTimeout(_0x291dcf);if(!_0x1c84dd['ok'])throw CliErrors[_0x288e28(0xb7)](_0x288e28(0xeb)+_0x1c84dd[_0x288e28(0xc7)]);const _0x3ea19a=await _0x1c84dd[_0x288e28(0xb3)](),_0x487841=_0x3ea19a[_0x288e28(0xca)]&&typeof _0x3ea19a[_0x288e28(0xca)]==='object'?_0x3ea19a['data']:_0x3ea19a;if(!_0x487841||typeof _0x487841['status']!==_0x288e28(0xb4))throw CliErrors['apiError']('Invalid\x20device\x20auth\x20response');return{'status':_0x487841[_0x288e28(0xc7)],'access_key':typeof _0x487841[_0x288e28(0xef)]===_0x288e28(0xb4)?_0x487841['access_key']:undefined};}export async function pollDeviceToken(_0x43cb10,_0x444408,_0x5f1ae2){const _0x31a2fe=a11_0x3e0177;let _0x2ab74b=0x0;for(let _0x56b5e4=0x0;_0x56b5e4<MAX_POLLS;_0x56b5e4++){if(_0x5f1ae2[_0x31a2fe(0xa9)])throw CliErrors['cancelled'](_0x31a2fe(0xb0));let _0xd08b05;try{_0xd08b05=await fetchDeviceToken(_0x43cb10,_0x444408);}catch(_0x1cb4c2){if(_0x1cb4c2 instanceof Error&&_0x1cb4c2['name']===_0x31a2fe(0xc9))throw CliErrors['cancelled'](_0x31a2fe(0xb0));_0x2ab74b++;if(_0x2ab74b>=MAX_CONSECUTIVE_NETWORK_ERRORS)throw CliErrors[_0x31a2fe(0xb7)]('Device\x20auth\x20API\x20unreachable\x20after\x20multiple\x20retries.');writeCliSideChannelLine(_0x31a2fe(0xaa)+_0x2ab74b+'/'+MAX_CONSECUTIVE_NETWORK_ERRORS+_0x31a2fe(0xd9)),await sleep(POLL_INTERVAL_MS);continue;}_0x2ab74b=0x0;if(_0xd08b05[_0x31a2fe(0xc7)]===_0x31a2fe(0xa3)){if(!_0xd08b05[_0x31a2fe(0xef)])throw CliErrors[_0x31a2fe(0xad)](_0x31a2fe(0xd1));return _0xd08b05['access_key'];}if(_0xd08b05[_0x31a2fe(0xc7)]===_0x31a2fe(0xd3)){deleteStoredDeviceCode();throw CliErrors[_0x31a2fe(0xb5)]('Device\x20code\x20expired.\x20Run\x20`lovrabet\x20auth\x20device`\x20to\x20get\x20a\x20new\x20code.');}const _0x3046e4=(_0x56b5e4+0x1)*POLL_INTERVAL_MS,_0x449340=DEVICE_CODE_TTL_MS-_0x3046e4,_0x498325=Math[_0x31a2fe(0xed)](_0x449340/0xea60),_0x36252b=Math[_0x31a2fe(0xed)](_0x449340%0xea60/0x3e8);process[_0x31a2fe(0xb1)][_0x31a2fe(0xe7)](_0x31a2fe(0xc1)+_0x498325+':'+String(_0x36252b)[_0x31a2fe(0xd7)](0x2,'0')+_0x31a2fe(0xb2)),await sleep(POLL_INTERVAL_MS);}deleteStoredDeviceCode();throw CliErrors['validation']('Device\x20authorization\x20timed\x20out\x20after\x2010\x20minutes.\x20Run\x20`lovrabet\x20auth\x20device`\x20to\x20get\x20a\x20new\x20code.');}function sleep(_0x33fec0){return new Promise(_0x1ef625=>setTimeout(_0x1ef625,_0x33fec0));}export const authDeviceDefinition={'service':a11_0x3e0177(0xcb),'command':a11_0x3e0177(0xac),'description':a11_0x3e0177(0xba),'risk':'write','confirmationDescription':a11_0x3e0177(0xe6),'requiresAuth':![],'requiresAppCode':![],'hasFormat':![],'flags':[{'name':a11_0x3e0177(0xc8),'type':a11_0x3e0177(0xb9),'description':'Write\x20to\x20global\x20config\x20(default)','default':!![]},{'name':a11_0x3e0177(0xe4),'type':a11_0x3e0177(0xb9),'description':a11_0x3e0177(0xd2),'default':![]},{'name':'source','type':a11_0x3e0177(0xb4),'description':a11_0x3e0177(0xb6),'default':a11_0x3e0177(0xa4)},{'name':a11_0x3e0177(0xcc),'type':a11_0x3e0177(0xb9),'description':a11_0x3e0177(0xc5),'default':![]}],async 'execute'(_0x4cf2c3){const _0x32ce4e=a11_0x3e0177,_0x192bb8=resolveAuthScopeFlags(_0x4cf2c3),_0x2be0f0=_0x192bb8[_0x32ce4e(0xc8)]?'global':_0x32ce4e(0xe4),_0x59cf94=readScopedConfig(_0x192bb8);if(_0x59cf94[_0x32ce4e(0xde)])return{'ok':!![],'message':_0x32ce4e(0xcf)};const _0x5c8187=(_0x4cf2c3[_0x32ce4e(0xd5)](_0x32ce4e(0xdf))||_0x32ce4e(0xa4))[_0x32ce4e(0xc4)](),_0x412aa9=getUserDomain(),_0x25acfe=readStoredDeviceCode(),_0x315dad=_0x25acfe&&!isStoredDeviceCodeExpired(_0x25acfe)?_0x25acfe[_0x32ce4e(0xda)]:((()=>{const _0x3c3388=generateDeviceCode();return writeStoredDeviceCode(_0x3c3388,_0x2be0f0),_0x3c3388;})()),_0x95dc33=buildDeviceAuthUrl(_0x412aa9,_0x315dad,_0x5c8187);if(_0x4cf2c3[_0x32ce4e(0xbb)](_0x32ce4e(0xcc)))return console[_0x32ce4e(0xe8)](_0x95dc33),{'ok':!![]};writeCliSideChannelLine('Open\x20this\x20URL\x20in\x20your\x20browser\x20to\x20authorize:'),writeCliSideChannelLine(''),writeCliSideChannelLine(_0x95dc33),writeCliSideChannelLine(''),writeCliSideChannelLine(_0x32ce4e(0xbf));if(_0x4cf2c3[_0x32ce4e(0xa8)])return writeCliSideChannelLine(_0x32ce4e(0xdd)+CLI_BIN_NAME+'\x20auth\x20device'),{'ok':!![],'message':_0x32ce4e(0xdb)};writeCliSideChannelLine(_0x32ce4e(0xbd));const _0x1b96b4=new AbortController(),_0x25bc1d=()=>{const _0x4185d1=_0x32ce4e;_0x1b96b4[_0x4185d1(0xe0)](),process[_0x4185d1(0xae)](_0x4185d1(0xb8),_0x25bc1d);};process['once'](_0x32ce4e(0xb8),_0x25bc1d);let _0x4c0447;try{_0x4c0447=await pollDeviceToken(_0x412aa9,_0x315dad,_0x1b96b4[_0x32ce4e(0xd8)]);}finally{process[_0x32ce4e(0xae)](_0x32ce4e(0xb8),_0x25bc1d);}if(!ACCESS_KEY_PATTERN[_0x32ce4e(0xec)](_0x4c0447))throw CliErrors[_0x32ce4e(0xad)]('Invalid\x20access_key\x20returned\x20by\x20server.');const _0x16a8c4=readScopedConfig(_0x192bb8);return _0x16a8c4['accessKey']=_0x4c0447,writeScopedConfig(_0x16a8c4,_0x192bb8),deleteStoredDeviceCode(),process['stderr'][_0x32ce4e(0xe7)]('\x0a'),writeCliSideChannelLine(_0x32ce4e(0xa7)+_0x2be0f0+_0x32ce4e(0xa5)),writeCliSideChannelLine(_0x32ce4e(0xc0)+CLI_BIN_NAME+'\x20auth\x20status'),{'ok':!![],'message':_0x32ce4e(0xc3)};}};
|