@schemavaults/auth-server-sdk 0.17.9 → 0.17.20

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 (75) hide show
  1. package/dist/JwtKeyManager/DatabaseConnectedJwtKeyManager.d.ts +3 -6
  2. package/dist/JwtKeyManager/DatabaseConnectedJwtKeyManager.js +5 -7
  3. package/dist/JwtKeyManager/DatabaseConnectedJwtKeyManager.js.map +1 -1
  4. package/dist/JwtKeyManager/JsonWebKeySetsStore/AbstractJsonWebKeySetsStore.d.ts +3 -5
  5. package/dist/JwtKeyManager/JsonWebKeySetsStore/AbstractJsonWebKeySetsStore.js +20 -3
  6. package/dist/JwtKeyManager/JsonWebKeySetsStore/AbstractJsonWebKeySetsStore.js.map +1 -1
  7. package/dist/JwtKeyManager/JsonWebKeySetsStore/MockJwtKeySetsStore.d.ts +2 -2
  8. package/dist/JwtKeyManager/JwtDecodingKeysetNotFoundError.d.ts +8 -0
  9. package/dist/JwtKeyManager/JwtDecodingKeysetNotFoundError.js +20 -0
  10. package/dist/JwtKeyManager/JwtDecodingKeysetNotFoundError.js.map +1 -0
  11. package/dist/JwtKeyManager/RemoteJwtKeyManager/RemoteJwtKeyManager.d.ts +2 -1
  12. package/dist/JwtKeyManager/RemoteJwtKeyManager/RemoteJwtKeyManager.js +11 -0
  13. package/dist/JwtKeyManager/RemoteJwtKeyManager/RemoteJwtKeyManager.js.map +1 -1
  14. package/dist/JwtKeyManager/RemoteJwtKeyManager/jwksEndpoint.d.ts +2 -0
  15. package/dist/JwtKeyManager/RemoteJwtKeyManager/jwksEndpoint.js +11 -0
  16. package/dist/JwtKeyManager/RemoteJwtKeyManager/jwksEndpoint.js.map +1 -0
  17. package/dist/JwtKeyManager/RemoteJwtKeyManager/loadRemoteJwks.d.ts +5 -3
  18. package/dist/JwtKeyManager/RemoteJwtKeyManager/loadRemoteJwks.js +36 -9
  19. package/dist/JwtKeyManager/RemoteJwtKeyManager/loadRemoteJwks.js.map +1 -1
  20. package/dist/JwtKeyManager/index.d.ts +6 -5
  21. package/dist/JwtKeyManager/index.js +5 -4
  22. package/dist/JwtKeyManager/index.js.map +1 -1
  23. package/dist/JwtKeyManager/loadJwtDecodingKeys.d.ts +2 -1
  24. package/dist/JwtKeyManager/loadJwtDecodingKeys.js +26 -11
  25. package/dist/JwtKeyManager/loadJwtDecodingKeys.js.map +1 -1
  26. package/dist/MaximumBrowserCookieSize.d.ts +1 -1
  27. package/dist/MaximumBrowserCookieSize.js +1 -1
  28. package/dist/MaximumBrowserCookieSize.js.map +1 -1
  29. package/dist/NextjsAppDirectoryPlugin/NextjsAppDirectoryPlugin.d.ts +5 -0
  30. package/dist/NextjsAppDirectoryPlugin/NextjsAppDirectoryPlugin.js +8 -0
  31. package/dist/NextjsAppDirectoryPlugin/NextjsAppDirectoryPlugin.js.map +1 -0
  32. package/dist/NextjsAppDirectoryPlugin/codegen.d.ts +4 -0
  33. package/dist/NextjsAppDirectoryPlugin/codegen.js +80 -0
  34. package/dist/NextjsAppDirectoryPlugin/codegen.js.map +1 -0
  35. package/dist/NextjsAppDirectoryPlugin/index.d.ts +2 -0
  36. package/dist/NextjsAppDirectoryPlugin/index.js +2 -0
  37. package/dist/NextjsAppDirectoryPlugin/index.js.map +1 -0
  38. package/dist/NextjsAppDirectoryPlugin/resolve-app-directory.d.ts +1 -0
  39. package/dist/NextjsAppDirectoryPlugin/resolve-app-directory.js +29 -0
  40. package/dist/NextjsAppDirectoryPlugin/resolve-app-directory.js.map +1 -0
  41. package/dist/NextjsAppDirectoryPlugin/resolve-codegen-templates-directory.d.ts +1 -0
  42. package/dist/NextjsAppDirectoryPlugin/resolve-codegen-templates-directory.js +6 -0
  43. package/dist/NextjsAppDirectoryPlugin/resolve-codegen-templates-directory.js.map +1 -0
  44. package/dist/auth-server-error-message-catalog.d.ts +1 -1
  45. package/dist/auth-server-error-message-catalog.js +2 -0
  46. package/dist/auth-server-error-message-catalog.js.map +1 -1
  47. package/dist/codegen-templates/auth/auth-provider.tsx +48 -0
  48. package/dist/codegen-templates/auth/authorize/page.tsx +54 -0
  49. package/dist/codegen-templates/auth/login/page.tsx +27 -0
  50. package/dist/codegen-templates/auth/logout/page.tsx +11 -0
  51. package/dist/codegen-templates/auth/register/page.tsx +29 -0
  52. package/dist/env/loadApiServerId.d.ts +2 -0
  53. package/dist/env/loadApiServerId.js +17 -0
  54. package/dist/env/loadApiServerId.js.map +1 -0
  55. package/dist/env/loadJwksAccessPrivateKey.d.ts +1 -0
  56. package/dist/env/loadJwksAccessPrivateKey.js +33 -0
  57. package/dist/env/loadJwksAccessPrivateKey.js.map +1 -0
  58. package/dist/get-app-environment.d.ts +2 -0
  59. package/dist/get-app-environment.js +2 -0
  60. package/dist/get-app-environment.js.map +1 -0
  61. package/dist/get-schemavaults-client-application-id.d.ts +10 -0
  62. package/dist/get-schemavaults-client-application-id.js +21 -0
  63. package/dist/get-schemavaults-client-application-id.js.map +1 -0
  64. package/dist/index.d.ts +4 -0
  65. package/dist/index.js +2 -0
  66. package/dist/index.js.map +1 -1
  67. package/dist/is-valid-uuid.d.ts +1 -0
  68. package/dist/is-valid-uuid.js +7 -0
  69. package/dist/is-valid-uuid.js.map +1 -0
  70. package/dist/middleware/server-middleware.d.ts +2 -1
  71. package/dist/middleware/server-middleware.js +3 -2
  72. package/dist/middleware/server-middleware.js.map +1 -1
  73. package/dist/route_guards/route-guard-factory.js +20 -8
  74. package/dist/route_guards/route-guard-factory.js.map +1 -1
  75. package/package.json +19 -7
