@tamagui/language-service 3.0.0-beta.924.1 → 3.0.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.
Files changed (63) hide show
  1. package/README.md +25 -134
  2. package/dist/cjs/check.cjs +85 -10
  3. package/dist/cjs/check.native.cjs +138 -22
  4. package/dist/cjs/check.native.js +138 -22
  5. package/dist/cjs/check.native.js.map +1 -1
  6. package/dist/cjs/core.cjs +8 -4
  7. package/dist/cjs/core.native.cjs +10 -9
  8. package/dist/cjs/core.native.js +10 -9
  9. package/dist/cjs/core.native.js.map +1 -1
  10. package/dist/cjs/document.cjs +4 -3
  11. package/dist/cjs/document.native.cjs +5 -3
  12. package/dist/cjs/document.native.js +5 -3
  13. package/dist/cjs/document.native.js.map +1 -1
  14. package/dist/cjs/extract-estree.native.cjs +2 -6
  15. package/dist/cjs/extract-estree.native.js +2 -6
  16. package/dist/cjs/extract-estree.native.js.map +1 -1
  17. package/dist/cjs/index.cjs +5 -284
  18. package/dist/cjs/index.native.cjs +5 -395
  19. package/dist/cjs/index.native.js +5 -395
  20. package/dist/cjs/index.native.js.map +1 -1
  21. package/dist/esm/check.mjs +87 -12
  22. package/dist/esm/check.mjs.map +1 -1
  23. package/dist/esm/check.native.js +140 -24
  24. package/dist/esm/check.native.js.map +1 -1
  25. package/dist/esm/core.mjs +8 -4
  26. package/dist/esm/core.mjs.map +1 -1
  27. package/dist/esm/core.native.js +10 -9
  28. package/dist/esm/core.native.js.map +1 -1
  29. package/dist/esm/document.mjs +4 -3
  30. package/dist/esm/document.mjs.map +1 -1
  31. package/dist/esm/document.native.js +5 -3
  32. package/dist/esm/document.native.js.map +1 -1
  33. package/dist/esm/extract-estree.native.js +2 -6
  34. package/dist/esm/extract-estree.native.js.map +1 -1
  35. package/dist/esm/index.mjs +5 -279
  36. package/dist/esm/index.native.js +5 -390
  37. package/package.json +8 -17
  38. package/src/check.ts +118 -13
  39. package/src/core.ts +25 -6
  40. package/src/document.ts +21 -4
  41. package/src/index.ts +4 -452
  42. package/types/check.d.ts +4 -0
  43. package/types/check.d.ts.map +2 -2
  44. package/types/core.d.ts +7 -2
  45. package/types/core.d.ts.map +2 -2
  46. package/types/document.d.ts +8 -2
  47. package/types/document.d.ts.map +2 -2
  48. package/types/index.d.ts +4 -7
  49. package/types/index.d.ts.map +2 -2
  50. package/dist/cjs/host.cjs +0 -37
  51. package/dist/cjs/host.native.cjs +0 -60
  52. package/dist/cjs/host.native.js +0 -62
  53. package/dist/cjs/host.native.js.map +0 -1
  54. package/dist/esm/host.mjs +0 -17
  55. package/dist/esm/host.mjs.map +0 -1
  56. package/dist/esm/host.native.js +0 -38
  57. package/dist/esm/host.native.js.map +0 -1
  58. package/dist/esm/index.mjs.map +0 -1
  59. package/dist/esm/index.native.js.map +0 -1
  60. package/index.cjs +0 -1
  61. package/src/host.ts +0 -32
  62. package/types/host.d.ts +0 -10
  63. package/types/host.d.ts.map +0 -11
