@owox/idp-owox 0.0.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.
Files changed (65) hide show
  1. package/README.md +93 -0
  2. package/dist/auth/AuthorizationStore.d.ts +37 -0
  3. package/dist/auth/AuthorizationStore.d.ts.map +1 -0
  4. package/dist/auth/AuthorizationStore.js +2 -0
  5. package/dist/auth/AuthorizationStoreFactory.d.ts +7 -0
  6. package/dist/auth/AuthorizationStoreFactory.d.ts.map +1 -0
  7. package/dist/auth/AuthorizationStoreFactory.js +18 -0
  8. package/dist/auth/MysqlAuthorizationStore.d.ts +19 -0
  9. package/dist/auth/MysqlAuthorizationStore.d.ts.map +1 -0
  10. package/dist/auth/MysqlAuthorizationStore.js +84 -0
  11. package/dist/auth/SqliteAuthorizationStore.d.ts +20 -0
  12. package/dist/auth/SqliteAuthorizationStore.d.ts.map +1 -0
  13. package/dist/auth/SqliteAuthorizationStore.js +87 -0
  14. package/dist/client/IdentityOwoxClient.d.ts +27 -0
  15. package/dist/client/IdentityOwoxClient.d.ts.map +1 -0
  16. package/dist/client/IdentityOwoxClient.js +59 -0
  17. package/dist/client/dto/idpOwoxPayloadDto.d.ts +28 -0
  18. package/dist/client/dto/idpOwoxPayloadDto.d.ts.map +1 -0
  19. package/dist/client/dto/idpOwoxPayloadDto.js +30 -0
  20. package/dist/client/dto/index.d.ts +7 -0
  21. package/dist/client/dto/index.d.ts.map +1 -0
  22. package/dist/client/dto/index.js +22 -0
  23. package/dist/client/dto/introspectionDto.d.ts +68 -0
  24. package/dist/client/dto/introspectionDto.d.ts.map +1 -0
  25. package/dist/client/dto/introspectionDto.js +17 -0
  26. package/dist/client/dto/jwksDto.d.ts +100 -0
  27. package/dist/client/dto/jwksDto.d.ts.map +1 -0
  28. package/dist/client/dto/jwksDto.js +19 -0
  29. package/dist/client/dto/revocationDto.d.ts +9 -0
  30. package/dist/client/dto/revocationDto.d.ts.map +1 -0
  31. package/dist/client/dto/revocationDto.js +2 -0
  32. package/dist/client/dto/tokenDto.d.ts +30 -0
  33. package/dist/client/dto/tokenDto.d.ts.map +1 -0
  34. package/dist/client/dto/tokenDto.js +11 -0
  35. package/dist/client/dto/tokenType.d.ts +2 -0
  36. package/dist/client/dto/tokenType.d.ts.map +1 -0
  37. package/dist/client/dto/tokenType.js +2 -0
  38. package/dist/client/index.d.ts +3 -0
  39. package/dist/client/index.d.ts.map +1 -0
  40. package/dist/client/index.js +18 -0
  41. package/dist/config.d.ts +192 -0
  42. package/dist/config.d.ts.map +1 -0
  43. package/dist/config.js +174 -0
  44. package/dist/index.d.ts +3 -0
  45. package/dist/index.d.ts.map +1 -0
  46. package/dist/index.js +7 -0
  47. package/dist/mappers/idpOwoxPayloadToPayloadMapper.d.ts +3 -0
  48. package/dist/mappers/idpOwoxPayloadToPayloadMapper.d.ts.map +1 -0
  49. package/dist/mappers/idpOwoxPayloadToPayloadMapper.js +17 -0
  50. package/dist/owoxIdp.d.ts +25 -0
  51. package/dist/owoxIdp.d.ts.map +1 -0
  52. package/dist/owoxIdp.js +172 -0
  53. package/dist/pkce.d.ts +21 -0
  54. package/dist/pkce.d.ts.map +1 -0
  55. package/dist/pkce.js +34 -0
  56. package/dist/token/jwksCache.d.ts +19 -0
  57. package/dist/token/jwksCache.d.ts.map +1 -0
  58. package/dist/token/jwksCache.js +41 -0
  59. package/dist/token/parseToken.d.ts +11 -0
  60. package/dist/token/parseToken.d.ts.map +1 -0
  61. package/dist/token/parseToken.js +29 -0
  62. package/dist/token/verifyJwt.d.ts +9 -0
  63. package/dist/token/verifyJwt.d.ts.map +1 -0
  64. package/dist/token/verifyJwt.js +23 -0
  65. package/package.json +62 -0
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IntrospectionResponseSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ const idpOwoxPayloadDto_1 = require("./idpOwoxPayloadDto");
6
+ const ActiveSchema = idpOwoxPayloadDto_1.IdpOwoxPayloadSchema.extend({
7
+ isActive: zod_1.z.literal(true),
8
+ });
9
+ const inactiveShape = Object.fromEntries(Object.keys(idpOwoxPayloadDto_1.IdpOwoxPayloadSchema.shape).map(k => [k, zod_1.z.null()]));
10
+ const InactiveSchema = zod_1.z
11
+ .object(inactiveShape)
12
+ .strict()
13
+ .extend({ isActive: zod_1.z.literal(false) });
14
+ exports.IntrospectionResponseSchema = zod_1.z.discriminatedUnion('isActive', [
15
+ ActiveSchema,
16
+ InactiveSchema,
17
+ ]);
@@ -0,0 +1,100 @@
1
+ import { z } from 'zod';
2
+ import { JWK } from 'jose';
3
+ export declare const JsonWebKeySchema: z.ZodObject<{
4
+ kty: z.ZodString;
5
+ use: z.ZodString;
6
+ alg: z.ZodString;
7
+ kid: z.ZodString;
8
+ n: z.ZodString;
9
+ e: z.ZodString;
10
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
11
+ kty: z.ZodString;
12
+ use: z.ZodString;
13
+ alg: z.ZodString;
14
+ kid: z.ZodString;
15
+ n: z.ZodString;
16
+ e: z.ZodString;
17
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
18
+ kty: z.ZodString;
19
+ use: z.ZodString;
20
+ alg: z.ZodString;
21
+ kid: z.ZodString;
22
+ n: z.ZodString;
23
+ e: z.ZodString;
24
+ }, z.ZodTypeAny, "passthrough">>;
25
+ export declare const JwksResponseSchema: z.ZodEffects<z.ZodObject<{
26
+ keys: z.ZodArray<z.ZodObject<{
27
+ kty: z.ZodString;
28
+ use: z.ZodString;
29
+ alg: z.ZodString;
30
+ kid: z.ZodString;
31
+ n: z.ZodString;
32
+ e: z.ZodString;
33
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
34
+ kty: z.ZodString;
35
+ use: z.ZodString;
36
+ alg: z.ZodString;
37
+ kid: z.ZodString;
38
+ n: z.ZodString;
39
+ e: z.ZodString;
40
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
41
+ kty: z.ZodString;
42
+ use: z.ZodString;
43
+ alg: z.ZodString;
44
+ kid: z.ZodString;
45
+ n: z.ZodString;
46
+ e: z.ZodString;
47
+ }, z.ZodTypeAny, "passthrough">>, "atleastone">;
48
+ }, "strip", z.ZodTypeAny, {
49
+ keys: [z.objectOutputType<{
50
+ kty: z.ZodString;
51
+ use: z.ZodString;
52
+ alg: z.ZodString;
53
+ kid: z.ZodString;
54
+ n: z.ZodString;
55
+ e: z.ZodString;
56
+ }, z.ZodTypeAny, "passthrough">, ...z.objectOutputType<{
57
+ kty: z.ZodString;
58
+ use: z.ZodString;
59
+ alg: z.ZodString;
60
+ kid: z.ZodString;
61
+ n: z.ZodString;
62
+ e: z.ZodString;
63
+ }, z.ZodTypeAny, "passthrough">[]];
64
+ }, {
65
+ keys: [z.objectInputType<{
66
+ kty: z.ZodString;
67
+ use: z.ZodString;
68
+ alg: z.ZodString;
69
+ kid: z.ZodString;
70
+ n: z.ZodString;
71
+ e: z.ZodString;
72
+ }, z.ZodTypeAny, "passthrough">, ...z.objectInputType<{
73
+ kty: z.ZodString;
74
+ use: z.ZodString;
75
+ alg: z.ZodString;
76
+ kid: z.ZodString;
77
+ n: z.ZodString;
78
+ e: z.ZodString;
79
+ }, z.ZodTypeAny, "passthrough">[]];
80
+ }>, {
81
+ keys: JWK[];
82
+ }, {
83
+ keys: [z.objectInputType<{
84
+ kty: z.ZodString;
85
+ use: z.ZodString;
86
+ alg: z.ZodString;
87
+ kid: z.ZodString;
88
+ n: z.ZodString;
89
+ e: z.ZodString;
90
+ }, z.ZodTypeAny, "passthrough">, ...z.objectInputType<{
91
+ kty: z.ZodString;
92
+ use: z.ZodString;
93
+ alg: z.ZodString;
94
+ kid: z.ZodString;
95
+ n: z.ZodString;
96
+ e: z.ZodString;
97
+ }, z.ZodTypeAny, "passthrough">[]];
98
+ }>;
99
+ export type JwksResponse = z.infer<typeof JwksResponseSchema>;
100
+ //# sourceMappingURL=jwksDto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwksDto.d.ts","sourceRoot":"","sources":["../../../src/client/dto/jwksDto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAE3B,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;gCASb,CAAC;AAEjB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAIiB,GAAG,EAAE;;;;;;;;;;;;;;;;;EAAI,CAAC;AAE1D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JwksResponseSchema = exports.JsonWebKeySchema = void 0;
4
+ const zod_1 = require("zod");
5
+ exports.JsonWebKeySchema = zod_1.z
6
+ .object({
7
+ kty: zod_1.z.string(),
8
+ use: zod_1.z.string(),
9
+ alg: zod_1.z.string(),
10
+ kid: zod_1.z.string(),
11
+ n: zod_1.z.string(),
12
+ e: zod_1.z.string(),
13
+ })
14
+ .passthrough();
15
+ exports.JwksResponseSchema = zod_1.z
16
+ .object({
17
+ keys: zod_1.z.array(exports.JsonWebKeySchema).nonempty(),
18
+ })
19
+ .transform(v => ({ keys: v.keys }));
@@ -0,0 +1,9 @@
1
+ import { TokenType } from './tokenType';
2
+ export interface RevocationRequest {
3
+ token: string;
4
+ tokenType?: TokenType;
5
+ }
6
+ export interface RevocationResponse {
7
+ success: boolean;
8
+ }
9
+ //# sourceMappingURL=revocationDto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revocationDto.d.ts","sourceRoot":"","sources":["../../../src/client/dto/revocationDto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;CAClB"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,30 @@
1
+ import { z } from 'zod';
2
+ export type GrantType = 'authorization_code' | 'refresh_token';
3
+ export interface TokenRequest {
4
+ grantType: GrantType;
5
+ clientId: string;
6
+ authCode?: string;
7
+ refreshToken?: string;
8
+ codeVerifier?: string;
9
+ }
10
+ export declare const TokenResponseSchema: z.ZodObject<{
11
+ accessToken: z.ZodString;
12
+ refreshToken: z.ZodString;
13
+ tokenType: z.ZodString;
14
+ accessTokenExpiresIn: z.ZodNumber;
15
+ refreshTokenExpiresIn: z.ZodNumber;
16
+ }, "strip", z.ZodTypeAny, {
17
+ accessToken: string;
18
+ refreshToken: string;
19
+ tokenType: string;
20
+ accessTokenExpiresIn: number;
21
+ refreshTokenExpiresIn: number;
22
+ }, {
23
+ accessToken: string;
24
+ refreshToken: string;
25
+ tokenType: string;
26
+ accessTokenExpiresIn: number;
27
+ refreshTokenExpiresIn: number;
28
+ }>;
29
+ export type TokenResponse = z.infer<typeof TokenResponseSchema>;
30
+ //# sourceMappingURL=tokenDto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenDto.d.ts","sourceRoot":"","sources":["../../../src/client/dto/tokenDto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,MAAM,SAAS,GAAG,oBAAoB,GAAG,eAAe,CAAC;AAE/D,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;EAM9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TokenResponseSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ exports.TokenResponseSchema = zod_1.z.object({
6
+ accessToken: zod_1.z.string().min(10),
7
+ refreshToken: zod_1.z.string().min(10),
8
+ tokenType: zod_1.z.string(),
9
+ accessTokenExpiresIn: zod_1.z.number().positive(),
10
+ refreshTokenExpiresIn: zod_1.z.number().positive(),
11
+ });
@@ -0,0 +1,2 @@
1
+ export type TokenType = 'access_token' | 'refresh_token';
2
+ //# sourceMappingURL=tokenType.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenType.d.ts","sourceRoot":"","sources":["../../../src/client/dto/tokenType.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,cAAc,GAAG,eAAe,CAAC"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,3 @@
1
+ export * from './IdentityOwoxClient';
2
+ export * from './dto';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,OAAO,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./IdentityOwoxClient"), exports);
18
+ __exportStar(require("./dto"), exports);
@@ -0,0 +1,192 @@
1
+ import { z } from 'zod';
2
+ import ms from 'ms';
3
+ export declare const DbEnvSchema: z.ZodEffects<z.ZodDiscriminatedUnion<"IDP_OWOX_DB_TYPE", [z.ZodObject<{
4
+ IDP_OWOX_DB_TYPE: z.ZodLiteral<"sqlite">;
5
+ IDP_OWOX_SQLITE_DB_PATH: z.ZodOptional<z.ZodString>;
6
+ IDP_OWOX_SQLITE_PRAGMA: z.ZodOptional<z.ZodString>;
7
+ }, "strip", z.ZodTypeAny, {
8
+ IDP_OWOX_DB_TYPE: "sqlite";
9
+ IDP_OWOX_SQLITE_DB_PATH?: string | undefined;
10
+ IDP_OWOX_SQLITE_PRAGMA?: string | undefined;
11
+ }, {
12
+ IDP_OWOX_DB_TYPE: "sqlite";
13
+ IDP_OWOX_SQLITE_DB_PATH?: string | undefined;
14
+ IDP_OWOX_SQLITE_PRAGMA?: string | undefined;
15
+ }>, z.ZodObject<{
16
+ IDP_OWOX_DB_TYPE: z.ZodLiteral<"mysql">;
17
+ IDP_OWOX_MYSQL_HOST: z.ZodString;
18
+ IDP_OWOX_MYSQL_USER: z.ZodString;
19
+ IDP_OWOX_MYSQL_PASSWORD: z.ZodString;
20
+ IDP_OWOX_MYSQL_DB: z.ZodString;
21
+ IDP_OWOX_MYSQL_PORT: z.ZodOptional<z.ZodString>;
22
+ IDP_OWOX_MYSQL_CONNECTION_LIMIT: z.ZodOptional<z.ZodString>;
23
+ IDP_OWOX_MYSQL_SSL: z.ZodOptional<z.ZodString>;
24
+ }, "strip", z.ZodTypeAny, {
25
+ IDP_OWOX_DB_TYPE: "mysql";
26
+ IDP_OWOX_MYSQL_HOST: string;
27
+ IDP_OWOX_MYSQL_USER: string;
28
+ IDP_OWOX_MYSQL_PASSWORD: string;
29
+ IDP_OWOX_MYSQL_DB: string;
30
+ IDP_OWOX_MYSQL_PORT?: string | undefined;
31
+ IDP_OWOX_MYSQL_CONNECTION_LIMIT?: string | undefined;
32
+ IDP_OWOX_MYSQL_SSL?: string | undefined;
33
+ }, {
34
+ IDP_OWOX_DB_TYPE: "mysql";
35
+ IDP_OWOX_MYSQL_HOST: string;
36
+ IDP_OWOX_MYSQL_USER: string;
37
+ IDP_OWOX_MYSQL_PASSWORD: string;
38
+ IDP_OWOX_MYSQL_DB: string;
39
+ IDP_OWOX_MYSQL_PORT?: string | undefined;
40
+ IDP_OWOX_MYSQL_CONNECTION_LIMIT?: string | undefined;
41
+ IDP_OWOX_MYSQL_SSL?: string | undefined;
42
+ }>]>, {
43
+ type: "sqlite";
44
+ sqlite: {
45
+ type: "sqlite";
46
+ dbPath: string;
47
+ pragma: string[] | undefined;
48
+ };
49
+ mysql?: undefined;
50
+ } | {
51
+ type: "mysql";
52
+ mysql: {
53
+ type: "mysql";
54
+ host: string;
55
+ port: number | undefined;
56
+ user: string;
57
+ password: string;
58
+ database: string;
59
+ connectionLimit: number | undefined;
60
+ ssl: string | import("mysql2/promise").SslOptions | undefined;
61
+ };
62
+ sqlite?: undefined;
63
+ }, {
64
+ IDP_OWOX_DB_TYPE: "sqlite";
65
+ IDP_OWOX_SQLITE_DB_PATH?: string | undefined;
66
+ IDP_OWOX_SQLITE_PRAGMA?: string | undefined;
67
+ } | {
68
+ IDP_OWOX_DB_TYPE: "mysql";
69
+ IDP_OWOX_MYSQL_HOST: string;
70
+ IDP_OWOX_MYSQL_USER: string;
71
+ IDP_OWOX_MYSQL_PASSWORD: string;
72
+ IDP_OWOX_MYSQL_DB: string;
73
+ IDP_OWOX_MYSQL_PORT?: string | undefined;
74
+ IDP_OWOX_MYSQL_CONNECTION_LIMIT?: string | undefined;
75
+ IDP_OWOX_MYSQL_SSL?: string | undefined;
76
+ }>;
77
+ export declare function loadDbConfigFromEnv(env?: NodeJS.ProcessEnv): {
78
+ type: "sqlite";
79
+ sqlite: {
80
+ type: "sqlite";
81
+ dbPath: string;
82
+ pragma: string[] | undefined;
83
+ };
84
+ mysql?: undefined;
85
+ } | {
86
+ type: "mysql";
87
+ mysql: {
88
+ type: "mysql";
89
+ host: string;
90
+ port: number | undefined;
91
+ user: string;
92
+ password: string;
93
+ database: string;
94
+ connectionLimit: number | undefined;
95
+ ssl: string | import("mysql2/promise").SslOptions | undefined;
96
+ };
97
+ sqlite?: undefined;
98
+ };
99
+ /** ---------- IdentityOwox client ---------- */
100
+ declare const IdentityOwoxClientEnvSchema: z.ZodEffects<z.ZodObject<{
101
+ IDP_OWOX_BASE_URL: z.ZodString;
102
+ IDP_OWOX_DEFAULT_HEADERS: z.ZodOptional<z.ZodString>;
103
+ IDP_OWOX_TIMEOUT: z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, `${number}` | `${number}Years` | `${number}Year` | `${number}Yrs` | `${number}Yr` | `${number}Y` | `${number}Weeks` | `${number}Week` | `${number}W` | `${number}Days` | `${number}Day` | `${number}D` | `${number}Hours` | `${number}Hour` | `${number}Hrs` | `${number}Hr` | `${number}H` | `${number}Minutes` | `${number}Minute` | `${number}Mins` | `${number}Min` | `${number}M` | `${number}Seconds` | `${number}Second` | `${number}Secs` | `${number}Sec` | `${number}s` | `${number}Milliseconds` | `${number}Millisecond` | `${number}Msecs` | `${number}Msec` | `${number}Ms` | `${number}YEARS` | `${number}YEAR` | `${number}YRS` | `${number}YR` | `${number}WEEKS` | `${number}WEEK` | `${number}DAYS` | `${number}DAY` | `${number}HOURS` | `${number}HOUR` | `${number}HRS` | `${number}HR` | `${number}MINUTES` | `${number}MINUTE` | `${number}MINS` | `${number}MIN` | `${number}SECONDS` | `${number}SECOND` | `${number}SECS` | `${number}SEC` | `${number}S` | `${number}MILLISECONDS` | `${number}MILLISECOND` | `${number}MSECS` | `${number}MSEC` | `${number}MS` | `${number}years` | `${number}year` | `${number}yrs` | `${number}yr` | `${number}y` | `${number}weeks` | `${number}week` | `${number}w` | `${number}days` | `${number}day` | `${number}d` | `${number}hours` | `${number}hour` | `${number}hrs` | `${number}hr` | `${number}h` | `${number}minutes` | `${number}minute` | `${number}mins` | `${number}min` | `${number}m` | `${number}seconds` | `${number}second` | `${number}secs` | `${number}sec` | `${number}milliseconds` | `${number}millisecond` | `${number}msecs` | `${number}msec` | `${number}ms` | `${number} Years` | `${number} Year` | `${number} Yrs` | `${number} Yr` | `${number} Y` | `${number} Weeks` | `${number} Week` | `${number} W` | `${number} Days` | `${number} Day` | `${number} D` | `${number} Hours` | `${number} Hour` | `${number} Hrs` | `${number} Hr` | `${number} H` | `${number} Minutes` | `${number} Minute` | `${number} Mins` | `${number} Min` | `${number} M` | `${number} Seconds` | `${number} Second` | `${number} Secs` | `${number} Sec` | `${number} s` | `${number} Milliseconds` | `${number} Millisecond` | `${number} Msecs` | `${number} Msec` | `${number} Ms` | `${number} YEARS` | `${number} YEAR` | `${number} YRS` | `${number} YR` | `${number} WEEKS` | `${number} WEEK` | `${number} DAYS` | `${number} DAY` | `${number} HOURS` | `${number} HOUR` | `${number} HRS` | `${number} HR` | `${number} MINUTES` | `${number} MINUTE` | `${number} MINS` | `${number} MIN` | `${number} SECONDS` | `${number} SECOND` | `${number} SECS` | `${number} SEC` | `${number} S` | `${number} MILLISECONDS` | `${number} MILLISECOND` | `${number} MSECS` | `${number} MSEC` | `${number} MS` | `${number} years` | `${number} year` | `${number} yrs` | `${number} yr` | `${number} y` | `${number} weeks` | `${number} week` | `${number} w` | `${number} days` | `${number} day` | `${number} d` | `${number} hours` | `${number} hour` | `${number} hrs` | `${number} hr` | `${number} h` | `${number} minutes` | `${number} minute` | `${number} mins` | `${number} min` | `${number} m` | `${number} seconds` | `${number} second` | `${number} secs` | `${number} sec` | `${number} milliseconds` | `${number} millisecond` | `${number} msecs` | `${number} msec` | `${number} ms`, string>>;
104
+ }, "strip", z.ZodTypeAny, {
105
+ IDP_OWOX_BASE_URL: string;
106
+ IDP_OWOX_DEFAULT_HEADERS?: string | undefined;
107
+ IDP_OWOX_TIMEOUT?: `${number}` | `${number}Years` | `${number}Year` | `${number}Yrs` | `${number}Yr` | `${number}Y` | `${number}Weeks` | `${number}Week` | `${number}W` | `${number}Days` | `${number}Day` | `${number}D` | `${number}Hours` | `${number}Hour` | `${number}Hrs` | `${number}Hr` | `${number}H` | `${number}Minutes` | `${number}Minute` | `${number}Mins` | `${number}Min` | `${number}M` | `${number}Seconds` | `${number}Second` | `${number}Secs` | `${number}Sec` | `${number}s` | `${number}Milliseconds` | `${number}Millisecond` | `${number}Msecs` | `${number}Msec` | `${number}Ms` | `${number}YEARS` | `${number}YEAR` | `${number}YRS` | `${number}YR` | `${number}WEEKS` | `${number}WEEK` | `${number}DAYS` | `${number}DAY` | `${number}HOURS` | `${number}HOUR` | `${number}HRS` | `${number}HR` | `${number}MINUTES` | `${number}MINUTE` | `${number}MINS` | `${number}MIN` | `${number}SECONDS` | `${number}SECOND` | `${number}SECS` | `${number}SEC` | `${number}S` | `${number}MILLISECONDS` | `${number}MILLISECOND` | `${number}MSECS` | `${number}MSEC` | `${number}MS` | `${number}years` | `${number}year` | `${number}yrs` | `${number}yr` | `${number}y` | `${number}weeks` | `${number}week` | `${number}w` | `${number}days` | `${number}day` | `${number}d` | `${number}hours` | `${number}hour` | `${number}hrs` | `${number}hr` | `${number}h` | `${number}minutes` | `${number}minute` | `${number}mins` | `${number}min` | `${number}m` | `${number}seconds` | `${number}second` | `${number}secs` | `${number}sec` | `${number}milliseconds` | `${number}millisecond` | `${number}msecs` | `${number}msec` | `${number}ms` | `${number} Years` | `${number} Year` | `${number} Yrs` | `${number} Yr` | `${number} Y` | `${number} Weeks` | `${number} Week` | `${number} W` | `${number} Days` | `${number} Day` | `${number} D` | `${number} Hours` | `${number} Hour` | `${number} Hrs` | `${number} Hr` | `${number} H` | `${number} Minutes` | `${number} Minute` | `${number} Mins` | `${number} Min` | `${number} M` | `${number} Seconds` | `${number} Second` | `${number} Secs` | `${number} Sec` | `${number} s` | `${number} Milliseconds` | `${number} Millisecond` | `${number} Msecs` | `${number} Msec` | `${number} Ms` | `${number} YEARS` | `${number} YEAR` | `${number} YRS` | `${number} YR` | `${number} WEEKS` | `${number} WEEK` | `${number} DAYS` | `${number} DAY` | `${number} HOURS` | `${number} HOUR` | `${number} HRS` | `${number} HR` | `${number} MINUTES` | `${number} MINUTE` | `${number} MINS` | `${number} MIN` | `${number} SECONDS` | `${number} SECOND` | `${number} SECS` | `${number} SEC` | `${number} S` | `${number} MILLISECONDS` | `${number} MILLISECOND` | `${number} MSECS` | `${number} MSEC` | `${number} MS` | `${number} years` | `${number} year` | `${number} yrs` | `${number} yr` | `${number} y` | `${number} weeks` | `${number} week` | `${number} w` | `${number} days` | `${number} day` | `${number} d` | `${number} hours` | `${number} hour` | `${number} hrs` | `${number} hr` | `${number} h` | `${number} minutes` | `${number} minute` | `${number} mins` | `${number} min` | `${number} m` | `${number} seconds` | `${number} second` | `${number} secs` | `${number} sec` | `${number} milliseconds` | `${number} millisecond` | `${number} msecs` | `${number} msec` | `${number} ms` | undefined;
108
+ }, {
109
+ IDP_OWOX_BASE_URL: string;
110
+ IDP_OWOX_DEFAULT_HEADERS?: string | undefined;
111
+ IDP_OWOX_TIMEOUT?: string | undefined;
112
+ }>, {
113
+ baseUrl: string;
114
+ defaultHeaders: Record<string, string> | undefined;
115
+ clientTimeout: ms.StringValue;
116
+ }, {
117
+ IDP_OWOX_BASE_URL: string;
118
+ IDP_OWOX_DEFAULT_HEADERS?: string | undefined;
119
+ IDP_OWOX_TIMEOUT?: string | undefined;
120
+ }>;
121
+ /** ---------- IDP (frontend/app) config ---------- */
122
+ declare const IdpEnvSchema: z.ZodEffects<z.ZodObject<{
123
+ IDP_OWOX_CLIENT_ID: z.ZodString;
124
+ IDP_OWOX_PLATFORM_SIGN_IN_URL: z.ZodString;
125
+ IDP_OWOX_CALLBACK_URL: z.ZodString;
126
+ }, "strip", z.ZodTypeAny, {
127
+ IDP_OWOX_CLIENT_ID: string;
128
+ IDP_OWOX_PLATFORM_SIGN_IN_URL: string;
129
+ IDP_OWOX_CALLBACK_URL: string;
130
+ }, {
131
+ IDP_OWOX_CLIENT_ID: string;
132
+ IDP_OWOX_PLATFORM_SIGN_IN_URL: string;
133
+ IDP_OWOX_CALLBACK_URL: string;
134
+ }>, {
135
+ clientId: string;
136
+ platformSignInUrl: string;
137
+ callbackUrl: string;
138
+ }, {
139
+ IDP_OWOX_CLIENT_ID: string;
140
+ IDP_OWOX_PLATFORM_SIGN_IN_URL: string;
141
+ IDP_OWOX_CALLBACK_URL: string;
142
+ }>;
143
+ /** ---------- JWT config ---------- */
144
+ declare const JwtEnvSchema: z.ZodEffects<z.ZodObject<{
145
+ IDP_OWOX_JWT_CLOCK_TOLERANCE: z.ZodDefault<z.ZodString>;
146
+ IDP_OWOX_JWT_ISSUER: z.ZodString;
147
+ IDP_OWOX_JWT_CACHE_TTL: z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, `${number}` | `${number}Years` | `${number}Year` | `${number}Yrs` | `${number}Yr` | `${number}Y` | `${number}Weeks` | `${number}Week` | `${number}W` | `${number}Days` | `${number}Day` | `${number}D` | `${number}Hours` | `${number}Hour` | `${number}Hrs` | `${number}Hr` | `${number}H` | `${number}Minutes` | `${number}Minute` | `${number}Mins` | `${number}Min` | `${number}M` | `${number}Seconds` | `${number}Second` | `${number}Secs` | `${number}Sec` | `${number}s` | `${number}Milliseconds` | `${number}Millisecond` | `${number}Msecs` | `${number}Msec` | `${number}Ms` | `${number}YEARS` | `${number}YEAR` | `${number}YRS` | `${number}YR` | `${number}WEEKS` | `${number}WEEK` | `${number}DAYS` | `${number}DAY` | `${number}HOURS` | `${number}HOUR` | `${number}HRS` | `${number}HR` | `${number}MINUTES` | `${number}MINUTE` | `${number}MINS` | `${number}MIN` | `${number}SECONDS` | `${number}SECOND` | `${number}SECS` | `${number}SEC` | `${number}S` | `${number}MILLISECONDS` | `${number}MILLISECOND` | `${number}MSECS` | `${number}MSEC` | `${number}MS` | `${number}years` | `${number}year` | `${number}yrs` | `${number}yr` | `${number}y` | `${number}weeks` | `${number}week` | `${number}w` | `${number}days` | `${number}day` | `${number}d` | `${number}hours` | `${number}hour` | `${number}hrs` | `${number}hr` | `${number}h` | `${number}minutes` | `${number}minute` | `${number}mins` | `${number}min` | `${number}m` | `${number}seconds` | `${number}second` | `${number}secs` | `${number}sec` | `${number}milliseconds` | `${number}millisecond` | `${number}msecs` | `${number}msec` | `${number}ms` | `${number} Years` | `${number} Year` | `${number} Yrs` | `${number} Yr` | `${number} Y` | `${number} Weeks` | `${number} Week` | `${number} W` | `${number} Days` | `${number} Day` | `${number} D` | `${number} Hours` | `${number} Hour` | `${number} Hrs` | `${number} Hr` | `${number} H` | `${number} Minutes` | `${number} Minute` | `${number} Mins` | `${number} Min` | `${number} M` | `${number} Seconds` | `${number} Second` | `${number} Secs` | `${number} Sec` | `${number} s` | `${number} Milliseconds` | `${number} Millisecond` | `${number} Msecs` | `${number} Msec` | `${number} Ms` | `${number} YEARS` | `${number} YEAR` | `${number} YRS` | `${number} YR` | `${number} WEEKS` | `${number} WEEK` | `${number} DAYS` | `${number} DAY` | `${number} HOURS` | `${number} HOUR` | `${number} HRS` | `${number} HR` | `${number} MINUTES` | `${number} MINUTE` | `${number} MINS` | `${number} MIN` | `${number} SECONDS` | `${number} SECOND` | `${number} SECS` | `${number} SEC` | `${number} S` | `${number} MILLISECONDS` | `${number} MILLISECOND` | `${number} MSECS` | `${number} MSEC` | `${number} MS` | `${number} years` | `${number} year` | `${number} yrs` | `${number} yr` | `${number} y` | `${number} weeks` | `${number} week` | `${number} w` | `${number} days` | `${number} day` | `${number} d` | `${number} hours` | `${number} hour` | `${number} hrs` | `${number} hr` | `${number} h` | `${number} minutes` | `${number} minute` | `${number} mins` | `${number} min` | `${number} m` | `${number} seconds` | `${number} second` | `${number} secs` | `${number} sec` | `${number} milliseconds` | `${number} millisecond` | `${number} msecs` | `${number} msec` | `${number} ms`, string>>;
148
+ IDP_OWOX_JWT_ALGORITHM: z.ZodDefault<z.ZodEnum<["RS256"]>>;
149
+ }, "strip", z.ZodTypeAny, {
150
+ IDP_OWOX_JWT_CLOCK_TOLERANCE: string;
151
+ IDP_OWOX_JWT_ISSUER: string;
152
+ IDP_OWOX_JWT_ALGORITHM: "RS256";
153
+ IDP_OWOX_JWT_CACHE_TTL?: `${number}` | `${number}Years` | `${number}Year` | `${number}Yrs` | `${number}Yr` | `${number}Y` | `${number}Weeks` | `${number}Week` | `${number}W` | `${number}Days` | `${number}Day` | `${number}D` | `${number}Hours` | `${number}Hour` | `${number}Hrs` | `${number}Hr` | `${number}H` | `${number}Minutes` | `${number}Minute` | `${number}Mins` | `${number}Min` | `${number}M` | `${number}Seconds` | `${number}Second` | `${number}Secs` | `${number}Sec` | `${number}s` | `${number}Milliseconds` | `${number}Millisecond` | `${number}Msecs` | `${number}Msec` | `${number}Ms` | `${number}YEARS` | `${number}YEAR` | `${number}YRS` | `${number}YR` | `${number}WEEKS` | `${number}WEEK` | `${number}DAYS` | `${number}DAY` | `${number}HOURS` | `${number}HOUR` | `${number}HRS` | `${number}HR` | `${number}MINUTES` | `${number}MINUTE` | `${number}MINS` | `${number}MIN` | `${number}SECONDS` | `${number}SECOND` | `${number}SECS` | `${number}SEC` | `${number}S` | `${number}MILLISECONDS` | `${number}MILLISECOND` | `${number}MSECS` | `${number}MSEC` | `${number}MS` | `${number}years` | `${number}year` | `${number}yrs` | `${number}yr` | `${number}y` | `${number}weeks` | `${number}week` | `${number}w` | `${number}days` | `${number}day` | `${number}d` | `${number}hours` | `${number}hour` | `${number}hrs` | `${number}hr` | `${number}h` | `${number}minutes` | `${number}minute` | `${number}mins` | `${number}min` | `${number}m` | `${number}seconds` | `${number}second` | `${number}secs` | `${number}sec` | `${number}milliseconds` | `${number}millisecond` | `${number}msecs` | `${number}msec` | `${number}ms` | `${number} Years` | `${number} Year` | `${number} Yrs` | `${number} Yr` | `${number} Y` | `${number} Weeks` | `${number} Week` | `${number} W` | `${number} Days` | `${number} Day` | `${number} D` | `${number} Hours` | `${number} Hour` | `${number} Hrs` | `${number} Hr` | `${number} H` | `${number} Minutes` | `${number} Minute` | `${number} Mins` | `${number} Min` | `${number} M` | `${number} Seconds` | `${number} Second` | `${number} Secs` | `${number} Sec` | `${number} s` | `${number} Milliseconds` | `${number} Millisecond` | `${number} Msecs` | `${number} Msec` | `${number} Ms` | `${number} YEARS` | `${number} YEAR` | `${number} YRS` | `${number} YR` | `${number} WEEKS` | `${number} WEEK` | `${number} DAYS` | `${number} DAY` | `${number} HOURS` | `${number} HOUR` | `${number} HRS` | `${number} HR` | `${number} MINUTES` | `${number} MINUTE` | `${number} MINS` | `${number} MIN` | `${number} SECONDS` | `${number} SECOND` | `${number} SECS` | `${number} SEC` | `${number} S` | `${number} MILLISECONDS` | `${number} MILLISECOND` | `${number} MSECS` | `${number} MSEC` | `${number} MS` | `${number} years` | `${number} year` | `${number} yrs` | `${number} yr` | `${number} y` | `${number} weeks` | `${number} week` | `${number} w` | `${number} days` | `${number} day` | `${number} d` | `${number} hours` | `${number} hour` | `${number} hrs` | `${number} hr` | `${number} h` | `${number} minutes` | `${number} minute` | `${number} mins` | `${number} min` | `${number} m` | `${number} seconds` | `${number} second` | `${number} secs` | `${number} sec` | `${number} milliseconds` | `${number} millisecond` | `${number} msecs` | `${number} msec` | `${number} ms` | undefined;
154
+ }, {
155
+ IDP_OWOX_JWT_ISSUER: string;
156
+ IDP_OWOX_JWT_CLOCK_TOLERANCE?: string | undefined;
157
+ IDP_OWOX_JWT_CACHE_TTL?: string | undefined;
158
+ IDP_OWOX_JWT_ALGORITHM?: "RS256" | undefined;
159
+ }>, {
160
+ clockTolerance: string;
161
+ issuer: string;
162
+ jwtKeyCacheTtl: `${number}` | `${number}Years` | `${number}Year` | `${number}Yrs` | `${number}Yr` | `${number}Y` | `${number}Weeks` | `${number}Week` | `${number}W` | `${number}Days` | `${number}Day` | `${number}D` | `${number}Hours` | `${number}Hour` | `${number}Hrs` | `${number}Hr` | `${number}H` | `${number}Minutes` | `${number}Minute` | `${number}Mins` | `${number}Min` | `${number}M` | `${number}Seconds` | `${number}Second` | `${number}Secs` | `${number}Sec` | `${number}s` | `${number}Milliseconds` | `${number}Millisecond` | `${number}Msecs` | `${number}Msec` | `${number}Ms` | `${number}YEARS` | `${number}YEAR` | `${number}YRS` | `${number}YR` | `${number}WEEKS` | `${number}WEEK` | `${number}DAYS` | `${number}DAY` | `${number}HOURS` | `${number}HOUR` | `${number}HRS` | `${number}HR` | `${number}MINUTES` | `${number}MINUTE` | `${number}MINS` | `${number}MIN` | `${number}SECONDS` | `${number}SECOND` | `${number}SECS` | `${number}SEC` | `${number}S` | `${number}MILLISECONDS` | `${number}MILLISECOND` | `${number}MSECS` | `${number}MSEC` | `${number}MS` | `${number}years` | `${number}year` | `${number}yrs` | `${number}yr` | `${number}y` | `${number}weeks` | `${number}week` | `${number}w` | `${number}days` | `${number}day` | `${number}d` | `${number}hours` | `${number}hour` | `${number}hrs` | `${number}hr` | `${number}h` | `${number}minutes` | `${number}minute` | `${number}mins` | `${number}min` | `${number}m` | `${number}seconds` | `${number}second` | `${number}secs` | `${number}sec` | `${number}milliseconds` | `${number}millisecond` | `${number}msecs` | `${number}msec` | `${number}ms` | `${number} Years` | `${number} Year` | `${number} Yrs` | `${number} Yr` | `${number} Y` | `${number} Weeks` | `${number} Week` | `${number} W` | `${number} Days` | `${number} Day` | `${number} D` | `${number} Hours` | `${number} Hour` | `${number} Hrs` | `${number} Hr` | `${number} H` | `${number} Minutes` | `${number} Minute` | `${number} Mins` | `${number} Min` | `${number} M` | `${number} Seconds` | `${number} Second` | `${number} Secs` | `${number} Sec` | `${number} s` | `${number} Milliseconds` | `${number} Millisecond` | `${number} Msecs` | `${number} Msec` | `${number} Ms` | `${number} YEARS` | `${number} YEAR` | `${number} YRS` | `${number} YR` | `${number} WEEKS` | `${number} WEEK` | `${number} DAYS` | `${number} DAY` | `${number} HOURS` | `${number} HOUR` | `${number} HRS` | `${number} HR` | `${number} MINUTES` | `${number} MINUTE` | `${number} MINS` | `${number} MIN` | `${number} SECONDS` | `${number} SECOND` | `${number} SECS` | `${number} SEC` | `${number} S` | `${number} MILLISECONDS` | `${number} MILLISECOND` | `${number} MSECS` | `${number} MSEC` | `${number} MS` | `${number} years` | `${number} year` | `${number} yrs` | `${number} yr` | `${number} y` | `${number} weeks` | `${number} week` | `${number} w` | `${number} days` | `${number} day` | `${number} d` | `${number} hours` | `${number} hour` | `${number} hrs` | `${number} hr` | `${number} h` | `${number} minutes` | `${number} minute` | `${number} mins` | `${number} min` | `${number} m` | `${number} seconds` | `${number} second` | `${number} secs` | `${number} sec` | `${number} milliseconds` | `${number} millisecond` | `${number} msecs` | `${number} msec` | `${number} ms`;
163
+ algorithm: "RS256";
164
+ }, {
165
+ IDP_OWOX_JWT_ISSUER: string;
166
+ IDP_OWOX_JWT_CLOCK_TOLERANCE?: string | undefined;
167
+ IDP_OWOX_JWT_CACHE_TTL?: string | undefined;
168
+ IDP_OWOX_JWT_ALGORITHM?: "RS256" | undefined;
169
+ }>;
170
+ export type DbConfig = z.infer<typeof DbEnvSchema>;
171
+ export type SqliteConfig = Extract<DbConfig, {
172
+ type: 'sqlite';
173
+ }>['sqlite'];
174
+ export type MysqlConfig = Extract<DbConfig, {
175
+ type: 'mysql';
176
+ }>['mysql'];
177
+ export type IdentityOwoxClientConfig = z.infer<typeof IdentityOwoxClientEnvSchema>;
178
+ export type IdpConfig = z.infer<typeof IdpEnvSchema>;
179
+ export type JwtConfig = z.infer<typeof JwtEnvSchema>;
180
+ export type IdpOwoxConfig = {
181
+ idpConfig: IdpConfig;
182
+ identityOwoxClientConfig: IdentityOwoxClientConfig;
183
+ jwtConfig: JwtConfig;
184
+ dbConfig: DbConfig;
185
+ };
186
+ /**
187
+ * Load the full IdpOwoxConfig from process env.
188
+ * Throws on validation errors; ensures JWT_ALGORITHM is RS256.
189
+ */
190
+ export declare function loadIdpOwoxConfigFromEnv(env?: NodeJS.ProcessEnv): IdpOwoxConfig;
191
+ export {};
192
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,MAAM,IAAI,CAAC;AAmEpB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6CtB,CAAC;AAEH,wBAAgB,mBAAmB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB;;;;;;;;;;;;;;;;;;;;;EAGvE;AAED,gDAAgD;AAEhD,QAAA,MAAM,2BAA2B;;;;;;;;;;;;;;;mBAaoB,EAAE,CAAC,WAAW;;;;;EAE/D,CAAC;AAEL,sDAAsD;AAEtD,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;EAYb,CAAC;AAEN,uCAAuC;AAEvC,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;EAYb,CAAC;AAEN,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AACnD,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC3E,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC,OAAO,CAAC,CAAC;AAExE,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AACnF,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AACrD,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAErD,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,EAAE,SAAS,CAAC;IACrB,wBAAwB,EAAE,wBAAwB,CAAC;IACnD,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,aAAa,CAgB5F"}
package/dist/config.js ADDED
@@ -0,0 +1,174 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DbEnvSchema = void 0;
7
+ exports.loadDbConfigFromEnv = loadDbConfigFromEnv;
8
+ exports.loadIdpOwoxConfigFromEnv = loadIdpOwoxConfigFromEnv;
9
+ const zod_1 = require("zod");
10
+ const ms_1 = __importDefault(require("ms"));
11
+ const env_paths_1 = __importDefault(require("env-paths"));
12
+ const path_1 = require("path");
13
+ const fs_1 = require("fs");
14
+ const zMsString = zod_1.z
15
+ .string()
16
+ .refine((s) => (0, ms_1.default)(s) !== undefined, {
17
+ message: 'Invalid duration string',
18
+ })
19
+ .transform(s => s);
20
+ const parseCommaString = zod_1.z.string().transform(s => s
21
+ .split(',')
22
+ .map(x => x.trim())
23
+ .filter(Boolean));
24
+ function normalizeSsl(input) {
25
+ if (input == null || input === false)
26
+ return undefined;
27
+ if (input === true)
28
+ return {};
29
+ if (typeof input === 'string')
30
+ return input;
31
+ return undefined;
32
+ }
33
+ function getSqliteDefaultDbPath() {
34
+ const paths = (0, env_paths_1.default)('owox', { suffix: '' });
35
+ const dbPath = (0, path_1.join)(paths.data, 'sqlite', 'idp-owox.db');
36
+ const dbDir = (0, path_1.dirname)(dbPath);
37
+ if (!(0, fs_1.existsSync)(dbDir)) {
38
+ try {
39
+ (0, fs_1.mkdirSync)(dbDir, { recursive: true });
40
+ }
41
+ catch (error) {
42
+ throw new Error(`Failed to create SQLite database directory: ${dbDir}. ${error instanceof Error ? error.message : error}`);
43
+ }
44
+ }
45
+ return dbPath;
46
+ }
47
+ /** ---------- DB env (discriminated by IDP_OWOX_DB_TYPE) ---------- */
48
+ const SqliteEnvRaw = zod_1.z.object({
49
+ IDP_OWOX_DB_TYPE: zod_1.z.literal('sqlite'),
50
+ IDP_OWOX_SQLITE_DB_PATH: zod_1.z.string().optional(),
51
+ IDP_OWOX_SQLITE_PRAGMA: zod_1.z.string().optional(),
52
+ });
53
+ const MysqlEnvRaw = zod_1.z.object({
54
+ IDP_OWOX_DB_TYPE: zod_1.z.literal('mysql'),
55
+ IDP_OWOX_MYSQL_HOST: zod_1.z.string().min(1, 'IDP_OWOX_MYSQL_HOST is required'),
56
+ IDP_OWOX_MYSQL_USER: zod_1.z.string().min(1, 'IDP_OWOX_MYSQL_USER is required'),
57
+ IDP_OWOX_MYSQL_PASSWORD: zod_1.z.string().min(1, 'IDP_OWOX_MYSQL_PASSWORD is required'),
58
+ IDP_OWOX_MYSQL_DB: zod_1.z.string().min(1, 'IDP_OWOX_MYSQL_DB is required'),
59
+ IDP_OWOX_MYSQL_PORT: zod_1.z.string().optional(),
60
+ IDP_OWOX_MYSQL_CONNECTION_LIMIT: zod_1.z.string().optional(),
61
+ IDP_OWOX_MYSQL_SSL: zod_1.z.string().optional(),
62
+ });
63
+ const DbEnvRaw = zod_1.z.discriminatedUnion('IDP_OWOX_DB_TYPE', [SqliteEnvRaw, MysqlEnvRaw]);
64
+ exports.DbEnvSchema = DbEnvRaw.transform(e => {
65
+ if (e.IDP_OWOX_DB_TYPE === 'sqlite') {
66
+ const dbPath = e.IDP_OWOX_SQLITE_DB_PATH ?? getSqliteDefaultDbPath();
67
+ console.log(`idp-owox SQLite database path: ${dbPath}`);
68
+ return {
69
+ type: 'sqlite',
70
+ sqlite: {
71
+ type: 'sqlite',
72
+ dbPath,
73
+ pragma: e.IDP_OWOX_SQLITE_PRAGMA
74
+ ? parseCommaString.parse(e.IDP_OWOX_SQLITE_PRAGMA)
75
+ : undefined,
76
+ },
77
+ };
78
+ }
79
+ // mysql branch
80
+ const port = e.IDP_OWOX_MYSQL_PORT ? Number(e.IDP_OWOX_MYSQL_PORT) : undefined;
81
+ const connectionLimit = e.IDP_OWOX_MYSQL_CONNECTION_LIMIT
82
+ ? Number(e.IDP_OWOX_MYSQL_CONNECTION_LIMIT)
83
+ : undefined;
84
+ let sslRaw = undefined;
85
+ if (e.IDP_OWOX_MYSQL_SSL) {
86
+ try {
87
+ sslRaw = JSON.parse(e.IDP_OWOX_MYSQL_SSL);
88
+ }
89
+ catch {
90
+ sslRaw = e.IDP_OWOX_MYSQL_SSL;
91
+ }
92
+ }
93
+ return {
94
+ type: 'mysql',
95
+ mysql: {
96
+ type: 'mysql',
97
+ host: e.IDP_OWOX_MYSQL_HOST,
98
+ port,
99
+ user: e.IDP_OWOX_MYSQL_USER,
100
+ password: e.IDP_OWOX_MYSQL_PASSWORD,
101
+ database: e.IDP_OWOX_MYSQL_DB,
102
+ connectionLimit,
103
+ ssl: normalizeSsl(sslRaw),
104
+ },
105
+ };
106
+ });
107
+ function loadDbConfigFromEnv(env = process.env) {
108
+ const IDP_OWOX_DB_TYPE = (env.IDP_OWOX_DB_TYPE ?? 'sqlite').toLowerCase();
109
+ return exports.DbEnvSchema.parse({ ...env, IDP_OWOX_DB_TYPE });
110
+ }
111
+ /** ---------- IdentityOwox client ---------- */
112
+ const IdentityOwoxClientEnvSchema = zod_1.z
113
+ .object({
114
+ IDP_OWOX_BASE_URL: zod_1.z.string().url({ message: 'IDP_OWOX_BASE_URL must be a valid URL' }),
115
+ IDP_OWOX_DEFAULT_HEADERS: zod_1.z.string().optional(),
116
+ IDP_OWOX_TIMEOUT: zMsString.optional(),
117
+ })
118
+ .transform(e => {
119
+ const defaultHeaders = e.IDP_OWOX_DEFAULT_HEADERS
120
+ ? JSON.parse(e.IDP_OWOX_DEFAULT_HEADERS)
121
+ : undefined;
122
+ return {
123
+ baseUrl: e.IDP_OWOX_BASE_URL,
124
+ defaultHeaders,
125
+ clientTimeout: (e.IDP_OWOX_TIMEOUT ?? '3s'),
126
+ };
127
+ });
128
+ /** ---------- IDP (frontend/app) config ---------- */
129
+ const IdpEnvSchema = zod_1.z
130
+ .object({
131
+ IDP_OWOX_CLIENT_ID: zod_1.z.string().min(1, 'IDP_OWOX_CLIENT_ID is required'),
132
+ IDP_OWOX_PLATFORM_SIGN_IN_URL: zod_1.z
133
+ .string()
134
+ .url({ message: 'IDP_OWOX_PLATFORM_SIGN_IN_URL must be a valid URL' }),
135
+ IDP_OWOX_CALLBACK_URL: zod_1.z.string().min(1, 'IDP_OWOX_CALLBACK_URL is required'),
136
+ })
137
+ .transform(e => ({
138
+ clientId: e.IDP_OWOX_CLIENT_ID,
139
+ platformSignInUrl: e.IDP_OWOX_PLATFORM_SIGN_IN_URL,
140
+ callbackUrl: e.IDP_OWOX_CALLBACK_URL,
141
+ }));
142
+ /** ---------- JWT config ---------- */
143
+ const JwtEnvSchema = zod_1.z
144
+ .object({
145
+ IDP_OWOX_JWT_CLOCK_TOLERANCE: zod_1.z.string().default('5s'),
146
+ IDP_OWOX_JWT_ISSUER: zod_1.z.string().min(1, 'IDP_OWOX_JWT_ISSUER is required'),
147
+ IDP_OWOX_JWT_CACHE_TTL: zMsString.optional(),
148
+ IDP_OWOX_JWT_ALGORITHM: zod_1.z.enum(['RS256']).default('RS256'),
149
+ })
150
+ .transform(e => ({
151
+ clockTolerance: e.IDP_OWOX_JWT_CLOCK_TOLERANCE || '5s',
152
+ issuer: e.IDP_OWOX_JWT_ISSUER,
153
+ jwtKeyCacheTtl: e.IDP_OWOX_JWT_CACHE_TTL ?? '1h',
154
+ algorithm: e.IDP_OWOX_JWT_ALGORITHM,
155
+ }));
156
+ /**
157
+ * Load the full IdpOwoxConfig from process env.
158
+ * Throws on validation errors; ensures JWT_ALGORITHM is RS256.
159
+ */
160
+ function loadIdpOwoxConfigFromEnv(env = process.env) {
161
+ const dbConfig = loadDbConfigFromEnv(env);
162
+ const identityOwoxClientConfig = IdentityOwoxClientEnvSchema.parse(env);
163
+ const idpConfig = IdpEnvSchema.parse(env);
164
+ const jwtConfig = JwtEnvSchema.parse(env);
165
+ if (jwtConfig.algorithm !== 'RS256') {
166
+ throw new Error(`Only RS256 is supported, got: ${jwtConfig.algorithm}`);
167
+ }
168
+ return {
169
+ idpConfig,
170
+ identityOwoxClientConfig,
171
+ jwtConfig,
172
+ dbConfig,
173
+ };
174
+ }
@@ -0,0 +1,3 @@
1
+ export { OwoxIdp } from './owoxIdp';
2
+ export { loadIdpOwoxConfigFromEnv } from './config';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC"}