@schemavaults/auth-common 0.7.27

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 (139) hide show
  1. package/dist/audience-schema.d.ts +3 -0
  2. package/dist/audience-schema.js +12 -0
  3. package/dist/audience-schema.js.map +1 -0
  4. package/dist/auth_acquire_tokens_grant_types.d.ts +80 -0
  5. package/dist/auth_acquire_tokens_grant_types.js +48 -0
  6. package/dist/auth_acquire_tokens_grant_types.js.map +1 -0
  7. package/dist/authenticate_result.d.ts +15 -0
  8. package/dist/authenticate_result.js +12 -0
  9. package/dist/authenticate_result.js.map +1 -0
  10. package/dist/credentials/email_credentials.d.ts +12 -0
  11. package/dist/credentials/email_credentials.js +10 -0
  12. package/dist/credentials/email_credentials.js.map +1 -0
  13. package/dist/credentials/index.d.ts +3 -0
  14. package/dist/credentials/index.js +4 -0
  15. package/dist/credentials/index.js.map +1 -0
  16. package/dist/credentials/password_requirements.d.ts +2 -0
  17. package/dist/credentials/password_requirements.js +17 -0
  18. package/dist/credentials/password_requirements.js.map +1 -0
  19. package/dist/credentials/register_credentials.d.ts +28 -0
  20. package/dist/credentials/register_credentials.js +13 -0
  21. package/dist/credentials/register_credentials.js.map +1 -0
  22. package/dist/frontend-client-state.d.ts +4 -0
  23. package/dist/frontend-client-state.js +2 -0
  24. package/dist/frontend-client-state.js.map +1 -0
  25. package/dist/index.d.ts +21 -0
  26. package/dist/index.js +15 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/invite-code/index.d.ts +4 -0
  29. package/dist/invite-code/index.js +3 -0
  30. package/dist/invite-code/index.js.map +1 -0
  31. package/dist/invite-code/invite-code-definition.d.ts +21 -0
  32. package/dist/invite-code/invite-code-definition.js +18 -0
  33. package/dist/invite-code/invite-code-definition.js.map +1 -0
  34. package/dist/invite-code/invite-code-format.d.ts +3 -0
  35. package/dist/invite-code/invite-code-format.js +9 -0
  36. package/dist/invite-code/invite-code-format.js.map +1 -0
  37. package/dist/is_crypto_api_available.d.ts +1 -0
  38. package/dist/is_crypto_api_available.js +31 -0
  39. package/dist/is_crypto_api_available.js.map +1 -0
  40. package/dist/middleware/auth-middleware-error.d.ts +4 -0
  41. package/dist/middleware/auth-middleware-error.js +12 -0
  42. package/dist/middleware/auth-middleware-error.js.map +1 -0
  43. package/dist/middleware/auth-middleware.d.ts +36 -0
  44. package/dist/middleware/auth-middleware.js +177 -0
  45. package/dist/middleware/auth-middleware.js.map +1 -0
  46. package/dist/middleware/compare-path.d.ts +2 -0
  47. package/dist/middleware/compare-path.js +14 -0
  48. package/dist/middleware/compare-path.js.map +1 -0
  49. package/dist/middleware/decode-first-of-several-jwts.d.ts +10 -0
  50. package/dist/middleware/decode-first-of-several-jwts.js +56 -0
  51. package/dist/middleware/decode-first-of-several-jwts.js.map +1 -0
  52. package/dist/middleware/decode-token-type.d.ts +9 -0
  53. package/dist/middleware/decode-token-type.js +2 -0
  54. package/dist/middleware/decode-token-type.js.map +1 -0
  55. package/dist/middleware/default-auth-middleware-rules.d.ts +7 -0
  56. package/dist/middleware/default-auth-middleware-rules.js +24 -0
  57. package/dist/middleware/default-auth-middleware-rules.js.map +1 -0
  58. package/dist/middleware/determine-auth-status.d.ts +13 -0
  59. package/dist/middleware/determine-auth-status.js +91 -0
  60. package/dist/middleware/determine-auth-status.js.map +1 -0
  61. package/dist/middleware/index.d.ts +10 -0
  62. package/dist/middleware/index.js +6 -0
  63. package/dist/middleware/index.js.map +1 -0
  64. package/dist/middleware/middleware-rules.d.ts +30 -0
  65. package/dist/middleware/middleware-rules.js +117 -0
  66. package/dist/middleware/middleware-rules.js.map +1 -0
  67. package/dist/middleware/parse-navigation-path.d.ts +3 -0
  68. package/dist/middleware/parse-navigation-path.js +28 -0
  69. package/dist/middleware/parse-navigation-path.js.map +1 -0
  70. package/dist/middleware/token-source.d.ts +6 -0
  71. package/dist/middleware/token-source.js +2 -0
  72. package/dist/middleware/token-source.js.map +1 -0
  73. package/dist/organizations/index.d.ts +5 -0
  74. package/dist/organizations/index.js +4 -0
  75. package/dist/organizations/index.js.map +1 -0
  76. package/dist/organizations/organization_constants.d.ts +4 -0
  77. package/dist/organizations/organization_constants.js +5 -0
  78. package/dist/organizations/organization_constants.js.map +1 -0
  79. package/dist/organizations/organization_definition.d.ts +15 -0
  80. package/dist/organizations/organization_definition.js +20 -0
  81. package/dist/organizations/organization_definition.js.map +1 -0
  82. package/dist/organizations/organization_id.d.ts +4 -0
  83. package/dist/organizations/organization_id.js +17 -0
  84. package/dist/organizations/organization_id.js.map +1 -0
  85. package/dist/organizations/schemavaults_org_id.d.ts +1 -0
  86. package/dist/organizations/schemavaults_org_id.js +2 -0
  87. package/dist/organizations/schemavaults_org_id.js.map +1 -0
  88. package/dist/pkce/code_challenge.d.ts +31 -0
  89. package/dist/pkce/code_challenge.js +43 -0
  90. package/dist/pkce/code_challenge.js.map +1 -0
  91. package/dist/pkce/code_verifier.d.ts +27 -0
  92. package/dist/pkce/code_verifier.js +76 -0
  93. package/dist/pkce/code_verifier.js.map +1 -0
  94. package/dist/pkce/index.d.ts +5 -0
  95. package/dist/pkce/index.js +3 -0
  96. package/dist/pkce/index.js.map +1 -0
  97. package/dist/pkce/pkce.d.ts +63 -0
  98. package/dist/pkce/pkce.js +141 -0
  99. package/dist/pkce/pkce.js.map +1 -0
  100. package/dist/pkce/sha256_digest/index.d.ts +1 -0
  101. package/dist/pkce/sha256_digest/index.js +2 -0
  102. package/dist/pkce/sha256_digest/index.js.map +1 -0
  103. package/dist/pkce/sha256_digest/sha256_digest.d.ts +3 -0
  104. package/dist/pkce/sha256_digest/sha256_digest.js +30 -0
  105. package/dist/pkce/sha256_digest/sha256_digest.js.map +1 -0
  106. package/dist/request_tokens_result.d.ts +342 -0
  107. package/dist/request_tokens_result.js +52 -0
  108. package/dist/request_tokens_result.js.map +1 -0
  109. package/dist/sha256_digest/cryptojs_pkg_sha256.d.ts +2 -0
  110. package/dist/sha256_digest/cryptojs_pkg_sha256.js +11 -0
  111. package/dist/sha256_digest/cryptojs_pkg_sha256.js.map +1 -0
  112. package/dist/sha256_digest/index.d.ts +1 -0
  113. package/dist/sha256_digest/index.js +2 -0
  114. package/dist/sha256_digest/index.js.map +1 -0
  115. package/dist/sha256_digest/sha256_digest.d.ts +3 -0
  116. package/dist/sha256_digest/sha256_digest.js +28 -0
  117. package/dist/sha256_digest/sha256_digest.js.map +1 -0
  118. package/dist/sha256_digest/webcrypto_sha256.d.ts +1 -0
  119. package/dist/sha256_digest/webcrypto_sha256.js +5 -0
  120. package/dist/sha256_digest/webcrypto_sha256.js.map +1 -0
  121. package/dist/token-data/index.d.ts +3 -0
  122. package/dist/token-data/index.js +3 -0
  123. package/dist/token-data/index.js.map +1 -0
  124. package/dist/token-data/token-data.d.ts +102 -0
  125. package/dist/token-data/token-data.js +29 -0
  126. package/dist/token-data/token-data.js.map +1 -0
  127. package/dist/token-data/token-expiry.d.ts +16 -0
  128. package/dist/token-data/token-expiry.js +48 -0
  129. package/dist/token-data/token-expiry.js.map +1 -0
  130. package/dist/user_data/index.d.ts +1 -0
  131. package/dist/user_data/index.js +2 -0
  132. package/dist/user_data/index.js.map +1 -0
  133. package/dist/user_data/user_data.d.ts +58 -0
  134. package/dist/user_data/user_data.js +33 -0
  135. package/dist/user_data/user_data.js.map +1 -0
  136. package/dist/utils/maybeStripQuotes.d.ts +2 -0
  137. package/dist/utils/maybeStripQuotes.js +14 -0
  138. package/dist/utils/maybeStripQuotes.js.map +1 -0
  139. package/package.json +43 -0
