@designtools/next-plugin 0.1.8 → 0.1.9

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.js CHANGED
@@ -142,36 +142,36 @@ function withDesigntools(nextConfig = {}) {
142
142
  };
143
143
  const sourceRule = {
144
144
  loaders: [sourceLoader],
145
- as: "*.tsx",
146
145
  condition: {
147
- path: /\.(tsx|jsx)$/
146
+ not: "foreign"
148
147
  }
149
148
  };
150
- const wildcardGlob = "{*,designtools-source}";
151
- let wildcardRule = nextConfig.turbopack?.rules?.[wildcardGlob] ?? [];
152
- wildcardRule = [
153
- ...Array.isArray(wildcardRule) ? wildcardRule : [wildcardRule],
154
- sourceRule
155
- ];
156
149
  const mountRule = {
157
150
  loaders: [mountLoader],
158
- as: "*.tsx",
159
151
  condition: {
160
- path: /layout\.(tsx|jsx)$/
152
+ all: [
153
+ { not: "foreign" },
154
+ { path: /layout\.(tsx|jsx)$/ }
155
+ ]
161
156
  }
162
157
  };
163
- const mountGlob = "{*,designtools-mount}";
164
- let mountGlobRule = nextConfig.turbopack?.rules?.[mountGlob] ?? [];
165
- mountGlobRule = [
166
- ...Array.isArray(mountGlobRule) ? mountGlobRule : [mountGlobRule],
167
- mountRule
168
- ];
158
+ const existingRules = nextConfig.turbopack?.rules ?? {};
159
+ const tsxRule = existingRules["*.tsx"] ?? [];
160
+ const jsxRule = existingRules["*.jsx"] ?? [];
169
161
  result.turbopack = {
170
162
  ...nextConfig.turbopack,
171
163
  rules: {
172
- ...nextConfig.turbopack?.rules,
173
- [wildcardGlob]: wildcardRule,
174
- [mountGlob]: mountGlobRule
164
+ ...existingRules,
165
+ "*.tsx": [
166
+ ...Array.isArray(tsxRule) ? tsxRule : [tsxRule],
167
+ sourceRule,
168
+ mountRule
169
+ ],
170
+ "*.jsx": [
171
+ ...Array.isArray(jsxRule) ? jsxRule : [jsxRule],
172
+ sourceRule,
173
+ mountRule
174
+ ]
175
175
  }
176
176
  };
177
177
  }
package/dist/index.mjs CHANGED
@@ -110,36 +110,36 @@ function withDesigntools(nextConfig = {}) {
110
110
  };
111
111
  const sourceRule = {
112
112
  loaders: [sourceLoader],
113
- as: "*.tsx",
114
113
  condition: {
115
- path: /\.(tsx|jsx)$/
114
+ not: "foreign"
116
115
  }
117
116
  };
118
- const wildcardGlob = "{*,designtools-source}";
119
- let wildcardRule = nextConfig.turbopack?.rules?.[wildcardGlob] ?? [];
120
- wildcardRule = [
121
- ...Array.isArray(wildcardRule) ? wildcardRule : [wildcardRule],
122
- sourceRule
123
- ];
124
117
  const mountRule = {
125
118
  loaders: [mountLoader],
126
- as: "*.tsx",
127
119
  condition: {
128
- path: /layout\.(tsx|jsx)$/
120
+ all: [
121
+ { not: "foreign" },
122
+ { path: /layout\.(tsx|jsx)$/ }
123
+ ]
129
124
  }
130
125
  };
131
- const mountGlob = "{*,designtools-mount}";
132
- let mountGlobRule = nextConfig.turbopack?.rules?.[mountGlob] ?? [];
133
- mountGlobRule = [
134
- ...Array.isArray(mountGlobRule) ? mountGlobRule : [mountGlobRule],
135
- mountRule
136
- ];
126
+ const existingRules = nextConfig.turbopack?.rules ?? {};
127
+ const tsxRule = existingRules["*.tsx"] ?? [];
128
+ const jsxRule = existingRules["*.jsx"] ?? [];
137
129
  result.turbopack = {
138
130
  ...nextConfig.turbopack,
139
131
  rules: {
140
- ...nextConfig.turbopack?.rules,
141
- [wildcardGlob]: wildcardRule,
142
- [mountGlob]: mountGlobRule
132
+ ...existingRules,
133
+ "*.tsx": [
134
+ ...Array.isArray(tsxRule) ? tsxRule : [tsxRule],
135
+ sourceRule,
136
+ mountRule
137
+ ],
138
+ "*.jsx": [
139
+ ...Array.isArray(jsxRule) ? jsxRule : [jsxRule],
140
+ sourceRule,
141
+ mountRule
142
+ ]
143
143
  }
144
144
  };