@@ -4,12 +4,6 @@ var __defProp = Object.defineProperty;
4
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __export = (target, all) => {
8
- for (var name in all) __defProp(target, name, {
9
- get: all[name],
10
- enumerable: true
11
- });
12
- };
13
7
  var __copyProps = (to, from, except, desc) => {
14
8
  if (from && typeof from === "object" || typeof from === "function") {
15
9
  for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
@@ -19,397 +13,13 @@ var __copyProps = (to, from, except, desc) => {
19
13
  }
20
14
  return to;
21
15
  };
16
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
22
17
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
23
18
  var index_exports = {};
24
- __export(index_exports, { default: () => index_default });
25
19
  module.exports = __toCommonJS(index_exports);
26
- var import_path = require("path");
27
- var import_core = require("./core.native.js");
28
- var import_host = require("./host.native.js");
29
- var completionSource = "@tamagui/language-service";
30
- var diagnosticCode = 78711;
31
- var defaultConfigPath = ".tamagui/tamagui.config.json";
32
- var flatStyledModules = /* @__PURE__ */ new Set([
33
- "tamagui",
34
- "tamagui/unstyled",
35
- "@tamagui/core",
36
- "@tamagui/ui",
37
- "@tamagui/web"
38
- ]);
39
- function loadTooling(info, configPath) {
40
- var contents = info.serverHost.readFile(configPath);
41
- if (contents === void 0) return null;
42
- try {
43
- return (0, import_core.createStyleTooling)(JSON.parse(contents));
44
- } catch (e) {
45
- return null;
46
- }
47
- }
48
- function findStringLiteralAtPosition(typescript, sourceFile, position) {
49
- var found = null;
50
- var visit = function(node) {
51
- if (position < node.getFullStart() || position > node.getEnd()) return;
52
- if (typescript.isStringLiteralLike(node) && position >= node.getStart(sourceFile) + 1 && position <= node.getEnd() - 1) {
53
- found = node;
54
- return;
55
- }
56
- typescript.forEachChild(node, visit);
57
- };
58
- visit(sourceFile);
59
- return found;
60
- }
61
- function importedBindings(typescript, sourceFile) {
62
- var styled = /* @__PURE__ */ new Set();
63
- var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
64
- try {
65
- for (var _iterator = sourceFile.statements[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
66
- var statement = _step.value;
67
- var _statement_importClause;
68
- if (!typescript.isImportDeclaration(statement) || !typescript.isStringLiteral(statement.moduleSpecifier)) {
69
- continue;
70
- }
71
- var source = statement.moduleSpecifier.text;
72
- if (!flatStyledModules.has(source)) continue;
73
- var bindings = (_statement_importClause = statement.importClause) === null || _statement_importClause === void 0 ? void 0 : _statement_importClause.namedBindings;
74
- if (!bindings) continue;
75
- if (typescript.isNamespaceImport(bindings)) continue;
76
- var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;
77
- try {
78
- for (var _iterator1 = bindings.elements[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {
79
- var element = _step1.value;
80
- var _element_propertyName;
81
- var imported = ((_element_propertyName = element.propertyName) === null || _element_propertyName === void 0 ? void 0 : _element_propertyName.text) || element.name.text;
82
- if (imported === "styled") styled.add(element.name.text);
83
- }
84
- } catch (err) {
85
- _didIteratorError1 = true;
86
- _iteratorError1 = err;
87
- } finally {
88
- try {
89
- if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
90
- _iterator1.return();
91
- }
92
- } finally {
93
- if (_didIteratorError1) {
94
- throw _iteratorError1;
95
- }
96
- }
97
- }
98
- }
99
- } catch (err) {
100
- _didIteratorError = true;
101
- _iteratorError = err;
102
- } finally {
103
- try {
104
- if (!_iteratorNormalCompletion && _iterator.return != null) {
105
- _iterator.return();
106
- }
107
- } finally {
108
- if (_didIteratorError) {
109
- throw _iteratorError;
110
- }
111
- }
112
- }
113
- return { styled };
114
- }
115
- function propertyName(typescript, name) {
116
- if (typescript.isIdentifier(name) || typescript.isStringLiteral(name)) {
117
- return name.text;
118
- }
119
- return null;
120
- }
121
- function completionProperty(typescript, literal, tooling, checker, bindings) {
122
- var parent = literal.parent;
123
- if (typescript.isJsxExpression(parent)) parent = parent.parent;
124
- if (typescript.isJsxAttribute(parent)) {
125
- if (!typescript.isIdentifier(parent.name)) return null;
126
- var property = parent.name.text;
127
- if (!tooling.styleProps.has(property)) return null;
128
- var opening = parent.parent.parent;
129
- if (!typescript.isJsxOpeningLikeElement(opening)) return null;
130
- var host = (0, import_host.resolveTamaguiHost)(checker, opening.tagName);
131
- if (!(host === null || host === void 0 ? void 0 : host.accepts(property))) return null;
132
- return { property };
133
- }
134
- if (!typescript.isPropertyAssignment(parent)) return null;
135
- var property1 = propertyName(typescript, parent.name);
136
- if (!property1 || !tooling.styleProps.has(property1)) return null;
137
- var current = parent;
138
- while (current.parent && !typescript.isCallExpression(current.parent)) {
139
- current = current.parent;
140
- }
141
- if (!current.parent || !typescript.isCallExpression(current.parent)) return null;
142
- var call = current.parent;
143
- if (call.arguments[1] !== current || !typescript.isIdentifier(call.expression) || !bindings.styled.has(call.expression.text)) {
144
- return null;
145
- }
146
- var component = call.arguments[0];
147
- var host1 = component && (0, import_host.resolveTamaguiHost)(checker, component);
148
- if (!(host1 === null || host1 === void 0 ? void 0 : host1.accepts(property1))) return null;
149
- return { property: property1 };
150
- }
151
- function siteForLiteral(typescript, sourceFile, literal, tooling, checker, bindings) {
152
- var site = completionProperty(typescript, literal, tooling, checker, bindings);
153
- if (!site) return null;
154
- var contentStart = literal.getStart(sourceFile) + 1;
155
- var contentEnd = literal.getEnd() - 1;
156
- var sourceInput = sourceFile.text.slice(contentStart, contentEnd);
157
- if (literal.text !== sourceInput) return null;
158
- return {
159
- property: site.property,
160
- value: literal.text,
161
- contentStart,
162
- literal
163
- };
164
- }
165
- function collectLiteralSites(typescript, sourceFile, tooling, checker, bindings) {
166
- var sites = [];
167
- var visit = function(node) {
168
- if (typescript.isStringLiteralLike(node)) {
169
- var site = siteForLiteral(typescript, sourceFile, node, tooling, checker, bindings);
170
- if (site) sites.push(site);
171
- return;
172
- }
173
- typescript.forEachChild(node, visit);
174
- };
175
- visit(sourceFile);
176
- return sites;
177
- }
178
- function copyLanguageService(service) {
179
- var proxy = /* @__PURE__ */ Object.create(null);
180
- var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
181
- try {
182
- for (var _iterator = Object.keys(service)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
183
- var key = _step.value;
184
- var value = service[key];
185
- proxy[key] = typeof value === "function" ? value.bind(service) : value;
186
- }
187
- } catch (err) {
188
- _didIteratorError = true;
189
- _iteratorError = err;
190
- } finally {
191
- try {
192
- if (!_iteratorNormalCompletion && _iterator.return != null) {
193
- _iterator.return();
194
- }
195
- } finally {
196
- if (_didIteratorError) {
197
- throw _iteratorError;
198
- }
199
- }
200
- }
201
- return proxy;
202
- }
203
- var init = function(param) {
204
- var { typescript } = param;
205
- return { create(info) {
206
- var pluginConfig = info.config;
207
- var configuredPath = (pluginConfig === null || pluginConfig === void 0 ? void 0 : pluginConfig.configPath) || defaultConfigPath;
208
- var configPath = (0, import_path.isAbsolute)(configuredPath) ? configuredPath : (0, import_path.resolve)(info.project.getCurrentDirectory(), configuredPath);
209
- var tooling = loadTooling(info, configPath);
210
- var watcher = info.serverHost.watchFile(configPath, function() {
211
- tooling = loadTooling(info, configPath);
212
- });
213
- var proxy = copyLanguageService(info.languageService);
214
- var baseCompletions = info.languageService.getCompletionsAtPosition.bind(info.languageService);
215
- var baseDetails = info.languageService.getCompletionEntryDetails.bind(info.languageService);
216
- var baseSemanticDiagnostics = info.languageService.getSemanticDiagnostics.bind(info.languageService);
217
- var baseQuickInfo = info.languageService.getQuickInfoAtPosition.bind(info.languageService);
218
- var baseDispose = info.languageService.dispose.bind(info.languageService);
219
- var bindingsBySourceFile = /* @__PURE__ */ new WeakMap();
220
- var fileContext = function(fileName) {
221
- var program = info.languageService.getProgram();
222
- var sourceFile = program === null || program === void 0 ? void 0 : program.getSourceFile(fileName);
223
- if (!program || !sourceFile) return null;
224
- var bindings = bindingsBySourceFile.get(sourceFile);
225
- if (!bindings) {
226
- bindings = importedBindings(typescript, sourceFile);
227
- bindingsBySourceFile.set(sourceFile, bindings);
228
- }
229
- return {
230
- sourceFile,
231
- checker: program.getTypeChecker(),
232
- bindings
233
- };
234
- };
235
- proxy.getCompletionsAtPosition = function(fileName, position, options, formattingSettings) {
236
- var getBaseCompletions = function() {
237
- return baseCompletions(fileName, position, options, formattingSettings);
238
- };
239
- if (!tooling) return getBaseCompletions();
240
- var context = fileContext(fileName);
241
- if (!context) return getBaseCompletions();
242
- var { sourceFile, checker, bindings } = context;
243
- var literal = findStringLiteralAtPosition(typescript, sourceFile, position);
244
- if (!literal) return getBaseCompletions();
245
- var site = siteForLiteral(typescript, sourceFile, literal, tooling, checker, bindings);
246
- if (!site) return getBaseCompletions();
247
- var cursorCompletions = tooling.completions(site.property, site.value, position - site.contentStart);
248
- if (!cursorCompletions) return getBaseCompletions();
249
- var replacementSpan = {
250
- start: site.contentStart + cursorCompletions.replaceStart,
251
- length: cursorCompletions.replaceLength
252
- };
253
- var entries = [];
254
- var contextualType;
255
- var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
256
- try {
257
- for (var _iterator = cursorCompletions.completions[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
258
- var completion = _step.value;
259
- var insertText = completion.insertText || completion.value;
260
- var modifierKind = completion.kind === "modifier" ? tooling.modifierKind(completion.value) : void 0;
261
- if (completion.kind === "keyword") {
262
- contextualType || (contextualType = checker.getContextualType(literal));
263
- if (!contextualType || !checker.isTypeAssignableTo(checker.getStringLiteralType(insertText), contextualType)) {
264
- continue;
265
- }
266
- }
267
- entries.push({
268
- name: completion.value,
269
- kind: typescript.ScriptElementKind.string,
270
- kindModifiers: "",
271
- sortText: (0, import_core.completionSortText)(completion, modifierKind),
272
- insertText,
273
- replacementSpan,
274
- source: completionSource,
275
- labelDetails: { description: modifierKind ? `Tamagui ${modifierKind} modifier` : completion.kind === "configured" ? "Tamagui configured value" : "Tamagui style keyword" }
276
- });
277
- }
278
- } catch (err) {
279
- _didIteratorError = true;
280
- _iteratorError = err;
281
- } finally {
282
- try {
283
- if (!_iteratorNormalCompletion && _iterator.return != null) {
284
- _iterator.return();
285
- }
286
- } finally {
287
- if (_didIteratorError) {
288
- throw _iteratorError;
289
- }
290
- }
291
- }
292
- if (entries.length === 0) return getBaseCompletions();
293
- return {
294
- isGlobalCompletion: false,
295
- isMemberCompletion: false,
296
- isNewIdentifierLocation: true,
297
- isIncomplete: true,
298
- entries
299
- };
300
- };
301
- proxy.getCompletionEntryDetails = function(fileName, position, entryName, formatOptions, source, preferences, data) {
302
- if (source === completionSource) {
303
- return {
304
- name: entryName,
305
- kind: typescript.ScriptElementKind.string,
306
- kindModifiers: "",
307
- displayParts: [{
308
- text: entryName,
309
- kind: "stringLiteral"
310
- }],
311
- documentation: [{
312
- text: "Resolved from the active Tamagui config.",
313
- kind: "text"
314
- }],
315
- tags: []
316
- };
317
- }
318
- return baseDetails(fileName, position, entryName, formatOptions, source, preferences, data);
319
- };
320
- proxy.getSemanticDiagnostics = function(fileName) {
321
- var diagnostics = [...baseSemanticDiagnostics(fileName)];
322
- if (!tooling) return diagnostics;
323
- var context = fileContext(fileName);
324
- if (!context) return diagnostics;
325
- var { sourceFile, checker, bindings } = context;
326
- var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
327
- try {
328
- for (var _iterator = collectLiteralSites(typescript, sourceFile, tooling, checker, bindings)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
329
- var site = _step.value;
330
- var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;
331
- try {
332
- for (var _iterator1 = tooling.diagnostics(site.property, site.value)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {
333
- var diagnostic = _step1.value;
334
- diagnostics.push({
335
- file: sourceFile,
336
- start: site.contentStart + diagnostic.start,
337
- length: Math.max(1, diagnostic.end - diagnostic.start),
338
- messageText: diagnostic.message,
339
- category: typescript.DiagnosticCategory.Error,
340
- code: diagnosticCode,
341
- source: completionSource
342
- });
343
- }
344
- } catch (err) {
345
- _didIteratorError1 = true;
346
- _iteratorError1 = err;
347
- } finally {
348
- try {
349
- if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
350
- _iterator1.return();
351
- }
352
- } finally {
353
- if (_didIteratorError1) {
354
- throw _iteratorError1;
355
- }
356
- }
357
- }
358
- }
359
- } catch (err) {
360
- _didIteratorError = true;
361
- _iteratorError = err;
362
- } finally {
363
- try {
364
- if (!_iteratorNormalCompletion && _iterator.return != null) {
365
- _iterator.return();
366
- }
367
- } finally {
368
- if (_didIteratorError) {
369
- throw _iteratorError;
370
- }
371
- }
372
- }
373
- return diagnostics;
374
- };
375
- proxy.getQuickInfoAtPosition = function(fileName, position) {
376
- var getBaseQuickInfo = function() {
377
- return baseQuickInfo(fileName, position);
378
- };
379
- if (!tooling) return getBaseQuickInfo();
380
- var context = fileContext(fileName);
381
- if (!context) return getBaseQuickInfo();
382
- var { sourceFile, checker, bindings } = context;
383
- var literal = findStringLiteralAtPosition(typescript, sourceFile, position);
384
- if (!literal) return getBaseQuickInfo();
385
- var site = siteForLiteral(typescript, sourceFile, literal, tooling, checker, bindings);
386
- if (!site) return getBaseQuickInfo();
387
- var hover = tooling.hover(site.property, site.value, position - site.contentStart);
388
- if (!hover) return getBaseQuickInfo();
389
- return {
390
- kind: typescript.ScriptElementKind.string,
391
- kindModifiers: "",
392
- textSpan: {
393
- start: site.contentStart + hover.start,
394
- length: hover.end - hover.start
395
- },
396
- displayParts: [{
397
- text: hover.text,
398
- kind: "stringLiteral"
399
- }],
400
- documentation: [{
401
- text: hover.markdown,
402
- kind: "text"
403
- }]
404
- };
405
- };
406
- proxy.dispose = function() {
407
- watcher.close();
408
- baseDispose();
409
- };
410
- return proxy;
411
- } };
412
- };
413
- var index_default = init;
20
+ __reExport(index_exports, require("./core.native.js"), module.exports);
21
+ __reExport(index_exports, require("./document.native.js"), module.exports);
22
+ __reExport(index_exports, require("./extract-estree.native.js"), module.exports);
23
+ __reExport(index_exports, require("./extract-sucrase.native.js"), module.exports);
414
24
 
415
25
  //# sourceMappingURL=index.native.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.native.js","names":[],"sources":["cjs/index.native.js"],"sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar index_exports = {};\n__export(index_exports, {\n default: () => index_default\n});\nmodule.exports = __toCommonJS(index_exports);\nvar import_path = require(\"path\");\nvar import_core = require(\"./core\");\nvar import_host = require(\"./host\");\nvar completionSource = \"@tamagui/language-service\";\nvar diagnosticCode = 78711;\nvar defaultConfigPath = \".tamagui/tamagui.config.json\";\nvar flatStyledModules = /* @__PURE__ */ new Set([\n \"tamagui\",\n \"tamagui/unstyled\",\n \"@tamagui/core\",\n \"@tamagui/ui\",\n \"@tamagui/web\"\n]);\nfunction loadTooling(info, configPath) {\n var contents = info.serverHost.readFile(configPath);\n if (contents === void 0) return null;\n try {\n return (0, import_core.createStyleTooling)(JSON.parse(contents));\n } catch (e) {\n return null;\n }\n}\nfunction findStringLiteralAtPosition(typescript, sourceFile, position) {\n var found = null;\n var visit = function(node) {\n if (position < node.getFullStart() || position > node.getEnd()) return;\n if (typescript.isStringLiteralLike(node) && position >= node.getStart(sourceFile) + 1 && position <= node.getEnd() - 1) {\n found = node;\n return;\n }\n typescript.forEachChild(node, visit);\n };\n visit(sourceFile);\n return found;\n}\nfunction importedBindings(typescript, sourceFile) {\n var styled = /* @__PURE__ */ new Set();\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = sourceFile.statements[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var statement = _step.value;\n var _statement_importClause;\n if (!typescript.isImportDeclaration(statement) || !typescript.isStringLiteral(statement.moduleSpecifier)) {\n continue;\n }\n var source = statement.moduleSpecifier.text;\n if (!flatStyledModules.has(source)) continue;\n var bindings = (_statement_importClause = statement.importClause) === null || _statement_importClause === void 0 ? void 0 : _statement_importClause.namedBindings;\n if (!bindings) continue;\n if (typescript.isNamespaceImport(bindings)) continue;\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;\n try {\n for (var _iterator1 = bindings.elements[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {\n var element = _step1.value;\n var _element_propertyName;\n var imported = ((_element_propertyName = element.propertyName) === null || _element_propertyName === void 0 ? void 0 : _element_propertyName.text) || element.name.text;\n if (imported === \"styled\") styled.add(element.name.text);\n }\n } catch (err) {\n _didIteratorError1 = true;\n _iteratorError1 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion1 && _iterator1.return != null) {\n _iterator1.return();\n }\n } finally {\n if (_didIteratorError1) {\n throw _iteratorError1;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return {\n styled\n };\n}\nfunction propertyName(typescript, name) {\n if (typescript.isIdentifier(name) || typescript.isStringLiteral(name)) {\n return name.text;\n }\n return null;\n}\nfunction completionProperty(typescript, literal, tooling, checker, bindings) {\n var parent = literal.parent;\n if (typescript.isJsxExpression(parent)) parent = parent.parent;\n if (typescript.isJsxAttribute(parent)) {\n if (!typescript.isIdentifier(parent.name)) return null;\n var property = parent.name.text;\n if (!tooling.styleProps.has(property)) return null;\n var opening = parent.parent.parent;\n if (!typescript.isJsxOpeningLikeElement(opening)) return null;\n var host = (0, import_host.resolveTamaguiHost)(checker, opening.tagName);\n if (!(host === null || host === void 0 ? void 0 : host.accepts(property))) return null;\n return {\n property\n };\n }\n if (!typescript.isPropertyAssignment(parent)) return null;\n var property1 = propertyName(typescript, parent.name);\n if (!property1 || !tooling.styleProps.has(property1)) return null;\n var current = parent;\n while (current.parent && !typescript.isCallExpression(current.parent)) {\n current = current.parent;\n }\n if (!current.parent || !typescript.isCallExpression(current.parent)) return null;\n var call = current.parent;\n if (call.arguments[1] !== current || !typescript.isIdentifier(call.expression) || !bindings.styled.has(call.expression.text)) {\n return null;\n }\n var component = call.arguments[0];\n var host1 = component && (0, import_host.resolveTamaguiHost)(checker, component);\n if (!(host1 === null || host1 === void 0 ? void 0 : host1.accepts(property1))) return null;\n return {\n property: property1\n };\n}\nfunction siteForLiteral(typescript, sourceFile, literal, tooling, checker, bindings) {\n var site = completionProperty(typescript, literal, tooling, checker, bindings);\n if (!site) return null;\n var contentStart = literal.getStart(sourceFile) + 1;\n var contentEnd = literal.getEnd() - 1;\n var sourceInput = sourceFile.text.slice(contentStart, contentEnd);\n if (literal.text !== sourceInput) return null;\n return {\n property: site.property,\n value: literal.text,\n contentStart,\n literal\n };\n}\nfunction collectLiteralSites(typescript, sourceFile, tooling, checker, bindings) {\n var sites = [];\n var visit = function(node) {\n if (typescript.isStringLiteralLike(node)) {\n var site = siteForLiteral(typescript, sourceFile, node, tooling, checker, bindings);\n if (site) sites.push(site);\n return;\n }\n typescript.forEachChild(node, visit);\n };\n visit(sourceFile);\n return sites;\n}\nfunction copyLanguageService(service) {\n var proxy = /* @__PURE__ */ Object.create(null);\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = Object.keys(service)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var key = _step.value;\n var value = service[key];\n proxy[key] = typeof value === \"function\" ? value.bind(service) : value;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return proxy;\n}\nvar init = function(param) {\n var { typescript } = param;\n return {\n create(info) {\n var pluginConfig = info.config;\n var configuredPath = (pluginConfig === null || pluginConfig === void 0 ? void 0 : pluginConfig.configPath) || defaultConfigPath;\n var configPath = (0, import_path.isAbsolute)(configuredPath) ? configuredPath : (0, import_path.resolve)(info.project.getCurrentDirectory(), configuredPath);\n var tooling = loadTooling(info, configPath);\n var watcher = info.serverHost.watchFile(configPath, function() {\n tooling = loadTooling(info, configPath);\n });\n var proxy = copyLanguageService(info.languageService);\n var baseCompletions = info.languageService.getCompletionsAtPosition.bind(info.languageService);\n var baseDetails = info.languageService.getCompletionEntryDetails.bind(info.languageService);\n var baseSemanticDiagnostics = info.languageService.getSemanticDiagnostics.bind(info.languageService);\n var baseQuickInfo = info.languageService.getQuickInfoAtPosition.bind(info.languageService);\n var baseDispose = info.languageService.dispose.bind(info.languageService);\n var bindingsBySourceFile = /* @__PURE__ */ new WeakMap();\n var fileContext = function(fileName) {\n var program = info.languageService.getProgram();\n var sourceFile = program === null || program === void 0 ? void 0 : program.getSourceFile(fileName);\n if (!program || !sourceFile) return null;\n var bindings = bindingsBySourceFile.get(sourceFile);\n if (!bindings) {\n bindings = importedBindings(typescript, sourceFile);\n bindingsBySourceFile.set(sourceFile, bindings);\n }\n return {\n sourceFile,\n checker: program.getTypeChecker(),\n bindings\n };\n };\n proxy.getCompletionsAtPosition = function(fileName, position, options, formattingSettings) {\n var getBaseCompletions = function() {\n return baseCompletions(fileName, position, options, formattingSettings);\n };\n if (!tooling) return getBaseCompletions();\n var context = fileContext(fileName);\n if (!context) return getBaseCompletions();\n var { sourceFile, checker, bindings } = context;\n var literal = findStringLiteralAtPosition(typescript, sourceFile, position);\n if (!literal) return getBaseCompletions();\n var site = siteForLiteral(typescript, sourceFile, literal, tooling, checker, bindings);\n if (!site) return getBaseCompletions();\n var cursorCompletions = tooling.completions(site.property, site.value, position - site.contentStart);\n if (!cursorCompletions) return getBaseCompletions();\n var replacementSpan = {\n start: site.contentStart + cursorCompletions.replaceStart,\n length: cursorCompletions.replaceLength\n };\n var entries = [];\n var contextualType;\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = cursorCompletions.completions[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var completion = _step.value;\n var insertText = completion.insertText || completion.value;\n var modifierKind = completion.kind === \"modifier\" ? tooling.modifierKind(completion.value) : void 0;\n if (completion.kind === \"keyword\") {\n contextualType || (contextualType = checker.getContextualType(literal));\n if (!contextualType || !checker.isTypeAssignableTo(checker.getStringLiteralType(insertText), contextualType)) {\n continue;\n }\n }\n entries.push({\n name: completion.value,\n kind: typescript.ScriptElementKind.string,\n kindModifiers: \"\",\n sortText: (0, import_core.completionSortText)(completion, modifierKind),\n insertText,\n replacementSpan,\n source: completionSource,\n labelDetails: {\n description: modifierKind ? `Tamagui ${modifierKind} modifier` : completion.kind === \"configured\" ? \"Tamagui configured value\" : \"Tamagui style keyword\"\n }\n });\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n if (entries.length === 0) return getBaseCompletions();\n return {\n isGlobalCompletion: false,\n isMemberCompletion: false,\n isNewIdentifierLocation: true,\n // A completion requested immediately after whitespace has an empty\n // replacement span. Ask the editor to request again as the modifier\n // prefix grows instead of dismissing suggestions when the cursor\n // moves beyond that initial span.\n isIncomplete: true,\n entries\n };\n };\n proxy.getCompletionEntryDetails = function(fileName, position, entryName, formatOptions, source, preferences, data) {\n if (source === completionSource) {\n return {\n name: entryName,\n kind: typescript.ScriptElementKind.string,\n kindModifiers: \"\",\n displayParts: [\n {\n text: entryName,\n kind: \"stringLiteral\"\n }\n ],\n documentation: [\n {\n text: \"Resolved from the active Tamagui config.\",\n kind: \"text\"\n }\n ],\n tags: []\n };\n }\n return baseDetails(fileName, position, entryName, formatOptions, source, preferences, data);\n };\n proxy.getSemanticDiagnostics = function(fileName) {\n var diagnostics = [\n ...baseSemanticDiagnostics(fileName)\n ];\n if (!tooling) return diagnostics;\n var context = fileContext(fileName);\n if (!context) return diagnostics;\n var { sourceFile, checker, bindings } = context;\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = collectLiteralSites(typescript, sourceFile, tooling, checker, bindings)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var site = _step.value;\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;\n try {\n for (var _iterator1 = tooling.diagnostics(site.property, site.value)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {\n var diagnostic = _step1.value;\n diagnostics.push({\n file: sourceFile,\n start: site.contentStart + diagnostic.start,\n length: Math.max(1, diagnostic.end - diagnostic.start),\n messageText: diagnostic.message,\n category: typescript.DiagnosticCategory.Error,\n code: diagnosticCode,\n source: completionSource\n });\n }\n } catch (err) {\n _didIteratorError1 = true;\n _iteratorError1 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion1 && _iterator1.return != null) {\n _iterator1.return();\n }\n } finally {\n if (_didIteratorError1) {\n throw _iteratorError1;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return diagnostics;\n };\n proxy.getQuickInfoAtPosition = function(fileName, position) {\n var getBaseQuickInfo = function() {\n return baseQuickInfo(fileName, position);\n };\n if (!tooling) return getBaseQuickInfo();\n var context = fileContext(fileName);\n if (!context) return getBaseQuickInfo();\n var { sourceFile, checker, bindings } = context;\n var literal = findStringLiteralAtPosition(typescript, sourceFile, position);\n if (!literal) return getBaseQuickInfo();\n var site = siteForLiteral(typescript, sourceFile, literal, tooling, checker, bindings);\n if (!site) return getBaseQuickInfo();\n var hover = tooling.hover(site.property, site.value, position - site.contentStart);\n if (!hover) return getBaseQuickInfo();\n return {\n kind: typescript.ScriptElementKind.string,\n kindModifiers: \"\",\n textSpan: {\n start: site.contentStart + hover.start,\n length: hover.end - hover.start\n },\n displayParts: [\n {\n text: hover.text,\n kind: \"stringLiteral\"\n }\n ],\n documentation: [\n {\n text: hover.markdown,\n kind: \"text\"\n }\n ]\n };\n };\n proxy.dispose = function() {\n watcher.close();\n baseDispose();\n };\n return proxy;\n }\n };\n};\nvar index_default = init;\n//# sourceMappingURL=index.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.native.js","names":[],"sources":["cjs/index.native.js"],"sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, \"default\"), secondTarget && __copyProps(secondTarget, mod, \"default\"));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar index_exports = {};\nmodule.exports = __toCommonJS(index_exports);\n__reExport(index_exports, require(\"./core\"), module.exports);\n__reExport(index_exports, require(\"./document\"), module.exports);\n__reExport(index_exports, require(\"./extract-estree\"), module.exports);\n__reExport(index_exports, require(\"./extract-sucrase\"), module.exports);\n//# sourceMappingURL=index.js.map\n"],"mappings":";;;AACA,IAAI,YAAY,OAAO;AACvB,IAAI,mBAAmB,OAAO;AAC9B,IAAI,oBAAoB,OAAO;AAC/B,IAAI,eAAe,OAAO,UAAU;AACpC,IAAI,eAAe,IAAI,MAAM,QAAQ,SAAS;CAC5C,IAAI,QAAQ,OAAO,SAAS,YAAY,OAAO,SAAS,YAAY;EAClE,KAAK,IAAI,OAAO,kBAAkB,IAAI,GACpC,IAAI,CAAC,aAAa,KAAK,IAAI,GAAG,KAAK,QAAQ,QACzC,UAAU,IAAI,KAAK;GAAE,WAAW,KAAK;GAAM,YAAY,EAAE,OAAO,iBAAiB,MAAM,GAAG,MAAM,KAAK;EAAW,CAAC;CACvH;CACA,OAAO;AACT;AACA,IAAI,cAAc,QAAQ,KAAK,kBAAkB,YAAY,QAAQ,KAAK,SAAS,GAAG,gBAAgB,YAAY,cAAc,KAAK,SAAS;AAC9I,IAAI,gBAAgB,QAAQ,YAAY,UAAU,CAAC,GAAG,cAAc,EAAE,OAAO,KAAK,CAAC,GAAG,GAAG;AACzF,IAAI,gBAAgB,CAAC;AACrB,OAAO,UAAU,aAAa,aAAa;AAC3C,WAAW,eAAe,QAAQ,kBAAQ,GAAG,OAAO,OAAO;AAC3D,WAAW,eAAe,QAAQ,sBAAY,GAAG,OAAO,OAAO;AAC/D,WAAW,eAAe,QAAQ,4BAAkB,GAAG,OAAO,OAAO;AACrE,WAAW,eAAe,QAAQ,6BAAmB,GAAG,OAAO,OAAO"}
@@ -1,5 +1,6 @@
1
- import { readFileSync, readdirSync } from "node:fs";
2
- import { join, relative } from "node:path";
1
+ import { existsSync, readFileSync, readdirSync } from "node:fs";
2
+ import { dirname, join, relative, resolve } from "node:path";
3
+ import { spawnSync } from "node:child_process";
3
4
  import { parse } from "sucrase/dist/parser/index.js";
4
5
  import { TokenType } from "sucrase/dist/parser/tokenizer/types.js";
5
6
  import { createStyleTooling } from "./core.mjs";
@@ -18,18 +19,29 @@ const skippedDirectories = /* @__PURE__ */ new Set([
18
19
  ".expo",
19
20
  ".tamagui"
20
21
  ]);
22
+ const projectMarkers = [
23
+ "tamagui.build.ts",
24
+ "tamagui.build.tsx",
25
+ "tamagui.build.js",
26
+ "tamagui.build.mjs",
27
+ "tamagui.build.cjs"
28
+ ];
21
29
  var MissingConfigArtifactError = class extends Error {
22
30
  constructor(configPath) {
23
31
  super(`no Tamagui config artifact at ${configPath} \u2014 run your dev server or \`tamagui generate\` once so the compiler emits it`);
24
32
  this.name = "MissingConfigArtifactError";
25
33
  }
26
34
  };
27
- function walkSourceFiles(directory, results) {
35
+ function walkSourceFiles(directory, root, results, skippedProjects) {
28
36
  for (const entry of readdirSync(directory, { withFileTypes: true })) {
29
37
  if (entry.isDirectory()) {
30
- if (!skippedDirectories.has(entry.name) && !entry.name.startsWith(".")) {
31
- walkSourceFiles(join(directory, entry.name), results);
38
+ if (skippedDirectories.has(entry.name) || entry.name.startsWith(".")) continue;
39
+ const child = join(directory, entry.name);
40
+ if (projectMarkers.some((marker) => existsSync(join(child, marker))) || existsSync(join(child, ".tamagui", "tamagui.config.json"))) {
41
+ skippedProjects.push(relative(root, child));
42
+ continue;
32
43
  }
44
+ walkSourceFiles(child, root, results, skippedProjects);
33
45
  continue;
34
46
  }
35
47
  if (sourceExtensions.test(entry.name)) results.push(join(directory, entry.name));
@@ -42,23 +54,82 @@ function createProjectExtractor(isStyleProp) {
42
54
  }, { isStyleProp });
43
55
  }
44
56
  function checkStyleFiles(options) {
45
- const configPath = options.configPath ?? join(options.root, ".tamagui", "tamagui.config.json");
57
+ const root = resolve(options.root);
58
+ const configPath = options.configPath ?? join(root, ".tamagui", "tamagui.config.json");
46
59
  let contents;
47
60
  try {
48
61
  contents = readFileSync(configPath, "utf8");
49
62
  } catch {
50
63
  throw new MissingConfigArtifactError(configPath);
51
64
  }
52
- const tooling = createStyleTooling(JSON.parse(contents));
65
+ const tooling = createStyleTooling(JSON.parse(contents), { strictPayloads: options.strict });
53
66
  if (!tooling) throw new MissingConfigArtifactError(configPath);
54
- const document = createDocumentStyleTooling(tooling, createProjectExtractor((name) => tooling.isStyleProp(name)));
67
+ const document = createDocumentStyleTooling(tooling, createProjectExtractor((name) => tooling.isStyleProp(name)), { strictPayloads: options.strict });
55
68
  let files;
69
+ const skippedProjects = [];
56
70
  if (options.files) {
57
71
  files = [...options.files];
58
72
  } else {
59
73
  files = [];
60
- walkSourceFiles(options.root, files);
74
+ const insideGit = spawnSync("git", ["rev-parse", "--is-inside-work-tree"], {
75
+ cwd: root,
76
+ encoding: "utf8"
77
+ });
78
+ if (insideGit.status === 0) {
79
+ const listed = spawnSync("git", [
80
+ "ls-files",
81
+ "--cached",
82
+ "--others",
83
+ "--exclude-standard",
84
+ "-z",
85
+ "--",
86
+ "*.tsx",
87
+ "*.jsx"
88
+ ], {
89
+ cwd: root,
90
+ encoding: "utf8",
91
+ maxBuffer: 64 * 1024 * 1024
92
+ });
93
+ if (listed.error) throw listed.error;
94
+ if (listed.status !== 0) {
95
+ throw new Error(listed.stderr.trim() || "git ls-files failed");
96
+ }
97
+ const skipped = /* @__PURE__ */ new Set();
98
+ const projectByDirectory = /* @__PURE__ */ new Map();
99
+ for (const relativeFile of listed.stdout.split("\0")) {
100
+ if (!relativeFile) continue;
101
+ const file = join(root, relativeFile);
102
+ if (!existsSync(file)) continue;
103
+ let directory = dirname(file);
104
+ let nestedProject = null;
105
+ const visited = [];
106
+ while (directory !== root) {
107
+ if (projectByDirectory.has(directory)) {
108
+ nestedProject = projectByDirectory.get(directory) ?? null;
109
+ break;
110
+ }
111
+ visited.push(directory);
112
+ if (projectMarkers.some((marker) => existsSync(join(directory, marker))) || existsSync(join(directory, ".tamagui", "tamagui.config.json"))) {
113
+ nestedProject = directory;
114
+ break;
115
+ }
116
+ directory = dirname(directory);
117
+ }
118
+ for (const visitedDirectory of visited) {
119
+ projectByDirectory.set(visitedDirectory, nestedProject);
120
+ }
121
+ if (nestedProject) {
122
+ skipped.add(relative(root, nestedProject));
123
+ } else {
124
+ files.push(file);
125
+ }
126
+ }
127
+ skippedProjects.push(...skipped);
128
+ } else {
129
+ walkSourceFiles(root, root, files, skippedProjects);
130
+ }
61
131
  files.sort();
132
+ skippedProjects.sort();
62
133
  }
63
134
  const checked = [];
64
135
  let diagnosticCount = 0;
@@ -71,14 +142,14 @@ function checkStyleFiles(options) {
71
142
  }
72
143
  let diagnostics;
73
144
  try {
74
- diagnostics = document.diagnostics(source);
145
+ diagnostics = document.diagnostics(source, void 0, { strictPayloads: options.strict });
75
146
  } catch {
76
147
  continue;
77
148
  }
78
149
  if (diagnostics.length === 0) continue;
79
150
  diagnosticCount += diagnostics.length;
80
151
  checked.push({
81
- file: relative(options.root, file),
152
+ file: relative(root, file),
82
153
  source,
83
154
  diagnostics
84
155
  });
@@ -86,7 +157,8 @@ function checkStyleFiles(options) {
86
157
  return {
87
158
  files: checked,
88
159
  checkedFileCount: files.length,
89
- diagnosticCount
160
+ diagnosticCount,
161
+ skippedProjects
90
162
  };
91
163
  }
92
164
  const ansi = {
@@ -139,6 +211,9 @@ function formatCheckResults(result, options = {}) {
139
211
  output.push("");
140
212
  }
141
213
  }
214
+ if (result.skippedProjects.length > 0) {
215
+ output.push(paint.dim(`Skipped nested Tamagui projects: ${result.skippedProjects.join(", ")}`));
216
+ }
142
217
  const summary = result.diagnosticCount === 0 ? `${paint.bold("✓")} ${result.checkedFileCount} files, no flat value problems` : `${paint.red(paint.bold(`\u2717 ${result.diagnosticCount} problem${result.diagnosticCount === 1 ? "" : "s"}`))} in ${result.files.length} file${result.files.length === 1 ? "" : "s"} ${paint.dim(`(${result.checkedFileCount} checked)`)}`;
143
218
  output.push(summary);
144
219
  return output.join("\n");