Skip to content

feat(binding): add async module initialization lifecycle - #32

Merged
GG-O-BP merged 1 commit into
mainfrom
feat/async-module-initialization-issue-7
Sep 7, 2026
Merged

feat(binding): add async module initialization lifecycle#32
GG-O-BP merged 1 commit into
mainfrom
feat/async-module-initialization-issue-7

Conversation

@GG-O-BP

@GG-O-BP GG-O-BP commented Sep 7, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • extend configured npm bindings with an optional static initializer export and explicit never / on-failure retry policy while preserving scalar and array binding syntax
  • add caller-owned Uninitialized / Initializing / Ready / Failed lifecycle APIs backed by gleam/javascript/promise, including shared one-flight attempts, reset/settlement behavior, Lustre effects, and React Suspense consumption
  • keep generated FFI deterministic and minimal: static imports, metadata lookup, and direct initializer invocation only; no dynamic import or handwritten Promise orchestration
  • add typed synchronous-start and asynchronous-rejection errors, synthetic module coverage, and English/Korean/Japanese documentation

Validation

  • ./scripts/verify.sh inner glendix
    • format, check, warnings-as-errors, docs: passed
    • Bun tests: 125 passed
  • mandatory pre-push ./scripts/verify.sh final
    • source/style/FFI/boundary/generated checks: passed (342 external declarations)
    • standalone consumers: glendam, glendix, mendraw, mxpak passed
    • package tests: justin_fork 5, glendix 125, mendraw 41, mxpak 121 passed
    • Glendam browser tests: 61 passed
    • widget MPK build/inspection: passed
    • Lustre browser smoke: passed
    • Mendix 11.12.0 build: BUILD SUCCEEDED
    • Mendix runtime browser smoke: passed

The local Hex API repeatedly enforced its burst rate limit, so the validation-only command wrapper retried only that exact environmental error. It did not alter product source or validation criteria.

Closes #7

@GG-O-BP
GG-O-BP merged commit b4f0df1 into main Sep 7, 2026
1 check passed
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.

[bindings] Support asynchronous initialization for configured npm modules

1 participant