145
145
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@designtools/next-plugin",
3
- "version": "0.1.8",
3
+ "version": "0.1.9",
4
4
  "main": "dist/index.js",
5
5
  "exports": {
6
6
  ".": {
package/src/index.ts CHANGED
@@ -63,8 +63,11 @@ export function withDesigntools<T extends Record<string, any>>(nextConfig: T = {
63
63
  },
64
64
  };
65
65
 
66
- // Turbopack support — register the same loaders via turbopack.rules
67
- // following the exact pattern used by @next/mdx.
66
+ // Turbopack support — register the same loaders via turbopack.rules.
67
+ // Unlike @next/mdx (which converts .mdx .tsx and needs `as: '*.tsx'`),
68
+ // our loaders transform .tsx → .tsx (same extension), so we must NOT use `as`
69
+ // — that would cause Turbopack to re-append the extension (.tsx.tsx).
70
+ // Instead, use glob patterns that match the file extensions directly.
68
71
  if (process.env.TURBOPACK) {
69
72
  const sourceLoader = {
70
73
  loader: path.resolve(__dirname, "loader.js"),
@@ -79,44 +82,46 @@ export function withDesigntools<T extends Record<string, any>>(nextConfig: T = {
79
82
  loader: path.resolve(__dirname, "codesurface-mount-loader.js"),
80
83
  };
81
84
 
82
- // Source annotation rule uses a unique glob like @next/mdx does
85
+ // Source annotation loader for all .tsx/.jsx files (excluding node_modules)
83
86
  const sourceRule = {
84
87
  loaders: [sourceLoader],
85
- as: "*.tsx",
86
88
  condition: {
87
- path: /\.(tsx|jsx)$/,
89
+ not: "foreign",
88
90
  },
89
91
  };
90
92
 
91
- const wildcardGlob = "{*,designtools-source}";
92
- let wildcardRule = (nextConfig as any).turbopack?.rules?.[wildcardGlob] ?? [];
93
- wildcardRule = [
94
- ...(Array.isArray(wildcardRule) ? wildcardRule : [wildcardRule]),
95
- sourceRule,
96
- ];
97
-
98
- // Mount loader rule for root layout files
93
+ // Mount loader for layout files (the loader itself checks for <html to skip nested layouts)
99
94
  const mountRule = {
100
95
  loaders: [mountLoader],
101
- as: "*.tsx",
102
96
  condition: {
103
- path: /layout\.(tsx|jsx)$/,
97
+ all: [
98
+ { not: "foreign" },
99
+ { path: /layout\.(tsx|jsx)$/ },
100
+ ],
104
101
  },
105
102
  };
106
103
 
107
- const mountGlob = "{*,designtools-mount}";
108
- let mountGlobRule = (nextConfig as any).turbopack?.rules?.[mountGlob] ?? [];
109
- mountGlobRule = [
110
- ...(Array.isArray(mountGlobRule) ? mountGlobRule : [mountGlobRule]),
111
- mountRule,
112
- ];
104
+ // Use glob patterns that match tsx/jsx files.
105
+ // The source loader uses separate globs for .tsx and .jsx.
106
+ const existingRules = (nextConfig as any).turbopack?.rules ?? {};
107
+
108
+ const tsxRule = existingRules["*.tsx"] ?? [];
109
+ const jsxRule = existingRules["*.jsx"] ?? [];
113
110
 
114
111
  result.turbopack = {
115
112
  ...(nextConfig as any).turbopack,
116
113
  rules: {
117
- ...(nextConfig as any).turbopack?.rules,
118
- [wildcardGlob]: wildcardRule,
119
- [mountGlob]: mountGlobRule,
114
+ ...existingRules,
115
+ "*.tsx": [
116
+ ...(Array.isArray(tsxRule) ? tsxRule : [tsxRule]),
117
+ sourceRule,
118
+ mountRule,
119
+ ],
120
+ "*.jsx": [
121
+ ...(Array.isArray(jsxRule) ? jsxRule : [jsxRule]),
122
+ sourceRule,
123
+ mountRule,
124
+ ],
120
125
  },
121
126
  };
122
127
  }