@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,333 @@
|
|
|
1
|
+
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
|
2
|
+
width="100%" viewBox="0 0 1024 672" enable-background="new 0 0 1024 672" xml:space="preserve">
|
|
3
|
+
<path fill="currentColor" opacity="1.000000" stroke="none"
|
|
4
|
+
d="
|
|
5
|
+
M428.062195,313.837250
|
|
6
|
+
C433.757019,319.949432 432.439636,326.944611 431.895294,335.542145
|
|
7
|
+
C425.127716,329.213043 415.032104,329.305450 412.447357,319.158630
|
|
8
|
+
C411.254028,314.474091 404.973541,311.371277 400.360107,312.624634
|
|
9
|
+
C395.109406,314.051147 392.168610,319.028656 393.230225,324.692505
|
|
10
|
+
C394.158203,329.643555 398.738251,333.390625 403.788116,332.420044
|
|
11
|
+
C407.153137,331.773254 409.467743,332.814850 412.084930,334.449890
|
|
12
|
+
C427.903839,344.332672 443.739655,354.190948 459.691620,363.856384
|
|
13
|
+
C463.543732,366.190430 465.390991,369.143799 465.343964,373.581299
|
|
14
|
+
C465.257935,381.703003 465.319489,389.826233 465.319489,398.640930
|
|
15
|
+
C459.674316,397.111877 455.705475,394.004456 451.485596,391.587463
|
|
16
|
+
C427.496582,377.847687 403.632874,363.889221 379.672150,350.099670
|
|
17
|
+
C376.933105,348.523346 375.628296,346.723267 375.635437,343.409576
|
|
18
|
+
C375.732880,298.258789 375.701263,253.107773 375.725464,207.956833
|
|
19
|
+
C375.726257,206.503799 375.378174,204.950958 376.919250,202.977203
|
|
20
|
+
C383.116974,206.416397 389.491730,209.834442 395.753540,213.448303
|
|
21
|
+
C431.526154,234.093674 467.246979,254.829132 503.071960,275.383148
|
|
22
|
+
C506.094574,277.117310 507.272003,278.987671 507.265900,282.427917
|
|
23
|
+
C507.186859,327.078796 507.236664,371.729889 507.223083,416.380951
|
|
24
|
+
C507.222534,418.151001 507.659912,420.053772 506.326935,421.663239
|
|
25
|
+
C504.248901,422.396149 502.844208,420.910645 501.331146,420.051300
|
|
26
|
+
C494.814026,416.350037 488.518066,412.214478 481.810333,408.909271
|
|
27
|
+
C477.168182,406.621857 475.719635,403.183777 475.712006,398.544891
|
|
28
|
+
C475.697235,389.548035 475.605591,380.550171 475.712830,371.554718
|
|
29
|
+
C475.787109,365.324677 473.357483,360.686157 467.974487,357.462769
|
|
30
|
+
C460.973206,353.270355 454.171021,348.735870 447.076630,344.712769
|
|
31
|
+
C443.727570,342.813629 442.358978,340.553619 442.607086,336.727448
|
|
32
|
+
C442.908264,332.081970 442.724487,327.401276 442.655823,322.737244
|
|
33
|
+
C442.625092,320.649933 443.192810,318.975952 444.516205,317.262268
|
|
34
|
+
C448.119904,312.595642 448.267273,307.797394 444.923706,304.062561
|
|
35
|
+
C441.914459,300.701111 438.209229,299.190063 433.725250,301.219360
|
|
36
|
+
C428.758087,303.467346 426.822144,307.554626 428.062195,313.837250
|
|
37
|
+
M488.685608,358.694336
|
|
38
|
+
C490.242523,360.572205 491.799408,362.450073 493.356293,364.327942
|
|
39
|
+
C493.829437,364.031403 494.302582,363.734894 494.775726,363.438354
|
|
40
|
+
C495.181183,353.053223 495.537689,342.656677 494.558502,332.271088
|
|
41
|
+
C494.273285,329.246216 491.855103,327.408356 489.399323,325.870819
|
|
42
|
+
C484.181763,322.604187 479.050995,319.180176 473.687836,316.171570
|
|
43
|
+
C470.379333,314.315521 468.866089,311.820923 468.864105,308.147858
|
|
44
|
+
C468.861206,302.819489 468.737061,297.491089 468.743378,292.162811
|
|
45
|
+
C468.749786,286.741852 466.764648,282.758667 461.816895,279.900391
|
|
46
|
+
C445.528595,270.490692 429.402710,260.799591 413.227325,251.194855
|
|
47
|
+
C405.837860,246.807083 398.478485,242.368622 391.039581,237.913712
|
|
48
|
+
C389.729462,240.238708 390.486420,242.081146 391.235260,243.922577
|
|
49
|
+
C393.783508,250.188797 398.141815,254.715973 404.035889,258.047882
|
|
50
|
+
C417.368042,265.584564 430.135620,274.295990 443.979340,280.699493
|
|
51
|
+
C456.466248,286.475403 460.875702,294.913086 459.011292,307.869202
|
|
52
|
+
C457.942413,315.296875 460.723846,320.798218 467.858063,323.992767
|
|
53
|
+
C470.560974,325.203125 472.749512,327.578308 475.463928,328.744049
|
|
54
|
+
C483.723846,332.291443 486.591675,338.343018 485.314209,347.057831
|
|
55
|
+
C484.743073,350.954010 484.635193,355.137573 488.685608,358.694336
|
|
56
|
+
z"/>
|
|
57
|
+
<path fill="currentColor" opacity="1.000000" stroke="none"
|
|
58
|
+
d="
|
|
59
|
+
M558.922058,254.867172
|
|
60
|
+
C589.204712,237.491531 619.164490,220.287964 649.082886,203.108154
|
|
61
|
+
C650.773376,205.550339 650.292175,207.436569 650.299438,209.213394
|
|
62
|
+
C650.345764,220.543396 650.093323,231.879837 650.395935,243.201935
|
|
63
|
+
C650.639404,252.310059 646.651672,259.133789 639.443970,263.806030
|
|
64
|
+
C622.814758,274.585510 605.871582,284.879822 589.104187,295.447784
|
|
65
|
+
C587.010315,296.767456 584.977905,296.323181 582.844238,296.076233
|
|
66
|
+
C577.018738,295.402100 572.650696,298.502747 571.490295,304.115784
|
|
67
|
+
C570.464783,309.076141 573.400757,313.869568 578.371155,315.349701
|
|
68
|
+
C583.516907,316.882050 588.984863,314.188751 590.608337,308.789337
|
|
69
|
+
C591.483582,305.878418 593.387085,304.397461 595.673889,302.991699
|
|
70
|
+
C610.290833,294.005981 624.878052,284.971344 639.544983,276.068085
|
|
71
|
+
C642.976196,273.985291 646.030273,271.481110 648.754578,268.729034
|
|
72
|
+
C651.023315,269.661560 650.322388,271.409576 650.324951,272.733307
|
|
73
|
+
C650.371399,296.393280 650.304871,320.053528 650.402954,343.713165
|
|
74
|
+
C650.415771,346.797241 649.256714,348.558105 646.654846,350.054504
|
|
75
|
+
C608.396912,372.057617 570.192566,394.153870 531.937744,416.162476
|
|
76
|
+
C528.820007,417.956177 526.057434,420.487488 522.573303,421.426544
|
|
77
|
+
C520.496765,419.640656 521.110596,417.506927 521.123047,415.600128
|
|
78
|
+
C521.246094,396.778076 521.575195,377.956421 521.568176,359.134735
|
|
79
|
+
C521.559631,336.002838 521.435730,312.868469 521.048279,289.740417
|
|
80
|
+
C520.905884,281.238678 522.192444,274.746002 531.354614,270.749603
|
|
81
|
+
C540.903625,266.584473 549.555237,260.362122 558.922058,254.867172
|
|
82
|
+
M567.112244,274.665222
|
|
83
|
+
C561.034668,278.443420 555.028992,282.344269 548.855591,285.958832
|
|
84
|
+
C544.356873,288.592926 542.327637,292.419189 542.278809,297.458588
|
|
85
|
+
C542.212646,304.283966 541.990601,311.117615 542.242065,317.932678
|
|
86
|
+
C542.402588,322.283203 541.267700,325.982971 537.914917,328.558594
|
|
87
|
+
C531.053528,333.829498 533.465759,340.760803 533.406677,348.733734
|
|
88
|
+
C537.612000,342.567108 541.648804,338.113770 546.347778,334.420044
|
|
89
|
+
C550.857666,330.874939 552.485779,326.280060 552.576843,320.911926
|
|
90
|
+
C552.692566,314.088287 552.766113,307.257965 552.587646,300.437592
|
|
91
|
+
C552.488403,296.644562 554.018921,294.297272 557.219238,292.370850
|
|
92
|
+
C567.913391,285.933716 578.496216,279.310608 589.085327,272.700531
|
|
93
|
+
C593.300476,270.069336 597.122437,267.404541 602.835327,268.608948
|
|
94
|
+
C607.635559,269.620941 611.832825,265.475128 612.624939,260.643494
|
|
95
|
+
C613.427917,255.745514 610.715942,251.221527 606.038940,249.657120
|
|
96
|
+
C601.246033,248.053940 595.774902,249.700027 594.276001,254.377563
|
|
97
|
+
C592.751831,259.134308 589.317078,261.138580 585.632507,263.363708
|
|
98
|
+
C579.649414,266.976868 573.702881,270.650574 567.112244,274.665222
|
|
99
|
+
M630.293091,315.186188
|
|
100
|
+
C624.332397,309.613007 615.675415,312.863464 613.910400,318.936432
|
|
101
|
+
C612.726257,323.010681 610.118713,324.799133 606.950989,326.716339
|
|
102
|
+
C585.612671,339.630981 564.304810,352.596252 543.035645,365.624451
|
|
103
|
+
C536.794983,369.447113 533.367981,377.692810 535.213928,383.368530
|
|
104
|
+
C561.230225,365.518646 588.632507,349.761627 615.391418,332.985260
|
|
105
|
+
C617.054321,331.942688 618.719971,331.546631 620.600708,332.059937
|
|
106
|
+
C625.433655,333.378876 629.182983,331.519409 631.841797,327.672180
|
|
107
|
+
C634.676819,323.570038 633.752014,319.481689 630.293091,315.186188
|
|
108
|
+
z"/>
|
|
109
|
+
<path fill="currentColor" opacity="1.000000" stroke="none"
|
|
110
|
+
d="
|
|
111
|
+
M545.643066,246.726929
|
|
112
|
+
C535.946289,252.317764 526.502380,257.614990 517.210022,263.165924
|
|
113
|
+
C514.441772,264.819611 512.337219,264.909668 509.468292,263.240631
|
|
114
|
+
C481.680115,247.074814 453.793427,231.078430 425.957062,214.995239
|
|
115
|
+
C423.547363,213.602966 420.922089,212.433350 419.267609,210.177322
|
|
116
|
+
C419.162170,208.707413 420.194977,208.342667 421.036469,207.873474
|
|
117
|
+
C436.161743,199.440063 451.317688,191.061188 466.397675,182.547684
|
|
118
|
+
C468.593231,181.308151 470.499725,180.972321 472.973541,181.648026
|
|
119
|
+
C477.784485,182.962128 482.627533,180.280640 484.234680,175.823364
|
|
120
|
+
C485.872620,171.280716 483.763062,166.052582 479.442749,163.947647
|
|
121
|
+
C474.968262,161.767609 468.486755,163.036026 466.866119,167.567108
|
|
122
|
+
C464.952728,172.916855 460.718628,174.688400 456.561646,176.984787
|
|
123
|
+
C441.692261,185.198883 426.754669,193.291077 411.950653,201.620850
|
|
124
|
+
C408.636719,203.485489 405.871277,203.701599 402.747528,201.475266
|
|
125
|
+
C398.900574,198.733505 394.158661,197.275131 390.276886,193.144119
|
|
126
|
+
C397.464203,188.865067 404.099243,184.835632 410.808533,180.933807
|
|
127
|
+
C443.774811,161.762131 476.781036,142.659012 509.700256,123.407043
|
|
128
|
+
C512.266907,121.906021 514.101440,122.082565 516.517395,123.485573
|
|
129
|
+
C555.106628,145.894699 593.739319,168.228821 632.354614,190.593109
|
|
130
|
+
C633.629333,191.331390 635.078796,191.929947 635.922485,194.568970
|
|
131
|
+
C606.064148,211.813721 576.009033,229.172104 545.643066,246.726929
|
|
132
|
+
M486.484375,194.074600
|
|
133
|
+
C481.926147,196.497452 477.376526,198.936722 472.805084,201.334320
|
|
134
|
+
C471.197662,202.177353 469.572723,203.384445 467.654846,202.783966
|
|
135
|
+
C459.706360,200.295349 453.581055,204.507660 445.984711,208.574371
|
|
136
|
+
C454.802429,211.029114 458.463654,221.642639 468.925476,218.827103
|
|
137
|
+
C470.169128,218.492416 471.978027,219.889603 473.411407,220.687820
|
|
138
|
+
C483.158356,226.115631 492.910492,231.536087 502.584198,237.092606
|
|
139
|
+
C506.612427,239.406433 510.301514,239.360443 514.302429,236.949997
|
|
140
|
+
C523.286621,231.537277 532.451050,226.423798 541.433716,221.008621
|
|
141
|
+
C544.563538,219.121750 547.611633,218.315735 551.324097,218.667389
|
|
142
|
+
C557.340027,219.237228 561.393921,215.776169 562.203430,210.109314
|
|
143
|
+
C562.855286,205.546143 559.665222,201.072784 554.763000,199.675827
|
|
144
|
+
C549.691284,198.230591 544.845581,200.673767 542.943176,206.075638
|
|
145
|
+
C542.032593,208.661438 540.498535,210.222153 538.213806,211.500549
|
|
146
|
+
C529.495117,216.378830 520.788452,221.283340 512.188232,226.365829
|
|
147
|
+
C509.250824,228.101746 506.790375,228.088608 503.850098,226.368881
|
|
148
|
+
C496.520599,222.081985 489.023468,218.082657 481.635559,213.893936
|
|
149
|
+
C480.140564,213.046295 477.995331,212.912872 477.433411,210.257568
|
|
150
|
+
C486.333740,205.605347 495.331635,200.985123 504.239319,196.197006
|
|
151
|
+
C507.021484,194.701508 509.658417,194.181427 512.811584,194.904526
|
|
152
|
+
C517.812622,196.051392 522.033142,193.544342 523.472290,189.047394
|
|
153
|
+
C525.065613,184.068985 523.038147,179.409134 518.416992,177.428253
|
|
154
|
+
C513.806580,175.451950 508.363190,176.824677 506.341461,181.210129
|
|
155
|
+
C504.857178,184.429901 502.491241,186.004898 499.621399,187.414413
|
|
156
|
+
C495.436249,189.469955 491.295990,191.616959 486.484375,194.074600
|
|
157
|
+
M560.792969,186.646484
|
|
158
|
+
C569.458069,191.921539 578.172913,197.117065 586.768738,202.502670
|
|
159
|
+
C591.605286,205.532944 594.814758,205.211487 599.277222,200.605927
|
|
160
|
+
C597.170654,197.317276 594.090820,195.120316 590.784973,193.156143
|
|
161
|
+
C570.767334,181.262497 550.771729,169.331573 530.724426,157.488159
|
|
162
|
+
C528.080505,155.926224 526.109314,154.284134 524.977234,151.119919
|
|
163
|
+
C523.177612,146.089645 517.407104,143.891510 512.588196,145.667282
|
|
164
|
+
C508.147980,147.303528 505.531525,152.484558 506.839630,157.050522
|
|
165
|
+
C508.460999,162.710098 513.032593,165.708633 518.579651,164.261566
|
|
166
|
+
C521.074158,163.610855 522.983215,163.844330 525.138489,165.158951
|
|
167
|
+
C536.777405,172.258484 548.485229,179.245239 560.792969,186.646484
|
|
168
|
+
z"/>
|
|
169
|
+
<path fill="currentColor" opacity="1.000000" stroke="none"
|
|
170
|
+
d="
|
|
171
|
+
M666.321411,489.176208
|
|
172
|
+
C665.019348,490.409729 663.488586,490.943176 662.813965,492.808075
|
|
173
|
+
C666.254578,495.119812 669.958008,497.199097 672.159790,500.828278
|
|
174
|
+
C678.264526,510.890564 677.622864,531.330933 660.077454,537.369141
|
|
175
|
+
C654.996948,539.117554 649.815918,540.242249 644.451965,540.255005
|
|
176
|
+
C624.468994,540.302368 604.485779,540.292969 584.502686,540.267212
|
|
177
|
+
C578.862488,540.259949 577.829956,539.262390 577.824219,533.522888
|
|
178
|
+
C577.797485,506.712311 577.891296,479.901459 577.788269,453.091278
|
|
179
|
+
C577.770325,448.428345 579.419617,446.529419 584.221252,446.571808
|
|
180
|
+
C603.869812,446.745483 623.520569,446.645599 643.170410,446.694855
|
|
181
|
+
C648.213501,446.707489 653.081543,447.738983 657.750366,449.675751
|
|
182
|
+
C673.795654,456.331848 678.225220,476.030548 666.321411,489.176208
|
|
183
|
+
M611.755981,520.624756
|
|
184
|
+
C620.557373,520.624084 629.358948,520.594910 638.160095,520.640869
|
|
185
|
+
C640.677246,520.653992 643.138550,520.421387 645.523621,519.632507
|
|
186
|
+
C649.301758,518.382812 651.275696,515.511963 651.266602,511.752930
|
|
187
|
+
C651.257690,508.091370 649.696350,504.908234 645.835022,503.633240
|
|
188
|
+
C643.314819,502.801086 640.726807,502.305542 638.019592,502.327087
|
|
189
|
+
C629.384766,502.395813 620.748535,502.284393 612.113831,502.359467
|
|
190
|
+
C600.875671,502.457153 602.310303,500.996918 602.328125,512.142639
|
|
191
|
+
C602.342957,521.374573 600.712158,520.445496 611.755981,520.624756
|
|
192
|
+
M627.485596,466.320312
|
|
193
|
+
C620.504822,466.330170 613.523926,466.364319 606.543335,466.336456
|
|
194
|
+
C604.149475,466.326904 601.857361,466.676361 602.367615,469.732239
|
|
195
|
+
C603.138367,474.348724 599.946899,479.575104 604.446716,483.582397
|
|
196
|
+
C604.743347,483.846497 605.413879,483.725677 605.910400,483.725159
|
|
197
|
+
C616.879578,483.713654 627.852905,483.867889 638.816284,483.606537
|
|
198
|
+
C644.828979,483.463165 648.592712,479.831451 648.622925,475.058563
|
|
199
|
+
C648.654846,470.019684 644.824280,466.670441 638.449036,466.368347
|
|
200
|
+
C635.132080,466.211182 631.802124,466.327454 627.485596,466.320312
|
|
201
|
+
z"/>
|
|
202
|
+
<path fill="currentColor" opacity="1.000000" stroke="none"
|
|
203
|
+
d="
|
|
204
|
+
M537.004639,449.729980
|
|
205
|
+
C573.146484,461.629059 572.259644,507.779449 554.863464,525.700989
|
|
206
|
+
C545.121826,535.736816 532.676575,539.735107 519.180420,540.150574
|
|
207
|
+
C503.199860,540.642456 487.192017,540.188110 471.197723,540.334229
|
|
208
|
+
C466.616241,540.376099 464.890289,538.284729 464.896362,534.008667
|
|
209
|
+
C464.934845,506.849670 464.956543,479.690674 464.944275,452.531677
|
|
210
|
+
C464.942413,448.405457 466.637268,446.543793 470.976196,446.586151
|
|
211
|
+
C487.636719,446.748901 504.300262,446.601044 520.960815,446.764038
|
|
212
|
+
C526.293945,446.816162 531.523071,447.997894 537.004639,449.729980
|
|
213
|
+
M539.786560,504.117493
|
|
214
|
+
C540.356873,501.865784 541.220459,499.643402 541.449280,497.357483
|
|
215
|
+
C542.807434,483.792480 538.345581,469.988251 520.551880,467.878052
|
|
216
|
+
C511.269348,466.777161 501.935577,467.613342 492.627808,467.401489
|
|
217
|
+
C490.426880,467.351379 489.850220,468.575867 489.837158,470.579254
|
|
218
|
+
C489.741577,485.218933 489.616852,499.858734 489.410339,514.497192
|
|
219
|
+
C489.364838,517.726196 490.764771,518.949402 493.908447,518.912231
|
|
220
|
+
C502.061859,518.815979 510.222626,519.057129 518.370056,518.814697
|
|
221
|
+
C528.194397,518.522339 535.544373,514.154114 539.786560,504.117493
|
|
222
|
+
z"/>
|
|
223
|
+
<path fill="currentColor" opacity="1.000000" stroke="none"
|
|
224
|
+
d="
|
|
225
|
+
M423.951202,476.953247
|
|
226
|
+
C420.717133,479.861725 417.858643,482.674438 414.732239,485.148682
|
|
227
|
+
C411.467560,487.732452 410.847137,489.647186 414.268768,493.000122
|
|
228
|
+
C427.473541,505.939789 440.369019,519.195618 453.340240,532.372498
|
|
229
|
+
C454.901855,533.958862 457.454071,535.318726 456.400604,538.116455
|
|
230
|
+
C455.214203,541.267273 452.185120,539.918762 449.861115,540.315002
|
|
231
|
+
C435.037445,542.842712 423.820984,537.734497 414.504059,525.809753
|
|
232
|
+
C408.225189,517.773315 399.994019,511.262268 392.329437,503.769012
|
|
233
|
+
C387.671387,507.864349 382.932953,511.999481 378.234894,516.179993
|
|
234
|
+
C376.837708,517.423340 376.991699,519.191833 376.961456,520.849365
|
|
235
|
+
C376.873260,525.678406 376.869171,530.509644 376.719727,535.336609
|
|
236
|
+
C376.613678,538.761841 374.853546,540.424133 371.288910,540.313660
|
|
237
|
+
C366.794769,540.174377 362.291351,540.192505 357.795471,540.296326
|
|
238
|
+
C353.858704,540.387146 351.891510,538.671021 351.891479,534.676270
|
|
239
|
+
C351.891235,507.019867 351.878204,479.363434 351.843140,451.707031
|
|
240
|
+
C351.838684,448.179688 353.409424,446.529236 357.013916,446.613190
|
|
241
|
+
C361.842743,446.725677 366.679169,446.740112 371.506866,446.603149
|
|
242
|
+
C375.380554,446.493286 376.994690,448.389252 376.969452,452.038361
|
|
243
|
+
C376.906219,461.181030 376.982330,470.328918 376.669220,479.463287
|
|
244
|
+
C376.560120,482.646790 376.711853,485.740784 377.111847,489.748474
|
|
245
|
+
C381.132568,486.247192 384.707001,483.175018 388.237335,480.052948
|
|
246
|
+
C399.964630,469.681824 411.690094,459.308502 423.376953,448.891846
|
|
247
|
+
C424.945190,447.494049 426.573242,446.624054 428.726715,446.642548
|
|
248
|
+
C434.890594,446.695496 441.055206,446.658691 447.219543,446.656342
|
|
249
|
+
C449.129242,446.655609 450.969818,446.894165 451.788208,448.949615
|
|
250
|
+
C452.638611,451.085419 451.190643,452.412476 449.829102,453.648865
|
|
251
|
+
C442.432159,460.365692 435.009583,467.054352 427.590485,473.746765
|
|
252
|
+
C426.477936,474.750305 425.336914,475.722229 423.951202,476.953247
|
|
253
|
+
z"/>
|
|
254
|
+
<path fill="currentColor" opacity="1.000000" stroke="none"
|
|
255
|
+
d="
|
|
256
|
+
M581.130798,310.306335
|
|
257
|
+
C578.197754,309.726257 576.455078,308.376068 576.608032,305.569244
|
|
258
|
+
C576.717346,303.565186 577.900269,302.148376 579.859680,301.642334
|
|
259
|
+
C581.992188,301.091644 583.805481,301.801788 585.094849,303.588562
|
|
260
|
+
C587.073425,306.330383 585.815979,308.670319 581.130798,310.306335
|
|
261
|
+
z"/>
|
|
262
|
+
<path fill="currentColor" opacity="1.000000" stroke="none"
|
|
263
|
+
d="
|
|
264
|
+
M402.302551,318.134552
|
|
265
|
+
C407.374084,319.588013 409.051666,323.082947 406.267212,325.748413
|
|
266
|
+
C404.214294,327.713562 401.594330,328.230713 399.751282,325.824982
|
|
267
|
+
C397.339600,322.677002 398.433319,319.961029 402.302551,318.134552
|
|
268
|
+
z"/>
|
|
269
|
+
<path fill="currentColor" opacity="1.000000" stroke="none"
|
|
270
|
+
d="
|
|
271
|
+
M470.920227,171.302673
|
|
272
|
+
C472.311462,168.718216 474.011902,167.323212 476.720215,168.340012
|
|
273
|
+
C478.590790,169.042313 479.738800,170.477036 479.782715,172.476105
|
|
274
|
+
C479.821716,174.250107 478.889038,175.626572 477.284088,176.475357
|
|
275
|
+
C474.191711,178.110794 471.751495,176.300491 470.920227,171.302673
|
|
276
|
+
z"/>
|
|
277
|
+
<path fill="currentColor" opacity="1.000000" stroke="none"
|
|
278
|
+
d="
|
|
279
|
+
M440.942078,307.982391
|
|
280
|
+
C442.653717,311.129608 441.554443,313.043854 438.904541,314.220367
|
|
281
|
+
C436.625702,315.232147 434.674622,314.466980 433.356537,312.460266
|
|
282
|
+
C432.069153,310.500305 432.718536,308.639832 434.297089,307.167542
|
|
283
|
+
C436.556061,305.060638 438.733459,305.572357 440.942078,307.982391
|
|
284
|
+
z"/>
|
|
285
|
+
<path fill="currentColor" opacity="1.000000" stroke="none"
|
|
286
|
+
d="
|
|
287
|
+
M598.618286,260.434326
|
|
288
|
+
C598.135437,256.842651 599.586365,254.976151 602.801941,254.738388
|
|
289
|
+
C605.000793,254.575790 606.667725,255.661758 607.303040,257.830872
|
|
290
|
+
C607.986267,260.163300 607.220337,262.167389 605.098877,263.321075
|
|
291
|
+
C602.095520,264.954346 600.115784,263.481476 598.618286,260.434326
|
|
292
|
+
z"/>
|
|
293
|
+
<path fill="currentColor" opacity="1.000000" stroke="none"
|
|
294
|
+
d="
|
|
295
|
+
M619.241760,320.595459
|
|
296
|
+
C621.840698,317.201599 624.461304,317.221497 626.898254,320.037689
|
|
297
|
+
C628.707031,322.128021 628.306091,324.353302 626.266541,326.171387
|
|
298
|
+
C624.890869,327.397705 623.284180,327.508423 621.652283,326.658356
|
|
299
|
+
C619.310913,325.438599 618.219177,323.625763 619.241760,320.595459
|
|
300
|
+
z"/>
|
|
301
|
+
<path fill="currentColor" opacity="1.000000" stroke="none"
|
|
302
|
+
d="
|
|
303
|
+
M547.969788,209.708038
|
|
304
|
+
C548.214478,208.408279 548.293274,207.277267 548.890198,206.609253
|
|
305
|
+
C550.988647,204.260864 553.482056,203.900299 555.768433,206.246399
|
|
306
|
+
C557.632629,208.159302 557.952637,210.549347 555.596252,212.276550
|
|
307
|
+
C552.345398,214.659393 549.719971,213.725433 547.969788,209.708038
|
|
308
|
+
z"/>
|
|
309
|
+
<path fill="currentColor" opacity="1.000000" stroke="none"
|
|
310
|
+
d="
|
|
311
|
+
M510.558350,184.508957
|
|
312
|
+
C512.076721,181.981445 513.975891,180.772034 516.505920,182.021454
|
|
313
|
+
C518.192993,182.854584 519.253113,184.449020 519.154175,186.461838
|
|
314
|
+
C519.049622,188.589386 517.587769,189.922821 515.727234,190.167847
|
|
315
|
+
C511.882751,190.674194 510.419556,188.391296 510.558350,184.508957
|
|
316
|
+
z"/>
|
|
317
|
+
<path fill="currentColor" opacity="1.000000" stroke="none"
|
|
318
|
+
d="
|
|
319
|
+
M458.990875,209.251205
|
|
320
|
+
C460.207733,206.804169 461.759674,205.251022 464.257904,206.042908
|
|
321
|
+
C466.385437,206.717300 468.264221,208.080490 467.937531,210.693771
|
|
322
|
+
C467.686951,212.698364 466.220367,214.075256 464.217163,214.122650
|
|
323
|
+
C461.297455,214.191711 458.969543,213.147995 458.990875,209.251205
|
|
324
|
+
z"/>
|
|
325
|
+
<path fill="currentColor" opacity="1.000000" stroke="none"
|
|
326
|
+
d="
|
|
327
|
+
M519.787415,152.339264
|
|
328
|
+
C521.453003,155.322586 520.849060,157.452530 518.115845,158.761993
|
|
329
|
+
C516.117310,159.719498 514.241821,159.295761 512.833313,157.499207
|
|
330
|
+
C511.466064,155.755264 511.134979,153.810699 512.707825,152.113785
|
|
331
|
+
C514.864075,149.787384 517.256287,149.746964 519.787415,152.339264
|
|
332
|
+
z"/>
|
|
333
|
+
</svg>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<!DOCTYPE html><html lang="en"><head><base href="./"><meta charset="UTF-8"><title>OKDB</title><link rel="stylesheet" href="styles.css"><link rel="icon" type="image/png" href="favicon.ico"><link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png"><link rel="manifest" href="site.webmanifest"><script type="importmap">{
|
|
2
|
+
"imports": {
|
|
3
|
+
"@toolkit/": "./vendor/okjs/toolkit/",
|
|
4
|
+
"@okjs": "./vendor/okjs/ok.esm.min.js"
|
|
5
|
+
}
|
|
6
|
+
}</script></head><body><hash-router let:router="$router"><var :$route="$router.match('./:section/*') || {params: { section: 'db' }}"><admin-route-host :section="$route?.params?.section || 'db'"></admin-route-host></var></hash-router><theme-toggle></theme-toggle><script type="module" src="admin-app.js"></script></body></html>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<script type="module">import envPicker from"../components/env-picker.ok.js";import createEnvModal from"../sections/db/modals/create-env-modal.ok.js";import demoEnvModal from"../sections/db/modals/demo-env-modal.ok.js";import eventsStore from"../stores/events-store.js";export default{tag:"default-layout",unwrap:!0,dependencies:[envPicker,createEnvModal,demoEnvModal],context:e=>({noticesExpanded:!1,dismissNotices(n){n&&(n.stopPropagation(),n.preventDefault()),e.$ok.stores.auth.dismissNotices()},hasEnvOption:n=>!!n&&(e.$ok.stores.okdb.envs||[]).some(e=>e?.name===n),syncEnvSearch(n){const o=e.$vars.$router;if(!o)return;const t=n??null;if((o._search?.env??null)===t)return;const s={...o._search||{}};t?s.env=t:delete s.env,o.replace(o.resolve(o._path||"",s,o._anchor||""))},applyEnvFromSearch(){const n=e.$vars.$router,o=n?._search?.env??null;return!(!o||!this.hasEnvOption(o))&&(e.$ok.stores.okdb.selectedEnv!==o&&e.$ok.stores.okdb.selectEnv(o),!0)},goToSection(n){const o=e.$vars.$router;if(!o)return;const t={},s=e.$ok.stores.okdb.selectedEnv;s&&(t.env=s);const r="system"===n?"/system/overview":`/${n}`;o.push(o.resolve(r,t))},async switchEnv(n){e.$ok.stores.okdb.selectEnv(n),e.$ok.shared?.toast?.info?.(`Environment: ${n}`)},async openCreateEnvModal(){await e.$ok.shared.modal.open({owner:e,title:"Create Environment",content:'<create-env-modal :modal="modal" :on-done="onDone" />',context:n=>({modal:n,onDone:async n=>{await e.$ok.stores.okdb.reloadEnvs(),e.$ok.stores.okdb.selectEnv(n),e.$ok.shared?.toast?.success?.(`Environment created: ${n}`)}})})},async openDemoModal(){await e.$ok.shared.modal.open({owner:e,title:'<span style="background:linear-gradient(135deg,#4FC1FF,#c084fc 50%,#4ade80);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;font-weight:700;font-size:15px;">✦ Demo Environment</span>',canDrag:!0,content:'<demo-env-modal :modal="modal" :on-done="onDone" />',context:n=>({modal:n,onDone:async n=>{await e.$ok.stores.okdb.reloadEnvs(),e.$ok.stores.okdb.selectEnv(n),e.$ok.shared?.toast?.success?.(`Demo environment "${n}" ready`)}})})}}),init(e){const n=()=>e.$ok.shared?.toast;e.$cache._unsubs=[eventsStore.on("type:registered",e=>n()?.info?.(`Type registered: ${e?.type??""}`)),eventsStore.on("type:drop",e=>n()?.info?.(`Type dropped: ${e?.type??""}`)),eventsStore.on("index:registered",e=>n()?.info?.(`Index registered on ${e?.type??""}: ${e?.key??""}`)),eventsStore.on("index:drop",e=>n()?.info?.(`Index dropped on ${e?.type??""}: ${e?.key??""}`)),eventsStore.on("fts:registered",e=>n()?.info?.(`FTS index created on ${e?.type??""}: ${e?.key??""}`)),eventsStore.on("fts:drop",e=>n()?.info?.(`FTS index dropped on ${e?.type??""}: ${e?.key??""}`)),eventsStore.on("env:opened",e=>n()?.info?.(`Environment ready: ${e?.name??""}`)),eventsStore.on("env:removed",e=>n()?.info?.(`Environment removed: ${e?.name??""}`)),eventsStore.on("engine:started",e=>n()?.success?.(`Engine started: ${e?.name??""}`)),eventsStore.on("engine:stopped",e=>n()?.info?.(`Engine stopped: ${e?.name??""}`)),eventsStore.on("engine:error",e=>n()?.error?.(`Engine error: ${e?.name??""}: ${e?.error??""}`)),eventsStore.on("engine:installed",e=>n()?.success?.(`Engine installed: ${e?.name??""}`)),eventsStore.on("engine:uninstalled",e=>n()?.info?.(`Engine uninstalled: ${e?.name??""}`)),eventsStore.on("embeddings:pipeline:ready",e=>n()?.success?.(`Pipeline ready: ${e?.name??""}`)),eventsStore.on("embeddings:indexer:flushed",e=>n()?.success?.(`Embeddings flushed: ${e?.name??""}`))],e.$ext("unmount",()=>{for(const n of e.$cache._unsubs||[])n();e.$cache._unsubs=[]}),this.applyEnvFromSearch()||this.syncEnvSearch(e.$ok.stores.okdb.selectedEnv??null),e.$watch(()=>e.$vars.$router?._search?.env,()=>{const n=e.$vars.$router?._search?.env??null;n&&this.hasEnvOption(n)?e.$ok.stores.okdb.selectedEnv!==n&&e.$ok.stores.okdb.selectEnv(n):this.syncEnvSearch(e.$ok.stores.okdb.selectedEnv??null)}),e.$watch(()=>e.$ok.stores.okdb.selectedEnv,()=>this.syncEnvSearch(e.$ok.stores.okdb.selectedEnv??null))}}</script><template><div class="layout"><aside class="layout__sidebar"><div class="layout__sidebar-cube"><component import="./okdb-cube.ok.html"></component><span class="layout__version">v{{ $ok.stores.okdb.info?.version ?? '…' }}</span></div><div class="layout__env-picker"><env-picker :selected="$ok.stores.okdb.selectedEnv" :envs="$ok.stores.okdb.envs || []" @change="switchEnv($event.detail)" @create="openCreateEnvModal()"/></div><div class="layout__sidebar-body"><if :="$ok.stores.okdb.selectedEnv"><slot name="sidebar"></slot></if></div><div class="layout__sidebar-footer"><div class="layout__auth-chip layout__auth-chip--sidebar" :title="$ok.stores.auth?.modeLabel || 'Authentication'"><div class="layout__auth-meta"><div class="layout__auth-userblock"><div class="layout__auth-user">{{ $ok.stores.auth?.username || 'anonymous' }}</div><if :="$ok.stores.auth?.rolesLabel"><div class="layout__auth-roles">{{ $ok.stores.auth.rolesLabel }}</div></if></div></div><if :="!$ok.stores.auth?.openAccess"><button class="layout__auth-logout" @click="$ok.stores.auth.logout()">Logout</button></if></div></div></aside><div class="layout__right-col"><nav class="layout__section-nav"><button :class="{ active: $route.params.section === 'db' }" :disabled="!$ok.stores.auth.canSection('db')" :title="$ok.stores.auth.canSection('db') ? '' : 'Requires data:read or env:read permission'" @click="$ok.stores.auth.canSection('db') && goToSection('db')"><span class="layout__nav-icon">⬡</span> DB<if :="!$ok.stores.auth.canSection('db')"><span class="layout__nav-lock">🔒</span></if></button> <button :class="{ active: $route.params.section === 'engines' || $route.params.section === 'embeddings' }" :disabled="!$ok.stores.auth.canSection('engines')" :title="$ok.stores.auth.canSection('engines') ? '' : 'Requires env:read permission'" @click="$ok.stores.auth.canSection('engines') && goToSection('engines')"><span class="layout__nav-icon">⛓</span> Engines<if :="!$ok.stores.auth.canSection('engines')"><span class="layout__nav-lock">🔒</span></if></button> <button :class="{ active: $route.params.section === 'files' }" :disabled="!$ok.stores.auth.canSection('files')" :title="$ok.stores.auth.canSection('files') ? '' : 'Requires files:read permission'" @click="$ok.stores.auth.canSection('files') && goToSection('files')"><span class="layout__nav-icon">⬚</span> Files<if :="!$ok.stores.auth.canSection('files')"><span class="layout__nav-lock">🔒</span></if></button> <button :class="{ active: $route.params.section === 'queue' }" :disabled="!$ok.stores.auth.canSection('queue')" :title="$ok.stores.auth.canSection('queue') ? '' : 'Requires queue:read permission'" @click="$ok.stores.auth.canSection('queue') && goToSection('queue')"><span class="layout__nav-icon">⇶</span> Queue<if :="!$ok.stores.auth.canSection('queue')"><span class="layout__nav-lock">🔒</span></if></button> <button :class="{ active: $route.params.section === 'functions' }" :disabled="!$ok.stores.auth.canSection('functions')" :title="$ok.stores.auth.canSection('functions') ? '' : 'Requires functions:read permission'" @click="$ok.stores.auth.canSection('functions') && goToSection('functions')"><span class="layout__nav-icon">ƒ</span> Functions<if :="!$ok.stores.auth.canSection('functions')"><span class="layout__nav-lock">🔒</span></if></button> <button :class="{ active: $route.params.section === 'views' }" @click="goToSection('views')"><span class="layout__nav-icon">⊞</span> Views</button> <button :class="{ active: $route.params.section === 'system' }" :disabled="!$ok.stores.auth.canSection('system')" :title="$ok.stores.auth.canSection('system') ? '' : 'Requires system:read permission'" @click="$ok.stores.auth.canSection('system') && goToSection('system')"><span class="layout__nav-icon">⚙</span> System<if :="!$ok.stores.auth.canSection('system')"><span class="layout__nav-lock">🔒</span></if></button><div class="layout__live-indicator" :title="$ok.stores.events?.connected ? 'Event stream live' : 'Event stream disconnected'"><span :class="$ok.stores.events?.connected ? 'layout__live-dot layout__live-dot--on' : 'layout__live-dot layout__live-dot--off'"></span> <span class="layout__live-label">{{ $ok.stores.events?.connected ? 'Live' : 'Off' }}</span></div><div class="layout__security-pill" :title="($ok.stores.auth?.modeLabel || 'Authentication') + ' · ' + ($ok.stores.auth?.username || 'anonymous')"><span class="layout__security-dot" :class="$ok.stores.auth?.openAccess ? 'layout__security-dot layout__security-dot--open' : 'layout__security-dot layout__security-dot--secure'"></span> <span class="layout__security-label">{{ $ok.stores.auth?.openAccess ? 'Open access' : 'Secure' }}</span></div></nav><div class="layout__main"><if :="$ok.stores.auth?.visibleNotices?.length > 0"><div class="layout__notices"><div class="layout__notices-bar" @click="noticesExpanded = !noticesExpanded"><span class="layout__notices-icon">⚠</span> <span class="layout__notices-summary">{{ $ok.stores.auth.visibleNotices.length }} security notice{{ $ok.stores.auth.visibleNotices.length > 1 ? 's' : '' }}<if :="$ok.stores.auth.visibleNotices[0]">· {{ $ok.stores.auth.visibleNotices[0].title }}<if :="$ok.stores.auth.visibleNotices.length > 1">and {{ $ok.stores.auth.visibleNotices.length - 1 }} more</if></if></span><span class="layout__notices-chevron">{{ noticesExpanded ? '▴' : '▾' }}</span> <button class="layout__notices-dismiss" @click="dismissNotices($event)" title="Dismiss for this session">✕</button></div><if :="noticesExpanded"><div class="layout__notices-detail"><each :of="$ok.stores.auth.visibleNotices" let:item="n"><div class="layout__notice-item"><div class="layout__notice-title">{{ n.title }}</div><div class="layout__notice-msg">{{ n.message }}</div><if :="n.hint"><div class="layout__notice-hint">{{ n.hint }}</div></if><if :="n.action"><a class="layout__notice-action" :href="n.action.href">{{ n.action.label }} →</a></if></div></each></div></if></div></if><header class="layout__header"><slot name="header"></slot></header><main class="layout__content"><if :="$ok.stores.okdb.selectedEnv"><slot></slot></if><if :="!$ok.stores.okdb.selectedEnv"><div class="layout__no-env"><div class="layout__no-env-icon">⬡</div><div class="layout__no-env-title">No environment selected</div><div class="layout__no-env-sub">Create a new environment or load the demo to get started.</div><div class="layout__no-env-actions"><button @click="openCreateEnvModal()" class="layout__no-env-btn">+ Create environment</button> <button @click="openDemoModal()" class="layout__no-env-btn layout__no-env-btn--demo">✦ Load demo</button></div></div></if></main></div></div></div></template><style>.layout{display:flex;flex-direction:row;height:100%;width:100%;min-height:0}.layout__sidebar{display:flex;flex-direction:column;width:210px;flex-shrink:0;border-right:1px solid var(--okdb-app-surface-2);background:var(--okdb-app-bg-deep);overflow:visible}.layout__sidebar-cube{height:150px;flex-shrink:0;display:flex;align-items:center;justify-content:center;position:relative}.layout__version{position:absolute;bottom:8px;right:10px;font-size:10px;font-family:monospace;color:var(--okdb-app-fg-faint);letter-spacing:.04em;pointer-events:none;user-select:none;transition:color .2s}.layout__sidebar-cube:hover .layout__version{color:var(--okdb-app-fg-subtle)}.layout__env-picker{flex-shrink:0;padding:8px 10px 6px;border-top:1px solid var(--okdb-app-surface-2);border-bottom:1px solid var(--okdb-app-surface-2)}.layout__sidebar-body{flex:1;min-height:0;display:flex;flex-direction:column;gap:3px;padding:10px;border-top:1px solid var(--okdb-app-surface-2);overflow-y:auto;overflow-x:visible}.layout__sidebar-footer{flex-shrink:0;padding:8px 10px 10px;border-top:1px solid var(--okdb-app-surface-2);background:var(--okdb-app-bg-deep)}.layout__right-col{flex:1;min-width:0;display:flex;flex-direction:column;min-height:0}.layout__section-nav{display:flex;flex-direction:row;align-items:flex-end;height:150px;padding:0 8px;flex-shrink:0;background:var(--okdb-app-bg-deep);border-bottom:1px solid var(--okdb-app-surface-2)}.layout__section-nav button{display:flex;align-items:center;gap:7px;padding:0 16px;height:44px;border-radius:0;font-size:13px;font-weight:500;background:0 0;border:none;border-bottom:2px solid transparent;color:var(--okdb-app-fg-subtle);cursor:pointer;white-space:nowrap;letter-spacing:.01em;transition:color .15s,border-color .15s,background .15s;margin-bottom:-1px}.layout__section-nav button:hover{background:rgba(255,255,255,.03);border-color:transparent;color:var(--okdb-app-fg-muted);border-bottom-color:var(--okdb-app-border-subtle);transform:none;box-shadow:none}.layout__section-nav button:disabled{opacity:.35;cursor:not-allowed;background:0 0!important;border-color:transparent!important;border-bottom-color:transparent!important;color:var(--okdb-app-fg-faint)!important}.layout__section-nav button:disabled:hover{background:0 0;transform:none;box-shadow:none}.layout__section-nav button.active{background:0 0;border-color:transparent;color:var(--okdb-accent);border-bottom-color:var(--okdb-accent)}.layout__nav-icon{font-size:14px;opacity:.7;flex-shrink:0}.layout__nav-lock{font-size:10px;margin-left:4px;opacity:.7;flex-shrink:0;vertical-align:middle}.layout__section-nav button:hover .layout__nav-icon{opacity:.9}.layout__section-nav button.active .layout__nav-icon{opacity:1}.layout__live-indicator{margin-left:auto;margin-right:8px;margin-bottom:11px;display:flex;align-items:center;gap:5px;cursor:default}.layout__live-dot{width:7px;height:7px;border-radius:50%;display:inline-block;flex-shrink:0}.layout__live-dot--on{background:var(--okdb-success);box-shadow:0 0 5px color-mix(in srgb,var(--okdb-success) 40%,transparent);animation:nav-pulse 2.5s ease-in-out infinite}.layout__live-dot--off{background:var(--okdb-danger);opacity:.6}.layout__live-label{font-size:10px;color:var(--okdb-app-fg-faint);letter-spacing:.04em;text-transform:uppercase}@keyframes nav-pulse{0%,100%{opacity:1}50%{opacity:.35}}.layout__security-pill{margin-bottom:9px;display:inline-flex;align-items:center;gap:7px;padding:6px 10px;border-radius:999px;border:1px solid var(--okdb-app-border);background:var(--okdb-app-bg);color:var(--okdb-app-fg-muted)}.layout__security-dot{width:7px;height:7px;border-radius:50%;display:inline-block;flex-shrink:0}.layout__security-dot--secure{background:var(--okdb-accent);box-shadow:0 0 6px var(--okdb-accent-soft-border)}.layout__security-dot--open{background:var(--okdb-warning);box-shadow:0 0 6px color-mix(in srgb,var(--okdb-warning) 33%,transparent)}.layout__security-label{font-size:10px;line-height:1;text-transform:uppercase;letter-spacing:.08em;white-space:nowrap}.layout__auth-chip{margin-bottom:9px;display:inline-flex;align-items:center;gap:10px;padding:6px 10px;border-radius:10px;border:1px solid var(--okdb-app-border);background:var(--okdb-app-bg)}.layout__auth-chip--sidebar{width:100%;margin-bottom:0;align-items:center;justify-content:space-between;gap:12px;padding:0;border-radius:0;background:0 0;border:none;box-shadow:none}.layout__auth-meta{display:flex;align-items:center;gap:0;min-width:0;flex:1}.layout__auth-userblock{display:flex;flex-direction:column;min-width:0}.layout__auth-badge{font-size:10px;line-height:1;text-transform:uppercase;letter-spacing:.05em;padding:4px 7px;border-radius:999px;border:1px solid transparent;white-space:nowrap}.layout__auth-badge--open{color:var(--okdb-success);background:#4ade8011;border-color:#4ade8033}.layout__auth-badge--users{color:var(--okdb-accent);background:#4fc1FF11;border-color:#4fc1FF33}.layout__auth-user{font-size:11px;font-weight:600;color:var(--okdb-app-fg);line-height:1.1;text-transform:uppercase;letter-spacing:.05em}.layout__auth-roles{font-size:10px;color:var(--okdb-app-fg-muted);line-height:1.1;margin-top:2px;max-width:160px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layout__auth-logout{font-size:11px;padding:0;border-radius:0;border:none;background:0 0;color:var(--okdb-danger);cursor:pointer;white-space:nowrap;align-self:center;letter-spacing:.04em;text-transform:uppercase;opacity:.88}.layout__auth-logout:hover{background:0 0;color:var(--okdb-danger-hover);opacity:1;transform:none;box-shadow:none}.layout__main{flex:1;display:flex;flex-direction:column;min-height:0;overflow:auto;padding:20px 24px 6px}.layout__header{flex-shrink:0}.layout__content{flex:1;min-height:0;min-width:0}.layout__content>*{animation:layout-fade-in .2s ease backwards}.layout__sidebar-body>*{animation:layout-fade-in .18s ease backwards}@keyframes layout-fade-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.layout__no-env{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:12px;animation:layout-fade-in .25s ease backwards}.layout__no-env-icon{font-size:48px;opacity:.12;line-height:1;margin-bottom:4px}.layout__no-env-title{font-size:18px;font-weight:600;color:var(--okdb-app-fg-muted)}.layout__no-env-sub{font-size:13px;color:var(--okdb-app-fg-subtle);text-align:center;max-width:320px;line-height:1.6}.layout__no-env-actions{display:flex;gap:10px;margin-top:8px}.layout__no-env-btn{padding:8px 18px;font-size:13px;border-radius:7px;border:1px solid var(--okdb-app-border);background:var(--okdb-app-surface);color:var(--okdb-app-fg-subtle);cursor:pointer;transition:background .12s,border-color .12s,color .12s}.layout__no-env-btn:hover{background:var(--okdb-app-surface-2);border-color:var(--okdb-app-border-strong);color:var(--okdb-app-fg-muted);transform:none;box-shadow:none}.layout__no-env-btn--demo{border-color:var(--okdb-accent-2-soft-border);background:var(--okdb-accent-2-soft-bg);color:var(--okdb-accent-2)}.layout__no-env-btn--demo:hover{background:var(--okdb-accent-2-soft-bg);border-color:var(--okdb-accent-2-soft-border);color:var(--okdb-accent-2);transform:none;box-shadow:none}.layout__notices{flex-shrink:0;margin:-20px -24px 16px;border-bottom:1px solid color-mix(in srgb,var(--okdb-warning) 22%,transparent);background:color-mix(in srgb,var(--okdb-warning) 5%,transparent)}.layout__notices-bar{display:flex;align-items:center;gap:10px;padding:9px 16px;cursor:pointer;user-select:none;transition:background .12s}.layout__notices-bar:hover{background:color-mix(in srgb,var(--okdb-warning) 9%,transparent)}.layout__notices-icon{font-size:15px;color:var(--okdb-warning);flex-shrink:0}.layout__notices-summary{font-size:12px;color:var(--okdb-warning-text);flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layout__notices-chevron{font-size:14px;color:var(--okdb-warning-text);flex-shrink:0;line-height:1}.layout__notices-dismiss{font-size:14px;color:var(--okdb-warning-text);background:0 0;border:none;cursor:pointer;padding:3px 7px;border-radius:4px;flex-shrink:0;line-height:1;transition:color .1s,background .1s}.layout__notices-dismiss:hover{color:var(--okdb-warning);background:color-mix(in srgb,var(--okdb-warning) 15%,transparent)}.layout__notices-detail{padding:0 16px 14px;display:flex;flex-direction:column;gap:10px}.layout__notice-item{padding:12px 14px;border:1px solid color-mix(in srgb,var(--okdb-warning) 20%,transparent);border-radius:6px;background:color-mix(in srgb,var(--okdb-warning) 5%,transparent);display:flex;flex-direction:column;gap:6px}.layout__notice-title{font-size:13px;font-weight:600;color:var(--okdb-warning)}.layout__notice-msg{font-size:12px;color:var(--okdb-warning-text);line-height:1.55}.layout__notice-hint{font-size:12px;color:var(--okdb-warning-text);line-height:1.55;font-style:italic}.layout__notice-action{font-size:12px;color:var(--okdb-accent);text-decoration:none;margin-top:2px;display:inline-block}.layout__notice-action:hover{text-decoration:underline}</style>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<script>export default{tag:"okdb-cube",mounted(e){const t=e.$el,n=t.querySelector(".cube"),o=t.querySelector(".okdb-wrapper"),i=n.querySelector(".core-glow"),r=n.querySelector(".core-light");n.classList.add("idle");let a=!1,s=null,l=0,c=0,u=-15,d=45,m=0,y=0,p=null;const v=e=>Math.max(-75,Math.min(75,e));function f(){p&&(cancelAnimationFrame(p),p=null)}function L(){n.style.transform=`rotateX(${u}deg) rotateY(${d}deg)`;const e=`rotateY(${-d}deg) rotateX(${-u}deg)`;i.style.transform=`${e} translateZ(0px)`,r.style.transform=`${e} translateZ(10px)`}function b(){const e=Math.abs(m)+Math.abs(y),t=Math.min(2.5,1+.08*e);o.style.setProperty("--energy",t.toFixed(2))}function g(e){a=!0,s=e.pointerId,o.setPointerCapture(s),f(),l=e.clientX,c=e.clientY,m=y=0,n.classList.remove("idle"),n.style.animation="none",i.style.animation="none",r.style.animation="none",o.style.animation="none"}function h(e){if(!a||e.pointerId!==s)return;const t=e.clientX-l,n=e.clientY-c;l=e.clientX,c=e.clientY,m=.4*t,y=.4*n,d+=m,u=v(u-y),L(),b()}function E(e){if(!a||e.pointerId!==s)return;a=!1,o.releasePointerCapture(s),s=null;!function e(){m*=.92,y*=.92,d+=m,u=v(u-y),u+=.06*(-15-u),d+=.06*(45-d),L(),b(),Math.abs(m)+Math.abs(y)>.12?p=requestAnimationFrame(e):(o.style.setProperty("--energy","1"),n.style.transition="transform 1s cubic-bezier(0.175, 0.885, 0.32, 1.15)",u=-15,d=45,L(),setTimeout(()=>{n.style.transition="none",n.classList.add("idle"),n.style.animation="",i.style.animation="",r.style.animation="",o.style.animation=""},1e3),p=null)}()}o.addEventListener("pointerdown",g),o.addEventListener("pointermove",h),o.addEventListener("pointerup",E),o.addEventListener("pointercancel",E),e.$ext("unmount",()=>{f(),o.removeEventListener("pointerdown",g),o.removeEventListener("pointermove",h),o.removeEventListener("pointerup",E),o.removeEventListener("pointercancel",E)})}}</script><template><div class="okdb-wrapper" style="--energy:1"><div class="cube-container"><div class="cube"><div class="core-light"></div><div class="core-glow"></div><div class="face front"><svg class="logo"><use href="#okdb-logo"/></svg></div><div class="face back"><svg class="logo"><use href="#okdb-logo"/></svg></div><div class="face right"><svg class="logo"><use href="#okdb-logo"/></svg></div><div class="face left"><svg class="logo"><use href="#okdb-logo"/></svg></div><div class="face top"><svg class="logo"><use href="#okdb-logo"/></svg></div><div class="face bottom"><svg class="logo"><use href="#okdb-logo"/></svg></div></div></div><div class="underglow-system"><div class="light-spill"></div></div><svg style="display:none"><symbol id="okdb-logo" viewBox="330 120 330 425"><path d="M428.062 313.837c5.695 6.112 4.378 13.108 3.833 21.705-6.767-6.329-16.863-6.237-19.448-16.383-1.193-4.685-7.473-7.788-12.087-6.534-5.25 1.426-8.191 6.404-7.13 12.068.928 4.95 5.508 8.698 10.558 7.727 3.365-.647 5.68.395 8.297 2.03 15.819 9.883 31.655 19.74 47.607 29.406 3.852 2.334 5.699 5.288 5.652 9.725-.086 8.122-.025 16.245-.025 25.06-5.645-1.53-9.614-4.637-13.833-7.054-23.99-13.74-47.853-27.698-71.814-41.487-2.739-1.577-4.044-3.377-4.037-6.69.098-45.151.066-90.302.09-135.453.001-1.453-.347-3.006 1.194-4.98 6.198 3.44 12.573 6.857 18.835 10.471 35.772 20.646 71.493 41.381 107.318 61.935 3.023 1.734 4.2 3.605 4.194 7.045-.08 44.65-.03 89.302-.043 133.953 0 1.77.437 3.673-.896 5.282-2.078.733-3.483-.752-4.996-1.612-6.517-3.701-12.813-7.837-19.52-11.142-4.643-2.287-6.091-5.725-6.099-10.364-.015-8.997-.106-17.995 0-26.99.075-6.23-2.355-10.869-7.738-14.092-7-4.193-13.803-8.727-20.897-12.75-3.35-1.9-4.718-4.16-4.47-7.986.301-4.645.117-9.326.049-13.99-.03-2.087.537-3.761 1.86-5.475 3.604-4.666 3.751-9.465.408-13.2-3.01-3.36-6.715-4.872-11.199-2.843-4.967 2.248-6.903 6.336-5.663 12.618m60.624 44.857 4.67 5.634 1.42-.89c.405-10.385.762-20.781-.217-31.167-.286-3.025-2.704-4.863-5.16-6.4-5.217-3.267-10.348-6.69-15.711-9.7-3.309-1.855-4.822-4.35-4.824-8.023-.003-5.329-.127-10.657-.12-15.985.006-5.421-1.98-9.404-6.927-12.263-16.288-9.41-32.414-19.1-48.59-28.705-7.39-4.388-14.749-8.826-22.187-13.281-1.31 2.325-.554 4.167.195 6.009 2.549 6.266 6.907 10.793 12.8 14.125 13.333 7.537 26.1 16.248 39.944 22.651 12.487 5.776 16.897 14.214 15.032 27.17-1.069 7.428 1.713 12.93 8.847 16.124 2.703 1.21 4.892 3.585 7.606 4.751 8.26 3.547 11.128 9.599 9.85 18.314-.57 3.896-.679 8.08 3.372 11.636m70.236-103.827c30.283-17.375 60.242-34.579 90.16-51.759 1.691 2.442 1.21 4.329 1.217 6.105.047 11.33-.206 22.667.097 33.989.243 9.108-3.744 15.932-10.952 20.604-16.63 10.78-33.572 21.074-50.34 31.642-2.094 1.32-4.126.875-6.26.628-5.825-.674-10.193 2.427-11.354 8.04-1.025 4.96 1.91 9.754 6.881 11.234 5.146 1.532 10.614-1.161 12.237-6.56.876-2.912 2.78-4.393 5.066-5.798 14.617-8.986 29.204-18.02 43.871-26.924 3.431-2.083 6.485-4.587 9.21-7.339 2.268.933 1.567 2.68 1.57 4.004.046 23.66-.02 47.32.078 70.98.013 3.084-1.146 4.845-3.748 6.342-38.258 22.003-76.462 44.099-114.717 66.107-3.118 1.794-5.88 4.325-9.365 5.265-2.076-1.786-1.462-3.92-1.45-5.827.123-18.822.452-37.644.445-56.465-.008-23.132-.132-46.267-.52-69.395-.142-8.501 1.144-14.994 10.307-18.99 9.549-4.166 18.2-10.388 27.567-15.883m8.19 19.798c-6.077 3.778-12.083 7.68-18.256 11.294-4.5 2.634-6.528 6.46-6.577 11.5-.066 6.825-.288 13.659-.037 20.474.16 4.35-.974 8.05-4.327 10.626-6.861 5.27-4.45 12.202-4.508 20.175 4.205-6.167 8.242-10.62 12.94-14.314 4.51-3.545 6.139-8.14 6.23-13.508.116-6.824.19-13.654.01-20.474-.099-3.793 1.432-6.14 4.632-8.067 10.694-6.437 21.277-13.06 31.866-19.67 4.215-2.632 8.037-5.296 13.75-4.092 4.8 1.012 8.998-3.134 9.79-7.966.803-4.897-1.91-9.421-6.586-10.986-4.793-1.603-10.264.043-11.763 4.72-1.524 4.757-4.959 6.762-8.643 8.987-5.984 3.613-11.93 7.287-18.52 11.301m63.18 40.521c-5.96-5.573-14.618-2.323-16.383 3.75-1.184 4.075-3.791 5.863-6.959 7.78a14037 14037 0 0 0-63.915 38.908c-6.241 3.823-9.668 12.069-7.822 17.745 26.016-17.85 53.419-33.607 80.177-50.384 1.663-1.042 3.329-1.438 5.21-.925 4.833 1.319 8.582-.54 11.24-4.388 2.836-4.102 1.911-8.19-1.548-12.486m-84.65-68.459c-9.697 5.59-19.14 10.888-28.433 16.439-2.768 1.654-4.873 1.744-7.742.075-27.788-16.166-55.675-32.163-83.51-48.246-2.41-1.392-5.036-2.562-6.69-4.818-.106-1.47.927-1.834 1.768-2.304 15.126-8.433 30.282-16.812 45.362-25.325 2.195-1.24 4.102-1.576 6.576-.9 4.81 1.314 9.654-1.367 11.26-5.825 1.639-4.542-.47-9.77-4.791-11.875-4.475-2.18-10.956-.912-12.577 3.62-1.913 5.349-6.147 7.12-10.304 9.417-14.87 8.214-29.807 16.306-44.611 24.636-3.314 1.864-6.08 2.08-9.203-.146-3.847-2.741-8.59-4.2-12.471-8.33 7.187-4.28 13.822-8.31 20.532-12.211 32.966-19.172 65.972-38.275 98.891-57.527 2.567-1.501 4.401-1.324 6.817.079 38.59 22.409 77.222 44.743 115.838 67.107 1.274.738 2.724 1.337 3.567 3.976-29.858 17.245-59.913 34.603-90.279 52.158m-59.159-52.652c-4.558 2.422-9.107 4.862-13.679 7.26-1.607.842-3.232 2.05-5.15 1.449-7.949-2.489-14.074 1.724-21.67 5.79 8.817 2.455 12.479 13.069 22.94 10.253 1.244-.335 3.053 1.063 4.486 1.86 9.747 5.429 19.5 10.85 29.173 16.406 4.028 2.313 7.718 2.267 11.718-.143 8.985-5.413 18.149-10.526 27.132-15.941 3.13-1.887 6.178-2.693 9.89-2.342 6.016.57 10.07-2.89 10.88-8.558.651-4.563-2.539-9.036-7.441-10.433-5.072-1.445-9.917.998-11.82 6.4-.91 2.585-2.444 4.146-4.73 5.425-8.718 4.878-17.425 9.782-26.025 14.865-2.937 1.736-5.398 1.723-8.338.003-7.33-4.287-14.827-8.286-22.214-12.475-1.495-.848-3.64-.981-4.203-3.636 8.9-4.653 17.899-9.273 26.806-14.061 2.782-1.495 5.42-2.016 8.573-1.292 5 1.146 9.221-1.36 10.66-5.858 1.594-4.978-.434-9.638-5.055-11.619-4.61-1.976-10.054-.603-12.076 3.782-1.484 3.22-3.85 4.795-6.72 6.204-4.185 2.056-8.325 4.203-13.137 6.66m74.309-7.428c8.665 5.276 17.38 10.471 25.976 15.857 4.836 3.03 8.046 2.708 12.508-1.897-2.106-3.289-5.186-5.486-8.492-7.45-20.018-11.894-40.013-23.824-60.06-35.668-2.644-1.562-4.616-3.204-5.748-6.368-1.8-5.03-7.57-7.228-12.389-5.453-4.44 1.637-7.056 6.818-5.748 11.384 1.621 5.66 6.193 8.658 11.74 7.21 2.494-.65 4.403-.417 6.558.898 11.64 7.1 23.347 14.086 35.655 21.487" fill="currentColor"/><text fill="currentColor" x="365" y="540" font-family="monospace" letter-spacing="-4" font-size="130" font-weight="bolder">OKDB</text></symbol></svg></div></template><style>.okdb-wrapper{--cube-size:90px;--brand-blue:#00a2ff;--glow-color:rgba(0, 162, 255, calc(0.35 * var(--energy)));width:150px;height:150px;perspective:1000px;display:flex;justify-content:center;align-items:center;user-select:none;touch-action:none;overflow:hidden}.cube-container{width:var(--cube-size);height:var(--cube-size);transform-style:preserve-3d;cursor:grab;position:relative;z-index:2}.cube{width:100%;height:100%;position:relative;transform-style:preserve-3d}@keyframes idle-spin{from{transform:rotateX(-15deg) rotateY(45deg)}to{transform:rotateX(-15deg) rotateY(405deg)}}@keyframes idle-counter-spin{from{transform:rotateY(-45deg) rotateX(15deg) translateZ(-18px)}to{transform:rotateY(-405deg) rotateX(15deg) translateZ(-18px)}}.cube{animation:none}.cube.idle{animation:idle-spin 20s linear infinite}.cube.idle .core-glow,.cube.idle .core-light{animation:idle-counter-spin 20s linear infinite}.face{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgb(133 152 166 / calc(.18 + var(--energy) * .06));border:2px solid rgba(0,162,255,.45);box-shadow:inset 0 0 18px rgba(0,162,255,.25),0 0 22px var(--glow-color);backface-visibility:visible}.logo{width:70%;height:70%;color:#fff;filter:drop-shadow(0 0 6px var(--brand-blue))}.front{transform:rotateY(0) translateZ(calc(var(--cube-size)/ 2))}.back{transform:rotateY(180deg) translateZ(calc(var(--cube-size)/ 2))}.right{transform:rotateY(90deg) translateZ(calc(var(--cube-size)/ 2))}.left{transform:rotateY(-90deg) translateZ(calc(var(--cube-size)/ 2))}.top{transform:rotateX(90deg) translateZ(calc(var(--cube-size)/ 2))}.bottom{transform:rotateX(-90deg) translateZ(calc(var(--cube-size)/ 2))}.core-glow{position:absolute;inset:18%;background:var(--brand-blue);border-radius:50%;filter:blur(26px);opacity:calc(.8 * var(--energy));transform:translateZ(-26px) scale(1);pointer-events:none}.core-light{position:absolute;inset:32%;background:#fff;border-radius:50%;filter:blur(12px);width:60px;height:60px;opacity:calc(1 * var(--energy));transform:translateZ(-14px);pointer-events:none}.underglow-system{position:absolute;bottom:-10px;width:160px;height:160px;transform-style:preserve-3d;transform:translateZ(-80px) rotateX(75deg);pointer-events:none;z-index:1}.core-glow{transform:translateZ(-18px);opacity:calc(.5 + 1 * var(--energy))}.core-light{transform:translateZ(-8px)}.core-glow,.core-light{transform-style:preserve-3d}.light-spill{position:absolute;inset:0;background:radial-gradient(circle,var(--brand-blue),transparent 70%);filter:blur(18px);opacity:calc(.8 * var(--energy))}.cube-container:active{cursor:grabbing}@property --energy{syntax:'<number>';inherits:true;initial-value:1}@keyframes pulse-energy{0%,100%{--energy:0.3}50%{--energy:1}}.okdb-wrapper{overflow:visible;animation:pulse-energy 4s ease-in-out infinite}.underglow-system{bottom:-80px;transform:translateZ(-120px) rotateX(90deg)}</style>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const _0x1ecd4f=_0x4c09;(function(_0x1bb25e,_0x494c13){const _0x535cec=_0x4c09,_0x4494aa=_0x1bb25e();while(!![]){try{const _0x3bdcf0=-parseInt(_0x535cec(0x113))/0x1*(parseInt(_0x535cec(0x114))/0x2)+-parseInt(_0x535cec(0x10e))/0x3+-parseInt(_0x535cec(0x12a))/0x4*(parseInt(_0x535cec(0xe7))/0x5)+-parseInt(_0x535cec(0x110))/0x6*(parseInt(_0x535cec(0x11b))/0x7)+-parseInt(_0x535cec(0x107))/0x8+-parseInt(_0x535cec(0xee))/0x9*(-parseInt(_0x535cec(0x104))/0xa)+parseInt(_0x535cec(0x125))/0xb;if(_0x3bdcf0===_0x494c13)break;else _0x4494aa['push'](_0x4494aa['shift']());}catch(_0xf8e138){_0x4494aa['push'](_0x4494aa['shift']());}}}(_0x500b,0xeafe3));function _0x4c09(_0xb741fb,_0x5b629f){_0xb741fb=_0xb741fb-0xe3;const _0x500be1=_0x500b();let _0x4c09ba=_0x500be1[_0xb741fb];return _0x4c09ba;}const params=new URLSearchParams(window[_0x1ecd4f(0xe9)]['search']),error=params[_0x1ecd4f(0xfc)]('error'),redirect=params[_0x1ecd4f(0xfc)](_0x1ecd4f(0x10b))||'/admin/index.html';if(error){const e=document[_0x1ecd4f(0x100)]('errorBox');e[_0x1ecd4f(0xf9)]=!0x1,e[_0x1ecd4f(0xfb)]=error;}async function loadConfig(){const _0x2b9fb9=_0x1ecd4f,_0x3938d4=await fetch(_0x2b9fb9(0x101),{'credentials':_0x2b9fb9(0x12d)}),_0x4876b9=(await _0x3938d4[_0x2b9fb9(0xeb)]()[_0x2b9fb9(0xf7)](()=>({})))[_0x2b9fb9(0x109)]||{};if(_0x4876b9[_0x2b9fb9(0x10a)])return void window[_0x2b9fb9(0xe9)][_0x2b9fb9(0x121)](_0x2b9fb9(0xe5));if(_0x4876b9[_0x2b9fb9(0x127)])return void window[_0x2b9fb9(0xe9)][_0x2b9fb9(0x121)](_0x2b9fb9(0x11f));const _0x407bd2=document['getElementById']('loginStack'),_0x4b96f6=document['getElementById'](_0x2b9fb9(0x102)),_0x350a03=document[_0x2b9fb9(0x100)](_0x2b9fb9(0x108)),_0x173d5f=document[_0x2b9fb9(0x100)](_0x2b9fb9(0x122)),_0x24773d=document[_0x2b9fb9(0x100)](_0x2b9fb9(0x119)),_0x545130=document['getElementById'](_0x2b9fb9(0xfa)),_0x22ae9e=document[_0x2b9fb9(0x100)](_0x2b9fb9(0xf2)),_0x4b69da=!!_0x4876b9[_0x2b9fb9(0x10f)]?.[_0x2b9fb9(0xea)],_0x4e0c49=!!_0x4876b9[_0x2b9fb9(0xf6)]?.[_0x2b9fb9(0xea)];if(_0x4b96f6[_0x2b9fb9(0xf9)]=!_0x4b69da,_0x350a03[_0x2b9fb9(0xf9)]=!_0x4e0c49,_0x173d5f['hidden']=!(_0x4b69da&&_0x4e0c49),_0x407bd2[_0x2b9fb9(0xf9)]=!(_0x4b69da||_0x4e0c49),_0x4e0c49){const _0x440b24=_0x4876b9[_0x2b9fb9(0xf6)]?.[_0x2b9fb9(0xf8)]||'Use\x20a\x20provider';_0x24773d[_0x2b9fb9(0xfb)]=_0x440b24,_0x545130['textContent']=_0x440b24,document[_0x2b9fb9(0x100)](_0x2b9fb9(0x134))[_0x2b9fb9(0x11c)]=_0x2b9fb9(0x130)+encodeURIComponent(redirect);}_0x22ae9e[_0x2b9fb9(0xfb)]=_0x4b69da&&!_0x4e0c49?_0x2b9fb9(0xf1):!_0x4b69da&&_0x4e0c49?'Use\x20your\x20organization\x20account.\x20API\x20and\x20MCP\x20clients\x20should\x20use\x20OAuth\x20access\x20tokens\x20directly.':_0x4b69da&&_0x4e0c49?_0x2b9fb9(0x12e):_0x2b9fb9(0x117);}function showError(_0x3ce356){const _0x137ca3=_0x1ecd4f,_0x1d56cd=document['getElementById']('errorBox');_0x1d56cd[_0x137ca3(0xf9)]=!0x1,_0x1d56cd[_0x137ca3(0xfb)]=_0x3ce356;}function _0x500b(){const _0x232ad7=['pickerSection','getElementById','/admin/login/config','basicForm','click','2840iJkZUN','/auth/login','slice','1614792ybWPAl','oauthWrap','data','openAccess','redirect','user','message','2505198QImtIL','login','839118YfuWeS','<span\x20class=\x22picker-item-label\x22>','type','1AExjLn','3685602RfqArW','isArray','application/json','No\x20login\x20method\x20is\x20configured.','Login\x20failed','providerLabel','error','77mtzjmG','href','</span>','short','/admin/setup.html','addEventListener','replace','divider','join','picker-item','61757663NANccr','numeric','bootstrap','/auth/login/select','stringify','3839564uXmkVQ','result','POST','same-origin','Sign\x20in\x20with\x20local\x20admin\x20credentials\x20or\x20continue\x20with\x20your\x20configured\x20provider.','password','/admin/auth/start?redirect=','value','appendChild','\x20·\x20','loginButton','button','errorBox','...','/admin/index.html','submit','5OQXAps','length','location','enabled','json','pickerList','tokenId','23013OEFgOf','Selection\x20failed','preventDefault','Use\x20your\x20local\x20admin\x20credentials\x20to\x20create\x20a\x20secure\x20browser\x20session.','noteBox','createdAt','className','</span><span\x20class=\x22picker-item-meta\x22>','oauth','catch','label','hidden','providerButtonLabel','textContent','get','toLocaleDateString','Failed\x20to\x20load\x20login\x20methods'];_0x500b=function(){return _0x232ad7;};return _0x500b();}function formatDate(_0x103ac0){const _0x26330f=_0x1ecd4f;return _0x103ac0?new Date(_0x103ac0)[_0x26330f(0xfd)](void 0x0,{'year':_0x26330f(0x126),'month':_0x26330f(0x11e),'day':'numeric'}):'';}function formatPermissions(_0xd3b40b){const _0x240685=_0x1ecd4f;if(!Array[_0x240685(0x115)](_0xd3b40b)||0x0===_0xd3b40b[_0x240685(0xe8)])return'';const _0x5a5901=_0xd3b40b[_0x240685(0x123)](',\x20');return _0x5a5901[_0x240685(0xe8)]>0x28?_0x5a5901[_0x240685(0x106)](0x0,0x25)+_0x240685(0xe4):_0x5a5901;}document[_0x1ecd4f(0x100)](_0x1ecd4f(0x102))[_0x1ecd4f(0x120)](_0x1ecd4f(0xe6),async _0x45bae2=>{const _0x662819=_0x1ecd4f;_0x45bae2[_0x662819(0xf0)]();const _0x289fde=document[_0x662819(0x100)](_0x662819(0x10c))[_0x662819(0x131)],_0x236c5a=document[_0x662819(0x100)](_0x662819(0x12f))[_0x662819(0x131)],_0x13efc2=await fetch(_0x662819(0x105),{'method':_0x662819(0x12c),'headers':{'content-type':'application/json'},'credentials':_0x662819(0x12d),'body':JSON[_0x662819(0x129)]({'username':_0x289fde,'password':_0x236c5a})}),_0x42bd9f=await _0x13efc2['json']()['catch'](()=>({}));if(!_0x13efc2['ok'])return void showError(_0x42bd9f?.[_0x662819(0x11a)]?.['message']||_0x42bd9f?.[_0x662819(0x11a)]||_0x42bd9f?.[_0x662819(0x12b)]?.['error']||_0x662819(0x118));const _0x45accd=_0x42bd9f?.[_0x662819(0x109)];if(_0x45accd?.['ambiguous']){document[_0x662819(0x100)](_0x662819(0x102))['hidden']=!0x0,document['getElementById'](_0x662819(0xff))[_0x662819(0xf9)]=!0x1;const _0x4a7521=document['getElementById'](_0x662819(0xec));_0x4a7521['innerHTML']='';for(const _0x1516e0 of _0x45accd['tokens']||[]){const _0x1dbd3f=document['createElement'](_0x662819(0x135));_0x1dbd3f[_0x662819(0x112)]=_0x662819(0x135),_0x1dbd3f[_0x662819(0xf4)]=_0x662819(0x124);const _0x2871e6=formatPermissions(_0x1516e0['permissions']),_0x239484=formatDate(_0x1516e0[_0x662819(0xf3)]);_0x1dbd3f['innerHTML']=_0x662819(0x111)+(_0x1516e0[_0x662819(0xf8)]||'(unset)')+_0x662819(0xf5)+_0x2871e6+(_0x2871e6&&_0x239484?_0x662819(0x133):'')+_0x239484+_0x662819(0x11d),_0x1dbd3f[_0x662819(0x120)](_0x662819(0x103),async()=>{const _0x5b52ab=_0x662819,_0x55b007=await fetch(_0x5b52ab(0x128),{'method':_0x5b52ab(0x12c),'headers':{'content-type':_0x5b52ab(0x116)},'credentials':'same-origin','body':JSON[_0x5b52ab(0x129)]({'username':_0x289fde,'password':_0x236c5a,'tokenId':_0x1516e0[_0x5b52ab(0xed)]})}),_0x1bf0ac=await _0x55b007[_0x5b52ab(0xeb)]()[_0x5b52ab(0xf7)](()=>({}));if(!_0x55b007['ok'])return document[_0x5b52ab(0x100)]('pickerSection')[_0x5b52ab(0xf9)]=!0x0,document[_0x5b52ab(0x100)](_0x5b52ab(0x102))[_0x5b52ab(0xf9)]=!0x1,void showError(_0x1bf0ac?.[_0x5b52ab(0x11a)]?.[_0x5b52ab(0x10d)]||_0x1bf0ac?.[_0x5b52ab(0x11a)]||_0x5b52ab(0xef));window['location'][_0x5b52ab(0x121)](redirect);}),_0x4a7521[_0x662819(0x132)](_0x1dbd3f);}return;}window[_0x662819(0xe9)][_0x662819(0x121)](redirect);}),loadConfig()[_0x1ecd4f(0xf7)](_0x399949=>{const _0x3648f0=_0x1ecd4f,_0x4d37aa=document[_0x3648f0(0x100)](_0x3648f0(0xe3));_0x4d37aa[_0x3648f0(0xf9)]=!0x1,_0x4d37aa['textContent']=_0x399949?.['message']||_0x3648f0(0xfe);});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" type="image/png" href="favicon.ico"><link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png"><link rel="manifest" href="site.webmanifest"><title>OKDB Login</title><script>!function(){try{var t=localStorage.getItem("okdbTheme");"dark"!==t&&"light"!==t&&(t=window.matchMedia&&window.matchMedia("(prefers-color-scheme: light)").matches?"light":"dark"),"light"===t&&document.documentElement.setAttribute("data-theme","light")}catch(t){}}()</script><style>:root{color-scheme:dark;--bg0:#071018;--bg1:#0d1722;--bg2:#142235;--line:#27415f;--text:#e8f2ff;--muted:#9ab2cc;--accent:#4fc1ff;--accent2:#7ee787}:root[data-theme=light]{color-scheme:light;--bg0:#dce8f5;--bg1:#f0f6fc;--bg2:#ffffff;--line:#b0c8e0;--text:#0d1a28;--muted:#3a5870;--accent:#1a7ab8;--accent2:#16a34a}*{box-sizing:border-box}body{margin:0;min-height:100vh;font-family:Inter,Segoe UI,Arial,sans-serif;color:var(--text);background:radial-gradient(circle at top,#16304b 0,var(--bg0) 45%,#05090f 100%);display:flex;align-items:center;justify-content:center;padding:24px}[data-theme=light] body{background:radial-gradient(circle at top,#c8dff5 0,var(--bg0) 45%,#e8f2ff 100%)}.shell{width:min(920px,100%);display:grid;grid-template-columns:1.2fr 0.95fr;background:rgba(8,16,26,.86);border:1px solid rgba(79,193,255,.16);border-radius:22px;overflow:hidden;box-shadow:0 24px 70px rgba(0,0,0,.45);backdrop-filter:blur(10px)}.hero{padding:40px;background:linear-gradient(160deg,rgba(79,193,255,.12),rgba(126,231,135,.06));border-right:1px solid rgba(79,193,255,.1)}.card{padding:40px;display:flex;flex-direction:column;justify-content:center}.eyebrow{display:inline-flex;align-items:center;gap:8px;padding:6px 10px;border-radius:999px;background:rgba(79,193,255,.12);color:var(--accent);font-size:12px;letter-spacing:.08em;text-transform:uppercase;border:1px solid rgba(79,193,255,.18)}h1{font-size:40px;line-height:1.05;margin:18px 0 12px}p{color:var(--muted);line-height:1.65}ul{padding-left:18px;color:var(--muted);line-height:1.8}.login-box{background:linear-gradient(180deg,rgba(20,34,53,.92),rgba(12,21,32,.92));border:1px solid rgba(255,255,255,.06);border-radius:18px;padding:24px}.provider{font-size:13px;color:var(--muted);margin-bottom:12px}.stack{display:flex;flex-direction:column;gap:14px}.field{display:flex;flex-direction:column;gap:7px}.field label{font-size:12px;color:var(--muted)}.field input{width:100%;background:#0b1420;color:var(--text);border:1px solid rgba(255,255,255,.08);border-radius:12px;padding:13px 14px;outline:0;font-size:14px}.field input:focus{border-color:rgba(79,193,255,.45);box-shadow:0 0 0 3px rgba(79,193,255,.12)}.muted-btn{display:inline-flex;align-items:center;justify-content:center;gap:12px;width:100%;text-decoration:none;color:var(--text);font-weight:700;font-size:15px;border-radius:12px;padding:14px 16px;background:#162434;border:1px solid rgba(255,255,255,.08)}.divider{display:flex;align-items:center;gap:12px;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.08em}.divider::after,.divider::before{content:'';height:1px;background:rgba(255,255,255,.08);flex:1}.button{display:inline-flex;align-items:center;justify-content:center;gap:12px;width:100%;text-decoration:none;color:#04111f;font-weight:700;font-size:15px;border-radius:12px;padding:14px 16px;background:linear-gradient(135deg,var(--accent),#8fdcff);box-shadow:0 10px 30px rgba(79,193,255,.22)}.button:hover{filter:brightness(1.04)}.note{margin-top:16px;font-size:12px;color:var(--muted)}.error{margin-top:14px;padding:10px 12px;border-radius:10px;background:rgba(248,113,113,.12);border:1px solid rgba(248,113,113,.25);color:#fecaca;font-size:13px}.picker-title{font-size:13px;color:var(--muted);margin-bottom:12px}.picker-list{display:flex;flex-direction:column;gap:8px}.picker-item{display:flex;flex-direction:column;gap:4px;padding:12px 14px;border-radius:12px;background:#0b1420;border:1px solid rgba(255,255,255,.08);cursor:pointer;transition:border-color .15s}.picker-item:hover{border-color:rgba(79,193,255,.45)}.picker-item-label{font-size:14px;color:var(--text);font-weight:600}.picker-item-meta{font-size:12px;color:var(--muted)}@media (max-width:820px){.shell{grid-template-columns:1fr}.hero{border-right:none;border-bottom:1px solid rgba(79,193,255,.1)}}[data-theme=light] .shell{background:rgba(255,255,255,.92);border-color:rgba(26,122,184,.2)}[data-theme=light] .login-box{background:var(--bg1)}[data-theme=light] .field input,[data-theme=light] .muted-btn,[data-theme=light] .picker-item{background:var(--bg2);border-color:var(--line)}[data-theme=light] .hero{background:linear-gradient(160deg,rgba(26,122,184,.08),rgba(22,163,74,.04))}</style></head><body><main class="shell"><section class="hero"><div class="eyebrow">OKDB Admin</div><h1>Secure access to your database control plane.</h1><p>Sign in to manage environments, inspect system state, and operate OKDB securely.</p><ul><li>Session-based browser access for the admin UI</li><li>Access-token auth for API and MCP clients</li><li>Centralized authorization based on your provider claims</li></ul></section><section class="card"><div class="login-box"><div class="stack" id="loginStack" hidden><form id="basicForm" hidden><div class="provider">Username and password</div><div class="stack"><div class="field"><label for="user">User</label> <input id="user" name="user" autocomplete="username" placeholder="admin"></div><div class="field"><label for="password">Password</label> <input id="password" name="password" type="password" autocomplete="current-password" placeholder="••••••••"></div><button class="button" type="submit">Login</button></div></form><div class="divider" id="divider" hidden>or</div><div id="oauthWrap" hidden><div class="provider" id="providerLabel">Use a provider</div><a class="muted-btn" id="loginButton" href="/admin/auth/start?redirect=%2Fadmin%2Findex.html"><span id="providerButtonLabel">Use a provider</span></a></div></div><div id="pickerSection" hidden><div class="picker-title">Multiple accounts found. Choose one to continue:</div><div class="picker-list" id="pickerList"></div></div><div class="note" id="noteBox">API and MCP clients should use OAuth access tokens directly.</div><div class="error" id="errorBox" hidden></div></div></section></main><script type="module" src="login-app.js"></script></body></html>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const _0x3f6a37=_0x2467;(function(_0x2c109e,_0x5c4760){const _0x77b7dd=_0x2467,_0x415b39=_0x2c109e();while(!![]){try{const _0x5eb66b=parseInt(_0x77b7dd(0xf0))/0x1+-parseInt(_0x77b7dd(0xf3))/0x2+-parseInt(_0x77b7dd(0xeb))/0x3+-parseInt(_0x77b7dd(0xed))/0x4+-parseInt(_0x77b7dd(0xee))/0x5+-parseInt(_0x77b7dd(0xf2))/0x6*(parseInt(_0x77b7dd(0xec))/0x7)+parseInt(_0x77b7dd(0xf4))/0x8;if(_0x5eb66b===_0x5c4760)break;else _0x415b39['push'](_0x415b39['shift']());}catch(_0x15aec4){_0x415b39['push'](_0x415b39['shift']());}}}(_0x48fd,0xd5e74));import _0x1263e2 from'@okjs';function _0x2467(_0x7fb7fa,_0x196ed1){_0x7fb7fa=_0x7fb7fa-0xeb;const _0x48fd1d=_0x48fd();let _0x246780=_0x48fd1d[_0x7fb7fa];return _0x246780;}import _0x32fda1 from'@toolkit/navigation/hash-router.ok.js';import _0x44872b from'@toolkit/errors/ok-crash-info.ok.js';import _0x358811 from'@toolkit/elements/ok-icon.ok.js';function _0x48fd(){const _0x5eede2=['654048vtjwag','7IjXloA','846652jCtoQA','2994400rYvWRF','register','1548656SVSWay','dev','5337858ddhiGb','3240816HiWvvk','22928816URlXEQ','forEach'];_0x48fd=function(){return _0x5eede2;};return _0x48fd();}import _0x101249 from'@toolkit/elements/ok-table.ok.js';import _0x3c4236 from'@toolkit/core/ok-overlay.ok.js';import _0xe7f69 from'@toolkit/modals/ok-modal-service.ok.js';import _0x4b28b1 from'@toolkit/modals/ok-toast-service.ok.js';import _0x2ca99c from'../components/admin-route-host.ok.js';import _0x253506 from'../components/theme-toggle.ok.js';export const ok=_0x1263e2({'env':_0x3f6a37(0xf1)});[_0x44872b,_0x32fda1,_0x358811,_0x101249,_0x3c4236,_0xe7f69,_0x4b28b1,_0x2ca99c,_0x253506][_0x3f6a37(0xf5)](_0x10dde4=>ok[_0x3f6a37(0xef)](_0x10dde4));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<script type="module">import okIcon from"@toolkit/elements/ok-icon.ok.js";import apiEndpoint from"./parts/api-endpoint.ok.js";export default{tag:"api-index",unwrap:!0,dependencies:[apiEndpoint,okIcon],context:e=>({routes:[],loading:!1,error:null,selected:null,search:"",tagOrder:["system","types","data","changelog","indexes","fts","queue","pipelines","sync","embeddings","envs","docs"],async load(){this.loading=!0,this.error=null;try{const e=await fetch(__ENV__.API+"/docs"),t=await e.json();if(!e.ok)throw new Error(t?.error?.message||"Failed to load routes");this.routes=t.data??[]}catch(e){this.error=e?.message||String(e)}finally{this.loading=!1}},get filtered(){const e=this.search.trim().toLowerCase();return e?this.routes.filter(t=>t.path.toLowerCase().includes(e)||t.method.toLowerCase().includes(e)||(t.meta?.summary||"").toLowerCase().includes(e)||(t.meta?.tags||[]).some(t=>t.includes(e))):this.routes},get groups(){const e=new Map;for(const t of this.filtered){const o=t.meta?.tags?.[0]??"other";e.has(o)||e.set(o,[]),e.get(o).push(t)}return[...e.entries()].sort(([e],[t])=>{const o=this.tagOrder.indexOf(e),s=this.tagOrder.indexOf(t);return-1===o&&-1===s?e.localeCompare(t):-1===o?1:-1===s?-1:o-s}).map(([e,t])=>({tag:e,routes:t}))},methodColor:e=>({GET:"var(--okdb-accent)",POST:"var(--okdb-success)",PUT:"var(--okdb-warning)",PATCH:"var(--okdb-accent-2)",DELETE:"var(--okdb-danger)"}[e]||"var(--okdb-method-default)"),select(e){this.selected!==e&&(this.selected=null,setTimeout(()=>{this.selected=e},0))},shortPath:e=>e.replace(/^\/api/,"").replace(/\[[^\]]*\]/g,""),optionalHint(e){const t=e.match(/\[([^\]]*)\]/);return t?t[1].replace(/=\w+/g,""):null}}),init(){this.load()}}</script><template><component import="../../layouts/_default.ok.html"><template name="header"></template><template name="sidebar"><div style="position:relative;flex-shrink:0"><input type="text" placeholder="Filter routes…" !value="search" @input="search = $el.value" style="width:100%;box-sizing:border-box;background:var(--okdb-app-bg-deep);border:1px solid var(--okdb-app-border);border-radius:7px;padding:6px 10px;color:var(--okdb-app-fg);font-size:12px;outline:0"/></div><if :="loading"><div class="loader-center" style="flex:1"><ok-icon name="loader" class="spin" style="width:24px;height:24px"></ok-icon></div></if><if :="error"><div style="font-size:12px;color:var(--okdb-danger);padding:8px">{{ error }}</div></if><div style="flex:1;min-height:0;display:flex;flex-direction:column;gap:12px;overflow-y:auto;padding-bottom:10px"><each :of="groups" let:item="g"><div><div style="font-size:10px;text-transform:uppercase;letter-spacing:.07em;opacity:.38;margin-bottom:4px;padding:0 2px">{{ g.tag }}</div><div style="display:flex;flex-direction:column;gap:1px"><each :of="g.routes" let:item="r"><button :class="['api-route-btn', selected === r ? 'api-route-btn--active' : '']" @click="select(r)" :title="r.path"><span :style="'font-size:10px;font-weight:700;width:38px;flex-shrink:0;text-align:center;color:'+methodColor(r.method)+';'">{{ r.method }} </span><span class="api-route-path"><if :="optionalHint(r.path)"><span style="opacity:.3">{{ optionalHint(r.path) }}</span></if>{{ shortPath(r.path) }}</span></button></each></div></div></each><if :="!loading && routes.length === 0 && !error"><div style="font-size:12px;opacity:.4;padding:8px">No routes loaded.</div></if></div><if :="routes.length > 0"><div style="font-size:11px;opacity:.35;padding-top:8px;border-top:1px solid var(--okdb-app-surface-2);flex-shrink:0">{{ filtered.length }} / {{ routes.length }} routes</div></if></template><template name="default"><if :="!selected"><div style="display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;opacity:.4;gap:12px;user-select:none"><div style="font-size:32px">⌁</div><div style="font-size:14px;font-weight:600">Select a route to explore</div><div style="font-size:12px;opacity:.7">{{ routes.length }} routes · routes with <span style="opacity:.5">[/env/:env]</span> accept an optional environment prefix</div></div></if><if :="selected"><api-endpoint :endpoint="selected" style="height:100%"></api-endpoint></if></template></component></template><style>.api-route-btn{display:flex;align-items:center;gap:6px;padding:4px 6px;background:0 0;border:1px solid transparent;border-radius:6px;cursor:pointer;width:100%;text-align:left;transition:background .1s;min-width:0}.api-route-btn:hover{background:var(--okdb-app-surface);border-color:var(--okdb-app-border)}.api-route-btn--active{background:var(--okdb-accent-soft-bg)!important;border-color:color-mix(in srgb,var(--okdb-accent) 20%,transparent)!important}.api-route-path{font-family:monospace;font-size:11px;color:var(--okdb-app-fg-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.api-route-btn--active .api-route-path{color:var(--okdb-app-fg)}</style>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function _0x48f5(_0x667803,_0xeae40b){_0x667803=_0x667803-0x1a5;const _0x21b750=_0x21b7();let _0x48f59f=_0x21b750[_0x667803];return _0x48f59f;}function _0x21b7(){const _0x5b95d0=['$attr','var(--okdb-success)','running','headers','response','(?=\x5c/|$)','method','4891513hVddrf','endpoint','now','bodyText','join','44976tMCkFa','6cvjKBk','var(--okdb-method-default)','runError','15110wotVYq','PUT','POST','text','\x0a<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:0;\x20height:100%;\x22>\x0a\x0a\x20\x20<!--\x20Method\x20+\x20path\x20header\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:12px;\x20padding:18px\x2020px\x2014px;\x20flex-shrink:0;\x20border-bottom:1px\x20solid\x20var(--okdb-app-surface-2);\x22>\x0a\x20\x20\x20\x20<span\x20:style=\x22\x27font-size:11px;\x20font-weight:700;\x20padding:3px\x2010px;\x20border-radius:5px;\x20border:1px\x20solid;\x20color:\x27+methodColor+\x27;\x20border-color:color-mix(in\x20srgb,\x20\x27+methodColor+\x27\x2033%,\x20transparent);\x20background:color-mix(in\x20srgb,\x20\x27+methodColor+\x27\x207%,\x20transparent);\x20letter-spacing:.06em;\x27\x22>\x0a\x20\x20\x20\x20\x20\x20{{\x20ep?.method\x20}}\x0a\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20<code\x20style=\x22font-family:monospace;\x20font-size:14px;\x20color:var(--okdb-app-fg);\x20word-break:break-all;\x22>{{\x20pathParts.before\x20}}<if\x20:=\x22pathParts.optional\x22><span\x20style=\x22opacity:.35;\x22>{{\x20pathParts.optional\x20}}</span></if>{{\x20pathParts.after\x20}}</code>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Scrollable\x20form\x20area\x20-->\x0a\x20\x20<div\x20style=\x22flex:1;\x20min-height:0;\x20overflow-y:auto;\x20padding:18px\x2020px;\x20display:flex;\x20flex-direction:column;\x20gap:18px;\x22>\x0a\x0a\x20\x20\x20\x20<!--\x20Summary\x20+\x20description\x20-->\x0a\x20\x20\x20\x20<if\x20:=\x22ep?.meta?.summary\x20||\x20ep?.meta?.description\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<if\x20:=\x22ep?.meta?.summary\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-weight:600;\x20font-size:14px;\x20color:var(--okdb-app-fg-strong);\x22>{{\x20ep.meta.summary\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22ep?.meta?.description\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:13px;\x20opacity:.65;\x20line-height:1.6;\x22>{{\x20ep.meta.description\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<!--\x20Path\x20params\x20-->\x0a\x20\x20\x20\x20<if\x20:=\x22pathParams.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ae-section-label\x22>Path\x20Parameters</div>\x0a\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<each\x20:of=\x22pathParams\x22\x20let:item=\x22p\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:10px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20style=\x22font-family:monospace;\x20font-size:12px;\x20color:var(--okdb-accent);\x20width:120px;\x20flex-shrink:0;\x22>:{{\x20p\x20}}</code>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22ep?.meta?.params?.[p]\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20opacity:.5;\x20flex-shrink:0;\x22>{{\x20ep.meta.params[p]\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<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22text\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20class=\x22ae-input\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:placeholder=\x22p\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22paramValues[p]\x20||\x20\x27\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22setParam(p,\x20$el.value)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22flex:1;\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</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</div>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<!--\x20Query\x20params\x20-->\x0a\x20\x20\x20\x20<if\x20:=\x22Object.keys(queryValues).length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ae-section-label\x22>Query\x20Parameters</div>\x0a\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<each\x20:of=\x22Object.keys(queryValues)\x22\x20let:item=\x22k\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:10px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20style=\x22font-family:monospace;\x20font-size:12px;\x20color:var(--okdb-accent-2);\x20width:120px;\x20flex-shrink:0;\x22>{{\x20k\x20}}</code>\x0a\x20\x20\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\x20\x20\x20type=\x22text\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20class=\x22ae-input\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22queryValues[k]\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22setQuery(k,\x20$el.value)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22flex:1;\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</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</div>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<!--\x20Body\x20editor\x20-->\x0a\x20\x20\x20\x20<if\x20:=\x22hasBody\x22>\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<div\x20class=\x22ae-section-label\x22>Request\x20Body\x20<span\x20style=\x22opacity:.4;\x20font-weight:400;\x22>(JSON)</span></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<textarea\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20class=\x22ae-textarea\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20rows=\x2210\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20spellcheck=\x22false\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20!value=\x22bodyText\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20></textarea>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<!--\x20Run\x20button\x20-->\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22run()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22running\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20style=\x22background:var(--okdb-accent-soft-bg);\x20border-color:var(--okdb-accent-soft-border);\x20color:var(--okdb-accent);\x20font-weight:600;\x20padding:8px\x2022px;\x20font-size:13px;\x22\x0a\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22running\x22>⏳\x20Running…</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!running\x22>▶\x20Run</if>\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22response\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22\x27font-size:12px;\x20font-weight:700;\x20color:\x27+statusColor(response.status)+\x27;\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20response.status\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22response.serverMs\x20!==\x20null\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.65;\x22\x20title=\x22Server\x20processing\x20time\x20(from\x20meta.time)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20response.serverMs\x20}}ms\x20<span\x20style=\x22opacity:.5;\x20font-size:11px;\x22>server</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.35;\x22\x20title=\x22Client\x20roundtrip\x20time\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20response.clientMs\x20}}ms\x20<span\x20style=\x22font-size:11px;\x22>roundtrip</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22runError\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20color:var(--okdb-danger);\x22>{{\x20runError\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20Response\x20viewer\x20-->\x0a\x20\x20\x20\x20<if\x20:=\x22response\x22>\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<div\x20class=\x22ae-section-label\x22>Response</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22ae-response\x22>{{\x20prettyJson(response.body)\x20}}</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20</div><!--\x20/scroll\x20area\x20-->\x0a</div>\x0a','path','9PFiJBi','application/json','370MTnRRz','matchAll','includes','var(--okdb-danger)','replace','705276jJLskT','13443696RfFSic','1818sSjhPF','body','map','queryValues','message','stringify','object','DELETE','reset','2567065TQLhnc','var(--okdb-accent)','hasBody','var(--okdb-warning)','status','entries','query','trim','336AtDgTq','api-endpoint','1399oupxNN','meta','paramValues','PATCH','filter','time','match','var(--okdb-accent-2)'];_0x21b7=function(){return _0x5b95d0;};return _0x21b7();}const _0x180cf0=_0x48f5;(function(_0x2de7c8,_0x249cd2){const _0x1568b2=_0x48f5,_0x553c4a=_0x2de7c8();while(!![]){try{const _0x151407=parseInt(_0x1568b2(0x1d5))/0x1*(parseInt(_0x1568b2(0x1bb))/0x2)+-parseInt(_0x1568b2(0x1b9))/0x3*(parseInt(_0x1568b2(0x1c0))/0x4)+parseInt(_0x1568b2(0x1cb))/0x5*(parseInt(_0x1568b2(0x1b0))/0x6)+-parseInt(_0x1568b2(0x1d3))/0x7*(parseInt(_0x1568b2(0x1af))/0x8)+parseInt(_0x1568b2(0x1c2))/0x9*(-parseInt(_0x1568b2(0x1b3))/0xa)+-parseInt(_0x1568b2(0x1aa))/0xb+parseInt(_0x1568b2(0x1c1))/0xc;if(_0x151407===_0x249cd2)break;else _0x553c4a['push'](_0x553c4a['shift']());}catch(_0x38b567){_0x553c4a['push'](_0x553c4a['shift']());}}}(_0x21b7,0x53f0a));export default{'tag':_0x180cf0(0x1d4),'attr':{'endpoint':{}},'context':_0x361957=>({'paramValues':{},'queryValues':{},'bodyText':'','running':!0x1,'response':null,'runError':null,get 'ep'(){return _0x361957['$attr']['endpoint'];},get 'pathParts'(){const _0x411778=_0x180cf0,_0x3ecfa5=this['ep']?.['path']||'',_0x4c341d=_0x3ecfa5[_0x411778(0x1db)](/^(.*?)\[([^\]]*)\](.*)$/);return _0x4c341d?{'before':_0x4c341d[0x1],'optional':_0x4c341d[0x2][_0x411778(0x1bf)](/=\w+/g,''),'after':_0x4c341d[0x3]}:{'before':_0x3ecfa5,'optional':null,'after':''};},get 'pathParams'(){const _0x39ee4d=_0x180cf0;return[...(this['ep']?.[_0x39ee4d(0x1b8)]||'')[_0x39ee4d(0x1bf)](/\[([^\]]*)\]/g,'$1')[_0x39ee4d(0x1bc)](/:(\w+)/g)][_0x39ee4d(0x1c4)](_0x95528a=>_0x95528a[0x1]);},get 'hasBody'(){const _0x46ad8c=_0x180cf0;return[_0x46ad8c(0x1b5),_0x46ad8c(0x1b4),_0x46ad8c(0x1d8),_0x46ad8c(0x1c9)][_0x46ad8c(0x1bd)](this['ep']?.[_0x46ad8c(0x1a9)]);},get 'methodColor'(){const _0x503d95=_0x180cf0;return{'GET':_0x503d95(0x1cc),'POST':_0x503d95(0x1de),'PUT':_0x503d95(0x1ce),'PATCH':_0x503d95(0x1dc),'DELETE':_0x503d95(0x1be)}[this['ep']?.[_0x503d95(0x1a9)]]||_0x503d95(0x1b1);},'reset'(){const _0x372473=_0x180cf0;this[_0x372473(0x1d7)]={},this[_0x372473(0x1c5)]={},this['response']=null,this[_0x372473(0x1b2)]=null;const _0x466c40=this['ep']?.['defaults']??{};for(const [_0x33c22f,_0x429c93]of Object['entries'](_0x466c40))this['paramValues'][_0x33c22f]=_0x429c93;const _0x138be4=this['ep']?.['meta']?.[_0x372473(0x1d1)]||{};for(const [_0x1249c6,_0x3212e8]of Object['entries'](_0x138be4))this[_0x372473(0x1c5)][_0x1249c6]=null!=_0x3212e8?String(_0x3212e8):'';this[_0x372473(0x1ad)]=null!=this['ep']?.[_0x372473(0x1d6)]?.[_0x372473(0x1c3)]?JSON['stringify'](this['ep']['meta']['body'],null,0x2):'';},'buildUrl'(){const _0x920f0c=_0x180cf0;let _0xf51697=this['ep'][_0x920f0c(0x1b8)][_0x920f0c(0x1bf)](/^\/api/,'');_0xf51697=_0xf51697[_0x920f0c(0x1bf)](/\[([^\]]*)\]/g,(_0xbf7761,_0x453d12)=>{const _0x4f73ce=_0x920f0c,_0x57d188=_0x453d12[_0x4f73ce(0x1db)](/:(\w+)(?:=(\w+))?/);if(!_0x57d188)return _0x453d12;const _0x4bdc26=_0x57d188[0x1],_0x3c6eec=_0x57d188[0x2]??'';return(this[_0x4f73ce(0x1d7)][_0x4bdc26]??_0x3c6eec)===_0x3c6eec?'':_0x453d12['replace'](/:(\w+)(?:=\w+)?/g,(_0x27b464,_0x216ebc)=>'/'+encodeURIComponent(this['paramValues'][_0x216ebc]??''))[_0x4f73ce(0x1bf)](/^\//,'/');});for(const [_0x3cfc42,_0x3c405d]of Object[_0x920f0c(0x1d0)](this[_0x920f0c(0x1d7)]))_0xf51697=_0xf51697['replace'](new RegExp(':'+_0x3cfc42+_0x920f0c(0x1a8),'g'),encodeURIComponent(_0x3c405d||':'+_0x3cfc42));const _0x3e194a=Object[_0x920f0c(0x1d0)](this[_0x920f0c(0x1c5)])[_0x920f0c(0x1d9)](([,_0x16923d])=>''!==_0x16923d&&null!=_0x16923d)[_0x920f0c(0x1c4)](([_0x283b65,_0x50e615])=>encodeURIComponent(_0x283b65)+'='+encodeURIComponent(_0x50e615))[_0x920f0c(0x1ae)]('&');return __ENV__['API']+_0xf51697+(_0x3e194a?'?'+_0x3e194a:'');},async 'run'(){const _0x112b73=_0x180cf0;this['running']=!0x0,this[_0x112b73(0x1a7)]=null,this[_0x112b73(0x1b2)]=null;const _0x2c3d40=Date[_0x112b73(0x1ac)]();try{const _0xad8b5f=this['buildUrl'](),_0x18a69b={'method':this['ep'][_0x112b73(0x1a9)]};this[_0x112b73(0x1cd)]&&this[_0x112b73(0x1ad)][_0x112b73(0x1d2)]()&&(_0x18a69b[_0x112b73(0x1a6)]={'Content-Type':_0x112b73(0x1ba)},_0x18a69b[_0x112b73(0x1c3)]=this[_0x112b73(0x1ad)]);const _0x1dfc5e=await fetch(_0xad8b5f,_0x18a69b),_0x4f51ba=Date[_0x112b73(0x1ac)]()-_0x2c3d40;let _0xd09979;try{_0xd09979=await _0x1dfc5e['json']();}catch{_0xd09979=await _0x1dfc5e[_0x112b73(0x1b6)]();}const _0x32643d=_0x112b73(0x1c8)==typeof _0xd09979&&null!==_0xd09979?_0xd09979?.[_0x112b73(0x1d6)]?.[_0x112b73(0x1da)]??null:null;this[_0x112b73(0x1a7)]={'status':_0x1dfc5e[_0x112b73(0x1cf)],'clientMs':_0x4f51ba,'serverMs':_0x32643d,'body':_0xd09979};}catch(_0x1e1b33){this[_0x112b73(0x1b2)]=_0x1e1b33?.[_0x112b73(0x1c6)]||String(_0x1e1b33);}finally{this[_0x112b73(0x1a5)]=!0x1;}},'statusColor':_0x533a5e=>_0x533a5e>=0xc8&&_0x533a5e<0x12c?_0x180cf0(0x1de):_0x533a5e>=0x190&&_0x533a5e<0x1f4?_0x180cf0(0x1ce):'var(--okdb-danger)','prettyJson'(_0x23668b){const _0xb215d7=_0x180cf0;try{return JSON[_0xb215d7(0x1c7)](_0x23668b,null,0x2);}catch{return String(_0x23668b);}},'setParam'(_0x52783f,_0x15d865){const _0x375d2e=_0x180cf0;this[_0x375d2e(0x1d7)]={...this[_0x375d2e(0x1d7)],[_0x52783f]:_0x15d865};},'setQuery'(_0x19a7de,_0x4943cb){const _0x589470=_0x180cf0;this[_0x589470(0x1c5)]={...this['queryValues'],[_0x19a7de]:_0x4943cb};}}),'init'(_0x133a37){const _0x310d4d=_0x180cf0;_0x133a37['$watch'](()=>_0x133a37[_0x310d4d(0x1dd)][_0x310d4d(0x1ab)],()=>{const _0x3f71c1=_0x310d4d;this[_0x3f71c1(0x1ca)]();}),this[_0x310d4d(0x1ca)]();},'template':_0x180cf0(0x1b7),'style':'\x0a\x20\x20\x20\x20\x20\x20api-endpoint\x20.ae-section-label\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-transform:\x20uppercase;\x0a\x20\x20\x20\x20\x20\x20\x20\x20letter-spacing:\x20.07em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.45;\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-bottom:\x206px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20api-endpoint\x20.ae-input\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x206px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x205px\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-app-fg);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2013px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-family:\x20monospace;\x0a\x20\x20\x20\x20\x20\x20\x20\x20outline:\x20none;\x0a\x20\x20\x20\x20\x20\x20\x20\x20transition:\x20border-color\x20.12s;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20api-endpoint\x20.ae-input:focus\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-color:\x20var(--okdb-accent-border);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20api-endpoint\x20.ae-textarea\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2010px\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-app-fg);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-family:\x20\x27Cascadia\x20Code\x27,\x20\x27Fira\x20Mono\x27,\x20monospace;\x0a\x20\x20\x20\x20\x20\x20\x20\x20resize:\x20vertical;\x0a\x20\x20\x20\x20\x20\x20\x20\x20outline:\x20none;\x0a\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201.6;\x0a\x20\x20\x20\x20\x20\x20\x20\x20transition:\x20border-color\x20.12s;\x0a\x20\x20\x20\x20\x20\x20\x20\x20width:\x20100%;\x0a\x20\x20\x20\x20\x20\x20\x20\x20box-sizing:\x20border-box;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20api-endpoint\x20.ae-textarea:focus\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-color:\x20var(--okdb-accent-soft-border);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20api-endpoint\x20.ae-response\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-app-surface-2);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2012px\x2014px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-family:\x20\x27Cascadia\x20Code\x27,\x20\x27Fira\x20Mono\x27,\x20monospace;\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20#88c8b0;\x0a\x20\x20\x20\x20\x20\x20\x20\x20overflow-x:\x20auto;\x0a\x20\x20\x20\x20\x20\x20\x20\x20white-space:\x20pre-wrap;\x0a\x20\x20\x20\x20\x20\x20\x20\x20word-break:\x20break-all;\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin:\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20max-height:\x20400px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20overflow-y:\x20auto;\x0a\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201.55;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20'};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<script type="module">import tokenList from"./parts/token-list.ok.js";import tokenDetail from"./parts/token-detail.ok.js";import createTokenModal from"./modals/create-token-modal.ok.js";import editTokenModal from"./modals/edit-token-modal.ok.js";export default{tag:"auth-index",unwrap:!0,dependencies:[tokenList,tokenDetail,createTokenModal,editTokenModal],context:e=>({selectedToken:null,tokenListEl:null,selectedTokenId:e.$vars?.$router?._search?.token??null,selectToken(o){this.selectedToken=o??null,this.selectedTokenId=o?.id??null;const t=e.$vars?.$router;t&&(o?.id?t.search.token=o.id:delete t.search.token)},async openCreateModal(){await e.$ok.shared.modal.open({owner:e,title:"Create Token",content:'<create-token-modal :modal="modal" :on-done="onDone" />',context:e=>({modal:e,onDone:async e=>{if(e?.id){const o=this.tokenListEl?.$scope?.$innerContext;o&&(o._selectedId=e.id),this.selectToken(e)}await(this.tokenListEl?.$scope?.$innerContext?.load?.())}})})},async openEditModal(o){await e.$ok.shared.modal.open({owner:e,title:`Edit Token: ${o.label||"Unnamed"}`,content:'<edit-token-modal :modal="modal" :token="token" :on-done="onDone" />',context:e=>({modal:e,token:o,onDone:async()=>{await(this.tokenListEl?.$scope?.$innerContext?.load?.())}})})},async deleteToken(o){try{const t=await fetch(`${__ENV__.API}/auth/tokens/${encodeURIComponent(o)}`,{method:"DELETE"});if(!t.ok){const e=await t.json();throw new Error(e?.error?.message||"Failed to delete token")}e.$ok.shared?.toast?.success?.("Token deleted"),this.selectToken(null),await(this.tokenListEl?.$scope?.$innerContext?.load?.())}catch(o){e.$ok.shared?.toast?.error?.(o?.message||"Delete failed"),console.error("Delete token error",o)}}}),mount(e){e.$watch(()=>e.$vars?.$router?._search?.token,e=>{this.selectedTokenId=e??null,e?e!==this.selectedToken?.id&&this.tokenListEl?.$scope?.$innerContext?.load?.():this.selectedToken=null})}}</script><style>.auth-action-btn{padding:6px 10px;border:1px solid var(--okdb-app-border);border-radius:6px;background:0 0;color:var(--okdb-accent-muted);font-size:12px;font-weight:500;cursor:pointer;transition:background .12s,border-color .12s,color .12s;text-align:left}.auth-action-btn:hover{background:var(--okdb-app-surface-2);border-color:var(--okdb-app-border);color:var(--okdb-sky)}</style><template><component import="../../layouts/_default.ok.html"><template name="header"></template><template name="sidebar"><div style="display:flex;flex-direction:column;gap:6px;height:100%"><button @click="openCreateModal()" class="auth-action-btn">+ New Token</button><token-list :ref="tokenListEl = $el" :selected-id="selectedTokenId" @selected="selectToken($event.detail)"/></div></template><template name="default"><token-detail :token="selectedToken" @edit="openEditModal($event.detail)" @delete="deleteToken($event.detail)"/></template></component></template>
|