@hideyukimori/nene2-client 0.1.0 → 0.1.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 +14 -0
- package/dist/client/create-nene2-client.d.ts +4 -0
- package/dist/client/create-nene2-client.d.ts.map +1 -1
- package/dist/client/create-nene2-client.js +7 -5
- package/dist/client/create-nene2-client.js.map +1 -1
- package/dist/client/health.d.ts +9 -0
- package/dist/client/health.d.ts.map +1 -0
- package/dist/client/health.js +14 -0
- package/dist/client/health.js.map +1 -0
- package/dist/generated/openapi.d.ts +877 -0
- package/dist/generated/openapi.d.ts.map +1 -0
- package/dist/generated/openapi.js +6 -0
- package/dist/generated/openapi.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/problem/types.d.ts +2 -19
- package/dist/problem/types.d.ts.map +1 -1
- package/dist/problem/types.js +0 -4
- package/dist/problem/types.js.map +1 -1
- package/dist/types/examples/notes.d.ts +4 -15
- package/dist/types/examples/notes.d.ts.map +1 -1
- package/dist/types/examples/notes.js +0 -3
- package/dist/types/examples/notes.js.map +1 -1
- package/dist/types/examples/protected.d.ts +3 -5
- package/dist/types/examples/protected.d.ts.map +1 -1
- package/dist/types/examples/protected.js +0 -3
- package/dist/types/examples/protected.js.map +1 -1
- package/dist/types/examples/tags.d.ts +4 -13
- package/dist/types/examples/tags.d.ts.map +1 -1
- package/dist/types/examples/tags.js +0 -3
- package/dist/types/examples/tags.js.map +1 -1
- package/dist/types/schemas.d.ts +21 -0
- package/dist/types/schemas.d.ts.map +1 -0
- package/dist/types/schemas.js +2 -0
- package/dist/types/schemas.js.map +1 -0
- package/dist/types/system.d.ts +4 -21
- package/dist/types/system.d.ts.map +1 -1
- package/dist/types/system.js +0 -3
- package/dist/types/system.js.map +1 -1
- package/package.json +13 -2
package/README.md
CHANGED
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
|
|
7
7
|
TypeScript ecosystem for [NENE2](https://github.com/hideyukiMORI/NENE2): OpenAPI-aligned types, HTTP client helpers, and Problem Details utilities for apps that consume NENE2 JSON APIs.
|
|
8
8
|
|
|
9
|
+
**Documentation:** https://hideyukimori.github.io/nene2-js/ (English, 日本語, Français, 中文, Português, Deutsch)
|
|
10
|
+
|
|
9
11
|
**This repository is not a Node.js port of the PHP framework.** The PHP runtime stays in [NENE2](https://github.com/hideyukiMORI/NENE2). MCP stdio servers in PHP live in [nene-mcp](https://github.com/hideyukiMORI/nene-mcp).
|
|
10
12
|
|
|
11
13
|
## What this repo is for
|
|
@@ -55,6 +57,8 @@ npm install
|
|
|
55
57
|
npm run check
|
|
56
58
|
```
|
|
57
59
|
|
|
60
|
+
OpenAPI types: `npm run codegen` (see [Phase 3](docs/phase-3.md)).
|
|
61
|
+
|
|
58
62
|
Point local development at a running NENE2 API when needed:
|
|
59
63
|
|
|
60
64
|
```bash
|
|
@@ -114,6 +118,16 @@ npm test -- tests/client/live-smoke-matrix.test.ts
|
|
|
114
118
|
|
|
115
119
|
Unset URLs are skipped; CI runs fixture tests only. Field-trial friction: [ADR 0004](docs/adr/0004-field-trial-friction-resolution-cycle.md).
|
|
116
120
|
|
|
121
|
+
## Documentation site (local)
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
npm install
|
|
125
|
+
npm run docs:dev # http://localhost:5175
|
|
126
|
+
npm run docs:build # static output → .vitepress/dist
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Published on push to `main` via [.github/workflows/docs.yml](.github/workflows/docs.yml).
|
|
130
|
+
|
|
117
131
|
## Contributing
|
|
118
132
|
|
|
119
133
|
Work is **GitHub Issue driven**. Read [docs/CONTRIBUTING.md](docs/CONTRIBUTING.md) and [docs/workflow.md](docs/workflow.md) before opening a PR.
|
|
@@ -7,6 +7,10 @@ export type HealthOptions = {
|
|
|
7
7
|
* Matches OpenAPI `getHealth` degraded response.
|
|
8
8
|
*/
|
|
9
9
|
readonly allowDegraded?: boolean;
|
|
10
|
+
/**
|
|
11
|
+
* When true, reject `service` values other than `NENE2` after a successful JSON parse (port / baseUrl mix-ups).
|
|
12
|
+
*/
|
|
13
|
+
readonly strictService?: boolean;
|
|
10
14
|
};
|
|
11
15
|
/**
|
|
12
16
|
* Typed NENE2 HTTP client (Phase 2 surface).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-nene2-client.d.ts","sourceRoot":"","sources":["../../src/client/create-nene2-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"create-nene2-client.d.ts","sourceRoot":"","sources":["../../src/client/create-nene2-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGpE,OAAO,EAML,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAKL,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACtB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,MAAM,aAAa,GAAG;IAC1B;;;OAGG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC;;OAEG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,cAAc,IAAI,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAElD;;;OAGG;IACH,MAAM,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAEzD;;OAEG;IACH,aAAa,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAEhD;;OAEG;IACH,IAAI,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAErC;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAEnC;;OAEG;IACH,SAAS,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAEtE;;OAEG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAE1C;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAE1D;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAEtE;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtC;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAEnE;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAExC;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvD;;OAEG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAEnE;;OAEG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErC;;OAEG;IACH,YAAY,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC5C;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,WAAW,CAmDxE"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { finalizeHealthResponse } from './health.js';
|
|
1
2
|
import { resolveConfig } from './config.js';
|
|
2
3
|
import { withQuery } from './path.js';
|
|
3
4
|
import { deleteNoContent, getJson, postJson, putJson } from './request.js';
|
|
@@ -17,11 +18,12 @@ export function createNene2Client(config) {
|
|
|
17
18
|
const resolved = resolveConfig(config);
|
|
18
19
|
return {
|
|
19
20
|
frameworkSmoke: () => getJson(resolved, '/', isFrameworkSmokeResponse),
|
|
20
|
-
health: (options) => {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
health: async (options) => {
|
|
22
|
+
const url = `${resolved.baseUrl}/health`;
|
|
23
|
+
const body = options?.allowDegraded
|
|
24
|
+
? await getJson(resolved, '/health', isHealthResponse, { alsoOkStatuses: [503] })
|
|
25
|
+
: await getJson(resolved, '/health', isHealthResponse);
|
|
26
|
+
return finalizeHealthResponse(body, url, options?.strictService);
|
|
25
27
|
},
|
|
26
28
|
machineHealth: () => getJson(resolved, '/machine/health', isMachineHealthResponse),
|
|
27
29
|
ping: () => getJson(resolved, '/examples/ping', isExamplePingResponse),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-nene2-client.js","sourceRoot":"","sources":["../../src/client/create-nene2-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA0B,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,mBAAmB,EACnB,wBAAwB,EACxB,oBAAoB,GAUrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,gBAAgB,EAChB,uBAAuB,GAMxB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"create-nene2-client.js","sourceRoot":"","sources":["../../src/client/create-nene2-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { HealthResponse } from '../types/system.js';
|
|
2
|
+
/** Expected `service` value on NENE2 `GET /health` (OpenAPI). */
|
|
3
|
+
export declare const NENE2_HEALTH_SERVICE: "NENE2";
|
|
4
|
+
/**
|
|
5
|
+
* When `strictService` is true, reject bodies whose `service` is not {@link NENE2_HEALTH_SERVICE}.
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
export declare function finalizeHealthResponse(body: HealthResponse, url: string, strictService: boolean | undefined): HealthResponse;
|
|
9
|
+
//# sourceMappingURL=health.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/client/health.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,iEAAiE;AACjE,eAAO,MAAM,oBAAoB,EAAG,OAAgB,CAAC;AAErD;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,cAAc,EACpB,GAAG,EAAE,MAAM,EACX,aAAa,EAAE,OAAO,GAAG,SAAS,GACjC,cAAc,CAQhB"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Nene2ClientError } from './errors.js';
|
|
2
|
+
/** Expected `service` value on NENE2 `GET /health` (OpenAPI). */
|
|
3
|
+
export const NENE2_HEALTH_SERVICE = 'NENE2';
|
|
4
|
+
/**
|
|
5
|
+
* When `strictService` is true, reject bodies whose `service` is not {@link NENE2_HEALTH_SERVICE}.
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
export function finalizeHealthResponse(body, url, strictService) {
|
|
9
|
+
if (strictService && body.service !== NENE2_HEALTH_SERVICE) {
|
|
10
|
+
throw new Nene2ClientError(`NENE2 health.service is "${body.service}", expected "${NENE2_HEALTH_SERVICE}" — check baseUrl / port (wrong stack on :8080?)`, { status: 200, url });
|
|
11
|
+
}
|
|
12
|
+
return body;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=health.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/client/health.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/C,iEAAiE;AACjE,MAAM,CAAC,MAAM,oBAAoB,GAAG,OAAgB,CAAC;AAErD;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAAoB,EACpB,GAAW,EACX,aAAkC;IAElC,IAAI,aAAa,IAAI,IAAI,CAAC,OAAO,KAAK,oBAAoB,EAAE,CAAC;QAC3D,MAAM,IAAI,gBAAgB,CACxB,4BAA4B,IAAI,CAAC,OAAO,gBAAgB,oBAAoB,kDAAkD,EAC9H,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CACrB,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|