@gtsx/core 0.0.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 (86) hide show
  1. package/LICENSE +21 -0
  2. package/dist/analyzer.d.ts +31 -0
  3. package/dist/analyzer.d.ts.map +1 -0
  4. package/dist/analyzer.js +397 -0
  5. package/dist/analyzer.js.map +1 -0
  6. package/dist/boundary-rect.d.ts +3 -0
  7. package/dist/boundary-rect.d.ts.map +1 -0
  8. package/dist/boundary-rect.js +70 -0
  9. package/dist/boundary-rect.js.map +1 -0
  10. package/dist/browser-capture.d.ts +8 -0
  11. package/dist/browser-capture.d.ts.map +1 -0
  12. package/dist/browser-capture.js +47 -0
  13. package/dist/browser-capture.js.map +1 -0
  14. package/dist/cli.d.ts +19 -0
  15. package/dist/cli.d.ts.map +1 -0
  16. package/dist/cli.js +666 -0
  17. package/dist/cli.js.map +1 -0
  18. package/dist/config-model.d.ts +6 -0
  19. package/dist/config-model.d.ts.map +1 -0
  20. package/dist/config-model.js +25 -0
  21. package/dist/config-model.js.map +1 -0
  22. package/dist/config-types.d.ts +32 -0
  23. package/dist/config-types.d.ts.map +1 -0
  24. package/dist/config-types.js +2 -0
  25. package/dist/config-types.js.map +1 -0
  26. package/dist/config.d.ts +10 -0
  27. package/dist/config.d.ts.map +1 -0
  28. package/dist/config.js +79 -0
  29. package/dist/config.js.map +1 -0
  30. package/dist/define-config.d.ts +3 -0
  31. package/dist/define-config.d.ts.map +1 -0
  32. package/dist/define-config.js +4 -0
  33. package/dist/define-config.js.map +1 -0
  34. package/dist/index.d.ts +13 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +7 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/init.d.ts +11 -0
  39. package/dist/init.d.ts.map +1 -0
  40. package/dist/init.js +84 -0
  41. package/dist/init.js.map +1 -0
  42. package/dist/preview-protocol.d.ts +78 -0
  43. package/dist/preview-protocol.d.ts.map +1 -0
  44. package/dist/preview-protocol.js +95 -0
  45. package/dist/preview-protocol.js.map +1 -0
  46. package/dist/project-index.d.ts +35 -0
  47. package/dist/project-index.d.ts.map +1 -0
  48. package/dist/project-index.js +289 -0
  49. package/dist/project-index.js.map +1 -0
  50. package/dist/project-scope.d.ts +8 -0
  51. package/dist/project-scope.d.ts.map +1 -0
  52. package/dist/project-scope.js +56 -0
  53. package/dist/project-scope.js.map +1 -0
  54. package/dist/react-transform.d.ts +15 -0
  55. package/dist/react-transform.d.ts.map +1 -0
  56. package/dist/react-transform.js +138 -0
  57. package/dist/react-transform.js.map +1 -0
  58. package/dist/runtime-values.d.ts +73 -0
  59. package/dist/runtime-values.d.ts.map +1 -0
  60. package/dist/runtime-values.js +124 -0
  61. package/dist/runtime-values.js.map +1 -0
  62. package/dist/runtime.d.ts +44 -0
  63. package/dist/runtime.d.ts.map +1 -0
  64. package/dist/runtime.js +218 -0
  65. package/dist/runtime.js.map +1 -0
  66. package/dist/script-adapter.d.ts +22 -0
  67. package/dist/script-adapter.d.ts.map +1 -0
  68. package/dist/script-adapter.js +80 -0
  69. package/dist/script-adapter.js.map +1 -0
  70. package/dist/studio-client.d.ts +112 -0
  71. package/dist/studio-client.d.ts.map +1 -0
  72. package/dist/studio-client.js +1342 -0
  73. package/dist/studio-client.js.map +1 -0
  74. package/dist/studio-manifest-model.d.ts +41 -0
  75. package/dist/studio-manifest-model.d.ts.map +1 -0
  76. package/dist/studio-manifest-model.js +24 -0
  77. package/dist/studio-manifest-model.js.map +1 -0
  78. package/dist/studio-manifest.d.ts +23 -0
  79. package/dist/studio-manifest.d.ts.map +1 -0
  80. package/dist/studio-manifest.js +57 -0
  81. package/dist/studio-manifest.js.map +1 -0
  82. package/dist/types.d.ts +35 -0
  83. package/dist/types.d.ts.map +1 -0
  84. package/dist/types.js +2 -0
  85. package/dist/types.js.map +1 -0
  86. package/package.json +84 -0
