@kedem/okdb 1.0.1 → 1.0.3
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/bin/okdb.js +1 -1
- package/keys/public.pem +3 -0
- package/okdb.js +1 -1
- package/package.json +2 -2
- package/public/admin-app.js +1 -1
- package/public/components/admin-route-host.ok.js +1 -1
- package/public/components/env-picker.ok.js +1 -1
- package/public/components/field-path-input.ok.js +1 -1
- package/public/components/geo-map.ok.js +1 -1
- package/public/components/ok-cron-input.ok.js +1 -1
- package/public/components/ok-dropzone.ok.js +1 -1
- package/public/components/ok-js-input.ok.js +1 -1
- package/public/components/ok-json-input.ok.js +1 -1
- package/public/components/ok-text-monaco-input.ok.js +1 -1
- package/public/components/theme-toggle.ok.js +1 -1
- package/public/login-app.js +1 -1
- package/public/modules/ok.js +1 -1
- package/public/sections/api/parts/api-endpoint.ok.js +1 -1
- package/public/sections/auth/modals/create-token-modal.ok.js +1 -1
- package/public/sections/auth/modals/edit-token-modal.ok.js +1 -1
- package/public/sections/auth/modals/perm-info-popover.ok.js +1 -1
- package/public/sections/auth/parts/token-detail.ok.js +1 -1
- package/public/sections/auth/parts/token-list.ok.js +1 -1
- package/public/sections/db/modals/add-item-modal.ok.js +1 -1
- package/public/sections/db/modals/create-env-modal.ok.js +1 -1
- package/public/sections/db/modals/create-fts-modal.ok.js +1 -1
- package/public/sections/db/modals/create-index-modal.ok.js +1 -1
- package/public/sections/db/modals/create-pipeline-modal.ok.js +1 -1
- package/public/sections/db/modals/demo-env-modal.ok.js +1 -1
- package/public/sections/db/modals/remove-env-modal.ok.js +1 -1
- package/public/sections/db/modals/schema-edit-modal.ok.js +1 -1
- package/public/sections/db/parts/db-overview.ok.js +1 -1
- package/public/sections/db/parts/db-pipelines-panel.ok.js +1 -1
- package/public/sections/db/parts/edit-row.ok.js +1 -1
- package/public/sections/db/parts/tm-timeline.ok.js +1 -1
- package/public/sections/db/parts/type-changelog.ok.js +1 -1
- package/public/sections/db/parts/type-list.ok.js +1 -1
- package/public/sections/db/parts/type-pipelines-tab.ok.js +1 -1
- package/public/sections/db/parts/type-schema-tab.ok.js +1 -1
- package/public/sections/db/parts/type-viewer.ok.js +1 -1
- package/public/sections/db/parts/type-violations-tab.ok.js +1 -1
- package/public/sections/embeddings/modals/register-model-modal.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-create-panel.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-embedder-panel.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-engine-declaration-editor.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-engine-list.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-indexer-panel.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-lifecycle-bar.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-model-catalog.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-overview.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-search-panel.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-worker-panel.ok.js +1 -1
- package/public/sections/embeddings/parts/embeddings-engine-panel.ok.js +1 -1
- package/public/sections/embeddings/parts/engines-overview.ok.js +1 -1
- package/public/sections/embeddings/parts/pipeline-create-panel.ok.js +1 -1
- package/public/sections/engines/engine-panel-shared-style.js +1 -1
- package/public/sections/engines/engine-ui-utils.js +1 -1
- package/public/sections/engines/modals/engine-modal.ok.js +1 -1
- package/public/sections/engines/parts/engine-declaration-editor.ok.js +1 -1
- package/public/sections/engines/parts/engine-lifecycle-actions.ok.js +1 -1
- package/public/sections/engines/parts/engine-panel-shell.ok.js +1 -1
- package/public/sections/engines/parts/engine-resource-card.ok.js +1 -1
- package/public/sections/engines/parts/engine-row-item.ok.js +1 -1
- package/public/sections/engines/parts/generic-engine-panel.ok.js +1 -1
- package/public/sections/files/parts/files-blob-status.ok.js +1 -1
- package/public/sections/files/parts/files-collection-list.ok.js +1 -1
- package/public/sections/files/parts/files-collection-panel.ok.js +1 -1
- package/public/sections/files/parts/files-file-list.ok.js +1 -1
- package/public/sections/files/parts/files-overview.ok.js +1 -1
- package/public/sections/files/parts/files-path-browser.ok.js +1 -1
- package/public/sections/files/parts/files-upload-panel.ok.js +1 -1
- package/public/sections/functions/modals/function-modal.ok.js +1 -1
- package/public/sections/functions/parts/function-detail.ok.js +1 -1
- package/public/sections/functions/parts/function-logs.ok.js +1 -1
- package/public/sections/functions/parts/function-runner.ok.js +1 -1
- package/public/sections/functions/parts/functions-list.ok.js +1 -1
- package/public/sections/license/parts/license-panel.ok.js +1 -1
- package/public/sections/queue/modals/create-bucket-modal.ok.js +1 -1
- package/public/sections/queue/modals/edit-bucket-modal.ok.js +1 -1
- package/public/sections/queue/modals/edit-job-modal.ok.js +1 -1
- package/public/sections/queue/modals/enqueue-job-modal.ok.js +1 -1
- package/public/sections/queue/modals/job-type-modal.ok.js +1 -1
- package/public/sections/queue/parts/ok-job-form.ok.js +1 -1
- package/public/sections/queue/parts/queue-buckets.ok.js +1 -1
- package/public/sections/queue/parts/queue-job-types.ok.js +1 -1
- package/public/sections/queue/parts/queue-jobs.ok.js +1 -1
- package/public/sections/queue/parts/queue-types.ok.js +1 -1
- package/public/sections/queue/parts/queue-workers.ok.js +1 -1
- package/public/sections/sync/parts/sync-node-detail.ok.js +1 -1
- package/public/sections/sync/parts/sync-retention.ok.js +1 -1
- package/public/sections/sync/parts/sync-topology.ok.js +1 -1
- package/public/sections/system/modals/data-ops-modal.ok.js +1 -1
- package/public/sections/system/parts/system-api-panel.ok.js +1 -1
- package/public/sections/system/parts/system-auth-panel.ok.js +1 -1
- package/public/sections/system/parts/system-log-history.ok.js +1 -1
- package/public/sections/system/parts/system-log.ok.js +1 -1
- package/public/sections/system/parts/system-status.ok.js +1 -1
- package/public/sections/system/parts/system-sync-panel.ok.js +1 -1
- package/public/sections/views/modals/create-view-modal.ok.js +1 -1
- package/public/sections/views/parts/view-detail.ok.js +1 -1
- package/public/sections/views/parts/views-list.ok.js +1 -1
- package/public/sections/views/parts/views-overview.ok.js +1 -1
- package/public/setup-app.js +1 -1
- package/public/stores/auth-store.js +1 -1
- package/public/stores/events-store.js +1 -1
- package/public/stores/functions-store.js +1 -1
- package/public/stores/okdb-store.js +1 -1
- package/public/stores/theme-store.js +1 -1
- package/public/util/permissions.js +1 -1
- package/public/util/sift-schema.js +1 -1
- package/public/vendor/okjs/ok.esm.min.js +1 -2
- package/public/vendor/okjs/toolkit/behavior/async.ok.js +1 -1
- package/public/vendor/okjs/toolkit/components/ok-chart.ok.js +1 -1
- package/public/vendor/okjs/toolkit/components/ok-doc-viewer.ok.js +1 -1
- package/public/vendor/okjs/toolkit/components/ok-marked.ok.js +1 -1
- package/public/vendor/okjs/toolkit/components/ok-monaco.ok.js +1 -1
- package/public/vendor/okjs/toolkit/core/ok-layer-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/core/ok-layer.ok.js +1 -1
- package/public/vendor/okjs/toolkit/core/ok-overlay.ok.js +1 -1
- package/public/vendor/okjs/toolkit/core/ok-sandbox.ok.js +1 -1
- package/public/vendor/okjs/toolkit/core/transition.ok.js +1 -1
- package/public/vendor/okjs/toolkit/core/virtualized.ok.js +1 -1
- package/public/vendor/okjs/toolkit/devtools/ok-console-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/devtools/ok-console.ok.js +1 -1
- package/public/vendor/okjs/toolkit/devtools/ok-fps-monitor-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/devtools/ok-fps-monitor.ok.js +1 -1
- package/public/vendor/okjs/toolkit/devtools/ok-inspector-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/devtools/ok-inspector.ok.js +1 -1
- package/public/vendor/okjs/toolkit/devtools/ok-js-tree.ok.js +1 -1
- package/public/vendor/okjs/toolkit/devtools/ok-timeline-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/devtools/ok-timeline.ok.js +1 -1
- package/public/vendor/okjs/toolkit/docs/doc-viewer.ok.js +1 -1
- package/public/vendor/okjs/toolkit/editor/ok-live-component.ok.js +1 -1
- package/public/vendor/okjs/toolkit/editor/ok-live-example.ok.js +1 -1
- package/public/vendor/okjs/toolkit/editor/ok-live-shell.ok.js +1 -1
- package/public/vendor/okjs/toolkit/elements/ok-dropdown.ok.js +1 -1
- package/public/vendor/okjs/toolkit/elements/ok-icon.ok.js +1 -1
- package/public/vendor/okjs/toolkit/elements/ok-select.ok.js +1 -1
- package/public/vendor/okjs/toolkit/elements/ok-table.ok.js +1 -1
- package/public/vendor/okjs/toolkit/errors/ok-crash-boundary.ok.js +1 -1
- package/public/vendor/okjs/toolkit/errors/ok-crash-info.ok.js +1 -1
- package/public/vendor/okjs/toolkit/i18n/i18n-editor-examples.ok.js +1 -1
- package/public/vendor/okjs/toolkit/i18n/i18n-editor.ok.js +1 -1
- package/public/vendor/okjs/toolkit/i18n/i18n-key-editor-tips.ok.js +1 -1
- package/public/vendor/okjs/toolkit/i18n/i18n-key-editor.ok.js +1 -1
- package/public/vendor/okjs/toolkit/i18n/i18n-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/i18n/ok-i18n.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-contextmenu.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-dismiss-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-draggable.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-flyover-panel.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-flyover.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-highlight-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-highlight.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-hotkeys-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-picker-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-popout-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-popout.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-portal-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-submenu.ok.js +1 -1
- package/public/vendor/okjs/toolkit/layout/ok-resizer.ok.js +1 -1
- package/public/vendor/okjs/toolkit/manifest.js +1 -1
- package/public/vendor/okjs/toolkit/modals/ok-modal-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/modals/ok-modal.ok.js +1 -1
- package/public/vendor/okjs/toolkit/modals/ok-toast-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/modals/ok-window.ok.js +1 -1
- package/public/vendor/okjs/toolkit/navigation/hash-router.ok.js +1 -1
- package/public/vendor/okjs/toolkit/navigation/history-router.ok.js +1 -1
- package/public/vendor/okjs/toolkit/navigation/router.ok.js +1 -1
- package/public/vendor/okjs/toolkit/sync/reactive-sync-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/sync/reactive-sync.js +1 -1
- package/public/vendor/okjs/toolkit/theming/blocks/ok-design-button.css.js +1 -1
- package/public/vendor/okjs/toolkit/theming/blocks/ok-design-input.css.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-design-style.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-design-vars.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-design.ok.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-input.ok.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-style.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-utils.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-variable.ok.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-vm.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor.ok.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-theme.ok.js +1 -1
- package/public/view-models/type-query-vm.js +1 -1
- package/okdb-data/default/data.mdb +0 -0
- package/okdb-data/default/lock.mdb +0 -0
- package/okdb-data/~log/data.mdb +0 -0
- package/okdb-data/~log/lock.mdb +0 -0
- package/okdb-data/~system/data.mdb +0 -0
- package/okdb-data/~system/lock.mdb +0 -0
- package/public/images/logo.png +0 -0
- package/public/images/logo.svg +0 -333
|
@@ -1 +1 @@
|
|
|
1
|
-
const _0x370ce6=_0x5578;(function(_0x46c72b,_0x217ddb){const _0x4bb3c2=_0x5578,_0x7dd057=_0x46c72b();while(!![]){try{const _0x2a6bb4=-parseInt(_0x4bb3c2(0xa6))/0x1+-parseInt(_0x4bb3c2(0xb0))/0x2*(-parseInt(_0x4bb3c2(0x84))/0x3)+-parseInt(_0x4bb3c2(0xa5))/0x4*(parseInt(_0x4bb3c2(0x89))/0x5)+parseInt(_0x4bb3c2(0x9b))/0x6*(parseInt(_0x4bb3c2(0xa8))/0x7)+-parseInt(_0x4bb3c2(0x8d))/0x8*(parseInt(_0x4bb3c2(0x76))/0x9)+-parseInt(_0x4bb3c2(0x9a))/0xa*(parseInt(_0x4bb3c2(0x72))/0xb)+parseInt(_0x4bb3c2(0x97))/0xc;if(_0x2a6bb4===_0x217ddb)break;else _0x7dd057['push'](_0x7dd057['shift']());}catch(_0xb683e){_0x7dd057['push'](_0x7dd057['shift']());}}}(_0x28f1,0x94b37));import _0x385b33 from'@toolkit/elements/ok-icon.ok.js';import _0x356c2c from'@toolkit/core/ok-overlay.ok.js';import _0x161b4c from'../../../components/ok-cron-input.ok.js';import _0x319d9c from'../../../components/ok-json-input.ok.js';function _0x5578(_0x39a4af,_0x562bce){_0x39a4af=_0x39a4af-0x6b;const _0x28f1e0=_0x28f1();let _0x5578e2=_0x28f1e0[_0x39a4af];return _0x5578e2;}import _0x126164 from'./create-bucket-modal.ok.js';function _0x28f1(){const _0x2d8a59=['busy','Failed\x20to\x20save\x20job','map','bucket','whenMode','asap','shared','timestamp','retryDelay','payloadInit','604967ZdaYcW','success','payload','filter','8828289RUuvMJ','loadBuckets','message','job','getTime','$ok','backoff','open','apiBase','close','/queue/job/','isArray','type','length','2583DUMwkP','trim','max_tries','$attr','loading','5PnWUwV','split','tags','POST','8ALmtNM','max','priority','maxTries','bucket_tokens','data','whenDatetime','progress','when','join','9849264EdQsDA','application/json','Job\x20updated','50KWusTF','18vficnL','idempotencyKey','applyJob','modal','bucketOptions','all','toast','onDone','tokens','Failed\x20to\x20load\x20job','3976620zztria','80484leMkjP','error','2410639RXfvmZ','__create__','datetime','backoff_multiplier','whenTs','<create-bucket-modal\x20:modal=\x22modal\x22\x20:on-done=\x22onDone\x22\x20/>','cron','json','2522WDaXJt','/queue/buckets','.mode-btn{font-size:11px;padding:2px\x208px;opacity:.6;border-radius:4px}.mode-btn--on{opacity:1;background:color-mix(in\x20srgb,var(--okdb-accent)\x2013%,transparent);border-color:color-mix(in\x20srgb,var(--okdb-accent)\x2033%,transparent);color:var(--okdb-accent)}.btn-ghost{background:0\x200;border:1px\x20solid\x20var(--okdb-app-border);border-radius:5px;color:inherit;cursor:pointer;opacity:.6;padding:2px\x208px;font-size:12px}.btn-ghost:hover{opacity:1;border-color:color-mix(in\x20srgb,var(--okdb-accent)\x2033%,transparent)}.btn-ghost--sm{font-size:11px;padding:1px\x207px}','\x0a<div\x20style=\x22position:relative;\x20min-width:720px;\x20max-width:calc(100vw\x20-\x2080px);\x20display:flex;\x20flex-direction:column;\x20gap:12px;\x22>\x0a\x20\x20<if\x20:=\x22busy\x20||\x20loading\x22>\x0a\x20\x20\x20\x20<ok-overlay>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22loader-center\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22loader\x22\x20class=\x22spin\x22\x20style=\x22width:32px;height:32px;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</ok-overlay>\x0a\x20\x20</if>\x0a\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x20opacity:.8;\x20font-size:12px;\x22>\x0a\x20\x20\x20\x20<span>ID:\x20<b>{{\x20job?.id\x20}}</b></span>\x0a\x20\x20\x20\x20<span>Status:\x20<b>{{\x20job?.status\x20}}</b></span>\x0a\x20\x20\x20\x20<span>Tries:\x20<b>{{\x20job?.tries\x20}}\x20/\x20{{\x20job?.max_tries\x20}}</b></span>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Row\x201:\x20type\x20+\x20priority\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Type</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20placeholder=\x22e.g.\x20email.send\x22\x20:value=\x22type\x22\x20@input=\x22type\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22width:120px;\x22><label>Priority</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20placeholder=\x220\x22\x20:value=\x22priority\x22\x20@input=\x22priority\x20=\x20Number($el.value)\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Row\x202:\x20tags\x20+\x20idempotency\x20key\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:10px;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Tags</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20placeholder=\x22comma\x20separated\x22\x20:value=\x22tags\x22\x20@input=\x22tags\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Idempotency\x20Key</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20placeholder=\x22optional\x20—\x20prevents\x20duplicate\x20jobs\x22\x20:value=\x22idempotencyKey\x22\x20@input=\x22idempotencyKey\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Buckets\x20-->\x0a\x20\x20<div\x20class=\x22field\x22>\x0a\x20\x20\x20\x20<label>Buckets\x20<span\x20style=\x22opacity:.4;\x20font-weight:400;\x20font-size:11px;\x22>(rate\x20limiting)</span></label>\x0a\x20\x20\x20\x20<each\x20:of=\x22buckets\x22\x20let:item=\x22b\x22\x20let:index=\x22i\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:6px;\x20align-items:center;\x20margin-bottom:4px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<select\x20style=\x22flex:1;\x22\x20@change=\x22onBucketSelect(i,\x20$el.value)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>—\x20none\x20—</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20as=\x22repeat\x22\x20:of=\x22bucketOptions\x22\x20let:item=\x22opt\x22\x20:value=\x22opt.id\x22\x20:selected=\x22opt.id\x20===\x20b.id\x22>{{\x20opt.id\x20}}</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22__create__\x22>+\x20Create\x20bucket…</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20style=\x22width:72px;\x22\x20type=\x22number\x22\x20min=\x221\x22\x20placeholder=\x22tokens\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22b.tokens\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22setBucketTokens(i,\x20$el.value)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x22\x20@click=\x22removeBucket(i)\x22\x20title=\x22Remove\x22>✕</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-ghost--sm\x22\x20@click=\x22addBucket()\x22\x20style=\x22margin-top:2px;\x22>+\x20Add\x20bucket</button>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Row\x203:\x20when\x20+\x20max\x20tries\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>When</label>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:4px;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22whenMode===\x27asap\x27\x20?\x20\x27mode-btn\x20mode-btn--on\x27\x20:\x20\x27mode-btn\x27\x22\x20@click=\x22whenMode=\x27asap\x27\x22>ASAP</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22whenMode===\x27datetime\x27\x20?\x20\x27mode-btn\x20mode-btn--on\x27\x20:\x20\x27mode-btn\x27\x22\x20@click=\x22whenMode=\x27datetime\x27\x22>Date</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22whenMode===\x27timestamp\x27\x20?\x20\x27mode-btn\x20mode-btn--on\x27\x20:\x20\x27mode-btn\x27\x22\x20@click=\x22whenMode=\x27timestamp\x27\x22>TS</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22whenMode\x20===\x20\x27datetime\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22datetime-local\x22\x20style=\x22flex:1;\x22\x20:value=\x22whenDatetime\x22\x20@input=\x22whenDatetime\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22whenMode\x20===\x20\x27timestamp\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20style=\x22flex:1;\x22\x20placeholder=\x22ms\x20timestamp\x22\x20:value=\x22whenTs\x22\x20@input=\x22whenTs\x20=\x20$el.value\x20===\x20\x27\x27\x20?\x20null\x20:\x20Number($el.value)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22whenMode\x20===\x20\x27asap\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.5;\x20font-size:12px;\x20padding:0\x208px;\x22>Run\x20immediately</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22width:120px;\x22><label>Max\x20tries</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20placeholder=\x22unlimited\x22\x20:value=\x22maxTries\x22\x20@input=\x22maxTries\x20=\x20$el.value\x20===\x20\x27\x27\x20?\x20null\x20:\x20Number($el.value)\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Row\x204:\x20retry\x20delay\x20+\x20backoff\x20+\x20cron\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Retry\x20delay\x20(ms)</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20placeholder=\x220\x22\x20:value=\x22retryDelay\x22\x20@input=\x22retryDelay\x20=\x20Number($el.value)\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22width:120px;\x22><label>Backoff\x20multiplier</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20step=\x220.1\x22\x20placeholder=\x221\x22\x20:value=\x22backoff\x22\x20@input=\x22backoff\x20=\x20Number($el.value)\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Cron</label>\x0a\x20\x20\x20\x20\x20\x20<ok-cron-input\x20:value=\x22cron\x22\x20placeholder=\x22optional\x22\x20@change=\x22cron\x20=\x20$event.detail\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Row\x205:\x20progress\x20+\x20status\x20message\x20(edit-specific)\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Progress</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20placeholder=\x22—\x22\x20:value=\x22progress\x22\x20@input=\x22progress\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Status\x20message</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20placeholder=\x22—\x22\x20:value=\x22statusMessage\x22\x20@input=\x22statusMessage\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Payload\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20<span\x20style=\x22opacity:.7;\x20font-size:12px;\x22>Payload</span>\x0a\x20\x20\x20\x20<ok-json-input\x0a\x20\x20\x20\x20\x20\x20mode=\x22textarea\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22height:260px;\x22\x0a\x20\x20\x20\x20\x20\x20:value=\x22payloadInit\x22\x0a\x20\x20\x20\x20\x20\x20@edit=\x22payload\x20=\x20$event.detail\x22\x0a\x20\x20\x20\x20/>\x0a\x20\x20</div>\x0a\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:10px;\x20justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20<button\x20@click=\x22cancel()\x22>Cancel</button>\x0a\x20\x20\x20\x20<button\x20@click=\x22save()\x22\x20:disabled=\x22busy\x20||\x20loading\x20||\x20!type\x22>Save</button>\x0a\x20\x20</div>\x0a</div>\x0a','buckets','/update'];_0x28f1=function(){return _0x2d8a59;};return _0x28f1();}import _0x51a8f3 from'../../../stores/okdb-store.js';export default{'tag':'edit-job-modal','dependencies':[_0x161b4c,_0x319d9c,_0x126164,_0x356c2c,_0x385b33],'attr':{'modal':{},'jobId':{},'onDone':{}},'context':_0x1c2c2d=>({'busy':!0x1,'loading':!0x1,'job':null,'type':'','payloadInit':{},'payload':{},'priority':0x0,'maxTries':null,'retryDelay':0x0,'backoff':0x1,'tags':'','buckets':[],'cron':'','idempotencyKey':'','whenMode':_0x370ce6(0x6d),'whenDatetime':'','whenTs':null,'progress':'','statusMessage':'','bucketOptions':[],async 'loadBuckets'(){const _0x5befb8=_0x370ce6;try{const _0x3a195b=await fetch(_0x51a8f3[_0x5befb8(0x7e)]+_0x5befb8(0xb1)),_0x55bf57=await _0x3a195b[_0x5befb8(0xaf)]();this[_0x5befb8(0x9f)]=_0x55bf57?.['data']??[];}catch{this['bucketOptions']=[];}},async 'onBucketSelect'(_0xfcc37c,_0x2d6531){const _0x10314e=_0x370ce6;if(_0x10314e(0xa9)===_0x2d6531){const _0x1477e1=this;await _0x1c2c2d[_0x10314e(0x7b)]['shared'][_0x10314e(0x9e)][_0x10314e(0x7d)]({'owner':_0x1c2c2d,'title':'Add\x20Token\x20Bucket','content':_0x10314e(0xad),'context':_0x1a3e23=>({'modal':_0x1a3e23,'onDone':async _0x30c57b=>{const _0x445192=_0x10314e;await _0x1477e1[_0x445192(0x77)](),_0x1477e1['buckets']=_0x1477e1[_0x445192(0xb4)][_0x445192(0xb8)]((_0x3c9d81,_0x198a86)=>_0x198a86===_0xfcc37c?{..._0x3c9d81,'id':_0x30c57b}:_0x3c9d81);}})});}else this[_0x10314e(0xb4)]=this[_0x10314e(0xb4)]['map']((_0x30dea9,_0x33637a)=>_0x33637a===_0xfcc37c?{..._0x30dea9,'id':_0x2d6531}:_0x30dea9);},'setBucketTokens'(_0x1c6692,_0x45413e){const _0x132351=_0x370ce6,_0x6f42cc=''===_0x45413e?0x1:Math[_0x132351(0x8e)](0x1,parseInt(_0x45413e)||0x1);this[_0x132351(0xb4)]=this[_0x132351(0xb4)][_0x132351(0xb8)]((_0x2c833e,_0x491b2e)=>_0x491b2e===_0x1c6692?{..._0x2c833e,'tokens':_0x6f42cc}:_0x2c833e);},'addBucket'(){const _0x2fe541=_0x370ce6;this[_0x2fe541(0xb4)]=[...this[_0x2fe541(0xb4)],{'id':'','tokens':0x1}];},'removeBucket'(_0x50348d){const _0x4f2fb2=_0x370ce6;this['buckets']=this[_0x4f2fb2(0xb4)][_0x4f2fb2(0x75)]((_0x584824,_0x17a9be)=>_0x17a9be!==_0x50348d);},'getWhen'(){const _0x34b1cd=_0x370ce6;if('asap'===this['whenMode'])return null;if(_0x34b1cd(0xaa)===this['whenMode']){const _0x442281=new Date(this[_0x34b1cd(0x93)]);return isNaN(_0x442281[_0x34b1cd(0x7a)]())?null:_0x442281[_0x34b1cd(0x7a)]();}return this[_0x34b1cd(0xac)];},'_parseTags'(_0x3a2733){const _0x4139a0=_0x370ce6;if(!_0x3a2733)return;const _0x4c155d=String(_0x3a2733)[_0x4139a0(0x8a)](',')[_0x4139a0(0xb8)](_0xe6bc5a=>_0xe6bc5a[_0x4139a0(0x85)]())['filter'](Boolean);return _0x4c155d[_0x4139a0(0x83)]?_0x4c155d:void 0x0;},'applyJob'(_0x3eaa6c){const _0x599a75=_0x370ce6;_0x3eaa6c&&(this[_0x599a75(0x82)]=_0x3eaa6c[_0x599a75(0x82)]??'',this[_0x599a75(0x71)]=_0x3eaa6c[_0x599a75(0x74)]??{},this[_0x599a75(0x74)]=_0x3eaa6c['payload']??{},this[_0x599a75(0x8f)]=_0x3eaa6c['priority']??0x0,this['maxTries']=_0x3eaa6c[_0x599a75(0x86)]??null,this[_0x599a75(0x70)]=_0x3eaa6c['retry_delay']??0x0,this[_0x599a75(0x7c)]=_0x3eaa6c[_0x599a75(0xab)]??0x1,this[_0x599a75(0x8b)]=Array[_0x599a75(0x81)](_0x3eaa6c[_0x599a75(0x8b)])?_0x3eaa6c[_0x599a75(0x8b)][_0x599a75(0x96)](',\x20'):'',this[_0x599a75(0xae)]=_0x3eaa6c[_0x599a75(0xae)]??'',this[_0x599a75(0x9c)]=_0x3eaa6c?.['idempotency_key']||'',this[_0x599a75(0x94)]=_0x3eaa6c['progress']??'',this['statusMessage']=_0x3eaa6c['status_message']??'',_0x3eaa6c['when']&&_0x3eaa6c[_0x599a75(0x95)]>Date['now']()-0x3e8?(this[_0x599a75(0x6c)]=_0x599a75(0x6f),this[_0x599a75(0x93)]=new Date(_0x3eaa6c[_0x599a75(0x95)])['toISOString']()['slice'](0x0,0x10),this[_0x599a75(0xac)]=_0x3eaa6c['when']):(this['whenMode']='asap',this['whenDatetime']='',this['whenTs']=null),Array[_0x599a75(0x81)](_0x3eaa6c[_0x599a75(0xb4)])&&_0x3eaa6c['buckets'][_0x599a75(0x83)]>0x0?this['buckets']=_0x3eaa6c[_0x599a75(0xb4)][_0x599a75(0xb8)](_0x4e77b0=>({'id':_0x4e77b0['id'],'tokens':_0x4e77b0[_0x599a75(0xa3)]??0x1})):_0x3eaa6c[_0x599a75(0x6b)]?this[_0x599a75(0xb4)]=[{'id':_0x3eaa6c[_0x599a75(0x6b)],'tokens':_0x3eaa6c[_0x599a75(0x91)]??0x1}]:this[_0x599a75(0xb4)]=[]);},async 'load'(){const _0x31915c=_0x370ce6;this[_0x31915c(0x88)]=!0x0;try{const _0x31b46f=await fetch(_0x51a8f3[_0x31915c(0x7e)]+_0x31915c(0x80)+encodeURIComponent(_0x1c2c2d['$attr']['jobId'])),_0x24684a=await _0x31b46f['json']();if(!_0x31b46f['ok'])throw new Error(_0x24684a?.['error']?.[_0x31915c(0x78)]||_0x31915c(0xa4));this['job']=_0x24684a?.[_0x31915c(0x92)]??null,this[_0x31915c(0x9d)](this[_0x31915c(0x79)]);}catch(_0x19261f){_0x1c2c2d[_0x31915c(0x7b)]['shared']?.[_0x31915c(0xa1)]?.[_0x31915c(0xa7)]?.(_0x19261f?.[_0x31915c(0x78)]||_0x31915c(0xa4)),await _0x1c2c2d[_0x31915c(0x87)]['modal'][_0x31915c(0x7f)]();}finally{this['loading']=!0x1;}},async 'save'(){const _0x52b483=_0x370ce6;if(this[_0x52b483(0x79)]){this[_0x52b483(0xb6)]=!0x0;try{const _0x296b20=this['getWhen'](),_0x479fe9=String(this[_0x52b483(0xae)]||'')[_0x52b483(0x85)]()||null,_0x10de61=this[_0x52b483(0xb4)][_0x52b483(0x75)](_0x544e99=>_0x544e99['id'])[_0x52b483(0xb8)](_0x4ddf53=>({'id':_0x4ddf53['id'],'tokens':_0x4ddf53['tokens']||0x1})),_0x349f20=this['_parseTags'](this['tags']),_0x5640ad={'type':String(this[_0x52b483(0x82)]||'')['trim'](),'payload':this[_0x52b483(0x74)],'when':_0x296b20,'priority':Number(this['priority'])||0x0,'tags':_0x349f20??this[_0x52b483(0x79)]['tags'],'buckets':_0x10de61,'cron':_0x479fe9,'max_tries':null!==this[_0x52b483(0x90)]&&''!==this['maxTries']?Number(this[_0x52b483(0x90)]):null,'retry_delay':Number(this[_0x52b483(0x70)])||0x0,'backoff_multiplier':Number(this[_0x52b483(0x7c)])||0x1,'progress':this[_0x52b483(0x94)]||null,'status_message':this['statusMessage']||null,'idempotency_key':this[_0x52b483(0x9c)][_0x52b483(0x85)]()||null},_0x56bf48=await fetch(_0x51a8f3[_0x52b483(0x7e)]+'/queue/job/'+encodeURIComponent(this[_0x52b483(0x79)]['id'])+_0x52b483(0xb5),{'method':_0x52b483(0x8c),'headers':{'Content-Type':_0x52b483(0x98)},'body':JSON['stringify'](_0x5640ad)}),_0x3ffab5=await _0x56bf48['json']();if(!_0x56bf48['ok'])throw new Error(_0x3ffab5?.[_0x52b483(0xa7)]?.['message']||_0x52b483(0xb7));_0x1c2c2d[_0x52b483(0x7b)][_0x52b483(0x6e)]?.['toast']?.[_0x52b483(0x73)]?.(_0x52b483(0x99)),await _0x1c2c2d[_0x52b483(0x87)][_0x52b483(0x9e)][_0x52b483(0x7f)](),await _0x1c2c2d[_0x52b483(0x87)][_0x52b483(0xa2)]?.(_0x3ffab5?.[_0x52b483(0x92)]??null);}catch(_0x49efd0){_0x1c2c2d[_0x52b483(0x7b)][_0x52b483(0x6e)]?.[_0x52b483(0xa1)]?.[_0x52b483(0xa7)]?.(_0x49efd0?.[_0x52b483(0x78)]||'Failed\x20to\x20save\x20job');}finally{this[_0x52b483(0xb6)]=!0x1;}}},'cancel'(){const _0x391309=_0x370ce6;_0x1c2c2d[_0x391309(0x87)][_0x391309(0x9e)][_0x391309(0x7f)]();}}),async 'mount'(){const _0x195601=_0x370ce6;await Promise[_0x195601(0xa0)]([this['load'](),this[_0x195601(0x77)]()]);},'template':_0x370ce6(0xb3),'style':_0x370ce6(0xb2)};
|
|
1
|
+
const _0x1adccd=_0x2086;function _0x2086(_0x4996e0,_0x4741e0){_0x4996e0=_0x4996e0-0x189;const _0x1689e4=_0x1689();let _0x2086fd=_0x1689e4[_0x4996e0];return _0x2086fd;}(function(_0x35b521,_0x546b9c){const _0xc1b230=_0x2086,_0x350b31=_0x35b521();while(!![]){try{const _0x420c69=-parseInt(_0xc1b230(0x194))/0x1+parseInt(_0xc1b230(0x19b))/0x2*(-parseInt(_0xc1b230(0x18c))/0x3)+parseInt(_0xc1b230(0x196))/0x4*(parseInt(_0xc1b230(0x1a1))/0x5)+parseInt(_0xc1b230(0x191))/0x6+-parseInt(_0xc1b230(0x18a))/0x7+-parseInt(_0xc1b230(0x1d2))/0x8+-parseInt(_0xc1b230(0x1ab))/0x9*(-parseInt(_0xc1b230(0x192))/0xa);if(_0x420c69===_0x546b9c)break;else _0x350b31['push'](_0x350b31['shift']());}catch(_0x337482){_0x350b31['push'](_0x350b31['shift']());}}}(_0x1689,0x7e2f4));import _0x16d825 from'@toolkit/elements/ok-icon.ok.js';import _0x258552 from'@toolkit/core/ok-overlay.ok.js';import _0x404099 from'../../../components/ok-cron-input.ok.js';import _0x3cba77 from'../../../components/ok-json-input.ok.js';import _0x23f892 from'./create-bucket-modal.ok.js';import _0x552520 from'../../../stores/okdb-store.js';export default{'tag':_0x1adccd(0x1b0),'dependencies':[_0x404099,_0x3cba77,_0x23f892,_0x258552,_0x16d825],'attr':{'modal':{},'jobId':{},'onDone':{}},'context':_0x1f6830=>({'busy':!0x1,'loading':!0x1,'job':null,'type':'','payloadInit':{},'payload':{},'priority':0x0,'maxTries':null,'retryDelay':0x0,'backoff':0x1,'tags':'','buckets':[],'cron':'','idempotencyKey':'','whenMode':_0x1adccd(0x1a6),'whenDatetime':'','whenTs':null,'progress':'','statusMessage':'','bucketOptions':[],async 'loadBuckets'(){const _0xf81bd7=_0x1adccd;try{const _0x5a8c75=await fetch(_0x552520['apiBase']+_0xf81bd7(0x1ce)),_0x1f379e=await _0x5a8c75[_0xf81bd7(0x197)]();this[_0xf81bd7(0x1bb)]=_0x1f379e?.[_0xf81bd7(0x1b8)]??[];}catch{this[_0xf81bd7(0x1bb)]=[];}},async 'onBucketSelect'(_0x56942b,_0x41dede){const _0x5b7102=_0x1adccd;if(_0x5b7102(0x1ad)===_0x41dede){const _0x26d2bf=this;await _0x1f6830[_0x5b7102(0x1a3)][_0x5b7102(0x1b4)][_0x5b7102(0x1c0)][_0x5b7102(0x190)]({'owner':_0x1f6830,'title':_0x5b7102(0x19a),'content':'<create-bucket-modal\x20:modal=\x22modal\x22\x20:on-done=\x22onDone\x22\x20/>','context':_0x2469d4=>({'modal':_0x2469d4,'onDone':async _0x2f8e79=>{const _0x320299=_0x5b7102;await _0x26d2bf[_0x320299(0x1cb)](),_0x26d2bf[_0x320299(0x1a5)]=_0x26d2bf['buckets'][_0x320299(0x1c3)]((_0x34c089,_0x447e23)=>_0x447e23===_0x56942b?{..._0x34c089,'id':_0x2f8e79}:_0x34c089);}})});}else this[_0x5b7102(0x1a5)]=this[_0x5b7102(0x1a5)][_0x5b7102(0x1c3)]((_0x505e3d,_0x5783d2)=>_0x5783d2===_0x56942b?{..._0x505e3d,'id':_0x41dede}:_0x505e3d);},'setBucketTokens'(_0x1d92e8,_0x7eb624){const _0x432f94=_0x1adccd,_0x50f701=''===_0x7eb624?0x1:Math[_0x432f94(0x1bc)](0x1,parseInt(_0x7eb624)||0x1);this[_0x432f94(0x1a5)]=this[_0x432f94(0x1a5)][_0x432f94(0x1c3)]((_0x42eb5a,_0x4d77f0)=>_0x4d77f0===_0x1d92e8?{..._0x42eb5a,'tokens':_0x50f701}:_0x42eb5a);},'addBucket'(){const _0x5545a3=_0x1adccd;this[_0x5545a3(0x1a5)]=[...this['buckets'],{'id':'','tokens':0x1}];},'removeBucket'(_0x5f1c4d){const _0x4ed14d=_0x1adccd;this[_0x4ed14d(0x1a5)]=this[_0x4ed14d(0x1a5)]['filter']((_0x20fffc,_0x16be12)=>_0x16be12!==_0x5f1c4d);},'getWhen'(){const _0x357111=_0x1adccd;if('asap'===this[_0x357111(0x1b7)])return null;if(_0x357111(0x19c)===this[_0x357111(0x1b7)]){const _0x4f455d=new Date(this[_0x357111(0x1ac)]);return isNaN(_0x4f455d[_0x357111(0x1c9)]())?null:_0x4f455d[_0x357111(0x1c9)]();}return this['whenTs'];},'_parseTags'(_0x1d25fb){const _0x20ad06=_0x1adccd;if(!_0x1d25fb)return;const _0x550e81=String(_0x1d25fb)['split'](',')[_0x20ad06(0x1c3)](_0x410c48=>_0x410c48['trim']())[_0x20ad06(0x199)](Boolean);return _0x550e81[_0x20ad06(0x1ba)]?_0x550e81:void 0x0;},'applyJob'(_0x2ccd08){const _0x597c6a=_0x1adccd;_0x2ccd08&&(this['type']=_0x2ccd08['type']??'',this[_0x597c6a(0x1c7)]=_0x2ccd08['payload']??{},this[_0x597c6a(0x1c6)]=_0x2ccd08['payload']??{},this[_0x597c6a(0x1b9)]=_0x2ccd08[_0x597c6a(0x1b9)]??0x0,this['maxTries']=_0x2ccd08[_0x597c6a(0x1ae)]??null,this[_0x597c6a(0x198)]=_0x2ccd08[_0x597c6a(0x1af)]??0x0,this[_0x597c6a(0x1a9)]=_0x2ccd08['backoff_multiplier']??0x1,this['tags']=Array[_0x597c6a(0x1bd)](_0x2ccd08[_0x597c6a(0x1d4)])?_0x2ccd08[_0x597c6a(0x1d4)][_0x597c6a(0x1b6)](',\x20'):'',this[_0x597c6a(0x1be)]=_0x2ccd08[_0x597c6a(0x1be)]??'',this[_0x597c6a(0x18f)]=_0x2ccd08?.[_0x597c6a(0x1cd)]||'',this['progress']=_0x2ccd08[_0x597c6a(0x1a7)]??'',this[_0x597c6a(0x193)]=_0x2ccd08['status_message']??'',_0x2ccd08[_0x597c6a(0x1b1)]&&_0x2ccd08[_0x597c6a(0x1b1)]>Date[_0x597c6a(0x1a8)]()-0x3e8?(this[_0x597c6a(0x1b7)]='timestamp',this['whenDatetime']=new Date(_0x2ccd08[_0x597c6a(0x1b1)])[_0x597c6a(0x1d0)]()[_0x597c6a(0x1c2)](0x0,0x10),this['whenTs']=_0x2ccd08[_0x597c6a(0x1b1)]):(this['whenMode']=_0x597c6a(0x1a6),this[_0x597c6a(0x1ac)]='',this[_0x597c6a(0x195)]=null),Array[_0x597c6a(0x1bd)](_0x2ccd08[_0x597c6a(0x1a5)])&&_0x2ccd08[_0x597c6a(0x1a5)][_0x597c6a(0x1ba)]>0x0?this[_0x597c6a(0x1a5)]=_0x2ccd08[_0x597c6a(0x1a5)][_0x597c6a(0x1c3)](_0x41b823=>({'id':_0x41b823['id'],'tokens':_0x41b823[_0x597c6a(0x1aa)]??0x1})):_0x2ccd08[_0x597c6a(0x1cc)]?this[_0x597c6a(0x1a5)]=[{'id':_0x2ccd08[_0x597c6a(0x1cc)],'tokens':_0x2ccd08[_0x597c6a(0x1a0)]??0x1}]:this[_0x597c6a(0x1a5)]=[]);},async 'load'(){const _0x43dae9=_0x1adccd;this[_0x43dae9(0x1ca)]=!0x0;try{const _0x29bbfd=await fetch(_0x552520[_0x43dae9(0x1a4)]+'/queue/job/'+encodeURIComponent(_0x1f6830['$attr']['jobId'])),_0x395749=await _0x29bbfd[_0x43dae9(0x197)]();if(!_0x29bbfd['ok'])throw new Error(_0x395749?.[_0x43dae9(0x19e)]?.[_0x43dae9(0x1c8)]||_0x43dae9(0x1b2));this[_0x43dae9(0x19d)]=_0x395749?.[_0x43dae9(0x1b8)]??null,this[_0x43dae9(0x1b5)](this[_0x43dae9(0x19d)]);}catch(_0x3b2980){_0x1f6830[_0x43dae9(0x1a3)][_0x43dae9(0x1b4)]?.[_0x43dae9(0x1c5)]?.['error']?.(_0x3b2980?.[_0x43dae9(0x1c8)]||_0x43dae9(0x1b2)),await _0x1f6830[_0x43dae9(0x19f)][_0x43dae9(0x1c0)][_0x43dae9(0x1cf)]();}finally{this['loading']=!0x1;}},async 'save'(){const _0x5e9675=_0x1adccd;if(this[_0x5e9675(0x19d)]){this['busy']=!0x0;try{const _0x591fae=this[_0x5e9675(0x18b)](),_0x506947=String(this[_0x5e9675(0x1be)]||'')[_0x5e9675(0x1c1)]()||null,_0x4a96df=this[_0x5e9675(0x1a5)][_0x5e9675(0x199)](_0x3e1618=>_0x3e1618['id'])[_0x5e9675(0x1c3)](_0xf49b52=>({'id':_0xf49b52['id'],'tokens':_0xf49b52['tokens']||0x1})),_0x4995e5=this['_parseTags'](this[_0x5e9675(0x1d4)]),_0x4a3da3={'type':String(this['type']||'')[_0x5e9675(0x1c1)](),'payload':this['payload'],'when':_0x591fae,'priority':Number(this[_0x5e9675(0x1b9)])||0x0,'tags':_0x4995e5??this[_0x5e9675(0x19d)][_0x5e9675(0x1d4)],'buckets':_0x4a96df,'cron':_0x506947,'max_tries':null!==this[_0x5e9675(0x1c4)]&&''!==this[_0x5e9675(0x1c4)]?Number(this['maxTries']):null,'retry_delay':Number(this[_0x5e9675(0x198)])||0x0,'backoff_multiplier':Number(this[_0x5e9675(0x1a9)])||0x1,'progress':this[_0x5e9675(0x1a7)]||null,'status_message':this['statusMessage']||null,'idempotency_key':this['idempotencyKey'][_0x5e9675(0x1c1)]()||null},_0x273cae=await fetch(_0x552520[_0x5e9675(0x1a4)]+'/queue/job/'+encodeURIComponent(this['job']['id'])+_0x5e9675(0x189),{'method':_0x5e9675(0x18e),'headers':{'Content-Type':_0x5e9675(0x1a2)},'body':JSON['stringify'](_0x4a3da3)}),_0x2103f9=await _0x273cae[_0x5e9675(0x197)]();if(!_0x273cae['ok'])throw new Error(_0x2103f9?.[_0x5e9675(0x19e)]?.[_0x5e9675(0x1c8)]||_0x5e9675(0x1bf));_0x1f6830['$ok'][_0x5e9675(0x1b4)]?.[_0x5e9675(0x1c5)]?.['success']?.('Job\x20updated'),await _0x1f6830['$attr']['modal']['close'](),await _0x1f6830[_0x5e9675(0x19f)][_0x5e9675(0x1d5)]?.(_0x2103f9?.['data']??null);}catch(_0x503e90){_0x1f6830['$ok'][_0x5e9675(0x1b4)]?.[_0x5e9675(0x1c5)]?.[_0x5e9675(0x19e)]?.(_0x503e90?.[_0x5e9675(0x1c8)]||_0x5e9675(0x1bf));}finally{this[_0x5e9675(0x1b3)]=!0x1;}}},'cancel'(){const _0x5952a1=_0x1adccd;_0x1f6830['$attr'][_0x5952a1(0x1c0)][_0x5952a1(0x1cf)]();}}),async 'mount'(){const _0x1b7041=_0x1adccd;await Promise[_0x1b7041(0x1d1)]([this[_0x1b7041(0x1d3)](),this[_0x1b7041(0x1cb)]()]);},'template':'\x0a<div\x20style=\x22position:relative;\x20min-width:720px;\x20max-width:calc(100vw\x20-\x2080px);\x20display:flex;\x20flex-direction:column;\x20gap:12px;\x22>\x0a\x20\x20<if\x20:=\x22busy\x20||\x20loading\x22>\x0a\x20\x20\x20\x20<ok-overlay>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22loader-center\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22loader\x22\x20class=\x22spin\x22\x20style=\x22width:32px;height:32px;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</ok-overlay>\x0a\x20\x20</if>\x0a\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x20opacity:.8;\x20font-size:12px;\x22>\x0a\x20\x20\x20\x20<span>ID:\x20<b>{{\x20job?.id\x20}}</b></span>\x0a\x20\x20\x20\x20<span>Status:\x20<b>{{\x20job?.status\x20}}</b></span>\x0a\x20\x20\x20\x20<span>Tries:\x20<b>{{\x20job?.tries\x20}}\x20/\x20{{\x20job?.max_tries\x20}}</b></span>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Row\x201:\x20type\x20+\x20priority\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Type</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20placeholder=\x22e.g.\x20email.send\x22\x20:value=\x22type\x22\x20@input=\x22type\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22width:120px;\x22><label>Priority</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20placeholder=\x220\x22\x20:value=\x22priority\x22\x20@input=\x22priority\x20=\x20Number($el.value)\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Row\x202:\x20tags\x20+\x20idempotency\x20key\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:10px;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Tags</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20placeholder=\x22comma\x20separated\x22\x20:value=\x22tags\x22\x20@input=\x22tags\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Idempotency\x20Key</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20placeholder=\x22optional\x20—\x20prevents\x20duplicate\x20jobs\x22\x20:value=\x22idempotencyKey\x22\x20@input=\x22idempotencyKey\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Buckets\x20-->\x0a\x20\x20<div\x20class=\x22field\x22>\x0a\x20\x20\x20\x20<label>Buckets\x20<span\x20style=\x22opacity:.4;\x20font-weight:400;\x20font-size:11px;\x22>(rate\x20limiting)</span></label>\x0a\x20\x20\x20\x20<each\x20:of=\x22buckets\x22\x20let:item=\x22b\x22\x20let:index=\x22i\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:6px;\x20align-items:center;\x20margin-bottom:4px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<select\x20style=\x22flex:1;\x22\x20@change=\x22onBucketSelect(i,\x20$el.value)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>—\x20none\x20—</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20as=\x22repeat\x22\x20:of=\x22bucketOptions\x22\x20let:item=\x22opt\x22\x20:value=\x22opt.id\x22\x20:selected=\x22opt.id\x20===\x20b.id\x22>{{\x20opt.id\x20}}</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22__create__\x22>+\x20Create\x20bucket…</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20style=\x22width:72px;\x22\x20type=\x22number\x22\x20min=\x221\x22\x20placeholder=\x22tokens\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22b.tokens\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22setBucketTokens(i,\x20$el.value)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x22\x20@click=\x22removeBucket(i)\x22\x20title=\x22Remove\x22>✕</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-ghost--sm\x22\x20@click=\x22addBucket()\x22\x20style=\x22margin-top:2px;\x22>+\x20Add\x20bucket</button>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Row\x203:\x20when\x20+\x20max\x20tries\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>When</label>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:4px;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22whenMode===\x27asap\x27\x20?\x20\x27mode-btn\x20mode-btn--on\x27\x20:\x20\x27mode-btn\x27\x22\x20@click=\x22whenMode=\x27asap\x27\x22>ASAP</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22whenMode===\x27datetime\x27\x20?\x20\x27mode-btn\x20mode-btn--on\x27\x20:\x20\x27mode-btn\x27\x22\x20@click=\x22whenMode=\x27datetime\x27\x22>Date</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22whenMode===\x27timestamp\x27\x20?\x20\x27mode-btn\x20mode-btn--on\x27\x20:\x20\x27mode-btn\x27\x22\x20@click=\x22whenMode=\x27timestamp\x27\x22>TS</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22whenMode\x20===\x20\x27datetime\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22datetime-local\x22\x20style=\x22flex:1;\x22\x20:value=\x22whenDatetime\x22\x20@input=\x22whenDatetime\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22whenMode\x20===\x20\x27timestamp\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20style=\x22flex:1;\x22\x20placeholder=\x22ms\x20timestamp\x22\x20:value=\x22whenTs\x22\x20@input=\x22whenTs\x20=\x20$el.value\x20===\x20\x27\x27\x20?\x20null\x20:\x20Number($el.value)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22whenMode\x20===\x20\x27asap\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.5;\x20font-size:12px;\x20padding:0\x208px;\x22>Run\x20immediately</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22width:120px;\x22><label>Max\x20tries</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20placeholder=\x22unlimited\x22\x20:value=\x22maxTries\x22\x20@input=\x22maxTries\x20=\x20$el.value\x20===\x20\x27\x27\x20?\x20null\x20:\x20Number($el.value)\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Row\x204:\x20retry\x20delay\x20+\x20backoff\x20+\x20cron\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Retry\x20delay\x20(ms)</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20placeholder=\x220\x22\x20:value=\x22retryDelay\x22\x20@input=\x22retryDelay\x20=\x20Number($el.value)\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22width:120px;\x22><label>Backoff\x20multiplier</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20step=\x220.1\x22\x20placeholder=\x221\x22\x20:value=\x22backoff\x22\x20@input=\x22backoff\x20=\x20Number($el.value)\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Cron</label>\x0a\x20\x20\x20\x20\x20\x20<ok-cron-input\x20:value=\x22cron\x22\x20placeholder=\x22optional\x22\x20@change=\x22cron\x20=\x20$event.detail\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Row\x205:\x20progress\x20+\x20status\x20message\x20(edit-specific)\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Progress</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20placeholder=\x22—\x22\x20:value=\x22progress\x22\x20@input=\x22progress\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Status\x20message</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20placeholder=\x22—\x22\x20:value=\x22statusMessage\x22\x20@input=\x22statusMessage\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Payload\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20<span\x20style=\x22opacity:.7;\x20font-size:12px;\x22>Payload</span>\x0a\x20\x20\x20\x20<ok-json-input\x0a\x20\x20\x20\x20\x20\x20mode=\x22textarea\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22height:260px;\x22\x0a\x20\x20\x20\x20\x20\x20:value=\x22payloadInit\x22\x0a\x20\x20\x20\x20\x20\x20@edit=\x22payload\x20=\x20$event.detail\x22\x0a\x20\x20\x20\x20/>\x0a\x20\x20</div>\x0a\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:10px;\x20justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20<button\x20@click=\x22cancel()\x22>Cancel</button>\x0a\x20\x20\x20\x20<button\x20@click=\x22save()\x22\x20:disabled=\x22busy\x20||\x20loading\x20||\x20!type\x22>Save</button>\x0a\x20\x20</div>\x0a</div>\x0a','style':_0x1adccd(0x18d)};function _0x1689(){const _0x12972f=['348790unPtxW','statusMessage','802048xYxAfB','whenTs','8628QQezxv','json','retryDelay','filter','Add\x20Token\x20Bucket','16sKZsOY','datetime','job','error','$attr','bucket_tokens','885EDedrZ','application/json','$ok','apiBase','buckets','asap','progress','now','backoff','tokens','423TnFyDl','whenDatetime','__create__','max_tries','retry_delay','edit-job-modal','when','Failed\x20to\x20load\x20job','busy','shared','applyJob','join','whenMode','data','priority','length','bucketOptions','max','isArray','cron','Failed\x20to\x20save\x20job','modal','trim','slice','map','maxTries','toast','payload','payloadInit','message','getTime','loading','loadBuckets','bucket','idempotency_key','/queue/buckets','close','toISOString','all','1868832KGcYMB','load','tags','onDone','/update','655718OdLPNK','getWhen','157302agoRtV','.mode-btn{font-size:11px;padding:2px\x208px;opacity:.6;border-radius:4px}.mode-btn--on{opacity:1;background:color-mix(in\x20srgb,var(--okdb-accent)\x2013%,transparent);border-color:color-mix(in\x20srgb,var(--okdb-accent)\x2033%,transparent);color:var(--okdb-accent)}.btn-ghost{background:0\x200;border:1px\x20solid\x20var(--okdb-app-border);border-radius:5px;color:inherit;cursor:pointer;opacity:.6;padding:2px\x208px;font-size:12px}.btn-ghost:hover{opacity:1;border-color:color-mix(in\x20srgb,var(--okdb-accent)\x2033%,transparent)}.btn-ghost--sm{font-size:11px;padding:1px\x207px}','POST','idempotencyKey','open','267288fyYZYR'];_0x1689=function(){return _0x12972f;};return _0x1689();}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const _0x408539=_0x115b;(function(_0x21a50e,_0xfce3d0){const _0x42ec45=_0x115b,_0x52ea29=_0x21a50e();while(!![]){try{const _0x2f26ce=parseInt(_0x42ec45(0x21e))/0x1+parseInt(_0x42ec45(0x1d5))/0x2*(parseInt(_0x42ec45(0x1b6))/0x3)+parseInt(_0x42ec45(0x1c5))/0x4*(-parseInt(_0x42ec45(0x1f3))/0x5)+parseInt(_0x42ec45(0x1f2))/0x6*(-parseInt(_0x42ec45(0x1ae))/0x7)+parseInt(_0x42ec45(0x1c3))/0x8+parseInt(_0x42ec45(0x1ca))/0x9*(-parseInt(_0x42ec45(0x214))/0xa)+-parseInt(_0x42ec45(0x20c))/0xb*(-parseInt(_0x42ec45(0x1ef))/0xc);if(_0x2f26ce===_0xfce3d0)break;else _0x52ea29['push'](_0x52ea29['shift']());}catch(_0x382f08){_0x52ea29['push'](_0x52ea29['shift']());}}}(_0x232a,0xa2454));import _0x12252c from'@toolkit/elements/ok-icon.ok.js';function _0x115b(_0x11c477,_0x2266b4){_0x11c477=_0x11c477-0x1aa;const _0x232a38=_0x232a();let _0x115b36=_0x232a38[_0x11c477];return _0x115b36;}import _0x41b321 from'@toolkit/core/ok-overlay.ok.js';import _0x574c9c from'../../../components/ok-cron-input.ok.js';import _0x19c597 from'../../../components/ok-json-input.ok.js';import _0x90bb3 from'../../../components/field-path-input.ok.js';function _0x232a(){const _0x5224bd=['pattern','apiBase','\x0a<div\x20style=\x22position:relative;\x20min-width:720px;\x20max-width:calc(100vw\x20-\x2080px);\x20display:flex;\x20flex-direction:column;\x20gap:12px;\x22>\x0a\x0a\x20\x20<if\x20:=\x22busy\x22>\x0a\x20\x20\x20\x20<ok-overlay>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22loader-center\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22loader\x22\x20class=\x22spin\x22\x20style=\x22width:32px;height:32px;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</ok-overlay>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Row\x201:\x20type\x20+\x20priority\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label\x20style=\x22display:flex;\x20align-items:center;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Type\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22typeIsRegistered\x20&&\x20typeStatus\x20===\x20\x27active\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22type-pill\x20type-pill--ok\x22>registered</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22typeStatus\x20===\x20\x27paused\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22type-pill\x20type-pill--warn\x22>paused</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22typeStatus\x20===\x20\x27draining\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22type-pill\x20type-pill--info\x22>draining</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20<field-path-input\x0a\x20\x20\x20\x20\x20\x20\x20\x20:allow-custom=\x22true\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22type\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20:items=\x22typeItems\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22e.g.\x20email.send\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20@change=\x22onTypeSelected($event.detail)\x22\x0a\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22width:120px;\x22>\x0a\x20\x20\x20\x20\x20\x20<label\x20style=\x22display:flex;\x20align-items:center;\x20gap:5px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Priority\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22_fromType.priority\x22><span\x20class=\x22auto-badge\x22>auto</span></if>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20placeholder=\x220\x22\x20:value=\x22priority\x22\x20@input=\x22_set(\x27priority\x27,\x20Number($el.value))\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Row\x202:\x20tags\x20+\x20idempotency\x20key\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:10px;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Tags</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20placeholder=\x22comma\x20separated\x22\x20:value=\x22tags\x22\x20@input=\x22tags\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Idempotency\x20Key</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20placeholder=\x22optional\x20—\x20prevents\x20duplicate\x20jobs\x22\x20:value=\x22idempotencyKey\x22\x20@input=\x22idempotencyKey\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Buckets\x20-->\x0a\x20\x20<div\x20class=\x22field\x22>\x0a\x20\x20\x20\x20<label\x20style=\x22display:flex;\x20align-items:center;\x20gap:5px;\x22>\x0a\x20\x20\x20\x20\x20\x20Buckets\x20<span\x20style=\x22opacity:.4;\x20font-weight:400;\x20font-size:11px;\x22>(rate\x20limiting)</span>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22_fromType.buckets\x22><span\x20class=\x22auto-badge\x22>auto</span></if>\x0a\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20<each\x20:of=\x22buckets\x22\x20let:item=\x22b\x22\x20let:index=\x22i\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:6px;\x20align-items:center;\x20margin-bottom:4px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<select\x20style=\x22flex:1;\x22\x20@change=\x22onBucketSelect(i,\x20$el.value)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>—\x20none\x20—</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20as=\x22repeat\x22\x20:of=\x22bucketOptions\x22\x20let:item=\x22opt\x22\x20:value=\x22opt.id\x22\x20:selected=\x22opt.id\x20===\x20b.id\x22>{{\x20opt.id\x20}}</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22__create__\x22>+\x20Create\x20bucket…</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20style=\x22width:72px;\x22\x20type=\x22number\x22\x20min=\x221\x22\x20placeholder=\x22tokens\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22b.tokens\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22setBucketTokens(i,\x20$el.value)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x22\x20@click=\x22removeBucket(i)\x22\x20title=\x22Remove\x22>✕</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-ghost--sm\x22\x20@click=\x22addBucket()\x22\x20style=\x22margin-top:2px;\x22>+\x20Add\x20bucket</button>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Row\x203:\x20when\x20+\x20max\x20tries\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>When</label>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:4px;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22whenMode===\x27asap\x27\x20?\x20\x27mode-btn\x20mode-btn--on\x27\x20:\x20\x27mode-btn\x27\x22\x20@click=\x22whenMode=\x27asap\x27\x22>ASAP</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22whenMode===\x27datetime\x27\x20?\x20\x27mode-btn\x20mode-btn--on\x27\x20:\x20\x27mode-btn\x27\x22\x20@click=\x22whenMode=\x27datetime\x27\x22>Date</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22whenMode===\x27timestamp\x27\x20?\x20\x27mode-btn\x20mode-btn--on\x27\x20:\x20\x27mode-btn\x27\x22\x20@click=\x22whenMode=\x27timestamp\x27\x22>TS</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22whenMode\x20===\x20\x27datetime\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22datetime-local\x22\x20style=\x22flex:1;\x22\x20:value=\x22whenDatetime\x22\x20@input=\x22whenDatetime\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22whenMode\x20===\x20\x27timestamp\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20style=\x22flex:1;\x22\x20placeholder=\x22ms\x20timestamp\x22\x20:value=\x22whenTs\x22\x20@input=\x22whenTs\x20=\x20$el.value\x20===\x20\x27\x27\x20?\x20null\x20:\x20Number($el.value)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22whenMode\x20===\x20\x27asap\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.5;\x20font-size:12px;\x20padding:0\x208px;\x22>Run\x20immediately</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22width:120px;\x22>\x0a\x20\x20\x20\x20\x20\x20<label\x20style=\x22display:flex;\x20align-items:center;\x20gap:5px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Max\x20tries\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22_fromType.maxTries\x22><span\x20class=\x22auto-badge\x22>auto</span></if>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20placeholder=\x22unlimited\x22\x20:value=\x22maxTries\x22\x20@input=\x22_set(\x27maxTries\x27,\x20$el.value\x20===\x20\x27\x27\x20?\x20null\x20:\x20Number($el.value))\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Row\x204:\x20retry\x20delay\x20+\x20backoff\x20+\x20cron\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label\x20style=\x22display:flex;\x20align-items:center;\x20gap:5px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Retry\x20delay\x20(ms)\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22_fromType.retryDelay\x22><span\x20class=\x22auto-badge\x22>auto</span></if>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20placeholder=\x220\x22\x20:value=\x22retryDelay\x22\x20@input=\x22_set(\x27retryDelay\x27,\x20Number($el.value))\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22width:120px;\x22>\x0a\x20\x20\x20\x20\x20\x20<label\x20style=\x22display:flex;\x20align-items:center;\x20gap:5px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Backoff\x20multiplier\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22_fromType.backoff\x22><span\x20class=\x22auto-badge\x22>auto</span></if>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20step=\x220.1\x22\x20placeholder=\x221\x22\x20:value=\x22backoff\x22\x20@input=\x22_set(\x27backoff\x27,\x20Number($el.value))\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Cron</label>\x0a\x20\x20\x20\x20\x20\x20<ok-cron-input\x20:value=\x22cron\x22\x20placeholder=\x22optional\x22\x20@change=\x22cron\x20=\x20$event.detail\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Row\x205:\x20retention\x20TTLs\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label\x20style=\x22display:flex;\x20align-items:center;\x20gap:5px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Done\x20TTL\x20(ms)\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22_fromType.doneTtl\x22><span\x20class=\x22auto-badge\x22>auto</span></if>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20min=\x220\x22\x20placeholder=\x220\x20=\x20delete\x20immediately,\x20blank\x20=\x20keep\x20forever\x22\x20:value=\x22doneTtl\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22_set(\x27doneTtl\x27,\x20$el.value\x20===\x20\x27\x27\x20?\x20null\x20:\x20Number($el.value))\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label\x20style=\x22display:flex;\x20align-items:center;\x20gap:5px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Failed\x20TTL\x20(ms)\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22_fromType.failedTtl\x22><span\x20class=\x22auto-badge\x22>auto</span></if>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20min=\x220\x22\x20placeholder=\x22blank\x20=\x20keep\x20forever\x22\x20:value=\x22failedTtl\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22_set(\x27failedTtl\x27,\x20$el.value\x20===\x20\x27\x27\x20?\x20null\x20:\x20Number($el.value))\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Payload\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.7;\x20font-size:12px;\x22>Payload</span>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22typeSchema\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22type-pill\x20type-pill--schema\x22>schema</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22payloadErrors.length\x20===\x200\x20&&\x20_payloadTouched\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22type-pill\x20type-pill--ok\x22\x20style=\x22font-size:10px;\x22>valid</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<ok-json-input\x0a\x20\x20\x20\x20\x20\x20mode=\x22textarea\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22height:220px;\x22\x0a\x20\x20\x20\x20\x20\x20:value=\x22payloadInit\x22\x0a\x20\x20\x20\x20\x20\x20@edit=\x22onPayloadChange($event.detail)\x22\x0a\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20<if\x20:=\x22_payloadTouched\x20&&\x20payloadErrors.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22schema-errors\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22payloadErrors\x22\x20let:item=\x22err\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22schema-error-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22schema-error-path\x22>{{\x20err.path\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22schema-error-msg\x22>{{\x20err.msg\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Footer\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:10px;\x20justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20<button\x20@click=\x22cancel()\x22>Cancel</button>\x0a\x20\x20\x20\x20<button\x20@click=\x22submit()\x22\x20:disabled=\x22!type\x20||\x20busy\x22>Enqueue</button>\x0a\x20\x20</div>\x0a\x0a</div>\x0a','find','allOf','failed_ttl','data','70754xXtVCG','error','typeStatus','pattern\x20mismatch','_validatePayload','/queue/job-types','maxLength:\x20','/queue/enqueue/','type','split','minLength:\x20','open','idempotency_key','datetime','21kiwDFm','asap','trim','string','buckets','shared','entries','backoff_multiplier','132tIbxPb','enqueue\x20failed','priority','max_tries','json','_fromType','tokens','$ref','applyTypeDefaults','must\x20be\x20one\x20of\x20[','payload_schema','__create__','items','4502832snzwrE','Add\x20Token\x20Bucket','4rlUqvF','null','\x20|\x20','Failed\x20to\x20enqueue\x20job','maxTries','9pPftfF','retryDelay','.mode-btn{font-size:11px;padding:2px\x208px;opacity:.6;border-radius:4px}.mode-btn--on{opacity:1;background:color-mix(in\x20srgb,var(--okdb-accent)\x2013%,transparent);border-color:color-mix(in\x20srgb,var(--okdb-accent)\x2033%,transparent);color:var(--okdb-accent)}.btn-ghost{background:0\x200;border:1px\x20solid\x20var(--okdb-app-border);border-radius:5px;color:inherit;cursor:pointer;opacity:.6;padding:2px\x208px;font-size:12px}.btn-ghost:hover{opacity:1;border-color:color-mix(in\x20srgb,var(--okdb-accent)\x2033%,transparent)}.btn-ghost--sm{font-size:11px;padding:1px\x207px}.type-pill{font-size:10px;padding:1px\x206px;border-radius:999px;border:1px\x20solid;font-weight:400}.type-pill--ok{border-color:color-mix(in\x20srgb,var(--okdb-accent)\x2033%,transparent);color:var(--okdb-accent)}.type-pill--warn{border-color:#f59e0b;color:#f59e0b}.type-pill--info{border-color:#3b82f6;color:#3b82f6}.type-pill--schema{border-color:color-mix(in\x20srgb,var(--okdb-accent)\x2033%,transparent);color:var(--okdb-accent)}.auto-badge{font-size:9px;padding:1px\x205px;border-radius:999px;font-weight:600;letter-spacing:.04em;background:color-mix(in\x20srgb,var(--okdb-accent)\x2012%,transparent);border:1px\x20solid\x20color-mix(in\x20srgb,var(--okdb-accent)\x2025%,transparent);color:var(--okdb-accent);text-transform:uppercase}.schema-errors{display:flex;flex-direction:column;gap:3px;padding:8px\x2010px;border-radius:6px;border:1px\x20solid\x20color-mix(in\x20srgb,#ef4444\x2040%,transparent);background:color-mix(in\x20srgb,#ef4444\x206%,transparent);font-size:11px;max-height:120px;overflow-y:auto}.schema-error-row{display:flex;gap:8px;align-items:baseline}.schema-error-path{font-family:monospace;color:#f87171;flex-shrink:0}.schema-error-msg{color:#fca5a5;opacity:.8}','_syncTypeData','close','test','isArray','push','message','catch','POST','54358WDRdra','maxLength','active','length','typeIsRegistered','$attr','cron','join','object','getTime','modal','whenTs','<=\x20','busy','isInteger','expected\x20','properties','payloadErrors','retry_delay','result','_payloadTouched','getWhen','initialType','required','idempotencyKey','definition','5654700PonQuP','enqueue-job-modal','onDone','268146HPaLxj','3653835fgRufC','loadBuckets','status','keys','payload','failedTtl','whenMode','map','some','minLength','_revalidatePayload','typeItems','done_ttl','doneTtl','>=\x20','tags','minimum','enum','registeredTypes','stringify','bucketOptions','all','max','Payload\x20does\x20not\x20match\x20the\x20job\x20type\x20schema','toast','11bltGPi','backoff','maximum','(root)','number','/queue/buckets','typeSchema','$ok','7712090uKEUQN','filter','integer'];_0x232a=function(){return _0x5224bd;};return _0x232a();}import _0x3e5a36 from'./create-bucket-modal.ok.js';import _0xc45aec from'../../../stores/okdb-store.js';export default{'tag':_0x408539(0x1f0),'dependencies':[_0x574c9c,_0x19c597,_0x90bb3,_0x3e5a36,_0x41b321,_0x12252c],'attr':{'modal':{},'initialType':{},'onDone':{}},'context':_0x19084d=>({'busy':!0x1,'type':_0x19084d['$attr'][_0x408539(0x1eb)]??'','payloadInit':{},'payload':{},'priority':0x0,'maxTries':null,'retryDelay':0x0,'backoff':0x1,'tags':'','buckets':[{'id':'','tokens':0x1}],'cron':'','idempotencyKey':'','whenMode':_0x408539(0x1af),'whenDatetime':'','whenTs':null,'doneTtl':null,'failedTtl':null,'bucketOptions':[],'registeredTypes':[],'typeItems':[],'typeIsRegistered':!0x1,'typeStatus':null,'typeSchema':null,'_fromType':{},'payloadErrors':[],'_payloadTouched':!0x1,'_syncTypeData'(){const _0x4494a9=_0x408539,_0x4e0c9b=this[_0x4494a9(0x205)][_0x4494a9(0x21a)](_0x466310=>_0x466310['id']===this['type'])??null;this[_0x4494a9(0x1d9)]=!!_0x4e0c9b,this[_0x4494a9(0x220)]=_0x4e0c9b?.[_0x4494a9(0x1f5)]??null,this[_0x4494a9(0x212)]=_0x4e0c9b?.[_0x4494a9(0x1c0)]??null,this[_0x4494a9(0x1fe)]=this['registeredTypes'][_0x4494a9(0x1fa)](_0x464f9b=>({'path':_0x464f9b['id'],'types':_0x464f9b[_0x4494a9(0x1f5)]&&_0x4494a9(0x1d7)!==_0x464f9b['status']?[_0x464f9b[_0x4494a9(0x1f5)]]:[],'hint':null}));},'_set'(_0x453926,_0x2a03ac){const _0x483dd1=_0x408539;if(this[_0x453926]=_0x2a03ac,this['_fromType'][_0x453926]){const _0xf64684={...this[_0x483dd1(0x1bb)]};delete _0xf64684[_0x453926],this['_fromType']=_0xf64684;}},async 'loadBuckets'(){const _0x40611b=_0x408539,[_0x91f236,_0x69ac0]=await Promise[_0x40611b(0x208)]([fetch(_0xc45aec['apiBase']+_0x40611b(0x211))[_0x40611b(0x1d3)](()=>null),fetch(_0xc45aec[_0x40611b(0x218)]+_0x40611b(0x223))[_0x40611b(0x1d3)](()=>null)]);if(_0x91f236?.['ok']){const _0x4cbe23=await _0x91f236[_0x40611b(0x1ba)]()['catch'](()=>({}));this[_0x40611b(0x207)]=_0x4cbe23?.[_0x40611b(0x1e8)]??_0x4cbe23?.['data']??[];}if(_0x69ac0?.['ok']){const _0x4393df=await _0x69ac0['json']()['catch'](()=>({}));this['registeredTypes']=_0x4393df?.[_0x40611b(0x1e8)]??_0x4393df?.[_0x40611b(0x21d)]??[];}this[_0x40611b(0x1cd)]();},'applyTypeDefaults'(_0xe499a2){const _0x153b64=_0x408539,_0x44dac9=this['registeredTypes'][_0x153b64(0x21a)](_0x182683=>_0x182683['id']===_0xe499a2);if(!_0x44dac9)return!0x1;const _0x20f82e=_0x44dac9['defaults']??{},_0x2f2a75={};return null!=_0x20f82e[_0x153b64(0x1b9)]&&(this[_0x153b64(0x1c9)]=_0x20f82e['max_tries'],_0x2f2a75[_0x153b64(0x1c9)]=!0x0),null!=_0x20f82e[_0x153b64(0x1e7)]&&(this['retryDelay']=_0x20f82e[_0x153b64(0x1e7)],_0x2f2a75[_0x153b64(0x1cb)]=!0x0),null!=_0x20f82e[_0x153b64(0x1b5)]&&(this[_0x153b64(0x20d)]=_0x20f82e['backoff_multiplier'],_0x2f2a75[_0x153b64(0x20d)]=!0x0),null!=_0x20f82e[_0x153b64(0x1b8)]&&(this[_0x153b64(0x1b8)]=_0x20f82e['priority'],_0x2f2a75[_0x153b64(0x1b8)]=!0x0),null!=_0x20f82e[_0x153b64(0x1ff)]&&(this['doneTtl']=_0x20f82e[_0x153b64(0x1ff)],_0x2f2a75[_0x153b64(0x200)]=!0x0),null!=_0x20f82e[_0x153b64(0x21c)]&&(this[_0x153b64(0x1f8)]=_0x20f82e['failed_ttl'],_0x2f2a75['failedTtl']=!0x0),Array['isArray'](_0x20f82e[_0x153b64(0x1b2)])&&_0x20f82e[_0x153b64(0x1b2)][_0x153b64(0x1d8)]&&(this['buckets']=_0x20f82e[_0x153b64(0x1b2)][_0x153b64(0x1fa)](_0x1d5862=>({'id':_0x1d5862['id'],'tokens':_0x1d5862[_0x153b64(0x1bc)]??0x1})),_0x2f2a75[_0x153b64(0x1b2)]=!0x0),this[_0x153b64(0x1bb)]=_0x2f2a75,!0x0;},'onTypeSelected'(_0x5f536a){const _0x501593=_0x408539;null!=_0x5f536a&&(this[_0x501593(0x226)]=_0x5f536a,this[_0x501593(0x1cd)](),this[_0x501593(0x1be)](_0x5f536a)||_0x5f536a||(this[_0x501593(0x1bb)]={}),this[_0x501593(0x1fd)]());},async 'onBucketSelect'(_0x30f5e5,_0x1c2c44){const _0x123d26=_0x408539;if(this[_0x123d26(0x1bb)][_0x123d26(0x1b2)]&&(this[_0x123d26(0x1bb)]={...this[_0x123d26(0x1bb)],'buckets':!0x1}),_0x123d26(0x1c1)===_0x1c2c44){const _0x40cc4f=this;await _0x19084d[_0x123d26(0x213)][_0x123d26(0x1b3)][_0x123d26(0x1df)][_0x123d26(0x1ab)]({'owner':_0x19084d,'title':_0x123d26(0x1c4),'content':'<create-bucket-modal\x20:modal=\x22modal\x22\x20:on-done=\x22onDone\x22\x20/>','context':_0x365e91=>({'modal':_0x365e91,'onDone':async _0x17d92c=>{const _0x4715ff=_0x123d26;await _0x40cc4f[_0x4715ff(0x1f4)](),_0x40cc4f[_0x4715ff(0x1b2)]=_0x40cc4f[_0x4715ff(0x1b2)][_0x4715ff(0x1fa)]((_0x34b07c,_0x46cae9)=>_0x46cae9===_0x30f5e5?{..._0x34b07c,'id':_0x17d92c}:_0x34b07c);}})});}else this[_0x123d26(0x1b2)]=this[_0x123d26(0x1b2)][_0x123d26(0x1fa)]((_0x4b0668,_0xe04980)=>_0xe04980===_0x30f5e5?{..._0x4b0668,'id':_0x1c2c44}:_0x4b0668);},'setBucketTokens'(_0x155451,_0x2a4765){const _0x129b40=_0x408539;this[_0x129b40(0x1bb)][_0x129b40(0x1b2)]&&(this['_fromType']={...this[_0x129b40(0x1bb)],'buckets':!0x1});const _0x49a41e=''===_0x2a4765?0x1:Math[_0x129b40(0x209)](0x1,parseInt(_0x2a4765)||0x1);this[_0x129b40(0x1b2)]=this[_0x129b40(0x1b2)][_0x129b40(0x1fa)]((_0x3bd06b,_0x14ea06)=>_0x14ea06===_0x155451?{..._0x3bd06b,'tokens':_0x49a41e}:_0x3bd06b);},'addBucket'(){const _0x4e2424=_0x408539;this['_fromType'][_0x4e2424(0x1b2)]&&(this['_fromType']={...this[_0x4e2424(0x1bb)],'buckets':!0x1}),this[_0x4e2424(0x1b2)]=[...this[_0x4e2424(0x1b2)],{'id':'','tokens':0x1}];},'removeBucket'(_0x5ddfcb){const _0x5e0e95=_0x408539;this[_0x5e0e95(0x1bb)][_0x5e0e95(0x1b2)]&&(this[_0x5e0e95(0x1bb)]={...this[_0x5e0e95(0x1bb)],'buckets':!0x1}),this[_0x5e0e95(0x1b2)]=this[_0x5e0e95(0x1b2)]['filter']((_0x36bf2c,_0x1d23da)=>_0x1d23da!==_0x5ddfcb);},'onPayloadChange'(_0x59d0e8){const _0x52c0bb=_0x408539;this['payload']=_0x59d0e8,this[_0x52c0bb(0x1e9)]=!0x0,this['_revalidatePayload']();},'_revalidatePayload'(){const _0x121c9d=_0x408539,_0x4a5bf1=this[_0x121c9d(0x212)];this['payloadErrors']=_0x4a5bf1?.[_0x121c9d(0x1ee)]?this[_0x121c9d(0x222)](this[_0x121c9d(0x1f7)],_0x4a5bf1[_0x121c9d(0x1ee)]):[];},'_validatePayload'(_0x457966,_0x5b5593){const _0x55fdac=[],_0x32b2fd=(_0x5359aa,_0x5eec9f,_0x296cd1)=>{const _0x5d5bbe=_0x115b;if(_0x5eec9f&&'object'==typeof _0x5eec9f&&!_0x5eec9f[_0x5d5bbe(0x1bd)]){if(_0x5eec9f[_0x5d5bbe(0x226)]){const _0x49244d=Array[_0x5d5bbe(0x1d0)](_0x5eec9f[_0x5d5bbe(0x226)])?_0x5eec9f['type']:[_0x5eec9f[_0x5d5bbe(0x226)]],_0x6c4b79=null===_0x5359aa?_0x5d5bbe(0x1c6):Array[_0x5d5bbe(0x1d0)](_0x5359aa)?'array':typeof _0x5359aa;if(!_0x49244d[_0x5d5bbe(0x1fb)](_0x48b98a=>_0x48b98a===_0x6c4b79||_0x5d5bbe(0x216)===_0x48b98a&&'number'===_0x6c4b79&&Number[_0x5d5bbe(0x1e3)](_0x5359aa)))return void _0x55fdac[_0x5d5bbe(0x1d1)]({'path':_0x296cd1||_0x5d5bbe(0x20f),'msg':_0x5d5bbe(0x1e4)+_0x49244d[_0x5d5bbe(0x1dc)](_0x5d5bbe(0x1c7))+',\x20got\x20'+_0x6c4b79});}if(_0x5eec9f[_0x5d5bbe(0x204)]&&!_0x5eec9f[_0x5d5bbe(0x204)][_0x5d5bbe(0x1fb)](_0x36763c=>JSON[_0x5d5bbe(0x206)](_0x36763c)===JSON[_0x5d5bbe(0x206)](_0x5359aa))&&_0x55fdac[_0x5d5bbe(0x1d1)]({'path':_0x296cd1||_0x5d5bbe(0x20f),'msg':_0x5d5bbe(0x1bf)+_0x5eec9f[_0x5d5bbe(0x204)][_0x5d5bbe(0x1fa)](_0xda9e8b=>JSON['stringify'](_0xda9e8b))['join'](',\x20')+']'}),_0x5d5bbe(0x1b1)==typeof _0x5359aa&&(null!=_0x5eec9f[_0x5d5bbe(0x1fc)]&&_0x5359aa[_0x5d5bbe(0x1d8)]<_0x5eec9f[_0x5d5bbe(0x1fc)]&&_0x55fdac[_0x5d5bbe(0x1d1)]({'path':_0x296cd1||_0x5d5bbe(0x20f),'msg':_0x5d5bbe(0x1aa)+_0x5eec9f[_0x5d5bbe(0x1fc)]}),null!=_0x5eec9f[_0x5d5bbe(0x1d6)]&&_0x5359aa[_0x5d5bbe(0x1d8)]>_0x5eec9f['maxLength']&&_0x55fdac[_0x5d5bbe(0x1d1)]({'path':_0x296cd1||_0x5d5bbe(0x20f),'msg':_0x5d5bbe(0x224)+_0x5eec9f[_0x5d5bbe(0x1d6)]}),_0x5eec9f['pattern']))try{new RegExp(_0x5eec9f[_0x5d5bbe(0x217)])[_0x5d5bbe(0x1cf)](_0x5359aa)||_0x55fdac[_0x5d5bbe(0x1d1)]({'path':_0x296cd1||'(root)','msg':_0x5d5bbe(0x221)});}catch{}if(_0x5d5bbe(0x210)==typeof _0x5359aa&&(null!=_0x5eec9f[_0x5d5bbe(0x203)]&&_0x5359aa<_0x5eec9f['minimum']&&_0x55fdac[_0x5d5bbe(0x1d1)]({'path':_0x296cd1||'(root)','msg':_0x5d5bbe(0x201)+_0x5eec9f[_0x5d5bbe(0x203)]}),null!=_0x5eec9f[_0x5d5bbe(0x20e)]&&_0x5359aa>_0x5eec9f[_0x5d5bbe(0x20e)]&&_0x55fdac[_0x5d5bbe(0x1d1)]({'path':_0x296cd1||_0x5d5bbe(0x20f),'msg':_0x5d5bbe(0x1e1)+_0x5eec9f[_0x5d5bbe(0x20e)]})),_0x5d5bbe(0x1dd)==typeof _0x5359aa&&null!==_0x5359aa&&!Array['isArray'](_0x5359aa)){for(const _0x1da1c5 of _0x5eec9f[_0x5d5bbe(0x1ec)]??[])_0x1da1c5 in _0x5359aa||_0x55fdac[_0x5d5bbe(0x1d1)]({'path':_0x296cd1?_0x296cd1+'.'+_0x1da1c5:_0x1da1c5,'msg':_0x5d5bbe(0x1ec)});if(_0x5eec9f[_0x5d5bbe(0x1e5)]){for(const [_0x4c3f03,_0x277c9d]of Object[_0x5d5bbe(0x1b4)](_0x5eec9f[_0x5d5bbe(0x1e5)]))_0x4c3f03 in _0x5359aa&&_0x32b2fd(_0x5359aa[_0x4c3f03],_0x277c9d,_0x296cd1?_0x296cd1+'.'+_0x4c3f03:_0x4c3f03);if(!0x1===_0x5eec9f['additionalProperties']){for(const _0x5c0c1d of Object[_0x5d5bbe(0x1f6)](_0x5359aa))_0x5c0c1d in _0x5eec9f[_0x5d5bbe(0x1e5)]||_0x55fdac[_0x5d5bbe(0x1d1)]({'path':_0x296cd1?_0x296cd1+'.'+_0x5c0c1d:_0x5c0c1d,'msg':'additional\x20property\x20not\x20allowed'});}}}if(Array['isArray'](_0x5359aa)&&_0x5eec9f[_0x5d5bbe(0x1c2)]&&_0x5359aa['forEach']((_0x518ecf,_0x18ed26)=>_0x32b2fd(_0x518ecf,_0x5eec9f[_0x5d5bbe(0x1c2)],(_0x296cd1||'')+'['+_0x18ed26+']')),_0x5eec9f[_0x5d5bbe(0x21b)]){for(const _0x23fcff of _0x5eec9f[_0x5d5bbe(0x21b)])_0x32b2fd(_0x5359aa,_0x23fcff,_0x296cd1);}}};return _0x32b2fd(_0x457966,_0x5b5593,''),_0x55fdac;},'getWhen'(){const _0x45f271=_0x408539;if('asap'===this[_0x45f271(0x1f9)])return null;if(_0x45f271(0x1ad)===this[_0x45f271(0x1f9)]){const _0x49ccfc=new Date(this['whenDatetime']);return isNaN(_0x49ccfc['getTime']())?null:_0x49ccfc[_0x45f271(0x1de)]();}return this[_0x45f271(0x1e0)];},'_parseTags'(_0x4ca4a1){const _0x404fa4=_0x408539;if(!_0x4ca4a1)return;const _0x3b2083=String(_0x4ca4a1)[_0x404fa4(0x227)](',')[_0x404fa4(0x1fa)](_0x55f665=>_0x55f665[_0x404fa4(0x1b0)]())[_0x404fa4(0x215)](Boolean);return _0x3b2083[_0x404fa4(0x1d8)]?_0x3b2083:void 0x0;},async 'submit'(){const _0x4ac7c5=_0x408539;if(!this[_0x4ac7c5(0x226)])return void _0x19084d[_0x4ac7c5(0x213)][_0x4ac7c5(0x1b3)]?.[_0x4ac7c5(0x20b)]?.[_0x4ac7c5(0x21f)]?.('Please\x20enter\x20a\x20job\x20type');if(this['typeSchema']?.[_0x4ac7c5(0x1ee)]){const _0x2b6a63=this[_0x4ac7c5(0x222)](this['payload'],this['typeSchema'][_0x4ac7c5(0x1ee)]);if(_0x2b6a63[_0x4ac7c5(0x1d8)])return this[_0x4ac7c5(0x1e9)]=!0x0,this[_0x4ac7c5(0x1e6)]=_0x2b6a63,void _0x19084d[_0x4ac7c5(0x213)][_0x4ac7c5(0x1b3)]?.[_0x4ac7c5(0x20b)]?.[_0x4ac7c5(0x21f)]?.(_0x4ac7c5(0x20a));}const _0x16d66d=this[_0x4ac7c5(0x1ea)](),_0x242165=String(this['cron']||'')[_0x4ac7c5(0x1b0)]()||null,_0x1ac272=this['buckets'][_0x4ac7c5(0x215)](_0x46dd19=>_0x46dd19['id'])[_0x4ac7c5(0x1fa)](_0x46b008=>({'id':_0x46b008['id'],'tokens':_0x46b008[_0x4ac7c5(0x1bc)]||0x1})),_0x2c2509=this['_parseTags'](this[_0x4ac7c5(0x202)]),_0x29b2d1={};null!=_0x16d66d&&(_0x29b2d1['when']=_0x16d66d),this[_0x4ac7c5(0x1b8)]&&(_0x29b2d1[_0x4ac7c5(0x1b8)]=Number(this[_0x4ac7c5(0x1b8)])),null!==this[_0x4ac7c5(0x1c9)]&&''!==this['maxTries']&&(_0x29b2d1['max_tries']=Number(this[_0x4ac7c5(0x1c9)])),this[_0x4ac7c5(0x1cb)]&&(_0x29b2d1[_0x4ac7c5(0x1e7)]=Number(this[_0x4ac7c5(0x1cb)])),0x1!==this[_0x4ac7c5(0x20d)]&&(_0x29b2d1[_0x4ac7c5(0x1b5)]=Number(this[_0x4ac7c5(0x20d)])),_0x2c2509&&(_0x29b2d1[_0x4ac7c5(0x202)]=_0x2c2509),_0x1ac272[_0x4ac7c5(0x1d8)]&&(_0x29b2d1[_0x4ac7c5(0x1b2)]=_0x1ac272),_0x242165&&(_0x29b2d1[_0x4ac7c5(0x1db)]=_0x242165),this[_0x4ac7c5(0x1ed)]['trim']()&&(_0x29b2d1[_0x4ac7c5(0x1ac)]=this[_0x4ac7c5(0x1ed)][_0x4ac7c5(0x1b0)]()),null!==this[_0x4ac7c5(0x200)]&&''!==this['doneTtl']&&(_0x29b2d1[_0x4ac7c5(0x1ff)]=Number(this[_0x4ac7c5(0x200)])),null!==this[_0x4ac7c5(0x1f8)]&&''!==this[_0x4ac7c5(0x1f8)]&&(_0x29b2d1['failed_ttl']=Number(this[_0x4ac7c5(0x1f8)])),this['busy']=!0x0;try{const _0x74037f=await fetch(_0xc45aec[_0x4ac7c5(0x218)]+_0x4ac7c5(0x225)+encodeURIComponent(this[_0x4ac7c5(0x226)]),{'method':_0x4ac7c5(0x1d4),'headers':{'Content-Type':'application/json'},'body':JSON[_0x4ac7c5(0x206)]({'payload':this[_0x4ac7c5(0x1f7)],'options':_0x29b2d1})});if(!_0x74037f['ok']){const _0x630da=await _0x74037f[_0x4ac7c5(0x1ba)]()[_0x4ac7c5(0x1d3)](()=>({}));throw new Error(_0x630da?.[_0x4ac7c5(0x21f)]?.[_0x4ac7c5(0x1d2)]||_0x630da?.[_0x4ac7c5(0x1d2)]||_0x4ac7c5(0x1b7));}await _0x19084d[_0x4ac7c5(0x1da)][_0x4ac7c5(0x1df)]['close'](),await _0x19084d['$attr'][_0x4ac7c5(0x1f1)]?.();}catch(_0x5a33b0){_0x19084d[_0x4ac7c5(0x213)][_0x4ac7c5(0x1b3)]?.['toast']?.[_0x4ac7c5(0x21f)]?.(_0x5a33b0[_0x4ac7c5(0x1d2)]||_0x4ac7c5(0x1c8));}finally{this[_0x4ac7c5(0x1e2)]=!0x1;}},'cancel'(){const _0x3808ee=_0x408539;_0x19084d[_0x3808ee(0x1da)][_0x3808ee(0x1df)][_0x3808ee(0x1ce)]();}}),async 'mount'(_0x2273ae){const _0x3fcaa1=_0x408539;await this[_0x3fcaa1(0x1f4)](),this['type']&&this[_0x3fcaa1(0x1be)](this[_0x3fcaa1(0x226)]);},'template':_0x408539(0x219),'style':_0x408539(0x1cc)};
|
|
1
|
+
function _0x3761(){const _0x21d60f=['_syncTypeData','failed_ttl','3QCRGDv','$ref','datetime','pattern','filter','typeItems','enqueue\x20failed','buckets','\x20|\x20','868220JtWHMR','number','typeIsRegistered','backoff','apiBase','maxLength:\x20','properties','json','_fromType','<=\x20','retryDelay','isInteger','<create-bucket-modal\x20:modal=\x22modal\x22\x20:on-done=\x22onDone\x22\x20/>','$ok','definition',',\x20got\x20','9Dtwsle','onDone','Add\x20Token\x20Bucket','max','payload_schema','active','done_ttl','open','split','128471wscQlL','_validatePayload','busy','map','cron','test','1688164wfTqSy','when','array','tokens','doneTtl','pattern\x20mismatch','allOf','shared','all','98264hQONIS','modal','failedTtl','minLength','__create__','required','getWhen','asap','some','398662egxIFI','expected\x20','isArray','maxTries','payloadErrors','idempotency_key','find','result','stringify','bucketOptions','_revalidatePayload','data','typeStatus','getTime','initialType','null','message','Please\x20enter\x20a\x20job\x20type','_payloadTouched','enum','toast','8523280niLdQO','idempotencyKey','integer','close','/queue/job-types','\x0a<div\x20style=\x22position:relative;\x20min-width:720px;\x20max-width:calc(100vw\x20-\x2080px);\x20display:flex;\x20flex-direction:column;\x20gap:12px;\x22>\x0a\x0a\x20\x20<if\x20:=\x22busy\x22>\x0a\x20\x20\x20\x20<ok-overlay>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22loader-center\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22loader\x22\x20class=\x22spin\x22\x20style=\x22width:32px;height:32px;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</ok-overlay>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Row\x201:\x20type\x20+\x20priority\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label\x20style=\x22display:flex;\x20align-items:center;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Type\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22typeIsRegistered\x20&&\x20typeStatus\x20===\x20\x27active\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22type-pill\x20type-pill--ok\x22>registered</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22typeStatus\x20===\x20\x27paused\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22type-pill\x20type-pill--warn\x22>paused</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22typeStatus\x20===\x20\x27draining\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22type-pill\x20type-pill--info\x22>draining</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20<field-path-input\x0a\x20\x20\x20\x20\x20\x20\x20\x20:allow-custom=\x22true\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22type\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20:items=\x22typeItems\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22e.g.\x20email.send\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20@change=\x22onTypeSelected($event.detail)\x22\x0a\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22width:120px;\x22>\x0a\x20\x20\x20\x20\x20\x20<label\x20style=\x22display:flex;\x20align-items:center;\x20gap:5px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Priority\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22_fromType.priority\x22><span\x20class=\x22auto-badge\x22>auto</span></if>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20placeholder=\x220\x22\x20:value=\x22priority\x22\x20@input=\x22_set(\x27priority\x27,\x20Number($el.value))\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Row\x202:\x20tags\x20+\x20idempotency\x20key\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:10px;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Tags</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20placeholder=\x22comma\x20separated\x22\x20:value=\x22tags\x22\x20@input=\x22tags\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Idempotency\x20Key</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20placeholder=\x22optional\x20—\x20prevents\x20duplicate\x20jobs\x22\x20:value=\x22idempotencyKey\x22\x20@input=\x22idempotencyKey\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Buckets\x20-->\x0a\x20\x20<div\x20class=\x22field\x22>\x0a\x20\x20\x20\x20<label\x20style=\x22display:flex;\x20align-items:center;\x20gap:5px;\x22>\x0a\x20\x20\x20\x20\x20\x20Buckets\x20<span\x20style=\x22opacity:.4;\x20font-weight:400;\x20font-size:11px;\x22>(rate\x20limiting)</span>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22_fromType.buckets\x22><span\x20class=\x22auto-badge\x22>auto</span></if>\x0a\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20<each\x20:of=\x22buckets\x22\x20let:item=\x22b\x22\x20let:index=\x22i\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:6px;\x20align-items:center;\x20margin-bottom:4px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<select\x20style=\x22flex:1;\x22\x20@change=\x22onBucketSelect(i,\x20$el.value)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>—\x20none\x20—</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20as=\x22repeat\x22\x20:of=\x22bucketOptions\x22\x20let:item=\x22opt\x22\x20:value=\x22opt.id\x22\x20:selected=\x22opt.id\x20===\x20b.id\x22>{{\x20opt.id\x20}}</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22__create__\x22>+\x20Create\x20bucket…</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20style=\x22width:72px;\x22\x20type=\x22number\x22\x20min=\x221\x22\x20placeholder=\x22tokens\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22b.tokens\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22setBucketTokens(i,\x20$el.value)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x22\x20@click=\x22removeBucket(i)\x22\x20title=\x22Remove\x22>✕</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-ghost--sm\x22\x20@click=\x22addBucket()\x22\x20style=\x22margin-top:2px;\x22>+\x20Add\x20bucket</button>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Row\x203:\x20when\x20+\x20max\x20tries\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>When</label>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:4px;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22whenMode===\x27asap\x27\x20?\x20\x27mode-btn\x20mode-btn--on\x27\x20:\x20\x27mode-btn\x27\x22\x20@click=\x22whenMode=\x27asap\x27\x22>ASAP</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22whenMode===\x27datetime\x27\x20?\x20\x27mode-btn\x20mode-btn--on\x27\x20:\x20\x27mode-btn\x27\x22\x20@click=\x22whenMode=\x27datetime\x27\x22>Date</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22whenMode===\x27timestamp\x27\x20?\x20\x27mode-btn\x20mode-btn--on\x27\x20:\x20\x27mode-btn\x27\x22\x20@click=\x22whenMode=\x27timestamp\x27\x22>TS</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22whenMode\x20===\x20\x27datetime\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22datetime-local\x22\x20style=\x22flex:1;\x22\x20:value=\x22whenDatetime\x22\x20@input=\x22whenDatetime\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22whenMode\x20===\x20\x27timestamp\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20style=\x22flex:1;\x22\x20placeholder=\x22ms\x20timestamp\x22\x20:value=\x22whenTs\x22\x20@input=\x22whenTs\x20=\x20$el.value\x20===\x20\x27\x27\x20?\x20null\x20:\x20Number($el.value)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22whenMode\x20===\x20\x27asap\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.5;\x20font-size:12px;\x20padding:0\x208px;\x22>Run\x20immediately</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22width:120px;\x22>\x0a\x20\x20\x20\x20\x20\x20<label\x20style=\x22display:flex;\x20align-items:center;\x20gap:5px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Max\x20tries\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22_fromType.maxTries\x22><span\x20class=\x22auto-badge\x22>auto</span></if>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20placeholder=\x22unlimited\x22\x20:value=\x22maxTries\x22\x20@input=\x22_set(\x27maxTries\x27,\x20$el.value\x20===\x20\x27\x27\x20?\x20null\x20:\x20Number($el.value))\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Row\x204:\x20retry\x20delay\x20+\x20backoff\x20+\x20cron\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label\x20style=\x22display:flex;\x20align-items:center;\x20gap:5px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Retry\x20delay\x20(ms)\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22_fromType.retryDelay\x22><span\x20class=\x22auto-badge\x22>auto</span></if>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20placeholder=\x220\x22\x20:value=\x22retryDelay\x22\x20@input=\x22_set(\x27retryDelay\x27,\x20Number($el.value))\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22width:120px;\x22>\x0a\x20\x20\x20\x20\x20\x20<label\x20style=\x22display:flex;\x20align-items:center;\x20gap:5px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Backoff\x20multiplier\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22_fromType.backoff\x22><span\x20class=\x22auto-badge\x22>auto</span></if>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20step=\x220.1\x22\x20placeholder=\x221\x22\x20:value=\x22backoff\x22\x20@input=\x22_set(\x27backoff\x27,\x20Number($el.value))\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Cron</label>\x0a\x20\x20\x20\x20\x20\x20<ok-cron-input\x20:value=\x22cron\x22\x20placeholder=\x22optional\x22\x20@change=\x22cron\x20=\x20$event.detail\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Row\x205:\x20retention\x20TTLs\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label\x20style=\x22display:flex;\x20align-items:center;\x20gap:5px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Done\x20TTL\x20(ms)\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22_fromType.doneTtl\x22><span\x20class=\x22auto-badge\x22>auto</span></if>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20min=\x220\x22\x20placeholder=\x220\x20=\x20delete\x20immediately,\x20blank\x20=\x20keep\x20forever\x22\x20:value=\x22doneTtl\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22_set(\x27doneTtl\x27,\x20$el.value\x20===\x20\x27\x27\x20?\x20null\x20:\x20Number($el.value))\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label\x20style=\x22display:flex;\x20align-items:center;\x20gap:5px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Failed\x20TTL\x20(ms)\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22_fromType.failedTtl\x22><span\x20class=\x22auto-badge\x22>auto</span></if>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20min=\x220\x22\x20placeholder=\x22blank\x20=\x20keep\x20forever\x22\x20:value=\x22failedTtl\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22_set(\x27failedTtl\x27,\x20$el.value\x20===\x20\x27\x27\x20?\x20null\x20:\x20Number($el.value))\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Payload\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.7;\x20font-size:12px;\x22>Payload</span>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22typeSchema\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22type-pill\x20type-pill--schema\x22>schema</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22payloadErrors.length\x20===\x200\x20&&\x20_payloadTouched\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22type-pill\x20type-pill--ok\x22\x20style=\x22font-size:10px;\x22>valid</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<ok-json-input\x0a\x20\x20\x20\x20\x20\x20mode=\x22textarea\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22height:220px;\x22\x0a\x20\x20\x20\x20\x20\x20:value=\x22payloadInit\x22\x0a\x20\x20\x20\x20\x20\x20@edit=\x22onPayloadChange($event.detail)\x22\x0a\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20<if\x20:=\x22_payloadTouched\x20&&\x20payloadErrors.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22schema-errors\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22payloadErrors\x22\x20let:item=\x22err\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22schema-error-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22schema-error-path\x22>{{\x20err.path\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22schema-error-msg\x22>{{\x20err.msg\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Footer\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:10px;\x20justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20<button\x20@click=\x22cancel()\x22>Cancel</button>\x0a\x20\x20\x20\x20<button\x20@click=\x22submit()\x22\x20:disabled=\x22!type\x20||\x20busy\x22>Enqueue</button>\x0a\x20\x20</div>\x0a\x0a</div>\x0a','$attr','items','1164AOOLsk','maximum','push','tags','trim','retry_delay','enqueue-job-modal','/queue/buckets','whenMode','203016GBbmag','(root)','Payload\x20does\x20not\x20match\x20the\x20job\x20type\x20schema','status','140eySvNi','.mode-btn{font-size:11px;padding:2px\x208px;opacity:.6;border-radius:4px}.mode-btn--on{opacity:1;background:color-mix(in\x20srgb,var(--okdb-accent)\x2013%,transparent);border-color:color-mix(in\x20srgb,var(--okdb-accent)\x2033%,transparent);color:var(--okdb-accent)}.btn-ghost{background:0\x200;border:1px\x20solid\x20var(--okdb-app-border);border-radius:5px;color:inherit;cursor:pointer;opacity:.6;padding:2px\x208px;font-size:12px}.btn-ghost:hover{opacity:1;border-color:color-mix(in\x20srgb,var(--okdb-accent)\x2033%,transparent)}.btn-ghost--sm{font-size:11px;padding:1px\x207px}.type-pill{font-size:10px;padding:1px\x206px;border-radius:999px;border:1px\x20solid;font-weight:400}.type-pill--ok{border-color:color-mix(in\x20srgb,var(--okdb-accent)\x2033%,transparent);color:var(--okdb-accent)}.type-pill--warn{border-color:#f59e0b;color:#f59e0b}.type-pill--info{border-color:#3b82f6;color:#3b82f6}.type-pill--schema{border-color:color-mix(in\x20srgb,var(--okdb-accent)\x2033%,transparent);color:var(--okdb-accent)}.auto-badge{font-size:9px;padding:1px\x205px;border-radius:999px;font-weight:600;letter-spacing:.04em;background:color-mix(in\x20srgb,var(--okdb-accent)\x2012%,transparent);border:1px\x20solid\x20color-mix(in\x20srgb,var(--okdb-accent)\x2025%,transparent);color:var(--okdb-accent);text-transform:uppercase}.schema-errors{display:flex;flex-direction:column;gap:3px;padding:8px\x2010px;border-radius:6px;border:1px\x20solid\x20color-mix(in\x20srgb,#ef4444\x2040%,transparent);background:color-mix(in\x20srgb,#ef4444\x206%,transparent);font-size:11px;max-height:120px;overflow-y:auto}.schema-error-row{display:flex;gap:8px;align-items:baseline}.schema-error-path{font-family:monospace;color:#f87171;flex-shrink:0}.schema-error-msg{color:#fca5a5;opacity:.8}','keys','408LaHdgV','type','backoff_multiplier','max_tries','payload','maxLength','object','minLength:\x20','catch','priority','registeredTypes','string','defaults','minimum','loadBuckets','additionalProperties','length','error','join'];_0x3761=function(){return _0x21d60f;};return _0x3761();}const _0x24aa5d=_0x3e5d;(function(_0x5cd8d8,_0x4954ba){const _0x137a7e=_0x3e5d,_0x120c94=_0x5cd8d8();while(!![]){try{const _0x8c9fce=-parseInt(_0x137a7e(0x1d0))/0x1+-parseInt(_0x137a7e(0x173))/0x2*(parseInt(_0x137a7e(0x1c7))/0x3)+parseInt(_0x137a7e(0x17c))/0x4*(-parseInt(_0x137a7e(0x1af))/0x5)+parseInt(_0x137a7e(0x1b2))/0x6*(-parseInt(_0x137a7e(0x1e9))/0x7)+-parseInt(_0x137a7e(0x1ab))/0x8+-parseInt(_0x137a7e(0x1e0))/0x9*(-parseInt(_0x137a7e(0x19a))/0xa)+parseInt(_0x137a7e(0x185))/0xb*(parseInt(_0x137a7e(0x1a2))/0xc);if(_0x8c9fce===_0x4954ba)break;else _0x120c94['push'](_0x120c94['shift']());}catch(_0x228acc){_0x120c94['push'](_0x120c94['shift']());}}}(_0x3761,0xa97ff));import _0x48cc55 from'@toolkit/elements/ok-icon.ok.js';import _0x26997f from'@toolkit/core/ok-overlay.ok.js';import _0x27ed8d from'../../../components/ok-cron-input.ok.js';import _0x3666d0 from'../../../components/ok-json-input.ok.js';import _0x5b413b from'../../../components/field-path-input.ok.js';import _0x464eb0 from'./create-bucket-modal.ok.js';import _0x495f28 from'../../../stores/okdb-store.js';function _0x3e5d(_0x2a37c0,_0x42cbe6){_0x2a37c0=_0x2a37c0-0x16e;const _0x37613f=_0x3761();let _0x3e5d81=_0x37613f[_0x2a37c0];return _0x3e5d81;}export default{'tag':_0x24aa5d(0x1a8),'dependencies':[_0x27ed8d,_0x3666d0,_0x5b413b,_0x464eb0,_0x26997f,_0x48cc55],'attr':{'modal':{},'initialType':{},'onDone':{}},'context':_0x228242=>({'busy':!0x1,'type':_0x228242['$attr'][_0x24aa5d(0x193)]??'','payloadInit':{},'payload':{},'priority':0x0,'maxTries':null,'retryDelay':0x0,'backoff':0x1,'tags':'','buckets':[{'id':'','tokens':0x1}],'cron':'','idempotencyKey':'','whenMode':_0x24aa5d(0x183),'whenDatetime':'','whenTs':null,'doneTtl':null,'failedTtl':null,'bucketOptions':[],'registeredTypes':[],'typeItems':[],'typeIsRegistered':!0x1,'typeStatus':null,'typeSchema':null,'_fromType':{},'payloadErrors':[],'_payloadTouched':!0x1,'_syncTypeData'(){const _0x552a55=_0x24aa5d,_0x9b26b0=this['registeredTypes'][_0x552a55(0x18b)](_0x58de4a=>_0x58de4a['id']===this['type'])??null;this[_0x552a55(0x1d2)]=!!_0x9b26b0,this[_0x552a55(0x191)]=_0x9b26b0?.['status']??null,this['typeSchema']=_0x9b26b0?.[_0x552a55(0x1e4)]??null,this[_0x552a55(0x1cc)]=this[_0x552a55(0x1bc)][_0x552a55(0x170)](_0x214914=>({'path':_0x214914['id'],'types':_0x214914['status']&&_0x552a55(0x1e5)!==_0x214914[_0x552a55(0x1ae)]?[_0x214914['status']]:[],'hint':null}));},'_set'(_0x5603af,_0x5b72b0){const _0x2c0d59=_0x24aa5d;if(this[_0x5603af]=_0x5b72b0,this[_0x2c0d59(0x1d8)][_0x5603af]){const _0x29a7be={...this[_0x2c0d59(0x1d8)]};delete _0x29a7be[_0x5603af],this[_0x2c0d59(0x1d8)]=_0x29a7be;}},async 'loadBuckets'(){const _0x5664d6=_0x24aa5d,[_0x396320,_0x1ea1f5]=await Promise[_0x5664d6(0x17b)]([fetch(_0x495f28['apiBase']+_0x5664d6(0x1a9))[_0x5664d6(0x1ba)](()=>null),fetch(_0x495f28['apiBase']+_0x5664d6(0x19e))[_0x5664d6(0x1ba)](()=>null)]);if(_0x396320?.['ok']){const _0x40b672=await _0x396320['json']()[_0x5664d6(0x1ba)](()=>({}));this[_0x5664d6(0x18e)]=_0x40b672?.[_0x5664d6(0x18c)]??_0x40b672?.['data']??[];}if(_0x1ea1f5?.['ok']){const _0xc373dd=await _0x1ea1f5[_0x5664d6(0x1d7)]()[_0x5664d6(0x1ba)](()=>({}));this[_0x5664d6(0x1bc)]=_0xc373dd?.['result']??_0xc373dd?.[_0x5664d6(0x190)]??[];}this['_syncTypeData']();},'applyTypeDefaults'(_0xe3184a){const _0x3cf08b=_0x24aa5d,_0x11de1f=this[_0x3cf08b(0x1bc)]['find'](_0x9ed6a6=>_0x9ed6a6['id']===_0xe3184a);if(!_0x11de1f)return!0x1;const _0x737f3e=_0x11de1f[_0x3cf08b(0x1be)]??{},_0x31a4ca={};return null!=_0x737f3e[_0x3cf08b(0x1b5)]&&(this[_0x3cf08b(0x188)]=_0x737f3e['max_tries'],_0x31a4ca[_0x3cf08b(0x188)]=!0x0),null!=_0x737f3e['retry_delay']&&(this['retryDelay']=_0x737f3e['retry_delay'],_0x31a4ca['retryDelay']=!0x0),null!=_0x737f3e[_0x3cf08b(0x1b4)]&&(this['backoff']=_0x737f3e['backoff_multiplier'],_0x31a4ca['backoff']=!0x0),null!=_0x737f3e[_0x3cf08b(0x1bb)]&&(this[_0x3cf08b(0x1bb)]=_0x737f3e[_0x3cf08b(0x1bb)],_0x31a4ca[_0x3cf08b(0x1bb)]=!0x0),null!=_0x737f3e['done_ttl']&&(this[_0x3cf08b(0x177)]=_0x737f3e[_0x3cf08b(0x1e6)],_0x31a4ca['doneTtl']=!0x0),null!=_0x737f3e[_0x3cf08b(0x1c6)]&&(this[_0x3cf08b(0x17e)]=_0x737f3e['failed_ttl'],_0x31a4ca[_0x3cf08b(0x17e)]=!0x0),Array[_0x3cf08b(0x187)](_0x737f3e[_0x3cf08b(0x1ce)])&&_0x737f3e['buckets']['length']&&(this[_0x3cf08b(0x1ce)]=_0x737f3e[_0x3cf08b(0x1ce)]['map'](_0x2cd9ab=>({'id':_0x2cd9ab['id'],'tokens':_0x2cd9ab[_0x3cf08b(0x176)]??0x1})),_0x31a4ca['buckets']=!0x0),this[_0x3cf08b(0x1d8)]=_0x31a4ca,!0x0;},'onTypeSelected'(_0x5d0639){const _0x406dd1=_0x24aa5d;null!=_0x5d0639&&(this['type']=_0x5d0639,this[_0x406dd1(0x1c5)](),this['applyTypeDefaults'](_0x5d0639)||_0x5d0639||(this[_0x406dd1(0x1d8)]={}),this[_0x406dd1(0x18f)]());},async 'onBucketSelect'(_0x51f275,_0x351221){const _0x157ec4=_0x24aa5d;if(this[_0x157ec4(0x1d8)][_0x157ec4(0x1ce)]&&(this[_0x157ec4(0x1d8)]={...this[_0x157ec4(0x1d8)],'buckets':!0x1}),_0x157ec4(0x180)===_0x351221){const _0x2d09de=this;await _0x228242['$ok'][_0x157ec4(0x17a)][_0x157ec4(0x17d)][_0x157ec4(0x1e7)]({'owner':_0x228242,'title':_0x157ec4(0x1e2),'content':_0x157ec4(0x1dc),'context':_0x297509=>({'modal':_0x297509,'onDone':async _0x2c0750=>{const _0x3394cd=_0x157ec4;await _0x2d09de[_0x3394cd(0x1c0)](),_0x2d09de['buckets']=_0x2d09de['buckets'][_0x3394cd(0x170)]((_0x44d0a6,_0xd93789)=>_0xd93789===_0x51f275?{..._0x44d0a6,'id':_0x2c0750}:_0x44d0a6);}})});}else this['buckets']=this[_0x157ec4(0x1ce)][_0x157ec4(0x170)]((_0x4da3d6,_0x28e090)=>_0x28e090===_0x51f275?{..._0x4da3d6,'id':_0x351221}:_0x4da3d6);},'setBucketTokens'(_0x3d6563,_0x37d4ec){const _0x98cf69=_0x24aa5d;this[_0x98cf69(0x1d8)]['buckets']&&(this[_0x98cf69(0x1d8)]={...this[_0x98cf69(0x1d8)],'buckets':!0x1});const _0x1abb76=''===_0x37d4ec?0x1:Math[_0x98cf69(0x1e3)](0x1,parseInt(_0x37d4ec)||0x1);this['buckets']=this[_0x98cf69(0x1ce)]['map']((_0x6ea8e,_0x5cf95c)=>_0x5cf95c===_0x3d6563?{..._0x6ea8e,'tokens':_0x1abb76}:_0x6ea8e);},'addBucket'(){const _0x5c6f0d=_0x24aa5d;this[_0x5c6f0d(0x1d8)][_0x5c6f0d(0x1ce)]&&(this[_0x5c6f0d(0x1d8)]={...this[_0x5c6f0d(0x1d8)],'buckets':!0x1}),this['buckets']=[...this[_0x5c6f0d(0x1ce)],{'id':'','tokens':0x1}];},'removeBucket'(_0x3d3207){const _0x48d3bb=_0x24aa5d;this['_fromType'][_0x48d3bb(0x1ce)]&&(this[_0x48d3bb(0x1d8)]={...this[_0x48d3bb(0x1d8)],'buckets':!0x1}),this[_0x48d3bb(0x1ce)]=this[_0x48d3bb(0x1ce)][_0x48d3bb(0x1cb)]((_0x1a6451,_0x26d577)=>_0x26d577!==_0x3d3207);},'onPayloadChange'(_0x12ab60){const _0x403acb=_0x24aa5d;this[_0x403acb(0x1b6)]=_0x12ab60,this[_0x403acb(0x197)]=!0x0,this[_0x403acb(0x18f)]();},'_revalidatePayload'(){const _0x542265=_0x24aa5d,_0x3a76bd=this['typeSchema'];this[_0x542265(0x189)]=_0x3a76bd?.['definition']?this['_validatePayload'](this[_0x542265(0x1b6)],_0x3a76bd[_0x542265(0x1de)]):[];},'_validatePayload'(_0x2bd52d,_0x4a65c9){const _0x1c9744=[],_0x23df45=(_0x4b67a0,_0x4ac295,_0x19181b)=>{const _0x199d92=_0x3e5d;if(_0x4ac295&&_0x199d92(0x1b8)==typeof _0x4ac295&&!_0x4ac295[_0x199d92(0x1c8)]){if(_0x4ac295[_0x199d92(0x1b3)]){const _0x4f5bd6=Array['isArray'](_0x4ac295[_0x199d92(0x1b3)])?_0x4ac295['type']:[_0x4ac295[_0x199d92(0x1b3)]],_0x4f0ec4=null===_0x4b67a0?_0x199d92(0x194):Array[_0x199d92(0x187)](_0x4b67a0)?_0x199d92(0x175):typeof _0x4b67a0;if(!_0x4f5bd6[_0x199d92(0x184)](_0x1d616f=>_0x1d616f===_0x4f0ec4||_0x199d92(0x19c)===_0x1d616f&&_0x199d92(0x1d1)===_0x4f0ec4&&Number[_0x199d92(0x1db)](_0x4b67a0)))return void _0x1c9744[_0x199d92(0x1a4)]({'path':_0x19181b||_0x199d92(0x1ac),'msg':_0x199d92(0x186)+_0x4f5bd6[_0x199d92(0x1c4)](_0x199d92(0x1cf))+_0x199d92(0x1df)+_0x4f0ec4});}if(_0x4ac295['enum']&&!_0x4ac295[_0x199d92(0x198)][_0x199d92(0x184)](_0x10ef8f=>JSON[_0x199d92(0x18d)](_0x10ef8f)===JSON[_0x199d92(0x18d)](_0x4b67a0))&&_0x1c9744[_0x199d92(0x1a4)]({'path':_0x19181b||'(root)','msg':'must\x20be\x20one\x20of\x20['+_0x4ac295[_0x199d92(0x198)][_0x199d92(0x170)](_0x483fc5=>JSON[_0x199d92(0x18d)](_0x483fc5))[_0x199d92(0x1c4)](',\x20')+']'}),_0x199d92(0x1bd)==typeof _0x4b67a0&&(null!=_0x4ac295[_0x199d92(0x17f)]&&_0x4b67a0[_0x199d92(0x1c2)]<_0x4ac295['minLength']&&_0x1c9744['push']({'path':_0x19181b||_0x199d92(0x1ac),'msg':_0x199d92(0x1b9)+_0x4ac295[_0x199d92(0x17f)]}),null!=_0x4ac295['maxLength']&&_0x4b67a0[_0x199d92(0x1c2)]>_0x4ac295[_0x199d92(0x1b7)]&&_0x1c9744[_0x199d92(0x1a4)]({'path':_0x19181b||'(root)','msg':_0x199d92(0x1d5)+_0x4ac295['maxLength']}),_0x4ac295[_0x199d92(0x1ca)]))try{new RegExp(_0x4ac295['pattern'])[_0x199d92(0x172)](_0x4b67a0)||_0x1c9744['push']({'path':_0x19181b||_0x199d92(0x1ac),'msg':_0x199d92(0x178)});}catch{}if(_0x199d92(0x1d1)==typeof _0x4b67a0&&(null!=_0x4ac295['minimum']&&_0x4b67a0<_0x4ac295[_0x199d92(0x1bf)]&&_0x1c9744[_0x199d92(0x1a4)]({'path':_0x19181b||_0x199d92(0x1ac),'msg':'>=\x20'+_0x4ac295[_0x199d92(0x1bf)]}),null!=_0x4ac295[_0x199d92(0x1a3)]&&_0x4b67a0>_0x4ac295[_0x199d92(0x1a3)]&&_0x1c9744[_0x199d92(0x1a4)]({'path':_0x19181b||_0x199d92(0x1ac),'msg':_0x199d92(0x1d9)+_0x4ac295[_0x199d92(0x1a3)]})),'object'==typeof _0x4b67a0&&null!==_0x4b67a0&&!Array['isArray'](_0x4b67a0)){for(const _0x5a4e49 of _0x4ac295[_0x199d92(0x181)]??[])_0x5a4e49 in _0x4b67a0||_0x1c9744[_0x199d92(0x1a4)]({'path':_0x19181b?_0x19181b+'.'+_0x5a4e49:_0x5a4e49,'msg':_0x199d92(0x181)});if(_0x4ac295[_0x199d92(0x1d6)]){for(const [_0x3564eb,_0x1a64d1]of Object['entries'](_0x4ac295[_0x199d92(0x1d6)]))_0x3564eb in _0x4b67a0&&_0x23df45(_0x4b67a0[_0x3564eb],_0x1a64d1,_0x19181b?_0x19181b+'.'+_0x3564eb:_0x3564eb);if(!0x1===_0x4ac295[_0x199d92(0x1c1)]){for(const _0x12677c of Object[_0x199d92(0x1b1)](_0x4b67a0))_0x12677c in _0x4ac295[_0x199d92(0x1d6)]||_0x1c9744['push']({'path':_0x19181b?_0x19181b+'.'+_0x12677c:_0x12677c,'msg':'additional\x20property\x20not\x20allowed'});}}}if(Array[_0x199d92(0x187)](_0x4b67a0)&&_0x4ac295[_0x199d92(0x1a1)]&&_0x4b67a0['forEach']((_0x5539f8,_0x314eec)=>_0x23df45(_0x5539f8,_0x4ac295[_0x199d92(0x1a1)],(_0x19181b||'')+'['+_0x314eec+']')),_0x4ac295[_0x199d92(0x179)]){for(const _0x3eadeb of _0x4ac295[_0x199d92(0x179)])_0x23df45(_0x4b67a0,_0x3eadeb,_0x19181b);}}};return _0x23df45(_0x2bd52d,_0x4a65c9,''),_0x1c9744;},'getWhen'(){const _0x3f7b73=_0x24aa5d;if('asap'===this[_0x3f7b73(0x1aa)])return null;if(_0x3f7b73(0x1c9)===this[_0x3f7b73(0x1aa)]){const _0x33050d=new Date(this['whenDatetime']);return isNaN(_0x33050d['getTime']())?null:_0x33050d[_0x3f7b73(0x192)]();}return this['whenTs'];},'_parseTags'(_0x38fefe){const _0x2479db=_0x24aa5d;if(!_0x38fefe)return;const _0x3cef66=String(_0x38fefe)[_0x2479db(0x1e8)](',')[_0x2479db(0x170)](_0x20c4e4=>_0x20c4e4['trim']())[_0x2479db(0x1cb)](Boolean);return _0x3cef66[_0x2479db(0x1c2)]?_0x3cef66:void 0x0;},async 'submit'(){const _0x406466=_0x24aa5d;if(!this[_0x406466(0x1b3)])return void _0x228242[_0x406466(0x1dd)][_0x406466(0x17a)]?.[_0x406466(0x199)]?.['error']?.(_0x406466(0x196));if(this['typeSchema']?.['definition']){const _0x274a81=this[_0x406466(0x16e)](this[_0x406466(0x1b6)],this['typeSchema'][_0x406466(0x1de)]);if(_0x274a81[_0x406466(0x1c2)])return this[_0x406466(0x197)]=!0x0,this[_0x406466(0x189)]=_0x274a81,void _0x228242[_0x406466(0x1dd)][_0x406466(0x17a)]?.[_0x406466(0x199)]?.[_0x406466(0x1c3)]?.(_0x406466(0x1ad));}const _0x12d8d8=this[_0x406466(0x182)](),_0x47bbb7=String(this[_0x406466(0x171)]||'')[_0x406466(0x1a6)]()||null,_0x4efb3b=this[_0x406466(0x1ce)]['filter'](_0x498a2f=>_0x498a2f['id'])[_0x406466(0x170)](_0x284feb=>({'id':_0x284feb['id'],'tokens':_0x284feb['tokens']||0x1})),_0x44fb7b=this['_parseTags'](this[_0x406466(0x1a5)]),_0x2f2572={};null!=_0x12d8d8&&(_0x2f2572[_0x406466(0x174)]=_0x12d8d8),this[_0x406466(0x1bb)]&&(_0x2f2572[_0x406466(0x1bb)]=Number(this[_0x406466(0x1bb)])),null!==this[_0x406466(0x188)]&&''!==this[_0x406466(0x188)]&&(_0x2f2572['max_tries']=Number(this[_0x406466(0x188)])),this[_0x406466(0x1da)]&&(_0x2f2572[_0x406466(0x1a7)]=Number(this['retryDelay'])),0x1!==this[_0x406466(0x1d3)]&&(_0x2f2572[_0x406466(0x1b4)]=Number(this[_0x406466(0x1d3)])),_0x44fb7b&&(_0x2f2572['tags']=_0x44fb7b),_0x4efb3b[_0x406466(0x1c2)]&&(_0x2f2572[_0x406466(0x1ce)]=_0x4efb3b),_0x47bbb7&&(_0x2f2572[_0x406466(0x171)]=_0x47bbb7),this[_0x406466(0x19b)][_0x406466(0x1a6)]()&&(_0x2f2572[_0x406466(0x18a)]=this[_0x406466(0x19b)][_0x406466(0x1a6)]()),null!==this[_0x406466(0x177)]&&''!==this[_0x406466(0x177)]&&(_0x2f2572[_0x406466(0x1e6)]=Number(this[_0x406466(0x177)])),null!==this[_0x406466(0x17e)]&&''!==this[_0x406466(0x17e)]&&(_0x2f2572['failed_ttl']=Number(this[_0x406466(0x17e)])),this[_0x406466(0x16f)]=!0x0;try{const _0x1e9f16=await fetch(_0x495f28[_0x406466(0x1d4)]+'/queue/enqueue/'+encodeURIComponent(this[_0x406466(0x1b3)]),{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'payload':this[_0x406466(0x1b6)],'options':_0x2f2572})});if(!_0x1e9f16['ok']){const _0x6a17f3=await _0x1e9f16['json']()[_0x406466(0x1ba)](()=>({}));throw new Error(_0x6a17f3?.[_0x406466(0x1c3)]?.['message']||_0x6a17f3?.[_0x406466(0x195)]||_0x406466(0x1cd));}await _0x228242[_0x406466(0x1a0)][_0x406466(0x17d)][_0x406466(0x19d)](),await _0x228242['$attr'][_0x406466(0x1e1)]?.();}catch(_0x43cc78){_0x228242[_0x406466(0x1dd)]['shared']?.[_0x406466(0x199)]?.[_0x406466(0x1c3)]?.(_0x43cc78[_0x406466(0x195)]||'Failed\x20to\x20enqueue\x20job');}finally{this[_0x406466(0x16f)]=!0x1;}},'cancel'(){const _0xc65542=_0x24aa5d;_0x228242[_0xc65542(0x1a0)]['modal']['close']();}}),async 'mount'(_0x5187d6){const _0x5cab8d=_0x24aa5d;await this[_0x5cab8d(0x1c0)](),this['type']&&this['applyTypeDefaults'](this['type']);},'template':_0x24aa5d(0x19f),'style':_0x24aa5d(0x1b0)};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const _0x3b08a1=_0x3277;(function(_0x5857fb,_0x460640){const _0xf69f2a=_0x3277,_0x52ef18=_0x5857fb();while(!![]){try{const _0x49af78=parseInt(_0xf69f2a(0xbf))/0x1+parseInt(_0xf69f2a(0xb3))/0x2+parseInt(_0xf69f2a(0xd0))/0x3+parseInt(_0xf69f2a(0xcc))/0x4*(parseInt(_0xf69f2a(0xc9))/0x5)+-parseInt(_0xf69f2a(0xa3))/0x6*(-parseInt(_0xf69f2a(0xba))/0x7)+parseInt(_0xf69f2a(0xb5))/0x8+-parseInt(_0xf69f2a(0xbd))/0x9;if(_0x49af78===_0x460640)break;else _0x52ef18['push'](_0x52ef18['shift']());}catch(_0x253778){_0x52ef18['push'](_0x52ef18['shift']());}}}(_0x4b2c,0x279d2));import _0x9a8aaf from'@toolkit/core/ok-overlay.ok.js';import _0x3a06b2 from'@toolkit/elements/ok-icon.ok.js';function _0x3277(_0x4b425e,_0x48ebac){_0x4b425e=_0x4b425e-0xa1;const _0x4b2c64=_0x4b2c();let _0x327766=_0x4b2c64[_0x4b425e];return _0x327766;}function _0x4b2c(){const _0x2578ca=['defBackoff','max','defaults','job-type-modal','/queue/job-type','onDone','keys','Failed\x20to\x20save\x20job\x20type','open','map','<create-bucket-modal\x20:modal=\x22modal\x22\x20:on-done=\x22onDone\x22\x20/>','defTtl','isEdit','/schema','toast','defRetryDelay','failed_ttl','backoff_multiplier','Add\x20Token\x20Bucket','max_tries','enforce','busy','__create__','Save\x20the\x20job\x20type\x20first\x20before\x20editing\x20its\x20schema','$ok','449646qvcbhP','status','defMaxTries','data','length','payload_schema','apiBase','.btn-ghost{background:0\x200;border:1px\x20solid\x20var(--okdb-app-border);border-radius:5px;color:inherit;cursor:pointer;opacity:.6;padding:2px\x208px;font-size:12px}.btn-ghost:hover{opacity:1;border-color:color-mix(in\x20srgb,var(--okdb-accent)\x2033%,transparent)}.btn-ghost--sm{font-size:11px;padding:1px\x207px}','error','max_concurrency','retry_delay','priority','application/json','parseOptInt','close','/queue/job-type/','98972wQYUoj','shared','2233112MtVWAR','Job\x20type\x20name\x20is\x20required','isArray','result','filter','21fbNChz','/queue/buckets','trim','7073019oJSFNx','active','179707GQvZRL','defBuckets','tokens','defFailedTtl','defDoneTtl','<schema-edit-modal\x20:modal=\x22modal\x22\x20:type=\x22type\x22\x20:schema=\x22schema\x22\x20:save-url=\x22saveUrl\x22\x20:samples-url=\x22samplesUrl\x22\x20:hide-enforce=\x22true\x22\x20:on-done=\x22onDone\x22\x20/>','Payload\x20Schema\x20·\x20','/sample-payloads','bucketOptions','$attr','85XsnJNj','defPriority','stringify','4104iyJxox','modal','jobType','buckets','592656forcnX','\x0a<div\x20style=\x22position:relative;\x20min-width:600px;\x20max-width:calc(100vw\x20-\x2080px);\x20display:flex;\x20flex-direction:column;\x20gap:14px;\x22>\x0a\x0a\x20\x20<if\x20:=\x22busy\x22>\x0a\x20\x20\x20\x20<ok-overlay>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;align-items:center;justify-content:center;height:100%;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22loader\x22\x20class=\x22spin\x22\x20style=\x22width:28px;height:28px;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</ok-overlay>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20name\x20+\x20status\x20+\x20concurrency\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>Type\x20name</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20placeholder=\x22e.g.\x20email.send\x22\x20:value=\x22id\x22\x20@input=\x22id\x20=\x20$el.value\x22\x20:disabled=\x22isEdit\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22width:150px;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>Status</label>\x0a\x20\x20\x20\x20\x20\x20<select\x20:value=\x22status\x22\x20@change=\x22status\x20=\x20$el.value\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22active\x22>Active</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22paused\x22>Paused</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22draining\x22>Draining</option>\x0a\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22width:140px;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>Max\x20concurrency</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20min=\x221\x22\x20placeholder=\x22unlimited\x22\x20:value=\x22maxConcurrency\x22\x20@input=\x22maxConcurrency\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<div\x20style=\x22height:1px;\x20background:var(--okdb-app-border);\x22></div>\x0a\x20\x20<div\x20style=\x22font-size:11px;\x20font-weight:600;\x20text-transform:uppercase;\x20letter-spacing:.06em;\x20opacity:.5;\x22>Defaults\x20(applied\x20when\x20enqueueing\x20without\x20explicit\x20values)</div>\x0a\x0a\x20\x20<!--\x20retry\x20defaults\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>Max\x20tries</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20min=\x221\x22\x20placeholder=\x22queue\x20default\x22\x20:value=\x22defMaxTries\x22\x20@input=\x22defMaxTries\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>Retry\x20delay\x20(ms)</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20min=\x220\x22\x20placeholder=\x220\x22\x20:value=\x22defRetryDelay\x22\x20@input=\x22defRetryDelay\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>Backoff\x20multiplier</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20min=\x221\x22\x20step=\x220.1\x22\x20placeholder=\x221\x22\x20:value=\x22defBackoff\x22\x20@input=\x22defBackoff\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22width:110px;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>Priority</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20placeholder=\x220\x22\x20:value=\x22defPriority\x22\x20@input=\x22defPriority\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20TTLs\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>Claim\x20TTL\x20(ms)</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20min=\x220\x22\x20placeholder=\x22queue\x20default\x22\x20:value=\x22defTtl\x22\x20@input=\x22defTtl\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>Done\x20TTL\x20(ms)</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20min=\x220\x22\x20placeholder=\x22keep\x20forever\x22\x20:value=\x22defDoneTtl\x22\x20@input=\x22defDoneTtl\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>Failed\x20TTL\x20(ms)</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20min=\x220\x22\x20placeholder=\x22keep\x20forever\x22\x20:value=\x22defFailedTtl\x22\x20@input=\x22defFailedTtl\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20default\x20buckets\x20-->\x0a\x20\x20<div\x20class=\x22field\x22>\x0a\x20\x20\x20\x20<label>Default\x20buckets\x20<span\x20style=\x22opacity:.4;\x20font-weight:400;\x20font-size:11px;\x22>(rate\x20limiting)</span></label>\x0a\x20\x20\x20\x20<each\x20:of=\x22defBuckets\x22\x20let:item=\x22b\x22\x20let:index=\x22i\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:6px;\x20align-items:center;\x20margin-bottom:4px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<select\x20style=\x22flex:1;\x22\x20@change=\x22onBucketSelect(i,\x20$el.value)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>—\x20none\x20—</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20as=\x22repeat\x22\x20:of=\x22bucketOptions\x22\x20let:item=\x22opt\x22\x20:value=\x22opt.id\x22\x20:selected=\x22opt.id\x20===\x20b.id\x22>{{\x20opt.id\x20}}</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22__create__\x22>+\x20Create\x20bucket…</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20style=\x22width:72px;\x22\x20type=\x22number\x22\x20min=\x221\x22\x20placeholder=\x22tokens\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22b.tokens\x22\x20@input=\x22setBucketTokens(i,\x20$el.value)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x22\x20@click=\x22removeBucket(i)\x22\x20title=\x22Remove\x22>✕</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-ghost--sm\x22\x20@click=\x22addBucket()\x22>+\x20Add\x20bucket</button>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20schema\x20row\x20(only\x20shown\x20in\x20edit\x20mode\x20since\x20we\x20need\x20the\x20type\x20to\x20exist\x20first)\x20-->\x0a\x20\x20<if\x20:=\x22isEdit\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:10px;\x20padding:8px\x2012px;\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:6px;\x20background:var(--okdb-app-bg-deep);\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22flex:1;\x20font-size:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-weight:600;\x22>Payload\x20Schema</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22hasSchema\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22margin-left:8px;\x20font-size:10px;\x20padding:1px\x206px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2033%,\x20transparent);\x20color:var(--okdb-accent);\x22>defined</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22schemaEnforce\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22margin-left:4px;\x20font-size:10px;\x20padding:1px\x206px;\x20border-radius:999px;\x20border:1px\x20solid\x20#ef4444;\x20color:#ef4444;\x22>enforced</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!hasSchema\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22margin-left:8px;\x20opacity:.4;\x20font-size:11px;\x22>none</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x22\x20@click=\x22openSchema()\x22>Edit\x20schema…</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x20\x20<if\x20:=\x22!isEdit\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.45;\x20padding:0\x202px;\x22>Save\x20the\x20type\x20first,\x20then\x20edit\x20its\x20payload\x20schema.</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20footer\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:10px;\x20justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20<button\x20@click=\x22cancel()\x22>Cancel</button>\x0a\x20\x20\x20\x20<button\x20@click=\x22submit()\x22\x20:disabled=\x22!id.trim()\x20||\x20busy\x22>{{\x20isEdit\x20?\x20\x27Save\x27\x20:\x20\x27Register\x27\x20}}</button>\x0a\x20\x20</div>\x0a\x0a</div>\x0a','failed','init'];_0x4b2c=function(){return _0x2578ca;};return _0x4b2c();}import _0x26d47c from'./create-bucket-modal.ok.js';import _0x585a90 from'../../db/modals/schema-edit-modal.ok.js';import _0x534378 from'../../../stores/okdb-store.js';export default{'tag':_0x3b08a1(0xd7),'dependencies':[_0x9a8aaf,_0x3a06b2,_0x26d47c,_0x585a90],'attr':{'modal':{},'jobType':{},'bucketOptions':{},'onDone':{}},'context':_0x1376bf=>({'busy':!0x1,'id':'','status':'active','maxConcurrency':'','defMaxTries':'','defRetryDelay':'','defBackoff':'','defPriority':'','defTtl':'','defDoneTtl':'','defFailedTtl':'','defBuckets':[{'id':'','tokens':0x1}],'bucketOptions':[],get 'isEdit'(){const _0x4298d2=_0x3b08a1;return!!_0x1376bf[_0x4298d2(0xc8)][_0x4298d2(0xce)];},get 'hasSchema'(){const _0x125c6e=_0x3b08a1;return!!_0x1376bf['$attr'][_0x125c6e(0xce)]?.[_0x125c6e(0xa8)];},get 'schemaEnforce'(){const _0x481fc7=_0x3b08a1;return _0x1376bf['$attr'][_0x481fc7(0xce)]?.['payload_schema']?.[_0x481fc7(0xe8)]??!0x1;},'init'(){const _0x2afa30=_0x3b08a1;this[_0x2afa30(0xc7)]=Array['isArray'](_0x1376bf[_0x2afa30(0xc8)]['bucketOptions'])?_0x1376bf[_0x2afa30(0xc8)]['bucketOptions']:[];const _0x497e32=_0x1376bf['$attr']['jobType'];if(!_0x497e32)return;this['id']=_0x497e32['id']??'',this[_0x2afa30(0xa4)]=_0x497e32[_0x2afa30(0xa4)]??_0x2afa30(0xbe),this['maxConcurrency']=null!=_0x497e32[_0x2afa30(0xac)]?String(_0x497e32[_0x2afa30(0xac)]):'';const _0x4c2a00=_0x497e32[_0x2afa30(0xd6)]??{};this[_0x2afa30(0xa5)]=null!=_0x4c2a00['max_tries']?String(_0x4c2a00[_0x2afa30(0xe7)]):'',this[_0x2afa30(0xe3)]=null!=_0x4c2a00[_0x2afa30(0xad)]?String(_0x4c2a00[_0x2afa30(0xad)]):'',this[_0x2afa30(0xd4)]=null!=_0x4c2a00[_0x2afa30(0xe5)]?String(_0x4c2a00[_0x2afa30(0xe5)]):'',this[_0x2afa30(0xca)]=null!=_0x4c2a00[_0x2afa30(0xae)]?String(_0x4c2a00['priority']):'',this[_0x2afa30(0xdf)]=null!=_0x4c2a00['ttl']?String(_0x4c2a00['ttl']):'',this[_0x2afa30(0xc3)]=null!=_0x4c2a00['done_ttl']?String(_0x4c2a00['done_ttl']):'',this[_0x2afa30(0xc2)]=null!=_0x4c2a00[_0x2afa30(0xe4)]?String(_0x4c2a00[_0x2afa30(0xe4)]):'',this['defBuckets']=Array[_0x2afa30(0xb7)](_0x4c2a00[_0x2afa30(0xcf)])&&_0x4c2a00[_0x2afa30(0xcf)]['length']?_0x4c2a00['buckets']['map'](_0x4d887c=>({'id':_0x4d887c['id'],'tokens':_0x4d887c[_0x2afa30(0xc1)]??0x1})):[{'id':'','tokens':0x1}];},'parseOptInt'(_0x36d49c){const _0x2b92c6=parseInt(_0x36d49c);return isNaN(_0x2b92c6)?null:_0x2b92c6;},'parseOptFloat'(_0x1b08f3){const _0x50bdb7=parseFloat(_0x1b08f3);return isNaN(_0x50bdb7)?null:_0x50bdb7;},async 'onBucketSelect'(_0x4f654b,_0x4d3a23){const _0x112f28=_0x3b08a1;if(_0x112f28(0xea)===_0x4d3a23){const _0x1897a5=this;await _0x1376bf['$ok'][_0x112f28(0xb4)]['modal'][_0x112f28(0xdc)]({'owner':_0x1376bf,'title':_0x112f28(0xe6),'content':_0x112f28(0xde),'context':_0x516003=>({'modal':_0x516003,'onDone':async _0x88e22f=>{const _0xb5e14c=_0x112f28;try{const _0x3d5d51=await fetch(_0x534378[_0xb5e14c(0xa9)]+_0xb5e14c(0xbb)),_0x4832a6=await _0x3d5d51['json']();_0x1897a5[_0xb5e14c(0xc7)]=_0x4832a6?.[_0xb5e14c(0xb8)]??_0x4832a6?.[_0xb5e14c(0xa6)]??[];}catch{}_0x1897a5[_0xb5e14c(0xc0)]=_0x1897a5['defBuckets']['map']((_0x39cad9,_0x11325c)=>_0x11325c===_0x4f654b?{..._0x39cad9,'id':_0x88e22f}:_0x39cad9);}})});}else this['defBuckets']=this['defBuckets'][_0x112f28(0xdd)]((_0x404a95,_0x5a4912)=>_0x5a4912===_0x4f654b?{..._0x404a95,'id':_0x4d3a23}:_0x404a95);},'setBucketTokens'(_0x320304,_0x30eda5){const _0x2e4e5f=_0x3b08a1,_0x1e4292=''===_0x30eda5?0x1:Math[_0x2e4e5f(0xd5)](0x1,parseInt(_0x30eda5)||0x1);this['defBuckets']=this[_0x2e4e5f(0xc0)][_0x2e4e5f(0xdd)]((_0x52be39,_0x4af66d)=>_0x4af66d===_0x320304?{..._0x52be39,'tokens':_0x1e4292}:_0x52be39);},'addBucket'(){const _0x2be052=_0x3b08a1;this[_0x2be052(0xc0)]=[...this[_0x2be052(0xc0)],{'id':'','tokens':0x1}];},'removeBucket'(_0x450853){const _0x7296ee=_0x3b08a1;this['defBuckets']=this[_0x7296ee(0xc0)][_0x7296ee(0xb9)]((_0x475aca,_0xc06252)=>_0xc06252!==_0x450853);},'openSchema'(){const _0xc09163=_0x3b08a1,_0x25f4f8=this['id'][_0xc09163(0xbc)]()||(_0x1376bf[_0xc09163(0xc8)][_0xc09163(0xce)]?.['id']??'');if(!_0x25f4f8)return void _0x1376bf[_0xc09163(0xa2)][_0xc09163(0xb4)]?.['toast']?.[_0xc09163(0xab)]?.(_0xc09163(0xa1));const _0x5c3105=_0x534378['apiBase']+'/queue/job-type/'+encodeURIComponent(_0x25f4f8)+_0xc09163(0xe1),_0x184454=_0x534378[_0xc09163(0xa9)]+_0xc09163(0xb2)+encodeURIComponent(_0x25f4f8)+_0xc09163(0xc6);_0x1376bf[_0xc09163(0xa2)][_0xc09163(0xb4)]['modal']['open']({'owner':_0x1376bf,'title':_0xc09163(0xc5)+_0x25f4f8,'canDrag':!0x0,'content':_0xc09163(0xc4),'context':_0x21a066=>({'modal':_0x21a066,'type':_0x25f4f8,'schema':_0x1376bf[_0xc09163(0xc8)]['jobType']?.[_0xc09163(0xa8)]??null,'saveUrl':_0x5c3105,'samplesUrl':_0x184454,'onDone':()=>_0x1376bf[_0xc09163(0xc8)][_0xc09163(0xd9)]?.()})});},async 'submit'(){const _0x2d8dba=_0x3b08a1,_0x485020=this['id'][_0x2d8dba(0xbc)]();if(!_0x485020)return void _0x1376bf['$ok'][_0x2d8dba(0xb4)]?.[_0x2d8dba(0xe2)]?.[_0x2d8dba(0xab)]?.(_0x2d8dba(0xb6));const _0x91e08b=this[_0x2d8dba(0xc0)][_0x2d8dba(0xb9)](_0x5731e4=>_0x5731e4['id'])[_0x2d8dba(0xdd)](_0x361f4f=>({'id':_0x361f4f['id'],'tokens':_0x361f4f['tokens']||0x1})),_0x5d884b={'status':this['status']},_0xfe5ea2=this[_0x2d8dba(0xb0)](this['maxConcurrency']);null!=_0xfe5ea2&&(_0x5d884b[_0x2d8dba(0xac)]=_0xfe5ea2);const _0xb62589={},_0x1eab87=this[_0x2d8dba(0xb0)](this[_0x2d8dba(0xa5)]);null!=_0x1eab87&&(_0xb62589[_0x2d8dba(0xe7)]=_0x1eab87);const _0x2b7b38=this[_0x2d8dba(0xb0)](this[_0x2d8dba(0xe3)]);null!=_0x2b7b38&&(_0xb62589[_0x2d8dba(0xad)]=_0x2b7b38);const _0x2e0607=this['parseOptFloat'](this[_0x2d8dba(0xd4)]);null!=_0x2e0607&&(_0xb62589[_0x2d8dba(0xe5)]=_0x2e0607);const _0x262fdc=this[_0x2d8dba(0xb0)](this[_0x2d8dba(0xca)]);null!=_0x262fdc&&(_0xb62589[_0x2d8dba(0xae)]=_0x262fdc);const _0xa3690=this[_0x2d8dba(0xb0)](this[_0x2d8dba(0xdf)]);null!=_0xa3690&&(_0xb62589['ttl']=_0xa3690);const _0x42af0a=this[_0x2d8dba(0xb0)](this[_0x2d8dba(0xc3)]);null!=_0x42af0a&&(_0xb62589['done_ttl']=_0x42af0a);const _0x553d25=this['parseOptInt'](this[_0x2d8dba(0xc2)]);null!=_0x553d25&&(_0xb62589['failed_ttl']=_0x553d25),_0x91e08b['length']&&(_0xb62589[_0x2d8dba(0xcf)]=_0x91e08b),Object[_0x2d8dba(0xda)](_0xb62589)[_0x2d8dba(0xa7)]&&(_0x5d884b[_0x2d8dba(0xd6)]=_0xb62589),this[_0x2d8dba(0xe9)]=!0x0;try{const _0x5023a0=this[_0x2d8dba(0xe0)]?_0x534378[_0x2d8dba(0xa9)]+_0x2d8dba(0xb2)+encodeURIComponent(_0x485020):_0x534378[_0x2d8dba(0xa9)]+_0x2d8dba(0xd8),_0x584117=this['isEdit']?'PUT':'POST',_0x293b5f=this['isEdit']?_0x5d884b:{'id':_0x485020,..._0x5d884b};if(!(await fetch(_0x5023a0,{'method':_0x584117,'headers':{'Content-Type':_0x2d8dba(0xaf)},'body':JSON[_0x2d8dba(0xcb)](_0x293b5f)}))['ok'])throw new Error(_0x2d8dba(0xd2));await _0x1376bf[_0x2d8dba(0xc8)][_0x2d8dba(0xcd)][_0x2d8dba(0xb1)](),await _0x1376bf['$attr'][_0x2d8dba(0xd9)]?.();}catch{_0x1376bf[_0x2d8dba(0xa2)]['shared']?.[_0x2d8dba(0xe2)]?.[_0x2d8dba(0xab)]?.(_0x2d8dba(0xdb));}finally{this[_0x2d8dba(0xe9)]=!0x1;}},'cancel'(){const _0x53f957=_0x3b08a1;_0x1376bf['$attr'][_0x53f957(0xcd)]['close']();}}),'mount'(){const _0x56f69f=_0x3b08a1;this[_0x56f69f(0xd3)]();},'template':_0x3b08a1(0xd1),'style':_0x3b08a1(0xaa)};
|
|
1
|
+
function _0x4387(_0x5ccc32,_0x2659b4){_0x5ccc32=_0x5ccc32-0x1cf;const _0x566165=_0x5661();let _0x438763=_0x566165[_0x5ccc32];return _0x438763;}const _0x532046=_0x4387;(function(_0x5632cd,_0xf720ab){const _0x4a3836=_0x4387,_0xdc5e4a=_0x5632cd();while(!![]){try{const _0x5654fb=-parseInt(_0x4a3836(0x207))/0x1*(parseInt(_0x4a3836(0x1e8))/0x2)+-parseInt(_0x4a3836(0x1fb))/0x3*(-parseInt(_0x4a3836(0x1dc))/0x4)+-parseInt(_0x4a3836(0x1d8))/0x5*(parseInt(_0x4a3836(0x210))/0x6)+-parseInt(_0x4a3836(0x1fa))/0x7+-parseInt(_0x4a3836(0x1eb))/0x8*(-parseInt(_0x4a3836(0x1e2))/0x9)+-parseInt(_0x4a3836(0x211))/0xa*(-parseInt(_0x4a3836(0x212))/0xb)+parseInt(_0x4a3836(0x1d6))/0xc;if(_0x5654fb===_0xf720ab)break;else _0xdc5e4a['push'](_0xdc5e4a['shift']());}catch(_0x43307b){_0xdc5e4a['push'](_0xdc5e4a['shift']());}}}(_0x5661,0x271cc));import _0x35d5cb from'@toolkit/core/ok-overlay.ok.js';function _0x5661(){const _0x1563e8=['$ok','failed','map','123248LjpWvz','toast','PUT','/queue/job-type/','.btn-ghost{background:0\x200;border:1px\x20solid\x20var(--okdb-app-border);border-radius:5px;color:inherit;cursor:pointer;opacity:.6;padding:2px\x208px;font-size:12px}.btn-ghost:hover{opacity:1;border-color:color-mix(in\x20srgb,var(--okdb-accent)\x2033%,transparent)}.btn-ghost--sm{font-size:11px;padding:1px\x207px}','job-type-modal','close','POST','<create-bucket-modal\x20:modal=\x22modal\x22\x20:on-done=\x22onDone\x22\x20/>','915546oJiaHs','1552910NoTLhU','22ogNwiP','Add\x20Token\x20Bucket','priority','parseOptInt','bucketOptions','done_ttl','tokens','/queue/job-type','active','shared','Job\x20type\x20name\x20is\x20required','jobType','max_concurrency','952956YGYZkm','<schema-edit-modal\x20:modal=\x22modal\x22\x20:type=\x22type\x22\x20:schema=\x22schema\x22\x20:save-url=\x22saveUrl\x22\x20:samples-url=\x22samplesUrl\x22\x20:hide-enforce=\x22true\x22\x20:on-done=\x22onDone\x22\x20/>','5dURkRp','data','open','error','141652kDWLNo','__create__','status','defMaxTries','isEdit','payload_schema','9441nySdpD','buckets','stringify','retry_delay','defTtl','json','4TnLDTY','failed_ttl','onDone','1352WechLQ','enforce','isArray','defFailedTtl','Failed\x20to\x20save\x20job\x20type','/sample-payloads','length','apiBase','Save\x20the\x20job\x20type\x20first\x20before\x20editing\x20its\x20schema','$attr','/queue/buckets','defPriority','backoff_multiplier','application/json','\x0a<div\x20style=\x22position:relative;\x20min-width:600px;\x20max-width:calc(100vw\x20-\x2080px);\x20display:flex;\x20flex-direction:column;\x20gap:14px;\x22>\x0a\x0a\x20\x20<if\x20:=\x22busy\x22>\x0a\x20\x20\x20\x20<ok-overlay>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;align-items:center;justify-content:center;height:100%;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22loader\x22\x20class=\x22spin\x22\x20style=\x22width:28px;height:28px;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</ok-overlay>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20name\x20+\x20status\x20+\x20concurrency\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>Type\x20name</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20placeholder=\x22e.g.\x20email.send\x22\x20:value=\x22id\x22\x20@input=\x22id\x20=\x20$el.value\x22\x20:disabled=\x22isEdit\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22width:150px;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>Status</label>\x0a\x20\x20\x20\x20\x20\x20<select\x20:value=\x22status\x22\x20@change=\x22status\x20=\x20$el.value\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22active\x22>Active</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22paused\x22>Paused</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22draining\x22>Draining</option>\x0a\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22width:140px;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>Max\x20concurrency</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20min=\x221\x22\x20placeholder=\x22unlimited\x22\x20:value=\x22maxConcurrency\x22\x20@input=\x22maxConcurrency\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<div\x20style=\x22height:1px;\x20background:var(--okdb-app-border);\x22></div>\x0a\x20\x20<div\x20style=\x22font-size:11px;\x20font-weight:600;\x20text-transform:uppercase;\x20letter-spacing:.06em;\x20opacity:.5;\x22>Defaults\x20(applied\x20when\x20enqueueing\x20without\x20explicit\x20values)</div>\x0a\x0a\x20\x20<!--\x20retry\x20defaults\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>Max\x20tries</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20min=\x221\x22\x20placeholder=\x22queue\x20default\x22\x20:value=\x22defMaxTries\x22\x20@input=\x22defMaxTries\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>Retry\x20delay\x20(ms)</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20min=\x220\x22\x20placeholder=\x220\x22\x20:value=\x22defRetryDelay\x22\x20@input=\x22defRetryDelay\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>Backoff\x20multiplier</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20min=\x221\x22\x20step=\x220.1\x22\x20placeholder=\x221\x22\x20:value=\x22defBackoff\x22\x20@input=\x22defBackoff\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22width:110px;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>Priority</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20placeholder=\x220\x22\x20:value=\x22defPriority\x22\x20@input=\x22defPriority\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20TTLs\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>Claim\x20TTL\x20(ms)</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20min=\x220\x22\x20placeholder=\x22queue\x20default\x22\x20:value=\x22defTtl\x22\x20@input=\x22defTtl\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>Done\x20TTL\x20(ms)</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20min=\x220\x22\x20placeholder=\x22keep\x20forever\x22\x20:value=\x22defDoneTtl\x22\x20@input=\x22defDoneTtl\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>Failed\x20TTL\x20(ms)</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20min=\x220\x22\x20placeholder=\x22keep\x20forever\x22\x20:value=\x22defFailedTtl\x22\x20@input=\x22defFailedTtl\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20default\x20buckets\x20-->\x0a\x20\x20<div\x20class=\x22field\x22>\x0a\x20\x20\x20\x20<label>Default\x20buckets\x20<span\x20style=\x22opacity:.4;\x20font-weight:400;\x20font-size:11px;\x22>(rate\x20limiting)</span></label>\x0a\x20\x20\x20\x20<each\x20:of=\x22defBuckets\x22\x20let:item=\x22b\x22\x20let:index=\x22i\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:6px;\x20align-items:center;\x20margin-bottom:4px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<select\x20style=\x22flex:1;\x22\x20@change=\x22onBucketSelect(i,\x20$el.value)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>—\x20none\x20—</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20as=\x22repeat\x22\x20:of=\x22bucketOptions\x22\x20let:item=\x22opt\x22\x20:value=\x22opt.id\x22\x20:selected=\x22opt.id\x20===\x20b.id\x22>{{\x20opt.id\x20}}</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22__create__\x22>+\x20Create\x20bucket…</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20style=\x22width:72px;\x22\x20type=\x22number\x22\x20min=\x221\x22\x20placeholder=\x22tokens\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22b.tokens\x22\x20@input=\x22setBucketTokens(i,\x20$el.value)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x22\x20@click=\x22removeBucket(i)\x22\x20title=\x22Remove\x22>✕</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-ghost--sm\x22\x20@click=\x22addBucket()\x22>+\x20Add\x20bucket</button>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20schema\x20row\x20(only\x20shown\x20in\x20edit\x20mode\x20since\x20we\x20need\x20the\x20type\x20to\x20exist\x20first)\x20-->\x0a\x20\x20<if\x20:=\x22isEdit\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:10px;\x20padding:8px\x2012px;\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:6px;\x20background:var(--okdb-app-bg-deep);\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22flex:1;\x20font-size:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-weight:600;\x22>Payload\x20Schema</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22hasSchema\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22margin-left:8px;\x20font-size:10px;\x20padding:1px\x206px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2033%,\x20transparent);\x20color:var(--okdb-accent);\x22>defined</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22schemaEnforce\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22margin-left:4px;\x20font-size:10px;\x20padding:1px\x206px;\x20border-radius:999px;\x20border:1px\x20solid\x20#ef4444;\x20color:#ef4444;\x22>enforced</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!hasSchema\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22margin-left:8px;\x20opacity:.4;\x20font-size:11px;\x22>none</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x22\x20@click=\x22openSchema()\x22>Edit\x20schema…</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x20\x20<if\x20:=\x22!isEdit\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.45;\x20padding:0\x202px;\x22>Save\x20the\x20type\x20first,\x20then\x20edit\x20its\x20payload\x20schema.</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20footer\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:10px;\x20justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20<button\x20@click=\x22cancel()\x22>Cancel</button>\x0a\x20\x20\x20\x20<button\x20@click=\x22submit()\x22\x20:disabled=\x22!id.trim()\x20||\x20busy\x22>{{\x20isEdit\x20?\x20\x27Save\x27\x20:\x20\x27Register\x27\x20}}</button>\x0a\x20\x20</div>\x0a\x0a</div>\x0a','1791132HwgGvk','21JxpYDM','defBackoff','defaults','ttl','init','keys','defBuckets','defDoneTtl','max'];_0x5661=function(){return _0x1563e8;};return _0x5661();}import _0x3abd41 from'@toolkit/elements/ok-icon.ok.js';import _0x39fd6b from'./create-bucket-modal.ok.js';import _0x4f764b from'../../db/modals/schema-edit-modal.ok.js';import _0x4c8c18 from'../../../stores/okdb-store.js';export default{'tag':_0x532046(0x20c),'dependencies':[_0x35d5cb,_0x3abd41,_0x39fd6b,_0x4f764b],'attr':{'modal':{},'jobType':{},'bucketOptions':{},'onDone':{}},'context':_0x3a98c5=>({'busy':!0x1,'id':'','status':_0x532046(0x1d1),'maxConcurrency':'','defMaxTries':'','defRetryDelay':'','defBackoff':'','defPriority':'','defTtl':'','defDoneTtl':'','defFailedTtl':'','defBuckets':[{'id':'','tokens':0x1}],'bucketOptions':[],get 'isEdit'(){const _0x2279d0=_0x532046;return!!_0x3a98c5[_0x2279d0(0x1f4)][_0x2279d0(0x1d4)];},get 'hasSchema'(){const _0x5db11b=_0x532046;return!!_0x3a98c5[_0x5db11b(0x1f4)][_0x5db11b(0x1d4)]?.[_0x5db11b(0x1e1)];},get 'schemaEnforce'(){const _0x8aac76=_0x532046;return _0x3a98c5[_0x8aac76(0x1f4)][_0x8aac76(0x1d4)]?.[_0x8aac76(0x1e1)]?.[_0x8aac76(0x1ec)]??!0x1;},'init'(){const _0x2c3db6=_0x532046;this[_0x2c3db6(0x216)]=Array[_0x2c3db6(0x1ed)](_0x3a98c5[_0x2c3db6(0x1f4)][_0x2c3db6(0x216)])?_0x3a98c5[_0x2c3db6(0x1f4)][_0x2c3db6(0x216)]:[];const _0xc2daab=_0x3a98c5['$attr'][_0x2c3db6(0x1d4)];if(!_0xc2daab)return;this['id']=_0xc2daab['id']??'',this[_0x2c3db6(0x1de)]=_0xc2daab[_0x2c3db6(0x1de)]??_0x2c3db6(0x1d1),this['maxConcurrency']=null!=_0xc2daab[_0x2c3db6(0x1d5)]?String(_0xc2daab[_0x2c3db6(0x1d5)]):'';const _0x93403e=_0xc2daab[_0x2c3db6(0x1fd)]??{};this[_0x2c3db6(0x1df)]=null!=_0x93403e['max_tries']?String(_0x93403e['max_tries']):'',this['defRetryDelay']=null!=_0x93403e[_0x2c3db6(0x1e5)]?String(_0x93403e[_0x2c3db6(0x1e5)]):'',this[_0x2c3db6(0x1fc)]=null!=_0x93403e['backoff_multiplier']?String(_0x93403e[_0x2c3db6(0x1f7)]):'',this[_0x2c3db6(0x1f6)]=null!=_0x93403e[_0x2c3db6(0x214)]?String(_0x93403e[_0x2c3db6(0x214)]):'',this[_0x2c3db6(0x1e6)]=null!=_0x93403e['ttl']?String(_0x93403e[_0x2c3db6(0x1fe)]):'',this['defDoneTtl']=null!=_0x93403e[_0x2c3db6(0x217)]?String(_0x93403e[_0x2c3db6(0x217)]):'',this[_0x2c3db6(0x1ee)]=null!=_0x93403e[_0x2c3db6(0x1e9)]?String(_0x93403e[_0x2c3db6(0x1e9)]):'',this[_0x2c3db6(0x201)]=Array['isArray'](_0x93403e['buckets'])&&_0x93403e[_0x2c3db6(0x1e3)][_0x2c3db6(0x1f1)]?_0x93403e[_0x2c3db6(0x1e3)][_0x2c3db6(0x206)](_0x5d3087=>({'id':_0x5d3087['id'],'tokens':_0x5d3087[_0x2c3db6(0x1cf)]??0x1})):[{'id':'','tokens':0x1}];},'parseOptInt'(_0x2c0024){const _0x593534=parseInt(_0x2c0024);return isNaN(_0x593534)?null:_0x593534;},'parseOptFloat'(_0x4c6d6a){const _0x28d9d8=parseFloat(_0x4c6d6a);return isNaN(_0x28d9d8)?null:_0x28d9d8;},async 'onBucketSelect'(_0x5b6050,_0x28277){const _0xd5b61f=_0x532046;if(_0xd5b61f(0x1dd)===_0x28277){const _0x31e104=this;await _0x3a98c5[_0xd5b61f(0x204)][_0xd5b61f(0x1d2)]['modal']['open']({'owner':_0x3a98c5,'title':_0xd5b61f(0x213),'content':_0xd5b61f(0x20f),'context':_0x211a04=>({'modal':_0x211a04,'onDone':async _0x4755cb=>{const _0x1a65d8=_0xd5b61f;try{const _0x465c3b=await fetch(_0x4c8c18['apiBase']+_0x1a65d8(0x1f5)),_0x3efd1a=await _0x465c3b[_0x1a65d8(0x1e7)]();_0x31e104[_0x1a65d8(0x216)]=_0x3efd1a?.['result']??_0x3efd1a?.[_0x1a65d8(0x1d9)]??[];}catch{}_0x31e104[_0x1a65d8(0x201)]=_0x31e104[_0x1a65d8(0x201)]['map']((_0x440463,_0x482c77)=>_0x482c77===_0x5b6050?{..._0x440463,'id':_0x4755cb}:_0x440463);}})});}else this['defBuckets']=this['defBuckets'][_0xd5b61f(0x206)]((_0x338fc1,_0x4eb5da)=>_0x4eb5da===_0x5b6050?{..._0x338fc1,'id':_0x28277}:_0x338fc1);},'setBucketTokens'(_0x39d031,_0x1aea3b){const _0x317358=_0x532046,_0x444d8d=''===_0x1aea3b?0x1:Math[_0x317358(0x203)](0x1,parseInt(_0x1aea3b)||0x1);this[_0x317358(0x201)]=this[_0x317358(0x201)][_0x317358(0x206)]((_0x1e7361,_0x42d325)=>_0x42d325===_0x39d031?{..._0x1e7361,'tokens':_0x444d8d}:_0x1e7361);},'addBucket'(){const _0x19df48=_0x532046;this[_0x19df48(0x201)]=[...this[_0x19df48(0x201)],{'id':'','tokens':0x1}];},'removeBucket'(_0x3b931d){const _0x27ab05=_0x532046;this['defBuckets']=this[_0x27ab05(0x201)]['filter']((_0x236b67,_0x3244e1)=>_0x3244e1!==_0x3b931d);},'openSchema'(){const _0x94e04b=_0x532046,_0x451592=this['id']['trim']()||(_0x3a98c5['$attr']['jobType']?.['id']??'');if(!_0x451592)return void _0x3a98c5[_0x94e04b(0x204)][_0x94e04b(0x1d2)]?.[_0x94e04b(0x208)]?.[_0x94e04b(0x1db)]?.(_0x94e04b(0x1f3));const _0x5d2dbb=_0x4c8c18['apiBase']+_0x94e04b(0x20a)+encodeURIComponent(_0x451592)+'/schema',_0x13be42=_0x4c8c18['apiBase']+'/queue/job-type/'+encodeURIComponent(_0x451592)+_0x94e04b(0x1f0);_0x3a98c5[_0x94e04b(0x204)][_0x94e04b(0x1d2)]['modal'][_0x94e04b(0x1da)]({'owner':_0x3a98c5,'title':'Payload\x20Schema\x20·\x20'+_0x451592,'canDrag':!0x0,'content':_0x94e04b(0x1d7),'context':_0x25d3b5=>({'modal':_0x25d3b5,'type':_0x451592,'schema':_0x3a98c5['$attr'][_0x94e04b(0x1d4)]?.['payload_schema']??null,'saveUrl':_0x5d2dbb,'samplesUrl':_0x13be42,'onDone':()=>_0x3a98c5['$attr'][_0x94e04b(0x1ea)]?.()})});},async 'submit'(){const _0x77e21a=_0x532046,_0x1b786b=this['id']['trim']();if(!_0x1b786b)return void _0x3a98c5['$ok']['shared']?.[_0x77e21a(0x208)]?.['error']?.(_0x77e21a(0x1d3));const _0x1859cc=this[_0x77e21a(0x201)]['filter'](_0x421aae=>_0x421aae['id'])[_0x77e21a(0x206)](_0x136779=>({'id':_0x136779['id'],'tokens':_0x136779['tokens']||0x1})),_0x4f091d={'status':this[_0x77e21a(0x1de)]},_0x37f599=this[_0x77e21a(0x215)](this['maxConcurrency']);null!=_0x37f599&&(_0x4f091d[_0x77e21a(0x1d5)]=_0x37f599);const _0x39d23e={},_0x92b073=this[_0x77e21a(0x215)](this[_0x77e21a(0x1df)]);null!=_0x92b073&&(_0x39d23e['max_tries']=_0x92b073);const _0x527511=this[_0x77e21a(0x215)](this['defRetryDelay']);null!=_0x527511&&(_0x39d23e['retry_delay']=_0x527511);const _0x2dc911=this['parseOptFloat'](this['defBackoff']);null!=_0x2dc911&&(_0x39d23e[_0x77e21a(0x1f7)]=_0x2dc911);const _0x156a22=this[_0x77e21a(0x215)](this['defPriority']);null!=_0x156a22&&(_0x39d23e['priority']=_0x156a22);const _0x46b103=this[_0x77e21a(0x215)](this['defTtl']);null!=_0x46b103&&(_0x39d23e['ttl']=_0x46b103);const _0x1828e1=this[_0x77e21a(0x215)](this[_0x77e21a(0x202)]);null!=_0x1828e1&&(_0x39d23e[_0x77e21a(0x217)]=_0x1828e1);const _0x350cf6=this[_0x77e21a(0x215)](this['defFailedTtl']);null!=_0x350cf6&&(_0x39d23e['failed_ttl']=_0x350cf6),_0x1859cc[_0x77e21a(0x1f1)]&&(_0x39d23e['buckets']=_0x1859cc),Object[_0x77e21a(0x200)](_0x39d23e)['length']&&(_0x4f091d[_0x77e21a(0x1fd)]=_0x39d23e),this['busy']=!0x0;try{const _0x39477f=this[_0x77e21a(0x1e0)]?_0x4c8c18[_0x77e21a(0x1f2)]+'/queue/job-type/'+encodeURIComponent(_0x1b786b):_0x4c8c18[_0x77e21a(0x1f2)]+_0x77e21a(0x1d0),_0x493dd9=this[_0x77e21a(0x1e0)]?_0x77e21a(0x209):_0x77e21a(0x20e),_0x28ed7b=this[_0x77e21a(0x1e0)]?_0x4f091d:{'id':_0x1b786b,..._0x4f091d};if(!(await fetch(_0x39477f,{'method':_0x493dd9,'headers':{'Content-Type':_0x77e21a(0x1f8)},'body':JSON[_0x77e21a(0x1e4)](_0x28ed7b)}))['ok'])throw new Error(_0x77e21a(0x205));await _0x3a98c5['$attr']['modal'][_0x77e21a(0x20d)](),await _0x3a98c5[_0x77e21a(0x1f4)]['onDone']?.();}catch{_0x3a98c5[_0x77e21a(0x204)][_0x77e21a(0x1d2)]?.['toast']?.[_0x77e21a(0x1db)]?.(_0x77e21a(0x1ef));}finally{this['busy']=!0x1;}},'cancel'(){const _0x282f08=_0x532046;_0x3a98c5[_0x282f08(0x1f4)]['modal'][_0x282f08(0x20d)]();}}),'mount'(){const _0x32a44a=_0x532046;this[_0x32a44a(0x1ff)]();},'template':_0x532046(0x1f9),'style':_0x532046(0x20b)};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const _0x4c3a2c=_0x522b;(function(_0x5c36ec,_0x274104){const _0x50f99a=_0x522b,_0x4e0c07=_0x5c36ec();while(!![]){try{const _0x2fd2ae=-parseInt(_0x50f99a(0x110))/0x1+-parseInt(_0x50f99a(0x118))/0x2+parseInt(_0x50f99a(0x113))/0x3*(-parseInt(_0x50f99a(0xf2))/0x4)+parseInt(_0x50f99a(0x100))/0x5*(-parseInt(_0x50f99a(0x11d))/0x6)+parseInt(_0x50f99a(0x115))/0x7+-parseInt(_0x50f99a(0xf5))/0x8*(parseInt(_0x50f99a(0x12a))/0x9)+parseInt(_0x50f99a(0xef))/0xa*(parseInt(_0x50f99a(0x121))/0xb);if(_0x2fd2ae===_0x274104)break;else _0x4e0c07['push'](_0x4e0c07['shift']());}catch(_0x5397a9){_0x4e0c07['push'](_0x4e0c07['shift']());}}}(_0x2148,0xcd016));import _0x19c300 from'../../../components/ok-cron-input.ok.js';function _0x2148(){const _0x3ea9da=['form-change','open','dispatchEvent','when','ok-job-form','initialType','_populateFromJob','now','asap','/queue/buckets','backoff_multiplier','_emitChange','__create__','payloadInit','apiBase','973742QFBEYd','$ok','tags','24WJcjLu','filter','4868360BhbaFW','buckets','.mode-btn{font-size:11px;padding:2px\x208px;opacity:.6;border-radius:4px}.mode-btn--on{opacity:1;background:color-mix(in\x20srgb,var(--okdb-accent)\x2013%,transparent);border-color:color-mix(in\x20srgb,var(--okdb-accent)\x2033%,transparent);color:var(--okdb-accent)}.btn-ghost{background:0\x200;border:1px\x20solid\x20var(--okdb-app-border);border-radius:5px;color:inherit;cursor:pointer;opacity:.6;padding:2px\x208px;font-size:12px}.btn-ghost:hover{opacity:1;border-color:color-mix(in\x20srgb,var(--okdb-accent)\x2033%,transparent)}.btn-ghost--sm{font-size:11px;padding:1px\x207px}','548038zRzzQQ','bucketOptions','loadBuckets','getWhen','data','99714nqVxma','whenMode','toISOString','idempotency_key','105248viwePr','$attr','priority','whenTs','length','getTime','slice','type','whenDatetime','9TRlemt','bucket_tokens','maxTries','job','bucket','payload','5990eXjjZr','trim','isArray','768748Uvfops','\x0a<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:10px;\x22>\x0a\x0a\x20\x20<!--\x20Row\x201:\x20type\x20+\x20priority\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Type</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20placeholder=\x22e.g.\x20email.send\x22\x20:value=\x22type\x22\x20@input=\x22type\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22width:120px;\x22><label>Priority</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20placeholder=\x220\x22\x20:value=\x22priority\x22\x20@input=\x22priority\x20=\x20Number($el.value)\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Row\x202:\x20tags\x20+\x20idempotency\x20key\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Tags</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20placeholder=\x22comma\x20separated\x22\x20:value=\x22tags\x22\x20@input=\x22tags\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>Idempotency\x20Key</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20placeholder=\x22optional\x20—\x20prevents\x20duplicate\x20jobs\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22idempotencyKey\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22idempotencyKey\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Buckets\x20-->\x0a\x20\x20<div\x20class=\x22field\x22>\x0a\x20\x20\x20\x20<label>Buckets\x20<span\x20style=\x22opacity:.4;\x20font-weight:400;\x20font-size:11px;\x22>(rate\x20limiting)</span></label>\x0a\x20\x20\x20\x20<each\x20:of=\x22buckets\x22\x20let:item=\x22b\x22\x20let:index=\x22i\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:6px;\x20align-items:center;\x20margin-bottom:4px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<select\x20style=\x22flex:1;\x22\x20@change=\x22onBucketSelect(i,\x20$el.value)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>—\x20none\x20—</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20as=\x22repeat\x22\x20:of=\x22bucketOptions\x22\x20let:item=\x22opt\x22\x20:value=\x22opt.id\x22\x20:selected=\x22opt.id\x20===\x20b.id\x22>{{\x20opt.id\x20}}</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22__create__\x22>+\x20Create\x20bucket…</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20style=\x22width:72px;\x22\x20type=\x22number\x22\x20min=\x221\x22\x20placeholder=\x22tokens\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22b.tokens\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22setBucketTokens(i,\x20$el.value)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x22\x20@click=\x22removeBucket(i)\x22\x20title=\x22Remove\x22>✕</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-ghost--sm\x22\x20@click=\x22addBucket()\x22\x20style=\x22margin-top:2px;\x22>+\x20Add\x20bucket</button>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Row\x203:\x20when\x20+\x20max\x20tries\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>When</label>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:4px;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22whenMode===\x27asap\x27\x20?\x20\x27mode-btn\x20mode-btn--on\x27\x20:\x20\x27mode-btn\x27\x22\x20@click=\x22whenMode=\x27asap\x27\x22>ASAP</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22whenMode===\x27datetime\x27\x20?\x20\x27mode-btn\x20mode-btn--on\x27\x20:\x20\x27mode-btn\x27\x22\x20@click=\x22whenMode=\x27datetime\x27\x22>Date</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22whenMode===\x27timestamp\x27\x20?\x20\x27mode-btn\x20mode-btn--on\x27\x20:\x20\x27mode-btn\x27\x22\x20@click=\x22whenMode=\x27timestamp\x27\x22>TS</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22whenMode\x20===\x20\x27datetime\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22datetime-local\x22\x20style=\x22flex:1;\x22\x20:value=\x22whenDatetime\x22\x20@input=\x22whenDatetime\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22whenMode\x20===\x20\x27timestamp\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20style=\x22flex:1;\x22\x20placeholder=\x22ms\x20timestamp\x22\x20:value=\x22whenTs\x22\x20@input=\x22whenTs\x20=\x20$el.value\x20===\x20\x27\x27\x20?\x20null\x20:\x20Number($el.value)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22whenMode\x20===\x20\x27asap\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.5;\x20font-size:12px;\x20padding:0\x208px;\x22>Run\x20immediately</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22width:120px;\x22><label>Max\x20tries</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20placeholder=\x22unlimited\x22\x20:value=\x22maxTries\x22\x20@input=\x22maxTries\x20=\x20$el.value\x20===\x20\x27\x27\x20?\x20null\x20:\x20Number($el.value)\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Row\x204:\x20retry\x20delay\x20+\x20backoff\x20+\x20cron\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Retry\x20delay\x20(ms)</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20placeholder=\x220\x22\x20:value=\x22retryDelay\x22\x20@input=\x22retryDelay\x20=\x20Number($el.value)\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22width:120px;\x22><label>Backoff\x20multiplier</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20step=\x220.1\x22\x20placeholder=\x221\x22\x20:value=\x22backoff\x22\x20@input=\x22backoff\x20=\x20Number($el.value)\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Cron</label>\x0a\x20\x20\x20\x20\x20\x20<ok-cron-input\x20:value=\x22cron\x22\x20placeholder=\x22optional\x22\x20@change=\x22cron\x20=\x20$event.detail\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Payload\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20<span\x20style=\x22opacity:.7;\x20font-size:12px;\x22>Payload</span>\x0a\x20\x20\x20\x20<ok-json-input\x0a\x20\x20\x20\x20\x20\x20mode=\x22textarea\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22height:260px;\x22\x0a\x20\x20\x20\x20\x20\x20:value=\x22payloadInit\x22\x0a\x20\x20\x20\x20\x20\x20@edit=\x22payload\x20=\x20$event.detail\x22\x0a\x20\x20\x20\x20/>\x0a\x20\x20</div>\x0a\x0a</div>\x0a','idempotencyKey','11644912srmWES','retry_delay','join','modal','tokens','cron','backoff','datetime','map','retryDelay','shared','405yfGVrc'];_0x2148=function(){return _0x3ea9da;};return _0x2148();}import _0x4a1e03 from'../../../components/ok-json-input.ok.js';import _0x565a0b from'../modals/create-bucket-modal.ok.js';function _0x522b(_0x416b0a,_0x340a4b){_0x416b0a=_0x416b0a-0xeb;const _0x2148b5=_0x2148();let _0x522ba0=_0x2148b5[_0x416b0a];return _0x522ba0;}import _0x2093e4 from'../../../stores/okdb-store.js';export default{'tag':_0x4c3a2c(0x105),'dependencies':[_0x19c300,_0x4a1e03,_0x565a0b],'attr':{'job':{},'initialType':{}},'context':_0x751829=>({'type':'','payloadInit':{},'payload':{},'when':null,'whenMode':'asap','whenDatetime':'','whenTs':null,'priority':0x0,'maxTries':null,'retryDelay':0x0,'backoff':0x1,'tags':'','buckets':[],'cron':'','idempotencyKey':'','bucketOptions':[],async 'loadBuckets'(){const _0x5d1320=_0x4c3a2c;try{const _0x4b3875=await fetch(_0x2093e4[_0x5d1320(0x10f)]+_0x5d1320(0x10a)),_0x1b0871=await _0x4b3875['json']();this[_0x5d1320(0x119)]=_0x1b0871?.[_0x5d1320(0x11c)]??[];}catch{this[_0x5d1320(0x119)]=[];}},async 'onBucketSelect'(_0x254899,_0x13da33){const _0x2a8b1d=_0x4c3a2c;if(_0x2a8b1d(0x10d)===_0x13da33){const _0x4f0eb5=this;await _0x751829[_0x2a8b1d(0x111)][_0x2a8b1d(0xff)][_0x2a8b1d(0xf8)][_0x2a8b1d(0x102)]({'owner':_0x751829,'title':'Add\x20Token\x20Bucket','content':'<create-bucket-modal\x20:modal=\x22modal\x22\x20:on-done=\x22onDone\x22\x20/>','context':_0xa442d3=>({'modal':_0xa442d3,'onDone':async _0x1b915e=>{const _0x55a3cb=_0x2a8b1d;await _0x4f0eb5[_0x55a3cb(0x11a)](),_0x4f0eb5[_0x55a3cb(0x116)]=_0x4f0eb5['buckets'][_0x55a3cb(0xfd)]((_0x2964b5,_0x4c46b7)=>_0x4c46b7===_0x254899?{..._0x2964b5,'id':_0x1b915e}:_0x2964b5);}})});}else this[_0x2a8b1d(0x116)]=this[_0x2a8b1d(0x116)][_0x2a8b1d(0xfd)]((_0x3beb73,_0x4ad712)=>_0x4ad712===_0x254899?{..._0x3beb73,'id':_0x13da33}:_0x3beb73);},'setBucketTokens'(_0x13cb90,_0x45f511){const _0x4a2f48=_0x4c3a2c,_0x2f0a8d=''===_0x45f511?0x1:Math['max'](0x1,parseInt(_0x45f511)||0x1);this[_0x4a2f48(0x116)]=this[_0x4a2f48(0x116)][_0x4a2f48(0xfd)]((_0x645b27,_0x4e20a3)=>_0x4e20a3===_0x13cb90?{..._0x645b27,'tokens':_0x2f0a8d}:_0x645b27);},'addBucket'(){const _0x2cf01c=_0x4c3a2c;this[_0x2cf01c(0x116)]=[...this[_0x2cf01c(0x116)],{'id':'','tokens':0x1}];},'removeBucket'(_0x560e8e){const _0x123205=_0x4c3a2c;this[_0x123205(0x116)]=this[_0x123205(0x116)][_0x123205(0x114)]((_0x2677d1,_0x34db8d)=>_0x34db8d!==_0x560e8e);},'getWhen'(){const _0x153230=_0x4c3a2c;if(_0x153230(0x109)===this['whenMode'])return null;if(_0x153230(0xfc)===this['whenMode']){const _0x55d48c=new Date(this['whenDatetime']);return isNaN(_0x55d48c[_0x153230(0x126)]())?null:_0x55d48c[_0x153230(0x126)]();}return this[_0x153230(0x124)];},'_parseTags'(_0x3202dc){const _0x27405f=_0x4c3a2c;if(!_0x3202dc)return;const _0x17ba96=String(_0x3202dc)['split'](',')[_0x27405f(0xfd)](_0x43a0ec=>_0x43a0ec['trim']())[_0x27405f(0x114)](Boolean);return _0x17ba96[_0x27405f(0x125)]?_0x17ba96:void 0x0;},'_emitChange'(){const _0x289c55=_0x4c3a2c,_0x128441=this[_0x289c55(0x11b)](),_0x50e58e=String(this[_0x289c55(0xfa)]||'')[_0x289c55(0xf0)]();_0x751829['$el'][_0x289c55(0x103)](new CustomEvent(_0x289c55(0x101),{'bubbles':!0x1,'detail':{'type':String(this['type']||'')[_0x289c55(0xf0)](),'payload':this[_0x289c55(0xee)],'priority':Number(this[_0x289c55(0x123)])||0x0,'retry_delay':Number(this['retryDelay'])||0x0,'backoff_multiplier':Number(this[_0x289c55(0xfb)])||0x1,'max_tries':null!==this[_0x289c55(0xeb)]&&''!==this['maxTries']?Number(this[_0x289c55(0xeb)]):null,'buckets':this[_0x289c55(0x116)][_0x289c55(0x114)](_0x19c36f=>_0x19c36f['id'])[_0x289c55(0xfd)](_0xa18a95=>({'id':_0xa18a95['id'],'tokens':_0xa18a95[_0x289c55(0xf9)]||0x1})),'when':_0x128441,'cron':_0x50e58e||null,'tags':this['_parseTags'](this['tags']),'idempotency_key':this[_0x289c55(0xf4)]||null}}));},'_populateFromJob'(_0xd4b1ef){const _0x57e41c=_0x4c3a2c;if(!_0xd4b1ef)return this[_0x57e41c(0x128)]='',this[_0x57e41c(0x10e)]={},this[_0x57e41c(0xee)]={},this[_0x57e41c(0x104)]=null,this[_0x57e41c(0x11e)]='asap',this['whenDatetime']='',this[_0x57e41c(0x124)]=null,this[_0x57e41c(0x123)]=0x0,this['maxTries']=null,this[_0x57e41c(0xfe)]=0x0,this[_0x57e41c(0xfb)]=0x1,this[_0x57e41c(0x112)]='',this[_0x57e41c(0x116)]=[{'id':'','tokens':0x1}],this[_0x57e41c(0xfa)]='',this[_0x57e41c(0xf4)]='',void this[_0x57e41c(0x10c)]();this[_0x57e41c(0x128)]=_0xd4b1ef?.[_0x57e41c(0x128)]??'',this[_0x57e41c(0x10e)]=_0xd4b1ef?.[_0x57e41c(0xee)]??{},this[_0x57e41c(0xee)]=_0xd4b1ef?.[_0x57e41c(0xee)]??{},this[_0x57e41c(0x104)]=_0xd4b1ef?.[_0x57e41c(0x104)]??null,this[_0x57e41c(0x123)]=_0xd4b1ef?.[_0x57e41c(0x123)]??0x0,this[_0x57e41c(0xeb)]=_0xd4b1ef?.['max_tries']??null,this[_0x57e41c(0xfe)]=_0xd4b1ef?.[_0x57e41c(0xf6)]??0x0,this[_0x57e41c(0xfb)]=_0xd4b1ef?.[_0x57e41c(0x10b)]??0x1,this[_0x57e41c(0x112)]=Array[_0x57e41c(0xf1)](_0xd4b1ef?.['tags'])?_0xd4b1ef[_0x57e41c(0x112)][_0x57e41c(0xf7)](',\x20'):'',this[_0x57e41c(0xfa)]=_0xd4b1ef?.['cron']??'',this['idempotencyKey']=_0xd4b1ef?.[_0x57e41c(0x120)]||'',_0xd4b1ef?.[_0x57e41c(0x104)]&&_0xd4b1ef[_0x57e41c(0x104)]>Date[_0x57e41c(0x108)]()-0x3e8?(this[_0x57e41c(0x11e)]='timestamp',this['whenDatetime']=new Date(_0xd4b1ef['when'])[_0x57e41c(0x11f)]()[_0x57e41c(0x127)](0x0,0x10),this[_0x57e41c(0x124)]=_0xd4b1ef[_0x57e41c(0x104)]):(this['whenMode']=_0x57e41c(0x109),this[_0x57e41c(0x129)]='',this[_0x57e41c(0x124)]=null),Array[_0x57e41c(0xf1)](_0xd4b1ef?.['buckets'])&&_0xd4b1ef[_0x57e41c(0x116)][_0x57e41c(0x125)]>0x0?this[_0x57e41c(0x116)]=_0xd4b1ef[_0x57e41c(0x116)][_0x57e41c(0xfd)](_0x2c1b4a=>({'id':_0x2c1b4a['id'],'tokens':_0x2c1b4a['tokens']??0x1})):this[_0x57e41c(0x116)]=_0xd4b1ef?.[_0x57e41c(0xed)]?[{'id':_0xd4b1ef[_0x57e41c(0xed)],'tokens':_0xd4b1ef[_0x57e41c(0x12b)]??0x1}]:[],this[_0x57e41c(0x10c)]();}}),async 'mount'(_0x3eb8f2){const _0x35b3c6=_0x4c3a2c;await this['loadBuckets'](),this['_populateFromJob'](_0x3eb8f2['$attr'][_0x35b3c6(0xec)]??null),_0x3eb8f2[_0x35b3c6(0x122)][_0x35b3c6(0x106)]&&(this[_0x35b3c6(0x128)]=_0x3eb8f2[_0x35b3c6(0x122)][_0x35b3c6(0x106)]),setTimeout(()=>this[_0x35b3c6(0x10c)](),0x0);},'watch':{'job'(_0x35906b){const _0x58bcd1=_0x4c3a2c;this[_0x58bcd1(0x107)](_0x35906b);},'type'(){const _0x501695=_0x4c3a2c;this[_0x501695(0x10c)]();},'payload'(){this['_emitChange']();},'priority'(){const _0x74d88c=_0x4c3a2c;this[_0x74d88c(0x10c)]();},'retryDelay'(){const _0x14cdd0=_0x4c3a2c;this[_0x14cdd0(0x10c)]();},'backoff'(){const _0x13780a=_0x4c3a2c;this[_0x13780a(0x10c)]();},'maxTries'(){this['_emitChange']();},'buckets'(){this['_emitChange']();},'whenMode'(){this['_emitChange']();},'whenDatetime'(){const _0x2797dc=_0x4c3a2c;this[_0x2797dc(0x10c)]();},'whenTs'(){const _0x309213=_0x4c3a2c;this[_0x309213(0x10c)]();},'cron'(){const _0x4c6c32=_0x4c3a2c;this[_0x4c6c32(0x10c)]();},'tags'(){const _0x426003=_0x4c3a2c;this[_0x426003(0x10c)]();},'idempotencyKey'(){this['_emitChange']();}},'template':_0x4c3a2c(0xf3),'style':_0x4c3a2c(0x117)};
|
|
1
|
+
const _0x2ba42f=_0x5b73;(function(_0x5a9248,_0x87baa){const _0x42ea17=_0x5b73,_0x32ac08=_0x5a9248();while(!![]){try{const _0x572f8f=-parseInt(_0x42ea17(0x12b))/0x1+parseInt(_0x42ea17(0x114))/0x2+-parseInt(_0x42ea17(0x118))/0x3*(parseInt(_0x42ea17(0x115))/0x4)+parseInt(_0x42ea17(0x100))/0x5*(-parseInt(_0x42ea17(0x127))/0x6)+-parseInt(_0x42ea17(0x137))/0x7+-parseInt(_0x42ea17(0x10a))/0x8+-parseInt(_0x42ea17(0x106))/0x9*(-parseInt(_0x42ea17(0x12f))/0xa);if(_0x572f8f===_0x87baa)break;else _0x32ac08['push'](_0x32ac08['shift']());}catch(_0x1f0582){_0x32ac08['push'](_0x32ac08['shift']());}}}(_0x4af3,0x456f9));import _0x3d7db6 from'../../../components/ok-cron-input.ok.js';import _0x512a2f from'../../../components/ok-json-input.ok.js';import _0x54cb02 from'../modals/create-bucket-modal.ok.js';import _0x54415d from'../../../stores/okdb-store.js';export default{'tag':_0x2ba42f(0x11c),'dependencies':[_0x3d7db6,_0x512a2f,_0x54cb02],'attr':{'job':{},'initialType':{}},'context':_0x9022ea=>({'type':'','payloadInit':{},'payload':{},'when':null,'whenMode':_0x2ba42f(0x129),'whenDatetime':'','whenTs':null,'priority':0x0,'maxTries':null,'retryDelay':0x0,'backoff':0x1,'tags':'','buckets':[],'cron':'','idempotencyKey':'','bucketOptions':[],async 'loadBuckets'(){const _0x5524d5=_0x2ba42f;try{const _0xb9d423=await fetch(_0x54415d[_0x5524d5(0x10d)]+_0x5524d5(0x109)),_0x2e56af=await _0xb9d423[_0x5524d5(0x123)]();this[_0x5524d5(0x125)]=_0x2e56af?.[_0x5524d5(0x130)]??[];}catch{this['bucketOptions']=[];}},async 'onBucketSelect'(_0x4534ea,_0x114887){const _0x5147c6=_0x2ba42f;if(_0x5147c6(0x11f)===_0x114887){const _0x2bba3e=this;await _0x9022ea['$ok'][_0x5147c6(0x126)][_0x5147c6(0x117)]['open']({'owner':_0x9022ea,'title':_0x5147c6(0x13c),'content':_0x5147c6(0x11d),'context':_0x2dddba=>({'modal':_0x2dddba,'onDone':async _0x13d217=>{const _0x181183=_0x5147c6;await _0x2bba3e[_0x181183(0xf9)](),_0x2bba3e[_0x181183(0x139)]=_0x2bba3e['buckets'][_0x181183(0x104)]((_0x161e6e,_0x4aa757)=>_0x4aa757===_0x4534ea?{..._0x161e6e,'id':_0x13d217}:_0x161e6e);}})});}else this['buckets']=this[_0x5147c6(0x139)]['map']((_0x20366e,_0xaaf1e)=>_0xaaf1e===_0x4534ea?{..._0x20366e,'id':_0x114887}:_0x20366e);},'setBucketTokens'(_0x334c70,_0x3ec96a){const _0xa9ce44=_0x2ba42f,_0x593594=''===_0x3ec96a?0x1:Math[_0xa9ce44(0x116)](0x1,parseInt(_0x3ec96a)||0x1);this[_0xa9ce44(0x139)]=this[_0xa9ce44(0x139)][_0xa9ce44(0x104)]((_0x16fb3f,_0x40f4db)=>_0x40f4db===_0x334c70?{..._0x16fb3f,'tokens':_0x593594}:_0x16fb3f);},'addBucket'(){const _0xdb9f4f=_0x2ba42f;this[_0xdb9f4f(0x139)]=[...this[_0xdb9f4f(0x139)],{'id':'','tokens':0x1}];},'removeBucket'(_0x5b547c){const _0x29c81c=_0x2ba42f;this[_0x29c81c(0x139)]=this['buckets'][_0x29c81c(0xff)]((_0x5ba551,_0x5c7811)=>_0x5c7811!==_0x5b547c);},'getWhen'(){const _0xd8747f=_0x2ba42f;if('asap'===this[_0xd8747f(0x11e)])return null;if(_0xd8747f(0x122)===this['whenMode']){const _0x512a0c=new Date(this['whenDatetime']);return isNaN(_0x512a0c[_0xd8747f(0x10f)]())?null:_0x512a0c[_0xd8747f(0x10f)]();}return this[_0xd8747f(0x12c)];},'_parseTags'(_0x3fff93){const _0x157e07=_0x2ba42f;if(!_0x3fff93)return;const _0x4f0eeb=String(_0x3fff93)[_0x157e07(0x10e)](',')[_0x157e07(0x104)](_0xfd4ac1=>_0xfd4ac1[_0x157e07(0x108)]())['filter'](Boolean);return _0x4f0eeb[_0x157e07(0x107)]?_0x4f0eeb:void 0x0;},'_emitChange'(){const _0x3133bb=_0x2ba42f,_0x15f8a8=this[_0x3133bb(0x11b)](),_0x31a0fd=String(this[_0x3133bb(0x136)]||'')['trim']();_0x9022ea[_0x3133bb(0x13b)][_0x3133bb(0xfa)](new CustomEvent(_0x3133bb(0x12d),{'bubbles':!0x1,'detail':{'type':String(this['type']||'')['trim'](),'payload':this[_0x3133bb(0x131)],'priority':Number(this[_0x3133bb(0xfe)])||0x0,'retry_delay':Number(this[_0x3133bb(0x138)])||0x0,'backoff_multiplier':Number(this[_0x3133bb(0x134)])||0x1,'max_tries':null!==this[_0x3133bb(0x12e)]&&''!==this[_0x3133bb(0x12e)]?Number(this[_0x3133bb(0x12e)]):null,'buckets':this[_0x3133bb(0x139)]['filter'](_0x4031fa=>_0x4031fa['id'])[_0x3133bb(0x104)](_0x446ff5=>({'id':_0x446ff5['id'],'tokens':_0x446ff5['tokens']||0x1})),'when':_0x15f8a8,'cron':_0x31a0fd||null,'tags':this[_0x3133bb(0x111)](this[_0x3133bb(0x105)]),'idempotency_key':this[_0x3133bb(0xfc)]||null}}));},'_populateFromJob'(_0x455b84){const _0x212575=_0x2ba42f;if(!_0x455b84)return this[_0x212575(0x119)]='',this[_0x212575(0x120)]={},this['payload']={},this[_0x212575(0x13a)]=null,this[_0x212575(0x11e)]='asap',this[_0x212575(0x12a)]='',this['whenTs']=null,this['priority']=0x0,this[_0x212575(0x12e)]=null,this[_0x212575(0x138)]=0x0,this[_0x212575(0x134)]=0x1,this[_0x212575(0x105)]='',this[_0x212575(0x139)]=[{'id':'','tokens':0x1}],this[_0x212575(0x136)]='',this[_0x212575(0xfc)]='',void this[_0x212575(0xfd)]();this[_0x212575(0x119)]=_0x455b84?.['type']??'',this[_0x212575(0x120)]=_0x455b84?.[_0x212575(0x131)]??{},this[_0x212575(0x131)]=_0x455b84?.[_0x212575(0x131)]??{},this['when']=_0x455b84?.[_0x212575(0x13a)]??null,this[_0x212575(0xfe)]=_0x455b84?.[_0x212575(0xfe)]??0x0,this['maxTries']=_0x455b84?.[_0x212575(0x110)]??null,this[_0x212575(0x138)]=_0x455b84?.[_0x212575(0x124)]??0x0,this['backoff']=_0x455b84?.['backoff_multiplier']??0x1,this[_0x212575(0x105)]=Array['isArray'](_0x455b84?.[_0x212575(0x105)])?_0x455b84[_0x212575(0x105)][_0x212575(0x128)](',\x20'):'',this['cron']=_0x455b84?.[_0x212575(0x136)]??'',this['idempotencyKey']=_0x455b84?.[_0x212575(0x113)]||'',_0x455b84?.['when']&&_0x455b84[_0x212575(0x13a)]>Date[_0x212575(0x102)]()-0x3e8?(this['whenMode']=_0x212575(0x11a),this[_0x212575(0x12a)]=new Date(_0x455b84[_0x212575(0x13a)])[_0x212575(0x133)]()[_0x212575(0x135)](0x0,0x10),this[_0x212575(0x12c)]=_0x455b84[_0x212575(0x13a)]):(this[_0x212575(0x11e)]='asap',this[_0x212575(0x12a)]='',this[_0x212575(0x12c)]=null),Array[_0x212575(0x132)](_0x455b84?.[_0x212575(0x139)])&&_0x455b84[_0x212575(0x139)][_0x212575(0x107)]>0x0?this[_0x212575(0x139)]=_0x455b84[_0x212575(0x139)][_0x212575(0x104)](_0x4312d0=>({'id':_0x4312d0['id'],'tokens':_0x4312d0[_0x212575(0x121)]??0x1})):this[_0x212575(0x139)]=_0x455b84?.[_0x212575(0x10c)]?[{'id':_0x455b84['bucket'],'tokens':_0x455b84[_0x212575(0x101)]??0x1}]:[],this[_0x212575(0xfd)]();}}),async 'mount'(_0x35e4d){const _0x1443d4=_0x2ba42f;await this[_0x1443d4(0xf9)](),this['_populateFromJob'](_0x35e4d[_0x1443d4(0xfb)][_0x1443d4(0x103)]??null),_0x35e4d[_0x1443d4(0xfb)]['initialType']&&(this[_0x1443d4(0x119)]=_0x35e4d[_0x1443d4(0xfb)][_0x1443d4(0x10b)]),setTimeout(()=>this[_0x1443d4(0xfd)](),0x0);},'watch':{'job'(_0xbcf206){this['_populateFromJob'](_0xbcf206);},'type'(){const _0x14b25e=_0x2ba42f;this[_0x14b25e(0xfd)]();},'payload'(){this['_emitChange']();},'priority'(){const _0x1b8e64=_0x2ba42f;this[_0x1b8e64(0xfd)]();},'retryDelay'(){const _0x90a1fe=_0x2ba42f;this[_0x90a1fe(0xfd)]();},'backoff'(){const _0x4f1d45=_0x2ba42f;this[_0x4f1d45(0xfd)]();},'maxTries'(){this['_emitChange']();},'buckets'(){const _0x509045=_0x2ba42f;this[_0x509045(0xfd)]();},'whenMode'(){const _0x1c1ade=_0x2ba42f;this[_0x1c1ade(0xfd)]();},'whenDatetime'(){this['_emitChange']();},'whenTs'(){const _0x349673=_0x2ba42f;this[_0x349673(0xfd)]();},'cron'(){const _0x3512bb=_0x2ba42f;this[_0x3512bb(0xfd)]();},'tags'(){this['_emitChange']();},'idempotencyKey'(){const _0x2f369d=_0x2ba42f;this[_0x2f369d(0xfd)]();}},'template':_0x2ba42f(0x112),'style':'.mode-btn{font-size:11px;padding:2px\x208px;opacity:.6;border-radius:4px}.mode-btn--on{opacity:1;background:color-mix(in\x20srgb,var(--okdb-accent)\x2013%,transparent);border-color:color-mix(in\x20srgb,var(--okdb-accent)\x2033%,transparent);color:var(--okdb-accent)}.btn-ghost{background:0\x200;border:1px\x20solid\x20var(--okdb-app-border);border-radius:5px;color:inherit;cursor:pointer;opacity:.6;padding:2px\x208px;font-size:12px}.btn-ghost:hover{opacity:1;border-color:color-mix(in\x20srgb,var(--okdb-accent)\x2033%,transparent)}.btn-ghost--sm{font-size:11px;padding:1px\x207px}'};function _0x5b73(_0x30c4d3,_0x9cd7c1){_0x30c4d3=_0x30c4d3-0xf9;const _0x4af306=_0x4af3();let _0x5b7317=_0x4af306[_0x30c4d3];return _0x5b7317;}function _0x4af3(){const _0x2b2168=['whenDatetime','73559jqosIn','whenTs','form-change','maxTries','993470IDQXAW','data','payload','isArray','toISOString','backoff','slice','cron','1680406KqXzLq','retryDelay','buckets','when','$el','Add\x20Token\x20Bucket','loadBuckets','dispatchEvent','$attr','idempotencyKey','_emitChange','priority','filter','50dAhOaJ','bucket_tokens','now','job','map','tags','63VHTpSd','length','trim','/queue/buckets','2946712ezUVQX','initialType','bucket','apiBase','split','getTime','max_tries','_parseTags','\x0a<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:10px;\x22>\x0a\x0a\x20\x20<!--\x20Row\x201:\x20type\x20+\x20priority\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Type</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20placeholder=\x22e.g.\x20email.send\x22\x20:value=\x22type\x22\x20@input=\x22type\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22width:120px;\x22><label>Priority</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20placeholder=\x220\x22\x20:value=\x22priority\x22\x20@input=\x22priority\x20=\x20Number($el.value)\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Row\x202:\x20tags\x20+\x20idempotency\x20key\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Tags</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20placeholder=\x22comma\x20separated\x22\x20:value=\x22tags\x22\x20@input=\x22tags\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>Idempotency\x20Key</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20placeholder=\x22optional\x20—\x20prevents\x20duplicate\x20jobs\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22idempotencyKey\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22idempotencyKey\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Buckets\x20-->\x0a\x20\x20<div\x20class=\x22field\x22>\x0a\x20\x20\x20\x20<label>Buckets\x20<span\x20style=\x22opacity:.4;\x20font-weight:400;\x20font-size:11px;\x22>(rate\x20limiting)</span></label>\x0a\x20\x20\x20\x20<each\x20:of=\x22buckets\x22\x20let:item=\x22b\x22\x20let:index=\x22i\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:6px;\x20align-items:center;\x20margin-bottom:4px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<select\x20style=\x22flex:1;\x22\x20@change=\x22onBucketSelect(i,\x20$el.value)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>—\x20none\x20—</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20as=\x22repeat\x22\x20:of=\x22bucketOptions\x22\x20let:item=\x22opt\x22\x20:value=\x22opt.id\x22\x20:selected=\x22opt.id\x20===\x20b.id\x22>{{\x20opt.id\x20}}</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22__create__\x22>+\x20Create\x20bucket…</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20style=\x22width:72px;\x22\x20type=\x22number\x22\x20min=\x221\x22\x20placeholder=\x22tokens\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22b.tokens\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22setBucketTokens(i,\x20$el.value)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x22\x20@click=\x22removeBucket(i)\x22\x20title=\x22Remove\x22>✕</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-ghost--sm\x22\x20@click=\x22addBucket()\x22\x20style=\x22margin-top:2px;\x22>+\x20Add\x20bucket</button>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Row\x203:\x20when\x20+\x20max\x20tries\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>When</label>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:4px;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22whenMode===\x27asap\x27\x20?\x20\x27mode-btn\x20mode-btn--on\x27\x20:\x20\x27mode-btn\x27\x22\x20@click=\x22whenMode=\x27asap\x27\x22>ASAP</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22whenMode===\x27datetime\x27\x20?\x20\x27mode-btn\x20mode-btn--on\x27\x20:\x20\x27mode-btn\x27\x22\x20@click=\x22whenMode=\x27datetime\x27\x22>Date</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22whenMode===\x27timestamp\x27\x20?\x20\x27mode-btn\x20mode-btn--on\x27\x20:\x20\x27mode-btn\x27\x22\x20@click=\x22whenMode=\x27timestamp\x27\x22>TS</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22whenMode\x20===\x20\x27datetime\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22datetime-local\x22\x20style=\x22flex:1;\x22\x20:value=\x22whenDatetime\x22\x20@input=\x22whenDatetime\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22whenMode\x20===\x20\x27timestamp\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20style=\x22flex:1;\x22\x20placeholder=\x22ms\x20timestamp\x22\x20:value=\x22whenTs\x22\x20@input=\x22whenTs\x20=\x20$el.value\x20===\x20\x27\x27\x20?\x20null\x20:\x20Number($el.value)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22whenMode\x20===\x20\x27asap\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.5;\x20font-size:12px;\x20padding:0\x208px;\x22>Run\x20immediately</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22width:120px;\x22><label>Max\x20tries</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20placeholder=\x22unlimited\x22\x20:value=\x22maxTries\x22\x20@input=\x22maxTries\x20=\x20$el.value\x20===\x20\x27\x27\x20?\x20null\x20:\x20Number($el.value)\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Row\x204:\x20retry\x20delay\x20+\x20backoff\x20+\x20cron\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Retry\x20delay\x20(ms)</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20placeholder=\x220\x22\x20:value=\x22retryDelay\x22\x20@input=\x22retryDelay\x20=\x20Number($el.value)\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22width:120px;\x22><label>Backoff\x20multiplier</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20step=\x220.1\x22\x20placeholder=\x221\x22\x20:value=\x22backoff\x22\x20@input=\x22backoff\x20=\x20Number($el.value)\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Cron</label>\x0a\x20\x20\x20\x20\x20\x20<ok-cron-input\x20:value=\x22cron\x22\x20placeholder=\x22optional\x22\x20@change=\x22cron\x20=\x20$event.detail\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Payload\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20<span\x20style=\x22opacity:.7;\x20font-size:12px;\x22>Payload</span>\x0a\x20\x20\x20\x20<ok-json-input\x0a\x20\x20\x20\x20\x20\x20mode=\x22textarea\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22height:260px;\x22\x0a\x20\x20\x20\x20\x20\x20:value=\x22payloadInit\x22\x0a\x20\x20\x20\x20\x20\x20@edit=\x22payload\x20=\x20$event.detail\x22\x0a\x20\x20\x20\x20/>\x0a\x20\x20</div>\x0a\x0a</div>\x0a','idempotency_key','933922ByMxeB','20lyenLa','max','modal','39471cPzvSE','type','timestamp','getWhen','ok-job-form','<create-bucket-modal\x20:modal=\x22modal\x22\x20:on-done=\x22onDone\x22\x20/>','whenMode','__create__','payloadInit','tokens','datetime','json','retry_delay','bucketOptions','shared','78144kLXrWP','join','asap'];_0x4af3=function(){return _0x2b2168;};return _0x4af3();}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const _0x2e8eec=_0x4d13;(function(_0x510311,_0x59869f){const _0x235d7f=_0x4d13,_0x3c6792=_0x510311();while(!![]){try{const _0x3010ed=parseInt(_0x235d7f(0x1ac))/0x1*(-parseInt(_0x235d7f(0x1bd))/0x2)+parseInt(_0x235d7f(0x1bb))/0x3+-parseInt(_0x235d7f(0x1c8))/0x4*(-parseInt(_0x235d7f(0x1d0))/0x5)+-parseInt(_0x235d7f(0x1b7))/0x6*(-parseInt(_0x235d7f(0x1b8))/0x7)+parseInt(_0x235d7f(0x1bf))/0x8*(-parseInt(_0x235d7f(0x1d2))/0x9)+parseInt(_0x235d7f(0x1b9))/0xa+-parseInt(_0x235d7f(0x1bc))/0xb;if(_0x3010ed===_0x59869f)break;else _0x3c6792['push'](_0x3c6792['shift']());}catch(_0x727ea8){_0x3c6792['push'](_0x3c6792['shift']());}}}(_0xeaa5,0xbaa6f));import _0xcc7af5 from'../modals/edit-bucket-modal.ok.js';import _0x55b54f from'../../../stores/okdb-store.js';function _0x4d13(_0x101bdb,_0x4c7956){_0x101bdb=_0x101bdb-0x19e;const _0xeaa52a=_0xeaa5();let _0x4d13bd=_0xeaa52a[_0x101bdb];return _0x4d13bd;}export default{'tag':_0x2e8eec(0x1a4),'dependencies':[_0xcc7af5],'context':_0x5f48d4=>({'busy':!0x1,'buckets':[],'error':null,async 'load'(){const _0x44f72b=_0x2e8eec;this[_0x44f72b(0x19f)]=!0x0,this[_0x44f72b(0x1ab)]=null;try{const _0x314f3a=await fetch(_0x55b54f[_0x44f72b(0x1aa)]+_0x44f72b(0x1a7)),_0xcf05d1=await _0x314f3a[_0x44f72b(0x1b4)]();if(!_0x314f3a['ok'])throw new Error(_0xcf05d1?.[_0x44f72b(0x1ab)]?.['message']||_0x44f72b(0x1a8));this[_0x44f72b(0x1c7)]=_0xcf05d1[_0x44f72b(0x1a2)]??[];}catch(_0x104b59){this[_0x44f72b(0x1ab)]=_0x104b59?.[_0x44f72b(0x1ce)]||String(_0x104b59),this[_0x44f72b(0x1c7)]=[];}finally{this[_0x44f72b(0x19f)]=!0x1;}},async 'openCreate'(){const _0x3550ca=_0x2e8eec;await _0x5f48d4[_0x3550ca(0x1be)]['shared'][_0x3550ca(0x1c4)][_0x3550ca(0x1c2)]({'owner':_0x5f48d4,'title':'Add\x20Token\x20Bucket','content':_0x3550ca(0x1a9),'context':_0x5b8756=>({'modal':_0x5b8756,'editMode':!0x1,'initialForm':{},'onDone':async()=>{const _0x53556a=_0x3550ca;await this[_0x53556a(0x1a6)]();}})});},async 'openEdit'(_0x38f351){const _0x514bf3=_0x2e8eec;await _0x5f48d4[_0x514bf3(0x1be)][_0x514bf3(0x1d4)][_0x514bf3(0x1c4)]['open']({'owner':_0x5f48d4,'title':_0x514bf3(0x1b0),'content':'<edit-bucket-modal\x20:modal=\x22modal\x22\x20:edit-mode=\x22editMode\x22\x20:initial-form=\x22initialForm\x22\x20:on-done=\x22onDone\x22\x20/>','context':_0x3c3624=>({'modal':_0x3c3624,'editMode':!0x0,'initialForm':{'id':_0x38f351['id'],'capacity':_0x38f351['capacity'],'tokens':_0x38f351[_0x514bf3(0x1ad)],'refill_amount':_0x38f351[_0x514bf3(0x1cc)]??0x0,'refill_every':_0x38f351[_0x514bf3(0x1b1)]??0x0},'onDone':async()=>{await this['load']();}})});},async 'remove'(_0x2ba5a3){const _0x226eca=_0x2e8eec;if(await _0x5f48d4[_0x226eca(0x1be)][_0x226eca(0x1d4)][_0x226eca(0x1c4)][_0x226eca(0x1ba)](_0x226eca(0x1cb)+_0x2ba5a3['id']+'</b>\x22?'))try{if(!(await fetch(_0x55b54f[_0x226eca(0x1aa)]+_0x226eca(0x1c6)+encodeURIComponent(_0x2ba5a3['id']),{'method':'POST'}))['ok'])throw new Error(_0x226eca(0x1cf));_0x5f48d4[_0x226eca(0x1be)][_0x226eca(0x1d4)]?.[_0x226eca(0x1b2)]?.['info']?.('Deleted\x20\x22'+_0x2ba5a3['id']+'\x22'),await this[_0x226eca(0x1a6)]();}catch(_0x2decbe){_0x5f48d4[_0x226eca(0x1be)][_0x226eca(0x1d4)]?.['toast']?.[_0x226eca(0x1ab)]?.(_0x2decbe?.['message']||'Delete\x20failed');}},async 'refill'(_0x2e1f35){const _0x19005b=_0x2e8eec;try{if(!(await fetch(_0x55b54f[_0x19005b(0x1aa)]+_0x19005b(0x1a3)+encodeURIComponent(_0x2e1f35['id']),{'method':_0x19005b(0x1c1),'headers':{'Content-Type':_0x19005b(0x1c0)},'body':JSON[_0x19005b(0x1c3)]({'tokens':_0x2e1f35[_0x19005b(0x1b6)]})}))['ok'])throw new Error(_0x19005b(0x1cd));_0x5f48d4['$ok'][_0x19005b(0x1d4)]?.[_0x19005b(0x1b2)]?.[_0x19005b(0x1b3)]?.(_0x19005b(0x1b5)+_0x2e1f35['id']+'\x22'),await this[_0x19005b(0x1a6)]();}catch(_0x3aed6d){_0x5f48d4[_0x19005b(0x1be)][_0x19005b(0x1d4)]?.[_0x19005b(0x1b2)]?.['error']?.(_0x3aed6d?.[_0x19005b(0x1ce)]||_0x19005b(0x1cd));}},'tokenPct':_0x3cc8de=>_0x3cc8de[_0x2e8eec(0x1b6)]?Math[_0x2e8eec(0x1ca)](0x64,Math['round'](_0x3cc8de[_0x2e8eec(0x1ad)]/_0x3cc8de[_0x2e8eec(0x1b6)]*0x64)):0x0,'pctColor':_0x1c98bd=>_0x1c98bd>0x3c?'var(--okdb-success)':_0x1c98bd>0x19?_0x2e8eec(0x1d1):_0x2e8eec(0x1ae),'refillLabel'(_0x56fc2d){const _0x2eeccf=_0x2e8eec;if(!_0x56fc2d['refill_every']||!_0x56fc2d[_0x2eeccf(0x1cc)])return _0x2eeccf(0x1d3);const _0x3dab06=_0x56fc2d[_0x2eeccf(0x1b1)];let _0xbceb69;return _0xbceb69=_0x3dab06>=0x36ee80?(_0x3dab06/0x36ee80)[_0x2eeccf(0x1a1)](0x1)+'h':_0x3dab06>=0xea60?Math[_0x2eeccf(0x1a0)](_0x3dab06/0xea60)+'m':Math[_0x2eeccf(0x1a0)](_0x3dab06/0x3e8)+'s','+'+_0x56fc2d[_0x2eeccf(0x1cc)]+'\x20/\x20'+_0xbceb69;}}),async 'mount'(_0x316a55){const _0x29e46a=_0x2e8eec;await this[_0x29e46a(0x1a6)](),_0x316a55[_0x29e46a(0x19e)](()=>_0x316a55['$ok'][_0x29e46a(0x1af)][_0x29e46a(0x1c9)][_0x29e46a(0x1c5)],()=>this[_0x29e46a(0x1a6)]());},'template':_0x2e8eec(0x1a5)};function _0xeaa5(){const _0x5eb4b8=['tokens','var(--okdb-danger)','stores','Edit\x20Bucket','refill_every','toast','success','json','Refilled\x20\x22','capacity','6YFbTAF','8155483EcZUEY','14954100ZbTnVo','confirm','2035197fXrzzg','22988361DRDePh','2TYJhiB','$ok','6756976SECesD','application/json','POST','open','stringify','modal','selectedEnv','/queue/bucket/remove/','buckets','648fDxtPf','okdb','min','Delete\x20bucket\x20\x22<b>','refill_amount','Refill\x20failed','message','Delete\x20failed','35250DjTrbC','var(--okdb-warning)','9XrgEhO','No\x20refill','shared','$watch','busy','round','toFixed','data','/queue/bucket/update/','queue-buckets','\x0a<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:16px;\x20height:100%;\x20min-height:0;\x22>\x0a\x0a\x20\x20<!--\x20Toolbar\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22font-weight:600;\x20font-size:16px;\x22>Token\x20Buckets</div>\x0a\x20\x20\x20\x20<div\x20style=\x22margin-left:auto;\x20display:flex;\x20gap:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22load()\x22\x20:disabled=\x22busy\x22>↻\x20Refresh</button>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openCreate()\x22\x20style=\x22background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x2013%,\x20transparent);\x20border-color:var(--okdb-accent);\x20color:var(--okdb-accent);\x22>+\x20Add\x20Bucket</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<if\x20:=\x22error\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-danger);\x20font-size:13px;\x20padding:10px\x2012px;\x20border:1px\x20solid\x20var(--okdb-danger);\x20border-radius:8px;\x22>{{error}}</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Empty\x20state\x20-->\x0a\x20\x20<if\x20:=\x22!busy\x20&&\x20buckets.length\x20===\x200\x20&&\x20!error\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22opacity:.55;\x20font-size:13px;\x20line-height:1.8;\x20padding:16px\x200;\x22>\x0a\x20\x20\x20\x20\x20\x20No\x20token\x20buckets\x20defined.<br>\x0a\x20\x20\x20\x20\x20\x20Token\x20buckets\x20let\x20you\x20rate-limit\x20queue\x20job\x20processing\x20per\x20bucket\x20ID.\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Bucket\x20cards\x20-->\x0a\x20\x20<div\x20style=\x22display:grid;\x20grid-template-columns:repeat(auto-fill,minmax(280px,1fr));\x20gap:12px;\x20overflow:auto;\x20min-height:0;\x22>\x0a\x20\x20\x20\x20<for\x20:=\x22buckets\x22\x20let:b>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:#1e2326;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:1px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:12px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:14px\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:10px;\x0a\x20\x20\x20\x20\x20\x20\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Header\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-weight:600;\x20font-family:monospace;\x20font-size:13px;\x20flex:1;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{b.id}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openEdit(b)\x22\x20style=\x22font-size:11px;\x20padding:3px\x208px;\x20opacity:.8;\x22>Edit</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22remove(b)\x22\x20style=\x22font-size:11px;\x20padding:3px\x208px;\x20color:var(--okdb-danger);\x20opacity:.8;\x22>✕</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Token\x20bar\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20justify-content:space-between;\x20font-size:12px;\x20margin-bottom:4px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.7;\x22>Tokens</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22\x27color:\x27\x20+\x20pctColor(tokenPct(b))\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{b.tokens}}\x20/\x20{{b.capacity}}\x20({{tokenPct(b)}}%)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22height:6px;\x20background:var(--okdb-app-border);\x20border-radius:999px;\x20overflow:hidden;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:style=\x22\x27height:100%;\x20border-radius:999px;\x20width:\x27\x20+\x20tokenPct(b)\x20+\x20\x27%;\x20background:\x27\x20+\x20pctColor(tokenPct(b))\x20+\x20\x27;\x20transition:width\x200.3s;\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Stats\x20row\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:12px;\x20font-size:12px;\x20opacity:.75;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>Refill:\x20<b>{{refillLabel(b)}}</b></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Actions\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22refill(b)\x22\x20style=\x22font-size:11px;\x20flex:1;\x22\x20:disabled=\x22b.tokens\x20>=\x20b.capacity\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Refill\x20to\x20Full\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</for>\x0a\x20\x20</div>\x0a\x0a</div>\x0a','load','/queue/buckets','Failed\x20to\x20load\x20buckets','<edit-bucket-modal\x20:modal=\x22modal\x22\x20:edit-mode=\x22editMode\x22\x20:initial-form=\x22initialForm\x22\x20:on-done=\x22onDone\x22\x20/>','apiBase','error','781978CvHWkf'];_0xeaa5=function(){return _0x5eb4b8;};return _0xeaa5();}
|
|
1
|
+
const _0x4efe17=_0x1dc2;(function(_0x2021ff,_0x32b2c4){const _0x914bb2=_0x1dc2,_0x23079b=_0x2021ff();while(!![]){try{const _0x3385d3=-parseInt(_0x914bb2(0x17e))/0x1*(parseInt(_0x914bb2(0x180))/0x2)+-parseInt(_0x914bb2(0x196))/0x3*(parseInt(_0x914bb2(0x173))/0x4)+-parseInt(_0x914bb2(0x19d))/0x5+-parseInt(_0x914bb2(0x176))/0x6*(parseInt(_0x914bb2(0x19c))/0x7)+parseInt(_0x914bb2(0x1a1))/0x8*(parseInt(_0x914bb2(0x18c))/0x9)+parseInt(_0x914bb2(0x182))/0xa+-parseInt(_0x914bb2(0x191))/0xb*(-parseInt(_0x914bb2(0x17b))/0xc);if(_0x3385d3===_0x32b2c4)break;else _0x23079b['push'](_0x23079b['shift']());}catch(_0x4ae01c){_0x23079b['push'](_0x23079b['shift']());}}}(_0x16e0,0x9c54d));import _0x1c93c3 from'../modals/edit-bucket-modal.ok.js';import _0x1e2bbc from'../../../stores/okdb-store.js';export default{'tag':_0x4efe17(0x198),'dependencies':[_0x1c93c3],'context':_0x572dc4=>({'busy':!0x1,'buckets':[],'error':null,async 'load'(){const _0x15120f=_0x4efe17;this[_0x15120f(0x187)]=!0x0,this[_0x15120f(0x19b)]=null;try{const _0x1f898e=await fetch(_0x1e2bbc[_0x15120f(0x179)]+'/queue/buckets'),_0x4072b6=await _0x1f898e[_0x15120f(0x197)]();if(!_0x1f898e['ok'])throw new Error(_0x4072b6?.['error']?.[_0x15120f(0x1a2)]||'Failed\x20to\x20load\x20buckets');this[_0x15120f(0x189)]=_0x4072b6[_0x15120f(0x19f)]??[];}catch(_0x508e8e){this[_0x15120f(0x19b)]=_0x508e8e?.['message']||String(_0x508e8e),this['buckets']=[];}finally{this[_0x15120f(0x187)]=!0x1;}},async 'openCreate'(){const _0x5aa0a1=_0x4efe17;await _0x572dc4[_0x5aa0a1(0x1a5)][_0x5aa0a1(0x185)][_0x5aa0a1(0x18a)][_0x5aa0a1(0x18d)]({'owner':_0x572dc4,'title':_0x5aa0a1(0x19a),'content':_0x5aa0a1(0x18e),'context':_0x15cf16=>({'modal':_0x15cf16,'editMode':!0x1,'initialForm':{},'onDone':async()=>{await this['load']();}})});},async 'openEdit'(_0x523d0c){const _0x55abe3=_0x4efe17;await _0x572dc4[_0x55abe3(0x1a5)][_0x55abe3(0x185)][_0x55abe3(0x18a)][_0x55abe3(0x18d)]({'owner':_0x572dc4,'title':_0x55abe3(0x188),'content':_0x55abe3(0x18e),'context':_0x4cd5f0=>({'modal':_0x4cd5f0,'editMode':!0x0,'initialForm':{'id':_0x523d0c['id'],'capacity':_0x523d0c[_0x55abe3(0x17d)],'tokens':_0x523d0c[_0x55abe3(0x178)],'refill_amount':_0x523d0c[_0x55abe3(0x195)]??0x0,'refill_every':_0x523d0c['refill_every']??0x0},'onDone':async()=>{await this['load']();}})});},async 'remove'(_0x2da7b2){const _0x3e662b=_0x4efe17;if(await _0x572dc4[_0x3e662b(0x1a5)][_0x3e662b(0x185)][_0x3e662b(0x18a)][_0x3e662b(0x190)]('Delete\x20bucket\x20\x22<b>'+_0x2da7b2['id']+'</b>\x22?'))try{if(!(await fetch(_0x1e2bbc[_0x3e662b(0x179)]+'/queue/bucket/remove/'+encodeURIComponent(_0x2da7b2['id']),{'method':_0x3e662b(0x1a4)}))['ok'])throw new Error(_0x3e662b(0x17a));_0x572dc4[_0x3e662b(0x1a5)]['shared']?.[_0x3e662b(0x194)]?.[_0x3e662b(0x1a6)]?.(_0x3e662b(0x175)+_0x2da7b2['id']+'\x22'),await this['load']();}catch(_0x2d530a){_0x572dc4[_0x3e662b(0x1a5)]['shared']?.[_0x3e662b(0x194)]?.['error']?.(_0x2d530a?.[_0x3e662b(0x1a2)]||_0x3e662b(0x17a));}},async 'refill'(_0xfcbb2a){const _0x1b2227=_0x4efe17;try{if(!(await fetch(_0x1e2bbc[_0x1b2227(0x179)]+_0x1b2227(0x183)+encodeURIComponent(_0xfcbb2a['id']),{'method':'POST','headers':{'Content-Type':_0x1b2227(0x19e)},'body':JSON[_0x1b2227(0x192)]({'tokens':_0xfcbb2a[_0x1b2227(0x17d)]})}))['ok'])throw new Error(_0x1b2227(0x193));_0x572dc4[_0x1b2227(0x1a5)]['shared']?.[_0x1b2227(0x194)]?.[_0x1b2227(0x1a0)]?.('Refilled\x20\x22'+_0xfcbb2a['id']+'\x22'),await this[_0x1b2227(0x1a3)]();}catch(_0xc5e5d6){_0x572dc4[_0x1b2227(0x1a5)][_0x1b2227(0x185)]?.[_0x1b2227(0x194)]?.[_0x1b2227(0x19b)]?.(_0xc5e5d6?.[_0x1b2227(0x1a2)]||_0x1b2227(0x193));}},'tokenPct':_0x11002f=>_0x11002f[_0x4efe17(0x17d)]?Math['min'](0x64,Math['round'](_0x11002f[_0x4efe17(0x178)]/_0x11002f['capacity']*0x64)):0x0,'pctColor':_0x2b0c4d=>_0x2b0c4d>0x3c?_0x4efe17(0x17c):_0x2b0c4d>0x19?_0x4efe17(0x17f):_0x4efe17(0x174),'refillLabel'(_0x1db7c0){const _0x46c051=_0x4efe17;if(!_0x1db7c0[_0x46c051(0x186)]||!_0x1db7c0['refill_amount'])return'No\x20refill';const _0x5a8a42=_0x1db7c0[_0x46c051(0x186)];let _0x40b692;return _0x40b692=_0x5a8a42>=0x36ee80?(_0x5a8a42/0x36ee80)[_0x46c051(0x181)](0x1)+'h':_0x5a8a42>=0xea60?Math[_0x46c051(0x18b)](_0x5a8a42/0xea60)+'m':Math[_0x46c051(0x18b)](_0x5a8a42/0x3e8)+'s','+'+_0x1db7c0['refill_amount']+'\x20/\x20'+_0x40b692;}}),async 'mount'(_0x4da303){const _0x13e55d=_0x4efe17;await this['load'](),_0x4da303[_0x13e55d(0x184)](()=>_0x4da303[_0x13e55d(0x1a5)][_0x13e55d(0x199)][_0x13e55d(0x177)][_0x13e55d(0x18f)],()=>this[_0x13e55d(0x1a3)]());},'template':'\x0a<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:16px;\x20height:100%;\x20min-height:0;\x22>\x0a\x0a\x20\x20<!--\x20Toolbar\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22font-weight:600;\x20font-size:16px;\x22>Token\x20Buckets</div>\x0a\x20\x20\x20\x20<div\x20style=\x22margin-left:auto;\x20display:flex;\x20gap:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22load()\x22\x20:disabled=\x22busy\x22>↻\x20Refresh</button>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openCreate()\x22\x20style=\x22background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x2013%,\x20transparent);\x20border-color:var(--okdb-accent);\x20color:var(--okdb-accent);\x22>+\x20Add\x20Bucket</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<if\x20:=\x22error\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-danger);\x20font-size:13px;\x20padding:10px\x2012px;\x20border:1px\x20solid\x20var(--okdb-danger);\x20border-radius:8px;\x22>{{error}}</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Empty\x20state\x20-->\x0a\x20\x20<if\x20:=\x22!busy\x20&&\x20buckets.length\x20===\x200\x20&&\x20!error\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22opacity:.55;\x20font-size:13px;\x20line-height:1.8;\x20padding:16px\x200;\x22>\x0a\x20\x20\x20\x20\x20\x20No\x20token\x20buckets\x20defined.<br>\x0a\x20\x20\x20\x20\x20\x20Token\x20buckets\x20let\x20you\x20rate-limit\x20queue\x20job\x20processing\x20per\x20bucket\x20ID.\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Bucket\x20cards\x20-->\x0a\x20\x20<div\x20style=\x22display:grid;\x20grid-template-columns:repeat(auto-fill,minmax(280px,1fr));\x20gap:12px;\x20overflow:auto;\x20min-height:0;\x22>\x0a\x20\x20\x20\x20<for\x20:=\x22buckets\x22\x20let:b>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:#1e2326;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:1px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:12px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:14px\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:10px;\x0a\x20\x20\x20\x20\x20\x20\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Header\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-weight:600;\x20font-family:monospace;\x20font-size:13px;\x20flex:1;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{b.id}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openEdit(b)\x22\x20style=\x22font-size:11px;\x20padding:3px\x208px;\x20opacity:.8;\x22>Edit</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22remove(b)\x22\x20style=\x22font-size:11px;\x20padding:3px\x208px;\x20color:var(--okdb-danger);\x20opacity:.8;\x22>✕</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Token\x20bar\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20justify-content:space-between;\x20font-size:12px;\x20margin-bottom:4px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.7;\x22>Tokens</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22\x27color:\x27\x20+\x20pctColor(tokenPct(b))\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{b.tokens}}\x20/\x20{{b.capacity}}\x20({{tokenPct(b)}}%)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22height:6px;\x20background:var(--okdb-app-border);\x20border-radius:999px;\x20overflow:hidden;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:style=\x22\x27height:100%;\x20border-radius:999px;\x20width:\x27\x20+\x20tokenPct(b)\x20+\x20\x27%;\x20background:\x27\x20+\x20pctColor(tokenPct(b))\x20+\x20\x27;\x20transition:width\x200.3s;\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Stats\x20row\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:12px;\x20font-size:12px;\x20opacity:.75;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>Refill:\x20<b>{{refillLabel(b)}}</b></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Actions\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22refill(b)\x22\x20style=\x22font-size:11px;\x20flex:1;\x22\x20:disabled=\x22b.tokens\x20>=\x20b.capacity\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Refill\x20to\x20Full\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</for>\x0a\x20\x20</div>\x0a\x0a</div>\x0a'};function _0x1dc2(_0x132776,_0x51341e){_0x132776=_0x132776-0x173;const _0x16e06b=_0x16e0();let _0x1dc2bc=_0x16e06b[_0x132776];return _0x1dc2bc;}function _0x16e0(){const _0x310d35=['load','POST','$ok','info','638844IZdENK','var(--okdb-danger)','Deleted\x20\x22','8826KVHpTi','okdb','tokens','apiBase','Delete\x20failed','1956yqiBGJ','var(--okdb-success)','capacity','5EpADKk','var(--okdb-warning)','510498NfVdDZ','toFixed','8150450CqfNXT','/queue/bucket/update/','$watch','shared','refill_every','busy','Edit\x20Bucket','buckets','modal','round','9cBBSOh','open','<edit-bucket-modal\x20:modal=\x22modal\x22\x20:edit-mode=\x22editMode\x22\x20:initial-form=\x22initialForm\x22\x20:on-done=\x22onDone\x22\x20/>','selectedEnv','confirm','96349OsgpaE','stringify','Refill\x20failed','toast','refill_amount','6OYRRYY','json','queue-buckets','stores','Add\x20Token\x20Bucket','error','392DirMSe','6020655ZzQrpb','application/json','data','success','10237960myKfIP','message'];_0x16e0=function(){return _0x310d35;};return _0x16e0();}
|