From d9cf24d0eb0ba8044a38a1c4446b0bab99d7a4d9 Mon Sep 17 00:00:00 2001 From: Hare Date: Thu, 13 Aug 2026 19:01:14 +0900 Subject: [PATCH] Prepare Decodal packages for release --- Cargo.lock | 16 +- Cargo.toml | 3 +- README.md | 11 +- RELEASING.md | 52 ++++++ crates/decodal-cli/Cargo.toml | 2 +- crates/decodal-core/Cargo.toml | 2 +- crates/decodal-language-service/Cargo.toml | 2 +- crates/decodal-language-tools/Cargo.toml | 5 +- crates/decodal-lsp/Cargo.toml | 7 +- crates/decodal-wasm/Cargo.toml | 4 +- editors/tree-sitter-decodal/Cargo.toml | 6 +- packages/decodal-wasm/LICENSE-APACHE | 173 ++++++++++++++++++ packages/decodal-wasm/LICENSE-MIT | 21 +++ packages/decodal-wasm/decodal_wasm_bg.wasm | Bin 514012 -> 515480 bytes packages/decodal-wasm/jsr.json | 6 +- packages/decodal-wasm/package.json | 15 +- site/decodal-site/package-lock.json | 3 +- .../scripts/prepare-wasm-package.mjs | 29 ++- site/decodal-site/src/pages/index.astro | 2 +- 19 files changed, 324 insertions(+), 35 deletions(-) create mode 100644 RELEASING.md create mode 100644 packages/decodal-wasm/LICENSE-APACHE create mode 100644 packages/decodal-wasm/LICENSE-MIT diff --git a/Cargo.lock b/Cargo.lock index 00aeb18..d594fe0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -56,7 +56,7 @@ checksum = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17" [[package]] name = "decodal" -version = "0.1.2" +version = "0.1.3" dependencies = [ "decodal-derive", "regex", @@ -64,14 +64,14 @@ dependencies = [ [[package]] name = "decodal-cli" -version = "0.1.2" +version = "0.1.3" dependencies = [ "decodal", ] [[package]] name = "decodal-derive" -version = "0.1.2" +version = "0.1.3" dependencies = [ "decodal", "proc-macro2", @@ -81,14 +81,14 @@ dependencies = [ [[package]] name = "decodal-language-service" -version = "0.1.2" +version = "0.1.3" dependencies = [ "decodal", ] [[package]] name = "decodal-language-tools" -version = "0.1.2" +version = "0.1.3" dependencies = [ "decodal", "serde_json", @@ -99,7 +99,7 @@ dependencies = [ [[package]] name = "decodal-lsp" -version = "0.1.2" +version = "0.1.3" dependencies = [ "decodal", "decodal-language-service", @@ -111,7 +111,7 @@ dependencies = [ [[package]] name = "decodal-wasm" -version = "0.1.2" +version = "0.1.3" dependencies = [ "decodal", "decodal-language-service", @@ -391,7 +391,7 @@ dependencies = [ [[package]] name = "tree-sitter-decodal" -version = "0.0.1" +version = "0.1.0" dependencies = [ "cc", "tree-sitter", diff --git a/Cargo.toml b/Cargo.toml index ef6fd07..c112d35 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,11 +7,12 @@ members = [ "crates/decodal-language-tools", "crates/decodal-language-service", "crates/decodal-lsp", + "editors/tree-sitter-decodal", ] resolver = "2" [workspace.package] -version = "0.1.2" +version = "0.1.3" edition = "2024" rust-version = "1.85" license = "MIT OR Apache-2.0" diff --git a/README.md b/README.md index 0bd0627..373e47e 100644 --- a/README.md +++ b/README.md @@ -67,9 +67,16 @@ cargo run -q -p decodal-cli --features regex -- examples/regex/main.dcdl ## Language server -The `decodal-lsp` workspace package provides a stdio language server with live semantic diagnostics and document formatting. +The `decodal-language-service` crate provides transport-independent evaluation and completion, while `decodal-lsp` exposes it through the Language Server Protocol with live semantic diagnostics and document formatting. Its library API accepts the same host environment used for production evaluation, so application-defined globals and structured import routing remain available in the editor. +```toml +[dependencies] +decodal = "0.1.3" +decodal-language-service = "0.1.3" +decodal-lsp = "0.1.3" +``` + Run the default filesystem-backed server from the repository: ```sh @@ -86,6 +93,8 @@ The static documentation site and browser playground live under: site/decodal-site/ ``` +Browser hosts can use `decodal-wasm`. Its `DecodalLanguageService` accepts JavaScript-owned `globals`, `loadImport`, and `completeImport` callbacks; filesystem and virtual-project policy remain outside the package. + ## License Licensed under either of: diff --git a/RELEASING.md b/RELEASING.md new file mode 100644 index 0000000..f29fcd0 --- /dev/null +++ b/RELEASING.md @@ -0,0 +1,52 @@ +# Releasing Decodal + +Run all commands from the repository root. Publishing requires Cargo, npm, and JSR credentials; validation does not. + +## Versions + +- Rust crates: `0.1.3` +- `tree-sitter-decodal`: `0.1.0` +- `decodal-wasm` npm/JSR package: `0.1.4` +- `decodal-codemirror`: unchanged at `0.1.5` + +## Validate + +```sh +cargo test --workspace +cargo clippy --workspace --all-targets -- -D warnings +cargo clippy -p decodal-wasm --target wasm32-unknown-unknown -- -D warnings +npm --prefix site/decodal-site run build:runtime +npm --prefix site/decodal-site test +npm --prefix site/decodal-site run build +deno check packages/decodal-wasm/mod.ts +npm pack --dry-run ./packages/decodal-wasm +deno publish --dry-run --config packages/decodal-wasm/jsr.json +``` + +## Publish Rust crates + +Publish in dependency order. Wait for each crate to become available in the crates.io index before continuing. +Run the corresponding command with `--dry-run` immediately before each real publish. + +```sh +cargo publish -p decodal-derive +cargo publish -p decodal +cargo publish -p tree-sitter-decodal +cargo publish -p decodal-language-service +cargo publish -p decodal-language-tools +cargo publish -p decodal-lsp +``` + +`decodal-cli` and the Rust `decodal-wasm` wrapper remain repository-only packages. + +## Publish JavaScript packages + +The runtime build regenerates and normalizes the committed npm/JSR package before publishing. + +```sh +npm --prefix site/decodal-site run build:runtime +npm publish ./packages/decodal-wasm +deno publish --config packages/decodal-wasm/jsr.json +``` + +After both registries accept the release, tag the release commit and update the deployed site. diff --git a/crates/decodal-cli/Cargo.toml b/crates/decodal-cli/Cargo.toml index d74aef5..7153ee1 100644 --- a/crates/decodal-cli/Cargo.toml +++ b/crates/decodal-cli/Cargo.toml @@ -20,4 +20,4 @@ default = [] regex = ["decodal/regex"] [dependencies] -decodal = { version = "0.1.2", path = "../decodal-core" } +decodal = { version = "0.1.3", path = "../decodal-core" } diff --git a/crates/decodal-core/Cargo.toml b/crates/decodal-core/Cargo.toml index 6d09673..57ba253 100644 --- a/crates/decodal-core/Cargo.toml +++ b/crates/decodal-core/Cargo.toml @@ -17,5 +17,5 @@ derive = ["dep:decodal-derive"] regex = ["std", "dep:regex"] [dependencies] -decodal-derive = { version = "0.1.1", path = "../decodal-derive", optional = true } +decodal-derive = { version = "0.1.3", path = "../decodal-derive", optional = true } regex = { version = "1.10", default-features = false, features = ["std", "unicode-perl"], optional = true } diff --git a/crates/decodal-language-service/Cargo.toml b/crates/decodal-language-service/Cargo.toml index 34844f0..95861e1 100644 --- a/crates/decodal-language-service/Cargo.toml +++ b/crates/decodal-language-service/Cargo.toml @@ -11,4 +11,4 @@ keywords = ["decodal", "lsp", "language-server", "editor"] categories = ["development-tools", "text-editors"] [dependencies] -decodal = { version = "0.1.2", path = "../decodal-core" } +decodal = { version = "0.1.3", path = "../decodal-core" } diff --git a/crates/decodal-language-tools/Cargo.toml b/crates/decodal-language-tools/Cargo.toml index 6db03b4..53fe159 100644 --- a/crates/decodal-language-tools/Cargo.toml +++ b/crates/decodal-language-tools/Cargo.toml @@ -9,16 +9,15 @@ readme.workspace = true description = "Source-level language tooling for Decodal." keywords = ["decodal", "formatter", "lsp", "tree-sitter"] categories = ["development-tools", "text-processing"] -publish = false [lib] crate-type = ["cdylib", "rlib"] [dependencies] -decodal = { version = "0.1.2", path = "../decodal-core" } +decodal = { version = "0.1.3", path = "../decodal-core" } serde_json.workspace = true tree-sitter = "0.22.6" -tree-sitter-decodal = { path = "../../editors/tree-sitter-decodal" } +tree-sitter-decodal = { version = "0.1.0", path = "../../editors/tree-sitter-decodal" } wasm-bindgen.workspace = true [package.metadata.wasm-pack.profile.release] diff --git a/crates/decodal-lsp/Cargo.toml b/crates/decodal-lsp/Cargo.toml index 749bd4b..cdbe707 100644 --- a/crates/decodal-lsp/Cargo.toml +++ b/crates/decodal-lsp/Cargo.toml @@ -9,12 +9,11 @@ readme.workspace = true description = "Language Server Protocol implementation for Decodal." keywords = ["decodal", "lsp", "language-server", "editor"] categories = ["development-tools", "text-editors"] -publish = false [dependencies] -decodal = { version = "0.1.2", path = "../decodal-core" } -decodal-language-service = { version = "0.1.2", path = "../decodal-language-service" } -decodal-language-tools = { version = "0.1.2", path = "../decodal-language-tools" } +decodal = { version = "0.1.3", path = "../decodal-core" } +decodal-language-service = { version = "0.1.3", path = "../decodal-language-service" } +decodal-language-tools = { version = "0.1.3", path = "../decodal-language-tools" } lsp-server = "0.10" lsp-types = "0.97" serde_json.workspace = true diff --git a/crates/decodal-wasm/Cargo.toml b/crates/decodal-wasm/Cargo.toml index 1657583..45d59f5 100644 --- a/crates/decodal-wasm/Cargo.toml +++ b/crates/decodal-wasm/Cargo.toml @@ -15,8 +15,8 @@ publish = false crate-type = ["cdylib", "rlib"] [dependencies] -decodal = { version = "0.1.2", path = "../decodal-core" } -decodal-language-service = { version = "0.1.2", path = "../decodal-language-service" } +decodal = { version = "0.1.3", path = "../decodal-core" } +decodal-language-service = { version = "0.1.3", path = "../decodal-language-service" } serde_json.workspace = true wasm-bindgen.workspace = true diff --git a/editors/tree-sitter-decodal/Cargo.toml b/editors/tree-sitter-decodal/Cargo.toml index 92ecffc..d975772 100644 --- a/editors/tree-sitter-decodal/Cargo.toml +++ b/editors/tree-sitter-decodal/Cargo.toml @@ -1,12 +1,12 @@ [package] name = "tree-sitter-decodal" description = "Decodal grammar for tree-sitter" -version = "0.0.1" +version = "0.1.0" license = "MIT" readme = "README.md" keywords = ["incremental", "parsing", "tree-sitter", "decodal"] categories = ["parsing", "text-editors"] -repository = "https://github.com/tree-sitter/tree-sitter-decodal" +repository = "https://gitea.hareworks.net/Hare/Decodal" edition = "2021" autoexamples = false @@ -17,7 +17,7 @@ include = ["bindings/rust/*", "grammar.js", "queries/*", "src/*"] path = "bindings/rust/lib.rs" [dependencies] -tree-sitter = ">=0.22.6" +tree-sitter = "0.22.6" [build-dependencies] cc = "1.0.87" diff --git a/packages/decodal-wasm/LICENSE-APACHE b/packages/decodal-wasm/LICENSE-APACHE new file mode 100644 index 0000000..8ad3e6e --- /dev/null +++ b/packages/decodal-wasm/LICENSE-APACHE @@ -0,0 +1,173 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS diff --git a/packages/decodal-wasm/LICENSE-MIT b/packages/decodal-wasm/LICENSE-MIT new file mode 100644 index 0000000..dd4df64 --- /dev/null +++ b/packages/decodal-wasm/LICENSE-MIT @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Decodal contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/decodal-wasm/decodal_wasm_bg.wasm b/packages/decodal-wasm/decodal_wasm_bg.wasm index eefa87d4b22e47aa34dd24dd612ef14d207d923c..7147368c5569d713116c09da5c1184a9dc8111f2 100644 GIT binary patch delta 53790 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 bVa@$gukmTWKs?-+8Co#Fx~adQTT=fA?QbyP delta 52685 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 Tdq~DxbHfw++;rgkbcOVPo?Nni diff --git a/packages/decodal-wasm/jsr.json b/packages/decodal-wasm/jsr.json index 061e868..409e9a9 100644 --- a/packages/decodal-wasm/jsr.json +++ b/packages/decodal-wasm/jsr.json @@ -1,11 +1,13 @@ { "name": "@hare/decodal-wasm", - "version": "0.1.3", - "license": "MIT", + "version": "0.1.4", + "license": "MIT OR Apache-2.0", "exports": "./mod.ts", "publish": { "include": [ "README.md", + "LICENSE-MIT", + "LICENSE-APACHE", "mod.ts", "decodal_wasm.js", "decodal_wasm.d.ts", diff --git a/packages/decodal-wasm/package.json b/packages/decodal-wasm/package.json index 9a8c4b3..e1dafc5 100644 --- a/packages/decodal-wasm/package.json +++ b/packages/decodal-wasm/package.json @@ -2,13 +2,16 @@ "name": "decodal-wasm", "type": "module", "description": "Host-configurable Decodal evaluator and language service for JavaScript runtimes.", - "version": "0.1.3", + "version": "0.1.4", "license": "MIT OR Apache-2.0", "repository": { "type": "git", "url": "https://gitea.hareworks.net/Hare/Decodal" }, "files": [ + "README.md", + "LICENSE-MIT", + "LICENSE-APACHE", "decodal_wasm_bg.wasm", "decodal_wasm.js", "decodal_wasm.d.ts" @@ -23,5 +26,13 @@ "wasm", "dsl", "config" - ] + ], + "exports": { + ".": { + "types": "./decodal_wasm.d.ts", + "import": "./decodal_wasm.js" + }, + "./decodal_wasm_bg.wasm": "./decodal_wasm_bg.wasm", + "./package.json": "./package.json" + } } diff --git a/site/decodal-site/package-lock.json b/site/decodal-site/package-lock.json index 757e377..39d87f4 100644 --- a/site/decodal-site/package-lock.json +++ b/site/decodal-site/package-lock.json @@ -29,6 +29,7 @@ "license": "MIT OR Apache-2.0", "devDependencies": { "@codemirror/language": "^6.12.4", + "@codemirror/state": "^6.7.1", "@codemirror/view": "^6.43.6", "@lezer/highlight": "^1.2.3", "@lezer/lr": "^1.4.10" @@ -41,7 +42,7 @@ } }, "../../packages/decodal-wasm": { - "version": "0.1.3", + "version": "0.1.4", "license": "MIT OR Apache-2.0" }, "node_modules/@astrojs/check": { diff --git a/site/decodal-site/scripts/prepare-wasm-package.mjs b/site/decodal-site/scripts/prepare-wasm-package.mjs index 672612e..c664a3d 100644 --- a/site/decodal-site/scripts/prepare-wasm-package.mjs +++ b/site/decodal-site/scripts/prepare-wasm-package.mjs @@ -1,8 +1,11 @@ -import { readFileSync, writeFileSync } from 'node:fs'; +import { copyFileSync, readFileSync, writeFileSync } from 'node:fs'; import { resolve } from 'node:path'; const packageDir = resolve(import.meta.dirname, '../../../packages/decodal-wasm'); +copyFileSync(resolve(packageDir, '../../LICENSE-MIT'), resolve(packageDir, 'LICENSE-MIT')); +copyFileSync(resolve(packageDir, '../../LICENSE-APACHE'), resolve(packageDir, 'LICENSE-APACHE')); + const declarationPath = resolve(packageDir, 'decodal_wasm.d.ts'); let declarations = readFileSync(declarationPath, 'utf8'); const hostTypes = ` @@ -77,7 +80,23 @@ writeFileSync( const packageJsonPath = resolve(packageDir, 'package.json'); const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf8')); -packageJson.version = '0.1.3'; +packageJson.version = '0.1.4'; +packageJson.files = [ + 'README.md', + 'LICENSE-MIT', + 'LICENSE-APACHE', + 'decodal_wasm_bg.wasm', + 'decodal_wasm.js', + 'decodal_wasm.d.ts', +]; +packageJson.exports = { + '.': { + types: './decodal_wasm.d.ts', + import: './decodal_wasm.js', + }, + './decodal_wasm_bg.wasm': './decodal_wasm_bg.wasm', + './package.json': './package.json', +}; writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2) + '\n'); writeFileSync( @@ -159,12 +178,14 @@ writeFileSync( JSON.stringify( { name: '@hare/decodal-wasm', - version: '0.1.3', - license: 'MIT', + version: '0.1.4', + license: 'MIT OR Apache-2.0', exports: './mod.ts', publish: { include: [ 'README.md', + 'LICENSE-MIT', + 'LICENSE-APACHE', 'mod.ts', 'decodal_wasm.js', 'decodal_wasm.d.ts', diff --git a/site/decodal-site/src/pages/index.astro b/site/decodal-site/src/pages/index.astro index 6bab0a9..fed5a02 100644 --- a/site/decodal-site/src/pages/index.astro +++ b/site/decodal-site/src/pages/index.astro @@ -32,7 +32,7 @@ Production = Server & { crates.io/crates/decodal