Tags: MelbourneDeveloper/dart_node
Tags
Add dart_node_sql_js as a publishable package (sql.js bindings) (#60) ## TLDR Promote `dart_node_sql_js` from a `publish_to: none` stub into a full tier-2 publishable package (typed sql.js / SQLite-on-WASM bindings) for the 0.13.0-beta release. ## What Was Added? - **`packages/dart_node_sql_js`** as a real publishable package: `README.md`, `CHANGELOG.md` (`## 0.13.0-beta`), `LICENSE`, `analysis_options.yaml` (austerity), `dart_test.yaml`, `package.json` (`sql.js ^1.14.1`). - **32 integration tests** in `test/database_test.dart` covering open/prepare/exec/run/get/all/save/close/pragma, data types, transactions and constraints — **100% line coverage** (71/71). - Wiring: `tools/lib/packages.dart` (tier 2, node), `tools/test.sh` (`NODE_PACKAGES` + `TIER2`), `coverage-thresholds.json` (`dart_node_sql_js: 100.0`), `publish-tier1.yml` changelog validation, `publish-tier2.yml` publish list, release skill. ## What Was Changed or Deleted? - Rewrote `lib/src/database.dart` and `lib/src/statement.dart` to use **typed `dart:js_interop` extension types** instead of nullable `as` casts, so the package passes `dart analyze` under austerity. - **Bug fix:** sql.js `export()` frees every live prepared statement, so the previous "auto-save after each write" design broke prepared-statement reuse (`Statement closed`) and rolled-back transactions silently committed. Persistence now happens on `close()` / explicit `save()` only. Added `save()` to the `Database` API. Removed `publish_to: none`; set version `0.13.0-beta`. ## How Do The Automated Tests Prove It Works? - `Statement.run inserts multiple rows with incrementing rowid`, `updates rows and returns changes count`, `deletes rows and returns changes count` — these **failed before the fix** (only the first write survived because `export()` closed the reused statement) and pass now. - `Transactions rolls back transaction` asserts the balance is restored to 100 — previously reported 200 because the mid-transaction export persisted uncommitted state. - `save persists changes that survive reopen` and `loads an existing database file` prove the new persistence model round-trips to disk. - `openDatabase returns error when the path cannot be read` and `Database.close returns error when the save target directory is missing` cover the `Result` error paths. Full suite: 32/32 passing, 100% coverage (enforced by the ratchet in `tools/test.sh`). ## Spec / Doc Changes - New package `README.md` documents the async `initializeSqlJs()` + `save`/`close` persistence model. Release skill (`SKILL.md`) tier-2 lists updated to include `dart_node_sql_js`. ## Breaking Changes - [x] None (new package; first publish at 0.13.0-beta)
Add dart_node_sql_js as a publishable package (sql.js bindings) (#60) ## TLDR Promote `dart_node_sql_js` from a `publish_to: none` stub into a full tier-2 publishable package (typed sql.js / SQLite-on-WASM bindings) for the 0.13.0-beta release. ## What Was Added? - **`packages/dart_node_sql_js`** as a real publishable package: `README.md`, `CHANGELOG.md` (`## 0.13.0-beta`), `LICENSE`, `analysis_options.yaml` (austerity), `dart_test.yaml`, `package.json` (`sql.js ^1.14.1`). - **32 integration tests** in `test/database_test.dart` covering open/prepare/exec/run/get/all/save/close/pragma, data types, transactions and constraints — **100% line coverage** (71/71). - Wiring: `tools/lib/packages.dart` (tier 2, node), `tools/test.sh` (`NODE_PACKAGES` + `TIER2`), `coverage-thresholds.json` (`dart_node_sql_js: 100.0`), `publish-tier1.yml` changelog validation, `publish-tier2.yml` publish list, release skill. ## What Was Changed or Deleted? - Rewrote `lib/src/database.dart` and `lib/src/statement.dart` to use **typed `dart:js_interop` extension types** instead of nullable `as` casts, so the package passes `dart analyze` under austerity. - **Bug fix:** sql.js `export()` frees every live prepared statement, so the previous "auto-save after each write" design broke prepared-statement reuse (`Statement closed`) and rolled-back transactions silently committed. Persistence now happens on `close()` / explicit `save()` only. Added `save()` to the `Database` API. Removed `publish_to: none`; set version `0.13.0-beta`. ## How Do The Automated Tests Prove It Works? - `Statement.run inserts multiple rows with incrementing rowid`, `updates rows and returns changes count`, `deletes rows and returns changes count` — these **failed before the fix** (only the first write survived because `export()` closed the reused statement) and pass now. - `Transactions rolls back transaction` asserts the balance is restored to 100 — previously reported 200 because the mid-transaction export persisted uncommitted state. - `save persists changes that survive reopen` and `loads an existing database file` prove the new persistence model round-trips to disk. - `openDatabase returns error when the path cannot be read` and `Database.close returns error when the save target directory is missing` cover the `Result` error paths. Full suite: 32/32 passing, 100% coverage (enforced by the ratchet in `tools/test.sh`). ## Spec / Doc Changes - New package `README.md` documents the async `initializeSqlJs()` + `save`/`close` persistence model. Release skill (`SKILL.md`) tier-2 lists updated to include `dart_node_sql_js`. ## Breaking Changes - [x] None (new package; first publish at 0.13.0-beta)
Add dart_node_sql_js as a publishable package (sql.js bindings) (#60) ## TLDR Promote `dart_node_sql_js` from a `publish_to: none` stub into a full tier-2 publishable package (typed sql.js / SQLite-on-WASM bindings) for the 0.13.0-beta release. ## What Was Added? - **`packages/dart_node_sql_js`** as a real publishable package: `README.md`, `CHANGELOG.md` (`## 0.13.0-beta`), `LICENSE`, `analysis_options.yaml` (austerity), `dart_test.yaml`, `package.json` (`sql.js ^1.14.1`). - **32 integration tests** in `test/database_test.dart` covering open/prepare/exec/run/get/all/save/close/pragma, data types, transactions and constraints — **100% line coverage** (71/71). - Wiring: `tools/lib/packages.dart` (tier 2, node), `tools/test.sh` (`NODE_PACKAGES` + `TIER2`), `coverage-thresholds.json` (`dart_node_sql_js: 100.0`), `publish-tier1.yml` changelog validation, `publish-tier2.yml` publish list, release skill. ## What Was Changed or Deleted? - Rewrote `lib/src/database.dart` and `lib/src/statement.dart` to use **typed `dart:js_interop` extension types** instead of nullable `as` casts, so the package passes `dart analyze` under austerity. - **Bug fix:** sql.js `export()` frees every live prepared statement, so the previous "auto-save after each write" design broke prepared-statement reuse (`Statement closed`) and rolled-back transactions silently committed. Persistence now happens on `close()` / explicit `save()` only. Added `save()` to the `Database` API. Removed `publish_to: none`; set version `0.13.0-beta`. ## How Do The Automated Tests Prove It Works? - `Statement.run inserts multiple rows with incrementing rowid`, `updates rows and returns changes count`, `deletes rows and returns changes count` — these **failed before the fix** (only the first write survived because `export()` closed the reused statement) and pass now. - `Transactions rolls back transaction` asserts the balance is restored to 100 — previously reported 200 because the mid-transaction export persisted uncommitted state. - `save persists changes that survive reopen` and `loads an existing database file` prove the new persistence model round-trips to disk. - `openDatabase returns error when the path cannot be read` and `Database.close returns error when the save target directory is missing` cover the `Result` error paths. Full suite: 32/32 passing, 100% coverage (enforced by the ratchet in `tools/test.sh`). ## Spec / Doc Changes - New package `README.md` documents the async `initializeSqlJs()` + `save`/`close` persistence model. Release skill (`SKILL.md`) tier-2 lists updated to include `dart_node_sql_js`. ## Breaking Changes - [x] None (new package; first publish at 0.13.0-beta)
Automates release publishing and finalization (#22) ## TLDR; This pull request automates the release publishing process using GitHub Actions. It streamlines the process of creating release branches, updating dependencies, and creating pull requests. ## What Does This Do? - Creates a new workflow to finalize the release, switching dependencies back to local ones after publishing. - Modifies the publish workflow to prepare the release branch and create a pull request to main. - Removes `publish_to: none` from `pubspec.yaml` files. ## Brief Details? - The "Finalize Release" workflow is triggered after the "Publish Tier 3" workflow completes successfully. It checks out the release branch, switches dependencies to local, commits, and pushes the changes. - The "Publish Release" workflow now validates that the tag is on main, extracts the version from the tag, creates a release branch, switches to pub.dev dependencies, commits and pushes the changes, and creates a pull request to main. The pull request body contains instructions to not merge until publishing is complete. - The workflows now use the `setup` action to setup Dart. ## How Do The Tests Prove The Change Works? There are no specific tests included in this pull request, but the workflows themselves serve as integration tests, ensuring that the release process is automated and functions as expected.
PreviousNext