@@ -1,12 +1,9 @@
1
1
  import type { JWKS } from "@schemavaults/jwt";
2
2
  import type { IJsonWebKeySetsStore } from "./JsonWebKeySetsStore";
3
3
  import type { IJwtKeyManager } from "./IJwtKeyManager";
4
- import type { IDatabaseResourceGroup } from "../DatabaseResourceGroup";
5
- export declare class DatabaseConnectedJwtKeyManager implements IJwtKeyManager, IDatabaseResourceGroup {
6
- protected readonly store: IJsonWebKeySetsStore & IDatabaseResourceGroup;
7
- constructor(store: IJsonWebKeySetsStore & IDatabaseResourceGroup);
4
+ export declare abstract class DatabaseConnectedJwtKeyManager implements IJwtKeyManager {
5
+ protected readonly store: IJsonWebKeySetsStore;
6
+ constructor(store: IJsonWebKeySetsStore);
8
7
  loadJwks(audienceId: string): Promise<JWKS>;
9
- hasBeenInitialized(): Promise<boolean>;
10
- performSetupTasks(): Promise<void>;
11
8
  }
12
9
  export default DatabaseConnectedJwtKeyManager;
@@ -4,13 +4,11 @@ export class DatabaseConnectedJwtKeyManager {
4
4
  this.store = store;
5
5
  }
6
6
  async loadJwks(audienceId) {
7
- return await this.store.getJwks(audienceId);
8
- }
9
- async hasBeenInitialized() {
10
- return await this.store.hasBeenInitialized();
11
- }
12
- async performSetupTasks() {
13
- return await this.store.performSetupTasks();
7
+ const jwks = await this.store.getJwks(audienceId);
8
+ if (!("keys" in jwks) || !Array.isArray(jwks.keys)) {
9
+ throw new TypeError("Expected loaded JWKS to have a 'keys' array property!");
10
+ }
11
+ return jwks;
14
12
  }
15
13
  }
16
14
  export default DatabaseConnectedJwtKeyManager;
