@hanzo/ui 8.27.57 → 8.27.58
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/dist/backends/gui/code-editor.cjs +374 -71
- package/dist/backends/gui/code-editor.d.ts +46 -25
- package/dist/backends/gui/code-editor.d.ts.map +1 -1
- package/dist/backends/gui/code-editor.js +376 -73
- package/dist/backends/gui/code-editor.js.map +1 -1
- package/dist/backends/gui/index.cjs +9 -4
- package/dist/backends/gui/index.d.ts +3 -1
- package/dist/backends/gui/index.d.ts.map +1 -1
- package/dist/backends/gui/index.js +2 -0
- package/dist/backends/gui/index.js.map +1 -1
- package/dist/backends/gui/json-tree.cjs +135 -0
- package/dist/backends/gui/json-tree.d.ts +26 -0
- package/dist/backends/gui/json-tree.d.ts.map +1 -0
- package/dist/backends/gui/json-tree.js +100 -0
- package/dist/backends/gui/json-tree.js.map +1 -0
- package/dist/backends/gui/json.cjs +183 -0
- package/dist/backends/gui/json.d.ts +41 -0
- package/dist/backends/gui/json.d.ts.map +1 -0
- package/dist/backends/gui/json.js +180 -0
- package/dist/backends/gui/json.js.map +1 -0
- package/dist/gallery.html +7 -5
- package/dist/index.cjs +8 -4
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.node.cjs +8 -4
- package/dist/index.node.js +1 -1
- package/dist/primitives/JsonTree.cjs +8 -0
- package/dist/primitives/JsonTree.d.ts +2 -0
- package/dist/primitives/JsonTree.d.ts.map +1 -0
- package/dist/primitives/JsonTree.js +5 -0
- package/dist/primitives/JsonTree.js.map +1 -0
- package/dist/primitives/Picker.cjs +8 -0
- package/dist/primitives/Picker.d.ts +2 -0
- package/dist/primitives/Picker.d.ts.map +1 -0
- package/dist/primitives/Picker.js +5 -0
- package/dist/primitives/Picker.js.map +1 -0
- package/dist/primitives/checkJson.cjs +8 -0
- package/dist/primitives/checkJson.d.ts +2 -0
- package/dist/primitives/checkJson.d.ts.map +1 -0
- package/dist/primitives/checkJson.js +5 -0
- package/dist/primitives/checkJson.js.map +1 -0
- package/dist/primitives/formatJson.cjs +8 -0
- package/dist/primitives/formatJson.d.ts +2 -0
- package/dist/primitives/formatJson.d.ts.map +1 -0
- package/dist/primitives/formatJson.js +5 -0
- package/dist/primitives/formatJson.js.map +1 -0
- package/dist/styles.css +4 -2
- package/package.json +7 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/json.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,MAAM,SAAS,GACjB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAEhF,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAoJD,+EAA+E;AAC/E,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,SAAS,CAUjF;AAED,uEAAuE;AACvE,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGtD"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSON verdicts — whether a piece of text is JSON, plain text, or broken JSON,
|
|
3
|
+
* and for broken JSON the offset, line, column and reason.
|
|
4
|
+
*
|
|
5
|
+
* `JSON.parse` decides validity; it is the parser every caller will use on the
|
|
6
|
+
* text afterwards, so nothing here can call valid what it refuses. It does not
|
|
7
|
+
* say where it failed in a form every engine shares (V8 names a position,
|
|
8
|
+
* Firefox a line and column, Safari neither), so a broken document is walked a
|
|
9
|
+
* second time by a scanner that follows RFC 8259 and reports the first byte it
|
|
10
|
+
* cannot accept, in the same words on every engine.
|
|
11
|
+
*
|
|
12
|
+
* Imports nothing, so a server, a test or a worker can read it.
|
|
13
|
+
*/
|
|
14
|
+
const SPACE = ' \t\n\r';
|
|
15
|
+
const ESCAPE = '"\\/bfnrt';
|
|
16
|
+
const NUMBER = /-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?/y;
|
|
17
|
+
const HEX = /[0-9a-fA-F]{4}/y;
|
|
18
|
+
const shown = (c) => c === undefined ? 'end of input' : c === '\n' ? 'line break' : `character '${c}'`;
|
|
19
|
+
/** The first offset RFC 8259 does not accept, and why; `null` when it accepts all of it. */
|
|
20
|
+
function scan(s) {
|
|
21
|
+
let i = 0;
|
|
22
|
+
const fail = (message, at = i) => {
|
|
23
|
+
throw { at, message };
|
|
24
|
+
};
|
|
25
|
+
const space = () => {
|
|
26
|
+
while (i < s.length && SPACE.includes(s[i]))
|
|
27
|
+
i++;
|
|
28
|
+
};
|
|
29
|
+
const string = () => {
|
|
30
|
+
i++;
|
|
31
|
+
while (i < s.length) {
|
|
32
|
+
const c = s[i];
|
|
33
|
+
if (c === '"') {
|
|
34
|
+
i++;
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
if (c === '\\') {
|
|
38
|
+
const e = s[i + 1];
|
|
39
|
+
if (e === 'u') {
|
|
40
|
+
HEX.lastIndex = i + 2;
|
|
41
|
+
if (!HEX.test(s))
|
|
42
|
+
fail('Expected four hex digits after \\u', i + 2);
|
|
43
|
+
i += 6;
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
if (e === undefined || !ESCAPE.includes(e))
|
|
47
|
+
fail(`Invalid escape '\\${e ?? ''}' in string`, i + 1);
|
|
48
|
+
i += 2;
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
if (c < ' ')
|
|
52
|
+
fail(c === '\n' ? 'Unterminated string' : 'Control character in string');
|
|
53
|
+
i++;
|
|
54
|
+
}
|
|
55
|
+
fail('Unterminated string');
|
|
56
|
+
};
|
|
57
|
+
const number = () => {
|
|
58
|
+
NUMBER.lastIndex = i;
|
|
59
|
+
const m = NUMBER.exec(s);
|
|
60
|
+
if (!m || m[0] === '-')
|
|
61
|
+
fail('Invalid number');
|
|
62
|
+
i += m[0].length;
|
|
63
|
+
};
|
|
64
|
+
const object = () => {
|
|
65
|
+
i++;
|
|
66
|
+
space();
|
|
67
|
+
if (s[i] === '}') {
|
|
68
|
+
i++;
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
for (;;) {
|
|
72
|
+
space();
|
|
73
|
+
if (s[i] !== '"') {
|
|
74
|
+
fail(s[i] === '}' ? "Trailing comma before '}'" : `Expected a double-quoted property name, found ${shown(s[i])}`);
|
|
75
|
+
}
|
|
76
|
+
string();
|
|
77
|
+
space();
|
|
78
|
+
if (s[i] !== ':')
|
|
79
|
+
fail(`Expected ':' after property name, found ${shown(s[i])}`);
|
|
80
|
+
i++;
|
|
81
|
+
value();
|
|
82
|
+
space();
|
|
83
|
+
if (s[i] === ',') {
|
|
84
|
+
i++;
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
if (s[i] === '}') {
|
|
88
|
+
i++;
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
fail(`Expected ',' or '}' after property value, found ${shown(s[i])}`);
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
const array = () => {
|
|
95
|
+
i++;
|
|
96
|
+
space();
|
|
97
|
+
if (s[i] === ']') {
|
|
98
|
+
i++;
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
for (;;) {
|
|
102
|
+
space();
|
|
103
|
+
if (s[i] === ']')
|
|
104
|
+
fail("Trailing comma before ']'");
|
|
105
|
+
value();
|
|
106
|
+
space();
|
|
107
|
+
if (s[i] === ',') {
|
|
108
|
+
i++;
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
if (s[i] === ']') {
|
|
112
|
+
i++;
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
fail(`Expected ',' or ']' after array element, found ${shown(s[i])}`);
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
const value = () => {
|
|
119
|
+
space();
|
|
120
|
+
const c = s[i];
|
|
121
|
+
if (c === '{')
|
|
122
|
+
return object();
|
|
123
|
+
if (c === '[')
|
|
124
|
+
return array();
|
|
125
|
+
if (c === '"')
|
|
126
|
+
return string();
|
|
127
|
+
if (c === '-' || (c !== undefined && c >= '0' && c <= '9'))
|
|
128
|
+
return number();
|
|
129
|
+
for (const word of ['true', 'false', 'null']) {
|
|
130
|
+
if (s.startsWith(word, i)) {
|
|
131
|
+
i += word.length;
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
fail(`Unexpected ${shown(c)}`);
|
|
136
|
+
};
|
|
137
|
+
try {
|
|
138
|
+
value();
|
|
139
|
+
space();
|
|
140
|
+
if (i < s.length)
|
|
141
|
+
fail(`Unexpected ${shown(s[i])} after the JSON value`);
|
|
142
|
+
return null;
|
|
143
|
+
}
|
|
144
|
+
catch (e) {
|
|
145
|
+
return e;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
/** The 1-based line and column of an offset. */
|
|
149
|
+
function place(s, at) {
|
|
150
|
+
let line = 1;
|
|
151
|
+
let start = 0;
|
|
152
|
+
for (let i = 0; i < at && i < s.length; i++) {
|
|
153
|
+
if (s[i] === '\n') {
|
|
154
|
+
line++;
|
|
155
|
+
start = i + 1;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return { line, column: at - start + 1 };
|
|
159
|
+
}
|
|
160
|
+
/** Is `text` JSON, plain text (when allowed), empty, or broken — and where? */
|
|
161
|
+
export function checkJson(text, options = {}) {
|
|
162
|
+
const body = text.trim();
|
|
163
|
+
if (!body)
|
|
164
|
+
return { kind: 'empty' };
|
|
165
|
+
try {
|
|
166
|
+
return { kind: 'json', value: JSON.parse(text) };
|
|
167
|
+
}
|
|
168
|
+
catch (e) {
|
|
169
|
+
if (options.text && body[0] !== '{' && body[0] !== '[')
|
|
170
|
+
return { kind: 'text', value: text };
|
|
171
|
+
const fault = scan(text) ?? { at: 0, message: e instanceof Error ? e.message : String(e) };
|
|
172
|
+
return { kind: 'error', message: fault.message, at: fault.at, ...place(text, fault.at) };
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
/** `text` re-indented by two spaces, or `null` when it is not JSON. */
|
|
176
|
+
export function formatJson(text) {
|
|
177
|
+
const check = checkJson(text);
|
|
178
|
+
return check.kind === 'json' ? JSON.stringify(check.value, null, 2) : null;
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../../src/backends/gui/json.ts"],"names":[],"mappings":"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"}
|