@kedem/okdb 1.0.1 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/okdb.js +1 -1
- package/keys/public.pem +3 -0
- package/okdb.js +1 -1
- package/package.json +2 -2
- package/public/admin-app.js +1 -1
- package/public/components/admin-route-host.ok.js +1 -1
- package/public/components/env-picker.ok.js +1 -1
- package/public/components/field-path-input.ok.js +1 -1
- package/public/components/field.html +154 -2
- package/public/components/geo-map.ok.js +1 -1
- package/public/components/ok-cron-input.ok.js +1 -1
- package/public/components/ok-dropzone.ok.js +1 -1
- package/public/components/ok-js-input.ok.js +1 -1
- package/public/components/ok-json-input.ok.js +1 -1
- package/public/components/ok-text-monaco-input.ok.js +1 -1
- package/public/components/theme-toggle.ok.js +1 -1
- package/public/index.html +29 -2
- package/public/layouts/_default.ok.html +1 -1
- package/public/layouts/okdb-cube.ok.html +1 -1
- package/public/login-app.js +1 -1
- package/public/login.html +205 -1
- package/public/modules/ok.js +1 -1
- package/public/sections/api/index.ok.html +1 -1
- package/public/sections/api/parts/api-endpoint.ok.js +1 -1
- package/public/sections/auth/index.ok.html +1 -1
- package/public/sections/auth/modals/create-token-modal.ok.js +1 -1
- package/public/sections/auth/modals/edit-token-modal.ok.js +1 -1
- package/public/sections/auth/modals/perm-info-popover.ok.js +1 -1
- package/public/sections/auth/parts/token-detail.ok.js +1 -1
- package/public/sections/auth/parts/token-list.ok.js +1 -1
- package/public/sections/db/index.ok.html +1 -1
- package/public/sections/db/modals/add-item-modal.ok.js +1 -1
- package/public/sections/db/modals/create-env-modal.ok.js +1 -1
- package/public/sections/db/modals/create-fts-modal.ok.js +1 -1
- package/public/sections/db/modals/create-index-modal.ok.js +1 -1
- package/public/sections/db/modals/create-pipeline-modal.ok.js +1 -1
- package/public/sections/db/modals/demo-env-modal.ok.js +1 -1
- package/public/sections/db/modals/remove-env-modal.ok.js +1 -1
- package/public/sections/db/modals/schema-edit-modal.ok.js +1 -1
- package/public/sections/db/parts/db-overview.ok.js +1 -1
- package/public/sections/db/parts/db-pipelines-panel.ok.js +1 -1
- package/public/sections/db/parts/edit-row.ok.js +1 -1
- package/public/sections/db/parts/tm-timeline.ok.js +1 -1
- package/public/sections/db/parts/type-changelog.ok.js +1 -1
- package/public/sections/db/parts/type-list.ok.js +1 -1
- package/public/sections/db/parts/type-pipelines-tab.ok.js +1 -1
- package/public/sections/db/parts/type-schema-tab.ok.js +1 -1
- package/public/sections/db/parts/type-viewer.ok.js +1 -1
- package/public/sections/db/parts/type-violations-tab.ok.js +1 -1
- package/public/sections/docs/index.ok.html +1 -1
- package/public/sections/embeddings/index.ok.html +1 -1
- package/public/sections/embeddings/modals/register-model-modal.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-create-panel.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-embedder-panel.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-engine-declaration-editor.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-engine-list.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-indexer-panel.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-lifecycle-bar.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-model-catalog.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-overview.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-search-panel.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-worker-panel.ok.js +1 -1
- package/public/sections/embeddings/parts/embeddings-engine-panel.ok.js +1 -1
- package/public/sections/embeddings/parts/engines-overview.ok.js +1 -1
- package/public/sections/embeddings/parts/pipeline-create-panel.ok.js +1 -1
- package/public/sections/engines/engine-panel-shared-style.js +1 -1
- package/public/sections/engines/engine-ui-utils.js +1 -1
- package/public/sections/engines/index.ok.html +1 -1
- package/public/sections/engines/modals/engine-modal.ok.js +1 -1
- package/public/sections/engines/parts/engine-declaration-editor.ok.js +1 -1
- package/public/sections/engines/parts/engine-lifecycle-actions.ok.js +1 -1
- package/public/sections/engines/parts/engine-panel-shell.ok.js +1 -1
- package/public/sections/engines/parts/engine-resource-card.ok.js +1 -1
- package/public/sections/engines/parts/engine-row-item.ok.js +1 -1
- package/public/sections/engines/parts/generic-engine-panel.ok.js +1 -1
- package/public/sections/files/index.ok.html +1 -1
- package/public/sections/files/parts/files-blob-status.ok.js +1 -1
- package/public/sections/files/parts/files-collection-list.ok.js +1 -1
- package/public/sections/files/parts/files-collection-panel.ok.js +1 -1
- package/public/sections/files/parts/files-file-list.ok.js +1 -1
- package/public/sections/files/parts/files-overview.ok.js +1 -1
- package/public/sections/files/parts/files-path-browser.ok.js +1 -1
- package/public/sections/files/parts/files-upload-panel.ok.js +1 -1
- package/public/sections/functions/index.ok.html +1 -1
- package/public/sections/functions/modals/function-modal.ok.js +1 -1
- package/public/sections/functions/parts/function-detail.ok.js +1 -1
- package/public/sections/functions/parts/function-logs.ok.js +1 -1
- package/public/sections/functions/parts/function-runner.ok.js +1 -1
- package/public/sections/functions/parts/functions-list.ok.js +1 -1
- package/public/sections/license/index.ok.html +1 -1
- package/public/sections/license/parts/license-panel.ok.js +1 -1
- package/public/sections/processors/index.ok.html +1 -1
- package/public/sections/queue/index.ok.html +1 -1
- package/public/sections/queue/modals/create-bucket-modal.ok.js +1 -1
- package/public/sections/queue/modals/edit-bucket-modal.ok.js +1 -1
- package/public/sections/queue/modals/edit-job-modal.ok.js +1 -1
- package/public/sections/queue/modals/enqueue-job-modal.ok.js +1 -1
- package/public/sections/queue/modals/job-type-modal.ok.js +1 -1
- package/public/sections/queue/parts/ok-job-form.ok.js +1 -1
- package/public/sections/queue/parts/queue-buckets.ok.js +1 -1
- package/public/sections/queue/parts/queue-job-types.ok.js +1 -1
- package/public/sections/queue/parts/queue-jobs.ok.js +1 -1
- package/public/sections/queue/parts/queue-types.ok.js +1 -1
- package/public/sections/queue/parts/queue-workers.ok.js +1 -1
- package/public/sections/sync/index.ok.html +1 -1
- package/public/sections/sync/parts/sync-node-detail.ok.js +1 -1
- package/public/sections/sync/parts/sync-retention.ok.js +1 -1
- package/public/sections/sync/parts/sync-topology.ok.js +1 -1
- package/public/sections/system/index.ok.html +1 -1
- package/public/sections/system/modals/data-ops-modal.ok.js +1 -1
- package/public/sections/system/parts/system-api-panel.ok.js +1 -1
- package/public/sections/system/parts/system-auth-panel.ok.js +1 -1
- package/public/sections/system/parts/system-log-history.ok.js +1 -1
- package/public/sections/system/parts/system-log.ok.js +1 -1
- package/public/sections/system/parts/system-status.ok.js +1 -1
- package/public/sections/system/parts/system-sync-panel.ok.js +1 -1
- package/public/sections/views/index.ok.html +1 -1
- package/public/sections/views/modals/create-view-modal.ok.js +1 -1
- package/public/sections/views/parts/view-detail.ok.js +1 -1
- package/public/sections/views/parts/views-list.ok.js +1 -1
- package/public/sections/views/parts/views-overview.ok.js +1 -1
- package/public/setup-app.js +1 -1
- package/public/setup.html +189 -1
- package/public/stores/auth-store.js +1 -1
- package/public/stores/events-store.js +1 -1
- package/public/stores/functions-store.js +1 -1
- package/public/stores/okdb-store.js +1 -1
- package/public/stores/theme-store.js +1 -1
- package/public/test-cron-input.html +53 -3
- package/public/test-json-input.html +182 -3
- package/public/util/permissions.js +1 -1
- package/public/util/sift-schema.js +1 -1
- package/public/vendor/okjs/ok.esm.min.js +1 -2
- package/public/view-models/type-query-vm.js +1 -1
- package/okdb-data/default/data.mdb +0 -0
- package/okdb-data/default/lock.mdb +0 -0
- package/okdb-data/~log/data.mdb +0 -0
- package/okdb-data/~log/lock.mdb +0 -0
- package/okdb-data/~system/data.mdb +0 -0
- package/okdb-data/~system/lock.mdb +0 -0
- package/public/images/logo.png +0 -0
- package/public/images/logo.svg +0 -333
|
@@ -1,9 +1,184 @@
|
|
|
1
|
-
<!DOCTYPE html
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<!--
|
|
3
|
+
Standalone smoke-test for ok-json-input schema-driven completions.
|
|
4
|
+
|
|
5
|
+
ROOT CAUSE of invisible labels (type-viewer):
|
|
6
|
+
Monaco's fixedOverflowWidgets:true moves the suggest/hover widgets to
|
|
7
|
+
<body> inside a SEPARATE .monaco-editor.vs-dark container. Monaco sets
|
|
8
|
+
its colour palette as INLINE custom-properties on the MAIN editor element
|
|
9
|
+
only — the overflow container never gets them. Every var(--vscode-…)
|
|
10
|
+
inside the widget therefore falls back to `initial` (black text on dark
|
|
11
|
+
background → invisible).
|
|
12
|
+
|
|
13
|
+
FIX:
|
|
14
|
+
Declare the same custom-properties in a stylesheet rule that targets
|
|
15
|
+
.monaco-editor.vs-dark so they cascade into the overflow container.
|
|
16
|
+
See the <style> block below — the identical block is in styles.css for
|
|
17
|
+
the real admin app.
|
|
18
|
+
-->
|
|
19
|
+
<html lang="en">
|
|
20
|
+
<head>
|
|
21
|
+
<meta charset="UTF-8">
|
|
22
|
+
<title>ok-json-input — completion test</title>
|
|
23
|
+
<script type="importmap">
|
|
24
|
+
{
|
|
2
25
|
"imports": {
|
|
3
26
|
"@toolkit/": "./vendor/okjs/toolkit/",
|
|
4
27
|
"@okjs": "./vendor/okjs/ok.esm.min.js"
|
|
5
28
|
}
|
|
6
|
-
}
|
|
29
|
+
}
|
|
30
|
+
</script>
|
|
31
|
+
<style>
|
|
32
|
+
/* ── page chrome ────────────────────────────────────────────── */
|
|
33
|
+
*, *::before, *::after { box-sizing: border-box; }
|
|
34
|
+
|
|
35
|
+
body {
|
|
36
|
+
margin: 0;
|
|
37
|
+
padding: 24px;
|
|
38
|
+
background: #161c20;
|
|
39
|
+
color: #d0d8e0;
|
|
40
|
+
font-family: 'Segoe UI', Arial, sans-serif;
|
|
41
|
+
font-size: 13px;
|
|
42
|
+
line-height: 1.6;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
h2 { margin: 0 0 4px; font-size: 15px; color: #e0eaf4; }
|
|
46
|
+
p { margin: 0 0 12px; opacity: .55; font-size: 12px; }
|
|
47
|
+
|
|
48
|
+
.card {
|
|
49
|
+
background: #1a2228;
|
|
50
|
+
border: 1px solid #23292e;
|
|
51
|
+
border-radius: 10px;
|
|
52
|
+
padding: 16px 18px;
|
|
53
|
+
margin-bottom: 20px;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
label {
|
|
57
|
+
display: block;
|
|
58
|
+
font-size: 11px;
|
|
59
|
+
opacity: .5;
|
|
60
|
+
margin-bottom: 6px;
|
|
61
|
+
text-transform: uppercase;
|
|
62
|
+
letter-spacing: .04em;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.result {
|
|
66
|
+
margin-top: 10px;
|
|
67
|
+
background: #0d1318;
|
|
68
|
+
border: 1px solid #1e2e3e;
|
|
69
|
+
border-radius: 7px;
|
|
70
|
+
padding: 8px 12px;
|
|
71
|
+
font-family: 'Cascadia Code', 'Fira Code', Consolas, monospace;
|
|
72
|
+
font-size: 12px;
|
|
73
|
+
color: #4FC1FF;
|
|
74
|
+
min-height: 24px;
|
|
75
|
+
white-space: pre-wrap;
|
|
76
|
+
word-break: break-all;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.badge {
|
|
80
|
+
display: inline-block;
|
|
81
|
+
padding: 2px 8px;
|
|
82
|
+
border-radius: 4px;
|
|
83
|
+
font-size: 11px;
|
|
84
|
+
font-weight: 600;
|
|
85
|
+
}
|
|
86
|
+
.badge-ok { background: #0d2e1a; color: #3dbb6a; border: 1px solid #1e4a2a; }
|
|
87
|
+
.badge-err { background: #2e0d0d; color: #bb3d3d; border: 1px solid #4a1e1e; }
|
|
88
|
+
|
|
89
|
+
/* ── Monaco overflow widget fix ─────────────────────────────── */
|
|
90
|
+
/*
|
|
91
|
+
* The suggest/hover widgets rendered at body level live in their own
|
|
92
|
+
* .monaco-editor.vs-dark wrapper which does NOT inherit Monaco's inline
|
|
93
|
+
* --vscode-* custom properties. Defining them here (in a stylesheet)
|
|
94
|
+
* makes them cascade into the overflow containers so labels are visible.
|
|
95
|
+
*/
|
|
96
|
+
.monaco-editor.vs-dark {
|
|
97
|
+
/* Suggest widget */
|
|
98
|
+
--vscode-editorSuggestWidget-background: #252526;
|
|
99
|
+
--vscode-editorSuggestWidget-foreground: #d4d4d4;
|
|
100
|
+
--vscode-editorSuggestWidget-selectedForeground: #d4d4d4;
|
|
101
|
+
--vscode-editorSuggestWidget-selectedBackground: #04395e;
|
|
102
|
+
--vscode-editorSuggestWidget-highlightForeground: #18a3ff;
|
|
103
|
+
--vscode-editorSuggestWidget-focusHighlightForeground: #18a3ff;
|
|
104
|
+
--vscode-editorSuggestWidget-border: #454545;
|
|
105
|
+
|
|
106
|
+
/* List / tree (used inside suggest + picker widgets) */
|
|
107
|
+
--vscode-list-foreground: #d4d4d4;
|
|
108
|
+
--vscode-list-hoverBackground: #2a2d2e;
|
|
109
|
+
--vscode-list-hoverForeground: #d4d4d4;
|
|
110
|
+
--vscode-list-focusBackground: #062f4a;
|
|
111
|
+
--vscode-list-focusForeground: #d4d4d4;
|
|
112
|
+
--vscode-list-activeSelectionBackground: #04395e;
|
|
113
|
+
--vscode-list-activeSelectionForeground: #d4d4d4;
|
|
114
|
+
--vscode-list-inactiveSelectionBackground: #37373d;
|
|
115
|
+
--vscode-list-inactiveSelectionForeground: #d4d4d4;
|
|
116
|
+
--vscode-list-highlightForeground: #18a3ff;
|
|
117
|
+
|
|
118
|
+
/* Hover / parameter hints widget */
|
|
119
|
+
--vscode-editorHoverWidget-background: #252526;
|
|
120
|
+
--vscode-editorHoverWidget-foreground: #d4d4d4;
|
|
121
|
+
--vscode-editorHoverWidget-border: #454545;
|
|
122
|
+
--vscode-editorHoverWidget-statusBarBackground: #2c2c2d;
|
|
123
|
+
}
|
|
124
|
+
</style>
|
|
125
|
+
</head>
|
|
126
|
+
<body>
|
|
127
|
+
|
|
128
|
+
<!-- ─── Card 1: textbox with sift-style schema ──────────────────────────── -->
|
|
129
|
+
<div class="card">
|
|
130
|
+
<h2>Filter query <span style="opacity:.4;font-weight:400;font-size:12px;">— textbox, schema completions</span></h2>
|
|
131
|
+
<p>
|
|
132
|
+
Type <code style="color:#4FC1FF">{</code> then <kbd>Ctrl+Space</kbd> to open completions.
|
|
133
|
+
Schema fields: <code style="color:#4FC1FF">name</code> (string),
|
|
134
|
+
<code style="color:#4FC1FF">age</code> (number),
|
|
135
|
+
<code style="color:#4FC1FF">active</code> (boolean).
|
|
136
|
+
</p>
|
|
137
|
+
<label>Value</label>
|
|
138
|
+
<ok-json-input
|
|
139
|
+
id="filter-input"
|
|
140
|
+
style="min-height: 80px; display:flex; flex:1;"
|
|
141
|
+
:schema="filterSchema"
|
|
142
|
+
></ok-json-input>
|
|
143
|
+
<div style="margin-top:8px; display:flex; align-items:center; gap:8px;">
|
|
144
|
+
<span id="filter-badge" class="badge badge-ok">—</span>
|
|
145
|
+
<span style="opacity:.4; font-size:11px;">last valid value:</span>
|
|
146
|
+
</div>
|
|
147
|
+
<div id="filter-result" class="result">—</div>
|
|
148
|
+
</div>
|
|
149
|
+
|
|
150
|
+
<!-- ─── Card 2: single-line input mode ──────────────────────────────────── -->
|
|
151
|
+
<div class="card">
|
|
152
|
+
<h2>Prefix value <span style="opacity:.4;font-weight:400;font-size:12px;">— input mode (no schema)</span></h2>
|
|
153
|
+
<p>Single-line mode. Press Enter to commit, Shift+Enter to add a newline.</p>
|
|
154
|
+
<label>Value</label>
|
|
155
|
+
<ok-json-input
|
|
156
|
+
id="prefix-input"
|
|
157
|
+
mode="input"
|
|
158
|
+
style="width: 280px;"
|
|
159
|
+
></ok-json-input>
|
|
160
|
+
<div id="prefix-result" class="result">—</div>
|
|
161
|
+
</div>
|
|
162
|
+
|
|
163
|
+
<!-- ─── Card 3: schema with $or / logical operators ─────────────────────── -->
|
|
164
|
+
<div class="card">
|
|
165
|
+
<h2>Logical query <span style="opacity:.4;font-weight:400;font-size:12px;">— textbox, richer schema</span></h2>
|
|
166
|
+
<p>
|
|
167
|
+
Schema exposes <code style="color:#4FC1FF">$and</code>, <code style="color:#4FC1FF">$or</code>, <code style="color:#4FC1FF">$nor</code>
|
|
168
|
+
at the top level in addition to field names.
|
|
169
|
+
Try typing <code style="color:#4FC1FF">"$</code> and pressing Ctrl+Space.
|
|
170
|
+
</p>
|
|
171
|
+
<label>Value</label>
|
|
172
|
+
<ok-json-input
|
|
173
|
+
id="logical-input"
|
|
174
|
+
style="min-height: 110px; display:flex; flex:1;"
|
|
175
|
+
:schema="logicalSchema"
|
|
176
|
+
></ok-json-input>
|
|
177
|
+
<div id="logical-result" class="result">—</div>
|
|
178
|
+
</div>
|
|
179
|
+
|
|
180
|
+
<script type="module">
|
|
181
|
+
import OK from '@okjs';
|
|
7
182
|
import okJsonInput from './components/ok-json-input.ok.js';
|
|
8
183
|
|
|
9
184
|
// ── bootstrap ok.js ─────────────────────────────────────────────────────
|
|
@@ -98,4 +273,8 @@
|
|
|
98
273
|
|
|
99
274
|
showResult('filter-input', 'filter-result', 'filter-badge');
|
|
100
275
|
showResult('prefix-input', 'prefix-result', null);
|
|
101
|
-
showResult('logical-input', 'logical-result', null)
|
|
276
|
+
showResult('logical-input', 'logical-result', null);
|
|
277
|
+
</script>
|
|
278
|
+
</body>
|
|
279
|
+
</html>
|
|
280
|
+
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
let IMPLIED_BY={};export function setImpliedBy(r){IMPLIED_BY=r||{}}export function hasPermission(r,t){if(!Array.isArray(r)||0===r.length)return!1;for(const n of r){if("string"!=typeof n||!n.includes(":")){if("*"===n)return!0;continue}const[r,e]=n.split(":"),[i,o]=t.split(":");if(!("*"!==r&&r!==i||"*"!==e&&e!==o))return!0}const n=IMPLIED_BY[t];if(n)for(const t of n)if(hasPermission(r,t))return!0;return!1}export function permLabel(r){return r}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const COMPARISON_OPS={$eq:{description:"Equals this value exactly"},$ne:{description:"Not equal to this value"},$gt:{description:"Greater than"},$gte:{description:"Greater than or equal"},$lt:{description:"Less than"},$lte:{description:"Less than or equal"}},SET_OPS={$in:{type:"array",items:{},description:'Value is one of these (OR match) e.g. {"$in": ["a","b"]}'},$nin:{type:"array",items:{},description:'Value is NOT one of these e.g. {"$nin": [1,2]}'}},ELEMENT_OPS={$exists:{type:"boolean",enum:[!0,!1],description:"true → field must be present, false → field must be absent"},$type:{type:"string",enum:["string","number","boolean","object","array","null","undefined"],description:"Match by JavaScript type name"}},STRING_OPS={$regex:{type:"string",description:'Regular-expression pattern e.g. {"$regex": "^foo"}'},$options:{type:"string",description:'Regex flags used with $regex e.g. "i" for case-insensitive'}},NUMERIC_OPS={$mod:{type:"array",items:{type:"number"},minItems:2,maxItems:2,description:'Modulo [divisor, remainder] e.g. {"$mod":[2,0]} matches even numbers'}},ARRAY_OPS={$size:{type:"number",description:"Array length equals this number"},$all:{type:"array",items:{},description:"Array contains ALL of these values"},$elemMatch:{type:"object",description:"At least one array element matches this sub-query"}};function buildOperatorProperties(e=[]){const t=e.includes("number"),i=e.includes("string"),r=e.includes("array"),n=0===e.length,s={...COMPARISON_OPS,...SET_OPS,...ELEMENT_OPS};return(t||n)&&Object.assign(s,NUMERIC_OPS),(i||n)&&Object.assign(s,STRING_OPS),(r||n)&&Object.assign(s,ARRAY_OPS),s.$not={type:"object",description:'Negate the nested operator conditions e.g. {"$not":{"$gt":5}}',properties:{...s},additionalProperties:!1},s}function buildFieldSchema(e,t=[]){return{description:`"${e}" (${t.length?t.join(" | "):"any"})`,oneOf:[{description:'Direct equality match e.g. "value" or 42',not:{type:"object"}},{type:"object",description:"Operator conditions",properties:buildOperatorProperties(t),additionalProperties:!1}]}}export function buildSiftSchema(e={}){const t={};for(const[i,r]of Object.entries(e))t[i]=buildFieldSchema(i,Array.isArray(r)?r:[String(r)]);const i={$ref:"#"};return t.$and={type:"array",items:i,description:"AND — all sub-conditions must match"},t.$or={type:"array",items:i,description:"OR — at least one sub-condition must match"},t.$nor={type:"array",items:i,description:"NOR — no sub-condition may match"},{$schema:"http://json-schema.org/draft-07/schema#",title:"Sift filter",description:"MongoDB-style sift filter. Field names are keys; use $and/$or/$nor for logic.",type:"object",properties:t,additionalProperties:buildFieldSchema("(field)",[])}}
|