@tulipes/spec 0.1.0 → 0.2.0

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 CHANGED
@@ -1,9 +1,19 @@
1
+ <div align="center">
2
+
3
+ <img src="https://cdn.jsdelivr.net/npm/@tulipes/core@0.7.1/assets/tulipesjs-logo.png" alt="TulipesJs" width="340">
4
+
5
+ </div>
6
+
1
7
  # @tulipes/spec
2
8
 
3
9
  Generates an **OpenAPI 3.1 document** and a **Postman collection** from a
4
10
  [Tulipes](https://www.npmjs.com/package/@tulipes/core) app's declared
5
11
  routes.
6
12
 
13
+ Version 0.2 requires `@tulipes/core@^0.8.0`. See the core
14
+ [migration guide](https://github.com/kemora13conf/bp-backend-express/blob/v0.8.0/packages/core/MIGRATING.md#reliability-contracts-08)
15
+ when upgrading from an earlier release.
16
+
7
17
  The source is the RAI registry of a *booted* app — not parsed source — so a
8
18
  generated document describes exactly the router that is mounted. It cannot
9
19
  invent an endpoint, and it cannot miss one.
@@ -31,6 +41,7 @@ Everything except the request shapes is already declared:
31
41
  | tag / folder | `rai({ folder })`, defaulting to the declaring module |
32
42
  | security, `x-tulipes-roles` | the ACL — which roles hold that permission |
33
43
  | response envelope | the framework's one response shape |
44
+ | success status | `rai({ status })`, defaulting to 200; 204 has no JSON body |
34
45
  | request/response schemas | `rai({ params, query, body, returns })` |
35
46
 
36
47
  Schemas are zod, declared on the route and **validated at runtime by the
@@ -81,15 +92,26 @@ The CLI is a thin wrapper; the pieces are exported:
81
92
  import { extract, toOpenApi, toPostman } from "@tulipes/spec";
82
93
  import { boot } from "@tulipes/core/boot";
83
94
 
84
- const handle = await boot({ rootDir, mode: "backend", listen: false });
85
- const source = extract(handle.ctx);
86
-
87
- const { document, warnings } = await toOpenApi(source, {
88
- servers: ["https://api.example.com"],
89
- });
95
+ const handle = await boot({ rootDir, mode: "backend", inspect: true, handleSignals: false });
96
+ try {
97
+ const source = extract(handle.ctx);
98
+ const { document, warnings } = await toOpenApi(source, {
99
+ servers: ["https://api.example.com"],
100
+ });
101
+ // Write the document and report warnings here.
102
+ } finally {
103
+ await handle.shutdown();
104
+ }
90
105
  ```
91
106
 
92
- `listen: false` is what lets this run while the app is already serving.
107
+ Inspection skips bootstrap, sockets, listening and readiness hooks, so it can run
108
+ while the app is serving. Imports, config/route factories and applicable database
109
+ and queue connections still run. Always release them with `shutdown()`.
110
+
111
+ Custom access checkers produce dynamic authorization metadata and warnings;
112
+ the generator cannot infer their roles or credentials. Configure authorization
113
+ manually for these Postman requests; they do not inherit the collection's bearer
114
+ token. OpenAPI omits a static security requirement for these operations.
93
115
 
94
116
  ## Options
95
117
 
package/dist/extract.d.ts CHANGED
@@ -6,6 +6,9 @@ import type { ValidatableSchema } from "@tulipes/core/http";
6
6
  * describe a route that is not actually mounted, nor miss one that is.
7
7
  */
8
8
  export interface SpecRoute {
9
+ status?: number;
10
+ /** Static ACL grants cannot describe a custom checker. */
11
+ authorization?: "acl" | "dynamic";
9
12
  id: string;
10
13
  method: string;
11
14
  /** As express declared it: `/users/:email`. */
package/dist/extract.js CHANGED
@@ -15,9 +15,11 @@ export function extract(ctx) {
15
15
  const routes = [...ctx.routes.all()]
16
16
  .map((record) => {
17
17
  const { info } = record;
18
- const roles = rolesFor(info.id);
18
+ const roles = ctx.routes.checker ? [] : rolesFor(info.id);
19
19
  return {
20
20
  id: info.id,
21
+ authorization: ctx.routes.checker ? "dynamic" : "acl",
22
+ ...(info.status !== undefined && { status: info.status }),
21
23
  method: record.method.toUpperCase(),
22
24
  path: record.path,
23
25
  module: record.module,
@@ -1 +1 @@
1
- {"version":3,"file":"extract.js","sourceRoot":"","sources":["../src/extract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extract.js","sourceRoot":"","sources":["../src/extract.ts"],"names":[],"mappings":"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"}
package/dist/openapi.js CHANGED
@@ -31,6 +31,9 @@ export async function toOpenApi(source, options = {}) {
31
31
  };
32
32
  }
33
33
  async function operation(route, warnings) {
34
+ if (route.authorization === "dynamic") {
35
+ warnings.push(`${route.id}: custom access checker; authorization cannot be described statically`);
36
+ }
34
37
  const collect = (warning) => {
35
38
  if (warning)
36
39
  warnings.push(warning);
@@ -55,6 +58,7 @@ async function operation(route, warnings) {
55
58
  // reader of the document genuinely needs.
56
59
  "x-tulipes-permission": route.id,
57
60
  "x-tulipes-roles": route.roles,
61
+ "x-tulipes-authorization": route.authorization ?? "acl",
58
62
  ...(parameters.length > 0 && { parameters }),
59
63
  ...(body.schema && {
60
64
  requestBody: {
@@ -64,7 +68,7 @@ async function operation(route, warnings) {
64
68
  }),
65
69
  // A public route needs no credential; every other one does. An empty
66
70
  // array on `security` is OpenAPI's way of saying "optional".
67
- security: route.public ? [] : [{ bearerAuth: [] }],
71
+ ...(route.authorization !== "dynamic" && { security: route.public ? [] : [{ bearerAuth: [] }] }),
68
72
  responses: responses(route, returns.schema),
69
73
  };
70
74
  }
@@ -131,7 +135,7 @@ function responses(route, returns) {
131
135
  },
132
136
  });
133
137
  return {
134
- "200": success,
138
+ [String(route.status ?? 200)]: route.status === 204 ? { description: "Success" } : success,
135
139
  ...(hasValidation(route) && { "422": failure("Validation failed") }),
136
140
  ...(!route.public && {
137
141
  "401": failure("Authentication required"),
@@ -1 +1 @@
1
- {"version":3,"file":"openapi.js","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openapi.js","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"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"}
package/dist/postman.js CHANGED
@@ -47,12 +47,16 @@ async function request(route, isLogin, warnings) {
47
47
  toJsonSchema(route.params, `${route.id} params`),
48
48
  ]);
49
49
  [query, body, params].forEach((r) => r.warning && warnings.push(r.warning));
50
+ const dynamic = route.authorization === "dynamic";
51
+ if (dynamic)
52
+ warnings.push(`${route.id}: custom access checker; configure authorization manually`);
53
+ const description = [route.description, dynamic ? "Authorization uses a custom checker. Configure credentials manually." : undefined].filter(Boolean).join("\n\n");
50
54
  const path = toPostmanPath(route.path).replace(/^\//, "").split("/");
51
55
  return {
52
56
  name: route.name ?? route.id,
53
57
  request: {
54
58
  method: route.method,
55
- ...(route.description && { description: route.description }),
59
+ ...(description && { description }),
56
60
  header: [
57
61
  ...(body.schema ? [{ key: "Content-Type", value: "application/json" }] : []),
58
62
  // Present but disabled: a reviewer can flip it on to check a
@@ -77,7 +81,7 @@ async function request(route, isLogin, warnings) {
77
81
  }),
78
82
  // A public route must not send the collection's bearer token: it
79
83
  // would mask the very thing a reviewer is checking.
80
- ...(route.public && { auth: { type: "noauth" } }),
84
+ ...((route.public || dynamic) && { auth: { type: "noauth" } }),
81
85
  },
82
86
  event: isLogin ? [captureTokens()] : [],
83
87
  };
@@ -1 +1 @@
1
- {"version":3,"file":"postman.js","sourceRoot":"","sources":["../src/postman.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"postman.js","sourceRoot":"","sources":["../src/postman.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tulipes/spec",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Generate OpenAPI documents and Postman collections from a Tulipes app's declared routes",
5
5
  "type": "module",
6
6
  "exports": {
@@ -22,11 +22,11 @@
22
22
  }
23
23
  },
24
24
  "peerDependencies": {
25
- "@tulipes/core": "^0.6.0",
25
+ "@tulipes/core": "^0.8.0",
26
26
  "zod": "^3.25 || ^4"
27
27
  },
28
28
  "devDependencies": {
29
- "@tulipes/core": "0.6.0",
29
+ "@tulipes/core": "0.8.0",
30
30
  "@types/node": "^24.2.0",
31
31
  "typescript": "^7.0.2",
32
32
  "zod": "^3.25"
@@ -44,5 +44,10 @@
44
44
  "express",
45
45
  "zod"
46
46
  ],
47
- "license": "MIT"
47
+ "license": "MIT",
48
+ "peerDependenciesMeta": {
49
+ "zod": {
50
+ "optional": true
51
+ }
52
+ }
48
53
  }