@@ -0,0 +1,289 @@
1
+ import { createHash } from "node:crypto";
2
+ import { readdirSync, readFileSync } from "node:fs";
3
+ import { dirname, join, relative, resolve, sep } from "node:path";
4
+ import ts from "typescript";
5
+ import { analyzeEntry } from "./analyzer.js";
6
+ import { discoverGTSXProgramFiles, findNearestTSConfig } from "./project-scope.js";
7
+ const IGNORED_DISCOVERY_DIRS = new Set(["node_modules", "dist", ".vite", ".next", ".git"]);
8
+ const DEFAULT_PROJECT_INDEX_CACHE_TTL_MS = 1000;
9
+ export function buildGTSXProjectIndex(options) {
10
+ const projectRoot = options.projectRoot ?? ".";
11
+ const selectedTSConfigPath = options.tsconfigPath ?? findNearestTSConfig(options.cwd);
12
+ const moduleResolution = createProjectModuleResolution(options.cwd, selectedTSConfigPath);
13
+ const fileContexts = discoverGTSXFiles(options.cwd, projectRoot, selectedTSConfigPath).map((filePath) => buildProjectIndexFileContext(options.cwd, filePath));
14
+ const fileContextsByFilePath = new Map(fileContexts.map((context) => [context.filePath, context]));
15
+ const exportedComponentsByFilePath = new Map(fileContexts.map((context) => [context.filePath, context.exportedComponents]));
16
+ const files = fileContexts.map((context) => buildProjectIndexFile(options.cwd, context, exportedComponentsByFilePath, fileContextsByFilePath, moduleResolution));
17
+ return {
18
+ version: 1,
19
+ files,
20
+ diagnostics: files.flatMap((file) => file.diagnostics),
21
+ };
22
+ }
23
+ export function createCachedGTSXProjectIndexBuilder(cacheOptions = {}) {
24
+ const ttlMs = cacheOptions.ttlMs ?? DEFAULT_PROJECT_INDEX_CACHE_TTL_MS;
25
+ let cachedKey;
26
+ let cachedAt = 0;
27
+ let cachedIndex;
28
+ return (options) => {
29
+ const key = projectIndexCacheKey(options);
30
+ const now = Date.now();
31
+ if (cachedIndex && cachedKey === key && now - cachedAt <= ttlMs) {
32
+ return cachedIndex;
33
+ }
34
+ cachedKey = key;
35
+ cachedAt = now;
36
+ cachedIndex = buildGTSXProjectIndex(options);
37
+ return cachedIndex;
38
+ };
39
+ }
40
+ function buildProjectIndexFileContext(cwd, filePath) {
41
+ const sourceText = readFileSync(resolve(cwd, filePath), "utf8");
42
+ const sourceFile = ts.createSourceFile(filePath, sourceText, ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX);
43
+ return {
44
+ filePath,
45
+ sourceHash: hashSourceText(sourceText),
46
+ sourceFile,
47
+ exportedComponents: readExportedComponents(sourceFile),
48
+ };
49
+ }
50
+ function projectIndexCacheKey(options) {
51
+ return JSON.stringify({
52
+ cwd: resolve(options.cwd),
53
+ projectRoot: options.projectRoot ?? ".",
54
+ tsconfigPath: options.tsconfigPath ? resolve(options.cwd, options.tsconfigPath) : undefined,
55
+ });
56
+ }
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)));
59
+ const fileDiagnostics = context.exportedComponents.length === 0
60
+ ? [
61
+ {
62
+ stage: "contract-extraction",
63
+ code: "missing-component-export",
64
+ message: "A .g.tsx file must export at least one React component.",
65
+ file: context.filePath,
66
+ },
67
+ ]
68
+ : [];
69
+ return {
70
+ path: context.filePath,
71
+ sourceHash: context.sourceHash,
72
+ components,
73
+ diagnostics: [...fileDiagnostics, ...components.flatMap((component) => component.diagnostics)],
74
+ };
75
+ }
76
+ function buildProjectIndexComponent(cwd, filePath, sourceHash, component, dependencies) {
77
+ const coordinate = `${filePath}#${component.exportName}`;
78
+ const analysis = analyzeEntry({ cwd, entry: coordinate });
79
+ return {
80
+ coordinate,
81
+ filePath,
82
+ sourceHash,
83
+ exportName: component.exportName,
84
+ componentName: component.componentName,
85
+ mode: analysis.mode,
86
+ cases: analysis.cases,
87
+ providers: analysis.providers,
88
+ ...(dependencies.length > 0 ? { dependencies } : {}),
89
+ diagnostics: analysis.diagnostics,
90
+ };
91
+ }
92
+ function discoverGTSXFiles(cwd, projectRoot, tsconfigPath) {
93
+ const selectedTSConfigPath = tsconfigPath ?? findNearestTSConfig(cwd);
94
+ if (selectedTSConfigPath) {
95
+ return discoverGTSXProgramFiles({ cwd, root: projectRoot, tsconfigPath: selectedTSConfigPath });
96
+ }
97
+ const root = resolve(cwd, projectRoot);
98
+ const files = [];
99
+ walk(root);
100
+ return files.map((entryPath) => relative(cwd, entryPath).split(sep).join("/")).sort((left, right) => left.localeCompare(right));
101
+ function walk(directory) {
102
+ for (const dirent of readdirSync(directory, { withFileTypes: true })) {
103
+ if (dirent.isDirectory()) {
104
+ if (!IGNORED_DISCOVERY_DIRS.has(dirent.name)) {
105
+ walk(join(directory, dirent.name));
106
+ }
107
+ continue;
108
+ }
109
+ if (dirent.isFile() && dirent.name.endsWith(".g.tsx")) {
110
+ files.push(join(directory, dirent.name));
111
+ }
112
+ }
113
+ }
114
+ }
115
+ function hashSourceText(sourceText) {
116
+ return createHash("sha256").update(sourceText).digest("hex");
117
+ }
118
+ function createProjectModuleResolution(cwd, tsconfigPath) {
119
+ if (!tsconfigPath)
120
+ return { compilerOptions: {}, cwd, host: ts.sys };
121
+ const configPath = resolve(cwd, tsconfigPath);
122
+ const configFile = ts.readConfigFile(configPath, ts.sys.readFile);
123
+ if (configFile.error)
124
+ return { compilerOptions: {}, cwd, host: ts.sys };
125
+ const parsed = ts.parseJsonConfigFileContent(configFile.config, ts.sys, dirname(configPath));
126
+ return { compilerOptions: parsed.options, cwd, host: ts.sys };
127
+ }
128
+ function readExportedComponents(sourceFile) {
129
+ const components = [];
130
+ for (const statement of sourceFile.statements) {
131
+ if ((ts.isFunctionDeclaration(statement) || ts.isClassDeclaration(statement)) &&
132
+ statement.name &&
133
+ hasModifier(statement, ts.SyntaxKind.DefaultKeyword)) {
134
+ components.push({ exportName: "default", componentName: statement.name.text, localName: statement.name.text });
135
+ continue;
136
+ }
137
+ if ((ts.isFunctionDeclaration(statement) || ts.isClassDeclaration(statement)) &&
138
+ statement.name &&
139
+ hasModifier(statement, ts.SyntaxKind.ExportKeyword)) {
140
+ components.push({ exportName: statement.name.text, componentName: statement.name.text, localName: statement.name.text });
141
+ continue;
142
+ }
143
+ if (ts.isExportAssignment(statement) && ts.isIdentifier(statement.expression)) {
144
+ components.push({ exportName: "default", componentName: statement.expression.text, localName: statement.expression.text });
145
+ }
146
+ }
147
+ return components;
148
+ }
149
+ function dependencyCoordinatesForComponent(context, component, exportedComponentsByFilePath, fileContextsByFilePath, moduleResolution) {
150
+ const declaration = findComponentDeclaration(context.sourceFile, component.localName);
151
+ if (!declaration)
152
+ return [];
153
+ const localBindings = localComponentBindings(context.filePath, context.exportedComponents);
154
+ const importBindings = componentImportBindingsForFile(context.filePath, context.sourceFile, exportedComponentsByFilePath, fileContextsByFilePath, moduleResolution);
155
+ const ownCoordinate = `${context.filePath}#${component.exportName}`;
156
+ const dependencies = [];
157
+ const seen = new Set();
158
+ const addDependency = (coordinate) => {
159
+ if (!coordinate || coordinate === ownCoordinate || seen.has(coordinate))
160
+ return;
161
+ seen.add(coordinate);
162
+ dependencies.push(coordinate);
163
+ };
164
+ const visit = (node) => {
165
+ if (ts.isJsxOpeningElement(node) || ts.isJsxSelfClosingElement(node)) {
166
+ addDependency(componentCoordinateForJsxTag(node.tagName, importBindings, localBindings));
167
+ }
168
+ ts.forEachChild(node, visit);
169
+ };
170
+ visit(declaration);
171
+ return dependencies;
172
+ }
173
+ function findComponentDeclaration(sourceFile, localName) {
174
+ for (const statement of sourceFile.statements) {
175
+ if ((ts.isFunctionDeclaration(statement) || ts.isClassDeclaration(statement)) && statement.name?.text === localName) {
176
+ return statement;
177
+ }
178
+ if (!ts.isVariableStatement(statement))
179
+ continue;
180
+ for (const declaration of statement.declarationList.declarations) {
181
+ if (ts.isIdentifier(declaration.name) && declaration.name.text === localName) {
182
+ return declaration.initializer ?? declaration;
183
+ }
184
+ }
185
+ }
186
+ return undefined;
187
+ }
188
+ function localComponentBindings(filePath, exportedComponents) {
189
+ return new Map(exportedComponents.map((component) => [component.localName, `${filePath}#${component.exportName}`]));
190
+ }
191
+ function componentImportBindingsForFile(filePath, sourceFile, exportedComponentsByFilePath, fileContextsByFilePath, moduleResolution) {
192
+ const bindings = {
193
+ names: new Map(),
194
+ namespaces: new Map(),
195
+ };
196
+ for (const statement of sourceFile.statements) {
197
+ if (!ts.isImportDeclaration(statement) || !statement.importClause)
198
+ continue;
199
+ if (!ts.isStringLiteral(statement.moduleSpecifier))
200
+ continue;
201
+ const targetFilePath = resolveImportedGTSXFilePath(filePath, statement.moduleSpecifier.text, exportedComponentsByFilePath, moduleResolution);
202
+ if (!targetFilePath)
203
+ continue;
204
+ const targetContext = fileContextsByFilePath.get(targetFilePath);
205
+ const exportsByName = componentImportCoordinatesByExportName(targetFilePath, targetContext?.sourceFile, exportedComponentsByFilePath.get(targetFilePath) ?? []);
206
+ const importClause = statement.importClause;
207
+ if (importClause.name) {
208
+ const defaultCoordinate = exportsByName.get("default");
209
+ if (defaultCoordinate)
210
+ bindings.names.set(importClause.name.text, defaultCoordinate);
211
+ }
212
+ if (!importClause.namedBindings)
213
+ continue;
214
+ if (ts.isNamedImports(importClause.namedBindings)) {
215
+ for (const element of importClause.namedBindings.elements) {
216
+ const importedName = element.propertyName?.text ?? element.name.text;
217
+ const coordinate = exportsByName.get(importedName);
218
+ if (coordinate)
219
+ bindings.names.set(element.name.text, coordinate);
220
+ }
221
+ }
222
+ else if (ts.isNamespaceImport(importClause.namedBindings)) {
223
+ bindings.namespaces.set(importClause.namedBindings.name.text, exportsByName);
224
+ }
225
+ }
226
+ return bindings;
227
+ }
228
+ function componentImportCoordinatesByExportName(filePath, sourceFile, exportedComponents) {
229
+ const coordinatesByExportName = new Map(exportedComponents.map((component) => [component.exportName, `${filePath}#${component.exportName}`]));
230
+ if (!sourceFile)
231
+ return coordinatesByExportName;
232
+ const coordinatesByLocalName = new Map(exportedComponents.map((component) => [component.localName, `${filePath}#${component.exportName}`]));
233
+ for (const statement of sourceFile.statements) {
234
+ if (!ts.isExportDeclaration(statement) || !statement.exportClause || !ts.isNamedExports(statement.exportClause))
235
+ continue;
236
+ if (statement.moduleSpecifier)
237
+ continue;
238
+ for (const element of statement.exportClause.elements) {
239
+ const localName = element.propertyName?.text ?? element.name.text;
240
+ const coordinate = coordinatesByLocalName.get(localName);
241
+ if (coordinate)
242
+ coordinatesByExportName.set(element.name.text, coordinate);
243
+ }
244
+ }
245
+ return coordinatesByExportName;
246
+ }
247
+ function resolveImportedGTSXFilePath(filePath, moduleSpecifier, exportedComponentsByFilePath, moduleResolution) {
248
+ const containingFilePath = resolve(moduleResolution.cwd, filePath);
249
+ const resolvedModule = ts.resolveModuleName(moduleSpecifier, containingFilePath, moduleResolution.compilerOptions, moduleResolution.host).resolvedModule;
250
+ if (resolvedModule) {
251
+ const resolvedProjectPath = normalizeProjectPath(relative(moduleResolution.cwd, resolvedModule.resolvedFileName));
252
+ if (exportedComponentsByFilePath.has(resolvedProjectPath))
253
+ return resolvedProjectPath;
254
+ }
255
+ if (!moduleSpecifier.startsWith("."))
256
+ return undefined;
257
+ const basePath = normalizeProjectPath(join(dirname(filePath), moduleSpecifier));
258
+ for (const candidate of importedGTSXFilePathCandidates(basePath)) {
259
+ if (exportedComponentsByFilePath.has(candidate))
260
+ return candidate;
261
+ }
262
+ return undefined;
263
+ }
264
+ function importedGTSXFilePathCandidates(basePath) {
265
+ const candidates = [
266
+ basePath,
267
+ basePath.replace(/\.jsx?$/, ".tsx"),
268
+ `${basePath}.tsx`,
269
+ `${basePath}.g.tsx`,
270
+ `${basePath}/index.g.tsx`,
271
+ ];
272
+ return [...new Set(candidates.filter((candidate) => candidate.endsWith(".g.tsx")))];
273
+ }
274
+ function normalizeProjectPath(filePath) {
275
+ return filePath.split(sep).join("/");
276
+ }
277
+ function componentCoordinateForJsxTag(tagName, importBindings, localBindings) {
278
+ if (ts.isIdentifier(tagName)) {
279
+ return importBindings.names.get(tagName.text) ?? localBindings.get(tagName.text);
280
+ }
281
+ if (ts.isPropertyAccessExpression(tagName) && ts.isIdentifier(tagName.expression)) {
282
+ return importBindings.namespaces.get(tagName.expression.text)?.get(tagName.name.text);
283
+ }
284
+ return undefined;
285
+ }
286
+ function hasModifier(node, kind) {
287
+ return Boolean(ts.canHaveModifiers(node) && ts.getModifiers(node)?.some((modifier) => modifier.kind === kind));
288
+ }
289
+ //# sourceMappingURL=project-index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-index.js","sourceRoot":"","sources":["../src/project-index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export type DiscoverGTSXProgramFilesOptions = {
2
+ cwd: string;
3
+ root: string;
4
+ tsconfigPath: string;
5
+ };
6
+ export declare function discoverGTSXProgramFiles(options: DiscoverGTSXProgramFilesOptions): string[];
7
+ export declare function findNearestTSConfig(cwd: string): string | undefined;
8
+ //# sourceMappingURL=project-scope.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,56 @@
1
+ import { existsSync, statSync } from "node:fs";
2
+ import { dirname, relative, resolve, sep } from "node:path";
3
+ import ts from "typescript";
4
+ export function discoverGTSXProgramFiles(options) {
5
+ const root = resolve(options.cwd, options.root);
6
+ const configPath = resolve(options.cwd, options.tsconfigPath);
7
+ const configFile = ts.readConfigFile(configPath, ts.sys.readFile);
8
+ if (configFile.error)
9
+ return [];
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
+ const files = new Set();
16
+ for (const sourceFile of program.getSourceFiles()) {
17
+ const filePath = resolve(sourceFile.fileName);
18
+ if (filePath.endsWith(".g.tsx") && isPathInside(root, filePath)) {
19
+ files.add(relative(options.cwd, filePath).split(sep).join("/"));
20
+ }
21
+ }
22
+ return [...files].sort((left, right) => left.localeCompare(right));
23
+ }
24
+ export function findNearestTSConfig(cwd) {
25
+ let directory = resolve(cwd);
26
+ while (true) {
27
+ const candidate = resolve(directory, "tsconfig.json");
28
+ if (statOrUndefined(candidate)?.isFile()) {
29
+ return candidate;
30
+ }
31
+ if (hasGTSXConfig(directory)) {
32
+ return undefined;
33
+ }
34
+ const parent = dirname(directory);
35
+ if (parent === directory) {
36
+ return undefined;
37
+ }
38
+ directory = parent;
39
+ }
40
+ }
41
+ function isPathInside(root, filePath) {
42
+ const relativePath = relative(root, filePath);
43
+ return relativePath === "" || (!relativePath.startsWith("..") && relativePath !== "..");
44
+ }
45
+ function hasGTSXConfig(cwd) {
46
+ return ["gtsx.config.ts", "gtsx.config.js", "gtsx.config.cjs"].some((fileName) => existsSync(resolve(cwd, fileName)));
47
+ }
48
+ function statOrUndefined(path) {
49
+ try {
50
+ return statSync(path);
51
+ }
52
+ catch {
53
+ return undefined;
54
+ }
55
+ }
56
+ //# sourceMappingURL=project-scope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-scope.js","sourceRoot":"","sources":["../src/project-scope.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export declare const GTSX_REACT_COMPONENT_FILE_EXTENSION = ".g.tsx";
2
+ export type GTSXReactTransformInput = {
3
+ code: string;
4
+ filePath: string;
5
+ root: string;
6
+ };
7
+ export type GTSXReactTransformResult = {
8
+ code: string;
9
+ filePath: string;
10
+ };
11
+ export declare function transformGTSXReactModule(input: GTSXReactTransformInput): GTSXReactTransformResult | null;
12
+ export declare function isGTSXReactComponentFile(filePath: string): boolean;
13
+ export declare function normalizeGTSXReactModuleId(id: string): string;
14
+ export declare function transformGTSXComponentBoundaries(input: GTSXReactTransformInput): string;
15
+ //# sourceMappingURL=react-transform.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,138 @@
1
+ import { relative } from "node:path";
2
+ import ts from "typescript";
3
+ export const GTSX_REACT_COMPONENT_FILE_EXTENSION = ".g.tsx";
4
+ export function transformGTSXReactModule(input) {
5
+ const filePath = normalizeGTSXReactModuleId(input.filePath);
6
+ if (!isGTSXReactComponentFile(filePath))
7
+ return null;
8
+ const code = transformGTSXComponentBoundaries({
9
+ ...input,
10
+ filePath,
11
+ });
12
+ if (code === input.code)
13
+ return null;
14
+ return { code, filePath };
15
+ }
16
+ export function isGTSXReactComponentFile(filePath) {
17
+ return normalizeGTSXReactModuleId(filePath).endsWith(GTSX_REACT_COMPONENT_FILE_EXTENSION);
18
+ }
19
+ export function normalizeGTSXReactModuleId(id) {
20
+ return id.split("?", 1)[0] ?? id;
21
+ }
22
+ export function transformGTSXComponentBoundaries(input) {
23
+ const sourceFile = ts.createSourceFile(input.filePath, input.code, ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX);
24
+ const replacements = [];
25
+ const insertions = [];
26
+ const coordinateFile = toCoordinateFile(input.root, input.filePath);
27
+ const defaultExportAssignments = readDefaultExportAssignments(sourceFile);
28
+ const boundaries = new Map();
29
+ for (const statement of sourceFile.statements) {
30
+ if (!ts.isFunctionDeclaration(statement) || !statement.name)
31
+ continue;
32
+ const componentName = statement.name.text;
33
+ if (!hasComponentCases(input.code, componentName))
34
+ 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)
43
+ 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") {
52
+ insertions.push({
53
+ index: statement.end,
54
+ text: `\nconst ${componentName} = __gtsxDefineGComponent(${JSON.stringify(`${coordinateFile}#default`)}, ${implementationName})\nexport default ${componentName}\n`,
55
+ });
56
+ continue;
57
+ }
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
+ }
64
+ for (const statement of sourceFile.statements) {
65
+ if (!ts.isExportAssignment(statement) || !ts.isIdentifier(statement.expression))
66
+ continue;
67
+ const boundary = boundaries.get(statement.expression.text);
68
+ if (!boundary || boundary.exportKind === "default")
69
+ continue;
70
+ const defaultComponentName = `${boundary.componentName}GTSXDefault`;
71
+ replacements.push({
72
+ start: statement.getStart(sourceFile),
73
+ end: statement.end,
74
+ text: `const ${defaultComponentName} = __gtsxDefineGComponent(${JSON.stringify(`${coordinateFile}#default`)}, ${boundary.implementationName})\n${defaultComponentName}.cases = ${boundary.componentName}.cases\nexport default ${defaultComponentName}`,
75
+ });
76
+ }
77
+ if (replacements.length === 0)
78
+ return input.code;
79
+ const importInsertionIndex = directivePrologueEnd(sourceFile);
80
+ insertions.push({
81
+ index: importInsertionIndex,
82
+ text: `${importInsertionIndex === 0 ? "" : "\n"}import { defineGComponent as __gtsxDefineGComponent } from "@gtsx/core"\n`,
83
+ });
84
+ return applyEdits(input.code, {
85
+ replacements,
86
+ insertions,
87
+ });
88
+ }
89
+ function readDefaultExportAssignments(sourceFile) {
90
+ const names = new Set();
91
+ for (const statement of sourceFile.statements) {
92
+ if (ts.isExportAssignment(statement) && ts.isIdentifier(statement.expression)) {
93
+ names.add(statement.expression.text);
94
+ }
95
+ }
96
+ return names;
97
+ }
98
+ function directivePrologueEnd(sourceFile) {
99
+ let insertionIndex = 0;
100
+ for (const statement of sourceFile.statements) {
101
+ if (!isStringLiteralExpressionStatement(statement))
102
+ break;
103
+ insertionIndex = statement.end;
104
+ }
105
+ return insertionIndex;
106
+ }
107
+ function isStringLiteralExpressionStatement(statement) {
108
+ return ts.isExpressionStatement(statement) && ts.isStringLiteral(statement.expression);
109
+ }
110
+ function toCoordinateFile(root, filePath) {
111
+ return relative(root, filePath).split("\\").join("/");
112
+ }
113
+ function hasComponentCases(code, componentName) {
114
+ return new RegExp(`\\b${escapeRegExp(componentName)}\\.cases\\s*=`).test(code);
115
+ }
116
+ function hasModifier(node, kind) {
117
+ return Boolean(ts.canHaveModifiers(node) && ts.getModifiers(node)?.some((modifier) => modifier.kind === kind));
118
+ }
119
+ function applyEdits(code, edits) {
120
+ let output = code;
121
+ const orderedEdits = [
122
+ ...edits.replacements.map((replacement) => ({ type: "replace", ...replacement })),
123
+ ...edits.insertions.map((insertion) => ({
124
+ type: "insert",
125
+ start: insertion.index,
126
+ end: insertion.index,
127
+ text: insertion.text,
128
+ })),
129
+ ].sort((left, right) => right.start - left.start);
130
+ for (const edit of orderedEdits) {
131
+ output = `${output.slice(0, edit.start)}${edit.text}${output.slice(edit.end)}`;
132
+ }
133
+ return output;
134
+ }
135
+ function escapeRegExp(value) {
136
+ return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
137
+ }
138
+ //# sourceMappingURL=react-transform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react-transform.js","sourceRoot":"","sources":["../src/react-transform.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ export type GSerializedRuntimeValue = {
2
+ type: "null";
3
+ value: null;
4
+ } | {
5
+ type: "undefined";
6
+ } | {
7
+ type: "string";
8
+ value: string;
9
+ } | {
10
+ type: "number";
11
+ value: number;
12
+ } | {
13
+ type: "boolean";
14
+ value: boolean;
15
+ } | {
16
+ type: "bigint";
17
+ value: string;
18
+ } | {
19
+ type: "symbol";
20
+ description?: string;
21
+ displayName: string;
22
+ } | {
23
+ type: "function";
24
+ name?: string;
25
+ displayName: string;
26
+ } | {
27
+ type: "date";
28
+ value: string;
29
+ } | {
30
+ type: "error";
31
+ name: string;
32
+ message: string;
33
+ } | {
34
+ type: "react-element";
35
+ elementType: string;
36
+ props: GSerializedRuntimeValue;
37
+ } | {
38
+ type: "array";
39
+ values: GSerializedRuntimeValue[];
40
+ truncated?: GRuntimeValueTruncation;
41
+ } | {
42
+ type: "map";
43
+ entries: [GSerializedRuntimeValue, GSerializedRuntimeValue][];
44
+ truncated?: GRuntimeValueTruncation;
45
+ } | {
46
+ type: "set";
47
+ values: GSerializedRuntimeValue[];
48
+ truncated?: GRuntimeValueTruncation;
49
+ } | {
50
+ type: "object";
51
+ constructorName: string;
52
+ entries: {
53
+ key: string;
54
+ value: GSerializedRuntimeValue;
55
+ }[];
56
+ truncated?: GRuntimeValueTruncation;
57
+ } | {
58
+ type: "circular";
59
+ path: string;
60
+ } | {
61
+ type: "truncated";
62
+ reason: "max-depth";
63
+ };
64
+ export type GRuntimeValueTruncation = {
65
+ reason: "max-entries";
66
+ remaining: number;
67
+ };
68
+ export type GRuntimeValueSerializationOptions = {
69
+ maxDepth?: number;
70
+ maxEntries?: number;
71
+ };
72
+ export declare function serializeGRuntimeValue(value: unknown, options?: GRuntimeValueSerializationOptions): GSerializedRuntimeValue;
73
+ //# sourceMappingURL=runtime-values.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-values.d.ts","sourceRoot":"","sources":["../src/runtime-values.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,uBAAuB,GAC/B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,IAAI,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACxD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,uBAAuB,CAAA;CAAE,GAC9E;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,uBAAuB,EAAE,CAAC;IAAC,SAAS,CAAC,EAAE,uBAAuB,CAAA;CAAE,GACzF;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,CAAC,uBAAuB,EAAE,uBAAuB,CAAC,EAAE,CAAC;IAAC,SAAS,CAAC,EAAE,uBAAuB,CAAA;CAAE,GACnH;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,uBAAuB,EAAE,CAAC;IAAC,SAAS,CAAC,EAAE,uBAAuB,CAAA;CAAE,GACvF;IACE,IAAI,EAAE,QAAQ,CAAA;IACd,eAAe,EAAE,MAAM,CAAA;IACvB,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,uBAAuB,CAAA;KAAE,EAAE,CAAA;IAC1D,SAAS,CAAC,EAAE,uBAAuB,CAAA;CACpC,GACD;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,CAAA;AAE9C,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,aAAa,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,iCAAiC,GAAG;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAWD,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,iCAAsC,GAC9C,uBAAuB,CAMzB"}