@ripple-ts/typescript-plugin 0.2.175 → 0.2.177

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/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "TypeScript plugin for Ripple",
4
4
  "license": "MIT",
5
5
  "author": "Dominic Gannaway",
6
- "version": "0.2.175",
6
+ "version": "0.2.177",
7
7
  "main": "src/index.js",
8
8
  "homepage": "https://ripplejs.com",
9
9
  "repository": {
@@ -23,7 +23,7 @@
23
23
  },
24
24
  "peerDependencies": {
25
25
  "typescript": "^5.9.2",
26
- "ripple": "0.2.175"
26
+ "ripple": "0.2.177"
27
27
  },
28
28
  "scripts": {
29
29
  "build": "tsdown",
package/src/language.js CHANGED
@@ -1,6 +1,7 @@
1
1
  /** @type {import('typescript')} */
2
- // @ts-expect-error - Type-only import from ESM module into CJS is fine
3
- /** @import { MappingsResult, CodeMapping } from '../../ripple/src/compiler/phases/3-transform/segments.js' */
2
+ // @ts-expect-error type-only import from ESM module into CJS is fine
3
+ /** @import { CodeMapping } from 'ripple/compiler' */
4
+ /** @typedef {Map<string, CodeMapping>} CachedMappings */
4
5
 
5
6
  const ts = require('typescript');
6
7
  const { forEachEmbeddedCode } = require('@volar/language-core');
@@ -14,11 +15,8 @@ const path = require('path');
14
15
  /** @typedef {string | { fsPath: string }} ScriptId */
15
16
  /** @typedef {import('@volar/typescript')} */
16
17
  /** @typedef {import('@volar/language-core').LanguagePlugin<ScriptId, VirtualCode>} RippleLanguagePlugin */
17
-
18
- /**
19
- * @typedef {object} RippleCompiler
20
- * @property {(code: string, fileName: string) => MappingsResult} compile_to_volar_mappings
21
- */
18
+ // @ts-expect-error type-only import from ESM module into CJS is fine
19
+ /** @typedef {import('ripple/compiler')} RippleCompiler */
22
20
 
23
21
  const DEBUG = process.env.RIPPLE_DEBUG === 'true';
24
22
 
@@ -98,6 +96,20 @@ function getRippleLanguagePlugin() {
98
96
  return undefined;
99
97
  },
100
98
 
99
+ /**
100
+ * @param {ScriptId} fileNameOrUri
101
+ * @param {VirtualCode} virtualCode
102
+ * @param {IScriptSnapshot} snapshot
103
+ */
104
+ updateVirtualCode(fileNameOrUri, virtualCode, snapshot) {
105
+ if (virtualCode instanceof RippleVirtualCode) {
106
+ log('Updating existing virtual code for:', virtualCode.fileName);
107
+ virtualCode.update(snapshot);
108
+ return virtualCode;
109
+ }
110
+ return undefined;
111
+ },
112
+
101
113
  typescript: {
102
114
  extraFileExtensions: [{ extension: 'ripple', isMixedContent: false, scriptKind: 7 }],
103
115
  /**
@@ -205,12 +217,16 @@ class RippleVirtualCode {
205
217
  errors = [];
206
218
  /** @type {IScriptSnapshot} */
207
219
  snapshot;
220
+ /** @type {IScriptSnapshot} */
221
+ sourceSnapshot;
208
222
  /** @type {string} */
209
223
  originalCode = '';
210
224
  /** @type {unknown[]} */
211
225
  diagnostics = [];
212
- /** @type {Map<string, any> | null} */
213
- _mappingIndex = null;
226
+ /** @type {CachedMappings | null} */
227
+ #mappingGenToSource = null;
228
+ /** @type {CachedMappings | null} */
229
+ #mappingSourceToGen = null;
214
230
 
215
231
  /**
216
232
  * @param {string} file_name
@@ -223,6 +239,7 @@ class RippleVirtualCode {
223
239
  this.fileName = file_name;
224
240
  this.ripple = ripple;
225
241
  this.snapshot = snapshot;
242
+ this.sourceSnapshot = snapshot;
226
243
  this.originalCode = snapshot.getText(0, snapshot.getLength());
227
244
 
228
245
  // Validate ripple compiler
@@ -241,28 +258,156 @@ class RippleVirtualCode {
241
258
  update(snapshot) {
242
259
  log('Updating virtual code for:', this.fileName);
243
260
 
244
- this._mappingIndex = null; // Invalidate cache when mappings change
245
- this.snapshot = snapshot;
246
- this.errors = [];
247
- /** @type {MappingsResult | undefined} */
261
+ const newCode = snapshot.getText(0, snapshot.getLength());
262
+ const changeRange = snapshot.getChangeRange(this.sourceSnapshot);
263
+ this.sourceSnapshot = snapshot;
264
+
265
+ // Only clear mapping index - don't update snapshot/originalCode yet
266
+ this.#mappingGenToSource = null;
267
+ this.#mappingSourceToGen = null;
268
+
269
+ /** @type {ReturnType<RippleCompiler['compile_to_volar_mappings']> | undefined} */
248
270
  let transpiled;
249
271
 
272
+ // Check if a single "." was typed using changeRange
273
+ let isDotTyped = false;
274
+ let dotPosition = -1;
275
+
276
+ log('changeRange:', JSON.stringify(changeRange));
277
+
278
+ if (changeRange) {
279
+ const changeStart = changeRange.span.start;
280
+ const changeEnd = changeStart + changeRange.span.length;
281
+ const newEnd = changeStart + changeRange.newLength;
282
+
283
+ // Get the old text (what was replaced) from originalCode
284
+ const oldText = this.originalCode.substring(changeStart, changeEnd);
285
+ // Get the new text (what replaced it) from newCode
286
+ const newText = newCode.substring(changeStart, newEnd);
287
+
288
+ log('Change details:');
289
+ log(' Position:', changeStart, '-', changeEnd, '(length:', changeRange.span.length, ')');
290
+ log(' Old text:', JSON.stringify(oldText));
291
+ log(' New text:', JSON.stringify(newText), '(length:', changeRange.newLength, ')');
292
+
293
+ // Check if a dot was added at the end of the new text
294
+ if (newText.endsWith('.')) {
295
+ // The dot is at position newEnd - 1
296
+ // We need to check the character BEFORE the dot (inside the new text)
297
+ const charBeforeDot = newEnd > 1 ? newCode[newEnd - 2] : '';
298
+ log(' Char before dot:', JSON.stringify(charBeforeDot));
299
+
300
+ if (/[a-zA-Z0-9_\)\]\}]/.test(charBeforeDot)) {
301
+ isDotTyped = true;
302
+ dotPosition = newEnd - 1; // Position of the dot
303
+ log('ChangeRange detected dot typed at position', dotPosition);
304
+ }
305
+ }
306
+ }
307
+
250
308
  try {
251
- log('Compiling Ripple code...');
252
- transpiled = this.ripple.compile_to_volar_mappings(this.originalCode, this.fileName);
253
- log('Compilation successful, generated code length:', transpiled?.code?.length || 0);
309
+ // If user typed a ".", use placeholder technique to get completions
310
+ if (isDotTyped && dotPosition >= 0) {
311
+ const charBeforeDot = newCode[dotPosition - 1];
312
+ const codeWithPlaceholder =
313
+ newCode.substring(0, dotPosition) + charBeforeDot + newCode.substring(dotPosition + 1);
314
+
315
+ log('Using placeholder technique for dot at position', dotPosition);
316
+ transpiled = this.ripple.compile_to_volar_mappings(codeWithPlaceholder, this.fileName);
317
+ log('Compilation with placeholder successful');
318
+
319
+ // Find where the placeholder ended up in generated code and replace with "."
320
+ if (transpiled && transpiled.code && transpiled.mappings.length > 0) {
321
+ let placeholderMapping = null;
322
+ for (const mapping of transpiled.mappings) {
323
+ const sourceStart = mapping.sourceOffsets[0];
324
+ const sourceEnd = sourceStart + mapping.lengths[0];
325
+
326
+ if (dotPosition >= sourceStart && dotPosition < sourceEnd) {
327
+ placeholderMapping = mapping;
328
+ break;
329
+ }
330
+ }
331
+
332
+ if (placeholderMapping) {
333
+ const offsetInMapping = dotPosition - placeholderMapping.sourceOffsets[0];
334
+ const placeholderPosInGenerated =
335
+ placeholderMapping.generatedOffsets[0] + offsetInMapping;
336
+
337
+ transpiled.code =
338
+ transpiled.code.substring(0, placeholderPosInGenerated) +
339
+ '.' +
340
+ transpiled.code.substring(placeholderPosInGenerated + 1);
341
+
342
+ log('Replaced placeholder at position', placeholderPosInGenerated, 'with dot');
343
+ }
344
+ }
345
+ this.errors = [];
346
+ } else {
347
+ // Normal compilation
348
+ log('Compiling Ripple code...');
349
+ transpiled = this.ripple.compile_to_volar_mappings(newCode, this.fileName, {
350
+ loose: true,
351
+ });
352
+ log('Compilation successful, generated code length:', transpiled?.code?.length || 0);
353
+ this.errors = [];
354
+ }
254
355
  } catch (error) {
255
356
  logError('Ripple compilation failed for', this.fileName, ':', error);
256
357
  this.errors.push(/** @type {Error & { pos?: number }} */ (error));
257
358
  }
