@kedem/okdb 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/bin/okdb.js +1 -1
- package/okdb-data/default/data.mdb +0 -0
- package/okdb-data/default/lock.mdb +0 -0
- package/okdb-data/~log/data.mdb +0 -0
- package/okdb-data/~log/lock.mdb +0 -0
- package/okdb-data/~system/data.mdb +0 -0
- package/okdb-data/~system/lock.mdb +0 -0
- package/okdb.js +1 -1
- package/package.json +1 -1
- 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/view-models/type-query-vm.js +1 -1
|
@@ -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 _0x370ce6=_0x5578;(function(_0x46c72b,_0x217ddb){const _0x4bb3c2=_0x5578,_0x7dd057=_0x46c72b();while(!![]){try{const _0x2a6bb4=-parseInt(_0x4bb3c2(0xa6))/0x1+-parseInt(_0x4bb3c2(0xb0))/0x2*(-parseInt(_0x4bb3c2(0x84))/0x3)+-parseInt(_0x4bb3c2(0xa5))/0x4*(parseInt(_0x4bb3c2(0x89))/0x5)+parseInt(_0x4bb3c2(0x9b))/0x6*(parseInt(_0x4bb3c2(0xa8))/0x7)+-parseInt(_0x4bb3c2(0x8d))/0x8*(parseInt(_0x4bb3c2(0x76))/0x9)+-parseInt(_0x4bb3c2(0x9a))/0xa*(parseInt(_0x4bb3c2(0x72))/0xb)+parseInt(_0x4bb3c2(0x97))/0xc;if(_0x2a6bb4===_0x217ddb)break;else _0x7dd057['push'](_0x7dd057['shift']());}catch(_0xb683e){_0x7dd057['push'](_0x7dd057['shift']());}}}(_0x28f1,0x94b37));import _0x385b33 from'@toolkit/elements/ok-icon.ok.js';import _0x356c2c from'@toolkit/core/ok-overlay.ok.js';import _0x161b4c from'../../../components/ok-cron-input.ok.js';import _0x319d9c from'../../../components/ok-json-input.ok.js';function _0x5578(_0x39a4af,_0x562bce){_0x39a4af=_0x39a4af-0x6b;const _0x28f1e0=_0x28f1();let _0x5578e2=_0x28f1e0[_0x39a4af];return _0x5578e2;}import _0x126164 from'./create-bucket-modal.ok.js';function _0x28f1(){const _0x2d8a59=['busy','Failed\x20to\x20save\x20job','map','bucket','whenMode','asap','shared','timestamp','retryDelay','payloadInit','604967ZdaYcW','success','payload','filter','8828289RUuvMJ','loadBuckets','message','job','getTime','$ok','backoff','open','apiBase','close','/queue/job/','isArray','type','length','2583DUMwkP','trim','max_tries','$attr','loading','5PnWUwV','split','tags','POST','8ALmtNM','max','priority','maxTries','bucket_tokens','data','whenDatetime','progress','when','join','9849264EdQsDA','application/json','Job\x20updated','50KWusTF','18vficnL','idempotencyKey','applyJob','modal','bucketOptions','all','toast','onDone','tokens','Failed\x20to\x20load\x20job','3976620zztria','80484leMkjP','error','2410639RXfvmZ','__create__','datetime','backoff_multiplier','whenTs','<create-bucket-modal\x20:modal=\x22modal\x22\x20:on-done=\x22onDone\x22\x20/>','cron','json','2522WDaXJt','/queue/buckets','.mode-btn{font-size:11px;padding:2px\x208px;opacity:.6;border-radius:4px}.mode-btn--on{opacity:1;background:color-mix(in\x20srgb,var(--okdb-accent)\x2013%,transparent);border-color:color-mix(in\x20srgb,var(--okdb-accent)\x2033%,transparent);color:var(--okdb-accent)}.btn-ghost{background:0\x200;border:1px\x20solid\x20var(--okdb-app-border);border-radius:5px;color:inherit;cursor:pointer;opacity:.6;padding:2px\x208px;font-size:12px}.btn-ghost:hover{opacity:1;border-color:color-mix(in\x20srgb,var(--okdb-accent)\x2033%,transparent)}.btn-ghost--sm{font-size:11px;padding:1px\x207px}','\x0a<div\x20style=\x22position:relative;\x20min-width:720px;\x20max-width:calc(100vw\x20-\x2080px);\x20display:flex;\x20flex-direction:column;\x20gap:12px;\x22>\x0a\x20\x20<if\x20:=\x22busy\x20||\x20loading\x22>\x0a\x20\x20\x20\x20<ok-overlay>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22loader-center\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22loader\x22\x20class=\x22spin\x22\x20style=\x22width:32px;height:32px;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</ok-overlay>\x0a\x20\x20</if>\x0a\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x20opacity:.8;\x20font-size:12px;\x22>\x0a\x20\x20\x20\x20<span>ID:\x20<b>{{\x20job?.id\x20}}</b></span>\x0a\x20\x20\x20\x20<span>Status:\x20<b>{{\x20job?.status\x20}}</b></span>\x0a\x20\x20\x20\x20<span>Tries:\x20<b>{{\x20job?.tries\x20}}\x20/\x20{{\x20job?.max_tries\x20}}</b></span>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Row\x201:\x20type\x20+\x20priority\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Type</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20placeholder=\x22e.g.\x20email.send\x22\x20:value=\x22type\x22\x20@input=\x22type\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22width:120px;\x22><label>Priority</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20placeholder=\x220\x22\x20:value=\x22priority\x22\x20@input=\x22priority\x20=\x20Number($el.value)\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Row\x202:\x20tags\x20+\x20idempotency\x20key\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:10px;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Tags</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20placeholder=\x22comma\x20separated\x22\x20:value=\x22tags\x22\x20@input=\x22tags\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Idempotency\x20Key</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20placeholder=\x22optional\x20—\x20prevents\x20duplicate\x20jobs\x22\x20:value=\x22idempotencyKey\x22\x20@input=\x22idempotencyKey\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Buckets\x20-->\x0a\x20\x20<div\x20class=\x22field\x22>\x0a\x20\x20\x20\x20<label>Buckets\x20<span\x20style=\x22opacity:.4;\x20font-weight:400;\x20font-size:11px;\x22>(rate\x20limiting)</span></label>\x0a\x20\x20\x20\x20<each\x20:of=\x22buckets\x22\x20let:item=\x22b\x22\x20let:index=\x22i\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:6px;\x20align-items:center;\x20margin-bottom:4px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<select\x20style=\x22flex:1;\x22\x20@change=\x22onBucketSelect(i,\x20$el.value)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>—\x20none\x20—</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20as=\x22repeat\x22\x20:of=\x22bucketOptions\x22\x20let:item=\x22opt\x22\x20:value=\x22opt.id\x22\x20:selected=\x22opt.id\x20===\x20b.id\x22>{{\x20opt.id\x20}}</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22__create__\x22>+\x20Create\x20bucket…</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20style=\x22width:72px;\x22\x20type=\x22number\x22\x20min=\x221\x22\x20placeholder=\x22tokens\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22b.tokens\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22setBucketTokens(i,\x20$el.value)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x22\x20@click=\x22removeBucket(i)\x22\x20title=\x22Remove\x22>✕</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-ghost--sm\x22\x20@click=\x22addBucket()\x22\x20style=\x22margin-top:2px;\x22>+\x20Add\x20bucket</button>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Row\x203:\x20when\x20+\x20max\x20tries\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>When</label>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:4px;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22whenMode===\x27asap\x27\x20?\x20\x27mode-btn\x20mode-btn--on\x27\x20:\x20\x27mode-btn\x27\x22\x20@click=\x22whenMode=\x27asap\x27\x22>ASAP</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22whenMode===\x27datetime\x27\x20?\x20\x27mode-btn\x20mode-btn--on\x27\x20:\x20\x27mode-btn\x27\x22\x20@click=\x22whenMode=\x27datetime\x27\x22>Date</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22whenMode===\x27timestamp\x27\x20?\x20\x27mode-btn\x20mode-btn--on\x27\x20:\x20\x27mode-btn\x27\x22\x20@click=\x22whenMode=\x27timestamp\x27\x22>TS</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22whenMode\x20===\x20\x27datetime\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22datetime-local\x22\x20style=\x22flex:1;\x22\x20:value=\x22whenDatetime\x22\x20@input=\x22whenDatetime\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22whenMode\x20===\x20\x27timestamp\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20style=\x22flex:1;\x22\x20placeholder=\x22ms\x20timestamp\x22\x20:value=\x22whenTs\x22\x20@input=\x22whenTs\x20=\x20$el.value\x20===\x20\x27\x27\x20?\x20null\x20:\x20Number($el.value)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22whenMode\x20===\x20\x27asap\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.5;\x20font-size:12px;\x20padding:0\x208px;\x22>Run\x20immediately</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22width:120px;\x22><label>Max\x20tries</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20placeholder=\x22unlimited\x22\x20:value=\x22maxTries\x22\x20@input=\x22maxTries\x20=\x20$el.value\x20===\x20\x27\x27\x20?\x20null\x20:\x20Number($el.value)\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Row\x204:\x20retry\x20delay\x20+\x20backoff\x20+\x20cron\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Retry\x20delay\x20(ms)</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20placeholder=\x220\x22\x20:value=\x22retryDelay\x22\x20@input=\x22retryDelay\x20=\x20Number($el.value)\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22width:120px;\x22><label>Backoff\x20multiplier</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20step=\x220.1\x22\x20placeholder=\x221\x22\x20:value=\x22backoff\x22\x20@input=\x22backoff\x20=\x20Number($el.value)\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Cron</label>\x0a\x20\x20\x20\x20\x20\x20<ok-cron-input\x20:value=\x22cron\x22\x20placeholder=\x22optional\x22\x20@change=\x22cron\x20=\x20$event.detail\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Row\x205:\x20progress\x20+\x20status\x20message\x20(edit-specific)\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Progress</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20placeholder=\x22—\x22\x20:value=\x22progress\x22\x20@input=\x22progress\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Status\x20message</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20placeholder=\x22—\x22\x20:value=\x22statusMessage\x22\x20@input=\x22statusMessage\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Payload\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20<span\x20style=\x22opacity:.7;\x20font-size:12px;\x22>Payload</span>\x0a\x20\x20\x20\x20<ok-json-input\x0a\x20\x20\x20\x20\x20\x20mode=\x22textarea\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22height:260px;\x22\x0a\x20\x20\x20\x20\x20\x20:value=\x22payloadInit\x22\x0a\x20\x20\x20\x20\x20\x20@edit=\x22payload\x20=\x20$event.detail\x22\x0a\x20\x20\x20\x20/>\x0a\x20\x20</div>\x0a\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:10px;\x20justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20<button\x20@click=\x22cancel()\x22>Cancel</button>\x0a\x20\x20\x20\x20<button\x20@click=\x22save()\x22\x20:disabled=\x22busy\x20||\x20loading\x20||\x20!type\x22>Save</button>\x0a\x20\x20</div>\x0a</div>\x0a','buckets','/update'];_0x28f1=function(){return _0x2d8a59;};return _0x28f1();}import _0x51a8f3 from'../../../stores/okdb-store.js';export default{'tag':'edit-job-modal','dependencies':[_0x161b4c,_0x319d9c,_0x126164,_0x356c2c,_0x385b33],'attr':{'modal':{},'jobId':{},'onDone':{}},'context':_0x1c2c2d=>({'busy':!0x1,'loading':!0x1,'job':null,'type':'','payloadInit':{},'payload':{},'priority':0x0,'maxTries':null,'retryDelay':0x0,'backoff':0x1,'tags':'','buckets':[],'cron':'','idempotencyKey':'','whenMode':_0x370ce6(0x6d),'whenDatetime':'','whenTs':null,'progress':'','statusMessage':'','bucketOptions':[],async 'loadBuckets'(){const _0x5befb8=_0x370ce6;try{const _0x3a195b=await fetch(_0x51a8f3[_0x5befb8(0x7e)]+_0x5befb8(0xb1)),_0x55bf57=await _0x3a195b[_0x5befb8(0xaf)]();this[_0x5befb8(0x9f)]=_0x55bf57?.['data']??[];}catch{this['bucketOptions']=[];}},async 'onBucketSelect'(_0xfcc37c,_0x2d6531){const _0x10314e=_0x370ce6;if(_0x10314e(0xa9)===_0x2d6531){const _0x1477e1=this;await _0x1c2c2d[_0x10314e(0x7b)]['shared'][_0x10314e(0x9e)][_0x10314e(0x7d)]({'owner':_0x1c2c2d,'title':'Add\x20Token\x20Bucket','content':_0x10314e(0xad),'context':_0x1a3e23=>({'modal':_0x1a3e23,'onDone':async _0x30c57b=>{const _0x445192=_0x10314e;await _0x1477e1[_0x445192(0x77)](),_0x1477e1['buckets']=_0x1477e1[_0x445192(0xb4)][_0x445192(0xb8)]((_0x3c9d81,_0x198a86)=>_0x198a86===_0xfcc37c?{..._0x3c9d81,'id':_0x30c57b}:_0x3c9d81);}})});}else this[_0x10314e(0xb4)]=this[_0x10314e(0xb4)]['map']((_0x30dea9,_0x33637a)=>_0x33637a===_0xfcc37c?{..._0x30dea9,'id':_0x2d6531}:_0x30dea9);},'setBucketTokens'(_0x1c6692,_0x45413e){const _0x132351=_0x370ce6,_0x6f42cc=''===_0x45413e?0x1:Math[_0x132351(0x8e)](0x1,parseInt(_0x45413e)||0x1);this[_0x132351(0xb4)]=this[_0x132351(0xb4)][_0x132351(0xb8)]((_0x2c833e,_0x491b2e)=>_0x491b2e===_0x1c6692?{..._0x2c833e,'tokens':_0x6f42cc}:_0x2c833e);},'addBucket'(){const _0x2fe541=_0x370ce6;this[_0x2fe541(0xb4)]=[...this[_0x2fe541(0xb4)],{'id':'','tokens':0x1}];},'removeBucket'(_0x50348d){const _0x4f2fb2=_0x370ce6;this['buckets']=this[_0x4f2fb2(0xb4)][_0x4f2fb2(0x75)]((_0x584824,_0x17a9be)=>_0x17a9be!==_0x50348d);},'getWhen'(){const _0x34b1cd=_0x370ce6;if('asap'===this['whenMode'])return null;if(_0x34b1cd(0xaa)===this['whenMode']){const _0x442281=new Date(this[_0x34b1cd(0x93)]);return isNaN(_0x442281[_0x34b1cd(0x7a)]())?null:_0x442281[_0x34b1cd(0x7a)]();}return this[_0x34b1cd(0xac)];},'_parseTags'(_0x3a2733){const _0x4139a0=_0x370ce6;if(!_0x3a2733)return;const _0x4c155d=String(_0x3a2733)[_0x4139a0(0x8a)](',')[_0x4139a0(0xb8)](_0xe6bc5a=>_0xe6bc5a[_0x4139a0(0x85)]())['filter'](Boolean);return _0x4c155d[_0x4139a0(0x83)]?_0x4c155d:void 0x0;},'applyJob'(_0x3eaa6c){const _0x599a75=_0x370ce6;_0x3eaa6c&&(this[_0x599a75(0x82)]=_0x3eaa6c[_0x599a75(0x82)]??'',this[_0x599a75(0x71)]=_0x3eaa6c[_0x599a75(0x74)]??{},this[_0x599a75(0x74)]=_0x3eaa6c['payload']??{},this[_0x599a75(0x8f)]=_0x3eaa6c['priority']??0x0,this['maxTries']=_0x3eaa6c[_0x599a75(0x86)]??null,this[_0x599a75(0x70)]=_0x3eaa6c['retry_delay']??0x0,this[_0x599a75(0x7c)]=_0x3eaa6c[_0x599a75(0xab)]??0x1,this[_0x599a75(0x8b)]=Array[_0x599a75(0x81)](_0x3eaa6c[_0x599a75(0x8b)])?_0x3eaa6c[_0x599a75(0x8b)][_0x599a75(0x96)](',\x20'):'',this[_0x599a75(0xae)]=_0x3eaa6c[_0x599a75(0xae)]??'',this[_0x599a75(0x9c)]=_0x3eaa6c?.['idempotency_key']||'',this[_0x599a75(0x94)]=_0x3eaa6c['progress']??'',this['statusMessage']=_0x3eaa6c['status_message']??'',_0x3eaa6c['when']&&_0x3eaa6c[_0x599a75(0x95)]>Date['now']()-0x3e8?(this[_0x599a75(0x6c)]=_0x599a75(0x6f),this[_0x599a75(0x93)]=new Date(_0x3eaa6c[_0x599a75(0x95)])['toISOString']()['slice'](0x0,0x10),this[_0x599a75(0xac)]=_0x3eaa6c['when']):(this['whenMode']='asap',this['whenDatetime']='',this['whenTs']=null),Array[_0x599a75(0x81)](_0x3eaa6c[_0x599a75(0xb4)])&&_0x3eaa6c['buckets'][_0x599a75(0x83)]>0x0?this['buckets']=_0x3eaa6c[_0x599a75(0xb4)][_0x599a75(0xb8)](_0x4e77b0=>({'id':_0x4e77b0['id'],'tokens':_0x4e77b0[_0x599a75(0xa3)]??0x1})):_0x3eaa6c[_0x599a75(0x6b)]?this[_0x599a75(0xb4)]=[{'id':_0x3eaa6c[_0x599a75(0x6b)],'tokens':_0x3eaa6c[_0x599a75(0x91)]??0x1}]:this[_0x599a75(0xb4)]=[]);},async 'load'(){const _0x31915c=_0x370ce6;this[_0x31915c(0x88)]=!0x0;try{const _0x31b46f=await fetch(_0x51a8f3[_0x31915c(0x7e)]+_0x31915c(0x80)+encodeURIComponent(_0x1c2c2d['$attr']['jobId'])),_0x24684a=await _0x31b46f['json']();if(!_0x31b46f['ok'])throw new Error(_0x24684a?.['error']?.[_0x31915c(0x78)]||_0x31915c(0xa4));this['job']=_0x24684a?.[_0x31915c(0x92)]??null,this[_0x31915c(0x9d)](this[_0x31915c(0x79)]);}catch(_0x19261f){_0x1c2c2d[_0x31915c(0x7b)]['shared']?.[_0x31915c(0xa1)]?.[_0x31915c(0xa7)]?.(_0x19261f?.[_0x31915c(0x78)]||_0x31915c(0xa4)),await _0x1c2c2d[_0x31915c(0x87)]['modal'][_0x31915c(0x7f)]();}finally{this['loading']=!0x1;}},async 'save'(){const _0x52b483=_0x370ce6;if(this[_0x52b483(0x79)]){this[_0x52b483(0xb6)]=!0x0;try{const _0x296b20=this['getWhen'](),_0x479fe9=String(this[_0x52b483(0xae)]||'')[_0x52b483(0x85)]()||null,_0x10de61=this[_0x52b483(0xb4)][_0x52b483(0x75)](_0x544e99=>_0x544e99['id'])[_0x52b483(0xb8)](_0x4ddf53=>({'id':_0x4ddf53['id'],'tokens':_0x4ddf53['tokens']||0x1})),_0x349f20=this['_parseTags'](this['tags']),_0x5640ad={'type':String(this[_0x52b483(0x82)]||'')['trim'](),'payload':this[_0x52b483(0x74)],'when':_0x296b20,'priority':Number(this['priority'])||0x0,'tags':_0x349f20??this[_0x52b483(0x79)]['tags'],'buckets':_0x10de61,'cron':_0x479fe9,'max_tries':null!==this[_0x52b483(0x90)]&&''!==this['maxTries']?Number(this[_0x52b483(0x90)]):null,'retry_delay':Number(this[_0x52b483(0x70)])||0x0,'backoff_multiplier':Number(this[_0x52b483(0x7c)])||0x1,'progress':this[_0x52b483(0x94)]||null,'status_message':this['statusMessage']||null,'idempotency_key':this[_0x52b483(0x9c)][_0x52b483(0x85)]()||null},_0x56bf48=await fetch(_0x51a8f3[_0x52b483(0x7e)]+'/queue/job/'+encodeURIComponent(this[_0x52b483(0x79)]['id'])+_0x52b483(0xb5),{'method':_0x52b483(0x8c),'headers':{'Content-Type':_0x52b483(0x98)},'body':JSON['stringify'](_0x5640ad)}),_0x3ffab5=await _0x56bf48['json']();if(!_0x56bf48['ok'])throw new Error(_0x3ffab5?.[_0x52b483(0xa7)]?.['message']||_0x52b483(0xb7));_0x1c2c2d[_0x52b483(0x7b)][_0x52b483(0x6e)]?.['toast']?.[_0x52b483(0x73)]?.(_0x52b483(0x99)),await _0x1c2c2d[_0x52b483(0x87)][_0x52b483(0x9e)][_0x52b483(0x7f)](),await _0x1c2c2d[_0x52b483(0x87)][_0x52b483(0xa2)]?.(_0x3ffab5?.[_0x52b483(0x92)]??null);}catch(_0x49efd0){_0x1c2c2d[_0x52b483(0x7b)][_0x52b483(0x6e)]?.[_0x52b483(0xa1)]?.[_0x52b483(0xa7)]?.(_0x49efd0?.[_0x52b483(0x78)]||'Failed\x20to\x20save\x20job');}finally{this[_0x52b483(0xb6)]=!0x1;}}},'cancel'(){const _0x391309=_0x370ce6;_0x1c2c2d[_0x391309(0x87)][_0x391309(0x9e)][_0x391309(0x7f)]();}}),async 'mount'(){const _0x195601=_0x370ce6;await Promise[_0x195601(0xa0)]([this['load'](),this[_0x195601(0x77)]()]);},'template':_0x370ce6(0xb3),'style':_0x370ce6(0xb2)};
|
|
@@ -1 +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
|
+
const _0x408539=_0x115b;(function(_0x21a50e,_0xfce3d0){const _0x42ec45=_0x115b,_0x52ea29=_0x21a50e();while(!![]){try{const _0x2f26ce=parseInt(_0x42ec45(0x21e))/0x1+parseInt(_0x42ec45(0x1d5))/0x2*(parseInt(_0x42ec45(0x1b6))/0x3)+parseInt(_0x42ec45(0x1c5))/0x4*(-parseInt(_0x42ec45(0x1f3))/0x5)+parseInt(_0x42ec45(0x1f2))/0x6*(-parseInt(_0x42ec45(0x1ae))/0x7)+parseInt(_0x42ec45(0x1c3))/0x8+parseInt(_0x42ec45(0x1ca))/0x9*(-parseInt(_0x42ec45(0x214))/0xa)+-parseInt(_0x42ec45(0x20c))/0xb*(-parseInt(_0x42ec45(0x1ef))/0xc);if(_0x2f26ce===_0xfce3d0)break;else _0x52ea29['push'](_0x52ea29['shift']());}catch(_0x382f08){_0x52ea29['push'](_0x52ea29['shift']());}}}(_0x232a,0xa2454));import _0x12252c from'@toolkit/elements/ok-icon.ok.js';function _0x115b(_0x11c477,_0x2266b4){_0x11c477=_0x11c477-0x1aa;const _0x232a38=_0x232a();let _0x115b36=_0x232a38[_0x11c477];return _0x115b36;}import _0x41b321 from'@toolkit/core/ok-overlay.ok.js';import _0x574c9c from'../../../components/ok-cron-input.ok.js';import _0x19c597 from'../../../components/ok-json-input.ok.js';import _0x90bb3 from'../../../components/field-path-input.ok.js';function _0x232a(){const _0x5224bd=['pattern','apiBase','\x0a<div\x20style=\x22position:relative;\x20min-width:720px;\x20max-width:calc(100vw\x20-\x2080px);\x20display:flex;\x20flex-direction:column;\x20gap:12px;\x22>\x0a\x0a\x20\x20<if\x20:=\x22busy\x22>\x0a\x20\x20\x20\x20<ok-overlay>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22loader-center\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22loader\x22\x20class=\x22spin\x22\x20style=\x22width:32px;height:32px;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</ok-overlay>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Row\x201:\x20type\x20+\x20priority\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label\x20style=\x22display:flex;\x20align-items:center;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Type\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22typeIsRegistered\x20&&\x20typeStatus\x20===\x20\x27active\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22type-pill\x20type-pill--ok\x22>registered</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22typeStatus\x20===\x20\x27paused\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22type-pill\x20type-pill--warn\x22>paused</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22typeStatus\x20===\x20\x27draining\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22type-pill\x20type-pill--info\x22>draining</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20<field-path-input\x0a\x20\x20\x20\x20\x20\x20\x20\x20:allow-custom=\x22true\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22type\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20:items=\x22typeItems\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22e.g.\x20email.send\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20@change=\x22onTypeSelected($event.detail)\x22\x0a\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22width:120px;\x22>\x0a\x20\x20\x20\x20\x20\x20<label\x20style=\x22display:flex;\x20align-items:center;\x20gap:5px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Priority\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22_fromType.priority\x22><span\x20class=\x22auto-badge\x22>auto</span></if>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20placeholder=\x220\x22\x20:value=\x22priority\x22\x20@input=\x22_set(\x27priority\x27,\x20Number($el.value))\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Row\x202:\x20tags\x20+\x20idempotency\x20key\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:10px;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Tags</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20placeholder=\x22comma\x20separated\x22\x20:value=\x22tags\x22\x20@input=\x22tags\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Idempotency\x20Key</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20placeholder=\x22optional\x20—\x20prevents\x20duplicate\x20jobs\x22\x20:value=\x22idempotencyKey\x22\x20@input=\x22idempotencyKey\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Buckets\x20-->\x0a\x20\x20<div\x20class=\x22field\x22>\x0a\x20\x20\x20\x20<label\x20style=\x22display:flex;\x20align-items:center;\x20gap:5px;\x22>\x0a\x20\x20\x20\x20\x20\x20Buckets\x20<span\x20style=\x22opacity:.4;\x20font-weight:400;\x20font-size:11px;\x22>(rate\x20limiting)</span>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22_fromType.buckets\x22><span\x20class=\x22auto-badge\x22>auto</span></if>\x0a\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20<each\x20:of=\x22buckets\x22\x20let:item=\x22b\x22\x20let:index=\x22i\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:6px;\x20align-items:center;\x20margin-bottom:4px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<select\x20style=\x22flex:1;\x22\x20@change=\x22onBucketSelect(i,\x20$el.value)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>—\x20none\x20—</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20as=\x22repeat\x22\x20:of=\x22bucketOptions\x22\x20let:item=\x22opt\x22\x20:value=\x22opt.id\x22\x20:selected=\x22opt.id\x20===\x20b.id\x22>{{\x20opt.id\x20}}</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22__create__\x22>+\x20Create\x20bucket…</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20style=\x22width:72px;\x22\x20type=\x22number\x22\x20min=\x221\x22\x20placeholder=\x22tokens\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22b.tokens\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22setBucketTokens(i,\x20$el.value)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x22\x20@click=\x22removeBucket(i)\x22\x20title=\x22Remove\x22>✕</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-ghost--sm\x22\x20@click=\x22addBucket()\x22\x20style=\x22margin-top:2px;\x22>+\x20Add\x20bucket</button>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Row\x203:\x20when\x20+\x20max\x20tries\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>When</label>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:4px;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22whenMode===\x27asap\x27\x20?\x20\x27mode-btn\x20mode-btn--on\x27\x20:\x20\x27mode-btn\x27\x22\x20@click=\x22whenMode=\x27asap\x27\x22>ASAP</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22whenMode===\x27datetime\x27\x20?\x20\x27mode-btn\x20mode-btn--on\x27\x20:\x20\x27mode-btn\x27\x22\x20@click=\x22whenMode=\x27datetime\x27\x22>Date</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22whenMode===\x27timestamp\x27\x20?\x20\x27mode-btn\x20mode-btn--on\x27\x20:\x20\x27mode-btn\x27\x22\x20@click=\x22whenMode=\x27timestamp\x27\x22>TS</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22whenMode\x20===\x20\x27datetime\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22datetime-local\x22\x20style=\x22flex:1;\x22\x20:value=\x22whenDatetime\x22\x20@input=\x22whenDatetime\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22whenMode\x20===\x20\x27timestamp\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20style=\x22flex:1;\x22\x20placeholder=\x22ms\x20timestamp\x22\x20:value=\x22whenTs\x22\x20@input=\x22whenTs\x20=\x20$el.value\x20===\x20\x27\x27\x20?\x20null\x20:\x20Number($el.value)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22whenMode\x20===\x20\x27asap\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.5;\x20font-size:12px;\x20padding:0\x208px;\x22>Run\x20immediately</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22width:120px;\x22>\x0a\x20\x20\x20\x20\x20\x20<label\x20style=\x22display:flex;\x20align-items:center;\x20gap:5px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Max\x20tries\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22_fromType.maxTries\x22><span\x20class=\x22auto-badge\x22>auto</span></if>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20placeholder=\x22unlimited\x22\x20:value=\x22maxTries\x22\x20@input=\x22_set(\x27maxTries\x27,\x20$el.value\x20===\x20\x27\x27\x20?\x20null\x20:\x20Number($el.value))\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Row\x204:\x20retry\x20delay\x20+\x20backoff\x20+\x20cron\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label\x20style=\x22display:flex;\x20align-items:center;\x20gap:5px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Retry\x20delay\x20(ms)\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22_fromType.retryDelay\x22><span\x20class=\x22auto-badge\x22>auto</span></if>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20placeholder=\x220\x22\x20:value=\x22retryDelay\x22\x20@input=\x22_set(\x27retryDelay\x27,\x20Number($el.value))\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22width:120px;\x22>\x0a\x20\x20\x20\x20\x20\x20<label\x20style=\x22display:flex;\x20align-items:center;\x20gap:5px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Backoff\x20multiplier\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22_fromType.backoff\x22><span\x20class=\x22auto-badge\x22>auto</span></if>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20step=\x220.1\x22\x20placeholder=\x221\x22\x20:value=\x22backoff\x22\x20@input=\x22_set(\x27backoff\x27,\x20Number($el.value))\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Cron</label>\x0a\x20\x20\x20\x20\x20\x20<ok-cron-input\x20:value=\x22cron\x22\x20placeholder=\x22optional\x22\x20@change=\x22cron\x20=\x20$event.detail\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Row\x205:\x20retention\x20TTLs\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label\x20style=\x22display:flex;\x20align-items:center;\x20gap:5px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Done\x20TTL\x20(ms)\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22_fromType.doneTtl\x22><span\x20class=\x22auto-badge\x22>auto</span></if>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20min=\x220\x22\x20placeholder=\x220\x20=\x20delete\x20immediately,\x20blank\x20=\x20keep\x20forever\x22\x20:value=\x22doneTtl\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22_set(\x27doneTtl\x27,\x20$el.value\x20===\x20\x27\x27\x20?\x20null\x20:\x20Number($el.value))\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label\x20style=\x22display:flex;\x20align-items:center;\x20gap:5px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Failed\x20TTL\x20(ms)\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22_fromType.failedTtl\x22><span\x20class=\x22auto-badge\x22>auto</span></if>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20min=\x220\x22\x20placeholder=\x22blank\x20=\x20keep\x20forever\x22\x20:value=\x22failedTtl\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22_set(\x27failedTtl\x27,\x20$el.value\x20===\x20\x27\x27\x20?\x20null\x20:\x20Number($el.value))\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Payload\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.7;\x20font-size:12px;\x22>Payload</span>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22typeSchema\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22type-pill\x20type-pill--schema\x22>schema</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22payloadErrors.length\x20===\x200\x20&&\x20_payloadTouched\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22type-pill\x20type-pill--ok\x22\x20style=\x22font-size:10px;\x22>valid</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<ok-json-input\x0a\x20\x20\x20\x20\x20\x20mode=\x22textarea\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22height:220px;\x22\x0a\x20\x20\x20\x20\x20\x20:value=\x22payloadInit\x22\x0a\x20\x20\x20\x20\x20\x20@edit=\x22onPayloadChange($event.detail)\x22\x0a\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20<if\x20:=\x22_payloadTouched\x20&&\x20payloadErrors.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22schema-errors\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22payloadErrors\x22\x20let:item=\x22err\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22schema-error-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22schema-error-path\x22>{{\x20err.path\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22schema-error-msg\x22>{{\x20err.msg\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Footer\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:10px;\x20justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20<button\x20@click=\x22cancel()\x22>Cancel</button>\x0a\x20\x20\x20\x20<button\x20@click=\x22submit()\x22\x20:disabled=\x22!type\x20||\x20busy\x22>Enqueue</button>\x0a\x20\x20</div>\x0a\x0a</div>\x0a','find','allOf','failed_ttl','data','70754xXtVCG','error','typeStatus','pattern\x20mismatch','_validatePayload','/queue/job-types','maxLength:\x20','/queue/enqueue/','type','split','minLength:\x20','open','idempotency_key','datetime','21kiwDFm','asap','trim','string','buckets','shared','entries','backoff_multiplier','132tIbxPb','enqueue\x20failed','priority','max_tries','json','_fromType','tokens','$ref','applyTypeDefaults','must\x20be\x20one\x20of\x20[','payload_schema','__create__','items','4502832snzwrE','Add\x20Token\x20Bucket','4rlUqvF','null','\x20|\x20','Failed\x20to\x20enqueue\x20job','maxTries','9pPftfF','retryDelay','.mode-btn{font-size:11px;padding:2px\x208px;opacity:.6;border-radius:4px}.mode-btn--on{opacity:1;background:color-mix(in\x20srgb,var(--okdb-accent)\x2013%,transparent);border-color:color-mix(in\x20srgb,var(--okdb-accent)\x2033%,transparent);color:var(--okdb-accent)}.btn-ghost{background:0\x200;border:1px\x20solid\x20var(--okdb-app-border);border-radius:5px;color:inherit;cursor:pointer;opacity:.6;padding:2px\x208px;font-size:12px}.btn-ghost:hover{opacity:1;border-color:color-mix(in\x20srgb,var(--okdb-accent)\x2033%,transparent)}.btn-ghost--sm{font-size:11px;padding:1px\x207px}.type-pill{font-size:10px;padding:1px\x206px;border-radius:999px;border:1px\x20solid;font-weight:400}.type-pill--ok{border-color:color-mix(in\x20srgb,var(--okdb-accent)\x2033%,transparent);color:var(--okdb-accent)}.type-pill--warn{border-color:#f59e0b;color:#f59e0b}.type-pill--info{border-color:#3b82f6;color:#3b82f6}.type-pill--schema{border-color:color-mix(in\x20srgb,var(--okdb-accent)\x2033%,transparent);color:var(--okdb-accent)}.auto-badge{font-size:9px;padding:1px\x205px;border-radius:999px;font-weight:600;letter-spacing:.04em;background:color-mix(in\x20srgb,var(--okdb-accent)\x2012%,transparent);border:1px\x20solid\x20color-mix(in\x20srgb,var(--okdb-accent)\x2025%,transparent);color:var(--okdb-accent);text-transform:uppercase}.schema-errors{display:flex;flex-direction:column;gap:3px;padding:8px\x2010px;border-radius:6px;border:1px\x20solid\x20color-mix(in\x20srgb,#ef4444\x2040%,transparent);background:color-mix(in\x20srgb,#ef4444\x206%,transparent);font-size:11px;max-height:120px;overflow-y:auto}.schema-error-row{display:flex;gap:8px;align-items:baseline}.schema-error-path{font-family:monospace;color:#f87171;flex-shrink:0}.schema-error-msg{color:#fca5a5;opacity:.8}','_syncTypeData','close','test','isArray','push','message','catch','POST','54358WDRdra','maxLength','active','length','typeIsRegistered','$attr','cron','join','object','getTime','modal','whenTs','<=\x20','busy','isInteger','expected\x20','properties','payloadErrors','retry_delay','result','_payloadTouched','getWhen','initialType','required','idempotencyKey','definition','5654700PonQuP','enqueue-job-modal','onDone','268146HPaLxj','3653835fgRufC','loadBuckets','status','keys','payload','failedTtl','whenMode','map','some','minLength','_revalidatePayload','typeItems','done_ttl','doneTtl','>=\x20','tags','minimum','enum','registeredTypes','stringify','bucketOptions','all','max','Payload\x20does\x20not\x20match\x20the\x20job\x20type\x20schema','toast','11bltGPi','backoff','maximum','(root)','number','/queue/buckets','typeSchema','$ok','7712090uKEUQN','filter','integer'];_0x232a=function(){return _0x5224bd;};return _0x232a();}import _0x3e5a36 from'./create-bucket-modal.ok.js';import _0xc45aec from'../../../stores/okdb-store.js';export default{'tag':_0x408539(0x1f0),'dependencies':[_0x574c9c,_0x19c597,_0x90bb3,_0x3e5a36,_0x41b321,_0x12252c],'attr':{'modal':{},'initialType':{},'onDone':{}},'context':_0x19084d=>({'busy':!0x1,'type':_0x19084d['$attr'][_0x408539(0x1eb)]??'','payloadInit':{},'payload':{},'priority':0x0,'maxTries':null,'retryDelay':0x0,'backoff':0x1,'tags':'','buckets':[{'id':'','tokens':0x1}],'cron':'','idempotencyKey':'','whenMode':_0x408539(0x1af),'whenDatetime':'','whenTs':null,'doneTtl':null,'failedTtl':null,'bucketOptions':[],'registeredTypes':[],'typeItems':[],'typeIsRegistered':!0x1,'typeStatus':null,'typeSchema':null,'_fromType':{},'payloadErrors':[],'_payloadTouched':!0x1,'_syncTypeData'(){const _0x4494a9=_0x408539,_0x4e0c9b=this[_0x4494a9(0x205)][_0x4494a9(0x21a)](_0x466310=>_0x466310['id']===this['type'])??null;this[_0x4494a9(0x1d9)]=!!_0x4e0c9b,this[_0x4494a9(0x220)]=_0x4e0c9b?.[_0x4494a9(0x1f5)]??null,this[_0x4494a9(0x212)]=_0x4e0c9b?.[_0x4494a9(0x1c0)]??null,this[_0x4494a9(0x1fe)]=this['registeredTypes'][_0x4494a9(0x1fa)](_0x464f9b=>({'path':_0x464f9b['id'],'types':_0x464f9b[_0x4494a9(0x1f5)]&&_0x4494a9(0x1d7)!==_0x464f9b['status']?[_0x464f9b[_0x4494a9(0x1f5)]]:[],'hint':null}));},'_set'(_0x453926,_0x2a03ac){const _0x483dd1=_0x408539;if(this[_0x453926]=_0x2a03ac,this['_fromType'][_0x453926]){const _0xf64684={...this[_0x483dd1(0x1bb)]};delete _0xf64684[_0x453926],this['_fromType']=_0xf64684;}},async 'loadBuckets'(){const _0x40611b=_0x408539,[_0x91f236,_0x69ac0]=await Promise[_0x40611b(0x208)]([fetch(_0xc45aec['apiBase']+_0x40611b(0x211))[_0x40611b(0x1d3)](()=>null),fetch(_0xc45aec[_0x40611b(0x218)]+_0x40611b(0x223))[_0x40611b(0x1d3)](()=>null)]);if(_0x91f236?.['ok']){const _0x4cbe23=await _0x91f236[_0x40611b(0x1ba)]()['catch'](()=>({}));this[_0x40611b(0x207)]=_0x4cbe23?.[_0x40611b(0x1e8)]??_0x4cbe23?.['data']??[];}if(_0x69ac0?.['ok']){const _0x4393df=await _0x69ac0['json']()['catch'](()=>({}));this['registeredTypes']=_0x4393df?.[_0x40611b(0x1e8)]??_0x4393df?.[_0x40611b(0x21d)]??[];}this[_0x40611b(0x1cd)]();},'applyTypeDefaults'(_0xe499a2){const _0x153b64=_0x408539,_0x44dac9=this['registeredTypes'][_0x153b64(0x21a)](_0x182683=>_0x182683['id']===_0xe499a2);if(!_0x44dac9)return!0x1;const _0x20f82e=_0x44dac9['defaults']??{},_0x2f2a75={};return null!=_0x20f82e[_0x153b64(0x1b9)]&&(this[_0x153b64(0x1c9)]=_0x20f82e['max_tries'],_0x2f2a75[_0x153b64(0x1c9)]=!0x0),null!=_0x20f82e[_0x153b64(0x1e7)]&&(this['retryDelay']=_0x20f82e[_0x153b64(0x1e7)],_0x2f2a75[_0x153b64(0x1cb)]=!0x0),null!=_0x20f82e[_0x153b64(0x1b5)]&&(this[_0x153b64(0x20d)]=_0x20f82e['backoff_multiplier'],_0x2f2a75[_0x153b64(0x20d)]=!0x0),null!=_0x20f82e[_0x153b64(0x1b8)]&&(this[_0x153b64(0x1b8)]=_0x20f82e['priority'],_0x2f2a75[_0x153b64(0x1b8)]=!0x0),null!=_0x20f82e[_0x153b64(0x1ff)]&&(this['doneTtl']=_0x20f82e[_0x153b64(0x1ff)],_0x2f2a75[_0x153b64(0x200)]=!0x0),null!=_0x20f82e[_0x153b64(0x21c)]&&(this[_0x153b64(0x1f8)]=_0x20f82e['failed_ttl'],_0x2f2a75['failedTtl']=!0x0),Array['isArray'](_0x20f82e[_0x153b64(0x1b2)])&&_0x20f82e[_0x153b64(0x1b2)][_0x153b64(0x1d8)]&&(this['buckets']=_0x20f82e[_0x153b64(0x1b2)][_0x153b64(0x1fa)](_0x1d5862=>({'id':_0x1d5862['id'],'tokens':_0x1d5862[_0x153b64(0x1bc)]??0x1})),_0x2f2a75[_0x153b64(0x1b2)]=!0x0),this[_0x153b64(0x1bb)]=_0x2f2a75,!0x0;},'onTypeSelected'(_0x5f536a){const _0x501593=_0x408539;null!=_0x5f536a&&(this[_0x501593(0x226)]=_0x5f536a,this[_0x501593(0x1cd)](),this[_0x501593(0x1be)](_0x5f536a)||_0x5f536a||(this[_0x501593(0x1bb)]={}),this[_0x501593(0x1fd)]());},async 'onBucketSelect'(_0x30f5e5,_0x1c2c44){const _0x123d26=_0x408539;if(this[_0x123d26(0x1bb)][_0x123d26(0x1b2)]&&(this[_0x123d26(0x1bb)]={...this[_0x123d26(0x1bb)],'buckets':!0x1}),_0x123d26(0x1c1)===_0x1c2c44){const _0x40cc4f=this;await _0x19084d[_0x123d26(0x213)][_0x123d26(0x1b3)][_0x123d26(0x1df)][_0x123d26(0x1ab)]({'owner':_0x19084d,'title':_0x123d26(0x1c4),'content':'<create-bucket-modal\x20:modal=\x22modal\x22\x20:on-done=\x22onDone\x22\x20/>','context':_0x365e91=>({'modal':_0x365e91,'onDone':async _0x17d92c=>{const _0x4715ff=_0x123d26;await _0x40cc4f[_0x4715ff(0x1f4)](),_0x40cc4f[_0x4715ff(0x1b2)]=_0x40cc4f[_0x4715ff(0x1b2)][_0x4715ff(0x1fa)]((_0x34b07c,_0x46cae9)=>_0x46cae9===_0x30f5e5?{..._0x34b07c,'id':_0x17d92c}:_0x34b07c);}})});}else this[_0x123d26(0x1b2)]=this[_0x123d26(0x1b2)][_0x123d26(0x1fa)]((_0x4b0668,_0xe04980)=>_0xe04980===_0x30f5e5?{..._0x4b0668,'id':_0x1c2c44}:_0x4b0668);},'setBucketTokens'(_0x155451,_0x2a4765){const _0x129b40=_0x408539;this[_0x129b40(0x1bb)][_0x129b40(0x1b2)]&&(this['_fromType']={...this[_0x129b40(0x1bb)],'buckets':!0x1});const _0x49a41e=''===_0x2a4765?0x1:Math[_0x129b40(0x209)](0x1,parseInt(_0x2a4765)||0x1);this[_0x129b40(0x1b2)]=this[_0x129b40(0x1b2)][_0x129b40(0x1fa)]((_0x3bd06b,_0x14ea06)=>_0x14ea06===_0x155451?{..._0x3bd06b,'tokens':_0x49a41e}:_0x3bd06b);},'addBucket'(){const _0x4e2424=_0x408539;this['_fromType'][_0x4e2424(0x1b2)]&&(this['_fromType']={...this[_0x4e2424(0x1bb)],'buckets':!0x1}),this[_0x4e2424(0x1b2)]=[...this[_0x4e2424(0x1b2)],{'id':'','tokens':0x1}];},'removeBucket'(_0x5ddfcb){const _0x5e0e95=_0x408539;this[_0x5e0e95(0x1bb)][_0x5e0e95(0x1b2)]&&(this[_0x5e0e95(0x1bb)]={...this[_0x5e0e95(0x1bb)],'buckets':!0x1}),this[_0x5e0e95(0x1b2)]=this[_0x5e0e95(0x1b2)]['filter']((_0x36bf2c,_0x1d23da)=>_0x1d23da!==_0x5ddfcb);},'onPayloadChange'(_0x59d0e8){const _0x52c0bb=_0x408539;this['payload']=_0x59d0e8,this[_0x52c0bb(0x1e9)]=!0x0,this['_revalidatePayload']();},'_revalidatePayload'(){const _0x121c9d=_0x408539,_0x4a5bf1=this[_0x121c9d(0x212)];this['payloadErrors']=_0x4a5bf1?.[_0x121c9d(0x1ee)]?this[_0x121c9d(0x222)](this[_0x121c9d(0x1f7)],_0x4a5bf1[_0x121c9d(0x1ee)]):[];},'_validatePayload'(_0x457966,_0x5b5593){const _0x55fdac=[],_0x32b2fd=(_0x5359aa,_0x5eec9f,_0x296cd1)=>{const _0x5d5bbe=_0x115b;if(_0x5eec9f&&'object'==typeof _0x5eec9f&&!_0x5eec9f[_0x5d5bbe(0x1bd)]){if(_0x5eec9f[_0x5d5bbe(0x226)]){const _0x49244d=Array[_0x5d5bbe(0x1d0)](_0x5eec9f[_0x5d5bbe(0x226)])?_0x5eec9f['type']:[_0x5eec9f[_0x5d5bbe(0x226)]],_0x6c4b79=null===_0x5359aa?_0x5d5bbe(0x1c6):Array[_0x5d5bbe(0x1d0)](_0x5359aa)?'array':typeof _0x5359aa;if(!_0x49244d[_0x5d5bbe(0x1fb)](_0x48b98a=>_0x48b98a===_0x6c4b79||_0x5d5bbe(0x216)===_0x48b98a&&'number'===_0x6c4b79&&Number[_0x5d5bbe(0x1e3)](_0x5359aa)))return void _0x55fdac[_0x5d5bbe(0x1d1)]({'path':_0x296cd1||_0x5d5bbe(0x20f),'msg':_0x5d5bbe(0x1e4)+_0x49244d[_0x5d5bbe(0x1dc)](_0x5d5bbe(0x1c7))+',\x20got\x20'+_0x6c4b79});}if(_0x5eec9f[_0x5d5bbe(0x204)]&&!_0x5eec9f[_0x5d5bbe(0x204)][_0x5d5bbe(0x1fb)](_0x36763c=>JSON[_0x5d5bbe(0x206)](_0x36763c)===JSON[_0x5d5bbe(0x206)](_0x5359aa))&&_0x55fdac[_0x5d5bbe(0x1d1)]({'path':_0x296cd1||_0x5d5bbe(0x20f),'msg':_0x5d5bbe(0x1bf)+_0x5eec9f[_0x5d5bbe(0x204)][_0x5d5bbe(0x1fa)](_0xda9e8b=>JSON['stringify'](_0xda9e8b))['join'](',\x20')+']'}),_0x5d5bbe(0x1b1)==typeof _0x5359aa&&(null!=_0x5eec9f[_0x5d5bbe(0x1fc)]&&_0x5359aa[_0x5d5bbe(0x1d8)]<_0x5eec9f[_0x5d5bbe(0x1fc)]&&_0x55fdac[_0x5d5bbe(0x1d1)]({'path':_0x296cd1||_0x5d5bbe(0x20f),'msg':_0x5d5bbe(0x1aa)+_0x5eec9f[_0x5d5bbe(0x1fc)]}),null!=_0x5eec9f[_0x5d5bbe(0x1d6)]&&_0x5359aa[_0x5d5bbe(0x1d8)]>_0x5eec9f['maxLength']&&_0x55fdac[_0x5d5bbe(0x1d1)]({'path':_0x296cd1||_0x5d5bbe(0x20f),'msg':_0x5d5bbe(0x224)+_0x5eec9f[_0x5d5bbe(0x1d6)]}),_0x5eec9f['pattern']))try{new RegExp(_0x5eec9f[_0x5d5bbe(0x217)])[_0x5d5bbe(0x1cf)](_0x5359aa)||_0x55fdac[_0x5d5bbe(0x1d1)]({'path':_0x296cd1||'(root)','msg':_0x5d5bbe(0x221)});}catch{}if(_0x5d5bbe(0x210)==typeof _0x5359aa&&(null!=_0x5eec9f[_0x5d5bbe(0x203)]&&_0x5359aa<_0x5eec9f['minimum']&&_0x55fdac[_0x5d5bbe(0x1d1)]({'path':_0x296cd1||'(root)','msg':_0x5d5bbe(0x201)+_0x5eec9f[_0x5d5bbe(0x203)]}),null!=_0x5eec9f[_0x5d5bbe(0x20e)]&&_0x5359aa>_0x5eec9f[_0x5d5bbe(0x20e)]&&_0x55fdac[_0x5d5bbe(0x1d1)]({'path':_0x296cd1||_0x5d5bbe(0x20f),'msg':_0x5d5bbe(0x1e1)+_0x5eec9f[_0x5d5bbe(0x20e)]})),_0x5d5bbe(0x1dd)==typeof _0x5359aa&&null!==_0x5359aa&&!Array['isArray'](_0x5359aa)){for(const _0x1da1c5 of _0x5eec9f[_0x5d5bbe(0x1ec)]??[])_0x1da1c5 in _0x5359aa||_0x55fdac[_0x5d5bbe(0x1d1)]({'path':_0x296cd1?_0x296cd1+'.'+_0x1da1c5:_0x1da1c5,'msg':_0x5d5bbe(0x1ec)});if(_0x5eec9f[_0x5d5bbe(0x1e5)]){for(const [_0x4c3f03,_0x277c9d]of Object[_0x5d5bbe(0x1b4)](_0x5eec9f[_0x5d5bbe(0x1e5)]))_0x4c3f03 in _0x5359aa&&_0x32b2fd(_0x5359aa[_0x4c3f03],_0x277c9d,_0x296cd1?_0x296cd1+'.'+_0x4c3f03:_0x4c3f03);if(!0x1===_0x5eec9f['additionalProperties']){for(const _0x5c0c1d of Object[_0x5d5bbe(0x1f6)](_0x5359aa))_0x5c0c1d in _0x5eec9f[_0x5d5bbe(0x1e5)]||_0x55fdac[_0x5d5bbe(0x1d1)]({'path':_0x296cd1?_0x296cd1+'.'+_0x5c0c1d:_0x5c0c1d,'msg':'additional\x20property\x20not\x20allowed'});}}}if(Array['isArray'](_0x5359aa)&&_0x5eec9f[_0x5d5bbe(0x1c2)]&&_0x5359aa['forEach']((_0x518ecf,_0x18ed26)=>_0x32b2fd(_0x518ecf,_0x5eec9f[_0x5d5bbe(0x1c2)],(_0x296cd1||'')+'['+_0x18ed26+']')),_0x5eec9f[_0x5d5bbe(0x21b)]){for(const _0x23fcff of _0x5eec9f[_0x5d5bbe(0x21b)])_0x32b2fd(_0x5359aa,_0x23fcff,_0x296cd1);}}};return _0x32b2fd(_0x457966,_0x5b5593,''),_0x55fdac;},'getWhen'(){const _0x45f271=_0x408539;if('asap'===this[_0x45f271(0x1f9)])return null;if(_0x45f271(0x1ad)===this[_0x45f271(0x1f9)]){const _0x49ccfc=new Date(this['whenDatetime']);return isNaN(_0x49ccfc['getTime']())?null:_0x49ccfc[_0x45f271(0x1de)]();}return this[_0x45f271(0x1e0)];},'_parseTags'(_0x4ca4a1){const _0x404fa4=_0x408539;if(!_0x4ca4a1)return;const _0x3b2083=String(_0x4ca4a1)[_0x404fa4(0x227)](',')[_0x404fa4(0x1fa)](_0x55f665=>_0x55f665[_0x404fa4(0x1b0)]())[_0x404fa4(0x215)](Boolean);return _0x3b2083[_0x404fa4(0x1d8)]?_0x3b2083:void 0x0;},async 'submit'(){const _0x4ac7c5=_0x408539;if(!this[_0x4ac7c5(0x226)])return void _0x19084d[_0x4ac7c5(0x213)][_0x4ac7c5(0x1b3)]?.[_0x4ac7c5(0x20b)]?.[_0x4ac7c5(0x21f)]?.('Please\x20enter\x20a\x20job\x20type');if(this['typeSchema']?.[_0x4ac7c5(0x1ee)]){const _0x2b6a63=this[_0x4ac7c5(0x222)](this['payload'],this['typeSchema'][_0x4ac7c5(0x1ee)]);if(_0x2b6a63[_0x4ac7c5(0x1d8)])return this[_0x4ac7c5(0x1e9)]=!0x0,this[_0x4ac7c5(0x1e6)]=_0x2b6a63,void _0x19084d[_0x4ac7c5(0x213)][_0x4ac7c5(0x1b3)]?.[_0x4ac7c5(0x20b)]?.[_0x4ac7c5(0x21f)]?.(_0x4ac7c5(0x20a));}const _0x16d66d=this[_0x4ac7c5(0x1ea)](),_0x242165=String(this['cron']||'')[_0x4ac7c5(0x1b0)]()||null,_0x1ac272=this['buckets'][_0x4ac7c5(0x215)](_0x46dd19=>_0x46dd19['id'])[_0x4ac7c5(0x1fa)](_0x46b008=>({'id':_0x46b008['id'],'tokens':_0x46b008[_0x4ac7c5(0x1bc)]||0x1})),_0x2c2509=this['_parseTags'](this[_0x4ac7c5(0x202)]),_0x29b2d1={};null!=_0x16d66d&&(_0x29b2d1['when']=_0x16d66d),this[_0x4ac7c5(0x1b8)]&&(_0x29b2d1[_0x4ac7c5(0x1b8)]=Number(this[_0x4ac7c5(0x1b8)])),null!==this[_0x4ac7c5(0x1c9)]&&''!==this['maxTries']&&(_0x29b2d1['max_tries']=Number(this[_0x4ac7c5(0x1c9)])),this[_0x4ac7c5(0x1cb)]&&(_0x29b2d1[_0x4ac7c5(0x1e7)]=Number(this[_0x4ac7c5(0x1cb)])),0x1!==this[_0x4ac7c5(0x20d)]&&(_0x29b2d1[_0x4ac7c5(0x1b5)]=Number(this[_0x4ac7c5(0x20d)])),_0x2c2509&&(_0x29b2d1[_0x4ac7c5(0x202)]=_0x2c2509),_0x1ac272[_0x4ac7c5(0x1d8)]&&(_0x29b2d1[_0x4ac7c5(0x1b2)]=_0x1ac272),_0x242165&&(_0x29b2d1[_0x4ac7c5(0x1db)]=_0x242165),this[_0x4ac7c5(0x1ed)]['trim']()&&(_0x29b2d1[_0x4ac7c5(0x1ac)]=this[_0x4ac7c5(0x1ed)][_0x4ac7c5(0x1b0)]()),null!==this[_0x4ac7c5(0x200)]&&''!==this['doneTtl']&&(_0x29b2d1[_0x4ac7c5(0x1ff)]=Number(this[_0x4ac7c5(0x200)])),null!==this[_0x4ac7c5(0x1f8)]&&''!==this[_0x4ac7c5(0x1f8)]&&(_0x29b2d1['failed_ttl']=Number(this[_0x4ac7c5(0x1f8)])),this['busy']=!0x0;try{const _0x74037f=await fetch(_0xc45aec[_0x4ac7c5(0x218)]+_0x4ac7c5(0x225)+encodeURIComponent(this[_0x4ac7c5(0x226)]),{'method':_0x4ac7c5(0x1d4),'headers':{'Content-Type':'application/json'},'body':JSON[_0x4ac7c5(0x206)]({'payload':this[_0x4ac7c5(0x1f7)],'options':_0x29b2d1})});if(!_0x74037f['ok']){const _0x630da=await _0x74037f[_0x4ac7c5(0x1ba)]()[_0x4ac7c5(0x1d3)](()=>({}));throw new Error(_0x630da?.[_0x4ac7c5(0x21f)]?.[_0x4ac7c5(0x1d2)]||_0x630da?.[_0x4ac7c5(0x1d2)]||_0x4ac7c5(0x1b7));}await _0x19084d[_0x4ac7c5(0x1da)][_0x4ac7c5(0x1df)]['close'](),await _0x19084d['$attr'][_0x4ac7c5(0x1f1)]?.();}catch(_0x5a33b0){_0x19084d[_0x4ac7c5(0x213)][_0x4ac7c5(0x1b3)]?.['toast']?.[_0x4ac7c5(0x21f)]?.(_0x5a33b0[_0x4ac7c5(0x1d2)]||_0x4ac7c5(0x1c8));}finally{this[_0x4ac7c5(0x1e2)]=!0x1;}},'cancel'(){const _0x3808ee=_0x408539;_0x19084d[_0x3808ee(0x1da)][_0x3808ee(0x1df)][_0x3808ee(0x1ce)]();}}),async 'mount'(_0x2273ae){const _0x3fcaa1=_0x408539;await this[_0x3fcaa1(0x1f4)](),this['type']&&this[_0x3fcaa1(0x1be)](this[_0x3fcaa1(0x226)]);},'template':_0x408539(0x219),'style':_0x408539(0x1cc)};
|
|
@@ -1 +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
|
+
const _0x3b08a1=_0x3277;(function(_0x5857fb,_0x460640){const _0xf69f2a=_0x3277,_0x52ef18=_0x5857fb();while(!![]){try{const _0x49af78=parseInt(_0xf69f2a(0xbf))/0x1+parseInt(_0xf69f2a(0xb3))/0x2+parseInt(_0xf69f2a(0xd0))/0x3+parseInt(_0xf69f2a(0xcc))/0x4*(parseInt(_0xf69f2a(0xc9))/0x5)+-parseInt(_0xf69f2a(0xa3))/0x6*(-parseInt(_0xf69f2a(0xba))/0x7)+parseInt(_0xf69f2a(0xb5))/0x8+-parseInt(_0xf69f2a(0xbd))/0x9;if(_0x49af78===_0x460640)break;else _0x52ef18['push'](_0x52ef18['shift']());}catch(_0x253778){_0x52ef18['push'](_0x52ef18['shift']());}}}(_0x4b2c,0x279d2));import _0x9a8aaf from'@toolkit/core/ok-overlay.ok.js';import _0x3a06b2 from'@toolkit/elements/ok-icon.ok.js';function _0x3277(_0x4b425e,_0x48ebac){_0x4b425e=_0x4b425e-0xa1;const _0x4b2c64=_0x4b2c();let _0x327766=_0x4b2c64[_0x4b425e];return _0x327766;}function _0x4b2c(){const _0x2578ca=['defBackoff','max','defaults','job-type-modal','/queue/job-type','onDone','keys','Failed\x20to\x20save\x20job\x20type','open','map','<create-bucket-modal\x20:modal=\x22modal\x22\x20:on-done=\x22onDone\x22\x20/>','defTtl','isEdit','/schema','toast','defRetryDelay','failed_ttl','backoff_multiplier','Add\x20Token\x20Bucket','max_tries','enforce','busy','__create__','Save\x20the\x20job\x20type\x20first\x20before\x20editing\x20its\x20schema','$ok','449646qvcbhP','status','defMaxTries','data','length','payload_schema','apiBase','.btn-ghost{background:0\x200;border:1px\x20solid\x20var(--okdb-app-border);border-radius:5px;color:inherit;cursor:pointer;opacity:.6;padding:2px\x208px;font-size:12px}.btn-ghost:hover{opacity:1;border-color:color-mix(in\x20srgb,var(--okdb-accent)\x2033%,transparent)}.btn-ghost--sm{font-size:11px;padding:1px\x207px}','error','max_concurrency','retry_delay','priority','application/json','parseOptInt','close','/queue/job-type/','98972wQYUoj','shared','2233112MtVWAR','Job\x20type\x20name\x20is\x20required','isArray','result','filter','21fbNChz','/queue/buckets','trim','7073019oJSFNx','active','179707GQvZRL','defBuckets','tokens','defFailedTtl','defDoneTtl','<schema-edit-modal\x20:modal=\x22modal\x22\x20:type=\x22type\x22\x20:schema=\x22schema\x22\x20:save-url=\x22saveUrl\x22\x20:samples-url=\x22samplesUrl\x22\x20:hide-enforce=\x22true\x22\x20:on-done=\x22onDone\x22\x20/>','Payload\x20Schema\x20·\x20','/sample-payloads','bucketOptions','$attr','85XsnJNj','defPriority','stringify','4104iyJxox','modal','jobType','buckets','592656forcnX','\x0a<div\x20style=\x22position:relative;\x20min-width:600px;\x20max-width:calc(100vw\x20-\x2080px);\x20display:flex;\x20flex-direction:column;\x20gap:14px;\x22>\x0a\x0a\x20\x20<if\x20:=\x22busy\x22>\x0a\x20\x20\x20\x20<ok-overlay>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;align-items:center;justify-content:center;height:100%;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22loader\x22\x20class=\x22spin\x22\x20style=\x22width:28px;height:28px;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</ok-overlay>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20name\x20+\x20status\x20+\x20concurrency\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>Type\x20name</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20placeholder=\x22e.g.\x20email.send\x22\x20:value=\x22id\x22\x20@input=\x22id\x20=\x20$el.value\x22\x20:disabled=\x22isEdit\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22width:150px;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>Status</label>\x0a\x20\x20\x20\x20\x20\x20<select\x20:value=\x22status\x22\x20@change=\x22status\x20=\x20$el.value\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22active\x22>Active</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22paused\x22>Paused</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22draining\x22>Draining</option>\x0a\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22width:140px;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>Max\x20concurrency</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20min=\x221\x22\x20placeholder=\x22unlimited\x22\x20:value=\x22maxConcurrency\x22\x20@input=\x22maxConcurrency\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<div\x20style=\x22height:1px;\x20background:var(--okdb-app-border);\x22></div>\x0a\x20\x20<div\x20style=\x22font-size:11px;\x20font-weight:600;\x20text-transform:uppercase;\x20letter-spacing:.06em;\x20opacity:.5;\x22>Defaults\x20(applied\x20when\x20enqueueing\x20without\x20explicit\x20values)</div>\x0a\x0a\x20\x20<!--\x20retry\x20defaults\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>Max\x20tries</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20min=\x221\x22\x20placeholder=\x22queue\x20default\x22\x20:value=\x22defMaxTries\x22\x20@input=\x22defMaxTries\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>Retry\x20delay\x20(ms)</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20min=\x220\x22\x20placeholder=\x220\x22\x20:value=\x22defRetryDelay\x22\x20@input=\x22defRetryDelay\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>Backoff\x20multiplier</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20min=\x221\x22\x20step=\x220.1\x22\x20placeholder=\x221\x22\x20:value=\x22defBackoff\x22\x20@input=\x22defBackoff\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22width:110px;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>Priority</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20placeholder=\x220\x22\x20:value=\x22defPriority\x22\x20@input=\x22defPriority\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20TTLs\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>Claim\x20TTL\x20(ms)</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20min=\x220\x22\x20placeholder=\x22queue\x20default\x22\x20:value=\x22defTtl\x22\x20@input=\x22defTtl\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>Done\x20TTL\x20(ms)</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20min=\x220\x22\x20placeholder=\x22keep\x20forever\x22\x20:value=\x22defDoneTtl\x22\x20@input=\x22defDoneTtl\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>Failed\x20TTL\x20(ms)</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20min=\x220\x22\x20placeholder=\x22keep\x20forever\x22\x20:value=\x22defFailedTtl\x22\x20@input=\x22defFailedTtl\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20default\x20buckets\x20-->\x0a\x20\x20<div\x20class=\x22field\x22>\x0a\x20\x20\x20\x20<label>Default\x20buckets\x20<span\x20style=\x22opacity:.4;\x20font-weight:400;\x20font-size:11px;\x22>(rate\x20limiting)</span></label>\x0a\x20\x20\x20\x20<each\x20:of=\x22defBuckets\x22\x20let:item=\x22b\x22\x20let:index=\x22i\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:6px;\x20align-items:center;\x20margin-bottom:4px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<select\x20style=\x22flex:1;\x22\x20@change=\x22onBucketSelect(i,\x20$el.value)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>—\x20none\x20—</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20as=\x22repeat\x22\x20:of=\x22bucketOptions\x22\x20let:item=\x22opt\x22\x20:value=\x22opt.id\x22\x20:selected=\x22opt.id\x20===\x20b.id\x22>{{\x20opt.id\x20}}</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22__create__\x22>+\x20Create\x20bucket…</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20style=\x22width:72px;\x22\x20type=\x22number\x22\x20min=\x221\x22\x20placeholder=\x22tokens\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22b.tokens\x22\x20@input=\x22setBucketTokens(i,\x20$el.value)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x22\x20@click=\x22removeBucket(i)\x22\x20title=\x22Remove\x22>✕</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-ghost--sm\x22\x20@click=\x22addBucket()\x22>+\x20Add\x20bucket</button>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20schema\x20row\x20(only\x20shown\x20in\x20edit\x20mode\x20since\x20we\x20need\x20the\x20type\x20to\x20exist\x20first)\x20-->\x0a\x20\x20<if\x20:=\x22isEdit\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:10px;\x20padding:8px\x2012px;\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:6px;\x20background:var(--okdb-app-bg-deep);\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22flex:1;\x20font-size:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-weight:600;\x22>Payload\x20Schema</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22hasSchema\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22margin-left:8px;\x20font-size:10px;\x20padding:1px\x206px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2033%,\x20transparent);\x20color:var(--okdb-accent);\x22>defined</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22schemaEnforce\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22margin-left:4px;\x20font-size:10px;\x20padding:1px\x206px;\x20border-radius:999px;\x20border:1px\x20solid\x20#ef4444;\x20color:#ef4444;\x22>enforced</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!hasSchema\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22margin-left:8px;\x20opacity:.4;\x20font-size:11px;\x22>none</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x22\x20@click=\x22openSchema()\x22>Edit\x20schema…</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x20\x20<if\x20:=\x22!isEdit\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.45;\x20padding:0\x202px;\x22>Save\x20the\x20type\x20first,\x20then\x20edit\x20its\x20payload\x20schema.</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20footer\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:10px;\x20justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20<button\x20@click=\x22cancel()\x22>Cancel</button>\x0a\x20\x20\x20\x20<button\x20@click=\x22submit()\x22\x20:disabled=\x22!id.trim()\x20||\x20busy\x22>{{\x20isEdit\x20?\x20\x27Save\x27\x20:\x20\x27Register\x27\x20}}</button>\x0a\x20\x20</div>\x0a\x0a</div>\x0a','failed','init'];_0x4b2c=function(){return _0x2578ca;};return _0x4b2c();}import _0x26d47c from'./create-bucket-modal.ok.js';import _0x585a90 from'../../db/modals/schema-edit-modal.ok.js';import _0x534378 from'../../../stores/okdb-store.js';export default{'tag':_0x3b08a1(0xd7),'dependencies':[_0x9a8aaf,_0x3a06b2,_0x26d47c,_0x585a90],'attr':{'modal':{},'jobType':{},'bucketOptions':{},'onDone':{}},'context':_0x1376bf=>({'busy':!0x1,'id':'','status':'active','maxConcurrency':'','defMaxTries':'','defRetryDelay':'','defBackoff':'','defPriority':'','defTtl':'','defDoneTtl':'','defFailedTtl':'','defBuckets':[{'id':'','tokens':0x1}],'bucketOptions':[],get 'isEdit'(){const _0x4298d2=_0x3b08a1;return!!_0x1376bf[_0x4298d2(0xc8)][_0x4298d2(0xce)];},get 'hasSchema'(){const _0x125c6e=_0x3b08a1;return!!_0x1376bf['$attr'][_0x125c6e(0xce)]?.[_0x125c6e(0xa8)];},get 'schemaEnforce'(){const _0x481fc7=_0x3b08a1;return _0x1376bf['$attr'][_0x481fc7(0xce)]?.['payload_schema']?.[_0x481fc7(0xe8)]??!0x1;},'init'(){const _0x2afa30=_0x3b08a1;this[_0x2afa30(0xc7)]=Array['isArray'](_0x1376bf[_0x2afa30(0xc8)]['bucketOptions'])?_0x1376bf[_0x2afa30(0xc8)]['bucketOptions']:[];const _0x497e32=_0x1376bf['$attr']['jobType'];if(!_0x497e32)return;this['id']=_0x497e32['id']??'',this[_0x2afa30(0xa4)]=_0x497e32[_0x2afa30(0xa4)]??_0x2afa30(0xbe),this['maxConcurrency']=null!=_0x497e32[_0x2afa30(0xac)]?String(_0x497e32[_0x2afa30(0xac)]):'';const _0x4c2a00=_0x497e32[_0x2afa30(0xd6)]??{};this[_0x2afa30(0xa5)]=null!=_0x4c2a00['max_tries']?String(_0x4c2a00[_0x2afa30(0xe7)]):'',this[_0x2afa30(0xe3)]=null!=_0x4c2a00[_0x2afa30(0xad)]?String(_0x4c2a00[_0x2afa30(0xad)]):'',this[_0x2afa30(0xd4)]=null!=_0x4c2a00[_0x2afa30(0xe5)]?String(_0x4c2a00[_0x2afa30(0xe5)]):'',this[_0x2afa30(0xca)]=null!=_0x4c2a00[_0x2afa30(0xae)]?String(_0x4c2a00['priority']):'',this[_0x2afa30(0xdf)]=null!=_0x4c2a00['ttl']?String(_0x4c2a00['ttl']):'',this[_0x2afa30(0xc3)]=null!=_0x4c2a00['done_ttl']?String(_0x4c2a00['done_ttl']):'',this[_0x2afa30(0xc2)]=null!=_0x4c2a00[_0x2afa30(0xe4)]?String(_0x4c2a00[_0x2afa30(0xe4)]):'',this['defBuckets']=Array[_0x2afa30(0xb7)](_0x4c2a00[_0x2afa30(0xcf)])&&_0x4c2a00[_0x2afa30(0xcf)]['length']?_0x4c2a00['buckets']['map'](_0x4d887c=>({'id':_0x4d887c['id'],'tokens':_0x4d887c[_0x2afa30(0xc1)]??0x1})):[{'id':'','tokens':0x1}];},'parseOptInt'(_0x36d49c){const _0x2b92c6=parseInt(_0x36d49c);return isNaN(_0x2b92c6)?null:_0x2b92c6;},'parseOptFloat'(_0x1b08f3){const _0x50bdb7=parseFloat(_0x1b08f3);return isNaN(_0x50bdb7)?null:_0x50bdb7;},async 'onBucketSelect'(_0x4f654b,_0x4d3a23){const _0x112f28=_0x3b08a1;if(_0x112f28(0xea)===_0x4d3a23){const _0x1897a5=this;await _0x1376bf['$ok'][_0x112f28(0xb4)]['modal'][_0x112f28(0xdc)]({'owner':_0x1376bf,'title':_0x112f28(0xe6),'content':_0x112f28(0xde),'context':_0x516003=>({'modal':_0x516003,'onDone':async _0x88e22f=>{const _0xb5e14c=_0x112f28;try{const _0x3d5d51=await fetch(_0x534378[_0xb5e14c(0xa9)]+_0xb5e14c(0xbb)),_0x4832a6=await _0x3d5d51['json']();_0x1897a5[_0xb5e14c(0xc7)]=_0x4832a6?.[_0xb5e14c(0xb8)]??_0x4832a6?.[_0xb5e14c(0xa6)]??[];}catch{}_0x1897a5[_0xb5e14c(0xc0)]=_0x1897a5['defBuckets']['map']((_0x39cad9,_0x11325c)=>_0x11325c===_0x4f654b?{..._0x39cad9,'id':_0x88e22f}:_0x39cad9);}})});}else this['defBuckets']=this['defBuckets'][_0x112f28(0xdd)]((_0x404a95,_0x5a4912)=>_0x5a4912===_0x4f654b?{..._0x404a95,'id':_0x4d3a23}:_0x404a95);},'setBucketTokens'(_0x320304,_0x30eda5){const _0x2e4e5f=_0x3b08a1,_0x1e4292=''===_0x30eda5?0x1:Math[_0x2e4e5f(0xd5)](0x1,parseInt(_0x30eda5)||0x1);this['defBuckets']=this[_0x2e4e5f(0xc0)][_0x2e4e5f(0xdd)]((_0x52be39,_0x4af66d)=>_0x4af66d===_0x320304?{..._0x52be39,'tokens':_0x1e4292}:_0x52be39);},'addBucket'(){const _0x2be052=_0x3b08a1;this[_0x2be052(0xc0)]=[...this[_0x2be052(0xc0)],{'id':'','tokens':0x1}];},'removeBucket'(_0x450853){const _0x7296ee=_0x3b08a1;this['defBuckets']=this[_0x7296ee(0xc0)][_0x7296ee(0xb9)]((_0x475aca,_0xc06252)=>_0xc06252!==_0x450853);},'openSchema'(){const _0xc09163=_0x3b08a1,_0x25f4f8=this['id'][_0xc09163(0xbc)]()||(_0x1376bf[_0xc09163(0xc8)][_0xc09163(0xce)]?.['id']??'');if(!_0x25f4f8)return void _0x1376bf[_0xc09163(0xa2)][_0xc09163(0xb4)]?.['toast']?.[_0xc09163(0xab)]?.(_0xc09163(0xa1));const _0x5c3105=_0x534378['apiBase']+'/queue/job-type/'+encodeURIComponent(_0x25f4f8)+_0xc09163(0xe1),_0x184454=_0x534378[_0xc09163(0xa9)]+_0xc09163(0xb2)+encodeURIComponent(_0x25f4f8)+_0xc09163(0xc6);_0x1376bf[_0xc09163(0xa2)][_0xc09163(0xb4)]['modal']['open']({'owner':_0x1376bf,'title':_0xc09163(0xc5)+_0x25f4f8,'canDrag':!0x0,'content':_0xc09163(0xc4),'context':_0x21a066=>({'modal':_0x21a066,'type':_0x25f4f8,'schema':_0x1376bf[_0xc09163(0xc8)]['jobType']?.[_0xc09163(0xa8)]??null,'saveUrl':_0x5c3105,'samplesUrl':_0x184454,'onDone':()=>_0x1376bf[_0xc09163(0xc8)][_0xc09163(0xd9)]?.()})});},async 'submit'(){const _0x2d8dba=_0x3b08a1,_0x485020=this['id'][_0x2d8dba(0xbc)]();if(!_0x485020)return void _0x1376bf['$ok'][_0x2d8dba(0xb4)]?.[_0x2d8dba(0xe2)]?.[_0x2d8dba(0xab)]?.(_0x2d8dba(0xb6));const _0x91e08b=this[_0x2d8dba(0xc0)][_0x2d8dba(0xb9)](_0x5731e4=>_0x5731e4['id'])[_0x2d8dba(0xdd)](_0x361f4f=>({'id':_0x361f4f['id'],'tokens':_0x361f4f['tokens']||0x1})),_0x5d884b={'status':this['status']},_0xfe5ea2=this[_0x2d8dba(0xb0)](this['maxConcurrency']);null!=_0xfe5ea2&&(_0x5d884b[_0x2d8dba(0xac)]=_0xfe5ea2);const _0xb62589={},_0x1eab87=this[_0x2d8dba(0xb0)](this[_0x2d8dba(0xa5)]);null!=_0x1eab87&&(_0xb62589[_0x2d8dba(0xe7)]=_0x1eab87);const _0x2b7b38=this[_0x2d8dba(0xb0)](this[_0x2d8dba(0xe3)]);null!=_0x2b7b38&&(_0xb62589[_0x2d8dba(0xad)]=_0x2b7b38);const _0x2e0607=this['parseOptFloat'](this[_0x2d8dba(0xd4)]);null!=_0x2e0607&&(_0xb62589[_0x2d8dba(0xe5)]=_0x2e0607);const _0x262fdc=this[_0x2d8dba(0xb0)](this[_0x2d8dba(0xca)]);null!=_0x262fdc&&(_0xb62589[_0x2d8dba(0xae)]=_0x262fdc);const _0xa3690=this[_0x2d8dba(0xb0)](this[_0x2d8dba(0xdf)]);null!=_0xa3690&&(_0xb62589['ttl']=_0xa3690);const _0x42af0a=this[_0x2d8dba(0xb0)](this[_0x2d8dba(0xc3)]);null!=_0x42af0a&&(_0xb62589['done_ttl']=_0x42af0a);const _0x553d25=this['parseOptInt'](this[_0x2d8dba(0xc2)]);null!=_0x553d25&&(_0xb62589['failed_ttl']=_0x553d25),_0x91e08b['length']&&(_0xb62589[_0x2d8dba(0xcf)]=_0x91e08b),Object[_0x2d8dba(0xda)](_0xb62589)[_0x2d8dba(0xa7)]&&(_0x5d884b[_0x2d8dba(0xd6)]=_0xb62589),this[_0x2d8dba(0xe9)]=!0x0;try{const _0x5023a0=this[_0x2d8dba(0xe0)]?_0x534378[_0x2d8dba(0xa9)]+_0x2d8dba(0xb2)+encodeURIComponent(_0x485020):_0x534378[_0x2d8dba(0xa9)]+_0x2d8dba(0xd8),_0x584117=this['isEdit']?'PUT':'POST',_0x293b5f=this['isEdit']?_0x5d884b:{'id':_0x485020,..._0x5d884b};if(!(await fetch(_0x5023a0,{'method':_0x584117,'headers':{'Content-Type':_0x2d8dba(0xaf)},'body':JSON[_0x2d8dba(0xcb)](_0x293b5f)}))['ok'])throw new Error(_0x2d8dba(0xd2));await _0x1376bf[_0x2d8dba(0xc8)][_0x2d8dba(0xcd)][_0x2d8dba(0xb1)](),await _0x1376bf['$attr'][_0x2d8dba(0xd9)]?.();}catch{_0x1376bf[_0x2d8dba(0xa2)]['shared']?.[_0x2d8dba(0xe2)]?.[_0x2d8dba(0xab)]?.(_0x2d8dba(0xdb));}finally{this[_0x2d8dba(0xe9)]=!0x1;}},'cancel'(){const _0x53f957=_0x3b08a1;_0x1376bf['$attr'][_0x53f957(0xcd)]['close']();}}),'mount'(){const _0x56f69f=_0x3b08a1;this[_0x56f69f(0xd3)]();},'template':_0x3b08a1(0xd1),'style':_0x3b08a1(0xaa)};
|
|
@@ -1 +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 _0x4c3a2c=_0x522b;(function(_0x5c36ec,_0x274104){const _0x50f99a=_0x522b,_0x4e0c07=_0x5c36ec();while(!![]){try{const _0x2fd2ae=-parseInt(_0x50f99a(0x110))/0x1+-parseInt(_0x50f99a(0x118))/0x2+parseInt(_0x50f99a(0x113))/0x3*(-parseInt(_0x50f99a(0xf2))/0x4)+parseInt(_0x50f99a(0x100))/0x5*(-parseInt(_0x50f99a(0x11d))/0x6)+parseInt(_0x50f99a(0x115))/0x7+-parseInt(_0x50f99a(0xf5))/0x8*(parseInt(_0x50f99a(0x12a))/0x9)+parseInt(_0x50f99a(0xef))/0xa*(parseInt(_0x50f99a(0x121))/0xb);if(_0x2fd2ae===_0x274104)break;else _0x4e0c07['push'](_0x4e0c07['shift']());}catch(_0x5397a9){_0x4e0c07['push'](_0x4e0c07['shift']());}}}(_0x2148,0xcd016));import _0x19c300 from'../../../components/ok-cron-input.ok.js';function _0x2148(){const _0x3ea9da=['form-change','open','dispatchEvent','when','ok-job-form','initialType','_populateFromJob','now','asap','/queue/buckets','backoff_multiplier','_emitChange','__create__','payloadInit','apiBase','973742QFBEYd','$ok','tags','24WJcjLu','filter','4868360BhbaFW','buckets','.mode-btn{font-size:11px;padding:2px\x208px;opacity:.6;border-radius:4px}.mode-btn--on{opacity:1;background:color-mix(in\x20srgb,var(--okdb-accent)\x2013%,transparent);border-color:color-mix(in\x20srgb,var(--okdb-accent)\x2033%,transparent);color:var(--okdb-accent)}.btn-ghost{background:0\x200;border:1px\x20solid\x20var(--okdb-app-border);border-radius:5px;color:inherit;cursor:pointer;opacity:.6;padding:2px\x208px;font-size:12px}.btn-ghost:hover{opacity:1;border-color:color-mix(in\x20srgb,var(--okdb-accent)\x2033%,transparent)}.btn-ghost--sm{font-size:11px;padding:1px\x207px}','548038zRzzQQ','bucketOptions','loadBuckets','getWhen','data','99714nqVxma','whenMode','toISOString','idempotency_key','105248viwePr','$attr','priority','whenTs','length','getTime','slice','type','whenDatetime','9TRlemt','bucket_tokens','maxTries','job','bucket','payload','5990eXjjZr','trim','isArray','768748Uvfops','\x0a<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:10px;\x22>\x0a\x0a\x20\x20<!--\x20Row\x201:\x20type\x20+\x20priority\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Type</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20placeholder=\x22e.g.\x20email.send\x22\x20:value=\x22type\x22\x20@input=\x22type\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22width:120px;\x22><label>Priority</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20placeholder=\x220\x22\x20:value=\x22priority\x22\x20@input=\x22priority\x20=\x20Number($el.value)\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Row\x202:\x20tags\x20+\x20idempotency\x20key\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Tags</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20placeholder=\x22comma\x20separated\x22\x20:value=\x22tags\x22\x20@input=\x22tags\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>Idempotency\x20Key</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20placeholder=\x22optional\x20—\x20prevents\x20duplicate\x20jobs\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22idempotencyKey\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22idempotencyKey\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Buckets\x20-->\x0a\x20\x20<div\x20class=\x22field\x22>\x0a\x20\x20\x20\x20<label>Buckets\x20<span\x20style=\x22opacity:.4;\x20font-weight:400;\x20font-size:11px;\x22>(rate\x20limiting)</span></label>\x0a\x20\x20\x20\x20<each\x20:of=\x22buckets\x22\x20let:item=\x22b\x22\x20let:index=\x22i\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:6px;\x20align-items:center;\x20margin-bottom:4px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<select\x20style=\x22flex:1;\x22\x20@change=\x22onBucketSelect(i,\x20$el.value)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>—\x20none\x20—</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20as=\x22repeat\x22\x20:of=\x22bucketOptions\x22\x20let:item=\x22opt\x22\x20:value=\x22opt.id\x22\x20:selected=\x22opt.id\x20===\x20b.id\x22>{{\x20opt.id\x20}}</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22__create__\x22>+\x20Create\x20bucket…</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20style=\x22width:72px;\x22\x20type=\x22number\x22\x20min=\x221\x22\x20placeholder=\x22tokens\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22b.tokens\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22setBucketTokens(i,\x20$el.value)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x22\x20@click=\x22removeBucket(i)\x22\x20title=\x22Remove\x22>✕</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-ghost--sm\x22\x20@click=\x22addBucket()\x22\x20style=\x22margin-top:2px;\x22>+\x20Add\x20bucket</button>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Row\x203:\x20when\x20+\x20max\x20tries\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>When</label>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:4px;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22whenMode===\x27asap\x27\x20?\x20\x27mode-btn\x20mode-btn--on\x27\x20:\x20\x27mode-btn\x27\x22\x20@click=\x22whenMode=\x27asap\x27\x22>ASAP</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22whenMode===\x27datetime\x27\x20?\x20\x27mode-btn\x20mode-btn--on\x27\x20:\x20\x27mode-btn\x27\x22\x20@click=\x22whenMode=\x27datetime\x27\x22>Date</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22whenMode===\x27timestamp\x27\x20?\x20\x27mode-btn\x20mode-btn--on\x27\x20:\x20\x27mode-btn\x27\x22\x20@click=\x22whenMode=\x27timestamp\x27\x22>TS</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22whenMode\x20===\x20\x27datetime\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22datetime-local\x22\x20style=\x22flex:1;\x22\x20:value=\x22whenDatetime\x22\x20@input=\x22whenDatetime\x20=\x20$el.value\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22whenMode\x20===\x20\x27timestamp\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20style=\x22flex:1;\x22\x20placeholder=\x22ms\x20timestamp\x22\x20:value=\x22whenTs\x22\x20@input=\x22whenTs\x20=\x20$el.value\x20===\x20\x27\x27\x20?\x20null\x20:\x20Number($el.value)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22whenMode\x20===\x20\x27asap\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.5;\x20font-size:12px;\x20padding:0\x208px;\x22>Run\x20immediately</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22width:120px;\x22><label>Max\x20tries</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20placeholder=\x22unlimited\x22\x20:value=\x22maxTries\x22\x20@input=\x22maxTries\x20=\x20$el.value\x20===\x20\x27\x27\x20?\x20null\x20:\x20Number($el.value)\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Row\x204:\x20retry\x20delay\x20+\x20backoff\x20+\x20cron\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:flex-end;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Retry\x20delay\x20(ms)</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20placeholder=\x220\x22\x20:value=\x22retryDelay\x22\x20@input=\x22retryDelay\x20=\x20Number($el.value)\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22width:120px;\x22><label>Backoff\x20multiplier</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20step=\x220.1\x22\x20placeholder=\x221\x22\x20:value=\x22backoff\x22\x20@input=\x22backoff\x20=\x20Number($el.value)\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22field\x22\x20style=\x22flex:1;\x22><label>Cron</label>\x0a\x20\x20\x20\x20\x20\x20<ok-cron-input\x20:value=\x22cron\x22\x20placeholder=\x22optional\x22\x20@change=\x22cron\x20=\x20$event.detail\x22\x20/>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Payload\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20<span\x20style=\x22opacity:.7;\x20font-size:12px;\x22>Payload</span>\x0a\x20\x20\x20\x20<ok-json-input\x0a\x20\x20\x20\x20\x20\x20mode=\x22textarea\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22height:260px;\x22\x0a\x20\x20\x20\x20\x20\x20:value=\x22payloadInit\x22\x0a\x20\x20\x20\x20\x20\x20@edit=\x22payload\x20=\x20$event.detail\x22\x0a\x20\x20\x20\x20/>\x0a\x20\x20</div>\x0a\x0a</div>\x0a','idempotencyKey','11644912srmWES','retry_delay','join','modal','tokens','cron','backoff','datetime','map','retryDelay','shared','405yfGVrc'];_0x2148=function(){return _0x3ea9da;};return _0x2148();}import _0x4a1e03 from'../../../components/ok-json-input.ok.js';import _0x565a0b from'../modals/create-bucket-modal.ok.js';function _0x522b(_0x416b0a,_0x340a4b){_0x416b0a=_0x416b0a-0xeb;const _0x2148b5=_0x2148();let _0x522ba0=_0x2148b5[_0x416b0a];return _0x522ba0;}import _0x2093e4 from'../../../stores/okdb-store.js';export default{'tag':_0x4c3a2c(0x105),'dependencies':[_0x19c300,_0x4a1e03,_0x565a0b],'attr':{'job':{},'initialType':{}},'context':_0x751829=>({'type':'','payloadInit':{},'payload':{},'when':null,'whenMode':'asap','whenDatetime':'','whenTs':null,'priority':0x0,'maxTries':null,'retryDelay':0x0,'backoff':0x1,'tags':'','buckets':[],'cron':'','idempotencyKey':'','bucketOptions':[],async 'loadBuckets'(){const _0x5d1320=_0x4c3a2c;try{const _0x4b3875=await fetch(_0x2093e4[_0x5d1320(0x10f)]+_0x5d1320(0x10a)),_0x1b0871=await _0x4b3875['json']();this[_0x5d1320(0x119)]=_0x1b0871?.[_0x5d1320(0x11c)]??[];}catch{this[_0x5d1320(0x119)]=[];}},async 'onBucketSelect'(_0x254899,_0x13da33){const _0x2a8b1d=_0x4c3a2c;if(_0x2a8b1d(0x10d)===_0x13da33){const _0x4f0eb5=this;await _0x751829[_0x2a8b1d(0x111)][_0x2a8b1d(0xff)][_0x2a8b1d(0xf8)][_0x2a8b1d(0x102)]({'owner':_0x751829,'title':'Add\x20Token\x20Bucket','content':'<create-bucket-modal\x20:modal=\x22modal\x22\x20:on-done=\x22onDone\x22\x20/>','context':_0xa442d3=>({'modal':_0xa442d3,'onDone':async _0x1b915e=>{const _0x55a3cb=_0x2a8b1d;await _0x4f0eb5[_0x55a3cb(0x11a)](),_0x4f0eb5[_0x55a3cb(0x116)]=_0x4f0eb5['buckets'][_0x55a3cb(0xfd)]((_0x2964b5,_0x4c46b7)=>_0x4c46b7===_0x254899?{..._0x2964b5,'id':_0x1b915e}:_0x2964b5);}})});}else this[_0x2a8b1d(0x116)]=this[_0x2a8b1d(0x116)][_0x2a8b1d(0xfd)]((_0x3beb73,_0x4ad712)=>_0x4ad712===_0x254899?{..._0x3beb73,'id':_0x13da33}:_0x3beb73);},'setBucketTokens'(_0x13cb90,_0x45f511){const _0x4a2f48=_0x4c3a2c,_0x2f0a8d=''===_0x45f511?0x1:Math['max'](0x1,parseInt(_0x45f511)||0x1);this[_0x4a2f48(0x116)]=this[_0x4a2f48(0x116)][_0x4a2f48(0xfd)]((_0x645b27,_0x4e20a3)=>_0x4e20a3===_0x13cb90?{..._0x645b27,'tokens':_0x2f0a8d}:_0x645b27);},'addBucket'(){const _0x2cf01c=_0x4c3a2c;this[_0x2cf01c(0x116)]=[...this[_0x2cf01c(0x116)],{'id':'','tokens':0x1}];},'removeBucket'(_0x560e8e){const _0x123205=_0x4c3a2c;this[_0x123205(0x116)]=this[_0x123205(0x116)][_0x123205(0x114)]((_0x2677d1,_0x34db8d)=>_0x34db8d!==_0x560e8e);},'getWhen'(){const _0x153230=_0x4c3a2c;if(_0x153230(0x109)===this['whenMode'])return null;if(_0x153230(0xfc)===this['whenMode']){const _0x55d48c=new Date(this['whenDatetime']);return isNaN(_0x55d48c[_0x153230(0x126)]())?null:_0x55d48c[_0x153230(0x126)]();}return this[_0x153230(0x124)];},'_parseTags'(_0x3202dc){const _0x27405f=_0x4c3a2c;if(!_0x3202dc)return;const _0x17ba96=String(_0x3202dc)['split'](',')[_0x27405f(0xfd)](_0x43a0ec=>_0x43a0ec['trim']())[_0x27405f(0x114)](Boolean);return _0x17ba96[_0x27405f(0x125)]?_0x17ba96:void 0x0;},'_emitChange'(){const _0x289c55=_0x4c3a2c,_0x128441=this[_0x289c55(0x11b)](),_0x50e58e=String(this[_0x289c55(0xfa)]||'')[_0x289c55(0xf0)]();_0x751829['$el'][_0x289c55(0x103)](new CustomEvent(_0x289c55(0x101),{'bubbles':!0x1,'detail':{'type':String(this['type']||'')[_0x289c55(0xf0)](),'payload':this[_0x289c55(0xee)],'priority':Number(this[_0x289c55(0x123)])||0x0,'retry_delay':Number(this['retryDelay'])||0x0,'backoff_multiplier':Number(this[_0x289c55(0xfb)])||0x1,'max_tries':null!==this[_0x289c55(0xeb)]&&''!==this['maxTries']?Number(this[_0x289c55(0xeb)]):null,'buckets':this[_0x289c55(0x116)][_0x289c55(0x114)](_0x19c36f=>_0x19c36f['id'])[_0x289c55(0xfd)](_0xa18a95=>({'id':_0xa18a95['id'],'tokens':_0xa18a95[_0x289c55(0xf9)]||0x1})),'when':_0x128441,'cron':_0x50e58e||null,'tags':this['_parseTags'](this['tags']),'idempotency_key':this[_0x289c55(0xf4)]||null}}));},'_populateFromJob'(_0xd4b1ef){const _0x57e41c=_0x4c3a2c;if(!_0xd4b1ef)return this[_0x57e41c(0x128)]='',this[_0x57e41c(0x10e)]={},this[_0x57e41c(0xee)]={},this[_0x57e41c(0x104)]=null,this[_0x57e41c(0x11e)]='asap',this['whenDatetime']='',this[_0x57e41c(0x124)]=null,this[_0x57e41c(0x123)]=0x0,this['maxTries']=null,this[_0x57e41c(0xfe)]=0x0,this[_0x57e41c(0xfb)]=0x1,this[_0x57e41c(0x112)]='',this[_0x57e41c(0x116)]=[{'id':'','tokens':0x1}],this[_0x57e41c(0xfa)]='',this[_0x57e41c(0xf4)]='',void this[_0x57e41c(0x10c)]();this[_0x57e41c(0x128)]=_0xd4b1ef?.[_0x57e41c(0x128)]??'',this[_0x57e41c(0x10e)]=_0xd4b1ef?.[_0x57e41c(0xee)]??{},this[_0x57e41c(0xee)]=_0xd4b1ef?.[_0x57e41c(0xee)]??{},this[_0x57e41c(0x104)]=_0xd4b1ef?.[_0x57e41c(0x104)]??null,this[_0x57e41c(0x123)]=_0xd4b1ef?.[_0x57e41c(0x123)]??0x0,this[_0x57e41c(0xeb)]=_0xd4b1ef?.['max_tries']??null,this[_0x57e41c(0xfe)]=_0xd4b1ef?.[_0x57e41c(0xf6)]??0x0,this[_0x57e41c(0xfb)]=_0xd4b1ef?.[_0x57e41c(0x10b)]??0x1,this[_0x57e41c(0x112)]=Array[_0x57e41c(0xf1)](_0xd4b1ef?.['tags'])?_0xd4b1ef[_0x57e41c(0x112)][_0x57e41c(0xf7)](',\x20'):'',this[_0x57e41c(0xfa)]=_0xd4b1ef?.['cron']??'',this['idempotencyKey']=_0xd4b1ef?.[_0x57e41c(0x120)]||'',_0xd4b1ef?.[_0x57e41c(0x104)]&&_0xd4b1ef[_0x57e41c(0x104)]>Date[_0x57e41c(0x108)]()-0x3e8?(this[_0x57e41c(0x11e)]='timestamp',this['whenDatetime']=new Date(_0xd4b1ef['when'])[_0x57e41c(0x11f)]()[_0x57e41c(0x127)](0x0,0x10),this[_0x57e41c(0x124)]=_0xd4b1ef[_0x57e41c(0x104)]):(this['whenMode']=_0x57e41c(0x109),this[_0x57e41c(0x129)]='',this[_0x57e41c(0x124)]=null),Array[_0x57e41c(0xf1)](_0xd4b1ef?.['buckets'])&&_0xd4b1ef[_0x57e41c(0x116)][_0x57e41c(0x125)]>0x0?this[_0x57e41c(0x116)]=_0xd4b1ef[_0x57e41c(0x116)][_0x57e41c(0xfd)](_0x2c1b4a=>({'id':_0x2c1b4a['id'],'tokens':_0x2c1b4a['tokens']??0x1})):this[_0x57e41c(0x116)]=_0xd4b1ef?.[_0x57e41c(0xed)]?[{'id':_0xd4b1ef[_0x57e41c(0xed)],'tokens':_0xd4b1ef[_0x57e41c(0x12b)]??0x1}]:[],this[_0x57e41c(0x10c)]();}}),async 'mount'(_0x3eb8f2){const _0x35b3c6=_0x4c3a2c;await this['loadBuckets'](),this['_populateFromJob'](_0x3eb8f2['$attr'][_0x35b3c6(0xec)]??null),_0x3eb8f2[_0x35b3c6(0x122)][_0x35b3c6(0x106)]&&(this[_0x35b3c6(0x128)]=_0x3eb8f2[_0x35b3c6(0x122)][_0x35b3c6(0x106)]),setTimeout(()=>this[_0x35b3c6(0x10c)](),0x0);},'watch':{'job'(_0x35906b){const _0x58bcd1=_0x4c3a2c;this[_0x58bcd1(0x107)](_0x35906b);},'type'(){const _0x501695=_0x4c3a2c;this[_0x501695(0x10c)]();},'payload'(){this['_emitChange']();},'priority'(){const _0x74d88c=_0x4c3a2c;this[_0x74d88c(0x10c)]();},'retryDelay'(){const _0x14cdd0=_0x4c3a2c;this[_0x14cdd0(0x10c)]();},'backoff'(){const _0x13780a=_0x4c3a2c;this[_0x13780a(0x10c)]();},'maxTries'(){this['_emitChange']();},'buckets'(){this['_emitChange']();},'whenMode'(){this['_emitChange']();},'whenDatetime'(){const _0x2797dc=_0x4c3a2c;this[_0x2797dc(0x10c)]();},'whenTs'(){const _0x309213=_0x4c3a2c;this[_0x309213(0x10c)]();},'cron'(){const _0x4c6c32=_0x4c3a2c;this[_0x4c6c32(0x10c)]();},'tags'(){const _0x426003=_0x4c3a2c;this[_0x426003(0x10c)]();},'idempotencyKey'(){this['_emitChange']();}},'template':_0x4c3a2c(0xf3),'style':_0x4c3a2c(0x117)};
|
|
@@ -1 +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 _0x2e8eec=_0x4d13;(function(_0x510311,_0x59869f){const _0x235d7f=_0x4d13,_0x3c6792=_0x510311();while(!![]){try{const _0x3010ed=parseInt(_0x235d7f(0x1ac))/0x1*(-parseInt(_0x235d7f(0x1bd))/0x2)+parseInt(_0x235d7f(0x1bb))/0x3+-parseInt(_0x235d7f(0x1c8))/0x4*(-parseInt(_0x235d7f(0x1d0))/0x5)+-parseInt(_0x235d7f(0x1b7))/0x6*(-parseInt(_0x235d7f(0x1b8))/0x7)+parseInt(_0x235d7f(0x1bf))/0x8*(-parseInt(_0x235d7f(0x1d2))/0x9)+parseInt(_0x235d7f(0x1b9))/0xa+-parseInt(_0x235d7f(0x1bc))/0xb;if(_0x3010ed===_0x59869f)break;else _0x3c6792['push'](_0x3c6792['shift']());}catch(_0x727ea8){_0x3c6792['push'](_0x3c6792['shift']());}}}(_0xeaa5,0xbaa6f));import _0xcc7af5 from'../modals/edit-bucket-modal.ok.js';import _0x55b54f from'../../../stores/okdb-store.js';function _0x4d13(_0x101bdb,_0x4c7956){_0x101bdb=_0x101bdb-0x19e;const _0xeaa52a=_0xeaa5();let _0x4d13bd=_0xeaa52a[_0x101bdb];return _0x4d13bd;}export default{'tag':_0x2e8eec(0x1a4),'dependencies':[_0xcc7af5],'context':_0x5f48d4=>({'busy':!0x1,'buckets':[],'error':null,async 'load'(){const _0x44f72b=_0x2e8eec;this[_0x44f72b(0x19f)]=!0x0,this[_0x44f72b(0x1ab)]=null;try{const _0x314f3a=await fetch(_0x55b54f[_0x44f72b(0x1aa)]+_0x44f72b(0x1a7)),_0xcf05d1=await _0x314f3a[_0x44f72b(0x1b4)]();if(!_0x314f3a['ok'])throw new Error(_0xcf05d1?.[_0x44f72b(0x1ab)]?.['message']||_0x44f72b(0x1a8));this[_0x44f72b(0x1c7)]=_0xcf05d1[_0x44f72b(0x1a2)]??[];}catch(_0x104b59){this[_0x44f72b(0x1ab)]=_0x104b59?.[_0x44f72b(0x1ce)]||String(_0x104b59),this[_0x44f72b(0x1c7)]=[];}finally{this[_0x44f72b(0x19f)]=!0x1;}},async 'openCreate'(){const _0x3550ca=_0x2e8eec;await _0x5f48d4[_0x3550ca(0x1be)]['shared'][_0x3550ca(0x1c4)][_0x3550ca(0x1c2)]({'owner':_0x5f48d4,'title':'Add\x20Token\x20Bucket','content':_0x3550ca(0x1a9),'context':_0x5b8756=>({'modal':_0x5b8756,'editMode':!0x1,'initialForm':{},'onDone':async()=>{const _0x53556a=_0x3550ca;await this[_0x53556a(0x1a6)]();}})});},async 'openEdit'(_0x38f351){const _0x514bf3=_0x2e8eec;await _0x5f48d4[_0x514bf3(0x1be)][_0x514bf3(0x1d4)][_0x514bf3(0x1c4)]['open']({'owner':_0x5f48d4,'title':_0x514bf3(0x1b0),'content':'<edit-bucket-modal\x20:modal=\x22modal\x22\x20:edit-mode=\x22editMode\x22\x20:initial-form=\x22initialForm\x22\x20:on-done=\x22onDone\x22\x20/>','context':_0x3c3624=>({'modal':_0x3c3624,'editMode':!0x0,'initialForm':{'id':_0x38f351['id'],'capacity':_0x38f351['capacity'],'tokens':_0x38f351[_0x514bf3(0x1ad)],'refill_amount':_0x38f351[_0x514bf3(0x1cc)]??0x0,'refill_every':_0x38f351[_0x514bf3(0x1b1)]??0x0},'onDone':async()=>{await this['load']();}})});},async 'remove'(_0x2ba5a3){const _0x226eca=_0x2e8eec;if(await _0x5f48d4[_0x226eca(0x1be)][_0x226eca(0x1d4)][_0x226eca(0x1c4)][_0x226eca(0x1ba)](_0x226eca(0x1cb)+_0x2ba5a3['id']+'</b>\x22?'))try{if(!(await fetch(_0x55b54f[_0x226eca(0x1aa)]+_0x226eca(0x1c6)+encodeURIComponent(_0x2ba5a3['id']),{'method':'POST'}))['ok'])throw new Error(_0x226eca(0x1cf));_0x5f48d4[_0x226eca(0x1be)][_0x226eca(0x1d4)]?.[_0x226eca(0x1b2)]?.['info']?.('Deleted\x20\x22'+_0x2ba5a3['id']+'\x22'),await this[_0x226eca(0x1a6)]();}catch(_0x2decbe){_0x5f48d4[_0x226eca(0x1be)][_0x226eca(0x1d4)]?.['toast']?.[_0x226eca(0x1ab)]?.(_0x2decbe?.['message']||'Delete\x20failed');}},async 'refill'(_0x2e1f35){const _0x19005b=_0x2e8eec;try{if(!(await fetch(_0x55b54f[_0x19005b(0x1aa)]+_0x19005b(0x1a3)+encodeURIComponent(_0x2e1f35['id']),{'method':_0x19005b(0x1c1),'headers':{'Content-Type':_0x19005b(0x1c0)},'body':JSON[_0x19005b(0x1c3)]({'tokens':_0x2e1f35[_0x19005b(0x1b6)]})}))['ok'])throw new Error(_0x19005b(0x1cd));_0x5f48d4['$ok'][_0x19005b(0x1d4)]?.[_0x19005b(0x1b2)]?.[_0x19005b(0x1b3)]?.(_0x19005b(0x1b5)+_0x2e1f35['id']+'\x22'),await this[_0x19005b(0x1a6)]();}catch(_0x3aed6d){_0x5f48d4[_0x19005b(0x1be)][_0x19005b(0x1d4)]?.[_0x19005b(0x1b2)]?.['error']?.(_0x3aed6d?.[_0x19005b(0x1ce)]||_0x19005b(0x1cd));}},'tokenPct':_0x3cc8de=>_0x3cc8de[_0x2e8eec(0x1b6)]?Math[_0x2e8eec(0x1ca)](0x64,Math['round'](_0x3cc8de[_0x2e8eec(0x1ad)]/_0x3cc8de[_0x2e8eec(0x1b6)]*0x64)):0x0,'pctColor':_0x1c98bd=>_0x1c98bd>0x3c?'var(--okdb-success)':_0x1c98bd>0x19?_0x2e8eec(0x1d1):_0x2e8eec(0x1ae),'refillLabel'(_0x56fc2d){const _0x2eeccf=_0x2e8eec;if(!_0x56fc2d['refill_every']||!_0x56fc2d[_0x2eeccf(0x1cc)])return _0x2eeccf(0x1d3);const _0x3dab06=_0x56fc2d[_0x2eeccf(0x1b1)];let _0xbceb69;return _0xbceb69=_0x3dab06>=0x36ee80?(_0x3dab06/0x36ee80)[_0x2eeccf(0x1a1)](0x1)+'h':_0x3dab06>=0xea60?Math[_0x2eeccf(0x1a0)](_0x3dab06/0xea60)+'m':Math[_0x2eeccf(0x1a0)](_0x3dab06/0x3e8)+'s','+'+_0x56fc2d[_0x2eeccf(0x1cc)]+'\x20/\x20'+_0xbceb69;}}),async 'mount'(_0x316a55){const _0x29e46a=_0x2e8eec;await this[_0x29e46a(0x1a6)](),_0x316a55[_0x29e46a(0x19e)](()=>_0x316a55['$ok'][_0x29e46a(0x1af)][_0x29e46a(0x1c9)][_0x29e46a(0x1c5)],()=>this[_0x29e46a(0x1a6)]());},'template':_0x2e8eec(0x1a5)};function _0xeaa5(){const _0x5eb4b8=['tokens','var(--okdb-danger)','stores','Edit\x20Bucket','refill_every','toast','success','json','Refilled\x20\x22','capacity','6YFbTAF','8155483EcZUEY','14954100ZbTnVo','confirm','2035197fXrzzg','22988361DRDePh','2TYJhiB','$ok','6756976SECesD','application/json','POST','open','stringify','modal','selectedEnv','/queue/bucket/remove/','buckets','648fDxtPf','okdb','min','Delete\x20bucket\x20\x22<b>','refill_amount','Refill\x20failed','message','Delete\x20failed','35250DjTrbC','var(--okdb-warning)','9XrgEhO','No\x20refill','shared','$watch','busy','round','toFixed','data','/queue/bucket/update/','queue-buckets','\x0a<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:16px;\x20height:100%;\x20min-height:0;\x22>\x0a\x0a\x20\x20<!--\x20Toolbar\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22font-weight:600;\x20font-size:16px;\x22>Token\x20Buckets</div>\x0a\x20\x20\x20\x20<div\x20style=\x22margin-left:auto;\x20display:flex;\x20gap:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22load()\x22\x20:disabled=\x22busy\x22>↻\x20Refresh</button>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openCreate()\x22\x20style=\x22background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x2013%,\x20transparent);\x20border-color:var(--okdb-accent);\x20color:var(--okdb-accent);\x22>+\x20Add\x20Bucket</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<if\x20:=\x22error\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-danger);\x20font-size:13px;\x20padding:10px\x2012px;\x20border:1px\x20solid\x20var(--okdb-danger);\x20border-radius:8px;\x22>{{error}}</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Empty\x20state\x20-->\x0a\x20\x20<if\x20:=\x22!busy\x20&&\x20buckets.length\x20===\x200\x20&&\x20!error\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22opacity:.55;\x20font-size:13px;\x20line-height:1.8;\x20padding:16px\x200;\x22>\x0a\x20\x20\x20\x20\x20\x20No\x20token\x20buckets\x20defined.<br>\x0a\x20\x20\x20\x20\x20\x20Token\x20buckets\x20let\x20you\x20rate-limit\x20queue\x20job\x20processing\x20per\x20bucket\x20ID.\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Bucket\x20cards\x20-->\x0a\x20\x20<div\x20style=\x22display:grid;\x20grid-template-columns:repeat(auto-fill,minmax(280px,1fr));\x20gap:12px;\x20overflow:auto;\x20min-height:0;\x22>\x0a\x20\x20\x20\x20<for\x20:=\x22buckets\x22\x20let:b>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:#1e2326;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:1px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:12px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:14px\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:10px;\x0a\x20\x20\x20\x20\x20\x20\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Header\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-weight:600;\x20font-family:monospace;\x20font-size:13px;\x20flex:1;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{b.id}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openEdit(b)\x22\x20style=\x22font-size:11px;\x20padding:3px\x208px;\x20opacity:.8;\x22>Edit</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22remove(b)\x22\x20style=\x22font-size:11px;\x20padding:3px\x208px;\x20color:var(--okdb-danger);\x20opacity:.8;\x22>✕</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Token\x20bar\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20justify-content:space-between;\x20font-size:12px;\x20margin-bottom:4px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.7;\x22>Tokens</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22\x27color:\x27\x20+\x20pctColor(tokenPct(b))\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{b.tokens}}\x20/\x20{{b.capacity}}\x20({{tokenPct(b)}}%)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22height:6px;\x20background:var(--okdb-app-border);\x20border-radius:999px;\x20overflow:hidden;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:style=\x22\x27height:100%;\x20border-radius:999px;\x20width:\x27\x20+\x20tokenPct(b)\x20+\x20\x27%;\x20background:\x27\x20+\x20pctColor(tokenPct(b))\x20+\x20\x27;\x20transition:width\x200.3s;\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Stats\x20row\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:12px;\x20font-size:12px;\x20opacity:.75;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>Refill:\x20<b>{{refillLabel(b)}}</b></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Actions\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22refill(b)\x22\x20style=\x22font-size:11px;\x20flex:1;\x22\x20:disabled=\x22b.tokens\x20>=\x20b.capacity\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Refill\x20to\x20Full\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</for>\x0a\x20\x20</div>\x0a\x0a</div>\x0a','load','/queue/buckets','Failed\x20to\x20load\x20buckets','<edit-bucket-modal\x20:modal=\x22modal\x22\x20:edit-mode=\x22editMode\x22\x20:initial-form=\x22initialForm\x22\x20:on-done=\x22onDone\x22\x20/>','apiBase','error','781978CvHWkf'];_0xeaa5=function(){return _0x5eb4b8;};return _0xeaa5();}
|