@pixerate/editor 0.14.3 → 0.15.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/agent/index.cjs +28 -220
- package/dist/agent/index.cjs.map +1 -1
- package/dist/agent/index.d.cts +1 -1
- package/dist/agent/index.d.ts +1 -1
- package/dist/agent/index.js +5 -154
- package/dist/agent/index.js.map +1 -1
- package/dist/canvas/index.cjs +113 -377
- package/dist/canvas/index.cjs.map +1 -1
- package/dist/canvas/index.d.cts +2 -2
- package/dist/canvas/index.d.ts +2 -2
- package/dist/canvas/index.js +18 -208
- package/dist/canvas/index.js.map +1 -1
- package/dist/chunk-33UVEDOS.cjs +233 -0
- package/dist/chunk-33UVEDOS.cjs.map +1 -0
- package/dist/chunk-7FWEWE6T.js +1888 -0
- package/dist/chunk-7FWEWE6T.js.map +1 -0
- package/dist/chunk-BYCOFZAA.js +514 -0
- package/dist/chunk-BYCOFZAA.js.map +1 -0
- package/dist/chunk-CYKQLDYH.cjs +1290 -0
- package/dist/chunk-CYKQLDYH.cjs.map +1 -0
- package/dist/chunk-GLSIZKOX.js +17 -0
- package/dist/chunk-GLSIZKOX.js.map +1 -0
- package/dist/chunk-GWHJVZPI.js +233 -0
- package/dist/chunk-GWHJVZPI.js.map +1 -0
- package/dist/chunk-LDES3EOS.cjs +1888 -0
- package/dist/chunk-LDES3EOS.cjs.map +1 -0
- package/dist/chunk-MPPXH7U5.cjs +336 -0
- package/dist/chunk-MPPXH7U5.cjs.map +1 -0
- package/dist/chunk-NNJRJJSC.js +1290 -0
- package/dist/chunk-NNJRJJSC.js.map +1 -0
- package/dist/chunk-O7LOPQMH.js +336 -0
- package/dist/chunk-O7LOPQMH.js.map +1 -0
- package/dist/chunk-SEDR75VH.cjs +17 -0
- package/dist/chunk-SEDR75VH.cjs.map +1 -0
- package/dist/chunk-SHWP2A43.cjs +514 -0
- package/dist/chunk-SHWP2A43.cjs.map +1 -0
- package/dist/chunk-VHZCXHS4.js +222 -0
- package/dist/chunk-VHZCXHS4.js.map +1 -0
- package/dist/chunk-WADCJ7A7.cjs +222 -0
- package/dist/chunk-WADCJ7A7.cjs.map +1 -0
- package/dist/extensions/index.cjs +25 -1920
- package/dist/extensions/index.cjs.map +1 -1
- package/dist/extensions/index.js +22 -1868
- package/dist/extensions/index.js.map +1 -1
- package/dist/grammar/index.cjs +44 -387
- package/dist/grammar/index.cjs.map +1 -1
- package/dist/grammar/index.js +23 -321
- package/dist/grammar/index.js.map +1 -1
- package/dist/history/index.cjs +6 -257
- package/dist/history/index.cjs.map +1 -1
- package/dist/history/index.js +4 -227
- package/dist/history/index.js.map +1 -1
- package/dist/image-editor/index.cjs +63 -106
- package/dist/image-editor/index.cjs.map +1 -1
- package/dist/index.cjs +324 -7232
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +0 -4
- package/dist/index.d.ts +0 -4
- package/dist/index.js +258 -7007
- package/dist/index.js.map +1 -1
- package/dist/serializers/index.cjs +28 -558
- package/dist/serializers/index.cjs.map +1 -1
- package/dist/serializers/index.js +16 -496
- package/dist/serializers/index.js.map +1 -1
- package/dist/spreadsheet/index.cjs +21 -1319
- package/dist/spreadsheet/index.cjs.map +1 -1
- package/dist/spreadsheet/index.js +14 -1274
- package/dist/spreadsheet/index.js.map +1 -1
- package/dist/{types-lGtRobRV.d.cts → types-DC8b2TsA.d.cts} +1 -1
- package/dist/{types-lGtRobRV.d.ts → types-DC8b2TsA.d.ts} +1 -1
- package/package.json +1 -1
package/dist/grammar/index.cjs
CHANGED
|
@@ -1,388 +1,45 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
// src/grammar/tokens.ts
|
|
46
|
-
var TEMPLATE_REGEX = /{{\s*([^}]+?)\s*}}/g;
|
|
47
|
-
var VARIABLE_REGEX = /(?<!\{)\{([^{}]+)\}(?!\})/g;
|
|
48
|
-
var INSTRUCTION_REGEX = /__(.+?)__/g;
|
|
49
|
-
var templateRegex = TEMPLATE_REGEX;
|
|
50
|
-
var variableRegex = VARIABLE_REGEX;
|
|
51
|
-
var instructionRegex = INSTRUCTION_REGEX;
|
|
52
|
-
|
|
53
|
-
// src/grammar/tokenizer.ts
|
|
54
|
-
function tokenizePrompt(text) {
|
|
55
|
-
if (!text) {
|
|
56
|
-
return [];
|
|
57
|
-
}
|
|
58
|
-
const rawMatches = [];
|
|
59
|
-
const tmplRegex = new RegExp(TEMPLATE_REGEX.source, TEMPLATE_REGEX.flags);
|
|
60
|
-
let match;
|
|
61
|
-
while ((match = tmplRegex.exec(text)) !== null) {
|
|
62
|
-
rawMatches.push({
|
|
63
|
-
type: "template",
|
|
64
|
-
raw: match[0],
|
|
65
|
-
value: match[1].trim(),
|
|
66
|
-
start: match.index,
|
|
67
|
-
end: match.index + match[0].length
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
const varRegex = new RegExp(VARIABLE_REGEX.source, VARIABLE_REGEX.flags);
|
|
71
|
-
while ((match = varRegex.exec(text)) !== null) {
|
|
72
|
-
const start = match.index;
|
|
73
|
-
const end = start + match[0].length;
|
|
74
|
-
const overlaps = rawMatches.some(
|
|
75
|
-
(m) => !(end <= m.start || start >= m.end)
|
|
76
|
-
);
|
|
77
|
-
if (!overlaps) {
|
|
78
|
-
rawMatches.push({
|
|
79
|
-
type: "variable",
|
|
80
|
-
raw: match[0],
|
|
81
|
-
value: match[1].trim(),
|
|
82
|
-
start,
|
|
83
|
-
end
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
const instRegex = new RegExp(
|
|
88
|
-
INSTRUCTION_REGEX.source,
|
|
89
|
-
INSTRUCTION_REGEX.flags
|
|
90
|
-
);
|
|
91
|
-
while ((match = instRegex.exec(text)) !== null) {
|
|
92
|
-
const start = match.index;
|
|
93
|
-
const end = start + match[0].length;
|
|
94
|
-
const overlaps = rawMatches.some(
|
|
95
|
-
(m) => !(end <= m.start || start >= m.end)
|
|
96
|
-
);
|
|
97
|
-
if (!overlaps) {
|
|
98
|
-
rawMatches.push({
|
|
99
|
-
type: "instruction",
|
|
100
|
-
raw: match[0],
|
|
101
|
-
value: match[1].trim(),
|
|
102
|
-
start,
|
|
103
|
-
end
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
rawMatches.sort((a, b) => a.start - b.start);
|
|
108
|
-
const tokens = [];
|
|
109
|
-
let currentIdx = 0;
|
|
110
|
-
for (const m of rawMatches) {
|
|
111
|
-
if (m.start > currentIdx) {
|
|
112
|
-
const textChunk = text.slice(currentIdx, m.start);
|
|
113
|
-
tokens.push({
|
|
114
|
-
type: "text",
|
|
115
|
-
raw: textChunk,
|
|
116
|
-
value: textChunk,
|
|
117
|
-
start: currentIdx,
|
|
118
|
-
end: m.start
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
tokens.push({
|
|
122
|
-
type: m.type,
|
|
123
|
-
raw: m.raw,
|
|
124
|
-
value: m.value,
|
|
125
|
-
start: m.start,
|
|
126
|
-
end: m.end
|
|
127
|
-
});
|
|
128
|
-
currentIdx = m.end;
|
|
129
|
-
}
|
|
130
|
-
if (currentIdx < text.length) {
|
|
131
|
-
const textChunk = text.slice(currentIdx);
|
|
132
|
-
tokens.push({
|
|
133
|
-
type: "text",
|
|
134
|
-
raw: textChunk,
|
|
135
|
-
value: textChunk,
|
|
136
|
-
start: currentIdx,
|
|
137
|
-
end: text.length
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
return tokens;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
// src/grammar/resolver.ts
|
|
144
|
-
function getLatestVersion(template) {
|
|
145
|
-
if (!template.versions || template.versions.length === 0) {
|
|
146
|
-
if (template.body !== void 0) {
|
|
147
|
-
return {
|
|
148
|
-
id: template.id || "default",
|
|
149
|
-
version: "1.0",
|
|
150
|
-
body: template.body
|
|
151
|
-
};
|
|
152
|
-
}
|
|
153
|
-
return void 0;
|
|
154
|
-
}
|
|
155
|
-
if (template.latestVersion) {
|
|
156
|
-
const found = template.versions.find(
|
|
157
|
-
(v) => v.version === template.latestVersion
|
|
158
|
-
);
|
|
159
|
-
if (found) return found;
|
|
160
|
-
}
|
|
161
|
-
return template.versions[template.versions.length - 1];
|
|
162
|
-
}
|
|
163
|
-
var TEMPLATE_LOOP_ERROR = "[Template loop detected]";
|
|
164
|
-
var TEMPLATE_DEPTH_ERROR = "[Template max depth exceeded]";
|
|
165
|
-
function getTemplateBody(template, bindings) {
|
|
166
|
-
const boundVersionId = bindings?.[template.name];
|
|
167
|
-
if (boundVersionId && template.versions) {
|
|
168
|
-
const boundVersion = template.versions.find(
|
|
169
|
-
(v) => v.id === boundVersionId || v.version === boundVersionId
|
|
170
|
-
);
|
|
171
|
-
return boundVersion?.body;
|
|
172
|
-
}
|
|
173
|
-
return getLatestVersion(template)?.body ?? template.body;
|
|
174
|
-
}
|
|
175
|
-
function resolveTemplates(text, templates = [], options) {
|
|
176
|
-
const templateMap = /* @__PURE__ */ new Map();
|
|
177
|
-
for (const t of templates) {
|
|
178
|
-
templateMap.set(t.name, t);
|
|
179
|
-
}
|
|
180
|
-
const maxDepth = options?.maxDepth ?? 10;
|
|
181
|
-
function resolveRecursive(currentText, visited, depth) {
|
|
182
|
-
const regex = new RegExp(TEMPLATE_REGEX.source, TEMPLATE_REGEX.flags);
|
|
183
|
-
return currentText.replace(regex, (fullMatch, rawTemplateName) => {
|
|
184
|
-
const templateName = rawTemplateName.trim();
|
|
185
|
-
if (visited.has(templateName)) {
|
|
186
|
-
return TEMPLATE_LOOP_ERROR;
|
|
187
|
-
}
|
|
188
|
-
const template = templateMap.get(templateName);
|
|
189
|
-
if (!template) {
|
|
190
|
-
return fullMatch;
|
|
191
|
-
}
|
|
192
|
-
const versionBody = getTemplateBody(template, options?.bindings);
|
|
193
|
-
if (versionBody === void 0) {
|
|
194
|
-
return fullMatch;
|
|
195
|
-
}
|
|
196
|
-
if (depth + 1 > maxDepth) {
|
|
197
|
-
return TEMPLATE_DEPTH_ERROR;
|
|
198
|
-
}
|
|
199
|
-
const nextVisited = new Set(visited);
|
|
200
|
-
nextVisited.add(templateName);
|
|
201
|
-
return resolveRecursive(versionBody, nextVisited, depth + 1);
|
|
202
|
-
});
|
|
203
|
-
}
|
|
204
|
-
return resolveRecursive(text, /* @__PURE__ */ new Set(), 0);
|
|
205
|
-
}
|
|
206
|
-
function resolveVariables(text, values) {
|
|
207
|
-
if (!text) return "";
|
|
208
|
-
return text.replace(
|
|
209
|
-
new RegExp(VARIABLE_REGEX.source, VARIABLE_REGEX.flags),
|
|
210
|
-
(fullMatch, varName) => {
|
|
211
|
-
const key = varName.trim();
|
|
212
|
-
if (Object.prototype.hasOwnProperty.call(values, key)) {
|
|
213
|
-
return String(values[key]);
|
|
214
|
-
}
|
|
215
|
-
return fullMatch;
|
|
216
|
-
}
|
|
217
|
-
);
|
|
218
|
-
}
|
|
219
|
-
function extractTemplateNames(text) {
|
|
220
|
-
if (!text) return [];
|
|
221
|
-
const set = /* @__PURE__ */ new Set();
|
|
222
|
-
const regex = new RegExp(TEMPLATE_REGEX.source, TEMPLATE_REGEX.flags);
|
|
223
|
-
let match;
|
|
224
|
-
while ((match = regex.exec(text)) !== null) {
|
|
225
|
-
set.add(match[1].trim());
|
|
226
|
-
}
|
|
227
|
-
return Array.from(set);
|
|
228
|
-
}
|
|
229
|
-
function extractVariableNames(text) {
|
|
230
|
-
if (!text) return [];
|
|
231
|
-
const set = /* @__PURE__ */ new Set();
|
|
232
|
-
const regex = new RegExp(VARIABLE_REGEX.source, VARIABLE_REGEX.flags);
|
|
233
|
-
let match;
|
|
234
|
-
while ((match = regex.exec(text)) !== null) {
|
|
235
|
-
set.add(match[1].trim());
|
|
236
|
-
}
|
|
237
|
-
return Array.from(set);
|
|
238
|
-
}
|
|
239
|
-
function extractInstructionNames(text) {
|
|
240
|
-
if (!text) return [];
|
|
241
|
-
const set = /* @__PURE__ */ new Set();
|
|
242
|
-
const regex = new RegExp(INSTRUCTION_REGEX.source, INSTRUCTION_REGEX.flags);
|
|
243
|
-
let match;
|
|
244
|
-
while ((match = regex.exec(text)) !== null) {
|
|
245
|
-
set.add(match[1].trim());
|
|
246
|
-
}
|
|
247
|
-
return Array.from(set);
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
// src/grammar/sourcemap.ts
|
|
251
|
-
function resolveTemplatesWithMapping(text, templates = [], templateBindings, options) {
|
|
252
|
-
if (!templates || templates.length === 0 || !text.includes("{{")) {
|
|
253
|
-
return {
|
|
254
|
-
text,
|
|
255
|
-
map: [
|
|
256
|
-
{
|
|
257
|
-
resolvedStart: 0,
|
|
258
|
-
resolvedEnd: text.length,
|
|
259
|
-
source: "raw",
|
|
260
|
-
rawStart: 0,
|
|
261
|
-
rawEnd: text.length
|
|
262
|
-
}
|
|
263
|
-
]
|
|
264
|
-
};
|
|
265
|
-
}
|
|
266
|
-
const templateMap = new Map(templates.map((t) => [t.name, t]));
|
|
267
|
-
const regex = new RegExp(TEMPLATE_REGEX.source, TEMPLATE_REGEX.flags);
|
|
268
|
-
let match;
|
|
269
|
-
let lastIndex = 0;
|
|
270
|
-
let resolvedText = "";
|
|
271
|
-
const map = [];
|
|
272
|
-
while ((match = regex.exec(text)) !== null) {
|
|
273
|
-
const [fullMatch, rawTemplateName] = match;
|
|
274
|
-
const templateName = rawTemplateName.trim();
|
|
275
|
-
const matchIndex = match.index;
|
|
276
|
-
if (matchIndex > lastIndex) {
|
|
277
|
-
const rawSegment = text.substring(lastIndex, matchIndex);
|
|
278
|
-
map.push({
|
|
279
|
-
resolvedStart: resolvedText.length,
|
|
280
|
-
resolvedEnd: resolvedText.length + rawSegment.length,
|
|
281
|
-
source: "raw",
|
|
282
|
-
rawStart: lastIndex,
|
|
283
|
-
rawEnd: matchIndex
|
|
284
|
-
});
|
|
285
|
-
resolvedText += rawSegment;
|
|
286
|
-
}
|
|
287
|
-
let resolvedBody = fullMatch;
|
|
288
|
-
let isTemplate = false;
|
|
289
|
-
const template = templateMap.get(templateName);
|
|
290
|
-
if (template && getTemplateBody(template, templateBindings) !== void 0) {
|
|
291
|
-
resolvedBody = resolveTemplates(fullMatch, templates, {
|
|
292
|
-
bindings: templateBindings,
|
|
293
|
-
maxDepth: options?.maxDepth
|
|
294
|
-
});
|
|
295
|
-
isTemplate = true;
|
|
296
|
-
}
|
|
297
|
-
if (isTemplate) {
|
|
298
|
-
map.push({
|
|
299
|
-
resolvedStart: resolvedText.length,
|
|
300
|
-
resolvedEnd: resolvedText.length + resolvedBody.length,
|
|
301
|
-
source: "template",
|
|
302
|
-
rawStart: matchIndex,
|
|
303
|
-
rawEnd: matchIndex + fullMatch.length,
|
|
304
|
-
templateName
|
|
305
|
-
});
|
|
306
|
-
resolvedText += resolvedBody;
|
|
307
|
-
} else {
|
|
308
|
-
map.push({
|
|
309
|
-
resolvedStart: resolvedText.length,
|
|
310
|
-
resolvedEnd: resolvedText.length + fullMatch.length,
|
|
311
|
-
source: "raw",
|
|
312
|
-
rawStart: matchIndex,
|
|
313
|
-
rawEnd: matchIndex + fullMatch.length
|
|
314
|
-
});
|
|
315
|
-
resolvedText += fullMatch;
|
|
316
|
-
}
|
|
317
|
-
lastIndex = matchIndex + fullMatch.length;
|
|
318
|
-
}
|
|
319
|
-
if (lastIndex < text.length) {
|
|
320
|
-
const rawSegment = text.substring(lastIndex);
|
|
321
|
-
map.push({
|
|
322
|
-
resolvedStart: resolvedText.length,
|
|
323
|
-
resolvedEnd: resolvedText.length + rawSegment.length,
|
|
324
|
-
source: "raw",
|
|
325
|
-
rawStart: lastIndex,
|
|
326
|
-
rawEnd: text.length
|
|
327
|
-
});
|
|
328
|
-
resolvedText += rawSegment;
|
|
329
|
-
}
|
|
330
|
-
return { text: resolvedText, map };
|
|
331
|
-
}
|
|
332
|
-
function mapResolvedOffsetToRaw(resolvedOffset, map) {
|
|
333
|
-
for (let i = 0; i < map.length; i++) {
|
|
334
|
-
const seg = map[i];
|
|
335
|
-
const isLast = i === map.length - 1;
|
|
336
|
-
const inRange = isLast ? resolvedOffset >= seg.resolvedStart && resolvedOffset <= seg.resolvedEnd : resolvedOffset >= seg.resolvedStart && resolvedOffset < seg.resolvedEnd;
|
|
337
|
-
if (inRange) {
|
|
338
|
-
if (seg.source === "raw") {
|
|
339
|
-
return seg.rawStart + (resolvedOffset - seg.resolvedStart);
|
|
340
|
-
}
|
|
341
|
-
if (resolvedOffset === seg.resolvedEnd) {
|
|
342
|
-
return seg.rawEnd;
|
|
343
|
-
}
|
|
344
|
-
return seg.rawStart;
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
return resolvedOffset;
|
|
348
|
-
}
|
|
349
|
-
function mapRawOffsetToResolved(rawOffset, map) {
|
|
350
|
-
for (let i = 0; i < map.length; i++) {
|
|
351
|
-
const seg = map[i];
|
|
352
|
-
const isLast = i === map.length - 1;
|
|
353
|
-
const inRange = isLast ? rawOffset >= seg.rawStart && rawOffset <= seg.rawEnd : rawOffset >= seg.rawStart && rawOffset < seg.rawEnd;
|
|
354
|
-
if (inRange) {
|
|
355
|
-
if (seg.source === "raw") {
|
|
356
|
-
return seg.resolvedStart + (rawOffset - seg.rawStart);
|
|
357
|
-
}
|
|
358
|
-
if (rawOffset === seg.rawEnd) {
|
|
359
|
-
return seg.resolvedEnd;
|
|
360
|
-
}
|
|
361
|
-
return seg.resolvedStart;
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
return rawOffset;
|
|
365
|
-
}
|
|
366
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
367
|
-
0 && (module.exports = {
|
|
368
|
-
INSTRUCTION_REGEX,
|
|
369
|
-
TEMPLATE_DEPTH_ERROR,
|
|
370
|
-
TEMPLATE_LOOP_ERROR,
|
|
371
|
-
TEMPLATE_REGEX,
|
|
372
|
-
VARIABLE_REGEX,
|
|
373
|
-
extractInstructionNames,
|
|
374
|
-
extractTemplateNames,
|
|
375
|
-
extractVariableNames,
|
|
376
|
-
getLatestVersion,
|
|
377
|
-
getTemplateBody,
|
|
378
|
-
instructionRegex,
|
|
379
|
-
mapRawOffsetToResolved,
|
|
380
|
-
mapResolvedOffsetToRaw,
|
|
381
|
-
resolveTemplates,
|
|
382
|
-
resolveTemplatesWithMapping,
|
|
383
|
-
resolveVariables,
|
|
384
|
-
templateRegex,
|
|
385
|
-
tokenizePrompt,
|
|
386
|
-
variableRegex
|
|
387
|
-
});
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
var _chunkMPPXH7U5cjs = require('../chunk-MPPXH7U5.cjs');
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
var _chunkSEDR75VHcjs = require('../chunk-SEDR75VH.cjs');
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
exports.INSTRUCTION_REGEX = _chunkSEDR75VHcjs.INSTRUCTION_REGEX; exports.TEMPLATE_DEPTH_ERROR = _chunkMPPXH7U5cjs.TEMPLATE_DEPTH_ERROR; exports.TEMPLATE_LOOP_ERROR = _chunkMPPXH7U5cjs.TEMPLATE_LOOP_ERROR; exports.TEMPLATE_REGEX = _chunkSEDR75VHcjs.TEMPLATE_REGEX; exports.VARIABLE_REGEX = _chunkSEDR75VHcjs.VARIABLE_REGEX; exports.extractInstructionNames = _chunkMPPXH7U5cjs.extractInstructionNames; exports.extractTemplateNames = _chunkMPPXH7U5cjs.extractTemplateNames; exports.extractVariableNames = _chunkMPPXH7U5cjs.extractVariableNames; exports.getLatestVersion = _chunkMPPXH7U5cjs.getLatestVersion; exports.getTemplateBody = _chunkMPPXH7U5cjs.getTemplateBody; exports.instructionRegex = _chunkSEDR75VHcjs.instructionRegex; exports.mapRawOffsetToResolved = _chunkMPPXH7U5cjs.mapRawOffsetToResolved; exports.mapResolvedOffsetToRaw = _chunkMPPXH7U5cjs.mapResolvedOffsetToRaw; exports.resolveTemplates = _chunkMPPXH7U5cjs.resolveTemplates; exports.resolveTemplatesWithMapping = _chunkMPPXH7U5cjs.resolveTemplatesWithMapping; exports.resolveVariables = _chunkMPPXH7U5cjs.resolveVariables; exports.templateRegex = _chunkSEDR75VHcjs.templateRegex; exports.tokenizePrompt = _chunkMPPXH7U5cjs.tokenizePrompt; exports.variableRegex = _chunkSEDR75VHcjs.variableRegex;
|
|
388
45
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/grammar/index.ts","../../src/grammar/tokens.ts","../../src/grammar/tokenizer.ts","../../src/grammar/resolver.ts","../../src/grammar/sourcemap.ts"],"sourcesContent":["export * from \"./tokens\";\nexport * from \"./tokenizer\";\nexport * from \"./resolver\";\nexport * from \"./sourcemap\";\n","/**\n * Canonical regex patterns for prompt editing tokens.\n */\nexport const TEMPLATE_REGEX = /{{\\s*([^}]+?)\\s*}}/g;\nexport const VARIABLE_REGEX = /(?<!\\{)\\{([^{}]+)\\}(?!\\})/g;\nexport const INSTRUCTION_REGEX = /__(.+?)__/g;\n\n// Backward-compatible camelCase aliases\nexport const templateRegex = TEMPLATE_REGEX;\nexport const variableRegex = VARIABLE_REGEX;\nexport const instructionRegex = INSTRUCTION_REGEX;\n\nexport type TokenType = \"template\" | \"variable\" | \"instruction\" | \"text\";\n\nexport interface Token {\n type: TokenType;\n raw: string;\n value: string;\n start: number;\n end: number;\n}\n\nexport interface TemplateVersion {\n id: string;\n version: string | number;\n body: string;\n createdAt?: any;\n [key: string]: any;\n}\n\nexport interface Template {\n id?: string;\n name: string;\n body?: string;\n latestVersion?: string | number;\n versions?: TemplateVersion[];\n color?: string;\n [key: string]: any;\n}\n\nexport interface ColorGradient {\n from: string;\n to: string;\n}\n","import {\n TEMPLATE_REGEX,\n VARIABLE_REGEX,\n INSTRUCTION_REGEX,\n Token,\n} from \"./tokens\";\n\ninterface RawMatch {\n type: \"template\" | \"variable\" | \"instruction\";\n raw: string;\n value: string;\n start: number;\n end: number;\n}\n\n/**\n * Parses any prompt string into an array of typed tokens in linear order.\n * Plain text between tokens is preserved as `{ type: 'text' }`.\n */\nexport function tokenizePrompt(text: string): Token[] {\n if (!text) {\n return [];\n }\n\n const rawMatches: RawMatch[] = [];\n\n // Match {{template}}\n const tmplRegex = new RegExp(TEMPLATE_REGEX.source, TEMPLATE_REGEX.flags);\n let match: RegExpExecArray | null;\n while ((match = tmplRegex.exec(text)) !== null) {\n rawMatches.push({\n type: \"template\",\n raw: match[0],\n value: match[1].trim(),\n start: match.index,\n end: match.index + match[0].length,\n });\n }\n\n // Match {variable}\n const varRegex = new RegExp(VARIABLE_REGEX.source, VARIABLE_REGEX.flags);\n while ((match = varRegex.exec(text)) !== null) {\n // Avoid double matching if overlapping with template\n const start = match.index;\n const end = start + match[0].length;\n const overlaps = rawMatches.some(\n (m) => !(end <= m.start || start >= m.end),\n );\n if (!overlaps) {\n rawMatches.push({\n type: \"variable\",\n raw: match[0],\n value: match[1].trim(),\n start,\n end,\n });\n }\n }\n\n // Match __instruction__\n const instRegex = new RegExp(\n INSTRUCTION_REGEX.source,\n INSTRUCTION_REGEX.flags,\n );\n while ((match = instRegex.exec(text)) !== null) {\n const start = match.index;\n const end = start + match[0].length;\n const overlaps = rawMatches.some(\n (m) => !(end <= m.start || start >= m.end),\n );\n if (!overlaps) {\n rawMatches.push({\n type: \"instruction\",\n raw: match[0],\n value: match[1].trim(),\n start,\n end,\n });\n }\n }\n\n // Sort matches by start index\n rawMatches.sort((a, b) => a.start - b.start);\n\n const tokens: Token[] = [];\n let currentIdx = 0;\n\n for (const m of rawMatches) {\n if (m.start > currentIdx) {\n const textChunk = text.slice(currentIdx, m.start);\n tokens.push({\n type: \"text\",\n raw: textChunk,\n value: textChunk,\n start: currentIdx,\n end: m.start,\n });\n }\n tokens.push({\n type: m.type,\n raw: m.raw,\n value: m.value,\n start: m.start,\n end: m.end,\n });\n currentIdx = m.end;\n }\n\n if (currentIdx < text.length) {\n const textChunk = text.slice(currentIdx);\n tokens.push({\n type: \"text\",\n raw: textChunk,\n value: textChunk,\n start: currentIdx,\n end: text.length,\n });\n }\n\n return tokens;\n}\n","import {\n TEMPLATE_REGEX,\n VARIABLE_REGEX,\n INSTRUCTION_REGEX,\n Template,\n TemplateVersion,\n} from \"./tokens\";\n\n/**\n * Finds the latest version of a template based on `latestVersion` or last version entry.\n */\nexport function getLatestVersion(\n template: Template,\n): TemplateVersion | undefined {\n if (!template.versions || template.versions.length === 0) {\n if (template.body !== undefined) {\n return {\n id: template.id || \"default\",\n version: \"1.0\",\n body: template.body,\n };\n }\n return undefined;\n }\n if (template.latestVersion) {\n const found = template.versions.find(\n (v) => v.version === template.latestVersion,\n );\n if (found) return found;\n }\n return template.versions[template.versions.length - 1];\n}\n\nexport interface ResolveTemplatesOptions {\n bindings?: Record<string, string>;\n maxDepth?: number;\n}\n\n/** Marker substituted for a template tag that would recurse into itself. */\nexport const TEMPLATE_LOOP_ERROR = \"[Template loop detected]\";\n/** Marker substituted for a template tag nested deeper than `maxDepth`. */\nexport const TEMPLATE_DEPTH_ERROR = \"[Template max depth exceeded]\";\n\n/**\n * Returns the body a template tag resolves to, honoring version bindings.\n */\nexport function getTemplateBody(\n template: Template,\n bindings?: Record<string, string>,\n): string | undefined {\n const boundVersionId = bindings?.[template.name];\n if (boundVersionId && template.versions) {\n const boundVersion = template.versions.find(\n (v) => v.id === boundVersionId || v.version === boundVersionId,\n );\n return boundVersion?.body;\n }\n return getLatestVersion(template)?.body ?? template.body;\n}\n\n/**\n * Recursively resolves template tags `{{template_name}}` in a given text.\n * A tag that would recurse into itself is replaced with `TEMPLATE_LOOP_ERROR`,\n * and a tag nested deeper than `maxDepth` with `TEMPLATE_DEPTH_ERROR`; the rest\n * of the text still resolves normally.\n */\nexport function resolveTemplates(\n text: string,\n templates: Template[] = [],\n options?: ResolveTemplatesOptions,\n): string {\n const templateMap = new Map<string, Template>();\n for (const t of templates) {\n templateMap.set(t.name, t);\n }\n\n const maxDepth = options?.maxDepth ?? 10;\n\n function resolveRecursive(\n currentText: string,\n visited: Set<string>,\n depth: number,\n ): string {\n const regex = new RegExp(TEMPLATE_REGEX.source, TEMPLATE_REGEX.flags);\n\n // A function replacer keeps `$&`, `$'` etc. in template bodies literal.\n return currentText.replace(regex, (fullMatch, rawTemplateName: string) => {\n const templateName = rawTemplateName.trim();\n\n if (visited.has(templateName)) {\n return TEMPLATE_LOOP_ERROR;\n }\n\n const template = templateMap.get(templateName);\n if (!template) {\n return fullMatch;\n }\n\n const versionBody = getTemplateBody(template, options?.bindings);\n if (versionBody === undefined) {\n return fullMatch;\n }\n\n if (depth + 1 > maxDepth) {\n return TEMPLATE_DEPTH_ERROR;\n }\n\n const nextVisited = new Set(visited);\n nextVisited.add(templateName);\n\n return resolveRecursive(versionBody, nextVisited, depth + 1);\n });\n }\n\n return resolveRecursive(text, new Set(), 0);\n}\n\n/**\n * Replaces `{variableName}` with values from a dictionary.\n */\nexport function resolveVariables(\n text: string,\n values: Record<string, string | number>,\n): string {\n if (!text) return \"\";\n return text.replace(\n new RegExp(VARIABLE_REGEX.source, VARIABLE_REGEX.flags),\n (fullMatch, varName) => {\n const key = varName.trim();\n if (Object.prototype.hasOwnProperty.call(values, key)) {\n return String(values[key]);\n }\n return fullMatch;\n },\n );\n}\n\n/**\n * Extracts unique template names referenced in text.\n */\nexport function extractTemplateNames(text: string): string[] {\n if (!text) return [];\n const set = new Set<string>();\n const regex = new RegExp(TEMPLATE_REGEX.source, TEMPLATE_REGEX.flags);\n let match: RegExpExecArray | null;\n while ((match = regex.exec(text)) !== null) {\n set.add(match[1].trim());\n }\n return Array.from(set);\n}\n\n/**\n * Extracts unique variable names referenced in text.\n */\nexport function extractVariableNames(text: string): string[] {\n if (!text) return [];\n const set = new Set<string>();\n const regex = new RegExp(VARIABLE_REGEX.source, VARIABLE_REGEX.flags);\n let match: RegExpExecArray | null;\n while ((match = regex.exec(text)) !== null) {\n set.add(match[1].trim());\n }\n return Array.from(set);\n}\n\n/**\n * Extracts unique instruction names referenced in text.\n */\nexport function extractInstructionNames(text: string): string[] {\n if (!text) return [];\n const set = new Set<string>();\n const regex = new RegExp(INSTRUCTION_REGEX.source, INSTRUCTION_REGEX.flags);\n let match: RegExpExecArray | null;\n while ((match = regex.exec(text)) !== null) {\n set.add(match[1].trim());\n }\n return Array.from(set);\n}\n","import { TEMPLATE_REGEX, Template } from \"./tokens\";\nimport {\n getTemplateBody,\n resolveTemplates,\n type ResolveTemplatesOptions,\n} from \"./resolver\";\n\nexport interface SourceMapSegment {\n resolvedStart: number;\n resolvedEnd: number;\n source: \"raw\" | \"template\";\n rawStart: number;\n rawEnd: number;\n templateName?: string;\n}\n\n/**\n * Resolves templates in text while tracking character offset mapping\n * between the raw input and the fully resolved output.\n */\nexport function resolveTemplatesWithMapping(\n text: string,\n templates: Template[] = [],\n templateBindings?: Record<string, string>,\n options?: Pick<ResolveTemplatesOptions, \"maxDepth\">,\n): { text: string; map: SourceMapSegment[] } {\n if (!templates || templates.length === 0 || !text.includes(\"{{\")) {\n return {\n text,\n map: [\n {\n resolvedStart: 0,\n resolvedEnd: text.length,\n source: \"raw\",\n rawStart: 0,\n rawEnd: text.length,\n },\n ],\n };\n }\n\n const templateMap = new Map(templates.map((t) => [t.name, t]));\n const regex = new RegExp(TEMPLATE_REGEX.source, TEMPLATE_REGEX.flags);\n let match: RegExpExecArray | null;\n let lastIndex = 0;\n let resolvedText = \"\";\n const map: SourceMapSegment[] = [];\n\n while ((match = regex.exec(text)) !== null) {\n const [fullMatch, rawTemplateName] = match;\n const templateName = rawTemplateName.trim();\n const matchIndex = match.index;\n\n // Add raw text preceding this template match\n if (matchIndex > lastIndex) {\n const rawSegment = text.substring(lastIndex, matchIndex);\n map.push({\n resolvedStart: resolvedText.length,\n resolvedEnd: resolvedText.length + rawSegment.length,\n source: \"raw\",\n rawStart: lastIndex,\n rawEnd: matchIndex,\n });\n resolvedText += rawSegment;\n }\n\n let resolvedBody = fullMatch;\n let isTemplate = false;\n\n const template = templateMap.get(templateName);\n if (template && getTemplateBody(template, templateBindings) !== undefined) {\n // Resolve the tag itself so loop and depth handling match resolveTemplates.\n resolvedBody = resolveTemplates(fullMatch, templates, {\n bindings: templateBindings,\n maxDepth: options?.maxDepth,\n });\n isTemplate = true;\n }\n\n if (isTemplate) {\n map.push({\n resolvedStart: resolvedText.length,\n resolvedEnd: resolvedText.length + resolvedBody.length,\n source: \"template\",\n rawStart: matchIndex,\n rawEnd: matchIndex + fullMatch.length,\n templateName,\n });\n resolvedText += resolvedBody;\n } else {\n map.push({\n resolvedStart: resolvedText.length,\n resolvedEnd: resolvedText.length + fullMatch.length,\n source: \"raw\",\n rawStart: matchIndex,\n rawEnd: matchIndex + fullMatch.length,\n });\n resolvedText += fullMatch;\n }\n\n lastIndex = matchIndex + fullMatch.length;\n }\n\n // Add any remaining raw text after the final match\n if (lastIndex < text.length) {\n const rawSegment = text.substring(lastIndex);\n map.push({\n resolvedStart: resolvedText.length,\n resolvedEnd: resolvedText.length + rawSegment.length,\n source: \"raw\",\n rawStart: lastIndex,\n rawEnd: text.length,\n });\n resolvedText += rawSegment;\n }\n\n return { text: resolvedText, map };\n}\n\n/**\n * Maps an offset in resolved text back to the corresponding offset in raw text.\n */\nexport function mapResolvedOffsetToRaw(\n resolvedOffset: number,\n map: SourceMapSegment[],\n): number {\n for (let i = 0; i < map.length; i++) {\n const seg = map[i];\n const isLast = i === map.length - 1;\n const inRange = isLast\n ? resolvedOffset >= seg.resolvedStart && resolvedOffset <= seg.resolvedEnd\n : resolvedOffset >= seg.resolvedStart && resolvedOffset < seg.resolvedEnd;\n\n if (inRange) {\n if (seg.source === \"raw\") {\n return seg.rawStart + (resolvedOffset - seg.resolvedStart);\n }\n // The end of the text maps to the end of the tag; anywhere inside a\n // resolved template maps to the start of its tag.\n if (resolvedOffset === seg.resolvedEnd) {\n return seg.rawEnd;\n }\n return seg.rawStart;\n }\n }\n return resolvedOffset;\n}\n\n/**\n * Maps an offset in raw text to the corresponding offset in resolved text.\n */\nexport function mapRawOffsetToResolved(\n rawOffset: number,\n map: SourceMapSegment[],\n): number {\n for (let i = 0; i < map.length; i++) {\n const seg = map[i];\n const isLast = i === map.length - 1;\n const inRange = isLast\n ? rawOffset >= seg.rawStart && rawOffset <= seg.rawEnd\n : rawOffset >= seg.rawStart && rawOffset < seg.rawEnd;\n\n if (inRange) {\n if (seg.source === \"raw\") {\n return seg.resolvedStart + (rawOffset - seg.rawStart);\n }\n if (rawOffset === seg.rawEnd) {\n return seg.resolvedEnd;\n }\n return seg.resolvedStart;\n }\n }\n return rawOffset;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACGO,IAAM,iBAAiB;AACvB,IAAM,iBAAiB;AACvB,IAAM,oBAAoB;AAG1B,IAAM,gBAAgB;AACtB,IAAM,gBAAgB;AACtB,IAAM,mBAAmB;;;ACSzB,SAAS,eAAe,MAAuB;AACpD,MAAI,CAAC,MAAM;AACT,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,aAAyB,CAAC;AAGhC,QAAM,YAAY,IAAI,OAAO,eAAe,QAAQ,eAAe,KAAK;AACxE,MAAI;AACJ,UAAQ,QAAQ,UAAU,KAAK,IAAI,OAAO,MAAM;AAC9C,eAAW,KAAK;AAAA,MACd,MAAM;AAAA,MACN,KAAK,MAAM,CAAC;AAAA,MACZ,OAAO,MAAM,CAAC,EAAE,KAAK;AAAA,MACrB,OAAO,MAAM;AAAA,MACb,KAAK,MAAM,QAAQ,MAAM,CAAC,EAAE;AAAA,IAC9B,CAAC;AAAA,EACH;AAGA,QAAM,WAAW,IAAI,OAAO,eAAe,QAAQ,eAAe,KAAK;AACvE,UAAQ,QAAQ,SAAS,KAAK,IAAI,OAAO,MAAM;AAE7C,UAAM,QAAQ,MAAM;AACpB,UAAM,MAAM,QAAQ,MAAM,CAAC,EAAE;AAC7B,UAAM,WAAW,WAAW;AAAA,MAC1B,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,SAAS,EAAE;AAAA,IACxC;AACA,QAAI,CAAC,UAAU;AACb,iBAAW,KAAK;AAAA,QACd,MAAM;AAAA,QACN,KAAK,MAAM,CAAC;AAAA,QACZ,OAAO,MAAM,CAAC,EAAE,KAAK;AAAA,QACrB;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAGA,QAAM,YAAY,IAAI;AAAA,IACpB,kBAAkB;AAAA,IAClB,kBAAkB;AAAA,EACpB;AACA,UAAQ,QAAQ,UAAU,KAAK,IAAI,OAAO,MAAM;AAC9C,UAAM,QAAQ,MAAM;AACpB,UAAM,MAAM,QAAQ,MAAM,CAAC,EAAE;AAC7B,UAAM,WAAW,WAAW;AAAA,MAC1B,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,SAAS,EAAE;AAAA,IACxC;AACA,QAAI,CAAC,UAAU;AACb,iBAAW,KAAK;AAAA,QACd,MAAM;AAAA,QACN,KAAK,MAAM,CAAC;AAAA,QACZ,OAAO,MAAM,CAAC,EAAE,KAAK;AAAA,QACrB;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAGA,aAAW,KAAK,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,KAAK;AAE3C,QAAM,SAAkB,CAAC;AACzB,MAAI,aAAa;AAEjB,aAAW,KAAK,YAAY;AAC1B,QAAI,EAAE,QAAQ,YAAY;AACxB,YAAM,YAAY,KAAK,MAAM,YAAY,EAAE,KAAK;AAChD,aAAO,KAAK;AAAA,QACV,MAAM;AAAA,QACN,KAAK;AAAA,QACL,OAAO;AAAA,QACP,OAAO;AAAA,QACP,KAAK,EAAE;AAAA,MACT,CAAC;AAAA,IACH;AACA,WAAO,KAAK;AAAA,MACV,MAAM,EAAE;AAAA,MACR,KAAK,EAAE;AAAA,MACP,OAAO,EAAE;AAAA,MACT,OAAO,EAAE;AAAA,MACT,KAAK,EAAE;AAAA,IACT,CAAC;AACD,iBAAa,EAAE;AAAA,EACjB;AAEA,MAAI,aAAa,KAAK,QAAQ;AAC5B,UAAM,YAAY,KAAK,MAAM,UAAU;AACvC,WAAO,KAAK;AAAA,MACV,MAAM;AAAA,MACN,KAAK;AAAA,MACL,OAAO;AAAA,MACP,OAAO;AAAA,MACP,KAAK,KAAK;AAAA,IACZ,CAAC;AAAA,EACH;AAEA,SAAO;AACT;;;AC7GO,SAAS,iBACd,UAC6B;AAC7B,MAAI,CAAC,SAAS,YAAY,SAAS,SAAS,WAAW,GAAG;AACxD,QAAI,SAAS,SAAS,QAAW;AAC/B,aAAO;AAAA,QACL,IAAI,SAAS,MAAM;AAAA,QACnB,SAAS;AAAA,QACT,MAAM,SAAS;AAAA,MACjB;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,MAAI,SAAS,eAAe;AAC1B,UAAM,QAAQ,SAAS,SAAS;AAAA,MAC9B,CAAC,MAAM,EAAE,YAAY,SAAS;AAAA,IAChC;AACA,QAAI,MAAO,QAAO;AAAA,EACpB;AACA,SAAO,SAAS,SAAS,SAAS,SAAS,SAAS,CAAC;AACvD;AAQO,IAAM,sBAAsB;AAE5B,IAAM,uBAAuB;AAK7B,SAAS,gBACd,UACA,UACoB;AACpB,QAAM,iBAAiB,WAAW,SAAS,IAAI;AAC/C,MAAI,kBAAkB,SAAS,UAAU;AACvC,UAAM,eAAe,SAAS,SAAS;AAAA,MACrC,CAAC,MAAM,EAAE,OAAO,kBAAkB,EAAE,YAAY;AAAA,IAClD;AACA,WAAO,cAAc;AAAA,EACvB;AACA,SAAO,iBAAiB,QAAQ,GAAG,QAAQ,SAAS;AACtD;AAQO,SAAS,iBACd,MACA,YAAwB,CAAC,GACzB,SACQ;AACR,QAAM,cAAc,oBAAI,IAAsB;AAC9C,aAAW,KAAK,WAAW;AACzB,gBAAY,IAAI,EAAE,MAAM,CAAC;AAAA,EAC3B;AAEA,QAAM,WAAW,SAAS,YAAY;AAEtC,WAAS,iBACP,aACA,SACA,OACQ;AACR,UAAM,QAAQ,IAAI,OAAO,eAAe,QAAQ,eAAe,KAAK;AAGpE,WAAO,YAAY,QAAQ,OAAO,CAAC,WAAW,oBAA4B;AACxE,YAAM,eAAe,gBAAgB,KAAK;AAE1C,UAAI,QAAQ,IAAI,YAAY,GAAG;AAC7B,eAAO;AAAA,MACT;AAEA,YAAM,WAAW,YAAY,IAAI,YAAY;AAC7C,UAAI,CAAC,UAAU;AACb,eAAO;AAAA,MACT;AAEA,YAAM,cAAc,gBAAgB,UAAU,SAAS,QAAQ;AAC/D,UAAI,gBAAgB,QAAW;AAC7B,eAAO;AAAA,MACT;AAEA,UAAI,QAAQ,IAAI,UAAU;AACxB,eAAO;AAAA,MACT;AAEA,YAAM,cAAc,IAAI,IAAI,OAAO;AACnC,kBAAY,IAAI,YAAY;AAE5B,aAAO,iBAAiB,aAAa,aAAa,QAAQ,CAAC;AAAA,IAC7D,CAAC;AAAA,EACH;AAEA,SAAO,iBAAiB,MAAM,oBAAI,IAAI,GAAG,CAAC;AAC5C;AAKO,SAAS,iBACd,MACA,QACQ;AACR,MAAI,CAAC,KAAM,QAAO;AAClB,SAAO,KAAK;AAAA,IACV,IAAI,OAAO,eAAe,QAAQ,eAAe,KAAK;AAAA,IACtD,CAAC,WAAW,YAAY;AACtB,YAAM,MAAM,QAAQ,KAAK;AACzB,UAAI,OAAO,UAAU,eAAe,KAAK,QAAQ,GAAG,GAAG;AACrD,eAAO,OAAO,OAAO,GAAG,CAAC;AAAA,MAC3B;AACA,aAAO;AAAA,IACT;AAAA,EACF;AACF;AAKO,SAAS,qBAAqB,MAAwB;AAC3D,MAAI,CAAC,KAAM,QAAO,CAAC;AACnB,QAAM,MAAM,oBAAI,IAAY;AAC5B,QAAM,QAAQ,IAAI,OAAO,eAAe,QAAQ,eAAe,KAAK;AACpE,MAAI;AACJ,UAAQ,QAAQ,MAAM,KAAK,IAAI,OAAO,MAAM;AAC1C,QAAI,IAAI,MAAM,CAAC,EAAE,KAAK,CAAC;AAAA,EACzB;AACA,SAAO,MAAM,KAAK,GAAG;AACvB;AAKO,SAAS,qBAAqB,MAAwB;AAC3D,MAAI,CAAC,KAAM,QAAO,CAAC;AACnB,QAAM,MAAM,oBAAI,IAAY;AAC5B,QAAM,QAAQ,IAAI,OAAO,eAAe,QAAQ,eAAe,KAAK;AACpE,MAAI;AACJ,UAAQ,QAAQ,MAAM,KAAK,IAAI,OAAO,MAAM;AAC1C,QAAI,IAAI,MAAM,CAAC,EAAE,KAAK,CAAC;AAAA,EACzB;AACA,SAAO,MAAM,KAAK,GAAG;AACvB;AAKO,SAAS,wBAAwB,MAAwB;AAC9D,MAAI,CAAC,KAAM,QAAO,CAAC;AACnB,QAAM,MAAM,oBAAI,IAAY;AAC5B,QAAM,QAAQ,IAAI,OAAO,kBAAkB,QAAQ,kBAAkB,KAAK;AAC1E,MAAI;AACJ,UAAQ,QAAQ,MAAM,KAAK,IAAI,OAAO,MAAM;AAC1C,QAAI,IAAI,MAAM,CAAC,EAAE,KAAK,CAAC;AAAA,EACzB;AACA,SAAO,MAAM,KAAK,GAAG;AACvB;;;AC7JO,SAAS,4BACd,MACA,YAAwB,CAAC,GACzB,kBACA,SAC2C;AAC3C,MAAI,CAAC,aAAa,UAAU,WAAW,KAAK,CAAC,KAAK,SAAS,IAAI,GAAG;AAChE,WAAO;AAAA,MACL;AAAA,MACA,KAAK;AAAA,QACH;AAAA,UACE,eAAe;AAAA,UACf,aAAa,KAAK;AAAA,UAClB,QAAQ;AAAA,UACR,UAAU;AAAA,UACV,QAAQ,KAAK;AAAA,QACf;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,cAAc,IAAI,IAAI,UAAU,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAC7D,QAAM,QAAQ,IAAI,OAAO,eAAe,QAAQ,eAAe,KAAK;AACpE,MAAI;AACJ,MAAI,YAAY;AAChB,MAAI,eAAe;AACnB,QAAM,MAA0B,CAAC;AAEjC,UAAQ,QAAQ,MAAM,KAAK,IAAI,OAAO,MAAM;AAC1C,UAAM,CAAC,WAAW,eAAe,IAAI;AACrC,UAAM,eAAe,gBAAgB,KAAK;AAC1C,UAAM,aAAa,MAAM;AAGzB,QAAI,aAAa,WAAW;AAC1B,YAAM,aAAa,KAAK,UAAU,WAAW,UAAU;AACvD,UAAI,KAAK;AAAA,QACP,eAAe,aAAa;AAAA,QAC5B,aAAa,aAAa,SAAS,WAAW;AAAA,QAC9C,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,QAAQ;AAAA,MACV,CAAC;AACD,sBAAgB;AAAA,IAClB;AAEA,QAAI,eAAe;AACnB,QAAI,aAAa;AAEjB,UAAM,WAAW,YAAY,IAAI,YAAY;AAC7C,QAAI,YAAY,gBAAgB,UAAU,gBAAgB,MAAM,QAAW;AAEzE,qBAAe,iBAAiB,WAAW,WAAW;AAAA,QACpD,UAAU;AAAA,QACV,UAAU,SAAS;AAAA,MACrB,CAAC;AACD,mBAAa;AAAA,IACf;AAEA,QAAI,YAAY;AACd,UAAI,KAAK;AAAA,QACP,eAAe,aAAa;AAAA,QAC5B,aAAa,aAAa,SAAS,aAAa;AAAA,QAChD,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,QAAQ,aAAa,UAAU;AAAA,QAC/B;AAAA,MACF,CAAC;AACD,sBAAgB;AAAA,IAClB,OAAO;AACL,UAAI,KAAK;AAAA,QACP,eAAe,aAAa;AAAA,QAC5B,aAAa,aAAa,SAAS,UAAU;AAAA,QAC7C,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,QAAQ,aAAa,UAAU;AAAA,MACjC,CAAC;AACD,sBAAgB;AAAA,IAClB;AAEA,gBAAY,aAAa,UAAU;AAAA,EACrC;AAGA,MAAI,YAAY,KAAK,QAAQ;AAC3B,UAAM,aAAa,KAAK,UAAU,SAAS;AAC3C,QAAI,KAAK;AAAA,MACP,eAAe,aAAa;AAAA,MAC5B,aAAa,aAAa,SAAS,WAAW;AAAA,MAC9C,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,QAAQ,KAAK;AAAA,IACf,CAAC;AACD,oBAAgB;AAAA,EAClB;AAEA,SAAO,EAAE,MAAM,cAAc,IAAI;AACnC;AAKO,SAAS,uBACd,gBACA,KACQ;AACR,WAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACnC,UAAM,MAAM,IAAI,CAAC;AACjB,UAAM,SAAS,MAAM,IAAI,SAAS;AAClC,UAAM,UAAU,SACZ,kBAAkB,IAAI,iBAAiB,kBAAkB,IAAI,cAC7D,kBAAkB,IAAI,iBAAiB,iBAAiB,IAAI;AAEhE,QAAI,SAAS;AACX,UAAI,IAAI,WAAW,OAAO;AACxB,eAAO,IAAI,YAAY,iBAAiB,IAAI;AAAA,MAC9C;AAGA,UAAI,mBAAmB,IAAI,aAAa;AACtC,eAAO,IAAI;AAAA,MACb;AACA,aAAO,IAAI;AAAA,IACb;AAAA,EACF;AACA,SAAO;AACT;AAKO,SAAS,uBACd,WACA,KACQ;AACR,WAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACnC,UAAM,MAAM,IAAI,CAAC;AACjB,UAAM,SAAS,MAAM,IAAI,SAAS;AAClC,UAAM,UAAU,SACZ,aAAa,IAAI,YAAY,aAAa,IAAI,SAC9C,aAAa,IAAI,YAAY,YAAY,IAAI;AAEjD,QAAI,SAAS;AACX,UAAI,IAAI,WAAW,OAAO;AACxB,eAAO,IAAI,iBAAiB,YAAY,IAAI;AAAA,MAC9C;AACA,UAAI,cAAc,IAAI,QAAQ;AAC5B,eAAO,IAAI;AAAA,MACb;AACA,aAAO,IAAI;AAAA,IACb;AAAA,EACF;AACA,SAAO;AACT;","names":[]}
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/editor/editor/packages/core/dist/grammar/index.cjs"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,yDAA8B;AAC9B;AACE;AACA;AACA;AACA;AACA;AACA;AACF,yDAA8B;AAC9B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,8uCAAC","file":"/home/runner/work/editor/editor/packages/core/dist/grammar/index.cjs"}
|