@kedem/okdb 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +57 -0
- package/README.md +344 -0
- package/banner.jpg +0 -0
- package/bin/okdb.js +2 -0
- package/docs/OKDB-ARCHITECTURE.md +1036 -0
- package/docs/auth-and-sync.md +558 -0
- package/docs/auth-permissions.md +143 -0
- package/docs/change-log.md +169 -0
- package/docs/data-model.md +174 -0
- package/docs/embeddings.md +338 -0
- package/docs/files.md +131 -0
- package/docs/fts.md +139 -0
- package/docs/functions.md +514 -0
- package/docs/getting-started.md +233 -0
- package/docs/http-api.md +705 -0
- package/docs/index.md +115 -0
- package/docs/indexes.md +207 -0
- package/docs/logging.md +116 -0
- package/docs/manifest.json +38 -0
- package/docs/migration.md +154 -0
- package/docs/pipelines.md +598 -0
- package/docs/plugins.md +144 -0
- package/docs/querying.md +204 -0
- package/docs/queue.md +637 -0
- package/docs/sync.md +156 -0
- package/docs/transactions.md +140 -0
- package/docs/ttl.md +375 -0
- package/okdb.js +1 -0
- package/package.json +26 -0
- package/public/admin-app.js +1 -0
- package/public/android-chrome-192x192.png +0 -0
- package/public/android-chrome-512x512.png +0 -0
- package/public/apple-touch-icon.png +0 -0
- package/public/components/admin-route-host.ok.js +1 -0
- package/public/components/env-picker.ok.js +1 -0
- package/public/components/field-path-input.ok.js +1 -0
- package/public/components/field.html +6 -0
- package/public/components/geo-map.ok.js +1 -0
- package/public/components/ok-cron-input.ok.js +1 -0
- package/public/components/ok-dropzone.ok.js +1 -0
- package/public/components/ok-js-input.ok.js +1 -0
- package/public/components/ok-json-input.ok.js +1 -0
- package/public/components/ok-text-monaco-input.ok.js +1 -0
- package/public/components/theme-toggle.ok.js +1 -0
- package/public/favicon-16x16.png +0 -0
- package/public/favicon-32x32.png +0 -0
- package/public/favicon.ico +0 -0
- package/public/images/logo.png +0 -0
- package/public/images/logo.svg +333 -0
- package/public/index.html +6 -0
- package/public/layouts/_default.ok.html +1 -0
- package/public/layouts/okdb-cube.ok.html +1 -0
- package/public/login-app.js +1 -0
- package/public/login.html +1 -0
- package/public/modules/ok.js +1 -0
- package/public/sections/api/index.ok.html +1 -0
- package/public/sections/api/parts/api-endpoint.ok.js +1 -0
- package/public/sections/auth/index.ok.html +1 -0
- package/public/sections/auth/modals/create-token-modal.ok.js +1 -0
- package/public/sections/auth/modals/edit-token-modal.ok.js +1 -0
- package/public/sections/auth/modals/perm-info-popover.ok.js +1 -0
- package/public/sections/auth/parts/token-detail.ok.js +1 -0
- package/public/sections/auth/parts/token-list.ok.js +1 -0
- package/public/sections/db/index.ok.html +1 -0
- package/public/sections/db/modals/add-item-modal.ok.js +1 -0
- package/public/sections/db/modals/create-env-modal.ok.js +1 -0
- package/public/sections/db/modals/create-fts-modal.ok.js +1 -0
- package/public/sections/db/modals/create-index-modal.ok.js +1 -0
- package/public/sections/db/modals/create-pipeline-modal.ok.js +1 -0
- package/public/sections/db/modals/demo-env-modal.ok.js +1 -0
- package/public/sections/db/modals/remove-env-modal.ok.js +1 -0
- package/public/sections/db/modals/schema-edit-modal.ok.js +1 -0
- package/public/sections/db/parts/db-overview.ok.js +1 -0
- package/public/sections/db/parts/db-pipelines-panel.ok.js +1 -0
- package/public/sections/db/parts/edit-row.ok.js +1 -0
- package/public/sections/db/parts/tm-timeline.ok.js +1 -0
- package/public/sections/db/parts/type-changelog.ok.js +1 -0
- package/public/sections/db/parts/type-list.ok.js +1 -0
- package/public/sections/db/parts/type-pipelines-tab.ok.js +1 -0
- package/public/sections/db/parts/type-schema-tab.ok.js +1 -0
- package/public/sections/db/parts/type-viewer.ok.js +1 -0
- package/public/sections/db/parts/type-violations-tab.ok.js +1 -0
- package/public/sections/docs/index.ok.html +1 -0
- package/public/sections/embeddings/index.ok.html +1 -0
- package/public/sections/embeddings/modals/register-model-modal.ok.js +1 -0
- package/public/sections/embeddings/parts/embed-create-panel.ok.js +1 -0
- package/public/sections/embeddings/parts/embed-embedder-panel.ok.js +1 -0
- package/public/sections/embeddings/parts/embed-engine-declaration-editor.ok.js +1 -0
- package/public/sections/embeddings/parts/embed-engine-list.ok.js +1 -0
- package/public/sections/embeddings/parts/embed-indexer-panel.ok.js +1 -0
- package/public/sections/embeddings/parts/embed-lifecycle-bar.ok.js +1 -0
- package/public/sections/embeddings/parts/embed-model-catalog.ok.js +1 -0
- package/public/sections/embeddings/parts/embed-overview.ok.js +1 -0
- package/public/sections/embeddings/parts/embed-search-panel.ok.js +1 -0
- package/public/sections/embeddings/parts/embed-worker-panel.ok.js +1 -0
- package/public/sections/embeddings/parts/embeddings-engine-panel.ok.js +1 -0
- package/public/sections/embeddings/parts/engines-overview.ok.js +1 -0
- package/public/sections/embeddings/parts/pipeline-create-panel.ok.js +1 -0
- package/public/sections/engines/engine-panel-shared-style.js +1 -0
- package/public/sections/engines/engine-ui-utils.js +1 -0
- package/public/sections/engines/index.ok.html +1 -0
- package/public/sections/engines/modals/engine-modal.ok.js +1 -0
- package/public/sections/engines/parts/engine-declaration-editor.ok.js +1 -0
- package/public/sections/engines/parts/engine-lifecycle-actions.ok.js +1 -0
- package/public/sections/engines/parts/engine-panel-shell.ok.js +1 -0
- package/public/sections/engines/parts/engine-resource-card.ok.js +1 -0
- package/public/sections/engines/parts/engine-row-item.ok.js +1 -0
- package/public/sections/engines/parts/generic-engine-panel.ok.js +1 -0
- package/public/sections/files/index.ok.html +1 -0
- package/public/sections/files/parts/files-blob-status.ok.js +1 -0
- package/public/sections/files/parts/files-collection-list.ok.js +1 -0
- package/public/sections/files/parts/files-collection-panel.ok.js +1 -0
- package/public/sections/files/parts/files-file-list.ok.js +1 -0
- package/public/sections/files/parts/files-overview.ok.js +1 -0
- package/public/sections/files/parts/files-path-browser.ok.js +1 -0
- package/public/sections/files/parts/files-upload-panel.ok.js +1 -0
- package/public/sections/functions/index.ok.html +1 -0
- package/public/sections/functions/modals/function-modal.ok.js +1 -0
- package/public/sections/functions/parts/function-detail.ok.js +1 -0
- package/public/sections/functions/parts/function-logs.ok.js +1 -0
- package/public/sections/functions/parts/function-runner.ok.js +1 -0
- package/public/sections/functions/parts/functions-list.ok.js +1 -0
- package/public/sections/license/index.ok.html +1 -0
- package/public/sections/license/parts/license-panel.ok.js +1 -0
- package/public/sections/processors/index.ok.html +1 -0
- package/public/sections/queue/index.ok.html +1 -0
- package/public/sections/queue/modals/create-bucket-modal.ok.js +1 -0
- package/public/sections/queue/modals/edit-bucket-modal.ok.js +1 -0
- package/public/sections/queue/modals/edit-job-modal.ok.js +1 -0
- package/public/sections/queue/modals/enqueue-job-modal.ok.js +1 -0
- package/public/sections/queue/modals/job-type-modal.ok.js +1 -0
- package/public/sections/queue/parts/ok-job-form.ok.js +1 -0
- package/public/sections/queue/parts/queue-buckets.ok.js +1 -0
- package/public/sections/queue/parts/queue-job-types.ok.js +1 -0
- package/public/sections/queue/parts/queue-jobs.ok.js +1 -0
- package/public/sections/queue/parts/queue-types.ok.js +1 -0
- package/public/sections/queue/parts/queue-workers.ok.js +1 -0
- package/public/sections/sync/index.ok.html +5 -0
- package/public/sections/sync/parts/sync-node-detail.ok.js +1 -0
- package/public/sections/sync/parts/sync-retention.ok.js +1 -0
- package/public/sections/sync/parts/sync-topology.ok.js +1 -0
- package/public/sections/system/index.ok.html +1 -0
- package/public/sections/system/modals/data-ops-modal.ok.js +1 -0
- package/public/sections/system/parts/system-api-panel.ok.js +1 -0
- package/public/sections/system/parts/system-auth-panel.ok.js +1 -0
- package/public/sections/system/parts/system-log-history.ok.js +1 -0
- package/public/sections/system/parts/system-log.ok.js +1 -0
- package/public/sections/system/parts/system-status.ok.js +1 -0
- package/public/sections/system/parts/system-sync-panel.ok.js +1 -0
- package/public/sections/views/index.ok.html +1 -0
- package/public/sections/views/modals/create-view-modal.ok.js +1 -0
- package/public/sections/views/parts/view-detail.ok.js +1 -0
- package/public/sections/views/parts/views-list.ok.js +1 -0
- package/public/sections/views/parts/views-overview.ok.js +1 -0
- package/public/setup-app.js +1 -0
- package/public/setup.html +1 -0
- package/public/site.webmanifest +1 -0
- package/public/stores/auth-store.js +1 -0
- package/public/stores/events-store.js +1 -0
- package/public/stores/functions-store.js +1 -0
- package/public/stores/okdb-store.js +1 -0
- package/public/stores/theme-store.js +1 -0
- package/public/styles.css +1 -0
- package/public/test-cron-input.html +10 -0
- package/public/test-json-input.html +101 -0
- package/public/util/permissions.js +1 -0
- package/public/util/sift-schema.js +1 -0
- package/public/vendor/okjs/ok.esm.min.js +2 -0
- package/public/vendor/okjs/toolkit/behavior/async.ok.js +1 -0
- package/public/vendor/okjs/toolkit/components/ok-chart.ok.js +1 -0
- package/public/vendor/okjs/toolkit/components/ok-doc-viewer.ok.js +1 -0
- package/public/vendor/okjs/toolkit/components/ok-marked.ok.js +1 -0
- package/public/vendor/okjs/toolkit/components/ok-monaco.ok.js +1 -0
- package/public/vendor/okjs/toolkit/core/ok-layer-service.ok.js +1 -0
- package/public/vendor/okjs/toolkit/core/ok-layer.ok.js +1 -0
- package/public/vendor/okjs/toolkit/core/ok-overlay.ok.js +1 -0
- package/public/vendor/okjs/toolkit/core/ok-sandbox.ok.js +1 -0
- package/public/vendor/okjs/toolkit/core/transition.ok.js +1 -0
- package/public/vendor/okjs/toolkit/core/virtualized.ok.js +1 -0
- package/public/vendor/okjs/toolkit/devtools/ok-console-service.ok.js +1 -0
- package/public/vendor/okjs/toolkit/devtools/ok-console.ok.js +1 -0
- package/public/vendor/okjs/toolkit/devtools/ok-fps-monitor-service.ok.js +1 -0
- package/public/vendor/okjs/toolkit/devtools/ok-fps-monitor.ok.js +1 -0
- package/public/vendor/okjs/toolkit/devtools/ok-inspector-service.ok.js +1 -0
- package/public/vendor/okjs/toolkit/devtools/ok-inspector.ok.js +1 -0
- package/public/vendor/okjs/toolkit/devtools/ok-js-tree.ok.js +1 -0
- package/public/vendor/okjs/toolkit/devtools/ok-timeline-service.ok.js +1 -0
- package/public/vendor/okjs/toolkit/devtools/ok-timeline.ok.js +1 -0
- package/public/vendor/okjs/toolkit/docs/doc-viewer.ok.js +1 -0
- package/public/vendor/okjs/toolkit/editor/ok-live-component.ok.js +1 -0
- package/public/vendor/okjs/toolkit/editor/ok-live-example.ok.js +1 -0
- package/public/vendor/okjs/toolkit/editor/ok-live-shell.ok.js +1 -0
- package/public/vendor/okjs/toolkit/elements/ok-dropdown.ok.js +1 -0
- package/public/vendor/okjs/toolkit/elements/ok-icon.ok.js +1 -0
- package/public/vendor/okjs/toolkit/elements/ok-select.ok.js +1 -0
- package/public/vendor/okjs/toolkit/elements/ok-table.ok.js +1 -0
- package/public/vendor/okjs/toolkit/errors/ok-crash-boundary.ok.js +1 -0
- package/public/vendor/okjs/toolkit/errors/ok-crash-info.ok.js +1 -0
- package/public/vendor/okjs/toolkit/i18n/i18n-editor-examples.ok.js +1 -0
- package/public/vendor/okjs/toolkit/i18n/i18n-editor.ok.js +1 -0
- package/public/vendor/okjs/toolkit/i18n/i18n-key-editor-tips.ok.js +1 -0
- package/public/vendor/okjs/toolkit/i18n/i18n-key-editor.ok.js +1 -0
- package/public/vendor/okjs/toolkit/i18n/i18n-service.ok.js +1 -0
- package/public/vendor/okjs/toolkit/i18n/ok-i18n.js +1 -0
- package/public/vendor/okjs/toolkit/interaction/ok-contextmenu.ok.js +1 -0
- package/public/vendor/okjs/toolkit/interaction/ok-dismiss-service.ok.js +1 -0
- package/public/vendor/okjs/toolkit/interaction/ok-draggable.ok.js +1 -0
- package/public/vendor/okjs/toolkit/interaction/ok-flyover-panel.ok.js +1 -0
- package/public/vendor/okjs/toolkit/interaction/ok-flyover.ok.js +1 -0
- package/public/vendor/okjs/toolkit/interaction/ok-highlight-service.ok.js +1 -0
- package/public/vendor/okjs/toolkit/interaction/ok-highlight.ok.js +1 -0
- package/public/vendor/okjs/toolkit/interaction/ok-hotkeys-service.ok.js +1 -0
- package/public/vendor/okjs/toolkit/interaction/ok-picker-service.ok.js +1 -0
- package/public/vendor/okjs/toolkit/interaction/ok-popout-service.ok.js +1 -0
- package/public/vendor/okjs/toolkit/interaction/ok-popout.ok.js +1 -0
- package/public/vendor/okjs/toolkit/interaction/ok-portal-service.ok.js +1 -0
- package/public/vendor/okjs/toolkit/interaction/ok-submenu.ok.js +1 -0
- package/public/vendor/okjs/toolkit/layout/ok-resizer.ok.js +1 -0
- package/public/vendor/okjs/toolkit/manifest.js +1 -0
- package/public/vendor/okjs/toolkit/modals/ok-modal-service.ok.js +1 -0
- package/public/vendor/okjs/toolkit/modals/ok-modal.ok.js +1 -0
- package/public/vendor/okjs/toolkit/modals/ok-toast-service.ok.js +1 -0
- package/public/vendor/okjs/toolkit/modals/ok-window.ok.js +1 -0
- package/public/vendor/okjs/toolkit/navigation/hash-router.ok.js +1 -0
- package/public/vendor/okjs/toolkit/navigation/history-router.ok.js +1 -0
- package/public/vendor/okjs/toolkit/navigation/router.ok.js +1 -0
- package/public/vendor/okjs/toolkit/sync/reactive-sync-service.ok.js +1 -0
- package/public/vendor/okjs/toolkit/sync/reactive-sync.js +1 -0
- package/public/vendor/okjs/toolkit/theming/blocks/ok-design-button.css.js +1 -0
- package/public/vendor/okjs/toolkit/theming/blocks/ok-design-input.css.js +1 -0
- package/public/vendor/okjs/toolkit/theming/ok-design-style.js +1 -0
- package/public/vendor/okjs/toolkit/theming/ok-design-vars.js +1 -0
- package/public/vendor/okjs/toolkit/theming/ok-design.ok.js +1 -0
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-input.ok.js +1 -0
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-service.ok.js +1 -0
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-style.js +1 -0
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-utils.js +1 -0
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-variable.ok.js +1 -0
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-vm.js +1 -0
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor.ok.js +1 -0
- package/public/vendor/okjs/toolkit/theming/ok-theme.ok.js +1 -0
- package/public/view-models/type-query-vm.js +1 -0
- package/types/environment.d.ts +130 -0
- package/types/errors.d.ts +98 -0
- package/types/features/admin.d.ts +4 -0
- package/types/features/api.d.ts +18 -0
- package/types/features/auth.d.ts +31 -0
- package/types/features/embeddings.d.ts +39 -0
- package/types/features/engines.d.ts +23 -0
- package/types/features/files.d.ts +29 -0
- package/types/features/fts.d.ts +25 -0
- package/types/features/functions.d.ts +23 -0
- package/types/features/mcp.d.ts +17 -0
- package/types/features/pipelines.d.ts +19 -0
- package/types/features/queue.d.ts +189 -0
- package/types/features/sync.d.ts +34 -0
- package/types/features/time-machine.d.ts +32 -0
- package/types/features/views.d.ts +16 -0
- package/types/index.d.ts +153 -0
- package/types/options.d.ts +202 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const _0x595dbb=_0x3287;(function(_0x1845ea,_0x4782c5){const _0x480e2e=_0x3287,_0x3bb79f=_0x1845ea();while(!![]){try{const _0x36f88b=parseInt(_0x480e2e(0x19f))/0x1*(-parseInt(_0x480e2e(0x1c5))/0x2)+-parseInt(_0x480e2e(0x1b5))/0x3+parseInt(_0x480e2e(0x197))/0x4+parseInt(_0x480e2e(0x1cf))/0x5*(parseInt(_0x480e2e(0x1c0))/0x6)+-parseInt(_0x480e2e(0x19a))/0x7+-parseInt(_0x480e2e(0x1c1))/0x8+-parseInt(_0x480e2e(0x1a1))/0x9*(-parseInt(_0x480e2e(0x190))/0xa);if(_0x36f88b===_0x4782c5)break;else _0x3bb79f['push'](_0x3bb79f['shift']());}catch(_0x5c33a1){_0x3bb79f['push'](_0x3bb79f['shift']());}}}(_0x4a7c,0x4f22d));import _0x19d33f from'@toolkit/elements/ok-icon.ok.js';import _0x109ef6 from'@toolkit/core/ok-overlay.ok.js';import _0x206aa9 from'../../../components/ok-js-input.ok.js';import _0x7d0af7 from'../../../components/ok-text-monaco-input.ok.js';import _0x19b4e6 from'../parts/function-logs.ok.js';function _0x3287(_0x36c7f5,_0x5bb6ca){_0x36c7f5=_0x36c7f5-0x18b;const _0x4a7c2e=_0x4a7c();let _0x328768=_0x4a7c2e[_0x36c7f5];return _0x328768;}function _0x4a7c(){const _0x77e4e6=['setModalSourceDraft','join','$attr','result','1fCLqLJ','setPayloadDraft','15201aFStyM','modalNameDraft','shared','envName','\x0a<div\x20style=\x22position:relative;\x20width:min(1220px,\x20calc(100vw\x20-\x2060px));\x20max-width:calc(100vw\x20-\x2060px);\x20min-width:900px;\x20min-height:760px;\x20display:flex;\x20flex-direction:column;\x20gap:16px;\x22>\x0a\x20\x20<if\x20:=\x22saving\x20||\x20running\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;\x20align-items:flex-start;\x20justify-content:space-between;\x20gap:16px;\x22>\x0a\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:18px;\x20font-weight:700;\x20color:var(--okdb-app-fg);\x22>{{\x20titleLabel\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22margin-top:4px;\x20font-size:12px;\x20color:var(--okdb-app-fg-muted);\x22>Scope:\x20{{\x20scopeLabel\x20}}</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:16px;\x20font-size:12px;\x20color:var(--okdb-app-fg-muted);\x22>\x0a\x20\x20\x20\x20\x20\x20<label\x20style=\x22display:flex;\x20align-items:center;\x20gap:6px;\x20cursor:pointer;\x20user-select:none;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22store.modalEnabledDraft\x20!==\x20false\x22\x20@change=\x22setEnabled($el.checked)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Enabled\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20<label\x20:style=\x22unsafe\x20?\x20\x27display:flex;\x20align-items:center;\x20gap:6px;\x20cursor:pointer;\x20user-select:none;\x20color:var(--okdb-orange);\x20font-weight:600;\x27\x20:\x20\x27display:flex;\x20align-items:center;\x20gap:6px;\x20cursor:pointer;\x20user-select:none;\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22store.modalUnsafeDraft\x20===\x20true\x22\x20@change=\x22setUnsafe($el.checked)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span>{{\x20unsafe\x20?\x20\x27⚠️\x20Unsafe\x27\x20:\x20\x27Unsafe\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<if\x20:=\x22unsafe\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22padding:10px\x2014px;\x20border:1px\x20solid\x20#92400e;\x20border-radius:10px;\x20background:#1c0f00;\x20color:#fdba74;\x20font-size:12px;\x20line-height:1.6;\x20display:flex;\x20gap:10px;\x20align-items:flex-start;\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:16px;\x20flex-shrink:0;\x22>⚠️</span>\x0a\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<strong\x20style=\x22color:var(--okdb-orange);\x22>Unsafe\x20function</strong>\x20—\x20this\x20function\x20receives\x0a\x20\x20\x20\x20\x20\x20\x20\x20<code\x20style=\x22color:var(--okdb-warning);\x20background:#2c1800;\x20padding:1px\x205px;\x20border-radius:4px;\x22>ctx.okdb</code>\x0a\x20\x20\x20\x20\x20\x20\x20\x20in\x20addition\x20to\x20<code\x20style=\x22color:var(--okdb-accent-muted);\x20background:var(--okdb-app-bg-deep);\x20padding:1px\x205px;\x20border-radius:4px;\x22>ctx.env</code>.\x0a\x20\x20\x20\x20\x20\x20\x20\x20<code\x20style=\x22color:var(--okdb-warning);\x22>ctx.okdb</code>\x20grants\x20full\x20cross-environment\x20database\x20access\x20including\x20creating\x20and\x20removing\x20environments.\x0a\x20\x20\x20\x20\x20\x20\x20\x20Only\x20use\x20this\x20for\x20privileged,\x20trusted\x20operations.\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<div\x20style=\x22display:grid;\x20grid-template-columns:minmax(320px,\x20380px)\x20minmax(0,\x201fr);\x20gap:16px;\x20min-height:0;\x20flex:1;\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:12px;\x20min-height:0;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:14px;\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:12px;\x20background:var(--okdb-app-bg-deep);\x20display:flex;\x20flex-direction:column;\x20gap:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20min-width:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20text-transform:uppercase;\x20letter-spacing:.08em;\x20color:var(--okdb-app-fg-muted);\x20margin-bottom:6px;\x22>Function\x20name</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:100%;\x20box-sizing:border-box;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22e.g.\x20queueFanout\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22store.modalNameDraft\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22mode\x20===\x20\x27edit\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22setName($el.value)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22margin-top:6px;\x20font-size:11px;\x20color:var(--okdb-app-fg-muted);\x20line-height:1.5;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Name\x20is\x20immutable\x20after\x20creation\x20and\x20becomes\x20the\x20function\x20entry\x20point.\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<div\x20style=\x22display:flex;\x20flex-direction:column;\x20min-width:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20text-transform:uppercase;\x20letter-spacing:.08em;\x20color:var(--okdb-app-fg-muted);\x20margin-bottom:6px;\x22>Description</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<textarea\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:100%;\x20box-sizing:border-box;\x20min-height:110px;\x20resize:vertical;\x20background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:8px;\x20color:#cfe6f2;\x20padding:10px;\x20font-size:12px;\x20line-height:1.5;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22What\x20does\x20this\x20function\x20do?\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22store.modalDescriptionDraft\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22setDescription($el.value)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20></textarea>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22margin-top:6px;\x20font-size:11px;\x20color:var(--okdb-app-fg-subtle);\x22>{{\x20descriptionLength\x20}}\x20chars</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:14px;\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:12px;\x20background:var(--okdb-app-bg-deep);\x20display:flex;\x20flex-direction:column;\x20gap:10px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20text-transform:uppercase;\x20letter-spacing:.08em;\x20color:var(--okdb-app-fg-muted);\x22>Runtime</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:grid;\x20grid-template-columns:1fr\x201fr;\x20gap:10px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:4px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20color:var(--okdb-app-fg-muted);\x22>Timeout\x20(ms)</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22number\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20min=\x221\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20step=\x221000\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:100%;\x20box-sizing:border-box;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x225000\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22store.modalTimeoutMsDraft\x20??\x20\x27\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22setTimeoutMs($el.value)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\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=\x22display:flex;\x20flex-direction:column;\x20gap:4px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20color:var(--okdb-app-fg-muted);\x22>Memory\x20(MB)</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22number\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20min=\x221\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20step=\x221\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:100%;\x20box-sizing:border-box;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x2232\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22store.modalMemoryMbDraft\x20??\x20\x27\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22setMemoryMb($el.value)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label\x20style=\x22display:flex;\x20align-items:center;\x20gap:6px;\x20font-size:12px;\x20color:var(--okdb-app-fg-muted);\x20cursor:pointer;\x20user-select:none;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22store.modalAllowFetchDraft\x20!==\x20false\x22\x20@change=\x22setAllowFetch($el.checked)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Allow\x20fetch\x0a\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20color:var(--okdb-app-fg-subtle);\x20line-height:1.5;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Leave\x20blank\x20to\x20use\x20system\x20defaults\x20(timeout:\x205000ms,\x20memory:\x2032MB).\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:14px;\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:12px;\x20background:var(--okdb-app-bg-deep);\x20display:flex;\x20flex-direction:column;\x20gap:10px;\x20min-height:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20text-transform:uppercase;\x20letter-spacing:.08em;\x20color:var(--okdb-app-fg-muted);\x22>Run\x20payload</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20color:var(--okdb-app-fg-muted);\x20line-height:1.55;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Define\x20the\x20JSON\x20payload\x20you\x20want\x20to\x20execute\x20right\x20now\x20against\x20this\x20draft\x20before\x20saving\x20it.\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22height:220px;\x20min-height:220px;\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:10px;\x20overflow:hidden;\x20background:var(--okdb-app-bg-deep);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-text-monaco-input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22height:100%;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20language=\x22json\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22store.modalPayloadDraft\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@edit:debounce.150=\x22setPayload($event.detail)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20></ok-text-monaco-input>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22payloadError\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20color:var(--okdb-danger);\x20line-height:1.5;\x22>{{\x20payloadError\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20justify-content:flex-end;\x20gap:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22toggleModalDryRun()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22running\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:style=\x22modalDryRunMode\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20?\x20\x27font-size:12px;\x20border-color:var(--okdb-accent);\x20color:var(--okdb-accent);\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:\x20\x27font-size:12px;\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Dry\x20Run{{\x20modalDryRunMode\x20?\x20\x27\x20✓\x27\x20:\x20\x27\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22runDraft()\x22\x20:disabled=\x22!canRun\x22>{{\x20running\x20?\x20\x27Running…\x27\x20:\x20(modalDryRunMode\x20?\x20\x27Run\x20draft\x20(dry)\x27\x20:\x20\x27Run\x20draft\x27)\x20}}</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22previewTriggerKind\x20&&\x20previewTriggerContext\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:14px;\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:12px;\x20background:var(--okdb-app-bg-deep);\x20display:flex;\x20flex-direction:column;\x20gap:10px;\x20min-height:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20justify-content:space-between;\x20gap:10px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20text-transform:uppercase;\x20letter-spacing:.08em;\x20color:var(--okdb-app-fg-muted);\x22>Preview\x20trigger\x20context</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20color:var(--okdb-accent-muted);\x20font-family:monospace;\x22>ctx.{{\x20previewTriggerKind\x20}}</div>\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=\x22font-size:12px;\x20color:var(--okdb-app-fg-muted);\x20line-height:1.55;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20This\x20draft\x20run\x20simulates\x20the\x20engine\x20metadata\x20shown\x20below\x20so\x20you\x20can\x20reproduce\x20handler\x20behavior\x20before\x20saving.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20style=\x22margin:0;\x20white-space:pre-wrap;\x20word-break:break-word;\x20color:var(--okdb-app-fg-muted);\x20font-size:11px;\x20line-height:1.5;\x20max-height:180px;\x20overflow:auto;\x22>{{\x20formatJson(previewTriggerContext)\x20}}</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:14px;\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:12px;\x20background:var(--okdb-app-bg-deep);\x20display:flex;\x20flex-direction:column;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20text-transform:uppercase;\x20letter-spacing:.08em;\x20color:var(--okdb-app-fg-muted);\x22>Validation</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22validation.ok\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20color:var(--okdb-success);\x20line-height:1.55;\x22>Function\x20source\x20is\x20valid\x20and\x20can\x20be\x20saved.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!validation.ok\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20color:var(--okdb-danger);\x20line-height:1.55;\x22>{{\x20validation.message\x20||\x20\x27Function\x20source\x20is\x20invalid\x27\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20color:#c38989;\x20font-family:monospace;\x22>{{\x20validation.code\x20||\x20\x27FUNCTION_SCRIPT_INVALID\x27\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20color:var(--okdb-app-fg-subtle);\x20line-height:1.5;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Allowed\x20shape:\x20<span\x20style=\x22font-family:monospace;\x20color:var(--okdb-accent-muted);\x22>[async]\x20(ctx)\x20=>\x20{\x20}</span>.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Forbidden\x20symbols:\x20<span\x20style=\x22font-family:monospace;\x20color:var(--okdb-accent-muted);\x22>require</span>,\x20<span\x20style=\x22font-family:monospace;\x20color:var(--okdb-accent-muted);\x22>import</span>,\x20<span\x20style=\x22font-family:monospace;\x20color:var(--okdb-accent-muted);\x22>console</span>,\x20<span\x20style=\x22font-family:monospace;\x20color:var(--okdb-accent-muted);\x22>process</span>.\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<div\x20style=\x22display:grid;\x20grid-template-rows:minmax(0,1.2fr)\x20minmax(220px,.7fr)\x20minmax(240px,.9fr);\x20min-height:0;\x20gap:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20min-height:0;\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:12px;\x20background:var(--okdb-app-bg-deep);\x20overflow:hidden;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20justify-content:space-between;\x20gap:10px;\x20padding:12px\x2014px;\x20border-bottom:1px\x20solid\x20var(--okdb-app-border);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20text-transform:uppercase;\x20letter-spacing:.08em;\x20color:var(--okdb-app-fg-muted);\x22>Implementation</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20color:var(--okdb-app-fg-muted);\x20font-family:monospace;\x22>async\x20(ctx)\x20=>\x20{\x20}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22flex:1;\x20min-height:0;\x20background:var(--okdb-app-bg-deep);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-js-input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22height:100%;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22store.modalSourceDraft\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:unsafe=\x22store.modalUnsafeDraft\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:options=\x22{\x20suggest:\x20{\x20showWords:\x20true\x20},\x20wordBasedSuggestions:\x20\x27currentDocument\x27\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@edit=\x22setSource($event.detail)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20></ok-js-input>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20justify-content:space-between;\x20align-items:flex-start;\x20gap:12px;\x20font-size:11px;\x20color:var(--okdb-app-fg-subtle);\x20line-height:1.55;\x20padding:10px\x2014px;\x20border-top:1px\x20solid\x20var(--okdb-app-border);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Runtime\x20receives\x20<span\x20style=\x22font-family:monospace;\x20color:var(--okdb-accent-muted);\x22>ctx</span>\x20with\x20DB\x20access\x20facades,\x20payload,\x20logs,\x20and\x20execution\x20info.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22unsafe\x22><span\x20style=\x22color:var(--okdb-orange);\x22>\x20⚠\x20Unsafe:\x20also\x20exposes\x20<span\x20style=\x22font-family:monospace;\x20color:var(--okdb-warning);\x22>ctx.okdb</span>\x20(full\x20cross-env\x20access).</span></if>\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=\x22white-space:nowrap;\x22>JS\x20/\x20Monaco</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:14px;\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:12px;\x20background:var(--okdb-app-bg-deep);\x20min-height:0;\x20overflow:auto;\x20display:flex;\x20flex-direction:column;\x20gap:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20justify-content:space-between;\x20gap:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22previewRun\x20&&\x20modalDryRunActions\x20!==\x20null\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20text-transform:uppercase;\x20letter-spacing:.08em;\x20color:var(--okdb-accent);\x22>Dry\x20run\x20—\x20intercepted\x20writes\x20({{\x20modalDryRunActions.length\x20}})</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!previewRun\x20||\x20modalDryRunActions\x20===\x20null\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20text-transform:uppercase;\x20letter-spacing:.08em;\x20color:var(--okdb-app-fg-muted);\x22>Draft\x20execution\x20result</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22previewRun\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20color:var(--okdb-app-fg-muted);\x20font-family:monospace;\x22>{{\x20previewRunId\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!previewRun\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20color:var(--okdb-app-fg-muted);\x20line-height:1.5;\x22>Run\x20the\x20draft\x20to\x20see\x20the\x20latest\x20result\x20before\x20you\x20save.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22previewRun\x20&&\x20modalDryRunActions\x20!==\x20null\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20color:var(--okdb-app-fg-muted);\x20line-height:1.5;\x22>Status:\x20<strong>{{\x20previewRun.status\x20||\x20(previewRun.error\x20?\x20\x27error\x27\x20:\x20\x27ok\x27)\x20}}</strong></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22modalDryRunActions.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20color:var(--okdb-app-fg-muted);\x22>No\x20writes\x20intercepted.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:4px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22modalDryRunActions\x22\x20let:item=\x22action\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:5px\x208px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2020%,\x20transparent);\x20border-radius:6px;\x20background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x204%,\x20transparent);\x20font-family:monospace;\x20font-size:11px;\x20color:var(--okdb-app-fg-muted);\x20line-height:1.45;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-accent);\x22>{{\x20action.scope\x20}}.{{\x20action.method\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22action.envName\x22><span\x20style=\x22opacity:.6;\x22>\x20[{{\x20action.envName\x20}}]</span></if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22actionArgs(action)\x22><span>\x20({{\x20actionArgs(action)\x20}})</span></if>\x0a\x20\x20\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</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22previewRun.result?.value\x20!==\x20undefined\x20&&\x20previewRun.result?.value\x20!==\x20null\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20text-transform:uppercase;\x20color:var(--okdb-app-fg-muted);\x20margin-top:4px;\x22>Return\x20value</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20style=\x22margin:0;\x20white-space:pre-wrap;\x20word-break:break-word;\x20color:var(--okdb-app-fg-muted);\x20font-size:11px;\x20line-height:1.5;\x22>{{\x20formatJson(previewRun.result.value)\x20}}</pre>\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:=\x22previewRun\x20&&\x20modalDryRunActions\x20===\x20null\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20color:var(--okdb-app-fg-muted);\x20line-height:1.5;\x22>Status:\x20<strong>{{\x20previewRun.status\x20||\x20(previewRun.error\x20?\x20\x27error\x27\x20:\x20\x27ok\x27)\x20}}</strong></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20style=\x22margin:0;\x20white-space:pre-wrap;\x20word-break:break-word;\x20color:var(--okdb-app-fg-muted);\x20font-size:11px;\x20line-height:1.5;\x22>{{\x20formatJson(previewRun.result?.value\x20??\x20previewRun.error\x20??\x20previewRun)\x20}}</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<function-logs\x20:run-id=\x22previewRunId\x22\x20:entries=\x22previewLogs\x22\x20title=\x22Draft\x20live\x20log\x22\x20empty=\x22Run\x20the\x20draft\x20to\x20stream\x20function\x20logs\x20here.\x22></function-logs>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<div\x20style=\x22display:flex;\x20justify-content:flex-end;\x20gap:10px;\x20padding-top:4px;\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!canSave\x22>{{\x20saveLabel\x20}}</button>\x0a\x20\x20</div>\x0a</div>\x0a\x20\x20\x20\x20','success','Failed\x20to\x20run\x20draft','canRun','Create\x20function','Dry\x20run\x20complete','modalMaterializerContextDraft','name','toast','mode','setModalPayloadDraft','canSaveModal','job','stringify','function-modal','previewRun','1676424ctAhqd','args','modalJobContextDraft','{\x0a\x20\x20\x0a}','dryRunActions','map','saveModalDefinition','modalValidation','modalDescriptionDraft','saving','modalRunning','42hSQUCM','3602176YJVPfQ','Draft\x20executed','message','Edit\x20function','1170142hJFbcL','modalUnsafeDraft','$ok','runModalDraft','Save\x20changes','modalDryRunMode','materializer','functions','selectedName','edit','160030YcykxD','length','isFinite','modalPreviewRun','close','stores','modal','modalTimeoutMsDraft','store','error','logsForRun','processor','Failed\x20to\x20save\x20function','9560UgYDoA','modalAllowFetchDraft','runId','previewRunId','modalPayloadError','canSave','Function\x20saved:\x20','2371980sajLCh','modalProcessorContextDraft','modalMode','3594003trcOGX'];_0x4a7c=function(){return _0x77e4e6;};return _0x4a7c();}export default{'tag':_0x595dbb(0x1b3),'dependencies':[_0x19d33f,_0x109ef6,_0x206aa9,_0x7d0af7,_0x19b4e6],'attr':{'modal':{},'mode':{},'onDone':{}},'context':_0x3b803d=>({get 'store'(){const _0x4de952=_0x595dbb;return _0x3b803d[_0x4de952(0x1c7)][_0x4de952(0x1d4)][_0x4de952(0x1cc)];},get 'mode'(){const _0x3ac3e5=_0x595dbb;return _0x3b803d[_0x3ac3e5(0x19d)][_0x3ac3e5(0x1ae)]||this[_0x3ac3e5(0x18b)][_0x3ac3e5(0x199)]||'create';},get 'saving'(){const _0x67ce5e=_0x595dbb;return this[_0x67ce5e(0x18b)][_0x67ce5e(0x1be)];},get 'running'(){const _0x305b28=_0x595dbb;return this[_0x305b28(0x18b)][_0x305b28(0x1bf)];},get 'validation'(){const _0x3d4b0f=_0x595dbb;return this['store'][_0x3d4b0f(0x1bc)]||{};},get 'canSave'(){const _0x3a53a5=_0x595dbb;return this['store'][_0x3a53a5(0x1b0)];},get 'canRun'(){const _0x4f6142=_0x595dbb;return!!this[_0x4f6142(0x18b)][_0x4f6142(0x1bc)]?.['ok']&&!this[_0x4f6142(0x18b)][_0x4f6142(0x194)]&&!this[_0x4f6142(0x18b)][_0x4f6142(0x1bf)];},get 'modalDryRunMode'(){const _0x2e0a54=_0x595dbb;return this[_0x2e0a54(0x18b)]['modalDryRunMode'];},get 'modalDryRunActions'(){const _0x142c36=_0x595dbb;return this['store'][_0x142c36(0x1d2)]?.[_0x142c36(0x19e)]?.[_0x142c36(0x1b9)]??null;},'toggleModalDryRun'(){const _0x2f4aa8=_0x595dbb;this['store']['modalDryRunMode']=!this[_0x2f4aa8(0x18b)][_0x2f4aa8(0x1ca)];},get 'scopeLabel'(){const _0x332bfd=_0x595dbb;return this[_0x332bfd(0x18b)][_0x332bfd(0x1a4)]||'—';},get 'unsafe'(){const _0x12beeb=_0x595dbb;return!0x0===this['store'][_0x12beeb(0x1c6)];},get 'titleLabel'(){const _0x52d082=_0x595dbb;return _0x52d082(0x1ce)===this['mode']?_0x52d082(0x1c4):'Create\x20function';},get 'saveLabel'(){const _0x257e3e=_0x595dbb;return'edit'===this['mode']?_0x257e3e(0x1c9):_0x257e3e(0x1a9);},get 'descriptionLength'(){const _0x468fd5=_0x595dbb;return String(this[_0x468fd5(0x18b)][_0x468fd5(0x1bd)]||'')[_0x468fd5(0x1d0)];},get 'payloadError'(){const _0x4d834d=_0x595dbb;return this[_0x4d834d(0x18b)][_0x4d834d(0x194)];},get 'previewRun'(){const _0x503cb1=_0x595dbb;return this[_0x503cb1(0x18b)][_0x503cb1(0x1d2)];},get 'previewRunId'(){const _0x166f32=_0x595dbb;return this['previewRun']?.['id']||this[_0x166f32(0x1b4)]?.[_0x166f32(0x192)]||null;},get 'previewLogs'(){const _0x57fd24=_0x595dbb;return this['store'][_0x57fd24(0x18d)](this[_0x57fd24(0x193)]);},get 'previewTriggerKind'(){const _0x497543=_0x595dbb;return this[_0x497543(0x18b)]['modalMaterializerContextDraft']?_0x497543(0x1cb):this[_0x497543(0x18b)][_0x497543(0x198)]?_0x497543(0x18e):this[_0x497543(0x18b)][_0x497543(0x1b7)]?_0x497543(0x1b1):null;},get 'previewTriggerContext'(){const _0x548e5d=_0x595dbb;return this[_0x548e5d(0x18b)][_0x548e5d(0x1ab)]||this[_0x548e5d(0x18b)][_0x548e5d(0x198)]||this[_0x548e5d(0x18b)]['modalJobContextDraft']||null;},'setName'(_0x3c7ebd){const _0xf307cf=_0x595dbb;this[_0xf307cf(0x18b)][_0xf307cf(0x1a2)]=_0x3c7ebd??'';},'setDescription'(_0x46d8b4){const _0x4e3659=_0x595dbb;this[_0x4e3659(0x18b)][_0x4e3659(0x1bd)]=_0x46d8b4??'';},'setEnabled'(_0x2114cb){const _0x1b6539=_0x595dbb;this[_0x1b6539(0x18b)]['modalEnabledDraft']=!!_0x2114cb;},'setUnsafe'(_0x8573c9){const _0x55c9da=_0x595dbb;this[_0x55c9da(0x18b)]['modalUnsafeDraft']=!!_0x8573c9;},'setTimeoutMs'(_0x5a1f96){const _0x134a50=_0x595dbb,_0x2561da=parseInt(_0x5a1f96,0xa);this[_0x134a50(0x18b)][_0x134a50(0x1d6)]=Number[_0x134a50(0x1d1)](_0x2561da)&&_0x2561da>0x0?_0x2561da:null;},'setMemoryMb'(_0x102ed7){const _0x1829cf=parseInt(_0x102ed7,0xa);this['store']['modalMemoryMbDraft']=Number['isFinite'](_0x1829cf)&&_0x1829cf>0x0?_0x1829cf:null;},'setAllowFetch'(_0x3147e5){const _0x3c33b9=_0x595dbb;this[_0x3c33b9(0x18b)][_0x3c33b9(0x191)]=!!_0x3147e5;},'setSource'(_0x4278a2){const _0x39e968=_0x595dbb;this[_0x39e968(0x18b)][_0x39e968(0x19b)](_0x4278a2??'');},'setPayload'(_0x4d0cc1){const _0x4f296b=_0x595dbb;this[_0x4f296b(0x18b)][_0x4f296b(0x1af)](_0x4d0cc1??_0x4f296b(0x1b8));},async 'submit'(){const _0xf3925e=_0x595dbb;if(this[_0xf3925e(0x195)])try{const _0x56e324=await this[_0xf3925e(0x18b)][_0xf3925e(0x1bb)]();this[_0xf3925e(0x18b)][_0xf3925e(0x1a0)](this[_0xf3925e(0x18b)]['modalPayloadDraft']),_0x3b803d[_0xf3925e(0x1c7)][_0xf3925e(0x1a3)]?.[_0xf3925e(0x1ad)]?.[_0xf3925e(0x1a6)]?.(_0xf3925e(0x1ce)===this['mode']?_0xf3925e(0x196)+(_0x56e324?.[_0xf3925e(0x1ac)]||this[_0xf3925e(0x18b)][_0xf3925e(0x1cd)]):'Function\x20created:\x20'+(_0x56e324?.[_0xf3925e(0x1ac)]||this[_0xf3925e(0x18b)]['modalNameDraft'])),await _0x3b803d['$attr'][_0xf3925e(0x1d5)][_0xf3925e(0x1d3)](),await _0x3b803d[_0xf3925e(0x19d)]['onDone']?.(_0x56e324);}catch(_0x3112c5){_0x3b803d[_0xf3925e(0x1c7)][_0xf3925e(0x1a3)]?.['toast']?.[_0xf3925e(0x18c)]?.(_0x3112c5?.[_0xf3925e(0x1c3)]||_0xf3925e(0x18f));}},async 'runDraft'(){const _0x41b04f=_0x595dbb;if(this[_0x41b04f(0x1a8)])try{await this[_0x41b04f(0x18b)][_0x41b04f(0x1c8)](),_0x3b803d[_0x41b04f(0x1c7)][_0x41b04f(0x1a3)]?.['toast']?.['success']?.(this['modalDryRunMode']?_0x41b04f(0x1aa):_0x41b04f(0x1c2));}catch(_0x1756ec){_0x3b803d['$ok']['shared']?.[_0x41b04f(0x1ad)]?.[_0x41b04f(0x18c)]?.(_0x1756ec?.[_0x41b04f(0x1c3)]||_0x41b04f(0x1a7));}},'actionArgs'(_0x28510d){const _0x420640=_0x595dbb,_0x15f43d=_0x28510d[_0x420640(0x1b6)]??[];return 0x0===_0x15f43d[_0x420640(0x1d0)]?'':_0x15f43d[_0x420640(0x1ba)](_0x480ec3=>JSON[_0x420640(0x1b2)](_0x480ec3))[_0x420640(0x19c)](',\x20');},'formatJson'(_0x1c6389){const _0x1f4e49=_0x595dbb;try{return JSON[_0x1f4e49(0x1b2)](_0x1c6389,null,0x2);}catch{return String(_0x1c6389??'');}},'cancel'(){const _0xbc68dd=_0x595dbb;_0x3b803d[_0xbc68dd(0x19d)][_0xbc68dd(0x1d5)]['close']();}}),'template':_0x595dbb(0x1a5)};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function _0xdb45(_0x12b0a1,_0x2b26dc){_0x12b0a1=_0x12b0a1-0x10f;const _0x5a9b10=_0x5a9b();let _0xdb45d2=_0x5a9b10[_0x12b0a1];return _0xdb45d2;}const _0x271ee2=_0xdb45;function _0x5a9b(){const _0x32440d=['Could\x20not\x20resolve\x20the\x20linked\x20pipeline\x20yet','Open\x20linked\x20queue\x20worker','pipelineName','$watch','key','logsForRun','\x0a\x20\x20<if\x20:=\x22!fn\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22padding:18px;\x20border:1px\x20dashed\x20var(--okdb-app-border);\x20border-radius:10px;\x20color:var(--okdb-app-fg-muted);\x20line-height:1.6;\x22>\x0a\x20\x20\x20\x20\x20\x20Select\x20a\x20function\x20from\x20the\x20sidebar\x20to\x20inspect\x20or\x20edit\x20it.\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<if\x20:=\x22fn\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:12px;\x20min-height:0;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:14px;\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:10px;\x20background:var(--okdb-app-bg-deep);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20text-transform:uppercase;\x20letter-spacing:.08em;\x20color:var(--okdb-app-fg-muted);\x20margin-bottom:10px;\x22>Function\x20overview</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20justify-content:space-between;\x20gap:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:18px;\x20font-weight:700;\x20color:var(--okdb-app-fg);\x22>{{\x20fn.name\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22margin-top:4px;\x20font-size:12px;\x20color:var(--okdb-app-fg-muted);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20fn.scope\x20===\x20\x27global\x27\x20?\x20\x27Global\x20function\x27\x20:\x20\x27Environment\x20function\x27\x20}}\x20·\x20version\x20{{\x20fn.version\x20}}\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\x20\x20<div\x20:style=\x22fn.enabled\x20===\x20false\x20?\x20\x27font-size:11px;\x20color:var(--okdb-danger);\x27\x20:\x20\x27font-size:11px;\x20color:var(--okdb-success);\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20fn.enabled\x20===\x20false\x20?\x20\x27Disabled\x27\x20:\x20\x27Enabled\x27\x20}}\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<div\x20style=\x22display:flex;\x20justify-content:flex-end;\x20gap:8px;\x20margin-top:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20style=\x22padding:6px\x2010px;\x20font-size:12px;\x22\x20@click=\x22triggerEdit()\x22>Edit</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20style=\x22padding:6px\x2010px;\x20font-size:12px;\x20border-color:#5c2a34;\x20color:#fda4af;\x22\x20@click=\x22removeSelected()\x22>Delete</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22fn.metadata?.description\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22margin-top:10px;\x20color:#9bb2c3;\x20font-size:13px;\x20line-height:1.5;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20fn.metadata.description\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:grid;\x20grid-template-columns:repeat(2,\x20minmax(0,1fr));\x20gap:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:12px;\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:10px;\x20background:var(--okdb-app-bg-deep);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20text-transform:uppercase;\x20color:var(--okdb-app-fg-muted);\x20margin-bottom:8px;\x22>Runtime</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:6px;\x20font-size:12px;\x20color:var(--okdb-app-fg-muted);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>timeoutMs:\x20<strong>{{\x20fn.runtime?.timeoutMs\x20??\x20\x27—\x27\x20}}</strong></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>memoryMb:\x20<strong>{{\x20fn.runtime?.memoryMb\x20??\x20\x27—\x27\x20}}</strong></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>allowFetch:\x20<strong>{{\x20fn.runtime?.allowFetch\x20===\x20false\x20?\x20\x27false\x27\x20:\x20\x27true\x27\x20}}</strong></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:12px;\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:10px;\x20background:var(--okdb-app-bg-deep);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20text-transform:uppercase;\x20color:var(--okdb-app-fg-muted);\x20margin-bottom:8px;\x22>Metadata</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:6px;\x20font-size:12px;\x20color:var(--okdb-app-fg-muted);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>createdAt:\x20<strong>{{\x20fn.metadata?.createdAt\x20??\x20\x27—\x27\x20}}</strong></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>updatedAt:\x20<strong>{{\x20fn.metadata?.updatedAt\x20??\x20\x27—\x27\x20}}</strong></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>hash:\x20<strong\x20style=\x22font-family:monospace;\x20font-size:11px;\x22>{{\x20fn.hash\x20??\x20\x27—\x27\x20}}</strong></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22hasLinkedQueue\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openLinkedPipeline()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22linkedQueueTitle\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22margin-top:4px;\x20padding:4px\x208px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2020%,\x20transparent);\x20border-radius:6px;\x20background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x205%,\x20transparent);\x20color:var(--okdb-accent);\x20font-size:11px;\x20text-align:left;\x20cursor:pointer;\x20display:inline-flex;\x20align-items:center;\x20gap:4px;\x20width:fit-content;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>⇶\x20Queue:</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<strong>{{\x20linkedQueueRef.jobType\x20}}</strong>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22linkedQueueRef?.ownerEngine\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>·\x20Worker:</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<strong>{{\x20linkedQueueRef.ownerEngine\x20}}</strong>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>↗</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22hasLinkedPipeline\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openLinkedPipeline()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22linkedPipelineTitle\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22margin-top:4px;\x20padding:4px\x208px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2020%,\x20transparent);\x20border-radius:6px;\x20background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x205%,\x20transparent);\x20color:var(--okdb-accent);\x20font-size:11px;\x20text-align:left;\x20cursor:pointer;\x20display:inline-flex;\x20align-items:center;\x20gap:4px;\x20width:fit-content;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>⚡\x20Pipeline:</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<strong>{{\x20linkedPipelineRef.pipelineName\x20}}</strong>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22linkedPipelineRef?.ownerEngine\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>·\x20Engine:</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<strong>{{\x20linkedPipelineRef.ownerEngine\x20}}</strong>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>↗</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!hasLinkedQueue\x20&&\x20!hasLinkedPipeline\x20&&\x20hasLinkedEngine\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openLinkedPipeline()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22linkedEngineTitle\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22margin-top:4px;\x20padding:4px\x208px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2020%,\x20transparent);\x20border-radius:6px;\x20background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x205%,\x20transparent);\x20color:var(--okdb-accent);\x20font-size:11px;\x20text-align:left;\x20cursor:pointer;\x20display:inline-flex;\x20align-items:center;\x20gap:4px;\x20width:fit-content;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>⚙\x20Engine:</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<strong>{{\x20linkedEngineRef.ownerEngine\x20}}</strong>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>↗</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:grid;\x20grid-template-columns:minmax(0,1.2fr)\x20minmax(280px,.8fr);\x20gap:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:12px;\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:10px;\x20background:var(--okdb-app-bg-deep);\x20min-height:0;\x20overflow:auto;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20text-transform:uppercase;\x20color:var(--okdb-app-fg-muted);\x20margin-bottom:8px;\x22>Implementation</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20style=\x22margin:0;\x20white-space:pre-wrap;\x20word-break:break-word;\x20color:var(--okdb-app-fg-muted);\x20font-size:12px;\x20line-height:1.55;\x22>{{\x20fn.script?.source\x20||\x20\x27—\x27\x20}}</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:12px;\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:10px;\x20background:var(--okdb-app-bg-deep);\x20min-height:0;\x20overflow:auto;\x20display:flex;\x20flex-direction:column;\x20gap:10px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20text-transform:uppercase;\x20color:var(--okdb-app-fg-muted);\x22>Runs</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20color:var(--okdb-app-fg-muted);\x22>Total\x20persisted\x20runs:\x20<strong>{{\x20runs.length\x20}}</strong></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!activeRun\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20color:var(--okdb-app-fg-muted);\x20line-height:1.5;\x22>No\x20runs\x20recorded\x20for\x20this\x20function\x20yet.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22activeRun\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20color:var(--okdb-app-fg-muted);\x20line-height:1.55;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Selected\x20run\x20id:\x20<strong\x20style=\x22font-family:monospace;\x20font-size:11px;\x22>{{\x20activeRun.id\x20||\x20activeRun.runId\x20||\x20\x27—\x27\x20}}</strong>\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<div\x20style=\x22font-size:12px;\x20color:var(--okdb-app-fg-muted);\x20line-height:1.55;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Status:\x20<strong>{{\x20activeRun.status\x20||\x20(activeRun.error\x20?\x20\x27error\x27\x20:\x20\x27ok\x27)\x20}}</strong>\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<pre\x20style=\x22margin:0;\x20white-space:pre-wrap;\x20word-break:break-word;\x20color:var(--okdb-app-fg-muted);\x20font-size:11px;\x20line-height:1.5;\x20max-height:180px;\x20overflow:auto;\x22>{{\x20formatJson(activeRun.result\x20??\x20activeRun.error\x20??\x20activeRun)\x20}}</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22activeRunLogs.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20text-transform:uppercase;\x20color:var(--okdb-app-fg-muted);\x22>Selected\x20run\x20log</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22activeRunLogs\x22\x20let:item=\x22entry\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:6px\x208px;\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:8px;\x20background:var(--okdb-app-bg-deep);\x20color:var(--okdb-app-fg-muted);\x20font-size:11px;\x20line-height:1.45;\x22>{{\x20entry.msg\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\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</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x20\x20','config','store','Open\x20linked\x20pipeline','targetSection','metadata','251686KNFRUK','8edYnXp','length','info','Open\x20linked\x20engine','filter','\x0a\x20\x20•\x20','5001705KuzoQT','shared','confirm','371xYPBcn','\x0a\x0aDeleting\x20it\x20will\x20break\x20','json','Function\x20deleted','linkedPipelineLookup','selected','map','Open\x20pipeline\x20','those\x20pipelines','envName','linkedPipelineRef','$attr','linkedEngineRef','runs','push','jobType','10MzCvVa','Open\x20queue\x20workers\x20for\x20','\x20(worker\x20','owner_engine','activeRun','1370039cEXDRS','toast','3oDZlFj','8673350lTdWZi','functions','name','ownerEngine','Delete\x20function\x20\x22','latestRun','that\x20pipeline','Open\x20engine\x20','onEdit','stores','pipeline','/functions','_linkedPipelineRequestId','runId','$ok','1091516qHoKBi','linkedQueueRef','\x20(engine\x20','API','Failed\x20to\x20delete\x20function','$router','13932248bdrvkt','sourceType','selectedName','refreshLinkedPipeline','message','62034agCdWQ','stringify','/engines','queue','slice'];_0x5a9b=function(){return _0x32440d;};return _0x5a9b();}(function(_0x3038c2,_0x13ed12){const _0x1a1e0b=_0xdb45,_0x38cc13=_0x3038c2();while(!![]){try{const _0x2f184f=-parseInt(_0x1a1e0b(0x132))/0x1*(-parseInt(_0x1a1e0b(0x131))/0x2)+parseInt(_0x1a1e0b(0x152))/0x3*(-parseInt(_0x1a1e0b(0x115))/0x4)+-parseInt(_0x1a1e0b(0x153))/0x5+-parseInt(_0x1a1e0b(0x120))/0x6*(parseInt(_0x1a1e0b(0x13b))/0x7)+parseInt(_0x1a1e0b(0x11b))/0x8+-parseInt(_0x1a1e0b(0x138))/0x9*(-parseInt(_0x1a1e0b(0x14b))/0xa)+parseInt(_0x1a1e0b(0x150))/0xb;if(_0x2f184f===_0x13ed12)break;else _0x38cc13['push'](_0x38cc13['shift']());}catch(_0x16213a){_0x38cc13['push'](_0x38cc13['shift']());}}}(_0x5a9b,0xd525d));import{openLinkedPipelineRoute as _0x5f1fa4,resolveLinkedPipeline as _0x407c24}from'../../engines/engine-ui-utils.js';export default{'tag':'function-detail','attr':{'onEdit':{}},'context':_0x20ede1=>({'linkedPipelineLookup':null,'_linkedPipelineRequestId':0x0,get 'store'(){const _0x4c1124=_0xdb45;return _0x20ede1[_0x4c1124(0x114)]['stores']['functions'];},get 'fn'(){return this['store']['selected'];},get 'runs'(){const _0x3019e7=_0xdb45;return this[_0x3019e7(0x12d)][_0x3019e7(0x148)]||[];},get 'latestRun'(){const _0x3eeef8=_0xdb45;return this['store'][_0x3eeef8(0x158)];},get 'activeRun'(){const _0x4a9d27=_0xdb45;return this[_0x4a9d27(0x12d)]['activeRun'];},get 'activeRunLogs'(){const _0x557ede=_0xdb45;return this[_0x557ede(0x12d)][_0x557ede(0x12a)](this[_0x557ede(0x14f)]?.['id']||this[_0x557ede(0x14f)]?.[_0x557ede(0x113)])[_0x557ede(0x124)](-0x5);},get 'selectedName'(){const _0x1d9c12=_0xdb45;return this['store'][_0x1d9c12(0x11d)];},get 'linkedPipelineRef'(){const _0x4bca86=_0xdb45;if(_0x4bca86(0x123)===this['linkedPipelineLookup']?.[_0x4bca86(0x12f)])return null;const _0x39e26c=this['fn']?.[_0x4bca86(0x130)]??{},_0x23e239=_0x39e26c['pipeline']??this[_0x4bca86(0x13f)]?.[_0x4bca86(0x127)]??null;return _0x23e239?{'envName':this['linkedPipelineLookup']?.['envName']??this['store']['envName']??null,'pipelineName':_0x23e239,'ownerEngine':_0x39e26c[_0x4bca86(0x14e)]??this['linkedPipelineLookup']?.[_0x4bca86(0x156)]??null,'targetSection':this['linkedPipelineLookup']?.[_0x4bca86(0x12f)]??'db'}:null;},get 'hasLinkedPipeline'(){const _0x14b72a=_0xdb45;return!!this[_0x14b72a(0x145)]?.[_0x14b72a(0x127)];},get 'linkedEngineRef'(){const _0x4e9355=_0xdb45;if(_0x4e9355(0x123)===this[_0x4e9355(0x13f)]?.[_0x4e9355(0x12f)])return null;const _0x964360=this[_0x4e9355(0x145)];if(_0x964360?.['pipelineName'])return _0x964360;const _0x32dfdf=this['fn']?.['metadata']?.[_0x4e9355(0x14e)]??this[_0x4e9355(0x13f)]?.[_0x4e9355(0x156)]??null;return _0x32dfdf?{'envName':this[_0x4e9355(0x13f)]?.[_0x4e9355(0x144)]??this[_0x4e9355(0x12d)][_0x4e9355(0x144)]??null,'pipelineName':null,'ownerEngine':_0x32dfdf,'sourceType':this[_0x4e9355(0x13f)]?.[_0x4e9355(0x11c)]??null,'targetSection':this['linkedPipelineLookup']?.[_0x4e9355(0x12f)]??'db'}:null;},get 'linkedQueueRef'(){const _0x1d34c9=_0xdb45,_0x4d13ba=this[_0x1d34c9(0x13f)];return _0x1d34c9(0x123)===_0x4d13ba?.[_0x1d34c9(0x12f)]&&_0x4d13ba?.['jobType']?{'envName':_0x4d13ba['envName']??this[_0x1d34c9(0x12d)][_0x1d34c9(0x144)]??null,'pipelineName':_0x4d13ba[_0x1d34c9(0x127)]??this['fn']?.[_0x1d34c9(0x130)]?.[_0x1d34c9(0x110)]??null,'ownerEngine':_0x4d13ba[_0x1d34c9(0x156)]??this['fn']?.[_0x1d34c9(0x130)]?.[_0x1d34c9(0x14e)]??null,'jobType':_0x4d13ba['jobType'],'targetSection':_0x1d34c9(0x123)}:null;},get 'hasLinkedQueue'(){const _0x4b22ad=_0xdb45;return!!this[_0x4b22ad(0x116)]?.['jobType'];},get 'hasLinkedEngine'(){return!!this['linkedEngineRef']?.['ownerEngine'];},'formatJson'(_0x1d4cce){const _0x3008e3=_0xdb45;try{return JSON[_0x3008e3(0x121)](_0x1d4cce,null,0x2);}catch{return String(_0x1d4cce??'');}},async 'removeSelected'(){const _0x3a4873=_0xdb45;if(!this[_0x3a4873(0x12d)]['selectedName'])return;const _0xf48c31=this[_0x3a4873(0x12d)][_0x3a4873(0x11d)],_0x48b1e8=this['store'][_0x3a4873(0x144)],_0x559e5c=this['fn']?.[_0x3a4873(0x130)],_0x3559e9=_0x559e5c?.[_0x3a4873(0x14e)]||_0x559e5c?.[_0x3a4873(0x110)];let _0x3e1fbb=[];if(_0x48b1e8)try{const _0x138dea=await fetch(__ENV__[_0x3a4873(0x118)]+'/env/'+encodeURIComponent(_0x48b1e8)+_0x3a4873(0x122));if(_0x138dea['ok']){const _0x200321=await _0x138dea[_0x3a4873(0x13d)]();_0x3e1fbb=(_0x200321?.['result']??_0x200321??[])[_0x3a4873(0x136)](_0x58f5df=>_0x58f5df[_0x3a4873(0x12c)]?.['handler']?.[_0x3a4873(0x155)]===_0xf48c31)[_0x3a4873(0x141)](_0x41dc9e=>_0x41dc9e[_0x3a4873(0x155)]||_0x41dc9e[_0x3a4873(0x129)]);}}catch{}let _0x35dabb=_0x3a4873(0x157)+_0xf48c31+'\x22?';if(_0x3559e9||_0x3e1fbb['length']>0x0){const _0x102534=[...new Set([..._0x3559e9?[_0x3559e9]:[],..._0x3e1fbb])];_0x35dabb+='\x0a\x0a⚠\x20This\x20function\x20is\x20used\x20by\x20'+_0x102534['length']+'\x20engine(s):\x0a\x20\x20•\x20'+_0x102534['join'](_0x3a4873(0x137))+_0x3a4873(0x13c)+(0x1===_0x102534[_0x3a4873(0x133)]?_0x3a4873(0x159):_0x3a4873(0x143))+'.';}const _0xf16de4=globalThis[_0x3a4873(0x13a)]?.(_0x35dabb);if(_0xf16de4)try{await this[_0x3a4873(0x12d)]['remove'](_0xf48c31),_0x20ede1['$vars'][_0x3a4873(0x11a)]?.[_0x3a4873(0x149)]?.(_0x3a4873(0x111)),_0x20ede1['$ok']['shared']?.[_0x3a4873(0x151)]?.['success']?.(_0x3a4873(0x13e));}catch(_0x24277f){_0x20ede1['$ok'][_0x3a4873(0x139)]?.[_0x3a4873(0x151)]?.['error']?.(_0x24277f?.[_0x3a4873(0x11f)]||_0x3a4873(0x119));}},'triggerEdit'(){const _0x16d5a7=_0xdb45;_0x20ede1[_0x16d5a7(0x146)][_0x16d5a7(0x15b)]?.();},get 'linkedPipelineTitle'(){const _0x22204e=_0xdb45,_0x539488=this[_0x22204e(0x145)];return _0x539488?.[_0x22204e(0x127)]?_0x539488['ownerEngine']?_0x22204e(0x142)+_0x539488[_0x22204e(0x127)]+_0x22204e(0x117)+_0x539488['ownerEngine']+')':'Open\x20pipeline\x20'+_0x539488[_0x22204e(0x127)]:_0x22204e(0x12e);},get 'linkedEngineTitle'(){const _0x49937f=_0xdb45,_0xeaeb4=this[_0x49937f(0x147)];return _0xeaeb4?.[_0x49937f(0x156)]?_0xeaeb4[_0x49937f(0x11c)]?_0x49937f(0x15a)+_0xeaeb4[_0x49937f(0x156)]+'\x20for\x20type\x20'+_0xeaeb4['sourceType']:'Open\x20engine\x20'+_0xeaeb4['ownerEngine']:_0x49937f(0x135);},get 'linkedQueueTitle'(){const _0x2077f7=_0xdb45,_0x537c16=this[_0x2077f7(0x116)];return _0x537c16?.['jobType']?_0x537c16[_0x2077f7(0x156)]?_0x2077f7(0x14c)+_0x537c16[_0x2077f7(0x14a)]+_0x2077f7(0x14d)+_0x537c16[_0x2077f7(0x156)]+')':_0x2077f7(0x14c)+_0x537c16[_0x2077f7(0x14a)]:_0x2077f7(0x126);},async 'refreshLinkedPipeline'(){const _0x929136=_0xdb45,_0x319dd8=this['fn']?.['name']??this[_0x929136(0x11d)]??null,_0x440bc5=this['fn']?.[_0x929136(0x130)]??{};if(!this['store'][_0x929136(0x144)]||!_0x319dd8)return void(this[_0x929136(0x13f)]=null);const _0x13501=++this[_0x929136(0x112)],_0x41daeb=await _0x407c24(_0x20ede1,{'envName':this[_0x929136(0x12d)][_0x929136(0x144)],'pipelineName':_0x440bc5[_0x929136(0x110)]??null,'ownerEngine':_0x440bc5[_0x929136(0x14e)]??null,'functionName':_0x319dd8});_0x13501===this['_linkedPipelineRequestId']&&(this[_0x929136(0x13f)]=_0x41daeb);},async 'openLinkedPipeline'(){const _0x416e1d=_0xdb45,_0x4daff0=this['linkedQueueRef']??this['linkedPipelineRef']??this[_0x416e1d(0x147)];(_0x4daff0?.['ownerEngine']||_0x4daff0?.[_0x416e1d(0x127)]||_0x4daff0?.['jobType'])&&(await _0x5f1fa4(_0x20ede1,{'envName':_0x4daff0[_0x416e1d(0x144)]??this['store'][_0x416e1d(0x144)],'pipelineName':_0x4daff0[_0x416e1d(0x127)]??null,'ownerEngine':_0x4daff0[_0x416e1d(0x156)]??null,'functionName':this['fn']?.[_0x416e1d(0x155)]??this[_0x416e1d(0x11d)]??null})||_0x20ede1[_0x416e1d(0x114)]['shared']?.[_0x416e1d(0x151)]?.[_0x416e1d(0x134)]?.(_0x416e1d(0x125)));}}),async 'init'(_0x47cc9a){const _0x3dda6a=_0xdb45;await this['refreshLinkedPipeline'](),_0x47cc9a[_0x3dda6a(0x128)](()=>[_0x47cc9a[_0x3dda6a(0x114)]['stores']['functions'][_0x3dda6a(0x144)],_0x47cc9a[_0x3dda6a(0x114)][_0x3dda6a(0x10f)][_0x3dda6a(0x154)][_0x3dda6a(0x11d)],_0x47cc9a['$ok'][_0x3dda6a(0x10f)]['functions'][_0x3dda6a(0x140)]?.[_0x3dda6a(0x130)]?.['pipeline'],_0x47cc9a[_0x3dda6a(0x114)]['stores']['functions'][_0x3dda6a(0x140)]?.[_0x3dda6a(0x130)]?.[_0x3dda6a(0x14e)]]['join']('||'),()=>this[_0x3dda6a(0x11e)]());},'template':_0x271ee2(0x12b)};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const _0x439fd1=_0x4818;function _0x4765(){const _0x153005=['slice','toTimeString','stringify','object','toLowerCase','fromEntries','title','getMilliseconds','empty','3675528Bgoagx','No\x20logs\x20for\x20this\x20execution\x20yet.','280875yWtESs','message','365688tatoRY','9uAXgYf','entries','$attr','string','keys','filter','324NnQebt','isArray','398236TnFPIo','msg','6370QAMCbo','Live\x20log','301291GOYcIt','content','302320JuQgwe','\x0a\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20min-height:0;\x20height:100%;\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:10px;\x20background:var(--okdb-app-bg-deep);\x20overflow:hidden;\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22padding:10px\x2012px;\x20border-bottom:1px\x20solid\x20var(--okdb-app-border);\x20font-size:11px;\x20text-transform:uppercase;\x20color:var(--okdb-app-fg-muted);\x20letter-spacing:.08em;\x22>{{\x20titleText\x20}}</div>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:8px;\x20padding:12px;\x20min-height:0;\x20overflow:auto;\x22>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22entries.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20color:var(--okdb-app-fg-muted);\x20line-height:1.5;\x22>{{\x20emptyText\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<each\x20:of=\x22entries\x22\x20let:item=\x22entry\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:8px\x2010px;\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:8px;\x20background:var(--okdb-app-bg-deep);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:8px;\x20font-size:11px;\x20color:var(--okdb-app-fg-muted);\x20margin-bottom:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>{{\x20fmtTime(entry.ts\x20||\x20entry._ts)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22entry.level\x20===\x20\x27error\x27\x20?\x20\x27color:var(--okdb-danger);\x27\x20:\x20entry.level\x20===\x20\x27warn\x27\x20?\x20\x27color:#f5b481;\x27\x20:\x20\x27color:var(--okdb-success);\x27\x22>{{\x20entry.level\x20||\x20\x27info\x27\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<if\x20:=\x22fmtMsg(entry)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20color:#d4e8f4;\x20line-height:1.5;\x22>{{\x20fmtMsg(entry)\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22entry.context\x20!=\x20null\x20&&\x20fmtMeta(entry.context)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20style=\x22margin:8px\x200\x200;\x20white-space:pre-wrap;\x20word-break:break-word;\x20font-size:11px;\x20color:var(--okdb-app-fg-muted);\x20font-family:monospace;\x22>{{\x20fmtMeta(entry.context)\x20}}</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x20\x20','undefined','trim','padStart','runId'];_0x4765=function(){return _0x153005;};return _0x4765();}function _0x4818(_0x1fc6a7,_0x336fa5){_0x1fc6a7=_0x1fc6a7-0x166;const _0x4765a1=_0x4765();let _0x481870=_0x4765a1[_0x1fc6a7];return _0x481870;}(function(_0x5e13a4,_0x3aaa22){const _0x5d3640=_0x4818,_0x485a05=_0x5e13a4();while(!![]){try{const _0xe8846d=-parseInt(_0x5d3640(0x171))/0x1+-parseInt(_0x5d3640(0x173))/0x2+parseInt(_0x5d3640(0x187))/0x3*(parseInt(_0x5d3640(0x16d))/0x4)+parseInt(_0x5d3640(0x16f))/0x5*(parseInt(_0x5d3640(0x16b))/0x6)+-parseInt(_0x5d3640(0x184))/0x7+-parseInt(_0x5d3640(0x186))/0x8+parseInt(_0x5d3640(0x182))/0x9;if(_0xe8846d===_0x3aaa22)break;else _0x485a05['push'](_0x485a05['shift']());}catch(_0x2736b4){_0x485a05['push'](_0x485a05['shift']());}}}(_0x4765,0x3a00a));import _0x3affe3 from'../../../stores/events-store.js';export default{'tag':'function-logs','attr':{'runId':{},'entries':{},'title':{'default':_0x439fd1(0x170)},'empty':{'default':_0x439fd1(0x183)}},'context':_0x88cea=>({get 'titleText'(){const _0x493cbb=_0x439fd1,_0x1f519f=_0x88cea[_0x493cbb(0x167)][_0x493cbb(0x17f)];return _0x493cbb(0x168)==typeof _0x1f519f&&_0x1f519f['trim']()&&'undefined'!==_0x1f519f['trim']()['toLowerCase']()?_0x1f519f:_0x493cbb(0x170);},get 'emptyText'(){const _0x1b9f70=_0x439fd1,_0x3d59f7=_0x88cea[_0x1b9f70(0x167)][_0x1b9f70(0x181)];return _0x1b9f70(0x168)==typeof _0x3d59f7&&_0x3d59f7[_0x1b9f70(0x176)]()&&_0x1b9f70(0x175)!==_0x3d59f7[_0x1b9f70(0x176)]()['toLowerCase']()?_0x3d59f7:_0x1b9f70(0x183);},get 'entries'(){const _0x357494=_0x439fd1;if(Array[_0x357494(0x16c)](_0x88cea[_0x357494(0x167)][_0x357494(0x166)]))return _0x88cea[_0x357494(0x167)][_0x357494(0x166)];const _0x4e496e=_0x88cea[_0x357494(0x167)][_0x357494(0x178)];return _0x4e496e?(_0x3affe3['logs']||[])[_0x357494(0x16a)](_0x2e8501=>(_0x2e8501?.['runId']||_0x2e8501?.['meta']?.[_0x357494(0x178)])===_0x4e496e):[];},'fmtTime'(_0x269ea7){const _0x1dda99=_0x439fd1;if(!_0x269ea7)return'';const _0x457cb5=new Date(_0x269ea7);return _0x457cb5[_0x1dda99(0x17a)]()[_0x1dda99(0x179)](0x0,0x8)+'.'+String(_0x457cb5[_0x1dda99(0x180)]())[_0x1dda99(0x177)](0x3,'0');},'fmtMeta'(_0x4d5c2d){const _0x592980=_0x439fd1;if(null==_0x4d5c2d)return'';if(_0x592980(0x17c)==typeof _0x4d5c2d&&!Array[_0x592980(0x16c)](_0x4d5c2d)){const _0x18c2aa=Object[_0x592980(0x17e)](Object['entries'](_0x4d5c2d)['filter'](([_0x497094,_0x5e10ca])=>void 0x0!==_0x5e10ca&&'undefined'!==_0x5e10ca&&null!=_0x5e10ca&&(_0x592980(0x17f)!==_0x497094&&'content'!==_0x497094||_0x592980(0x175)!==String(_0x5e10ca)[_0x592980(0x17d)]())));if(0x0===Object[_0x592980(0x169)](_0x18c2aa)['length'])return'';try{return JSON[_0x592980(0x17b)](_0x18c2aa,null,0x2);}catch{}}try{return'string'==typeof _0x4d5c2d?_0x4d5c2d:JSON[_0x592980(0x17b)](_0x4d5c2d);}catch{return String(_0x4d5c2d);}},'fmtMsg'(_0x1f1ab3){const _0x3a5e93=_0x439fd1,_0x2a815c=_0x1f1ab3?.[_0x3a5e93(0x16e)]??_0x1f1ab3?.[_0x3a5e93(0x185)]??_0x1f1ab3?.[_0x3a5e93(0x172)]??_0x1f1ab3?.[_0x3a5e93(0x17f)]??'';if(null==_0x2a815c)return'';if(_0x3a5e93(0x168)==typeof _0x2a815c){const _0x4db451=_0x2a815c['trim']();return _0x4db451&&_0x3a5e93(0x175)!==_0x4db451[_0x3a5e93(0x17d)]()?_0x4db451:'';}try{return JSON[_0x3a5e93(0x17b)](_0x2a815c,null,0x2);}catch{return String(_0x2a815c);}}}),'template':_0x439fd1(0x174)};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const _0x2994cb=_0x1c64;function _0x1c64(_0x2f8fce,_0x4bb92c){_0x2f8fce=_0x2f8fce-0x83;const _0x2f5dc3=_0x2f5d();let _0x1c64f1=_0x2f5dc3[_0x2f8fce];return _0x1c64f1;}(function(_0x27237f,_0x4ac39f){const _0x522ed6=_0x1c64,_0x507b9b=_0x27237f();while(!![]){try{const _0x2ca9b6=-parseInt(_0x522ed6(0x88))/0x1*(parseInt(_0x522ed6(0xac))/0x2)+-parseInt(_0x522ed6(0x83))/0x3*(parseInt(_0x522ed6(0x95))/0x4)+parseInt(_0x522ed6(0x9b))/0x5*(-parseInt(_0x522ed6(0x90))/0x6)+parseInt(_0x522ed6(0x91))/0x7+-parseInt(_0x522ed6(0x9c))/0x8+-parseInt(_0x522ed6(0x8a))/0x9+parseInt(_0x522ed6(0xa4))/0xa*(parseInt(_0x522ed6(0x94))/0xb);if(_0x2ca9b6===_0x4ac39f)break;else _0x507b9b['push'](_0x507b9b['shift']());}catch(_0x264277){_0x507b9b['push'](_0x507b9b['shift']());}}}(_0x2f5d,0xdbe45));import _0x22d9ed from'../../../components/ok-text-monaco-input.ok.js';export default{'tag':_0x2994cb(0xa0),'dependencies':[_0x22d9ed],'context':_0x5ba71a=>({get 'store'(){const _0x31dbfc=_0x2994cb;return _0x5ba71a['$ok']['stores'][_0x31dbfc(0x97)];},get 'payloadDraft'(){const _0x52f99d=_0x2994cb;return this['store'][_0x52f99d(0x9a)];},get 'selectedRun'(){const _0xf19514=_0x2994cb;return this['store'][_0xf19514(0xa8)];},get 'runs'(){const _0x590146=_0x2994cb;return(this[_0x590146(0x8b)][_0x590146(0x9e)]||[])[_0x590146(0x96)](_0x4f40af=>_0x4f40af?.[_0x590146(0x8d)]||_0x4f40af);},get 'running'(){return this['store']['running'];},get 'payloadError'(){const _0x489f68=_0x2994cb;return this[_0x489f68(0x8b)]['payloadError'];},get 'dryRunMode'(){return this['store']['dryRunMode'];},get 'dryRunActions'(){const _0x2df5d8=_0x2994cb;return this['selectedRun']?.['result']?.[_0x2df5d8(0x8e)]??null;},'toggleDryRun'(){const _0x89a381=_0x2994cb;this[_0x89a381(0x8b)][_0x89a381(0x85)]=!this[_0x89a381(0x8b)][_0x89a381(0x85)];},'runTime'(_0x40d76e){const _0x19a5a4=_0x2994cb,_0x51efc8=_0x40d76e?.[_0x19a5a4(0x8f)]?.[_0x19a5a4(0x8c)]??_0x40d76e?.[_0x19a5a4(0xa7)]?.[_0x19a5a4(0xab)]??null;return _0x51efc8?new Date(_0x51efc8)[_0x19a5a4(0x92)]([],{'hour':_0x19a5a4(0xa1),'minute':_0x19a5a4(0xa1),'second':'2-digit'}):'—';},'isSelected'(_0x17e558){const _0x175487=_0x2994cb,_0x5da1cd=this['selectedRun'];return!(!_0x5da1cd||!_0x17e558)&&(_0x5da1cd['id']||_0x5da1cd[_0x175487(0x87)])===(_0x17e558['id']||_0x17e558[_0x175487(0x87)]);},'setPayload'(_0x372220){const _0x55198e=_0x2994cb;this['store'][_0x55198e(0x93)](_0x372220??'{\x0a\x20\x20\x0a}');},async 'pickRun'(_0x5e2615){const _0x5f1283=_0x2994cb;if(_0x5e2615)try{await this[_0x5f1283(0x8b)][_0x5f1283(0x9f)](_0x5e2615['id']||_0x5e2615['runId']);}catch(_0x27d881){_0x5ba71a[_0x5f1283(0x84)][_0x5f1283(0xae)]?.[_0x5f1283(0xa3)]?.['error']?.(_0x27d881?.[_0x5f1283(0xa6)]||'Failed\x20to\x20load\x20run');}},'formatJson'(_0x366430){try{return JSON['stringify'](_0x366430,null,0x2);}catch{return String(_0x366430??'');}},'actionArgs'(_0x39a4c8){const _0x344caa=_0x2994cb,_0x450fa5=_0x39a4c8[_0x344caa(0xad)]??[];return 0x0===_0x450fa5[_0x344caa(0x99)]?'':_0x450fa5['map'](_0xccf718=>JSON[_0x344caa(0xa5)](_0xccf718))['join'](',\x20');},async 'runNow'(){const _0x166a44=_0x2994cb;try{await this['store'][_0x166a44(0x9d)](),_0x5ba71a[_0x166a44(0x84)][_0x166a44(0xae)]?.[_0x166a44(0xa3)]?.['success']?.(this[_0x166a44(0x85)]?_0x166a44(0x86):_0x166a44(0xa9));}catch(_0x2a5b69){_0x5ba71a['$ok']['shared']?.['toast']?.[_0x166a44(0x98)]?.(_0x2a5b69?.[_0x166a44(0xa6)]||_0x166a44(0xaf));}},async 'refresh'(){const _0x57cbc3=_0x2994cb;try{await this[_0x57cbc3(0x8b)]['refreshSelected'](),_0x5ba71a[_0x57cbc3(0x84)][_0x57cbc3(0xae)]?.['toast']?.[_0x57cbc3(0xa2)]?.(_0x57cbc3(0x89));}catch(_0x286952){_0x5ba71a[_0x57cbc3(0x84)][_0x57cbc3(0xae)]?.[_0x57cbc3(0xa3)]?.[_0x57cbc3(0x98)]?.(_0x286952?.[_0x57cbc3(0xa6)]||_0x57cbc3(0xb0));}}}),'template':_0x2994cb(0xaa)};function _0x2f5d(){const _0x259b8b=['9154600bwAfLE','toLocaleTimeString','setPayloadDraft','1622687dQIXFL','2064092QrqfoS','map','functions','error','length','payloadDraft','5PyFGqE','10690976HBmKlL','runSelected','runs','selectRun','function-runner','2-digit','success','toast','370gEOusB','stringify','message','request','activeRun','Function\x20executed','\x0a\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:12px;\x20min-height:0;\x20height:100%;\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20justify-content:space-between;\x20gap:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:4px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20text-transform:uppercase;\x20color:var(--okdb-app-fg-muted);\x22>Run\x20selected\x20function</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20color:var(--okdb-app-fg-muted);\x22>Only\x20affects\x20the\x20currently\x20selected\x20function.</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22refresh()\x22\x20:disabled=\x22!store.selectedName\x20||\x20running\x22\x20style=\x22padding:6px\x2010px;\x20font-size:12px;\x22>Refresh</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22toggleDryRun()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22running\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:style=\x22dryRunMode\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20?\x20\x27padding:6px\x2010px;\x20font-size:12px;\x20border-color:var(--okdb-accent);\x20color:var(--okdb-accent);\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:\x20\x27padding:6px\x2010px;\x20font-size:12px;\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Dry\x20Run{{\x20dryRunMode\x20?\x20\x27\x20✓\x27\x20:\x20\x27\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22runNow()\x22\x20:disabled=\x22!store.selectedName\x20||\x20running\x22\x20style=\x22padding:6px\x2010px;\x20font-size:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20running\x20?\x20\x27Running…\x27\x20:\x20(dryRunMode\x20?\x20\x27Run\x20(dry)\x27\x20:\x20\x27Run\x27)\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<div\x20style=\x22height:220px;\x20min-height:220px;\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:10px;\x20overflow:hidden;\x20background:var(--okdb-app-bg-deep);\x22>\x0a\x20\x20\x20\x20\x20\x20<ok-text-monaco-input\x0a\x20\x20\x20\x20\x20\x20\x20\x20style=\x22height:100%;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20language=\x22json\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22payloadDraft\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20@edit:debounce.150=\x22setPayload($event.detail)\x22\x0a\x20\x20\x20\x20\x20\x20></ok-text-monaco-input>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22payloadError\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20color:var(--okdb-danger);\x20line-height:1.5;\x22>{{\x20payloadError\x20}}</div>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<div\x20style=\x22padding:12px;\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:10px;\x20background:var(--okdb-app-bg-deep);\x20min-height:0;\x20overflow:auto;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20text-transform:uppercase;\x20color:var(--okdb-app-fg-muted);\x20margin-bottom:8px;\x22>Recent\x20runs\x20for\x20this\x20function</div>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22runs.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20color:var(--okdb-app-fg-muted);\x22>No\x20runs\x20yet.</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22runs.slice(0,\x208)\x22\x20let:item=\x22run\x22\x20let:index=\x22idx\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22pickRun(run)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:style=\x22isSelected(run)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20?\x20\x27text-align:left;\x20padding:8px\x2010px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2053%,\x20transparent);\x20box-shadow:0\x200\x200\x201px\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2013%,\x20transparent)\x20inset,\x200\x200\x2018px\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x209%,\x20transparent);\x20background:var(--okdb-app-bg);\x20color:var(--okdb-app-fg-strong);\x20border-radius:8px;\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:\x20\x27text-align:left;\x20padding:8px\x2010px;\x20border:1px\x20solid\x20var(--okdb-app-border);\x20background:var(--okdb-app-bg-deep);\x20color:var(--okdb-app-fg-muted);\x20border-radius:8px;\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20justify-content:space-between;\x20gap:8px;\x20font-size:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<strong\x20style=\x22font-family:monospace;\x20font-size:11px;\x22>{{\x20run.id\x20||\x20run.runId\x20||\x20\x27run\x27\x20}}</strong>\x0a\x20\x20\x20\x20\x20\x20\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\x20\x20\x20\x20\x20\x20<if\x20:=\x22idx\x20===\x200\x22><span\x20style=\x22font-size:10px;\x20padding:2px\x206px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2027%,\x20transparent);\x20color:var(--okdb-accent);\x22>Latest</span></if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>{{\x20run.status\x20||\x20(run.error\x20?\x20\x27error\x27\x20:\x20\x27ok\x27)\x20}}</span>\x0a\x20\x20\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</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20justify-content:space-between;\x20gap:8px;\x20margin-top:6px;\x20font-size:11px;\x20color:var(--okdb-app-fg-muted);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>{{\x20runTime(run)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>{{\x20run.execution?.durationMs\x20!=\x20null\x20?\x20run.execution.durationMs\x20+\x20\x27ms\x27\x20:\x20\x27—\x27\x20}}</span>\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</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<div\x20style=\x22padding:12px;\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:10px;\x20background:var(--okdb-app-bg-deep);\x20min-height:0;\x20overflow:auto;\x22>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22!selectedRun\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20text-transform:uppercase;\x20color:var(--okdb-app-fg-muted);\x20margin-bottom:8px;\x22>Selected\x20run\x20result</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20color:var(--okdb-app-fg-muted);\x22>No\x20run\x20selected\x20yet.</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22selectedRun\x20&&\x20dryRunActions\x20!==\x20null\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20text-transform:uppercase;\x20color:var(--okdb-accent);\x20margin-bottom:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Dry\x20run\x20—\x20intercepted\x20writes\x20({{\x20dryRunActions.length\x20}})\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22dryRunActions.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20color:var(--okdb-app-fg-muted);\x20margin-bottom:8px;\x22>No\x20writes\x20intercepted.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:4px;\x20margin-bottom:10px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22dryRunActions\x22\x20let:item=\x22action\x22\x20let:index=\x22i\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:6px\x208px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2020%,\x20transparent);\x20border-radius:6px;\x20background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x204%,\x20transparent);\x20font-family:monospace;\x20font-size:11px;\x20color:var(--okdb-app-fg-muted);\x20line-height:1.45;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-accent);\x22>{{\x20action.scope\x20}}.{{\x20action.method\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22action.envName\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.6;\x22>\x20[{{\x20action.envName\x20}}]</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22actionArgs(action)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>\x20({{\x20actionArgs(action)\x20}})</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\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</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22selectedRun.result?.value\x20!==\x20undefined\x20&&\x20selectedRun.result?.value\x20!==\x20null\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20text-transform:uppercase;\x20color:var(--okdb-app-fg-muted);\x20margin-bottom:6px;\x22>Return\x20value</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20style=\x22margin:0;\x20white-space:pre-wrap;\x20word-break:break-word;\x20color:var(--okdb-app-fg-muted);\x20font-size:12px;\x20line-height:1.55;\x22>{{\x20formatJson(selectedRun.result.value)\x20}}</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22selectedRun\x20&&\x20dryRunActions\x20===\x20null\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20text-transform:uppercase;\x20color:var(--okdb-app-fg-muted);\x20margin-bottom:8px;\x22>Selected\x20run\x20result</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20style=\x22margin:0;\x20white-space:pre-wrap;\x20word-break:break-word;\x20color:var(--okdb-app-fg-muted);\x20font-size:12px;\x20line-height:1.55;\x22>{{\x20formatJson(selectedRun)\x20}}</pre>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x20\x20','requestedAt','3099822cUmgej','args','shared','Function\x20execution\x20failed','Failed\x20to\x20refresh\x20function','3HHQGjJ','$ok','dryRunMode','Dry\x20run\x20complete','runId','1wZmZuS','Function\x20refreshed','12451995UwNdnH','store','finishedAt','value','dryRunActions','execution','6476346BsLJMO'];_0x2f5d=function(){return _0x259b8b;};return _0x2f5d();}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function _0x463f(){var _0x25f6fe=['$dispatch','functions-list','\x0a\x20\x20\x20\x20functions-list\x20{\x0a\x20\x20\x20\x20\x20\x20position:\x20relative;\x0a\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20gap:\x202px;\x0a\x20\x20\x20\x20\x20\x20min-height:\x200;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20functions-list\x20button\x20{\x0a\x20\x20\x20\x20\x20\x20text-align:\x20left;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20.functions-list__add\x20{\x0a\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20padding:\x207px\x2010px;\x0a\x20\x20\x20\x20\x20\x20margin-bottom:\x204px;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20.functions-list__item\x20{\x0a\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20gap:\x206px;\x0a\x20\x20\x20\x20\x20\x20padding:\x206px\x2010px;\x0a\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20background:\x20transparent;\x0a\x20\x20\x20\x20\x20\x20border-color:\x20transparent;\x0a\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-app-fg-muted);\x0a\x20\x20\x20\x20\x20\x20border-radius:\x207px;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20.functions-list__item:hover\x20{\x0a\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-surface-2);\x0a\x20\x20\x20\x20\x20\x20border-color:\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-app-fg);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20.functions-list__item--selected\x20{\x0a\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep)\x20!important;\x0a\x20\x20\x20\x20\x20\x20border-color:\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2027%,\x20transparent)\x20!important;\x0a\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-accent)\x20!important;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20.functions-list__name\x20{\x0a\x20\x20\x20\x20\x20\x20flex:\x201;\x0a\x20\x20\x20\x20\x20\x20font-family:\x20monospace;\x0a\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20overflow:\x20hidden;\x0a\x20\x20\x20\x20\x20\x20text-overflow:\x20ellipsis;\x0a\x20\x20\x20\x20\x20\x20white-space:\x20nowrap;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20.functions-list__meta\x20{\x0a\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20opacity:\x20.55;\x0a\x20\x20\x20\x20\x20\x20flex-shrink:\x200;\x0a\x20\x20\x20\x20}\x0a\x20\x20','functions','3448008zNaVLd','4519344FMurnj','1351494mCmZWJ','store','2034530PFOvvn','stores','\x0a\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20min-height:0;\x20height:100%;\x22>\x0a\x20\x20\x20\x20<button\x20class=\x22functions-list__add\x22\x20@click=\x22createNew()\x22>+\x20New</button>\x0a\x0a\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20class=\x22functions-list__item\x22\x0a\x20\x20\x20\x20\x20\x20:class=\x22isOverview\x20?\x20\x27functions-list__item--selected\x27\x20:\x20\x27\x27\x22\x0a\x20\x20\x20\x20\x20\x20@click=\x22openOverview()\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22functions-list__name\x22>Overview</span>\x0a\x20\x20\x20\x20</button>\x0a\x0a\x20\x20\x20\x20<div\x20style=\x22height:1px;\x20background:var(--okdb-app-surface-2);\x20margin:2px\x200\x206px;\x22></div>\x0a\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:2px;\x20min-height:0;\x20overflow:auto;\x22>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22loading\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:10px;\x20border:1px\x20dashed\x20var(--okdb-app-border);\x20border-radius:8px;\x20color:var(--okdb-app-fg-muted);\x20font-size:12px;\x20line-height:1.5;\x20margin-bottom:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Loading\x20functions…\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22items.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:10px;\x20border:1px\x20dashed\x20var(--okdb-app-border);\x20border-radius:8px;\x20color:var(--okdb-app-fg-muted);\x20font-size:12px;\x20line-height:1.5;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20No\x20functions\x20in\x20this\x20scope\x20yet.\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<each\x20:of=\x22items\x22\x20let:item=\x22fn\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20class=\x22functions-list__item\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22fn.key\x20===\x20selectedName\x20?\x20\x27functions-list__item--selected\x27\x20:\x20\x27\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22pick(fn.key)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22functions-list__name\x22>{{\x20fn.key\x20}}</span>\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22fn.value?.unsafe\x22><span\x20style=\x22font-size:10px;\x20color:var(--okdb-orange);\x20flex-shrink:0;\x22\x20title=\x22Unsafe\x20function\x22>⚠</span></if>\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22functions-list__meta\x22>v{{\x20fn.value?.version\x20??\x20\x27—\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x20\x20','overview','detail','8cytyKa','loading','4dtdulk','8407973XBxecS','769437ZCiQuG','$ok','664106wjxwIE','selectedName','40giUCTg'];_0x463f=function(){return _0x25f6fe;};return _0x463f();}function _0x6d86(_0x1ce9ea,_0x10e9e5){_0x1ce9ea=_0x1ce9ea-0xe3;var _0x463f89=_0x463f();var _0x6d86b6=_0x463f89[_0x1ce9ea];return _0x6d86b6;}var _0x1e03ee=_0x6d86;(function(_0x4eb7f7,_0x56e40f){var _0x420791=_0x6d86,_0x5affcc=_0x4eb7f7();while(!![]){try{var _0x2fb1e5=parseInt(_0x420791(0xe5))/0x1+parseInt(_0x420791(0xec))/0x2+parseInt(_0x420791(0xee))/0x3+-parseInt(_0x420791(0xf7))/0x4*(-parseInt(_0x420791(0xf0))/0x5)+-parseInt(_0x420791(0xed))/0x6+-parseInt(_0x420791(0xf8))/0x7*(parseInt(_0x420791(0xf5))/0x8)+parseInt(_0x420791(0xe3))/0x9*(-parseInt(_0x420791(0xe7))/0xa);if(_0x2fb1e5===_0x56e40f)break;else _0x5affcc['push'](_0x5affcc['shift']());}catch(_0x32d1af){_0x5affcc['push'](_0x5affcc['shift']());}}}(_0x463f,0xe7bbb));export default{'tag':_0x1e03ee(0xe9),'context':_0x41c788=>({get 'store'(){var _0x2b5552=_0x1e03ee;return _0x41c788[_0x2b5552(0xe4)][_0x2b5552(0xf1)][_0x2b5552(0xeb)];},get 'items'(){var _0x2adb6e=_0x1e03ee;return this[_0x2adb6e(0xef)]['items']||[];},get 'selectedName'(){var _0x363548=_0x1e03ee;return this[_0x363548(0xef)]['selectedName'];},get 'loading'(){var _0x1e30eb=_0x1e03ee;return this[_0x1e30eb(0xef)][_0x1e30eb(0xf6)];},get 'isOverview'(){var _0x2b79ed=_0x1e03ee;return _0x2b79ed(0xf4)!==this[_0x2b79ed(0xef)]['currentView']||!this[_0x2b79ed(0xe6)];},'pick'(_0x9a1002){var _0x5af804=_0x1e03ee;_0x41c788[_0x5af804(0xe8)]('open',_0x9a1002);},'openOverview'(){var _0x36f964=_0x1e03ee;_0x41c788['$dispatch'](_0x36f964(0xf3));},'createNew'(){var _0x4ed0bb=_0x1e03ee;_0x41c788[_0x4ed0bb(0xe8)]('create');}}),'style':_0x1e03ee(0xea),'template':_0x1e03ee(0xf2)};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<script type="module">import licensePanel from"./parts/license-panel.ok.js";export default{tag:"license-index",unwrap:!0,dependencies:[licensePanel]}</script><template><component import="../../layouts/_default.ok.html"><template name="header"></template><template name="default"><license-panel/></template></component></template>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const _0xcbae25=_0x3fec;(function(_0x4e646c,_0x3a9ade){const _0xb145dc=_0x3fec,_0x25bdf5=_0x4e646c();while(!![]){try{const _0x2087e7=-parseInt(_0xb145dc(0x184))/0x1*(-parseInt(_0xb145dc(0x1bc))/0x2)+-parseInt(_0xb145dc(0x1bb))/0x3+-parseInt(_0xb145dc(0x1b3))/0x4*(parseInt(_0xb145dc(0x19d))/0x5)+parseInt(_0xb145dc(0x19e))/0x6+-parseInt(_0xb145dc(0x1b0))/0x7+parseInt(_0xb145dc(0x1ae))/0x8*(parseInt(_0xb145dc(0x187))/0x9)+-parseInt(_0xb145dc(0x19b))/0xa;if(_0x2087e7===_0x3a9ade)break;else _0x25bdf5['push'](_0x25bdf5['shift']());}catch(_0x1506ad){_0x25bdf5['push'](_0x25bdf5['shift']());}}}(_0x4efc,0x6c317));const t=()=>__ENV__[_0xcbae25(0x1be)][_0xcbae25(0x180)](/\/api$/,'')+'/license';function _0x4efc(){const _0x5c21f7=['licenseId','activatingId','36OjYlUS','application/json','Activation\x20failed','writeText','filter','<div><if\x20:=\x22loading\x22><div\x20style=\x22font-size:13px;\x20opacity:.5;\x20padding:20px\x200;\x22>Loading…</div></if><if\x20:=\x22!loading\x20&&\x20unavailable\x22><div\x20style=\x22font-size:13px;\x20opacity:.6;\x20padding:20px\x200;\x22>License\x20system\x20not\x20available\x20in\x20this\x20build.</div></if><if\x20:=\x22!loading\x20&&\x20!unavailable\x22><div\x20class=\x22lp-header\x22><div\x20class=\x22lp-title\x22>License</div><button\x20class=\x22lp-btn\x20lp-btn--primary\x22\x20@click=\x22openAddForm()\x22>+\x20Add\x20License</button></div><if\x20:=\x22hasActive()\x22><div\x20class=\x22lp-status-banner\x20lp-status-banner--ok\x22><span>✓\x20Licensed</span>\x20<span>—</span>\x20<span\x20style=\x22font-weight:600;\x22>{{\x20activeLicensee()\x20}}</span><if\x20:=\x22activeExpiry()\x22><span\x20style=\x22opacity:.7;\x22>·\x20Expires\x20{{\x20formatDate(activeExpiry())\x20}}</span></if></div></if><if\x20:=\x22!hasActive()\x22><div\x20class=\x22lp-status-banner\x20lp-status-banner--warn\x22><span>⚠\x20Free\x20tier</span><if\x20:=\x22status\x20&&\x20status.effective\x22><span\x20style=\x22opacity:.7;\x20font-size:12px;\x22>—\x20envs={{\x20status.effective.limits.envs\x20}},\x20types/env={{\x20status.effective.limits.typesPerEnv\x20}},\x20writes={{\x20(status.effective.limits.maxWrites||0).toLocaleString()\x20}}</span></if></div><if\x20:=\x22status\x20&&\x20status.isLicensedBuild\x20&&\x20pinDisplay()\x20!==\x20\x27—\x27\x22><div\x20class=\x22lp-pin-box\x22><div\x20class=\x22lp-pin-label\x22>Node\x20PIN\x20—\x20share\x20this\x20with\x20your\x20license\x20provider</div><div\x20style=\x22display:flex;\x20align-items:center;\x20gap:10px;\x22><div\x20class=\x22lp-pin-value\x22>{{\x20pinDisplay()\x20}}</div><button\x20class=\x22lp-btn\x22\x20style=\x22font-size:11px;\x20padding:3px\x208px;\x22\x20@click=\x22copyPin()\x22>Copy</button></div><div\x20style=\x22font-size:11px;\x20opacity:.55;\x20margin-top:6px;\x22>How\x20activation\x20works:\x20paste\x20your\x20<strong>license\x20blob</strong>\x20below\x20→\x20vendor\x20signs\x20an\x20activation\x20token\x20bound\x20to\x20this\x20PIN\x20→\x20paste\x20the\x20activation\x20token\x20to\x20enable\x20the\x20license.</div></div></if><if\x20:=\x22status\x20&&\x20status.isLicensedBuild\x20&&\x20status.buildFingerprint\x22><div\x20class=\x22lp-pin-box\x22\x20style=\x22margin-top:-12px;\x22><div\x20class=\x22lp-pin-label\x22>Build\x20signing-key\x20fingerprint</div><div\x20style=\x22font-family:monospace;\x20font-size:12px;\x22>{{\x20status.buildFingerprint\x20}}</div><div\x20style=\x22font-size:11px;\x20opacity:.55;\x20margin-top:6px;\x22>Your\x20license\x20must\x20be\x20signed\x20by\x20the\x20private\x20key\x20paired\x20with\x20this\x20fingerprint.\x20If\x20you\x20see\x20<em>\x22License\x20signature\x20invalid\x22</em>,\x20the\x20license\x20was\x20signed\x20by\x20a\x20different\x20keypair\x20than\x20the\x20one\x20this\x20build\x20uses.</div></div></if><if\x20:=\x22status\x20&&\x20!status.isLicensedBuild\x22><div\x20class=\x22lp-pin-box\x22\x20style=\x22opacity:.6\x22><div\x20class=\x22lp-pin-label\x22>Development\x20build\x20—\x20license\x20enforcement\x20disabled</div><div\x20style=\x22font-size:12px;\x20margin-top:4px;\x22>Set\x20<code>OKDB_LICENSED_BUILD=true</code>\x20in\x20<code>.env</code>\x20to\x20enable\x20enforcement\x20in\x20dev,\x20or\x20run\x20<code>npm\x20run\x20build:prod</code>\x20for\x20a\x20production\x20build.</div></div></if></if><if\x20:=\x22status\x20&&\x20status.usage\x20&&\x20status.effective\x22><div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:10px;\x20margin-bottom:20px;\x22><if\x20:=\x22status.effective.limits.maxWrites\x22><div><div\x20style=\x22display:flex;\x20justify-content:space-between;\x20font-size:11px;\x20opacity:.7;\x20margin-bottom:4px;\x22><span>Writes</span>\x20<span\x20style=\x22font-family:monospace;\x22>{{\x20formatNum(status.usage.writes)\x20}}\x20/\x20{{\x20formatNum(status.effective.limits.maxWrites)\x20}}</span></div><div\x20style=\x22height:6px;\x20background:var(--okdb-app-surface-2,rgba(255,255,255,.06));\x20border-radius:3px;\x20overflow:hidden;\x22><div\x20:style=\x22\x27height:100%;width:\x27\x20+\x20usagePct(status.usage.writes,\x20status.effective.limits.maxWrites)\x20+\x20\x27%;background:\x27\x20+\x20usageBarColor(usagePct(status.usage.writes,\x20status.effective.limits.maxWrites))\x20+\x20\x27;transition:width\x20.2s;\x27\x22/></div></div></if><if\x20:=\x22status.effective.limits.envs\x22><div><div\x20style=\x22display:flex;\x20justify-content:space-between;\x20font-size:11px;\x20opacity:.7;\x20margin-bottom:4px;\x22><span>Environments</span>\x20<span\x20style=\x22font-family:monospace;\x22>{{\x20status.usage.envs\x20}}\x20/\x20{{\x20status.effective.limits.envs\x20}}</span></div><div\x20style=\x22height:6px;\x20background:var(--okdb-app-surface-2,rgba(255,255,255,.06));\x20border-radius:3px;\x20overflow:hidden;\x22><div\x20:style=\x22\x27height:100%;width:\x27\x20+\x20usagePct(status.usage.envs,\x20status.effective.limits.envs)\x20+\x20\x27%;background:\x27\x20+\x20usageBarColor(usagePct(status.usage.envs,\x20status.effective.limits.envs))\x20+\x20\x27;transition:width\x20.2s;\x27\x22/></div></div></if></div></if><if\x20:=\x22showAddForm\x22><div\x20class=\x22lp-add-form\x22><div\x20style=\x22font-size:13px;\x20font-weight:600;\x22>Add\x20License\x20or\x20Activation\x20Token</div><div\x20style=\x22font-size:11px;\x20opacity:.6;\x22>Paste\x20either\x20a\x20<strong>license\x20blob</strong>\x20(issued\x20by\x20your\x20vendor)\x20or\x20an\x20<strong>activation\x20token</strong>\x20(vendor\x27s\x20response\x20to\x20your\x20PIN).\x20The\x20server\x20detects\x20which\x20it\x20is.</div><div><textarea\x20:value=\x22addInput\x22\x20@input=\x22addInput\x20=\x20$event.target.value\x22\x20rows=\x226\x22\x20placeholder=\x22Paste\x20license\x20blob\x20or\x20activation\x20token\x20here…\x22\x20style=\x22width:100%;\x20font-family:monospace;\x20font-size:11px;\x20resize:vertical;\x22/></div><if\x20:=\x22addError\x22><div\x20style=\x22font-size:12px;\x20color:var(--okdb-danger);\x20background:var(--okdb-danger-soft-bg,rgba(245,101,101,.08));\x20border:1px\x20solid\x20var(--okdb-danger-soft-border,rgba(245,101,101,.2));\x20border-radius:6px;\x20padding:8px\x2012px;\x22>{{\x20addError\x20}}</div></if><div\x20style=\x22display:flex;\x20gap:8px;\x20justify-content:flex-end;\x22><button\x20class=\x22lp-btn\x22\x20@click=\x22cancelAddForm()\x22>Cancel</button>\x20<button\x20class=\x22lp-btn\x20lp-btn--primary\x22\x20@click=\x22submitAdd()\x22\x20:disabled=\x22!addInput.trim()\x20||\x20addLoading\x22>{{\x20addLoading\x20?\x20\x27Submitting…\x27\x20:\x20\x27Submit\x27\x20}}</button></div></div></if><if\x20:=\x22status\x20&&\x20status.effective\x22><div\x20style=\x22margin-top:20px;\x20font-size:10px;\x20text-transform:uppercase;\x20letter-spacing:.06em;\x20opacity:.45;\x20margin-bottom:8px;\x22>Current\x20capabilities</div><table\x20class=\x22lp-table\x22\x20style=\x22margin-bottom:16px;\x22><thead><tr><th>Feature</th><th>Status</th><th>Limit</th></tr></thead><tbody><tr><td>Sync</td><td><span\x20:style=\x22status.effective.features.sync\x20?\x20\x27color:var(--okdb-success,#38a169)\x27\x20:\x20\x27opacity:.45\x27\x22>{{\x20status.effective.features.sync\x20?\x20\x27✓\x20enabled\x27\x20:\x20\x27✗\x20disabled\x27\x20}}</span></td><td\x20style=\x22font-family:monospace;\x22>{{\x20status.effective.limits.syncPeers\x20?\x20\x27max\x20\x27\x20+\x20status.effective.limits.syncPeers\x20+\x20\x27\x20peers\x27\x20:\x20(status.effective.features.sync\x20?\x20\x27unlimited\x27\x20:\x20\x27—\x27)\x20}}</td></tr><tr><td>Embeddings</td><td><span\x20:style=\x22status.effective.features.embeddings\x20?\x20\x27color:var(--okdb-success,#38a169)\x27\x20:\x20\x27opacity:.45\x27\x22>{{\x20status.effective.features.embeddings\x20?\x20\x27✓\x20enabled\x27\x20:\x20\x27✗\x20disabled\x27\x20}}</span></td><td>—</td></tr><tr><td>Engines</td><td><span\x20:style=\x22status.effective.features.engines\x20?\x20\x27color:var(--okdb-success,#38a169)\x27\x20:\x20\x27opacity:.45\x27\x22>{{\x20status.effective.features.engines\x20?\x20\x27✓\x20enabled\x27\x20:\x20\x27✗\x20disabled\x27\x20}}</span></td><td>—</td></tr><tr><td>Full-text\x20search</td><td><span\x20:style=\x22status.effective.features.fts\x20?\x20\x27color:var(--okdb-success,#38a169)\x27\x20:\x20\x27opacity:.45\x27\x22>{{\x20status.effective.features.fts\x20?\x20\x27✓\x20enabled\x27\x20:\x20\x27✗\x20disabled\x27\x20}}</span></td><td>—</td></tr><tr><td>Time\x20machine</td><td><span\x20:style=\x22status.effective.features.timeMachine\x20?\x20\x27color:var(--okdb-success,#38a169)\x27\x20:\x20\x27opacity:.45\x27\x22>{{\x20status.effective.features.timeMachine\x20?\x20\x27✓\x20enabled\x27\x20:\x20\x27✗\x20disabled\x27\x20}}</span></td><td>—</td></tr><tr><td>Views</td><td><span\x20:style=\x22status.effective.features.views\x20?\x20\x27color:var(--okdb-success,#38a169)\x27\x20:\x20\x27opacity:.45\x27\x22>{{\x20status.effective.features.views\x20?\x20\x27✓\x20enabled\x27\x20:\x20\x27✗\x20disabled\x27\x20}}</span></td><td>—</td></tr><tr><td>MCP</td><td><span\x20:style=\x22status.effective.features.mcp\x20?\x20\x27color:var(--okdb-success,#38a169)\x27\x20:\x20\x27opacity:.45\x27\x22>{{\x20status.effective.features.mcp\x20?\x20\x27✓\x20enabled\x27\x20:\x20\x27✗\x20disabled\x27\x20}}</span></td><td>—</td></tr><tr><td>Files</td><td><span\x20:style=\x22status.effective.features.files\x20?\x20\x27color:var(--okdb-success,#38a169)\x27\x20:\x20\x27opacity:.45\x27\x22>{{\x20status.effective.features.files\x20?\x20\x27✓\x20enabled\x27\x20:\x20\x27✗\x20disabled\x27\x20}}</span></td><td>—</td></tr><tr><td>Environments</td><td><span\x20style=\x22color:var(--okdb-success,#38a169)\x22>✓\x20enabled</span></td><td\x20style=\x22font-family:monospace;\x22>{{\x20status.effective.limits.envs\x20?\x20\x27max\x20\x27\x20+\x20status.effective.limits.envs\x20:\x20\x27unlimited\x27\x20}}</td></tr><tr><td>Types\x20per\x20env</td><td><span\x20style=\x22color:var(--okdb-success,#38a169)\x22>✓\x20enabled</span></td><td\x20style=\x22font-family:monospace;\x22>{{\x20status.effective.limits.typesPerEnv\x20?\x20\x27max\x20\x27\x20+\x20status.effective.limits.typesPerEnv\x20:\x20\x27unlimited\x27\x20}}</td></tr><tr><td>Total\x20writes</td><td><span\x20style=\x22color:var(--okdb-success,#38a169)\x22>✓\x20enabled</span></td><td\x20style=\x22font-family:monospace;\x22>{{\x20status.effective.limits.maxWrites\x20?\x20(status.effective.limits.maxWrites).toLocaleString()\x20+\x20\x27\x20max\x27\x20:\x20\x27unlimited\x27\x20}}</td></tr></tbody></table></if><if\x20:=\x22status\x20&&\x20status.licenses\x20&&\x20status.licenses.length\x20>\x200\x22><div\x20class=\x22lp-lic-header\x22><span>ID</span><span>Licensee</span><span>Expires</span><span>Status</span><span>Features</span><span>Actions</span></div><each\x20:of=\x22status.licenses\x22\x20let:lic><div\x20class=\x22lp-lic-row\x22><div\x20class=\x22lp-lic-cells\x22><span\x20style=\x22font-family:monospace;\x20opacity:.7;\x20font-size:11px;\x22>{{\x20shortId(lic.id)\x20}}</span>\x20<span\x20style=\x22font-size:12px;\x22>{{\x20lic.licensee\x20||\x20\x27—\x27\x20}}</span>\x20<span\x20style=\x22font-family:monospace;\x20font-size:12px;\x22>{{\x20formatDate(lic.expiresAt)\x20}}</span>\x20<span><span\x20:style=\x22badgeStyle(lic.status)\x22>{{\x20lic.status\x20}}</span></span>\x20<span\x20style=\x22opacity:.7;\x20font-size:12px;\x22>{{\x20featureSummary(lic.features)\x20}}</span><div\x20style=\x22display:flex;\x20gap:6px;\x20flex-wrap:wrap;\x20align-items:center;\x22><if\x20:=\x22lic.status\x20===\x20\x27pending\x27\x20||\x20lic.status\x20===\x20\x27wrong_node\x27\x22><button\x20class=\x22lp-btn\x22\x20style=\x22font-size:11px;\x22\x20@click=\x22openActivate(lic.id)\x22>Activate</button></if><button\x20class=\x22lp-btn\x20lp-btn--danger\x22\x20style=\x22font-size:11px;\x22\x20@click=\x22removeLicense(lic.id)\x22>Remove</button></div></div><if\x20:=\x22activatingId\x20===\x20lic.id\x22><div\x20class=\x22lp-activate-row\x22><div\x20style=\x22font-size:11px;\x20opacity:.7;\x22>PIN\x20for\x20this\x20license:\x20<span\x20style=\x22font-family:monospace;\x20font-weight:600;\x22>{{\x20licensePin(lic)\x20}}</span></div><textarea\x20:value=\x22activateToken\x22\x20@input=\x22activateToken\x20=\x20$event.target.value\x22\x20rows=\x223\x22\x20placeholder=\x22Paste\x20activation\x20token…\x22\x20style=\x22width:100%;\x20font-family:monospace;\x20font-size:11px;\x20resize:vertical;\x22/><if\x20:=\x22activateError\x22><div\x20style=\x22font-size:11px;\x20color:var(--okdb-danger);\x22>{{\x20activateError\x20}}</div></if><div\x20style=\x22display:flex;\x20gap:6px;\x20justify-content:flex-end;\x22><button\x20class=\x22lp-btn\x22\x20style=\x22font-size:11px;\x22\x20@click=\x22cancelActivate()\x22>Cancel</button>\x20<button\x20class=\x22lp-btn\x20lp-btn--primary\x22\x20style=\x22font-size:11px;\x22\x20@click=\x22submitActivate(lic.id)\x22\x20:disabled=\x22!activateToken.trim()\x20||\x20activateLoading\x22>{{\x20activateLoading\x20?\x20\x27Activating…\x27\x20:\x20\x27Activate\x27\x20}}</button></div></div></if></div></each></if><if\x20:=\x22error\x22><div\x20style=\x22font-size:13px;\x20color:var(--okdb-danger);\x20padding:12px\x200;\x22>{{\x20error\x20}}</div></if></if></div>','licensee','clipboard','find','addLoading','catch','var(--okdb-warn,#edc94b)','join','addInput','loading','unavailable','load','Remove\x20this\x20license?','length','entries','1383150kxJknP','slice','12615OzcpRf','1882980dTGOQN','json','isArray','/activate','none','font-size:10px;padding:2px\x207px;border-radius:4px;border:1px\x20solid;font-weight:500;text-transform:uppercase;letter-spacing:.04em;','toISOString','active','$ok','showAddForm','expiresAt','DELETE','success','map','string','stringify','1477416WSTCRC','activateToken','558768Sfimfp','pin','result','828PYgTKh','addError','shared','/status','min','status','pinDisplay','var(--okdb-danger,#f56565)','550734oocFIo','629198MHkCRy','activateError','ADMIN_API','POST','toast','Failed\x20to\x20load\x20license\x20status','License\x20removed','error','licenses','Copy\x20failed','var(--okdb-success,#48bb78)','trim','data','replace','Remove\x20failed','message','background:rgba(237,137,54,.1);border-color:rgba(237,137,54,.3);color:#ed8936;','1DDwbFY'];_0x4efc=function(){return _0x5c21f7;};return _0x4efc();}function _0x3fec(_0x29d8f6,_0x51c48e){_0x29d8f6=_0x29d8f6-0x179;const _0x4efc23=_0x4efc();let _0x3fec7a=_0x4efc23[_0x29d8f6];return _0x3fec7a;}export default{'tag':'license-panel','context':_0x39eb06=>({'status':null,'loading':!0x0,'error':null,'unavailable':!0x1,'showAddForm':!0x1,'addInput':'','addLoading':!0x1,'addError':null,'activatingId':null,'activateToken':'','activateLoading':!0x1,'activateError':null,async 'load'(){const _0x43a95a=_0xcbae25;this[_0x43a95a(0x195)]=!0x0,this[_0x43a95a(0x17a)]=null,this[_0x43a95a(0x196)]=!0x1;try{const _0x56bcbe=await fetch(t()+_0x43a95a(0x1b6));if(!_0x56bcbe['ok']){const _0x200040=await _0x56bcbe['json']()[_0x43a95a(0x191)](()=>({}));throw new Error(_0x200040?.['error']?.['message']||_0x200040?.['error']||_0x43a95a(0x1c1));}const _0x15c50a=await _0x56bcbe[_0x43a95a(0x19f)]();this[_0x43a95a(0x1b8)]=_0x15c50a[_0x43a95a(0x17f)]??_0x15c50a[_0x43a95a(0x1b2)]??_0x15c50a;}catch(_0x5cb205){this[_0x43a95a(0x17a)]=_0x5cb205?.[_0x43a95a(0x182)]||String(_0x5cb205);}finally{this[_0x43a95a(0x195)]=!0x1;}},'openAddForm'(){const _0x533b9b=_0xcbae25;this[_0x533b9b(0x1a7)]=!0x0,this['addInput']='',this['addError']=null;},'cancelAddForm'(){const _0x1c6bd6=_0xcbae25;this[_0x1c6bd6(0x1a7)]=!0x1,this[_0x1c6bd6(0x1b4)]=null;},async 'submitAdd'(){const _0x40e16a=_0xcbae25;if(this[_0x40e16a(0x194)]['trim']()&&!this['addLoading']){this[_0x40e16a(0x190)]=!0x0,this[_0x40e16a(0x1b4)]=null;try{const _0x266072=await fetch(''+t(),{'method':_0x40e16a(0x1bf),'headers':{'Content-Type':_0x40e16a(0x188)},'body':JSON[_0x40e16a(0x1ad)]({'input':this[_0x40e16a(0x194)][_0x40e16a(0x17e)]()})}),_0x5ce6a8=await _0x266072[_0x40e16a(0x19f)]();if(!_0x266072['ok']){const _0x3da8c2=_0x5ce6a8?.['error']?.[_0x40e16a(0x182)]||_0x5ce6a8?.[_0x40e16a(0x17a)]||_0x5ce6a8?.[_0x40e16a(0x17f)]?.[_0x40e16a(0x17a)]||_0x5ce6a8?.[_0x40e16a(0x1b2)]?.[_0x40e16a(0x17a)]||'Failed\x20to\x20add\x20license';throw new Error('string'==typeof _0x3da8c2?_0x3da8c2:JSON[_0x40e16a(0x1ad)](_0x3da8c2));}this[_0x40e16a(0x1a7)]=!0x1,await this['load']();}catch(_0x2b6cb1){this[_0x40e16a(0x1b4)]=_0x2b6cb1?.['message']||String(_0x2b6cb1);}finally{this[_0x40e16a(0x190)]=!0x1;}}},'copyPin'(){const _0xebc857=_0xcbae25,_0x443bab=this[_0xebc857(0x1b9)]();_0x443bab&&'—'!==_0x443bab&&navigator[_0xebc857(0x18e)]?.[_0xebc857(0x18a)]&&navigator[_0xebc857(0x18e)][_0xebc857(0x18a)](_0x443bab)['then'](()=>_0x39eb06[_0xebc857(0x1a6)][_0xebc857(0x1b5)]?.['toast']?.['success']?.('PIN\x20copied'),()=>_0x39eb06[_0xebc857(0x1a6)][_0xebc857(0x1b5)]?.[_0xebc857(0x1c0)]?.[_0xebc857(0x17a)]?.(_0xebc857(0x17c)));},'usagePct':(_0x1a5cda,_0x5b0ff1)=>_0x5b0ff1&&0x0!==_0x5b0ff1?Math[_0xcbae25(0x1b7)](0x64,Math['round'](_0x1a5cda/_0x5b0ff1*0x64)):0x0,'usageBarColor':_0x422ab3=>_0x422ab3>=0x5a?_0xcbae25(0x1ba):_0x422ab3>=0x4b?_0xcbae25(0x192):_0xcbae25(0x17d),'formatNum':_0x3d20b2=>null==_0x3d20b2?'—':Number(_0x3d20b2)['toLocaleString'](),'openActivate'(_0x41e95c){const _0x49b76d=_0xcbae25;this[_0x49b76d(0x186)]=_0x41e95c,this[_0x49b76d(0x1af)]='',this[_0x49b76d(0x1bd)]=null;},'cancelActivate'(){const _0x55572c=_0xcbae25;this[_0x55572c(0x186)]=null,this[_0x55572c(0x1bd)]=null;},async 'submitActivate'(_0x316407){const _0x2c6dfb=_0xcbae25;if(this[_0x2c6dfb(0x1af)][_0x2c6dfb(0x17e)]()&&!this['activateLoading']){this['activateLoading']=!0x0,this[_0x2c6dfb(0x1bd)]=null;try{const _0x1e6eae=await fetch(t()+'/'+encodeURIComponent(_0x316407)+_0x2c6dfb(0x1a1),{'method':_0x2c6dfb(0x1bf),'headers':{'Content-Type':_0x2c6dfb(0x188)},'body':JSON[_0x2c6dfb(0x1ad)]({'activation':this['activateToken'][_0x2c6dfb(0x17e)]()})}),_0x3abc72=await _0x1e6eae[_0x2c6dfb(0x19f)]();if(!_0x1e6eae['ok']){const _0x16a09=_0x3abc72?.[_0x2c6dfb(0x17a)]?.[_0x2c6dfb(0x182)]||_0x3abc72?.[_0x2c6dfb(0x17a)]||_0x3abc72?.[_0x2c6dfb(0x17f)]?.[_0x2c6dfb(0x17a)]||_0x3abc72?.[_0x2c6dfb(0x1b2)]?.[_0x2c6dfb(0x17a)]||_0x2c6dfb(0x189);throw new Error('string'==typeof _0x16a09?_0x16a09:JSON[_0x2c6dfb(0x1ad)](_0x16a09));}this[_0x2c6dfb(0x186)]=null,await this[_0x2c6dfb(0x197)]();}catch(_0x568404){this[_0x2c6dfb(0x1bd)]=_0x568404?.['message']||String(_0x568404);}finally{this['activateLoading']=!0x1;}}},async 'removeLicense'(_0x37d843){const _0x3e16f8=_0xcbae25;if(confirm(_0x3e16f8(0x198)))try{const _0x13b621=await fetch(t()+'/'+encodeURIComponent(_0x37d843),{'method':_0x3e16f8(0x1a9)}),_0x1f9b5f=await _0x13b621[_0x3e16f8(0x19f)]();if(!_0x13b621['ok']){const _0x4724e8=_0x1f9b5f?.['error']?.['message']||_0x1f9b5f?.[_0x3e16f8(0x17a)]||_0x1f9b5f?.[_0x3e16f8(0x17f)]?.[_0x3e16f8(0x17a)]||_0x1f9b5f?.[_0x3e16f8(0x1b2)]?.[_0x3e16f8(0x17a)]||_0x3e16f8(0x181);throw new Error(_0x3e16f8(0x1ac)==typeof _0x4724e8?_0x4724e8:JSON['stringify'](_0x4724e8));}_0x39eb06[_0x3e16f8(0x1a6)][_0x3e16f8(0x1b5)]?.[_0x3e16f8(0x1c0)]?.[_0x3e16f8(0x1aa)]?.(_0x3e16f8(0x179)),await this[_0x3e16f8(0x197)]();}catch(_0x183d8e){_0x39eb06[_0x3e16f8(0x1a6)][_0x3e16f8(0x1b5)]?.['toast']?.[_0x3e16f8(0x17a)]?.(_0x183d8e?.[_0x3e16f8(0x182)]||_0x3e16f8(0x181));}},'formatDate':_0x4ca957=>_0x4ca957?new Date(_0x4ca957)[_0xcbae25(0x1a4)]()[_0xcbae25(0x19c)](0x0,0xa):'—','shortId':_0x331580=>_0x331580?_0x331580[_0xcbae25(0x19c)](0x0,0x8)+'…':'—','featureSummary'(_0x4280c8){const _0x1e8132=_0xcbae25;if(!_0x4280c8)return'—';const _0x3acc1a=Object[_0x1e8132(0x19a)](_0x4280c8)[_0x1e8132(0x18b)](([,_0x3d1644])=>_0x3d1644)['map'](([_0x17ff4a])=>_0x17ff4a);return _0x3acc1a[_0x1e8132(0x199)]?_0x3acc1a[0x0]+(_0x3acc1a[_0x1e8132(0x199)]>0x1?'\x20+'+(_0x3acc1a[_0x1e8132(0x199)]-0x1):''):_0x1e8132(0x1a2);},'pinDisplay'(){const _0x48846d=_0xcbae25,_0x337db2=this['status']?.[_0x48846d(0x1b1)];return _0x337db2?Array['isArray'](_0x337db2)?0x0===_0x337db2[_0x48846d(0x199)]?'—':_0x337db2[_0x48846d(0x1ab)](_0x5ed190=>'string'==typeof _0x5ed190?_0x5ed190:_0x5ed190?.[_0x48846d(0x1b1)])['filter'](Boolean)[_0x48846d(0x193)](',\x20')||'—':_0x337db2:'—';},'hasActive'(){return(this['status']?.['activeCount']??0x0)>0x0;},'activeLicensee'(){const _0x5450c9=_0xcbae25;return this[_0x5450c9(0x1b8)]?.[_0x5450c9(0x17b)]?.[_0x5450c9(0x18f)](_0x47287c=>'active'===_0x47287c[_0x5450c9(0x1b8)])?.[_0x5450c9(0x18d)]??null;},'activeExpiry'(){const _0x6467fc=_0xcbae25;return this[_0x6467fc(0x1b8)]?.[_0x6467fc(0x17b)]?.['find'](_0xca990=>_0x6467fc(0x1a5)===_0xca990['status'])?.[_0x6467fc(0x1a8)]??null;},'badgeStyle':_0x32506d=>({'active':'background:var(--okdb-success-soft-bg,rgba(72,187,120,.12));border-color:var(--okdb-success-soft-border,rgba(72,187,120,.25));color:var(--okdb-success,#48bb78);','expired':'background:var(--okdb-danger-soft-bg,rgba(245,101,101,.1));border-color:var(--okdb-danger-soft-border,rgba(245,101,101,.25));color:var(--okdb-danger,#f56565);','invalid':'background:var(--okdb-danger-soft-bg,rgba(245,101,101,.1));border-color:var(--okdb-danger-soft-border,rgba(245,101,101,.25));color:var(--okdb-danger,#f56565);','pending':'background:rgba(237,201,75,.1);border-color:rgba(237,201,75,.3);color:#edc94b;','wrong_node':_0xcbae25(0x183)}[_0x32506d]||'')+_0xcbae25(0x1a3),'licensePin'(_0x341cee){const _0x1effa0=_0xcbae25,_0x57edf8=this['status']?.[_0x1effa0(0x1b1)];if(Array[_0x1effa0(0x1a0)](_0x57edf8)){const _0xd58ac=_0x57edf8['find'](_0x1275b5=>_0x1275b5?.[_0x1effa0(0x185)]===_0x341cee?.['id']);if(_0xd58ac?.[_0x1effa0(0x1b1)])return _0xd58ac[_0x1effa0(0x1b1)];}return'string'==typeof _0x341cee?.[_0x1effa0(0x1b1)]?_0x341cee[_0x1effa0(0x1b1)]:'—';}}),'mount'(){this['load']();},'style':'license-panel{display:block;padding:24px;max-width:860px}.lp-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.lp-title{font-size:18px;font-weight:600}.lp-status-banner{padding:12px\x2016px;border-radius:10px;border:1px\x20solid;font-size:13px;margin-bottom:20px;display:flex;align-items:center;gap:10px}.lp-status-banner--ok{background:var(--okdb-success-soft-bg,\x20rgba(72,187,120,.08));border-color:var(--okdb-success-soft-border,\x20rgba(72,187,120,.2));color:var(--okdb-success,\x20#48bb78)}.lp-status-banner--warn{background:var(--okdb-danger-soft-bg,\x20rgba(245,101,101,.08));border-color:var(--okdb-danger-soft-border,\x20rgba(245,101,101,.2));color:var(--okdb-danger,\x20#f56565)}.lp-pin-box{background:var(--okdb-app-surface-2,\x20rgba(255,255,255,.04));border:1px\x20solid\x20var(--okdb-app-border);border-radius:8px;padding:12px\x2016px;margin-bottom:20px;font-size:12px}.lp-pin-label{opacity:.5;text-transform:uppercase;letter-spacing:.06em;font-size:10px;margin-bottom:4px}.lp-pin-value{font-family:monospace;font-size:15px;font-weight:600;letter-spacing:.08em}.lp-lic-cells,.lp-lic-header{display:grid;grid-template-columns:90px\x201fr\x2090px\x2080px\x2080px\x20auto;gap:0\x2010px;align-items:center;padding:6px\x2010px}.lp-lic-header{font-size:10px;text-transform:uppercase;letter-spacing:.06em;opacity:.45}.lp-lic-header,.lp-lic-row{border-bottom:1px\x20solid\x20var(--okdb-app-border)}.lp-lic-row:last-child{border-bottom:none}.lp-add-form{background:var(--okdb-app-surface-2,\x20rgba(255,255,255,.03));border:1px\x20solid\x20var(--okdb-app-border);border-radius:10px;padding:16px;margin-bottom:20px;display:flex;flex-direction:column;gap:12px}.lp-form-label{font-size:10px;opacity:.5;text-transform:uppercase;letter-spacing:.06em;margin-bottom:4px}.lp-activate-row,.lp-btn{border:1px\x20solid\x20var(--okdb-app-border)}.lp-activate-row{background:var(--okdb-app-surface-2,\x20rgba(255,255,255,.03));border-radius:8px;padding:10px\x2012px;display:flex;flex-direction:column;gap:8px;margin-top:4px}.lp-btn{padding:5px\x2012px;border-radius:6px;background:0\x200;color:var(--okdb-app-fg-muted);font-size:12px;font-weight:500;cursor:pointer;transition:background\x20.1s,color\x20.1s}.lp-btn:hover{background:var(--okdb-app-surface-2);color:var(--okdb-app-fg-strong)}.lp-btn--primary{background:var(--okdb-sky-soft-bg,\x20rgba(99,179,237,.1));border-color:var(--okdb-sky-soft-border,\x20rgba(99,179,237,.25));color:var(--okdb-sky,\x20#63b3ed)}.lp-btn--danger{background:var(--okdb-danger-soft-bg,\x20rgba(245,101,101,.08));border-color:var(--okdb-danger-soft-border,\x20rgba(245,101,101,.2));color:var(--okdb-danger,\x20#f56565)}','template':_0xcbae25(0x18c)};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<script type="module">import eventsStore from"../../stores/events-store.js";export default{tag:"processors-index",unwrap:!0,context:s=>({processors:[],busy:!1,_unsubs:[],async load(){this.busy=!0;try{const s=await fetch(__ENV__.API+"/processors");s.ok&&(this.processors=(await s.json()).data??[])}catch{}finally{this.busy=!1}},async doPause(s){await fetch(__ENV__.API+"/processors/"+encodeURIComponent(s)+"/pause",{method:"POST"}),await this.load()},async doResume(s){await fetch(__ENV__.API+"/processors/"+encodeURIComponent(s)+"/resume",{method:"POST"}),await this.load()},async doRetry(s){await fetch(__ENV__.API+"/processors/"+encodeURIComponent(s)+"/retry",{method:"POST"}),await this.load()},async doResetCursor(s){s&&(await fetch(__ENV__.API+"/processors/cursor/reset",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cursorKey:s})}),await this.load())},stateColor(s){switch(s){case"online":return"var(--okdb-success)";case"building":return"var(--okdb-warning)";case"error":return"var(--okdb-danger)";case"waiting":return"var(--okdb-method-default)";case"paused":return"#818cf8";default:return"var(--okdb-app-fg-subtle)"}},lagLabel:s=>0===s.lag?"caught up":s.lag+" behind",progressPct:s=>s.progress?Math.round(100*(s.progress.percent??0)):null}),async init(s){await this.load();const e=()=>this.load();this._unsubs=[eventsStore.on("processor:ready",e),eventsStore.on("processor:error",e),eventsStore.on("processor:paused",e),eventsStore.on("processor:resumed",e),eventsStore.on("processor:retry",e)]},unmount(){for(const s of this._unsubs)s();this._unsubs=[]}}</script><style>.proc-grid{display:grid;grid-template-columns:1fr;gap:12px;padding:16px}.proc-card{background:var(--okdb-app-bg);border:1px solid var(--okdb-app-border);border-radius:8px;padding:14px 16px;font-size:13px}.proc-card__header{display:flex;align-items:center;gap:8px;margin-bottom:8px}.proc-card__dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.proc-card__name{font-weight:600;color:var(--okdb-app-fg-strong);flex:1}.proc-card__state{font-size:11px;padding:2px 8px;border-radius:4px;text-transform:uppercase;letter-spacing:.5px}.proc-card__row{display:flex;gap:16px;margin-top:6px;font-size:12px;color:var(--okdb-method-default)}.proc-card__row strong{color:var(--okdb-app-fg)}.proc-card__actions{display:flex;gap:6px;margin-top:10px}.proc-card__actions button{font-size:11px;padding:3px 10px;border-radius:4px;border:1px solid var(--okdb-app-border-strong);background:var(--okdb-app-surface);color:var(--okdb-method-default);cursor:pointer}.proc-card__actions button:hover{background:var(--okdb-app-border);color:var(--okdb-app-fg-strong)}.proc-card__error{margin-top:6px;padding:6px 8px;background:var(--okdb-danger-soft-bg);border:1px solid #7f1d1d;border-radius:4px;color:var(--okdb-danger);font-size:12px;word-break:break-all}.proc-card__progress{margin-top:6px;height:4px;background:var(--okdb-app-border);border-radius:2px;overflow:hidden}.proc-card__progress-bar{height:100%;background:var(--okdb-accent);transition:width .3s ease;border-radius:2px}.proc-empty{color:var(--okdb-app-fg-subtle);text-align:center;padding:40px 16px;font-size:14px}</style><template><component import="../../layouts/_default.ok.html"><template name="sidebar"><div style="padding:8px 8px;font-size:12px;color:var(--okdb-method-default)"><strong style="color:var(--okdb-app-fg-strong)">Processors</strong><div style="margin-top:4px;opacity:.6">{{ processors.length }} registered</div></div></template><template name="header"><h2 style="margin:0;font-size:16px;color:var(--okdb-app-fg-strong)">Change Processors</h2></template><template name="default"><if :="processors.length === 0 && !busy"><div class="proc-empty">No processors registered.<br><span style="font-size:12px;opacity:.6">Processors are registered by subsystems (FTS, embeddings) or via <code>okdb.processor.register()</code>.</span></div></if><div class="proc-grid"><for :of="processors" let:p><div class="proc-card"><div class="proc-card__header"><span class="proc-card__dot" :style="'background:' + stateColor(p.paused ? 'paused' : p.state)"></span> <span class="proc-card__name">{{ p.meta?.name || p.id.slice(0, 8) }} </span><span class="proc-card__state" :style="'color:' + stateColor(p.paused ? 'paused' : p.state)">{{ p.paused ? 'paused' : p.state }}</span></div><div class="proc-card__row"><span>Type: <strong>{{ p.type }}</strong></span> <span>Mode: <strong>{{ p.mode }}</strong></span> <span>Lag: <strong>{{ lagLabel(p) }}</strong></span></div><div class="proc-card__row"><span>Clock: <strong>{{ p.lastClock }}</strong> / {{ p.headClock }}</span><if :="p.bootstrap"><span>Bootstrap: <strong>{{ p.bootstrap }}</strong></span></if></div><if :="progressPct(p) !== null && p.state === 'building'"><div class="proc-card__progress"><div class="proc-card__progress-bar" :style="'width:' + progressPct(p) + '%'"></div></div><div style="font-size:11px;color:var(--okdb-app-fg-subtle);margin-top:2px">{{ p.progress?.phase }} — {{ progressPct(p) }}%</div></if><if :="p.error"><div class="proc-card__error">{{ p.error }}</div></if><div class="proc-card__actions"><if :="!p.paused && p.state === 'online'"><button @click="doPause(p.id)">⏸ Pause</button></if><if :="p.paused"><button @click="doResume(p.id)">▶ Resume</button></if><if :="p.state === 'error'"><button @click="doRetry(p.id)">↻ Retry</button></if><if :="p.cursorKey"><button @click="doResetCursor(p.cursorKey)" title="Reset cursor for this processor — forces full reprocess on next start">⟲ Reset Cursor</button></if></div></div></for></div></template></component></template>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<script type="module">import queueBuckets from"./parts/queue-buckets.ok.js";import queueJobs from"./parts/queue-jobs.ok.js";import queueTypes from"./parts/queue-types.ok.js";import queueWorkers from"./parts/queue-workers.ok.js";import queueJobTypes from"./parts/queue-job-types.ok.js";export default{tag:"queue-index",unwrap:!0,dependencies:[queueTypes,queueJobs,queueBuckets,queueWorkers,queueJobTypes],context:e=>({view:"jobs",selectedType:null,typesEl:null,jobsEl:null,onTypeSelected(e){const t=e.detail??null;this.selectedType!==t&&(this.selectedType=t,this.syncRouteState())},setView(e){["jobs","workers","buckets","types"].includes(e)||(e="jobs"),this.view!==e&&(this.view=e,this.syncRouteState())},applyRouteState(){const t=e.$vars?.$router,s=t?._search||{},o=["jobs","workers","buckets","types"].includes(s.view)?s.view:"jobs",r=s.type?String(s.type):null;this.view!==o&&(this.view=o),this.selectedType!==r&&(this.selectedType=r)},syncRouteState(){const t=e.$vars?.$router;if(!t?.resolve||!t?.replace)return;const s=t._search||{},o={...s};e.$ok?.stores?.okdb?.selectedEnv&&(o.env=e.$ok.stores.okdb.selectedEnv),this.view&&"jobs"!==this.view?o.view=this.view:delete o.view,this.selectedType?o.type=this.selectedType:delete o.type;const r=["jobs","workers","buckets","types"].includes(s.view)?s.view:"jobs",i=s.type?String(s.type):null,u=o.view?String(o.view):"jobs",n=o.type?String(o.type):null,p=s.env?String(s.env):null,l=o.env?String(o.env):null;r===u&&i===n&&p===l||t.replace(t.resolve(t._path||"/queue",o,t._anchor||""))},onJobsRefresh(){this.typesEl?.$scope?.$innerContext?.refresh?.()},async onEnvChanged(){this.selectedType=null,await(this.typesEl?.$scope?.$innerContext?.refresh?.()),await(this.jobsEl?.$scope?.$innerContext?.query?.load?.()),await(this.jobsEl?.$scope?.$innerContext?.loadStats?.())}}),init(e){this.applyRouteState(),e.$watch(()=>e.$ok.stores.okdb.selectedEnv,()=>this.onEnvChanged()),e.$watch(()=>[e.$vars?.$router?._search?.view??"",e.$vars?.$router?._search?.type??""].join("||"),()=>this.applyRouteState())}}</script><style>.queue-nav-btn{width:100%;text-align:left;padding:6px 10px;border-radius:6px;border:1px solid transparent;background:0 0;color:var(--okdb-app-fg-muted);font-size:12px;cursor:pointer;transition:background .12s,border-color .12s,color .12s}.queue-nav-btn:hover{background:var(--okdb-app-surface);border-color:var(--okdb-app-border);color:var(--okdb-app-fg-strong)}.queue-nav-btn--on{background:var(--okdb-app-surface);border-color:var(--okdb-accent);color:var(--okdb-app-fg-strong)}</style><template><component import="../../layouts/_default.ok.html"><template name="sidebar"><div style="display:flex;flex-direction:column;gap:10px;height:100%;min-height:0"><div style="display:flex;flex-direction:column;gap:4px"><button @click="setView('jobs')" :class="view==='jobs' ? 'queue-nav-btn queue-nav-btn--on' : 'queue-nav-btn'">Jobs</button> <button @click="setView('workers')" :class="view==='workers' ? 'queue-nav-btn queue-nav-btn--on' : 'queue-nav-btn'">Workers</button> <button @click="setView('buckets')" :class="view==='buckets' ? 'queue-nav-btn queue-nav-btn--on' : 'queue-nav-btn'">Buckets</button> <button @click="setView('types')" :class="view==='types' ? 'queue-nav-btn queue-nav-btn--on' : 'queue-nav-btn'">Types</button></div><div style="height:1px;background:var(--okdb-app-border);margin:4px 0"></div><if :="view === 'jobs' || view === 'workers'"><queue-types :ref="typesEl = $el" :selectedtype="selectedType" @type="onTypeSelected"/></if><if :="view === 'buckets'"><div style="opacity:.55;font-size:12px;line-height:1.7">Token buckets rate-limit job throughput.<br>Assign a bucket name to a job at enqueue time to control how many tokens are consumed per job.</div></if><if :="view === 'types'"><div style="opacity:.55;font-size:12px;line-height:1.7">Register job types to define defaults, limit concurrency, and pause or drain a type without touching individual jobs.</div></if><if :="view === 'workers'"><div style="height:1px;background:var(--okdb-app-border);margin:2px 0"></div><div style="opacity:.45;font-size:11px;line-height:1.6">Select a job type above to scope workers, or see all workers.</div></if></div></template><template name="default"><if :="view === 'jobs'"><queue-jobs :ref="jobsEl = $el" :type="selectedType" @refresh="onJobsRefresh" @go-to-buckets="setView('buckets')"/></if><if :="view === 'workers'"><queue-workers :jobtype="selectedType"/></if><if :="view === 'buckets'"><queue-buckets/></if><if :="view === 'types'"><queue-job-types/></if></template></component></template>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function _0x31a4(_0xcfa5eb,_0x19c935){_0xcfa5eb=_0xcfa5eb-0x1df;const _0x15fc47=_0x15fc();let _0x31a427=_0x15fc47[_0xcfa5eb];return _0x31a427;}const _0x15f3fa=_0x31a4;function _0x15fc(){const _0x257245=['Bucket\x20\x22','application/json','130SGNosZ','\x22\x20created','toast','create-bucket-modal','onDone','capacity','success','json','310044lxGojy','8ENVWPZ','form','145902WrtSeA','busy','1155260mzzAEv','trim','4631049TdbqXs','close','POST','44BAjdRu','error','Bucket\x20ID\x20is\x20required','message','Create\x20failed','shared','refill_amount','$ok','1261778brnpYT','refill_every','$attr','/queue/bucket/add/','apiBase','5996zwiDmC','6898850GEcGJG'];_0x15fc=function(){return _0x257245;};return _0x15fc();}(function(_0x187581,_0x3b3e5e){const _0x33c432=_0x31a4,_0x1cf282=_0x187581();while(!![]){try{const _0x1bf244=-parseInt(_0x33c432(0x1e8))/0x1*(-parseInt(_0x33c432(0x1fe))/0x2)+parseInt(_0x33c432(0x1f4))/0x3+-parseInt(_0x33c432(0x1f9))/0x4+-parseInt(_0x33c432(0x1ec))/0x5*(parseInt(_0x33c432(0x1f7))/0x6)+-parseInt(_0x33c432(0x1e3))/0x7+parseInt(_0x33c432(0x1f5))/0x8*(parseInt(_0x33c432(0x1fb))/0x9)+parseInt(_0x33c432(0x1e9))/0xa;if(_0x1bf244===_0x3b3e5e)break;else _0x1cf282['push'](_0x1cf282['shift']());}catch(_0x1d7cb3){_0x1cf282['push'](_0x1cf282['shift']());}}}(_0x15fc,0x529db));import _0x2d0134 from'../../../stores/okdb-store.js';export default{'tag':_0x15f3fa(0x1ef),'attr':{'modal':{},'onDone':{}},'context':_0x42350f=>({'busy':!0x1,'error':null,'form':{'id':'','capacity':0x64,'tokens':0x64,'refill_amount':0x0,'refill_every':0x0},async 'save'(){const _0x29b74e=_0x15f3fa,_0x3a6652=String(this[_0x29b74e(0x1f6)]['id']||'')[_0x29b74e(0x1fa)]();if(_0x3a6652){this[_0x29b74e(0x1f8)]=!0x0,this[_0x29b74e(0x1ff)]=null;try{const _0x505227=await fetch(_0x2d0134[_0x29b74e(0x1e7)]+_0x29b74e(0x1e6)+encodeURIComponent(_0x3a6652),{'method':_0x29b74e(0x1fd),'headers':{'Content-Type':_0x29b74e(0x1eb)},'body':JSON['stringify']({'capacity':Number(this[_0x29b74e(0x1f6)][_0x29b74e(0x1f1)])||0x0,'tokens':Number(this['form']['tokens'])||0x0,'refill_amount':Number(this['form'][_0x29b74e(0x1e1)])||0x0,'refill_every':Number(this['form'][_0x29b74e(0x1e4)])||0x0})}),_0x30762b=await _0x505227[_0x29b74e(0x1f3)]();if(!_0x505227['ok'])throw new Error(_0x30762b?.[_0x29b74e(0x1ff)]?.[_0x29b74e(0x201)]||_0x29b74e(0x1df));_0x42350f[_0x29b74e(0x1e2)][_0x29b74e(0x1e0)]?.[_0x29b74e(0x1ee)]?.[_0x29b74e(0x1f2)]?.(_0x29b74e(0x1ea)+_0x3a6652+_0x29b74e(0x1ed)),await _0x42350f[_0x29b74e(0x1e5)]['modal'][_0x29b74e(0x1fc)](),await _0x42350f[_0x29b74e(0x1e5)][_0x29b74e(0x1f0)]?.(_0x3a6652);}catch(_0x32cec8){this[_0x29b74e(0x1ff)]=_0x32cec8?.[_0x29b74e(0x201)]||'Create\x20failed';}finally{this[_0x29b74e(0x1f8)]=!0x1;}}else this[_0x29b74e(0x1ff)]=_0x29b74e(0x200);},'cancel'(){_0x42350f['$attr']['modal']['close']();}}),'template':'\x0a<div\x20style=\x22min-width:320px;\x20display:flex;\x20flex-direction:column;\x20gap:12px;\x22>\x0a\x0a\x20\x20<if\x20:=\x22error\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-danger);\x20font-size:12px;\x20padding:8px;\x20border:1px\x20solid\x20var(--okdb-danger);\x20border-radius:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20{{\x20error\x20}}\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<div\x20style=\x22display:grid;\x20grid-template-columns:130px\x201fr;\x20gap:8px\x2012px;\x20align-items:center;\x20font-size:13px;\x22>\x0a\x0a\x20\x20\x20\x20<label\x20style=\x22opacity:.7;\x22>Bucket\x20ID</label>\x0a\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20:value=\x22form.id\x22\x0a\x20\x20\x20\x20\x20\x20@input=\x22form.id\x20=\x20$el.value\x22\x0a\x20\x20\x20\x20\x20\x20placeholder=\x22e.g.\x20openai-api\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22font-family:monospace;\x22\x0a\x20\x20\x20\x20\x20\x20@keydown.enter=\x22save()\x22\x0a\x20\x20\x20\x20/>\x0a\x0a\x20\x20\x20\x20<label\x20style=\x22opacity:.7;\x22>Capacity</label>\x0a\x20\x20\x20\x20<input\x20type=\x22number\x22\x20min=\x221\x22\x0a\x20\x20\x20\x20\x20\x20:value=\x22form.capacity\x22\x0a\x20\x20\x20\x20\x20\x20@input=\x22form.capacity\x20=\x20Number($el.value)\x22\x0a\x20\x20\x20\x20/>\x0a\x0a\x20\x20\x20\x20<label\x20style=\x22opacity:.7;\x22>Initial\x20Tokens</label>\x0a\x20\x20\x20\x20<input\x20type=\x22number\x22\x20min=\x220\x22\x0a\x20\x20\x20\x20\x20\x20:value=\x22form.tokens\x22\x0a\x20\x20\x20\x20\x20\x20@input=\x22form.tokens\x20=\x20Number($el.value)\x22\x0a\x20\x20\x20\x20/>\x0a\x0a\x20\x20\x20\x20<div\x20style=\x22grid-column:1/-1;\x20height:1px;\x20background:var(--okdb-app-border);\x20margin:2px\x200;\x22></div>\x0a\x0a\x20\x20\x20\x20<div\x20style=\x22grid-column:1/-1;\x20font-size:11px;\x20opacity:.5;\x20text-transform:uppercase;\x20letter-spacing:.05em;\x22>\x0a\x20\x20\x20\x20\x20\x20Auto-Refill\x20(optional)\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<label\x20style=\x22opacity:.7;\x22>Refill\x20Amount</label>\x0a\x20\x20\x20\x20<input\x20type=\x22number\x22\x20min=\x220\x22\x0a\x20\x20\x20\x20\x20\x20:value=\x22form.refill_amount\x22\x0a\x20\x20\x20\x20\x20\x20@input=\x22form.refill_amount\x20=\x20Number($el.value)\x22\x0a\x20\x20\x20\x20\x20\x20placeholder=\x220\x20=\x20disabled\x22\x0a\x20\x20\x20\x20/>\x0a\x0a\x20\x20\x20\x20<label\x20style=\x22opacity:.7;\x22>Refill\x20Every\x20(ms)</label>\x0a\x20\x20\x20\x20<input\x20type=\x22number\x22\x20min=\x220\x22\x0a\x20\x20\x20\x20\x20\x20:value=\x22form.refill_every\x22\x0a\x20\x20\x20\x20\x20\x20@input=\x22form.refill_every\x20=\x20Number($el.value)\x22\x0a\x20\x20\x20\x20\x20\x20placeholder=\x22e.g.\x2060000\x20for\x201\x20min\x22\x0a\x20\x20\x20\x20/>\x0a\x0a\x20\x20</div>\x0a\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:10px;\x20justify-content:flex-end;\x20margin-top:4px;\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||\x20!form.id\x22>\x0a\x20\x20\x20\x20\x20\x20{{\x20busy\x20?\x20\x27Creating…\x27\x20:\x20\x27Create\x27\x20}}\x0a\x20\x20\x20\x20</button>\x0a\x20\x20</div>\x0a\x0a</div>\x0a'};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function _0x2102(){const _0x577392=['apiBase','Bucket\x20ID\x20is\x20required','stringify','32YMlxmH','refill_every','busy','edit-bucket-modal','onDone','6niWuLl','close','/queue/bucket/update/','756520zuSxUB','286BCmdtn','success','json','shared','modal','refill_amount','1048540SXVhTw','$attr','27zOMfKS','741015OFIbxU','\x0a<div\x20style=\x22min-width:320px;\x20display:flex;\x20flex-direction:column;\x20gap:12px;\x22>\x0a\x0a\x20\x20<if\x20:=\x22error\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-danger);\x20font-size:12px;\x20padding:8px;\x20border:1px\x20solid\x20var(--okdb-danger);\x20border-radius:6px;\x22>{{\x20error\x20}}</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<div\x20style=\x22display:grid;\x20grid-template-columns:120px\x201fr;\x20gap:8px\x2012px;\x20align-items:center;\x20font-size:13px;\x22>\x0a\x0a\x20\x20\x20\x20<label\x20style=\x22opacity:.7;\x22>Bucket\x20ID</label>\x0a\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20:value=\x22form.id\x22\x0a\x20\x20\x20\x20\x20\x20@input=\x22form.id\x20=\x20$el.value\x22\x0a\x20\x20\x20\x20\x20\x20:disabled=\x22editMode\x22\x0a\x20\x20\x20\x20\x20\x20placeholder=\x22e.g.\x20openai-api\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22font-family:monospace;\x22\x0a\x20\x20\x20\x20\x20\x20@keydown.enter=\x22save()\x22\x0a\x20\x20\x20\x20/>\x0a\x0a\x20\x20\x20\x20<label\x20style=\x22opacity:.7;\x22>Capacity</label>\x0a\x20\x20\x20\x20<input\x20type=\x22number\x22\x20min=\x221\x22\x20:value=\x22form.capacity\x22\x20@input=\x22form.capacity\x20=\x20Number($el.value)\x22\x20/>\x0a\x0a\x20\x20\x20\x20<label\x20style=\x22opacity:.7;\x22>Initial\x20Tokens</label>\x0a\x20\x20\x20\x20<input\x20type=\x22number\x22\x20min=\x220\x22\x20:value=\x22form.tokens\x22\x20@input=\x22form.tokens\x20=\x20Number($el.value)\x22\x20/>\x0a\x0a\x20\x20\x20\x20<div\x20style=\x22grid-column:1/-1;\x20height:1px;\x20background:var(--okdb-app-border);\x20margin:4px\x200;\x22></div>\x0a\x0a\x20\x20\x20\x20<div\x20style=\x22grid-column:1/-1;\x20font-size:11px;\x20opacity:.5;\x20text-transform:uppercase;\x20letter-spacing:.05em;\x22>\x0a\x20\x20\x20\x20\x20\x20Auto-Refill\x20(optional)\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<label\x20style=\x22opacity:.7;\x22>Refill\x20Amount</label>\x0a\x20\x20\x20\x20<input\x20type=\x22number\x22\x20min=\x220\x22\x20:value=\x22form.refill_amount\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22form.refill_amount\x20=\x20Number($el.value)\x22\x20placeholder=\x220\x20=\x20disabled\x22\x20/>\x0a\x0a\x20\x20\x20\x20<label\x20style=\x22opacity:.7;\x22>Refill\x20Every\x20(ms)</label>\x0a\x20\x20\x20\x20<input\x20type=\x22number\x22\x20min=\x220\x22\x20:value=\x22form.refill_every\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22form.refill_every\x20=\x20Number($el.value)\x22\x20placeholder=\x22e.g.\x2060000\x20for\x201\x20min\x22\x20/>\x0a\x0a\x20\x20</div>\x0a\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:10px;\x20justify-content:flex-end;\x20margin-top:4px;\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||\x20!form.id\x22>\x0a\x20\x20\x20\x20\x20\x20{{\x20busy\x20?\x20\x27Saving…\x27\x20:\x20(editMode\x20?\x20\x27Save\x27\x20:\x20\x27Create\x27)\x20}}\x0a\x20\x20\x20\x20</button>\x0a\x20\x20</div>\x0a\x0a</div>\x0a','Save\x20failed','initialForm','104IlmIai','5296ufcbUv','4889753BQglBp','application/json','1814582vYJiwz','form','capacity','Bucket\x20created','$ok','Bucket\x20updated','trim','message','error','editMode'];_0x2102=function(){return _0x577392;};return _0x2102();}function _0x4f76(_0x7b5b51,_0x945c14){_0x7b5b51=_0x7b5b51-0x83;const _0x21026a=_0x2102();let _0x4f76f8=_0x21026a[_0x7b5b51];return _0x4f76f8;}const _0x3f8d85=_0x4f76;(function(_0x934de4,_0x13f32f){const _0x34f73e=_0x4f76,_0x2a1e4e=_0x934de4();while(!![]){try{const _0x1cefdb=parseInt(_0x34f73e(0xa7))/0x1*(parseInt(_0x34f73e(0x9a))/0x2)+-parseInt(_0x34f73e(0xa2))/0x3*(-parseInt(_0x34f73e(0xa8))/0x4)+parseInt(_0x34f73e(0xa0))/0x5+parseInt(_0x34f73e(0x96))/0x6*(-parseInt(_0x34f73e(0x84))/0x7)+-parseInt(_0x34f73e(0x91))/0x8*(parseInt(_0x34f73e(0xa3))/0x9)+parseInt(_0x34f73e(0x99))/0xa+parseInt(_0x34f73e(0xa9))/0xb;if(_0x1cefdb===_0x13f32f)break;else _0x2a1e4e['push'](_0x2a1e4e['shift']());}catch(_0x7c8f76){_0x2a1e4e['push'](_0x2a1e4e['shift']());}}}(_0x2102,0x290a9));import _0x47f3ba from'../../../stores/okdb-store.js';export default{'tag':_0x3f8d85(0x94),'attr':{'modal':{},'editMode':{},'initialForm':{},'onDone':{}},'context'(_0x48ba12){const _0x18cd9d=_0x3f8d85,_0x120d99=_0x48ba12[_0x18cd9d(0xa1)][_0x18cd9d(0xa6)]??{};return{'busy':!0x1,'error':null,'form':{'id':_0x120d99['id']??'','capacity':_0x120d99[_0x18cd9d(0x86)]??0x64,'tokens':_0x120d99['tokens']??0x64,'refill_amount':_0x120d99[_0x18cd9d(0x9f)]??0x0,'refill_every':_0x120d99[_0x18cd9d(0x92)]??0x0},get 'editMode'(){const _0x5759d1=_0x18cd9d;return!!_0x48ba12['$attr'][_0x5759d1(0x8d)];},async 'save'(){const _0x3990e=_0x18cd9d,_0x5d50c8=String(this['form']['id']||'')[_0x3990e(0x8a)]();if(_0x5d50c8){this[_0x3990e(0x93)]=!0x0,this['error']=null;try{const _0x3c5b99=this['editMode']?_0x47f3ba[_0x3990e(0x8e)]+_0x3990e(0x98)+encodeURIComponent(_0x5d50c8):_0x47f3ba[_0x3990e(0x8e)]+'/queue/bucket/add/'+encodeURIComponent(_0x5d50c8),_0x3e462c=await fetch(_0x3c5b99,{'method':'POST','headers':{'Content-Type':_0x3990e(0x83)},'body':JSON[_0x3990e(0x90)]({'capacity':Number(this['form'][_0x3990e(0x86)])||0x0,'tokens':Number(this[_0x3990e(0x85)]['tokens'])??0x0,'refill_amount':Number(this[_0x3990e(0x85)]['refill_amount'])||0x0,'refill_every':Number(this[_0x3990e(0x85)][_0x3990e(0x92)])||0x0})}),_0x4d11cd=await _0x3e462c[_0x3990e(0x9c)]();if(!_0x3e462c['ok'])throw new Error(_0x4d11cd?.[_0x3990e(0x8c)]?.[_0x3990e(0x8b)]||'Save\x20failed');_0x48ba12[_0x3990e(0x88)][_0x3990e(0x9d)]?.['toast']?.[_0x3990e(0x9b)]?.(this[_0x3990e(0x8d)]?_0x3990e(0x89):_0x3990e(0x87)),await _0x48ba12[_0x3990e(0xa1)][_0x3990e(0x9e)][_0x3990e(0x97)](),await _0x48ba12[_0x3990e(0xa1)][_0x3990e(0x95)]?.();}catch(_0x5ed25f){this['error']=_0x5ed25f?.['message']||_0x3990e(0xa5);}finally{this['busy']=!0x1;}}else this[_0x3990e(0x8c)]=_0x3990e(0x8f);},'cancel'(){const _0x4faa65=_0x18cd9d;_0x48ba12['$attr'][_0x4faa65(0x9e)][_0x4faa65(0x97)]();}};},'template':_0x3f8d85(0xa4)};
|
|
@@ -0,0 +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)};
|
|
@@ -0,0 +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();}
|
|
@@ -0,0 +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();}
|