@azerothjs/language-service 0.4.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/README.md +259 -0
  2. package/dist/html-source.d.ts +12 -0
  3. package/dist/html-source.d.ts.map +1 -0
  4. package/dist/html-source.js +108 -0
  5. package/dist/html-source.js.map +1 -0
  6. package/dist/index.d.ts +12 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +29 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/language-data.d.ts +41 -0
  11. package/dist/language-data.d.ts.map +1 -0
  12. package/dist/language-data.js +164 -0
  13. package/dist/language-data.js.map +1 -0
  14. package/dist/mapping.d.ts +71 -0
  15. package/dist/mapping.d.ts.map +1 -0
  16. package/dist/mapping.js +123 -0
  17. package/dist/mapping.js.map +1 -0
  18. package/dist/markup-model.d.ts +67 -0
  19. package/dist/markup-model.d.ts.map +1 -0
  20. package/dist/markup-model.js +313 -0
  21. package/dist/markup-model.js.map +1 -0
  22. package/dist/protocol.d.ts +176 -0
  23. package/dist/protocol.d.ts.map +1 -0
  24. package/dist/protocol.js +58 -0
  25. package/dist/protocol.js.map +1 -0
  26. package/dist/providers/completion.d.ts +26 -0
  27. package/dist/providers/completion.d.ts.map +1 -0
  28. package/dist/providers/completion.js +339 -0
  29. package/dist/providers/completion.js.map +1 -0
  30. package/dist/providers/css-service.d.ts +7 -0
  31. package/dist/providers/css-service.d.ts.map +1 -0
  32. package/dist/providers/css-service.js +84 -0
  33. package/dist/providers/css-service.js.map +1 -0
  34. package/dist/providers/diagnostics.d.ts +5 -0
  35. package/dist/providers/diagnostics.d.ts.map +1 -0
  36. package/dist/providers/diagnostics.js +89 -0
  37. package/dist/providers/diagnostics.js.map +1 -0
  38. package/dist/providers/editing.d.ts +17 -0
  39. package/dist/providers/editing.d.ts.map +1 -0
  40. package/dist/providers/editing.js +176 -0
  41. package/dist/providers/editing.js.map +1 -0
  42. package/dist/providers/hover.d.ts +5 -0
  43. package/dist/providers/hover.d.ts.map +1 -0
  44. package/dist/providers/hover.js +213 -0
  45. package/dist/providers/hover.js.map +1 -0
  46. package/dist/providers/html-service.d.ts +8 -0
  47. package/dist/providers/html-service.d.ts.map +1 -0
  48. package/dist/providers/html-service.js +108 -0
  49. package/dist/providers/html-service.js.map +1 -0
  50. package/dist/providers/inlay-hints.d.ts +25 -0
  51. package/dist/providers/inlay-hints.d.ts.map +1 -0
  52. package/dist/providers/inlay-hints.js +52 -0
  53. package/dist/providers/inlay-hints.js.map +1 -0
  54. package/dist/providers/navigation.d.ts +16 -0
  55. package/dist/providers/navigation.d.ts.map +1 -0
  56. package/dist/providers/navigation.js +107 -0
  57. package/dist/providers/navigation.js.map +1 -0
  58. package/dist/providers/semantic-tokens.d.ts +5 -0
  59. package/dist/providers/semantic-tokens.d.ts.map +1 -0
  60. package/dist/providers/semantic-tokens.js +63 -0
  61. package/dist/providers/semantic-tokens.js.map +1 -0
  62. package/dist/providers/signature.d.ts +5 -0
  63. package/dist/providers/signature.d.ts.map +1 -0
  64. package/dist/providers/signature.js +38 -0
  65. package/dist/providers/signature.js.map +1 -0
  66. package/dist/providers/structure.d.ts +19 -0
  67. package/dist/providers/structure.d.ts.map +1 -0
  68. package/dist/providers/structure.js +188 -0
  69. package/dist/providers/structure.js.map +1 -0
  70. package/dist/providers/symbols.d.ts +8 -0
  71. package/dist/providers/symbols.d.ts.map +1 -0
  72. package/dist/providers/symbols.js +108 -0
  73. package/dist/providers/symbols.js.map +1 -0
  74. package/dist/request.d.ts +37 -0
  75. package/dist/request.d.ts.map +1 -0
  76. package/dist/request.js +49 -0
  77. package/dist/request.js.map +1 -0
  78. package/dist/service.d.ts +73 -0
  79. package/dist/service.d.ts.map +1 -0
  80. package/dist/service.js +177 -0
  81. package/dist/service.js.map +1 -0
  82. package/dist/text.d.ts +25 -0
  83. package/dist/text.d.ts.map +1 -0
  84. package/dist/text.js +66 -0
  85. package/dist/text.js.map +1 -0
  86. package/dist/ts-project.d.ts +75 -0
  87. package/dist/ts-project.d.ts.map +1 -0
  88. package/dist/ts-project.js +266 -0
  89. package/dist/ts-project.js.map +1 -0
  90. package/dist/uri.d.ts +21 -0
  91. package/dist/uri.d.ts.map +1 -0
  92. package/dist/uri.js +41 -0
  93. package/dist/uri.js.map +1 -0
  94. package/dist/virtual-code.d.ts +27 -0
  95. package/dist/virtual-code.d.ts.map +1 -0
  96. package/dist/virtual-code.js +360 -0
  97. package/dist/virtual-code.js.map +1 -0
  98. package/package.json +61 -0
