Skip to content

fix(webapi): expose concrete public module types [Codex] - #402

Merged
jderochervlk merged 4 commits into
mainfrom
fix/237-concrete-module-types
Nov 8, 2026
Merged

jderochervlk merged 4 commits into
mainfrom
fix/237-concrete-module-types

Conversation

@jderochervlk

@jderochervlk jderochervlk commented Nov 8, 2026 •

Copy link
Copy Markdown
Collaborator

Concrete public modules now expose their primary type as t, including the missing canvas, geometry, font, storage, file, media, device, worker, and audio interfaces. Record-backed aliases explicitly re-export their existing shapes without changing privacy: private records remain private, and public records remain public. Generic and inherited types are preserved.

Packed consumer fixtures check public field access, constructor results, generic types, and rejection of a private record. The broader native-type privacy plan is tracked in #403 and is outside this change. Closes #237.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 8, 2026 •

Copy link
Copy Markdown
Codex Review Summary: ✅ Completed

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-08T21:55:52.258391Z 8a1e398 New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@jderochervlk
jderochervlk marked this pull request as draft November 8, 2026 18:46
@jderochervlk
jderochervlk marked this pull request as ready for review November 8, 2026 18:52

@jderochervlk jderochervlk left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed 737c852cf7a968b956f06caffa8110a86a02a192 against 844c32af.

Found one documentation regression caused by alias placement, detailed inline. I found no other concrete correctness or compatibility defect in the type additions. The public-module inventory and packed-consumer coverage include the new aliases.

Independent checks in a clean archive passed: npm ci, npm run build, npm test, npm run check:consumer (including negative consumers), npm run format:check, npm run check:features, npm run build:docs, and npm run check:docs-links. I also compared compiler-generated documentation for all 92 changed source modules against the base; ten existing declarations lost their comments to the new aliases. Browser tests were not rerun locally for this review. No repository files were edited.

Comment thread src/storage/IDBObjectStore.res Resolved
@jderochervlk

Copy link
Copy Markdown
Collaborator Author

Focused review completed on 8a1e398b345ca895f1a9443fac344166004bbaaf with no new findings. All 80 explicit record re-exports preserve their backing record's privacy. The two remaining bare aliases refer to abstract types and cannot use record spread.

Independent packed-consumer checks confirmed constructor/result compatibility, the direct backing-type references, generic types, field reads, and public URL/FontFace writes with warning 111 treated as an error. Native URL mutation also passed at runtime. The checked-in ImageBitmap negative fails specifically on private construction and compiles when only its privacy is relaxed in a scratch package. All ten previously displaced method comments still match their original documentation.

On this exact head, clean install, build, npm test, packed consumers including negative cases, formatting, all 28 feature builds, docs generation and docs-link checks passed. CI build and Release validation are green. Browser tests were not rerun locally for this review. The broader change to make currently public native types private remains tracked separately in #403.

@jderochervlk
jderochervlk merged commit 4888db2 into main Nov 8, 2026
4 checks passed
@jderochervlk
jderochervlk deleted the fix/237-concrete-module-types branch November 8, 2026 22:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Simplify package module/type structure

1 participant