sqlrite 0.1.4__tar.gz → 0.1.6__tar.gz
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.
- {sqlrite-0.1.4 → sqlrite-0.1.6}/.github/workflows/release.yml +264 -7
- {sqlrite-0.1.4 → sqlrite-0.1.6}/Cargo.lock +5 -5
- {sqlrite-0.1.4 → sqlrite-0.1.6}/Cargo.toml +1 -1
- {sqlrite-0.1.4 → sqlrite-0.1.6}/PKG-INFO +1 -1
- {sqlrite-0.1.4 → sqlrite-0.1.6}/README.md +1 -1
- {sqlrite-0.1.4 → sqlrite-0.1.6}/desktop/package.json +1 -1
- {sqlrite-0.1.4 → sqlrite-0.1.6}/docs/embedding.md +1 -1
- {sqlrite-0.1.4 → sqlrite-0.1.6}/docs/release-plan.md +1 -1
- {sqlrite-0.1.4 → sqlrite-0.1.6}/docs/release-secrets.md +28 -25
- {sqlrite-0.1.4 → sqlrite-0.1.6}/docs/roadmap.md +9 -3
- {sqlrite-0.1.4 → sqlrite-0.1.6}/examples/README.md +5 -5
- {sqlrite-0.1.4 → sqlrite-0.1.6}/pyproject.toml +1 -1
- {sqlrite-0.1.4 → sqlrite-0.1.6}/sdk/python/Cargo.toml +1 -1
- {sqlrite-0.1.4 → sqlrite-0.1.6}/.github/workflows/ci.yml +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/.github/workflows/release-pr.yml +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/.github/workflows/rust.yml +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/.gitignore +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/CODE_OF_CONDUCT.md +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/LICENSE +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/MAINTAINERS +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/Makefile +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/desktop/index.html +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/desktop/package-lock.json +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/desktop/src/App.svelte +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/desktop/src/app.css +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/desktop/src/main.ts +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/desktop/src/vite-env.d.ts +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/desktop/svelte.config.js +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/desktop/tsconfig.json +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/desktop/vite.config.ts +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/docs/_index.md +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/docs/architecture.md +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/docs/design-decisions.md +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/docs/desktop.md +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/docs/file-format.md +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/docs/getting-started.md +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/docs/pager.md +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/docs/smoke-test.md +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/docs/sql-engine.md +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/docs/storage-model.md +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/docs/supported-sql.md +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/docs/usage.md +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/examples/c/Makefile +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/examples/c/hello.c +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/examples/go/go.mod +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/examples/go/hello.go +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/examples/nodejs/hello.mjs +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/examples/python/hello.py +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/examples/rust/quickstart.rs +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/examples/wasm/Makefile +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/examples/wasm/index.html +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/images/SQLRite - Desktop.png +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/images/SQLRite Data Structures.png +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/images/SQLRite Simple SQL Execution High Level Diagram.png +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/images/SQLRite Simple SQL INSERT Execution High Level Diagram (Insert Row).png +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/images/SQLRite Simple SQL INSERT Execution High Level Diagram.png +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/images/SQLRite_logo.png +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/images/architecture.png +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/rust-toolchain.toml +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/samples/AST.delete.example +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/samples/AST.insert.exemple +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/samples/AST.select.example +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/samples/AST.update.example +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/samples/CREATE TABLE sqlrite_schema.sql +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/samples/CREATE_TABLE with duplicate.sql +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/samples/CREATE_TABLE.sql +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/samples/INSERT.sql +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/scripts/bump-version.sh +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/sdk/go/README.md +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/sdk/go/conn.go +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/sdk/go/go.mod +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/sdk/go/rows.go +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/sdk/go/sqlrite.go +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/sdk/go/sqlrite_test.go +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/sdk/go/stmt.go +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/sdk/python/README.md +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/sdk/python/src/lib.rs +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/sdk/python/tests/test_sqlrite.py +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/src/connection.rs +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/src/error.rs +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/src/lib.rs +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/src/main.rs +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/src/meta_command/mod.rs +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/src/repl/mod.rs +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/src/sql/db/database.rs +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/src/sql/db/mod.rs +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/src/sql/db/secondary_index.rs +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/src/sql/db/table.rs +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/src/sql/executor.rs +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/src/sql/mod.rs +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/src/sql/pager/cell.rs +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/src/sql/pager/file.rs +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/src/sql/pager/header.rs +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/src/sql/pager/index_cell.rs +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/src/sql/pager/interior_page.rs +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/src/sql/pager/mod.rs +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/src/sql/pager/overflow.rs +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/src/sql/pager/page.rs +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/src/sql/pager/pager.rs +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/src/sql/pager/table_page.rs +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/src/sql/pager/varint.rs +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/src/sql/pager/wal.rs +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/src/sql/parser/create.rs +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/src/sql/parser/insert.rs +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/src/sql/parser/mod.rs +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/src/sql/parser/select.rs +0 -0
- {sqlrite-0.1.4 → sqlrite-0.1.6}/src/sql/tokenizer.rs +0 -0
|
@@ -7,8 +7,9 @@
|
|
|
7
7
|
# Phase 6d: tag-all + publish-crate + publish-ffi + finalize.
|
|
8
8
|
# Phase 6e adds publish-desktop.
|
|
9
9
|
# Phase 6f adds build-python-wheels + publish-python.
|
|
10
|
-
#
|
|
11
|
-
#
|
|
10
|
+
# Phase 6g adds build-nodejs-binaries + publish-nodejs.
|
|
11
|
+
# Phases 6h–6i add publish-wasm / publish-go as separate jobs
|
|
12
|
+
# to this same file.
|
|
12
13
|
#
|
|
13
14
|
# Design doc: docs/release-plan.md.
|
|
14
15
|
# One-time registry / branch-protection setup: docs/release-secrets.md.
|
|
@@ -86,15 +87,16 @@ jobs:
|
|
|
86
87
|
# BEFORE any publish step so a bad version number (e.g., tag
|
|
87
88
|
# already exists for some reason) aborts the whole release cleanly.
|
|
88
89
|
#
|
|
89
|
-
# As of Phase
|
|
90
|
+
# As of Phase 6g, we tag:
|
|
90
91
|
# - sqlrite-v<V> (Rust engine)
|
|
91
92
|
# - sqlrite-ffi-v<V> (C FFI prebuilt binaries)
|
|
92
93
|
# - sqlrite-desktop-v<V> (Tauri desktop installers)
|
|
93
94
|
# - sqlrite-py-v<V> (Python wheels on PyPI)
|
|
95
|
+
# - sqlrite-node-v<V> (Node.js N-API bindings on npm)
|
|
94
96
|
# - v<V> (umbrella)
|
|
95
97
|
#
|
|
96
|
-
# Later phases add sqlrite-
|
|
97
|
-
#
|
|
98
|
+
# Later phases add sqlrite-wasm-v<V>, sdk/go/v<V> as their
|
|
99
|
+
# publish jobs come online.
|
|
98
100
|
#
|
|
99
101
|
# Idempotent on re-run: if a tag already exists (partial-failure
|
|
100
102
|
# scenario where publish-crate succeeded but publish-ffi failed,
|
|
@@ -124,6 +126,7 @@ jobs:
|
|
|
124
126
|
"sqlrite-ffi-v$V"
|
|
125
127
|
"sqlrite-desktop-v$V"
|
|
126
128
|
"sqlrite-py-v$V"
|
|
129
|
+
"sqlrite-node-v$V"
|
|
127
130
|
"v$V"
|
|
128
131
|
)
|
|
129
132
|
for tag in "${TAGS[@]}"; do
|
|
@@ -633,6 +636,259 @@ jobs:
|
|
|
633
636
|
files: dist/*
|
|
634
637
|
generate_release_notes: true
|
|
635
638
|
|
|
639
|
+
# ---------------------------------------------------------------------------
|
|
640
|
+
# Step 3g: build Node.js N-API binaries for every supported
|
|
641
|
+
# platform. (Phase 6g — build half; publish half lives in the
|
|
642
|
+
# next job.)
|
|
643
|
+
#
|
|
644
|
+
# Architecture: the "bundled binaries" approach, not napi-rs's
|
|
645
|
+
# newer optional-deps-per-platform pattern. The main `sqlrite`
|
|
646
|
+
# npm package ships every platform's `.node` binary inside one
|
|
647
|
+
# tarball; napi-rs's generated `index.js` dispatcher picks the
|
|
648
|
+
# right one at require time based on process.platform / arch.
|
|
649
|
+
# Simpler for MVP than maintaining N+1 npm packages; the cost
|
|
650
|
+
# is a ~15 MiB tarball instead of a ~4 MiB per-platform download,
|
|
651
|
+
# which is fine for a database driver people install once.
|
|
652
|
+
#
|
|
653
|
+
# Same build/publish split as publish-python for the same
|
|
654
|
+
# reason: npm expects one `npm publish` invocation per package
|
|
655
|
+
# version. If every matrix cell published independently, a
|
|
656
|
+
# partial-failure would put some-but-not-all binaries on npm
|
|
657
|
+
# with no clean rollback.
|
|
658
|
+
#
|
|
659
|
+
# Matrix mirrors publish-ffi / publish-desktop / publish-python.
|
|
660
|
+
# Naming convention for the `.node` file is napi-rs's own: the
|
|
661
|
+
# platform triple is baked into the filename, e.g.,
|
|
662
|
+
# `sqlrite.linux-x64-gnu.node` vs `sqlrite.darwin-arm64.node`.
|
|
663
|
+
# The `files` glob in sdk/nodejs/package.json matches on
|
|
664
|
+
# `sqlrite.*.node`, so whichever binaries land in the directory
|
|
665
|
+
# at publish time get included in the tarball.
|
|
666
|
+
build-nodejs-binaries:
|
|
667
|
+
name: Build Node.js binary (${{ matrix.platform }})
|
|
668
|
+
needs: [detect, tag-all]
|
|
669
|
+
if: needs.detect.outputs.should_release == 'true'
|
|
670
|
+
runs-on: ${{ matrix.os }}
|
|
671
|
+
strategy:
|
|
672
|
+
fail-fast: false
|
|
673
|
+
matrix:
|
|
674
|
+
include:
|
|
675
|
+
- os: ubuntu-latest
|
|
676
|
+
platform: linux-x86_64
|
|
677
|
+
napi_triple: linux-x64-gnu
|
|
678
|
+
- os: ubuntu-24.04-arm
|
|
679
|
+
platform: linux-aarch64
|
|
680
|
+
napi_triple: linux-arm64-gnu
|
|
681
|
+
- os: macos-latest
|
|
682
|
+
platform: macos-aarch64
|
|
683
|
+
napi_triple: darwin-arm64
|
|
684
|
+
- os: windows-latest
|
|
685
|
+
platform: windows-x86_64
|
|
686
|
+
napi_triple: win32-x64-msvc
|
|
687
|
+
steps:
|
|
688
|
+
- uses: actions/checkout@v4
|
|
689
|
+
|
|
690
|
+
- uses: actions/setup-node@v4
|
|
691
|
+
with:
|
|
692
|
+
node-version: '20'
|
|
693
|
+
cache: 'npm'
|
|
694
|
+
cache-dependency-path: sdk/nodejs/package-lock.json
|
|
695
|
+
|
|
696
|
+
- uses: dtolnay/rust-toolchain@stable
|
|
697
|
+
|
|
698
|
+
- uses: Swatinem/rust-cache@v2
|
|
699
|
+
with:
|
|
700
|
+
shared-key: build-nodejs-${{ matrix.platform }}
|
|
701
|
+
|
|
702
|
+
- name: Install npm deps
|
|
703
|
+
working-directory: sdk/nodejs
|
|
704
|
+
run: npm ci
|
|
705
|
+
|
|
706
|
+
# `napi build --platform --release` produces:
|
|
707
|
+
# - sqlrite.<napi_triple>.node (the actual binary)
|
|
708
|
+
# - index.js (platform-dispatch loader)
|
|
709
|
+
# - index.d.ts (TypeScript types)
|
|
710
|
+
# We upload all three but only index.js/d.ts from the
|
|
711
|
+
# Linux x86_64 cell (they're identical across platforms
|
|
712
|
+
# since napi generates platform-agnostic dispatch code).
|
|
713
|
+
- name: Build native binary
|
|
714
|
+
working-directory: sdk/nodejs
|
|
715
|
+
run: npm run build
|
|
716
|
+
|
|
717
|
+
- name: Verify binary exists
|
|
718
|
+
working-directory: sdk/nodejs
|
|
719
|
+
shell: bash
|
|
720
|
+
run: |
|
|
721
|
+
ls -la sqlrite.*.node
|
|
722
|
+
# Fail early if napi produced an unexpected filename —
|
|
723
|
+
# otherwise the publish step would silently ship an
|
|
724
|
+
# incomplete tarball.
|
|
725
|
+
test -f "sqlrite.${{ matrix.napi_triple }}.node"
|
|
726
|
+
|
|
727
|
+
- name: Upload .node binary
|
|
728
|
+
uses: actions/upload-artifact@v4
|
|
729
|
+
with:
|
|
730
|
+
name: nodejs-binary-${{ matrix.platform }}
|
|
731
|
+
path: sdk/nodejs/sqlrite.${{ matrix.napi_triple }}.node
|
|
732
|
+
if-no-files-found: error
|
|
733
|
+
retention-days: 1
|
|
734
|
+
|
|
735
|
+
# Only Linux x86_64 uploads the shared dispatcher files.
|
|
736
|
+
# These are identical regardless of build platform (they're
|
|
737
|
+
# just require-the-right-.node glue), so we only need one
|
|
738
|
+
# copy in the final npm tarball.
|
|
739
|
+
- name: Upload JS dispatcher (linux-x86_64 only)
|
|
740
|
+
if: matrix.platform == 'linux-x86_64'
|
|
741
|
+
uses: actions/upload-artifact@v4
|
|
742
|
+
with:
|
|
743
|
+
name: nodejs-dispatcher
|
|
744
|
+
path: |
|
|
745
|
+
sdk/nodejs/index.js
|
|
746
|
+
sdk/nodejs/index.d.ts
|
|
747
|
+
if-no-files-found: error
|
|
748
|
+
retention-days: 1
|
|
749
|
+
|
|
750
|
+
# ---------------------------------------------------------------------------
|
|
751
|
+
# Step 3h: aggregate every platform's `.node` binary + the JS
|
|
752
|
+
# dispatcher into sdk/nodejs/, publish to npm via OIDC trusted
|
|
753
|
+
# publishing, and cut the per-product `sqlrite-node-v<V>`
|
|
754
|
+
# GitHub Release.
|
|
755
|
+
#
|
|
756
|
+
# OIDC trusted publishing: similar to the PyPI setup in
|
|
757
|
+
# publish-python. `permissions: id-token: write` lets npm mint
|
|
758
|
+
# a short-lived OIDC token, which `npm publish --provenance`
|
|
759
|
+
# exchanges for a one-time upload token. No NPM_TOKEN secret.
|
|
760
|
+
# One-time trusted-publisher config on npmjs.com — see
|
|
761
|
+
# docs/release-secrets.md.
|
|
762
|
+
#
|
|
763
|
+
# `--provenance` also attaches a signed attestation linking
|
|
764
|
+
# the package to this exact GitHub Actions workflow run (via
|
|
765
|
+
# sigstore, same mechanism as PyPI's PEP 740). Users who care
|
|
766
|
+
# about supply-chain can verify it with `npm audit signatures`.
|
|
767
|
+
publish-nodejs:
|
|
768
|
+
name: Publish Node.js package to npm
|
|
769
|
+
needs: [detect, tag-all, build-nodejs-binaries]
|
|
770
|
+
if: needs.detect.outputs.should_release == 'true'
|
|
771
|
+
runs-on: ubuntu-latest
|
|
772
|
+
environment: release
|
|
773
|
+
permissions:
|
|
774
|
+
# OIDC for npm trusted publisher + provenance signing.
|
|
775
|
+
id-token: write
|
|
776
|
+
# For softprops/action-gh-release step at the end.
|
|
777
|
+
contents: write
|
|
778
|
+
steps:
|
|
779
|
+
- uses: actions/checkout@v4
|
|
780
|
+
|
|
781
|
+
# NOTE: deliberately NO `registry-url:` here. setting that
|
|
782
|
+
# makes setup-node generate an `.npmrc` with
|
|
783
|
+
# `_authToken=${NODE_AUTH_TOKEN}`, which forces npm into
|
|
784
|
+
# token-based auth and *bypasses* the trusted-publisher
|
|
785
|
+
# OIDC pathway entirely. The v0.1.5 canary blew up on this
|
|
786
|
+
# exact issue: `404 Not Found - PUT ... is not in this
|
|
787
|
+
# registry` because npm sent an empty/missing
|
|
788
|
+
# NODE_AUTH_TOKEN instead of minting an OIDC token.
|
|
789
|
+
#
|
|
790
|
+
# With registry-url omitted, no `.npmrc` is generated, and
|
|
791
|
+
# npm CLI ≥ 11.5 auto-detects the GitHub Actions OIDC
|
|
792
|
+
# environment (via ACTIONS_ID_TOKEN_REQUEST_URL +
|
|
793
|
+
# permissions: id-token: write below), mints an OIDC token,
|
|
794
|
+
# and exchanges it at npm for a one-time publish token. The
|
|
795
|
+
# public default registry is fine — that's where
|
|
796
|
+
# registry.npmjs.org lives anyway.
|
|
797
|
+
- uses: actions/setup-node@v4
|
|
798
|
+
with:
|
|
799
|
+
node-version: '20'
|
|
800
|
+
|
|
801
|
+
# Node 20 LTS ships with npm 10.x, but trusted publishing
|
|
802
|
+
# auto-detection landed in npm 11.5. Force-upgrade so we
|
|
803
|
+
# don't depend on the runner image happening to ship a
|
|
804
|
+
# recent-enough npm.
|
|
805
|
+
- name: Upgrade npm to latest (need 11.5+ for trusted publishing)
|
|
806
|
+
run: npm install -g npm@latest
|
|
807
|
+
|
|
808
|
+
# Pull every platform's `.node` binary plus the JS
|
|
809
|
+
# dispatcher into sdk/nodejs/, overlaying them on top of
|
|
810
|
+
# the checked-out package.json / package-lock.json / etc.
|
|
811
|
+
- name: Download .node binaries
|
|
812
|
+
uses: actions/download-artifact@v4
|
|
813
|
+
with:
|
|
814
|
+
pattern: nodejs-binary-*
|
|
815
|
+
path: sdk/nodejs
|
|
816
|
+
merge-multiple: true
|
|
817
|
+
|
|
818
|
+
- name: Download JS dispatcher
|
|
819
|
+
uses: actions/download-artifact@v4
|
|
820
|
+
with:
|
|
821
|
+
name: nodejs-dispatcher
|
|
822
|
+
path: sdk/nodejs
|
|
823
|
+
|
|
824
|
+
- name: List publish payload
|
|
825
|
+
working-directory: sdk/nodejs
|
|
826
|
+
run: |
|
|
827
|
+
ls -la
|
|
828
|
+
echo "---"
|
|
829
|
+
npm --version
|
|
830
|
+
echo "---"
|
|
831
|
+
# Dry-run the pack to see exactly what ends up in the
|
|
832
|
+
# published tarball. A missing .node file or a stray
|
|
833
|
+
# devDep pulled in by accident would be visible here.
|
|
834
|
+
npm pack --dry-run
|
|
835
|
+
|
|
836
|
+
# Single atomic publish via OIDC trusted publisher. No
|
|
837
|
+
# `--provenance` flag and no env block — npm 11.5+ adds
|
|
838
|
+
# provenance automatically when the publish runs over OIDC,
|
|
839
|
+
# and an explicit `--provenance` flag combined with no
|
|
840
|
+
# auth token would actually error out under the older
|
|
841
|
+
# token-auth pathway.
|
|
842
|
+
#
|
|
843
|
+
# `--access public` is REQUIRED because `@joaoh82/sqlrite`
|
|
844
|
+
# is a scoped package and scoped packages default to
|
|
845
|
+
# private; without the flag, npm rejects the upload for a
|
|
846
|
+
# free-tier account that can't host private packages.
|
|
847
|
+
- name: Publish to npm
|
|
848
|
+
working-directory: sdk/nodejs
|
|
849
|
+
run: npm publish --access public
|
|
850
|
+
|
|
851
|
+
- name: GitHub Release
|
|
852
|
+
uses: softprops/action-gh-release@v2
|
|
853
|
+
with:
|
|
854
|
+
tag_name: sqlrite-node-v${{ needs.detect.outputs.version }}
|
|
855
|
+
name: Node.js v${{ needs.detect.outputs.version }}
|
|
856
|
+
body: |
|
|
857
|
+
Published to npm: https://www.npmjs.com/package/@joaoh82/sqlrite/v/${{ needs.detect.outputs.version }}
|
|
858
|
+
|
|
859
|
+
```bash
|
|
860
|
+
npm install @joaoh82/sqlrite@${{ needs.detect.outputs.version }}
|
|
861
|
+
```
|
|
862
|
+
|
|
863
|
+
```javascript
|
|
864
|
+
const { Database } = require('@joaoh82/sqlrite');
|
|
865
|
+
|
|
866
|
+
const db = new Database(':memory:');
|
|
867
|
+
db.exec('CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)');
|
|
868
|
+
const stmt = db.prepare('INSERT INTO users (name) VALUES (?)');
|
|
869
|
+
stmt.run('alice');
|
|
870
|
+
|
|
871
|
+
for (const row of db.prepare('SELECT * FROM users').iterate()) {
|
|
872
|
+
console.log(row);
|
|
873
|
+
}
|
|
874
|
+
```
|
|
875
|
+
|
|
876
|
+
**Binaries bundled in this release:**
|
|
877
|
+
- Linux x86_64 (`sqlrite.linux-x64-gnu.node`)
|
|
878
|
+
- Linux aarch64 (`sqlrite.linux-arm64-gnu.node`)
|
|
879
|
+
- macOS aarch64 (`sqlrite.darwin-arm64.node`)
|
|
880
|
+
- Windows x86_64 (`sqlrite.win32-x64-msvc.node`)
|
|
881
|
+
|
|
882
|
+
The package's `index.js` dispatcher auto-selects the right binary at require time — no platform-specific install step.
|
|
883
|
+
|
|
884
|
+
Verify package provenance:
|
|
885
|
+
```bash
|
|
886
|
+
npm audit signatures
|
|
887
|
+
```
|
|
888
|
+
|
|
889
|
+
See the umbrella release [v${{ needs.detect.outputs.version }}](../../releases/tag/v${{ needs.detect.outputs.version }}) for the full changelog.
|
|
890
|
+
generate_release_notes: true
|
|
891
|
+
|
|
636
892
|
# ---------------------------------------------------------------------------
|
|
637
893
|
# Step 4: create the umbrella GitHub Release. Runs after all
|
|
638
894
|
# publish-* jobs succeed. Uses GitHub's native auto-generated
|
|
@@ -641,7 +897,7 @@ jobs:
|
|
|
641
897
|
# config if we add one later.
|
|
642
898
|
finalize:
|
|
643
899
|
name: Finalize umbrella release
|
|
644
|
-
needs: [detect, publish-crate, publish-ffi, publish-desktop, publish-python]
|
|
900
|
+
needs: [detect, publish-crate, publish-ffi, publish-desktop, publish-python, publish-nodejs]
|
|
645
901
|
if: needs.detect.outputs.should_release == 'true'
|
|
646
902
|
runs-on: ubuntu-latest
|
|
647
903
|
steps:
|
|
@@ -663,8 +919,9 @@ jobs:
|
|
|
663
919
|
- 🔧 [C FFI](../../releases/tag/sqlrite-ffi-v${{ needs.detect.outputs.version }}) — prebuilt `libsqlrite_c` for Linux x86_64/aarch64, macOS aarch64, Windows x86_64
|
|
664
920
|
- 🖥️ [Desktop](../../releases/tag/sqlrite-desktop-v${{ needs.detect.outputs.version }}) — unsigned installers for Linux (AppImage + deb), macOS (dmg aarch64), Windows (msi)
|
|
665
921
|
- 🐍 [Python](../../releases/tag/sqlrite-py-v${{ needs.detect.outputs.version }}) → [PyPI](https://pypi.org/project/sqlrite/${{ needs.detect.outputs.version }}/) — abi3-py38 wheels for Linux x86_64/aarch64, macOS aarch64, Windows x86_64 + sdist
|
|
922
|
+
- 🟢 [Node.js](../../releases/tag/sqlrite-node-v${{ needs.detect.outputs.version }}) → [npm](https://www.npmjs.com/package/@joaoh82/sqlrite/v/${{ needs.detect.outputs.version }}) — N-API bindings with prebuilt `.node` binaries for Linux x86_64/aarch64, macOS aarch64, Windows x86_64
|
|
666
923
|
|
|
667
|
-
|
|
924
|
+
_WASM / Go SDKs land as their publish jobs come online (Phases 6h–6i)._
|
|
668
925
|
|
|
669
926
|
---
|
|
670
927
|
|
|
@@ -3736,7 +3736,7 @@ dependencies = [
|
|
|
3736
3736
|
|
|
3737
3737
|
[[package]]
|
|
3738
3738
|
name = "sqlrite-desktop"
|
|
3739
|
-
version = "0.1.
|
|
3739
|
+
version = "0.1.6"
|
|
3740
3740
|
dependencies = [
|
|
3741
3741
|
"serde",
|
|
3742
3742
|
"serde_json",
|
|
@@ -3748,7 +3748,7 @@ dependencies = [
|
|
|
3748
3748
|
|
|
3749
3749
|
[[package]]
|
|
3750
3750
|
name = "sqlrite-engine"
|
|
3751
|
-
version = "0.1.
|
|
3751
|
+
version = "0.1.6"
|
|
3752
3752
|
dependencies = [
|
|
3753
3753
|
"clap",
|
|
3754
3754
|
"env_logger",
|
|
@@ -3763,7 +3763,7 @@ dependencies = [
|
|
|
3763
3763
|
|
|
3764
3764
|
[[package]]
|
|
3765
3765
|
name = "sqlrite-ffi"
|
|
3766
|
-
version = "0.1.
|
|
3766
|
+
version = "0.1.6"
|
|
3767
3767
|
dependencies = [
|
|
3768
3768
|
"cbindgen",
|
|
3769
3769
|
"sqlrite-engine",
|
|
@@ -3771,7 +3771,7 @@ dependencies = [
|
|
|
3771
3771
|
|
|
3772
3772
|
[[package]]
|
|
3773
3773
|
name = "sqlrite-nodejs"
|
|
3774
|
-
version = "0.1.
|
|
3774
|
+
version = "0.1.6"
|
|
3775
3775
|
dependencies = [
|
|
3776
3776
|
"napi",
|
|
3777
3777
|
"napi-build",
|
|
@@ -3781,7 +3781,7 @@ dependencies = [
|
|
|
3781
3781
|
|
|
3782
3782
|
[[package]]
|
|
3783
3783
|
name = "sqlrite-python"
|
|
3784
|
-
version = "0.1.
|
|
3784
|
+
version = "0.1.6"
|
|
3785
3785
|
dependencies = [
|
|
3786
3786
|
"pyo3",
|
|
3787
3787
|
"sqlrite-engine",
|
|
@@ -27,7 +27,7 @@ resolver = "3"
|
|
|
27
27
|
# `package =` key so the import name stays `sqlrite` internally:
|
|
28
28
|
# sqlrite = { package = "sqlrite-engine", path = "…" }
|
|
29
29
|
name = "sqlrite-engine"
|
|
30
|
-
version = "0.1.
|
|
30
|
+
version = "0.1.6"
|
|
31
31
|
authors = ["Joao Henrique Machado Silva <joaoh82@gmail.com>"]
|
|
32
32
|
edition = "2024"
|
|
33
33
|
rust-version = "1.85"
|
|
@@ -224,7 +224,7 @@ Lockstep versioning — one dispatch bumps every product to the same `vX.Y.Z`. T
|
|
|
224
224
|
|
|
225
225
|
- [x] **6a — Bump script**: `scripts/bump-version.sh` rewrites the version string in ten manifests (7 TOML, 3 JSON) in a single pass; semver-validated, idempotent, cross-platform (BSD + GNU sed). Runnable locally for rehearsing a release: `./scripts/bump-version.sh 0.2.0 && cargo build && git diff`.
|
|
226
226
|
- [x] **6b — CI**: `.github/workflows/ci.yml` runs on every PR + push to main. Seven parallel jobs: `rust-build-and-test` (Linux/macOS/Windows × cargo build + test), `rust-lint` (fmt + clippy + doc), `python-sdk` (Linux/macOS/Windows × maturin develop + pytest in a venv), `nodejs-sdk` (Linux/macOS/Windows × napi build + node --test), `go-sdk` (Linux/macOS × cargo build sqlrite-ffi + go test), `wasm-build` (wasm-pack + size report), `desktop-build` (npm ci + Tauri Rust compile). Cargo / npm / pip caching for fast PR turnaround.
|
|
227
|
-
- [x] **6c — Trusted publisher setup + branch protection runbook**: [`docs/release-secrets.md`](docs/release-secrets.md) captures the one-time web-UI setup — crates.io token in the `release` environment, OIDC trusted publishers on PyPI (`sqlrite`) and npm (
|
|
227
|
+
- [x] **6c — Trusted publisher setup + branch protection runbook**: [`docs/release-secrets.md`](docs/release-secrets.md) captures the one-time web-UI setup — crates.io token in the `release` environment, OIDC trusted publishers on PyPI (`sqlrite`) and npm (`@joaoh82/sqlrite` + `sqlrite-wasm` — Node binding is scoped because npm's similarity check rejects the unscoped name against `sqlite`/`sqlite3`), GitHub `release` environment with required reviewer, branch protection on `main` requiring 14 CI jobs + 1 review. No code changes — executable as-is, ready to run through in the GitHub + registry UIs.
|
|
228
228
|
- [x] **6d — Release PR + skeleton publish**: two workflows under `.github/workflows/`. `release-pr.yml` (manual dispatch with version input → bump-version.sh → PR), `release.yml` (fires on `release: v<semver>` merge commit → `tag-all` + `publish-crate` + `publish-ffi` matrix [linux x86_64/aarch64, macOS aarch64, windows x86_64] + umbrella release). Idempotent tag creation so "Re-run failed jobs" works after partial failures. `cargo publish` gated by the `release` environment's required-reviewer rule. First canary: `v0.1.1`.
|
|
229
229
|
- [ ] **6e — Desktop publish**: add `publish-desktop` to `release.yml` — Tauri build matrix → unsigned `.AppImage` / `.deb` / `.dmg` / `.msi` → GitHub Release
|
|
230
230
|
- [ ] **6f — Python SDK publish**: `maturin-action` → abi3 wheels for manylinux x86_64/aarch64 + macOS universal + Windows x86_64 → PyPI via OIDC
|
|
@@ -217,7 +217,7 @@ Phase 6 lands GitHub Actions CI + release automation:
|
|
|
217
217
|
|
|
218
218
|
- **crates.io** — `sqlrite-engine` crate (published under a different name from the `sqlrite` lib target because the short name was already taken; users `cargo add sqlrite-engine` but still write `use sqlrite::…`)
|
|
219
219
|
- **PyPI** — `sqlrite` wheels (manylinux x86_64/aarch64, macOS universal, Windows x86_64)
|
|
220
|
-
- **npm** —
|
|
220
|
+
- **npm** — `@joaoh82/sqlrite` (Node) + `sqlrite-wasm` (browser) packages
|
|
221
221
|
- **Go modules** — `sdk/go/v*` git tags
|
|
222
222
|
- **GitHub Releases** — Tauri desktop builds + C FFI prebuilt libraries
|
|
223
223
|
|
|
@@ -73,7 +73,7 @@ GitHub Releases by product ("show me every Python release").
|
|
|
73
73
|
| Rust engine | `sqlrite-vX.Y.Z` | crates.io + GitHub Release |
|
|
74
74
|
| C FFI shim | `sqlrite-ffi-vX.Y.Z` | GitHub Release (per-platform tarballs) |
|
|
75
75
|
| Python SDK | `sqlrite-py-vX.Y.Z` | PyPI + GitHub Release |
|
|
76
|
-
| Node.js SDK | `sqlrite-node-vX.Y.Z` | npm + GitHub Release
|
|
76
|
+
| Node.js SDK | `sqlrite-node-vX.Y.Z` | npm (`@joaoh82/sqlrite`) + GitHub Release |
|
|
77
77
|
| Go SDK | `sdk/go/vX.Y.Z` | Git tag (no registry) + GitHub Release assets |
|
|
78
78
|
| WASM | `sqlrite-wasm-vX.Y.Z` | npm (`sqlrite-wasm`) + GitHub Release |
|
|
79
79
|
| Desktop app | `sqlrite-desktop-vX.Y.Z` | GitHub Release (unsigned installers) |
|
|
@@ -105,27 +105,36 @@ release, status flips to "active".
|
|
|
105
105
|
|
|
106
106
|
## 3. npm trusted publishers (two packages)
|
|
107
107
|
|
|
108
|
-
**Why two:** we publish
|
|
108
|
+
**Why two:** we publish `@joaoh82/sqlrite` (Node.js bindings from
|
|
109
109
|
`sdk/nodejs/`) and `sqlrite-wasm` (browser bindings from
|
|
110
110
|
`sdk/wasm/`) as separate npm packages. Each needs its own
|
|
111
111
|
trusted-publisher record.
|
|
112
112
|
|
|
113
|
-
|
|
113
|
+
**Why the scoped name on the Node.js package:** npm's registry
|
|
114
|
+
rejects the unscoped `sqlrite` name because of a similarity check
|
|
115
|
+
against the existing `sqlite` / `sqlite3` packages (levenshtein
|
|
116
|
+
distance 1). Scoping under `@joaoh82` (the author's npm user
|
|
117
|
+
scope) bypasses the check cleanly — same pattern as `@napi-rs/*`,
|
|
118
|
+
`@swc/core`, etc. Discovered during the v0.1.5 canary attempt;
|
|
119
|
+
rename PR landed before the retry. Applies to the Node.js
|
|
120
|
+
package only; `sqlrite-wasm` may or may not hit the same check
|
|
121
|
+
when 6h lands (if it does, rename to `@joaoh82/sqlrite-wasm`).
|
|
114
122
|
|
|
115
|
-
|
|
116
|
-
2. Search for `sqlrite` — confirm it's not taken. (If it is,
|
|
117
|
-
we'll rename — update `sdk/nodejs/package.json`'s `name` +
|
|
118
|
-
`napi.name` to something like `@joaoh82/sqlrite` and file an
|
|
119
|
-
issue.)
|
|
123
|
+
### 3a. Reserve `@joaoh82/sqlrite` on npm
|
|
120
124
|
|
|
121
|
-
|
|
125
|
+
1. Log in at <https://www.npmjs.com/> as `joaoh82`.
|
|
126
|
+
2. Scoped packages under your user scope are auto-owned — no
|
|
127
|
+
manual name reservation step required. First-time publish
|
|
128
|
+
against the trusted publisher will create the package.
|
|
129
|
+
|
|
130
|
+
### 3b. Trusted publisher for `@joaoh82/sqlrite`
|
|
122
131
|
|
|
123
132
|
npm's trusted publishing flow:
|
|
124
133
|
|
|
125
|
-
1.
|
|
126
|
-
|
|
127
|
-
click **Settings** → **Trusted Publishers**.
|
|
134
|
+
1. Go to <https://www.npmjs.com/settings/~/packages> (or your
|
|
135
|
+
profile → Packages) → **Trusted Publishers** tab.
|
|
128
136
|
2. **Add a new publisher**:
|
|
137
|
+
- **Package name**: `@joaoh82/sqlrite`
|
|
129
138
|
- **Publisher**: GitHub Actions
|
|
130
139
|
- **Organization or user**: `joaoh82`
|
|
131
140
|
- **Repository**: `rust_sqlite`
|
|
@@ -133,20 +142,14 @@ npm's trusted publishing flow:
|
|
|
133
142
|
- **Environment**: `release`
|
|
134
143
|
3. Save.
|
|
135
144
|
|
|
136
|
-
**npm's chicken-and-egg
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
- After the first publish succeeds, add the trusted publisher
|
|
145
|
-
via the UI, then delete `NPM_TOKEN` from the secrets.
|
|
146
|
-
- On the next release, OIDC takes over automatically.
|
|
147
|
-
|
|
148
|
-
Document the temporary token in a pinned issue so it gets
|
|
149
|
-
rotated out once OIDC is live.
|
|
145
|
+
**npm's chicken-and-egg, resolved for scoped packages:** For
|
|
146
|
+
unscoped names (like the abandoned `sqlrite` attempt), npm
|
|
147
|
+
requires the package to already exist before you can add a
|
|
148
|
+
trusted publisher — first publish needs a temporary `NPM_TOKEN`.
|
|
149
|
+
For scoped packages under your own user scope, npm auto-owns
|
|
150
|
+
the scope, and the trusted-publisher registration works against
|
|
151
|
+
the future package before it exists. First CI publish creates
|
|
152
|
+
it cleanly with OIDC. **No temporary token needed.**
|
|
150
153
|
|
|
151
154
|
### 3c. Repeat for `sqlrite-wasm`
|
|
152
155
|
|
|
@@ -360,7 +360,7 @@ One-time non-code setup — the state lives in registry web UIs + GitHub setting
|
|
|
360
360
|
|
|
361
361
|
1. **crates.io API token** → `CRATES_IO_TOKEN` in the `release` environment's secrets (crates.io doesn't support OIDC yet, so this is the only long-lived token in the pipeline).
|
|
362
362
|
2. **PyPI trusted publisher** pointed at `release.yml` / environment `release` — short-lived OIDC tokens, no secret to leak.
|
|
363
|
-
3. **npm trusted publishers** for both
|
|
363
|
+
3. **npm trusted publishers** for both `@joaoh82/sqlrite` (the Node binding — scoped because npm rejected the unscoped `sqlrite` name as too similar to `sqlite`/`sqlite3`) and `sqlrite-wasm` (the browser binding). Scoped packages under your own user scope auto-own the name, so the trusted-publisher flow works without a bootstrap `NPM_TOKEN`. See `docs/release-secrets.md` §3 for the full flow.
|
|
364
364
|
4. **GitHub `release` environment** — required reviewer (maintainer), `main`-only deployments, scoped secrets. Acts as a second human-in-the-loop gate after the Release PR merge but before any registry write.
|
|
365
365
|
5. **Branch protection on `main`** — require 14 CI status checks green + 1 review + conversation resolution. Admin bypass left available for emergencies.
|
|
366
366
|
|
|
@@ -419,9 +419,15 @@ Wheel matrix mirrors publish-ffi + publish-desktop: Linux x86_64 (manylinux2014
|
|
|
419
419
|
|
|
420
420
|
Authentication via PyPI trusted publishing (OIDC) — zero long-lived tokens. `permissions: id-token: write` on the publish job plus the `release` GitHub environment (one-time trusted-publisher config on PyPI's web UI, documented in `docs/release-secrets.md`).
|
|
421
421
|
|
|
422
|
-
### Phase 6g — Node.js SDK publish
|
|
422
|
+
### ✅ Phase 6g — Node.js SDK publish
|
|
423
423
|
|
|
424
|
-
Adds `
|
|
424
|
+
Adds two jobs to `release.yml` — `build-nodejs-binaries` (matrix of 4 platforms) + `publish-nodejs` (aggregator + npm upload + GitHub Release).
|
|
425
|
+
|
|
426
|
+
**Bundled-binaries architecture**: the main `sqlrite` npm package ships every platform's `.node` binary inside one tarball (~15 MiB), not the per-platform optional-dep packages `@napi-rs/*` projects use. Simpler for an MVP (one npm publish, one package to manage); the tradeoff is a bigger install, acceptable for a database driver people install once. The `index.js` dispatcher napi generates picks the right binary at require time via `process.platform` + `process.arch`.
|
|
427
|
+
|
|
428
|
+
Same build/publish split as publish-python — matrix cells upload `.node` artifacts, a single aggregator job downloads everything into `sdk/nodejs/`, runs `npm publish --provenance` once. `--provenance` attaches a sigstore-signed attestation linking the published package to this exact workflow run (npm's equivalent of PyPI's PEP 740).
|
|
429
|
+
|
|
430
|
+
Authentication via npm OIDC trusted publishing — zero long-lived `NPM_TOKEN`. One-time trusted-publisher registration on npmjs.com, documented in `docs/release-secrets.md`.
|
|
425
431
|
|
|
426
432
|
### Phase 6h — WASM publish
|
|
427
433
|
|
|
@@ -6,12 +6,12 @@ Phase 5 lands these incrementally — each sub-phase fills in one language. The
|
|
|
6
6
|
|
|
7
7
|
| Language | Status | SDK published | Directory |
|
|
8
8
|
|----------|--------|---------------|-----------|
|
|
9
|
-
| Rust | ✅ Phase 5a | crates.io (Phase
|
|
9
|
+
| Rust | ✅ Phase 5a | crates.io as `sqlrite-engine` (Phase 6d) | [`rust/`](rust/) |
|
|
10
10
|
| C (FFI) | ✅ Phase 5b | GitHub Releases (Phase 6d) | [`c/`](c/) |
|
|
11
|
-
| Python | ✅ Phase 5c | PyPI (Phase
|
|
12
|
-
| Node.js | ✅ Phase 5d | npm (Phase
|
|
13
|
-
| Go | ✅ Phase 5e | Go modules (Phase
|
|
14
|
-
| WASM | ✅ Phase 5g | npm as `sqlrite-wasm` (Phase
|
|
11
|
+
| Python | ✅ Phase 5c | PyPI as `sqlrite` (Phase 6f) | [`python/`](python/) |
|
|
12
|
+
| Node.js | ✅ Phase 5d | npm as `@joaoh82/sqlrite` (Phase 6g) | [`nodejs/`](nodejs/) |
|
|
13
|
+
| Go | ✅ Phase 5e | Go modules (Phase 6i) | [`go/`](go/) |
|
|
14
|
+
| WASM | ✅ Phase 5g | npm as `sqlrite-wasm` (Phase 6h) | [`wasm/`](wasm/) |
|
|
15
15
|
|
|
16
16
|
See [docs/roadmap.md](../docs/roadmap.md) for what each sub-phase delivers.
|
|
17
17
|
|
|
@@ -4,7 +4,7 @@ build-backend = "maturin"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "sqlrite"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.6"
|
|
8
8
|
description = "Python bindings for SQLRite — a small, embeddable SQLite clone written in Rust."
|
|
9
9
|
authors = [{ name = "Joao Henrique Machado Silva", email = "joaoh82@gmail.com" }]
|
|
10
10
|
license = { text = "MIT" }
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sqlrite-0.1.4 → sqlrite-0.1.6}/images/SQLRite Simple SQL INSERT Execution High Level Diagram.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|