@interrupted/murk-secrets 0.10.2
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.
- package/README.md +104 -0
- package/index.d.ts +55 -0
- package/index.js +583 -0
- package/package.json +59 -0
package/README.md
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# @interrupted/murk-secrets
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/@interrupted/murk-secrets)
|
|
4
|
+
|
|
5
|
+
Node.js/TypeScript bindings for [murk](https://github.com/interrupted-inc/murk) — an encrypted secrets manager for developers.
|
|
6
|
+
|
|
7
|
+
## Prerequisites
|
|
8
|
+
|
|
9
|
+
You need the [murk CLI](https://github.com/interrupted-inc/murk) to create and manage vaults. This package only reads them.
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# Install the CLI first
|
|
13
|
+
brew tap interrupted-inc/murk && brew install murk
|
|
14
|
+
|
|
15
|
+
# Initialize a vault and add secrets
|
|
16
|
+
murk init
|
|
17
|
+
murk add DATABASE_URL
|
|
18
|
+
murk add API_KEY
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Then add the Node package to your project:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npm install @interrupted/murk-secrets
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Quick start
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# Load your key (created by murk init)
|
|
31
|
+
source .env
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
```typescript
|
|
35
|
+
import { load, get, exportAll } from '@interrupted/murk-secrets'
|
|
36
|
+
|
|
37
|
+
// Load the vault (reads MURK_KEY from environment)
|
|
38
|
+
const vault = load()
|
|
39
|
+
|
|
40
|
+
// Get a single secret
|
|
41
|
+
const dbUrl = vault.get('DATABASE_URL')
|
|
42
|
+
|
|
43
|
+
// Get all secrets as an object
|
|
44
|
+
const secrets = vault.export()
|
|
45
|
+
|
|
46
|
+
// One-liners
|
|
47
|
+
get('DATABASE_URL')
|
|
48
|
+
exportAll()
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## API
|
|
52
|
+
|
|
53
|
+
### `load(vaultPath?: string): Vault`
|
|
54
|
+
|
|
55
|
+
Load and decrypt a murk vault. Reads `MURK_KEY` or `MURK_KEY_FILE` from the environment.
|
|
56
|
+
|
|
57
|
+
### `get(key: string, vaultPath?: string): string | null`
|
|
58
|
+
|
|
59
|
+
One-liner: load the vault and get a single value.
|
|
60
|
+
|
|
61
|
+
### `exportAll(vaultPath?: string): Record<string, string>`
|
|
62
|
+
|
|
63
|
+
One-liner: load the vault and export all secrets as an object.
|
|
64
|
+
|
|
65
|
+
### `hasIdentity(): boolean`
|
|
66
|
+
|
|
67
|
+
Whether a decryption identity (`MURK_KEY` / `MURK_KEY_FILE`) is available — i.e. whether `load()` can decrypt. This is not a check for whether a secret exists; use `vault.has(key)` / `vault.keys()` for that.
|
|
68
|
+
|
|
69
|
+
### `Vault`
|
|
70
|
+
|
|
71
|
+
| Method | Returns | Description |
|
|
72
|
+
|--------|---------|-------------|
|
|
73
|
+
| `vault.get(key)` | `string \| null` | Get a single decrypted value |
|
|
74
|
+
| `vault.export()` | `Record<string, string>` | All secrets as an object |
|
|
75
|
+
| `vault.keys()` | `string[]` | List of key names |
|
|
76
|
+
| `vault.has(key)` | `boolean` | Check if a key exists |
|
|
77
|
+
| `vault.length` | `number` | Number of secrets |
|
|
78
|
+
|
|
79
|
+
Scoped (per-user) overrides are applied automatically — if you have a scoped value for a key, it takes priority over the shared value.
|
|
80
|
+
|
|
81
|
+
## Memory hygiene
|
|
82
|
+
|
|
83
|
+
Every decrypted value murk returns is a plain host-language string. murk zeroes plaintext
|
|
84
|
+
from its own memory when a value is dropped, but that guarantee ends at the FFI
|
|
85
|
+
boundary: once a value crosses into JavaScript the runtime owns it, and its
|
|
86
|
+
garbage collector — not murk — controls its lifetime. This is inherent to
|
|
87
|
+
reading secrets into a process (see the
|
|
88
|
+
[threat model](https://github.com/interrupted-inc/murk/blob/main/THREAT_MODEL.md)); avoid
|
|
89
|
+
holding decrypted values longer than you need them.
|
|
90
|
+
|
|
91
|
+
## Agent policy
|
|
92
|
+
|
|
93
|
+
When the loaded key is an agent grant (minted with `murk agent grant`), the vault's agent policy is enforced on read, the same way the CLI enforces it at `murk agent exec`: `get()` and `export()` throw if the policy forbids a key. Operator keys are unaffected. This makes a policy vault strict from every entry point — though an agent already cannot decrypt out-of-scope secrets at all, since its ephemeral key is not a recipient of them.
|
|
94
|
+
|
|
95
|
+
## Requirements
|
|
96
|
+
|
|
97
|
+
- Node.js >= 16
|
|
98
|
+
- [murk CLI](https://github.com/interrupted-inc/murk) installed (to create and manage vaults)
|
|
99
|
+
- A `.murk` vault file in your project (created with `murk init`)
|
|
100
|
+
- `MURK_KEY` or `MURK_KEY_FILE` in the environment (created by `murk init`, loaded via `source .env`)
|
|
101
|
+
|
|
102
|
+
## License
|
|
103
|
+
|
|
104
|
+
MIT OR Apache-2.0
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/* auto-generated by NAPI-RS */
|
|
2
|
+
/* eslint-disable */
|
|
3
|
+
/** A loaded and decrypted murk vault. */
|
|
4
|
+
export declare class Vault {
|
|
5
|
+
/**
|
|
6
|
+
* Get a single decrypted secret value. Resolution order: a personal scoped
|
|
7
|
+
* override, then a named-group value we can read, then the shared value.
|
|
8
|
+
*
|
|
9
|
+
* Internally, vault state stores values in `Zeroizing<String>` so plaintext
|
|
10
|
+
* is wiped from memory when dropped. Crossing the napi boundary into a
|
|
11
|
+
* JavaScript `String` requires copying the plaintext into a regular Rust
|
|
12
|
+
* `String`; the V8 garbage collector owns it from there and zeroize cannot
|
|
13
|
+
* follow. This is a known leak in the JS bindings — see THREAT_MODEL.md.
|
|
14
|
+
*
|
|
15
|
+
* When the loaded identity is a granted agent, the vault's agent policy is
|
|
16
|
+
* enforced before the value is returned — the same gate the CLI applies at
|
|
17
|
+
* `agent exec`. Throws if policy forbids the key. For an operator identity
|
|
18
|
+
* this is a no-op.
|
|
19
|
+
*/
|
|
20
|
+
get(key: string): string | null
|
|
21
|
+
/**
|
|
22
|
+
* Export all secrets as an object. Scoped values override shared values.
|
|
23
|
+
*
|
|
24
|
+
* See `get` for the zeroize caveat — the returned `HashMap` holds plain
|
|
25
|
+
* `String` plaintext, not `Zeroizing<String>`.
|
|
26
|
+
*
|
|
27
|
+
* For a granted agent, the vault's agent policy is enforced over the full
|
|
28
|
+
* key set first (mirroring `murk agent exec`): if any resolvable key is
|
|
29
|
+
* outside the policy, the whole export throws rather than returning a
|
|
30
|
+
* partial object. For an operator identity this is a no-op.
|
|
31
|
+
*/
|
|
32
|
+
export(): Record<string, string>
|
|
33
|
+
/** List all key names. */
|
|
34
|
+
keys(): Array<string>
|
|
35
|
+
/** Number of secrets in the vault. */
|
|
36
|
+
get length(): number
|
|
37
|
+
/** Check if a key exists. */
|
|
38
|
+
has(key: string): boolean
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/** One-liner: load the vault and export all secrets as an object. */
|
|
42
|
+
export declare function exportAll(vaultPath?: string | undefined | null): Record<string, string>
|
|
43
|
+
|
|
44
|
+
/** One-liner: load the vault and get a single key. */
|
|
45
|
+
export declare function get(key: string, vaultPath?: string | undefined | null): string | null
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Whether a decryption identity (`MURK_KEY` / `MURK_KEY_FILE`) is available in
|
|
49
|
+
* the environment — i.e. whether `load` can decrypt. This does not check
|
|
50
|
+
* whether a secret exists; use `Vault.has` / `Vault.keys` for that.
|
|
51
|
+
*/
|
|
52
|
+
export declare function hasIdentity(): boolean
|
|
53
|
+
|
|
54
|
+
/** Load a murk vault. Reads MURK_KEY from the environment. */
|
|
55
|
+
export declare function load(vaultPath?: string | undefined | null): Vault
|
package/index.js
ADDED
|
@@ -0,0 +1,583 @@
|
|
|
1
|
+
// prettier-ignore
|
|
2
|
+
/* eslint-disable */
|
|
3
|
+
// @ts-nocheck
|
|
4
|
+
/* auto-generated by NAPI-RS */
|
|
5
|
+
|
|
6
|
+
const { readFileSync } = require('node:fs')
|
|
7
|
+
let nativeBinding = null
|
|
8
|
+
const loadErrors = []
|
|
9
|
+
|
|
10
|
+
const isMusl = () => {
|
|
11
|
+
let musl = false
|
|
12
|
+
if (process.platform === 'linux') {
|
|
13
|
+
musl = isMuslFromFilesystem()
|
|
14
|
+
if (musl === null) {
|
|
15
|
+
musl = isMuslFromReport()
|
|
16
|
+
}
|
|
17
|
+
if (musl === null) {
|
|
18
|
+
musl = isMuslFromChildProcess()
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return musl
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const isFileMusl = (f) => f.includes('libc.musl-') || f.includes('ld-musl-')
|
|
25
|
+
|
|
26
|
+
const isMuslFromFilesystem = () => {
|
|
27
|
+
try {
|
|
28
|
+
return readFileSync('/usr/bin/ldd', 'utf-8').includes('musl')
|
|
29
|
+
} catch {
|
|
30
|
+
return null
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const isMuslFromReport = () => {
|
|
35
|
+
let report = null
|
|
36
|
+
if (typeof process.report?.getReport === 'function') {
|
|
37
|
+
process.report.excludeNetwork = true
|
|
38
|
+
report = process.report.getReport()
|
|
39
|
+
}
|
|
40
|
+
if (!report) {
|
|
41
|
+
return null
|
|
42
|
+
}
|
|
43
|
+
if (report.header && report.header.glibcVersionRuntime) {
|
|
44
|
+
return false
|
|
45
|
+
}
|
|
46
|
+
if (Array.isArray(report.sharedObjects)) {
|
|
47
|
+
if (report.sharedObjects.some(isFileMusl)) {
|
|
48
|
+
return true
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return false
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const isMuslFromChildProcess = () => {
|
|
55
|
+
try {
|
|
56
|
+
return require('child_process').execSync('ldd --version', { encoding: 'utf8' }).includes('musl')
|
|
57
|
+
} catch (e) {
|
|
58
|
+
// If we reach this case, we don't know if the system is musl or not, so is better to just fallback to false
|
|
59
|
+
return false
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function requireNative() {
|
|
64
|
+
if (process.env.NAPI_RS_NATIVE_LIBRARY_PATH) {
|
|
65
|
+
try {
|
|
66
|
+
return require(process.env.NAPI_RS_NATIVE_LIBRARY_PATH);
|
|
67
|
+
} catch (err) {
|
|
68
|
+
loadErrors.push(err)
|
|
69
|
+
}
|
|
70
|
+
} else if (process.platform === 'android') {
|
|
71
|
+
if (process.arch === 'arm64') {
|
|
72
|
+
try {
|
|
73
|
+
return require('./murk-secrets.android-arm64.node')
|
|
74
|
+
} catch (e) {
|
|
75
|
+
loadErrors.push(e)
|
|
76
|
+
}
|
|
77
|
+
try {
|
|
78
|
+
const binding = require('@interrupted/murk-secrets-android-arm64')
|
|
79
|
+
const bindingPackageVersion = require('@interrupted/murk-secrets-android-arm64/package.json').version
|
|
80
|
+
if (bindingPackageVersion !== '0.9.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
81
|
+
throw new Error(`Native binding package version mismatch, expected 0.9.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
82
|
+
}
|
|
83
|
+
return binding
|
|
84
|
+
} catch (e) {
|
|
85
|
+
loadErrors.push(e)
|
|
86
|
+
}
|
|
87
|
+
} else if (process.arch === 'arm') {
|
|
88
|
+
try {
|
|
89
|
+
return require('./murk-secrets.android-arm-eabi.node')
|
|
90
|
+
} catch (e) {
|
|
91
|
+
loadErrors.push(e)
|
|
92
|
+
}
|
|
93
|
+
try {
|
|
94
|
+
const binding = require('@interrupted/murk-secrets-android-arm-eabi')
|
|
95
|
+
const bindingPackageVersion = require('@interrupted/murk-secrets-android-arm-eabi/package.json').version
|
|
96
|
+
if (bindingPackageVersion !== '0.9.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
97
|
+
throw new Error(`Native binding package version mismatch, expected 0.9.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
98
|
+
}
|
|
99
|
+
return binding
|
|
100
|
+
} catch (e) {
|
|
101
|
+
loadErrors.push(e)
|
|
102
|
+
}
|
|
103
|
+
} else {
|
|
104
|
+
loadErrors.push(new Error(`Unsupported architecture on Android ${process.arch}`))
|
|
105
|
+
}
|
|
106
|
+
} else if (process.platform === 'win32') {
|
|
107
|
+
if (process.arch === 'x64') {
|
|
108
|
+
if (process.config?.variables?.shlib_suffix === 'dll.a' || process.config?.variables?.node_target_type === 'shared_library') {
|
|
109
|
+
try {
|
|
110
|
+
return require('./murk-secrets.win32-x64-gnu.node')
|
|
111
|
+
} catch (e) {
|
|
112
|
+
loadErrors.push(e)
|
|
113
|
+
}
|
|
114
|
+
try {
|
|
115
|
+
const binding = require('@interrupted/murk-secrets-win32-x64-gnu')
|
|
116
|
+
const bindingPackageVersion = require('@interrupted/murk-secrets-win32-x64-gnu/package.json').version
|
|
117
|
+
if (bindingPackageVersion !== '0.9.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
118
|
+
throw new Error(`Native binding package version mismatch, expected 0.9.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
119
|
+
}
|
|
120
|
+
return binding
|
|
121
|
+
} catch (e) {
|
|
122
|
+
loadErrors.push(e)
|
|
123
|
+
}
|
|
124
|
+
} else {
|
|
125
|
+
try {
|
|
126
|
+
return require('./murk-secrets.win32-x64-msvc.node')
|
|
127
|
+
} catch (e) {
|
|
128
|
+
loadErrors.push(e)
|
|
129
|
+
}
|
|
130
|
+
try {
|
|
131
|
+
const binding = require('@interrupted/murk-secrets-win32-x64-msvc')
|
|
132
|
+
const bindingPackageVersion = require('@interrupted/murk-secrets-win32-x64-msvc/package.json').version
|
|
133
|
+
if (bindingPackageVersion !== '0.9.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
134
|
+
throw new Error(`Native binding package version mismatch, expected 0.9.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
135
|
+
}
|
|
136
|
+
return binding
|
|
137
|
+
} catch (e) {
|
|
138
|
+
loadErrors.push(e)
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
} else if (process.arch === 'ia32') {
|
|
142
|
+
try {
|
|
143
|
+
return require('./murk-secrets.win32-ia32-msvc.node')
|
|
144
|
+
} catch (e) {
|
|
145
|
+
loadErrors.push(e)
|
|
146
|
+
}
|
|
147
|
+
try {
|
|
148
|
+
const binding = require('@interrupted/murk-secrets-win32-ia32-msvc')
|
|
149
|
+
const bindingPackageVersion = require('@interrupted/murk-secrets-win32-ia32-msvc/package.json').version
|
|
150
|
+
if (bindingPackageVersion !== '0.9.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
151
|
+
throw new Error(`Native binding package version mismatch, expected 0.9.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
152
|
+
}
|
|
153
|
+
return binding
|
|
154
|
+
} catch (e) {
|
|
155
|
+
loadErrors.push(e)
|
|
156
|
+
}
|
|
157
|
+
} else if (process.arch === 'arm64') {
|
|
158
|
+
try {
|
|
159
|
+
return require('./murk-secrets.win32-arm64-msvc.node')
|
|
160
|
+
} catch (e) {
|
|
161
|
+
loadErrors.push(e)
|
|
162
|
+
}
|
|
163
|
+
try {
|
|
164
|
+
const binding = require('@interrupted/murk-secrets-win32-arm64-msvc')
|
|
165
|
+
const bindingPackageVersion = require('@interrupted/murk-secrets-win32-arm64-msvc/package.json').version
|
|
166
|
+
if (bindingPackageVersion !== '0.9.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
167
|
+
throw new Error(`Native binding package version mismatch, expected 0.9.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
168
|
+
}
|
|
169
|
+
return binding
|
|
170
|
+
} catch (e) {
|
|
171
|
+
loadErrors.push(e)
|
|
172
|
+
}
|
|
173
|
+
} else {
|
|
174
|
+
loadErrors.push(new Error(`Unsupported architecture on Windows: ${process.arch}`))
|
|
175
|
+
}
|
|
176
|
+
} else if (process.platform === 'darwin') {
|
|
177
|
+
try {
|
|
178
|
+
return require('./murk-secrets.darwin-universal.node')
|
|
179
|
+
} catch (e) {
|
|
180
|
+
loadErrors.push(e)
|
|
181
|
+
}
|
|
182
|
+
try {
|
|
183
|
+
const binding = require('@interrupted/murk-secrets-darwin-universal')
|
|
184
|
+
const bindingPackageVersion = require('@interrupted/murk-secrets-darwin-universal/package.json').version
|
|
185
|
+
if (bindingPackageVersion !== '0.9.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
186
|
+
throw new Error(`Native binding package version mismatch, expected 0.9.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
187
|
+
}
|
|
188
|
+
return binding
|
|
189
|
+
} catch (e) {
|
|
190
|
+
loadErrors.push(e)
|
|
191
|
+
}
|
|
192
|
+
if (process.arch === 'x64') {
|
|
193
|
+
try {
|
|
194
|
+
return require('./murk-secrets.darwin-x64.node')
|
|
195
|
+
} catch (e) {
|
|
196
|
+
loadErrors.push(e)
|
|
197
|
+
}
|
|
198
|
+
try {
|
|
199
|
+
const binding = require('@interrupted/murk-secrets-darwin-x64')
|
|
200
|
+
const bindingPackageVersion = require('@interrupted/murk-secrets-darwin-x64/package.json').version
|
|
201
|
+
if (bindingPackageVersion !== '0.9.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
202
|
+
throw new Error(`Native binding package version mismatch, expected 0.9.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
203
|
+
}
|
|
204
|
+
return binding
|
|
205
|
+
} catch (e) {
|
|
206
|
+
loadErrors.push(e)
|
|
207
|
+
}
|
|
208
|
+
} else if (process.arch === 'arm64') {
|
|
209
|
+
try {
|
|
210
|
+
return require('./murk-secrets.darwin-arm64.node')
|
|
211
|
+
} catch (e) {
|
|
212
|
+
loadErrors.push(e)
|
|
213
|
+
}
|
|
214
|
+
try {
|
|
215
|
+
const binding = require('@interrupted/murk-secrets-darwin-arm64')
|
|
216
|
+
const bindingPackageVersion = require('@interrupted/murk-secrets-darwin-arm64/package.json').version
|
|
217
|
+
if (bindingPackageVersion !== '0.9.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
218
|
+
throw new Error(`Native binding package version mismatch, expected 0.9.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
219
|
+
}
|
|
220
|
+
return binding
|
|
221
|
+
} catch (e) {
|
|
222
|
+
loadErrors.push(e)
|
|
223
|
+
}
|
|
224
|
+
} else {
|
|
225
|
+
loadErrors.push(new Error(`Unsupported architecture on macOS: ${process.arch}`))
|
|
226
|
+
}
|
|
227
|
+
} else if (process.platform === 'freebsd') {
|
|
228
|
+
if (process.arch === 'x64') {
|
|
229
|
+
try {
|
|
230
|
+
return require('./murk-secrets.freebsd-x64.node')
|
|
231
|
+
} catch (e) {
|
|
232
|
+
loadErrors.push(e)
|
|
233
|
+
}
|
|
234
|
+
try {
|
|
235
|
+
const binding = require('@interrupted/murk-secrets-freebsd-x64')
|
|
236
|
+
const bindingPackageVersion = require('@interrupted/murk-secrets-freebsd-x64/package.json').version
|
|
237
|
+
if (bindingPackageVersion !== '0.9.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
238
|
+
throw new Error(`Native binding package version mismatch, expected 0.9.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
239
|
+
}
|
|
240
|
+
return binding
|
|
241
|
+
} catch (e) {
|
|
242
|
+
loadErrors.push(e)
|
|
243
|
+
}
|
|
244
|
+
} else if (process.arch === 'arm64') {
|
|
245
|
+
try {
|
|
246
|
+
return require('./murk-secrets.freebsd-arm64.node')
|
|
247
|
+
} catch (e) {
|
|
248
|
+
loadErrors.push(e)
|
|
249
|
+
}
|
|
250
|
+
try {
|
|
251
|
+
const binding = require('@interrupted/murk-secrets-freebsd-arm64')
|
|
252
|
+
const bindingPackageVersion = require('@interrupted/murk-secrets-freebsd-arm64/package.json').version
|
|
253
|
+
if (bindingPackageVersion !== '0.9.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
254
|
+
throw new Error(`Native binding package version mismatch, expected 0.9.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
255
|
+
}
|
|
256
|
+
return binding
|
|
257
|
+
} catch (e) {
|
|
258
|
+
loadErrors.push(e)
|
|
259
|
+
}
|
|
260
|
+
} else {
|
|
261
|
+
loadErrors.push(new Error(`Unsupported architecture on FreeBSD: ${process.arch}`))
|
|
262
|
+
}
|
|
263
|
+
} else if (process.platform === 'linux') {
|
|
264
|
+
if (process.arch === 'x64') {
|
|
265
|
+
if (isMusl()) {
|
|
266
|
+
try {
|
|
267
|
+
return require('./murk-secrets.linux-x64-musl.node')
|
|
268
|
+
} catch (e) {
|
|
269
|
+
loadErrors.push(e)
|
|
270
|
+
}
|
|
271
|
+
try {
|
|
272
|
+
const binding = require('@interrupted/murk-secrets-linux-x64-musl')
|
|
273
|
+
const bindingPackageVersion = require('@interrupted/murk-secrets-linux-x64-musl/package.json').version
|
|
274
|
+
if (bindingPackageVersion !== '0.9.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
275
|
+
throw new Error(`Native binding package version mismatch, expected 0.9.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
276
|
+
}
|
|
277
|
+
return binding
|
|
278
|
+
} catch (e) {
|
|
279
|
+
loadErrors.push(e)
|
|
280
|
+
}
|
|
281
|
+
} else {
|
|
282
|
+
try {
|
|
283
|
+
return require('./murk-secrets.linux-x64-gnu.node')
|
|
284
|
+
} catch (e) {
|
|
285
|
+
loadErrors.push(e)
|
|
286
|
+
}
|
|
287
|
+
try {
|
|
288
|
+
const binding = require('@interrupted/murk-secrets-linux-x64-gnu')
|
|
289
|
+
const bindingPackageVersion = require('@interrupted/murk-secrets-linux-x64-gnu/package.json').version
|
|
290
|
+
if (bindingPackageVersion !== '0.9.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
291
|
+
throw new Error(`Native binding package version mismatch, expected 0.9.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
292
|
+
}
|
|
293
|
+
return binding
|
|
294
|
+
} catch (e) {
|
|
295
|
+
loadErrors.push(e)
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
} else if (process.arch === 'arm64') {
|
|
299
|
+
if (isMusl()) {
|
|
300
|
+
try {
|
|
301
|
+
return require('./murk-secrets.linux-arm64-musl.node')
|
|
302
|
+
} catch (e) {
|
|
303
|
+
loadErrors.push(e)
|
|
304
|
+
}
|
|
305
|
+
try {
|
|
306
|
+
const binding = require('@interrupted/murk-secrets-linux-arm64-musl')
|
|
307
|
+
const bindingPackageVersion = require('@interrupted/murk-secrets-linux-arm64-musl/package.json').version
|
|
308
|
+
if (bindingPackageVersion !== '0.9.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
309
|
+
throw new Error(`Native binding package version mismatch, expected 0.9.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
310
|
+
}
|
|
311
|
+
return binding
|
|
312
|
+
} catch (e) {
|
|
313
|
+
loadErrors.push(e)
|
|
314
|
+
}
|
|
315
|
+
} else {
|
|
316
|
+
try {
|
|
317
|
+
return require('./murk-secrets.linux-arm64-gnu.node')
|
|
318
|
+
} catch (e) {
|
|
319
|
+
loadErrors.push(e)
|
|
320
|
+
}
|
|
321
|
+
try {
|
|
322
|
+
const binding = require('@interrupted/murk-secrets-linux-arm64-gnu')
|
|
323
|
+
const bindingPackageVersion = require('@interrupted/murk-secrets-linux-arm64-gnu/package.json').version
|
|
324
|
+
if (bindingPackageVersion !== '0.9.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
325
|
+
throw new Error(`Native binding package version mismatch, expected 0.9.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
326
|
+
}
|
|
327
|
+
return binding
|
|
328
|
+
} catch (e) {
|
|
329
|
+
loadErrors.push(e)
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
} else if (process.arch === 'arm') {
|
|
333
|
+
if (isMusl()) {
|
|
334
|
+
try {
|
|
335
|
+
return require('./murk-secrets.linux-arm-musleabihf.node')
|
|
336
|
+
} catch (e) {
|
|
337
|
+
loadErrors.push(e)
|
|
338
|
+
}
|
|
339
|
+
try {
|
|
340
|
+
const binding = require('@interrupted/murk-secrets-linux-arm-musleabihf')
|
|
341
|
+
const bindingPackageVersion = require('@interrupted/murk-secrets-linux-arm-musleabihf/package.json').version
|
|
342
|
+
if (bindingPackageVersion !== '0.9.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
343
|
+
throw new Error(`Native binding package version mismatch, expected 0.9.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
344
|
+
}
|
|
345
|
+
return binding
|
|
346
|
+
} catch (e) {
|
|
347
|
+
loadErrors.push(e)
|
|
348
|
+
}
|
|
349
|
+
} else {
|
|
350
|
+
try {
|
|
351
|
+
return require('./murk-secrets.linux-arm-gnueabihf.node')
|
|
352
|
+
} catch (e) {
|
|
353
|
+
loadErrors.push(e)
|
|
354
|
+
}
|
|
355
|
+
try {
|
|
356
|
+
const binding = require('@interrupted/murk-secrets-linux-arm-gnueabihf')
|
|
357
|
+
const bindingPackageVersion = require('@interrupted/murk-secrets-linux-arm-gnueabihf/package.json').version
|
|
358
|
+
if (bindingPackageVersion !== '0.9.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
359
|
+
throw new Error(`Native binding package version mismatch, expected 0.9.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
360
|
+
}
|
|
361
|
+
return binding
|
|
362
|
+
} catch (e) {
|
|
363
|
+
loadErrors.push(e)
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
} else if (process.arch === 'loong64') {
|
|
367
|
+
if (isMusl()) {
|
|
368
|
+
try {
|
|
369
|
+
return require('./murk-secrets.linux-loong64-musl.node')
|
|
370
|
+
} catch (e) {
|
|
371
|
+
loadErrors.push(e)
|
|
372
|
+
}
|
|
373
|
+
try {
|
|
374
|
+
const binding = require('@interrupted/murk-secrets-linux-loong64-musl')
|
|
375
|
+
const bindingPackageVersion = require('@interrupted/murk-secrets-linux-loong64-musl/package.json').version
|
|
376
|
+
if (bindingPackageVersion !== '0.9.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
377
|
+
throw new Error(`Native binding package version mismatch, expected 0.9.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
378
|
+
}
|
|
379
|
+
return binding
|
|
380
|
+
} catch (e) {
|
|
381
|
+
loadErrors.push(e)
|
|
382
|
+
}
|
|
383
|
+
} else {
|
|
384
|
+
try {
|
|
385
|
+
return require('./murk-secrets.linux-loong64-gnu.node')
|
|
386
|
+
} catch (e) {
|
|
387
|
+
loadErrors.push(e)
|
|
388
|
+
}
|
|
389
|
+
try {
|
|
390
|
+
const binding = require('@interrupted/murk-secrets-linux-loong64-gnu')
|
|
391
|
+
const bindingPackageVersion = require('@interrupted/murk-secrets-linux-loong64-gnu/package.json').version
|
|
392
|
+
if (bindingPackageVersion !== '0.9.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
393
|
+
throw new Error(`Native binding package version mismatch, expected 0.9.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
394
|
+
}
|
|
395
|
+
return binding
|
|
396
|
+
} catch (e) {
|
|
397
|
+
loadErrors.push(e)
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
} else if (process.arch === 'riscv64') {
|
|
401
|
+
if (isMusl()) {
|
|
402
|
+
try {
|
|
403
|
+
return require('./murk-secrets.linux-riscv64-musl.node')
|
|
404
|
+
} catch (e) {
|
|
405
|
+
loadErrors.push(e)
|
|
406
|
+
}
|
|
407
|
+
try {
|
|
408
|
+
const binding = require('@interrupted/murk-secrets-linux-riscv64-musl')
|
|
409
|
+
const bindingPackageVersion = require('@interrupted/murk-secrets-linux-riscv64-musl/package.json').version
|
|
410
|
+
if (bindingPackageVersion !== '0.9.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
411
|
+
throw new Error(`Native binding package version mismatch, expected 0.9.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
412
|
+
}
|
|
413
|
+
return binding
|
|
414
|
+
} catch (e) {
|
|
415
|
+
loadErrors.push(e)
|
|
416
|
+
}
|
|
417
|
+
} else {
|
|
418
|
+
try {
|
|
419
|
+
return require('./murk-secrets.linux-riscv64-gnu.node')
|
|
420
|
+
} catch (e) {
|
|
421
|
+
loadErrors.push(e)
|
|
422
|
+
}
|
|
423
|
+
try {
|
|
424
|
+
const binding = require('@interrupted/murk-secrets-linux-riscv64-gnu')
|
|
425
|
+
const bindingPackageVersion = require('@interrupted/murk-secrets-linux-riscv64-gnu/package.json').version
|
|
426
|
+
if (bindingPackageVersion !== '0.9.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
427
|
+
throw new Error(`Native binding package version mismatch, expected 0.9.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
428
|
+
}
|
|
429
|
+
return binding
|
|
430
|
+
} catch (e) {
|
|
431
|
+
loadErrors.push(e)
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
} else if (process.arch === 'ppc64') {
|
|
435
|
+
try {
|
|
436
|
+
return require('./murk-secrets.linux-ppc64-gnu.node')
|
|
437
|
+
} catch (e) {
|
|
438
|
+
loadErrors.push(e)
|
|
439
|
+
}
|
|
440
|
+
try {
|
|
441
|
+
const binding = require('@interrupted/murk-secrets-linux-ppc64-gnu')
|
|
442
|
+
const bindingPackageVersion = require('@interrupted/murk-secrets-linux-ppc64-gnu/package.json').version
|
|
443
|
+
if (bindingPackageVersion !== '0.9.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
444
|
+
throw new Error(`Native binding package version mismatch, expected 0.9.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
445
|
+
}
|
|
446
|
+
return binding
|
|
447
|
+
} catch (e) {
|
|
448
|
+
loadErrors.push(e)
|
|
449
|
+
}
|
|
450
|
+
} else if (process.arch === 's390x') {
|
|
451
|
+
try {
|
|
452
|
+
return require('./murk-secrets.linux-s390x-gnu.node')
|
|
453
|
+
} catch (e) {
|
|
454
|
+
loadErrors.push(e)
|
|
455
|
+
}
|
|
456
|
+
try {
|
|
457
|
+
const binding = require('@interrupted/murk-secrets-linux-s390x-gnu')
|
|
458
|
+
const bindingPackageVersion = require('@interrupted/murk-secrets-linux-s390x-gnu/package.json').version
|
|
459
|
+
if (bindingPackageVersion !== '0.9.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
460
|
+
throw new Error(`Native binding package version mismatch, expected 0.9.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
461
|
+
}
|
|
462
|
+
return binding
|
|
463
|
+
} catch (e) {
|
|
464
|
+
loadErrors.push(e)
|
|
465
|
+
}
|
|
466
|
+
} else {
|
|
467
|
+
loadErrors.push(new Error(`Unsupported architecture on Linux: ${process.arch}`))
|
|
468
|
+
}
|
|
469
|
+
} else if (process.platform === 'openharmony') {
|
|
470
|
+
if (process.arch === 'arm64') {
|
|
471
|
+
try {
|
|
472
|
+
return require('./murk-secrets.openharmony-arm64.node')
|
|
473
|
+
} catch (e) {
|
|
474
|
+
loadErrors.push(e)
|
|
475
|
+
}
|
|
476
|
+
try {
|
|
477
|
+
const binding = require('@interrupted/murk-secrets-openharmony-arm64')
|
|
478
|
+
const bindingPackageVersion = require('@interrupted/murk-secrets-openharmony-arm64/package.json').version
|
|
479
|
+
if (bindingPackageVersion !== '0.9.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
480
|
+
throw new Error(`Native binding package version mismatch, expected 0.9.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
481
|
+
}
|
|
482
|
+
return binding
|
|
483
|
+
} catch (e) {
|
|
484
|
+
loadErrors.push(e)
|
|
485
|
+
}
|
|
486
|
+
} else if (process.arch === 'x64') {
|
|
487
|
+
try {
|
|
488
|
+
return require('./murk-secrets.openharmony-x64.node')
|
|
489
|
+
} catch (e) {
|
|
490
|
+
loadErrors.push(e)
|
|
491
|
+
}
|
|
492
|
+
try {
|
|
493
|
+
const binding = require('@interrupted/murk-secrets-openharmony-x64')
|
|
494
|
+
const bindingPackageVersion = require('@interrupted/murk-secrets-openharmony-x64/package.json').version
|
|
495
|
+
if (bindingPackageVersion !== '0.9.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
496
|
+
throw new Error(`Native binding package version mismatch, expected 0.9.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
497
|
+
}
|
|
498
|
+
return binding
|
|
499
|
+
} catch (e) {
|
|
500
|
+
loadErrors.push(e)
|
|
501
|
+
}
|
|
502
|
+
} else if (process.arch === 'arm') {
|
|
503
|
+
try {
|
|
504
|
+
return require('./murk-secrets.openharmony-arm.node')
|
|
505
|
+
} catch (e) {
|
|
506
|
+
loadErrors.push(e)
|
|
507
|
+
}
|
|
508
|
+
try {
|
|
509
|
+
const binding = require('@interrupted/murk-secrets-openharmony-arm')
|
|
510
|
+
const bindingPackageVersion = require('@interrupted/murk-secrets-openharmony-arm/package.json').version
|
|
511
|
+
if (bindingPackageVersion !== '0.9.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
512
|
+
throw new Error(`Native binding package version mismatch, expected 0.9.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
513
|
+
}
|
|
514
|
+
return binding
|
|
515
|
+
} catch (e) {
|
|
516
|
+
loadErrors.push(e)
|
|
517
|
+
}
|
|
518
|
+
} else {
|
|
519
|
+
loadErrors.push(new Error(`Unsupported architecture on OpenHarmony: ${process.arch}`))
|
|
520
|
+
}
|
|
521
|
+
} else {
|
|
522
|
+
loadErrors.push(new Error(`Unsupported OS: ${process.platform}, architecture: ${process.arch}`))
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
nativeBinding = requireNative()
|
|
527
|
+
|
|
528
|
+
if (!nativeBinding || process.env.NAPI_RS_FORCE_WASI) {
|
|
529
|
+
let wasiBinding = null
|
|
530
|
+
let wasiBindingError = null
|
|
531
|
+
try {
|
|
532
|
+
wasiBinding = require('./murk-secrets.wasi.cjs')
|
|
533
|
+
nativeBinding = wasiBinding
|
|
534
|
+
} catch (err) {
|
|
535
|
+
if (process.env.NAPI_RS_FORCE_WASI) {
|
|
536
|
+
wasiBindingError = err
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
if (!nativeBinding || process.env.NAPI_RS_FORCE_WASI) {
|
|
540
|
+
try {
|
|
541
|
+
wasiBinding = require('@interrupted/murk-secrets-wasm32-wasi')
|
|
542
|
+
nativeBinding = wasiBinding
|
|
543
|
+
} catch (err) {
|
|
544
|
+
if (process.env.NAPI_RS_FORCE_WASI) {
|
|
545
|
+
if (!wasiBindingError) {
|
|
546
|
+
wasiBindingError = err
|
|
547
|
+
} else {
|
|
548
|
+
wasiBindingError.cause = err
|
|
549
|
+
}
|
|
550
|
+
loadErrors.push(err)
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
if (process.env.NAPI_RS_FORCE_WASI === 'error' && !wasiBinding) {
|
|
555
|
+
const error = new Error('WASI binding not found and NAPI_RS_FORCE_WASI is set to error')
|
|
556
|
+
error.cause = wasiBindingError
|
|
557
|
+
throw error
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
if (!nativeBinding) {
|
|
562
|
+
if (loadErrors.length > 0) {
|
|
563
|
+
throw new Error(
|
|
564
|
+
`Cannot find native binding. ` +
|
|
565
|
+
`npm has a bug related to optional dependencies (https://github.com/npm/cli/issues/4828). ` +
|
|
566
|
+
'Please try `npm i` again after removing both package-lock.json and node_modules directory.',
|
|
567
|
+
{
|
|
568
|
+
cause: loadErrors.reduce((err, cur) => {
|
|
569
|
+
cur.cause = err
|
|
570
|
+
return cur
|
|
571
|
+
}),
|
|
572
|
+
},
|
|
573
|
+
)
|
|
574
|
+
}
|
|
575
|
+
throw new Error(`Failed to load native binding`)
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
module.exports = nativeBinding
|
|
579
|
+
module.exports.Vault = nativeBinding.Vault
|
|
580
|
+
module.exports.exportAll = nativeBinding.exportAll
|
|
581
|
+
module.exports.get = nativeBinding.get
|
|
582
|
+
module.exports.hasIdentity = nativeBinding.hasIdentity
|
|
583
|
+
module.exports.load = nativeBinding.load
|
package/package.json
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@interrupted/murk-secrets",
|
|
3
|
+
"version": "0.10.2",
|
|
4
|
+
"description": "Node.js/TypeScript bindings for murk — encrypted secrets manager",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"types": "index.d.ts",
|
|
7
|
+
"license": "MIT OR Apache-2.0",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "https://github.com/interrupted-inc/murk"
|
|
11
|
+
},
|
|
12
|
+
"keywords": [
|
|
13
|
+
"secrets",
|
|
14
|
+
"encryption",
|
|
15
|
+
"age",
|
|
16
|
+
"dotenv",
|
|
17
|
+
"security",
|
|
18
|
+
"murk"
|
|
19
|
+
],
|
|
20
|
+
"napi": {
|
|
21
|
+
"binaryName": "murk-secrets",
|
|
22
|
+
"targets": [
|
|
23
|
+
"x86_64-apple-darwin",
|
|
24
|
+
"aarch64-apple-darwin",
|
|
25
|
+
"x86_64-unknown-linux-gnu",
|
|
26
|
+
"x86_64-unknown-linux-musl",
|
|
27
|
+
"aarch64-unknown-linux-gnu",
|
|
28
|
+
"aarch64-unknown-linux-musl",
|
|
29
|
+
"x86_64-pc-windows-msvc"
|
|
30
|
+
]
|
|
31
|
+
},
|
|
32
|
+
"scripts": {
|
|
33
|
+
"artifacts": "napi artifacts",
|
|
34
|
+
"build": "napi build --platform --release",
|
|
35
|
+
"test": "node __test__/index.test.mjs",
|
|
36
|
+
"lint": "biome check",
|
|
37
|
+
"format": "biome check --write"
|
|
38
|
+
},
|
|
39
|
+
"devDependencies": {
|
|
40
|
+
"@biomejs/biome": "^2.4.9",
|
|
41
|
+
"@napi-rs/cli": "^3"
|
|
42
|
+
},
|
|
43
|
+
"engines": {
|
|
44
|
+
"node": ">= 16"
|
|
45
|
+
},
|
|
46
|
+
"files": [
|
|
47
|
+
"index.js",
|
|
48
|
+
"index.d.ts"
|
|
49
|
+
],
|
|
50
|
+
"optionalDependencies": {
|
|
51
|
+
"@interrupted/murk-secrets-darwin-x64": "0.10.2",
|
|
52
|
+
"@interrupted/murk-secrets-darwin-arm64": "0.10.2",
|
|
53
|
+
"@interrupted/murk-secrets-linux-x64-gnu": "0.10.2",
|
|
54
|
+
"@interrupted/murk-secrets-linux-x64-musl": "0.10.2",
|
|
55
|
+
"@interrupted/murk-secrets-linux-arm64-gnu": "0.10.2",
|
|
56
|
+
"@interrupted/murk-secrets-linux-arm64-musl": "0.10.2",
|
|
57
|
+
"@interrupted/murk-secrets-win32-x64-msvc": "0.10.2"
|
|
58
|
+
}
|
|
59
|
+
}
|