@firetail/finchly 0.0.4 → 0.0.5
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/CHANGELOG.md +7 -16
- package/README.md +8 -75
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,37 +4,28 @@ All notable changes to `@firetail/finchly`. Versions follow semver.
|
|
|
4
4
|
|
|
5
5
|
## Unreleased
|
|
6
6
|
|
|
7
|
-
## 0.0.
|
|
8
|
-
|
|
9
|
-
No change to the package. The first release published by the release
|
|
10
|
-
workflow: 0.0.2 and 0.0.3 were tagged but did not reach npm, because the
|
|
11
|
-
workflow published with a placeholder token in place of the trusted
|
|
12
|
-
publisher. Everything listed under them arrives in this release.
|
|
7
|
+
## 0.0.5 - 2026-11-12
|
|
13
8
|
|
|
14
|
-
|
|
9
|
+
- The README covers using the SDK only. Notes for people working on the
|
|
10
|
+
SDK are no longer part of the package.
|
|
15
11
|
|
|
16
|
-
|
|
12
|
+
## 0.0.4 - 2026-11-12
|
|
17
13
|
|
|
18
14
|
- Every request to the platform carries three headers: `x-platform-sdk`
|
|
19
15
|
(the package name), `x-platform-sdk-version` (this release) and
|
|
20
16
|
`x-platform-api-version` (the platform API version it speaks). A caller
|
|
21
17
|
cannot replace them. Exported as `SDK_REQUEST_HEADERS`.
|
|
22
|
-
|
|
23
|
-
## 0.0.2 - 2026-11-12
|
|
24
|
-
|
|
25
|
-
Tagged but not published to npm.
|
|
26
|
-
|
|
27
18
|
- An app can register itself: `createServiceClient` takes an `enrolment`
|
|
28
19
|
(token, manifest, address) in place of a credential, and
|
|
29
20
|
`enrolmentFrom(config, manifest)` builds one from the platform settings.
|
|
30
21
|
Registration is what gets an app's instance key accepted.
|
|
31
22
|
- New error codes: `app_pending_approval`, `app_registration_refused`.
|
|
32
23
|
|
|
24
|
+
0.0.2 and 0.0.3 were not published.
|
|
25
|
+
|
|
33
26
|
## 0.0.1 - 2026-11-11
|
|
34
27
|
|
|
35
|
-
The first release
|
|
36
|
-
trusted publishing can be set up. Later releases come from the release
|
|
37
|
-
workflow.
|
|
28
|
+
The first release.
|
|
38
29
|
|
|
39
30
|
- Package skeleton under its final name.
|
|
40
31
|
- `loadConfig`: read and validate the `PLATFORM_*` settings.
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @firetail/finchly
|
|
2
2
|
|
|
3
|
-
Node SDK for the [Finchly](https://github.com/
|
|
3
|
+
Node SDK for the [Finchly](https://github.com/FireTail-io/finchly) platform.
|
|
4
4
|
A service or app uses it to register with a Finchly deployment, verify who
|
|
5
5
|
is calling it, and reach the platform's database, object store, queue and
|
|
6
6
|
other services.
|
|
@@ -9,7 +9,7 @@ Status: early. The package builds and is tested, but only the first four
|
|
|
9
9
|
modules exist.
|
|
10
10
|
|
|
11
11
|
The SDK implements the platform API, which is specified in
|
|
12
|
-
`
|
|
12
|
+
`FireTail-io/finchly` under `spec/`. This release speaks platform API `v1`
|
|
13
13
|
(draft).
|
|
14
14
|
|
|
15
15
|
## Install
|
|
@@ -69,7 +69,7 @@ try {
|
|
|
69
69
|
A token is rejected unless it is signed with ES256 by a key the gateway
|
|
70
70
|
publishes, names that gateway as issuer and this service as its only
|
|
71
71
|
audience, and has not expired. The rules are in `spec/identity-token.md` in
|
|
72
|
-
`
|
|
72
|
+
`FireTail-io/finchly`.
|
|
73
73
|
|
|
74
74
|
No other header is ever consulted. On a path the manifest declares in
|
|
75
75
|
`publicPaths` there is no token, and the service authenticates the request
|
|
@@ -115,7 +115,7 @@ The instance makes an ES256 key pair in memory the first time it is needed.
|
|
|
115
115
|
The private half never leaves the process. The public half is registered
|
|
116
116
|
with the gateway using the credential the service was deployed with, and
|
|
117
117
|
extended by itself for as long as the instance runs. The rules are in
|
|
118
|
-
`spec/service-token.md` and `spec/registration.md` in `
|
|
118
|
+
`spec/service-token.md` and `spec/registration.md` in `FireTail-io/finchly`.
|
|
119
119
|
|
|
120
120
|
### An app registers itself
|
|
121
121
|
|
|
@@ -153,7 +153,7 @@ exactly as it was loaded. What can come back:
|
|
|
153
153
|
| `app_registration_refused` | The platform refused, and `problems` says why: a bad token, a manifest or address it will not accept, a lower version than the one running | Fix the deployment. Trying again will not help |
|
|
154
154
|
| `gateway_unreachable` | The gateway could not be reached | Try again |
|
|
155
155
|
|
|
156
|
-
The protocol is in `spec/registration.md` in `
|
|
156
|
+
The protocol is in `spec/registration.md` in `FireTail-io/finchly`.
|
|
157
157
|
|
|
158
158
|
The other half of the `app` module is not built: serving the
|
|
159
159
|
`/{slug}/_platform/*` endpoints, which let an administrator register an app
|
|
@@ -168,7 +168,7 @@ release is asking:
|
|
|
168
168
|
| Header | Value |
|
|
169
169
|
|---|---|
|
|
170
170
|
| `x-platform-sdk` | `@firetail/finchly` |
|
|
171
|
-
| `x-platform-sdk-version` | This release, for example `0.0.
|
|
171
|
+
| `x-platform-sdk-version` | This release, for example `0.0.5` |
|
|
172
172
|
| `x-platform-api-version` | The platform API version it speaks, `v1` |
|
|
173
173
|
|
|
174
174
|
That covers fetching the gateway's issuer and keys, registering an instance
|
|
@@ -209,73 +209,6 @@ not leak them.
|
|
|
209
209
|
The manifest check here is not the full schema. The platform runs the full
|
|
210
210
|
check at registration and is the authority.
|
|
211
211
|
|
|
212
|
-
##
|
|
212
|
+
## Changes
|
|
213
213
|
|
|
214
|
-
|
|
215
|
-
npm install
|
|
216
|
-
npm test
|
|
217
|
-
```
|
|
218
|
-
|
|
219
|
-
`npm test` compiles with `tsc` and runs the tests in `test/` against the
|
|
220
|
-
build, which is what a consumer imports.
|
|
221
|
-
|
|
222
|
-
### Conformance vectors
|
|
223
|
-
|
|
224
|
-
`test/conformance/` holds test vectors copied from `firetail-io/finchly`
|
|
225
|
-
(`conformance/vectors/`). Both SDKs must reach the verdict each vector
|
|
226
|
-
states. Do not edit them here: change them in `finchly`, regenerate, and
|
|
227
|
-
copy the file to both SDK repositories. Until `finchly` publishes its
|
|
228
|
-
conformance suite as an image, the copy is made by hand.
|
|
229
|
-
|
|
230
|
-
## Release
|
|
231
|
-
|
|
232
|
-
Each package version is semver, independent of the Python SDK and of the
|
|
233
|
-
platform.
|
|
234
|
-
|
|
235
|
-
1. Changes land on `main` by pull request. Each one adds a line to
|
|
236
|
-
`CHANGELOG.md` under "Unreleased".
|
|
237
|
-
2. To release, set the version in `package.json`, move the changelog
|
|
238
|
-
entries under that version, merge, and tag the merge commit `vX.Y.Z`.
|
|
239
|
-
3. The `release` workflow checks the tag matches `package.json`, runs the
|
|
240
|
-
tests, and publishes.
|
|
241
|
-
4. A version with a pre-release part (`1.2.0-rc.1`) is published under the
|
|
242
|
-
`next` dist-tag. Anything else is published as `latest`.
|
|
243
|
-
5. A bad release is deprecated with `npm deprecate` and followed by a patch
|
|
244
|
-
release. It is not unpublished.
|
|
245
|
-
|
|
246
|
-
Publishing is meant to use npm trusted publishing: the workflow proves its
|
|
247
|
-
identity to npm with its GitHub Actions token, so no npm token is stored,
|
|
248
|
-
and npm attaches a provenance attestation.
|
|
249
|
-
|
|
250
|
-
npm matches the trusted publisher against the identity GitHub issues to the
|
|
251
|
-
workflow, and every field must match exactly, including case:
|
|
252
|
-
|
|
253
|
-
| Field on npmjs.com | Value |
|
|
254
|
-
| -------------------- | ------------- |
|
|
255
|
-
| Organization or user | `FireTail-io` |
|
|
256
|
-
| Repository | `finchly-sdk-js` |
|
|
257
|
-
| Workflow filename | `release.yml` |
|
|
258
|
-
| Environment name | `npm` |
|
|
259
|
-
|
|
260
|
-
The organisation is `FireTail-io`, not `firetail-io`. GitHub accepts either
|
|
261
|
-
spelling in a URL; npm does not, and answers "package not found" when the
|
|
262
|
-
two differ. `repository.url` in `package.json` must use the same spelling.
|
|
263
|
-
The workflow prints the identity it was issued, so a refusal can be compared
|
|
264
|
-
with what npmjs.com holds. A trusted publisher's fields cannot be edited: to
|
|
265
|
-
correct one, delete it and create another.
|
|
266
|
-
|
|
267
|
-
The workflow can also be given a token, for a release that trusted
|
|
268
|
-
publishing refuses:
|
|
269
|
-
|
|
270
|
-
- `NPM_TOKEN`, a secret of the `npm` environment in this repository. It is
|
|
271
|
-
a granular access token that can publish `@firetail/finchly` and nothing
|
|
272
|
-
else, with a short expiry.
|
|
273
|
-
- npm tries the trusted publisher first and uses the token only when that
|
|
274
|
-
is refused. Without the secret, nothing in the workflow needs to change.
|
|
275
|
-
- While a token is in use, the package's "Publishing access" on npmjs.com
|
|
276
|
-
must allow a granular access token with bypass 2FA.
|
|
277
|
-
- No provenance attestation is attached to a release published with the
|
|
278
|
-
token. npm also does not generate one from a private repository.
|
|
279
|
-
|
|
280
|
-
Still to add: the conformance suite from `firetail-io/finchly`, run in CI on
|
|
281
|
-
every change, once that suite exists.
|
|
214
|
+
See `CHANGELOG.md`.
|