@pikku/openapi-parser 0.12.22 → 0.12.24

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.
@@ -1,11 +1,12 @@
1
1
  import { z } from 'zod';
2
2
  export declare const DelegatedClaimsSchema: z.ZodObject<{
3
- source: z.ZodEnum<{
3
+ source: z.ZodOptional<z.ZodEnum<{
4
+ identity: "identity";
4
5
  jwt: "jwt";
5
6
  response: "response";
6
- }>;
7
- externalId: z.ZodString;
8
- email: z.ZodString;
7
+ }>>;
8
+ externalId: z.ZodOptional<z.ZodString>;
9
+ email: z.ZodOptional<z.ZodString>;
9
10
  name: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
10
11
  role: z.ZodOptional<z.ZodString>;
11
12
  tenantId: z.ZodOptional<z.ZodString>;
@@ -16,22 +17,40 @@ export declare const DelegatedLoginSchema: z.ZodObject<{
16
17
  credentials: z.ZodDefault<z.ZodArray<z.ZodEnum<{
17
18
  apiKey: "apiKey";
18
19
  email: "email";
20
+ login: "login";
19
21
  password: "password";
20
22
  }>>>;
23
+ fields: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
24
+ email: "email";
25
+ login: "login";
26
+ password: "password";
27
+ }> & z.core.$partial, z.ZodString>>;
28
+ encoding: z.ZodDefault<z.ZodEnum<{
29
+ form: "form";
30
+ json: "json";
31
+ query: "query";
32
+ }>>;
21
33
  apiKeyHeader: z.ZodDefault<z.ZodString>;
22
34
  tokenPath: z.ZodString;
23
35
  expiresAtPath: z.ZodOptional<z.ZodString>;
24
- claims: z.ZodObject<{
25
- source: z.ZodEnum<{
36
+ identity: z.ZodOptional<z.ZodObject<{
37
+ path: z.ZodString;
38
+ method: z.ZodDefault<z.ZodString>;
39
+ }, z.core.$strip>>;
40
+ claims: z.ZodDefault<z.ZodObject<{
41
+ source: z.ZodOptional<z.ZodEnum<{
42
+ identity: "identity";
26
43
  jwt: "jwt";
27
44
  response: "response";
28
- }>;
29
- externalId: z.ZodString;
30
- email: z.ZodString;
45
+ }>>;
46
+ externalId: z.ZodOptional<z.ZodString>;
47
+ email: z.ZodOptional<z.ZodString>;
31
48
  name: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
32
49
  role: z.ZodOptional<z.ZodString>;
33
50
  tenantId: z.ZodOptional<z.ZodString>;
34
- }, z.core.$strip>;
51
+ }, z.core.$strip>>;
52
+ emailTemplate: z.ZodDefault<z.ZodString>;
53
+ roles: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
35
54
  }, z.core.$strip>;
36
55
  export declare const AuthConfigSchema: z.ZodObject<{
37
56
  headerName: z.ZodOptional<z.ZodString>;
@@ -46,22 +65,40 @@ export declare const AuthConfigSchema: z.ZodObject<{
46
65
  credentials: z.ZodDefault<z.ZodArray<z.ZodEnum<{
47
66
  apiKey: "apiKey";
48
67
  email: "email";
68
+ login: "login";
49
69
  password: "password";
50
70
  }>>>;
71
+ fields: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
72
+ email: "email";
73
+ login: "login";
74
+ password: "password";
75
+ }> & z.core.$partial, z.ZodString>>;
76
+ encoding: z.ZodDefault<z.ZodEnum<{
77
+ form: "form";
78
+ json: "json";
79
+ query: "query";
80
+ }>>;
51
81
  apiKeyHeader: z.ZodDefault<z.ZodString>;
52
82
  tokenPath: z.ZodString;
53
83
  expiresAtPath: z.ZodOptional<z.ZodString>;
54
- claims: z.ZodObject<{
55
- source: z.ZodEnum<{
84
+ identity: z.ZodOptional<z.ZodObject<{
85
+ path: z.ZodString;
86
+ method: z.ZodDefault<z.ZodString>;
87
+ }, z.core.$strip>>;
88
+ claims: z.ZodDefault<z.ZodObject<{
89
+ source: z.ZodOptional<z.ZodEnum<{
90
+ identity: "identity";
56
91
  jwt: "jwt";
57
92
  response: "response";
58
- }>;
59
- externalId: z.ZodString;
60
- email: z.ZodString;
93
+ }>>;
94
+ externalId: z.ZodOptional<z.ZodString>;
95
+ email: z.ZodOptional<z.ZodString>;
61
96
  name: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
62
97
  role: z.ZodOptional<z.ZodString>;
63
98
  tenantId: z.ZodOptional<z.ZodString>;
64
- }, z.core.$strip>;
99
+ }, z.core.$strip>>;
100
+ emailTemplate: z.ZodDefault<z.ZodString>;
101
+ roles: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
65
102
  }, z.core.$strip>>;
