@schemavaults/auth-server-sdk 0.17.15 → 0.19.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/dist/AccessTokenCookieNames.d.ts +1 -0
  2. package/dist/AccessTokenCookieNames.js +2 -0
  3. package/dist/AccessTokenCookieNames.js.map +1 -0
  4. package/dist/JwtKeyManager/RemoteJwtKeyManager/RemoteJwtKeyManager.d.ts +3 -1
  5. package/dist/JwtKeyManager/RemoteJwtKeyManager/RemoteJwtKeyManager.js +4 -1
  6. package/dist/JwtKeyManager/RemoteJwtKeyManager/RemoteJwtKeyManager.js.map +1 -1
  7. package/dist/JwtKeyManager/RemoteJwtKeyManager/loadRemoteJwks.d.ts +2 -1
  8. package/dist/JwtKeyManager/RemoteJwtKeyManager/loadRemoteJwks.js +25 -4
  9. package/dist/JwtKeyManager/RemoteJwtKeyManager/loadRemoteJwks.js.map +1 -1
  10. package/dist/MaximumBrowserCookieSize.d.ts +1 -1
  11. package/dist/MaximumBrowserCookieSize.js +1 -1
  12. package/dist/MaximumBrowserCookieSize.js.map +1 -1
  13. package/dist/NextjsAppDirectoryPlugin/NextjsAppDirectoryPlugin.d.ts +5 -0
  14. package/dist/NextjsAppDirectoryPlugin/NextjsAppDirectoryPlugin.js +8 -0
  15. package/dist/NextjsAppDirectoryPlugin/NextjsAppDirectoryPlugin.js.map +1 -0
  16. package/dist/NextjsAppDirectoryPlugin/codegen.d.ts +4 -0
  17. package/dist/NextjsAppDirectoryPlugin/codegen.js +80 -0
  18. package/dist/NextjsAppDirectoryPlugin/codegen.js.map +1 -0
  19. package/dist/NextjsAppDirectoryPlugin/index.d.ts +2 -0
  20. package/dist/NextjsAppDirectoryPlugin/index.js +2 -0
  21. package/dist/NextjsAppDirectoryPlugin/index.js.map +1 -0
  22. package/dist/NextjsAppDirectoryPlugin/resolve-app-directory.d.ts +1 -0
  23. package/dist/NextjsAppDirectoryPlugin/resolve-app-directory.js +29 -0
  24. package/dist/NextjsAppDirectoryPlugin/resolve-app-directory.js.map +1 -0
  25. package/dist/NextjsAppDirectoryPlugin/resolve-codegen-templates-directory.d.ts +1 -0
  26. package/dist/NextjsAppDirectoryPlugin/resolve-codegen-templates-directory.js +6 -0
  27. package/dist/NextjsAppDirectoryPlugin/resolve-codegen-templates-directory.js.map +1 -0
  28. package/dist/RefreshTokenCookieNames.d.ts +1 -3
  29. package/dist/RefreshTokenCookieNames.js +1 -3
  30. package/dist/RefreshTokenCookieNames.js.map +1 -1
  31. package/dist/codegen-templates/auth/auth-provider.tsx +57 -0
  32. package/dist/codegen-templates/auth/authorize/page.tsx +54 -0
  33. package/dist/codegen-templates/auth/login/page.tsx +27 -0
  34. package/dist/codegen-templates/auth/logout/page.tsx +11 -0
  35. package/dist/codegen-templates/auth/register/page.tsx +29 -0
  36. package/dist/env/loadJwksAccessPrivateKey/index.d.ts +2 -0
  37. package/dist/env/loadJwksAccessPrivateKey/index.js +3 -0
  38. package/dist/env/loadJwksAccessPrivateKey/index.js.map +1 -0
  39. package/dist/env/loadJwksAccessPrivateKey/loadJwksAccessPrivateKey.js +42 -0
  40. package/dist/env/loadJwksAccessPrivateKey/loadJwksAccessPrivateKey.js.map +1 -0
  41. package/dist/get-app-environment.d.ts +2 -0
  42. package/dist/get-app-environment.js +2 -0
  43. package/dist/get-app-environment.js.map +1 -0
  44. package/dist/get-schemavaults-client-application-id.d.ts +10 -0
  45. package/dist/get-schemavaults-client-application-id.js +21 -0
  46. package/dist/get-schemavaults-client-application-id.js.map +1 -0
  47. package/dist/index.d.ts +4 -0
  48. package/dist/index.js +2 -0
  49. package/dist/index.js.map +1 -1
  50. package/dist/middleware/middlewares/withAuthJwtValidation/withAuthJwtValidation.js +11 -8
  51. package/dist/middleware/middlewares/withAuthJwtValidation/withAuthJwtValidation.js.map +1 -1
  52. package/dist/middleware/middlewares/withCorsSettings/isAllowedOrigin.d.ts +1 -1
  53. package/dist/middleware/middlewares/withCorsSettings/isAllowedOrigin.js +1 -0
  54. package/dist/middleware/middlewares/withCorsSettings/isAllowedOrigin.js.map +1 -1
  55. package/dist/route_guards/assertValidRouteGuardType.d.ts +1 -0
  56. package/dist/route_guards/assertValidRouteGuardType.js +6 -0
  57. package/dist/route_guards/assertValidRouteGuardType.js.map +1 -0
  58. package/dist/route_guards/index.d.ts +2 -2
  59. package/dist/route_guards/index.js.map +1 -1
  60. package/dist/route_guards/route-guard-factory.js +1 -0
  61. package/dist/route_guards/route-guard-factory.js.map +1 -1
  62. package/dist/route_guards/withAdminRouteGuard.d.ts +5 -21
  63. package/dist/route_guards/withAdminRouteGuard.js +5 -124
  64. package/dist/route_guards/withAdminRouteGuard.js.map +1 -1
  65. package/dist/route_guards/withAuthenticatedRouteGuard.d.ts +9 -16
  66. package/dist/route_guards/withAuthenticatedRouteGuard.js +146 -42
  67. package/dist/route_guards/withAuthenticatedRouteGuard.js.map +1 -1
  68. package/package.json +16 -6
  69. package/dist/env/loadJwksAccessPrivateKey.js +0 -33
  70. package/dist/env/loadJwksAccessPrivateKey.js.map +0 -1
  71. /package/dist/env/{loadJwksAccessPrivateKey.d.ts → loadJwksAccessPrivateKey/loadJwksAccessPrivateKey.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ export { AccessTokenCookieName, AccessTokenExpiryCookieName, } from "@schemavaults/auth-common/AccessTokenCookieNames";
@@ -0,0 +1,2 @@
1
+ export { AccessTokenCookieName, AccessTokenExpiryCookieName, } from "@schemavaults/auth-common/AccessTokenCookieNames";
2
+ //# sourceMappingURL=AccessTokenCookieNames.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccessTokenCookieNames.js","sourceRoot":"","sources":["../src/AccessTokenCookieNames.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,2BAA2B,GAC5B,MAAM,kDAAkD,CAAC"}
@@ -3,10 +3,12 @@ import type { JWKS } from "@schemavaults/jwt";
3
3
  import { ApiServerId } from "@schemavaults/app-definitions";
4
4
  export interface IRemoteJwtKeyManagerConstructorOpts {
5
5
  auth_server_uri?: string;
6
+ debug?: boolean;
6
7
  }
7
8
  export declare class RemoteJwtKeyManager implements IJwtKeyManager {
8
9
  private readonly auth_server_uri;
9
- constructor({ auth_server_uri, }: IRemoteJwtKeyManagerConstructorOpts);
10
+ private readonly debug;
11
+ constructor({ auth_server_uri, ...opts }: IRemoteJwtKeyManagerConstructorOpts);
10
12
  loadJwks(audienceId: ApiServerId): Promise<JWKS>;
11
13
  }
12
14
  export default RemoteJwtKeyManager;
@@ -4,8 +4,10 @@ import getSchemaVaultsAuthServerUri from "../../get-schemavaults-auth-server-uri
4
4
  import loadJwksAccessPrivateKey from "../../env/loadJwksAccessPrivateKey";
5
5
  export class RemoteJwtKeyManager {
6
6
  auth_server_uri;
7
- constructor({ auth_server_uri = getSchemaVaultsAuthServerUri(), }) {
7
+ debug;
8
+ constructor({ auth_server_uri = getSchemaVaultsAuthServerUri(), ...opts }) {
8
9
  this.auth_server_uri = auth_server_uri;
10
+ this.debug = typeof opts.debug === "boolean" ? opts.debug : false;
9
11
  }
10
12
  async loadJwks(audienceId) {
11
13
  if (!apiServerIdSchema.safeParse(audienceId).success) {
@@ -26,6 +28,7 @@ export class RemoteJwtKeyManager {
26
28
  auth_server_uri: this.auth_server_uri,
27
29
  api_server_id: audienceId,
28
30
  jwks_access_private_key,
31
+ debug: this.debug,
29
32
  });
30
33
  }
31
34
  }
@@ -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,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"}
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;AAOtE,MAAM,OAAO,mBAAmB;IACb,eAAe,CAAS;IACxB,KAAK,CAAU;IAEhC,YAAmB,EACjB,eAAe,GAAG,4BAA4B,EAAE,EAChD,GAAG,IAAI,EAC6B;QACpC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IACpE,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;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;CACF;AAED,eAAe,mBAAmB,CAAC"}
@@ -4,6 +4,7 @@ export interface ILoadRemoteJwksOpts {
4
4
  auth_server_uri: string;
5
5
  api_server_id: ApiServerId;
6
6
  jwks_access_private_key: CryptoKey;
7
+ debug?: boolean;
7
8
  }
8
- export declare function loadRemoteJwks({ auth_server_uri, api_server_id, jwks_access_private_key, }: ILoadRemoteJwksOpts): Promise<JWKS>;
9
+ export declare function loadRemoteJwks({ auth_server_uri, api_server_id, jwks_access_private_key, ...opts }: ILoadRemoteJwksOpts): Promise<JWKS>;
9
10
  export default loadRemoteJwks;
@@ -1,7 +1,8 @@
1
1
  import { createJwksAccessProofToken } from "@schemavaults/jwt";
2
2
  import jwksEndpoint from "./jwksEndpoint";
3
3
  import { apiServerIdSchema, } from "@schemavaults/app-definitions";
4
- export async function loadRemoteJwks({ auth_server_uri, api_server_id, jwks_access_private_key, }) {
4
+ export async function loadRemoteJwks({ auth_server_uri, api_server_id, jwks_access_private_key, ...opts }) {
5
+ const debug = typeof opts.debug === "boolean" ? opts.debug : false;
5
6
  if (typeof auth_server_uri !== "string") {
6
7
  throw new TypeError("Expected 'auth_server_uri' to be a string!");
7
8
  }
@@ -34,13 +35,33 @@ export async function loadRemoteJwks({ auth_server_uri, api_server_id, jwks_acce
34
35
  }
35
36
  const body = await response.json();
36
37
  if (typeof body !== "object" || !body) {
37
- throw new TypeError("Expected result of loading jwks.json to be an object!");
38
+ throw new TypeError("Expected result of loading jwks.json to be a JavaScript object!");
38
39
  }
39
40
  if (!("keys" in body) || !Array.isArray(body["keys"])) {
40
41
  throw new Error("Expected response body of jwks.json to have a 'keys' array field!");
41
42
  }
42
- if (!body["keys"].every((key) => typeof key !== "object" || !key)) {
43
- throw new Error("Expected every item in 'keys' array to be an object!");
43
+ const nKeys = body["keys"].length;
44
+ if (nKeys === 0) {
45
+ return { keys: [] };
46
+ }
47
+ const allKeysHaveValidType = body["keys"].every((key) => typeof key === "object" && key ? true : false);
48
+ if (!allKeysHaveValidType) {
49
+ let errorMessage = `Not all items in 'keys' array (length=${nKeys}) are objects!`;
50
+ const existingTypesInBadKeysArray = new Set();
51
+ for (const key of body["keys"]) {
52
+ existingTypesInBadKeysArray.add(typeof key);
53
+ }
54
+ const badKeyTypes = [
55
+ ...existingTypesInBadKeysArray.values(),
56
+ ];
57
+ errorMessage += " ";
58
+ errorMessage +=
59
+ "Types in 'keys' array include: " +
60
+ badKeyTypes.map((t) => `"${t}"`).join(", ");
61
+ if (debug) {
62
+ console.error("Bad 'keys' array that caused error: ", body["keys"]);
63
+ }
64
+ throw new TypeError(errorMessage);
44
65
  }
45
66
  const keys = body["keys"];
46
67
  return { keys };
@@ -1 +1 @@
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
+ {"version":3,"file":"loadRemoteJwks.js","sourceRoot":"","sources":["../../../src/JwtKeyManager/RemoteJwtKeyManager/loadRemoteJwks.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;
@@ -0,0 +1,29 @@
1
+ import { join } from "path";
2
+ import { existsSync } from "fs";
3
+ import { cwd } from "process";
4
+ function resolveProjectRoot() {
5
+ const current = cwd();
6
+ if (existsSync(join(current, "package.json")) &&
7
+ (existsSync(join(current, "next.config.js")) ||
8
+ existsSync(join(current, "next.config.ts")) ||
9
+ existsSync(join(current, "next.config.mjs")) ||
10
+ existsSync(join(current, "next.config.cjs")))) {
11
+ return current;
12
+ }
13
+ else {
14
+ throw new Error("Failed to resolve package root!");
15
+ }
16
+ }
17
+ export default function resolveAppDirectory() {
18
+ const projectRoot = resolveProjectRoot();
19
+ if (existsSync(join(projectRoot, "src", "app"))) {
20
+ return join(projectRoot, "src", "app");
21
+ }
22
+ else if (existsSync(join(projectRoot, "app"))) {
23
+ return join(projectRoot, "app");
24
+ }
25
+ else {
26
+ throw new Error("Failed to resolve Next.js app/ directory!");
27
+ }
28
+ }
29
+ //# sourceMappingURL=resolve-app-directory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-app-directory.js","sourceRoot":"","sources":["../../src/NextjsAppDirectoryPlugin/resolve-app-directory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAE9B,SAAS,kBAAkB;IACzB,MAAM,OAAO,GAAW,GAAG,EAAE,CAAC;IAC9B,IACE,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QACzC,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;YAC1C,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;YAC3C,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;YAC5C,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC/C,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,mBAAmB;IACzC,MAAM,WAAW,GAAW,kBAAkB,EAAE,CAAC;IACjD,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;SAAM,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC"}
@@ -0,0 +1 @@
1
+ export default function resolveCodegenTemplatesDirectory(): string;
@@ -0,0 +1,6 @@
1
+ import { dirname, join } from "path";
2
+ export default function resolveCodegenTemplatesDirectory() {
3
+ // Templates are copied into the dist/codegen-templates directory during build
4
+ return join(dirname(__dirname), "codegen-templates");
5
+ }
6
+ //# sourceMappingURL=resolve-codegen-templates-directory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-codegen-templates-directory.js","sourceRoot":"","sources":["../../src/NextjsAppDirectoryPlugin/resolve-codegen-templates-directory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAErC,MAAM,CAAC,OAAO,UAAU,gCAAgC;IACtD,8EAA8E;IAC9E,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,mBAAmB,CAAC,CAAC;AACvD,CAAC"}
@@ -1,3 +1 @@
1
- export declare const RefreshTokenCookieName: "refresh_token";
2
- export declare const RefreshTokenExpiryCookieName: "refresh_token_expiry";
3
- export default RefreshTokenCookieName;
1
+ export { RefreshTokenCookieName, RefreshTokenExpiryCookieName, } from "@schemavaults/auth-common/RefreshTokenCookieNames";
@@ -1,4 +1,2 @@
1
- export const RefreshTokenCookieName = "refresh_token";
2
- export const RefreshTokenExpiryCookieName = "refresh_token_expiry";
3
- export default RefreshTokenCookieName;
1
+ export { RefreshTokenCookieName, RefreshTokenExpiryCookieName, } from "@schemavaults/auth-common/RefreshTokenCookieNames";
4
2
  //# sourceMappingURL=RefreshTokenCookieNames.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RefreshTokenCookieNames.js","sourceRoot":"","sources":["../src/RefreshTokenCookieNames.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,sBAAsB,GAAG,eAAyC,CAAC;AAChF,MAAM,CAAC,MAAM,4BAA4B,GAAG,sBAAgD,CAAC;AAE7F,eAAe,sBAAsB,CAAC"}
1
+ {"version":3,"file":"RefreshTokenCookieNames.js","sourceRoot":"","sources":["../src/RefreshTokenCookieNames.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,4BAA4B,GAC7B,MAAM,mDAAmD,CAAC"}
@@ -0,0 +1,57 @@
1
+ "use client";
2
+
3
+ import {
4
+ AuthProvider,
5
+ type SchemaVaultsAppEnvironment,
6
+ type AppId,
7
+ } from "@schemavaults/auth-react-provider";
8
+ import { usePathname, useRouter } from "next/navigation";
9
+ import type { PropsWithChildren } from "react";
10
+
11
+ export interface IAppAuthProviderProps extends PropsWithChildren {
12
+ environment: SchemaVaultsAppEnvironment;
13
+ app_id: AppId;
14
+ default_audiences: readonly string[];
15
+ debug?: boolean;
16
+ authed_on_unauthed_redirect_uri: string;
17
+ unauthed_on_authed_redirect_uri: string;
18
+ successful_logout_redirect_uri: string;
19
+ successful_authentication_redirect_uri: string;
20
+ authorize_uri: string;
21
+ }
22
+
23
+ export default function AppAuthProvider({
24
+ environment,
25
+ app_id,
26
+ ...props
27
+ }: IAppAuthProviderProps) {
28
+ const router = useRouter();
29
+ const path: string = usePathname();
30
+ const debug: boolean =
31
+ typeof props.debug === "boolean"
32
+ ? props.debug
33
+ : environment !== "production";
34
+
35
+ return (
36
+ <AuthProvider
37
+ app_id={app_id}
38
+ authed_on_unauthed_redirect_uri={props.authed_on_unauthed_redirect_uri}
39
+ unauthed_on_authed_redirect_uri={props.unauthed_on_authed_redirect_uri}
40
+ successful_logout_redirect_uri={props.successful_logout_redirect_uri}
41
+ successful_authentication_redirect_uri={
42
+ props.successful_authentication_redirect_uri
43
+ }
44
+ authorize_uri={props.authorize_uri}
45
+ router={router}
46
+ path={path}
47
+ default_audiences={props.default_audiences}
48
+ debug={debug}
49
+ environment={environment}
50
+ fetch={async (url: string, init: RequestInit | undefined) =>
51
+ await fetch(url, init)
52
+ }
53
+ >
54
+ {props.children}
55
+ </AuthProvider>
56
+ );
57
+ }
@@ -0,0 +1,54 @@
1
+ "use client";
2
+
3
+ import type { ReactElement } from "react";
4
+ import { useRouter, useSearchParams } from "next/navigation";
5
+ import { LoadingPage, useToast } from "@schemavaults/ui";
6
+ import {
7
+ type ISchemaVaultsAuthClient,
8
+ type SchemaVaultsAppEnvironment,
9
+ useAppEnvironment,
10
+ useAuth,
11
+ useTradeAuthorizationCodeForTokensEffect,
12
+ } from "@schemavaults/auth-react-provider";
13
+
14
+ interface ExchangeAuthCodeForTokensManagerComponentProps {
15
+ auth: ISchemaVaultsAuthClient;
16
+ }
17
+
18
+ function ExchangeAuthCodeForTokensManagerComponent({
19
+ auth,
20
+ }: ExchangeAuthCodeForTokensManagerComponentProps): ReactElement {
21
+ const router = useRouter();
22
+ const searchParams = useSearchParams();
23
+ const { toast } = useToast();
24
+ const environment: SchemaVaultsAppEnvironment = useAppEnvironment();
25
+ useTradeAuthorizationCodeForTokensEffect({
26
+ router,
27
+ searchParams,
28
+ auth,
29
+ toast,
30
+ debug: environment !== "production",
31
+ });
32
+
33
+ return (
34
+ <>
35
+ <LoadingPage message="Trading authorization code & proof code for tokens..." />
36
+ </>
37
+ );
38
+ }
39
+
40
+ export default function AuthorizePage(): ReactElement {
41
+ const auth = useAuth();
42
+
43
+ if (!auth || !auth.ready || !auth.client || !auth.client.current) {
44
+ return (
45
+ <>
46
+ <LoadingPage message="Loading auth client..." />
47
+ </>
48
+ );
49
+ }
50
+
51
+ const authClient: ISchemaVaultsAuthClient = auth.client.current;
52
+
53
+ return <ExchangeAuthCodeForTokensManagerComponent auth={authClient} />;
54
+ }
@@ -0,0 +1,27 @@
1
+ "use client";
2
+
3
+ import { LoadingPage, useToast } from "@schemavaults/ui";
4
+ import { useStartLoginOauthPKCEFlow } from "@schemavaults/auth-react-provider";
5
+ import { type ReactElement } from "react";
6
+
7
+ export default function LoginPage(): ReactElement {
8
+ const { toast } = useToast();
9
+
10
+ function onError(e: unknown): void {
11
+ toast({
12
+ variant: "destructive",
13
+ title: "Error starting login flow",
14
+ description:
15
+ e instanceof Error ? e.message : "An unknown error has occurred!",
16
+ });
17
+ return;
18
+ }
19
+
20
+ useStartLoginOauthPKCEFlow({ onError });
21
+
22
+ return (
23
+ <>
24
+ <LoadingPage message="Commencing login flow..." />
25
+ </>
26
+ );
27
+ }
@@ -0,0 +1,11 @@
1
+ "use client";
2
+
3
+ import { useLogoutEffect } from "@schemavaults/auth-react-provider";
4
+ import { LoadingPage } from "@schemavaults/ui";
5
+ import type { ReactElement } from "react";
6
+
7
+ export default function LogoutPage(): ReactElement {
8
+ useLogoutEffect();
9
+
10
+ return <LoadingPage message="Logging you out..." />;
11
+ }
@@ -0,0 +1,29 @@
1
+ "use client";
2
+
3
+ import { LoadingPage } from "@schemavaults/ui";
4
+ import { useStartRegisterOauthPKCEFlow } from "@schemavaults/auth-react-provider";
5
+ import { useToast } from "@schemavaults/ui";
6
+ import type { ReactElement } from "react";
7
+
8
+ export default function RegisterPage(): ReactElement {
9
+ const { toast } = useToast();
10
+
11
+ function onError(e: unknown): void {
12
+ toast({
13
+ variant: "destructive",
14
+ title: "Error starting register flow!",
15
+ description:
16
+ e instanceof Error ? e.message : "An unknown error has occurred!",
17
+ });
18
+ }
19
+
20
+ useStartRegisterOauthPKCEFlow({
21
+ onError,
22
+ });
23
+
24
+ return (
25
+ <>
26
+ <LoadingPage message="Commencing register flow..." />
27
+ </>
28
+ );
29
+ }
@@ -0,0 +1,2 @@
1
+ import loadJwksAccessPrivateKey from "./loadJwksAccessPrivateKey";
2
+ export { loadJwksAccessPrivateKey, loadJwksAccessPrivateKey as default };
@@ -0,0 +1,3 @@
1
+ import loadJwksAccessPrivateKey from "./loadJwksAccessPrivateKey";
2
+ export { loadJwksAccessPrivateKey, loadJwksAccessPrivateKey as default };
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/env/loadJwksAccessPrivateKey/index.ts"],"names":[],"mappings":"AAAA,OAAO,wBAAwB,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,IAAI,OAAO,EAAE,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { importPKCS8, isValidBase64UrlEncoding, PEMFormat, sign_verify_alg, } from "@schemavaults/jwt";
2
+ const key = "SCHEMAVAULTS_AUTH_JWKS_ACCESS_PRIVATE_KEY";
3
+ export default async function loadJwksAccessPrivateKey(env = process.env) {
4
+ const debug = "NODE_ENV" in env &&
5
+ (env["NODE_ENV"] === "development" || env["NODE_ENV"] === "test");
6
+ if (typeof env === "object" &&
7
+ key in env &&
8
+ typeof env[key] === "string" &&
9
+ env[key].length > 0) {
10
+ const environmentVariable = env[key];
11
+ if (debug) {
12
+ console.log(`[loadJwksAccessPrivateKey] Found env var with key '${key}'!`);
13
+ }
14
+ let pem;
15
+ if (PEMFormat.isPemFormat(environmentVariable, "PRIVATE", debug)) {
16
+ try {
17
+ pem = PEMFormat.parsePem(environmentVariable, "PRIVATE");
18
+ }
19
+ catch (e) {
20
+ console.error(`Failed to import environment variable '${key}' from PEM-encoded environment variable: `, e);
21
+ throw new TypeError(`Failed to import environment variable '${key}' from PEM-encoded environment variable!`);
22
+ }
23
+ }
24
+ else if (isValidBase64UrlEncoding(environmentVariable)) {
25
+ try {
26
+ pem = PEMFormat.fromBase64Url(environmentVariable, "PRIVATE", debug);
27
+ }
28
+ catch (e) {
29
+ console.error(`Failed to convert base64url-formatted private key into PEM-format: `, e);
30
+ throw new TypeError(`Failed to import environment variable '${key}' from base64url-encoded environment variable!`);
31
+ }
32
+ }
33
+ else {
34
+ throw new TypeError(`Failed to determine what format the key in environment variable '${key}' is in!`);
35
+ }
36
+ return await importPKCS8(pem.value, sign_verify_alg);
37
+ }
38
+ else {
39
+ throw new TypeError(`Environment variable '${key}' missing!`);
40
+ }
41
+ }
42
+ //# sourceMappingURL=loadJwksAccessPrivateKey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadJwksAccessPrivateKey.js","sourceRoot":"","sources":["../../../src/env/loadJwksAccessPrivateKey/loadJwksAccessPrivateKey.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,wBAAwB,EACxB,SAAS,EACT,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,GAAG,GAAG,2CAAoD,CAAC;AAEjE,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,wBAAwB,CACpD,MAAc,OAAO,CAAC,GAAG;IAEzB,MAAM,KAAK,GACT,UAAU,IAAI,GAAG;QACjB,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,aAAa,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,MAAM,CAAC,CAAC;IAEpE,IACE,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,IAAI,GAAG;QACV,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ;QAC5B,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EACnB,CAAC;QACD,MAAM,mBAAmB,GAAW,GAAG,CAAC,GAAG,CAAC,CAAC;QAE7C,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CACT,sDAAsD,GAAG,IAAI,CAC9D,CAAC;QACJ,CAAC;QAED,IAAI,GAAc,CAAC;QACnB,IAAI,SAAS,CAAC,WAAW,CAAC,mBAAmB,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;YACjE,IAAI,CAAC;gBACH,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;YAC3D,CAAC;YAAC,OAAO,CAAU,EAAE,CAAC;gBACpB,OAAO,CAAC,KAAK,CACX,0CAA0C,GAAG,2CAA2C,EACxF,CAAC,CACF,CAAC;gBACF,MAAM,IAAI,SAAS,CACjB,0CAA0C,GAAG,0CAA0C,CACxF,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,IAAI,wBAAwB,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACzD,IAAI,CAAC;gBACH,GAAG,GAAG,SAAS,CAAC,aAAa,CAAC,mBAAmB,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YACvE,CAAC;YAAC,OAAO,CAAU,EAAE,CAAC;gBACpB,OAAO,CAAC,KAAK,CACX,qEAAqE,EACrE,CAAC,CACF,CAAC;gBACF,MAAM,IAAI,SAAS,CACjB,0CAA0C,GAAG,gDAAgD,CAC9F,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,SAAS,CACjB,oEAAoE,GAAG,UAAU,CAClF,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;IACvD,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,SAAS,CAAC,yBAAyB,GAAG,YAAY,CAAC,CAAC;IAChE,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { getAppEnvironment, getAppEnvironment as default, } from "@schemavaults/app-definitions";
2
+ export type { SchemaVaultsAppEnvironment } from "@schemavaults/app-definitions";
@@ -0,0 +1,2 @@
1
+ export { getAppEnvironment, getAppEnvironment as default, } from "@schemavaults/app-definitions";
2
+ //# sourceMappingURL=get-app-environment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-app-environment.js","sourceRoot":"","sources":["../src/get-app-environment.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,iBAAiB,IAAI,OAAO,GAC7B,MAAM,+BAA+B,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { type ApiServerId } from "@schemavaults/app-definitions";
2
+ export { type ApiServerId } from "@schemavaults/app-definitions";
3
+ /**
4
+ * @description Loads the client app ID. This is usually defined on the client-side, but this is useful in the auth-server-sdk
5
+ * for cases where one app is both the client & server (e.g. Next.js)
6
+ * @returns Parsed value of process.env.SCHEMAVAULTS_CLIENT_APP_ID
7
+ */
8
+ declare function getSchemavaultsClientApplicationId(): ApiServerId;
9
+ export { getSchemavaultsClientApplicationId };
10
+ export default getSchemavaultsClientApplicationId;