@lovrabet/lovrabet-cli 2.3.5 → 2.3.6-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cli.js +1 -1
- package/lib/commands/api-doc/index.js +1 -1
- package/lib/commands/app/cache.js +1 -1
- package/lib/commands/app/definitions.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/approval/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/init.js +1 -1
- package/lib/commands/config/shared.js +1 -1
- package/lib/commands/data/import-excel.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.d.ts +3 -3
- package/lib/commands/dataset/list.js +1 -1
- package/lib/commands/dataset/sdk-doc.js +1 -1
- package/lib/commands/doctor.js +1 -1
- package/lib/commands/file/index.js +1 -1
- package/lib/commands/init.js +1 -1
- package/lib/commands/kb/index.js +1 -1
- package/lib/commands/logs/index.js +1 -1
- package/lib/commands/notification/config-list.js +1 -1
- package/lib/commands/notification/index.js +1 -1
- package/lib/commands/notification/shared.js +1 -1
- package/lib/commands/ocr/index.js +1 -1
- package/lib/commands/permit/dataset-get.js +1 -1
- package/lib/commands/permit/dataset-set.js +1 -1
- package/lib/commands/permit/index.js +1 -1
- package/lib/commands/permit/page-get.js +1 -1
- package/lib/commands/permit/page-set.js +1 -1
- package/lib/commands/permit/role-menus-set.js +1 -1
- package/lib/commands/permit/role-menus.js +1 -1
- package/lib/commands/permit/shared.js +1 -1
- package/lib/commands/personal-bff/index.js +1 -1
- package/lib/commands/registry.js +1 -1
- package/lib/commands/role/create.js +1 -1
- package/lib/commands/role/delete.js +1 -1
- package/lib/commands/role/detail.js +1 -1
- package/lib/commands/role/index.js +1 -1
- package/lib/commands/role/list.js +1 -1
- package/lib/commands/role/shared.js +1 -1
- package/lib/commands/role/update.js +1 -1
- package/lib/commands/role/user-add.js +1 -1
- package/lib/commands/role/user-remove.js +1 -1
- package/lib/commands/schedule/index.js +1 -1
- package/lib/commands/schema.js +1 -1
- package/lib/commands/service/dynamic.js +1 -1
- package/lib/commands/service/function-name-adapter.js +1 -1
- package/lib/commands/service/index.js +1 -1
- package/lib/commands/service/registry.js +1 -1
- package/lib/commands/skill/commands/create.js +1 -1
- package/lib/commands/skill/commands/diagram.js +1 -1
- package/lib/commands/skill/commands/install.js +1 -1
- package/lib/commands/skill/commands/list.js +1 -1
- package/lib/commands/skill/commands/push.js +1 -1
- package/lib/commands/skill/commands/validate.js +1 -1
- package/lib/commands/skill/diagram.js +1 -1
- package/lib/commands/skill/flags.js +1 -1
- package/lib/commands/skill/index.js +1 -1
- package/lib/commands/skill/manifest-helpers.js +1 -1
- package/lib/commands/skill/push-execute.js +1 -1
- package/lib/commands/skill/push-flow-helpers.js +1 -1
- package/lib/commands/skill/push-retarget.js +1 -1
- package/lib/commands/skill/scopes.js +1 -1
- package/lib/commands/skill/summary.js +1 -1
- package/lib/commands/skill/templates.js +1 -1
- package/lib/commands/skill/validate.js +1 -1
- package/lib/commands/sql/detail.js +1 -1
- package/lib/commands/sql/exec.js +1 -1
- package/lib/commands/sql/index.js +1 -1
- package/lib/commands/update.js +1 -1
- package/lib/commands/user-account/bind.js +1 -1
- package/lib/commands/user-account/index.js +1 -1
- package/lib/commands/workspace/index.js +1 -1
- package/lib/config/domain-config.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/region.js +1 -1
- package/lib/constant/risk.js +1 -1
- package/lib/constant/url.js +1 -1
- package/lib/context.js +1 -1
- package/lib/core/api-client.d.ts +11 -0
- package/lib/core/api-client.js +1 -1
- package/lib/core/db-resolver.js +1 -1
- package/lib/core/kb-search-client.js +1 -1
- package/lib/core/sdk-client.js +1 -1
- package/lib/errors.js +1 -1
- package/lib/framework/access-error.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/generated/official-routing.js +1 -1
- package/lib/generated/routing-contract.js +1 -1
- package/lib/help.js +1 -1
- package/lib/postinstall.js +1 -1
- package/lib/runtime/confirmation.js +1 -1
- package/lib/runtime/event.js +1 -1
- package/lib/runtime/index.js +1 -1
- package/lib/runtime/queue.js +1 -1
- package/lib/runtime/resolve.js +1 -1
- package/lib/services/dataset-import/auto-id-runner.d.ts +3 -1
- package/lib/services/dataset-import/auto-id-runner.js +1 -1
- package/lib/services/dataset-import/excel-reader.js +1 -1
- package/lib/services/dataset-import/image-bytes.d.ts +3 -0
- package/lib/services/dataset-import/image-bytes.js +1 -0
- package/lib/services/dataset-import/image-ooxml.d.ts +10 -0
- package/lib/services/dataset-import/image-ooxml.js +1 -0
- package/lib/services/dataset-import/image-runner.d.ts +48 -0
- package/lib/services/dataset-import/image-runner.js +1 -0
- package/lib/services/dataset-import/metadata.js +1 -1
- package/lib/services/dataset-import/preview.js +1 -1
- package/lib/services/dataset-import/runner.d.ts +10 -1
- package/lib/services/dataset-import/runner.js +1 -1
- package/lib/services/dataset-import/types.d.ts +28 -1
- package/lib/skills/builtin-skill.js +1 -1
- package/lib/skills/npx-skills-add.js +1 -1
- package/lib/skills/runtime-skill-sync/constants.js +1 -1
- package/lib/skills/runtime-skill-sync/fs-utils.js +1 -1
- package/lib/skills/runtime-skill-sync/hashing.js +1 -1
- package/lib/skills/runtime-skill-sync/install-target.js +1 -1
- package/lib/skills/runtime-skill-sync/links.js +1 -1
- package/lib/skills/runtime-skill-sync/list-local.js +1 -1
- package/lib/skills/runtime-skill-sync/local-files.js +1 -1
- package/lib/skills/runtime-skill-sync/materialize.js +1 -1
- package/lib/skills/runtime-skill-sync/metadata.js +1 -1
- package/lib/skills/runtime-skill-sync/paths.js +1 -1
- package/lib/skills/runtime-skill-sync/push.js +1 -1
- package/lib/skills/runtime-skill-sync/scopes.js +1 -1
- package/lib/skills/runtime-skill-sync/zip-codec.js +1 -1
- package/lib/skills/runtime-skill-sync/zip-package.js +1 -1
- package/lib/skills/runtime-skill-sync.js +1 -1
- package/lib/skills/skill-presence.js +1 -1
- package/lib/utils/access-key-redaction.js +1 -1
- package/lib/utils/apply-jq-filter.js +1 -1
- package/lib/utils/cli-version-check.js +1 -1
- package/lib/utils/cli-version-policy.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/positive-safe-integer.js +1 -1
- package/lib/utils/redaction.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 +4 -1
- package/skills/lovrabet/SKILL.md +7 -3
- package/skills/lovrabet/guides/app-resolution.md +2 -0
- package/skills/lovrabet/guides/dataset-and-data-workflow.md +10 -1
- package/skills/lovrabet/references/dataset-discovery-workflow.md +14 -1
- package/skills/lovrabet/references/instant-api-workflow.md +2 -0
- package/skills/lovrabet/references/lovrabet-app.md +2 -0
- package/skills/lovrabet/references/lovrabet-excel-import.md +19 -0
- package/skills/lovrabet.manifest.json +3 -3
package/lib/utils/logger.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a170_0x3cd5b3=a170_0x347f;function a170_0x347f(_0x14de58,_0x207658){_0x14de58=_0x14de58-0x74;const _0x119103=a170_0x1191();let _0x347fdf=_0x119103[_0x14de58];return _0x347fdf;}(function(_0x18985a,_0x44f8df){const _0x5ceb7a=a170_0x347f,_0x3383a0=_0x18985a();while(!![]){try{const _0x1c4034=-parseInt(_0x5ceb7a(0xad))/0x1*(parseInt(_0x5ceb7a(0xae))/0x2)+parseInt(_0x5ceb7a(0x80))/0x3*(-parseInt(_0x5ceb7a(0x9d))/0x4)+parseInt(_0x5ceb7a(0x87))/0x5*(parseInt(_0x5ceb7a(0xab))/0x6)+-parseInt(_0x5ceb7a(0xa0))/0x7*(-parseInt(_0x5ceb7a(0x7a))/0x8)+parseInt(_0x5ceb7a(0x78))/0x9+-parseInt(_0x5ceb7a(0xa1))/0xa+-parseInt(_0x5ceb7a(0x9a))/0xb*(-parseInt(_0x5ceb7a(0xac))/0xc);if(_0x1c4034===_0x44f8df)break;else _0x3383a0['push'](_0x3383a0['shift']());}catch(_0x4c8872){_0x3383a0['push'](_0x3383a0['shift']());}}}(a170_0x1191,0xabe97));import a170_0x5bc711 from'winston';import a170_0x17599d from'node:fs';import a170_0x2f5894 from'node:path';import{PRODUCT_CONFIG}from'../constant/product.js';class Logger{[a170_0x3cd5b3(0x9c)];[a170_0x3cd5b3(0xa8)]='';[a170_0x3cd5b3(0x9e)]='';constructor(){}[a170_0x3cd5b3(0x8c)](_0x5ff151){this['currentRawCommand']=_0x5ff151;}[a170_0x3cd5b3(0xa3)](_0x212784){const _0x2fca3e=a170_0x3cd5b3;this[_0x2fca3e(0xa8)]=a170_0x2f5894[_0x2fca3e(0x81)](_0x212784,PRODUCT_CONFIG['logFileName']),this[_0x2fca3e(0x9c)]&&this[_0x2fca3e(0x9c)][_0x2fca3e(0x91)](),this[_0x2fca3e(0x92)]();}['initWinstonLogger'](){const _0x26127c=a170_0x3cd5b3,_0xc8e4eb=a170_0x2f5894[_0x26127c(0x8e)](this[_0x26127c(0xa8)]);!a170_0x17599d[_0x26127c(0x79)](_0xc8e4eb)&&a170_0x17599d[_0x26127c(0x9f)](_0xc8e4eb,{'recursive':!![]});const _0x3ec8f2=a170_0x5bc711[_0x26127c(0x8b)][_0x26127c(0x84)](a170_0x5bc711['format'][_0x26127c(0x77)](),a170_0x5bc711[_0x26127c(0x8b)][_0x26127c(0x7e)]({'stack':!![]}),a170_0x5bc711[_0x26127c(0x8b)][_0x26127c(0x74)](_0x173e1c=>{const _0x1b02c0=_0x26127c,_0x42f9d8={'timestamp':_0x173e1c[_0x1b02c0(0x77)]||new Date()[_0x1b02c0(0xa9)](),'level':_0x173e1c['level']||_0x1b02c0(0x7f),'command':_0x173e1c[_0x1b02c0(0xa6)]||_0x1b02c0(0x99),'rawCommand':_0x173e1c[_0x1b02c0(0x98)]||this[_0x1b02c0(0x9e)]||undefined,'message':_0x173e1c[_0x1b02c0(0x96)]||'','duration':_0x173e1c[_0x1b02c0(0x85)]||undefined,'details':_0x173e1c[_0x1b02c0(0x94)]||undefined};return JSON['stringify'](_0x42f9d8);}));this[_0x26127c(0x9c)]=a170_0x5bc711[_0x26127c(0xaa)]({'level':_0x26127c(0x7f),'format':_0x3ec8f2,'transports':[new a170_0x5bc711[(_0x26127c(0x86))][(_0x26127c(0x93))]({'filename':this[_0x26127c(0xa8)],'level':_0x26127c(0x7f)})],'silent':![]}),a170_0x5bc711[_0x26127c(0xa2)]({'success':'green','error':'red','warn':_0x26127c(0x89),'info':_0x26127c(0x8a)});}[a170_0x3cd5b3(0x7f)](_0x52406b,_0x58af85,_0x215062){const _0x54439d=a170_0x3cd5b3;if(!this['logFilePath']||!this[_0x54439d(0x9c)])return;this['winstonLogger'][_0x54439d(0x7f)](_0x58af85,{'command':_0x52406b,'details':_0x215062});}['success'](_0x35c689,_0x440e1f,_0xa9660a,_0x178f81){const _0x5d36db=a170_0x3cd5b3;if(!this[_0x5d36db(0xa8)]||!this[_0x5d36db(0x9c)])return;this['winstonLogger']['log']('info',_0x440e1f,{'level':_0x5d36db(0x75),'command':_0x35c689,'duration':_0xa9660a,'details':_0x178f81});}[a170_0x3cd5b3(0x83)](_0x4910bf,_0x13478a,_0x353cd1){const _0x23be82=a170_0x3cd5b3;if(!this[_0x23be82(0xa8)]||!this[_0x23be82(0x9c)])return;this[_0x23be82(0x9c)][_0x23be82(0x83)](_0x13478a,{'command':_0x4910bf,'details':_0x353cd1});}[a170_0x3cd5b3(0x7b)](_0x2fe865,_0x5ef34a,_0x2e86a8){const _0x2446ab=a170_0x3cd5b3;if(!this[_0x2446ab(0xa8)]||!this['winstonLogger'])return;this[_0x2446ab(0x9c)][_0x2446ab(0x7b)](_0x5ef34a,{'command':_0x2fe865,'details':_0x2e86a8});}async[a170_0x3cd5b3(0x95)](_0x5cc07d,_0x42b6e4,_0x1fdd1c){const _0x5dc7ff=a170_0x3cd5b3,_0x3ed9d3=Date[_0x5dc7ff(0x97)]();this[_0x5dc7ff(0x7f)](_0x5cc07d,'Starting:\x20'+_0x42b6e4);try{const _0x1c7a0f=await _0x1fdd1c(),_0x5e3281=Date[_0x5dc7ff(0x97)]()-_0x3ed9d3;return this['success'](_0x5cc07d,_0x5dc7ff(0xa7)+_0x42b6e4,_0x5e3281),_0x1c7a0f;}catch(_0x1f245f){const _0x58182c=Date[_0x5dc7ff(0x97)]()-_0x3ed9d3;this[_0x5dc7ff(0x83)](_0x5cc07d,_0x5dc7ff(0xa5)+_0x42b6e4,{'error':_0x1f245f instanceof Error?_0x1f245f[_0x5dc7ff(0x96)]:String(_0x1f245f),'duration':_0x58182c});throw _0x1f245f;}}[a170_0x3cd5b3(0xaf)](){const _0x313011=a170_0x3cd5b3;try{if(!a170_0x17599d['existsSync'](this['logFilePath']))return[];const _0x5d571b=a170_0x17599d[_0x313011(0xa4)](this[_0x313011(0xa8)],_0x313011(0x9b));return _0x5d571b[_0x313011(0x8f)](/\r?\n/)[_0x313011(0x8d)](_0x40434f=>_0x40434f['trim']())[_0x313011(0x88)](_0x591f5b=>JSON[_0x313011(0x90)](_0x591f5b));}catch(_0xd81876){return console[_0x313011(0x7b)](_0x313011(0x76),_0xd81876),[];}}[a170_0x3cd5b3(0x7c)](){const _0x16299d=a170_0x3cd5b3;try{a170_0x17599d['existsSync'](this[_0x16299d(0xa8)])&&a170_0x17599d[_0x16299d(0x82)](this[_0x16299d(0xa8)],'','utf8');}catch(_0x463e2d){console[_0x16299d(0x7b)](_0x16299d(0xb0),_0x463e2d);}}[a170_0x3cd5b3(0x7d)](){const _0x4f74e5=a170_0x3cd5b3;return this[_0x4f74e5(0x9c)];}}function a170_0x1191(){const _0x238bfe=['clear','initWinstonLogger','File','details','logTask','message','now','rawCommand','unknown','231EizPiR','utf8','winstonLogger','350004ZjkIbJ','currentRawCommand','mkdirSync','3830939EjBgAc','3662070BMvMot','addColors','setLogPath','readFileSync','Failed:\x20','command','Completed:\x20','logFilePath','toISOString','createLogger','3660414zvBsPR','365316Bcyqzc','370453BksDlk','2HGHXwW','readLogs','Failed\x20to\x20clear\x20logs:','printf','success','Failed\x20to\x20read\x20logs:','timestamp','7035075kMGZvP','existsSync','8zMwtaY','warn','clearLogs','getWinstonInstance','errors','info','39MWULIw','join','writeFileSync','error','combine','duration','transports','5WGxYAh','map','yellow','blue','format','setRawCommand','filter','dirname','split','parse'];a170_0x1191=function(){return _0x238bfe;};return a170_0x1191();}export const logger=new Logger();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0xd1bd3e,_0x33258d){const _0x4a3a87=a171_0x1f34,_0x5a2459=_0xd1bd3e();while(!![]){try{const _0x175075=parseInt(_0x4a3a87(0xef))/0x1+parseInt(_0x4a3a87(0xea))/0x2*(parseInt(_0x4a3a87(0xe9))/0x3)+-parseInt(_0x4a3a87(0xfa))/0x4*(parseInt(_0x4a3a87(0xeb))/0x5)+-parseInt(_0x4a3a87(0xf2))/0x6+parseInt(_0x4a3a87(0xf1))/0x7*(parseInt(_0x4a3a87(0xe7))/0x8)+-parseInt(_0x4a3a87(0xf4))/0x9*(parseInt(_0x4a3a87(0xf0))/0xa)+-parseInt(_0x4a3a87(0xf5))/0xb*(-parseInt(_0x4a3a87(0xf8))/0xc);if(_0x175075===_0x33258d)break;else _0x5a2459['push'](_0x5a2459['shift']());}catch(_0x4e1440){_0x5a2459['push'](_0x5a2459['shift']());}}}(a171_0x2f71,0x7567f));const JSON_NUMBER_PATTERN=/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?/,MAX_SAFE_INTEGER=BigInt(Number['MAX_SAFE_INTEGER']),MIN_SAFE_INTEGER=BigInt(Number['MIN_SAFE_INTEGER']);function a171_0x1f34(_0x3445f4,_0xe1a0bd){_0x3445f4=_0x3445f4-0xe7;const _0x2f7107=a171_0x2f71();let _0x1f3450=_0x2f7107[_0x3445f4];return _0x1f3450;}let restoreResponseJsonParser,responseJsonPrototype,originalResponseJsonDescriptor;function isUnsafeIntegerLiteral(_0x52d2ac){const _0x79d718=a171_0x1f34;if(_0x52d2ac[_0x79d718(0xe8)]('.')||_0x52d2ac[_0x79d718(0xe8)]('e')||_0x52d2ac['includes']('E'))return![];const _0x3b7a74=BigInt(_0x52d2ac);return _0x3b7a74>MAX_SAFE_INTEGER||_0x3b7a74<MIN_SAFE_INTEGER;}function quoteUnsafeIntegerLiterals(_0x18a372){const _0x104887=a171_0x1f34;let _0x554e96='',_0x2da565=![],_0x3a5ce4=![];for(let _0x154455=0x0;_0x154455<_0x18a372['length'];){const _0x2e10af=_0x18a372[_0x154455];if(_0x2da565){_0x554e96+=_0x2e10af,_0x154455+=0x1;if(_0x3a5ce4)_0x3a5ce4=![];else{if(_0x2e10af==='\x5c')_0x3a5ce4=!![];else _0x2e10af==='\x22'&&(_0x2da565=![]);}continue;}if(_0x2e10af==='\x22'){_0x2da565=!![],_0x554e96+=_0x2e10af,_0x154455+=0x1;continue;}if(_0x2e10af==='-'||_0x2e10af>='0'&&_0x2e10af<='9'){const _0x35141a=JSON_NUMBER_PATTERN[_0x104887(0xed)](_0x18a372['slice'](_0x154455))?.[0x0];if(_0x35141a){_0x554e96+=isUnsafeIntegerLiteral(_0x35141a)?'\x22'+_0x35141a+'\x22':_0x35141a,_0x154455+=_0x35141a[_0x104887(0xf6)];continue;}}_0x554e96+=_0x2e10af,_0x154455+=0x1;}return _0x554e96;}export function parseLosslessJson(_0x219ec2){const _0xec4382=a171_0x1f34;return JSON[_0xec4382(0xf7)](quoteUnsafeIntegerLiterals(_0x219ec2));}export function installLosslessJsonResponseParser(){const _0x548f60=a171_0x1f34;if(typeof Response===_0x548f60(0xf9))return()=>{};if(restoreResponseJsonParser)return restoreResponseJsonParser;return responseJsonPrototype=Response['prototype'],originalResponseJsonDescriptor=Object['getOwnPropertyDescriptor'](responseJsonPrototype,_0x548f60(0xec)),Object['defineProperty'](responseJsonPrototype,_0x548f60(0xec),{...originalResponseJsonDescriptor??{'configurable':!![],'enumerable':![],'writable':!![]},'value':async function _0x4223f2(){const _0x4b6612=_0x548f60;return parseLosslessJson(await this[_0x4b6612(0xf3)]());}}),restoreResponseJsonParser=()=>{const _0x29f60e=_0x548f60;if(!responseJsonPrototype)return;originalResponseJsonDescriptor?Object[_0x29f60e(0xee)](responseJsonPrototype,_0x29f60e(0xec),originalResponseJsonDescriptor):delete responseJsonPrototype['json'],responseJsonPrototype=undefined,originalResponseJsonDescriptor=undefined,restoreResponseJsonParser=undefined;},restoreResponseJsonParser;}function a171_0x2f71(){const _0x33bd52=['1669244FLJoWn','2931224FdsdFw','includes','27OgIpMv','160484KBPfRQ','5klvEMm','json','exec','defineProperty','236978qOICNU','10IvKWJy','7rGaDZS','2699394lGAAKb','text','2585313DeYujo','262141ywvjdF','length','parse','156fsiOhi','undefined'];a171_0x2f71=function(){return _0x33bd52;};return a171_0x2f71();}export function restoreLosslessJsonResponseParser(){restoreResponseJsonParser?.();}
|
package/lib/utils/params.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x3c396b,_0x2000b3){const _0x306f70=a172_0x5128,_0x842e97=_0x3c396b();while(!![]){try{const _0x143376=parseInt(_0x306f70(0xd5))/0x1+parseInt(_0x306f70(0xd3))/0x2*(-parseInt(_0x306f70(0xe3))/0x3)+-parseInt(_0x306f70(0xe6))/0x4*(parseInt(_0x306f70(0xe1))/0x5)+parseInt(_0x306f70(0xe9))/0x6*(parseInt(_0x306f70(0xdd))/0x7)+-parseInt(_0x306f70(0xdb))/0x8+parseInt(_0x306f70(0xe0))/0x9+-parseInt(_0x306f70(0xcf))/0xa*(-parseInt(_0x306f70(0xea))/0xb);if(_0x143376===_0x2000b3)break;else _0x842e97['push'](_0x842e97['shift']());}catch(_0x567e38){_0x842e97['push'](_0x842e97['shift']());}}}(a172_0x1fe2,0x888a7));import{CliErrors}from'../errors.js';function a172_0x5128(_0x2e1994,_0x52e949){_0x2e1994=_0x2e1994-0xcf;const _0x1fe2b2=a172_0x1fe2();let _0x51285c=_0x1fe2b2[_0x2e1994];return _0x51285c;}import{parseLosslessJson}from'../utils/lossless-json.js';export const MAX_DATA_UPDATE_IDS=0x3e8;function a172_0x1fe2(){const _0x66a488=['11JRTEcZ','join','string','validation','15731410PJUZuS','test','Example:\x20--params\x20\x27{\x22id\x22:[1,2,3],\x22status\x22:\x22done\x22}\x27','data\x20update\x20requires\x20\x22id\x22\x20in\x20--params.','4fGjfCF','id[','1002834POmFhs','data\x20update\x20--params.','data\x20update\x20can\x20update\x20at\x20most\x20','items','isArray','isSafeInteger','5068552RTPFuJ','length','2877NGnbyL','data\x20update\x20id\x20array\x20cannot\x20be\x20empty.','number','1507995HKXojx','25UwOlHa','\x20records\x20per\x20call;\x20received\x20','1342563kjPcWJ','batchCreate\x20--params\x20must\x20be\x20a\x20JSON\x20array\x20or\x20{\x22items\x22:[...]}','object','796436CzfwsL','\x20must\x20be\x20a\x20positive\x20integer\x20or\x20numeric\x20string.','Invalid\x20JSON\x20for\x20--params:\x20','4962Qelqds'];a172_0x1fe2=function(){return _0x66a488;};return a172_0x1fe2();}export function parseJsonParams(_0x52f0d9){const _0xa66ce9=a172_0x5128;if(!_0x52f0d9)return undefined;try{return parseLosslessJson(_0x52f0d9);}catch{throw CliErrors['validation'](_0xa66ce9(0xe8)+_0x52f0d9);}}export function parseJsonParamsValue(_0x1813dd){const _0x4671c8=a172_0x5128;if(!_0x1813dd)return undefined;try{return parseLosslessJson(_0x1813dd);}catch{throw CliErrors[_0x4671c8(0xed)]('Invalid\x20JSON\x20for\x20--params:\x20'+_0x1813dd);}}export function parseBatchCreateItemsFromParams(_0x207b3a){const _0x256fd7=a172_0x5128;if(Array[_0x256fd7(0xd9)](_0x207b3a))return _0x207b3a;if(_0x207b3a!==null&&_0x207b3a!==undefined&&typeof _0x207b3a===_0x256fd7(0xe5)&&Array[_0x256fd7(0xd9)](_0x207b3a[_0x256fd7(0xd8)]))return _0x207b3a[_0x256fd7(0xd8)];throw CliErrors[_0x256fd7(0xed)](_0x256fd7(0xe4),'Example:\x20--params\x20\x27[{\x22name\x22:\x22a\x22},{\x22name\x22:\x22b\x22}]\x27');}function parseDataUpdateId(_0xdcd60d,_0x4e9cb4){const _0xbe3b45=a172_0x5128;if(typeof _0xdcd60d===_0xbe3b45(0xdf)&&Number[_0xbe3b45(0xda)](_0xdcd60d)&&_0xdcd60d>0x0)return _0xdcd60d;if(typeof _0xdcd60d===_0xbe3b45(0xec)){if(/^[1-9]\d*$/[_0xbe3b45(0xd0)](_0xdcd60d))return _0xdcd60d;}throw CliErrors[_0xbe3b45(0xed)](_0xbe3b45(0xd6)+_0x4e9cb4+_0xbe3b45(0xe7));}export function parseUpdateIdsFromParams(_0x3dc7ab){const _0x1da45f=a172_0x5128;if(_0x3dc7ab===null||_0x3dc7ab===undefined||typeof _0x3dc7ab!==_0x1da45f(0xe5)||Array[_0x1da45f(0xd9)](_0x3dc7ab))throw CliErrors[_0x1da45f(0xed)]('data\x20update\x20--params\x20must\x20be\x20a\x20JSON\x20object\x20with\x20id.',_0x1da45f(0xd1));const _0x3b73df=_0x3dc7ab['id'];if(_0x3b73df===undefined||_0x3b73df===null)throw CliErrors['validation'](_0x1da45f(0xd2),_0x1da45f(0xd1));const _0x21ae5a=Array[_0x1da45f(0xd9)](_0x3b73df)?_0x3b73df:[_0x3b73df];if(_0x21ae5a[_0x1da45f(0xdc)]===0x0)throw CliErrors[_0x1da45f(0xed)](_0x1da45f(0xde));if(_0x21ae5a[_0x1da45f(0xdc)]>MAX_DATA_UPDATE_IDS)throw CliErrors[_0x1da45f(0xed)](_0x1da45f(0xd7)+MAX_DATA_UPDATE_IDS+_0x1da45f(0xe2)+_0x21ae5a['length']+'.');return _0x21ae5a['map']((_0x3eec2e,_0x31cd26)=>parseDataUpdateId(_0x3eec2e,Array[_0x1da45f(0xd9)](_0x3b73df)?_0x1da45f(0xd4)+_0x31cd26+']':'id'));}export function normalizeUpdateParamsForRuntime(_0x1f3500,_0x1c3eea){const _0x3b392b=a172_0x5128;if(Array['isArray'](_0x1f3500['id'])&&_0x1c3eea[_0x3b392b(0xdc)]>0x1)return{..._0x1f3500,'id':_0x1c3eea[_0x3b392b(0xeb)](',')};return _0x1f3500;}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function a173_0x59bb(_0x3da35c,_0x2c6aec){_0x3da35c=_0x3da35c-0x15c;const _0x10bda0=a173_0x10bd();let _0x59bbf8=_0x10bda0[_0x3da35c];return _0x59bbf8;}(function(_0x3f694f,_0x3ef95b){const _0x2f443f=a173_0x59bb,_0x4bba2e=_0x3f694f();while(!![]){try{const _0x2e689e=parseInt(_0x2f443f(0x161))/0x1*(-parseInt(_0x2f443f(0x160))/0x2)+-parseInt(_0x2f443f(0x167))/0x3*(parseInt(_0x2f443f(0x163))/0x4)+parseInt(_0x2f443f(0x168))/0x5+parseInt(_0x2f443f(0x166))/0x6*(-parseInt(_0x2f443f(0x15c))/0x7)+-parseInt(_0x2f443f(0x15f))/0x8+-parseInt(_0x2f443f(0x164))/0x9+parseInt(_0x2f443f(0x162))/0xa*(parseInt(_0x2f443f(0x15e))/0xb);if(_0x2e689e===_0x3ef95b)break;else _0x4bba2e['push'](_0x4bba2e['shift']());}catch(_0x368b5e){_0x4bba2e['push'](_0x4bba2e['shift']());}}}(a173_0x10bd,0xd7b6e));function a173_0x10bd(){const _0x2dc2b3=['39671330unUdOS','76088jlLhqU','12083868nTBiUV','number','12sHpaiJ','126mYEjXW','3520580saHqAg','test','430983szfoda','string','11GzRRZg','12176064qUoRbA','62BXeQDY','31LaoTuX'];a173_0x10bd=function(){return _0x2dc2b3;};return a173_0x10bd();}export function normalizePositiveSafeInteger(_0x2b440e){const _0x11af4f=a173_0x59bb;if(typeof _0x2b440e===_0x11af4f(0x165))return Number['isSafeInteger'](_0x2b440e)&&_0x2b440e>0x0?_0x2b440e:undefined;if(typeof _0x2b440e!==_0x11af4f(0x15d)||!/^\d+$/[_0x11af4f(0x169)](_0x2b440e))return undefined;const _0x30fbce=Number(_0x2b440e);return Number['isSafeInteger'](_0x30fbce)&&_0x30fbce>0x0?_0x30fbce:undefined;}
|
package/lib/utils/redaction.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
function a174_0x3521(_0x3fcd09,_0x4ca7c8){_0x3fcd09=_0x3fcd09-0x189;const _0x5394f8=a174_0x5394();let _0x3521d6=_0x5394f8[_0x3fcd09];return _0x3521d6;}const a174_0x3ad9b1=a174_0x3521;(function(_0x248b0e,_0x4620d1){const _0x5487ed=a174_0x3521,_0x31612c=_0x248b0e();while(!![]){try{const _0x51b245=-parseInt(_0x5487ed(0x18a))/0x1+parseInt(_0x5487ed(0x18f))/0x2*(parseInt(_0x5487ed(0x189))/0x3)+parseInt(_0x5487ed(0x196))/0x4+parseInt(_0x5487ed(0x194))/0x5+parseInt(_0x5487ed(0x195))/0x6+-parseInt(_0x5487ed(0x198))/0x7+-parseInt(_0x5487ed(0x193))/0x8*(parseInt(_0x5487ed(0x19c))/0x9);if(_0x51b245===_0x4620d1)break;else _0x31612c['push'](_0x31612c['shift']());}catch(_0x2de651){_0x31612c['push'](_0x31612c['shift']());}}}(a174_0x5394,0xe53fc));const REDACTED_VALUE='[REDACTED]',SENSITIVE_KEY_PATTERN=/(?:access.?key|api.?key|authorization|cookie|credential|password|passwd|private.?key|secret|token|webhook)/i,SENSITIVE_FLAG_NAMES=new Set([a174_0x3ad9b1(0x18e),a174_0x3ad9b1(0x192)]),SENSITIVE_VALUE_KEYS=new Set([a174_0x3ad9b1(0x18e)]);export function isSensitiveKey(_0xf07a85){const _0x423104=a174_0x3ad9b1,_0x541cea=_0xf07a85[_0x423104(0x191)](/_/g,'-')['toLowerCase']();return SENSITIVE_KEY_PATTERN[_0x423104(0x197)](_0x541cea);}export function isSensitiveFlagName(_0xfe13ca){const _0x40125c=a174_0x3ad9b1,_0xfc43c4=_0xfe13ca[_0x40125c(0x191)](/_/g,'-')['toLowerCase']();return isSensitiveKey(_0xfc43c4)||SENSITIVE_FLAG_NAMES['has'](_0xfc43c4);}function redactVariableValues(_0x13ff70){const _0xe0f040=a174_0x3ad9b1;if(Array[_0xe0f040(0x18d)](_0x13ff70))return _0x13ff70['map'](_0x278307=>redactVariableValues(_0x278307));if(_0x13ff70&&typeof _0x13ff70===_0xe0f040(0x18c))return Object[_0xe0f040(0x190)](Object[_0xe0f040(0x19a)](_0x13ff70)[_0xe0f040(0x199)](([_0x53a2e2,_0x5e5e13])=>[_0x53a2e2,redactVariableValues(_0x5e5e13)]));return REDACTED_VALUE;}function a174_0x5394(){const _0x1359d1=['162OCzqZb','4396713uXDfok','73022eVmGSD','has','object','isArray','comment','2XLLdGD','fromEntries','replace','variables','1473576bAEuGI','3220425DJwBXJ','10091220wbVZVn','5831932pFTiXa','test','6453559OmUqlQ','map','entries','push'];a174_0x5394=function(){return _0x1359d1;};return a174_0x5394();}export function redactSensitiveValue(_0x59e21f){const _0x40d1c1=a174_0x3ad9b1;if(Array['isArray'](_0x59e21f))return _0x59e21f[_0x40d1c1(0x199)](_0x40b7bf=>redactSensitiveValue(_0x40b7bf));if(!_0x59e21f||typeof _0x59e21f!=='object')return _0x59e21f;const _0x23e23b={};for(const [_0x32483a,_0x292c76]of Object['entries'](_0x59e21f)){const _0x54671d=_0x32483a[_0x40d1c1(0x191)](/_/g,'-')['toLowerCase']();_0x23e23b[_0x32483a]=_0x54671d==='variables'?redactVariableValues(_0x292c76):SENSITIVE_VALUE_KEYS[_0x40d1c1(0x18b)](_0x54671d)||isSensitiveKey(_0x32483a)?REDACTED_VALUE:redactSensitiveValue(_0x292c76);}return _0x23e23b;}export function redactCommandArgv(_0x3752fa){const _0x4dd1b8=a174_0x3ad9b1,_0x311bd9=[];let _0x5e6a6c=![];for(const _0x414c1b of _0x3752fa){if(_0x5e6a6c){_0x311bd9[_0x4dd1b8(0x19b)](REDACTED_VALUE),_0x5e6a6c=![];continue;}const _0x52da56=_0x414c1b['match'](/^--([^=]+)(?:=(.*))?$/);if(!_0x52da56||!isSensitiveFlagName(_0x52da56[0x1]??'')){_0x311bd9[_0x4dd1b8(0x19b)](_0x414c1b);continue;}_0x311bd9[_0x4dd1b8(0x19b)]('--'+_0x52da56[0x1]+(_0x52da56[0x2]===undefined?'':'='+REDACTED_VALUE)),_0x52da56[0x2]===undefined&&(_0x5e6a6c=!![]);}return _0x311bd9;}export{REDACTED_VALUE};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x2edff5,_0x261c23){const _0x50ff32=a175_0x59d7,_0x124993=_0x2edff5();while(!![]){try{const _0xf69401=-parseInt(_0x50ff32(0x1fa))/0x1+-parseInt(_0x50ff32(0x1f0))/0x2+-parseInt(_0x50ff32(0x1fe))/0x3*(parseInt(_0x50ff32(0x1f6))/0x4)+parseInt(_0x50ff32(0x1f3))/0x5+parseInt(_0x50ff32(0x200))/0x6+parseInt(_0x50ff32(0x203))/0x7+parseInt(_0x50ff32(0x1f4))/0x8*(parseInt(_0x50ff32(0x201))/0x9);if(_0xf69401===_0x261c23)break;else _0x124993['push'](_0x124993['shift']());}catch(_0x2a759a){_0x124993['push'](_0x124993['shift']());}}}(a175_0x3a58,0x5c869));function a175_0x59d7(_0x9706a2,_0x135b59){_0x9706a2=_0x9706a2-0x1f0;const _0x3a5827=a175_0x3a58();let _0x59d77c=_0x3a5827[_0x9706a2];return _0x59d77c;}import{mkdir,readFile,writeFile}from'node:fs/promises';import{homedir}from'node:os';import{dirname,join}from'node:path';import{LOVRABET_NPM_PACKAGE_NAME}from'../constant/distribution.js';import{CLI_BIN_NAME}from'../constant/cli.js';import{checkCliVersion,getCliUpgradeCommand}from'../utils/cli-version-check.js';const UPDATE_NOTICE_TTL_MS=0x18*0x3c*0x3c*0x3e8;function isUpdateNoticeDisabled(){const _0x52179e=a175_0x59d7,_0x1b07d4=process.env.LOVRABET_NO_UPDATE_NOTICE?.[_0x52179e(0x206)]()[_0x52179e(0x1f9)]();return _0x1b07d4==='1'||_0x1b07d4==='true'||_0x1b07d4===_0x52179e(0x209);}function cacheRoot(){return process.env.XDG_CACHE_HOME||process.env.LOCALAPPDATA||join(homedir(),'.cache');}export function getUpdateNoticeCachePath(){const _0x2246c3=a175_0x59d7;return join(cacheRoot(),'lovrabet-cli',_0x2246c3(0x204));}async function readUpdateNoticeCache(){const _0xe07d15=a175_0x59d7;try{const _0x532bea=await readFile(getUpdateNoticeCachePath(),_0xe07d15(0x208)),_0x4add4c=JSON[_0xe07d15(0x1f8)](_0x532bea);if(!_0x4add4c||typeof _0x4add4c!==_0xe07d15(0x202))return{};return _0x4add4c;}catch{return{};}}function a175_0x3a58(){const _0x1a5855=['lastNotifiedVersion','752922xjQbLR','lastNotifiedAt','2676426bVrFOE','2659626eRtMKB','object','4340210kpDqOW','update-check.json','join','trim','now','utf8','yes','stableVersion','1470892DwIRZi',',\x20run:\x20','\x20is\x20recommended,\x20current\x20','3597250dUoXAj','8cIkcSu','stringify','4YMscJX','/v/','parse','toLowerCase','715660whPWpA','number','needsUpgrade'];a175_0x3a58=function(){return _0x1a5855;};return a175_0x3a58();}async function writeUpdateNoticeCache(_0x556a9e){const _0x5af40e=a175_0x59d7;try{const _0xa614bf=getUpdateNoticeCachePath();await mkdir(dirname(_0xa614bf),{'recursive':!![]}),await writeFile(_0xa614bf,JSON[_0x5af40e(0x1f5)](_0x556a9e,null,0x2)+'\x0a','utf8');}catch{}}function isRecentlyNotified(_0x26701f,_0x538925,_0x371938){const _0xa65a67=a175_0x59d7;return _0x26701f[_0xa65a67(0x1fd)]===_0x538925&&typeof _0x26701f[_0xa65a67(0x1ff)]===_0xa65a67(0x1fb)&&_0x371938-_0x26701f['lastNotifiedAt']<UPDATE_NOTICE_TTL_MS;}export function buildNpmVersionUrl(_0x481d3c){const _0x5eb2ee=a175_0x59d7;return'https://www.npmjs.com/package/'+LOVRABET_NPM_PACKAGE_NAME+_0x5eb2ee(0x1f7)+_0x481d3c;}export async function resolveLatestUpdateNotice(_0x1748ce){const _0x3bf3c0=a175_0x59d7;if(isUpdateNoticeDisabled())return null;try{const _0x2ee966=Date[_0x3bf3c0(0x207)](),_0x1e8c43=_0x1748ce??await checkCliVersion(),_0x1241c0=_0x1e8c43['currentVersion'],_0x58175e=_0x1e8c43[_0x3bf3c0(0x20a)],_0x7ef3b0=await readUpdateNoticeCache();if(!_0x58175e||!_0x1e8c43[_0x3bf3c0(0x1fc)]||_0x1e8c43['belowMinimum'])return null;if(isRecentlyNotified(_0x7ef3b0,_0x58175e,_0x2ee966))return null;const _0x62e8d8=getCliUpgradeCommand(_0x1e8c43);return await writeUpdateNoticeCache({..._0x7ef3b0,'checkedAt':_0x2ee966,'latest':_0x58175e,'failed':![],'lastNotifiedVersion':_0x58175e,'lastNotifiedAt':_0x2ee966}),{'command':_0x62e8d8,'current':_0x1241c0,'latest':_0x58175e,'url':buildNpmVersionUrl(_0x58175e),'message':[_0x1e8c43['upgradeMessage'],CLI_BIN_NAME+'\x20'+_0x58175e+_0x3bf3c0(0x1f2)+_0x1241c0+_0x3bf3c0(0x1f1)+_0x62e8d8]['filter'](Boolean)[_0x3bf3c0(0x205)]('\x20')};}catch{return null;}}
|
package/lib/utils/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x819a74,_0x54fe5a){const _0x22af84=a176_0x1371,_0x4e53ae=_0x819a74();while(!![]){try{const _0x45132f=-parseInt(_0x22af84(0x164))/0x1*(parseInt(_0x22af84(0x16c))/0x2)+parseInt(_0x22af84(0x165))/0x3*(parseInt(_0x22af84(0x16d))/0x4)+parseInt(_0x22af84(0x169))/0x5*(-parseInt(_0x22af84(0x168))/0x6)+-parseInt(_0x22af84(0x166))/0x7+-parseInt(_0x22af84(0x162))/0x8*(-parseInt(_0x22af84(0x163))/0x9)+parseInt(_0x22af84(0x16b))/0xa*(-parseInt(_0x22af84(0x16a))/0xb)+parseInt(_0x22af84(0x167))/0xc;if(_0x45132f===_0x54fe5a)break;else _0x4e53ae['push'](_0x4e53ae['shift']());}catch(_0x566929){_0x4e53ae['push'](_0x4e53ae['shift']());}}}(a176_0x7faa,0x4c4f8));function a176_0x1371(_0x5bc82c,_0x12f0f0){_0x5bc82c=_0x5bc82c-0x162;const _0x7faacc=a176_0x7faa();let _0x137111=_0x7faacc[_0x5bc82c];return _0x137111;}import{BUILD_TIME,GIT_COMMIT,VERSION}from'../generated/build-info.js';export function getCliVersion(){return VERSION;}export function getCliGitCommit(){const _0x18f397=String(GIT_COMMIT);return _0x18f397&&_0x18f397!=='unknown'?_0x18f397:'';}function a176_0x7faa(){const _0x19ae57=['971945yLKoHu','11yEhKyA','2265110sSRlqK','2jXchhu','16SxPMCz','16lTeuGe','1465083gEacwP','543083UFyMvN','442965rGcwUy','4223989gBibrw','11565408vSwoUl','6BYUzyn'];a176_0x7faa=function(){return _0x19ae57;};return a176_0x7faa();}export function getCliVersionDisplay(){const _0x19f723=getCliGitCommit(),_0x399bb9=BUILD_TIME['slice'](0x0,0xa);if(!_0x19f723||!_0x399bb9)return VERSION;return VERSION+'\x20('+_0x19f723+',\x20'+_0x399bb9+')';}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function a177_0x3a41(_0x3d263a,_0xdc587){_0x3d263a=_0x3d263a-0x1d8;var _0x1e7cb8=a177_0x1e7c();var _0x3a419b=_0x1e7cb8[_0x3d263a];return _0x3a419b;}(function(_0x3054d2,_0x5098fb){var _0x3b23f0=a177_0x3a41,_0xed327f=_0x3054d2();while(!![]){try{var _0x5a6550=parseInt(_0x3b23f0(0x1da))/0x1*(parseInt(_0x3b23f0(0x1e5))/0x2)+-parseInt(_0x3b23f0(0x1d8))/0x3*(parseInt(_0x3b23f0(0x1de))/0x4)+-parseInt(_0x3b23f0(0x1d9))/0x5*(-parseInt(_0x3b23f0(0x1df))/0x6)+-parseInt(_0x3b23f0(0x1e2))/0x7*(-parseInt(_0x3b23f0(0x1dc))/0x8)+parseInt(_0x3b23f0(0x1e0))/0x9*(parseInt(_0x3b23f0(0x1e3))/0xa)+parseInt(_0x3b23f0(0x1db))/0xb+-parseInt(_0x3b23f0(0x1e4))/0xc;if(_0x5a6550===_0x5098fb)break;else _0xed327f['push'](_0xed327f['shift']());}catch(_0x5db25a){_0xed327f['push'](_0xed327f['shift']());}}}(a177_0x1e7c,0xe5bd0));export function writeCliSideChannelLine(_0x50a8f6){var _0x593c79=a177_0x3a41;process[_0x593c79(0x1dd)][_0x593c79(0x1e1)](_0x50a8f6+'\x0a');}function a177_0x1e7c(){var _0x361f53=['5064hMllMs','stderr','452SozrDJ','1326fzDzDh','16590933WJsjiR','write','5215TAbfti','10idBJxI','41443212hoRDNt','1295510knBupK','44553IYyHXJ','31135nTAuJu','1paoHAT','19072108kPgBJg'];a177_0x1e7c=function(){return _0x361f53;};return a177_0x1e7c();}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lovrabet/lovrabet-cli",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.6-beta.2",
|
|
4
4
|
"description": "Runtime CLI for Lovrabet apps, datasets, SQL, Backend Function, skills, and AI agent workflows.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"keywords": [
|
|
@@ -94,9 +94,12 @@
|
|
|
94
94
|
"fs-extra": "^11.3.6",
|
|
95
95
|
"ink": "^6.2.3",
|
|
96
96
|
"ink-spinner": "^5.0.0",
|
|
97
|
+
"jpeg-js": "0.4.4",
|
|
97
98
|
"jsdom": "26.1.0",
|
|
98
99
|
"meow": "^13.2.0",
|
|
99
100
|
"mermaid": "11.16.0",
|
|
101
|
+
"omggif": "1.0.10",
|
|
102
|
+
"pngjs": "7.0.0",
|
|
100
103
|
"react": "^19.2.0",
|
|
101
104
|
"saxes": "6.0.0",
|
|
102
105
|
"semver": "^7.7.3",
|
package/skills/lovrabet/SKILL.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: lovrabet
|
|
3
3
|
displayName: Lovrabet 运行态 CLI
|
|
4
|
-
version: 2.3.
|
|
4
|
+
version: 2.3.6-beta.2
|
|
5
5
|
description: "Lovrabet 运行态 CLI — 面向业务场景的 AI 操作套件,通过 lovrabet 命令管理应用目录、业务角色与权限、用户级外部账号、Service Tree 业务命令、API 文档发现、数据集查询、Instant API 数据操作、可恢复 Excel 导入、Custom SQL/Backend Function、Personal Backend Function、文件上传、面向票证类业务材料文字与结构化字段提取的 OCR、审批待办与任务办理、定时任务、Skill、知识库与运行态 app-config key 状态检查。触发词:云图、lovrabet、lovrabet-cli、业务角色、角色成员、页面权限、菜单权限、数据集权限、user-account bind、provider 外部账号绑定、钉钉 userId 绑定、service tree、业务服务树、api-doc、dataset、data filter、Excel 导入、data import-excel、file upload、file query-url、ocr recognize、OCR 识别、票证文字提取、票证字段提取、发票识别、票据识别、证照识别、附件上传、personal-bff、approval、审批、待办、approve、reject、transfer、schedule、定时任务、cron、kb、skill、sql exec、bff exec、app-config、accessKey、compress、jq。"
|
|
6
6
|
metadata:
|
|
7
7
|
requires:
|
|
@@ -204,12 +204,14 @@ Service Tree 未命中不是失败条件,也不代表业务能力不存在。
|
|
|
204
204
|
|
|
205
205
|
这种情况下,直接进入:
|
|
206
206
|
|
|
207
|
-
1. `dataset list --name ...`
|
|
207
|
+
1. 按数据集名称用 `dataset list --name ...`;已知物理表名时用 `dataset list --table-name ...`
|
|
208
208
|
2. `dataset detail --code ...`
|
|
209
209
|
3. `data filter/getOne/create/batchCreate/update/delete`
|
|
210
210
|
|
|
211
211
|
不要先多打一轮应用发现命令制造噪音。
|
|
212
212
|
|
|
213
|
+
下面的名称关键词示例也适用于默认候选和其他候选 app 的验证:用户提供物理表名时,将 `--name <关键词>` 换成 `--table-name <表名前缀>`,不要把物理表名当作数据集名称搜索。筛选参数均可单独使用;同时传入时按 AND 组合,不要求补齐其他筛选条件。匹配规则见 [数据集发现](references/dataset-discovery-workflow.md)。
|
|
214
|
+
|
|
213
215
|
`defaultApp` 只是弱候选,不是强上下文。未显式指定 app 时,如果本地已有 `defaultApp`,应先在默认候选里按需求关键词做数据集验证;无命中、弱命中或语义不合理时,再扩大到 `app list` 里查找其他应用。
|
|
214
216
|
|
|
215
217
|
### 需要进一步应用决议的场景
|
|
@@ -405,7 +407,7 @@ Service Tree 未命中不是失败条件,也不代表业务能力不存在。
|
|
|
405
407
|
|
|
406
408
|
| 意图 | 命令 |
|
|
407
409
|
|------|------|
|
|
408
|
-
| 找数据集 | `lovrabet dataset list [--name 关键词] [--code 精确码]` |
|
|
410
|
+
| 找数据集 | `lovrabet dataset list [--name 关键词] [--table-name 表名前缀] [--code 精确码]` |
|
|
409
411
|
| 看数据集字段、关联信息和操作 | `lovrabet dataset detail --code <code> [--format json]` |
|
|
410
412
|
| 查运行态 API 文档 | `lovrabet api-doc list [--category dataset] [--keyword aggregate]` |
|
|
411
413
|
| 看 API 文档详情 | `lovrabet api-doc detail --code dataset_list` |
|
|
@@ -728,3 +730,5 @@ personal KB 使用文件型 create/update。更新前先 `kb detail` 查看正
|
|
|
728
730
|
| 知识库工作流 | [lovrabet-kb-workflow.md](references/lovrabet-kb-workflow.md) |
|
|
729
731
|
| 定时任务工作流 | [lovrabet-schedule-workflow.md](references/lovrabet-schedule-workflow.md) |
|
|
730
732
|
| 日志 | [lovrabet-logs.md](references/lovrabet-logs.md) |
|
|
733
|
+
|
|
734
|
+
METADATA 原生 Excel 图片导入支持浮动图片、Microsoft Excel 单元格 richData 和独立 WPS DISPIMG。图片列映射到 IMAGE 字段;先 `--dry-run` 核验服务端能力,恢复时保留主检查点与 `.rows.json`,详见[可恢复 Excel 导入](references/lovrabet-excel-import.md)。
|
|
@@ -39,6 +39,8 @@ lovrabet app list
|
|
|
39
39
|
|
|
40
40
|
## 标准决议流程
|
|
41
41
|
|
|
42
|
+
以下示例按数据集名称使用 `--name`。用户提供物理表名时,改用 `--table-name <表名前缀>`,可单独使用,无需同时提供 `--name` 或 `--code`;多个筛选条件按 AND 组合。匹配规则见 [数据集发现](../references/dataset-discovery-workflow.md)。
|
|
43
|
+
|
|
42
44
|
1. 先看是否已有明确 app 上下文
|
|
43
45
|
2. 没有明确上下文但有 `defaultApp` 时,先验证默认候选:
|
|
44
46
|
|
|
@@ -20,16 +20,25 @@ lovrabet api-doc detail --code dataset_data_filter
|
|
|
20
20
|
|
|
21
21
|
3. 定位数据集
|
|
22
22
|
|
|
23
|
+
根据已有线索选择一个筛选参数即可:数据集名称用 `--name`,物理表名用 `--table-name`,数据集 code 用 `--code`。不要要求用户补齐另外两个参数。
|
|
24
|
+
|
|
23
25
|
```bash
|
|
24
26
|
lovrabet dataset list --name "<关键词>"
|
|
27
|
+
|
|
28
|
+
# 已知物理表名时
|
|
29
|
+
lovrabet dataset list --table-name crm_product
|
|
25
30
|
```
|
|
26
31
|
|
|
32
|
+
多个筛选参数同时传入时按 AND 组合。表名采用前缀匹配,可能返回多个候选;先核对返回的 `table`、`name` 和 `code`。详细规则见 [数据集发现](../references/dataset-discovery-workflow.md)。
|
|
33
|
+
|
|
27
34
|
如需限定候选 app:
|
|
28
35
|
|
|
29
36
|
```bash
|
|
30
37
|
lovrabet dataset list --app <name> --name "<关键词>"
|
|
31
38
|
```
|
|
32
39
|
|
|
40
|
+
已知物理表名时,将上述 `--name "<关键词>"` 换成 `--table-name "<表名前缀>"`。
|
|
41
|
+
|
|
33
42
|
4. 看数据集结构
|
|
34
43
|
|
|
35
44
|
```bash
|
|
@@ -75,7 +84,7 @@ lovrabet data filter --code <datasetCode> --params '{"where":{"status":{"$eq":"a
|
|
|
75
84
|
以下情况只用 `dataset list` 就够:
|
|
76
85
|
|
|
77
86
|
- 用户只是问“有哪些数据集”
|
|
78
|
-
-
|
|
87
|
+
- 用户只是想按数据集名称或物理表名前缀搜索数据集
|
|
79
88
|
- 只需要数据集 code 和字段名数组
|
|
80
89
|
|
|
81
90
|
## 什么时候必须看 `dataset detail`
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
在执行 Instant API 数据操作前,需要先找到目标数据集并了解其字段结构。
|
|
6
6
|
|
|
7
|
+
按已知线索选择筛选参数:数据集名称用 `--name`,物理表名用 `--table-name`,数据集 code 用 `--code`。下面按名称验证应用的示例,在已知物理表名时可将 `--name "<关键词>"` 换成 `--table-name "<表名前缀>"`。
|
|
8
|
+
|
|
7
9
|
## 先不要默认查 app
|
|
8
10
|
|
|
9
11
|
`dataset` 工作流的第一步不是固定的 `app list`,而是先判断当前是否已经有明确 app 上下文。
|
|
@@ -71,6 +73,12 @@ lovrabet dataset list
|
|
|
71
73
|
# 按名称过滤(服务端模糊匹配)
|
|
72
74
|
lovrabet dataset list --name "订单"
|
|
73
75
|
|
|
76
|
+
# 仅按物理表名前缀过滤,无需同时提供 --name 或 --code
|
|
77
|
+
lovrabet dataset list --table-name crm_product
|
|
78
|
+
|
|
79
|
+
# 同时限定数据集名称和物理表名(AND)
|
|
80
|
+
lovrabet dataset list --name "商品" --table-name crm_product
|
|
81
|
+
|
|
74
82
|
# 按 code 过滤(服务端精确匹配)
|
|
75
83
|
lovrabet dataset list --code "abc123def4567890abcdef012345678"
|
|
76
84
|
|
|
@@ -84,10 +92,15 @@ lovrabet dataset list --format json
|
|
|
84
92
|
|
|
85
93
|
| Flag | 类型 | 必填 | 说明 |
|
|
86
94
|
|------|------|------|------|
|
|
87
|
-
| `--name` | string | 否 |
|
|
95
|
+
| `--name` | string | 否 | 按数据集名称包含匹配(服务端) |
|
|
96
|
+
| `--table-name` | string | 否 | 透传为 `tableName`,按物理表名前缀匹配(服务端) |
|
|
88
97
|
| `--code` | string | 否 | 按 dataset code 精确过滤(服务端,32 位 hex) |
|
|
89
98
|
| `--format` | string | 否 | 输出格式:`json` / `pretty` / `table` |
|
|
90
99
|
|
|
100
|
+
`--name`、`--table-name`、`--code` 均为可选参数:可只传任意一个,也可不传筛选参数;多个参数同时传入时按 AND 组合,不会互相覆盖。不传或传空字符串时不增加对应筛选条件。
|
|
101
|
+
|
|
102
|
+
`--table-name` 使用服务端 SQL LIKE 前缀匹配,不保证精确命中或唯一结果。例如 `crm_product` 也可能命中 `crm_product_detail`;`%` 和 `_` 保留 SQL LIKE 通配符含义,其中 `_` 可匹配任意单个字符。核对返回的 `table`、`name` 和 `code` 后再选择目标数据集,不要直接取第一条。
|
|
103
|
+
|
|
91
104
|
### dataset detail — 查看数据集结构
|
|
92
105
|
|
|
93
106
|
```bash
|
|
@@ -17,6 +17,8 @@ lovrabet data <command> --code <datasetCode> --params '<json>'
|
|
|
17
17
|
|
|
18
18
|
因此决策顺序应该是:
|
|
19
19
|
|
|
20
|
+
以下 `--name` 示例用于数据集名称关键词;已知物理表名时改用 `--table-name <表名前缀>`,无需同时提供名称。多个筛选条件按 AND 组合,详见 [数据集发现](dataset-discovery-workflow.md)。
|
|
21
|
+
|
|
20
22
|
1. 先判断当前 app 是否已明确
|
|
21
23
|
2. 当前 app 明确时,直接 `dataset list --name ...`
|
|
22
24
|
3. 当前 app 不明确但有 `defaultApp` 时,先 `dataset list --name <关键词>` 验证默认候选
|
|
@@ -75,6 +75,8 @@ lovrabet app list --include-unpublished
|
|
|
75
75
|
|
|
76
76
|
## 如何选择使用哪个应用
|
|
77
77
|
|
|
78
|
+
以下 `--name <关键词>` 用于数据集名称搜索;用户给的是物理表名时,改用 `--table-name <表名前缀>` 验证默认候选或其他候选 app,无需补齐名称。匹配规则见 [数据集发现](dataset-discovery-workflow.md)。
|
|
79
|
+
|
|
78
80
|
推荐方法不是只看 app 名,而是:
|
|
79
81
|
|
|
80
82
|
1. 有 `defaultApp` 时,先在默认候选下执行 `dataset list --name <关键词>`
|
|
@@ -29,3 +29,22 @@ lovrabet data import-excel --appcode <appCode> --code <datasetCode> --file ./rec
|
|
|
29
29
|
报告包含 `sourceRows`、`succeeded`、`unknown`、`conflicts`、`notAttempted`、批次耗时和输出路径。unknown 表示需恢复核对;内容冲突、已导入行不可见或契约/身份漂移时停止,不自动修复或换标记。重复恢复已完成导入会重新核对字段且不新增记录。
|
|
30
30
|
|
|
31
31
|
检查点与报告包含业务数据及恢复标识,保留私有权限,不外发真实 AK 或敏感业务值。该能力不放宽应用可访问性、创建权限或读取权限;非 Excel `batchCreate` 保持原有调用方式。
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
# Native Excel image import into UPLOAD fields
|
|
35
|
+
|
|
36
|
+
For `METADATA` datasets, `lovrabet data import-excel` reads embedded PNG, JPEG and GIF pictures from floating DrawingML anchors, Microsoft Excel in-cell rich data, and standalone WPS `DISPIMG` formulas (including `_xlfn.` / `@` forms). The import stores the original embedded image bytes. Excel crop, rotation and filter effects are not rendered into the result. EXIF is not mapped to business fields; metadata already present in the original bytes is retained. Map the picture column header to the confirmed `UPLOAD` field code. Its business value is an ordered `{fileName,filePath}` array; for example, `{"UPLOAD_1":[{"fileName":"photo.png","filePath":"dataset-import/<scope>/<digest>.png"}]}`. Use the durable file path returned by upload. Digest, MIME type and byte size remain upload verification/checkpoint metadata. Pictures in one cell preserve their order; repeated identical bytes upload once per import. Picture-only rows are included. Hidden rows are included with a warning.
|
|
37
|
+
|
|
38
|
+
Existing `IMAGE` fields keep their legacy `{name,type,key,size}` value format and checkpoint compatibility. Do not change a dataset's field type or translate existing persisted rows automatically. The field protocol is bound to the source/schema/checkpoint; switching an original import from IMAGE to UPLOAD is not a resume operation.
|
|
39
|
+
|
|
40
|
+
Start with the existing import command and `--dry-run`. Dry-run validates the local workbook, mapping, image bytes, server capability and request size, then reports image occurrences, unique images and unique bytes. It does not upload images, create records, or write checkpoints/reports. A missing server image capability blocks an import containing pictures; scalar-only imports continue to use the existing import contract.
|
|
41
|
+
|
|
42
|
+
Inspect all validation errors before running the confirmed write. Each image must be no larger than 10 MiB and no larger than 40 million pixels. GIF cumulative frame canvas pixels must also fit that pixel limit. Unique images total at most 50 MiB per import, with at most 10,000 occurrences. Only the selected sheet and mapped UPLOAD or legacy IMAGE columns contribute uploads. Mixed scalar content and pictures in one mapped image cell, missing images, unsupported formulas, external images, ambiguous relationships, pictures spanning multiple business rows, and unmappable absolute anchors stop validation. UPLOAD support here is for embedded images, not arbitrary embedded documents or JSON/URL text in cells.
|
|
43
|
+
|
|
44
|
+
Image imports use a v3 main checkpoint at `--checkpoint` and a row checkpoint at `<checkpoint>.rows.json`. Keep both files together, plus the source workbook and mapping. The main checkpoint binds the actor, application, dataset, runtime domain, source, mapping, schema, image descriptors, batch settings and row strategy. Do not edit or replace checkpoint files. Keep the result report for reconciliation.
|
|
45
|
+
|
|
46
|
+
After an interruption, run the exact command with `--resume`. Resume queries the original image identity before deciding whether a pending upload may continue, then resumes the original row IDs/task markers. A completed image that becomes missing, corrupt or changed stops recovery; it is not automatically re-uploaded. Completed resumes re-read images and records without uploading or creating duplicates. If a row phase was already started but its row checkpoint is missing, stop and reconcile the original outcome before proceeding.
|
|
47
|
+
|
|
48
|
+
UPLOAD values are compared strictly: a changed fileName, filePath, array order or unexpected property stops recovery. Legacy IMAGE comparison ignores known empty server defaults for creator fields and geolocation, while preserving meaningful or unknown metadata differences. For an auto-ID image import previously marked as conflicted, `--resume` may recover only when the original generated row IDs are recorded and fresh readback confirms every original image, row ID and mapped field. All batches are checked before any remaining rows are written. Missing rows, different content, marker collisions, or conflicts without recorded IDs still stop recovery. Keep the original checkpoints; never clear a conflict by editing them or starting the same import with new markers. Scalar-only and fixed-ID conflict handling is unchanged.
|
|
49
|
+
|
|
50
|
+
WebP (including static and animated), SVG/EMF, remote URLs, arbitrary image formulas, shared image formulas, ATTACHMENT fields, and native DB_TABLE image import are unsupported. Animated PNG is also rejected. `DB_TABLE` continues to use its separately documented `batchCreate` workflow, without import checkpoints; do not automatically switch an image import to that route. Business fields never receive base64 data, formulas or temporary signed URLs.
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"name": "lovrabet",
|
|
4
4
|
"packageName": "@lovrabet/lovrabet-cli",
|
|
5
|
-
"packageVersion": "2.3.
|
|
6
|
-
"skillVersion": "2.3.
|
|
5
|
+
"packageVersion": "2.3.6-beta.2",
|
|
6
|
+
"skillVersion": "2.3.6-beta.2",
|
|
7
7
|
"files": [
|
|
8
8
|
"SKILL.md",
|
|
9
9
|
"guides/app-resolution.md",
|
|
@@ -40,5 +40,5 @@
|
|
|
40
40
|
"references/lovrabet-user-account.md",
|
|
41
41
|
"references/lovrabet-workspace.md"
|
|
42
42
|
],
|
|
43
|
-
"digest": "
|
|
43
|
+
"digest": "05e591fe2bc14b4bcbfb81de453da2636aef3698d52f31163fb4259b6d4ced7d"
|
|
44
44
|
}
|