258
359
 
259
360
  if (transpiled && transpiled.code) {
260
- // Segment-based approach - mappings are already in Volar format
361
+ // Successful compilation - update everything
362
+ this.originalCode = newCode;
261
363
  this.generatedCode = transpiled.code;
262
364
  this.mappings = transpiled.mappings ?? [];
263
- this.isErrorMode = false; // Normal TypeScript mode
365
+ this.isErrorMode = false;
366
+
367
+ const { cssMappings, cssSources } = transpiled;
368
+ if (cssMappings.length > 0) {
369
+ log('Creating', cssMappings.length, 'CSS embedded codes');
370
+
371
+ this.embeddedCodes = cssMappings.map((mapping, index) => {
372
+ const cssContent = cssSources[index];
373
+ log(
374
+ `CSS region ${index}: \
375
+ offset ${mapping.sourceOffsets[0]}-${mapping.sourceOffsets[0] + mapping.lengths[0]}, \
376
+ length ${mapping.lengths[0]}`,
377
+ );
378
+
379
+ return {
380
+ id: `style_${index}`,
381
+ languageId: 'css',
382
+ snapshot: {
383
+ getText: (start, end) => cssContent.substring(start, end),
384
+ getLength: () => mapping.lengths[0],
385
+ getChangeRange: () => undefined,
386
+ },
387
+ mappings: [mapping],
388
+ embeddedCodes: [],
389
+ };
390
+ });
391
+ } else {
392
+ this.embeddedCodes = [];
393
+ }
264
394
 
265
- log('Using transpiled code, mapping count:', this.mappings.length);
395
+ if (DEBUG) {
396
+ log('CSS embedded codes:', this.embeddedCodes.length);
397
+ log('Using transpiled code, mapping count:', this.mappings.length);
398
+ log('Original code length:', newCode.length);
399
+ log('Generated code length:', this.generatedCode.length);
400
+ log('Last 100 chars of original:', JSON.stringify(newCode.slice(-100)));
401
+ log('Last 200 chars of generated:', JSON.stringify(this.generatedCode.slice(-200)));
402
+ log('Last few mappings:');
403
+ const startIdx = Math.max(0, this.mappings.length - 5);
404
+ for (let i = startIdx; i < this.mappings.length; i++) {
405
+ const m = this.mappings[i];
406
+ log(
407
+ ` Mapping ${i}: source[${m.sourceOffsets[0]}:${m.sourceOffsets[0] + m.lengths[0]}] -> gen[${m.generatedOffsets[0]}:${m.generatedOffsets[0] + m.lengths[0]}], len=${m.lengths[0]}, completion=${m.data?.completion}`,
408
+ );
409
+ }
410
+ }
266
411
 
267
412
  this.snapshot = /** @type {IScriptSnapshot} */ ({
268
413
  getText: (start, end) => this.generatedCode.substring(start, end),
@@ -274,19 +419,19 @@ class RippleVirtualCode {
274
419
  // TypeScript diagnostics until the compilation error is fixed
275
420
  log('Compilation failed, only display where the compilation error occurred.');
276
421
 
277
- // Produce minimal valid TypeScript code to avoid cascading errors.
422
+ this.originalCode = newCode;
278
423
  this.generatedCode = 'export {};\n';
279
- this.isErrorMode = true; // Flag to indicate we're in diagnostic-only mode
424
+ this.isErrorMode = true;
280
425
 
281
426
  // Create 1:1 mappings for the entire content
282
427
  this.mappings = [
283
428
  {
284
429
  sourceOffsets: [this.errors[0]?.pos ?? 0],
285
430
  generatedOffsets: [0],
286
- lengths: [this.originalCode.length],
431
+ lengths: [newCode.length],
287
432
  data: {
288
433
  verification: true,
289
- customData: { generatedLengths: [this.originalCode.length] },
434
+ customData: { generatedLengths: [newCode.length] },
290
435
  },
291
436
  },
292
437
  ];
@@ -299,6 +444,33 @@ class RippleVirtualCode {
299
444
  }
300
445
  }
301
446
 
447
+ #buildMappingCache() {
448
+ if (this.#mappingGenToSource || this.#mappingSourceToGen) {
449
+ return;
450
+ }
451
+
452
+ this.#mappingGenToSource = new Map();
453
+ this.#mappingSourceToGen = new Map();
454
+
455
+ var mapping, genStart, genLength, genEnd, genKey;
456
+ var sourceStart, sourceLength, sourceEnd, sourceKey;
457
+ for (var i = 0; i < this.mappings.length; i++) {
458
+ mapping = this.mappings[i];
459
+
460
+ genStart = mapping.generatedOffsets[0];
461
+ genLength = mapping.data.customData.generatedLengths[0];
462
+ genEnd = genStart + genLength;
463
+ genKey = `${genStart}-${genEnd}`;
464
+ this.#mappingGenToSource.set(genKey, mapping);
465
+
466
+ sourceStart = mapping.sourceOffsets[0];
467
+ sourceLength = mapping.lengths[0];
468
+ sourceEnd = sourceStart + sourceLength;
469
+ sourceKey = `${sourceStart}-${sourceEnd}`;
470
+ this.#mappingSourceToGen.set(sourceKey, mapping);
471
+ }
472
+ }
473
+
302
474
  /**
303
475
  * Find mapping by generated range
304
476
  * @param {number} start - The start offset of the range
@@ -306,21 +478,19 @@ class RippleVirtualCode {
306
478
  * @returns {CodeMapping | null} The mapping for this range, or null if not found
307
479
  */
308
480
  findMappingByGeneratedRange(start, end) {
309
- if (!this._mappingIndex) {
310
- this._mappingIndex = new Map();
311
-
312
- for (const mapping of this.mappings) {
313
- const genStart = mapping.generatedOffsets[0];
314
- // Use generatedLengths from customData if available, otherwise fall back to lengths
315
- const genLength = mapping.data.customData.generatedLengths[0];
316
- const genEnd = genStart + genLength;
317
- const key = `${genStart}-${genEnd}`;
318
- this._mappingIndex.set(key, mapping);
319
- }
320
- }
481
+ this.#buildMappingCache();
482
+ return /** @type {CachedMappings} */ (this.#mappingGenToSource).get(`${start}-${end}`) ?? null;
483
+ }
321
484
 
322
- const key = `${start}-${end}`;
323
- return this._mappingIndex.get(key) ?? null;
485
+ /**
486
+ * Find mapping by source range
487
+ * @param {number} start - The start offset of the range
488
+ * @param {number} end - The end offset of the range
489
+ * @returns {CodeMapping | null} The mapping for this range, or null if not found
490
+ */
491
+ findMappingBySourceRange(start, end) {
492
+ this.#buildMappingCache();
493
+ return /** @type {CachedMappings} */ (this.#mappingSourceToGen).get(`${start}-${end}`) ?? null;
324
494
  }
325
495
  }
326
496
 
package/dist/index.js DELETED
@@ -1,9 +0,0 @@
1
- var e=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),t=e((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.binarySearch=t;function t(e,t){let n=0,r=e.length-1,i;for(;n<=r;){let a=Math.floor((n+r)/2),o=e[a];if(o<t)n=a+1;else if(o>t)r=a-1;else{n=a,r=a,i=a;break}}return{low:Math.max(Math.min(n,r,e.length-1),0),high:Math.min(Math.max(n,r,0),e.length-1),match:i}}})),n=e((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.translateOffset=n;let t=!1;function n(e,n,r,i,a=i){if(!n.every((e,t)=>t===0||n[t-1]<=e)){for(let t=0;t<n.length;t++){let o=n[t],s=i[t];if(e>=o&&e<=o+s){let n=a[t];return r[t]+Math.min(e-o,n)}}t||(t=!0,console.warn(`fromOffsets should be sorted in ascending order`))}let o=0,s=n.length-1;for(;o<=s;){let t=Math.floor((o+s)/2),c=n[t],l=i[t];if(e>=c&&e<=c+l){let n=a[t];return r[t]+Math.min(e-c,n)}else e<c?s=t-1:o=t+1}}})),r=e((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.SourceMap=void 0;let r=t(),i=n();e.SourceMap=class{constructor(e){this.mappings=e}toSourceRange(e,t,n,r){return this.findMatchingStartEnd(e,t,n,`generatedOffsets`,r)}toGeneratedRange(e,t,n,r){return this.findMatchingStartEnd(e,t,n,`sourceOffsets`,r)}toSourceLocation(e,t){return this.findMatchingOffsets(e,`generatedOffsets`,t)}toGeneratedLocation(e,t){return this.findMatchingOffsets(e,`sourceOffsets`,t)}*findMatchingOffsets(e,t,n){let o=this.getMemoBasedOnRange(t);if(o.offsets.length===0)return;let{low:s,high:c}=(0,r.binarySearch)(o.offsets,e),l=new Set,u=t==`sourceOffsets`?`generatedOffsets`:`sourceOffsets`;for(let r=s;r<=c;r++)for(let s of o.mappings[r]){if(l.has(s)||(l.add(s),n&&!n(s.data)))continue;let r=(0,i.translateOffset)(e,s[t],s[u],a(s,t),a(s,u));r!==void 0&&(yield[r,s])}}*findMatchingStartEnd(e,t,n,r,o){let s=r==`sourceOffsets`?`generatedOffsets`:`sourceOffsets`,c=[],l=!1;for(let[n,u]of this.findMatchingOffsets(e,r)){if(o&&!o(u.data))continue;c.push([n,u]);let e=(0,i.translateOffset)(t,u[r],u[s],a(u,r),a(u,s));e!==void 0&&(l=!0,yield[n,e,u,u])}if(!l&&n){for(let[e,n]of c)for(let[i,a]of this.findMatchingOffsets(t,r))if(!(o&&!o(a.data)||i<e)){yield[e,i,n,a];break}}}getMemoBasedOnRange(e){return e===`sourceOffsets`?this.sourceCodeOffsetsMemo??=this.createMemo(`sourceOffsets`):this.generatedCodeOffsetsMemo??=this.createMemo(`generatedOffsets`)}createMemo(e){let t=new Set;for(let n of this.mappings)for(let r=0;r<n[e].length;r++)t.add(n[e][r]),t.add(n[e][r]+a(n,e)[r]);let n=[...t].sort((e,t)=>e-t),i=n.map(()=>new Set);for(let t of this.mappings)for(let o=0;o<t[e].length;o++){let s=(0,r.binarySearch)(n,t[e][o]).match,c=(0,r.binarySearch)(n,t[e][o]+a(t,e)[o]).match;for(let e=s;e<=c;e++)i[e].add(t)}return{offsets:n,mappings:i}}};function a(e,t){return t==`sourceOffsets`?e.lengths:e.generatedLengths??e.lengths}})),i=e((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),i=e&&e.__exportStar||function(e,n){for(var r in e)r!==`default`&&!Object.prototype.hasOwnProperty.call(n,r)&&t(n,e,r)};Object.defineProperty(e,`__esModule`,{value:!0}),i(r(),e),i(n(),e)})),a=e((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.isHoverEnabled=t,e.isInlayHintsEnabled=n,e.isCodeLensEnabled=r,e.isMonikerEnabled=i,e.isInlineValueEnabled=a,e.isSemanticTokensEnabled=o,e.isCallHierarchyEnabled=s,e.isTypeHierarchyEnabled=c,e.isRenameEnabled=l,e.isDefinitionEnabled=u,e.isTypeDefinitionEnabled=d,e.isReferencesEnabled=f,e.isImplementationEnabled=p,e.isHighlightEnabled=m,e.isSymbolsEnabled=h,e.isFoldingRangesEnabled=g,e.isSelectionRangesEnabled=_,e.isLinkedEditingEnabled=v,e.isColorEnabled=y,e.isDocumentLinkEnabled=b,e.isDiagnosticsEnabled=x,e.isCodeActionsEnabled=S,e.isFormattingEnabled=C,e.isCompletionEnabled=w,e.isAutoInsertEnabled=T,e.isSignatureHelpEnabled=E,e.shouldReportDiagnostics=D,e.resolveRenameNewName=O,e.resolveRenameEditText=k,e.findOverlapCodeRange=A;function t(e){return!!e.semantic}function n(e){return!!e.semantic}function r(e){return!!e.semantic}function i(e){return!!e.semantic}function a(e){return!!e.semantic}function o(e){return typeof e.semantic==`object`?e.semantic.shouldHighlight?.()??!0:!!e.semantic}function s(e){return!!e.navigation}function c(e){return!!e.navigation}function l(e){return typeof e.navigation==`object`?e.navigation.shouldRename?.()??!0:!!e.navigation}function u(e){return!!e.navigation}function d(e){return!!e.navigation}function f(e){return!!e.navigation}function p(e){return!!e.navigation}function m(e){return typeof e.navigation==`object`?e.navigation.shouldHighlight?.()??!0:!!e.navigation}function h(e){return!!e.structure}function g(e){return!!e.structure}function _(e){return!!e.structure}function v(e){return!!e.structure}function y(e){return!!e.structure}function b(e){return!!e.structure}function x(e){return!!e.verification}function S(e){return!!e.verification}function C(e){return!!e.format}function w(e){return!!e.completion}function T(e){return!!e.completion}function E(e){return!!e.completion}function D(e,t,n){return typeof e.verification==`object`?e.verification.shouldReport?.(t,n)??!0:!!e.verification}function O(e,t){return typeof t.navigation==`object`?t.navigation.resolveRenameNewName?.(e)??e:e}function k(e,t){return typeof t.navigation==`object`?t.navigation.resolveRenameEditText?.(e)??e:e}function A(e,t,n,r){let i,a;for(let[t,a]of n.toGeneratedLocation(e))if(r(a.data)){i=t;break}for(let[e,i]of n.toGeneratedLocation(t))if(r(i.data)){a=e;break}if(i===void 0||a===void 0){for(let o of n.mappings)if(r(o.data)){let n=o.sourceOffsets[0],r=j(e,t,n,o.sourceOffsets[o.sourceOffsets.length-1]+o.lengths[o.lengths.length-1]);if(r){let e=r.start-n+o.generatedOffsets[0],t=(o.generatedLengths??o.lengths)[o.generatedOffsets.length-1],s=Math.min(r.end-o.sourceOffsets[o.sourceOffsets.length-1],t),c=o.generatedOffsets[o.generatedOffsets.length-1]+s;i=i===void 0?e:Math.min(i,e),a=a===void 0?c:Math.max(a,c)}}}if(i!==void 0&&a!==void 0)return{start:i,end:a}}function j(e,t,n,r){let i=Math.max(e,n),a=Math.min(t,r);if(!(i>a))return{start:i,end:a}}})),o=e((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.LinkedCodeMap=void 0;let t=i();e.LinkedCodeMap=class extends t.SourceMap{*getLinkedOffsets(e){for(let t of this.toGeneratedLocation(e))yield t[0];for(let t of this.toSourceLocation(e))yield t[0]}}})),s=e((e=>{Object.defineProperty(e,`__esModule`,{value:!0})})),c=e((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.FileMap=void 0,e.FileMap=class extends Map{constructor(e){super(),this.caseSensitive=e,this.originalFileNames=new Map}keys(){return this.originalFileNames.values()}get(e){return super.get(this.normalizeId(e))}has(e){return super.has(this.normalizeId(e))}set(e,t){return this.originalFileNames.set(this.normalizeId(e),e),super.set(this.normalizeId(e),t)}delete(e){return this.originalFileNames.delete(this.normalizeId(e)),super.delete(this.normalizeId(e))}clear(){return this.originalFileNames.clear(),super.clear()}normalizeId(e){return this.caseSensitive?e:e.toLowerCase()}}})),l=e((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),n=e&&e.__exportStar||function(e,n){for(var r in e)r!==`default`&&!Object.prototype.hasOwnProperty.call(n,r)&&t(n,e,r)};Object.defineProperty(e,`__esModule`,{value:!0}),e.defaultMapperFactory=e.SourceMap=void 0,e.createLanguage=d,e.forEachEmbeddedCode=f;var r=i();Object.defineProperty(e,`SourceMap`,{enumerable:!0,get:function(){return r.SourceMap}}),n(a(),e),n(o(),e),n(s(),e),n(c(),e);let l=i(),u=o();e.defaultMapperFactory=e=>new l.SourceMap(e);function d(t,n,r,i){let a=new WeakMap,o=new WeakMap,s=new WeakMap,c={mapperFactory:e.defaultMapperFactory,plugins:t,scripts:{fromVirtualCode(e){return a.get(e)},get(e,t=!0,i=!1){r(e,t,i);let a=n.get(e);return a?.isAssociationDirty&&this.set(e,a.snapshot,a.languageId),n.get(e)},set(e,r,i,o=t){if(!i){for(let n of t)if(i=n.getLanguageId?.(e),i)break}if(!i){console.warn(`languageId not found for ${e}`);return}let s=!1;for(let n of t)if(n.isAssociatedFileOnly?.(e,i)){s=!0;break}if(n.has(e)){let t=n.get(e);if(t.languageId!==i||t.associatedOnly!==s)return this.delete(e),l(t),this.set(e,r,i);if(s)t.snapshot!==r&&(t.snapshot=r,l(t));else if(t.isAssociationDirty||t.snapshot!==r){t.snapshot!==r&&(t.snapshot=r,l(t));let n=d(t);if(t.generated){let{updateVirtualCode:o,createVirtualCode:s}=t.generated.languagePlugin,c=o?o(e,t.generated.root,r,n):s?.(e,i,r,n);if(c){t.generated.root=c,t.generated.embeddedCodes.clear();for(let e of f(t.generated.root))a.set(e,t),t.generated.embeddedCodes.set(e.id,e);return t}else{this.delete(e);return}}}else return t}else{let t={id:e,languageId:i,snapshot:r,associatedIds:new Set,targetIds:new Set,associatedOnly:s};if(n.set(e,t),s)return t;for(let n of o){let o=n.createVirtualCode?.(e,i,r,d(t));if(o){t.generated={root:o,languagePlugin:n,embeddedCodes:new Map};for(let e of f(o))a.set(e,t),t.generated.embeddedCodes.set(e.id,e);break}}return t}},delete(e){let t=n.get(e);t&&(t.generated?.languagePlugin.disposeVirtualCode?.(e,t.generated.root),n.delete(e),l(t))}},maps:{get(e,t){let n=o.get(e.snapshot);if(n||o.set(e.snapshot,n=new WeakMap),!n.has(t.snapshot)){let r=e.associatedScriptMappings?.get(t.id)??e.mappings;n.set(t.snapshot,c.mapperFactory(r))}return n.get(t.snapshot)},*forEach(e){let t=a.get(e);if(yield[t,this.get(e,t)],e.associatedScriptMappings)for(let[t]of e.associatedScriptMappings){let r=n.get(t);r&&(yield[r,this.get(e,r)])}}},linkedCodeMaps:{get(e){let t=a.get(e),n=s.get(e.snapshot);return n?.[0]!==t.snapshot&&s.set(e.snapshot,n=[t.snapshot,e.linkedCodeMappings?new u.LinkedCodeMap(e.linkedCodeMappings):void 0]),n[1]}}};return c;function l(e){e.targetIds.forEach(e=>{let t=n.get(e);t&&(t.isAssociationDirty=!0,i?.(t.id))})}function d(e){for(let t of e.associatedIds)n.get(t)?.targetIds.delete(e.id);return e.associatedIds.clear(),e.isAssociationDirty=!1,{getAssociatedScript(t){r(t,!0,!0);let i=n.get(t);return i&&(i.targetIds.add(e.id),e.associatedIds.add(i.id)),i}}}}function*f(e){if(yield e,e.embeddedCodes)for(let t of e.embeddedCodes)yield*f(t)}})),u=e((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.dedupeDocumentSpans=t;function t(e){return n(e,e=>[e.fileName,e.textSpan.start,e.textSpan.length].join(`:`))}function n(e,t){let n=new Map;for(let r of e.reverse())n.set(t(r),r);return[...n.values()]}})),d=e((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.getServiceScript=t;function t(e,t){let n=e.scripts.get(t);if(n?.targetIds.size)for(let t of n.targetIds){let r=e.scripts.get(t);if(r?.generated){let e=r.generated.languagePlugin.typescript?.getServiceScript(r.generated.root);if(e)return[e,r,n]}}if(n?.associatedOnly)return[void 0,n,n];if(n?.generated){let e=n.generated.languagePlugin.typescript?.getServiceScript(n.generated.root);if(e)return[e,n,n]}return[void 0,void 0,void 0]}})),f=e((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.transformCallHierarchyItem=a,e.transformDiagnostic=o,e.fillSourceFileText=s,e.transformFileTextChanges=c,e.transformDocumentSpan=u,e.transformSpan=f,e.transformTextChange=p,e.transformTextSpan=m,e.toSourceOffset=h,e.toSourceRanges=g,e.toSourceOffsets=_,e.toGeneratedRange=v,e.toGeneratedRanges=y,e.toGeneratedOffset=b,e.toGeneratedOffsets=x,e.getMappingOffset=S;let t=l(),n=d(),r=new WeakMap,i=new WeakSet;function a(e,t,n,r){let i=f(e,t.file,t.span,n,r),a=f(e,t.file,t.selectionSpan,n,r);return{...t,file:i?.fileName??t.file,span:i?.textSpan??{start:0,length:0},selectionSpan:a?.textSpan??{start:0,length:0}}}function o(e,i,a,c){if(!r.has(i)){r.set(i,void 0);let{relatedInformation:l}=i;if(l&&(i.relatedInformation=l.map(t=>o(e,t,a,c)).filter(e=>!!e)),i.file!==void 0&&i.start!==void 0&&i.length!==void 0){let[o]=(0,n.getServiceScript)(e,i.file.fileName);if(o){let[n,l]=m(void 0,e,o,{start:i.start,length:i.length},!0,e=>(0,t.shouldReportDiagnostics)(e,String(i.source),String(i.code)))??[],u=n?i.file.fileName===n?i.file:a?.getSourceFile(n):void 0;l&&u&&(c&&s(e,i.file),r.set(i,{...i,file:u,start:l.start,length:l.length}))}else r.set(i,i)}else r.set(i,i)}return r.get(i)}function s(e,t){if(i.has(t))return;i.add(t);let[r]=(0,n.getServiceScript)(e,t.fileName);if(r&&!r.preventLeadingOffset){let n=e.scripts.fromVirtualCode(r.code);t.text=n.snapshot.getText(0,n.snapshot.getLength())+t.text.substring(n.snapshot.getLength())}}function c(e,t,r,i){let a={},o=new Set;for(let s of t){let[t,c]=(0,n.getServiceScript)(e,s.fileName);if(c)s.textChanges.forEach(t=>{let{fileName:n,textSpan:o}=f(e,s.fileName,t.span,r,i)??{};n&&o&&(a[n]??(a[n]=[])).push({...t,span:o})});else{let e=a[s.fileName]??(a[s.fileName]=[]);s.textChanges.forEach(t=>{e.push(t)}),s.isNewFile&&o.add(s.fileName)}}let s=[];for(let e in a)s.push({fileName:e,isNewFile:o.has(e),textChanges:a[e]});return s}function u(e,t,n,r,i){let a=f(e,t.fileName,t.textSpan,n,r);if(!a&&i&&(a={fileName:t.fileName,textSpan:{start:0,length:0}}),!a)return;let o=f(e,t.fileName,t.contextSpan,n,r),s=f(e,t.originalFileName,t.originalTextSpan,n,r),c=f(e,t.originalFileName,t.originalContextSpan,n,r);return{...t,fileName:a.fileName,textSpan:a.textSpan,contextSpan:o?.textSpan,originalFileName:s?.fileName,originalTextSpan:s?.textSpan,originalContextSpan:c?.textSpan}}function f(e,t,r,i,a){if(!t||!r)return;let[o]=(0,n.getServiceScript)(e,t);if(o){let[t,n]=m(void 0,e,o,r,i,a)??[];if(n&&t)return{fileName:t,textSpan:n}}else return{fileName:t,textSpan:r}}function p(e,t,n,r,i,a){let[o,s]=m(e,t,n,r.span,i,a)??[];if(s&&o)return[o,{newText:r.newText,span:s}]}function m(e,t,n,r,i,a){let o=r.start,s=r.start+r.length;for(let[r,c,l]of g(e,t,n,o,s,i,a))return[r,{start:c,length:l-c}]}function h(e,t,n,r,i){for(let a of _(e,t,n,r,i))return a}function*g(e,t,n,r,i,a,o){if(e){let s=t.maps.get(n.code,e);for(let[c,l]of s.toSourceRange(r-S(t,n),i-S(t,n),a,o))yield[e.id,c,l]}else for(let[e,s]of t.maps.forEach(n.code))for(let[c,l]of s.toSourceRange(r-S(t,n),i-S(t,n),a,o))yield[e.id,c,l]}function*_(e,t,n,r,i){if(e){let a=t.maps.get(n.code,e);for(let[o,s]of a.toSourceLocation(r-S(t,n)))i(s.data)&&(yield[e.id,o])}else for(let[e,a]of t.maps.forEach(n.code))for(let[o,s]of a.toSourceLocation(r-S(t,n)))i(s.data)&&(yield[e.id,o])}function v(e,t,n,r,i,a){for(let o of y(e,t,n,r,i,a))return o}function*y(e,t,n,r,i,a){let o=e.maps.get(t.code,n);for(let[n,s]of o.toGeneratedRange(r,i,!0,a))yield[n+S(e,t),s+S(e,t)]}function b(e,t,n,r,i){for(let[a]of x(e,t,n,r,i))return a}function*x(e,t,n,r,i){let a=e.maps.get(t.code,n);for(let[n,o]of a.toGeneratedLocation(r))i(o.data)&&(yield[n+S(e,t),o])}function S(e,t){return t.preventLeadingOffset?0:e.scripts.fromVirtualCode(t.code).snapshot.getLength()}})),p=e((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createProxyLanguageService=o;let t=l(),n=u(),r=f(),i=d(),a=/\\/g;function o(e){let t=new Map,n;return{initialize(t){n=(n,r)=>{switch(r){case`getNavigationTree`:return s(t,n[r]);case`getOutliningSpans`:return c(t,n[r]);case`getFormattingEditsForDocument`:return p(t,n[r]);case`getFormattingEditsForRange`:return m(t,n[r]);case`getFormattingEditsAfterKeystroke`:return h(t,n[r]);case`getEditsForFileRename`:return g(t,n[r]);case`getLinkedEditingRangeAtPosition`:return _(t,n[r]);case`prepareCallHierarchy`:return v(t,n[r]);case`provideCallHierarchyIncomingCalls`:return y(t,n[r]);case`provideCallHierarchyOutgoingCalls`:return b(t,n[r]);case`organizeImports`:return x(t,n[r]);case`getQuickInfoAtPosition`:return S(t,n[r]);case`getSignatureHelpItems`:return C(t,n[r]);case`getDocumentHighlights`:return w(t,n[r]);case`getApplicableRefactors`:return T(t,n[r]);case`getEditsForRefactor`:return E(t,n[r]);case`getCombinedCodeFix`:return D(t,n[r]);case`getRenameInfo`:return O(t,n[r]);case`getCodeFixesAtPosition`:return k(t,n[r]);case`getEncodedSemanticClassifications`:return A(t,n[r]);case`getSyntacticDiagnostics`:return j(t,e,n[r]);case`getSemanticDiagnostics`:return M(t,e,n[r]);case`getSuggestionDiagnostics`:return N(t,e,n[r]);case`getDefinitionAndBoundSpan`:return P(t,n[r]);case`findReferences`:return F(t,n[r]);case`getDefinitionAtPosition`:return I(t,n[r]);case`getTypeDefinitionAtPosition`:return L(t,n[r]);case`getImplementationAtPosition`:return R(t,n[r]);case`findRenameLocations`:return z(t,n[r]);case`getReferencesAtPosition`:return B(t,n[r]);case`getCompletionsAtPosition`:return V(t,n[r]);case`getCompletionEntryDetails`:return H(t,n[r]);case`provideInlayHints`:return U(t,n[r]);case`getFileReferences`:return W(t,n[r]);case`getNavigateToItems`:return G(t,n[r])}}},proxy:new Proxy(e,{get(e,r,i){if(n){t.has(r)||t.set(r,n(e,r));let i=t.get(r);if(i)return i}return Reflect.get(e,r,i)},set(e,t,n,r){return Reflect.set(e,t,n,r)}})}}function s(e,t){return n=>{let r=n.replace(a,`/`),[o,s]=(0,i.getServiceScript)(e,r);if(o||s?.associatedOnly){let e=t(s.id);return e.childItems=void 0,e}else return t(r)}}function c(e,t){return n=>{let r=n.replace(a,`/`),[o,s]=(0,i.getServiceScript)(e,r);return o||s?.associatedOnly?[]:t(r)}}function p(e,n){return(o,s)=>{let c=o.replace(a,`/`),[l,u,d]=(0,i.getServiceScript)(e,c);return u?.associatedOnly?[]:l?e.maps.get(l.code,u).mappings.some(e=>(0,t.isFormattingEnabled)(e.data))?n(u.id,s).map(n=>(0,r.transformTextChange)(d,e,l,n,!1,t.isFormattingEnabled)?.[1]).filter(e=>!!e):[]:n(c,s)}}function m(e,n){return(o,s,c,l)=>{let u=o.replace(a,`/`),[d,f,p]=(0,i.getServiceScript)(e,u);if(f?.associatedOnly)return[];if(d){let i=(0,r.toGeneratedRange)(e,d,p,s,c,t.isFormattingEnabled);return i===void 0?[]:n(f.id,i[0],i[1],l).map(n=>(0,r.transformTextChange)(p,e,d,n,!1,t.isFormattingEnabled)?.[1]).filter(e=>!!e)}else return n(u,s,c,l)}}function h(e,n){return(o,s,c,l)=>{let u=o.replace(a,`/`),[d,f,p]=(0,i.getServiceScript)(e,u);if(f?.associatedOnly)return[];if(d){let i=(0,r.toGeneratedOffset)(e,d,p,s,t.isFormattingEnabled);return i===void 0?[]:n(f.id,i,c,l).map(n=>(0,r.transformTextChange)(p,e,d,n,!1,t.isFormattingEnabled)?.[1]).filter(e=>!!e)}else return n(u,s,c,l)}}function g(e,n){return(i,a,o,s)=>{let c=n(i,a,o,s);return(0,r.transformFileTextChanges)(e,c,!1,t.isRenameEnabled)}}function _(e,n){return(o,s)=>{let c=o.replace(a,`/`),[l,u,d]=(0,i.getServiceScript)(e,c);if(!u?.associatedOnly)if(l){let i=(0,r.toGeneratedOffset)(e,l,d,s,t.isLinkedEditingEnabled);if(i!==void 0){let a=n(u.id,i);if(a)return{ranges:a.ranges.map(n=>(0,r.transformTextSpan)(d,e,l,n,!1,t.isLinkedEditingEnabled)?.[1]).filter(e=>!!e),wordPattern:a.wordPattern}}}else return n(c,s)}}function v(e,n){return(o,s)=>{let c=o.replace(a,`/`),[l,u,d]=(0,i.getServiceScript)(e,c);if(!u?.associatedOnly)if(l){let i=(0,r.toGeneratedOffset)(e,l,d,s,t.isCallHierarchyEnabled);if(i!==void 0){let a=n(u.id,i);if(Array.isArray(a))return a.map(n=>(0,r.transformCallHierarchyItem)(e,n,!0,t.isCallHierarchyEnabled));if(a)return(0,r.transformCallHierarchyItem)(e,a,!0,t.isCallHierarchyEnabled)}}else return n(c,s)}}function y(e,n){return(o,s)=>{let c=[],l=o.replace(a,`/`),[u,d,f]=(0,i.getServiceScript)(e,l);if(d?.associatedOnly)return[];if(u){let i=(0,r.toGeneratedOffset)(e,u,f,s,t.isCallHierarchyEnabled);i!==void 0&&(c=n(d.id,i))}else c=n(l,s);return c.map(n=>({from:(0,r.transformCallHierarchyItem)(e,n.from,!0,t.isCallHierarchyEnabled),fromSpans:n.fromSpans.map(i=>(0,r.transformSpan)(e,n.from.file,i,!0,t.isCallHierarchyEnabled)?.textSpan).filter(e=>!!e)}))}}function b(e,n){return(o,s)=>{let c=[],l=o.replace(a,`/`),[u,d,f]=(0,i.getServiceScript)(e,l);if(d?.associatedOnly)return[];if(u){let i=(0,r.toGeneratedOffset)(e,u,f,s,t.isCallHierarchyEnabled);i!==void 0&&(c=n(d.id,i))}else c=n(l,s);return c.map(n=>({to:(0,r.transformCallHierarchyItem)(e,n.to,!0,t.isCallHierarchyEnabled),fromSpans:n.fromSpans.map(n=>u?(0,r.transformTextSpan)(f,e,u,n,!0,t.isCallHierarchyEnabled)?.[1]:n).filter(e=>!!e)}))}}function x(e,n){return(i,a,o)=>{let s=n(i,a,o);return(0,r.transformFileTextChanges)(e,s,!1,t.isCodeActionsEnabled)}}function S(e,n){return(o,s,...c)=>{let l=o.replace(a,`/`),[u,d,f]=(0,i.getServiceScript)(e,l);if(!d?.associatedOnly)if(u){let i=[];for(let[a]of(0,r.toGeneratedOffsets)(e,u,f,s,t.isHoverEnabled)){let o=n(d.id,a,...c);if(o){let n=(0,r.transformTextSpan)(f,e,u,o.textSpan,!0,t.isHoverEnabled)?.[1];n&&i.push({...o,textSpan:n})}}if(i.length===1)return i[0];if(i.length>=2){let e={...i[0]};e.displayParts=e.displayParts?.slice(),e.documentation=e.documentation?.slice(),e.tags=e.tags?.slice();let t=new Set([q(i[0].displayParts)]),n=new Set([q(i[0].documentation)]),r=new Set;for(let e of i[0].tags??[])r.add(e.name+`__volar__`+q(e.text));for(let a=1;a<i.length;a++){let{displayParts:o,documentation:s,tags:c}=i[a];o?.length&&!t.has(q(o))&&(t.add(q(o)),e.displayParts??=[],e.displayParts.push({...o[0],text:`
2
-
3
- `+o[0].text}),e.displayParts.push(...o.slice(1))),s?.length&&!n.has(q(s))&&(n.add(q(s)),e.documentation??=[],e.documentation.push({...s[0],text:`
4
-
5
- `+s[0].text}),e.documentation.push(...s.slice(1)));for(let t of c??[])r.has(t.name+`__volar__`+q(t.text))||(r.add(t.name+`__volar__`+q(t.text)),e.tags??=[],e.tags.push(t))}return e}}else return n(l,s,...c)}}function C(e,n){return(o,s,c)=>{let l=o.replace(a,`/`),[u,d,f]=(0,i.getServiceScript)(e,l);if(!d?.associatedOnly)if(u){let i=(0,r.toGeneratedOffset)(e,u,f,s,t.isSignatureHelpEnabled);if(i!==void 0){let a=n(d.id,i,c);if(a){let n=(0,r.transformTextSpan)(f,e,u,a.applicableSpan,!0,t.isSignatureHelpEnabled)?.[1];if(n)return{...a,applicableSpan:n}}}}else return n(l,s,c)}}function w(e,n){return(i,o,s)=>K(e,i.replace(a,`/`),o,t.isHighlightEnabled,(e,t)=>n(e,t,s),function*(e){for(let t of e)for(let e of t.highlightSpans)yield[e.fileName??t.fileName,e.textSpan.start]}).flat().map(n=>({...n,highlightSpans:n.highlightSpans.map(i=>{let{textSpan:a}=(0,r.transformSpan)(e,i.fileName??n.fileName,i.textSpan,!1,t.isHighlightEnabled)??{};if(a)return{...i,contextSpan:(0,r.transformSpan)(e,i.fileName??n.fileName,i.contextSpan,!1,t.isHighlightEnabled)?.textSpan,textSpan:a}}).filter(e=>!!e)}))}function T(e,n){return(o,s,c,l,u,d)=>{let f=o.replace(a,`/`),[p,m,h]=(0,i.getServiceScript)(e,f);if(m?.associatedOnly)return[];if(p){if(typeof s==`number`){let i=(0,r.toGeneratedOffset)(e,p,h,s,t.isCodeActionsEnabled);if(i!==void 0)return n(m.id,i,c,l,u,d)}else for(let[i,a]of(0,r.toGeneratedRanges)(e,p,h,s.pos,s.end,t.isCodeActionsEnabled))return n(m.id,{pos:i,end:a},c,l,u,d);return[]}else return n(f,s,c,l,u,d)}}function E(e,n){return(o,s,c,l,u,d,f)=>{let p,m=o.replace(a,`/`),[h,g,_]=(0,i.getServiceScript)(e,m);if(!g?.associatedOnly){if(h)if(typeof c==`number`){let i=(0,r.toGeneratedOffset)(e,h,_,c,t.isCodeActionsEnabled);i!==void 0&&(p=n(g.id,s,i,l,u,d,f))}else for(let[i,a]of(0,r.toGeneratedRanges)(e,h,_,c.pos,c.end,t.isCodeActionsEnabled))p=n(g.id,s,{pos:i,end:a},l,u,d,f);else p=n(m,s,c,l,u,d,f);if(p)return p.edits=(0,r.transformFileTextChanges)(e,p.edits,!1,t.isCodeActionsEnabled),p}}}function D(e,n){return(...i)=>{let a=n(...i);return a.changes=(0,r.transformFileTextChanges)(e,a.changes,!1,t.isCodeActionsEnabled),a}}function O(e,n){return(o,s,c)=>{let l=o.replace(a,`/`),[u,d,f]=(0,i.getServiceScript)(e,l);if(d?.associatedOnly)return{canRename:!1,localizedErrorMessage:`Cannot rename`};if(u){let i;for(let[a]of(0,r.toGeneratedOffsets)(e,u,f,s,t.isRenameEnabled)){let o=n(d.id,a,c);if(o.canRename){let n=(0,r.transformTextSpan)(f,e,u,o.triggerSpan,!1,t.isRenameEnabled)?.[1];if(n)return o.triggerSpan=n,o}else i=o}return i||{canRename:!1,localizedErrorMessage:`Failed to get rename locations`}}else return n(l,s,c)}}function k(e,n){return(o,s,c,l,u,d)=>{let f=[],p=o.replace(a,`/`),[m,h,g]=(0,i.getServiceScript)(e,p);if(h?.associatedOnly)return[];if(m){let i=(0,r.toGeneratedRange)(e,m,g,s,c,t.isCodeActionsEnabled);i!==void 0&&(f=n(h.id,i[0],i[1],l,u,d))}else f=n(p,s,c,l,u,d);return f=f.map(n=>(n.changes=(0,r.transformFileTextChanges)(e,n.changes,!1,t.isCodeActionsEnabled),n)),f}}function A(e,n){return(o,s,c)=>{let l=o.replace(a,`/`),[u,d,f]=(0,i.getServiceScript)(e,l);if(d?.associatedOnly)return{spans:[],endOfLineState:0};if(u){let i=e.maps.get(u.code,d),a=(0,t.findOverlapCodeRange)(s.start,s.start+s.length,i,t.isSemanticTokensEnabled);if(!a)return{spans:[],endOfLineState:0};let o=(0,r.getMappingOffset)(e,u),l=a.start+o,p=a.end+o,m=n(d.id,{start:l,length:p-l},c),h=[];for(let n=0;n<m.spans.length;n+=3)for(let[i,a,o]of(0,r.toSourceRanges)(f,e,u,m.spans[n],m.spans[n]+m.spans[n+1],!1,t.isSemanticTokensEnabled)){h.push(a,o-a,m.spans[n+2]);break}return m.spans=h,m}else return n(l,s,c)}}function j(e,t,n){return o=>{let s=o.replace(a,`/`),[c,l,u]=(0,i.getServiceScript)(e,s);return l?.associatedOnly?[]:n(l?.id??s).map(n=>(0,r.transformDiagnostic)(e,n,t.getProgram(),!1)).filter(e=>!!e).filter(t=>!c||e.scripts.get(t.file.fileName)===u)}}function M(e,t,n){return o=>{let s=o.replace(a,`/`),[c,l,u]=(0,i.getServiceScript)(e,s);return l?.associatedOnly?[]:n(l?.id??s).map(n=>(0,r.transformDiagnostic)(e,n,t.getProgram(),!1)).filter(e=>!!e).filter(t=>!c||!t.file||e.scripts.get(t.file.fileName)===u)}}function N(e,t,n){return o=>{let s=o.replace(a,`/`),[c,l,u]=(0,i.getServiceScript)(e,s);return l?.associatedOnly?[]:n(l?.id??s).map(n=>(0,r.transformDiagnostic)(e,n,t.getProgram(),!1)).filter(e=>!!e).filter(t=>!c||!t.file||e.scripts.get(t.file.fileName)===u)}}function P(e,i){return(o,s)=>{let c=o.replace(a,`/`),l=K(e,c,s,t.isDefinitionEnabled,(e,t)=>i(e,t),function*(e){for(let t of e.definitions??[])yield[t.fileName,t.textSpan.start]}),u=l.map(n=>(0,r.transformSpan)(e,c,n.textSpan,!0,t.isDefinitionEnabled)?.textSpan).filter(e=>!!e)[0];if(!u)return;let d=l.map(n=>n.definitions?.map(n=>(0,r.transformDocumentSpan)(e,n,!0,t.isDefinitionEnabled,n.fileName!==c)).filter(e=>!!e)??[]).flat();return{textSpan:u,definitions:(0,n.dedupeDocumentSpans)(d)}}}function F(e,n){return(i,o)=>K(e,i.replace(a,`/`),o,t.isReferencesEnabled,(e,t)=>n(e,t),function*(e){for(let t of e)for(let e of t.references)yield[e.fileName,e.textSpan.start]}).flat().map(n=>({definition:(0,r.transformDocumentSpan)(e,n.definition,!0,t.isDefinitionEnabled,!0),references:n.references.map(n=>(0,r.transformDocumentSpan)(e,n,!0,t.isReferencesEnabled)).filter(e=>!!e)}))}function I(e,i){return(o,s)=>{let c=o.replace(a,`/`),l=K(e,c,s,t.isDefinitionEnabled,(e,t)=>i(e,t),function*(e){for(let t of e)yield[t.fileName,t.textSpan.start]}).flat().map(n=>(0,r.transformDocumentSpan)(e,n,!0,t.isDefinitionEnabled,n.fileName!==c)).filter(e=>!!e);return(0,n.dedupeDocumentSpans)(l)}}function L(e,i){return(o,s)=>{let c=K(e,o.replace(a,`/`),s,t.isTypeDefinitionEnabled,(e,t)=>i(e,t),function*(e){for(let t of e)yield[t.fileName,t.textSpan.start]}).flat().map(n=>(0,r.transformDocumentSpan)(e,n,!0,t.isTypeDefinitionEnabled)).filter(e=>!!e);return(0,n.dedupeDocumentSpans)(c)}}function R(e,i){return(o,s)=>{let c=K(e,o.replace(a,`/`),s,t.isImplementationEnabled,(e,t)=>i(e,t),function*(e){for(let t of e)yield[t.fileName,t.textSpan.start]}).flat().map(n=>(0,r.transformDocumentSpan)(e,n,!0,t.isImplementationEnabled)).filter(e=>!!e);return(0,n.dedupeDocumentSpans)(c)}}function z(e,i){return(o,s,c,l,u)=>{let d=K(e,o.replace(a,`/`),s,t.isRenameEnabled,(e,t)=>i(e,t,c,l,u),function*(e){for(let t of e)yield[t.fileName,t.textSpan.start]}).flat().map(n=>(0,r.transformDocumentSpan)(e,n,!1,t.isRenameEnabled)).filter(e=>!!e);return(0,n.dedupeDocumentSpans)(d)}}function B(e,i){return(o,s)=>{let c=K(e,o.replace(a,`/`),s,t.isReferencesEnabled,(e,t)=>i(e,t),function*(e){for(let t of e)yield[t.fileName,t.textSpan.start]}).flat().map(n=>(0,r.transformDocumentSpan)(e,n,!0,t.isReferencesEnabled)).filter(e=>!!e);return(0,n.dedupeDocumentSpans)(c)}}function V(e,n){return(o,s,c,l)=>{let u=o.replace(a,`/`),[d,f,p]=(0,i.getServiceScript)(e,u);if(!f?.associatedOnly)if(d){let i,a=[];for(let[o,u]of(0,r.toGeneratedOffsets)(e,d,p,s,t.isCompletionEnabled)){let s=typeof u.data.completion==`object`&&u.data.completion.isAdditional;if(!s&&i?.entries.length)continue;let m=n(f.id,o,c,l);if(m){typeof u.data.completion==`object`&&u.data.completion.onlyImport&&(m.entries=m.entries.filter(e=>!!e.sourceDisplay));for(let n of m.entries)n.replacementSpan=n.replacementSpan&&(0,r.transformTextSpan)(p,e,d,n.replacementSpan,!1,t.isCompletionEnabled)?.[1];m.optionalReplacementSpan=m.optionalReplacementSpan&&(0,r.transformTextSpan)(p,e,d,m.optionalReplacementSpan,!1,t.isCompletionEnabled)?.[1],s?a.push(m):i=m}}let o=a;if(i&&o.unshift(i),o.length)return{...o[0],entries:o.map(e=>e.entries).flat()}}else return n(u,s,c,l)}}function H(e,n){return(o,s,c,l,u,d,f)=>{let p,m=o.replace(a,`/`),[h,g,_]=(0,i.getServiceScript)(e,m);if(!g?.associatedOnly){if(h){let i=(0,r.toGeneratedOffset)(e,h,_,s,t.isCompletionEnabled);i!==void 0&&(p=n(g.id,i,c,l,u,d,f))}else return n(m,s,c,l,u,d,f);if(p?.codeActions)for(let n of p.codeActions)n.changes=(0,r.transformFileTextChanges)(e,n.changes,!1,t.isCompletionEnabled);return p}}}function U(e,n){return(o,s,c)=>{let l=o.replace(a,`/`),[u,d,f]=(0,i.getServiceScript)(e,l);if(d?.associatedOnly)return[];if(u){let i=e.maps.get(u.code,f),a=(0,t.findOverlapCodeRange)(s.start,s.start+s.length,i,t.isSemanticTokensEnabled);if(!a)return[];let o=(0,r.getMappingOffset)(e,u),l=a.start+o,p=a.end+o,m=n(d.id,{start:l,length:p-l},c),h=[];for(let n of m){let i=(0,r.toSourceOffset)(f,e,u,n.position,t.isInlayHintsEnabled);i!==void 0&&h.push({...n,position:i[1]})}return h}else return n(l,s,c)}}function W(e,i){return o=>{let s=i(o.replace(a,`/`)).map(n=>(0,r.transformDocumentSpan)(e,n,!0,t.isReferencesEnabled)).filter(e=>!!e);return(0,n.dedupeDocumentSpans)(s)}}function G(e,i){return(...a)=>{let o=i(...a).map(n=>(0,r.transformDocumentSpan)(e,n,!0,t.isReferencesEnabled)).filter(e=>!!e);return(0,n.dedupeDocumentSpans)(o)}}function K(e,t,n,a,o,s){let c=[],l=new Set,[u,d,f]=(0,i.getServiceScript)(e,t);if(u)for(let[t]of(0,r.toGeneratedOffsets)(e,u,f,n,a))p(d.id,t);else p(t,n);return c;function p(t,n){if(l.has(t+`:`+n))return;l.add(t+`:`+n);let a=o(t,n);if(a){c.push(a);for(let t of s(a)){l.add(t[0]+`:`+t[1]);let[n]=(0,i.getServiceScript)(e,t[0]);if(!n)continue;let a=e.linkedCodeMaps.get(n.code);if(!a)continue;let o=(0,r.getMappingOffset)(e,n);for(let e of a.getLinkedOffsets(t[1]-o))p(t[0],e+o)}}}}function q(e){return e?e.map(e=>e.text).join(``):``}})),m=e((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.resolveFileLanguageId=t;function t(e){switch(e.split(`.`).pop()){case`js`:return`javascript`;case`cjs`:return`javascript`;case`mjs`:return`javascript`;case`ts`:return`typescript`;case`cts`:return`typescript`;case`mts`:return`typescript`;case`jsx`:return`javascriptreact`;case`tsx`:return`typescriptreact`;case`json`:return`json`}}})),h=e((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createResolveModuleName=t;function t(e,t,n,r,i){let a=new Map,o={readFile:n.readFile.bind(n),directoryExists:n.directoryExists?.bind(n),realpath:n.realpath?.bind(n),getCurrentDirectory:n.getCurrentDirectory?.bind(n),getDirectories:n.getDirectories?.bind(n),useCaseSensitiveFileNames:typeof n.useCaseSensitiveFileNames==`function`?n.useCaseSensitiveFileNames.bind(n):n.useCaseSensitiveFileNames,fileExists(e){let t=n.fileExists(e);for(let{typescript:n}of r)if(n){if(!t)for(let{extension:t}of n.extraFileExtensions){if(!e.endsWith(`.d.${t}.ts`))continue;let n=e.slice(0,-`.d.${t}.ts`.length)+`.${t}`;if(s(n)){let t=i(n);if(t?.generated){let r=t.generated.languagePlugin.typescript?.getServiceScript(t.generated.root);if(r){let t=n+`.d.ts`;return(r.extension===`.js`||r.extension===`.jsx`)&&s(t)?a.set(e,{sourceFileName:t,extension:`.ts`}):a.set(e,{sourceFileName:n,extension:r.extension}),!0}}}}if(n.resolveHiddenExtensions&&e.endsWith(`.d.ts`))for(let{extension:t}of n.extraFileExtensions){let n=e.slice(0,-5)+`.${t}`;if(s(n)){let t=i(n);if(t?.generated){let r=t.generated.languagePlugin.typescript?.getServiceScript(t.generated.root);if(r)return a.set(e,{sourceFileName:n,extension:r.extension}),!0}}}}return t}};return(t,n,r,i,s,c)=>{let l=e.resolveModuleName(t,n,r,o,i,s,c);if(l.resolvedModule){let e=a.get(l.resolvedModule.resolvedFileName);e&&(l.resolvedModule.resolvedFileName=e.sourceFileName,l.resolvedModule.extension=e.extension)}return a.clear(),l};function s(e){return n.fileExists(e)?(t?.(e)??n.readFile(e)?.length??0)<4*1024*1024:!1}}})),g=e((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.decorateLanguageServiceHost=n,e.searchExternalFiles=r;let t=h();function n(e,n,r){let i=n.plugins.map(e=>e.typescript?.extraFileExtensions.map(e=>`.`+e.extension)??[]).flat(),a=new Map,o=new Set,s=r.readDirectory?.bind(r),c=r.resolveModuleNameLiterals?.bind(r),l=r.resolveModuleNames?.bind(r),u=r.getScriptSnapshot.bind(r),d=r.getScriptKind?.bind(r);if(s&&(r.readDirectory=(e,t,n,r,a)=>{if(t)for(let e of i)t.includes(e)||(t=[...t,e]);return s(e,t,n,r,a)}),i.length){let a=(0,t.createResolveModuleName)(e,e.sys.getFileSize,r,n.plugins,e=>n.scripts.get(e)),o=r.useCaseSensitiveFileNames?.()?e=>e:e=>e.toLowerCase(),s=e.createModuleResolutionCache(r.getCurrentDirectory(),o,r.getCompilationSettings());c&&(r.resolveModuleNameLiterals=(t,n,r,o,l,...u)=>t.every(e=>!i.some(t=>e.text.endsWith(t)))?c(t,n,r,o,l,...u):t.map(t=>{let i=e.getModeForUsageLocation(l,t,o);return a(t.text,n,o,s,r,i)})),l&&(r.resolveModuleNames=(e,t,n,r,o,c)=>e.every(e=>!i.some(t=>e.endsWith(t)))?l(e,t,n,r,o,c):e.map(e=>a(e,t,o,s,r).resolvedModule))}r.getScriptSnapshot=e=>{let t=f(e,!0);return t?t.snapshot:u(e)},d&&(r.getScriptKind=e=>{let t=f(e,!1);return t?t.scriptKind:d(e)});function f(t,i){if(o.has(t))return;let s;try{s=r.getScriptVersion(t)}catch{o.add(t)}if(s===void 0)return;let c=a.get(t);if(!c||c[0]!==s){c=[s];let r=n.scripts.get(t,void 0,i);if(r?.generated){let t=r.generated.languagePlugin.typescript?.getServiceScript(r.generated.root);if(t)if(t.preventLeadingOffset)c[1]={extension:t.extension,scriptKind:t.scriptKind,snapshot:t.code.snapshot};else{let n=r.snapshot.getText(0,r.snapshot.getLength()).split(`
6
- `).map(e=>` `.repeat(e.length)).join(`
7
- `)+t.code.snapshot.getText(0,t.code.snapshot.getLength());c[1]={extension:t.extension,scriptKind:t.scriptKind,snapshot:e.ScriptSnapshot.fromString(n)}}r.generated.languagePlugin.typescript?.getExtraServiceScripts&&console.warn(`getExtraServiceScripts() is not available in TS plugin.`)}a.set(t,c)}return c[1]}}function r(e,t,n){if(t.projectKind!==e.server.ProjectKind.Configured)return[];let r=t.getProjectName(),i=e.readJsonConfigFile(r,t.readFile.bind(t)),a={useCaseSensitiveFileNames:t.useCaseSensitiveFileNames(),fileExists:t.fileExists.bind(t),readFile:t.readFile.bind(t),readDirectory:(...e)=>(e[1]=n,t.readDirectory(...e))};return e.parseJsonSourceFileConfigFileContent(i,a,t.getCurrentDirectory()).fileNames}})),_=e((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.makeGetExternalFiles=e.decoratedLanguageServiceHosts=e.decoratedLanguageServices=e.projectExternalFileExtensions=e.externalFiles=void 0,e.makeGetScriptInfoWithLargeFileFailsafe=i,e.createLanguageCommon=a,e.isHasAlreadyDecoratedLanguageService=s;let t=l(),n=m(),r=g();e.externalFiles=new WeakMap,e.projectExternalFileExtensions=new WeakMap,e.decoratedLanguageServices=new WeakSet,e.decoratedLanguageServiceHosts=new WeakSet;function i(e){return t=>{try{return e.project.getScriptInfo(t)}catch{}}}function a(e,a,o,s){let c=o.languageServiceHost.getScriptSnapshot.bind(o.languageServiceHost),l=i(o),u=(0,t.createLanguage)([...e.languagePlugins,{getLanguageId:n.resolveFileLanguageId}],new t.FileMap(a.sys.useCaseSensitiveFileNames),(e,t,n)=>{let r;n?r=c(e):(r=l(e)?.getSnapshot(),r||=(o.project.getScriptVersion(e),l(e)?.getSnapshot())),r?u.scripts.set(e,r):u.scripts.delete(e)},e=>{o.session.change({file:e,line:1,offset:1,endLine:1,endOffset:1,insertString:``})});s(u),(0,r.decorateLanguageServiceHost)(a,u,o.languageServiceHost),e.setup?.(u)}e.makeGetExternalFiles=t=>(n,i=0)=>{if(i>=1||!e.externalFiles.has(n)){let i=e.externalFiles.get(n),a=e.projectExternalFileExtensions.get(n),s=a?.length?(0,r.searchExternalFiles)(t,n,a):[];e.externalFiles.set(n,s),i&&!o(i,s)&&n.refreshDiagnostics()}return e.externalFiles.get(n)};function o(e,t){if(e.length!==t.length)return!1;let n=new Set(e);for(let e of t)if(!n.has(e))return!1;return!0}function s(t){return e.decoratedLanguageServices.has(t.languageService)||e.decoratedLanguageServiceHosts.has(t.languageServiceHost)?!0:(e.decoratedLanguageServices.add(t.languageService),e.decoratedLanguageServiceHosts.add(t.languageServiceHost),!1)}})),v=e((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createLanguageServicePlugin=r;let t=p(),n=_();function r(e){return r=>{let{typescript:i}=r;return{create(r){if(!(0,n.isHasAlreadyDecoratedLanguageService)(r)){let a=e(i,r),o=a.languagePlugins.map(e=>e.typescript?.extraFileExtensions.map(e=>`.`+e.extension)??[]).flat();n.projectExternalFileExtensions.set(r.project,o);let{proxy:s,initialize:c}=(0,t.createProxyLanguageService)(r.languageService);r.languageService=s,(0,n.createLanguageCommon)(a,i,r,c)}return r.languageService},getExternalFiles:(0,n.makeGetExternalFiles)(i)}}}})),y=e(((e,t)=>{let n=require(`typescript`),{forEachEmbeddedCode:r}=l(),i=require(`fs`),a=require(`path`),o=process.env.RIPPLE_DEBUG===`true`;function s(...e){o&&console.log(`[Ripple Language]`,...e)}function c(...e){console.error(`[Ripple Language ERROR]`,...e)}function u(...e){console.warn(`[Ripple Language WARNING]`,...e)}function d(){s(`Creating Ripple language plugin...`);let e=new Map,t=null;return{getLanguageId(e){let t=typeof e==`string`?e:e.fsPath.replace(/\\/g,`/`);if(t.endsWith(`.ripple`))return s(`Identified Ripple file:`,t),`ripple`},createVirtualCode(e,t,r){if(t===`ripple`){let t=typeof e==`string`?e:e.fsPath.replace(/\\/g,`/`),i=n(t);if(!i){c(`Ripple compiler not found for file: ${t}`);return}s(`Creating virtual code for:`,t);try{return new f(t,r,i)}catch(e){throw c(`Failed to create virtual code for:`,t,`:`,e),e}}},typescript:{extraFileExtensions:[{extension:`ripple`,isMixedContent:!1,scriptKind:7}],getServiceScript(e){for(let t of r(e))if(t.languageId===`ripple`)return{code:t,extension:`.tsx`,scriptKind:4}}}};function n(n){let r=[`node_modules`,`ripple`,`src`,`compiler`,`index.js`],o=n.split(`/`);for(let t=o.length-2;t>=0;t--){let n=o.slice(0,t+1).join(`/`);if(!e.has(n)){let t=[n,...r].join(`/`);i.existsSync(t)?(e.set(n,t),s(`Found ripple compiler at:`,t)):e.set(n,null)}let a=e.get(n);if(a)return require(a)}let c=`Ripple compiler not found in workspace for ${n}. \
8
- Using packaged version`;if(t)return u(`${c} at ${t}`),require(t);let l=__dirname;for(;l;){let e=a.join(l,...r);if(i.existsSync(e))return t=e,u(`${c} at ${t}`),require(e);let n=a.dirname(l);if(n===l)break;l=n}}}var f=class{id=`root`;languageId=`ripple`;codegenStacks=[];ripple;generatedCode=``;embeddedCodes=[];mappings=[];isErrorMode=!1;errors=[];snapshot;originalCode=``;diagnostics=[];_mappingIndex=null;constructor(e,t,n){if(s(`Initializing RippleVirtualCode for:`,e),this.fileName=e,this.ripple=n,this.snapshot=t,this.originalCode=t.getText(0,t.getLength()),!n||typeof n.compile_to_volar_mappings!=`function`)throw c(`Invalid ripple compiler - missing compile_to_volar_mappings method`),Error(`Invalid ripple compiler`);this.update(t)}update(e){s(`Updating virtual code for:`,this.fileName),this._mappingIndex=null,this.snapshot=e,this.errors=[];let t;try{s(`Compiling Ripple code...`),t=this.ripple.compile_to_volar_mappings(this.originalCode,this.fileName),s(`Compilation successful, generated code length:`,t?.code?.length||0)}catch(e){c(`Ripple compilation failed for`,this.fileName,`:`,e),this.errors.push(e)}t&&t.code?(this.generatedCode=t.code,this.mappings=t.mappings??[],this.isErrorMode=!1,s(`Using transpiled code, mapping count:`,this.mappings.length),this.snapshot={getText:(e,t)=>this.generatedCode.substring(e,t),getLength:()=>this.generatedCode.length,getChangeRange:()=>void 0}):(s(`Compilation failed, only display where the compilation error occurred.`),this.generatedCode=`export {};
9
- `,this.isErrorMode=!0,this.mappings=[{sourceOffsets:[this.errors[0]?.pos??0],generatedOffsets:[0],lengths:[this.originalCode.length],data:{verification:!0,customData:{generatedLengths:[this.originalCode.length]}}}],this.snapshot={getText:(e,t)=>this.generatedCode.substring(e,t),getLength:()=>this.generatedCode.length,getChangeRange:()=>void 0})}findMappingByGeneratedRange(e,t){if(!this._mappingIndex){this._mappingIndex=new Map;for(let e of this.mappings){let t=e.generatedOffsets[0],n=`${t}-${t+e.data.customData.generatedLengths[0]}`;this._mappingIndex.set(n,e)}}let n=`${e}-${t}`;return this._mappingIndex.get(n)??null}};t.exports={getRippleLanguagePlugin:d,RippleVirtualCode:f,resolveConfig:e=>{let t={...e.options??{}};t.target===void 0&&(t.target=n.ScriptTarget.ESNext);let r=new Set((t.lib??[]).map(e=>{if(typeof e!=`string`||e.length===0)return;let t=e.trim();return t.startsWith(`lib.`)?t.toLowerCase():`lib.${t.toLowerCase().replace(/\s+/g,``).replace(/_/g,`.`)}\.d.ts`}).filter(e=>typeof e==`string`));if(r.size===0){let e=n.createCompilerHost(t).getDefaultLibFileName(t).toLowerCase();r.add(e),r.add(`lib.dom.d.ts`),r.add(`lib.dom.iterable.d.ts`)}if(t.lib=[...r],!t.types){let e=n.createCompilerHost(t),r=n.getEffectiveTypeRoots(t,e);r&&r.length>0&&(t.typeRoots=r)}return{...e,options:t}}}}));const{createLanguageServicePlugin:b}=v(),{getRippleLanguagePlugin:x}=y();module.exports=b(()=>({languagePlugins:[x()]}));