@kedem/okdb 1.0.0 → 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/README.md +1 -1
- 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/public/images/logo.png +0 -0
- package/public/images/logo.svg +0 -333
|
@@ -1 +1 @@
|
|
|
1
|
-
const _0x3202c7=_0x3764;(function(_0x139768,_0x16c099){const _0x5495bf=_0x3764,_0x2aa4b1=_0x139768();while(!![]){try{const _0x315e5e=parseInt(_0x5495bf(0xe2))/0x1+parseInt(_0x5495bf(0xd0))/0x2*(parseInt(_0x5495bf(0xf7))/0x3)+parseInt(_0x5495bf(0xe0))/0x4*(-parseInt(_0x5495bf(0x106))/0x5)+-parseInt(_0x5495bf(0xce))/0x6*(-parseInt(_0x5495bf(0xcf))/0x7)+-parseInt(_0x5495bf(0xe1))/0x8*(-parseInt(_0x5495bf(0xe7))/0x9)+-parseInt(_0x5495bf(0xf5))/0xa*(parseInt(_0x5495bf(0x111))/0xb)+-parseInt(_0x5495bf(0xcc))/0xc;if(_0x315e5e===_0x16c099)break;else _0x2aa4b1['push'](_0x2aa4b1['shift']());}catch(_0x28a4d3){_0x2aa4b1['push'](_0x2aa4b1['shift']());}}}(_0x60a8,0x76919));function _0x3764(_0x52e4df,_0x3ac9b0){_0x52e4df=_0x52e4df-0xc3;const _0x60a825=_0x60a8();let _0x376442=_0x60a825[_0x52e4df];return _0x376442;}function _0x60a8(){const _0x35845f=['modal','Failed\x20to\x20save\x20job','\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','10UcUqvQ','toISOString','/queue/job/','when','map','onDone','shared','bucket','whenTs','POST','toast','99QzBGnz','$attr','bucket_tokens','applyJob','max_tries','trim','idempotency_key','progress','length','whenDatetime','3001896ZTpzoP','_parseTags','66IqncUZ','51058dNlmtV','122MQjTcy','loadBuckets','Add\x20Token\x20Bucket','type','all','close','isArray','stringify','asap','__create__','slice','retryDelay','success','busy','now','backoff','847464mwrdtc','1008aKLgrI','773485PhMKlu','getTime','jobId','job','statusMessage','17982zMNnCc','/update','error','buckets','/queue/buckets','load','getWhen','application/json','json','tags','cron','priority','backoff_multiplier','loading','614910HdUZLm','message','29877zDdFaw','Job\x20updated','$ok','idempotencyKey','maxTries','whenMode','data','apiBase','filter','.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}','payload','tokens'];_0x60a8=function(){return _0x35845f;};return _0x60a8();}import _0x276e32 from'@toolkit/elements/ok-icon.ok.js';import _0x5db9e7 from'@toolkit/core/ok-overlay.ok.js';import _0x14a518 from'../../../components/ok-cron-input.ok.js';import _0xb6c96a from'../../../components/ok-json-input.ok.js';import _0x369e0f from'./create-bucket-modal.ok.js';import _0x2c0a1e from'../../../stores/okdb-store.js';export default{'tag':'edit-job-modal','dependencies':[_0x14a518,_0xb6c96a,_0x369e0f,_0x5db9e7,_0x276e32],'attr':{'modal':{},'jobId':{},'onDone':{}},'context':_0x353c97=>({'busy':!0x1,'loading':!0x1,'job':null,'type':'','payloadInit':{},'payload':{},'priority':0x0,'maxTries':null,'retryDelay':0x0,'backoff':0x1,'tags':'','buckets':[],'cron':'','idempotencyKey':'','whenMode':_0x3202c7(0xd8),'whenDatetime':'','whenTs':null,'progress':'','statusMessage':'','bucketOptions':[],async 'loadBuckets'(){const _0x2d5313=_0x3202c7;try{const _0x2a0bdb=await fetch(_0x2c0a1e['apiBase']+_0x2d5313(0xeb)),_0x32d06c=await _0x2a0bdb[_0x2d5313(0xef)]();this['bucketOptions']=_0x32d06c?.[_0x2d5313(0xfd)]??[];}catch{this['bucketOptions']=[];}},async 'onBucketSelect'(_0x18b30f,_0x12c222){const _0xb0878=_0x3202c7;if(_0xb0878(0xd9)===_0x12c222){const _0x572c41=this;await _0x353c97['$ok'][_0xb0878(0x10c)]['modal']['open']({'owner':_0x353c97,'title':_0xb0878(0xd2),'content':'<create-bucket-modal\x20:modal=\x22modal\x22\x20:on-done=\x22onDone\x22\x20/>','context':_0x3ac9ff=>({'modal':_0x3ac9ff,'onDone':async _0x3a7847=>{const _0x565059=_0xb0878;await _0x572c41[_0x565059(0xd1)](),_0x572c41[_0x565059(0xea)]=_0x572c41[_0x565059(0xea)][_0x565059(0x10a)]((_0x528790,_0x4e43ae)=>_0x4e43ae===_0x18b30f?{..._0x528790,'id':_0x3a7847}:_0x528790);}})});}else this[_0xb0878(0xea)]=this[_0xb0878(0xea)]['map']((_0x5e8268,_0x5d0b4b)=>_0x5d0b4b===_0x18b30f?{..._0x5e8268,'id':_0x12c222}:_0x5e8268);},'setBucketTokens'(_0x480004,_0x42e2dd){const _0xf6ac8f=_0x3202c7,_0x1bfbb1=''===_0x42e2dd?0x1:Math['max'](0x1,parseInt(_0x42e2dd)||0x1);this[_0xf6ac8f(0xea)]=this['buckets'][_0xf6ac8f(0x10a)]((_0x310e62,_0x5eabd2)=>_0x5eabd2===_0x480004?{..._0x310e62,'tokens':_0x1bfbb1}:_0x310e62);},'addBucket'(){const _0x44f569=_0x3202c7;this[_0x44f569(0xea)]=[...this[_0x44f569(0xea)],{'id':'','tokens':0x1}];},'removeBucket'(_0x32ba06){const _0x26ab2c=_0x3202c7;this[_0x26ab2c(0xea)]=this[_0x26ab2c(0xea)][_0x26ab2c(0xff)]((_0x4e8ca0,_0x225be5)=>_0x225be5!==_0x32ba06);},'getWhen'(){const _0x26cd13=_0x3202c7;if(_0x26cd13(0xd8)===this[_0x26cd13(0xfc)])return null;if('datetime'===this[_0x26cd13(0xfc)]){const _0x1af826=new Date(this[_0x26cd13(0xcb)]);return isNaN(_0x1af826[_0x26cd13(0xe3)]())?null:_0x1af826[_0x26cd13(0xe3)]();}return this['whenTs'];},'_parseTags'(_0x57ec46){const _0x3d11ab=_0x3202c7;if(!_0x57ec46)return;const _0x59fad2=String(_0x57ec46)['split'](',')[_0x3d11ab(0x10a)](_0x508d85=>_0x508d85['trim']())['filter'](Boolean);return _0x59fad2[_0x3d11ab(0xca)]?_0x59fad2:void 0x0;},'applyJob'(_0x1f26f0){const _0x529654=_0x3202c7;_0x1f26f0&&(this[_0x529654(0xd3)]=_0x1f26f0[_0x529654(0xd3)]??'',this['payloadInit']=_0x1f26f0[_0x529654(0x101)]??{},this[_0x529654(0x101)]=_0x1f26f0['payload']??{},this[_0x529654(0xf2)]=_0x1f26f0[_0x529654(0xf2)]??0x0,this[_0x529654(0xfb)]=_0x1f26f0[_0x529654(0xc6)]??null,this[_0x529654(0xdb)]=_0x1f26f0['retry_delay']??0x0,this['backoff']=_0x1f26f0[_0x529654(0xf3)]??0x1,this[_0x529654(0xf0)]=Array[_0x529654(0xd6)](_0x1f26f0[_0x529654(0xf0)])?_0x1f26f0['tags']['join'](',\x20'):'',this['cron']=_0x1f26f0[_0x529654(0xf1)]??'',this[_0x529654(0xfa)]=_0x1f26f0?.[_0x529654(0xc8)]||'',this[_0x529654(0xc9)]=_0x1f26f0[_0x529654(0xc9)]??'',this[_0x529654(0xe6)]=_0x1f26f0['status_message']??'',_0x1f26f0[_0x529654(0x109)]&&_0x1f26f0['when']>Date[_0x529654(0xde)]()-0x3e8?(this[_0x529654(0xfc)]='timestamp',this['whenDatetime']=new Date(_0x1f26f0['when'])[_0x529654(0x107)]()[_0x529654(0xda)](0x0,0x10),this['whenTs']=_0x1f26f0[_0x529654(0x109)]):(this[_0x529654(0xfc)]=_0x529654(0xd8),this['whenDatetime']='',this[_0x529654(0x10e)]=null),Array[_0x529654(0xd6)](_0x1f26f0[_0x529654(0xea)])&&_0x1f26f0[_0x529654(0xea)][_0x529654(0xca)]>0x0?this[_0x529654(0xea)]=_0x1f26f0[_0x529654(0xea)][_0x529654(0x10a)](_0x42a76b=>({'id':_0x42a76b['id'],'tokens':_0x42a76b[_0x529654(0x102)]??0x1})):_0x1f26f0[_0x529654(0x10d)]?this[_0x529654(0xea)]=[{'id':_0x1f26f0[_0x529654(0x10d)],'tokens':_0x1f26f0[_0x529654(0xc4)]??0x1}]:this[_0x529654(0xea)]=[]);},async 'load'(){const _0x451e49=_0x3202c7;this[_0x451e49(0xf4)]=!0x0;try{const _0x58bd3e=await fetch(_0x2c0a1e[_0x451e49(0xfe)]+_0x451e49(0x108)+encodeURIComponent(_0x353c97['$attr'][_0x451e49(0xe4)])),_0x169c7c=await _0x58bd3e['json']();if(!_0x58bd3e['ok'])throw new Error(_0x169c7c?.[_0x451e49(0xe9)]?.[_0x451e49(0xf6)]||'Failed\x20to\x20load\x20job');this[_0x451e49(0xe5)]=_0x169c7c?.[_0x451e49(0xfd)]??null,this[_0x451e49(0xc5)](this['job']);}catch(_0x1a9f54){_0x353c97[_0x451e49(0xf9)][_0x451e49(0x10c)]?.[_0x451e49(0x110)]?.[_0x451e49(0xe9)]?.(_0x1a9f54?.[_0x451e49(0xf6)]||'Failed\x20to\x20load\x20job'),await _0x353c97[_0x451e49(0xc3)][_0x451e49(0x103)][_0x451e49(0xd5)]();}finally{this[_0x451e49(0xf4)]=!0x1;}},async 'save'(){const _0x5b84cc=_0x3202c7;if(this[_0x5b84cc(0xe5)]){this[_0x5b84cc(0xdd)]=!0x0;try{const _0x4c3fbc=this[_0x5b84cc(0xed)](),_0x212a94=String(this[_0x5b84cc(0xf1)]||'')['trim']()||null,_0x597aaf=this[_0x5b84cc(0xea)][_0x5b84cc(0xff)](_0x325125=>_0x325125['id'])[_0x5b84cc(0x10a)](_0x2822eb=>({'id':_0x2822eb['id'],'tokens':_0x2822eb['tokens']||0x1})),_0x17161d=this[_0x5b84cc(0xcd)](this[_0x5b84cc(0xf0)]),_0x27dc38={'type':String(this[_0x5b84cc(0xd3)]||'')[_0x5b84cc(0xc7)](),'payload':this[_0x5b84cc(0x101)],'when':_0x4c3fbc,'priority':Number(this[_0x5b84cc(0xf2)])||0x0,'tags':_0x17161d??this[_0x5b84cc(0xe5)][_0x5b84cc(0xf0)],'buckets':_0x597aaf,'cron':_0x212a94,'max_tries':null!==this[_0x5b84cc(0xfb)]&&''!==this[_0x5b84cc(0xfb)]?Number(this['maxTries']):null,'retry_delay':Number(this[_0x5b84cc(0xdb)])||0x0,'backoff_multiplier':Number(this[_0x5b84cc(0xdf)])||0x1,'progress':this[_0x5b84cc(0xc9)]||null,'status_message':this[_0x5b84cc(0xe6)]||null,'idempotency_key':this[_0x5b84cc(0xfa)]['trim']()||null},_0x469990=await fetch(_0x2c0a1e[_0x5b84cc(0xfe)]+_0x5b84cc(0x108)+encodeURIComponent(this['job']['id'])+_0x5b84cc(0xe8),{'method':_0x5b84cc(0x10f),'headers':{'Content-Type':_0x5b84cc(0xee)},'body':JSON[_0x5b84cc(0xd7)](_0x27dc38)}),_0x5d36d6=await _0x469990['json']();if(!_0x469990['ok'])throw new Error(_0x5d36d6?.['error']?.[_0x5b84cc(0xf6)]||_0x5b84cc(0x104));_0x353c97[_0x5b84cc(0xf9)]['shared']?.[_0x5b84cc(0x110)]?.[_0x5b84cc(0xdc)]?.(_0x5b84cc(0xf8)),await _0x353c97[_0x5b84cc(0xc3)][_0x5b84cc(0x103)][_0x5b84cc(0xd5)](),await _0x353c97[_0x5b84cc(0xc3)][_0x5b84cc(0x10b)]?.(_0x5d36d6?.['data']??null);}catch(_0x31781c){_0x353c97['$ok'][_0x5b84cc(0x10c)]?.[_0x5b84cc(0x110)]?.[_0x5b84cc(0xe9)]?.(_0x31781c?.[_0x5b84cc(0xf6)]||_0x5b84cc(0x104));}finally{this[_0x5b84cc(0xdd)]=!0x1;}}},'cancel'(){const _0x1d42fe=_0x3202c7;_0x353c97[_0x1d42fe(0xc3)][_0x1d42fe(0x103)]['close']();}}),async 'mount'(){const _0x8bc107=_0x3202c7;await Promise[_0x8bc107(0xd4)]([this[_0x8bc107(0xec)](),this['loadBuckets']()]);},'template':_0x3202c7(0x105),'style':_0x3202c7(0x100)};
|
|
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 _0x19a049=_0x3c42;(function(_0x8675f3,_0x2ee320){const _0x1a83c3=_0x3c42,_0xf1cfd8=_0x8675f3();while(!![]){try{const _0x36fc67=parseInt(_0x1a83c3(0xf9))/0x1*(-parseInt(_0x1a83c3(0x10e))/0x2)+parseInt(_0x1a83c3(0x120))/0x3+-parseInt(_0x1a83c3(0xec))/0x4*(parseInt(_0x1a83c3(0xe8))/0x5)+-parseInt(_0x1a83c3(0xb7))/0x6*(-parseInt(_0x1a83c3(0x105))/0x7)+-parseInt(_0x1a83c3(0x10f))/0x8*(-parseInt(_0x1a83c3(0xb4))/0x9)+-parseInt(_0x1a83c3(0xc0))/0xa*(-parseInt(_0x1a83c3(0xeb))/0xb)+parseInt(_0x1a83c3(0xd8))/0xc*(-parseInt(_0x1a83c3(0xcf))/0xd);if(_0x36fc67===_0x2ee320)break;else _0xf1cfd8['push'](_0xf1cfd8['shift']());}catch(_0x245777){_0xf1cfd8['push'](_0xf1cfd8['shift']());}}}(_0x1d07,0x42d88));import _0x44060b from'@toolkit/elements/ok-icon.ok.js';import _0x36b61a from'@toolkit/core/ok-overlay.ok.js';function _0x3c42(_0x1e677f,_0x5dedb0){_0x1e677f=_0x1e677f-0xaa;const _0x1d07d6=_0x1d07();let _0x3c4223=_0x1d07d6[_0x1e677f];return _0x3c4223;}import _0xafd09a from'../../../components/ok-cron-input.ok.js';import _0x33bfb2 from'../../../components/ok-json-input.ok.js';import _0x513af0 from'../../../components/field-path-input.ok.js';import _0x59335e from'./create-bucket-modal.ok.js';import _0xe3276c from'../../../stores/okdb-store.js';export default{'tag':_0x19a049(0x109),'dependencies':[_0xafd09a,_0x33bfb2,_0x513af0,_0x59335e,_0x36b61a,_0x44060b],'attr':{'modal':{},'initialType':{},'onDone':{}},'context':_0x39b767=>({'busy':!0x1,'type':_0x39b767[_0x19a049(0xef)]['initialType']??'','payloadInit':{},'payload':{},'priority':0x0,'maxTries':null,'retryDelay':0x0,'backoff':0x1,'tags':'','buckets':[{'id':'','tokens':0x1}],'cron':'','idempotencyKey':'','whenMode':_0x19a049(0x124),'whenDatetime':'','whenTs':null,'doneTtl':null,'failedTtl':null,'bucketOptions':[],'registeredTypes':[],'typeItems':[],'typeIsRegistered':!0x1,'typeStatus':null,'typeSchema':null,'_fromType':{},'payloadErrors':[],'_payloadTouched':!0x1,'_syncTypeData'(){const _0x2c0649=_0x19a049,_0x3c4e65=this[_0x2c0649(0xdb)][_0x2c0649(0xf0)](_0x294503=>_0x294503['id']===this['type'])??null;this[_0x2c0649(0xf4)]=!!_0x3c4e65,this['typeStatus']=_0x3c4e65?.[_0x2c0649(0xcd)]??null,this[_0x2c0649(0xea)]=_0x3c4e65?.[_0x2c0649(0xba)]??null,this[_0x2c0649(0xc6)]=this['registeredTypes'][_0x2c0649(0xe3)](_0x197b5a=>({'path':_0x197b5a['id'],'types':_0x197b5a['status']&&_0x2c0649(0x11c)!==_0x197b5a[_0x2c0649(0xcd)]?[_0x197b5a['status']]:[],'hint':null}));},'_set'(_0x1271ef,_0x20aae0){const _0x2e28dc=_0x19a049;if(this[_0x1271ef]=_0x20aae0,this['_fromType'][_0x1271ef]){const _0x2da44d={...this[_0x2e28dc(0x11a)]};delete _0x2da44d[_0x1271ef],this[_0x2e28dc(0x11a)]=_0x2da44d;}},async 'loadBuckets'(){const _0x5d378b=_0x19a049,[_0x30c32e,_0x499c38]=await Promise[_0x5d378b(0x110)]([fetch(_0xe3276c['apiBase']+_0x5d378b(0xe4))[_0x5d378b(0xb6)](()=>null),fetch(_0xe3276c[_0x5d378b(0x113)]+_0x5d378b(0x122))[_0x5d378b(0xb6)](()=>null)]);if(_0x30c32e?.['ok']){const _0x1cb968=await _0x30c32e[_0x5d378b(0x114)]()[_0x5d378b(0xb6)](()=>({}));this[_0x5d378b(0xcb)]=_0x1cb968?.[_0x5d378b(0xd9)]??_0x1cb968?.['data']??[];}if(_0x499c38?.['ok']){const _0x24be95=await _0x499c38[_0x5d378b(0x114)]()[_0x5d378b(0xb6)](()=>({}));this['registeredTypes']=_0x24be95?.[_0x5d378b(0xd9)]??_0x24be95?.[_0x5d378b(0xb5)]??[];}this[_0x5d378b(0xc9)]();},'applyTypeDefaults'(_0xdf91e1){const _0x23f49e=_0x19a049,_0x2a49bb=this[_0x23f49e(0xdb)][_0x23f49e(0xf0)](_0x5b54d2=>_0x5b54d2['id']===_0xdf91e1);if(!_0x2a49bb)return!0x1;const _0x43a5c1=_0x2a49bb[_0x23f49e(0xd1)]??{},_0x591bf3={};return null!=_0x43a5c1[_0x23f49e(0xcc)]&&(this[_0x23f49e(0xe5)]=_0x43a5c1['max_tries'],_0x591bf3[_0x23f49e(0xe5)]=!0x0),null!=_0x43a5c1[_0x23f49e(0xc3)]&&(this[_0x23f49e(0xc5)]=_0x43a5c1[_0x23f49e(0xc3)],_0x591bf3[_0x23f49e(0xc5)]=!0x0),null!=_0x43a5c1[_0x23f49e(0x111)]&&(this[_0x23f49e(0x10d)]=_0x43a5c1[_0x23f49e(0x111)],_0x591bf3[_0x23f49e(0x10d)]=!0x0),null!=_0x43a5c1[_0x23f49e(0xbd)]&&(this[_0x23f49e(0xbd)]=_0x43a5c1[_0x23f49e(0xbd)],_0x591bf3[_0x23f49e(0xbd)]=!0x0),null!=_0x43a5c1[_0x23f49e(0xb9)]&&(this[_0x23f49e(0xfa)]=_0x43a5c1[_0x23f49e(0xb9)],_0x591bf3[_0x23f49e(0xfa)]=!0x0),null!=_0x43a5c1[_0x23f49e(0x125)]&&(this[_0x23f49e(0x11f)]=_0x43a5c1[_0x23f49e(0x125)],_0x591bf3[_0x23f49e(0x11f)]=!0x0),Array['isArray'](_0x43a5c1['buckets'])&&_0x43a5c1['buckets'][_0x23f49e(0xf7)]&&(this['buckets']=_0x43a5c1['buckets'][_0x23f49e(0xe3)](_0x240d23=>({'id':_0x240d23['id'],'tokens':_0x240d23[_0x23f49e(0xfe)]??0x1})),_0x591bf3[_0x23f49e(0xde)]=!0x0),this[_0x23f49e(0x11a)]=_0x591bf3,!0x0;},'onTypeSelected'(_0x4ce5e6){const _0x1663bf=_0x19a049;null!=_0x4ce5e6&&(this['type']=_0x4ce5e6,this[_0x1663bf(0xc9)](),this[_0x1663bf(0x115)](_0x4ce5e6)||_0x4ce5e6||(this['_fromType']={}),this[_0x1663bf(0xb3)]());},async 'onBucketSelect'(_0x423771,_0x40ed9b){const _0x14f133=_0x19a049;if(this['_fromType']['buckets']&&(this[_0x14f133(0x11a)]={...this['_fromType'],'buckets':!0x1}),_0x14f133(0xed)===_0x40ed9b){const _0x1bbafb=this;await _0x39b767[_0x14f133(0xaa)][_0x14f133(0xe0)]['modal']['open']({'owner':_0x39b767,'title':_0x14f133(0x107),'content':_0x14f133(0xe6),'context':_0x4dee26=>({'modal':_0x4dee26,'onDone':async _0x2b743f=>{const _0x458b39=_0x14f133;await _0x1bbafb['loadBuckets'](),_0x1bbafb[_0x458b39(0xde)]=_0x1bbafb['buckets'][_0x458b39(0xe3)]((_0xe47233,_0x4e1e65)=>_0x4e1e65===_0x423771?{..._0xe47233,'id':_0x2b743f}:_0xe47233);}})});}else this[_0x14f133(0xde)]=this['buckets']['map']((_0xf5011d,_0x547cb2)=>_0x547cb2===_0x423771?{..._0xf5011d,'id':_0x40ed9b}:_0xf5011d);},'setBucketTokens'(_0x2ad875,_0x144226){const _0x4d56dc=_0x19a049;this[_0x4d56dc(0x11a)][_0x4d56dc(0xde)]&&(this[_0x4d56dc(0x11a)]={...this[_0x4d56dc(0x11a)],'buckets':!0x1});const _0x1da0a5=''===_0x144226?0x1:Math[_0x4d56dc(0x10b)](0x1,parseInt(_0x144226)||0x1);this[_0x4d56dc(0xde)]=this[_0x4d56dc(0xde)]['map']((_0x1264d4,_0x227a6f)=>_0x227a6f===_0x2ad875?{..._0x1264d4,'tokens':_0x1da0a5}:_0x1264d4);},'addBucket'(){const _0x4f1984=_0x19a049;this[_0x4f1984(0x11a)][_0x4f1984(0xde)]&&(this[_0x4f1984(0x11a)]={...this[_0x4f1984(0x11a)],'buckets':!0x1}),this['buckets']=[...this[_0x4f1984(0xde)],{'id':'','tokens':0x1}];},'removeBucket'(_0xb2e019){const _0x966c15=_0x19a049;this['_fromType'][_0x966c15(0xde)]&&(this[_0x966c15(0x11a)]={...this['_fromType'],'buckets':!0x1}),this[_0x966c15(0xde)]=this[_0x966c15(0xde)][_0x966c15(0xd4)]((_0x4976a1,_0x1cdac3)=>_0x1cdac3!==_0xb2e019);},'onPayloadChange'(_0x1937fc){const _0x58f0e1=_0x19a049;this[_0x58f0e1(0x11e)]=_0x1937fc,this['_payloadTouched']=!0x0,this['_revalidatePayload']();},'_revalidatePayload'(){const _0x563cf2=_0x19a049,_0xa6d3ce=this[_0x563cf2(0xea)];this[_0x563cf2(0xdf)]=_0xa6d3ce?.[_0x563cf2(0x101)]?this[_0x563cf2(0x119)](this['payload'],_0xa6d3ce[_0x563cf2(0x101)]):[];},'_validatePayload'(_0x53ae03,_0x5e4fbc){const _0xe408e3=[],_0x4c6f7f=(_0x5779cc,_0x3f647c,_0x224ec1)=>{const _0x3906ec=_0x3c42;if(_0x3f647c&&_0x3906ec(0xff)==typeof _0x3f647c&&!_0x3f647c['$ref']){if(_0x3f647c[_0x3906ec(0xb1)]){const _0x10c755=Array[_0x3906ec(0xc8)](_0x3f647c[_0x3906ec(0xb1)])?_0x3f647c[_0x3906ec(0xb1)]:[_0x3f647c[_0x3906ec(0xb1)]],_0x590c48=null===_0x5779cc?'null':Array[_0x3906ec(0xc8)](_0x5779cc)?_0x3906ec(0xce):typeof _0x5779cc;if(!_0x10c755[_0x3906ec(0xf8)](_0x5e392d=>_0x5e392d===_0x590c48||'integer'===_0x5e392d&&_0x3906ec(0xac)===_0x590c48&&Number[_0x3906ec(0xab)](_0x5779cc)))return void _0xe408e3['push']({'path':_0x224ec1||_0x3906ec(0xd5),'msg':_0x3906ec(0x103)+_0x10c755[_0x3906ec(0xf2)]('\x20|\x20')+_0x3906ec(0xe2)+_0x590c48});}if(_0x3f647c[_0x3906ec(0xd3)]&&!_0x3f647c[_0x3906ec(0xd3)][_0x3906ec(0xf8)](_0x1b2c5b=>JSON[_0x3906ec(0xe9)](_0x1b2c5b)===JSON['stringify'](_0x5779cc))&&_0xe408e3['push']({'path':_0x224ec1||_0x3906ec(0xd5),'msg':_0x3906ec(0x10c)+_0x3f647c[_0x3906ec(0xd3)][_0x3906ec(0xe3)](_0x42f039=>JSON[_0x3906ec(0xe9)](_0x42f039))['join'](',\x20')+']'}),_0x3906ec(0xfc)==typeof _0x5779cc&&(null!=_0x3f647c[_0x3906ec(0xad)]&&_0x5779cc[_0x3906ec(0xf7)]<_0x3f647c['minLength']&&_0xe408e3[_0x3906ec(0xfd)]({'path':_0x224ec1||'(root)','msg':_0x3906ec(0xd7)+_0x3f647c[_0x3906ec(0xad)]}),null!=_0x3f647c[_0x3906ec(0xdd)]&&_0x5779cc[_0x3906ec(0xf7)]>_0x3f647c['maxLength']&&_0xe408e3['push']({'path':_0x224ec1||_0x3906ec(0xd5),'msg':'maxLength:\x20'+_0x3f647c['maxLength']}),_0x3f647c[_0x3906ec(0xaf)]))try{new RegExp(_0x3f647c['pattern'])[_0x3906ec(0xf6)](_0x5779cc)||_0xe408e3[_0x3906ec(0xfd)]({'path':_0x224ec1||_0x3906ec(0xd5),'msg':_0x3906ec(0x117)});}catch{}if(_0x3906ec(0xac)==typeof _0x5779cc&&(null!=_0x3f647c[_0x3906ec(0x123)]&&_0x5779cc<_0x3f647c[_0x3906ec(0x123)]&&_0xe408e3[_0x3906ec(0xfd)]({'path':_0x224ec1||_0x3906ec(0xd5),'msg':_0x3906ec(0xf5)+_0x3f647c[_0x3906ec(0x123)]}),null!=_0x3f647c[_0x3906ec(0x11b)]&&_0x5779cc>_0x3f647c[_0x3906ec(0x11b)]&&_0xe408e3['push']({'path':_0x224ec1||'(root)','msg':'<=\x20'+_0x3f647c[_0x3906ec(0x11b)]})),'object'==typeof _0x5779cc&&null!==_0x5779cc&&!Array[_0x3906ec(0xc8)](_0x5779cc)){for(const _0x467ece of _0x3f647c[_0x3906ec(0xd6)]??[])_0x467ece in _0x5779cc||_0xe408e3['push']({'path':_0x224ec1?_0x224ec1+'.'+_0x467ece:_0x467ece,'msg':'required'});if(_0x3f647c['properties']){for(const [_0xa92850,_0x512608]of Object[_0x3906ec(0x11d)](_0x3f647c[_0x3906ec(0xe1)]))_0xa92850 in _0x5779cc&&_0x4c6f7f(_0x5779cc[_0xa92850],_0x512608,_0x224ec1?_0x224ec1+'.'+_0xa92850:_0xa92850);if(!0x1===_0x3f647c[_0x3906ec(0xf1)]){for(const _0x443850 of Object[_0x3906ec(0xca)](_0x5779cc))_0x443850 in _0x3f647c[_0x3906ec(0xe1)]||_0xe408e3[_0x3906ec(0xfd)]({'path':_0x224ec1?_0x224ec1+'.'+_0x443850:_0x443850,'msg':_0x3906ec(0x112)});}}}if(Array[_0x3906ec(0xc8)](_0x5779cc)&&_0x3f647c[_0x3906ec(0xc2)]&&_0x5779cc[_0x3906ec(0xc1)]((_0x1a0a7d,_0x2d2013)=>_0x4c6f7f(_0x1a0a7d,_0x3f647c[_0x3906ec(0xc2)],(_0x224ec1||'')+'['+_0x2d2013+']')),_0x3f647c[_0x3906ec(0xb2)]){for(const _0x2abbaf of _0x3f647c['allOf'])_0x4c6f7f(_0x5779cc,_0x2abbaf,_0x224ec1);}}};return _0x4c6f7f(_0x53ae03,_0x5e4fbc,''),_0xe408e3;},'getWhen'(){const _0x38d583=_0x19a049;if(_0x38d583(0x124)===this[_0x38d583(0xb0)])return null;if(_0x38d583(0xfb)===this[_0x38d583(0xb0)]){const _0x145342=new Date(this['whenDatetime']);return isNaN(_0x145342[_0x38d583(0x116)]())?null:_0x145342[_0x38d583(0x116)]();}return this['whenTs'];},'_parseTags'(_0x5d3f1a){const _0xf3b661=_0x19a049;if(!_0x5d3f1a)return;const _0x2c892e=String(_0x5d3f1a)[_0xf3b661(0xbc)](',')[_0xf3b661(0xe3)](_0x27b3f3=>_0x27b3f3[_0xf3b661(0xd2)]())['filter'](Boolean);return _0x2c892e[_0xf3b661(0xf7)]?_0x2c892e:void 0x0;},async 'submit'(){const _0x50e8c3=_0x19a049;if(!this[_0x50e8c3(0xb1)])return void _0x39b767[_0x50e8c3(0xaa)][_0x50e8c3(0xe0)]?.[_0x50e8c3(0x102)]?.['error']?.(_0x50e8c3(0x121));if(this[_0x50e8c3(0xea)]?.[_0x50e8c3(0x101)]){const _0x34e55e=this['_validatePayload'](this[_0x50e8c3(0x11e)],this['typeSchema'][_0x50e8c3(0x101)]);if(_0x34e55e[_0x50e8c3(0xf7)])return this[_0x50e8c3(0x10a)]=!0x0,this[_0x50e8c3(0xdf)]=_0x34e55e,void _0x39b767[_0x50e8c3(0xaa)][_0x50e8c3(0xe0)]?.[_0x50e8c3(0x102)]?.[_0x50e8c3(0x118)]?.(_0x50e8c3(0xdc));}const _0x3d203f=this[_0x50e8c3(0xc7)](),_0x235b24=String(this[_0x50e8c3(0xda)]||'')[_0x50e8c3(0xd2)]()||null,_0x492840=this['buckets'][_0x50e8c3(0xd4)](_0xf795ed=>_0xf795ed['id'])[_0x50e8c3(0xe3)](_0x2bfbe4=>({'id':_0x2bfbe4['id'],'tokens':_0x2bfbe4[_0x50e8c3(0xfe)]||0x1})),_0x4c0328=this[_0x50e8c3(0xbf)](this[_0x50e8c3(0xf3)]),_0x3feb0e={};null!=_0x3d203f&&(_0x3feb0e[_0x50e8c3(0x104)]=_0x3d203f),this[_0x50e8c3(0xbd)]&&(_0x3feb0e[_0x50e8c3(0xbd)]=Number(this[_0x50e8c3(0xbd)])),null!==this['maxTries']&&''!==this[_0x50e8c3(0xe5)]&&(_0x3feb0e['max_tries']=Number(this[_0x50e8c3(0xe5)])),this['retryDelay']&&(_0x3feb0e['retry_delay']=Number(this[_0x50e8c3(0xc5)])),0x1!==this[_0x50e8c3(0x10d)]&&(_0x3feb0e['backoff_multiplier']=Number(this['backoff'])),_0x4c0328&&(_0x3feb0e[_0x50e8c3(0xf3)]=_0x4c0328),_0x492840[_0x50e8c3(0xf7)]&&(_0x3feb0e[_0x50e8c3(0xde)]=_0x492840),_0x235b24&&(_0x3feb0e[_0x50e8c3(0xda)]=_0x235b24),this[_0x50e8c3(0xd0)][_0x50e8c3(0xd2)]()&&(_0x3feb0e[_0x50e8c3(0x108)]=this[_0x50e8c3(0xd0)][_0x50e8c3(0xd2)]()),null!==this[_0x50e8c3(0xfa)]&&''!==this[_0x50e8c3(0xfa)]&&(_0x3feb0e['done_ttl']=Number(this['doneTtl'])),null!==this[_0x50e8c3(0x11f)]&&''!==this[_0x50e8c3(0x11f)]&&(_0x3feb0e[_0x50e8c3(0x125)]=Number(this[_0x50e8c3(0x11f)])),this[_0x50e8c3(0xb8)]=!0x0;try{const _0x4e81f1=await fetch(_0xe3276c['apiBase']+_0x50e8c3(0xae)+encodeURIComponent(this[_0x50e8c3(0xb1)]),{'method':'POST','headers':{'Content-Type':_0x50e8c3(0x100)},'body':JSON[_0x50e8c3(0xe9)]({'payload':this[_0x50e8c3(0x11e)],'options':_0x3feb0e})});if(!_0x4e81f1['ok']){const _0x57126d=await _0x4e81f1[_0x50e8c3(0x114)]()['catch'](()=>({}));throw new Error(_0x57126d?.[_0x50e8c3(0x118)]?.[_0x50e8c3(0xc4)]||_0x57126d?.[_0x50e8c3(0xc4)]||_0x50e8c3(0xee));}await _0x39b767[_0x50e8c3(0xef)][_0x50e8c3(0x106)]['close'](),await _0x39b767['$attr']['onDone']?.();}catch(_0x39c0f9){_0x39b767[_0x50e8c3(0xaa)][_0x50e8c3(0xe0)]?.[_0x50e8c3(0x102)]?.[_0x50e8c3(0x118)]?.(_0x39c0f9['message']||_0x50e8c3(0xe7));}finally{this[_0x50e8c3(0xb8)]=!0x1;}},'cancel'(){const _0x15ed5e=_0x19a049;_0x39b767[_0x15ed5e(0xef)][_0x15ed5e(0x106)][_0x15ed5e(0xbb)]();}}),async 'mount'(_0x276782){const _0xa135cf=_0x19a049;await this[_0xa135cf(0xbe)](),this[_0xa135cf(0xb1)]&&this[_0xa135cf(0x115)](this[_0xa135cf(0xb1)]);},'template':'\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','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}.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}'};function _0x1d07(){const _0x18fe61=['isInteger','number','minLength','/queue/enqueue/','pattern','whenMode','type','allOf','_revalidatePayload','54JucSQD','data','catch','1926izZUGk','busy','done_ttl','payload_schema','close','split','priority','loadBuckets','_parseTags','660aWuCeq','forEach','items','retry_delay','message','retryDelay','typeItems','getWhen','isArray','_syncTypeData','keys','bucketOptions','max_tries','status','array','767xgVzKy','idempotencyKey','defaults','trim','enum','filter','(root)','required','minLength:\x20','52788lEZpxn','result','cron','registeredTypes','Payload\x20does\x20not\x20match\x20the\x20job\x20type\x20schema','maxLength','buckets','payloadErrors','shared','properties',',\x20got\x20','map','/queue/buckets','maxTries','<create-bucket-modal\x20:modal=\x22modal\x22\x20:on-done=\x22onDone\x22\x20/>','Failed\x20to\x20enqueue\x20job','741055KSNigM','stringify','typeSchema','6886WeBeMW','4UwiezD','__create__','enqueue\x20failed','$attr','find','additionalProperties','join','tags','typeIsRegistered','>=\x20','test','length','some','21DxVypn','doneTtl','datetime','string','push','tokens','object','application/json','definition','toast','expected\x20','when','9394atbhlc','modal','Add\x20Token\x20Bucket','idempotency_key','enqueue-job-modal','_payloadTouched','max','must\x20be\x20one\x20of\x20[','backoff','1588sQirWM','225912PNcOcC','all','backoff_multiplier','additional\x20property\x20not\x20allowed','apiBase','json','applyTypeDefaults','getTime','pattern\x20mismatch','error','_validatePayload','_fromType','maximum','active','entries','payload','failedTtl','170082MoqRtL','Please\x20enter\x20a\x20job\x20type','/queue/job-types','minimum','asap','failed_ttl','$ok'];_0x1d07=function(){return _0x18fe61;};return _0x1d07();}
|
|
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 _0x42f5fa=_0x4263;(function(_0xe7bcc4,_0xb9219e){const _0x5b8665=_0x4263,_0x626d48=_0xe7bcc4();while(!![]){try{const _0x25f6ef=-parseInt(_0x5b8665(0x180))/0x1+parseInt(_0x5b8665(0x18c))/0x2*(-parseInt(_0x5b8665(0x17a))/0x3)+parseInt(_0x5b8665(0x1ae))/0x4+parseInt(_0x5b8665(0x1b2))/0x5*(parseInt(_0x5b8665(0x1b3))/0x6)+parseInt(_0x5b8665(0x18b))/0x7*(-parseInt(_0x5b8665(0x19d))/0x8)+-parseInt(_0x5b8665(0x195))/0x9*(parseInt(_0x5b8665(0x17b))/0xa)+parseInt(_0x5b8665(0x17d))/0xb;if(_0x25f6ef===_0xb9219e)break;else _0x626d48['push'](_0x626d48['shift']());}catch(_0x15b4f0){_0x626d48['push'](_0x626d48['shift']());}}}(_0x16f6,0x336cf));import _0x1a360d from'@toolkit/core/ok-overlay.ok.js';function _0x4263(_0x306970,_0x1e06a9){_0x306970=_0x306970-0x175;const _0x16f64b=_0x16f6();let _0x42630a=_0x16f64b[_0x306970];return _0x42630a;}import _0xade1a0 from'@toolkit/elements/ok-icon.ok.js';import _0xa7a6d0 from'./create-bucket-modal.ok.js';import _0x6c30af from'../../db/modals/schema-edit-modal.ok.js';import _0x59ad92 from'../../../stores/okdb-store.js';export default{'tag':_0x42f5fa(0x19f),'dependencies':[_0x1a360d,_0xade1a0,_0xa7a6d0,_0x6c30af],'attr':{'modal':{},'jobType':{},'bucketOptions':{},'onDone':{}},'context':_0x237744=>({'busy':!0x1,'id':'','status':_0x42f5fa(0x1b5),'maxConcurrency':'','defMaxTries':'','defRetryDelay':'','defBackoff':'','defPriority':'','defTtl':'','defDoneTtl':'','defFailedTtl':'','defBuckets':[{'id':'','tokens':0x1}],'bucketOptions':[],get 'isEdit'(){const _0x26506d=_0x42f5fa;return!!_0x237744[_0x26506d(0x1ba)][_0x26506d(0x1a1)];},get 'hasSchema'(){const _0xf98da0=_0x42f5fa;return!!_0x237744['$attr'][_0xf98da0(0x1a1)]?.['payload_schema'];},get 'schemaEnforce'(){const _0xb97f34=_0x42f5fa;return _0x237744[_0xb97f34(0x1ba)]['jobType']?.['payload_schema']?.[_0xb97f34(0x197)]??!0x1;},'init'(){const _0x4fc7de=_0x42f5fa;this[_0x4fc7de(0x179)]=Array[_0x4fc7de(0x19c)](_0x237744['$attr'][_0x4fc7de(0x179)])?_0x237744[_0x4fc7de(0x1ba)][_0x4fc7de(0x179)]:[];const _0x1c752c=_0x237744[_0x4fc7de(0x1ba)][_0x4fc7de(0x1a1)];if(!_0x1c752c)return;this['id']=_0x1c752c['id']??'',this[_0x4fc7de(0x186)]=_0x1c752c['status']??_0x4fc7de(0x1b5),this['maxConcurrency']=null!=_0x1c752c[_0x4fc7de(0x1ab)]?String(_0x1c752c[_0x4fc7de(0x1ab)]):'';const _0x27e376=_0x1c752c['defaults']??{};this['defMaxTries']=null!=_0x27e376[_0x4fc7de(0x192)]?String(_0x27e376['max_tries']):'',this[_0x4fc7de(0x199)]=null!=_0x27e376['retry_delay']?String(_0x27e376['retry_delay']):'',this[_0x4fc7de(0x1a8)]=null!=_0x27e376['backoff_multiplier']?String(_0x27e376[_0x4fc7de(0x190)]):'',this[_0x4fc7de(0x1af)]=null!=_0x27e376[_0x4fc7de(0x18f)]?String(_0x27e376[_0x4fc7de(0x18f)]):'',this[_0x4fc7de(0x178)]=null!=_0x27e376[_0x4fc7de(0x1a3)]?String(_0x27e376[_0x4fc7de(0x1a3)]):'',this['defDoneTtl']=null!=_0x27e376[_0x4fc7de(0x1bb)]?String(_0x27e376[_0x4fc7de(0x1bb)]):'',this[_0x4fc7de(0x17c)]=null!=_0x27e376['failed_ttl']?String(_0x27e376['failed_ttl']):'',this[_0x4fc7de(0x18e)]=Array[_0x4fc7de(0x19c)](_0x27e376[_0x4fc7de(0x1a6)])&&_0x27e376['buckets'][_0x4fc7de(0x175)]?_0x27e376['buckets']['map'](_0x4ce5bf=>({'id':_0x4ce5bf['id'],'tokens':_0x4ce5bf[_0x4fc7de(0x19b)]??0x1})):[{'id':'','tokens':0x1}];},'parseOptInt'(_0x4b6cf5){const _0x6ad850=parseInt(_0x4b6cf5);return isNaN(_0x6ad850)?null:_0x6ad850;},'parseOptFloat'(_0x36e8ef){const _0x5b02c7=parseFloat(_0x36e8ef);return isNaN(_0x5b02c7)?null:_0x5b02c7;},async 'onBucketSelect'(_0x289614,_0x548f9b){const _0x48d46f=_0x42f5fa;if('__create__'===_0x548f9b){const _0x496c7d=this;await _0x237744[_0x48d46f(0x1ac)][_0x48d46f(0x193)][_0x48d46f(0x183)][_0x48d46f(0x1a7)]({'owner':_0x237744,'title':'Add\x20Token\x20Bucket','content':_0x48d46f(0x181),'context':_0x485135=>({'modal':_0x485135,'onDone':async _0x27cfb9=>{const _0x47a67a=_0x48d46f;try{const _0xa95838=await fetch(_0x59ad92[_0x47a67a(0x188)]+_0x47a67a(0x191)),_0x3f888b=await _0xa95838[_0x47a67a(0x1aa)]();_0x496c7d[_0x47a67a(0x179)]=_0x3f888b?.[_0x47a67a(0x187)]??_0x3f888b?.['data']??[];}catch{}_0x496c7d[_0x47a67a(0x18e)]=_0x496c7d[_0x47a67a(0x18e)][_0x47a67a(0x1b1)]((_0x42c9c8,_0xcdfd18)=>_0xcdfd18===_0x289614?{..._0x42c9c8,'id':_0x27cfb9}:_0x42c9c8);}})});}else this[_0x48d46f(0x18e)]=this[_0x48d46f(0x18e)][_0x48d46f(0x1b1)]((_0x3af107,_0x57ab0c)=>_0x57ab0c===_0x289614?{..._0x3af107,'id':_0x548f9b}:_0x3af107);},'setBucketTokens'(_0x5e8b6c,_0x57907f){const _0x5e2161=_0x42f5fa,_0x45210b=''===_0x57907f?0x1:Math[_0x5e2161(0x176)](0x1,parseInt(_0x57907f)||0x1);this['defBuckets']=this['defBuckets'][_0x5e2161(0x1b1)]((_0xa0f302,_0x2b95f9)=>_0x2b95f9===_0x5e8b6c?{..._0xa0f302,'tokens':_0x45210b}:_0xa0f302);},'addBucket'(){const _0x161702=_0x42f5fa;this[_0x161702(0x18e)]=[...this[_0x161702(0x18e)],{'id':'','tokens':0x1}];},'removeBucket'(_0xb236ea){const _0x28e0a7=_0x42f5fa;this[_0x28e0a7(0x18e)]=this[_0x28e0a7(0x18e)]['filter']((_0x1e406a,_0x288389)=>_0x288389!==_0xb236ea);},'openSchema'(){const _0x460715=_0x42f5fa,_0x37585e=this['id']['trim']()||(_0x237744[_0x460715(0x1ba)][_0x460715(0x1a1)]?.['id']??'');if(!_0x37585e)return void _0x237744[_0x460715(0x1ac)][_0x460715(0x193)]?.['toast']?.[_0x460715(0x19e)]?.(_0x460715(0x198));const _0x749bc6=_0x59ad92['apiBase']+_0x460715(0x17f)+encodeURIComponent(_0x37585e)+_0x460715(0x1b6),_0x31ebb5=_0x59ad92['apiBase']+_0x460715(0x17f)+encodeURIComponent(_0x37585e)+_0x460715(0x1a2);_0x237744[_0x460715(0x1ac)][_0x460715(0x193)][_0x460715(0x183)][_0x460715(0x1a7)]({'owner':_0x237744,'title':_0x460715(0x1a5)+_0x37585e,'canDrag':!0x0,'content':_0x460715(0x1b9),'context':_0x1f1a94=>({'modal':_0x1f1a94,'type':_0x37585e,'schema':_0x237744['$attr'][_0x460715(0x1a1)]?.[_0x460715(0x184)]??null,'saveUrl':_0x749bc6,'samplesUrl':_0x31ebb5,'onDone':()=>_0x237744['$attr'][_0x460715(0x189)]?.()})});},async 'submit'(){const _0x2f8b51=_0x42f5fa,_0x4e7297=this['id'][_0x2f8b51(0x194)]();if(!_0x4e7297)return void _0x237744[_0x2f8b51(0x1ac)][_0x2f8b51(0x193)]?.[_0x2f8b51(0x17e)]?.[_0x2f8b51(0x19e)]?.('Job\x20type\x20name\x20is\x20required');const _0x3b7339=this['defBuckets'][_0x2f8b51(0x1a4)](_0x26af3d=>_0x26af3d['id'])[_0x2f8b51(0x1b1)](_0x2cbc3b=>({'id':_0x2cbc3b['id'],'tokens':_0x2cbc3b[_0x2f8b51(0x19b)]||0x1})),_0x5efc3c={'status':this[_0x2f8b51(0x186)]},_0x676f9a=this['parseOptInt'](this['maxConcurrency']);null!=_0x676f9a&&(_0x5efc3c[_0x2f8b51(0x1ab)]=_0x676f9a);const _0x118033={},_0x151d8a=this['parseOptInt'](this[_0x2f8b51(0x177)]);null!=_0x151d8a&&(_0x118033[_0x2f8b51(0x192)]=_0x151d8a);const _0x5af4af=this[_0x2f8b51(0x196)](this[_0x2f8b51(0x199)]);null!=_0x5af4af&&(_0x118033['retry_delay']=_0x5af4af);const _0x5f46e3=this[_0x2f8b51(0x1a0)](this[_0x2f8b51(0x1a8)]);null!=_0x5f46e3&&(_0x118033['backoff_multiplier']=_0x5f46e3);const _0x539192=this[_0x2f8b51(0x196)](this[_0x2f8b51(0x1af)]);null!=_0x539192&&(_0x118033[_0x2f8b51(0x18f)]=_0x539192);const _0x479fd6=this[_0x2f8b51(0x196)](this['defTtl']);null!=_0x479fd6&&(_0x118033[_0x2f8b51(0x1a3)]=_0x479fd6);const _0x17aa54=this['parseOptInt'](this[_0x2f8b51(0x19a)]);null!=_0x17aa54&&(_0x118033[_0x2f8b51(0x1bb)]=_0x17aa54);const _0x32a4c5=this[_0x2f8b51(0x196)](this[_0x2f8b51(0x17c)]);null!=_0x32a4c5&&(_0x118033['failed_ttl']=_0x32a4c5),_0x3b7339['length']&&(_0x118033[_0x2f8b51(0x1a6)]=_0x3b7339),Object[_0x2f8b51(0x1ad)](_0x118033)[_0x2f8b51(0x175)]&&(_0x5efc3c[_0x2f8b51(0x18d)]=_0x118033),this[_0x2f8b51(0x1bc)]=!0x0;try{const _0x326513=this[_0x2f8b51(0x1a9)]?_0x59ad92[_0x2f8b51(0x188)]+'/queue/job-type/'+encodeURIComponent(_0x4e7297):_0x59ad92[_0x2f8b51(0x188)]+'/queue/job-type',_0x2a8b73=this['isEdit']?_0x2f8b51(0x182):_0x2f8b51(0x1b7),_0x15add2=this[_0x2f8b51(0x1a9)]?_0x5efc3c:{'id':_0x4e7297,..._0x5efc3c};if(!(await fetch(_0x326513,{'method':_0x2a8b73,'headers':{'Content-Type':_0x2f8b51(0x185)},'body':JSON['stringify'](_0x15add2)}))['ok'])throw new Error('failed');await _0x237744[_0x2f8b51(0x1ba)][_0x2f8b51(0x183)]['close'](),await _0x237744[_0x2f8b51(0x1ba)]['onDone']?.();}catch{_0x237744['$ok']['shared']?.[_0x2f8b51(0x17e)]?.[_0x2f8b51(0x19e)]?.(_0x2f8b51(0x1b4));}finally{this[_0x2f8b51(0x1bc)]=!0x1;}},'cancel'(){const _0x184e7b=_0x42f5fa;_0x237744[_0x184e7b(0x1ba)][_0x184e7b(0x183)][_0x184e7b(0x1b8)]();}}),'mount'(){const _0x383029=_0x42f5fa;this[_0x383029(0x1b0)]();},'template':_0x42f5fa(0x18a),'style':'.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 _0x16f6(){const _0xa8b17=['PUT','modal','payload_schema','application/json','status','result','apiBase','onDone','\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','82747nJfwAw','701520yYnHGk','defaults','defBuckets','priority','backoff_multiplier','/queue/buckets','max_tries','shared','trim','919044mFNZTA','parseOptInt','enforce','Save\x20the\x20job\x20type\x20first\x20before\x20editing\x20its\x20schema','defRetryDelay','defDoneTtl','tokens','isArray','200JgqSHE','error','job-type-modal','parseOptFloat','jobType','/sample-payloads','ttl','filter','Payload\x20Schema\x20·\x20','buckets','open','defBackoff','isEdit','json','max_concurrency','$ok','keys','719436UUdUza','defPriority','init','map','50MyNbRJ','28008epBpWR','Failed\x20to\x20save\x20job\x20type','active','/schema','POST','close','<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/>','$attr','done_ttl','busy','length','max','defMaxTries','defTtl','bucketOptions','3aGHLoo','10uwVYaO','defFailedTtl','11480205XOmPwx','toast','/queue/job-type/','311154ouUSqO','<create-bucket-modal\x20:modal=\x22modal\x22\x20:on-done=\x22onDone\x22\x20/>'];_0x16f6=function(){return _0xa8b17;};return _0x16f6();}
|
|
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 _0x2d3087=_0x585e;function _0x585e(_0x7f0260,_0x25b897){_0x7f0260=_0x7f0260-0xf9;const _0x5ac416=_0x5ac4();let _0x585e5d=_0x5ac416[_0x7f0260];return _0x585e5d;}(function(_0x4ece03,_0x11c7e3){const _0x2da219=_0x585e,_0xa6c743=_0x4ece03();while(!![]){try{const _0x5ec3db=-parseInt(_0x2da219(0x10c))/0x1+-parseInt(_0x2da219(0x118))/0x2+parseInt(_0x2da219(0x122))/0x3*(-parseInt(_0x2da219(0x11b))/0x4)+-parseInt(_0x2da219(0x130))/0x5+parseInt(_0x2da219(0x121))/0x6*(-parseInt(_0x2da219(0x12f))/0x7)+parseInt(_0x2da219(0x12a))/0x8+-parseInt(_0x2da219(0x106))/0x9*(-parseInt(_0x2da219(0x131))/0xa);if(_0x5ec3db===_0x11c7e3)break;else _0xa6c743['push'](_0xa6c743['shift']());}catch(_0x5b4cdb){_0xa6c743['push'](_0xa6c743['shift']());}}}(_0x5ac4,0x7f163));function _0x5ac4(){const _0x177fe1=['priority','isArray','idempotency_key','9qAoExo','type','map','initialType','timestamp','job','369081sCgIsV','getTime','form-change','filter','payloadInit','data','when','slice','loadBuckets','cron','apiBase','__create__','1326522nsBWDG','buckets','modal','20qknPhH','trim','tokens','backoff','backoff_multiplier','json','1851516vDtSKj','356463FHqyGi','retryDelay','asap','bucketOptions','idempotencyKey','payload','split','join','2322832smajRm','\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','bucket','_emitChange','_populateFromJob','7MkvQtX','3516765MNITyo','28685790thqoyy','max_tries','length','.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}','tags','getWhen','$attr','maxTries','shared','now','dispatchEvent','max','bucket_tokens','whenTs','<create-bucket-modal\x20:modal=\x22modal\x22\x20:on-done=\x22onDone\x22\x20/>','whenMode','toISOString','whenDatetime'];_0x5ac4=function(){return _0x177fe1;};return _0x5ac4();}import _0x396823 from'../../../components/ok-cron-input.ok.js';import _0x8e07ee from'../../../components/ok-json-input.ok.js';import _0x4230bc from'../modals/create-bucket-modal.ok.js';import _0x2d6392 from'../../../stores/okdb-store.js';export default{'tag':'ok-job-form','dependencies':[_0x396823,_0x8e07ee,_0x4230bc],'attr':{'job':{},'initialType':{}},'context':_0x5b03db=>({'type':'','payloadInit':{},'payload':{},'when':null,'whenMode':_0x2d3087(0x124),'whenDatetime':'','whenTs':null,'priority':0x0,'maxTries':null,'retryDelay':0x0,'backoff':0x1,'tags':'','buckets':[],'cron':'','idempotencyKey':'','bucketOptions':[],async 'loadBuckets'(){const _0xaa8e5c=_0x2d3087;try{const _0x9ce4a5=await fetch(_0x2d6392[_0xaa8e5c(0x116)]+'/queue/buckets'),_0x3c7c1d=await _0x9ce4a5[_0xaa8e5c(0x120)]();this[_0xaa8e5c(0x125)]=_0x3c7c1d?.[_0xaa8e5c(0x111)]??[];}catch{this[_0xaa8e5c(0x125)]=[];}},async 'onBucketSelect'(_0xd07c6d,_0x4c8774){const _0x4d3995=_0x2d3087;if(_0x4d3995(0x117)===_0x4c8774){const _0x18faed=this;await _0x5b03db['$ok'][_0x4d3995(0xf9)][_0x4d3995(0x11a)]['open']({'owner':_0x5b03db,'title':'Add\x20Token\x20Bucket','content':_0x4d3995(0xff),'context':_0x2b4aa0=>({'modal':_0x2b4aa0,'onDone':async _0x37264b=>{const _0x45c62f=_0x4d3995;await _0x18faed['loadBuckets'](),_0x18faed[_0x45c62f(0x119)]=_0x18faed['buckets'][_0x45c62f(0x108)]((_0x7050fa,_0x19ef21)=>_0x19ef21===_0xd07c6d?{..._0x7050fa,'id':_0x37264b}:_0x7050fa);}})});}else this[_0x4d3995(0x119)]=this[_0x4d3995(0x119)][_0x4d3995(0x108)]((_0x4c66b0,_0x55eb86)=>_0x55eb86===_0xd07c6d?{..._0x4c66b0,'id':_0x4c8774}:_0x4c66b0);},'setBucketTokens'(_0x5d4ccc,_0xb77807){const _0x254568=_0x2d3087,_0x1e7304=''===_0xb77807?0x1:Math[_0x254568(0xfc)](0x1,parseInt(_0xb77807)||0x1);this[_0x254568(0x119)]=this[_0x254568(0x119)][_0x254568(0x108)]((_0x136237,_0x1b833d)=>_0x1b833d===_0x5d4ccc?{..._0x136237,'tokens':_0x1e7304}:_0x136237);},'addBucket'(){const _0x208360=_0x2d3087;this['buckets']=[...this[_0x208360(0x119)],{'id':'','tokens':0x1}];},'removeBucket'(_0x53b925){const _0x298538=_0x2d3087;this[_0x298538(0x119)]=this[_0x298538(0x119)][_0x298538(0x10f)]((_0x50c637,_0x43d53f)=>_0x43d53f!==_0x53b925);},'getWhen'(){const _0xc3e3a1=_0x2d3087;if('asap'===this[_0xc3e3a1(0x100)])return null;if('datetime'===this[_0xc3e3a1(0x100)]){const _0x233453=new Date(this[_0xc3e3a1(0x102)]);return isNaN(_0x233453['getTime']())?null:_0x233453[_0xc3e3a1(0x10d)]();}return this[_0xc3e3a1(0xfe)];},'_parseTags'(_0x45549d){const _0x23a511=_0x2d3087;if(!_0x45549d)return;const _0x5efbb4=String(_0x45549d)[_0x23a511(0x128)](',')[_0x23a511(0x108)](_0x1f86fa=>_0x1f86fa[_0x23a511(0x11c)]())['filter'](Boolean);return _0x5efbb4[_0x23a511(0x133)]?_0x5efbb4:void 0x0;},'_emitChange'(){const _0x1dd243=_0x2d3087,_0x573cd1=this[_0x1dd243(0x136)](),_0x1f44bf=String(this[_0x1dd243(0x115)]||'')[_0x1dd243(0x11c)]();_0x5b03db['$el'][_0x1dd243(0xfb)](new CustomEvent(_0x1dd243(0x10e),{'bubbles':!0x1,'detail':{'type':String(this[_0x1dd243(0x107)]||'')[_0x1dd243(0x11c)](),'payload':this[_0x1dd243(0x127)],'priority':Number(this[_0x1dd243(0x103)])||0x0,'retry_delay':Number(this[_0x1dd243(0x123)])||0x0,'backoff_multiplier':Number(this[_0x1dd243(0x11e)])||0x1,'max_tries':null!==this['maxTries']&&''!==this[_0x1dd243(0x138)]?Number(this[_0x1dd243(0x138)]):null,'buckets':this['buckets'][_0x1dd243(0x10f)](_0xf72827=>_0xf72827['id'])[_0x1dd243(0x108)](_0x5aa508=>({'id':_0x5aa508['id'],'tokens':_0x5aa508['tokens']||0x1})),'when':_0x573cd1,'cron':_0x1f44bf||null,'tags':this['_parseTags'](this[_0x1dd243(0x135)]),'idempotency_key':this[_0x1dd243(0x126)]||null}}));},'_populateFromJob'(_0x213c59){const _0x44b2d7=_0x2d3087;if(!_0x213c59)return this[_0x44b2d7(0x107)]='',this[_0x44b2d7(0x110)]={},this['payload']={},this['when']=null,this[_0x44b2d7(0x100)]='asap',this['whenDatetime']='',this[_0x44b2d7(0xfe)]=null,this[_0x44b2d7(0x103)]=0x0,this['maxTries']=null,this['retryDelay']=0x0,this['backoff']=0x1,this[_0x44b2d7(0x135)]='',this['buckets']=[{'id':'','tokens':0x1}],this[_0x44b2d7(0x115)]='',this[_0x44b2d7(0x126)]='',void this[_0x44b2d7(0x12d)]();this[_0x44b2d7(0x107)]=_0x213c59?.['type']??'',this[_0x44b2d7(0x110)]=_0x213c59?.['payload']??{},this[_0x44b2d7(0x127)]=_0x213c59?.[_0x44b2d7(0x127)]??{},this['when']=_0x213c59?.[_0x44b2d7(0x112)]??null,this[_0x44b2d7(0x103)]=_0x213c59?.[_0x44b2d7(0x103)]??0x0,this['maxTries']=_0x213c59?.[_0x44b2d7(0x132)]??null,this['retryDelay']=_0x213c59?.['retry_delay']??0x0,this[_0x44b2d7(0x11e)]=_0x213c59?.[_0x44b2d7(0x11f)]??0x1,this['tags']=Array[_0x44b2d7(0x104)](_0x213c59?.[_0x44b2d7(0x135)])?_0x213c59['tags'][_0x44b2d7(0x129)](',\x20'):'',this['cron']=_0x213c59?.['cron']??'',this['idempotencyKey']=_0x213c59?.[_0x44b2d7(0x105)]||'',_0x213c59?.[_0x44b2d7(0x112)]&&_0x213c59['when']>Date[_0x44b2d7(0xfa)]()-0x3e8?(this['whenMode']=_0x44b2d7(0x10a),this[_0x44b2d7(0x102)]=new Date(_0x213c59[_0x44b2d7(0x112)])[_0x44b2d7(0x101)]()[_0x44b2d7(0x113)](0x0,0x10),this[_0x44b2d7(0xfe)]=_0x213c59[_0x44b2d7(0x112)]):(this[_0x44b2d7(0x100)]=_0x44b2d7(0x124),this[_0x44b2d7(0x102)]='',this[_0x44b2d7(0xfe)]=null),Array[_0x44b2d7(0x104)](_0x213c59?.[_0x44b2d7(0x119)])&&_0x213c59[_0x44b2d7(0x119)]['length']>0x0?this['buckets']=_0x213c59['buckets']['map'](_0x516bd7=>({'id':_0x516bd7['id'],'tokens':_0x516bd7[_0x44b2d7(0x11d)]??0x1})):this[_0x44b2d7(0x119)]=_0x213c59?.[_0x44b2d7(0x12c)]?[{'id':_0x213c59[_0x44b2d7(0x12c)],'tokens':_0x213c59[_0x44b2d7(0xfd)]??0x1}]:[],this[_0x44b2d7(0x12d)]();}}),async 'mount'(_0x1f597b){const _0x51bff4=_0x2d3087;await this[_0x51bff4(0x114)](),this[_0x51bff4(0x12e)](_0x1f597b[_0x51bff4(0x137)][_0x51bff4(0x10b)]??null),_0x1f597b['$attr'][_0x51bff4(0x109)]&&(this['type']=_0x1f597b[_0x51bff4(0x137)][_0x51bff4(0x109)]),setTimeout(()=>this[_0x51bff4(0x12d)](),0x0);},'watch':{'job'(_0x17be13){const _0x37021f=_0x2d3087;this[_0x37021f(0x12e)](_0x17be13);},'type'(){const _0x2902ba=_0x2d3087;this[_0x2902ba(0x12d)]();},'payload'(){const _0x56e0b3=_0x2d3087;this[_0x56e0b3(0x12d)]();},'priority'(){const _0x2cab78=_0x2d3087;this[_0x2cab78(0x12d)]();},'retryDelay'(){this['_emitChange']();},'backoff'(){this['_emitChange']();},'maxTries'(){const _0x580bdf=_0x2d3087;this[_0x580bdf(0x12d)]();},'buckets'(){const _0x1a8b2f=_0x2d3087;this[_0x1a8b2f(0x12d)]();},'whenMode'(){this['_emitChange']();},'whenDatetime'(){const _0x3737f0=_0x2d3087;this[_0x3737f0(0x12d)]();},'whenTs'(){const _0x4a4d0b=_0x2d3087;this[_0x4a4d0b(0x12d)]();},'cron'(){const _0x2655f2=_0x2d3087;this[_0x2655f2(0x12d)]();},'tags'(){const _0x48c317=_0x2d3087;this[_0x48c317(0x12d)]();},'idempotencyKey'(){const _0x15151c=_0x2d3087;this[_0x15151c(0x12d)]();}},'template':_0x2d3087(0x12b),'style':_0x2d3087(0x134)};
|
|
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 _0x1a2964=_0x120f;function _0x120f(_0x3c1c8d,_0x15e273){_0x3c1c8d=_0x3c1c8d-0x1bd;const _0x374302=_0x3743();let _0x120fce=_0x374302[_0x3c1c8d];return _0x120fce;}function _0x3743(){const _0x2860e1=['Edit\x20Bucket','min','capacity','3583822beIzOZ','confirm','buckets','shared','\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','application/json','</b>\x22?','2989508Rldgvz','Failed\x20to\x20load\x20buckets','json','var(--okdb-success)','busy','refill_every','success','Deleted\x20\x22','Refill\x20failed','Delete\x20failed','apiBase','error','$ok','data','queue-buckets','round','tokens','/queue/bucket/update/','55857550FQPrBN','\x20/\x20','toast','info','570471gUdRfX','Add\x20Token\x20Bucket','1239ImhSsb','8228295VdqYHi','okdb','297MpsuRo','open','49144UMYMHL','modal','1740ZJCpeK','3ARbjXE','load','selectedEnv','<edit-bucket-modal\x20:modal=\x22modal\x22\x20:edit-mode=\x22editMode\x22\x20:initial-form=\x22initialForm\x22\x20:on-done=\x22onDone\x22\x20/>','stores','var(--okdb-warning)','/queue/buckets','toFixed','refill_amount','message','/queue/bucket/remove/','POST'];_0x3743=function(){return _0x2860e1;};return _0x3743();}(function(_0x4522eb,_0x1cf8aa){const _0x577d0f=_0x120f,_0x2e71ad=_0x4522eb();while(!![]){try{const _0xe949bf=-parseInt(_0x577d0f(0x1cb))/0x1+-parseInt(_0x577d0f(0x1e4))/0x2+-parseInt(_0x577d0f(0x1d5))/0x3*(parseInt(_0x577d0f(0x1eb))/0x4)+-parseInt(_0x577d0f(0x1ce))/0x5+parseInt(_0x577d0f(0x1d4))/0x6*(-parseInt(_0x577d0f(0x1cd))/0x7)+-parseInt(_0x577d0f(0x1d2))/0x8*(-parseInt(_0x577d0f(0x1d0))/0x9)+parseInt(_0x577d0f(0x1c7))/0xa;if(_0xe949bf===_0x1cf8aa)break;else _0x2e71ad['push'](_0x2e71ad['shift']());}catch(_0x2cab8a){_0x2e71ad['push'](_0x2e71ad['shift']());}}}(_0x3743,0xefade));import _0x5063fe from'../modals/edit-bucket-modal.ok.js';import _0x9b4b4f from'../../../stores/okdb-store.js';export default{'tag':_0x1a2964(0x1c3),'dependencies':[_0x5063fe],'context':_0x417816=>({'busy':!0x1,'buckets':[],'error':null,async 'load'(){const _0x52b6aa=_0x1a2964;this['busy']=!0x0,this[_0x52b6aa(0x1c0)]=null;try{const _0x4b8ed7=await fetch(_0x9b4b4f[_0x52b6aa(0x1bf)]+_0x52b6aa(0x1db)),_0xd5b75b=await _0x4b8ed7[_0x52b6aa(0x1ed)]();if(!_0x4b8ed7['ok'])throw new Error(_0xd5b75b?.[_0x52b6aa(0x1c0)]?.['message']||_0x52b6aa(0x1ec));this[_0x52b6aa(0x1e6)]=_0xd5b75b[_0x52b6aa(0x1c2)]??[];}catch(_0x3d97c8){this['error']=_0x3d97c8?.[_0x52b6aa(0x1de)]||String(_0x3d97c8),this[_0x52b6aa(0x1e6)]=[];}finally{this[_0x52b6aa(0x1ef)]=!0x1;}},async 'openCreate'(){const _0x9b0b24=_0x1a2964;await _0x417816[_0x9b0b24(0x1c1)][_0x9b0b24(0x1e7)][_0x9b0b24(0x1d3)]['open']({'owner':_0x417816,'title':_0x9b0b24(0x1cc),'content':_0x9b0b24(0x1d8),'context':_0x1b353b=>({'modal':_0x1b353b,'editMode':!0x1,'initialForm':{},'onDone':async()=>{const _0x2cba05=_0x9b0b24;await this[_0x2cba05(0x1d6)]();}})});},async 'openEdit'(_0x427901){const _0xe4d2c6=_0x1a2964;await _0x417816[_0xe4d2c6(0x1c1)][_0xe4d2c6(0x1e7)]['modal'][_0xe4d2c6(0x1d1)]({'owner':_0x417816,'title':_0xe4d2c6(0x1e1),'content':_0xe4d2c6(0x1d8),'context':_0x355f4b=>({'modal':_0x355f4b,'editMode':!0x0,'initialForm':{'id':_0x427901['id'],'capacity':_0x427901[_0xe4d2c6(0x1e3)],'tokens':_0x427901['tokens'],'refill_amount':_0x427901['refill_amount']??0x0,'refill_every':_0x427901[_0xe4d2c6(0x1f0)]??0x0},'onDone':async()=>{const _0xcc2588=_0xe4d2c6;await this[_0xcc2588(0x1d6)]();}})});},async 'remove'(_0x21a273){const _0x2ad734=_0x1a2964;if(await _0x417816[_0x2ad734(0x1c1)][_0x2ad734(0x1e7)][_0x2ad734(0x1d3)][_0x2ad734(0x1e5)]('Delete\x20bucket\x20\x22<b>'+_0x21a273['id']+_0x2ad734(0x1ea)))try{if(!(await fetch(_0x9b4b4f[_0x2ad734(0x1bf)]+_0x2ad734(0x1df)+encodeURIComponent(_0x21a273['id']),{'method':'POST'}))['ok'])throw new Error(_0x2ad734(0x1be));_0x417816[_0x2ad734(0x1c1)][_0x2ad734(0x1e7)]?.[_0x2ad734(0x1c9)]?.[_0x2ad734(0x1ca)]?.(_0x2ad734(0x1f2)+_0x21a273['id']+'\x22'),await this[_0x2ad734(0x1d6)]();}catch(_0x3f864f){_0x417816['$ok']['shared']?.[_0x2ad734(0x1c9)]?.[_0x2ad734(0x1c0)]?.(_0x3f864f?.[_0x2ad734(0x1de)]||_0x2ad734(0x1be));}},async 'refill'(_0x561e44){const _0x7782cf=_0x1a2964;try{if(!(await fetch(_0x9b4b4f[_0x7782cf(0x1bf)]+_0x7782cf(0x1c6)+encodeURIComponent(_0x561e44['id']),{'method':_0x7782cf(0x1e0),'headers':{'Content-Type':_0x7782cf(0x1e9)},'body':JSON['stringify']({'tokens':_0x561e44[_0x7782cf(0x1e3)]})}))['ok'])throw new Error(_0x7782cf(0x1bd));_0x417816['$ok']['shared']?.['toast']?.[_0x7782cf(0x1f1)]?.('Refilled\x20\x22'+_0x561e44['id']+'\x22'),await this[_0x7782cf(0x1d6)]();}catch(_0x54cd17){_0x417816[_0x7782cf(0x1c1)][_0x7782cf(0x1e7)]?.[_0x7782cf(0x1c9)]?.['error']?.(_0x54cd17?.['message']||_0x7782cf(0x1bd));}},'tokenPct':_0x1bf6bf=>_0x1bf6bf[_0x1a2964(0x1e3)]?Math[_0x1a2964(0x1e2)](0x64,Math[_0x1a2964(0x1c4)](_0x1bf6bf[_0x1a2964(0x1c5)]/_0x1bf6bf[_0x1a2964(0x1e3)]*0x64)):0x0,'pctColor':_0x4ff88b=>_0x4ff88b>0x3c?_0x1a2964(0x1ee):_0x4ff88b>0x19?_0x1a2964(0x1da):'var(--okdb-danger)','refillLabel'(_0x13dc65){const _0x2849b3=_0x1a2964;if(!_0x13dc65[_0x2849b3(0x1f0)]||!_0x13dc65[_0x2849b3(0x1dd)])return'No\x20refill';const _0x372080=_0x13dc65[_0x2849b3(0x1f0)];let _0x115ec5;return _0x115ec5=_0x372080>=0x36ee80?(_0x372080/0x36ee80)[_0x2849b3(0x1dc)](0x1)+'h':_0x372080>=0xea60?Math['round'](_0x372080/0xea60)+'m':Math[_0x2849b3(0x1c4)](_0x372080/0x3e8)+'s','+'+_0x13dc65['refill_amount']+_0x2849b3(0x1c8)+_0x115ec5;}}),async 'mount'(_0x285dc6){const _0x3eec98=_0x1a2964;await this['load'](),_0x285dc6['$watch'](()=>_0x285dc6[_0x3eec98(0x1c1)][_0x3eec98(0x1d9)][_0x3eec98(0x1cf)][_0x3eec98(0x1d7)],()=>this[_0x3eec98(0x1d6)]());},'template':_0x1a2964(0x1e8)};
|
|
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();}
|