package/dist/uri.d.ts ADDED
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Converts a `file://` URI to an OS path. Non-file URIs and bare paths are
3
+ * returned unchanged, so tests can pass plain paths.
4
+ *
5
+ * @example
6
+ * ```ts
7
+ * uriToPath('file:///c%3A/app/App.azeroth'); // 'c:/app/App.azeroth' (Windows)
8
+ * uriToPath('/abs/App.azeroth'); // '/abs/App.azeroth'
9
+ * ```
10
+ */
11
+ export declare function uriToPath(uri: string): string;
12
+ /**
13
+ * Converts an OS path to a `file://` URI.
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * pathToUri('c:/app/App.azeroth'); // 'file:///c%3A/app/App.azeroth'
18
+ * ```
19
+ */
20
+ export declare function pathToUri(path: string): string;
21
+ //# sourceMappingURL=uri.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uri.d.ts","sourceRoot":"","sources":["../src/uri.ts"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAa7C;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAS9C"}
package/dist/uri.js ADDED
@@ -0,0 +1,41 @@
1
+ // Minimal file-URI <-> path conversion. The language server speaks `file://`
2
+ // URIs; the TypeScript host and the compiler speak OS paths. Keeping this tiny
3
+ // and dependency-free avoids pulling `vscode-uri` into the core.
4
+ /**
5
+ * Converts a `file://` URI to an OS path. Non-file URIs and bare paths are
6
+ * returned unchanged, so tests can pass plain paths.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * uriToPath('file:///c%3A/app/App.azeroth'); // 'c:/app/App.azeroth' (Windows)
11
+ * uriToPath('/abs/App.azeroth'); // '/abs/App.azeroth'
12
+ * ```
13
+ */
14
+ export function uriToPath(uri) {
15
+ if (!uri.startsWith('file://')) {
16
+ return uri;
17
+ }
18
+ let path = decodeURIComponent(uri.slice('file://'.length));
19
+ // Windows: `file:///c:/x` -> `/c:/x`; drop the leading slash before a drive.
20
+ if (/^\/[a-zA-Z]:/.test(path)) {
21
+ path = path.slice(1);
22
+ }
23
+ return path;
24
+ }
25
+ /**
26
+ * Converts an OS path to a `file://` URI.
27
+ *
28
+ * @example
29
+ * ```ts
30
+ * pathToUri('c:/app/App.azeroth'); // 'file:///c%3A/app/App.azeroth'
31
+ * ```
32
+ */
33
+ export function pathToUri(path) {
34
+ if (path.startsWith('file://')) {
35
+ return path;
36
+ }
37
+ const normalized = path.replace(/\\/g, '/');
38
+ const withSlash = /^[a-zA-Z]:/.test(normalized) ? `/${normalized}` : normalized;
39
+ return `file://${withSlash.split('/').map((seg, i) => i === 0 ? seg : encodeURIComponent(seg)).join('/')}`;
40
+ }
41
+ //# sourceMappingURL=uri.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uri.js","sourceRoot":"","sources":["../src/uri.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,+EAA+E;AAC/E,iEAAiE;AAEjE;;;;;;;;;GASG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW;IAEjC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAC9B,CAAC;QACG,OAAO,GAAG,CAAC;IACf,CAAC;IACD,IAAI,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3D,6EAA6E;IAC7E,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAC7B,CAAC;QACG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY;IAElC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAC9B,CAAC;QACG,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAK,UAAW,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;IAClF,OAAO,UAAW,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAE,EAAE,CAAC;AACjH,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { CodeMapping } from './mapping.ts';
2
+ /**
3
+ * Built-in components the compiler auto-imports from the runtime when markup
4
+ * uses them. Kept in sync with @azerothjs/compiler so the virtual module
5
+ * resolves the same symbols the shipped module would.
6
+ */
7
+ export declare const BUILTIN_COMPONENTS: readonly string[];
8
+ /** The virtual TS module plus its mapping back to the `.azeroth` source. */
9
+ export interface VirtualCode {
10
+ /** Compiled TypeScript the language service type-checks. */
11
+ code: string;
12
+ /** Bidirectional offset mapping (original <-> generated). */
13
+ mapping: CodeMapping;
14
+ }
15
+ /**
16
+ * Compiles a `.azeroth` source string into the virtual TS module the language
17
+ * service operates on, plus the mapping needed to translate positions and
18
+ * results in both directions.
19
+ *
20
+ * @example
21
+ * ```ts
22
+ * const { code, mapping } = generateVirtualCode('const x = <h1>{name()}</h1>;');
23
+ * // `name()` appears verbatim in `code`; mapping.toOriginal points back at it.
24
+ * ```
25
+ */
26
+ export declare function generateVirtualCode(source: string): VirtualCode;
27
+ //# sourceMappingURL=virtual-code.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"virtual-code.d.ts","sourceRoot":"","sources":["../src/virtual-code.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAE,WAAW,EAAyC,MAAM,cAAc,CAAC;AAKlF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAI/C,CAAC;AAIF,4EAA4E;AAC5E,MAAM,WAAW,WAAW;IAExB,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IAEb,6DAA6D;IAC7D,OAAO,EAAE,WAAW,CAAC;CACxB;AAkDD;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAiQ/D"}
@@ -0,0 +1,360 @@
1
+ // Turns a `.azeroth` source into a *virtual* TypeScript module the language
2
+ // service can type-check, while recording a precise offset mapping back to the
3
+ // original (see mapping.ts).
4
+ //
5
+ // It reuses the compiler's own scanner (to find markup regions) and parser (to
6
+ // build the markup AST), then walks that AST the same way @azerothjs/compiler's
7
+ // codegen does - emitting `h(...)` / component calls with the same reactive
8
+ // wrapping rules - so the virtual module matches what actually ships. The one
9
+ // difference from codegen: every user-authored span (the script between markup,
10
+ // the code inside `{ ... }` holes, attribute expressions, component tag names)
11
+ // is copied byte-for-byte and registered as a mapping segment. Generated
12
+ // scaffolding (`h('div', { `, quotes, getters) is emitted but not mapped.
13
+ //
14
+ // Because the markup-bearing portion of a `.azeroth` file is small relative to
15
+ // the surrounding TypeScript, the overwhelming majority of every file is copied
16
+ // 1:1 - which is why TS-powered features feel native across the whole document.
17
+ import { findMarkupStart, skipBalanced, isWhitespace } from '@azerothjs/compiler';
18
+ import { parseMarkup } from '@azerothjs/compiler';
19
+ import { walkComponentTags } from '@azerothjs/compiler';
20
+ import { CodeMapping } from "./mapping.js";
21
+ /** Module the auto-injected runtime imports point at (matches the compiler). */
22
+ const RUNTIME_MODULE = '@azerothjs/core';
23
+ /**
24
+ * Built-in components the compiler auto-imports from the runtime when markup
25
+ * uses them. Kept in sync with @azerothjs/compiler so the virtual module
26
+ * resolves the same symbols the shipped module would.
27
+ */
28
+ export const BUILTIN_COMPONENTS = [
29
+ 'Show', 'For', 'Switch', 'Match', 'Portal', 'Dynamic',
30
+ 'Suspense', 'ErrorBoundary', 'Transition', 'Outlet'
31
+ ];
32
+ const BUILTIN_SET = new Set(BUILTIN_COMPONENTS);
33
+ /**
34
+ * Accumulates the virtual module while tracking which slices came verbatim
35
+ * from the source.
36
+ *
37
+ * @internal
38
+ */
39
+ class Builder {
40
+ src;
41
+ out = '';
42
+ segments = [];
43
+ constructor(src) {
44
+ this.src = src;
45
+ }
46
+ /** Appends generated scaffolding that has no original counterpart. */
47
+ emit(text) {
48
+ this.out += text;
49
+ }
50
+ /** Copies `[start, end)` from the source verbatim and records a mapping. */
51
+ copy(start, end, kind) {
52
+ if (end <= start) {
53
+ return;
54
+ }
55
+ const generatedStart = this.out.length;
56
+ this.out += this.src.slice(start, end);
57
+ this.segments.push({
58
+ sourceStart: start,
59
+ sourceEnd: end,
60
+ generatedStart,
61
+ generatedEnd: this.out.length,
62
+ kind
63
+ });
64
+ }
65
+ }
66
+ /**
67
+ * Compiles a `.azeroth` source string into the virtual TS module the language
68
+ * service operates on, plus the mapping needed to translate positions and
69
+ * results in both directions.
70
+ *
71
+ * @example
72
+ * ```ts
73
+ * const { code, mapping } = generateVirtualCode('const x = <h1>{name()}</h1>;');
74
+ * // `name()` appears verbatim in `code`; mapping.toOriginal points back at it.
75
+ * ```
76
+ */
77
+ export function generateVirtualCode(source) {
78
+ const builder = new Builder(source);
79
+ const usedBuiltins = new Set();
80
+ const collect = (node) => walkComponentTags(node, (tag) => {
81
+ if (BUILTIN_SET.has(tag)) {
82
+ usedBuiltins.add(tag);
83
+ }
84
+ });
85
+ /**
86
+ * Emits a slice of source that is an expression (a `{ ... }` hole body or
87
+ * attribute value), expanding any nested markup it contains and copying the
88
+ * rest verbatim - the same recursion the compiler performs for holes.
89
+ */
90
+ const emitExpression = (start, end, kind) => {
91
+ let j = start;
92
+ for (;;) {
93
+ const m = findMarkupStart(source, j);
94
+ if (m === -1 || m >= end) {
95
+ builder.copy(j, end, kind);
96
+ break;
97
+ }
98
+ builder.copy(j, m, kind);
99
+ let parsed;
100
+ try {
101
+ parsed = parseMarkup(source, m);
102
+ }
103
+ catch {
104
+ // Incomplete markup mid-edit: copy the remainder verbatim so the
105
+ // rest of the module stays analysable (the diagnostics provider
106
+ // surfaces the markup error from the parser separately).
107
+ builder.copy(m, end, kind);
108
+ break;
109
+ }
110
+ collect(parsed.node);
111
+ emitNode(parsed.node);
112
+ j = parsed.end;
113
+ }
114
+ };
115
+ /** Emits a dynamic `{expr}`, mirroring the compiler's getter-wrapping. */
116
+ const emitDynamic = (span, isEventHandler, kind) => {
117
+ const code = source.slice(span.start, span.end).trim();
118
+ if (isEventHandler ||
119
+ isFunctionLiteral(code) ||
120
+ isBareReference(code) ||
121
+ isCollectionLiteral(code)) {
122
+ emitExpression(span.start, span.end, kind);
123
+ return;
124
+ }
125
+ builder.emit('() => (');
126
+ emitExpression(span.start, span.end, kind);
127
+ builder.emit(')');
128
+ };
129
+ const emitAttribute = (attr, isHost) => {
130
+ if (attr.spread) {
131
+ builder.emit('...');
132
+ emitExpression(spreadSpan(source, attr).start, spreadSpan(source, attr).end, 'attribute');
133
+ return;
134
+ }
135
+ const name = attr.name;
136
+ builder.emit(`${objectKey(name)}: `);
137
+ if (attr.value.kind === 'none') {
138
+ builder.emit('true');
139
+ return;
140
+ }
141
+ if (attr.value.kind === 'static') {
142
+ builder.emit(quoteString(attr.value.value));
143
+ return;
144
+ }
145
+ const span = attrExprSpan(source, attr);
146
+ // Host event handlers: contextually type the handler so `(e) => …`
147
+ // infers the right DOM event. Only for inline functions (a reference's
148
+ // type is the author's business and must not be second-guessed).
149
+ if (isHost && isEventName(name) && isFunctionLiteral(source.slice(span.start, span.end).trim())) {
150
+ builder.emit('(');
151
+ emitExpression(span.start, span.end, 'attribute');
152
+ builder.emit(`) satisfies AzerothHandler<'${name}'>`);
153
+ return;
154
+ }
155
+ emitDynamic(span, isEventName(name), 'attribute');
156
+ };
157
+ const emitProps = (attrs, childrenEntry, isHost) => {
158
+ builder.emit('{ ');
159
+ attrs.forEach((attr, index) => {
160
+ if (index > 0) {
161
+ builder.emit(', ');
162
+ }
163
+ emitAttribute(attr, isHost);
164
+ });
165
+ if (childrenEntry) {
166
+ if (attrs.length > 0) {
167
+ builder.emit(', ');
168
+ }
169
+ childrenEntry();
170
+ }
171
+ builder.emit(' }');
172
+ };
173
+ const emitChild = (child) => {
174
+ if (child.kind === 'text') {
175
+ builder.emit(quoteString(child.value));
176
+ return;
177
+ }
178
+ if (child.kind === 'expression') {
179
+ emitDynamic({ start: child.start + 1, end: child.end - 1 }, false, 'expression');
180
+ return;
181
+ }
182
+ emitNode(child);
183
+ };
184
+ /** Mirrors codegen.generateComponentChildren as a side-effecting emit. */
185
+ const emitComponentChildren = (children) => {
186
+ if (children.length === 0) {
187
+ return null;
188
+ }
189
+ return () => {
190
+ builder.emit('children: ');
191
+ if (children.length === 1) {
192
+ const only = children[0];
193
+ if (only.kind === 'expression') {
194
+ const span = { start: only.start + 1, end: only.end - 1 };
195
+ const code = source.slice(span.start, span.end).trim();
196
+ if (isFunctionLiteral(code)) {
197
+ emitExpression(span.start, span.end, 'expression');
198
+ }
199
+ else {
200
+ builder.emit('() => (');
201
+ emitExpression(span.start, span.end, 'expression');
202
+ builder.emit(')');
203
+ }
204
+ return;
205
+ }
206
+ builder.emit('() => ');
207
+ emitChild(only);
208
+ return;
209
+ }
210
+ builder.emit('() => [');
211
+ children.forEach((child, index) => {
212
+ if (index > 0) {
213
+ builder.emit(', ');
214
+ }
215
+ emitChild(child);
216
+ });
217
+ builder.emit(']');
218
+ };
219
+ };
220
+ function emitNode(node) {
221
+ if (node.kind === 'fragment') {
222
+ builder.emit('[');
223
+ node.children.forEach((child, index) => {
224
+ if (index > 0) {
225
+ builder.emit(', ');
226
+ }
227
+ emitChild(child);
228
+ });
229
+ builder.emit(']');
230
+ return;
231
+ }
232
+ if (node.isComponent) {
233
+ // Copy the tag identifier verbatim so go-to-definition, hover, and
234
+ // rename resolve the component symbol through TypeScript.
235
+ const tagStart = node.start + 1;
236
+ builder.copy(tagStart, tagStart + node.tag.length, 'tag');
237
+ builder.emit('(');
238
+ emitProps(node.attributes, emitComponentChildren(node.children), false);
239
+ builder.emit(')');
240
+ return;
241
+ }
242
+ builder.emit(`h(${quoteString(node.tag)}, `);
243
+ emitProps(node.attributes, null, true);
244
+ for (const child of node.children) {
245
+ builder.emit(', ');
246
+ emitChild(child);
247
+ }
248
+ builder.emit(')');
249
+ }
250
+ // Top-level transform: copy verbatim script, expand each markup region.
251
+ let i = 0;
252
+ for (;;) {
253
+ const start = findMarkupStart(source, i);
254
+ if (start === -1) {
255
+ builder.copy(i, source.length, 'script');
256
+ break;
257
+ }
258
+ builder.copy(i, start, 'script');
259
+ let parsed;
260
+ try {
261
+ parsed = parseMarkup(source, start);
262
+ }
263
+ catch {
264
+ // Half-typed markup: keep the tail verbatim rather than throwing, so
265
+ // the language service degrades gracefully while the author types.
266
+ builder.copy(start, source.length, 'script');
267
+ break;
268
+ }
269
+ collect(parsed.node);
270
+ emitNode(parsed.node);
271
+ i = parsed.end;
272
+ }
273
+ return finalize(builder, source, usedBuiltins);
274
+ }
275
+ /**
276
+ * Prepends the same runtime import the compiler injects (only when markup was
277
+ * emitted) and shifts every mapping segment past it. With no markup the source
278
+ * is reproduced 1:1, so the language service sees a plain TS module.
279
+ */
280
+ function finalize(builder, source, usedBuiltins) {
281
+ const hasMarkup = builder.segments.some(segment => segment.kind !== 'script') || builder.out !== source;
282
+ if (!hasMarkup) {
283
+ return { code: builder.out, mapping: new CodeMapping(builder.segments) };
284
+ }
285
+ const names = ['h', ...usedBuiltins].filter(name => !alreadyImports(source, name));
286
+ const prefix = names.length > 0
287
+ ? `import { ${names.join(', ')} } from '${RUNTIME_MODULE}';\n`
288
+ : '';
289
+ const shift = prefix.length;
290
+ const segments = builder.segments.map(segment => ({
291
+ ...segment,
292
+ generatedStart: segment.generatedStart + shift,
293
+ generatedEnd: segment.generatedEnd + shift
294
+ }));
295
+ return { code: prefix + builder.out, mapping: new CodeMapping(segments) };
296
+ }
297
+ /** True when the module already imports `name` via a named import. */
298
+ function alreadyImports(source, name) {
299
+ return new RegExp(`import\\s*\\{[^}]*\\b${name}\\b[^}]*\\}\\s*from`).test(source);
300
+ }
301
+ /** Trimmed inner span of an attribute whose value is `{expr}`. */
302
+ function attrExprSpan(source, attr) {
303
+ const open = source.indexOf('{', attr.start);
304
+ return trimSpan(source, open + 1, attr.end - 1);
305
+ }
306
+ /** Trimmed span of the argument of a `{...spread}` attribute. */
307
+ function spreadSpan(source, attr) {
308
+ const open = source.indexOf('{', attr.start);
309
+ const close = skipBalanced(source, open);
310
+ const inner = trimSpan(source, open + 1, close - 1);
311
+ // Skip a leading `...` so the mapped span covers just the expression.
312
+ if (source.startsWith('...', inner.start)) {
313
+ return trimSpan(source, inner.start + 3, inner.end);
314
+ }
315
+ return inner;
316
+ }
317
+ /** Narrows `[start, end)` to exclude surrounding whitespace. */
318
+ function trimSpan(source, start, end) {
319
+ let s = start;
320
+ let e = end;
321
+ while (s < e && isWhitespace(source[s])) {
322
+ s++;
323
+ }
324
+ while (e > s && isWhitespace(source[e - 1])) {
325
+ e--;
326
+ }
327
+ return { start: s, end: e };
328
+ }
329
+ // --- Emission predicates, ported from @azerothjs/compiler's codegen so the
330
+ // --- virtual module's reactive wrapping matches the shipped output exactly. ---
331
+ /** True when `code` is an arrow/function literal - emitted unwrapped. */
332
+ function isFunctionLiteral(code) {
333
+ const t = code.trim();
334
+ if (/^async\s+function\b/.test(t) || /^function\b/.test(t)) {
335
+ return true;
336
+ }
337
+ return /^(async\s+)?(\([^]*?\)|[A-Za-z_$][\w$]*)\s*=>/.test(t);
338
+ }
339
+ /** True for a bare identifier or dotted path (`draft`, `props.x`). */
340
+ function isBareReference(code) {
341
+ return /^[A-Za-z_$][\w$]*(\s*\.\s*[A-Za-z_$][\w$]*)*$/.test(code.trim());
342
+ }
343
+ /** True for an array/object literal (`[...]` / `{...}`). */
344
+ function isCollectionLiteral(code) {
345
+ const t = code.trim();
346
+ return t.startsWith('[') || t.startsWith('{');
347
+ }
348
+ /** True for an `on*` event attribute name (`on` + uppercase letter). */
349
+ function isEventName(name) {
350
+ return name.length > 2 && name.startsWith('on') && name[2] === name[2].toUpperCase();
351
+ }
352
+ /** Quotes an object key when it isn't a valid bare identifier. */
353
+ function objectKey(name) {
354
+ return /^[A-Za-z_$][\w$]*$/.test(name) ? name : `'${name}'`;
355
+ }
356
+ /** Escapes a literal string for emission inside single quotes. */
357
+ function quoteString(value) {
358
+ return `'${value.replace(/\\/g, '\\\\').replace(/'/g, '\\\'').replace(/\n/g, '\\n')}'`;
359
+ }
360
+ //# sourceMappingURL=virtual-code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"virtual-code.js","sourceRoot":"","sources":["../src/virtual-code.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "@azerothjs/language-service",
3
+ "version": "0.4.0-beta.1",
4
+ "description": "AzerothJS language service — compiler-aware intelligence for .azeroth files (completion, hover, definition, diagnostics, …)",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports":
10
+ {
11
+ ".":
12
+ {
13
+ "types": "./dist/index.d.ts",
14
+ "import": "./dist/index.js",
15
+ "default": "./dist/index.js"
16
+ }
17
+ },
18
+ "files":
19
+ [
20
+ "dist"
21
+ ],
22
+ "sideEffects": false,
23
+ "dependencies":
24
+ {
25
+ "@azerothjs/compiler": "0.4.0-beta.1",
26
+ "vscode-css-languageservice": "^6",
27
+ "vscode-html-languageservice": "^5",
28
+ "vscode-languageserver-textdocument": "^1"
29
+ },
30
+ "peerDependencies":
31
+ {
32
+ "typescript": ">=5"
33
+ },
34
+ "scripts":
35
+ {
36
+ "build": "tsc -p tsconfig.build.json",
37
+ "prepublishOnly": "npm run build"
38
+ },
39
+ "publishConfig":
40
+ {
41
+ "access": "public"
42
+ },
43
+ "author":
44
+ {
45
+ "name": "IntelligentQuantum",
46
+ "email": "IntelligentQuantum@Gmail.Com",
47
+ "url": "https://IntelligentQuantum.Dev/"
48
+ },
49
+ "license": "MIT",
50
+ "repository":
51
+ {
52
+ "type": "git",
53
+ "url": "git+https://github.com/IntelligentQuantum-Dev/AzerothJS.git",
54
+ "directory": "packages/language-service"
55
+ },
56
+ "homepage": "https://github.com/IntelligentQuantum-Dev/AzerothJS/tree/main/packages/language-service",
57
+ "bugs":
58
+ {
59
+ "url": "https://github.com/IntelligentQuantum-Dev/AzerothJS/issues"
60
+ }
61
+ }