@gtsx/core 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/init.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
2
  import { join } from "node:path";
3
3
  const CONFIG_FILE = "gtsx.config.ts";
4
- const INSTRUCTIONS_FILE = ".cursor/rules/gtsx.md";
4
+ const INSTRUCTIONS_FILE = "AGENTS.md";
5
5
  export function initGTSX(options) {
6
6
  const changes = [
7
7
  `${existsSync(join(options.cwd, CONFIG_FILE)) ? "Would keep" : "Would create"} ${CONFIG_FILE}`,
@@ -63,7 +63,7 @@ export default defineGTSXConfig({
63
63
  allUrl: "http://localhost:{port}/gtsx?entry={entry}{gcase}",
64
64
  },
65
65
  studio: {
66
- manifestCacheTtlMs: 1000,
66
+ manifestCacheTtlMs: 60_000,
67
67
  },
68
68
  })
69
69
  `;
package/dist/init.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC5E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAahC,MAAM,WAAW,GAAG,gBAAgB,CAAA;AACpC,MAAM,iBAAiB,GAAG,uBAAuB,CAAA;AAEjD,MAAM,UAAU,QAAQ,CAAC,OAAoB;IAC3C,MAAM,OAAO,GAAG;QACd,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,IAAI,WAAW,EAAE;QAC9F,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,IAAI,iBAAiB,EAAE;QAC1G,mEAAmE;KACpE,CAAA;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO;YACL,QAAQ,EAAE,CAAC;YACX,MAAM,EAAE,wCAAwC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YACrG,MAAM,EAAE,EAAE;SACX,CAAA;IACH,CAAC;IAED,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC,CAAA;IAChE,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,iBAAiB,CAAC,EAAE,oBAAoB,EAAE,CAAC,CAAA;IAC5E,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAEhC,OAAO;QACL,QAAQ,EAAE,CAAC;QACX,MAAM,EAAE,yCAAyC;QACjD,MAAM,EAAE,EAAE;KACX,CAAA;AACH,CAAC;AAED,SAAS,cAAc,CAAC,QAAgB,EAAE,OAAe;IACvD,IAAI,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAM;IAChC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACpD,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;AAClC,CAAC;AAED,SAAS,mBAAmB,CAAC,GAAW;IACtC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAA;IAC7C,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAM;IAEpC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAE/D,CAAA;IACD,WAAW,CAAC,OAAO,GAAG;QACpB,GAAG,CAAC,WAAW,CAAC,OAAO,IAAI,EAAE,CAAC;QAC9B,YAAY,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,YAAY,CAAC,IAAI,YAAY;QACjE,YAAY,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,YAAY,CAAC,IAAI,YAAY;QACjE,cAAc,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,cAAc,CAAC,IAAI,cAAc;KACxE,CAAA;IAED,aAAa,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAA;AACzE,CAAC;AAED,SAAS,cAAc;IACrB,OAAO;;;;;;;;;;;;;;;;;;;;;;CAsBR,CAAA;AACD,CAAC;AAED,SAAS,oBAAoB;IAC3B,OAAO;;;;;;;;;;CAUR,CAAA;AACD,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC5E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAahC,MAAM,WAAW,GAAG,gBAAgB,CAAA;AACpC,MAAM,iBAAiB,GAAG,WAAW,CAAA;AAErC,MAAM,UAAU,QAAQ,CAAC,OAAoB;IAC3C,MAAM,OAAO,GAAG;QACd,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,IAAI,WAAW,EAAE;QAC9F,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,IAAI,iBAAiB,EAAE;QAC1G,mEAAmE;KACpE,CAAA;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO;YACL,QAAQ,EAAE,CAAC;YACX,MAAM,EAAE,wCAAwC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YACrG,MAAM,EAAE,EAAE;SACX,CAAA;IACH,CAAC;IAED,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC,CAAA;IAChE,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,iBAAiB,CAAC,EAAE,oBAAoB,EAAE,CAAC,CAAA;IAC5E,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAEhC,OAAO;QACL,QAAQ,EAAE,CAAC;QACX,MAAM,EAAE,yCAAyC;QACjD,MAAM,EAAE,EAAE;KACX,CAAA;AACH,CAAC;AAED,SAAS,cAAc,CAAC,QAAgB,EAAE,OAAe;IACvD,IAAI,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAM;IAChC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACpD,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;AAClC,CAAC;AAED,SAAS,mBAAmB,CAAC,GAAW;IACtC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAA;IAC7C,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAM;IAEpC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAE/D,CAAA;IACD,WAAW,CAAC,OAAO,GAAG;QACpB,GAAG,CAAC,WAAW,CAAC,OAAO,IAAI,EAAE,CAAC;QAC9B,YAAY,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,YAAY,CAAC,IAAI,YAAY;QACjE,YAAY,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,YAAY,CAAC,IAAI,YAAY;QACjE,cAAc,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,cAAc,CAAC,IAAI,cAAc;KACxE,CAAA;IAED,aAAa,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAA;AACzE,CAAC;AAED,SAAS,cAAc;IACrB,OAAO;;;;;;;;;;;;;;;;;;;;;;CAsBR,CAAA;AACD,CAAC;AAED,SAAS,oBAAoB;IAC3B,OAAO;;;;;;;;;;CAUR,CAAA;AACD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"project-index.d.ts","sourceRoot":"","sources":["../src/project-index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAgB,KAAK,kBAAkB,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAA;AAG1F,MAAM,MAAM,yBAAyB,GAAG;IACtC,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAA;IAChC,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAA;IAClC,SAAS,EAAE,kBAAkB,CAAC,WAAW,CAAC,CAAA;IAC1C,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,WAAW,EAAE,cAAc,EAAE,CAAA;CAC9B,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,yBAAyB,EAAE,CAAA;IACvC,WAAW,EAAE,cAAc,EAAE,CAAA;CAC9B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,CAAC,CAAA;IACV,KAAK,EAAE,oBAAoB,EAAE,CAAA;IAC7B,WAAW,EAAE,cAAc,EAAE,CAAA;CAC9B,CAAA;AAED,MAAM,MAAM,4BAA4B,GAAG;IACzC,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,4BAA4B,GAAG;IACzC,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AA6BD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,4BAA4B,GAAG,gBAAgB,CAoB7F;AAED,wBAAgB,mCAAmC,CAAC,YAAY,GAAE,4BAAiC,IAMzF,SAAS,4BAA4B,KAAG,gBAAgB,CAYjE"}
1
+ {"version":3,"file":"project-index.d.ts","sourceRoot":"","sources":["../src/project-index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAyC,KAAK,kBAAkB,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAA;AAGnH,MAAM,MAAM,yBAAyB,GAAG;IACtC,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAA;IAChC,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAA;IAClC,SAAS,EAAE,kBAAkB,CAAC,WAAW,CAAC,CAAA;IAC1C,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,WAAW,EAAE,cAAc,EAAE,CAAA;CAC9B,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,yBAAyB,EAAE,CAAA;IACvC,WAAW,EAAE,cAAc,EAAE,CAAA;CAC9B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,CAAC,CAAA;IACV,KAAK,EAAE,oBAAoB,EAAE,CAAA;IAC7B,WAAW,EAAE,cAAc,EAAE,CAAA;CAC9B,CAAA;AAED,MAAM,MAAM,4BAA4B,GAAG;IACzC,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,4BAA4B,GAAG;IACzC,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAuCD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,4BAA4B,GAAG,gBAAgB,CAuB7F;AAED,wBAAgB,mCAAmC,CAAC,YAAY,GAAE,4BAAiC,IAIzF,SAAS,4BAA4B,KAAG,gBAAgB,CAYjE"}
@@ -2,18 +2,20 @@ import { createHash } from "node:crypto";
2
2
  import { readdirSync, readFileSync } from "node:fs";
3
3
  import { dirname, join, relative, resolve, sep } from "node:path";
4
4
  import ts from "typescript";
5
- import { analyzeEntry } from "./analyzer.js";
5
+ import { analyzeEntry, createGTSXAnalysisCache } from "./analyzer.js";
6
6
  import { discoverGTSXProgramFiles, findNearestTSConfig } from "./project-scope.js";
7
7
  const IGNORED_DISCOVERY_DIRS = new Set(["node_modules", "dist", ".vite", ".next", ".git"]);
8
8
  const DEFAULT_PROJECT_INDEX_CACHE_TTL_MS = 1000;
9
+ const globalProjectIndexCacheSymbol = Symbol.for("gtsx.project-index.cache");
9
10
  export function buildGTSXProjectIndex(options) {
10
11
  const projectRoot = options.projectRoot ?? ".";
11
12
  const selectedTSConfigPath = options.tsconfigPath ?? findNearestTSConfig(options.cwd);
12
13
  const moduleResolution = createProjectModuleResolution(options.cwd, selectedTSConfigPath);
13
14
  const fileContexts = discoverGTSXFiles(options.cwd, projectRoot, selectedTSConfigPath).map((filePath) => buildProjectIndexFileContext(options.cwd, filePath));
14
15
  const fileContextsByFilePath = new Map(fileContexts.map((context) => [context.filePath, context]));
16
+ const analysisCache = createGTSXAnalysisCache(new Map(fileContexts.map((context) => [resolve(options.cwd, context.filePath), context.sourceFile])));
15
17
  const exportedComponentsByFilePath = new Map(fileContexts.map((context) => [context.filePath, context.exportedComponents]));
16
- const files = fileContexts.map((context) => buildProjectIndexFile(options.cwd, context, exportedComponentsByFilePath, fileContextsByFilePath, moduleResolution));
18
+ const files = fileContexts.map((context) => buildProjectIndexFile(options.cwd, context, exportedComponentsByFilePath, fileContextsByFilePath, moduleResolution, analysisCache));
17
19
  return {
18
20
  version: 1,
19
21
  files,
@@ -22,21 +24,24 @@ export function buildGTSXProjectIndex(options) {
22
24
  }
23
25
  export function createCachedGTSXProjectIndexBuilder(cacheOptions = {}) {
24
26
  const ttlMs = cacheOptions.ttlMs ?? DEFAULT_PROJECT_INDEX_CACHE_TTL_MS;
25
- let cachedKey;
26
- let cachedAt = 0;
27
- let cachedIndex;
27
+ const cache = globalProjectIndexCache();
28
28
  return (options) => {
29
29
  const key = projectIndexCacheKey(options);
30
30
  const now = Date.now();
31
- if (cachedIndex && cachedKey === key && now - cachedAt <= ttlMs) {
32
- return cachedIndex;
31
+ const cached = cache.get(key);
32
+ if (cached && now - cached.cachedAt <= ttlMs) {
33
+ return cached.index;
33
34
  }
34
- cachedKey = key;
35
- cachedAt = now;
36
- cachedIndex = buildGTSXProjectIndex(options);
37
- return cachedIndex;
35
+ const index = buildGTSXProjectIndex(options);
36
+ cache.set(key, { cachedAt: now, index });
37
+ return index;
38
38
  };
39
39
  }
40
+ function globalProjectIndexCache() {
41
+ const globalCache = globalThis;
42
+ globalCache[globalProjectIndexCacheSymbol] ??= new Map();
43
+ return globalCache[globalProjectIndexCacheSymbol];
44
+ }
40
45
  function buildProjectIndexFileContext(cwd, filePath) {
41
46
  const sourceText = readFileSync(resolve(cwd, filePath), "utf8");
42
47
  const sourceFile = ts.createSourceFile(filePath, sourceText, ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX);
@@ -54,8 +59,8 @@ function projectIndexCacheKey(options) {
54
59
  tsconfigPath: options.tsconfigPath ? resolve(options.cwd, options.tsconfigPath) : undefined,
55
60
  });
56
61
  }
57
- function buildProjectIndexFile(cwd, context, exportedComponentsByFilePath, fileContextsByFilePath, moduleResolution) {
58
- const components = context.exportedComponents.map((component) => buildProjectIndexComponent(cwd, context.filePath, context.sourceHash, component, dependencyCoordinatesForComponent(context, component, exportedComponentsByFilePath, fileContextsByFilePath, moduleResolution)));
62
+ function buildProjectIndexFile(cwd, context, exportedComponentsByFilePath, fileContextsByFilePath, moduleResolution, analysisCache) {
63
+ const components = context.exportedComponents.map((component) => buildProjectIndexComponent(cwd, context.filePath, context.sourceHash, component, dependencyCoordinatesForComponent(context, component, exportedComponentsByFilePath, fileContextsByFilePath, moduleResolution), analysisCache));
59
64
  const fileDiagnostics = context.exportedComponents.length === 0
60
65
  ? [
61
66
  {
@@ -73,9 +78,9 @@ function buildProjectIndexFile(cwd, context, exportedComponentsByFilePath, fileC
73
78
  diagnostics: [...fileDiagnostics, ...components.flatMap((component) => component.diagnostics)],
74
79
  };
75
80
  }
76
- function buildProjectIndexComponent(cwd, filePath, sourceHash, component, dependencies) {
81
+ function buildProjectIndexComponent(cwd, filePath, sourceHash, component, dependencies, analysisCache) {
77
82
  const coordinate = `${filePath}#${component.exportName}`;
78
- const analysis = analyzeEntry({ cwd, entry: coordinate });
83
+ const analysis = analyzeEntry({ cache: analysisCache, cwd, entry: coordinate });
79
84
  return {
80
85
  coordinate,
81
86
  filePath,
@@ -127,6 +132,7 @@ function createProjectModuleResolution(cwd, tsconfigPath) {
127
132
  }
128
133
  function readExportedComponents(sourceFile) {
129
134
  const components = [];
135
+ const caseTargets = readCaseTargetNames(sourceFile);
130
136
  for (const statement of sourceFile.statements) {
131
137
  if ((ts.isFunctionDeclaration(statement) || ts.isClassDeclaration(statement)) &&
132
138
  statement.name &&
@@ -140,18 +146,71 @@ function readExportedComponents(sourceFile) {
140
146
  components.push({ exportName: statement.name.text, componentName: statement.name.text, localName: statement.name.text });
141
147
  continue;
142
148
  }
149
+ if (ts.isVariableStatement(statement) && hasModifier(statement, ts.SyntaxKind.ExportKeyword)) {
150
+ for (const declaration of statement.declarationList.declarations) {
151
+ if (!ts.isIdentifier(declaration.name))
152
+ continue;
153
+ if (!caseTargets.has(declaration.name.text))
154
+ continue;
155
+ if (!isFunctionLikeInitializer(declaration.initializer))
156
+ continue;
157
+ components.push({
158
+ exportName: declaration.name.text,
159
+ componentName: declaration.name.text,
160
+ localName: declaration.name.text,
161
+ });
162
+ }
163
+ continue;
164
+ }
143
165
  if (ts.isExportAssignment(statement) && ts.isIdentifier(statement.expression)) {
144
166
  components.push({ exportName: "default", componentName: statement.expression.text, localName: statement.expression.text });
167
+ continue;
168
+ }
169
+ if (ts.isExportDeclaration(statement) && !statement.moduleSpecifier && statement.exportClause && ts.isNamedExports(statement.exportClause)) {
170
+ for (const element of statement.exportClause.elements) {
171
+ const localName = element.propertyName?.text ?? element.name.text;
172
+ if (!caseTargets.has(localName))
173
+ continue;
174
+ if (components.some((component) => component.localName === localName))
175
+ continue;
176
+ const declaration = findComponentDeclaration(sourceFile, localName);
177
+ if (!declaration)
178
+ continue;
179
+ components.push({
180
+ exportName: element.name.text,
181
+ componentName: localName,
182
+ localName,
183
+ });
184
+ }
145
185
  }
146
186
  }
147
187
  return components;
148
188
  }
189
+ function readCaseTargetNames(sourceFile) {
190
+ const names = new Set();
191
+ for (const statement of sourceFile.statements) {
192
+ if (!ts.isExpressionStatement(statement))
193
+ continue;
194
+ const expression = statement.expression;
195
+ if (!ts.isBinaryExpression(expression))
196
+ continue;
197
+ if (expression.operatorToken.kind !== ts.SyntaxKind.EqualsToken)
198
+ continue;
199
+ if (!ts.isPropertyAccessExpression(expression.left) || expression.left.name.text !== "cases")
200
+ continue;
201
+ if (ts.isIdentifier(expression.left.expression)) {
202
+ names.add(expression.left.expression.text);
203
+ }
204
+ }
205
+ return names;
206
+ }
149
207
  function dependencyCoordinatesForComponent(context, component, exportedComponentsByFilePath, fileContextsByFilePath, moduleResolution) {
150
208
  const declaration = findComponentDeclaration(context.sourceFile, component.localName);
151
209
  if (!declaration)
152
210
  return [];
153
211
  const localBindings = localComponentBindings(context.filePath, context.exportedComponents);
154
212
  const importBindings = componentImportBindingsForFile(context.filePath, context.sourceFile, exportedComponentsByFilePath, fileContextsByFilePath, moduleResolution);
213
+ const localAliases = localComponentAliasBindingsForDeclaration(declaration);
155
214
  const ownCoordinate = `${context.filePath}#${component.exportName}`;
156
215
  const dependencies = [];
157
216
  const seen = new Set();
@@ -163,7 +222,7 @@ function dependencyCoordinatesForComponent(context, component, exportedComponent
163
222
  };
164
223
  const visit = (node) => {
165
224
  if (ts.isJsxOpeningElement(node) || ts.isJsxSelfClosingElement(node)) {
166
- addDependency(componentCoordinateForJsxTag(node.tagName, importBindings, localBindings));
225
+ addDependency(componentCoordinateForJsxTag(node.tagName, importBindings, localBindings, localAliases));
167
226
  }
168
227
  ts.forEachChild(node, visit);
169
228
  };
@@ -185,9 +244,48 @@ function findComponentDeclaration(sourceFile, localName) {
185
244
  }
186
245
  return undefined;
187
246
  }
247
+ function isFunctionLikeInitializer(initializer) {
248
+ if (!initializer)
249
+ return false;
250
+ const expression = unwrapExpression(initializer);
251
+ return ts.isArrowFunction(expression) || ts.isFunctionExpression(expression);
252
+ }
253
+ function unwrapExpression(expression) {
254
+ if (ts.isSatisfiesExpression(expression) || ts.isAsExpression(expression) || ts.isParenthesizedExpression(expression)) {
255
+ return unwrapExpression(expression.expression);
256
+ }
257
+ return expression;
258
+ }
188
259
  function localComponentBindings(filePath, exportedComponents) {
189
260
  return new Map(exportedComponents.map((component) => [component.localName, `${filePath}#${component.exportName}`]));
190
261
  }
262
+ function localComponentAliasBindingsForDeclaration(declaration) {
263
+ const aliases = new Map();
264
+ const body = functionLikeBlockBody(declaration);
265
+ if (!body)
266
+ return aliases;
267
+ for (const statement of body.statements) {
268
+ if (!ts.isVariableStatement(statement))
269
+ continue;
270
+ for (const variableDeclaration of statement.declarationList.declarations) {
271
+ if (!ts.isIdentifier(variableDeclaration.name) || !variableDeclaration.initializer)
272
+ continue;
273
+ const initializer = unwrapExpression(variableDeclaration.initializer);
274
+ if (ts.isIdentifier(initializer)) {
275
+ aliases.set(variableDeclaration.name.text, initializer.text);
276
+ }
277
+ }
278
+ }
279
+ return aliases;
280
+ }
281
+ function functionLikeBlockBody(node) {
282
+ if ((ts.isFunctionDeclaration(node) || ts.isFunctionExpression(node) || ts.isArrowFunction(node)) &&
283
+ node.body &&
284
+ ts.isBlock(node.body)) {
285
+ return node.body;
286
+ }
287
+ return undefined;
288
+ }
191
289
  function componentImportBindingsForFile(filePath, sourceFile, exportedComponentsByFilePath, fileContextsByFilePath, moduleResolution) {
192
290
  const bindings = {
193
291
  names: new Map(),
@@ -274,15 +372,29 @@ function importedGTSXFilePathCandidates(basePath) {
274
372
  function normalizeProjectPath(filePath) {
275
373
  return filePath.split(sep).join("/");
276
374
  }
277
- function componentCoordinateForJsxTag(tagName, importBindings, localBindings) {
375
+ function componentCoordinateForJsxTag(tagName, importBindings, localBindings, localAliases) {
278
376
  if (ts.isIdentifier(tagName)) {
279
- return importBindings.names.get(tagName.text) ?? localBindings.get(tagName.text);
377
+ return componentCoordinateForIdentifier(tagName.text, importBindings, localBindings, localAliases);
280
378
  }
281
379
  if (ts.isPropertyAccessExpression(tagName) && ts.isIdentifier(tagName.expression)) {
282
380
  return importBindings.namespaces.get(tagName.expression.text)?.get(tagName.name.text);
283
381
  }
284
382
  return undefined;
285
383
  }
384
+ function componentCoordinateForIdentifier(name, importBindings, localBindings, localAliases) {
385
+ let currentName = name;
386
+ const visited = new Set();
387
+ while (!visited.has(currentName)) {
388
+ visited.add(currentName);
389
+ const aliasTarget = localAliases.get(currentName);
390
+ if (aliasTarget) {
391
+ currentName = aliasTarget;
392
+ continue;
393
+ }
394
+ return importBindings.names.get(currentName) ?? localBindings.get(currentName);
395
+ }
396
+ return undefined;
397
+ }
286
398
  function hasModifier(node, kind) {
287
399
  return Boolean(ts.canHaveModifiers(node) && ts.getModifiers(node)?.some((modifier) => modifier.kind === kind));
288
400
  }
@@ -1 +1 @@
1
- {"version":3,"file":"project-index.js","sourceRoot":"","sources":["../src/project-index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-index.js","sourceRoot":"","sources":["../src/project-index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"project-scope.d.ts","sourceRoot":"","sources":["../src/project-scope.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,+BAA+B,GAAG;IAC5C,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,+BAA+B,GAAG,MAAM,EAAE,CAqB3F;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAmBnE"}
1
+ {"version":3,"file":"project-scope.d.ts","sourceRoot":"","sources":["../src/project-scope.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,+BAA+B,GAAG;IAC5C,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,+BAA+B,GAAG,MAAM,EAAE,CAiB3F;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAmBnE"}
@@ -8,13 +8,9 @@ export function discoverGTSXProgramFiles(options) {
8
8
  if (configFile.error)
9
9
  return [];
10
10
  const parsed = ts.parseJsonConfigFileContent(configFile.config, ts.sys, dirname(configPath));
11
- const program = ts.createProgram({
12
- rootNames: parsed.fileNames,
13
- options: parsed.options,
14
- });
15
11
  const files = new Set();
16
- for (const sourceFile of program.getSourceFiles()) {
17
- const filePath = resolve(sourceFile.fileName);
12
+ for (const fileName of parsed.fileNames) {
13
+ const filePath = resolve(fileName);
18
14
  if (filePath.endsWith(".g.tsx") && isPathInside(root, filePath)) {
19
15
  files.add(relative(options.cwd, filePath).split(sep).join("/"));
20
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"project-scope.js","sourceRoot":"","sources":["../src/project-scope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-scope.js","sourceRoot":"","sources":["../src/project-scope.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"react-transform.d.ts","sourceRoot":"","sources":["../src/react-transform.ts"],"names":[],"mappings":"AAqBA,eAAO,MAAM,mCAAmC,WAAW,CAAA;AAE3D,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,uBAAuB,GAAG,wBAAwB,GAAG,IAAI,CAWxG;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAElE;AAED,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CAyEvF"}
1
+ {"version":3,"file":"react-transform.d.ts","sourceRoot":"","sources":["../src/react-transform.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,mCAAmC,WAAW,CAAA;AAE3D,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,uBAAuB,GAAG,wBAAwB,GAAG,IAAI,CAWxG;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAElE;AAED,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CAiFvF"}
@@ -25,41 +25,51 @@ export function transformGTSXComponentBoundaries(input) {
25
25
  const insertions = [];
26
26
  const coordinateFile = toCoordinateFile(input.root, input.filePath);
27
27
  const defaultExportAssignments = readDefaultExportAssignments(sourceFile);
28
+ const localExportNames = readLocalExportNames(sourceFile);
28
29
  const boundaries = new Map();
29
30
  for (const statement of sourceFile.statements) {
30
- if (!ts.isFunctionDeclaration(statement) || !statement.name)
31
+ const boundary = functionDeclarationBoundary({
32
+ code: input.code,
33
+ coordinateFile,
34
+ defaultExportAssignments,
35
+ localExportNames,
36
+ sourceFile,
37
+ statement,
38
+ });
39
+ if (!boundary)
31
40
  continue;
32
- const componentName = statement.name.text;
33
- if (!hasComponentCases(input.code, componentName))
41
+ boundaries.set(boundary.componentName, boundary);
42
+ replacements.push(boundary.replacement);
43
+ insertions.push(...boundary.insertions);
44
+ }
45
+ for (const statement of sourceFile.statements) {
46
+ const boundary = variableStatementBoundary({
47
+ code: input.code,
48
+ coordinateFile,
49
+ defaultExportAssignments,
50
+ localExportNames,
51
+ sourceFile,
52
+ statement,
53
+ });
54
+ if (!boundary)
34
55
  continue;
35
- const exportKind = hasModifier(statement, ts.SyntaxKind.DefaultKeyword)
36
- ? "default"
37
- : hasModifier(statement, ts.SyntaxKind.ExportKeyword)
38
- ? "named"
39
- : defaultExportAssignments.has(componentName)
40
- ? "local"
41
- : null;
42
- if (!exportKind)
56
+ boundaries.set(boundary.componentName, boundary);
57
+ replacements.push(boundary.replacement);
58
+ insertions.push(...boundary.insertions);
59
+ }
60
+ if (replacements.length === 0)
61
+ return input.code;
62
+ for (const boundary of boundaries.values()) {
63
+ if (boundary.exportKind === "default") {
43
64
  continue;
44
- const implementationName = `${componentName}GTSXImpl`;
45
- boundaries.set(componentName, { componentName, implementationName, statement, exportKind });
46
- replacements.push({
47
- start: statement.getStart(sourceFile),
48
- end: statement.name.end,
49
- text: `function ${implementationName}`,
50
- });
51
- if (exportKind === "default") {
65
+ }
66
+ if (boundary.exportKind === "named" || boundary.exportKind === "local") {
67
+ const exportPrefix = boundary.exportKind === "named" ? "export " : "";
52
68
  insertions.push({
53
- index: statement.end,
54
- text: `\nconst ${componentName} = __gtsxDefineGComponent(${JSON.stringify(`${coordinateFile}#default`)}, ${implementationName})\nexport default ${componentName}\n`,
69
+ index: boundary.statement.end,
70
+ text: `\n${exportPrefix}const ${boundary.componentName} = __gtsxDefineGComponent(${JSON.stringify(`${coordinateFile}#${boundary.exportName}`)}, ${boundary.implementationName})\n`,
55
71
  });
56
- continue;
57
72
  }
58
- const exportPrefix = exportKind === "named" ? "export " : "";
59
- insertions.push({
60
- index: statement.end,
61
- text: `\n${exportPrefix}const ${componentName} = __gtsxDefineGComponent(${JSON.stringify(`${coordinateFile}#${componentName}`)}, ${implementationName})\n`,
62
- });
63
73
  }
64
74
  for (const statement of sourceFile.statements) {
65
75
  if (!ts.isExportAssignment(statement) || !ts.isIdentifier(statement.expression))
@@ -74,8 +84,6 @@ export function transformGTSXComponentBoundaries(input) {
74
84
  text: `const ${defaultComponentName} = __gtsxDefineGComponent(${JSON.stringify(`${coordinateFile}#default`)}, ${boundary.implementationName})\n${defaultComponentName}.cases = ${boundary.componentName}.cases\nexport default ${defaultComponentName}`,
75
85
  });
76
86
  }
77
- if (replacements.length === 0)
78
- return input.code;
79
87
  const importInsertionIndex = directivePrologueEnd(sourceFile);
80
88
  insertions.push({
81
89
  index: importInsertionIndex,
@@ -86,6 +94,97 @@ export function transformGTSXComponentBoundaries(input) {
86
94
  insertions,
87
95
  });
88
96
  }
97
+ function functionDeclarationBoundary(input) {
98
+ if (!ts.isFunctionDeclaration(input.statement) || !input.statement.name)
99
+ return undefined;
100
+ const componentName = input.statement.name.text;
101
+ if (!hasComponentCases(input.code, componentName))
102
+ return undefined;
103
+ const exportKind = boundaryExportKind(input.statement, componentName, input.defaultExportAssignments, input.localExportNames);
104
+ if (!exportKind)
105
+ return undefined;
106
+ const exportName = exportKind === "default" ? "default" : exportKind === "named" ? componentName : (input.localExportNames.get(componentName) ?? componentName);
107
+ const implementationName = `${componentName}GTSXImpl`;
108
+ return {
109
+ componentName,
110
+ exportKind,
111
+ exportName,
112
+ implementationName,
113
+ insertions: exportKind === "default"
114
+ ? [
115
+ {
116
+ index: input.statement.end,
117
+ text: `\nconst ${componentName} = __gtsxDefineGComponent(${JSON.stringify(`${input.coordinateFile}#default`)}, ${implementationName})\nexport default ${componentName}\n`,
118
+ },
119
+ ]
120
+ : [],
121
+ replacement: {
122
+ start: input.statement.getStart(input.sourceFile),
123
+ end: input.statement.name.end,
124
+ text: `function ${implementationName}`,
125
+ },
126
+ statement: input.statement,
127
+ };
128
+ }
129
+ function variableStatementBoundary(input) {
130
+ if (!ts.isVariableStatement(input.statement))
131
+ return undefined;
132
+ if (input.statement.declarationList.declarations.length !== 1)
133
+ return undefined;
134
+ const declaration = input.statement.declarationList.declarations[0];
135
+ if (!declaration || !ts.isIdentifier(declaration.name) || !isFunctionLikeVariableInitializer(declaration.initializer))
136
+ return undefined;
137
+ const componentName = declaration.name.text;
138
+ if (!hasComponentCases(input.code, componentName))
139
+ return undefined;
140
+ const exportKind = boundaryExportKind(input.statement, componentName, input.defaultExportAssignments, input.localExportNames);
141
+ if (!exportKind)
142
+ return undefined;
143
+ const exportName = exportKind === "default" ? "default" : exportKind === "named" ? componentName : (input.localExportNames.get(componentName) ?? componentName);
144
+ const implementationName = `${componentName}GTSXImpl`;
145
+ const declarationListStart = input.statement.declarationList.getStart(input.sourceFile);
146
+ const replacement = exportKind === "named"
147
+ ? {
148
+ start: input.statement.getStart(input.sourceFile),
149
+ end: declaration.name.end,
150
+ text: `${input.code.slice(declarationListStart, declaration.name.getStart(input.sourceFile))}${implementationName}`,
151
+ }
152
+ : {
153
+ start: declaration.name.getStart(input.sourceFile),
154
+ end: declaration.name.end,
155
+ text: implementationName,
156
+ };
157
+ return {
158
+ componentName,
159
+ exportKind,
160
+ exportName,
161
+ implementationName,
162
+ insertions: exportKind === "default"
163
+ ? [
164
+ {
165
+ index: input.statement.end,
166
+ text: `\nconst ${componentName} = __gtsxDefineGComponent(${JSON.stringify(`${input.coordinateFile}#default`)}, ${implementationName})\nexport default ${componentName}\n`,
167
+ },
168
+ ]
169
+ : [],
170
+ replacement,
171
+ statement: input.statement,
172
+ };
173
+ }
174
+ function boundaryExportKind(statement, componentName, defaultExportAssignments, localExportNames) {
175
+ return hasModifier(statement, ts.SyntaxKind.DefaultKeyword)
176
+ ? "default"
177
+ : hasModifier(statement, ts.SyntaxKind.ExportKeyword)
178
+ ? "named"
179
+ : defaultExportAssignments.has(componentName)
180
+ ? "local"
181
+ : localExportNames.has(componentName)
182
+ ? "local"
183
+ : null;
184
+ }
185
+ function isFunctionLikeVariableInitializer(node) {
186
+ return Boolean(node && (ts.isArrowFunction(node) || ts.isFunctionExpression(node)));
187
+ }
89
188
  function readDefaultExportAssignments(sourceFile) {
90
189
  const names = new Set();
91
190
  for (const statement of sourceFile.statements) {
@@ -95,6 +194,20 @@ function readDefaultExportAssignments(sourceFile) {
95
194
  }
96
195
  return names;
97
196
  }
197
+ function readLocalExportNames(sourceFile) {
198
+ const names = new Map();
199
+ for (const statement of sourceFile.statements) {
200
+ if (!ts.isExportDeclaration(statement) || statement.moduleSpecifier || !statement.exportClause)
201
+ continue;
202
+ if (!ts.isNamedExports(statement.exportClause))
203
+ continue;
204
+ for (const element of statement.exportClause.elements) {
205
+ const localName = element.propertyName?.text ?? element.name.text;
206
+ names.set(localName, element.name.text);
207
+ }
208
+ }
209
+ return names;
210
+ }
98
211
  function directivePrologueEnd(sourceFile) {
99
212
  let insertionIndex = 0;
100
213
  for (const statement of sourceFile.statements) {