@weaverse/hydrogen 2.2.5 → 2.4.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/dist/index.d.mts +13 -11
- package/dist/index.d.ts +13 -11
- package/dist/index.js +119 -1332
- package/dist/index.mjs +100 -1307
- package/package.json +32 -32
package/dist/index.mjs
CHANGED
|
@@ -1,13 +1,41 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __export = (target, all) => {
|
|
3
|
+
for (var name in all)
|
|
4
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
5
|
+
};
|
|
6
|
+
|
|
1
7
|
// src/index.ts
|
|
2
8
|
import {
|
|
3
9
|
Weaverse,
|
|
4
|
-
WeaverseItemStore
|
|
10
|
+
WeaverseItemStore,
|
|
11
|
+
useItemInstance,
|
|
12
|
+
useWeaverse
|
|
5
13
|
} from "@weaverse/react";
|
|
6
14
|
|
|
15
|
+
// src/components/main.tsx
|
|
16
|
+
var main_exports = {};
|
|
17
|
+
__export(main_exports, {
|
|
18
|
+
default: () => main_default,
|
|
19
|
+
schema: () => schema
|
|
20
|
+
});
|
|
21
|
+
import React, { forwardRef } from "react";
|
|
22
|
+
var Main = forwardRef((props, ref) => {
|
|
23
|
+
return /* @__PURE__ */ React.createElement("div", { ref, ...props });
|
|
24
|
+
});
|
|
25
|
+
var main_default = Main;
|
|
26
|
+
var schema = {
|
|
27
|
+
type: "main",
|
|
28
|
+
title: "Main",
|
|
29
|
+
inspector: []
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
// src/components/index.ts
|
|
33
|
+
var defaultComponents = [main_exports];
|
|
34
|
+
|
|
7
35
|
// src/WeaverseHydrogenRoot.tsx
|
|
8
36
|
import { Await, useLoaderData, useRouteLoaderData } from "@remix-run/react";
|
|
9
37
|
import { WeaverseRoot } from "@weaverse/react";
|
|
10
|
-
import
|
|
38
|
+
import React2, { memo, Suspense } from "react";
|
|
11
39
|
import { ErrorBoundary } from "react-error-boundary";
|
|
12
40
|
|
|
13
41
|
// src/context.ts
|
|
@@ -99,7 +127,7 @@ var ThemeSettingsStore = class _ThemeSettingsStore {
|
|
|
99
127
|
schema;
|
|
100
128
|
publicEnv;
|
|
101
129
|
constructor(data) {
|
|
102
|
-
let { theme, countries, schema, publicEnv } = data || {};
|
|
130
|
+
let { theme, countries, schema: schema2, publicEnv } = data || {};
|
|
103
131
|
if (isBrowser2 && _ThemeSettingsStore.settings) {
|
|
104
132
|
_ThemeSettingsStore.settings = {
|
|
105
133
|
...theme,
|
|
@@ -109,7 +137,7 @@ var ThemeSettingsStore = class _ThemeSettingsStore {
|
|
|
109
137
|
_ThemeSettingsStore.settings = theme || {};
|
|
110
138
|
}
|
|
111
139
|
this.countries = countries;
|
|
112
|
-
this.schema =
|
|
140
|
+
this.schema = schema2;
|
|
113
141
|
this.publicEnv = publicEnv;
|
|
114
142
|
}
|
|
115
143
|
updateThemeSettings = (newSettings) => {
|
|
@@ -157,13 +185,13 @@ var WeaverseHydrogenRoot = memo(
|
|
|
157
185
|
let data = loaderData?.weaverseData;
|
|
158
186
|
if (data) {
|
|
159
187
|
if (data instanceof Promise) {
|
|
160
|
-
return /* @__PURE__ */
|
|
161
|
-
return /* @__PURE__ */
|
|
188
|
+
return /* @__PURE__ */ React2.createElement(ErrorBoundary, { fallbackRender: ErrorComponent }, /* @__PURE__ */ React2.createElement(Suspense, null, /* @__PURE__ */ React2.createElement(Await, { resolve: data }, (resolvedData) => {
|
|
189
|
+
return /* @__PURE__ */ React2.createElement(RenderRoot, { data: resolvedData, components });
|
|
162
190
|
})));
|
|
163
191
|
}
|
|
164
|
-
return /* @__PURE__ */
|
|
192
|
+
return /* @__PURE__ */ React2.createElement(RenderRoot, { data, components });
|
|
165
193
|
}
|
|
166
|
-
return /* @__PURE__ */
|
|
194
|
+
return /* @__PURE__ */ React2.createElement(
|
|
167
195
|
ErrorComponent,
|
|
168
196
|
{
|
|
169
197
|
error: { message: "No Weaverse data return from route loader!" }
|
|
@@ -175,17 +203,17 @@ function RenderRoot(props) {
|
|
|
175
203
|
let { data, components } = props;
|
|
176
204
|
let weaverse = createWeaverseInstance(data, components);
|
|
177
205
|
useStudio(weaverse);
|
|
178
|
-
return /* @__PURE__ */
|
|
206
|
+
return /* @__PURE__ */ React2.createElement(WeaverseRoot, { context: weaverse });
|
|
179
207
|
}
|
|
180
208
|
function withWeaverse(Component) {
|
|
181
209
|
return (props) => {
|
|
182
210
|
let loaderData = useRouteLoaderData("root");
|
|
183
211
|
let themeSettingsStore = new ThemeSettingsStore(loaderData?.weaverseTheme);
|
|
184
|
-
return /* @__PURE__ */
|
|
212
|
+
return /* @__PURE__ */ React2.createElement(ThemeProvider.Provider, { value: themeSettingsStore }, /* @__PURE__ */ React2.createElement(Component, { ...props }));
|
|
185
213
|
};
|
|
186
214
|
}
|
|
187
215
|
function FallbackError({ error }) {
|
|
188
|
-
return /* @__PURE__ */
|
|
216
|
+
return /* @__PURE__ */ React2.createElement("div", null, error?.message || "An unexpected error occurred");
|
|
189
217
|
}
|
|
190
218
|
|
|
191
219
|
// src/weaverse-client.ts
|
|
@@ -193,7 +221,7 @@ import { createWithCache } from "@shopify/hydrogen";
|
|
|
193
221
|
|
|
194
222
|
// package.json
|
|
195
223
|
var package_default = {
|
|
196
|
-
version: "2.
|
|
224
|
+
version: "2.4.0",
|
|
197
225
|
license: "MIT",
|
|
198
226
|
main: "dist/index.js",
|
|
199
227
|
typings: "dist/index.d.ts",
|
|
@@ -227,12 +255,12 @@ var package_default = {
|
|
|
227
255
|
author: "Weaverse Team",
|
|
228
256
|
dependencies: {
|
|
229
257
|
"@remix-run/react": "1.19.1",
|
|
230
|
-
"@shopify/hydrogen": "2023.7.
|
|
231
|
-
"@weaverse/react": "2.
|
|
258
|
+
"@shopify/hydrogen": "^2023.7.13",
|
|
259
|
+
"@weaverse/react": "2.4.0",
|
|
232
260
|
"react-error-boundary": "^4.0.11"
|
|
233
261
|
},
|
|
234
262
|
devDependencies: {
|
|
235
|
-
"@shopify/remix-oxygen": "^1.1.
|
|
263
|
+
"@shopify/remix-oxygen": "^1.1.8"
|
|
236
264
|
}
|
|
237
265
|
};
|
|
238
266
|
|
|
@@ -268,1280 +296,8 @@ function getWeaverseConfigs(request, env) {
|
|
|
268
296
|
};
|
|
269
297
|
}
|
|
270
298
|
|
|
271
|
-
// ../../node_modules/prettier/doc.mjs
|
|
272
|
-
var __defProp = Object.defineProperty;
|
|
273
|
-
var __export = (target, all) => {
|
|
274
|
-
for (var name in all)
|
|
275
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
276
|
-
};
|
|
277
|
-
var public_exports = {};
|
|
278
|
-
__export(public_exports, {
|
|
279
|
-
builders: () => builders,
|
|
280
|
-
printer: () => printer,
|
|
281
|
-
utils: () => utils
|
|
282
|
-
});
|
|
283
|
-
var DOC_TYPE_STRING = "string";
|
|
284
|
-
var DOC_TYPE_ARRAY = "array";
|
|
285
|
-
var DOC_TYPE_CURSOR = "cursor";
|
|
286
|
-
var DOC_TYPE_INDENT = "indent";
|
|
287
|
-
var DOC_TYPE_ALIGN = "align";
|
|
288
|
-
var DOC_TYPE_TRIM = "trim";
|
|
289
|
-
var DOC_TYPE_GROUP = "group";
|
|
290
|
-
var DOC_TYPE_FILL = "fill";
|
|
291
|
-
var DOC_TYPE_IF_BREAK = "if-break";
|
|
292
|
-
var DOC_TYPE_INDENT_IF_BREAK = "indent-if-break";
|
|
293
|
-
var DOC_TYPE_LINE_SUFFIX = "line-suffix";
|
|
294
|
-
var DOC_TYPE_LINE_SUFFIX_BOUNDARY = "line-suffix-boundary";
|
|
295
|
-
var DOC_TYPE_LINE = "line";
|
|
296
|
-
var DOC_TYPE_LABEL = "label";
|
|
297
|
-
var DOC_TYPE_BREAK_PARENT = "break-parent";
|
|
298
|
-
var VALID_OBJECT_DOC_TYPES = /* @__PURE__ */ new Set([
|
|
299
|
-
DOC_TYPE_CURSOR,
|
|
300
|
-
DOC_TYPE_INDENT,
|
|
301
|
-
DOC_TYPE_ALIGN,
|
|
302
|
-
DOC_TYPE_TRIM,
|
|
303
|
-
DOC_TYPE_GROUP,
|
|
304
|
-
DOC_TYPE_FILL,
|
|
305
|
-
DOC_TYPE_IF_BREAK,
|
|
306
|
-
DOC_TYPE_INDENT_IF_BREAK,
|
|
307
|
-
DOC_TYPE_LINE_SUFFIX,
|
|
308
|
-
DOC_TYPE_LINE_SUFFIX_BOUNDARY,
|
|
309
|
-
DOC_TYPE_LINE,
|
|
310
|
-
DOC_TYPE_LABEL,
|
|
311
|
-
DOC_TYPE_BREAK_PARENT
|
|
312
|
-
]);
|
|
313
|
-
function getDocType(doc) {
|
|
314
|
-
if (typeof doc === "string") {
|
|
315
|
-
return DOC_TYPE_STRING;
|
|
316
|
-
}
|
|
317
|
-
if (Array.isArray(doc)) {
|
|
318
|
-
return DOC_TYPE_ARRAY;
|
|
319
|
-
}
|
|
320
|
-
if (!doc) {
|
|
321
|
-
return;
|
|
322
|
-
}
|
|
323
|
-
const { type } = doc;
|
|
324
|
-
if (VALID_OBJECT_DOC_TYPES.has(type)) {
|
|
325
|
-
return type;
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
var get_doc_type_default = getDocType;
|
|
329
|
-
var disjunctionListFormat = (list) => new Intl.ListFormat("en-US", { type: "disjunction" }).format(list);
|
|
330
|
-
function getDocErrorMessage(doc) {
|
|
331
|
-
const type = doc === null ? "null" : typeof doc;
|
|
332
|
-
if (type !== "string" && type !== "object") {
|
|
333
|
-
return `Unexpected doc '${type}',
|
|
334
|
-
Expected it to be 'string' or 'object'.`;
|
|
335
|
-
}
|
|
336
|
-
if (get_doc_type_default(doc)) {
|
|
337
|
-
throw new Error("doc is valid.");
|
|
338
|
-
}
|
|
339
|
-
const objectType = Object.prototype.toString.call(doc);
|
|
340
|
-
if (objectType !== "[object Object]") {
|
|
341
|
-
return `Unexpected doc '${objectType}'.`;
|
|
342
|
-
}
|
|
343
|
-
const EXPECTED_TYPE_VALUES = disjunctionListFormat(
|
|
344
|
-
[...VALID_OBJECT_DOC_TYPES].map((type2) => `'${type2}'`)
|
|
345
|
-
);
|
|
346
|
-
return `Unexpected doc.type '${doc.type}'.
|
|
347
|
-
Expected it to be ${EXPECTED_TYPE_VALUES}.`;
|
|
348
|
-
}
|
|
349
|
-
var InvalidDocError = class extends Error {
|
|
350
|
-
name = "InvalidDocError";
|
|
351
|
-
constructor(doc) {
|
|
352
|
-
super(getDocErrorMessage(doc));
|
|
353
|
-
this.doc = doc;
|
|
354
|
-
}
|
|
355
|
-
};
|
|
356
|
-
var invalid_doc_error_default = InvalidDocError;
|
|
357
|
-
var traverseDocOnExitStackMarker = {};
|
|
358
|
-
function traverseDoc(doc, onEnter, onExit, shouldTraverseConditionalGroups) {
|
|
359
|
-
const docsStack = [doc];
|
|
360
|
-
while (docsStack.length > 0) {
|
|
361
|
-
const doc2 = docsStack.pop();
|
|
362
|
-
if (doc2 === traverseDocOnExitStackMarker) {
|
|
363
|
-
onExit(docsStack.pop());
|
|
364
|
-
continue;
|
|
365
|
-
}
|
|
366
|
-
if (onExit) {
|
|
367
|
-
docsStack.push(doc2, traverseDocOnExitStackMarker);
|
|
368
|
-
}
|
|
369
|
-
const docType = get_doc_type_default(doc2);
|
|
370
|
-
if (!docType) {
|
|
371
|
-
throw new invalid_doc_error_default(doc2);
|
|
372
|
-
}
|
|
373
|
-
if ((onEnter == null ? void 0 : onEnter(doc2)) === false) {
|
|
374
|
-
continue;
|
|
375
|
-
}
|
|
376
|
-
switch (docType) {
|
|
377
|
-
case DOC_TYPE_ARRAY:
|
|
378
|
-
case DOC_TYPE_FILL: {
|
|
379
|
-
const parts = docType === DOC_TYPE_ARRAY ? doc2 : doc2.parts;
|
|
380
|
-
for (let ic = parts.length, i = ic - 1; i >= 0; --i) {
|
|
381
|
-
docsStack.push(parts[i]);
|
|
382
|
-
}
|
|
383
|
-
break;
|
|
384
|
-
}
|
|
385
|
-
case DOC_TYPE_IF_BREAK:
|
|
386
|
-
docsStack.push(doc2.flatContents, doc2.breakContents);
|
|
387
|
-
break;
|
|
388
|
-
case DOC_TYPE_GROUP:
|
|
389
|
-
if (shouldTraverseConditionalGroups && doc2.expandedStates) {
|
|
390
|
-
for (let ic = doc2.expandedStates.length, i = ic - 1; i >= 0; --i) {
|
|
391
|
-
docsStack.push(doc2.expandedStates[i]);
|
|
392
|
-
}
|
|
393
|
-
} else {
|
|
394
|
-
docsStack.push(doc2.contents);
|
|
395
|
-
}
|
|
396
|
-
break;
|
|
397
|
-
case DOC_TYPE_ALIGN:
|
|
398
|
-
case DOC_TYPE_INDENT:
|
|
399
|
-
case DOC_TYPE_INDENT_IF_BREAK:
|
|
400
|
-
case DOC_TYPE_LABEL:
|
|
401
|
-
case DOC_TYPE_LINE_SUFFIX:
|
|
402
|
-
docsStack.push(doc2.contents);
|
|
403
|
-
break;
|
|
404
|
-
case DOC_TYPE_STRING:
|
|
405
|
-
case DOC_TYPE_CURSOR:
|
|
406
|
-
case DOC_TYPE_TRIM:
|
|
407
|
-
case DOC_TYPE_LINE_SUFFIX_BOUNDARY:
|
|
408
|
-
case DOC_TYPE_LINE:
|
|
409
|
-
case DOC_TYPE_BREAK_PARENT:
|
|
410
|
-
break;
|
|
411
|
-
default:
|
|
412
|
-
throw new invalid_doc_error_default(doc2);
|
|
413
|
-
}
|
|
414
|
-
}
|
|
415
|
-
}
|
|
416
|
-
var traverse_doc_default = traverseDoc;
|
|
417
|
-
var noop = () => {
|
|
418
|
-
};
|
|
419
|
-
var assertDoc = true ? noop : function(doc) {
|
|
420
|
-
traverse_doc_default(doc, (doc2) => {
|
|
421
|
-
if (checked.has(doc2)) {
|
|
422
|
-
return false;
|
|
423
|
-
}
|
|
424
|
-
if (typeof doc2 !== "string") {
|
|
425
|
-
checked.add(doc2);
|
|
426
|
-
}
|
|
427
|
-
});
|
|
428
|
-
};
|
|
429
|
-
var assertDocArray = true ? noop : function(docs, optional = false) {
|
|
430
|
-
if (optional && !docs) {
|
|
431
|
-
return;
|
|
432
|
-
}
|
|
433
|
-
if (!Array.isArray(docs)) {
|
|
434
|
-
throw new TypeError("Unexpected doc array.");
|
|
435
|
-
}
|
|
436
|
-
for (const doc of docs) {
|
|
437
|
-
assertDoc(doc);
|
|
438
|
-
}
|
|
439
|
-
};
|
|
440
|
-
function indent(contents) {
|
|
441
|
-
assertDoc(contents);
|
|
442
|
-
return { type: DOC_TYPE_INDENT, contents };
|
|
443
|
-
}
|
|
444
|
-
function align(widthOrString, contents) {
|
|
445
|
-
assertDoc(contents);
|
|
446
|
-
return { type: DOC_TYPE_ALIGN, contents, n: widthOrString };
|
|
447
|
-
}
|
|
448
|
-
function group(contents, opts = {}) {
|
|
449
|
-
assertDoc(contents);
|
|
450
|
-
assertDocArray(
|
|
451
|
-
opts.expandedStates,
|
|
452
|
-
/* optional */
|
|
453
|
-
true
|
|
454
|
-
);
|
|
455
|
-
return {
|
|
456
|
-
type: DOC_TYPE_GROUP,
|
|
457
|
-
id: opts.id,
|
|
458
|
-
contents,
|
|
459
|
-
break: Boolean(opts.shouldBreak),
|
|
460
|
-
expandedStates: opts.expandedStates
|
|
461
|
-
};
|
|
462
|
-
}
|
|
463
|
-
function dedentToRoot(contents) {
|
|
464
|
-
return align(Number.NEGATIVE_INFINITY, contents);
|
|
465
|
-
}
|
|
466
|
-
function markAsRoot(contents) {
|
|
467
|
-
return align({ type: "root" }, contents);
|
|
468
|
-
}
|
|
469
|
-
function dedent(contents) {
|
|
470
|
-
return align(-1, contents);
|
|
471
|
-
}
|
|
472
|
-
function conditionalGroup(states, opts) {
|
|
473
|
-
return group(states[0], { ...opts, expandedStates: states });
|
|
474
|
-
}
|
|
475
|
-
function fill(parts) {
|
|
476
|
-
assertDocArray(parts);
|
|
477
|
-
return { type: DOC_TYPE_FILL, parts };
|
|
478
|
-
}
|
|
479
|
-
function ifBreak(breakContents, flatContents = "", opts = {}) {
|
|
480
|
-
assertDoc(breakContents);
|
|
481
|
-
if (flatContents !== "") {
|
|
482
|
-
assertDoc(flatContents);
|
|
483
|
-
}
|
|
484
|
-
return {
|
|
485
|
-
type: DOC_TYPE_IF_BREAK,
|
|
486
|
-
breakContents,
|
|
487
|
-
flatContents,
|
|
488
|
-
groupId: opts.groupId
|
|
489
|
-
};
|
|
490
|
-
}
|
|
491
|
-
function indentIfBreak(contents, opts) {
|
|
492
|
-
assertDoc(contents);
|
|
493
|
-
return {
|
|
494
|
-
type: DOC_TYPE_INDENT_IF_BREAK,
|
|
495
|
-
contents,
|
|
496
|
-
groupId: opts.groupId,
|
|
497
|
-
negate: opts.negate
|
|
498
|
-
};
|
|
499
|
-
}
|
|
500
|
-
function lineSuffix(contents) {
|
|
501
|
-
assertDoc(contents);
|
|
502
|
-
return { type: DOC_TYPE_LINE_SUFFIX, contents };
|
|
503
|
-
}
|
|
504
|
-
var lineSuffixBoundary = { type: DOC_TYPE_LINE_SUFFIX_BOUNDARY };
|
|
505
|
-
var breakParent = { type: DOC_TYPE_BREAK_PARENT };
|
|
506
|
-
var trim = { type: DOC_TYPE_TRIM };
|
|
507
|
-
var hardlineWithoutBreakParent = { type: DOC_TYPE_LINE, hard: true };
|
|
508
|
-
var literallineWithoutBreakParent = {
|
|
509
|
-
type: DOC_TYPE_LINE,
|
|
510
|
-
hard: true,
|
|
511
|
-
literal: true
|
|
512
|
-
};
|
|
513
|
-
var line = { type: DOC_TYPE_LINE };
|
|
514
|
-
var softline = { type: DOC_TYPE_LINE, soft: true };
|
|
515
|
-
var hardline = [hardlineWithoutBreakParent, breakParent];
|
|
516
|
-
var literalline = [literallineWithoutBreakParent, breakParent];
|
|
517
|
-
var cursor = { type: DOC_TYPE_CURSOR };
|
|
518
|
-
function join(separator, docs) {
|
|
519
|
-
assertDoc(separator);
|
|
520
|
-
assertDocArray(docs);
|
|
521
|
-
const parts = [];
|
|
522
|
-
for (let i = 0; i < docs.length; i++) {
|
|
523
|
-
if (i !== 0) {
|
|
524
|
-
parts.push(separator);
|
|
525
|
-
}
|
|
526
|
-
parts.push(docs[i]);
|
|
527
|
-
}
|
|
528
|
-
return parts;
|
|
529
|
-
}
|
|
530
|
-
function addAlignmentToDoc(doc, size, tabWidth) {
|
|
531
|
-
assertDoc(doc);
|
|
532
|
-
let aligned = doc;
|
|
533
|
-
if (size > 0) {
|
|
534
|
-
for (let i = 0; i < Math.floor(size / tabWidth); ++i) {
|
|
535
|
-
aligned = indent(aligned);
|
|
536
|
-
}
|
|
537
|
-
aligned = align(size % tabWidth, aligned);
|
|
538
|
-
aligned = align(Number.NEGATIVE_INFINITY, aligned);
|
|
539
|
-
}
|
|
540
|
-
return aligned;
|
|
541
|
-
}
|
|
542
|
-
function label(label2, contents) {
|
|
543
|
-
assertDoc(contents);
|
|
544
|
-
return label2 ? { type: DOC_TYPE_LABEL, label: label2, contents } : contents;
|
|
545
|
-
}
|
|
546
|
-
var at = (isOptionalObject, object, index) => {
|
|
547
|
-
if (isOptionalObject && (object === void 0 || object === null)) {
|
|
548
|
-
return;
|
|
549
|
-
}
|
|
550
|
-
if (Array.isArray(object) || typeof object === "string") {
|
|
551
|
-
return object[index < 0 ? object.length + index : index];
|
|
552
|
-
}
|
|
553
|
-
return object.at(index);
|
|
554
|
-
};
|
|
555
|
-
var at_default = at;
|
|
556
|
-
var stringReplaceAll = (isOptionalObject, original, pattern, replacement) => {
|
|
557
|
-
if (isOptionalObject && (original === void 0 || original === null)) {
|
|
558
|
-
return;
|
|
559
|
-
}
|
|
560
|
-
if (original.replaceAll) {
|
|
561
|
-
return original.replaceAll(pattern, replacement);
|
|
562
|
-
}
|
|
563
|
-
if (pattern.global) {
|
|
564
|
-
return original.replace(pattern, replacement);
|
|
565
|
-
}
|
|
566
|
-
return original.split(pattern).join(replacement);
|
|
567
|
-
};
|
|
568
|
-
var string_replace_all_default = stringReplaceAll;
|
|
569
|
-
function convertEndOfLineToChars(value) {
|
|
570
|
-
switch (value) {
|
|
571
|
-
case "cr":
|
|
572
|
-
return "\r";
|
|
573
|
-
case "crlf":
|
|
574
|
-
return "\r\n";
|
|
575
|
-
default:
|
|
576
|
-
return "\n";
|
|
577
|
-
}
|
|
578
|
-
}
|
|
579
|
-
var emoji_regex_default = () => {
|
|
580
|
-
return /[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26F9(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC3\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC08\uDC26](?:\u200D\u2B1B)?|[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE88\uDE90-\uDEBD\uDEBF-\uDEC2\uDECE-\uDEDB\uDEE0-\uDEE8]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g;
|
|
581
|
-
};
|
|
582
|
-
var eastasianwidth_default = {
|
|
583
|
-
eastAsianWidth(character) {
|
|
584
|
-
var x = character.charCodeAt(0);
|
|
585
|
-
var y = character.length == 2 ? character.charCodeAt(1) : 0;
|
|
586
|
-
var codePoint = x;
|
|
587
|
-
if (55296 <= x && x <= 56319 && 56320 <= y && y <= 57343) {
|
|
588
|
-
x &= 1023;
|
|
589
|
-
y &= 1023;
|
|
590
|
-
codePoint = x << 10 | y;
|
|
591
|
-
codePoint += 65536;
|
|
592
|
-
}
|
|
593
|
-
if (12288 == codePoint || 65281 <= codePoint && codePoint <= 65376 || 65504 <= codePoint && codePoint <= 65510) {
|
|
594
|
-
return "F";
|
|
595
|
-
}
|
|
596
|
-
if (4352 <= codePoint && codePoint <= 4447 || 4515 <= codePoint && codePoint <= 4519 || 4602 <= codePoint && codePoint <= 4607 || 9001 <= codePoint && codePoint <= 9002 || 11904 <= codePoint && codePoint <= 11929 || 11931 <= codePoint && codePoint <= 12019 || 12032 <= codePoint && codePoint <= 12245 || 12272 <= codePoint && codePoint <= 12283 || 12289 <= codePoint && codePoint <= 12350 || 12353 <= codePoint && codePoint <= 12438 || 12441 <= codePoint && codePoint <= 12543 || 12549 <= codePoint && codePoint <= 12589 || 12593 <= codePoint && codePoint <= 12686 || 12688 <= codePoint && codePoint <= 12730 || 12736 <= codePoint && codePoint <= 12771 || 12784 <= codePoint && codePoint <= 12830 || 12832 <= codePoint && codePoint <= 12871 || 12880 <= codePoint && codePoint <= 13054 || 13056 <= codePoint && codePoint <= 19903 || 19968 <= codePoint && codePoint <= 42124 || 42128 <= codePoint && codePoint <= 42182 || 43360 <= codePoint && codePoint <= 43388 || 44032 <= codePoint && codePoint <= 55203 || 55216 <= codePoint && codePoint <= 55238 || 55243 <= codePoint && codePoint <= 55291 || 63744 <= codePoint && codePoint <= 64255 || 65040 <= codePoint && codePoint <= 65049 || 65072 <= codePoint && codePoint <= 65106 || 65108 <= codePoint && codePoint <= 65126 || 65128 <= codePoint && codePoint <= 65131 || 110592 <= codePoint && codePoint <= 110593 || 127488 <= codePoint && codePoint <= 127490 || 127504 <= codePoint && codePoint <= 127546 || 127552 <= codePoint && codePoint <= 127560 || 127568 <= codePoint && codePoint <= 127569 || 131072 <= codePoint && codePoint <= 194367 || 177984 <= codePoint && codePoint <= 196605 || 196608 <= codePoint && codePoint <= 262141) {
|
|
597
|
-
return "W";
|
|
598
|
-
}
|
|
599
|
-
return "N";
|
|
600
|
-
}
|
|
601
|
-
};
|
|
602
|
-
var notAsciiRegex = /[^\x20-\x7F]/;
|
|
603
|
-
function getStringWidth(text) {
|
|
604
|
-
if (!text) {
|
|
605
|
-
return 0;
|
|
606
|
-
}
|
|
607
|
-
if (!notAsciiRegex.test(text)) {
|
|
608
|
-
return text.length;
|
|
609
|
-
}
|
|
610
|
-
text = text.replace(emoji_regex_default(), " ");
|
|
611
|
-
let width = 0;
|
|
612
|
-
for (const character of text) {
|
|
613
|
-
const codePoint = character.codePointAt(0);
|
|
614
|
-
if (codePoint <= 31 || codePoint >= 127 && codePoint <= 159) {
|
|
615
|
-
continue;
|
|
616
|
-
}
|
|
617
|
-
if (codePoint >= 768 && codePoint <= 879) {
|
|
618
|
-
continue;
|
|
619
|
-
}
|
|
620
|
-
const code = eastasianwidth_default.eastAsianWidth(character);
|
|
621
|
-
width += code === "F" || code === "W" ? 2 : 1;
|
|
622
|
-
}
|
|
623
|
-
return width;
|
|
624
|
-
}
|
|
625
|
-
var get_string_width_default = getStringWidth;
|
|
626
|
-
var getDocParts = (doc) => {
|
|
627
|
-
if (Array.isArray(doc)) {
|
|
628
|
-
return doc;
|
|
629
|
-
}
|
|
630
|
-
if (doc.type !== DOC_TYPE_FILL) {
|
|
631
|
-
throw new Error(`Expect doc to be 'array' or '${DOC_TYPE_FILL}'.`);
|
|
632
|
-
}
|
|
633
|
-
return doc.parts;
|
|
634
|
-
};
|
|
635
|
-
function mapDoc(doc, cb) {
|
|
636
|
-
if (typeof doc === "string") {
|
|
637
|
-
return cb(doc);
|
|
638
|
-
}
|
|
639
|
-
const mapped = /* @__PURE__ */ new Map();
|
|
640
|
-
return rec(doc);
|
|
641
|
-
function rec(doc2) {
|
|
642
|
-
if (mapped.has(doc2)) {
|
|
643
|
-
return mapped.get(doc2);
|
|
644
|
-
}
|
|
645
|
-
const result = process2(doc2);
|
|
646
|
-
mapped.set(doc2, result);
|
|
647
|
-
return result;
|
|
648
|
-
}
|
|
649
|
-
function process2(doc2) {
|
|
650
|
-
switch (get_doc_type_default(doc2)) {
|
|
651
|
-
case DOC_TYPE_ARRAY:
|
|
652
|
-
return cb(doc2.map(rec));
|
|
653
|
-
case DOC_TYPE_FILL:
|
|
654
|
-
return cb({
|
|
655
|
-
...doc2,
|
|
656
|
-
parts: doc2.parts.map(rec)
|
|
657
|
-
});
|
|
658
|
-
case DOC_TYPE_IF_BREAK:
|
|
659
|
-
return cb({
|
|
660
|
-
...doc2,
|
|
661
|
-
breakContents: rec(doc2.breakContents),
|
|
662
|
-
flatContents: rec(doc2.flatContents)
|
|
663
|
-
});
|
|
664
|
-
case DOC_TYPE_GROUP: {
|
|
665
|
-
let {
|
|
666
|
-
expandedStates,
|
|
667
|
-
contents
|
|
668
|
-
} = doc2;
|
|
669
|
-
if (expandedStates) {
|
|
670
|
-
expandedStates = expandedStates.map(rec);
|
|
671
|
-
contents = expandedStates[0];
|
|
672
|
-
} else {
|
|
673
|
-
contents = rec(contents);
|
|
674
|
-
}
|
|
675
|
-
return cb({
|
|
676
|
-
...doc2,
|
|
677
|
-
contents,
|
|
678
|
-
expandedStates
|
|
679
|
-
});
|
|
680
|
-
}
|
|
681
|
-
case DOC_TYPE_ALIGN:
|
|
682
|
-
case DOC_TYPE_INDENT:
|
|
683
|
-
case DOC_TYPE_INDENT_IF_BREAK:
|
|
684
|
-
case DOC_TYPE_LABEL:
|
|
685
|
-
case DOC_TYPE_LINE_SUFFIX:
|
|
686
|
-
return cb({
|
|
687
|
-
...doc2,
|
|
688
|
-
contents: rec(doc2.contents)
|
|
689
|
-
});
|
|
690
|
-
case DOC_TYPE_STRING:
|
|
691
|
-
case DOC_TYPE_CURSOR:
|
|
692
|
-
case DOC_TYPE_TRIM:
|
|
693
|
-
case DOC_TYPE_LINE_SUFFIX_BOUNDARY:
|
|
694
|
-
case DOC_TYPE_LINE:
|
|
695
|
-
case DOC_TYPE_BREAK_PARENT:
|
|
696
|
-
return cb(doc2);
|
|
697
|
-
default:
|
|
698
|
-
throw new invalid_doc_error_default(doc2);
|
|
699
|
-
}
|
|
700
|
-
}
|
|
701
|
-
}
|
|
702
|
-
function findInDoc(doc, fn, defaultValue) {
|
|
703
|
-
let result = defaultValue;
|
|
704
|
-
let shouldSkipFurtherProcessing = false;
|
|
705
|
-
function findInDocOnEnterFn(doc2) {
|
|
706
|
-
if (shouldSkipFurtherProcessing) {
|
|
707
|
-
return false;
|
|
708
|
-
}
|
|
709
|
-
const maybeResult = fn(doc2);
|
|
710
|
-
if (maybeResult !== void 0) {
|
|
711
|
-
shouldSkipFurtherProcessing = true;
|
|
712
|
-
result = maybeResult;
|
|
713
|
-
}
|
|
714
|
-
}
|
|
715
|
-
traverse_doc_default(doc, findInDocOnEnterFn);
|
|
716
|
-
return result;
|
|
717
|
-
}
|
|
718
|
-
function willBreakFn(doc) {
|
|
719
|
-
if (doc.type === DOC_TYPE_GROUP && doc.break) {
|
|
720
|
-
return true;
|
|
721
|
-
}
|
|
722
|
-
if (doc.type === DOC_TYPE_LINE && doc.hard) {
|
|
723
|
-
return true;
|
|
724
|
-
}
|
|
725
|
-
if (doc.type === DOC_TYPE_BREAK_PARENT) {
|
|
726
|
-
return true;
|
|
727
|
-
}
|
|
728
|
-
}
|
|
729
|
-
function willBreak(doc) {
|
|
730
|
-
return findInDoc(doc, willBreakFn, false);
|
|
731
|
-
}
|
|
732
|
-
function breakParentGroup(groupStack) {
|
|
733
|
-
if (groupStack.length > 0) {
|
|
734
|
-
const parentGroup = at_default(
|
|
735
|
-
/* isOptionalObject*/
|
|
736
|
-
false,
|
|
737
|
-
groupStack,
|
|
738
|
-
-1
|
|
739
|
-
);
|
|
740
|
-
if (!parentGroup.expandedStates && !parentGroup.break) {
|
|
741
|
-
parentGroup.break = "propagated";
|
|
742
|
-
}
|
|
743
|
-
}
|
|
744
|
-
return null;
|
|
745
|
-
}
|
|
746
|
-
function propagateBreaks(doc) {
|
|
747
|
-
const alreadyVisitedSet = /* @__PURE__ */ new Set();
|
|
748
|
-
const groupStack = [];
|
|
749
|
-
function propagateBreaksOnEnterFn(doc2) {
|
|
750
|
-
if (doc2.type === DOC_TYPE_BREAK_PARENT) {
|
|
751
|
-
breakParentGroup(groupStack);
|
|
752
|
-
}
|
|
753
|
-
if (doc2.type === DOC_TYPE_GROUP) {
|
|
754
|
-
groupStack.push(doc2);
|
|
755
|
-
if (alreadyVisitedSet.has(doc2)) {
|
|
756
|
-
return false;
|
|
757
|
-
}
|
|
758
|
-
alreadyVisitedSet.add(doc2);
|
|
759
|
-
}
|
|
760
|
-
}
|
|
761
|
-
function propagateBreaksOnExitFn(doc2) {
|
|
762
|
-
if (doc2.type === DOC_TYPE_GROUP) {
|
|
763
|
-
const group2 = groupStack.pop();
|
|
764
|
-
if (group2.break) {
|
|
765
|
-
breakParentGroup(groupStack);
|
|
766
|
-
}
|
|
767
|
-
}
|
|
768
|
-
}
|
|
769
|
-
traverse_doc_default(
|
|
770
|
-
doc,
|
|
771
|
-
propagateBreaksOnEnterFn,
|
|
772
|
-
propagateBreaksOnExitFn,
|
|
773
|
-
/* shouldTraverseConditionalGroups */
|
|
774
|
-
true
|
|
775
|
-
);
|
|
776
|
-
}
|
|
777
|
-
function removeLinesFn(doc) {
|
|
778
|
-
if (doc.type === DOC_TYPE_LINE && !doc.hard) {
|
|
779
|
-
return doc.soft ? "" : " ";
|
|
780
|
-
}
|
|
781
|
-
if (doc.type === DOC_TYPE_IF_BREAK) {
|
|
782
|
-
return doc.flatContents;
|
|
783
|
-
}
|
|
784
|
-
return doc;
|
|
785
|
-
}
|
|
786
|
-
function removeLines(doc) {
|
|
787
|
-
return mapDoc(doc, removeLinesFn);
|
|
788
|
-
}
|
|
789
|
-
function stripTrailingHardlineFromParts(parts) {
|
|
790
|
-
parts = [...parts];
|
|
791
|
-
while (parts.length >= 2 && at_default(
|
|
792
|
-
/* isOptionalObject*/
|
|
793
|
-
false,
|
|
794
|
-
parts,
|
|
795
|
-
-2
|
|
796
|
-
).type === DOC_TYPE_LINE && at_default(
|
|
797
|
-
/* isOptionalObject*/
|
|
798
|
-
false,
|
|
799
|
-
parts,
|
|
800
|
-
-1
|
|
801
|
-
).type === DOC_TYPE_BREAK_PARENT) {
|
|
802
|
-
parts.length -= 2;
|
|
803
|
-
}
|
|
804
|
-
if (parts.length > 0) {
|
|
805
|
-
const lastPart = stripTrailingHardlineFromDoc(at_default(
|
|
806
|
-
/* isOptionalObject*/
|
|
807
|
-
false,
|
|
808
|
-
parts,
|
|
809
|
-
-1
|
|
810
|
-
));
|
|
811
|
-
parts[parts.length - 1] = lastPart;
|
|
812
|
-
}
|
|
813
|
-
return parts;
|
|
814
|
-
}
|
|
815
|
-
function stripTrailingHardlineFromDoc(doc) {
|
|
816
|
-
switch (get_doc_type_default(doc)) {
|
|
817
|
-
case DOC_TYPE_ALIGN:
|
|
818
|
-
case DOC_TYPE_INDENT:
|
|
819
|
-
case DOC_TYPE_INDENT_IF_BREAK:
|
|
820
|
-
case DOC_TYPE_GROUP:
|
|
821
|
-
case DOC_TYPE_LINE_SUFFIX:
|
|
822
|
-
case DOC_TYPE_LABEL: {
|
|
823
|
-
const contents = stripTrailingHardlineFromDoc(doc.contents);
|
|
824
|
-
return {
|
|
825
|
-
...doc,
|
|
826
|
-
contents
|
|
827
|
-
};
|
|
828
|
-
}
|
|
829
|
-
case DOC_TYPE_IF_BREAK:
|
|
830
|
-
return {
|
|
831
|
-
...doc,
|
|
832
|
-
breakContents: stripTrailingHardlineFromDoc(doc.breakContents),
|
|
833
|
-
flatContents: stripTrailingHardlineFromDoc(doc.flatContents)
|
|
834
|
-
};
|
|
835
|
-
case DOC_TYPE_FILL:
|
|
836
|
-
return {
|
|
837
|
-
...doc,
|
|
838
|
-
parts: stripTrailingHardlineFromParts(doc.parts)
|
|
839
|
-
};
|
|
840
|
-
case DOC_TYPE_ARRAY:
|
|
841
|
-
return stripTrailingHardlineFromParts(doc);
|
|
842
|
-
case DOC_TYPE_STRING:
|
|
843
|
-
return doc.replace(/[\n\r]*$/, "");
|
|
844
|
-
case DOC_TYPE_CURSOR:
|
|
845
|
-
case DOC_TYPE_TRIM:
|
|
846
|
-
case DOC_TYPE_LINE_SUFFIX_BOUNDARY:
|
|
847
|
-
case DOC_TYPE_LINE:
|
|
848
|
-
case DOC_TYPE_BREAK_PARENT:
|
|
849
|
-
break;
|
|
850
|
-
default:
|
|
851
|
-
throw new invalid_doc_error_default(doc);
|
|
852
|
-
}
|
|
853
|
-
return doc;
|
|
854
|
-
}
|
|
855
|
-
function stripTrailingHardline(doc) {
|
|
856
|
-
return stripTrailingHardlineFromDoc(cleanDoc(doc));
|
|
857
|
-
}
|
|
858
|
-
function cleanDocFn(doc) {
|
|
859
|
-
switch (get_doc_type_default(doc)) {
|
|
860
|
-
case DOC_TYPE_FILL:
|
|
861
|
-
if (doc.parts.every((part) => part === "")) {
|
|
862
|
-
return "";
|
|
863
|
-
}
|
|
864
|
-
break;
|
|
865
|
-
case DOC_TYPE_GROUP:
|
|
866
|
-
if (!doc.contents && !doc.id && !doc.break && !doc.expandedStates) {
|
|
867
|
-
return "";
|
|
868
|
-
}
|
|
869
|
-
if (doc.contents.type === DOC_TYPE_GROUP && doc.contents.id === doc.id && doc.contents.break === doc.break && doc.contents.expandedStates === doc.expandedStates) {
|
|
870
|
-
return doc.contents;
|
|
871
|
-
}
|
|
872
|
-
break;
|
|
873
|
-
case DOC_TYPE_ALIGN:
|
|
874
|
-
case DOC_TYPE_INDENT:
|
|
875
|
-
case DOC_TYPE_INDENT_IF_BREAK:
|
|
876
|
-
case DOC_TYPE_LINE_SUFFIX:
|
|
877
|
-
if (!doc.contents) {
|
|
878
|
-
return "";
|
|
879
|
-
}
|
|
880
|
-
break;
|
|
881
|
-
case DOC_TYPE_IF_BREAK:
|
|
882
|
-
if (!doc.flatContents && !doc.breakContents) {
|
|
883
|
-
return "";
|
|
884
|
-
}
|
|
885
|
-
break;
|
|
886
|
-
case DOC_TYPE_ARRAY: {
|
|
887
|
-
const parts = [];
|
|
888
|
-
for (const part of doc) {
|
|
889
|
-
if (!part) {
|
|
890
|
-
continue;
|
|
891
|
-
}
|
|
892
|
-
const [currentPart, ...restParts] = Array.isArray(part) ? part : [part];
|
|
893
|
-
if (typeof currentPart === "string" && typeof at_default(
|
|
894
|
-
/* isOptionalObject*/
|
|
895
|
-
false,
|
|
896
|
-
parts,
|
|
897
|
-
-1
|
|
898
|
-
) === "string") {
|
|
899
|
-
parts[parts.length - 1] += currentPart;
|
|
900
|
-
} else {
|
|
901
|
-
parts.push(currentPart);
|
|
902
|
-
}
|
|
903
|
-
parts.push(...restParts);
|
|
904
|
-
}
|
|
905
|
-
if (parts.length === 0) {
|
|
906
|
-
return "";
|
|
907
|
-
}
|
|
908
|
-
if (parts.length === 1) {
|
|
909
|
-
return parts[0];
|
|
910
|
-
}
|
|
911
|
-
return parts;
|
|
912
|
-
}
|
|
913
|
-
case DOC_TYPE_STRING:
|
|
914
|
-
case DOC_TYPE_CURSOR:
|
|
915
|
-
case DOC_TYPE_TRIM:
|
|
916
|
-
case DOC_TYPE_LINE_SUFFIX_BOUNDARY:
|
|
917
|
-
case DOC_TYPE_LINE:
|
|
918
|
-
case DOC_TYPE_LABEL:
|
|
919
|
-
case DOC_TYPE_BREAK_PARENT:
|
|
920
|
-
break;
|
|
921
|
-
default:
|
|
922
|
-
throw new invalid_doc_error_default(doc);
|
|
923
|
-
}
|
|
924
|
-
return doc;
|
|
925
|
-
}
|
|
926
|
-
function cleanDoc(doc) {
|
|
927
|
-
return mapDoc(doc, (currentDoc) => cleanDocFn(currentDoc));
|
|
928
|
-
}
|
|
929
|
-
function replaceEndOfLine(doc, replacement = literalline) {
|
|
930
|
-
return mapDoc(doc, (currentDoc) => typeof currentDoc === "string" ? join(replacement, currentDoc.split("\n")) : currentDoc);
|
|
931
|
-
}
|
|
932
|
-
function canBreakFn(doc) {
|
|
933
|
-
if (doc.type === DOC_TYPE_LINE) {
|
|
934
|
-
return true;
|
|
935
|
-
}
|
|
936
|
-
}
|
|
937
|
-
function canBreak(doc) {
|
|
938
|
-
return findInDoc(doc, canBreakFn, false);
|
|
939
|
-
}
|
|
940
|
-
var MODE_BREAK = Symbol("MODE_BREAK");
|
|
941
|
-
var MODE_FLAT = Symbol("MODE_FLAT");
|
|
942
|
-
var CURSOR_PLACEHOLDER = Symbol("cursor");
|
|
943
|
-
function rootIndent() {
|
|
944
|
-
return {
|
|
945
|
-
value: "",
|
|
946
|
-
length: 0,
|
|
947
|
-
queue: []
|
|
948
|
-
};
|
|
949
|
-
}
|
|
950
|
-
function makeIndent(ind, options) {
|
|
951
|
-
return generateInd(ind, {
|
|
952
|
-
type: "indent"
|
|
953
|
-
}, options);
|
|
954
|
-
}
|
|
955
|
-
function makeAlign(indent2, widthOrDoc, options) {
|
|
956
|
-
if (widthOrDoc === Number.NEGATIVE_INFINITY) {
|
|
957
|
-
return indent2.root || rootIndent();
|
|
958
|
-
}
|
|
959
|
-
if (widthOrDoc < 0) {
|
|
960
|
-
return generateInd(indent2, {
|
|
961
|
-
type: "dedent"
|
|
962
|
-
}, options);
|
|
963
|
-
}
|
|
964
|
-
if (!widthOrDoc) {
|
|
965
|
-
return indent2;
|
|
966
|
-
}
|
|
967
|
-
if (widthOrDoc.type === "root") {
|
|
968
|
-
return {
|
|
969
|
-
...indent2,
|
|
970
|
-
root: indent2
|
|
971
|
-
};
|
|
972
|
-
}
|
|
973
|
-
const alignType = typeof widthOrDoc === "string" ? "stringAlign" : "numberAlign";
|
|
974
|
-
return generateInd(indent2, {
|
|
975
|
-
type: alignType,
|
|
976
|
-
n: widthOrDoc
|
|
977
|
-
}, options);
|
|
978
|
-
}
|
|
979
|
-
function generateInd(ind, newPart, options) {
|
|
980
|
-
const queue = newPart.type === "dedent" ? ind.queue.slice(0, -1) : [...ind.queue, newPart];
|
|
981
|
-
let value = "";
|
|
982
|
-
let length = 0;
|
|
983
|
-
let lastTabs = 0;
|
|
984
|
-
let lastSpaces = 0;
|
|
985
|
-
for (const part of queue) {
|
|
986
|
-
switch (part.type) {
|
|
987
|
-
case "indent":
|
|
988
|
-
flush();
|
|
989
|
-
if (options.useTabs) {
|
|
990
|
-
addTabs(1);
|
|
991
|
-
} else {
|
|
992
|
-
addSpaces(options.tabWidth);
|
|
993
|
-
}
|
|
994
|
-
break;
|
|
995
|
-
case "stringAlign":
|
|
996
|
-
flush();
|
|
997
|
-
value += part.n;
|
|
998
|
-
length += part.n.length;
|
|
999
|
-
break;
|
|
1000
|
-
case "numberAlign":
|
|
1001
|
-
lastTabs += 1;
|
|
1002
|
-
lastSpaces += part.n;
|
|
1003
|
-
break;
|
|
1004
|
-
default:
|
|
1005
|
-
throw new Error(`Unexpected type '${part.type}'`);
|
|
1006
|
-
}
|
|
1007
|
-
}
|
|
1008
|
-
flushSpaces();
|
|
1009
|
-
return {
|
|
1010
|
-
...ind,
|
|
1011
|
-
value,
|
|
1012
|
-
length,
|
|
1013
|
-
queue
|
|
1014
|
-
};
|
|
1015
|
-
function addTabs(count) {
|
|
1016
|
-
value += " ".repeat(count);
|
|
1017
|
-
length += options.tabWidth * count;
|
|
1018
|
-
}
|
|
1019
|
-
function addSpaces(count) {
|
|
1020
|
-
value += " ".repeat(count);
|
|
1021
|
-
length += count;
|
|
1022
|
-
}
|
|
1023
|
-
function flush() {
|
|
1024
|
-
if (options.useTabs) {
|
|
1025
|
-
flushTabs();
|
|
1026
|
-
} else {
|
|
1027
|
-
flushSpaces();
|
|
1028
|
-
}
|
|
1029
|
-
}
|
|
1030
|
-
function flushTabs() {
|
|
1031
|
-
if (lastTabs > 0) {
|
|
1032
|
-
addTabs(lastTabs);
|
|
1033
|
-
}
|
|
1034
|
-
resetLast();
|
|
1035
|
-
}
|
|
1036
|
-
function flushSpaces() {
|
|
1037
|
-
if (lastSpaces > 0) {
|
|
1038
|
-
addSpaces(lastSpaces);
|
|
1039
|
-
}
|
|
1040
|
-
resetLast();
|
|
1041
|
-
}
|
|
1042
|
-
function resetLast() {
|
|
1043
|
-
lastTabs = 0;
|
|
1044
|
-
lastSpaces = 0;
|
|
1045
|
-
}
|
|
1046
|
-
}
|
|
1047
|
-
function trim2(out) {
|
|
1048
|
-
let trimCount = 0;
|
|
1049
|
-
let cursorCount = 0;
|
|
1050
|
-
let outIndex = out.length;
|
|
1051
|
-
outer:
|
|
1052
|
-
while (outIndex--) {
|
|
1053
|
-
const last = out[outIndex];
|
|
1054
|
-
if (last === CURSOR_PLACEHOLDER) {
|
|
1055
|
-
cursorCount++;
|
|
1056
|
-
continue;
|
|
1057
|
-
}
|
|
1058
|
-
if (false) {
|
|
1059
|
-
throw new Error(`Unexpected value in trim: '${typeof last}'`);
|
|
1060
|
-
}
|
|
1061
|
-
for (let charIndex = last.length - 1; charIndex >= 0; charIndex--) {
|
|
1062
|
-
const char = last[charIndex];
|
|
1063
|
-
if (char === " " || char === " ") {
|
|
1064
|
-
trimCount++;
|
|
1065
|
-
} else {
|
|
1066
|
-
out[outIndex] = last.slice(0, charIndex + 1);
|
|
1067
|
-
break outer;
|
|
1068
|
-
}
|
|
1069
|
-
}
|
|
1070
|
-
}
|
|
1071
|
-
if (trimCount > 0 || cursorCount > 0) {
|
|
1072
|
-
out.length = outIndex + 1;
|
|
1073
|
-
while (cursorCount-- > 0) {
|
|
1074
|
-
out.push(CURSOR_PLACEHOLDER);
|
|
1075
|
-
}
|
|
1076
|
-
}
|
|
1077
|
-
return trimCount;
|
|
1078
|
-
}
|
|
1079
|
-
function fits(next, restCommands, width, hasLineSuffix, groupModeMap, mustBeFlat) {
|
|
1080
|
-
if (width === Number.POSITIVE_INFINITY) {
|
|
1081
|
-
return true;
|
|
1082
|
-
}
|
|
1083
|
-
let restIdx = restCommands.length;
|
|
1084
|
-
const cmds = [next];
|
|
1085
|
-
const out = [];
|
|
1086
|
-
while (width >= 0) {
|
|
1087
|
-
if (cmds.length === 0) {
|
|
1088
|
-
if (restIdx === 0) {
|
|
1089
|
-
return true;
|
|
1090
|
-
}
|
|
1091
|
-
cmds.push(restCommands[--restIdx]);
|
|
1092
|
-
continue;
|
|
1093
|
-
}
|
|
1094
|
-
const {
|
|
1095
|
-
mode,
|
|
1096
|
-
doc
|
|
1097
|
-
} = cmds.pop();
|
|
1098
|
-
switch (get_doc_type_default(doc)) {
|
|
1099
|
-
case DOC_TYPE_STRING:
|
|
1100
|
-
out.push(doc);
|
|
1101
|
-
width -= get_string_width_default(doc);
|
|
1102
|
-
break;
|
|
1103
|
-
case DOC_TYPE_ARRAY:
|
|
1104
|
-
case DOC_TYPE_FILL: {
|
|
1105
|
-
const parts = getDocParts(doc);
|
|
1106
|
-
for (let i = parts.length - 1; i >= 0; i--) {
|
|
1107
|
-
cmds.push({
|
|
1108
|
-
mode,
|
|
1109
|
-
doc: parts[i]
|
|
1110
|
-
});
|
|
1111
|
-
}
|
|
1112
|
-
break;
|
|
1113
|
-
}
|
|
1114
|
-
case DOC_TYPE_INDENT:
|
|
1115
|
-
case DOC_TYPE_ALIGN:
|
|
1116
|
-
case DOC_TYPE_INDENT_IF_BREAK:
|
|
1117
|
-
case DOC_TYPE_LABEL:
|
|
1118
|
-
cmds.push({
|
|
1119
|
-
mode,
|
|
1120
|
-
doc: doc.contents
|
|
1121
|
-
});
|
|
1122
|
-
break;
|
|
1123
|
-
case DOC_TYPE_TRIM:
|
|
1124
|
-
width += trim2(out);
|
|
1125
|
-
break;
|
|
1126
|
-
case DOC_TYPE_GROUP: {
|
|
1127
|
-
if (mustBeFlat && doc.break) {
|
|
1128
|
-
return false;
|
|
1129
|
-
}
|
|
1130
|
-
const groupMode = doc.break ? MODE_BREAK : mode;
|
|
1131
|
-
const contents = doc.expandedStates && groupMode === MODE_BREAK ? at_default(
|
|
1132
|
-
/* isOptionalObject*/
|
|
1133
|
-
false,
|
|
1134
|
-
doc.expandedStates,
|
|
1135
|
-
-1
|
|
1136
|
-
) : doc.contents;
|
|
1137
|
-
cmds.push({
|
|
1138
|
-
mode: groupMode,
|
|
1139
|
-
doc: contents
|
|
1140
|
-
});
|
|
1141
|
-
break;
|
|
1142
|
-
}
|
|
1143
|
-
case DOC_TYPE_IF_BREAK: {
|
|
1144
|
-
const groupMode = doc.groupId ? groupModeMap[doc.groupId] || MODE_FLAT : mode;
|
|
1145
|
-
const contents = groupMode === MODE_BREAK ? doc.breakContents : doc.flatContents;
|
|
1146
|
-
if (contents) {
|
|
1147
|
-
cmds.push({
|
|
1148
|
-
mode,
|
|
1149
|
-
doc: contents
|
|
1150
|
-
});
|
|
1151
|
-
}
|
|
1152
|
-
break;
|
|
1153
|
-
}
|
|
1154
|
-
case DOC_TYPE_LINE:
|
|
1155
|
-
if (mode === MODE_BREAK || doc.hard) {
|
|
1156
|
-
return true;
|
|
1157
|
-
}
|
|
1158
|
-
if (!doc.soft) {
|
|
1159
|
-
out.push(" ");
|
|
1160
|
-
width--;
|
|
1161
|
-
}
|
|
1162
|
-
break;
|
|
1163
|
-
case DOC_TYPE_LINE_SUFFIX:
|
|
1164
|
-
hasLineSuffix = true;
|
|
1165
|
-
break;
|
|
1166
|
-
case DOC_TYPE_LINE_SUFFIX_BOUNDARY:
|
|
1167
|
-
if (hasLineSuffix) {
|
|
1168
|
-
return false;
|
|
1169
|
-
}
|
|
1170
|
-
break;
|
|
1171
|
-
}
|
|
1172
|
-
}
|
|
1173
|
-
return false;
|
|
1174
|
-
}
|
|
1175
|
-
function printDocToString(doc, options) {
|
|
1176
|
-
const groupModeMap = {};
|
|
1177
|
-
const width = options.printWidth;
|
|
1178
|
-
const newLine = convertEndOfLineToChars(options.endOfLine);
|
|
1179
|
-
let pos = 0;
|
|
1180
|
-
const cmds = [{
|
|
1181
|
-
ind: rootIndent(),
|
|
1182
|
-
mode: MODE_BREAK,
|
|
1183
|
-
doc
|
|
1184
|
-
}];
|
|
1185
|
-
const out = [];
|
|
1186
|
-
let shouldRemeasure = false;
|
|
1187
|
-
const lineSuffix2 = [];
|
|
1188
|
-
let printedCursorCount = 0;
|
|
1189
|
-
propagateBreaks(doc);
|
|
1190
|
-
while (cmds.length > 0) {
|
|
1191
|
-
const {
|
|
1192
|
-
ind,
|
|
1193
|
-
mode,
|
|
1194
|
-
doc: doc2
|
|
1195
|
-
} = cmds.pop();
|
|
1196
|
-
switch (get_doc_type_default(doc2)) {
|
|
1197
|
-
case DOC_TYPE_STRING: {
|
|
1198
|
-
const formatted = newLine !== "\n" ? string_replace_all_default(
|
|
1199
|
-
/* isOptionalObject*/
|
|
1200
|
-
false,
|
|
1201
|
-
doc2,
|
|
1202
|
-
"\n",
|
|
1203
|
-
newLine
|
|
1204
|
-
) : doc2;
|
|
1205
|
-
out.push(formatted);
|
|
1206
|
-
if (cmds.length > 0) {
|
|
1207
|
-
pos += get_string_width_default(formatted);
|
|
1208
|
-
}
|
|
1209
|
-
break;
|
|
1210
|
-
}
|
|
1211
|
-
case DOC_TYPE_ARRAY:
|
|
1212
|
-
for (let i = doc2.length - 1; i >= 0; i--) {
|
|
1213
|
-
cmds.push({
|
|
1214
|
-
ind,
|
|
1215
|
-
mode,
|
|
1216
|
-
doc: doc2[i]
|
|
1217
|
-
});
|
|
1218
|
-
}
|
|
1219
|
-
break;
|
|
1220
|
-
case DOC_TYPE_CURSOR:
|
|
1221
|
-
if (printedCursorCount >= 2) {
|
|
1222
|
-
throw new Error("There are too many 'cursor' in doc.");
|
|
1223
|
-
}
|
|
1224
|
-
out.push(CURSOR_PLACEHOLDER);
|
|
1225
|
-
printedCursorCount++;
|
|
1226
|
-
break;
|
|
1227
|
-
case DOC_TYPE_INDENT:
|
|
1228
|
-
cmds.push({
|
|
1229
|
-
ind: makeIndent(ind, options),
|
|
1230
|
-
mode,
|
|
1231
|
-
doc: doc2.contents
|
|
1232
|
-
});
|
|
1233
|
-
break;
|
|
1234
|
-
case DOC_TYPE_ALIGN:
|
|
1235
|
-
cmds.push({
|
|
1236
|
-
ind: makeAlign(ind, doc2.n, options),
|
|
1237
|
-
mode,
|
|
1238
|
-
doc: doc2.contents
|
|
1239
|
-
});
|
|
1240
|
-
break;
|
|
1241
|
-
case DOC_TYPE_TRIM:
|
|
1242
|
-
pos -= trim2(out);
|
|
1243
|
-
break;
|
|
1244
|
-
case DOC_TYPE_GROUP:
|
|
1245
|
-
switch (mode) {
|
|
1246
|
-
case MODE_FLAT:
|
|
1247
|
-
if (!shouldRemeasure) {
|
|
1248
|
-
cmds.push({
|
|
1249
|
-
ind,
|
|
1250
|
-
mode: doc2.break ? MODE_BREAK : MODE_FLAT,
|
|
1251
|
-
doc: doc2.contents
|
|
1252
|
-
});
|
|
1253
|
-
break;
|
|
1254
|
-
}
|
|
1255
|
-
case MODE_BREAK: {
|
|
1256
|
-
shouldRemeasure = false;
|
|
1257
|
-
const next = {
|
|
1258
|
-
ind,
|
|
1259
|
-
mode: MODE_FLAT,
|
|
1260
|
-
doc: doc2.contents
|
|
1261
|
-
};
|
|
1262
|
-
const rem = width - pos;
|
|
1263
|
-
const hasLineSuffix = lineSuffix2.length > 0;
|
|
1264
|
-
if (!doc2.break && fits(next, cmds, rem, hasLineSuffix, groupModeMap)) {
|
|
1265
|
-
cmds.push(next);
|
|
1266
|
-
} else {
|
|
1267
|
-
if (doc2.expandedStates) {
|
|
1268
|
-
const mostExpanded = at_default(
|
|
1269
|
-
/* isOptionalObject*/
|
|
1270
|
-
false,
|
|
1271
|
-
doc2.expandedStates,
|
|
1272
|
-
-1
|
|
1273
|
-
);
|
|
1274
|
-
if (doc2.break) {
|
|
1275
|
-
cmds.push({
|
|
1276
|
-
ind,
|
|
1277
|
-
mode: MODE_BREAK,
|
|
1278
|
-
doc: mostExpanded
|
|
1279
|
-
});
|
|
1280
|
-
break;
|
|
1281
|
-
} else {
|
|
1282
|
-
for (let i = 1; i < doc2.expandedStates.length + 1; i++) {
|
|
1283
|
-
if (i >= doc2.expandedStates.length) {
|
|
1284
|
-
cmds.push({
|
|
1285
|
-
ind,
|
|
1286
|
-
mode: MODE_BREAK,
|
|
1287
|
-
doc: mostExpanded
|
|
1288
|
-
});
|
|
1289
|
-
break;
|
|
1290
|
-
} else {
|
|
1291
|
-
const state = doc2.expandedStates[i];
|
|
1292
|
-
const cmd = {
|
|
1293
|
-
ind,
|
|
1294
|
-
mode: MODE_FLAT,
|
|
1295
|
-
doc: state
|
|
1296
|
-
};
|
|
1297
|
-
if (fits(cmd, cmds, rem, hasLineSuffix, groupModeMap)) {
|
|
1298
|
-
cmds.push(cmd);
|
|
1299
|
-
break;
|
|
1300
|
-
}
|
|
1301
|
-
}
|
|
1302
|
-
}
|
|
1303
|
-
}
|
|
1304
|
-
} else {
|
|
1305
|
-
cmds.push({
|
|
1306
|
-
ind,
|
|
1307
|
-
mode: MODE_BREAK,
|
|
1308
|
-
doc: doc2.contents
|
|
1309
|
-
});
|
|
1310
|
-
}
|
|
1311
|
-
}
|
|
1312
|
-
break;
|
|
1313
|
-
}
|
|
1314
|
-
}
|
|
1315
|
-
if (doc2.id) {
|
|
1316
|
-
groupModeMap[doc2.id] = at_default(
|
|
1317
|
-
/* isOptionalObject*/
|
|
1318
|
-
false,
|
|
1319
|
-
cmds,
|
|
1320
|
-
-1
|
|
1321
|
-
).mode;
|
|
1322
|
-
}
|
|
1323
|
-
break;
|
|
1324
|
-
case DOC_TYPE_FILL: {
|
|
1325
|
-
const rem = width - pos;
|
|
1326
|
-
const {
|
|
1327
|
-
parts
|
|
1328
|
-
} = doc2;
|
|
1329
|
-
if (parts.length === 0) {
|
|
1330
|
-
break;
|
|
1331
|
-
}
|
|
1332
|
-
const [content, whitespace] = parts;
|
|
1333
|
-
const contentFlatCmd = {
|
|
1334
|
-
ind,
|
|
1335
|
-
mode: MODE_FLAT,
|
|
1336
|
-
doc: content
|
|
1337
|
-
};
|
|
1338
|
-
const contentBreakCmd = {
|
|
1339
|
-
ind,
|
|
1340
|
-
mode: MODE_BREAK,
|
|
1341
|
-
doc: content
|
|
1342
|
-
};
|
|
1343
|
-
const contentFits = fits(contentFlatCmd, [], rem, lineSuffix2.length > 0, groupModeMap, true);
|
|
1344
|
-
if (parts.length === 1) {
|
|
1345
|
-
if (contentFits) {
|
|
1346
|
-
cmds.push(contentFlatCmd);
|
|
1347
|
-
} else {
|
|
1348
|
-
cmds.push(contentBreakCmd);
|
|
1349
|
-
}
|
|
1350
|
-
break;
|
|
1351
|
-
}
|
|
1352
|
-
const whitespaceFlatCmd = {
|
|
1353
|
-
ind,
|
|
1354
|
-
mode: MODE_FLAT,
|
|
1355
|
-
doc: whitespace
|
|
1356
|
-
};
|
|
1357
|
-
const whitespaceBreakCmd = {
|
|
1358
|
-
ind,
|
|
1359
|
-
mode: MODE_BREAK,
|
|
1360
|
-
doc: whitespace
|
|
1361
|
-
};
|
|
1362
|
-
if (parts.length === 2) {
|
|
1363
|
-
if (contentFits) {
|
|
1364
|
-
cmds.push(whitespaceFlatCmd, contentFlatCmd);
|
|
1365
|
-
} else {
|
|
1366
|
-
cmds.push(whitespaceBreakCmd, contentBreakCmd);
|
|
1367
|
-
}
|
|
1368
|
-
break;
|
|
1369
|
-
}
|
|
1370
|
-
parts.splice(0, 2);
|
|
1371
|
-
const remainingCmd = {
|
|
1372
|
-
ind,
|
|
1373
|
-
mode,
|
|
1374
|
-
doc: fill(parts)
|
|
1375
|
-
};
|
|
1376
|
-
const secondContent = parts[0];
|
|
1377
|
-
const firstAndSecondContentFlatCmd = {
|
|
1378
|
-
ind,
|
|
1379
|
-
mode: MODE_FLAT,
|
|
1380
|
-
doc: [content, whitespace, secondContent]
|
|
1381
|
-
};
|
|
1382
|
-
const firstAndSecondContentFits = fits(firstAndSecondContentFlatCmd, [], rem, lineSuffix2.length > 0, groupModeMap, true);
|
|
1383
|
-
if (firstAndSecondContentFits) {
|
|
1384
|
-
cmds.push(remainingCmd, whitespaceFlatCmd, contentFlatCmd);
|
|
1385
|
-
} else if (contentFits) {
|
|
1386
|
-
cmds.push(remainingCmd, whitespaceBreakCmd, contentFlatCmd);
|
|
1387
|
-
} else {
|
|
1388
|
-
cmds.push(remainingCmd, whitespaceBreakCmd, contentBreakCmd);
|
|
1389
|
-
}
|
|
1390
|
-
break;
|
|
1391
|
-
}
|
|
1392
|
-
case DOC_TYPE_IF_BREAK:
|
|
1393
|
-
case DOC_TYPE_INDENT_IF_BREAK: {
|
|
1394
|
-
const groupMode = doc2.groupId ? groupModeMap[doc2.groupId] : mode;
|
|
1395
|
-
if (groupMode === MODE_BREAK) {
|
|
1396
|
-
const breakContents = doc2.type === DOC_TYPE_IF_BREAK ? doc2.breakContents : doc2.negate ? doc2.contents : indent(doc2.contents);
|
|
1397
|
-
if (breakContents) {
|
|
1398
|
-
cmds.push({
|
|
1399
|
-
ind,
|
|
1400
|
-
mode,
|
|
1401
|
-
doc: breakContents
|
|
1402
|
-
});
|
|
1403
|
-
}
|
|
1404
|
-
}
|
|
1405
|
-
if (groupMode === MODE_FLAT) {
|
|
1406
|
-
const flatContents = doc2.type === DOC_TYPE_IF_BREAK ? doc2.flatContents : doc2.negate ? indent(doc2.contents) : doc2.contents;
|
|
1407
|
-
if (flatContents) {
|
|
1408
|
-
cmds.push({
|
|
1409
|
-
ind,
|
|
1410
|
-
mode,
|
|
1411
|
-
doc: flatContents
|
|
1412
|
-
});
|
|
1413
|
-
}
|
|
1414
|
-
}
|
|
1415
|
-
break;
|
|
1416
|
-
}
|
|
1417
|
-
case DOC_TYPE_LINE_SUFFIX:
|
|
1418
|
-
lineSuffix2.push({
|
|
1419
|
-
ind,
|
|
1420
|
-
mode,
|
|
1421
|
-
doc: doc2.contents
|
|
1422
|
-
});
|
|
1423
|
-
break;
|
|
1424
|
-
case DOC_TYPE_LINE_SUFFIX_BOUNDARY:
|
|
1425
|
-
if (lineSuffix2.length > 0) {
|
|
1426
|
-
cmds.push({
|
|
1427
|
-
ind,
|
|
1428
|
-
mode,
|
|
1429
|
-
doc: hardlineWithoutBreakParent
|
|
1430
|
-
});
|
|
1431
|
-
}
|
|
1432
|
-
break;
|
|
1433
|
-
case DOC_TYPE_LINE:
|
|
1434
|
-
switch (mode) {
|
|
1435
|
-
case MODE_FLAT:
|
|
1436
|
-
if (!doc2.hard) {
|
|
1437
|
-
if (!doc2.soft) {
|
|
1438
|
-
out.push(" ");
|
|
1439
|
-
pos += 1;
|
|
1440
|
-
}
|
|
1441
|
-
break;
|
|
1442
|
-
} else {
|
|
1443
|
-
shouldRemeasure = true;
|
|
1444
|
-
}
|
|
1445
|
-
case MODE_BREAK:
|
|
1446
|
-
if (lineSuffix2.length > 0) {
|
|
1447
|
-
cmds.push({
|
|
1448
|
-
ind,
|
|
1449
|
-
mode,
|
|
1450
|
-
doc: doc2
|
|
1451
|
-
}, ...lineSuffix2.reverse());
|
|
1452
|
-
lineSuffix2.length = 0;
|
|
1453
|
-
break;
|
|
1454
|
-
}
|
|
1455
|
-
if (doc2.literal) {
|
|
1456
|
-
if (ind.root) {
|
|
1457
|
-
out.push(newLine, ind.root.value);
|
|
1458
|
-
pos = ind.root.length;
|
|
1459
|
-
} else {
|
|
1460
|
-
out.push(newLine);
|
|
1461
|
-
pos = 0;
|
|
1462
|
-
}
|
|
1463
|
-
} else {
|
|
1464
|
-
pos -= trim2(out);
|
|
1465
|
-
out.push(newLine + ind.value);
|
|
1466
|
-
pos = ind.length;
|
|
1467
|
-
}
|
|
1468
|
-
break;
|
|
1469
|
-
}
|
|
1470
|
-
break;
|
|
1471
|
-
case DOC_TYPE_LABEL:
|
|
1472
|
-
cmds.push({
|
|
1473
|
-
ind,
|
|
1474
|
-
mode,
|
|
1475
|
-
doc: doc2.contents
|
|
1476
|
-
});
|
|
1477
|
-
break;
|
|
1478
|
-
case DOC_TYPE_BREAK_PARENT:
|
|
1479
|
-
break;
|
|
1480
|
-
default:
|
|
1481
|
-
throw new invalid_doc_error_default(doc2);
|
|
1482
|
-
}
|
|
1483
|
-
if (cmds.length === 0 && lineSuffix2.length > 0) {
|
|
1484
|
-
cmds.push(...lineSuffix2.reverse());
|
|
1485
|
-
lineSuffix2.length = 0;
|
|
1486
|
-
}
|
|
1487
|
-
}
|
|
1488
|
-
const cursorPlaceholderIndex = out.indexOf(CURSOR_PLACEHOLDER);
|
|
1489
|
-
if (cursorPlaceholderIndex !== -1) {
|
|
1490
|
-
const otherCursorPlaceholderIndex = out.indexOf(CURSOR_PLACEHOLDER, cursorPlaceholderIndex + 1);
|
|
1491
|
-
const beforeCursor = out.slice(0, cursorPlaceholderIndex).join("");
|
|
1492
|
-
const aroundCursor = out.slice(cursorPlaceholderIndex + 1, otherCursorPlaceholderIndex).join("");
|
|
1493
|
-
const afterCursor = out.slice(otherCursorPlaceholderIndex + 1).join("");
|
|
1494
|
-
return {
|
|
1495
|
-
formatted: beforeCursor + aroundCursor + afterCursor,
|
|
1496
|
-
cursorNodeStart: beforeCursor.length,
|
|
1497
|
-
cursorNodeText: aroundCursor
|
|
1498
|
-
};
|
|
1499
|
-
}
|
|
1500
|
-
return {
|
|
1501
|
-
formatted: out.join("")
|
|
1502
|
-
};
|
|
1503
|
-
}
|
|
1504
|
-
var builders = {
|
|
1505
|
-
join,
|
|
1506
|
-
line,
|
|
1507
|
-
softline,
|
|
1508
|
-
hardline,
|
|
1509
|
-
literalline,
|
|
1510
|
-
group,
|
|
1511
|
-
conditionalGroup,
|
|
1512
|
-
fill,
|
|
1513
|
-
lineSuffix,
|
|
1514
|
-
lineSuffixBoundary,
|
|
1515
|
-
cursor,
|
|
1516
|
-
breakParent,
|
|
1517
|
-
ifBreak,
|
|
1518
|
-
trim,
|
|
1519
|
-
indent,
|
|
1520
|
-
indentIfBreak,
|
|
1521
|
-
align,
|
|
1522
|
-
addAlignmentToDoc,
|
|
1523
|
-
markAsRoot,
|
|
1524
|
-
dedentToRoot,
|
|
1525
|
-
dedent,
|
|
1526
|
-
hardlineWithoutBreakParent,
|
|
1527
|
-
literallineWithoutBreakParent,
|
|
1528
|
-
label,
|
|
1529
|
-
// TODO: Remove this in v4
|
|
1530
|
-
concat: (parts) => parts
|
|
1531
|
-
};
|
|
1532
|
-
var printer = { printDocToString };
|
|
1533
|
-
var utils = {
|
|
1534
|
-
willBreak,
|
|
1535
|
-
traverseDoc: traverse_doc_default,
|
|
1536
|
-
findInDoc,
|
|
1537
|
-
mapDoc,
|
|
1538
|
-
removeLines,
|
|
1539
|
-
stripTrailingHardline,
|
|
1540
|
-
replaceEndOfLine,
|
|
1541
|
-
canBreak
|
|
1542
|
-
};
|
|
1543
|
-
|
|
1544
299
|
// src/weaverse-client.ts
|
|
300
|
+
var CACHE_HITS_KEY = "https://weaverse.io/__CACHE_HITS_COUNT__";
|
|
1545
301
|
var WeaverseClient = class {
|
|
1546
302
|
API = "api/public/project";
|
|
1547
303
|
clientVersion = package_default.version;
|
|
@@ -1592,18 +348,44 @@ var WeaverseClient = class {
|
|
|
1592
348
|
}
|
|
1593
349
|
fetchWithCache = (url, options) => {
|
|
1594
350
|
let cacheKey = [url, options.body];
|
|
1595
|
-
let {
|
|
351
|
+
let {
|
|
352
|
+
strategy = this.storefront.CacheCustom({
|
|
353
|
+
maxAge: 5,
|
|
354
|
+
staleWhileRevalidate: 82800
|
|
355
|
+
}),
|
|
356
|
+
...reqInit
|
|
357
|
+
} = options;
|
|
1596
358
|
let res = this.withCache(cacheKey, strategy, async () => {
|
|
1597
359
|
let response = await fetch(url, reqInit);
|
|
1598
360
|
if (!response.ok) {
|
|
1599
361
|
let error = await response.text();
|
|
1600
362
|
let { status, statusText } = response;
|
|
1601
363
|
throw new Error(`${status} ${statusText} ${error}`);
|
|
364
|
+
} else {
|
|
365
|
+
if (!url.includes("/configs")) {
|
|
366
|
+
await this.resetCacheHits().catch(console.error);
|
|
367
|
+
}
|
|
1602
368
|
}
|
|
1603
369
|
return await response.json();
|
|
1604
370
|
});
|
|
1605
371
|
return res;
|
|
1606
372
|
};
|
|
373
|
+
incrementCacheHits = async () => {
|
|
374
|
+
const currentHitsResponse = await this.cache.match(CACHE_HITS_KEY);
|
|
375
|
+
const currentHits = currentHitsResponse ? parseInt(await currentHitsResponse.text()) : 0;
|
|
376
|
+
const newHitsCount = currentHits + 1;
|
|
377
|
+
const newHitsResponse = new Response(newHitsCount.toString(), {
|
|
378
|
+
headers: {
|
|
379
|
+
"Cache-Control": "max-age=3600"
|
|
380
|
+
}
|
|
381
|
+
});
|
|
382
|
+
await this.cache.put(CACHE_HITS_KEY, newHitsResponse);
|
|
383
|
+
return newHitsCount.toString();
|
|
384
|
+
};
|
|
385
|
+
resetCacheHits = async () => {
|
|
386
|
+
const resetHitsResponse = new Response("0");
|
|
387
|
+
await this.cache.put(CACHE_HITS_KEY, resetHitsResponse);
|
|
388
|
+
};
|
|
1607
389
|
loadThemeSettings = async (strategy) => {
|
|
1608
390
|
try {
|
|
1609
391
|
let { API, configs } = this;
|
|
@@ -1613,9 +395,12 @@ var WeaverseClient = class {
|
|
|
1613
395
|
}
|
|
1614
396
|
let res;
|
|
1615
397
|
if (isDesignMode) {
|
|
1616
|
-
res = await fetch(
|
|
1617
|
-
|
|
1618
|
-
|
|
398
|
+
res = await fetch(
|
|
399
|
+
`${weaverseHost}/${API}/${projectId}/configs?isDesignMode=true`,
|
|
400
|
+
{
|
|
401
|
+
method: "POST"
|
|
402
|
+
}
|
|
403
|
+
).then((res2) => res2.json());
|
|
1619
404
|
} else {
|
|
1620
405
|
res = await this.fetchWithCache(
|
|
1621
406
|
`${weaverseHost}/${API}/${projectId}/configs`,
|
|
@@ -1624,16 +409,16 @@ var WeaverseClient = class {
|
|
|
1624
409
|
}
|
|
1625
410
|
let data = res || {};
|
|
1626
411
|
if (data?.theme && this.themeSchema?.inspector) {
|
|
1627
|
-
let
|
|
1628
|
-
this.themeSchema.inspector.forEach((
|
|
1629
|
-
|
|
1630
|
-
if (
|
|
1631
|
-
|
|
412
|
+
let defaultThemeSettings = {};
|
|
413
|
+
this.themeSchema.inspector.forEach(({ inputs }) => {
|
|
414
|
+
inputs.forEach(({ name, defaultValue }) => {
|
|
415
|
+
if (name && defaultValue) {
|
|
416
|
+
defaultThemeSettings[name] = defaultValue;
|
|
1632
417
|
}
|
|
1633
418
|
});
|
|
1634
419
|
});
|
|
1635
420
|
data.theme = {
|
|
1636
|
-
...
|
|
421
|
+
...defaultThemeSettings,
|
|
1637
422
|
...data.theme
|
|
1638
423
|
};
|
|
1639
424
|
}
|
|
@@ -1674,8 +459,16 @@ var WeaverseClient = class {
|
|
|
1674
459
|
if (isDesignMode) {
|
|
1675
460
|
payload = await fetch(url, reqInit).then((res) => res.json());
|
|
1676
461
|
} else {
|
|
462
|
+
let cacheHitsToSend = await this.incrementCacheHits().catch(
|
|
463
|
+
console.error
|
|
464
|
+
);
|
|
465
|
+
let headers = {
|
|
466
|
+
"X-Cache-Hits": cacheHitsToSend || "0"
|
|
467
|
+
// Send cache hits as a custom header
|
|
468
|
+
};
|
|
1677
469
|
payload = await this.fetchWithCache(url, {
|
|
1678
470
|
...reqInit,
|
|
471
|
+
headers,
|
|
1679
472
|
strategy
|
|
1680
473
|
});
|
|
1681
474
|
}
|
|
@@ -1715,8 +508,8 @@ var WeaverseClient = class {
|
|
|
1715
508
|
};
|
|
1716
509
|
execComponentLoader = async (item) => {
|
|
1717
510
|
let { data = {}, type, id } = item;
|
|
1718
|
-
let
|
|
1719
|
-
let { loader } =
|
|
511
|
+
let schema2 = this.components.find(({ schema: schema3 }) => schema3?.type === type);
|
|
512
|
+
let { loader } = schema2 || {};
|
|
1720
513
|
if (loader && typeof loader === "function") {
|
|
1721
514
|
try {
|
|
1722
515
|
return {
|
|
@@ -1757,20 +550,18 @@ var WeaverseHydrogen = class extends Weaverse {
|
|
|
1757
550
|
this.pageId = pageId;
|
|
1758
551
|
this.requestInfo = requestInfo;
|
|
1759
552
|
this.registerComponents(components);
|
|
553
|
+
this.registerComponents(defaultComponents);
|
|
1760
554
|
}
|
|
1761
|
-
|
|
1762
|
-
super.registerElement(element);
|
|
1763
|
-
}
|
|
1764
|
-
registerComponents(components) {
|
|
555
|
+
registerComponents = (components) => {
|
|
1765
556
|
components.forEach((comp) => {
|
|
1766
|
-
|
|
557
|
+
Weaverse.registerElement({
|
|
1767
558
|
type: comp?.schema?.type,
|
|
1768
559
|
Component: comp?.default,
|
|
1769
560
|
schema: comp?.schema,
|
|
1770
561
|
loader: comp?.loader
|
|
1771
562
|
});
|
|
1772
563
|
});
|
|
1773
|
-
}
|
|
564
|
+
};
|
|
1774
565
|
};
|
|
1775
566
|
var WeaverseHydrogenItem = class extends WeaverseItemStore {
|
|
1776
567
|
constructor(initialData, weaverse) {
|
|
@@ -1782,7 +573,7 @@ var WeaverseHydrogenItem = class extends WeaverseItemStore {
|
|
|
1782
573
|
return super.Element;
|
|
1783
574
|
}
|
|
1784
575
|
get data() {
|
|
1785
|
-
let defaultData = this.Element?.schema?.inspector?.flatMap((
|
|
576
|
+
let defaultData = this.Element?.schema?.inspector?.flatMap((group) => group.inputs).reduce((a, { defaultValue, name }) => {
|
|
1786
577
|
if (name && defaultValue !== null && defaultValue !== void 0) {
|
|
1787
578
|
a[name] = defaultValue;
|
|
1788
579
|
}
|
|
@@ -1803,6 +594,8 @@ export {
|
|
|
1803
594
|
getRequestQueries,
|
|
1804
595
|
getSelectedProductOptions,
|
|
1805
596
|
getWeaverseConfigs,
|
|
597
|
+
useItemInstance,
|
|
1806
598
|
useThemeSettings,
|
|
599
|
+
useWeaverse,
|
|
1807
600
|
withWeaverse
|
|
1808
601
|
};
|