@hideyukimori/nene2-client 0.1.1 → 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 +12 -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/package.json +6 -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
|
|
@@ -116,6 +118,16 @@ npm test -- tests/client/live-smoke-matrix.test.ts
|
|
|
116
118
|
|
|
117
119
|
Unset URLs are skipped; CI runs fixture tests only. Field-trial friction: [ADR 0004](docs/adr/0004-field-trial-friction-resolution-cycle.md).
|
|
118
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
|
+
|
|
119
131
|
## Contributing
|
|
120
132
|
|
|
121
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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hideyukimori/nene2-client",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "TypeScript client ecosystem for NENE2 JSON APIs (OpenAPI-aligned)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -49,7 +49,10 @@
|
|
|
49
49
|
"build": "tsc -p tsconfig.build.json",
|
|
50
50
|
"pack:smoke": "node tools/smoke-pack.mjs",
|
|
51
51
|
"prepublishOnly": "npm run build",
|
|
52
|
-
"check": "npm run type-check && npm run lint && npm run format && npm run contracts:check && npm run codegen:check && npm run build && npm run test && npm run pack:smoke"
|
|
52
|
+
"check": "npm run type-check && npm run lint && npm run format && npm run contracts:check && npm run codegen:check && npm run build && npm run test && npm run pack:smoke",
|
|
53
|
+
"docs:dev": "vitepress dev --port 5175",
|
|
54
|
+
"docs:build": "vitepress build",
|
|
55
|
+
"docs:preview": "vitepress preview --port 5175"
|
|
53
56
|
},
|
|
54
57
|
"keywords": [
|
|
55
58
|
"nene2",
|
|
@@ -66,6 +69,7 @@
|
|
|
66
69
|
"prettier": "^3.8.1",
|
|
67
70
|
"typescript": "^5.9.3",
|
|
68
71
|
"typescript-eslint": "^8.59.3",
|
|
72
|
+
"vitepress": "^1.6.4",
|
|
69
73
|
"vitest": "^4.0.18"
|
|
70
74
|
}
|
|
71
75
|
}
|