66
103
  }, z.core.$strip>;
67
104
  export type DelegatedLoginConfig = z.infer<typeof DelegatedLoginSchema>;
@@ -7,12 +7,17 @@
7
7
  import { readFile } from 'fs/promises';
8
8
  import { z } from 'zod';
9
9
  export const DelegatedClaimsSchema = z.object({
10
- /** Where identity claims live: the decoded login-JWT payload, or the login response body. */
11
- source: z.enum(['jwt', 'response']),
12
- /** Dot-path to the stable upstream user id (e.g. 'user._id'). */
13
- externalId: z.string(),
14
- email: z.string(),
15
- /** One dot-path, or several joined with a space (e.g. first + last name). */
10
+ /**
11
+ * Where identity claims live: the decoded login-JWT payload, the login
12
+ * response body, or the `identity` lookup's response. Defaults to
13
+ * `identity` when an identity lookup is configured, else `response`.
14
+ */
15
+ source: z.enum(['jwt', 'response', 'identity']).optional(),
16
+ /** Dot-path to the stable upstream user id (e.g. 'user._id'). Defaults to the sign-in login. */
17
+ externalId: z.string().optional(),
18
+ /** Dot-path to the email; when missing or empty, `emailTemplate` builds one. */
19
+ email: z.string().optional(),
20
+ /** One dot-path, or several joined with a space (e.g. first + last name). Defaults to the login. */
16
21
  name: z.union([z.string(), z.array(z.string())]).optional(),
17
22
  role: z.string().optional(),
18
23
  tenantId: z.string().optional(),
@@ -21,17 +26,46 @@ export const DelegatedLoginSchema = z.object({
21
26
  /** Spec-relative path of the login operation (e.g. '/users/login'). */
22
27
  loginPath: z.string(),
23
28
  loginMethod: z.string().default('post'),
24
- /** Which credential fields the login accepts. email/password go in the JSON body; apiKey in a header. */
29
+ /**
30
+ * Which credentials the sign-in form collects. `login` is a username or
31
+ * email, `email` an email address, `apiKey` a key sent in `apiKeyHeader`.
32
+ */
25
33
  credentials: z
26
- .array(z.enum(['email', 'password', 'apiKey']))
34
+ .array(z.enum(['login', 'email', 'password', 'apiKey']))
27
35
  .default(['email', 'password']),
36
+ /**
37
+ * Upstream field name for each credential, e.g. `{ "login": "username" }`.
38
+ * Unmapped credentials keep their own name.
39
+ */
40
+ fields: z
41
+ .partialRecord(z.enum(['login', 'email', 'password']), z.string())
42
+ .optional(),
43
+ /** How the login fields travel: a JSON body, a form body, or the query string. */
44
+ encoding: z.enum(['json', 'form', 'query']).default('json'),
28
45
  /** Header carrying the apiKey when 'apiKey' is a supported credential. */
29
46
  apiKeyHeader: z.string().default('x-api-key'),
30
47
  /** Dot-path to the token in the login response (e.g. 'token'). */
31
48
  tokenPath: z.string(),
32
49
  /** Dot-path to an epoch-seconds expiry in the response; defaults to the JWT `exp` claim when source is jwt. */
33
50
  expiresAtPath: z.string().optional(),
34
- claims: DelegatedClaimsSchema,
51
+ /**
52
+ * An operation that returns the signed-in user, called with the new token
53
+ * in the auth header — for upstreams whose login returns only a token.
54
+ */
55
+ identity: z
56
+ .object({
57
+ path: z.string(),
58
+ method: z.string().default('get'),
59
+ })
60
+ .optional(),
61
+ claims: DelegatedClaimsSchema.default({}),
62
+ /**
63
+ * Builds the user's email when the upstream has none. Placeholders:
64
+ * `{login}`, `{externalId}`, `{host}` (the upstream's host).
65
+ */
66
+ emailTemplate: z.string().default('{login}@{host}'),
67
+ /** Maps the raw `claims.role` value onto an app role; unmapped values get no role. */
68
+ roles: z.record(z.string(), z.string()).optional(),
35
69
  });
36
70
  export const AuthConfigSchema = z.object({
37
71
  /** Auth header the API expects on authenticated calls (e.g. 'authentication'). Overrides the spec. */
package/dist/codegen.d.ts CHANGED
@@ -15,7 +15,7 @@ interface AddonVars {
15
15
  interface CodegenFlags {
16
16
  oauth: boolean;
17
17
  secret: boolean;
18
- credential?: 'apikey' | 'bearer' | 'oauth2';
18
+ credential?: 'apikey' | 'bearer' | 'basic' | 'oauth2';
19
19
  mcp?: boolean;
20
20
  camelCase?: boolean;
21
21
  /** Operator-supplied auth overrides (custom header, delegated login). */