@ciqol/resenv 0.1.0-beta.1 → 0.1.0-beta.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/CONTRIBUTING.md +33 -13
- package/README.md +34 -20
- package/SECURITY.md +20 -20
- package/bin/resenv.cjs +21 -23
- package/docs/build.md +14 -15
- package/docs/dependencies.md +57 -501
- package/docs/doppler.md +69 -60
- package/docs/maintainer-handoff.md +29 -102
- package/docs/release-security.md +67 -131
- package/docs/releasing.md +32 -21
- package/doppler/auth.cjs +4 -110
- package/doppler/http.cjs +3 -8
- package/doppler/system.cjs +26 -75
- package/package.json +1 -1
- package/types/src/doppler/auth.d.ts +2 -17
- package/types/src/doppler/http.d.ts +1 -3
- package/types/src/doppler/system.d.ts +3 -8
- package/docs/maturity.md +0 -61
- package/docs/public-readiness.md +0 -138
- package/docs/security-performance-review.md +0 -150
- package/docs/validation.md +0 -700
package/docs/dependencies.md
CHANGED
|
@@ -1,505 +1,61 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Dependencies
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
resenv has no runtime npm dependencies. Build, test and release tools are
|
|
4
|
+
development-only and excluded from the consumer archive. Exact versions live
|
|
5
|
+
in the [source manifest](https://github.com/ciqol/resenv/blob/beta/package.json);
|
|
6
|
+
the lockfile pins their resolved artifacts.
|
|
4
7
|
|
|
5
|
-
|
|
6
|
-
The release-tool review and expiring advisory policy are in [release security](release-security.md).
|
|
7
|
-
Earlier dated entries below remain historical evidence and are superseded where
|
|
8
|
-
the current release guide describes a different state.
|
|
8
|
+
## Tool choices
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
Entries record decisions at the stated dates. Older version plans and install
|
|
12
|
-
policies are historical; the release guide and CONTRIBUTING describe the current
|
|
13
|
-
workflow. Release-tool intake below is not dependency admission.
|
|
14
|
-
|
|
15
|
-
## Semantic-release intake, not installed - 2026-10-08
|
|
16
|
-
|
|
17
|
-
The user selected semantic-release for beta releases. The existing toolchain
|
|
18
|
-
has no commit-derived release engine; adding one is justified for versions,
|
|
19
|
-
release notes and branch/channel handling. Release-please was considered for
|
|
20
|
-
0.x support, and a custom engine was rejected as unnecessary maintenance.
|
|
21
|
-
Semantic-release's normal initial line is 1.0.0-beta.1 / 1.0.0. The checked-in
|
|
22
|
-
configuration is a preview draft; no release dependencies or workflow are enabled.
|
|
23
|
-
|
|
24
|
-
Registry intake inspected these exact published artifacts:
|
|
25
|
-
|
|
26
|
-
| Package | Version | Release date | Downloads in the last month | Maintainers |
|
|
27
|
-
| --- | --- | --- | --- | --- |
|
|
28
|
-
| semantic-release | 25.0.9 | 2026-08-05 | 12,515,497 | 3 |
|
|
29
|
-
| @semantic-release/commit-analyzer | 13.0.1 | 2025-01-03 | 12,542,138 | 3 |
|
|
30
|
-
| @semantic-release/release-notes-generator | 14.1.1 | 2026-05-08 | 12,802,125 | 3 |
|
|
31
|
-
|
|
32
|
-
All three artifacts include MIT license text, match their canonical source
|
|
33
|
-
repositories in the [semantic-release organization](https://github.com/semantic-release),
|
|
34
|
-
contain no install lifecycle scripts, and expose registry integrity, signatures
|
|
35
|
-
and provenance attestations. The release engine requires Node ^22.14.0 or
|
|
36
|
-
>=24.10.0; the repository's Node 24.19.0 qualifies. The initial lock-only review
|
|
37
|
-
stopped at audit; the isolated follow-up verification is recorded below.
|
|
38
|
-
MFA and historical ownership continuity were not independently verified.
|
|
39
|
-
The analyzer is an older stable component still required by the current engine;
|
|
40
|
-
that alone does not establish its continued maintenance or security.
|
|
41
|
-
|
|
42
|
-
A separate temporary lock-only project resolved 447 package entries, with no
|
|
43
|
-
`hasInstallScript` entries. Its audit reported 10 high and two moderate findings,
|
|
44
|
-
including propagated parent-package findings. The tree also needs complete
|
|
45
|
-
license review; one bundled qrcode-terminal entry lacks license metadata.
|
|
46
|
-
No install scripts or release tooling code were executed during the initial
|
|
47
|
-
lock-only intake.
|
|
48
|
-
|
|
49
|
-
The blocking dependency is `braces@3.0.3`, through `micromatch`, with the
|
|
50
|
-
[high-severity stack-exhaustion advisory](https://github.com/advisories/GHSA-vfj7-8cjw-p6xm).
|
|
51
|
-
The registry's latest braces release is 3.0.3 and the advisory lists no patched
|
|
52
|
-
version. Other findings include brace-expansion, http-cache-semantics, undici,
|
|
53
|
-
ip-address and postcss-selector-parser. They do not remove the braces blocker.
|
|
54
|
-
A normal install of this set would fail the repository's required high-severity
|
|
55
|
-
audit. No audit exception, blanket override, unsupported downgrade or lockfile
|
|
56
|
-
change was applied.
|
|
57
|
-
|
|
58
|
-
### Follow-up verification for the requested beta
|
|
59
|
-
|
|
60
|
-
The user authorized a beta release on October 8. The tooling was installed only
|
|
61
|
-
in a temporary intake directory, using the inspected lockfile and normal npm
|
|
62
|
-
lifecycle behavior. No install lifecycle hooks were found in the installed tree.
|
|
63
|
-
`npm audit signatures` verified 447 registry signatures and 121 attestations.
|
|
64
|
-
The bundled qrcode-terminal artifact, whose metadata omitted a license, includes
|
|
65
|
-
Apache-2.0 license text. Complete transitive license review and dependency
|
|
66
|
-
admission remain unfinished; these checks do not approve the vulnerable tree.
|
|
67
|
-
|
|
68
|
-
A separate temporary clone of the repository history used a local bare Git
|
|
69
|
-
remote, `dryRun: true`, no publishing plugins, and an environment without
|
|
70
|
-
registry or GitHub credentials. The real semantic-release engine and commit
|
|
71
|
-
analyzer calculated `1.0.0-beta.1`, channel `beta`, from the 22 commits through
|
|
72
|
-
`a461ce49903d620ced4c18ce1a90157b46591fc6`. The release-notes generator was then
|
|
73
|
-
called separately with the canonical repository URL. No tag was created, even
|
|
74
|
-
in the temporary remote. This verifies version calculation, not hosted release
|
|
75
|
-
authentication, stable promotion, or publication.
|
|
76
|
-
|
|
77
|
-
The braces advisory affects recursive parsing of deeply nested **patterns**.
|
|
78
|
-
In the inspected upstream branch expansion, the pattern is `branch.name` from
|
|
79
|
-
release configuration; remote branch names are subjects. In commit analysis,
|
|
80
|
-
patterns come from release rules, while commit fields are subjects. The current
|
|
81
|
-
draft uses fixed literal branch names and the analyzer's default rules. This
|
|
82
|
-
suggests narrower exposure than accepting arbitrary user-supplied patterns,
|
|
83
|
-
but it is not a complete reachability audit of the transitive tree. Other
|
|
84
|
-
advisories remain as well. No exception has been approved or applied, and the
|
|
85
|
-
repository's required high-severity audit is unchanged. The beta prerelease of
|
|
86
|
-
semantic-release also retains micromatch, so switching to it does not remove
|
|
87
|
-
this blocker.
|
|
88
|
-
|
|
89
|
-
Sources: [branch expansion](https://github.com/semantic-release/semantic-release/blob/v25.0.9/lib/branches/expand.js),
|
|
90
|
-
[commit matching](https://github.com/semantic-release/commit-analyzer/blob/v13.0.1/lib/analyze-commit.js),
|
|
91
|
-
[default rules](https://github.com/semantic-release/commit-analyzer/blob/v13.0.1/lib/default-release-rules.js).
|
|
92
|
-
|
|
93
|
-
After an acceptable upstream fix or an explicitly reviewed alternative,
|
|
94
|
-
re-run intake and pin exact direct versions plus the lockfile. Keep these tools
|
|
95
|
-
in development dependencies, preserve the five-package runtime closure, and
|
|
96
|
-
verify registry signatures/provenance, licenses, install hooks, audits and a
|
|
97
|
-
real dry run before enabling them. CODEOWNERS remains responsible for review;
|
|
98
|
-
Dependabot can maintain admitted versions. Removing the release configuration
|
|
99
|
-
and dev tooling would restore the existing manual candidate checks if the tool
|
|
100
|
-
must later be replaced. The requested beta publication is authorized, but still
|
|
101
|
-
needs dependency admission and registry setup. The project license was selected
|
|
102
|
-
as MIT on October 8, 2026, with copyright held by ciqol contributors.
|
|
103
|
-
|
|
104
|
-
### Reference comparison and audit refresh - 2026-10-08
|
|
105
|
-
|
|
106
|
-
The reference `ciqol/sonarqube-api-client` uses the same semantic-release engine
|
|
107
|
-
and analyzer family, plus npm and GitHub plugins. Reusing its configuration
|
|
108
|
-
does not establish admission of that tree. A fresh registry audit of the existing
|
|
109
|
-
isolated intake lockfile still reported 10 high and two moderate findings,
|
|
110
|
-
including `braces@3.0.3` through micromatch. No release dependency was added,
|
|
111
|
-
no dependency version changed and the audit gate remains enforced. The selected
|
|
112
|
-
normal release branch is now `beta`, with npm channel `beta`; this branch change
|
|
113
|
-
does not change the dependency findings. See [the reference comparison](releasing.md#reference-sonarqube-api-client).
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
## Installation policy - 2026-10-07
|
|
117
|
-
|
|
118
|
-
At the user's request, standard setup, CI and clean-consumer checks use normal
|
|
119
|
-
npm lifecycle behavior. The root `.npmrc` no longer disables scripts, and pack
|
|
120
|
-
commands do not suppress lifecycle hooks. No dependency version or integrity
|
|
121
|
-
entry changed as part of this policy update.
|
|
122
|
-
|
|
123
|
-
The installed Node 24/macOS tree was inspected for `preinstall`, `install` and
|
|
124
|
-
`postinstall` scripts and implicit `binding.gyp` builds; none were present. The
|
|
125
|
-
lockfile marks optional `fsevents@2.3.3` with `hasInstallScript`, but its installed
|
|
126
|
-
artifact declares no such script and contains no `binding.gyp`. Platform-specific
|
|
127
|
-
behavior still requires the hosted Linux/macOS clean-install checks. A fresh
|
|
128
|
-
local install on npm 11.17.0 completed and warned that the lockfile's optional
|
|
129
|
-
fsevents entry is not covered by an `allowScripts` decision; no approval or
|
|
130
|
-
blanket script override was added.
|
|
131
|
-
|
|
132
|
-
Review scripts and native setup whenever dependencies change. A lockfile pins
|
|
133
|
-
dependency bytes but does not make executing their code safe. Explicit build,
|
|
134
|
-
advisory, signature and package checks remain part of validation. Older entries
|
|
135
|
-
below describe the installation policy used at the time of those reviews.
|
|
136
|
-
|
|
137
|
-
## Vitest unit runner - 2026-10-07
|
|
138
|
-
|
|
139
|
-
The user requested Vitest with unit specs beside each source module. Added
|
|
140
|
-
`vitest` and `@vitest/coverage-v8`, both exactly 4.1.11, as development-only
|
|
141
|
-
dependencies. Both distributed licenses are MIT; the runner's bundled notices
|
|
142
|
-
also cover BSD-3-Clause and ISC code. The isolated tree contains MIT, ISC,
|
|
143
|
-
BSD-3-Clause, Apache-2.0 and MPL-2.0 packages. MPL applies to unmodified
|
|
144
|
-
Lightning CSS development binaries; none of this tooling is redistributed
|
|
145
|
-
in resenv's archive. Existing runtime dependencies are unchanged.
|
|
146
|
-
|
|
147
|
-
- **Need and fit:** Node's test runner remains suitable for process tests but
|
|
148
|
-
cannot run the requested TypeScript specs and Vitest mocks directly. Keeping
|
|
149
|
-
Node alone or using Jest were alternatives; Vitest matches the requested
|
|
150
|
-
workflow without adding a second TypeScript transform configuration.
|
|
151
|
-
Version 4.1.11 retains Node 20 support, while Vitest 5 requires Node 22.12+.
|
|
152
|
-
The resolved Vite 8.3.3 requires Node 20.19+ or 22.12+, covered by the actual
|
|
153
|
-
test matrix and Node 24 development runtime.
|
|
154
|
-
- **Health:** npm reported 454,419,379 Vitest downloads and 167,168,819 coverage
|
|
155
|
-
provider downloads for September 5 through October 4, 2026. Vitest has five
|
|
156
|
-
registry maintainers. Public repository metadata showed 17,188 stars,
|
|
157
|
-
357 open issues/PRs and a push on October 6. Version 4.1.11 was released on
|
|
158
|
-
August 18; Vitest 5.0.3 was released September 30. Published security reports
|
|
159
|
-
have patched-version ranges; 4.1.11 fixes the redirect-mock advisory
|
|
160
|
-
GHSA-82fw-gwwq-j7x9. Browser/UI packages are not installed or enabled.
|
|
161
|
-
- **Provenance:** package metadata points to the canonical vitest-dev/vitest
|
|
162
|
-
source, and both artifacts declare provenance attestations. The isolated
|
|
163
|
-
installation verified 64 registry signatures and 31 attestations. npm
|
|
164
|
-
integrity pins authenticate archive bytes; account MFA and complete ownership
|
|
165
|
-
history are not exposed by this review.
|
|
166
|
-
- **Security and capabilities:** the isolated tree reported zero known
|
|
167
|
-
vulnerabilities. Installation disables scripts, including the optional
|
|
168
|
-
fsevents hook. Tests execute local code with filesystem/process permissions;
|
|
169
|
-
no real credentials are supplied. The runner uses Node mode with API and
|
|
170
|
-
browser servers disabled. Native transform binaries are development tooling.
|
|
171
|
-
The lock contains 88 dependency entries including platform-specific packages;
|
|
172
|
-
64 were installed on this machine. This is a larger development tree than
|
|
173
|
-
the previous Node-only runner and is accepted for the requested testing setup.
|
|
174
|
-
- **Control:** the maintainer's request authorizes this addition. Exact direct
|
|
175
|
-
versions and lockfile integrity pin the tree. ciqol maintainers own updates
|
|
176
|
-
through the existing dependency review process and advisory checks. Removal
|
|
177
|
-
means returning unit specs to Node's runner with an explicit TypeScript
|
|
178
|
-
compilation step. Clean-consumer checks ensure this tooling is not shipped.
|
|
179
|
-
|
|
180
|
-
Sources: [Vitest 4 requirements](https://v4.vitest.dev/guide/),
|
|
181
|
-
[registry metadata](https://www.npmjs.com/package/vitest/v/4.1.11),
|
|
182
|
-
[coverage provider](https://www.npmjs.com/package/@vitest/coverage-v8/v/4.1.11),
|
|
183
|
-
and [redirect-mock fix](https://github.com/vitest-dev/vitest/security/advisories/GHSA-82fw-gwwq-j7x9).
|
|
184
|
-
|
|
185
|
-
## TypeScript implementation build - 2026-10-06
|
|
186
|
-
|
|
187
|
-
The requested migration needs compiler integration and Node API declarations.
|
|
188
|
-
These additions are development dependencies only:
|
|
189
|
-
|
|
190
|
-
| Package | Version | Distributed license | Purpose |
|
|
191
|
-
| --- | --- | --- | --- |
|
|
192
|
-
| @rollup/plugin-typescript | 12.3.0 | MIT | Compile TypeScript and emit declarations through Rollup |
|
|
193
|
-
| @types/node | 24.19.1 | MIT | Type-check Node APIs against the development runtime |
|
|
194
|
-
| tslib | 2.8.1 | 0BSD | Required peer of the TypeScript plugin |
|
|
195
|
-
|
|
196
|
-
- **Need and alternatives:** the existing compiler can emit JavaScript before
|
|
197
|
-
Rollup, but the requested library-build standard uses Rollup's maintained
|
|
198
|
-
TypeScript plugin. This avoids a custom transpilation plugin. Handwritten
|
|
199
|
-
Node declarations would be incomplete. A declaration bundler was considered;
|
|
200
|
-
generated declaration files with format-specific entry facades need no extra
|
|
201
|
-
bundler. `rollup-plugin-dts` was inspected but is not installed.
|
|
202
|
-
- **Fit:** the plugin supports Rollup 4 and TypeScript >=3.7; all tools fit the
|
|
203
|
-
Node 24 development environment. Production remains Node >=20 and is tested
|
|
204
|
-
separately. The compiler target uses native language features, so tslib must
|
|
205
|
-
not be imported by or bundled into the distributable. Package checks enforce
|
|
206
|
-
that build dependencies stay outside the consumer tree.
|
|
207
|
-
- **Usage and health:** npm reported 13,833,923 plugin downloads, 1,776,524,012
|
|
208
|
-
tslib downloads and 1,843,836,518 Node-types downloads for September 5 through
|
|
209
|
-
October 4, 2026. Releases are dated 2025-10-23, 2024-10-31 and 2026-10-01.
|
|
210
|
-
The plugin has four registry maintainers, tslib eight, and Node types use
|
|
211
|
-
DefinitelyTyped's shared publisher. Their source projects have active issue
|
|
212
|
-
and contribution histories. The older tslib release is accepted as a stable
|
|
213
|
-
compiler helper peer; the chosen target requires no emitted helper imports.
|
|
214
|
-
- **Provenance:** all three archives matched npm SHA-512 metadata. The official
|
|
215
|
-
plugin release points to `973054d`; tslib metadata identifies source commit
|
|
216
|
-
`d72d6f70b36286bc3f94a3dda1e64dcb568b1370`. Node types identify the canonical
|
|
217
|
-
DefinitelyTyped source directory. The isolated tree verified 19 registry
|
|
218
|
-
signatures and four attestations. These checks authenticate registry
|
|
219
|
-
artifacts; they do not establish reproducible builds for every addition.
|
|
220
|
-
Public metadata does not establish account MFA or complete transfer history.
|
|
221
|
-
- **Licenses and capabilities:** licenses were read from the downloaded
|
|
222
|
-
archives. The plugin runs compiler code with local build permissions; Node
|
|
223
|
-
types are declarations. Neither needs provider credentials. Installation
|
|
224
|
-
disables lifecycle scripts. No new component is vendored into runtime output.
|
|
225
|
-
The isolated tree's audit found zero known vulnerabilities; advisory checks
|
|
226
|
-
are not an independent code audit.
|
|
227
|
-
- **Weight and control:** the isolated tree has 19 installed packages including
|
|
228
|
-
the already-reviewed compiler and Rollup. Direct unpacked sizes are about
|
|
229
|
-
160 KB, 2.61 MB and 90 KB respectively. Exact versions and lockfile integrity
|
|
230
|
-
fix the tree. ciqol maintainers own updates through the existing dependency
|
|
231
|
-
review process. Removal means returning to compiler emit before Rollup while
|
|
232
|
-
retaining strict implementation and packed-consumer checks.
|
|
233
|
-
|
|
234
|
-
Sources: [Rollup plugin and requirements](https://github.com/rollup/plugins/tree/master/packages/typescript),
|
|
235
|
-
[plugin release](https://github.com/rollup/plugins/releases/tag/typescript-v12.3.0),
|
|
236
|
-
[tslib release](https://github.com/microsoft/tslib/releases/tag/v2.8.1),
|
|
237
|
-
[Node types source](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node).
|
|
238
|
-
|
|
239
|
-
## Lint enforcement - 2026-10-06
|
|
240
|
-
|
|
241
|
-
Selected for the requested TypeScript standards review. These are development
|
|
242
|
-
tools; neither is included in the generated package or loaded at runtime.
|
|
243
|
-
|
|
244
|
-
| Package | Pinned version | Distributed license | Purpose |
|
|
245
|
-
| --- | --- | --- | --- |
|
|
246
|
-
| eslint | 10.12.0 | MIT | Enforce JavaScript correctness and local style rules |
|
|
247
|
-
| typescript-eslint | 8.71.1 | MIT | Parse declarations and enforce public TypeScript contracts |
|
|
248
|
-
|
|
249
|
-
- **Need:** prose alone did not enforce declaration consistency or catch empty
|
|
250
|
-
error handlers. Node's compiler does not enforce those style rules.
|
|
251
|
-
- **Alternatives and fit:** a checker built on the existing TypeScript parser
|
|
252
|
-
would avoid dependencies but require maintaining our own lint rules. ESLint
|
|
253
|
-
directly supports the standards' established rules. Other lint engines would
|
|
254
|
-
require a separate rule mapping. The development toolchain uses Node 24;
|
|
255
|
-
ESLint also supports the tested Node 20.20.2 and 22 versions. The TypeScript
|
|
256
|
-
integration supports the existing TypeScript 6.0.3 compiler. Runtime support
|
|
257
|
-
and dependencies do not change.
|
|
258
|
-
- **Usage and maintenance:** npm reported 672,661,327 ESLint downloads and
|
|
259
|
-
374,467,603 typescript-eslint downloads for September 5 through October 4,
|
|
260
|
-
2026. The releases were published October 2 and October 5 respectively.
|
|
261
|
-
Registry maintainers are `openjsfoundation` / `eslintbot` and `jameshenry` /
|
|
262
|
-
`bradzacher`; both projects have public teams and active release histories.
|
|
263
|
-
At review their issue trackers showed 97 and 174 open issues. Their advisory
|
|
264
|
-
pages listed no published advisories. These signals do not establish safety.
|
|
265
|
-
- **Provenance:** both downloaded archives matched npm's SHA-512 metadata.
|
|
266
|
-
All 411 distributed ESLint JavaScript/license files matched source commit
|
|
267
|
-
`a438ec39512c3381f4785a1f3058982ce9845970`. ESLint supplied registry signatures
|
|
268
|
-
but no provenance attestation for this version. typescript-eslint supplied
|
|
269
|
-
provenance; the isolated tree verified all 95 signatures and 30 attestations.
|
|
270
|
-
Account MFA and a complete ownership-transfer history are not publicly
|
|
271
|
-
established by these checks and are not claimed as verified.
|
|
272
|
-
- **License:** the two distributed LICENSE files are MIT. The isolated tree
|
|
273
|
-
contains MIT, Apache-2.0, BSD-2-Clause, BSD-3-Clause, ISC and BlueOak-1.0.0;
|
|
274
|
-
no license field was missing. The Blue Oak notice requirement was reviewed.
|
|
275
|
-
These tools and their notices stay in the development installation, outside
|
|
276
|
-
the runtime archive. Reassess obligations if vendoring or redistribution changes.
|
|
277
|
-
- **Security and weight:** the isolated review installed 95 packages, including
|
|
278
|
-
the already-used TypeScript compiler. No install lifecycle scripts were
|
|
279
|
-
declared and installation disabled scripts. `npm audit` reported zero known
|
|
280
|
-
vulnerabilities. ESLint is about 2.95 MB unpacked; the TypeScript wrapper is
|
|
281
|
-
about 43 KB before its parser/plugin dependencies. Lint runs local JavaScript
|
|
282
|
-
configuration with the developer/CI account's filesystem permissions; it has
|
|
283
|
-
no provider credentials or publishing grant in CI. No telemetry operation was
|
|
284
|
-
observed in the reviewed setup; this is not a full transitive-code audit.
|
|
285
|
-
- **Control and exit:** exact direct versions and lockfile integrity pin the
|
|
286
|
-
tree. ciqol maintainers review the existing weekly Dependabot updates. Remove
|
|
287
|
-
these tools, the lint configuration and CI step together if replacing them;
|
|
288
|
-
public declaration and installed-package tests must remain.
|
|
289
|
-
|
|
290
|
-
Sources: [ESLint release](https://eslint.org/blog/2026/10/eslint-v10.12.0-released/),
|
|
291
|
-
[TypeScript integration support](https://typescript-eslint.io/users/dependency-versions/),
|
|
292
|
-
[ESLint source](https://github.com/eslint/eslint/tree/a438ec39512c3381f4785a1f3058982ce9845970),
|
|
293
|
-
[TypeScript lint source](https://github.com/typescript-eslint/typescript-eslint),
|
|
294
|
-
[ESLint advisories](https://github.com/eslint/eslint/security/advisories),
|
|
295
|
-
[TypeScript lint advisories](https://github.com/typescript-eslint/typescript-eslint/security/advisories),
|
|
296
|
-
[npm ESLint metadata](https://registry.npmjs.org/eslint/10.12.0),
|
|
297
|
-
[npm TypeScript lint metadata](https://registry.npmjs.org/typescript-eslint/8.71.1).
|
|
298
|
-
|
|
299
|
-
## First public release preparation - 2026-10-06
|
|
300
|
-
|
|
301
|
-
The planned first public version is `0.1.0`; earlier versions identify private
|
|
302
|
-
prototypes. npm dependency versions are unchanged. `npm audit` found no known
|
|
303
|
-
advisories in the installed tree; `npm audit signatures` verified ten registry
|
|
304
|
-
signatures and seven attestations. These results do not establish a security audit.
|
|
305
|
-
|
|
306
|
-
Two CI-only actions carry one built package between jobs:
|
|
307
|
-
|
|
308
|
-
| Action | Release | Pinned commit | License |
|
|
309
|
-
| --- | --- | --- | --- |
|
|
310
|
-
| actions/upload-artifact | v7.0.1 | `043fb46d1a93c77aae656e7c1c64a875d1fc6a0a` | MIT |
|
|
311
|
-
| actions/download-artifact | v8.0.1 | `3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c` | MIT |
|
|
312
|
-
|
|
313
|
-
- **Need and alternatives:** the compatibility jobs must test the same archive.
|
|
314
|
-
Rebuilding per job would not prove that contract. GitHub's own artifact actions
|
|
315
|
-
avoid custom authenticated upload/download code.
|
|
316
|
-
- **Source and maintenance:** the official release pages resolve to the pinned,
|
|
317
|
-
GitHub-signed commits. Both releases are from 2026, maintained by GitHub, and
|
|
318
|
-
already used in the reference client. At review the repositories showed about
|
|
319
|
-
1,100 and 734 forks respectively; these are adoption signals only.
|
|
320
|
-
- **License and execution:** the tagged LICENSE files are MIT; action metadata
|
|
321
|
-
runs bundled JavaScript on Node 24. No action code is shipped in resenv.
|
|
322
|
-
A reproducible build of those bundles and account MFA were not verified.
|
|
323
|
-
- **Authority and limits:** upload receives only the package archive, excludes
|
|
324
|
-
hidden files and expires after seven days. Download selects that artifact
|
|
325
|
-
from the same run and fails on a digest mismatch. Jobs have read-only
|
|
326
|
-
repository permission, no provider credentials, and no OIDC publishing grant.
|
|
327
|
-
- **Advisories:** the upload advisory page lists none. Download's published
|
|
328
|
-
extraction advisory, GHSA-cxww-7g56-2vh6, affects versions >=4.0.0 and <4.1.3;
|
|
329
|
-
v8.0.1 is outside that range. Bundled dependency advisories were not separately
|
|
330
|
-
audited, so npm's clean result above does not cover these actions.
|
|
331
|
-
- **Control:** ciqol maintainers review pinned updates proposed by Dependabot.
|
|
332
|
-
Removing the actions requires replacing artifact transfer or returning to
|
|
333
|
-
independent per-job builds and narrowing the validation claim.
|
|
334
|
-
|
|
335
|
-
Sources: [upload release](https://github.com/actions/upload-artifact/releases/tag/v7.0.1),
|
|
336
|
-
[download release](https://github.com/actions/download-artifact/releases/tag/v8.0.1),
|
|
337
|
-
[upload license](https://github.com/actions/upload-artifact/blob/v7.0.1/LICENSE),
|
|
338
|
-
[download license](https://github.com/actions/download-artifact/blob/v8.0.1/LICENSE),
|
|
339
|
-
[upload inputs](https://github.com/actions/upload-artifact/blob/v7.0.1/action.yml),
|
|
340
|
-
[download inputs](https://github.com/actions/download-artifact/blob/v8.0.1/action.yml),
|
|
341
|
-
[upload advisories](https://github.com/actions/upload-artifact/security/advisories),
|
|
342
|
-
[download advisory](https://github.com/actions/download-artifact/security/advisories/GHSA-cxww-7g56-2vh6).
|
|
343
|
-
|
|
344
|
-
Version 0.6.0 renamed the package to `@ciqol/resenv` on 2026-10-04 without
|
|
345
|
-
changing dependency versions. Earlier review entries retain the original name.
|
|
346
|
-
|
|
347
|
-
## Doppler support — 2026-10-01
|
|
348
|
-
|
|
349
|
-
No npm dependency was added for Doppler. Node's built-in HTTPS `fetch`, child
|
|
350
|
-
process and buffer APIs provide the required operations. Adding the full MCP
|
|
351
|
-
server or SDK would add an unnecessary runtime surface for three authentication
|
|
352
|
-
operations and one public secret-read endpoint. The existing crypto/build
|
|
353
|
-
dependency versions remain unchanged.
|
|
354
|
-
|
|
355
|
-
The documented [Doppler MCP package](https://docs.doppler.com/docs/mcp) identified
|
|
356
|
-
`@dopplerhq/mcp-server` as the official npm package. Version 1.0.5 was downloaded
|
|
357
|
-
for read-only inspection without installation or script execution. The tarball
|
|
358
|
-
matched npm's SHA-512 integrity metadata. Its `dist/device-auth.js` describes
|
|
359
|
-
GET `/v3/auth/cli/generate/2` and POST `/v3/auth/cli/authorize`, including the
|
|
360
|
-
409 pending response. The separately inspected `@dopplerhq/node-sdk` 1.3.0
|
|
361
|
-
artifact also matched registry integrity and confirmed the public API's
|
|
362
|
-
computed-value response and token-revocation request shape. Neither package's
|
|
363
|
-
implementation is vendored or installed. Registry integrity establishes artifact
|
|
364
|
-
consistency; it is not an independent audit or provenance attestation.
|
|
365
|
-
|
|
366
|
-
envref implements these wire operations using the standard library. Browser
|
|
367
|
-
login is isolated because its protocol is not in Doppler's public API contract.
|
|
368
|
-
The live challenge endpoint accepted envref's own `v0.4.1` version on the review
|
|
369
|
-
date. No browser approval or user secret was used for this probe. Maintainers
|
|
370
|
-
must recheck the protocol if Doppler changes it; the supported CLI fallback and
|
|
371
|
-
explicit token mode are the exit paths.
|
|
372
|
-
|
|
373
|
-
Optional platform tools are macOS `/usr/bin/security` (shipped with the OS),
|
|
374
|
-
Linux `/usr/bin/secret-tool`, and the user's existing Doppler CLI. envref does
|
|
375
|
-
not download or install them. The local macOS manual and CLI help were checked
|
|
376
|
-
for stdin command input, keychain lookup and the documented credential lookup.
|
|
377
|
-
A unique dummy keychain item was written, read back and deleted successfully.
|
|
378
|
-
Linux Secret Service behavior is covered with process mocks, not a live Linux
|
|
379
|
-
keyring. Host administrators own these platform binaries and their updates.
|
|
380
|
-
Fallback executables use fixed system/Homebrew paths, arguments and a filtered
|
|
381
|
-
environment; no repository-provided command is evaluated.
|
|
382
|
-
|
|
383
|
-
The ciqol maintainers own this integration. It can be removed by deleting the
|
|
384
|
-
Doppler mode while retaining encryption and explicit command mode. See
|
|
385
|
-
[Doppler setup](doppler.md) for credential permissions, fallback behavior and
|
|
386
|
-
the remaining trust boundaries.
|
|
387
|
-
|
|
388
|
-
## Rollup build and declaration checks
|
|
389
|
-
|
|
390
|
-
Reviewed on 2026-09-29 for the user-requested `.mjs` source migration and dual
|
|
391
|
-
CommonJS/ESM package. These tools are development dependencies only and are
|
|
392
|
-
omitted from the generated package manifest.
|
|
393
|
-
|
|
394
|
-
| Package | Version | Distributed license | Purpose |
|
|
395
|
-
| --- | --- | --- | --- |
|
|
396
|
-
| rollup | 4.63.5 | MIT | Compile the JavaScript source and ESM facades |
|
|
397
|
-
| typescript | 6.0.3 | Apache-2.0 | Check CJS and ESM consumer declarations |
|
|
398
|
-
|
|
399
|
-
- **Need and alternatives:** Node cannot emit CommonJS from ESM source. Rollup
|
|
400
|
-
was explicitly requested and provides module parsing and output generation
|
|
401
|
-
without a custom source rewriter. esbuild or tsup could perform this build,
|
|
402
|
-
but add an alternate toolchain without a requirement. No TypeScript Rollup
|
|
403
|
-
plugin is needed for `.mjs` input. The TypeScript compiler checks the existing
|
|
404
|
-
public declaration contract; file-existence checks alone cannot validate
|
|
405
|
-
consumer type resolution.
|
|
406
|
-
- **Fit and weight:** Rollup supports Node >=18 and TypeScript supports Node
|
|
407
|
-
>=14.17; both cover envref's Node >=20 range. Rollup's registry artifact is
|
|
408
|
-
about 2.9 MB unpacked. TypeScript 6.0.3 is the JavaScript compiler with no
|
|
409
|
-
runtime dependencies; it avoids adopting the newer native compiler's
|
|
410
|
-
platform dependency tree for these small declaration checks. The isolated
|
|
411
|
-
macOS installation contains five packages. Its lockfile includes 30 package
|
|
412
|
-
entries, including optional platform variants. Rollup's tree adds
|
|
413
|
-
`@types/estree` 1.0.9, optional `fsevents` 2.3.3, native `@rollup/*` packages
|
|
414
|
-
pinned to 4.63.5, and optional `@napi-rs/lzma-linux-x64-gnu` 1.5.1. Their
|
|
415
|
-
package licenses are MIT. The upstream source explains the lzma dependency
|
|
416
|
-
as part of its native cross-compilation toolchain.
|
|
417
|
-
- **Usage and health:** npm reported 140,333,279 Rollup downloads and
|
|
418
|
-
330,811,370 TypeScript downloads for September 21-27, 2026. Rollup lists five
|
|
419
|
-
maintainers; TypeScript 6.0.3 lists six. Rollup 4.63.5 was published September
|
|
420
|
-
24; TypeScript 6.0.3 was published April 16. Both canonical repositories had
|
|
421
|
-
activity on the review date. GitHub reported 26,310/111,270 stars and
|
|
422
|
-
610/5,053 open issues plus pull requests, respectively. These counts are
|
|
423
|
-
maintenance signals, not a claim that every issue was reviewed.
|
|
424
|
-
- **Source and provenance:** Rollup's official release tag and npm `gitHead`
|
|
425
|
-
agree on `3722484c33c58b3ab0cbbfcca09b8f267d420329`; TypeScript's agree on
|
|
426
|
-
`050880ce59e30b356b686bd3144efe24f875ebc8`. Both tarball SHA-512 digests were
|
|
427
|
-
verified against registry metadata, and licenses were read from those
|
|
428
|
-
artifacts. `npm audit signatures` verified all five installed packages and
|
|
429
|
-
two provenance attestations. TypeScript does not publish a provenance
|
|
430
|
-
attestation for this version, and the source commit is unsigned. Its trust
|
|
431
|
-
evidence is the verified registry signature, Microsoft-controlled release
|
|
432
|
-
linking the npm distribution, and matching release/source metadata; a
|
|
433
|
-
reproducible compiler build was not performed. Registry MFA enforcement and
|
|
434
|
-
complete ownership histories are not publicly established by these checks.
|
|
435
|
-
- **Security and capabilities:** OSV reported no advisories for either exact
|
|
436
|
-
top-level version; npm audit reported none for the isolated dependency tree.
|
|
437
|
-
That review installed with scripts disabled. Setup and CI now use normal
|
|
438
|
-
npm lifecycle behavior; see the installation-policy update above. Rollup
|
|
439
|
-
loads native parser code and reads/writes
|
|
440
|
-
build files; TypeScript reads consumer fixtures and declarations. Neither
|
|
441
|
-
receives application credentials in CI. Configuration files are executable
|
|
442
|
-
build code and must be reviewed. These checks are not a security audit.
|
|
443
|
-
- **Control and exit:** the user requested Rollup; the ciqol maintainers own
|
|
444
|
-
subsequent updates. Exact direct versions and the committed lockfile fix the
|
|
445
|
-
tree. Updates require license, advisory, provenance and consumer checks.
|
|
446
|
-
No dependency updater or publication is enabled. A replacement bundler only
|
|
447
|
-
needs to preserve the tested package exports, shared implementation and
|
|
448
|
-
declaration contract; TypeScript can be replaced by a reviewed compiler
|
|
449
|
-
release independently of the runtime.
|
|
450
|
-
|
|
451
|
-
Evidence: [Rollup release](https://github.com/rollup/rollup/releases/tag/v4.63.5),
|
|
452
|
-
[Rollup package source](https://github.com/rollup/rollup/blob/v4.63.5/package.json),
|
|
453
|
-
[TypeScript release](https://github.com/microsoft/TypeScript/releases/tag/v6.0.3),
|
|
454
|
-
[Rollup registry metadata](https://registry.npmjs.org/rollup/4.63.5), and
|
|
455
|
-
[TypeScript registry metadata](https://registry.npmjs.org/typescript/6.0.3).
|
|
456
|
-
|
|
457
|
-
Reviewed on 2026-09-28 for the private, unpublished envref prototype.
|
|
458
|
-
|
|
459
|
-
## Runtime dependencies
|
|
460
|
-
|
|
461
|
-
As of October 12, 2026, resenv has no runtime npm dependencies. Removed
|
|
462
|
-
`eciesjs` 0.5.0 and its four transitive crypto packages with dotenvx decryption.
|
|
463
|
-
Doppler resolution uses Node's HTTPS fetch and built-in process/credential
|
|
464
|
-
helpers. The lockfile and clean-consumer check enforce the empty runtime tree.
|
|
465
|
-
|
|
466
|
-
## CI actions
|
|
467
|
-
|
|
468
|
-
Reviewed on 2026-09-29. These actions run only in the test workflow; they are
|
|
469
|
-
not distributed with the npm package.
|
|
470
|
-
|
|
471
|
-
| Action | Version and pinned commit | Purpose |
|
|
10
|
+
| Packages | Purpose | License |
|
|
472
11
|
| --- | --- | --- |
|
|
473
|
-
|
|
|
474
|
-
|
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
12
|
+
| `rollup`, `@rollup/plugin-typescript` | Compile TypeScript, preserve the module graph and generate declarations | MIT |
|
|
13
|
+
| `typescript` | Strict implementation, spec and consumer type checks | Apache-2.0 |
|
|
14
|
+
| `tslib` | Helpers used by the TypeScript build plugin | 0BSD |
|
|
15
|
+
| `@types/node` | Node platform types for the pinned development runtime | MIT |
|
|
16
|
+
| `eslint`, `typescript-eslint` | Lint source and tooling, including rules that use type information | MIT |
|
|
17
|
+
| `vitest`, `@vitest/coverage-v8` | Colocated unit tests and source coverage | MIT |
|
|
18
|
+
| `@semantic-release/commit-analyzer`, `@semantic-release/release-notes-generator` | Official Conventional Commit classification and release notes | MIT |
|
|
19
|
+
|
|
20
|
+
The [Doppler CLI](doppler.md) is a separately installed authentication helper,
|
|
21
|
+
owned and updated by the user. resenv does not download or vendor it. Supplying
|
|
22
|
+
`DOPPLER_TOKEN` avoids the CLI dependency.
|
|
23
|
+
|
|
24
|
+
## Installation policy
|
|
25
|
+
|
|
26
|
+
Use the Node version in `.nvmrc`, `npm ci` and normal npm lifecycle behavior.
|
|
27
|
+
Do not disable scripts globally. Review published install hooks and implicit
|
|
28
|
+
native builds when dependencies change. Rollup uses platform-specific optional
|
|
29
|
+
binaries; keep the Linux/macOS clean-install checks. The lockfile marks optional
|
|
30
|
+
`fsevents` as having an install script, although its reviewed artifact has no
|
|
31
|
+
install hook or `binding.gyp`; npm may warn about that metadata.
|
|
32
|
+
|
|
33
|
+
The committed `.npmrc` sets `omit=peer`. The two release plugins export the
|
|
34
|
+
standalone functions the planner uses, but declare the full `semantic-release`
|
|
35
|
+
engine as a peer for their usual integration. Omitting that unused peer also
|
|
36
|
+
keeps its npm/GitHub publisher dependency graph off disk. Audit and planning
|
|
37
|
+
guards require those modules to be unresolvable from the project and both
|
|
38
|
+
plugins. See [release security](release-security.md).
|
|
39
|
+
|
|
40
|
+
npm still resolves omitted peers into the lockfile. `npm ls` reports the
|
|
41
|
+
deliberately missing engine peers; an audit with `--include=peer` can report
|
|
42
|
+
vulnerabilities in those uninstalled entries. Do not conceal the peer warning
|
|
43
|
+
with `--force`, `--legacy-peer-deps` or an alias package. Restoring the engine
|
|
44
|
+
requires a dependency/security review and a deliberate guard change.
|
|
45
|
+
|
|
46
|
+
## Updating dependencies
|
|
47
|
+
|
|
48
|
+
Maintainers own dependency admission and updates. Keep direct versions exact
|
|
49
|
+
and review the manifest and lockfile diff, upstream source and release notes,
|
|
50
|
+
distributed licenses, provenance, advisories and install hooks. Keep Vitest and
|
|
51
|
+
its coverage provider compatible. Changes to release plugins also require
|
|
52
|
+
reviewing their standalone exports and executable guards.
|
|
53
|
+
|
|
54
|
+
Run `npm ci`, `npm run audit`, `npm audit signatures` and `npm run verify`.
|
|
55
|
+
Review hosted matrix checks before release. Record review evidence and check
|
|
56
|
+
results in the PR and CI; update this guide only when a lasting choice or
|
|
57
|
+
installation requirement changes. Do not append dated intake or test logs.
|
|
58
|
+
|
|
59
|
+
Official `actions/*` and `github/*` actions use exact release tags under the
|
|
60
|
+
repository's GitHub publisher trust policy. Other remote actions require full
|
|
61
|
+
commit SHAs. Review action source, permissions and license when updating them.
|