@highstate/designer 0.4.2 → 0.4.3

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.
Files changed (119) hide show
  1. package/.output/nitro.json +15 -0
  2. package/.output/public/_nuxt/B-YqONwZ.js +1 -0
  3. package/.output/public/_nuxt/COXQCz2I.js +1 -0
  4. package/.output/public/_nuxt/DNF_Kfc9.js +1 -0
  5. package/.output/public/_nuxt/DYyPqv2f.js +164 -0
  6. package/.output/public/_nuxt/builds/latest.json +1 -0
  7. package/.output/public/_nuxt/builds/meta/83577d4c-8c1d-41fa-bec1-21181eaa9f33.json +1 -0
  8. package/.output/public/_nuxt/entry.BSAdMt6G.css +5 -0
  9. package/.output/public/_nuxt/error-404.BJkSn6RI.css +1 -0
  10. package/.output/public/_nuxt/error-500.TOCKLquH.css +1 -0
  11. package/.output/public/favicon.ico +0 -0
  12. package/.output/public/robots.txt +1 -0
  13. package/.output/server/index.mjs +12266 -0
  14. package/.output/server/index.mjs.map +1 -0
  15. package/.output/server/node_modules/@babel/parser/lib/index.js +14183 -0
  16. package/.output/server/node_modules/@babel/parser/package.json +50 -0
  17. package/.output/server/node_modules/@trpc/server/dist/http.mjs +7 -0
  18. package/.output/server/node_modules/@trpc/server/dist/index.mjs +11 -0
  19. package/.output/server/node_modules/@trpc/server/dist/observable/observable.mjs +175 -0
  20. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/createProxy.mjs +73 -0
  21. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/error/TRPCError.mjs +78 -0
  22. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/error/formatter.mjs +5 -0
  23. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/error/getErrorShape.mjs +29 -0
  24. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/http/contentType.mjs +224 -0
  25. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/http/contentTypeParsers.mjs +12 -0
  26. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/http/getHTTPStatusCode.mjs +76 -0
  27. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/http/isAbortError.mjs +7 -0
  28. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/http/parseConnectionParams.mjs +39 -0
  29. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/http/resolveResponse.mjs +569 -0
  30. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/initTRPC.mjs +80 -0
  31. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/middleware.mjs +90 -0
  32. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/parser.mjs +40 -0
  33. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/procedureBuilder.mjs +194 -0
  34. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/rootConfig.mjs +6 -0
  35. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/router.mjs +176 -0
  36. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/rpc/codes.mjs +54 -0
  37. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/jsonl.mjs +597 -0
  38. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/sse.mjs +359 -0
  39. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/tracked.mjs +25 -0
  40. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/asyncIterable.mjs +167 -0
  41. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/createDeferred.mjs +15 -0
  42. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/disposable.mjs +41 -0
  43. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/mergeAsyncIterables.mjs +239 -0
  44. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/readableStreamFrom.mjs +23 -0
  45. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/timerResource.mjs +23 -0
  46. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/withPing.mjs +127 -0
  47. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/transformer.mjs +101 -0
  48. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/utils.mjs +83 -0
  49. package/.output/server/node_modules/@trpc/server/dist/vendor/unpromise/unpromise.mjs +289 -0
  50. package/.output/server/node_modules/@trpc/server/package.json +156 -0
  51. package/.output/server/node_modules/@unhead/dom/dist/index.mjs +197 -0
  52. package/.output/server/node_modules/@unhead/dom/package.json +40 -0
  53. package/.output/server/node_modules/@unhead/shared/dist/index.mjs +641 -0
  54. package/.output/server/node_modules/@unhead/shared/package.json +45 -0
  55. package/.output/server/node_modules/@unhead/ssr/dist/index.mjs +95 -0
  56. package/.output/server/node_modules/@unhead/ssr/package.json +40 -0
  57. package/.output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js +6690 -0
  58. package/.output/server/node_modules/@vue/compiler-core/package.json +58 -0
  59. package/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js +686 -0
  60. package/.output/server/node_modules/@vue/compiler-dom/package.json +57 -0
  61. package/.output/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js +1404 -0
  62. package/.output/server/node_modules/@vue/compiler-ssr/package.json +34 -0
  63. package/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js +1789 -0
  64. package/.output/server/node_modules/@vue/reactivity/package.json +55 -0
  65. package/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js +6654 -0
  66. package/.output/server/node_modules/@vue/runtime-core/package.json +52 -0
  67. package/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js +1669 -0
  68. package/.output/server/node_modules/@vue/runtime-dom/package.json +60 -0
  69. package/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js +857 -0
  70. package/.output/server/node_modules/@vue/server-renderer/package.json +55 -0
  71. package/.output/server/node_modules/@vue/shared/dist/shared.cjs.prod.js +594 -0
  72. package/.output/server/node_modules/@vue/shared/package.json +47 -0
  73. package/.output/server/node_modules/devalue/index.js +3 -0
  74. package/.output/server/node_modules/devalue/package.json +34 -0
  75. package/.output/server/node_modules/devalue/src/base64.js +110 -0
  76. package/.output/server/node_modules/devalue/src/constants.js +6 -0
  77. package/.output/server/node_modules/devalue/src/parse.js +160 -0
  78. package/.output/server/node_modules/devalue/src/stringify.js +232 -0
  79. package/.output/server/node_modules/devalue/src/uneval.js +351 -0
  80. package/.output/server/node_modules/devalue/src/utils.js +113 -0
  81. package/.output/server/node_modules/entities/lib/decode.js +536 -0
  82. package/.output/server/node_modules/entities/lib/decode_codepoint.js +76 -0
  83. package/.output/server/node_modules/entities/lib/generated/decode-data-html.js +9 -0
  84. package/.output/server/node_modules/entities/lib/generated/decode-data-xml.js +9 -0
  85. package/.output/server/node_modules/entities/package.json +90 -0
  86. package/.output/server/node_modules/estree-walker/dist/umd/estree-walker.js +344 -0
  87. package/.output/server/node_modules/estree-walker/package.json +37 -0
  88. package/.output/server/node_modules/hookable/dist/index.mjs +290 -0
  89. package/.output/server/node_modules/hookable/package.json +49 -0
  90. package/.output/server/node_modules/packrup/dist/index.mjs +108 -0
  91. package/.output/server/node_modules/packrup/package.json +58 -0
  92. package/.output/server/node_modules/source-map-js/lib/array-set.js +121 -0
  93. package/.output/server/node_modules/source-map-js/lib/base64-vlq.js +140 -0
  94. package/.output/server/node_modules/source-map-js/lib/base64.js +67 -0
  95. package/.output/server/node_modules/source-map-js/lib/binary-search.js +111 -0
  96. package/.output/server/node_modules/source-map-js/lib/mapping-list.js +79 -0
  97. package/.output/server/node_modules/source-map-js/lib/quick-sort.js +132 -0
  98. package/.output/server/node_modules/source-map-js/lib/source-map-consumer.js +1188 -0
  99. package/.output/server/node_modules/source-map-js/lib/source-map-generator.js +444 -0
  100. package/.output/server/node_modules/source-map-js/lib/source-node.js +413 -0
  101. package/.output/server/node_modules/source-map-js/lib/util.js +594 -0
  102. package/.output/server/node_modules/source-map-js/package.json +71 -0
  103. package/.output/server/node_modules/source-map-js/source-map.js +8 -0
  104. package/.output/server/node_modules/ufo/dist/index.mjs +630 -0
  105. package/.output/server/node_modules/ufo/package.json +47 -0
  106. package/.output/server/node_modules/unhead/dist/index.mjs +748 -0
  107. package/.output/server/node_modules/unhead/package.json +46 -0
  108. package/.output/server/node_modules/vue/dist/vue.cjs.js +80 -0
  109. package/.output/server/node_modules/vue/dist/vue.cjs.prod.js +66 -0
  110. package/.output/server/node_modules/vue/index.js +7 -0
  111. package/.output/server/node_modules/vue/index.mjs +1 -0
  112. package/.output/server/node_modules/vue/package.json +112 -0
  113. package/.output/server/node_modules/vue/server-renderer/index.mjs +1 -0
  114. package/.output/server/node_modules/vue-bundle-renderer/dist/runtime.mjs +196 -0
  115. package/.output/server/node_modules/vue-bundle-renderer/package.json +50 -0
  116. package/.output/server/node_modules/zod/lib/index.mjs +4382 -0
  117. package/.output/server/node_modules/zod/package.json +122 -0
  118. package/.output/server/package.json +1 -0
  119. package/package.json +4 -4