@@ -0,0 +1,48 @@
1
+ /** Time Variables (seconds) */
2
+ const oneMinute = 60;
3
+ const oneHour = oneMinute * 60;
4
+ const oneDay = oneHour * 24;
5
+ const oneWeek = oneDay * 7;
6
+ // How long refresh tokens are valid for (in seconds)
7
+ export const refreshTokenExpiry = oneWeek;
8
+ export const accessTokenExpiry = oneMinute * 9; // 9 minutes (in seconds)
9
+ /**
10
+ * @param type Access or refresh token -- determines the expiry time
11
+ * @returns How many seconds after the token was issued that the token is valid for
12
+ */
13
+ function getValidDuration(type) {
14
+ let tokenValidDuration;
15
+ switch (type) {
16
+ case "refresh":
17
+ tokenValidDuration = refreshTokenExpiry;
18
+ break;
19
+ case "access":
20
+ tokenValidDuration = accessTokenExpiry;
21
+ break;
22
+ default:
23
+ throw new Error("Invalid token type");
24
+ }
25
+ return tokenValidDuration;
26
+ }
27
+ // Expiration time (in seconds) for the JWT token. After the "issued at" time + this time, the token will be invalid.
28
+ /**
29
+ *
30
+ * @param type Access or refresh token -- determines the expiry time
31
+ * @param iat The time the token was issued at (in milliseconds)
32
+ * @returns The unix timestamp the token will expire at (in milliseconds)
33
+ */
34
+ export function getExpiryTime(type, iat) {
35
+ // Get the duration (in seconds) that the token is valid for
36
+ const tokenValidDuration = getValidDuration(type);
37
+ // Convert to ms and add to iat
38
+ return iat + tokenValidDuration * 1000;
39
+ }
40
+ /**
41
+ *
42
+ * @param type Access or refresh token -- determines the expiry time
43
+ * @returns A string representing the duration that the token is valid for, parsed by the jose library
44
+ */
45
+ export function getExpiryDurationString(type) {
46
+ return `${getValidDuration(type)}s`;
47
+ }
48
+ //# sourceMappingURL=token-expiry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-expiry.js","sourceRoot":"","sources":["../../src/token-data/token-expiry.ts"],"names":[],"mappings":"AAEA,+BAA+B;AAC/B,MAAM,SAAS,GAAW,EAAW,CAAC;AACtC,MAAM,OAAO,GAAW,SAAS,GAAG,EAAE,CAAC;AACvC,MAAM,MAAM,GAAW,OAAO,GAAG,EAAE,CAAC;AACpC,MAAM,OAAO,GAAW,MAAM,GAAG,CAAC,CAAC;AAEnC,qDAAqD;AACrD,MAAM,CAAC,MAAM,kBAAkB,GAAW,OAAO,CAAC;AAElD,MAAM,CAAC,MAAM,iBAAiB,GAAW,SAAS,GAAG,CAAC,CAAC,CAAC,yBAAyB;AAEjF;;;GAGG;AACH,SAAS,gBAAgB,CAAC,IAAoB;IAC5C,IAAI,kBAA0B,CAAC;IAC/B,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,SAAS;YACZ,kBAAkB,GAAG,kBAAkB,CAAC;YACxC,MAAM;QACR,KAAK,QAAQ;YACX,kBAAkB,GAAG,iBAAiB,CAAC;YACvC,MAAM;QACR;YACE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAED,qHAAqH;AAErH;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,IAAoB,EAAE,GAAW;IAC7D,4DAA4D;IAC5D,MAAM,kBAAkB,GAAW,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1D,+BAA+B;IAC/B,OAAO,GAAG,GAAG,kBAAkB,GAAG,IAAI,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAoB;IAC1D,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC;AACtC,CAAC"}
@@ -0,0 +1 @@
1
+ export { userDataSchema, type UserData } from './user_data';
@@ -0,0 +1,2 @@
1
+ export { userDataSchema } from './user_data';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/user_data/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EAEf,MAAM,aAAa,CAAC"}
@@ -0,0 +1,58 @@
1
+ import { z } from "zod";
2
+ export declare const userDataSchema: z.ZodEffects<z.ZodObject<{
3
+ created_at: z.ZodNumber;
4
+ uid: z.ZodString;
5
+ sub: z.ZodString;
6
+ email: z.ZodString;
7
+ email_verified: z.ZodOptional<z.ZodBoolean>;
8
+ admin: z.ZodOptional<z.ZodBoolean>;
9
+ phone_number: z.ZodOptional<z.ZodString>;
10
+ phone_verified: z.ZodOptional<z.ZodBoolean>;
11
+ disabled: z.ZodOptional<z.ZodBoolean>;
12
+ invite_code: z.ZodOptional<z.ZodString>;
13
+ }, "strict", z.ZodTypeAny, {
14
+ created_at: number;
15
+ uid: string;
16
+ sub: string;
17
+ email: string;
18
+ email_verified?: boolean | undefined;
19
+ admin?: boolean | undefined;
20
+ phone_number?: string | undefined;
21
+ phone_verified?: boolean | undefined;
22
+ disabled?: boolean | undefined;
23
+ invite_code?: string | undefined;
24
+ }, {
25
+ created_at: number;
26
+ uid: string;
27
+ sub: string;
28
+ email: string;
29
+ email_verified?: boolean | undefined;
30
+ admin?: boolean | undefined;
31
+ phone_number?: string | undefined;
32
+ phone_verified?: boolean | undefined;
33
+ disabled?: boolean | undefined;
34
+ invite_code?: string | undefined;
35
+ }>, {
36
+ created_at: number;
37
+ uid: string;
38
+ sub: string;
39
+ email: string;
40
+ email_verified?: boolean | undefined;
41
+ admin?: boolean | undefined;
42
+ phone_number?: string | undefined;
43
+ phone_verified?: boolean | undefined;
44
+ disabled?: boolean | undefined;
45
+ invite_code?: string | undefined;
46
+ }, {
47
+ created_at: number;
48
+ uid: string;
49
+ sub: string;
50
+ email: string;
51
+ email_verified?: boolean | undefined;
52
+ admin?: boolean | undefined;
53
+ phone_number?: string | undefined;
54
+ phone_verified?: boolean | undefined;
55
+ disabled?: boolean | undefined;
56
+ invite_code?: string | undefined;
57
+ }>;
58
+ export type UserData = z.infer<typeof userDataSchema>;
@@ -0,0 +1,33 @@
1
+ import { inviteCodeFormatSchema } from "../invite-code/invite-code-format";
2
+ import { z } from "zod";
3
+ const _baseUserDataSchema = z
4
+ .object({
5
+ // User ID
6
+ uid: z.string().uuid(),
7
+ sub: z.string().uuid(), // duplicate of uid
8
+ // Email
9
+ email: z.string().email(),
10
+ email_verified: z.boolean().optional(),
11
+ // Admin
12
+ admin: z.boolean().optional(),
13
+ // Phone
14
+ phone_number: z.string().min(10).max(15).optional(),
15
+ phone_verified: z.boolean().optional(),
16
+ // Account Disabled / Banned
17
+ disabled: z.boolean().optional(),
18
+ // Creation Timestamp
19
+ created_at: z.number().int().positive(),
20
+ // Invite code
21
+ invite_code: inviteCodeFormatSchema.optional(),
22
+ })
23
+ .required({
24
+ uid: true,
25
+ email: true,
26
+ sub: true,
27
+ created_at: true,
28
+ })
29
+ .strict();
30
+ export const userDataSchema = _baseUserDataSchema.refine((data) => {
31
+ return data.uid === data.sub;
32
+ }, "User ID fields do not match");
33
+ //# sourceMappingURL=user_data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user_data.js","sourceRoot":"","sources":["../../src/user_data/user_data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,mBAAmB,GAAG,CAAC;KAC1B,MAAM,CAAC;IACN,UAAU;IACV,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IACtB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,mBAAmB;IAE3C,QAAQ;IACR,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE;IACzB,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAEtC,QAAQ;IACR,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAE7B,QAAQ;IACR,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IACnD,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAEtC,4BAA4B;IAC5B,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAEhC,qBAAqB;IACrB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAEvC,cAAc;IACd,WAAW,EAAE,sBAAsB,CAAC,QAAQ,EAAE;CAC/C,CAAC;KACD,QAAQ,CAAC;IACR,GAAG,EAAE,IAAI;IACT,KAAK,EAAE,IAAI;IACX,GAAG,EAAE,IAAI;IACT,UAAU,EAAE,IAAI;CACjB,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,cAAc,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;IAChE,OAAO,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC;AAC/B,CAAC,EAAE,6BAA6B,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function maybeStripQuotes(maybeQuotes?: string | undefined): string | undefined;
2
+ export default maybeStripQuotes;
@@ -0,0 +1,14 @@
1
+ export function maybeStripQuotes(maybeQuotes) {
2
+ if (!maybeQuotes)
3
+ return maybeQuotes;
4
+ const trimmed = maybeQuotes.trim();
5
+ if (trimmed.startsWith('"') && trimmed.endsWith('"')) {
6
+ return trimmed.slice(1, -1);
7
+ }
8
+ if (trimmed.startsWith("'") && trimmed.endsWith("'")) {
9
+ return trimmed.slice(1, -1);
10
+ }
11
+ return trimmed;
12
+ }
13
+ export default maybeStripQuotes;
14
+ //# sourceMappingURL=maybeStripQuotes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maybeStripQuotes.js","sourceRoot":"","sources":["../../src/utils/maybeStripQuotes.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,gBAAgB,CAC9B,WAAgC;IAEhC,IAAI,CAAC,WAAW;QAAE,OAAO,WAAW,CAAC;IACrC,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;IACnC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACrD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACrD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,eAAe,gBAAgB,CAAC"}
package/package.json ADDED
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "@schemavaults/auth-common",
3
+ "description": "Types and utility functions for authentication and authorization",
4
+ "version": "0.7.27",
5
+ "license": "UNLICENSED",
6
+ "private": false,
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/schemavaults/auth.git",
10
+ "directory": "packages/auth-common"
11
+ },
12
+ "type": "module",
13
+ "main": "dist/index.js",
14
+ "types": "dist/index.d.ts",
15
+ "dependencies": {
16
+ "zod": "3.23.8",
17
+ "@schemavaults/app-definitions": "0.6.1",
18
+ "crypto-js": "4.2.0"
19
+ },
20
+ "scripts": {
21
+ "build": "tsc --project tsconfig.json && tsc-alias --project tsconfig.json",
22
+ "test": "NODE_ENV=test bun test",
23
+ "cleanup:compiled-tests-output": "find ./dist -type f \\( -name \"*.test.js\" -o -name \"*.test.js.map\" -o -name \"*.test.d.ts\" \\) -delete",
24
+ "cleanup": "bun run cleanup:compiled-tests-output",
25
+ "postbuild": "bun run cleanup",
26
+ "lint": "eslint src --ext .ts,.tsx"
27
+ },
28
+ "devDependencies": {
29
+ "typescript": "5.8.3",
30
+ "tsc-alias": "1.8.16",
31
+ "@types/crypto-js": "4.2.0",
32
+ "bun-types": "1.3.6",
33
+ "eslint": "9.39.1",
34
+ "@eslint/js": "9.39.1",
35
+ "globals": "16.5.0",
36
+ "@typescript-eslint/eslint-plugin": "8.48.1",
37
+ "@typescript-eslint/parser": "8.48.1"
38
+ },
39
+ "publishConfig": {
40
+ "access": "public"
41
+ },
42
+ "packageManager": "bun@1.3.6"
43
+ }