@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.js
CHANGED
|
@@ -38,23 +38,45 @@ __export(src_exports, {
|
|
|
38
38
|
getRequestQueries: () => getRequestQueries,
|
|
39
39
|
getSelectedProductOptions: () => getSelectedProductOptions,
|
|
40
40
|
getWeaverseConfigs: () => getWeaverseConfigs,
|
|
41
|
+
useItemInstance: () => import_react13.useItemInstance,
|
|
41
42
|
useThemeSettings: () => useThemeSettings,
|
|
43
|
+
useWeaverse: () => import_react13.useWeaverse,
|
|
42
44
|
withWeaverse: () => withWeaverse
|
|
43
45
|
});
|
|
44
46
|
module.exports = __toCommonJS(src_exports);
|
|
45
|
-
var
|
|
47
|
+
var import_react13 = require("@weaverse/react");
|
|
48
|
+
|
|
49
|
+
// src/components/main.tsx
|
|
50
|
+
var main_exports = {};
|
|
51
|
+
__export(main_exports, {
|
|
52
|
+
default: () => main_default,
|
|
53
|
+
schema: () => schema
|
|
54
|
+
});
|
|
55
|
+
var import_react = __toESM(require("react"));
|
|
56
|
+
var Main = (0, import_react.forwardRef)((props, ref) => {
|
|
57
|
+
return /* @__PURE__ */ import_react.default.createElement("div", { ref, ...props });
|
|
58
|
+
});
|
|
59
|
+
var main_default = Main;
|
|
60
|
+
var schema = {
|
|
61
|
+
type: "main",
|
|
62
|
+
title: "Main",
|
|
63
|
+
inspector: []
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
// src/components/index.ts
|
|
67
|
+
var defaultComponents = [main_exports];
|
|
46
68
|
|
|
47
69
|
// src/WeaverseHydrogenRoot.tsx
|
|
48
|
-
var
|
|
49
|
-
var
|
|
50
|
-
var
|
|
70
|
+
var import_react10 = require("@remix-run/react");
|
|
71
|
+
var import_react11 = require("@weaverse/react");
|
|
72
|
+
var import_react12 = __toESM(require("react"));
|
|
51
73
|
var import_react_error_boundary = require("react-error-boundary");
|
|
52
74
|
|
|
53
75
|
// src/context.ts
|
|
54
|
-
var
|
|
55
|
-
var
|
|
76
|
+
var import_react2 = require("@weaverse/react");
|
|
77
|
+
var import_react3 = require("react");
|
|
56
78
|
function createCachedWeaverseInstance(params, components) {
|
|
57
|
-
if (
|
|
79
|
+
if (import_react2.isBrowser) {
|
|
58
80
|
window.__weaverses = window.__weaverses || [];
|
|
59
81
|
let weaverse = window.__weaverses.find((w) => {
|
|
60
82
|
let { pathname, search } = w.requestInfo;
|
|
@@ -83,18 +105,18 @@ function createWeaverseInstance(weaverseData, components) {
|
|
|
83
105
|
components
|
|
84
106
|
);
|
|
85
107
|
}
|
|
86
|
-
var ThemeProvider = (0,
|
|
108
|
+
var ThemeProvider = (0, import_react3.createContext)(null);
|
|
87
109
|
ThemeProvider.displayName = "WeaverseThemeProvider";
|
|
88
110
|
|
|
89
111
|
// src/hooks/use-studio.ts
|
|
90
|
-
var
|
|
91
|
-
var
|
|
92
|
-
var
|
|
112
|
+
var import_react5 = require("@remix-run/react");
|
|
113
|
+
var import_react6 = require("@weaverse/react");
|
|
114
|
+
var import_react7 = require("react");
|
|
93
115
|
|
|
94
116
|
// src/hooks/use-theme-context.ts
|
|
95
|
-
var
|
|
117
|
+
var import_react4 = require("react");
|
|
96
118
|
function useThemeContext() {
|
|
97
|
-
let themeContext = (0,
|
|
119
|
+
let themeContext = (0, import_react4.useContext)(ThemeProvider);
|
|
98
120
|
if (!themeContext) {
|
|
99
121
|
throw new Error(
|
|
100
122
|
`useThemeContext must be used within a ThemeProvider. Make sure to wrap your app in the withWeaverse HoC.`
|
|
@@ -105,12 +127,12 @@ function useThemeContext() {
|
|
|
105
127
|
|
|
106
128
|
// src/hooks/use-studio.ts
|
|
107
129
|
function useStudio(weaverse) {
|
|
108
|
-
let { revalidate } = (0,
|
|
109
|
-
let navigate = (0,
|
|
130
|
+
let { revalidate } = (0, import_react5.useRevalidator)();
|
|
131
|
+
let navigate = (0, import_react5.useNavigate)();
|
|
110
132
|
let themeSettingsStore = useThemeContext();
|
|
111
133
|
let { isDesignMode, weaverseHost, weaverseVersion } = weaverse;
|
|
112
|
-
let isStudio =
|
|
113
|
-
(0,
|
|
134
|
+
let isStudio = import_react6.isIframe && isDesignMode && weaverseHost && weaverseVersion;
|
|
135
|
+
(0, import_react7.useEffect)(() => {
|
|
114
136
|
if (isStudio) {
|
|
115
137
|
weaverse.internal = {
|
|
116
138
|
...weaverse.internal,
|
|
@@ -123,15 +145,15 @@ function useStudio(weaverse) {
|
|
|
123
145
|
window.weaverseStudio.init(weaverse);
|
|
124
146
|
} else {
|
|
125
147
|
let studioSrc = `${weaverseHost}/assets/studio/hydrogen/index.js?v=${weaverseVersion}`;
|
|
126
|
-
(0,
|
|
148
|
+
(0, import_react6.loadScript)(studioSrc);
|
|
127
149
|
}
|
|
128
150
|
}
|
|
129
151
|
}, [weaverse.requestInfo]);
|
|
130
152
|
}
|
|
131
153
|
|
|
132
154
|
// src/hooks/use-theme-settings.ts
|
|
133
|
-
var
|
|
134
|
-
var
|
|
155
|
+
var import_react8 = require("react");
|
|
156
|
+
var import_react9 = require("@weaverse/react");
|
|
135
157
|
var ThemeSettingsStore = class _ThemeSettingsStore {
|
|
136
158
|
static settings = null;
|
|
137
159
|
listeners = [];
|
|
@@ -139,8 +161,8 @@ var ThemeSettingsStore = class _ThemeSettingsStore {
|
|
|
139
161
|
schema;
|
|
140
162
|
publicEnv;
|
|
141
163
|
constructor(data) {
|
|
142
|
-
let { theme, countries, schema, publicEnv } = data || {};
|
|
143
|
-
if (
|
|
164
|
+
let { theme, countries, schema: schema2, publicEnv } = data || {};
|
|
165
|
+
if (import_react9.isBrowser && _ThemeSettingsStore.settings) {
|
|
144
166
|
_ThemeSettingsStore.settings = {
|
|
145
167
|
...theme,
|
|
146
168
|
..._ThemeSettingsStore.settings
|
|
@@ -149,7 +171,7 @@ var ThemeSettingsStore = class _ThemeSettingsStore {
|
|
|
149
171
|
_ThemeSettingsStore.settings = theme || {};
|
|
150
172
|
}
|
|
151
173
|
this.countries = countries;
|
|
152
|
-
this.schema =
|
|
174
|
+
this.schema = schema2;
|
|
153
175
|
this.publicEnv = publicEnv;
|
|
154
176
|
}
|
|
155
177
|
updateThemeSettings = (newSettings) => {
|
|
@@ -179,7 +201,7 @@ var ThemeSettingsStore = class _ThemeSettingsStore {
|
|
|
179
201
|
};
|
|
180
202
|
function useThemeSettings() {
|
|
181
203
|
let themeSettingsStore = useThemeContext();
|
|
182
|
-
let settings = (0,
|
|
204
|
+
let settings = (0, import_react8.useSyncExternalStore)(
|
|
183
205
|
themeSettingsStore.subscribe,
|
|
184
206
|
themeSettingsStore.getSnapshot,
|
|
185
207
|
themeSettingsStore.getServerSnapshot
|
|
@@ -188,22 +210,22 @@ function useThemeSettings() {
|
|
|
188
210
|
}
|
|
189
211
|
|
|
190
212
|
// src/WeaverseHydrogenRoot.tsx
|
|
191
|
-
var WeaverseHydrogenRoot = (0,
|
|
213
|
+
var WeaverseHydrogenRoot = (0, import_react12.memo)(
|
|
192
214
|
({
|
|
193
215
|
errorComponent: ErrorComponent = FallbackError,
|
|
194
216
|
components
|
|
195
217
|
}) => {
|
|
196
|
-
let loaderData = (0,
|
|
218
|
+
let loaderData = (0, import_react10.useLoaderData)();
|
|
197
219
|
let data = loaderData?.weaverseData;
|
|
198
220
|
if (data) {
|
|
199
221
|
if (data instanceof Promise) {
|
|
200
|
-
return /* @__PURE__ */
|
|
201
|
-
return /* @__PURE__ */
|
|
222
|
+
return /* @__PURE__ */ import_react12.default.createElement(import_react_error_boundary.ErrorBoundary, { fallbackRender: ErrorComponent }, /* @__PURE__ */ import_react12.default.createElement(import_react12.Suspense, null, /* @__PURE__ */ import_react12.default.createElement(import_react10.Await, { resolve: data }, (resolvedData) => {
|
|
223
|
+
return /* @__PURE__ */ import_react12.default.createElement(RenderRoot, { data: resolvedData, components });
|
|
202
224
|
})));
|
|
203
225
|
}
|
|
204
|
-
return /* @__PURE__ */
|
|
226
|
+
return /* @__PURE__ */ import_react12.default.createElement(RenderRoot, { data, components });
|
|
205
227
|
}
|
|
206
|
-
return /* @__PURE__ */
|
|
228
|
+
return /* @__PURE__ */ import_react12.default.createElement(
|
|
207
229
|
ErrorComponent,
|
|
208
230
|
{
|
|
209
231
|
error: { message: "No Weaverse data return from route loader!" }
|
|
@@ -215,17 +237,17 @@ function RenderRoot(props) {
|
|
|
215
237
|
let { data, components } = props;
|
|
216
238
|
let weaverse = createWeaverseInstance(data, components);
|
|
217
239
|
useStudio(weaverse);
|
|
218
|
-
return /* @__PURE__ */
|
|
240
|
+
return /* @__PURE__ */ import_react12.default.createElement(import_react11.WeaverseRoot, { context: weaverse });
|
|
219
241
|
}
|
|
220
242
|
function withWeaverse(Component) {
|
|
221
243
|
return (props) => {
|
|
222
|
-
let loaderData = (0,
|
|
244
|
+
let loaderData = (0, import_react10.useRouteLoaderData)("root");
|
|
223
245
|
let themeSettingsStore = new ThemeSettingsStore(loaderData?.weaverseTheme);
|
|
224
|
-
return /* @__PURE__ */
|
|
246
|
+
return /* @__PURE__ */ import_react12.default.createElement(ThemeProvider.Provider, { value: themeSettingsStore }, /* @__PURE__ */ import_react12.default.createElement(Component, { ...props }));
|
|
225
247
|
};
|
|
226
248
|
}
|
|
227
249
|
function FallbackError({ error }) {
|
|
228
|
-
return /* @__PURE__ */
|
|
250
|
+
return /* @__PURE__ */ import_react12.default.createElement("div", null, error?.message || "An unexpected error occurred");
|
|
229
251
|
}
|
|
230
252
|
|
|
231
253
|
// src/weaverse-client.ts
|
|
@@ -233,7 +255,7 @@ var import_hydrogen = require("@shopify/hydrogen");
|
|
|
233
255
|
|
|
234
256
|
// package.json
|
|
235
257
|
var package_default = {
|
|
236
|
-
version: "2.
|
|
258
|
+
version: "2.4.0",
|
|
237
259
|
license: "MIT",
|
|
238
260
|
main: "dist/index.js",
|
|
239
261
|
typings: "dist/index.d.ts",
|
|
@@ -267,12 +289,12 @@ var package_default = {
|
|
|
267
289
|
author: "Weaverse Team",
|
|
268
290
|
dependencies: {
|
|
269
291
|
"@remix-run/react": "1.19.1",
|
|
270
|
-
"@shopify/hydrogen": "2023.7.
|
|
271
|
-
"@weaverse/react": "2.
|
|
292
|
+
"@shopify/hydrogen": "^2023.7.13",
|
|
293
|
+
"@weaverse/react": "2.4.0",
|
|
272
294
|
"react-error-boundary": "^4.0.11"
|
|
273
295
|
},
|
|
274
296
|
devDependencies: {
|
|
275
|
-
"@shopify/remix-oxygen": "^1.1.
|
|
297
|
+
"@shopify/remix-oxygen": "^1.1.8"
|
|
276
298
|
}
|
|
277
299
|
};
|
|
278
300
|
|
|
@@ -308,1280 +330,8 @@ function getWeaverseConfigs(request, env) {
|
|
|
308
330
|
};
|
|
309
331
|
}
|
|
310
332
|
|
|
311
|
-
// ../../node_modules/prettier/doc.mjs
|
|
312
|
-
var __defProp2 = Object.defineProperty;
|
|
313
|
-
var __export2 = (target, all) => {
|
|
314
|
-
for (var name in all)
|
|
315
|
-
__defProp2(target, name, { get: all[name], enumerable: true });
|
|
316
|
-
};
|
|
317
|
-
var public_exports = {};
|
|
318
|
-
__export2(public_exports, {
|
|
319
|
-
builders: () => builders,
|
|
320
|
-
printer: () => printer,
|
|
321
|
-
utils: () => utils
|
|
322
|
-
});
|
|
323
|
-
var DOC_TYPE_STRING = "string";
|
|
324
|
-
var DOC_TYPE_ARRAY = "array";
|
|
325
|
-
var DOC_TYPE_CURSOR = "cursor";
|
|
326
|
-
var DOC_TYPE_INDENT = "indent";
|
|
327
|
-
var DOC_TYPE_ALIGN = "align";
|
|
328
|
-
var DOC_TYPE_TRIM = "trim";
|
|
329
|
-
var DOC_TYPE_GROUP = "group";
|
|
330
|
-
var DOC_TYPE_FILL = "fill";
|
|
331
|
-
var DOC_TYPE_IF_BREAK = "if-break";
|
|
332
|
-
var DOC_TYPE_INDENT_IF_BREAK = "indent-if-break";
|
|
333
|
-
var DOC_TYPE_LINE_SUFFIX = "line-suffix";
|
|
334
|
-
var DOC_TYPE_LINE_SUFFIX_BOUNDARY = "line-suffix-boundary";
|
|
335
|
-
var DOC_TYPE_LINE = "line";
|
|
336
|
-
var DOC_TYPE_LABEL = "label";
|
|
337
|
-
var DOC_TYPE_BREAK_PARENT = "break-parent";
|
|
338
|
-
var VALID_OBJECT_DOC_TYPES = /* @__PURE__ */ new Set([
|
|
339
|
-
DOC_TYPE_CURSOR,
|
|
340
|
-
DOC_TYPE_INDENT,
|
|
341
|
-
DOC_TYPE_ALIGN,
|
|
342
|
-
DOC_TYPE_TRIM,
|
|
343
|
-
DOC_TYPE_GROUP,
|
|
344
|
-
DOC_TYPE_FILL,
|
|
345
|
-
DOC_TYPE_IF_BREAK,
|
|
346
|
-
DOC_TYPE_INDENT_IF_BREAK,
|
|
347
|
-
DOC_TYPE_LINE_SUFFIX,
|
|
348
|
-
DOC_TYPE_LINE_SUFFIX_BOUNDARY,
|
|
349
|
-
DOC_TYPE_LINE,
|
|
350
|
-
DOC_TYPE_LABEL,
|
|
351
|
-
DOC_TYPE_BREAK_PARENT
|
|
352
|
-
]);
|
|
353
|
-
function getDocType(doc) {
|
|
354
|
-
if (typeof doc === "string") {
|
|
355
|
-
return DOC_TYPE_STRING;
|
|
356
|
-
}
|
|
357
|
-
if (Array.isArray(doc)) {
|
|
358
|
-
return DOC_TYPE_ARRAY;
|
|
359
|
-
}
|
|
360
|
-
if (!doc) {
|
|
361
|
-
return;
|
|
362
|
-
}
|
|
363
|
-
const { type } = doc;
|
|
364
|
-
if (VALID_OBJECT_DOC_TYPES.has(type)) {
|
|
365
|
-
return type;
|
|
366
|
-
}
|
|
367
|
-
}
|
|
368
|
-
var get_doc_type_default = getDocType;
|
|
369
|
-
var disjunctionListFormat = (list) => new Intl.ListFormat("en-US", { type: "disjunction" }).format(list);
|
|
370
|
-
function getDocErrorMessage(doc) {
|
|
371
|
-
const type = doc === null ? "null" : typeof doc;
|
|
372
|
-
if (type !== "string" && type !== "object") {
|
|
373
|
-
return `Unexpected doc '${type}',
|
|
374
|
-
Expected it to be 'string' or 'object'.`;
|
|
375
|
-
}
|
|
376
|
-
if (get_doc_type_default(doc)) {
|
|
377
|
-
throw new Error("doc is valid.");
|
|
378
|
-
}
|
|
379
|
-
const objectType = Object.prototype.toString.call(doc);
|
|
380
|
-
if (objectType !== "[object Object]") {
|
|
381
|
-
return `Unexpected doc '${objectType}'.`;
|
|
382
|
-
}
|
|
383
|
-
const EXPECTED_TYPE_VALUES = disjunctionListFormat(
|
|
384
|
-
[...VALID_OBJECT_DOC_TYPES].map((type2) => `'${type2}'`)
|
|
385
|
-
);
|
|
386
|
-
return `Unexpected doc.type '${doc.type}'.
|
|
387
|
-
Expected it to be ${EXPECTED_TYPE_VALUES}.`;
|
|
388
|
-
}
|
|
389
|
-
var InvalidDocError = class extends Error {
|
|
390
|
-
name = "InvalidDocError";
|
|
391
|
-
constructor(doc) {
|
|
392
|
-
super(getDocErrorMessage(doc));
|
|
393
|
-
this.doc = doc;
|
|
394
|
-
}
|
|
395
|
-
};
|
|
396
|
-
var invalid_doc_error_default = InvalidDocError;
|
|
397
|
-
var traverseDocOnExitStackMarker = {};
|
|
398
|
-
function traverseDoc(doc, onEnter, onExit, shouldTraverseConditionalGroups) {
|
|
399
|
-
const docsStack = [doc];
|
|
400
|
-
while (docsStack.length > 0) {
|
|
401
|
-
const doc2 = docsStack.pop();
|
|
402
|
-
if (doc2 === traverseDocOnExitStackMarker) {
|
|
403
|
-
onExit(docsStack.pop());
|
|
404
|
-
continue;
|
|
405
|
-
}
|
|
406
|
-
if (onExit) {
|
|
407
|
-
docsStack.push(doc2, traverseDocOnExitStackMarker);
|
|
408
|
-
}
|
|
409
|
-
const docType = get_doc_type_default(doc2);
|
|
410
|
-
if (!docType) {
|
|
411
|
-
throw new invalid_doc_error_default(doc2);
|
|
412
|
-
}
|
|
413
|
-
if ((onEnter == null ? void 0 : onEnter(doc2)) === false) {
|
|
414
|
-
continue;
|
|
415
|
-
}
|
|
416
|
-
switch (docType) {
|
|
417
|
-
case DOC_TYPE_ARRAY:
|
|
418
|
-
case DOC_TYPE_FILL: {
|
|
419
|
-
const parts = docType === DOC_TYPE_ARRAY ? doc2 : doc2.parts;
|
|
420
|
-
for (let ic = parts.length, i = ic - 1; i >= 0; --i) {
|
|
421
|
-
docsStack.push(parts[i]);
|
|
422
|
-
}
|
|
423
|
-
break;
|
|
424
|
-
}
|
|
425
|
-
case DOC_TYPE_IF_BREAK:
|
|
426
|
-
docsStack.push(doc2.flatContents, doc2.breakContents);
|
|
427
|
-
break;
|
|
428
|
-
case DOC_TYPE_GROUP:
|
|
429
|
-
if (shouldTraverseConditionalGroups && doc2.expandedStates) {
|
|
430
|
-
for (let ic = doc2.expandedStates.length, i = ic - 1; i >= 0; --i) {
|
|
431
|
-
docsStack.push(doc2.expandedStates[i]);
|
|
432
|
-
}
|
|
433
|
-
} else {
|
|
434
|
-
docsStack.push(doc2.contents);
|
|
435
|
-
}
|
|
436
|
-
break;
|
|
437
|
-
case DOC_TYPE_ALIGN:
|
|
438
|
-
case DOC_TYPE_INDENT:
|
|
439
|
-
case DOC_TYPE_INDENT_IF_BREAK:
|
|
440
|
-
case DOC_TYPE_LABEL:
|
|
441
|
-
case DOC_TYPE_LINE_SUFFIX:
|
|
442
|
-
docsStack.push(doc2.contents);
|
|
443
|
-
break;
|
|
444
|
-
case DOC_TYPE_STRING:
|
|
445
|
-
case DOC_TYPE_CURSOR:
|
|
446
|
-
case DOC_TYPE_TRIM:
|
|
447
|
-
case DOC_TYPE_LINE_SUFFIX_BOUNDARY:
|
|
448
|
-
case DOC_TYPE_LINE:
|
|
449
|
-
case DOC_TYPE_BREAK_PARENT:
|
|
450
|
-
break;
|
|
451
|
-
default:
|
|
452
|
-
throw new invalid_doc_error_default(doc2);
|
|
453
|
-
}
|
|
454
|
-
}
|
|
455
|
-
}
|
|
456
|
-
var traverse_doc_default = traverseDoc;
|
|
457
|
-
var noop = () => {
|
|
458
|
-
};
|
|
459
|
-
var assertDoc = true ? noop : function(doc) {
|
|
460
|
-
traverse_doc_default(doc, (doc2) => {
|
|
461
|
-
if (checked.has(doc2)) {
|
|
462
|
-
return false;
|
|
463
|
-
}
|
|
464
|
-
if (typeof doc2 !== "string") {
|
|
465
|
-
checked.add(doc2);
|
|
466
|
-
}
|
|
467
|
-
});
|
|
468
|
-
};
|
|
469
|
-
var assertDocArray = true ? noop : function(docs, optional = false) {
|
|
470
|
-
if (optional && !docs) {
|
|
471
|
-
return;
|
|
472
|
-
}
|
|
473
|
-
if (!Array.isArray(docs)) {
|
|
474
|
-
throw new TypeError("Unexpected doc array.");
|
|
475
|
-
}
|
|
476
|
-
for (const doc of docs) {
|
|
477
|
-
assertDoc(doc);
|
|
478
|
-
}
|
|
479
|
-
};
|
|
480
|
-
function indent(contents) {
|
|
481
|
-
assertDoc(contents);
|
|
482
|
-
return { type: DOC_TYPE_INDENT, contents };
|
|
483
|
-
}
|
|
484
|
-
function align(widthOrString, contents) {
|
|
485
|
-
assertDoc(contents);
|
|
486
|
-
return { type: DOC_TYPE_ALIGN, contents, n: widthOrString };
|
|
487
|
-
}
|
|
488
|
-
function group(contents, opts = {}) {
|
|
489
|
-
assertDoc(contents);
|
|
490
|
-
assertDocArray(
|
|
491
|
-
opts.expandedStates,
|
|
492
|
-
/* optional */
|
|
493
|
-
true
|
|
494
|
-
);
|
|
495
|
-
return {
|
|
496
|
-
type: DOC_TYPE_GROUP,
|
|
497
|
-
id: opts.id,
|
|
498
|
-
contents,
|
|
499
|
-
break: Boolean(opts.shouldBreak),
|
|
500
|
-
expandedStates: opts.expandedStates
|
|
501
|
-
};
|
|
502
|
-
}
|
|
503
|
-
function dedentToRoot(contents) {
|
|
504
|
-
return align(Number.NEGATIVE_INFINITY, contents);
|
|
505
|
-
}
|
|
506
|
-
function markAsRoot(contents) {
|
|
507
|
-
return align({ type: "root" }, contents);
|
|
508
|
-
}
|
|
509
|
-
function dedent(contents) {
|
|
510
|
-
return align(-1, contents);
|
|
511
|
-
}
|
|
512
|
-
function conditionalGroup(states, opts) {
|
|
513
|
-
return group(states[0], { ...opts, expandedStates: states });
|
|
514
|
-
}
|
|
515
|
-
function fill(parts) {
|
|
516
|
-
assertDocArray(parts);
|
|
517
|
-
return { type: DOC_TYPE_FILL, parts };
|
|
518
|
-
}
|
|
519
|
-
function ifBreak(breakContents, flatContents = "", opts = {}) {
|
|
520
|
-
assertDoc(breakContents);
|
|
521
|
-
if (flatContents !== "") {
|
|
522
|
-
assertDoc(flatContents);
|
|
523
|
-
}
|
|
524
|
-
return {
|
|
525
|
-
type: DOC_TYPE_IF_BREAK,
|
|
526
|
-
breakContents,
|
|
527
|
-
flatContents,
|
|
528
|
-
groupId: opts.groupId
|
|
529
|
-
};
|
|
530
|
-
}
|
|
531
|
-
function indentIfBreak(contents, opts) {
|
|
532
|
-
assertDoc(contents);
|
|
533
|
-
return {
|
|
534
|
-
type: DOC_TYPE_INDENT_IF_BREAK,
|
|
535
|
-
contents,
|
|
536
|
-
groupId: opts.groupId,
|
|
537
|
-
negate: opts.negate
|
|
538
|
-
};
|
|
539
|
-
}
|
|
540
|
-
function lineSuffix(contents) {
|
|
541
|
-
assertDoc(contents);
|
|
542
|
-
return { type: DOC_TYPE_LINE_SUFFIX, contents };
|
|
543
|
-
}
|
|
544
|
-
var lineSuffixBoundary = { type: DOC_TYPE_LINE_SUFFIX_BOUNDARY };
|
|
545
|
-
var breakParent = { type: DOC_TYPE_BREAK_PARENT };
|
|
546
|
-
var trim = { type: DOC_TYPE_TRIM };
|
|
547
|
-
var hardlineWithoutBreakParent = { type: DOC_TYPE_LINE, hard: true };
|
|
548
|
-
var literallineWithoutBreakParent = {
|
|
549
|
-
type: DOC_TYPE_LINE,
|
|
550
|
-
hard: true,
|
|
551
|
-
literal: true
|
|
552
|
-
};
|
|
553
|
-
var line = { type: DOC_TYPE_LINE };
|
|
554
|
-
var softline = { type: DOC_TYPE_LINE, soft: true };
|
|
555
|
-
var hardline = [hardlineWithoutBreakParent, breakParent];
|
|
556
|
-
var literalline = [literallineWithoutBreakParent, breakParent];
|
|
557
|
-
var cursor = { type: DOC_TYPE_CURSOR };
|
|
558
|
-
function join(separator, docs) {
|
|
559
|
-
assertDoc(separator);
|
|
560
|
-
assertDocArray(docs);
|
|
561
|
-
const parts = [];
|
|
562
|
-
for (let i = 0; i < docs.length; i++) {
|
|
563
|
-
if (i !== 0) {
|
|
564
|
-
parts.push(separator);
|
|
565
|
-
}
|
|
566
|
-
parts.push(docs[i]);
|
|
567
|
-
}
|
|
568
|
-
return parts;
|
|
569
|
-
}
|
|
570
|
-
function addAlignmentToDoc(doc, size, tabWidth) {
|
|
571
|
-
assertDoc(doc);
|
|
572
|
-
let aligned = doc;
|
|
573
|
-
if (size > 0) {
|
|
574
|
-
for (let i = 0; i < Math.floor(size / tabWidth); ++i) {
|
|
575
|
-
aligned = indent(aligned);
|
|
576
|
-
}
|
|
577
|
-
aligned = align(size % tabWidth, aligned);
|
|
578
|
-
aligned = align(Number.NEGATIVE_INFINITY, aligned);
|
|
579
|
-
}
|
|
580
|
-
return aligned;
|
|
581
|
-
}
|
|
582
|
-
function label(label2, contents) {
|
|
583
|
-
assertDoc(contents);
|
|
584
|
-
return label2 ? { type: DOC_TYPE_LABEL, label: label2, contents } : contents;
|
|
585
|
-
}
|
|
586
|
-
var at = (isOptionalObject, object, index) => {
|
|
587
|
-
if (isOptionalObject && (object === void 0 || object === null)) {
|
|
588
|
-
return;
|
|
589
|
-
}
|
|
590
|
-
if (Array.isArray(object) || typeof object === "string") {
|
|
591
|
-
return object[index < 0 ? object.length + index : index];
|
|
592
|
-
}
|
|
593
|
-
return object.at(index);
|
|
594
|
-
};
|
|
595
|
-
var at_default = at;
|
|
596
|
-
var stringReplaceAll = (isOptionalObject, original, pattern, replacement) => {
|
|
597
|
-
if (isOptionalObject && (original === void 0 || original === null)) {
|
|
598
|
-
return;
|
|
599
|
-
}
|
|
600
|
-
if (original.replaceAll) {
|
|
601
|
-
return original.replaceAll(pattern, replacement);
|
|
602
|
-
}
|
|
603
|
-
if (pattern.global) {
|
|
604
|
-
return original.replace(pattern, replacement);
|
|
605
|
-
}
|
|
606
|
-
return original.split(pattern).join(replacement);
|
|
607
|
-
};
|
|
608
|
-
var string_replace_all_default = stringReplaceAll;
|
|
609
|
-
function convertEndOfLineToChars(value) {
|
|
610
|
-
switch (value) {
|
|
611
|
-
case "cr":
|
|
612
|
-
return "\r";
|
|
613
|
-
case "crlf":
|
|
614
|
-
return "\r\n";
|
|
615
|
-
default:
|
|
616
|
-
return "\n";
|
|
617
|
-
}
|
|
618
|
-
}
|
|
619
|
-
var emoji_regex_default = () => {
|
|
620
|
-
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;
|
|
621
|
-
};
|
|
622
|
-
var eastasianwidth_default = {
|
|
623
|
-
eastAsianWidth(character) {
|
|
624
|
-
var x = character.charCodeAt(0);
|
|
625
|
-
var y = character.length == 2 ? character.charCodeAt(1) : 0;
|
|
626
|
-
var codePoint = x;
|
|
627
|
-
if (55296 <= x && x <= 56319 && 56320 <= y && y <= 57343) {
|
|
628
|
-
x &= 1023;
|
|
629
|
-
y &= 1023;
|
|
630
|
-
codePoint = x << 10 | y;
|
|
631
|
-
codePoint += 65536;
|
|
632
|
-
}
|
|
633
|
-
if (12288 == codePoint || 65281 <= codePoint && codePoint <= 65376 || 65504 <= codePoint && codePoint <= 65510) {
|
|
634
|
-
return "F";
|
|
635
|
-
}
|
|
636
|
-
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) {
|
|
637
|
-
return "W";
|
|
638
|
-
}
|
|
639
|
-
return "N";
|
|
640
|
-
}
|
|
641
|
-
};
|
|
642
|
-
var notAsciiRegex = /[^\x20-\x7F]/;
|
|
643
|
-
function getStringWidth(text) {
|
|
644
|
-
if (!text) {
|
|
645
|
-
return 0;
|
|
646
|
-
}
|
|
647
|
-
if (!notAsciiRegex.test(text)) {
|
|
648
|
-
return text.length;
|
|
649
|
-
}
|
|
650
|
-
text = text.replace(emoji_regex_default(), " ");
|
|
651
|
-
let width = 0;
|
|
652
|
-
for (const character of text) {
|
|
653
|
-
const codePoint = character.codePointAt(0);
|
|
654
|
-
if (codePoint <= 31 || codePoint >= 127 && codePoint <= 159) {
|
|
655
|
-
continue;
|
|
656
|
-
}
|
|
657
|
-
if (codePoint >= 768 && codePoint <= 879) {
|
|
658
|
-
continue;
|
|
659
|
-
}
|
|
660
|
-
const code = eastasianwidth_default.eastAsianWidth(character);
|
|
661
|
-
width += code === "F" || code === "W" ? 2 : 1;
|
|
662
|
-
}
|
|
663
|
-
return width;
|
|
664
|
-
}
|
|
665
|
-
var get_string_width_default = getStringWidth;
|
|
666
|
-
var getDocParts = (doc) => {
|
|
667
|
-
if (Array.isArray(doc)) {
|
|
668
|
-
return doc;
|
|
669
|
-
}
|
|
670
|
-
if (doc.type !== DOC_TYPE_FILL) {
|
|
671
|
-
throw new Error(`Expect doc to be 'array' or '${DOC_TYPE_FILL}'.`);
|
|
672
|
-
}
|
|
673
|
-
return doc.parts;
|
|
674
|
-
};
|
|
675
|
-
function mapDoc(doc, cb) {
|
|
676
|
-
if (typeof doc === "string") {
|
|
677
|
-
return cb(doc);
|
|
678
|
-
}
|
|
679
|
-
const mapped = /* @__PURE__ */ new Map();
|
|
680
|
-
return rec(doc);
|
|
681
|
-
function rec(doc2) {
|
|
682
|
-
if (mapped.has(doc2)) {
|
|
683
|
-
return mapped.get(doc2);
|
|
684
|
-
}
|
|
685
|
-
const result = process2(doc2);
|
|
686
|
-
mapped.set(doc2, result);
|
|
687
|
-
return result;
|
|
688
|
-
}
|
|
689
|
-
function process2(doc2) {
|
|
690
|
-
switch (get_doc_type_default(doc2)) {
|
|
691
|
-
case DOC_TYPE_ARRAY:
|
|
692
|
-
return cb(doc2.map(rec));
|
|
693
|
-
case DOC_TYPE_FILL:
|
|
694
|
-
return cb({
|
|
695
|
-
...doc2,
|
|
696
|
-
parts: doc2.parts.map(rec)
|
|
697
|
-
});
|
|
698
|
-
case DOC_TYPE_IF_BREAK:
|
|
699
|
-
return cb({
|
|
700
|
-
...doc2,
|
|
701
|
-
breakContents: rec(doc2.breakContents),
|
|
702
|
-
flatContents: rec(doc2.flatContents)
|
|
703
|
-
});
|
|
704
|
-
case DOC_TYPE_GROUP: {
|
|
705
|
-
let {
|
|
706
|
-
expandedStates,
|
|
707
|
-
contents
|
|
708
|
-
} = doc2;
|
|
709
|
-
if (expandedStates) {
|
|
710
|
-
expandedStates = expandedStates.map(rec);
|
|
711
|
-
contents = expandedStates[0];
|
|
712
|
-
} else {
|
|
713
|
-
contents = rec(contents);
|
|
714
|
-
}
|
|
715
|
-
return cb({
|
|
716
|
-
...doc2,
|
|
717
|
-
contents,
|
|
718
|
-
expandedStates
|
|
719
|
-
});
|
|
720
|
-
}
|
|
721
|
-
case DOC_TYPE_ALIGN:
|
|
722
|
-
case DOC_TYPE_INDENT:
|
|
723
|
-
case DOC_TYPE_INDENT_IF_BREAK:
|
|
724
|
-
case DOC_TYPE_LABEL:
|
|
725
|
-
case DOC_TYPE_LINE_SUFFIX:
|
|
726
|
-
return cb({
|
|
727
|
-
...doc2,
|
|
728
|
-
contents: rec(doc2.contents)
|
|
729
|
-
});
|
|
730
|
-
case DOC_TYPE_STRING:
|
|
731
|
-
case DOC_TYPE_CURSOR:
|
|
732
|
-
case DOC_TYPE_TRIM:
|
|
733
|
-
case DOC_TYPE_LINE_SUFFIX_BOUNDARY:
|
|
734
|
-
case DOC_TYPE_LINE:
|
|
735
|
-
case DOC_TYPE_BREAK_PARENT:
|
|
736
|
-
return cb(doc2);
|
|
737
|
-
default:
|
|
738
|
-
throw new invalid_doc_error_default(doc2);
|
|
739
|
-
}
|
|
740
|
-
}
|
|
741
|
-
}
|
|
742
|
-
function findInDoc(doc, fn, defaultValue) {
|
|
743
|
-
let result = defaultValue;
|
|
744
|
-
let shouldSkipFurtherProcessing = false;
|
|
745
|
-
function findInDocOnEnterFn(doc2) {
|
|
746
|
-
if (shouldSkipFurtherProcessing) {
|
|
747
|
-
return false;
|
|
748
|
-
}
|
|
749
|
-
const maybeResult = fn(doc2);
|
|
750
|
-
if (maybeResult !== void 0) {
|
|
751
|
-
shouldSkipFurtherProcessing = true;
|
|
752
|
-
result = maybeResult;
|
|
753
|
-
}
|
|
754
|
-
}
|
|
755
|
-
traverse_doc_default(doc, findInDocOnEnterFn);
|
|
756
|
-
return result;
|
|
757
|
-
}
|
|
758
|
-
function willBreakFn(doc) {
|
|
759
|
-
if (doc.type === DOC_TYPE_GROUP && doc.break) {
|
|
760
|
-
return true;
|
|
761
|
-
}
|
|
762
|
-
if (doc.type === DOC_TYPE_LINE && doc.hard) {
|
|
763
|
-
return true;
|
|
764
|
-
}
|
|
765
|
-
if (doc.type === DOC_TYPE_BREAK_PARENT) {
|
|
766
|
-
return true;
|
|
767
|
-
}
|
|
768
|
-
}
|
|
769
|
-
function willBreak(doc) {
|
|
770
|
-
return findInDoc(doc, willBreakFn, false);
|
|
771
|
-
}
|
|
772
|
-
function breakParentGroup(groupStack) {
|
|
773
|
-
if (groupStack.length > 0) {
|
|
774
|
-
const parentGroup = at_default(
|
|
775
|
-
/* isOptionalObject*/
|
|
776
|
-
false,
|
|
777
|
-
groupStack,
|
|
778
|
-
-1
|
|
779
|
-
);
|
|
780
|
-
if (!parentGroup.expandedStates && !parentGroup.break) {
|
|
781
|
-
parentGroup.break = "propagated";
|
|
782
|
-
}
|
|
783
|
-
}
|
|
784
|
-
return null;
|
|
785
|
-
}
|
|
786
|
-
function propagateBreaks(doc) {
|
|
787
|
-
const alreadyVisitedSet = /* @__PURE__ */ new Set();
|
|
788
|
-
const groupStack = [];
|
|
789
|
-
function propagateBreaksOnEnterFn(doc2) {
|
|
790
|
-
if (doc2.type === DOC_TYPE_BREAK_PARENT) {
|
|
791
|
-
breakParentGroup(groupStack);
|
|
792
|
-
}
|
|
793
|
-
if (doc2.type === DOC_TYPE_GROUP) {
|
|
794
|
-
groupStack.push(doc2);
|
|
795
|
-
if (alreadyVisitedSet.has(doc2)) {
|
|
796
|
-
return false;
|
|
797
|
-
}
|
|
798
|
-
alreadyVisitedSet.add(doc2);
|
|
799
|
-
}
|
|
800
|
-
}
|
|
801
|
-
function propagateBreaksOnExitFn(doc2) {
|
|
802
|
-
if (doc2.type === DOC_TYPE_GROUP) {
|
|
803
|
-
const group2 = groupStack.pop();
|
|
804
|
-
if (group2.break) {
|
|
805
|
-
breakParentGroup(groupStack);
|
|
806
|
-
}
|
|
807
|
-
}
|
|
808
|
-
}
|
|
809
|
-
traverse_doc_default(
|
|
810
|
-
doc,
|
|
811
|
-
propagateBreaksOnEnterFn,
|
|
812
|
-
propagateBreaksOnExitFn,
|
|
813
|
-
/* shouldTraverseConditionalGroups */
|
|
814
|
-
true
|
|
815
|
-
);
|
|
816
|
-
}
|
|
817
|
-
function removeLinesFn(doc) {
|
|
818
|
-
if (doc.type === DOC_TYPE_LINE && !doc.hard) {
|
|
819
|
-
return doc.soft ? "" : " ";
|
|
820
|
-
}
|
|
821
|
-
if (doc.type === DOC_TYPE_IF_BREAK) {
|
|
822
|
-
return doc.flatContents;
|
|
823
|
-
}
|
|
824
|
-
return doc;
|
|
825
|
-
}
|
|
826
|
-
function removeLines(doc) {
|
|
827
|
-
return mapDoc(doc, removeLinesFn);
|
|
828
|
-
}
|
|
829
|
-
function stripTrailingHardlineFromParts(parts) {
|
|
830
|
-
parts = [...parts];
|
|
831
|
-
while (parts.length >= 2 && at_default(
|
|
832
|
-
/* isOptionalObject*/
|
|
833
|
-
false,
|
|
834
|
-
parts,
|
|
835
|
-
-2
|
|
836
|
-
).type === DOC_TYPE_LINE && at_default(
|
|
837
|
-
/* isOptionalObject*/
|
|
838
|
-
false,
|
|
839
|
-
parts,
|
|
840
|
-
-1
|
|
841
|
-
).type === DOC_TYPE_BREAK_PARENT) {
|
|
842
|
-
parts.length -= 2;
|
|
843
|
-
}
|
|
844
|
-
if (parts.length > 0) {
|
|
845
|
-
const lastPart = stripTrailingHardlineFromDoc(at_default(
|
|
846
|
-
/* isOptionalObject*/
|
|
847
|
-
false,
|
|
848
|
-
parts,
|
|
849
|
-
-1
|
|
850
|
-
));
|
|
851
|
-
parts[parts.length - 1] = lastPart;
|
|
852
|
-
}
|
|
853
|
-
return parts;
|
|
854
|
-
}
|
|
855
|
-
function stripTrailingHardlineFromDoc(doc) {
|
|
856
|
-
switch (get_doc_type_default(doc)) {
|
|
857
|
-
case DOC_TYPE_ALIGN:
|
|
858
|
-
case DOC_TYPE_INDENT:
|
|
859
|
-
case DOC_TYPE_INDENT_IF_BREAK:
|
|
860
|
-
case DOC_TYPE_GROUP:
|
|
861
|
-
case DOC_TYPE_LINE_SUFFIX:
|
|
862
|
-
case DOC_TYPE_LABEL: {
|
|
863
|
-
const contents = stripTrailingHardlineFromDoc(doc.contents);
|
|
864
|
-
return {
|
|
865
|
-
...doc,
|
|
866
|
-
contents
|
|
867
|
-
};
|
|
868
|
-
}
|
|
869
|
-
case DOC_TYPE_IF_BREAK:
|
|
870
|
-
return {
|
|
871
|
-
...doc,
|
|
872
|
-
breakContents: stripTrailingHardlineFromDoc(doc.breakContents),
|
|
873
|
-
flatContents: stripTrailingHardlineFromDoc(doc.flatContents)
|
|
874
|
-
};
|
|
875
|
-
case DOC_TYPE_FILL:
|
|
876
|
-
return {
|
|
877
|
-
...doc,
|
|
878
|
-
parts: stripTrailingHardlineFromParts(doc.parts)
|
|
879
|
-
};
|
|
880
|
-
case DOC_TYPE_ARRAY:
|
|
881
|
-
return stripTrailingHardlineFromParts(doc);
|
|
882
|
-
case DOC_TYPE_STRING:
|
|
883
|
-
return doc.replace(/[\n\r]*$/, "");
|
|
884
|
-
case DOC_TYPE_CURSOR:
|
|
885
|
-
case DOC_TYPE_TRIM:
|
|
886
|
-
case DOC_TYPE_LINE_SUFFIX_BOUNDARY:
|
|
887
|
-
case DOC_TYPE_LINE:
|
|
888
|
-
case DOC_TYPE_BREAK_PARENT:
|
|
889
|
-
break;
|
|
890
|
-
default:
|
|
891
|
-
throw new invalid_doc_error_default(doc);
|
|
892
|
-
}
|
|
893
|
-
return doc;
|
|
894
|
-
}
|
|
895
|
-
function stripTrailingHardline(doc) {
|
|
896
|
-
return stripTrailingHardlineFromDoc(cleanDoc(doc));
|
|
897
|
-
}
|
|
898
|
-
function cleanDocFn(doc) {
|
|
899
|
-
switch (get_doc_type_default(doc)) {
|
|
900
|
-
case DOC_TYPE_FILL:
|
|
901
|
-
if (doc.parts.every((part) => part === "")) {
|
|
902
|
-
return "";
|
|
903
|
-
}
|
|
904
|
-
break;
|
|
905
|
-
case DOC_TYPE_GROUP:
|
|
906
|
-
if (!doc.contents && !doc.id && !doc.break && !doc.expandedStates) {
|
|
907
|
-
return "";
|
|
908
|
-
}
|
|
909
|
-
if (doc.contents.type === DOC_TYPE_GROUP && doc.contents.id === doc.id && doc.contents.break === doc.break && doc.contents.expandedStates === doc.expandedStates) {
|
|
910
|
-
return doc.contents;
|
|
911
|
-
}
|
|
912
|
-
break;
|
|
913
|
-
case DOC_TYPE_ALIGN:
|
|
914
|
-
case DOC_TYPE_INDENT:
|
|
915
|
-
case DOC_TYPE_INDENT_IF_BREAK:
|
|
916
|
-
case DOC_TYPE_LINE_SUFFIX:
|
|
917
|
-
if (!doc.contents) {
|
|
918
|
-
return "";
|
|
919
|
-
}
|
|
920
|
-
break;
|
|
921
|
-
case DOC_TYPE_IF_BREAK:
|
|
922
|
-
if (!doc.flatContents && !doc.breakContents) {
|
|
923
|
-
return "";
|
|
924
|
-
}
|
|
925
|
-
break;
|
|
926
|
-
case DOC_TYPE_ARRAY: {
|
|
927
|
-
const parts = [];
|
|
928
|
-
for (const part of doc) {
|
|
929
|
-
if (!part) {
|
|
930
|
-
continue;
|
|
931
|
-
}
|
|
932
|
-
const [currentPart, ...restParts] = Array.isArray(part) ? part : [part];
|
|
933
|
-
if (typeof currentPart === "string" && typeof at_default(
|
|
934
|
-
/* isOptionalObject*/
|
|
935
|
-
false,
|
|
936
|
-
parts,
|
|
937
|
-
-1
|
|
938
|
-
) === "string") {
|
|
939
|
-
parts[parts.length - 1] += currentPart;
|
|
940
|
-
} else {
|
|
941
|
-
parts.push(currentPart);
|
|
942
|
-
}
|
|
943
|
-
parts.push(...restParts);
|
|
944
|
-
}
|
|
945
|
-
if (parts.length === 0) {
|
|
946
|
-
return "";
|
|
947
|
-
}
|
|
948
|
-
if (parts.length === 1) {
|
|
949
|
-
return parts[0];
|
|
950
|
-
}
|
|
951
|
-
return parts;
|
|
952
|
-
}
|
|
953
|
-
case DOC_TYPE_STRING:
|
|
954
|
-
case DOC_TYPE_CURSOR:
|
|
955
|
-
case DOC_TYPE_TRIM:
|
|
956
|
-
case DOC_TYPE_LINE_SUFFIX_BOUNDARY:
|
|
957
|
-
case DOC_TYPE_LINE:
|
|
958
|
-
case DOC_TYPE_LABEL:
|
|
959
|
-
case DOC_TYPE_BREAK_PARENT:
|
|
960
|
-
break;
|
|
961
|
-
default:
|
|
962
|
-
throw new invalid_doc_error_default(doc);
|
|
963
|
-
}
|
|
964
|
-
return doc;
|
|
965
|
-
}
|
|
966
|
-
function cleanDoc(doc) {
|
|
967
|
-
return mapDoc(doc, (currentDoc) => cleanDocFn(currentDoc));
|
|
968
|
-
}
|
|
969
|
-
function replaceEndOfLine(doc, replacement = literalline) {
|
|
970
|
-
return mapDoc(doc, (currentDoc) => typeof currentDoc === "string" ? join(replacement, currentDoc.split("\n")) : currentDoc);
|
|
971
|
-
}
|
|
972
|
-
function canBreakFn(doc) {
|
|
973
|
-
if (doc.type === DOC_TYPE_LINE) {
|
|
974
|
-
return true;
|
|
975
|
-
}
|
|
976
|
-
}
|
|
977
|
-
function canBreak(doc) {
|
|
978
|
-
return findInDoc(doc, canBreakFn, false);
|
|
979
|
-
}
|
|
980
|
-
var MODE_BREAK = Symbol("MODE_BREAK");
|
|
981
|
-
var MODE_FLAT = Symbol("MODE_FLAT");
|
|
982
|
-
var CURSOR_PLACEHOLDER = Symbol("cursor");
|
|
983
|
-
function rootIndent() {
|
|
984
|
-
return {
|
|
985
|
-
value: "",
|
|
986
|
-
length: 0,
|
|
987
|
-
queue: []
|
|
988
|
-
};
|
|
989
|
-
}
|
|
990
|
-
function makeIndent(ind, options) {
|
|
991
|
-
return generateInd(ind, {
|
|
992
|
-
type: "indent"
|
|
993
|
-
}, options);
|
|
994
|
-
}
|
|
995
|
-
function makeAlign(indent2, widthOrDoc, options) {
|
|
996
|
-
if (widthOrDoc === Number.NEGATIVE_INFINITY) {
|
|
997
|
-
return indent2.root || rootIndent();
|
|
998
|
-
}
|
|
999
|
-
if (widthOrDoc < 0) {
|
|
1000
|
-
return generateInd(indent2, {
|
|
1001
|
-
type: "dedent"
|
|
1002
|
-
}, options);
|
|
1003
|
-
}
|
|
1004
|
-
if (!widthOrDoc) {
|
|
1005
|
-
return indent2;
|
|
1006
|
-
}
|
|
1007
|
-
if (widthOrDoc.type === "root") {
|
|
1008
|
-
return {
|
|
1009
|
-
...indent2,
|
|
1010
|
-
root: indent2
|
|
1011
|
-
};
|
|
1012
|
-
}
|
|
1013
|
-
const alignType = typeof widthOrDoc === "string" ? "stringAlign" : "numberAlign";
|
|
1014
|
-
return generateInd(indent2, {
|
|
1015
|
-
type: alignType,
|
|
1016
|
-
n: widthOrDoc
|
|
1017
|
-
}, options);
|
|
1018
|
-
}
|
|
1019
|
-
function generateInd(ind, newPart, options) {
|
|
1020
|
-
const queue = newPart.type === "dedent" ? ind.queue.slice(0, -1) : [...ind.queue, newPart];
|
|
1021
|
-
let value = "";
|
|
1022
|
-
let length = 0;
|
|
1023
|
-
let lastTabs = 0;
|
|
1024
|
-
let lastSpaces = 0;
|
|
1025
|
-
for (const part of queue) {
|
|
1026
|
-
switch (part.type) {
|
|
1027
|
-
case "indent":
|
|
1028
|
-
flush();
|
|
1029
|
-
if (options.useTabs) {
|
|
1030
|
-
addTabs(1);
|
|
1031
|
-
} else {
|
|
1032
|
-
addSpaces(options.tabWidth);
|
|
1033
|
-
}
|
|
1034
|
-
break;
|
|
1035
|
-
case "stringAlign":
|
|
1036
|
-
flush();
|
|
1037
|
-
value += part.n;
|
|
1038
|
-
length += part.n.length;
|
|
1039
|
-
break;
|
|
1040
|
-
case "numberAlign":
|
|
1041
|
-
lastTabs += 1;
|
|
1042
|
-
lastSpaces += part.n;
|
|
1043
|
-
break;
|
|
1044
|
-
default:
|
|
1045
|
-
throw new Error(`Unexpected type '${part.type}'`);
|
|
1046
|
-
}
|
|
1047
|
-
}
|
|
1048
|
-
flushSpaces();
|
|
1049
|
-
return {
|
|
1050
|
-
...ind,
|
|
1051
|
-
value,
|
|
1052
|
-
length,
|
|
1053
|
-
queue
|
|
1054
|
-
};
|
|
1055
|
-
function addTabs(count) {
|
|
1056
|
-
value += " ".repeat(count);
|
|
1057
|
-
length += options.tabWidth * count;
|
|
1058
|
-
}
|
|
1059
|
-
function addSpaces(count) {
|
|
1060
|
-
value += " ".repeat(count);
|
|
1061
|
-
length += count;
|
|
1062
|
-
}
|
|
1063
|
-
function flush() {
|
|
1064
|
-
if (options.useTabs) {
|
|
1065
|
-
flushTabs();
|
|
1066
|
-
} else {
|
|
1067
|
-
flushSpaces();
|
|
1068
|
-
}
|
|
1069
|
-
}
|
|
1070
|
-
function flushTabs() {
|
|
1071
|
-
if (lastTabs > 0) {
|
|
1072
|
-
addTabs(lastTabs);
|
|
1073
|
-
}
|
|
1074
|
-
resetLast();
|
|
1075
|
-
}
|
|
1076
|
-
function flushSpaces() {
|
|
1077
|
-
if (lastSpaces > 0) {
|
|
1078
|
-
addSpaces(lastSpaces);
|
|
1079
|
-
}
|
|
1080
|
-
resetLast();
|
|
1081
|
-
}
|
|
1082
|
-
function resetLast() {
|
|
1083
|
-
lastTabs = 0;
|
|
1084
|
-
lastSpaces = 0;
|
|
1085
|
-
}
|
|
1086
|
-
}
|
|
1087
|
-
function trim2(out) {
|
|
1088
|
-
let trimCount = 0;
|
|
1089
|
-
let cursorCount = 0;
|
|
1090
|
-
let outIndex = out.length;
|
|
1091
|
-
outer:
|
|
1092
|
-
while (outIndex--) {
|
|
1093
|
-
const last = out[outIndex];
|
|
1094
|
-
if (last === CURSOR_PLACEHOLDER) {
|
|
1095
|
-
cursorCount++;
|
|
1096
|
-
continue;
|
|
1097
|
-
}
|
|
1098
|
-
if (false) {
|
|
1099
|
-
throw new Error(`Unexpected value in trim: '${typeof last}'`);
|
|
1100
|
-
}
|
|
1101
|
-
for (let charIndex = last.length - 1; charIndex >= 0; charIndex--) {
|
|
1102
|
-
const char = last[charIndex];
|
|
1103
|
-
if (char === " " || char === " ") {
|
|
1104
|
-
trimCount++;
|
|
1105
|
-
} else {
|
|
1106
|
-
out[outIndex] = last.slice(0, charIndex + 1);
|
|
1107
|
-
break outer;
|
|
1108
|
-
}
|
|
1109
|
-
}
|
|
1110
|
-
}
|
|
1111
|
-
if (trimCount > 0 || cursorCount > 0) {
|
|
1112
|
-
out.length = outIndex + 1;
|
|
1113
|
-
while (cursorCount-- > 0) {
|
|
1114
|
-
out.push(CURSOR_PLACEHOLDER);
|
|
1115
|
-
}
|
|
1116
|
-
}
|
|
1117
|
-
return trimCount;
|
|
1118
|
-
}
|
|
1119
|
-
function fits(next, restCommands, width, hasLineSuffix, groupModeMap, mustBeFlat) {
|
|
1120
|
-
if (width === Number.POSITIVE_INFINITY) {
|
|
1121
|
-
return true;
|
|
1122
|
-
}
|
|
1123
|
-
let restIdx = restCommands.length;
|
|
1124
|
-
const cmds = [next];
|
|
1125
|
-
const out = [];
|
|
1126
|
-
while (width >= 0) {
|
|
1127
|
-
if (cmds.length === 0) {
|
|
1128
|
-
if (restIdx === 0) {
|
|
1129
|
-
return true;
|
|
1130
|
-
}
|
|
1131
|
-
cmds.push(restCommands[--restIdx]);
|
|
1132
|
-
continue;
|
|
1133
|
-
}
|
|
1134
|
-
const {
|
|
1135
|
-
mode,
|
|
1136
|
-
doc
|
|
1137
|
-
} = cmds.pop();
|
|
1138
|
-
switch (get_doc_type_default(doc)) {
|
|
1139
|
-
case DOC_TYPE_STRING:
|
|
1140
|
-
out.push(doc);
|
|
1141
|
-
width -= get_string_width_default(doc);
|
|
1142
|
-
break;
|
|
1143
|
-
case DOC_TYPE_ARRAY:
|
|
1144
|
-
case DOC_TYPE_FILL: {
|
|
1145
|
-
const parts = getDocParts(doc);
|
|
1146
|
-
for (let i = parts.length - 1; i >= 0; i--) {
|
|
1147
|
-
cmds.push({
|
|
1148
|
-
mode,
|
|
1149
|
-
doc: parts[i]
|
|
1150
|
-
});
|
|
1151
|
-
}
|
|
1152
|
-
break;
|
|
1153
|
-
}
|
|
1154
|
-
case DOC_TYPE_INDENT:
|
|
1155
|
-
case DOC_TYPE_ALIGN:
|
|
1156
|
-
case DOC_TYPE_INDENT_IF_BREAK:
|
|
1157
|
-
case DOC_TYPE_LABEL:
|
|
1158
|
-
cmds.push({
|
|
1159
|
-
mode,
|
|
1160
|
-
doc: doc.contents
|
|
1161
|
-
});
|
|
1162
|
-
break;
|
|
1163
|
-
case DOC_TYPE_TRIM:
|
|
1164
|
-
width += trim2(out);
|
|
1165
|
-
break;
|
|
1166
|
-
case DOC_TYPE_GROUP: {
|
|
1167
|
-
if (mustBeFlat && doc.break) {
|
|
1168
|
-
return false;
|
|
1169
|
-
}
|
|
1170
|
-
const groupMode = doc.break ? MODE_BREAK : mode;
|
|
1171
|
-
const contents = doc.expandedStates && groupMode === MODE_BREAK ? at_default(
|
|
1172
|
-
/* isOptionalObject*/
|
|
1173
|
-
false,
|
|
1174
|
-
doc.expandedStates,
|
|
1175
|
-
-1
|
|
1176
|
-
) : doc.contents;
|
|
1177
|
-
cmds.push({
|
|
1178
|
-
mode: groupMode,
|
|
1179
|
-
doc: contents
|
|
1180
|
-
});
|
|
1181
|
-
break;
|
|
1182
|
-
}
|
|
1183
|
-
case DOC_TYPE_IF_BREAK: {
|
|
1184
|
-
const groupMode = doc.groupId ? groupModeMap[doc.groupId] || MODE_FLAT : mode;
|
|
1185
|
-
const contents = groupMode === MODE_BREAK ? doc.breakContents : doc.flatContents;
|
|
1186
|
-
if (contents) {
|
|
1187
|
-
cmds.push({
|
|
1188
|
-
mode,
|
|
1189
|
-
doc: contents
|
|
1190
|
-
});
|
|
1191
|
-
}
|
|
1192
|
-
break;
|
|
1193
|
-
}
|
|
1194
|
-
case DOC_TYPE_LINE:
|
|
1195
|
-
if (mode === MODE_BREAK || doc.hard) {
|
|
1196
|
-
return true;
|
|
1197
|
-
}
|
|
1198
|
-
if (!doc.soft) {
|
|
1199
|
-
out.push(" ");
|
|
1200
|
-
width--;
|
|
1201
|
-
}
|
|
1202
|
-
break;
|
|
1203
|
-
case DOC_TYPE_LINE_SUFFIX:
|
|
1204
|
-
hasLineSuffix = true;
|
|
1205
|
-
break;
|
|
1206
|
-
case DOC_TYPE_LINE_SUFFIX_BOUNDARY:
|
|
1207
|
-
if (hasLineSuffix) {
|
|
1208
|
-
return false;
|
|
1209
|
-
}
|
|
1210
|
-
break;
|
|
1211
|
-
}
|
|
1212
|
-
}
|
|
1213
|
-
return false;
|
|
1214
|
-
}
|
|
1215
|
-
function printDocToString(doc, options) {
|
|
1216
|
-
const groupModeMap = {};
|
|
1217
|
-
const width = options.printWidth;
|
|
1218
|
-
const newLine = convertEndOfLineToChars(options.endOfLine);
|
|
1219
|
-
let pos = 0;
|
|
1220
|
-
const cmds = [{
|
|
1221
|
-
ind: rootIndent(),
|
|
1222
|
-
mode: MODE_BREAK,
|
|
1223
|
-
doc
|
|
1224
|
-
}];
|
|
1225
|
-
const out = [];
|
|
1226
|
-
let shouldRemeasure = false;
|
|
1227
|
-
const lineSuffix2 = [];
|
|
1228
|
-
let printedCursorCount = 0;
|
|
1229
|
-
propagateBreaks(doc);
|
|
1230
|
-
while (cmds.length > 0) {
|
|
1231
|
-
const {
|
|
1232
|
-
ind,
|
|
1233
|
-
mode,
|
|
1234
|
-
doc: doc2
|
|
1235
|
-
} = cmds.pop();
|
|
1236
|
-
switch (get_doc_type_default(doc2)) {
|
|
1237
|
-
case DOC_TYPE_STRING: {
|
|
1238
|
-
const formatted = newLine !== "\n" ? string_replace_all_default(
|
|
1239
|
-
/* isOptionalObject*/
|
|
1240
|
-
false,
|
|
1241
|
-
doc2,
|
|
1242
|
-
"\n",
|
|
1243
|
-
newLine
|
|
1244
|
-
) : doc2;
|
|
1245
|
-
out.push(formatted);
|
|
1246
|
-
if (cmds.length > 0) {
|
|
1247
|
-
pos += get_string_width_default(formatted);
|
|
1248
|
-
}
|
|
1249
|
-
break;
|
|
1250
|
-
}
|
|
1251
|
-
case DOC_TYPE_ARRAY:
|
|
1252
|
-
for (let i = doc2.length - 1; i >= 0; i--) {
|
|
1253
|
-
cmds.push({
|
|
1254
|
-
ind,
|
|
1255
|
-
mode,
|
|
1256
|
-
doc: doc2[i]
|
|
1257
|
-
});
|
|
1258
|
-
}
|
|
1259
|
-
break;
|
|
1260
|
-
case DOC_TYPE_CURSOR:
|
|
1261
|
-
if (printedCursorCount >= 2) {
|
|
1262
|
-
throw new Error("There are too many 'cursor' in doc.");
|
|
1263
|
-
}
|
|
1264
|
-
out.push(CURSOR_PLACEHOLDER);
|
|
1265
|
-
printedCursorCount++;
|
|
1266
|
-
break;
|
|
1267
|
-
case DOC_TYPE_INDENT:
|
|
1268
|
-
cmds.push({
|
|
1269
|
-
ind: makeIndent(ind, options),
|
|
1270
|
-
mode,
|
|
1271
|
-
doc: doc2.contents
|
|
1272
|
-
});
|
|
1273
|
-
break;
|
|
1274
|
-
case DOC_TYPE_ALIGN:
|
|
1275
|
-
cmds.push({
|
|
1276
|
-
ind: makeAlign(ind, doc2.n, options),
|
|
1277
|
-
mode,
|
|
1278
|
-
doc: doc2.contents
|
|
1279
|
-
});
|
|
1280
|
-
break;
|
|
1281
|
-
case DOC_TYPE_TRIM:
|
|
1282
|
-
pos -= trim2(out);
|
|
1283
|
-
break;
|
|
1284
|
-
case DOC_TYPE_GROUP:
|
|
1285
|
-
switch (mode) {
|
|
1286
|
-
case MODE_FLAT:
|
|
1287
|
-
if (!shouldRemeasure) {
|
|
1288
|
-
cmds.push({
|
|
1289
|
-
ind,
|
|
1290
|
-
mode: doc2.break ? MODE_BREAK : MODE_FLAT,
|
|
1291
|
-
doc: doc2.contents
|
|
1292
|
-
});
|
|
1293
|
-
break;
|
|
1294
|
-
}
|
|
1295
|
-
case MODE_BREAK: {
|
|
1296
|
-
shouldRemeasure = false;
|
|
1297
|
-
const next = {
|
|
1298
|
-
ind,
|
|
1299
|
-
mode: MODE_FLAT,
|
|
1300
|
-
doc: doc2.contents
|
|
1301
|
-
};
|
|
1302
|
-
const rem = width - pos;
|
|
1303
|
-
const hasLineSuffix = lineSuffix2.length > 0;
|
|
1304
|
-
if (!doc2.break && fits(next, cmds, rem, hasLineSuffix, groupModeMap)) {
|
|
1305
|
-
cmds.push(next);
|
|
1306
|
-
} else {
|
|
1307
|
-
if (doc2.expandedStates) {
|
|
1308
|
-
const mostExpanded = at_default(
|
|
1309
|
-
/* isOptionalObject*/
|
|
1310
|
-
false,
|
|
1311
|
-
doc2.expandedStates,
|
|
1312
|
-
-1
|
|
1313
|
-
);
|
|
1314
|
-
if (doc2.break) {
|
|
1315
|
-
cmds.push({
|
|
1316
|
-
ind,
|
|
1317
|
-
mode: MODE_BREAK,
|
|
1318
|
-
doc: mostExpanded
|
|
1319
|
-
});
|
|
1320
|
-
break;
|
|
1321
|
-
} else {
|
|
1322
|
-
for (let i = 1; i < doc2.expandedStates.length + 1; i++) {
|
|
1323
|
-
if (i >= doc2.expandedStates.length) {
|
|
1324
|
-
cmds.push({
|
|
1325
|
-
ind,
|
|
1326
|
-
mode: MODE_BREAK,
|
|
1327
|
-
doc: mostExpanded
|
|
1328
|
-
});
|
|
1329
|
-
break;
|
|
1330
|
-
} else {
|
|
1331
|
-
const state = doc2.expandedStates[i];
|
|
1332
|
-
const cmd = {
|
|
1333
|
-
ind,
|
|
1334
|
-
mode: MODE_FLAT,
|
|
1335
|
-
doc: state
|
|
1336
|
-
};
|
|
1337
|
-
if (fits(cmd, cmds, rem, hasLineSuffix, groupModeMap)) {
|
|
1338
|
-
cmds.push(cmd);
|
|
1339
|
-
break;
|
|
1340
|
-
}
|
|
1341
|
-
}
|
|
1342
|
-
}
|
|
1343
|
-
}
|
|
1344
|
-
} else {
|
|
1345
|
-
cmds.push({
|
|
1346
|
-
ind,
|
|
1347
|
-
mode: MODE_BREAK,
|
|
1348
|
-
doc: doc2.contents
|
|
1349
|
-
});
|
|
1350
|
-
}
|
|
1351
|
-
}
|
|
1352
|
-
break;
|
|
1353
|
-
}
|
|
1354
|
-
}
|
|
1355
|
-
if (doc2.id) {
|
|
1356
|
-
groupModeMap[doc2.id] = at_default(
|
|
1357
|
-
/* isOptionalObject*/
|
|
1358
|
-
false,
|
|
1359
|
-
cmds,
|
|
1360
|
-
-1
|
|
1361
|
-
).mode;
|
|
1362
|
-
}
|
|
1363
|
-
break;
|
|
1364
|
-
case DOC_TYPE_FILL: {
|
|
1365
|
-
const rem = width - pos;
|
|
1366
|
-
const {
|
|
1367
|
-
parts
|
|
1368
|
-
} = doc2;
|
|
1369
|
-
if (parts.length === 0) {
|
|
1370
|
-
break;
|
|
1371
|
-
}
|
|
1372
|
-
const [content, whitespace] = parts;
|
|
1373
|
-
const contentFlatCmd = {
|
|
1374
|
-
ind,
|
|
1375
|
-
mode: MODE_FLAT,
|
|
1376
|
-
doc: content
|
|
1377
|
-
};
|
|
1378
|
-
const contentBreakCmd = {
|
|
1379
|
-
ind,
|
|
1380
|
-
mode: MODE_BREAK,
|
|
1381
|
-
doc: content
|
|
1382
|
-
};
|
|
1383
|
-
const contentFits = fits(contentFlatCmd, [], rem, lineSuffix2.length > 0, groupModeMap, true);
|
|
1384
|
-
if (parts.length === 1) {
|
|
1385
|
-
if (contentFits) {
|
|
1386
|
-
cmds.push(contentFlatCmd);
|
|
1387
|
-
} else {
|
|
1388
|
-
cmds.push(contentBreakCmd);
|
|
1389
|
-
}
|
|
1390
|
-
break;
|
|
1391
|
-
}
|
|
1392
|
-
const whitespaceFlatCmd = {
|
|
1393
|
-
ind,
|
|
1394
|
-
mode: MODE_FLAT,
|
|
1395
|
-
doc: whitespace
|
|
1396
|
-
};
|
|
1397
|
-
const whitespaceBreakCmd = {
|
|
1398
|
-
ind,
|
|
1399
|
-
mode: MODE_BREAK,
|
|
1400
|
-
doc: whitespace
|
|
1401
|
-
};
|
|
1402
|
-
if (parts.length === 2) {
|
|
1403
|
-
if (contentFits) {
|
|
1404
|
-
cmds.push(whitespaceFlatCmd, contentFlatCmd);
|
|
1405
|
-
} else {
|
|
1406
|
-
cmds.push(whitespaceBreakCmd, contentBreakCmd);
|
|
1407
|
-
}
|
|
1408
|
-
break;
|
|
1409
|
-
}
|
|
1410
|
-
parts.splice(0, 2);
|
|
1411
|
-
const remainingCmd = {
|
|
1412
|
-
ind,
|
|
1413
|
-
mode,
|
|
1414
|
-
doc: fill(parts)
|
|
1415
|
-
};
|
|
1416
|
-
const secondContent = parts[0];
|
|
1417
|
-
const firstAndSecondContentFlatCmd = {
|
|
1418
|
-
ind,
|
|
1419
|
-
mode: MODE_FLAT,
|
|
1420
|
-
doc: [content, whitespace, secondContent]
|
|
1421
|
-
};
|
|
1422
|
-
const firstAndSecondContentFits = fits(firstAndSecondContentFlatCmd, [], rem, lineSuffix2.length > 0, groupModeMap, true);
|
|
1423
|
-
if (firstAndSecondContentFits) {
|
|
1424
|
-
cmds.push(remainingCmd, whitespaceFlatCmd, contentFlatCmd);
|
|
1425
|
-
} else if (contentFits) {
|
|
1426
|
-
cmds.push(remainingCmd, whitespaceBreakCmd, contentFlatCmd);
|
|
1427
|
-
} else {
|
|
1428
|
-
cmds.push(remainingCmd, whitespaceBreakCmd, contentBreakCmd);
|
|
1429
|
-
}
|
|
1430
|
-
break;
|
|
1431
|
-
}
|
|
1432
|
-
case DOC_TYPE_IF_BREAK:
|
|
1433
|
-
case DOC_TYPE_INDENT_IF_BREAK: {
|
|
1434
|
-
const groupMode = doc2.groupId ? groupModeMap[doc2.groupId] : mode;
|
|
1435
|
-
if (groupMode === MODE_BREAK) {
|
|
1436
|
-
const breakContents = doc2.type === DOC_TYPE_IF_BREAK ? doc2.breakContents : doc2.negate ? doc2.contents : indent(doc2.contents);
|
|
1437
|
-
if (breakContents) {
|
|
1438
|
-
cmds.push({
|
|
1439
|
-
ind,
|
|
1440
|
-
mode,
|
|
1441
|
-
doc: breakContents
|
|
1442
|
-
});
|
|
1443
|
-
}
|
|
1444
|
-
}
|
|
1445
|
-
if (groupMode === MODE_FLAT) {
|
|
1446
|
-
const flatContents = doc2.type === DOC_TYPE_IF_BREAK ? doc2.flatContents : doc2.negate ? indent(doc2.contents) : doc2.contents;
|
|
1447
|
-
if (flatContents) {
|
|
1448
|
-
cmds.push({
|
|
1449
|
-
ind,
|
|
1450
|
-
mode,
|
|
1451
|
-
doc: flatContents
|
|
1452
|
-
});
|
|
1453
|
-
}
|
|
1454
|
-
}
|
|
1455
|
-
break;
|
|
1456
|
-
}
|
|
1457
|
-
case DOC_TYPE_LINE_SUFFIX:
|
|
1458
|
-
lineSuffix2.push({
|
|
1459
|
-
ind,
|
|
1460
|
-
mode,
|
|
1461
|
-
doc: doc2.contents
|
|
1462
|
-
});
|
|
1463
|
-
break;
|
|
1464
|
-
case DOC_TYPE_LINE_SUFFIX_BOUNDARY:
|
|
1465
|
-
if (lineSuffix2.length > 0) {
|
|
1466
|
-
cmds.push({
|
|
1467
|
-
ind,
|
|
1468
|
-
mode,
|
|
1469
|
-
doc: hardlineWithoutBreakParent
|
|
1470
|
-
});
|
|
1471
|
-
}
|
|
1472
|
-
break;
|
|
1473
|
-
case DOC_TYPE_LINE:
|
|
1474
|
-
switch (mode) {
|
|
1475
|
-
case MODE_FLAT:
|
|
1476
|
-
if (!doc2.hard) {
|
|
1477
|
-
if (!doc2.soft) {
|
|
1478
|
-
out.push(" ");
|
|
1479
|
-
pos += 1;
|
|
1480
|
-
}
|
|
1481
|
-
break;
|
|
1482
|
-
} else {
|
|
1483
|
-
shouldRemeasure = true;
|
|
1484
|
-
}
|
|
1485
|
-
case MODE_BREAK:
|
|
1486
|
-
if (lineSuffix2.length > 0) {
|
|
1487
|
-
cmds.push({
|
|
1488
|
-
ind,
|
|
1489
|
-
mode,
|
|
1490
|
-
doc: doc2
|
|
1491
|
-
}, ...lineSuffix2.reverse());
|
|
1492
|
-
lineSuffix2.length = 0;
|
|
1493
|
-
break;
|
|
1494
|
-
}
|
|
1495
|
-
if (doc2.literal) {
|
|
1496
|
-
if (ind.root) {
|
|
1497
|
-
out.push(newLine, ind.root.value);
|
|
1498
|
-
pos = ind.root.length;
|
|
1499
|
-
} else {
|
|
1500
|
-
out.push(newLine);
|
|
1501
|
-
pos = 0;
|
|
1502
|
-
}
|
|
1503
|
-
} else {
|
|
1504
|
-
pos -= trim2(out);
|
|
1505
|
-
out.push(newLine + ind.value);
|
|
1506
|
-
pos = ind.length;
|
|
1507
|
-
}
|
|
1508
|
-
break;
|
|
1509
|
-
}
|
|
1510
|
-
break;
|
|
1511
|
-
case DOC_TYPE_LABEL:
|
|
1512
|
-
cmds.push({
|
|
1513
|
-
ind,
|
|
1514
|
-
mode,
|
|
1515
|
-
doc: doc2.contents
|
|
1516
|
-
});
|
|
1517
|
-
break;
|
|
1518
|
-
case DOC_TYPE_BREAK_PARENT:
|
|
1519
|
-
break;
|
|
1520
|
-
default:
|
|
1521
|
-
throw new invalid_doc_error_default(doc2);
|
|
1522
|
-
}
|
|
1523
|
-
if (cmds.length === 0 && lineSuffix2.length > 0) {
|
|
1524
|
-
cmds.push(...lineSuffix2.reverse());
|
|
1525
|
-
lineSuffix2.length = 0;
|
|
1526
|
-
}
|
|
1527
|
-
}
|
|
1528
|
-
const cursorPlaceholderIndex = out.indexOf(CURSOR_PLACEHOLDER);
|
|
1529
|
-
if (cursorPlaceholderIndex !== -1) {
|
|
1530
|
-
const otherCursorPlaceholderIndex = out.indexOf(CURSOR_PLACEHOLDER, cursorPlaceholderIndex + 1);
|
|
1531
|
-
const beforeCursor = out.slice(0, cursorPlaceholderIndex).join("");
|
|
1532
|
-
const aroundCursor = out.slice(cursorPlaceholderIndex + 1, otherCursorPlaceholderIndex).join("");
|
|
1533
|
-
const afterCursor = out.slice(otherCursorPlaceholderIndex + 1).join("");
|
|
1534
|
-
return {
|
|
1535
|
-
formatted: beforeCursor + aroundCursor + afterCursor,
|
|
1536
|
-
cursorNodeStart: beforeCursor.length,
|
|
1537
|
-
cursorNodeText: aroundCursor
|
|
1538
|
-
};
|
|
1539
|
-
}
|
|
1540
|
-
return {
|
|
1541
|
-
formatted: out.join("")
|
|
1542
|
-
};
|
|
1543
|
-
}
|
|
1544
|
-
var builders = {
|
|
1545
|
-
join,
|
|
1546
|
-
line,
|
|
1547
|
-
softline,
|
|
1548
|
-
hardline,
|
|
1549
|
-
literalline,
|
|
1550
|
-
group,
|
|
1551
|
-
conditionalGroup,
|
|
1552
|
-
fill,
|
|
1553
|
-
lineSuffix,
|
|
1554
|
-
lineSuffixBoundary,
|
|
1555
|
-
cursor,
|
|
1556
|
-
breakParent,
|
|
1557
|
-
ifBreak,
|
|
1558
|
-
trim,
|
|
1559
|
-
indent,
|
|
1560
|
-
indentIfBreak,
|
|
1561
|
-
align,
|
|
1562
|
-
addAlignmentToDoc,
|
|
1563
|
-
markAsRoot,
|
|
1564
|
-
dedentToRoot,
|
|
1565
|
-
dedent,
|
|
1566
|
-
hardlineWithoutBreakParent,
|
|
1567
|
-
literallineWithoutBreakParent,
|
|
1568
|
-
label,
|
|
1569
|
-
// TODO: Remove this in v4
|
|
1570
|
-
concat: (parts) => parts
|
|
1571
|
-
};
|
|
1572
|
-
var printer = { printDocToString };
|
|
1573
|
-
var utils = {
|
|
1574
|
-
willBreak,
|
|
1575
|
-
traverseDoc: traverse_doc_default,
|
|
1576
|
-
findInDoc,
|
|
1577
|
-
mapDoc,
|
|
1578
|
-
removeLines,
|
|
1579
|
-
stripTrailingHardline,
|
|
1580
|
-
replaceEndOfLine,
|
|
1581
|
-
canBreak
|
|
1582
|
-
};
|
|
1583
|
-
|
|
1584
333
|
// src/weaverse-client.ts
|
|
334
|
+
var CACHE_HITS_KEY = "https://weaverse.io/__CACHE_HITS_COUNT__";
|
|
1585
335
|
var WeaverseClient = class {
|
|
1586
336
|
API = "api/public/project";
|
|
1587
337
|
clientVersion = package_default.version;
|
|
@@ -1632,18 +382,44 @@ var WeaverseClient = class {
|
|
|
1632
382
|
}
|
|
1633
383
|
fetchWithCache = (url, options) => {
|
|
1634
384
|
let cacheKey = [url, options.body];
|
|
1635
|
-
let {
|
|
385
|
+
let {
|
|
386
|
+
strategy = this.storefront.CacheCustom({
|
|
387
|
+
maxAge: 5,
|
|
388
|
+
staleWhileRevalidate: 82800
|
|
389
|
+
}),
|
|
390
|
+
...reqInit
|
|
391
|
+
} = options;
|
|
1636
392
|
let res = this.withCache(cacheKey, strategy, async () => {
|
|
1637
393
|
let response = await fetch(url, reqInit);
|
|
1638
394
|
if (!response.ok) {
|
|
1639
395
|
let error = await response.text();
|
|
1640
396
|
let { status, statusText } = response;
|
|
1641
397
|
throw new Error(`${status} ${statusText} ${error}`);
|
|
398
|
+
} else {
|
|
399
|
+
if (!url.includes("/configs")) {
|
|
400
|
+
await this.resetCacheHits().catch(console.error);
|
|
401
|
+
}
|
|
1642
402
|
}
|
|
1643
403
|
return await response.json();
|
|
1644
404
|
});
|
|
1645
405
|
return res;
|
|
1646
406
|
};
|
|
407
|
+
incrementCacheHits = async () => {
|
|
408
|
+
const currentHitsResponse = await this.cache.match(CACHE_HITS_KEY);
|
|
409
|
+
const currentHits = currentHitsResponse ? parseInt(await currentHitsResponse.text()) : 0;
|
|
410
|
+
const newHitsCount = currentHits + 1;
|
|
411
|
+
const newHitsResponse = new Response(newHitsCount.toString(), {
|
|
412
|
+
headers: {
|
|
413
|
+
"Cache-Control": "max-age=3600"
|
|
414
|
+
}
|
|
415
|
+
});
|
|
416
|
+
await this.cache.put(CACHE_HITS_KEY, newHitsResponse);
|
|
417
|
+
return newHitsCount.toString();
|
|
418
|
+
};
|
|
419
|
+
resetCacheHits = async () => {
|
|
420
|
+
const resetHitsResponse = new Response("0");
|
|
421
|
+
await this.cache.put(CACHE_HITS_KEY, resetHitsResponse);
|
|
422
|
+
};
|
|
1647
423
|
loadThemeSettings = async (strategy) => {
|
|
1648
424
|
try {
|
|
1649
425
|
let { API, configs } = this;
|
|
@@ -1653,9 +429,12 @@ var WeaverseClient = class {
|
|
|
1653
429
|
}
|
|
1654
430
|
let res;
|
|
1655
431
|
if (isDesignMode) {
|
|
1656
|
-
res = await fetch(
|
|
1657
|
-
|
|
1658
|
-
|
|
432
|
+
res = await fetch(
|
|
433
|
+
`${weaverseHost}/${API}/${projectId}/configs?isDesignMode=true`,
|
|
434
|
+
{
|
|
435
|
+
method: "POST"
|
|
436
|
+
}
|
|
437
|
+
).then((res2) => res2.json());
|
|
1659
438
|
} else {
|
|
1660
439
|
res = await this.fetchWithCache(
|
|
1661
440
|
`${weaverseHost}/${API}/${projectId}/configs`,
|
|
@@ -1664,16 +443,16 @@ var WeaverseClient = class {
|
|
|
1664
443
|
}
|
|
1665
444
|
let data = res || {};
|
|
1666
445
|
if (data?.theme && this.themeSchema?.inspector) {
|
|
1667
|
-
let
|
|
1668
|
-
this.themeSchema.inspector.forEach((
|
|
1669
|
-
|
|
1670
|
-
if (
|
|
1671
|
-
|
|
446
|
+
let defaultThemeSettings = {};
|
|
447
|
+
this.themeSchema.inspector.forEach(({ inputs }) => {
|
|
448
|
+
inputs.forEach(({ name, defaultValue }) => {
|
|
449
|
+
if (name && defaultValue) {
|
|
450
|
+
defaultThemeSettings[name] = defaultValue;
|
|
1672
451
|
}
|
|
1673
452
|
});
|
|
1674
453
|
});
|
|
1675
454
|
data.theme = {
|
|
1676
|
-
...
|
|
455
|
+
...defaultThemeSettings,
|
|
1677
456
|
...data.theme
|
|
1678
457
|
};
|
|
1679
458
|
}
|
|
@@ -1714,8 +493,16 @@ var WeaverseClient = class {
|
|
|
1714
493
|
if (isDesignMode) {
|
|
1715
494
|
payload = await fetch(url, reqInit).then((res) => res.json());
|
|
1716
495
|
} else {
|
|
496
|
+
let cacheHitsToSend = await this.incrementCacheHits().catch(
|
|
497
|
+
console.error
|
|
498
|
+
);
|
|
499
|
+
let headers = {
|
|
500
|
+
"X-Cache-Hits": cacheHitsToSend || "0"
|
|
501
|
+
// Send cache hits as a custom header
|
|
502
|
+
};
|
|
1717
503
|
payload = await this.fetchWithCache(url, {
|
|
1718
504
|
...reqInit,
|
|
505
|
+
headers,
|
|
1719
506
|
strategy
|
|
1720
507
|
});
|
|
1721
508
|
}
|
|
@@ -1755,8 +542,8 @@ var WeaverseClient = class {
|
|
|
1755
542
|
};
|
|
1756
543
|
execComponentLoader = async (item) => {
|
|
1757
544
|
let { data = {}, type, id } = item;
|
|
1758
|
-
let
|
|
1759
|
-
let { loader } =
|
|
545
|
+
let schema2 = this.components.find(({ schema: schema3 }) => schema3?.type === type);
|
|
546
|
+
let { loader } = schema2 || {};
|
|
1760
547
|
if (loader && typeof loader === "function") {
|
|
1761
548
|
try {
|
|
1762
549
|
return {
|
|
@@ -1785,7 +572,7 @@ function getSelectedProductOptions(request) {
|
|
|
1785
572
|
}
|
|
1786
573
|
|
|
1787
574
|
// src/index.ts
|
|
1788
|
-
var WeaverseHydrogen = class extends
|
|
575
|
+
var WeaverseHydrogen = class extends import_react13.Weaverse {
|
|
1789
576
|
platformType = "shopify-hydrogen";
|
|
1790
577
|
pageId;
|
|
1791
578
|
internal;
|
|
@@ -1797,22 +584,20 @@ var WeaverseHydrogen = class extends import_react12.Weaverse {
|
|
|
1797
584
|
this.pageId = pageId;
|
|
1798
585
|
this.requestInfo = requestInfo;
|
|
1799
586
|
this.registerComponents(components);
|
|
587
|
+
this.registerComponents(defaultComponents);
|
|
1800
588
|
}
|
|
1801
|
-
|
|
1802
|
-
super.registerElement(element);
|
|
1803
|
-
}
|
|
1804
|
-
registerComponents(components) {
|
|
589
|
+
registerComponents = (components) => {
|
|
1805
590
|
components.forEach((comp) => {
|
|
1806
|
-
|
|
591
|
+
import_react13.Weaverse.registerElement({
|
|
1807
592
|
type: comp?.schema?.type,
|
|
1808
593
|
Component: comp?.default,
|
|
1809
594
|
schema: comp?.schema,
|
|
1810
595
|
loader: comp?.loader
|
|
1811
596
|
});
|
|
1812
597
|
});
|
|
1813
|
-
}
|
|
598
|
+
};
|
|
1814
599
|
};
|
|
1815
|
-
var WeaverseHydrogenItem = class extends
|
|
600
|
+
var WeaverseHydrogenItem = class extends import_react13.WeaverseItemStore {
|
|
1816
601
|
constructor(initialData, weaverse) {
|
|
1817
602
|
super(initialData, weaverse);
|
|
1818
603
|
let { data, ...rest } = initialData;
|
|
@@ -1822,7 +607,7 @@ var WeaverseHydrogenItem = class extends import_react12.WeaverseItemStore {
|
|
|
1822
607
|
return super.Element;
|
|
1823
608
|
}
|
|
1824
609
|
get data() {
|
|
1825
|
-
let defaultData = this.Element?.schema?.inspector?.flatMap((
|
|
610
|
+
let defaultData = this.Element?.schema?.inspector?.flatMap((group) => group.inputs).reduce((a, { defaultValue, name }) => {
|
|
1826
611
|
if (name && defaultValue !== null && defaultValue !== void 0) {
|
|
1827
612
|
a[name] = defaultValue;
|
|
1828
613
|
}
|
|
@@ -1844,6 +629,8 @@ var WeaverseHydrogenItem = class extends import_react12.WeaverseItemStore {
|
|
|
1844
629
|
getRequestQueries,
|
|
1845
630
|
getSelectedProductOptions,
|
|
1846
631
|
getWeaverseConfigs,
|
|
632
|
+
useItemInstance,
|
|
1847
633
|
useThemeSettings,
|
|
634
|
+
useWeaverse,
|
|
1848
635
|
withWeaverse
|
|
1849
636
|
});
|