@gtsx/adapter-next-react 0.0.2 → 0.0.3
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/index.d.ts.map +1 -1
- package/dist/index.js +13 -10
- package/dist/index.js.map +1 -1
- package/index.cjs +16 -10
- package/loader.cjs +22 -2
- package/package.json +3 -3
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAmB5C,KAAK,iBAAiB,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,KAAK,GAAG,CAAA;AAS3D,KAAK,cAAc,GAAG;IACpB,OAAO,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAA;IAClC,SAAS,CAAC,EAAE,GAAG,CAAA;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB,CAAA;AAED,KAAK,oBAAoB,GAAG;IAC1B,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,cAAc,CAAC,EAAE,KAAK,GAAG,6BAA6B,CAAA;IACtD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,KAAK,6BAA6B,GAAG;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAmB5C,KAAK,iBAAiB,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,KAAK,GAAG,CAAA;AAS3D,KAAK,cAAc,GAAG;IACpB,OAAO,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAA;IAClC,SAAS,CAAC,EAAE,GAAG,CAAA;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB,CAAA;AAED,KAAK,oBAAoB,GAAG;IAC1B,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,cAAc,CAAC,EAAE,KAAK,GAAG,6BAA6B,CAAA;IACtD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,KAAK,6BAA6B,GAAG;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAaD,wBAAgB,aAAa,CAAC,OAAO,GAAE,oBAAyB,IAM5B,MAAM,SAAS,cAAc,EAAE,aAAY,MAAqB,KAAG,MAAM,GAAG,cAAc,CAgC7H"}
|
package/dist/index.js
CHANGED
|
@@ -6,6 +6,7 @@ import { resolveGTSXConfig } from "@gtsx/core/config-model";
|
|
|
6
6
|
const defaultPreviewEntriesModuleId = "@gtsx/adapter-next-react/preview-entries";
|
|
7
7
|
const defaultPreviewEntriesOutputFile = ".gtsx/preview-entries.ts";
|
|
8
8
|
const ignoredPreviewEntryDirs = new Set(["node_modules", "dist", ".next", ".git", ".gtsx"]);
|
|
9
|
+
const previewImportQuery = "gtsx-preview";
|
|
9
10
|
export function gtsxNextReact(options = {}) {
|
|
10
11
|
const root = options.root ?? process.cwd();
|
|
11
12
|
const loaderPath = resolve(dirname(fileURLToPath(import.meta.url)), "../loader.cjs");
|
|
@@ -29,7 +30,7 @@ export function gtsxNextReact(options = {}) {
|
|
|
29
30
|
resolvedConfig.module.rules.unshift({
|
|
30
31
|
test: /\.g\.tsx$/,
|
|
31
32
|
enforce: "pre",
|
|
32
|
-
use: [{ loader: loaderPath, options: { root, transformPath } }],
|
|
33
|
+
use: [{ loader: loaderPath, options: { previewQuery: previewImportQuery, root, transformPath } }],
|
|
33
34
|
});
|
|
34
35
|
return resolvedConfig;
|
|
35
36
|
},
|
|
@@ -39,8 +40,7 @@ export function gtsxNextReact(options = {}) {
|
|
|
39
40
|
}
|
|
40
41
|
function withGTSXTurbopackConfig(turbopack, loaderPath, root, transformPath, previewEntries) {
|
|
41
42
|
const gtsxRule = {
|
|
42
|
-
loaders: [{ loader: loaderPath, options: { root, transformPath } }],
|
|
43
|
-
as: "*.tsx",
|
|
43
|
+
loaders: [{ loader: loaderPath, options: { previewQuery: previewImportQuery, root, transformPath, transpilePreview: true } }],
|
|
44
44
|
};
|
|
45
45
|
const rules = turbopack?.rules ?? {};
|
|
46
46
|
return {
|
|
@@ -88,12 +88,14 @@ function writeGTSXNextPreviewEntries(root, options) {
|
|
|
88
88
|
writeFileSync(options.outputPath, code);
|
|
89
89
|
}
|
|
90
90
|
function discoverGTSXPreviewFiles(root, projectRoot) {
|
|
91
|
-
const directory = resolve(root, projectRoot);
|
|
92
|
-
if (!existsSync(directory))
|
|
93
|
-
return [];
|
|
94
91
|
const files = [];
|
|
95
|
-
|
|
92
|
+
collectGTSXPreviewFiles(resolve(root, projectRoot), files);
|
|
96
93
|
return files.map((filePath) => relative(root, filePath).split(sep).join("/")).sort((left, right) => left.localeCompare(right));
|
|
94
|
+
}
|
|
95
|
+
function collectGTSXPreviewFiles(directory, files) {
|
|
96
|
+
if (!existsSync(directory))
|
|
97
|
+
return;
|
|
98
|
+
walk(directory);
|
|
97
99
|
function walk(currentDirectory) {
|
|
98
100
|
for (const dirent of readdirSync(currentDirectory, { withFileTypes: true })) {
|
|
99
101
|
if (dirent.isDirectory()) {
|
|
@@ -111,7 +113,7 @@ function discoverGTSXPreviewFiles(root, projectRoot) {
|
|
|
111
113
|
function createGTSXNextPreviewEntriesModule(root, outputPath, files) {
|
|
112
114
|
const entries = files.map((filePath) => {
|
|
113
115
|
const absoluteFilePath = resolve(root, filePath);
|
|
114
|
-
return ` ${JSON.stringify(filePath)}: () => import(${JSON.stringify(toGeneratedImportSpecifier(outputPath, absoluteFilePath))}),`;
|
|
116
|
+
return ` ${JSON.stringify(filePath)}: () => import(${JSON.stringify(toGeneratedImportSpecifier(outputPath, absoluteFilePath, previewImportQuery))}),`;
|
|
115
117
|
});
|
|
116
118
|
return `import type { GTSXPreviewComponent } from "@gtsx/adapter-next-react/preview"
|
|
117
119
|
|
|
@@ -139,10 +141,11 @@ export function parseGTSXPreviewEntry(entry: string): { file: string; exportName
|
|
|
139
141
|
}
|
|
140
142
|
`;
|
|
141
143
|
}
|
|
142
|
-
function toGeneratedImportSpecifier(outputPath, absoluteFilePath) {
|
|
144
|
+
function toGeneratedImportSpecifier(outputPath, absoluteFilePath, previewQuery) {
|
|
143
145
|
const extensionless = absoluteFilePath.replace(/\.tsx$/, "");
|
|
144
146
|
const relativePath = relative(dirname(outputPath), extensionless).split(sep).join("/");
|
|
145
|
-
|
|
147
|
+
const specifier = relativePath.startsWith(".") ? relativePath : `./${relativePath}`;
|
|
148
|
+
return `${specifier}?${previewQuery}`;
|
|
146
149
|
}
|
|
147
150
|
function toTurbopackResolveAliasPath(root, outputPath) {
|
|
148
151
|
const relativePath = relative(root, outputPath).split(sep).join("/");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACzF,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAsD3D,MAAM,6BAA6B,GAAG,0CAA0C,CAAA;AAChF,MAAM,+BAA+B,GAAG,0BAA0B,CAAA;AAClE,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/index.cjs
CHANGED
|
@@ -6,6 +6,7 @@ const { dirname, relative, resolve, sep } = require("node:path")
|
|
|
6
6
|
const defaultPreviewEntriesModuleId = "@gtsx/adapter-next-react/preview-entries"
|
|
7
7
|
const defaultPreviewEntriesOutputFile = ".gtsx/preview-entries.ts"
|
|
8
8
|
const ignoredPreviewEntryDirs = new Set(["node_modules", "dist", ".next", ".git", ".gtsx"])
|
|
9
|
+
const previewImportQuery = "gtsx-preview"
|
|
9
10
|
|
|
10
11
|
function gtsxNextReact(options = {}) {
|
|
11
12
|
const root = options.root ?? process.cwd()
|
|
@@ -34,7 +35,7 @@ function gtsxNextReact(options = {}) {
|
|
|
34
35
|
resolvedConfig.module.rules.unshift({
|
|
35
36
|
test: /\.g\.tsx$/,
|
|
36
37
|
enforce: "pre",
|
|
37
|
-
use: [{ loader: loaderPath, options: { root, transformPath } }],
|
|
38
|
+
use: [{ loader: loaderPath, options: { previewQuery: previewImportQuery, root, transformPath } }],
|
|
38
39
|
})
|
|
39
40
|
return resolvedConfig
|
|
40
41
|
},
|
|
@@ -51,8 +52,7 @@ function gtsxNextReact(options = {}) {
|
|
|
51
52
|
|
|
52
53
|
function withGTSXTurbopackConfig(turbopack, loaderPath, root, transformPath, previewEntries) {
|
|
53
54
|
const gtsxRule = {
|
|
54
|
-
loaders: [{ loader: loaderPath, options: { root, transformPath } }],
|
|
55
|
-
as: "*.tsx",
|
|
55
|
+
loaders: [{ loader: loaderPath, options: { previewQuery: previewImportQuery, root, transformPath, transpilePreview: true } }],
|
|
56
56
|
}
|
|
57
57
|
const rules = turbopack?.rules ?? {}
|
|
58
58
|
|
|
@@ -99,12 +99,17 @@ function writeGTSXNextPreviewEntries(root, options) {
|
|
|
99
99
|
}
|
|
100
100
|
|
|
101
101
|
function discoverGTSXPreviewFiles(root, projectRoot) {
|
|
102
|
-
const directory = resolve(root, projectRoot)
|
|
103
|
-
if (!existsSync(directory)) return []
|
|
104
|
-
|
|
105
102
|
const files = []
|
|
106
|
-
|
|
103
|
+
|
|
104
|
+
collectGTSXPreviewFiles(resolve(root, projectRoot), files)
|
|
105
|
+
|
|
107
106
|
return files.map((filePath) => relative(root, filePath).split(sep).join("/")).sort((left, right) => left.localeCompare(right))
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
function collectGTSXPreviewFiles(directory, files) {
|
|
110
|
+
if (!existsSync(directory)) return
|
|
111
|
+
|
|
112
|
+
walk(directory)
|
|
108
113
|
|
|
109
114
|
function walk(currentDirectory) {
|
|
110
115
|
for (const dirent of readdirSync(currentDirectory, { withFileTypes: true })) {
|
|
@@ -125,7 +130,7 @@ function discoverGTSXPreviewFiles(root, projectRoot) {
|
|
|
125
130
|
function createGTSXNextPreviewEntriesModule(root, outputPath, files) {
|
|
126
131
|
const entries = files.map((filePath) => {
|
|
127
132
|
const absoluteFilePath = resolve(root, filePath)
|
|
128
|
-
return ` ${JSON.stringify(filePath)}: () => import(${JSON.stringify(toGeneratedImportSpecifier(outputPath, absoluteFilePath))}),`
|
|
133
|
+
return ` ${JSON.stringify(filePath)}: () => import(${JSON.stringify(toGeneratedImportSpecifier(outputPath, absoluteFilePath, previewImportQuery))}),`
|
|
129
134
|
})
|
|
130
135
|
|
|
131
136
|
return `import type { GTSXPreviewComponent } from "@gtsx/adapter-next-react/preview"
|
|
@@ -155,10 +160,11 @@ export function parseGTSXPreviewEntry(entry: string): { file: string; exportName
|
|
|
155
160
|
`
|
|
156
161
|
}
|
|
157
162
|
|
|
158
|
-
function toGeneratedImportSpecifier(outputPath, absoluteFilePath) {
|
|
163
|
+
function toGeneratedImportSpecifier(outputPath, absoluteFilePath, previewQuery) {
|
|
159
164
|
const extensionless = absoluteFilePath.replace(/\.tsx$/, "")
|
|
160
165
|
const relativePath = relative(dirname(outputPath), extensionless).split(sep).join("/")
|
|
161
|
-
|
|
166
|
+
const specifier = relativePath.startsWith(".") ? relativePath : `./${relativePath}`
|
|
167
|
+
return `${specifier}?${previewQuery}`
|
|
162
168
|
}
|
|
163
169
|
|
|
164
170
|
function toTurbopackResolveAliasPath(root, outputPath) {
|
package/loader.cjs
CHANGED
|
@@ -8,16 +8,30 @@ module.exports = function gtsxNextReactLoader(source, inputSourceMap) {
|
|
|
8
8
|
const root = typeof options.root === "string" ? options.root : process.cwd()
|
|
9
9
|
const transformModule = typeof options.transformPath === "string" ? pathToFileURL(options.transformPath).href : "@gtsx/core/react-transform"
|
|
10
10
|
const filePath = this.resourcePath
|
|
11
|
+
const previewQuery = typeof options.previewQuery === "string" ? options.previewQuery : "gtsx-preview"
|
|
12
|
+
const isPreviewImport = hasResourceQuery(this.resourceQuery, previewQuery)
|
|
13
|
+
const shouldTranspilePreview = options.transpilePreview !== false
|
|
11
14
|
const code = Buffer.isBuffer(source) ? source.toString("utf8") : String(source)
|
|
12
15
|
|
|
16
|
+
if (!isPreviewImport) {
|
|
17
|
+
callback(null, code, inputSourceMap)
|
|
18
|
+
return
|
|
19
|
+
}
|
|
20
|
+
|
|
13
21
|
import(transformModule).then(
|
|
14
|
-
({ transformGTSXReactModule }) => {
|
|
22
|
+
({ transformGTSXReactModule, transpileGTSXReactModuleCode }) => {
|
|
15
23
|
const transformed = transformGTSXReactModule({
|
|
16
24
|
code,
|
|
17
25
|
filePath,
|
|
26
|
+
previewImportQuery: previewQuery,
|
|
18
27
|
root,
|
|
19
28
|
})
|
|
20
|
-
|
|
29
|
+
const output = transformed?.code ?? code
|
|
30
|
+
const finalOutput =
|
|
31
|
+
shouldTranspilePreview && typeof transpileGTSXReactModuleCode === "function"
|
|
32
|
+
? transpileGTSXReactModuleCode({ code: output, filePath })
|
|
33
|
+
: output
|
|
34
|
+
callback(null, finalOutput, inputSourceMap)
|
|
21
35
|
},
|
|
22
36
|
(error) => {
|
|
23
37
|
callback(error)
|
|
@@ -36,3 +50,9 @@ function readLoaderOptions(context) {
|
|
|
36
50
|
|
|
37
51
|
return context.query
|
|
38
52
|
}
|
|
53
|
+
|
|
54
|
+
function hasResourceQuery(resourceQuery, queryName) {
|
|
55
|
+
if (typeof resourceQuery !== "string" || resourceQuery.length === 0) return false
|
|
56
|
+
const query = resourceQuery.startsWith("?") ? resourceQuery.slice(1) : resourceQuery
|
|
57
|
+
return query.split("&").some((part) => part === queryName || part.startsWith(`${queryName}=`))
|
|
58
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gtsx/adapter-next-react",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.3",
|
|
4
4
|
"description": "Next.js React adapter for GTSX component preview integration.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -57,12 +57,12 @@
|
|
|
57
57
|
"loader.cjs"
|
|
58
58
|
],
|
|
59
59
|
"dependencies": {
|
|
60
|
-
"@gtsx/preview-react": "0.0.
|
|
60
|
+
"@gtsx/preview-react": "0.0.3"
|
|
61
61
|
},
|
|
62
62
|
"peerDependencies": {
|
|
63
63
|
"next": ">=13",
|
|
64
64
|
"react": ">=18",
|
|
65
|
-
"@gtsx/core": "0.0.
|
|
65
|
+
"@gtsx/core": "0.0.3"
|
|
66
66
|
},
|
|
67
67
|
"scripts": {
|
|
68
68
|
"build": "tsc -p tsconfig.build.json",
|