Skip to content

Commit ecb76b2

Browse files
gregrewebclaude
authored
fix: make yarn build work cleanly (node-modules linker + TypeScript) (#501)
* fix: make yarn build work cleanly (node-modules linker + TypeScript fixes) - Switch to nodeLinker: node-modules so tsc can resolve packages properly - Force gl@9.0.0-rc.9 in resolutions to avoid gl@5.0.3 (fails to compile on GCC 13) - Enable allowDeclareFields in babel preset-typescript - Use declare modifier on context class fields (Bus, Node, connectSize) - Fix as unknown as casts in getContext.ts (TS2352) - Fix readonly index signature delete in GLViewDOM and gl-react-headless (TS2542) - Fix version string cast in GLViewDOM (TS2345) - Add globals.d.ts stubs for react-native/__DEV__/global in expo/native packages - Fix build.sh to delete .tsbuildinfo on clean so tsc always regenerates .d.ts - Extend typeRoots in gl-react tsconfig to include @types/node Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix: update tests package to use gl-react ^6.0.0 (node-modules linker needs version match) --------- Co-authored-by: greweb <greweb@protonmail.com> Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 00e7a9e commit ecb76b2

16 files changed

Lines changed: 54 additions & 504 deletions

File tree

.yarnrc.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
nodeLinker: node-modules

babel.config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@ module.exports = {
1010
},
1111
],
1212
"@babel/preset-react",
13-
"@babel/preset-typescript",
13+
["@babel/preset-typescript", { allowDeclareFields: true }],
1414
],
1515
};

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@
2424
"fast-uri": "^3.1.2",
2525
"follow-redirects": "^1.16.0",
2626
"ip-address": "^10.2.0",
27-
"@xmldom/xmldom": "^0.8.13"
27+
"@xmldom/xmldom": "^0.8.13",
28+
"gl": "9.0.0-rc.9"
2829
},
2930
"devDependencies": {
3031
"@babel/cli": "^7.26.0",

packages/gl-react-dom/src/GLViewDOM.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ export default class GLViewDOM extends Component<
145145
);
146146
for (let k in propTypes) {
147147
if (rest.hasOwnProperty(k)) {
148-
delete rest[k];
148+
delete (rest as any)[k];
149149
}
150150
}
151151
return (
@@ -177,7 +177,7 @@ export default class GLViewDOM extends Component<
177177
debug
178178
? { ...webglContextAttributes, preserveDrawingBuffer: true }
179179
: webglContextAttributes,
180-
version || "auto"
180+
(version || "auto") as "webgl" | "webgl2" | "auto"
181181
);
182182
this.webglContextAttributes = webglContextAttributes || {};
183183
return gl;

packages/gl-react-dom/src/getContext.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,19 @@ const getContext = (
55
) => {
66
let gl: WebGLRenderingContext | null = null;
77
if (version === "webgl2" || version === "auto") {
8-
gl = canvas.getContext("webgl2", opts) as WebGLRenderingContext | null;
8+
gl = canvas.getContext("webgl2", opts) as unknown as WebGLRenderingContext | null;
99
}
1010
if (!gl && (version === "webgl" || version === "auto")) {
1111
gl =
12-
(canvas.getContext("webgl", opts) as WebGLRenderingContext | null) ||
12+
(canvas.getContext("webgl", opts) as unknown as WebGLRenderingContext | null) ||
1313
(canvas.getContext(
1414
"webgl-experimental" as any,
1515
opts
16-
) as WebGLRenderingContext | null) ||
16+
) as unknown as WebGLRenderingContext | null) ||
1717
(canvas.getContext(
1818
"experimental-webgl" as any,
1919
opts
20-
) as WebGLRenderingContext | null);
20+
) as unknown as WebGLRenderingContext | null);
2121
}
2222
return gl;
2323
};

packages/gl-react-expo/src/GLViewNative.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ export default class GLViewNative extends Component<{
5555
style={[{ position: "relative", overflow: "hidden" }, style]}
5656
>
5757
<EXGLView
58+
{...({} as any)}
5859
style={[
5960
style,
6061
{
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
declare module "react-native" {
2+
export const View: any;
3+
}
4+
declare const __DEV__: boolean;
5+
declare var global: typeof globalThis & {
6+
requestAnimationFrame: (callback: FrameRequestCallback) => number;
7+
cancelAnimationFrame: (id: number) => void;
8+
};

packages/gl-react-headless/src/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ class GLView extends Component<{
9191
render() {
9292
const { width, height, debug, children, ...rest } = this.props;
9393
for (let k in propTypes) {
94-
delete rest[k];
94+
delete (rest as any)[k];
9595
}
9696
return (
9797
<canvas ref={this.onRef} width={width} height={height} {...rest}>
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
declare module "react-native" {
2+
export const View: any;
3+
}
4+
declare var global: typeof globalThis & {
5+
requestAnimationFrame: (callback: FrameRequestCallback) => number;
6+
cancelAnimationFrame: (id: number) => void;
7+
};

packages/gl-react/src/Bus.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export default class Bus extends Component<Props, any> {
2222
id: number = genId();
2323
static contextType = GLContext;
2424

25-
context!: {
25+
declare context: {
2626
glParent: any;
2727
glSurface: any;
2828
glSizable: any;

0 commit comments

Comments
 (0)