{"_id":"@callerlibrary/meta-seal","_rev":"3-c90153eff7cb6ea2678744048874b898","name":"@callerlibrary/meta-seal","dist-tags":{"latest":"1.0.3"},"versions":{"1.0.1":{"name":"@callerlibrary/meta-seal","version":"1.0.1","keywords":["napi-rs","NAPI","N-API","Rust","node-addon","node-addon-api","meta-seal","meta","seal","version"],"license":"MIT","_id":"@callerlibrary/meta-seal@1.0.1","maintainers":[{"name":"d.c","email":"3104173508@qq.com"}],"homepage":"https://github.com/callerlibrary/meta-seal#readme","bugs":{"url":"https://github.com/callerlibrary/meta-seal/issues"},"ava":{"timeout":"2m","extensions":{"ts":"module"},"nodeArguments":["--import","@oxc-node/core/register"],"workerThreads":false,"environmentVariables":{"OXC_TSCONFIG_PATH":"./__test__/tsconfig.json"}},"bin":{"meta-seal":"bin/cli.js"},"dist":{"shasum":"a47c7b3049fe4afbb6266c7bd22b1ee603267cbd","tarball":"https://registry.npmjs.org/@callerlibrary/meta-seal/-/meta-seal-1.0.1.tgz","fileCount":6,"integrity":"sha512-0y4hJ/4DKioBv0iK29VvatgdKE9Zco7nnq9Eb/5/dp7UcHNns1V1ZNRFyrnkebvTKUbNpWibA5k9uybDkokWmA==","signatures":[{"sig":"MEUCIA89BhlcxXpM17ckje4i7sQUNfAPo53OTkFlpsd8SazeAiEAmUYYK7FYiNHEXW4bfD7qxl+VcRIXhM133v4Uy6S6/oc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@callerlibrary%2fmeta-seal@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":34970},"main":"index.js","napi":{"targets":["x86_64-pc-windows-msvc","x86_64-apple-darwin","x86_64-unknown-linux-gnu","aarch64-apple-darwin"],"binaryName":"meta-seal"},"pnpm":{"supportedArchitectures":{"cpu":["x64","arm64","arm"],"libc":["musl","gnu"]}},"types":"./index.d.ts","browser":"browser.js","engines":{"node":">= 12.22.0 < 13 || >= 14.17.0 < 15 || >= 15.12.0 < 16 || >= 16.0.0"},"gitHead":"8d4d71fc8014378d81d484a8210f6d32fdaec712","scripts":{"lint":"oxlint .","test":"ava","bench":"node --import @oxc-node/core/register benchmark/bench.ts","build":"napi build --platform --release","format":"run-p format:prettier format:rs format:toml","prepare":"husky","version":"napi version","artifacts":"napi artifacts","format:rs":"cargo fmt","preversion":"napi build --platform && git add .","build:debug":"napi build --platform","format:toml":"taplo format","prepublishOnly":"napi prepublish -t npm","format:prettier":"prettier . -w"},"_npmUser":{"name":"d.c","email":"3104173508@qq.com"},"prettier":{"semi":false,"printWidth":120,"arrowParens":"always","singleQuote":true,"trailingComma":"all"},"repository":{"url":"git+https://github.com/callerlibrary/meta-seal.git","type":"git"},"_npmVersion":"11.11.0","description":"A tool to generate an encrypted VERSION file with project, git, and build information.","directories":{},"lint-staged":{"*.toml":["taplo format"],"*.@(js|ts|tsx)":["oxlint --fix"],"*.@(js|ts|tsx|yml|yaml|md|json)":["prettier --write"]},"_nodeVersion":"24.14.1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.18.1","devDependencies":{"ava":"^7.0.0","chalk":"^5.6.2","husky":"^9.1.7","oxlint":"^1.14.0","prettier":"^3.6.2","tinybench":"^6.0.0","@taplo/cli":"^0.7.0","typescript":"^6.0.0","lint-staged":"^16.1.6","@emnapi/core":"^1.5.0","@napi-rs/cli":"^3.2.0","npm-run-all2":"^8.0.4","@oxc-node/core":"^0.1.0","@emnapi/runtime":"^1.5.0","@tybys/wasm-util":"^0.10.0"},"optionalDependencies":{"@callerlibrary/meta-seal-darwin-x64":"1.0.1","@callerlibrary/meta-seal-darwin-arm64":"1.0.1","@callerlibrary/meta-seal-linux-x64-gnu":"1.0.1","@callerlibrary/meta-seal-win32-x64-msvc":"1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/meta-seal_1.0.1_1776154271251_0.7240812452704659","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@callerlibrary/meta-seal","version":"1.0.2","keywords":["napi-rs","NAPI","N-API","Rust","node-addon","node-addon-api","meta-seal","meta","seal","version"],"license":"MIT","_id":"@callerlibrary/meta-seal@1.0.2","maintainers":[{"name":"d.c","email":"3104173508@qq.com"}],"homepage":"https://github.com/callerlibrary/meta-seal#readme","bugs":{"url":"https://github.com/callerlibrary/meta-seal/issues"},"ava":{"timeout":"2m","extensions":{"ts":"module"},"nodeArguments":["--import","@oxc-node/core/register"],"workerThreads":false,"environmentVariables":{"OXC_TSCONFIG_PATH":"./__test__/tsconfig.json"}},"bin":{"meta-seal":"bin/cli.js"},"dist":{"shasum":"dbc00178f5bcba91eda779a7f14c9d5a1f9f8d77","tarball":"https://registry.npmjs.org/@callerlibrary/meta-seal/-/meta-seal-1.0.2.tgz","fileCount":6,"integrity":"sha512-H9lcJprxStMkTGHCVH58v1dZCXKCF9xBdAdXSi6MVWyAVkXivtFiMRthW3rSmR6jjG82SAoerst8KP4UPb7gQA==","signatures":[{"sig":"MEQCIHXW9CtXNaK3Kndmo1uvB7UaA51Ilyt4HMvcI55c89JAAiAMlsyRlV6FgGr5hvpB87eFGPfUM5vZxBiVqcdYwkhQwA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@callerlibrary%2fmeta-seal@1.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":34924},"main":"index.js","napi":{"targets":["x86_64-pc-windows-msvc","x86_64-apple-darwin","x86_64-unknown-linux-gnu","aarch64-apple-darwin"],"binaryName":"meta-seal"},"pnpm":{"supportedArchitectures":{"cpu":["x64","arm64","arm"],"libc":["musl","gnu"]}},"types":"./index.d.ts","browser":"browser.js","engines":{"node":">= 12.22.0 < 13 || >= 14.17.0 < 15 || >= 15.12.0 < 16 || >= 16.0.0"},"gitHead":"07f53e08db733e95a9fe175eb03254822bebdc33","scripts":{"lint":"oxlint .","test":"ava","bench":"node --import @oxc-node/core/register benchmark/bench.ts","build":"napi build --platform --release","format":"run-p format:prettier format:rs format:toml","prepare":"husky","version":"napi version","artifacts":"napi artifacts","format:rs":"cargo fmt","preversion":"napi build --platform && git add .","build:debug":"napi build --platform","format:toml":"taplo format","prepublishOnly":"napi prepublish -t npm","format:prettier":"prettier . -w"},"_npmUser":{"name":"d.c","email":"3104173508@qq.com"},"prettier":{"semi":false,"printWidth":120,"arrowParens":"always","singleQuote":true,"trailingComma":"all"},"repository":{"url":"git+https://github.com/callerlibrary/meta-seal.git","type":"git"},"_npmVersion":"11.11.0","description":"A tool to generate an encrypted VERSION file with project, git, and build information.","directories":{},"lint-staged":{"*.toml":["taplo format"],"*.@(js|ts|tsx)":["oxlint --fix"],"*.@(js|ts|tsx|yml|yaml|md|json)":["prettier --write"]},"_nodeVersion":"24.14.1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.18.1","devDependencies":{"ava":"^7.0.0","chalk":"^5.6.2","husky":"^9.1.7","oxlint":"^1.14.0","prettier":"^3.6.2","tinybench":"^6.0.0","@taplo/cli":"^0.7.0","typescript":"^6.0.0","lint-staged":"^16.1.6","@emnapi/core":"^1.5.0","@napi-rs/cli":"^3.2.0","npm-run-all2":"^8.0.4","@oxc-node/core":"^0.1.0","@emnapi/runtime":"^1.5.0","@tybys/wasm-util":"^0.10.0"},"optionalDependencies":{"@callerlibrary/meta-seal-darwin-x64":"1.0.2","@callerlibrary/meta-seal-darwin-arm64":"1.0.2","@callerlibrary/meta-seal-linux-x64-gnu":"1.0.2","@callerlibrary/meta-seal-win32-x64-msvc":"1.0.2"},"_npmOperationalInternal":{"tmp":"tmp/meta-seal_1.0.2_1776732936647_0.054406276052269","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@callerlibrary/meta-seal","version":"1.0.3","description":"A tool to generate an encrypted VERSION file with project, git, and build information.","main":"index.js","bin":{"meta-seal":"bin/cli.js"},"repository":{"type":"git","url":"git+https://github.com/callerlibrary/meta-seal.git"},"license":"MIT","browser":"browser.js","keywords":["napi-rs","NAPI","N-API","Rust","node-addon","node-addon-api","meta-seal","meta","seal","version"],"napi":{"binaryName":"meta-seal","targets":["x86_64-pc-windows-msvc","x86_64-apple-darwin","x86_64-unknown-linux-gnu","aarch64-apple-darwin"]},"engines":{"node":">= 12.22.0 < 13 || >= 14.17.0 < 15 || >= 15.12.0 < 16 || >= 16.0.0"},"publishConfig":{"registry":"https://registry.npmjs.org/","access":"public"},"scripts":{"artifacts":"napi artifacts","bench":"node --import @oxc-node/core/register benchmark/bench.ts","build":"napi build --platform --release","build:debug":"napi build --platform","format":"run-p format:prettier format:rs format:toml","format:prettier":"prettier . -w","format:toml":"taplo format","format:rs":"cargo fmt","lint":"oxlint .","prepublishOnly":"napi prepublish -t npm","test":"ava","preversion":"napi build --platform && git add .","version":"napi version","prepare":"husky"},"devDependencies":{"@emnapi/core":"^1.5.0","@emnapi/runtime":"^1.5.0","@napi-rs/cli":"^3.2.0","@oxc-node/core":"^0.1.0","@taplo/cli":"^0.7.0","@tybys/wasm-util":"^0.10.0","ava":"^7.0.0","chalk":"^5.6.2","husky":"^9.1.7","lint-staged":"^16.1.6","npm-run-all2":"^8.0.4","oxlint":"^1.14.0","prettier":"^3.6.2","tinybench":"^6.0.0","typescript":"^6.0.0"},"lint-staged":{"*.@(js|ts|tsx)":["oxlint --fix"],"*.@(js|ts|tsx|yml|yaml|md|json)":["prettier --write"],"*.toml":["taplo format"]},"ava":{"extensions":{"ts":"module"},"timeout":"2m","workerThreads":false,"environmentVariables":{"OXC_TSCONFIG_PATH":"./__test__/tsconfig.json"},"nodeArguments":["--import","@oxc-node/core/register"]},"prettier":{"printWidth":120,"semi":false,"trailingComma":"all","singleQuote":true,"arrowParens":"always"},"pnpm":{"supportedArchitectures":{"cpu":["x64","arm64","arm"],"libc":["musl","gnu"]}},"packageManager":"pnpm@10.18.1","optionalDependencies":{"@callerlibrary/meta-seal-win32-x64-msvc":"1.0.3","@callerlibrary/meta-seal-darwin-x64":"1.0.3","@callerlibrary/meta-seal-linux-x64-gnu":"1.0.3","@callerlibrary/meta-seal-darwin-arm64":"1.0.3"},"gitHead":"e0eef2f21002763339e554fe1b323c042aea8d90","types":"./index.d.ts","_id":"@callerlibrary/meta-seal@1.0.3","bugs":{"url":"https://github.com/callerlibrary/meta-seal/issues"},"homepage":"https://github.com/callerlibrary/meta-seal#readme","_nodeVersion":"24.14.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-ppHtGSYQNfL66SYjnDBx2ET2INX8zbjvFC/37+8kSVrTy+rPUrfCgq/QXNayjZh4K2jw4TLxvRwvY38N6qJH6Q==","shasum":"b90fc5d056159e2c749f2cf3bfee7979c8abca79","tarball":"https://registry.npmjs.org/@callerlibrary/meta-seal/-/meta-seal-1.0.3.tgz","fileCount":6,"unpackedSize":35805,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@callerlibrary%2fmeta-seal@1.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCl+zdut80MvY5ccT4AWXxJAEXvAYJG5EVBmfj2rMXoRwIhAOXRmbSpZPEHihIyQYpQfRr8sdgko6xEByQuOIlBZFuh"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:825d80d3-5304-4fb6-8a2c-654dc25a78c4"}},"directories":{},"maintainers":[{"name":"d.c","email":"3104173508@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/meta-seal_1.0.3_1777369709903_0.4632167965370042"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-14T08:11:11.154Z","modified":"2026-04-28T09:48:30.347Z","1.0.1":"2026-04-14T08:11:11.380Z","1.0.2":"2026-04-21T00:55:36.774Z","1.0.3":"2026-04-28T09:48:30.041Z"},"bugs":{"url":"https://github.com/callerlibrary/meta-seal/issues"},"license":"MIT","homepage":"https://github.com/callerlibrary/meta-seal#readme","keywords":["napi-rs","NAPI","N-API","Rust","node-addon","node-addon-api","meta-seal","meta","seal","version"],"repository":{"type":"git","url":"git+https://github.com/callerlibrary/meta-seal.git"},"description":"A tool to generate an encrypted VERSION file with project, git, and build information.","maintainers":[{"name":"d.c","email":"3104173508@qq.com"}],"readme":"# meta-seal\n\n[![npm version](https://img.shields.io/npm/v/meta-seal.svg)](https://npmjs.org/package/meta-seal)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n[English](./README-en.md) | 简体中文\n\n`meta-seal` 是一个为前端工程设计的版本描述文件生成工具。它可以在项目构建时，自动收集项目基础信息、Git 提交记录、分支信息以及构建系统信息，并将这些信息使用 AES-256-GCM 算法加密，最终生成一个 `VERSION` 文件输出到指定目录。\n\n该工具基于 **Rust** 编写，并通过 **NAPI-RS** 提供 Node.js 绑定，支持全平台跨系统使用，无需本地安装 Rust 环境。\n\n---\n\n## ✨ 核心功能\n\n- **信息收集**：自动收集 `package.json` 中的名称和版本、Git 当前分支、最近 N 条提交记录（Hash和信息）、以及构建环境的操作系统、架构和时间。\n- **高安全性**：使用 `AES-256-GCM` 工业级加密算法生成安全的 `VERSION` 文件。\n- **高度可配**：通过项目根目录的 `.meta-sealrc` 进行灵活配置，支持开启/关闭特定的信息收集。\n- **跨平台支持**：预编译分发 Windows、macOS（Intel & Apple Silicon）、Linux 的 `.node` 二进制文件。\n- **无缝集成**：可像 ESLint 一样直接在 npm scripts 中调用。\n\n## 📦 安装\n\n在你的前端工程中使用你喜欢的包管理器安装：\n\n```bash\nnpm install -D @callerlibrary/meta-seal\n# 或者\nyarn add -D @callerlibrary/meta-seal\n# 或者\npnpm add -D @callerlibrary/meta-seal\n```\n\n## ⚙️ 配置\n\n在项目根目录下创建一个 `.meta-sealrc` JSON 文件（可选，如果没有配置则使用默认值）：\n\n```json\n{\n  \"basic_info\": true,\n  \"git_commit\": true,\n  \"git_commit_count\": 3,\n  \"git_branch\": true,\n  \"build_system\": true,\n  \"output_dir\": \"./dist\",\n  \"encryption_key\": \"12345678901234567890123456789012\",\n  \"encryption_key_env\": \"META_SEAL_KEY\"\n}\n```\n\n### 配置项说明：\n\n- `basic_info`: 是否收集 package.json 中的 name 和 version（默认: `true`）\n- `git_commit`: 是否收集 git 提交记录（默认: `true`）\n- `git_commit_count`: 收集最近的几条 git 提交记录（默认: `3`）\n- `git_branch`: 是否收集 git 当前分支（默认: `true`）\n- `build_system`: 是否收集构建系统的 OS、架构和时间（默认: `true`）\n- `output_dir`: VERSION 文件的输出目录（默认: `\"./dist\"`）\n- `encryption_key`: 直接在配置中写死的 32 字节加密密钥\n- `encryption_key_env`: 指定从哪个环境变量读取密钥（默认会兜底尝试读取 `META_SEAL_KEY`）\n\n## 🚀 使用方法\n\n### 1. 结合 NPM Scripts（推荐）\n\n在你的 `package.json` 中配置脚本：\n\n```json\n{\n  \"scripts\": {\n    \"build\": \"vite build && npm run meta:generate\",\n    \"meta:generate\": \"meta-seal generate\",\n    \"meta:read\": \"meta-seal read -f ./dist/VERSION\"\n  }\n}\n```\n\n在执行 `npm run build` 或者 `npm run meta:generate` 前，请确保已通过配置文件、命令行参数或环境变量提供了 32 字节长度的密钥。\n\n### 2. 命令行 (CLI) 调用\n\n你可以使用 `npx` 或者 `pnpm dlx` 临时调用工具：\n\n#### 初始化配置文件\n\n自动在当前目录生成默认的 `.meta-sealrc` 配置文件：\n\n```bash\nnpx meta-seal init\n```\n\n#### 生成并加密 VERSION 文件\n\n```bash\nnpx meta-seal generate -k 12345678901234567890123456789012\n```\n\n#### 读取并解密 VERSION 文件\n\n解密后，工具会在控制台格式化输出明文的 JSON 信息：\n\n```bash\nnpx meta-seal read -f ./dist/VERSION -k 12345678901234567890123456789012\n```\n\n**解密输出示例：**\n\n```json\n{\n  \"build\": {\n    \"architecture\": \"x86_64\",\n    \"build_time\": \"2026-04-13T10:00:00+00:00\",\n    \"os\": \"windows\"\n  },\n  \"git\": {\n    \"branch\": \"feature/init_app\",\n    \"commits\": [\n      {\n        \"hash\": \"bd6ecaedf0ee45cafa14974c0acdc3e9bb0b7c84\",\n        \"message\": \"Initial commit\"\n      }\n    ]\n  },\n  \"project\": {\n    \"name\": \"my-awesome-app\",\n    \"version\": \"1.0.0\"\n  }\n}\n```\n\n## 🔐 密钥优先级逻辑\n\n工具在寻找 32 字节加密/解密密钥时，按照以下优先级进行读取（优先级从高到低）：\n\n1. 命令行参数 `-k` 或 `--key`\n2. `.meta-sealrc` 文件中的 `encryption_key` 字段\n3. `.meta-sealrc` 文件中的 `encryption_key_env` 字段指定的系统环境变量\n4. 默认的系统环境变量 `META_SEAL_KEY`\n\n## 📄 开源协议\n\nMIT License\n","readmeFilename":"README.md"}