@@ -1 +1 @@
1
- {"version":3,"file":"DatabaseConnectedJwtKeyManager.js","sourceRoot":"","sources":["../../src/JwtKeyManager/DatabaseConnectedJwtKeyManager.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,8BAA8B;IAGtB,KAAK,CAAgD;IAExE,YAAmB,KAAoD;QACrE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,UAAkB;QACtC,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IAEM,KAAK,CAAC,kBAAkB;QAC7B,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC;IAC/C,CAAC;IAEM,KAAK,CAAC,iBAAiB;QAC5B,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;IAC9C,CAAC;CACF;AAED,eAAe,8BAA8B,CAAC"}
1
+ {"version":3,"file":"DatabaseConnectedJwtKeyManager.js","sourceRoot":"","sources":["../../src/JwtKeyManager/DatabaseConnectedJwtKeyManager.ts"],"names":[],"mappings":"AAIA,MAAM,OAAgB,8BAA8B;IAC/B,KAAK,CAAuB;IAE/C,YAAmB,KAA2B;QAC5C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,UAAkB;QACtC,MAAM,IAAI,GAAS,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,SAAS,CACjB,uDAAuD,CACxD,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,eAAe,8BAA8B,CAAC"}
@@ -1,16 +1,14 @@
1
+ import { type ApiServerId } from "@schemavaults/app-definitions";
1
2
  import type { IJsonWebKeySetsStore } from "./IJsonWebKeySetsStore";
2
3
  import { to_public_jwks, type I_JWT_Keys } from "@schemavaults/jwt";
3
- import type { IDatabaseResourceGroup } from "../../DatabaseResourceGroup";
4
4
  type JWKS = Awaited<ReturnType<typeof to_public_jwks>>;
5
- export declare abstract class AbstractJsonWebKeySetsStore implements IJsonWebKeySetsStore, IDatabaseResourceGroup {
5
+ export declare abstract class AbstractJsonWebKeySetsStore implements IJsonWebKeySetsStore {
6
6
  abstract get(audienceId: string, keySetId: string): Promise<I_JWT_Keys | null>;
7
7
  abstract has(audienceId: string, keySetId: string): Promise<boolean>;
8
8
  abstract storeKeySet(keys: I_JWT_Keys): Promise<void>;
9
9
  abstract delete(audienceId: string, keySetId: string): Promise<void>;
10
10
  abstract listActiveKeySets(audienceId: string, currentTimestamp?: number): Promise<readonly I_JWT_Keys[]>;
11
11
  abstract clearOutdatedKeySets(currentTimestamp?: number): Promise<void>;
12
- getJwks(audienceId: string): Promise<JWKS>;
13
- abstract hasBeenInitialized(): Promise<boolean>;
14
- abstract performSetupTasks(): Promise<void>;
12
+ getJwks(audienceId: ApiServerId): Promise<JWKS>;
15
13
  }
16
14
  export default AbstractJsonWebKeySetsStore;
@@ -1,13 +1,30 @@
1
- import { apiServerIdSchema } from "@schemavaults/app-definitions";
1
+ import { apiServerIdSchema, } from "@schemavaults/app-definitions";
2
2
  import { to_public_jwks } from "@schemavaults/jwt";
3
3
  export class AbstractJsonWebKeySetsStore {
4
4
  async getJwks(audienceId) {
5
5
  if (!apiServerIdSchema.safeParse(audienceId).success) {
6
6
  throw new Error("Invalid audience ID to load JWKS for!");
7
7
  }
8
- const keysets = await this.listActiveKeySets(audienceId);
8
+ let keysets;
9
+ try {
10
+ keysets = await this.listActiveKeySets(audienceId);
11
+ }
12
+ catch (e) {
13
+ console.error(`There was an error listing the active keysets for audience '${audienceId}':`, e);
14
+ throw new Error(`There was an error listing the active keysets for audience '${audienceId}'`);
15
+ }
16
+ if (!Array.isArray(keysets)) {
17
+ throw new TypeError("Expected result of 'listActiveKeySets' to be an array!");
18
+ }
19
+ if (keysets.length === 0) {
20
+ console.warn(`[AbstractJsonWebKeySetsStore::getJwks(audience_id='${audienceId}')] listActiveKeySets returned an empty array!`);
21
+ }
9
22
  const jwks_promise = to_public_jwks(keysets);
10
- return await jwks_promise;
23
+ const jwks = await jwks_promise;
24
+ if (!("keys" in jwks) || !Array.isArray(jwks.keys)) {
25
+ throw new TypeError("Expected loaded JWKS to have a 'keys' array property!");
26
+ }
27
+ return jwks;
11
28
  }
12
29
  }
13
30
  export default AbstractJsonWebKeySetsStore;
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractJsonWebKeySetsStore.js","sourceRoot":"","sources":["../../../src/JwtKeyManager/JsonWebKeySetsStore/AbstractJsonWebKeySetsStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,OAAO,EAAE,cAAc,EAAmB,MAAM,mBAAmB,CAAC;AAKpE,MAAM,OAAgB,2BAA2B;IAgBxC,KAAK,CAAC,OAAO,CAAC,UAAkB;QACrC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,OAAO,GACX,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAC3C,MAAM,YAAY,GAAkB,cAAc,CAAC,OAAO,CAAC,CAAC;QAC5D,OAAO,MAAM,YAAY,CAAC;IAC5B,CAAC;CAIF;AAED,eAAe,2BAA2B,CAAC"}
1
+ {"version":3,"file":"AbstractJsonWebKeySetsStore.js","sourceRoot":"","sources":["../../../src/JwtKeyManager/JsonWebKeySetsStore/AbstractJsonWebKeySetsStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,GAClB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,cAAc,EAAmB,MAAM,mBAAmB,CAAC;AAIpE,MAAM,OAAgB,2BAA2B;IAgBxC,KAAK,CAAC,OAAO,CAAC,UAAuB;QAC1C,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,OAA8B,CAAC;QACnC,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CACX,+DAA+D,UAAU,IAAI,EAC7E,CAAC,CACF,CAAC;YACF,MAAM,IAAI,KAAK,CACb,+DAA+D,UAAU,GAAG,CAC7E,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,SAAS,CACjB,wDAAwD,CACzD,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CACV,sDAAsD,UAAU,gDAAgD,CACjH,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAkB,cAAc,CAAC,OAAO,CAAC,CAAC;QAC5D,MAAM,IAAI,GAAS,MAAM,YAAY,CAAC;QACtC,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,SAAS,CACjB,uDAAuD,CACxD,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,eAAe,2BAA2B,CAAC"}
@@ -1,6 +1,6 @@
1
- import { I_JWT_Keys } from "@schemavaults/jwt";
1
+ import type { I_JWT_Keys } from "@schemavaults/jwt";
2
2
  import AbstractJsonWebKeySetsStore from "./AbstractJsonWebKeySetsStore";
3
- import { IJsonWebKeySetsStore } from "./IJsonWebKeySetsStore";
3
+ import type { IJsonWebKeySetsStore } from "./IJsonWebKeySetsStore";
4
4
  export declare class MockJwtKeySetsStore extends AbstractJsonWebKeySetsStore implements IJsonWebKeySetsStore {
5
5
  hasBeenInitialized(): Promise<boolean>;
6
6
  performSetupTasks(): Promise<void>;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @description Thrown when a JWT keyset with a given 'keyset_id' cannot be found!
3
+ */
4
+ export declare class JwtDecodingKeysetNotFoundError extends Error {
5
+ readonly keyset_id: string;
6
+ constructor(keyset_id: string, message: string);
7
+ }
8
+ export default JwtDecodingKeysetNotFoundError;
@@ -0,0 +1,20 @@
1
+ // JwtDecodingKeysetNotFoundError.ts
2
+ import isValidUuid from "../is-valid-uuid";
3
+ /**
4
+ * @description Thrown when a JWT keyset with a given 'keyset_id' cannot be found!
5
+ */
6
+ export class JwtDecodingKeysetNotFoundError extends Error {
7
+ keyset_id;
8
+ constructor(keyset_id, message) {
9
+ super(message);
10
+ if (typeof keyset_id !== "string" || !isValidUuid(keyset_id)) {
11
+ throw new TypeError("Expected first argument to JwtDecodingKeysetNotFoundError to be a 'keyset_id' UUID string");
12
+ }
13
+ else if (typeof message !== "string") {
14
+ throw new TypeError("Expected second argument to JwtDecodingKeysetNotFoundError to be a 'message' string!");
15
+ }
16
+ this.keyset_id = keyset_id;
17
+ }
18
+ }
19
+ export default JwtDecodingKeysetNotFoundError;
20
+ //# sourceMappingURL=JwtDecodingKeysetNotFoundError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JwtDecodingKeysetNotFoundError.js","sourceRoot":"","sources":["../../src/JwtKeyManager/JwtDecodingKeysetNotFoundError.ts"],"names":[],"mappings":"AAAA,oCAAoC;AAEpC,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAE1C;;GAEG;AACH,MAAM,OAAO,8BAA+B,SAAQ,KAAK;IACvC,SAAS,CAAS;IAElC,YAAmB,SAAiB,EAAE,OAAe;QACnD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7D,MAAM,IAAI,SAAS,CACjB,2FAA2F,CAC5F,CAAC;QACJ,CAAC;aAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YACvC,MAAM,IAAI,SAAS,CACjB,sFAAsF,CACvF,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF;AAED,eAAe,8BAA8B,CAAC"}
@@ -1,11 +1,12 @@
1
1
  import type { IJwtKeyManager } from "../../JwtKeyManager/IJwtKeyManager";
2
2
  import type { JWKS } from "@schemavaults/jwt";
3
+ import { ApiServerId } from "@schemavaults/app-definitions";
3
4
  export interface IRemoteJwtKeyManagerConstructorOpts {
4
5
  auth_server_uri?: string;
5
6
  }
6
7
  export declare class RemoteJwtKeyManager implements IJwtKeyManager {
7
8
  private readonly auth_server_uri;
8
9
  constructor({ auth_server_uri, }: IRemoteJwtKeyManagerConstructorOpts);
9
- loadJwks(audienceId: string): Promise<JWKS>;
10
+ loadJwks(audienceId: ApiServerId): Promise<JWKS>;
10
11
  }
11
12
  export default RemoteJwtKeyManager;
@@ -1,6 +1,7 @@
1
1
  import loadRemoteJwks from "./loadRemoteJwks";
2
2
  import { apiServerIdSchema, SCHEMAVAULTS_AUTH_APP_DEFINITION, } from "@schemavaults/app-definitions";
3
3
  import getSchemaVaultsAuthServerUri from "../../get-schemavaults-auth-server-uri";
4
+ import loadJwksAccessPrivateKey from "../../env/loadJwksAccessPrivateKey";
4
5
  export class RemoteJwtKeyManager {
5
6
  auth_server_uri;
6
7
  constructor({ auth_server_uri = getSchemaVaultsAuthServerUri(), }) {
@@ -13,8 +14,18 @@ export class RemoteJwtKeyManager {
13
14
  if (audienceId === SCHEMAVAULTS_AUTH_APP_DEFINITION.app_id) {
14
15
  throw new Error(`Auth server doesn't need to load remote JWKS; it already has the keys.`);
15
16
  }
17
+ let jwks_access_private_key;
18
+ try {
19
+ jwks_access_private_key = await loadJwksAccessPrivateKey(process.env);
20
+ }
21
+ catch (e) {
22
+ console.error(e);
23
+ throw new TypeError("Failed to load JWKS access private key from environment variables!");
24
+ }
16
25
  return await loadRemoteJwks({
17
26
  auth_server_uri: this.auth_server_uri,
27
+ api_server_id: audienceId,
28
+ jwks_access_private_key,
18
29
  });
19
30
  }
20
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RemoteJwtKeyManager.js","sourceRoot":"","sources":["../../../src/JwtKeyManager/RemoteJwtKeyManager/RemoteJwtKeyManager.ts"],"names":[],"mappings":"AAEA,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,iBAAiB,EACjB,gCAAgC,GACjC,MAAM,+BAA+B,CAAC;AACvC,OAAO,4BAA4B,MAAM,oCAAoC,CAAC;AAM9E,MAAM,OAAO,mBAAmB;IACb,eAAe,CAAS;IAEzC,YAAmB,EACjB,eAAe,GAAG,4BAA4B,EAAE,GACZ;QACpC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IACzC,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,UAAkB;QACtC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CACb,8CAA8C,UAAU,GAAG,CAC5D,CAAC;QACJ,CAAC;QAED,IAAI,UAAU,KAAK,gCAAgC,CAAC,MAAM,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CACb,wEAAwE,CACzE,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,cAAc,CAAC;YAC1B,eAAe,EAAE,IAAI,CAAC,eAAe;SACtC,CAAC,CAAC;IACL,CAAC;CACF;AAED,eAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"RemoteJwtKeyManager.js","sourceRoot":"","sources":["../../../src/JwtKeyManager/RemoteJwtKeyManager/RemoteJwtKeyManager.ts"],"names":[],"mappings":"AAEA,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAEL,iBAAiB,EACjB,gCAAgC,GACjC,MAAM,+BAA+B,CAAC;AACvC,OAAO,4BAA4B,MAAM,oCAAoC,CAAC;AAC9E,OAAO,wBAAwB,MAAM,gCAAgC,CAAC;AAMtE,MAAM,OAAO,mBAAmB;IACb,eAAe,CAAS;IAEzC,YAAmB,EACjB,eAAe,GAAG,4BAA4B,EAAE,GACZ;QACpC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IACzC,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,UAAuB;QAC3C,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CACb,8CAA8C,UAAU,GAAG,CAC5D,CAAC;QACJ,CAAC;QAED,IAAI,UAAU,KAAK,gCAAgC,CAAC,MAAM,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CACb,wEAAwE,CACzE,CAAC;QACJ,CAAC;QAED,IAAI,uBAAkC,CAAC;QACvC,IAAI,CAAC;YACH,uBAAuB,GAAG,MAAM,wBAAwB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACxE,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACjB,MAAM,IAAI,SAAS,CACjB,oEAAoE,CACrE,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,cAAc,CAAC;YAC1B,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,aAAa,EAAE,UAAU;YACzB,uBAAuB;SACxB,CAAC,CAAC;IACL,CAAC;CACF;AAED,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { type ApiServerId } from "@schemavaults/app-definitions";
2
+ export default function jwksEndpoint<T extends ApiServerId>(api_server_id: T): `/api/jwks/${T}`;
@@ -0,0 +1,11 @@
1
+ import { apiServerIdSchema, SCHEMAVAULTS_AUTH_SERVER, } from "@schemavaults/app-definitions";
2
+ export default function jwksEndpoint(api_server_id) {
3
+ if (!apiServerIdSchema.safeParse(api_server_id).success) {
4
+ throw new TypeError("Invalid 'api_server_id' to load JWKS endpoint URL for!");
5
+ }
6
+ if (api_server_id === SCHEMAVAULTS_AUTH_SERVER.api_server_id) {
7
+ throw new Error("The auth server does not expose a JWKS endpoint.");
8
+ }
9
+ return `/api/jwks/${api_server_id}`;
10
+ }
11
+ //# sourceMappingURL=jwksEndpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwksEndpoint.js","sourceRoot":"","sources":["../../../src/JwtKeyManager/RemoteJwtKeyManager/jwksEndpoint.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,+BAA+B,CAAC;AAEvC,MAAM,CAAC,OAAO,UAAU,YAAY,CAClC,aAAgB;IAEhB,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,CAAC;QACxD,MAAM,IAAI,SAAS,CACjB,wDAAwD,CACzD,CAAC;IACJ,CAAC;IAED,IAAI,aAAa,KAAK,wBAAwB,CAAC,aAAa,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IAED,OAAO,aAAa,aAAa,EAAE,CAAC;AACtC,CAAC"}
@@ -1,7 +1,9 @@
1
- import type { JWKS } from "@schemavaults/jwt";
1
+ import { type JWKS } from "@schemavaults/jwt";
2
+ import { type ApiServerId } from "@schemavaults/app-definitions";
2
3
  export interface ILoadRemoteJwksOpts {
3
4
  auth_server_uri: string;
4
- jwks_endpoint?: string;
5
+ api_server_id: ApiServerId;
6
+ jwks_access_private_key: CryptoKey;
5
7
  }
6
- export declare function loadRemoteJwks({ auth_server_uri, ...opts }: ILoadRemoteJwksOpts): Promise<JWKS>;
8
+ export declare function loadRemoteJwks({ auth_server_uri, api_server_id, jwks_access_private_key, }: ILoadRemoteJwksOpts): Promise<JWKS>;
7
9
  export default loadRemoteJwks;
@@ -1,21 +1,48 @@
1
- const DEFAULT_REMOTE_JWKS_ENDPOINT = "/.well-known/jwks.json";
2
- export async function loadRemoteJwks({ auth_server_uri, ...opts }) {
3
- const jwks_endpoint = typeof opts.jwks_endpoint === 'string' ? opts.jwks_endpoint : DEFAULT_REMOTE_JWKS_ENDPOINT;
4
- const response = await fetch(`${auth_server_uri}${jwks_endpoint}`, { method: "GET" });
1
+ import { createJwksAccessProofToken } from "@schemavaults/jwt";
2
+ import jwksEndpoint from "./jwksEndpoint";
3
+ import { apiServerIdSchema, } from "@schemavaults/app-definitions";
4
+ export async function loadRemoteJwks({ auth_server_uri, api_server_id, jwks_access_private_key, }) {
5
+ if (typeof auth_server_uri !== "string") {
6
+ throw new TypeError("Expected 'auth_server_uri' to be a string!");
7
+ }
8
+ else if (!auth_server_uri.startsWith("http://") &&
9
+ !auth_server_uri.startsWith("https://")) {
10
+ throw new TypeError("Expected 'auth_server_uri' to start with http:// or https://");
11
+ }
12
+ if (!apiServerIdSchema.safeParse(api_server_id).success) {
13
+ throw new TypeError("Invalid API server ID to load remote JWKS for!");
14
+ }
15
+ let jwks_access_proof_token;
16
+ try {
17
+ jwks_access_proof_token = await createJwksAccessProofToken({
18
+ api_server_id,
19
+ private_key: jwks_access_private_key,
20
+ });
21
+ }
22
+ catch (e) {
23
+ console.error(e);
24
+ throw new Error("Failed to create JWKS Access Proof Token!");
25
+ }
26
+ const response = await fetch(`${auth_server_uri}${jwksEndpoint(api_server_id)}`, {
27
+ method: "GET",
28
+ headers: new Headers({
29
+ Authorization: `Bearer ${jwks_access_proof_token}`,
30
+ }),
31
+ });
5
32
  if (!response.ok || response.status !== 200) {
6
- throw new Error("Failed to load jwks.json from auth server!");
33
+ throw new Error(`Failed to load jwks.json from auth server: ${response.status} ${response.statusText}`);
7
34
  }
8
35
  const body = await response.json();
9
- if (typeof body !== 'object' || !body) {
36
+ if (typeof body !== "object" || !body) {
10
37
  throw new TypeError("Expected result of loading jwks.json to be an object!");
11
38
  }
12
- if (!("keys" in body) || !Array.isArray(body['keys'])) {
39
+ if (!("keys" in body) || !Array.isArray(body["keys"])) {
13
40
  throw new Error("Expected response body of jwks.json to have a 'keys' array field!");
14
41
  }
15
- if (!body['keys'].every(key => typeof key !== 'object' || !key)) {
42
+ if (!body["keys"].every((key) => typeof key !== "object" || !key)) {
16
43
  throw new Error("Expected every item in 'keys' array to be an object!");
17
44
  }
18
- const keys = body['keys'];
45
+ const keys = body["keys"];
19
46
  return { keys };
20
47
  }
21
48
  export default loadRemoteJwks;
@@ -1 +1 @@
1
- {"version":3,"file":"loadRemoteJwks.js","sourceRoot":"","sources":["../../../src/JwtKeyManager/RemoteJwtKeyManager/loadRemoteJwks.ts"],"names":[],"mappings":"AAOA,MAAM,4BAA4B,GAAG,wBAAkD,CAAC;AAExF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,EAAE,eAAe,EAAE,GAAG,IAAI,EAAuB;IACpF,MAAM,aAAa,GAAG,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,4BAA4B,CAAA;IAChH,MAAM,QAAQ,GAAa,MAAM,KAAK,CACpC,GAAG,eAAe,GAAG,aAAa,EAAE,EACpC,EAAE,MAAM,EAAE,KAAK,EAAE,CAClB,CAAA;IACD,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;IAC/D,CAAC;IACD,MAAM,IAAI,GAAY,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC5C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QACtC,MAAM,IAAI,SAAS,CAAC,uDAAuD,CAAC,CAAA;IAC9E,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAA;IACtF,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;IACzE,CAAC;IACD,MAAM,IAAI,GAAa,IAAI,CAAC,MAAM,CAAC,CAAC;IACpC,OAAO,EAAE,IAAI,EAAE,CAAC;AAClB,CAAC;AAED,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"loadRemoteJwks.js","sourceRoot":"","sources":["../../../src/JwtKeyManager/RemoteJwtKeyManager/loadRemoteJwks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAa,MAAM,mBAAmB,CAAC;AAC1E,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAEL,iBAAiB,GAClB,MAAM,+BAA+B,CAAC;AAQvC,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,EACnC,eAAe,EACf,aAAa,EACb,uBAAuB,GACH;IACpB,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE,CAAC;QACxC,MAAM,IAAI,SAAS,CAAC,4CAA4C,CAAC,CAAC;IACpE,CAAC;SAAM,IACL,CAAC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC;QACtC,CAAC,eAAe,CAAC,UAAU,CAAC,UAAU,CAAC,EACvC,CAAC;QACD,MAAM,IAAI,SAAS,CACjB,8DAA8D,CAC/D,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,CAAC;QACxD,MAAM,IAAI,SAAS,CAAC,gDAAgD,CAAC,CAAC;IACxE,CAAC;IAED,IAAI,uBAA+B,CAAC;IACpC,IAAI,CAAC;QACH,uBAAuB,GAAG,MAAM,0BAA0B,CAAC;YACzD,aAAa;YACb,WAAW,EAAE,uBAAuB;SACrC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,QAAQ,GAAa,MAAM,KAAK,CACpC,GAAG,eAAe,GAAG,YAAY,CAAC,aAAa,CAAC,EAAE,EAClD;QACE,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,IAAI,OAAO,CAAC;YACnB,aAAa,EAAE,UAAU,uBAAuB,EAAE;SACnD,CAAC;KACH,CACF,CAAC;IACF,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CACb,8CAA8C,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CACvF,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAY,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC5C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QACtC,MAAM,IAAI,SAAS,CACjB,uDAAuD,CACxD,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IACD,MAAM,IAAI,GAAa,IAAI,CAAC,MAAM,CAAC,CAAC;IACpC,OAAO,EAAE,IAAI,EAAE,CAAC;AAClB,CAAC;AAED,eAAe,cAAc,CAAC"}
@@ -1,6 +1,7 @@
1
- export { AbstractJsonWebKeySetsStore } from './JsonWebKeySetsStore';
2
- export type { IJsonWebKeySetsStore } from './JsonWebKeySetsStore';
1
+ export { AbstractJsonWebKeySetsStore } from "./JsonWebKeySetsStore";
2
+ export type { IJsonWebKeySetsStore } from "./JsonWebKeySetsStore";
3
3
  export type { IJwtKeyManager } from "./IJwtKeyManager";
4
- export { DatabaseConnectedJwtKeyManager } from './DatabaseConnectedJwtKeyManager';
5
- export { RemoteJwtKeyManager } from './RemoteJwtKeyManager';
6
- export { loadJwtDecodingKeys, type IDecodeAuthTokenKeys } from './loadJwtDecodingKeys';
4
+ export { DatabaseConnectedJwtKeyManager } from "./DatabaseConnectedJwtKeyManager";
5
+ export { RemoteJwtKeyManager } from "./RemoteJwtKeyManager";
6
+ export { loadJwtDecodingKeys, type IDecodeAuthTokenKeys, } from "./loadJwtDecodingKeys";
7
+ export { JwtDecodingKeysetNotFoundError } from "./JwtDecodingKeysetNotFoundError";
@@ -1,5 +1,6 @@
1
- export { AbstractJsonWebKeySetsStore } from './JsonWebKeySetsStore';
2
- export { DatabaseConnectedJwtKeyManager } from './DatabaseConnectedJwtKeyManager';
3
- export { RemoteJwtKeyManager } from './RemoteJwtKeyManager';
4
- export { loadJwtDecodingKeys } from './loadJwtDecodingKeys';
1
+ export { AbstractJsonWebKeySetsStore } from "./JsonWebKeySetsStore";
2
+ export { DatabaseConnectedJwtKeyManager } from "./DatabaseConnectedJwtKeyManager";
3
+ export { RemoteJwtKeyManager } from "./RemoteJwtKeyManager";
4
+ export { loadJwtDecodingKeys, } from "./loadJwtDecodingKeys";
5
+ export { JwtDecodingKeysetNotFoundError } from "./JwtDecodingKeysetNotFoundError";
5
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/JwtKeyManager/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAKpE,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,mBAAmB,EAA6B,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/JwtKeyManager/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAKpE,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EACL,mBAAmB,GAEpB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC"}
@@ -1,7 +1,8 @@
1
1
  import type { IJwtKeyManager } from "../JwtKeyManager";
2
+ import { type ApiServerId } from "@schemavaults/app-definitions";
2
3
  import { type JWKS } from "@schemavaults/jwt";
3
4
  export interface ILoadJwtDecodingKeysOptions {
4
- audience_id: string;
5
+ audience_id: ApiServerId;
5
6
  keyset_id: string;
6
7
  keys_manager: IJwtKeyManager;
7
8
  debug?: boolean;
@@ -1,11 +1,13 @@
1
- import { apiServerIdSchema } from "@schemavaults/app-definitions";
1
+ import isValidUuid from "../is-valid-uuid";
2
+ import { apiServerIdSchema, } from "@schemavaults/app-definitions";
2
3
  import { importAsymmetricJWK } from "@schemavaults/jwt";
4
+ import { JwtDecodingKeysetNotFoundError } from "./JwtDecodingKeysetNotFoundError";
3
5
  export async function loadJwtDecodingKeysFromJwks({ keyset_id, jwks, }, debug = false) {
4
6
  if (jwks.keys.length === 0) {
5
- throw new Error("JWKS appears to be empty, cannot extract decoding keys from empty set!");
7
+ throw new JwtDecodingKeysetNotFoundError(keyset_id, "JWKS appears to be empty, cannot extract decoding keys from empty set!");
6
8
  }
7
9
  if (debug) {
8
- console.log(`loadJwtDecodingKeysFromJwks(keyset_id='${keyset_id}', jwks)`);
10
+ console.log(`loadJwtDecodingKeysFromJwks(keyset_id='${keyset_id}', jwks.keys.length='${jwks.keys.length}')`);
9
11
  }
10
12
  // Loop over keys in JWKS and find the required keys
11
13
  let verification_key = undefined;
@@ -53,16 +55,16 @@ export async function loadJwtDecodingKeysFromJwks({ keyset_id, jwks, }, debug =
53
55
  .map((k) => `'${k.kid}'`)
54
56
  .join(", ");
55
57
  if (!verification_key && !decryption_key) {
56
- console.error(`Missing both verification and decryption keys for keyset '${keyset_id}' from available keys: `, listOfKidsInJwks);
57
- throw new Error(`Missing both verification and decryption keys for keyset '${keyset_id}'`);
58
+ console.warn(`Missing both verification and decryption keys for keyset '${keyset_id}' from available keys: `, listOfKidsInJwks);
59
+ throw new JwtDecodingKeysetNotFoundError(keyset_id, `Missing both verification and decryption keys for keyset '${keyset_id}'`);
58
60
  }
59
61
  else if (!verification_key) {
60
- console.error(`Missing verification key for keyset '${keyset_id}' from available keys: `, listOfKidsInJwks);
61
- throw new Error(`Missing verification key for keyset '${keyset_id}'`);
62
+ console.warn(`Missing verification key for keyset '${keyset_id}' from available keys: `, listOfKidsInJwks);
63
+ throw new JwtDecodingKeysetNotFoundError(keyset_id, `Missing verification key for keyset '${keyset_id}'`);
62
64
  }
63
65
  else if (!decryption_key) {
64
- console.error(`Missing decryption key for keyset '${keyset_id}' from available keys: `, listOfKidsInJwks);
65
- throw new Error(`Missing decryption key for keyset '${keyset_id}'`);
66
+ console.warn(`Missing decryption key for keyset '${keyset_id}' from available keys: `, listOfKidsInJwks);
67
+ throw new JwtDecodingKeysetNotFoundError(keyset_id, `Missing decryption key for keyset '${keyset_id}'`);
66
68
  }
67
69
  else {
68
70
  throw new Error("Error handling missing JWT decoding keys gracefully!");
@@ -71,15 +73,28 @@ export async function loadJwtDecodingKeysFromJwks({ keyset_id, jwks, }, debug =
71
73
  export async function loadJwtDecodingKeys({ keys_manager, keyset_id, audience_id, ...opts }) {
72
74
  const debug = opts.debug ?? false;
73
75
  if (!apiServerIdSchema.safeParse(audience_id).success) {
74
- throw new Error(`Invalid audience ID to load JWT decoding keys for: '${audience_id}'`);
76
+ throw new TypeError(`Invalid audience ID to load JWT decoding keys for: '${audience_id}'`);
77
+ }
78
+ else if (!isValidUuid(keyset_id)) {
79
+ throw new TypeError("Expected 'keyset_id' to be a valid UUID!");
80
+ }
81
+ let jwks;
82
+ try {
83
+ jwks = await keys_manager.loadJwks(audience_id);
84
+ }
85
+ catch (e) {
86
+ console.error("Failed to load JWKS from key manager: ", e);
87
+ throw new Error("Failed to load JWKS from key manager!");
75
88
  }
76
- const jwks = await keys_manager.loadJwks(audience_id);
77
89
  if (!jwks ||
78
90
  typeof jwks !== "object" ||
79
91
  !("keys" in jwks) ||
80
92
  !Array.isArray(jwks.keys)) {
81
93
  throw new TypeError("Invalid JWKS; not an object or missing 'keys' array!");
82
94
  }
95
+ if (jwks.keys.length === 0) {
96
+ throw new JwtDecodingKeysetNotFoundError(keyset_id, "Received JWKS from JwtKeyManager but it does not appear to include any keys.");
97
+ }
83
98
  const jwt_decoding_keys = await loadJwtDecodingKeysFromJwks({ keyset_id, jwks }, debug);
84
99
  return jwt_decoding_keys;
85
100
  }
@@ -1 +1 @@
1
- {"version":3,"file":"loadJwtDecodingKeys.js","sourceRoot":"","sources":["../../src/JwtKeyManager/loadJwtDecodingKeys.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loadJwtDecodingKeys.js","sourceRoot":"","sources":["../../src/JwtKeyManager/loadJwtDecodingKeys.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- declare const MaximumBrowserCookieSize = 4096;
1
+ import { MaximumBrowserCookieSize } from "@schemavaults/auth-common";
2
2
  export { MaximumBrowserCookieSize };
3
3
  export default MaximumBrowserCookieSize;
@@ -1,4 +1,4 @@
1
- const MaximumBrowserCookieSize = 4096; // 4KB
1
+ import { MaximumBrowserCookieSize } from "@schemavaults/auth-common";
2
2
  export { MaximumBrowserCookieSize };
3
3
  export default MaximumBrowserCookieSize;
4
4
  //# sourceMappingURL=MaximumBrowserCookieSize.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MaximumBrowserCookieSize.js","sourceRoot":"","sources":["../src/MaximumBrowserCookieSize.ts"],"names":[],"mappings":"AAAA,MAAM,wBAAwB,GAAG,IAAI,CAAC,CAAC,MAAM;AAE7C,OAAO,EAAE,wBAAwB,EAAE,CAAC;AACpC,eAAe,wBAAwB,CAAC"}
1
+ {"version":3,"file":"MaximumBrowserCookieSize.js","sourceRoot":"","sources":["../src/MaximumBrowserCookieSize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,CAAC;AACpC,eAAe,wBAAwB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { IAuthResourceServerCodegenOptions } from "./codegen";
2
+ export declare class NextjsAppDirectoryPlugin {
3
+ static codegen(opts?: IAuthResourceServerCodegenOptions): Promise<void>;
4
+ }
5
+ export default NextjsAppDirectoryPlugin;
@@ -0,0 +1,8 @@
1
+ export class NextjsAppDirectoryPlugin {
2
+ static async codegen(opts) {
3
+ const gen = await import("./codegen").then((m) => m.default);
4
+ return await gen(opts);
5
+ }
6
+ }
7
+ export default NextjsAppDirectoryPlugin;
8
+ //# sourceMappingURL=NextjsAppDirectoryPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NextjsAppDirectoryPlugin.js","sourceRoot":"","sources":["../../src/NextjsAppDirectoryPlugin/NextjsAppDirectoryPlugin.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,wBAAwB;IAC5B,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAwC;QAClE,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC7D,OAAO,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;CACF;AAED,eAAe,wBAAwB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export interface IAuthResourceServerCodegenOptions {
2
+ codegenTemplatesDirectory?: string;
3
+ }
4
+ export default function codegen(opts?: IAuthResourceServerCodegenOptions): Promise<void>;
@@ -0,0 +1,80 @@
1
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
2
+ import { dirname } from "path";
3
+ import resolveAppDirectory from "./resolve-app-directory";
4
+ import { join } from "path";
5
+ import resolveCodegenTemplatesDirectory from "./resolve-codegen-templates-directory";
6
+ const pagesToCreate = [
7
+ {
8
+ app_dir_path: "/auth/login",
9
+ codegen_template_path: "auth/login/page.tsx",
10
+ },
11
+ {
12
+ app_dir_path: "/auth/register",
13
+ codegen_template_path: "auth/register/page.tsx",
14
+ },
15
+ {
16
+ app_dir_path: "/auth/logout",
17
+ codegen_template_path: "auth/logout/page.tsx",
18
+ },
19
+ {
20
+ app_dir_path: "/auth/authorize",
21
+ codegen_template_path: "auth/authorize/page.tsx",
22
+ },
23
+ ];
24
+ function createClientPages(appDirectory, templatesDir) {
25
+ for (const page of pagesToCreate) {
26
+ const destPath = join(appDirectory, page.app_dir_path, "page.tsx");
27
+ if (existsSync(destPath)) {
28
+ console.log(` - skipping '${page.app_dir_path}/page.tsx' (already exists)`);
29
+ continue;
30
+ }
31
+ const destDir = dirname(destPath);
32
+ if (!existsSync(destDir)) {
33
+ mkdirSync(destDir, { recursive: true });
34
+ }
35
+ const templatePath = join(templatesDir, page.codegen_template_path);
36
+ const templateContent = readFileSync(templatePath, {
37
+ encoding: "utf-8",
38
+ });
39
+ writeFileSync(destPath, templateContent, { encoding: "utf-8" });
40
+ console.log(` - created '${page.app_dir_path}/page.tsx'`);
41
+ }
42
+ }
43
+ function createClientAuthProvider(appDirectory, templatesDir) {
44
+ const srcTemplatePath = join(templatesDir, "auth", "auth-provider.tsx");
45
+ const destPath = join(appDirectory, "auth", "auth-provider.tsx");
46
+ if (existsSync(destPath)) {
47
+ console.log(` - skipping 'auth/auth-provider.tsx' (already exists)`);
48
+ return;
49
+ }
50
+ const destDir = dirname(destPath);
51
+ if (!existsSync(destDir)) {
52
+ mkdirSync(destDir, { recursive: true });
53
+ }
54
+ const templateContent = readFileSync(srcTemplatePath, {
55
+ encoding: "utf-8",
56
+ });
57
+ writeFileSync(destPath, templateContent, { encoding: "utf-8" });
58
+ console.log(` - created 'auth/auth-provider.tsx'`);
59
+ }
60
+ export default async function codegen(opts) {
61
+ console.log(`[@schemavaults/auth-server-sdk/NextjsAppDirectoryPlugin] Running codegen:`);
62
+ const appDirectory = resolveAppDirectory();
63
+ console.log(` - resolved /app directory at '${appDirectory}'`);
64
+ const authDirectory = join(appDirectory, "auth");
65
+ if (!existsSync(authDirectory)) {
66
+ mkdirSync(authDirectory);
67
+ console.log(` - created /auth directory at '${authDirectory}'`);
68
+ }
69
+ else {
70
+ console.log(` - /auth directory already exists at '${authDirectory}'`);
71
+ }
72
+ const templatesDir = typeof opts?.codegenTemplatesDirectory === "string"
73
+ ? opts.codegenTemplatesDirectory
74
+ : resolveCodegenTemplatesDirectory();
75
+ console.log(` - resolved codegen templates directory at '${templatesDir}'`);
76
+ createClientPages(appDirectory, templatesDir);
77
+ createClientAuthProvider(appDirectory, templatesDir);
78
+ console.log(`[@schemavaults/auth-server-sdk/NextjsAppDirectoryPlugin] Codegen complete.`);
79
+ }
80
+ //# sourceMappingURL=codegen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../src/NextjsAppDirectoryPlugin/codegen.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { NextjsAppDirectoryPlugin, NextjsAppDirectoryPlugin as default, } from "./NextjsAppDirectoryPlugin";
2
+ export type { IAuthResourceServerCodegenOptions } from "./codegen";
@@ -0,0 +1,2 @@
1
+ export { NextjsAppDirectoryPlugin, NextjsAppDirectoryPlugin as default, } from "./NextjsAppDirectoryPlugin";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/NextjsAppDirectoryPlugin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,wBAAwB,IAAI,OAAO,GACpC,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1 @@
1
+ export default function resolveAppDirectory(): string;