@@ -0,0 +1,351 @@
1
+ import {
2
+ DevalueError,
3
+ enumerable_symbols,
4
+ escaped,
5
+ get_type,
6
+ is_plain_object,
7
+ is_primitive,
8
+ stringify_key,
9
+ stringify_string
10
+ } from './utils.js';
11
+
12
+ const chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_$';
13
+ const unsafe_chars = /[<\b\f\n\r\t\0\u2028\u2029]/g;
14
+ const reserved =
15
+ /^(?:do|if|in|for|int|let|new|try|var|byte|case|char|else|enum|goto|long|this|void|with|await|break|catch|class|const|final|float|short|super|throw|while|yield|delete|double|export|import|native|return|switch|throws|typeof|boolean|default|extends|finally|package|private|abstract|continue|debugger|function|volatile|interface|protected|transient|implements|instanceof|synchronized)$/;
16
+
17
+ /**
18
+ * Turn a value into the JavaScript that creates an equivalent value
19
+ * @param {any} value
20
+ * @param {(value: any) => string | void} [replacer]
21
+ */
22
+ export function uneval(value, replacer) {
23
+ const counts = new Map();
24
+
25
+ /** @type {string[]} */
26
+ const keys = [];
27
+
28
+ const custom = new Map();
29
+
30
+ /** @param {any} thing */
31
+ function walk(thing) {
32
+ if (typeof thing === 'function') {
33
+ throw new DevalueError(`Cannot stringify a function`, keys);
34
+ }
35
+
36
+ if (!is_primitive(thing)) {
37
+ if (counts.has(thing)) {
38
+ counts.set(thing, counts.get(thing) + 1);
39
+ return;
40
+ }
41
+
42
+ counts.set(thing, 1);
43
+
44
+ if (replacer) {
45
+ const str = replacer(thing);
46
+
47
+ if (typeof str === 'string') {
48
+ custom.set(thing, str);
49
+ return;
50
+ }
51
+ }
52
+
53
+ const type = get_type(thing);
54
+
55
+ switch (type) {
56
+ case 'Number':
57
+ case 'BigInt':
58
+ case 'String':
59
+ case 'Boolean':
60
+ case 'Date':
61
+ case 'RegExp':
62
+ return;
63
+
64
+ case 'Array':
65
+ /** @type {any[]} */ (thing).forEach((value, i) => {
66
+ keys.push(`[${i}]`);
67
+ walk(value);
68
+ keys.pop();
69
+ });
70
+ break;
71
+
72
+ case 'Set':
73
+ Array.from(thing).forEach(walk);
74
+ break;
75
+
76
+ case 'Map':
77
+ for (const [key, value] of thing) {
78
+ keys.push(
79
+ `.get(${is_primitive(key) ? stringify_primitive(key) : '...'})`
80
+ );
81
+ walk(value);
82
+ keys.pop();
83
+ }
84
+ break;
85
+
86
+ case "Int8Array":
87
+ case "Uint8Array":
88
+ case "Uint8ClampedArray":
89
+ case "Int16Array":
90
+ case "Uint16Array":
91
+ case "Int32Array":
92
+ case "Uint32Array":
93
+ case "Float32Array":
94
+ case "Float64Array":
95
+ case "BigInt64Array":
96
+ case "BigUint64Array":
97
+ return;
98
+
99
+ case "ArrayBuffer":
100
+ return;
101
+
102
+ default:
103
+ if (!is_plain_object(thing)) {
104
+ throw new DevalueError(
105
+ `Cannot stringify arbitrary non-POJOs`,
106
+ keys
107
+ );
108
+ }
109
+
110
+ if (enumerable_symbols(thing).length > 0) {
111
+ throw new DevalueError(
112
+ `Cannot stringify POJOs with symbolic keys`,
113
+ keys
114
+ );
115
+ }
116
+
117
+ for (const key in thing) {
118
+ keys.push(stringify_key(key));
119
+ walk(thing[key]);
120
+ keys.pop();
121
+ }
122
+ }
123
+ }
124
+ }
125
+
126
+ walk(value);
127
+
128
+ const names = new Map();
129
+
130
+ Array.from(counts)
131
+ .filter((entry) => entry[1] > 1)
132
+ .sort((a, b) => b[1] - a[1])
133
+ .forEach((entry, i) => {
134
+ names.set(entry[0], get_name(i));
135
+ });
136
+
137
+ /**
138
+ * @param {any} thing
139
+ * @returns {string}
140
+ */
141
+ function stringify(thing) {
142
+ if (names.has(thing)) {
143
+ return names.get(thing);
144
+ }
145
+
146
+ if (is_primitive(thing)) {
147
+ return stringify_primitive(thing);
148
+ }
149
+
150
+ if (custom.has(thing)) {
151
+ return custom.get(thing);
152
+ }
153
+
154
+ const type = get_type(thing);
155
+
156
+ switch (type) {
157
+ case 'Number':
158
+ case 'String':
159
+ case 'Boolean':
160
+ return `Object(${stringify(thing.valueOf())})`;
161
+
162
+ case 'RegExp':
163
+ return `new RegExp(${stringify_string(thing.source)}, "${
164
+ thing.flags
165
+ }")`;
166
+
167
+ case 'Date':
168
+ return `new Date(${thing.getTime()})`;
169
+
170
+ case 'Array':
171
+ const members = /** @type {any[]} */ (thing).map((v, i) =>
172
+ i in thing ? stringify(v) : ''
173
+ );
174
+ const tail = thing.length === 0 || thing.length - 1 in thing ? '' : ',';
175
+ return `[${members.join(',')}${tail}]`;
176
+
177
+ case 'Set':
178
+ case 'Map':
179
+ return `new ${type}([${Array.from(thing).map(stringify).join(',')}])`;
180
+
181
+ case "Int8Array":
182
+ case "Uint8Array":
183
+ case "Uint8ClampedArray":
184
+ case "Int16Array":
185
+ case "Uint16Array":
186
+ case "Int32Array":
187
+ case "Uint32Array":
188
+ case "Float32Array":
189
+ case "Float64Array":
190
+ case "BigInt64Array":
191
+ case "BigUint64Array": {
192
+ /** @type {import("./types.js").TypedArray} */
193
+ const typedArray = thing;
194
+ return `new ${type}([${typedArray.toString()}])`;
195
+ }
196
+
197
+ case "ArrayBuffer": {
198
+ const ui8 = new Uint8Array(thing);
199
+ return `new Uint8Array([${ui8.toString()}]).buffer`;
200
+ }
201
+
202
+ default:
203
+ const obj = `{${Object.keys(thing)
204
+ .map((key) => `${safe_key(key)}:${stringify(thing[key])}`)
205
+ .join(',')}}`;
206
+ const proto = Object.getPrototypeOf(thing);
207
+ if (proto === null) {
208
+ return Object.keys(thing).length > 0
209
+ ? `Object.assign(Object.create(null),${obj})`
210
+ : `Object.create(null)`;
211
+ }
212
+
213
+ return obj;
214
+ }
215
+ }
216
+
217
+ const str = stringify(value);
218
+
219
+ if (names.size) {
220
+ /** @type {string[]} */
221
+ const params = [];
222
+
223
+ /** @type {string[]} */
224
+ const statements = [];
225
+
226
+ /** @type {string[]} */
227
+ const values = [];
228
+
229
+ names.forEach((name, thing) => {
230
+ params.push(name);
231
+
232
+ if (custom.has(thing)) {
233
+ values.push(/** @type {string} */ (custom.get(thing)));
234
+ return;
235
+ }
236
+
237
+ if (is_primitive(thing)) {
238
+ values.push(stringify_primitive(thing));
239
+ return;
240
+ }
241
+
242
+ const type = get_type(thing);
243
+
244
+ switch (type) {
245
+ case 'Number':
246
+ case 'String':
247
+ case 'Boolean':
248
+ values.push(`Object(${stringify(thing.valueOf())})`);
249
+ break;
250
+
251
+ case 'RegExp':
252
+ values.push(thing.toString());
253
+ break;
254
+
255
+ case 'Date':
256
+ values.push(`new Date(${thing.getTime()})`);
257
+ break;
258
+
259
+ case 'Array':
260
+ values.push(`Array(${thing.length})`);
261
+ /** @type {any[]} */ (thing).forEach((v, i) => {
262
+ statements.push(`${name}[${i}]=${stringify(v)}`);
263
+ });
264
+ break;
265
+
266
+ case 'Set':
267
+ values.push(`new Set`);
268
+ statements.push(
269
+ `${name}.${Array.from(thing)
270
+ .map((v) => `add(${stringify(v)})`)
271
+ .join('.')}`
272
+ );
273
+ break;
274
+
275
+ case 'Map':
276
+ values.push(`new Map`);
277
+ statements.push(
278
+ `${name}.${Array.from(thing)
279
+ .map(([k, v]) => `set(${stringify(k)}, ${stringify(v)})`)
280
+ .join('.')}`
281
+ );
282
+ break;
283
+
284
+ default:
285
+ values.push(
286
+ Object.getPrototypeOf(thing) === null ? 'Object.create(null)' : '{}'
287
+ );
288
+ Object.keys(thing).forEach((key) => {
289
+ statements.push(
290
+ `${name}${safe_prop(key)}=${stringify(thing[key])}`
291
+ );
292
+ });
293
+ }
294
+ });
295
+
296
+ statements.push(`return ${str}`);
297
+
298
+ return `(function(${params.join(',')}){${statements.join(
299
+ ';'
300
+ )}}(${values.join(',')}))`;
301
+ } else {
302
+ return str;
303
+ }
304
+ }
305
+
306
+ /** @param {number} num */
307
+ function get_name(num) {
308
+ let name = '';
309
+
310
+ do {
311
+ name = chars[num % chars.length] + name;
312
+ num = ~~(num / chars.length) - 1;
313
+ } while (num >= 0);
314
+
315
+ return reserved.test(name) ? `${name}0` : name;
316
+ }
317
+
318
+ /** @param {string} c */
319
+ function escape_unsafe_char(c) {
320
+ return escaped[c] || c;
321
+ }
322
+
323
+ /** @param {string} str */
324
+ function escape_unsafe_chars(str) {
325
+ return str.replace(unsafe_chars, escape_unsafe_char);
326
+ }
327
+
328
+ /** @param {string} key */
329
+ function safe_key(key) {
330
+ return /^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(key)
331
+ ? key
332
+ : escape_unsafe_chars(JSON.stringify(key));
333
+ }
334
+
335
+ /** @param {string} key */
336
+ function safe_prop(key) {
337
+ return /^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(key)
338
+ ? `.${key}`
339
+ : `[${escape_unsafe_chars(JSON.stringify(key))}]`;
340
+ }
341
+
342
+ /** @param {any} thing */
343
+ function stringify_primitive(thing) {
344
+ if (typeof thing === 'string') return stringify_string(thing);
345
+ if (thing === void 0) return 'void 0';
346
+ if (thing === 0 && 1 / thing < 0) return '-0';
347
+ const str = String(thing);
348
+ if (typeof thing === 'number') return str.replace(/^(-)?0\./, '$1.');
349
+ if (typeof thing === 'bigint') return thing + 'n';
350
+ return str;
351
+ }
@@ -0,0 +1,113 @@
1
+ /** @type {Record<string, string>} */
2
+ export const escaped = {
3
+ '<': '\\u003C',
4
+ '\\': '\\\\',
5
+ '\b': '\\b',
6
+ '\f': '\\f',
7
+ '\n': '\\n',
8
+ '\r': '\\r',
9
+ '\t': '\\t',
10
+ '\u2028': '\\u2028',
11
+ '\u2029': '\\u2029'
12
+ };
13
+
14
+ export class DevalueError extends Error {
15
+ /**
16
+ * @param {string} message
17
+ * @param {string[]} keys
18
+ */
19
+ constructor(message, keys) {
20
+ super(message);
21
+ this.name = 'DevalueError';
22
+ this.path = keys.join('');
23
+ }
24
+ }
25
+
26
+ /** @param {any} thing */
27
+ export function is_primitive(thing) {
28
+ return Object(thing) !== thing;
29
+ }
30
+
31
+ const object_proto_names = /* @__PURE__ */ Object.getOwnPropertyNames(
32
+ Object.prototype
33
+ )
34
+ .sort()
35
+ .join('\0');
36
+
37
+ /** @param {any} thing */
38
+ export function is_plain_object(thing) {
39
+ const proto = Object.getPrototypeOf(thing);
40
+
41
+ return (
42
+ proto === Object.prototype ||
43
+ proto === null ||
44
+ Object.getOwnPropertyNames(proto).sort().join('\0') === object_proto_names
45
+ );
46
+ }
47
+
48
+ /** @param {any} thing */
49
+ export function get_type(thing) {
50
+ return Object.prototype.toString.call(thing).slice(8, -1);
51
+ }
52
+
53
+ /** @param {string} char */
54
+ function get_escaped_char(char) {
55
+ switch (char) {
56
+ case '"':
57
+ return '\\"';
58
+ case '<':
59
+ return '\\u003C';
60
+ case '\\':
61
+ return '\\\\';
62
+ case '\n':
63
+ return '\\n';
64
+ case '\r':
65
+ return '\\r';
66
+ case '\t':
67
+ return '\\t';
68
+ case '\b':
69
+ return '\\b';
70
+ case '\f':
71
+ return '\\f';
72
+ case '\u2028':
73
+ return '\\u2028';
74
+ case '\u2029':
75
+ return '\\u2029';
76
+ default:
77
+ return char < ' '
78
+ ? `\\u${char.charCodeAt(0).toString(16).padStart(4, '0')}`
79
+ : '';
80
+ }
81
+ }
82
+
83
+ /** @param {string} str */
84
+ export function stringify_string(str) {
85
+ let result = '';
86
+ let last_pos = 0;
87
+ const len = str.length;
88
+
89
+ for (let i = 0; i < len; i += 1) {
90
+ const char = str[i];
91
+ const replacement = get_escaped_char(char);
92
+ if (replacement) {
93
+ result += str.slice(last_pos, i) + replacement;
94
+ last_pos = i + 1;
95
+ }
96
+ }
97
+
98
+ return `"${last_pos === 0 ? str : result + str.slice(last_pos)}"`;
99
+ }
100
+
101
+ /** @param {Record<string | symbol, any>} object */
102
+ export function enumerable_symbols(object) {
103
+ return Object.getOwnPropertySymbols(object).filter(
104
+ (symbol) => Object.getOwnPropertyDescriptor(object, symbol).enumerable
105
+ );
106
+ }
107
+
108
+ const is_identifier = /^[a-zA-Z_$][a-zA-Z_$0-9]*$/;
109
+
110
+ /** @param {string} key */
111
+ export function stringify_key(key) {
112
+ return is_identifier.test(key) ? '.' + key : '[' + JSON.stringify(key) + ']';
113
+ }