@tinyrack/issuary-server 0.20.0 → 0.21.1

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 (37) hide show
  1. package/LICENSE +21 -0
  2. package/dist/repositories/oauth-code.repository.d.ts +2 -2
  3. package/dist/repositories/oauth-code.repository.d.ts.map +1 -1
  4. package/dist/repositories/oauth-code.repository.js +7 -3
  5. package/dist/repositories/oauth-code.repository.js.map +1 -1
  6. package/dist/repositories/oauth-device-code.repository.d.ts +4 -4
  7. package/dist/repositories/oauth-device-code.repository.d.ts.map +1 -1
  8. package/dist/repositories/oauth-device-code.repository.js +18 -6
  9. package/dist/repositories/oauth-device-code.repository.js.map +1 -1
  10. package/dist/repositories/user-totp-recovery-code.repository.d.ts +1 -1
  11. package/dist/repositories/user-totp-recovery-code.repository.d.ts.map +1 -1
  12. package/dist/repositories/user-totp-recovery-code.repository.js +2 -1
  13. package/dist/repositories/user-totp-recovery-code.repository.js.map +1 -1
  14. package/dist/routes/oauth/device/get-post.js +5 -5
  15. package/dist/routes/oauth/device/get-post.js.map +1 -1
  16. package/dist/seeders/config.seeder.js +1 -1
  17. package/dist/services/container.d.ts.map +1 -1
  18. package/dist/services/container.js +41 -0
  19. package/dist/services/container.js.map +1 -1
  20. package/dist/services/oauth-client.service.d.ts +1 -0
  21. package/dist/services/oauth-client.service.d.ts.map +1 -1
  22. package/dist/services/oauth-client.service.js +17 -2
  23. package/dist/services/oauth-client.service.js.map +1 -1
  24. package/dist/services/oauth-token.service.d.ts.map +1 -1
  25. package/dist/services/oauth-token.service.js +4 -4
  26. package/dist/services/oauth-token.service.js.map +1 -1
  27. package/dist/services/password-auth.service.d.ts.map +1 -1
  28. package/dist/services/password-auth.service.js +10 -2
  29. package/dist/services/password-auth.service.js.map +1 -1
  30. package/dist/services/security.service.d.ts +8 -0
  31. package/dist/services/security.service.d.ts.map +1 -1
  32. package/dist/services/security.service.js +85 -22
  33. package/dist/services/security.service.js.map +1 -1
  34. package/dist/services/totp.service.js +2 -2
  35. package/dist/services/totp.service.js.map +1 -1
  36. package/package.json +51 -148
  37. package/readme.md +106 -0
@@ -1 +1 @@
1
- {"version":3,"file":"password-auth.service.d.ts","sourceRoot":"","sources":["../../src/services/password-auth.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IACrC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;gBAG9C,KAAK,EAAE,YAAY,EACnB,eAAe,EAAE,eAAe,EAChC,cAAc,EAAE,cAAc;IAOnB,8BAA8B,CAAC,MAAM,EAAE;QAClD,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CACT,MAAM,CAAC,UAAU,EAAE,eAAe,GAAG,UAAU,GAAG,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CACvE;IAsBY,kBAAkB,CAAC,MAAM,EAAE;QACtC,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,UAAU,CAAC;IAaV,kBAAkB,CAC7B,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC;IAcH,cAAc,CACzB,IAAI,EAAE,UAAU,EAChB,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IAsBH,cAAc,CACzB,IAAI,EAAE,UAAU,EAChB,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC;IAmCH,eAAe,CAC1B,IAAI,EAAE,UAAU,EAChB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;CAMjB"}
1
+ {"version":3,"file":"password-auth.service.d.ts","sourceRoot":"","sources":["../../src/services/password-auth.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IACrC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;gBAG9C,KAAK,EAAE,YAAY,EACnB,eAAe,EAAE,eAAe,EAChC,cAAc,EAAE,cAAc;IAOnB,8BAA8B,CAAC,MAAM,EAAE;QAClD,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CACT,MAAM,CAAC,UAAU,EAAE,eAAe,GAAG,UAAU,GAAG,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CACvE;IAqCY,kBAAkB,CAAC,MAAM,EAAE;QACtC,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,UAAU,CAAC;IAaV,kBAAkB,CAC7B,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC;IAcH,cAAc,CACzB,IAAI,EAAE,UAAU,EAChB,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IAsBH,cAAc,CACzB,IAAI,EAAE,UAAU,EAChB,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC;IAmCH,eAAe,CAC1B,IAAI,EAAE,UAAU,EAChB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;CAMjB"}
@@ -15,10 +15,18 @@ export class PasswordAuthService {
15
15
  if (!user.password_hash) {
16
16
  throw err;
17
17
  }
18
- const isValid = await this.securityService.verifyPassword(user.password_hash, params.password);
19
- if (!isValid) {
18
+ const verification = await this.securityService.verifyPasswordAndCheckRehash(user.password_hash, params.password);
19
+ if (!verification.valid) {
20
20
  throw err;
21
21
  }
22
+ if (verification.needsRehash) {
23
+ const previousHash = user.password_hash;
24
+ const passwordHash = await this.securityService.hashPassword(params.password);
25
+ const updated = await this.mikro.user.nativeUpdate({ sub: user.sub, password_hash: previousHash }, { password_hash: passwordHash });
26
+ if (updated === 1) {
27
+ user.password_hash = passwordHash;
28
+ }
29
+ }
22
30
  return user;
23
31
  }
24
32
  async createDatabaseUser(params) {
@@ -1 +1 @@
1
- {"version":3,"file":"password-auth.service.js","sourceRoot":"","sources":["../../src/services/password-auth.service.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,oBAAoB,GAErB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,CAAC,EAAE,MAAM,qBAAqB,CAAC;AAIxC,MAAM,OAAO,mBAAmB;IACb,KAAK,CAAe;IACpB,eAAe,CAAkB;IACjC,cAAc,CAAiB;IAEhD,YACE,KAAmB,EACnB,eAAgC,EAChC,cAA8B;QAE9B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAEM,KAAK,CAAC,8BAA8B,CAAC,MAG3C;QAGC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC;QACjD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gCAAgC,CACjE,MAAM,CAAC,KAAK,CACb,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,MAAM,GAAG,CAAC;QACZ,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,cAAc,CACvD,IAAI,CAAC,aAAa,EAClB,MAAM,CAAC,QAAQ,CAChB,CAAC;QAEF,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,GAAG,CAAC;QACZ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAAC,MAG/B;QACC,oBAAoB,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAE3D,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,CAC1D,MAAM,CAAC,QAAQ,CAChB,CAAC;QAEF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC9B,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,YAAY;SACb,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAC7B,IAAgB,EAChB,QAAgB;QAEhB,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QACtC,CAAC;QAED,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;QAEtD,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;QACzC,CAAC;QAED,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAEM,KAAK,CAAC,cAAc,CACzB,IAAgB,EAChB,eAAuB,EACvB,WAAmB;QAEnB,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QACtC,CAAC;QAED,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;QAEtD,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,MAAM,IAAI,CAAC,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QACrC,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,cAAc,CACvD,IAAI,CAAC,aAAa,EAClB,eAAe,CAChB,CAAC;QACF,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,CAAC,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC;QAC7C,CAAC;QAED,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAChD,CAAC;IAEM,KAAK,CAAC,cAAc,CACzB,IAAgB,EAChB,eAAuB;QAEvB,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QACtC,CAAC;QAED,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;QAEtD,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,MAAM,IAAI,CAAC,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QACrC,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,cAAc,CACvD,IAAI,CAAC,aAAa,EAClB,eAAe,CAChB,CAAC;QACF,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,CAAC,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC;QAC7C,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjE,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3E,MAAM,eAAe,GAAG,OAAO,IAAI,YAAY,GAAG,CAAC,CAAC;QAEpD,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;YACrB,IAAI,eAAe,EAAE,CAAC;gBACpB,MAAM,IAAI,CAAC,CAAC,wCAAwC,CAAC,KAAK,EAAE,CAAC;YAC/D,CAAC;YACD,MAAM,IAAI,CAAC,CAAC,0BAA0B,CAAC,KAAK,EAAE,CAAC;QACjD,CAAC;QAED,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IAEM,KAAK,CAAC,eAAe,CAC1B,IAAgB,EAChB,WAAmB;QAEnB,oBAAoB,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAEvD,IAAI,CAAC,aAAa,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QAC1E,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;CACF"}
1
+ {"version":3,"file":"password-auth.service.js","sourceRoot":"","sources":["../../src/services/password-auth.service.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,9 @@
1
1
  import type { IssuaryRuntimeConfig } from '../lib/config/index.ts';
2
2
  export type OpaquePurpose = 'oauth-code' | 'oauth-device-code' | 'oauth-device-user-code' | 'totp-recovery';
3
+ export interface SecretVerificationResult {
4
+ valid: boolean;
5
+ needsRehash: boolean;
6
+ }
3
7
  export declare class SecurityService {
4
8
  private readonly hashMasterSecret;
5
9
  private readonly pbkdf2Iterations;
@@ -10,8 +14,12 @@ export declare class SecurityService {
10
14
  private verifyPbkdf2Secret;
11
15
  hashPassword(password: string): Promise<string>;
12
16
  verifyPassword(hash: string, password: string): Promise<boolean>;
17
+ verifyPasswordAndCheckRehash(hash: string, password: string): Promise<SecretVerificationResult>;
13
18
  hashClientSecret(clientSecret: string): Promise<string>;
14
19
  verifyClientSecret(hash: string, clientSecret: string): Promise<boolean>;
20
+ verifyClientSecretAndCheckRehash(hash: string, clientSecret: string): Promise<SecretVerificationResult>;
15
21
  hashOpaqueToken(purpose: OpaquePurpose, value: string): Promise<string>;
22
+ hashOpaqueTokenCandidates(purpose: OpaquePurpose, value: string): Promise<string[]>;
23
+ private hashOpaqueTokenForPolicy;
16
24
  }
17
25
  //# sourceMappingURL=security.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"security.service.d.ts","sourceRoot":"","sources":["../../src/services/security.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAoBnE,MAAM,MAAM,aAAa,GACrB,YAAY,GACZ,mBAAmB,GACnB,wBAAwB,GACxB,eAAe,CAAC;AAYpB,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAa;IAC9C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA2C;gBAExD,MAAM,EAAE,oBAAoB;YAUjC,iBAAiB;YAiBjB,gBAAgB;YAyBhB,kBAAkB;IAyBnB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI/C,cAAc,CACzB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,CAAC;IAIN,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIvD,kBAAkB,CAC7B,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,OAAO,CAAC;IAIN,eAAe,CAC1B,OAAO,EAAE,aAAa,EACtB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC;CAUnB"}
1
+ {"version":3,"file":"security.service.d.ts","sourceRoot":"","sources":["../../src/services/security.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAoBnE,MAAM,MAAM,aAAa,GACrB,YAAY,GACZ,mBAAmB,GACnB,wBAAwB,GACxB,eAAe,CAAC;AAKpB,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;CACtB;AAoDD,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAa;IAC9C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA0C;gBAEvD,MAAM,EAAE,oBAAoB;YAUjC,iBAAiB;YAsBjB,gBAAgB;YA4BhB,kBAAkB;IA2CnB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI/C,cAAc,CACzB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,CAAC;IAIN,4BAA4B,CACvC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,wBAAwB,CAAC;IAIvB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIvD,kBAAkB,CAC7B,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,OAAO,CAAC;IAKN,gCAAgC,CAC3C,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,wBAAwB,CAAC;IAIvB,eAAe,CAC1B,OAAO,EAAE,aAAa,EACtB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC;IAIL,yBAAyB,CACpC,OAAO,EAAE,aAAa,EACtB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,EAAE,CAAC;YAQN,wBAAwB;CAevC"}
@@ -2,18 +2,52 @@ import { fromBase64Url } from "../lib/base64url.js";
2
2
  import { derivePbkdf2Bytes, derivePurposeKeyBytes, formatOpaqueHash, formatPbkdf2Hash, getRandomBytes, parsePbkdf2Hash, signOpaqueValue, timingSafeEqualBytes, } from "../lib/crypto.js";
3
3
  const PBKDF2_ALGORITHM = 'pbkdf2-sha256';
4
4
  const HMAC_ALGORITHM = 'hmac-sha256';
5
- const HASH_FORMAT_VERSION = 1;
6
- const HKDF_CONTEXT = 'issuary-hash-master-v1';
5
+ const CURRENT_HASH_FORMAT_VERSION = 2;
6
+ const LEGACY_HASH_FORMAT_VERSION = 1;
7
7
  const PBKDF2_SALT_BYTES = 16;
8
8
  const PBKDF2_DERIVED_KEY_BYTES = 32;
9
- const PURPOSE_LABELS = {
10
- password: 'password-v1',
11
- 'client-secret': 'client-secret-v1',
12
- 'oauth-code': 'oauth-code-v1',
13
- 'oauth-device-code': 'oauth-device-code-v1',
14
- 'oauth-device-user-code': 'oauth-device-user-code-v1',
15
- 'totp-recovery': 'totp-recovery-v1',
9
+ const HASH_POLICIES = {
10
+ 'tinyauth-v1': {
11
+ // Kept only while persisted v1 hashes still exist. Remove with v1 support.
12
+ formatVersion: LEGACY_HASH_FORMAT_VERSION,
13
+ context: 'tinyauth-hash-master-v1',
14
+ purposeLabels: {
15
+ password: 'password-v1',
16
+ 'client-secret': 'client-secret-v1',
17
+ 'oauth-code': 'oauth-code-v1',
18
+ 'oauth-device-code': 'oauth-device-code-v1',
19
+ 'oauth-device-user-code': 'oauth-device-user-code-v1',
20
+ 'totp-recovery': 'totp-recovery-v1',
21
+ },
22
+ },
23
+ 'issuary-v1': {
24
+ // Issuary 0.21.0 wrote this ambiguous v1 variant after the rebrand.
25
+ formatVersion: LEGACY_HASH_FORMAT_VERSION,
26
+ context: 'issuary-hash-master-v1',
27
+ purposeLabels: {
28
+ password: 'password-v1',
29
+ 'client-secret': 'client-secret-v1',
30
+ 'oauth-code': 'oauth-code-v1',
31
+ 'oauth-device-code': 'oauth-device-code-v1',
32
+ 'oauth-device-user-code': 'oauth-device-user-code-v1',
33
+ 'totp-recovery': 'totp-recovery-v1',
34
+ },
35
+ },
36
+ v2: {
37
+ formatVersion: CURRENT_HASH_FORMAT_VERSION,
38
+ context: 'auth-hash-master-v2',
39
+ purposeLabels: {
40
+ password: 'password-v2',
41
+ 'client-secret': 'client-secret-v2',
42
+ 'oauth-code': 'oauth-code-v2',
43
+ 'oauth-device-code': 'oauth-device-code-v2',
44
+ 'oauth-device-user-code': 'oauth-device-user-code-v2',
45
+ 'totp-recovery': 'totp-recovery-v2',
46
+ },
47
+ },
16
48
  };
49
+ const CURRENT_HASH_POLICY = 'v2';
50
+ const LEGACY_HASH_POLICIES = ['tinyauth-v1', 'issuary-v1'];
17
51
  export class SecurityService {
18
52
  hashMasterSecret;
19
53
  pbkdf2Iterations;
@@ -26,23 +60,25 @@ export class SecurityService {
26
60
  this.hashMasterSecret = decodedSecret;
27
61
  this.pbkdf2Iterations = config.security.pbkdf2_iterations;
28
62
  }
29
- async resolvePurposeKey(purpose) {
30
- const cached = this.purposeKeyCache.get(purpose);
63
+ async resolvePurposeKey(purpose, policyId) {
64
+ const cacheKey = `${policyId}:${purpose}`;
65
+ const cached = this.purposeKeyCache.get(cacheKey);
31
66
  if (cached) {
32
67
  return cached;
33
68
  }
34
- const derivation = derivePurposeKeyBytes(globalThis.crypto, this.hashMasterSecret, HKDF_CONTEXT, PURPOSE_LABELS[purpose], PBKDF2_DERIVED_KEY_BYTES);
35
- this.purposeKeyCache.set(purpose, derivation);
69
+ const policy = HASH_POLICIES[policyId];
70
+ const derivation = derivePurposeKeyBytes(globalThis.crypto, this.hashMasterSecret, policy.context, policy.purposeLabels[purpose], PBKDF2_DERIVED_KEY_BYTES);
71
+ this.purposeKeyCache.set(cacheKey, derivation);
36
72
  return derivation;
37
73
  }
38
74
  async hashPbkdf2Secret(purpose, secret) {
39
75
  const crypto = globalThis.crypto;
40
- const purposeKey = await this.resolvePurposeKey(purpose);
76
+ const purposeKey = await this.resolvePurposeKey(purpose, CURRENT_HASH_POLICY);
41
77
  const salt = getRandomBytes(PBKDF2_SALT_BYTES);
42
78
  const digest = await derivePbkdf2Bytes(crypto, purposeKey, secret, salt, this.pbkdf2Iterations, PBKDF2_DERIVED_KEY_BYTES);
43
79
  return formatPbkdf2Hash({
44
80
  algorithm: PBKDF2_ALGORITHM,
45
- version: HASH_FORMAT_VERSION,
81
+ version: CURRENT_HASH_FORMAT_VERSION,
46
82
  iterations: this.pbkdf2Iterations,
47
83
  salt,
48
84
  digest,
@@ -50,33 +86,60 @@ export class SecurityService {
50
86
  }
51
87
  async verifyPbkdf2Secret(purpose, hash, secret) {
52
88
  const parsed = parsePbkdf2Hash(hash, PBKDF2_ALGORITHM);
53
- if (!parsed || parsed.version !== HASH_FORMAT_VERSION) {
54
- return false;
89
+ if (!parsed ||
90
+ (parsed.version !== CURRENT_HASH_FORMAT_VERSION &&
91
+ parsed.version !== LEGACY_HASH_FORMAT_VERSION)) {
92
+ return { valid: false, needsRehash: false };
55
93
  }
56
94
  const crypto = globalThis.crypto;
57
- const purposeKey = await this.resolvePurposeKey(purpose);
58
- const derived = await derivePbkdf2Bytes(crypto, purposeKey, secret, parsed.salt, parsed.iterations, PBKDF2_DERIVED_KEY_BYTES);
59
- return timingSafeEqualBytes(derived, parsed.digest);
95
+ const policyIds = parsed.version === CURRENT_HASH_FORMAT_VERSION
96
+ ? [CURRENT_HASH_POLICY]
97
+ : LEGACY_HASH_POLICIES;
98
+ for (const policyId of policyIds) {
99
+ const purposeKey = await this.resolvePurposeKey(purpose, policyId);
100
+ const derived = await derivePbkdf2Bytes(crypto, purposeKey, secret, parsed.salt, parsed.iterations, PBKDF2_DERIVED_KEY_BYTES);
101
+ if (timingSafeEqualBytes(derived, parsed.digest)) {
102
+ return {
103
+ valid: true,
104
+ needsRehash: parsed.version !== CURRENT_HASH_FORMAT_VERSION,
105
+ };
106
+ }
107
+ }
108
+ return { valid: false, needsRehash: false };
60
109
  }
61
110
  async hashPassword(password) {
62
111
  return this.hashPbkdf2Secret('password', password);
63
112
  }
64
113
  async verifyPassword(hash, password) {
114
+ return (await this.verifyPasswordAndCheckRehash(hash, password)).valid;
115
+ }
116
+ async verifyPasswordAndCheckRehash(hash, password) {
65
117
  return this.verifyPbkdf2Secret('password', hash, password);
66
118
  }
67
119
  async hashClientSecret(clientSecret) {
68
120
  return this.hashPbkdf2Secret('client-secret', clientSecret);
69
121
  }
70
122
  async verifyClientSecret(hash, clientSecret) {
123
+ return (await this.verifyClientSecretAndCheckRehash(hash, clientSecret))
124
+ .valid;
125
+ }
126
+ async verifyClientSecretAndCheckRehash(hash, clientSecret) {
71
127
  return this.verifyPbkdf2Secret('client-secret', hash, clientSecret);
72
128
  }
73
129
  async hashOpaqueToken(purpose, value) {
130
+ return this.hashOpaqueTokenForPolicy(purpose, value, CURRENT_HASH_POLICY);
131
+ }
132
+ async hashOpaqueTokenCandidates(purpose, value) {
133
+ return Promise.all([CURRENT_HASH_POLICY, ...LEGACY_HASH_POLICIES].map((policyId) => this.hashOpaqueTokenForPolicy(purpose, value, policyId)));
134
+ }
135
+ async hashOpaqueTokenForPolicy(purpose, value, policyId) {
74
136
  const crypto = globalThis.crypto;
75
- const purposeKey = await this.resolvePurposeKey(purpose);
137
+ const policy = HASH_POLICIES[policyId];
138
+ const purposeKey = await this.resolvePurposeKey(purpose, policyId);
76
139
  const digest = await signOpaqueValue(crypto, purposeKey, value);
77
140
  return formatOpaqueHash({
78
141
  algorithm: HMAC_ALGORITHM,
79
- version: HASH_FORMAT_VERSION,
142
+ version: policy.formatVersion,
80
143
  digest,
81
144
  });
82
145
  }
@@ -1 +1 @@
1
- {"version":3,"file":"security.service.js","sourceRoot":"","sources":["../../src/services/security.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,eAAe,EACf,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,gBAAgB,GAAG,eAAe,CAAC;AACzC,MAAM,cAAc,GAAG,aAAa,CAAC;AACrC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAC9B,MAAM,YAAY,GAAG,wBAAwB,CAAC;AAC9C,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAC7B,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAUpC,MAAM,cAAc,GAA4B;IAC9C,QAAQ,EAAE,aAAa;IACvB,eAAe,EAAE,kBAAkB;IACnC,YAAY,EAAE,eAAe;IAC7B,mBAAmB,EAAE,sBAAsB;IAC3C,wBAAwB,EAAE,2BAA2B;IACrD,eAAe,EAAE,kBAAkB;CACpC,CAAC;AAEF,MAAM,OAAO,eAAe;IACT,gBAAgB,CAAa;IAC7B,gBAAgB,CAAS;IACzB,eAAe,GAAG,IAAI,GAAG,EAAgC,CAAC;IAE3E,YAAmB,MAA4B;QAC7C,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACjE,IAAI,aAAa,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;QAED,IAAI,CAAC,gBAAgB,GAAG,aAAa,CAAC;QACtC,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC5D,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,OAAgB;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,UAAU,GAAG,qBAAqB,CACtC,UAAU,CAAC,MAAM,EACjB,IAAI,CAAC,gBAAgB,EACrB,YAAY,EACZ,cAAc,CAAC,OAAO,CAAC,EACvB,wBAAwB,CACzB,CAAC;QACF,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAC9C,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAC5B,OAAsB,EACtB,MAAc;QAEd,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QACjC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACzD,MAAM,IAAI,GAAG,cAAc,CAAC,iBAAiB,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,MAAM,iBAAiB,CACpC,MAAM,EACN,UAAU,EACV,MAAM,EACN,IAAI,EACJ,IAAI,CAAC,gBAAgB,EACrB,wBAAwB,CACzB,CAAC;QAEF,OAAO,gBAAgB,CAAC;YACtB,SAAS,EAAE,gBAAgB;YAC3B,OAAO,EAAE,mBAAmB;YAC5B,UAAU,EAAE,IAAI,CAAC,gBAAgB;YACjC,IAAI;YACJ,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAC9B,OAAsB,EACtB,IAAY,EACZ,MAAc;QAEd,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QAEvD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,KAAK,mBAAmB,EAAE,CAAC;YACtD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QACjC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,MAAM,iBAAiB,CACrC,MAAM,EACN,UAAU,EACV,MAAM,EACN,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,UAAU,EACjB,wBAAwB,CACzB,CAAC;QAEF,OAAO,oBAAoB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,QAAgB;QACxC,OAAO,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACrD,CAAC;IAEM,KAAK,CAAC,cAAc,CACzB,IAAY,EACZ,QAAgB;QAEhB,OAAO,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC7D,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,YAAoB;QAChD,OAAO,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;IAC9D,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAC7B,IAAY,EACZ,YAAoB;QAEpB,OAAO,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IACtE,CAAC;IAEM,KAAK,CAAC,eAAe,CAC1B,OAAsB,EACtB,KAAa;QAEb,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QACjC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QAChE,OAAO,gBAAgB,CAAC;YACtB,SAAS,EAAE,cAAc;YACzB,OAAO,EAAE,mBAAmB;YAC5B,MAAM;SACP,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"security.service.js","sourceRoot":"","sources":["../../src/services/security.service.ts"],"names":[],"mappings":"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"}
@@ -218,8 +218,8 @@ export class TotpService {
218
218
  if (unusedCodeCount === 0) {
219
219
  throw new e.NoRecoveryCodesAvailable.Error();
220
220
  }
221
- const codeHash = await this.securityService.hashOpaqueToken('totp-recovery', normalizedCode);
222
- const recoveryCode = await this.mikro.userTotpRecoveryCode.findUnusedByUserSubAndCodeHash(userId, codeHash);
221
+ const codeHashes = await this.securityService.hashOpaqueTokenCandidates('totp-recovery', normalizedCode);
222
+ const recoveryCode = await this.mikro.userTotpRecoveryCode.findUnusedByUserSubAndCodeHash(userId, codeHashes);
223
223
  if (!recoveryCode) {
224
224
  throw new e.InvalidRecoveryCode.Error();
225
225
  }
@@ -1 +1 @@
1
- {"version":3,"file":"totp.service.js","sourceRoot":"","sources":["../../src/services/totp.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"totp.service.js","sourceRoot":"","sources":["../../src/services/totp.service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "name": "@tinyrack/issuary-server",
3
- "version": "0.20.0",
4
- "private": false,
3
+ "version": "0.21.1",
5
4
  "type": "module",
6
5
  "description": "OpenID Connect Provider with OAuth2 support",
7
6
  "license": "MIT",
@@ -14,172 +13,123 @@
14
13
  "public",
15
14
  "dist"
16
15
  ],
17
- "publishConfig": {
18
- "exports": {
19
- ".": {
20
- "types": "./dist/entrypoints/index.d.ts",
21
- "default": "./dist/entrypoints/index.js"
22
- },
23
- "./config": {
24
- "types": "./dist/entrypoints/config/index.d.ts",
25
- "default": "./dist/entrypoints/config/index.js"
26
- },
27
- "./services": {
28
- "types": "./dist/entrypoints/services.d.ts",
29
- "default": "./dist/entrypoints/services.js"
30
- },
31
- "./database/postgres": {
32
- "types": "./dist/entrypoints/database/postgres/postgres.d.ts",
33
- "default": "./dist/entrypoints/database/postgres/postgres.js"
34
- },
35
- "./database/sqlite": {
36
- "types": "./dist/entrypoints/database/sqlite/sqlite.d.ts",
37
- "default": "./dist/entrypoints/database/sqlite/sqlite.js"
38
- },
39
- "./mail/nodemailer": {
40
- "types": "./dist/entrypoints/mail/nodemailer.d.ts",
41
- "default": "./dist/entrypoints/mail/nodemailer.js"
42
- },
43
- "./scheduler/croner": {
44
- "types": "./dist/entrypoints/scheduler/croner.d.ts",
45
- "default": "./dist/entrypoints/scheduler/croner.js"
46
- },
47
- "./scheduler/database": {
48
- "types": "./dist/entrypoints/scheduler/database.d.ts",
49
- "default": "./dist/entrypoints/scheduler/database.js"
50
- },
51
- "./identity-providers/github": {
52
- "types": "./dist/entrypoints/identity-providers/github.d.ts",
53
- "default": "./dist/entrypoints/identity-providers/github.js"
54
- },
55
- "./identity-providers/google": {
56
- "types": "./dist/entrypoints/identity-providers/google.d.ts",
57
- "default": "./dist/entrypoints/identity-providers/google.js"
58
- },
59
- "./identity-providers/apple": {
60
- "types": "./dist/entrypoints/identity-providers/apple.d.ts",
61
- "default": "./dist/entrypoints/identity-providers/apple.js"
62
- },
63
- "./identity-providers/generic-oauth": {
64
- "types": "./dist/entrypoints/identity-providers/generic-oauth.d.ts",
65
- "default": "./dist/entrypoints/identity-providers/generic-oauth.js"
66
- },
67
- "./frontend": {
68
- "types": "./dist/entrypoints/frontend/index.d.ts",
69
- "default": "./dist/entrypoints/frontend/index.js"
70
- },
71
- "./frontend/static": {
72
- "types": "./dist/entrypoints/frontend/static.d.ts",
73
- "default": "./dist/entrypoints/frontend/static.js"
74
- },
75
- "./frontend/proxy": {
76
- "types": "./dist/entrypoints/frontend/proxy.d.ts",
77
- "default": "./dist/entrypoints/frontend/proxy.js"
78
- }
79
- },
80
- "imports": {
81
- "#server/*.ts": "./dist/*.js",
82
- "#server/*.tsx": "./dist/*.js",
83
- "#server/*": {
84
- "types": "./dist/*",
85
- "default": "./dist/*"
86
- }
87
- }
88
- },
89
16
  "exports": {
90
17
  ".": {
91
- "@issuary/source": "./src/entrypoints/index.ts",
92
18
  "types": "./dist/entrypoints/index.d.ts",
93
19
  "default": "./dist/entrypoints/index.js"
94
20
  },
95
21
  "./config": {
96
- "@issuary/source": "./src/entrypoints/config/index.ts",
97
22
  "types": "./dist/entrypoints/config/index.d.ts",
98
23
  "default": "./dist/entrypoints/config/index.js"
99
24
  },
100
25
  "./services": {
101
- "@issuary/source": "./src/entrypoints/services.ts",
102
26
  "types": "./dist/entrypoints/services.d.ts",
103
27
  "default": "./dist/entrypoints/services.js"
104
28
  },
105
29
  "./database/postgres": {
106
- "@issuary/source": "./src/entrypoints/database/postgres/postgres.ts",
107
30
  "types": "./dist/entrypoints/database/postgres/postgres.d.ts",
108
31
  "default": "./dist/entrypoints/database/postgres/postgres.js"
109
32
  },
110
33
  "./database/sqlite": {
111
- "@issuary/source": "./src/entrypoints/database/sqlite/sqlite.ts",
112
34
  "types": "./dist/entrypoints/database/sqlite/sqlite.d.ts",
113
35
  "default": "./dist/entrypoints/database/sqlite/sqlite.js"
114
36
  },
115
37
  "./mail/nodemailer": {
116
- "@issuary/source": "./src/entrypoints/mail/nodemailer.ts",
117
38
  "types": "./dist/entrypoints/mail/nodemailer.d.ts",
118
39
  "default": "./dist/entrypoints/mail/nodemailer.js"
119
40
  },
120
41
  "./scheduler/croner": {
121
- "@issuary/source": "./src/entrypoints/scheduler/croner.ts",
122
42
  "types": "./dist/entrypoints/scheduler/croner.d.ts",
123
43
  "default": "./dist/entrypoints/scheduler/croner.js"
124
44
  },
125
45
  "./scheduler/database": {
126
- "@issuary/source": "./src/entrypoints/scheduler/database.ts",
127
46
  "types": "./dist/entrypoints/scheduler/database.d.ts",
128
47
  "default": "./dist/entrypoints/scheduler/database.js"
129
48
  },
130
49
  "./identity-providers/github": {
131
- "@issuary/source": "./src/entrypoints/identity-providers/github.ts",
132
50
  "types": "./dist/entrypoints/identity-providers/github.d.ts",
133
51
  "default": "./dist/entrypoints/identity-providers/github.js"
134
52
  },
135
53
  "./identity-providers/google": {
136
- "@issuary/source": "./src/entrypoints/identity-providers/google.ts",
137
54
  "types": "./dist/entrypoints/identity-providers/google.d.ts",
138
55
  "default": "./dist/entrypoints/identity-providers/google.js"
139
56
  },
140
57
  "./identity-providers/apple": {
141
- "@issuary/source": "./src/entrypoints/identity-providers/apple.ts",
142
58
  "types": "./dist/entrypoints/identity-providers/apple.d.ts",
143
59
  "default": "./dist/entrypoints/identity-providers/apple.js"
144
60
  },
145
61
  "./identity-providers/generic-oauth": {
146
- "@issuary/source": "./src/entrypoints/identity-providers/generic-oauth.ts",
147
62
  "types": "./dist/entrypoints/identity-providers/generic-oauth.d.ts",
148
63
  "default": "./dist/entrypoints/identity-providers/generic-oauth.js"
149
64
  },
150
65
  "./frontend": {
151
- "@issuary/source": "./src/entrypoints/frontend/index.ts",
152
66
  "types": "./dist/entrypoints/frontend/index.d.ts",
153
67
  "default": "./dist/entrypoints/frontend/index.js"
154
68
  },
155
69
  "./frontend/static": {
156
- "@issuary/source": "./src/entrypoints/frontend/static.ts",
157
70
  "types": "./dist/entrypoints/frontend/static.d.ts",
158
71
  "default": "./dist/entrypoints/frontend/static.js"
159
72
  },
160
73
  "./frontend/proxy": {
161
- "@issuary/source": "./src/entrypoints/frontend/proxy.ts",
162
74
  "types": "./dist/entrypoints/frontend/proxy.d.ts",
163
75
  "default": "./dist/entrypoints/frontend/proxy.js"
164
76
  }
165
77
  },
166
78
  "imports": {
167
- "#server/*.ts": {
168
- "@issuary/source": "./src/*.ts",
169
- "types": "./dist/*.d.ts",
170
- "default": "./dist/*.js"
171
- },
172
- "#server/*.tsx": {
173
- "@issuary/source": "./src/*.tsx",
174
- "types": "./dist/*.d.ts",
175
- "default": "./dist/*.js"
176
- },
79
+ "#server/*.ts": "./dist/*.js",
80
+ "#server/*.tsx": "./dist/*.js",
177
81
  "#server/*": {
178
- "@issuary/source": "./src/*",
179
82
  "types": "./dist/*",
180
83
  "default": "./dist/*"
181
84
  }
182
85
  },
86
+ "devDependencies": {
87
+ "@biomejs/biome": "^2.5.2",
88
+ "@react-email/preview-server": "^5.2.10",
89
+ "@types/node": "^24.13.3",
90
+ "@types/nodemailer": "^8.0.1",
91
+ "@types/pg": "^8.20.0",
92
+ "@types/qrcode": "^1.5.6",
93
+ "@types/react": "^19.2.17",
94
+ "@vitest/coverage-v8": "^4.1.10",
95
+ "tsx": "^4.23.0",
96
+ "typescript": "^5.9.3",
97
+ "vitest": "^4.1.10"
98
+ },
99
+ "dependencies": {
100
+ "@hono/standard-validator": "^0.2.3",
101
+ "@mikro-orm/cli": "^7.1.5",
102
+ "@mikro-orm/core": "^7.1.5",
103
+ "@mikro-orm/decorators": "^7.1.5",
104
+ "@mikro-orm/migrations": "^7.1.5",
105
+ "@mikro-orm/postgresql": "^7.1.5",
106
+ "@mikro-orm/seeder": "^7.1.5",
107
+ "@mikro-orm/sql": "^7.1.5",
108
+ "@react-email/components": "^1.0.12",
109
+ "@react-email/render": "^2.0.10",
110
+ "@react-email/tailwind": "^2.0.7",
111
+ "@scalar/hono-api-reference": "^0.11.8",
112
+ "@simplewebauthn/server": "^13.3.2",
113
+ "croner": "^10.0.1",
114
+ "hono": "^4.12.28",
115
+ "hono-openapi": "^1.3.1",
116
+ "jose": "^6.2.3",
117
+ "kysely": "^0.29.3",
118
+ "pino-pretty": "^13.1.3",
119
+ "react-email": "^6.6.6",
120
+ "nodemailer": "^9.0.3",
121
+ "otplib": "^13.4.1",
122
+ "pg": "^8.22.0",
123
+ "pino": "^10.3.1",
124
+ "qrcode": "^1.5.4",
125
+ "react": "^19.2.7",
126
+ "zod": "^4.4.3"
127
+ },
128
+ "mikro-orm": {
129
+ "configPaths": [
130
+ "./src/entrypoints/database/sqlite/cli.ts"
131
+ ]
132
+ },
183
133
  "scripts": {
184
134
  "test": "node --conditions=@issuary/source node_modules/vitest/vitest.mjs",
185
135
  "test:coverage": "node ../../packages/tools/src/scripts/rm.ts coverage && node --conditions=@issuary/source node_modules/vitest/vitest.mjs run --coverage --maxWorkers=1",
@@ -198,52 +148,5 @@
198
148
  "mikro-orm:debug": "mikro-orm debug",
199
149
  "mikro-orm:migration:create:postgres": "node ./scripts/create-migration-with-baseline.mjs postgres",
200
150
  "mikro-orm:migration:create:sqlite": "node ./scripts/create-migration-with-baseline.mjs sqlite"
201
- },
202
- "devDependencies": {
203
- "@biomejs/biome": "catalog:",
204
- "@react-email/preview-server": "catalog:",
205
- "@types/node": "catalog:",
206
- "@types/nodemailer": "catalog:",
207
- "@types/pg": "catalog:",
208
- "@types/qrcode": "catalog:",
209
- "@types/react": "catalog:",
210
- "@vitest/coverage-v8": "catalog:",
211
- "tsx": "catalog:",
212
- "typescript": "catalog:",
213
- "vitest": "catalog:"
214
- },
215
- "dependencies": {
216
- "@hono/standard-validator": "catalog:",
217
- "@mikro-orm/cli": "catalog:",
218
- "@mikro-orm/core": "catalog:",
219
- "@mikro-orm/decorators": "catalog:",
220
- "@mikro-orm/migrations": "catalog:",
221
- "@mikro-orm/postgresql": "catalog:",
222
- "@mikro-orm/seeder": "catalog:",
223
- "@mikro-orm/sql": "catalog:",
224
- "@react-email/components": "catalog:",
225
- "@react-email/render": "catalog:",
226
- "@react-email/tailwind": "catalog:",
227
- "@scalar/hono-api-reference": "catalog:",
228
- "@simplewebauthn/server": "catalog:",
229
- "croner": "catalog:",
230
- "hono": "catalog:",
231
- "hono-openapi": "catalog:",
232
- "jose": "catalog:",
233
- "kysely": "catalog:",
234
- "pino-pretty": "catalog:",
235
- "react-email": "catalog:",
236
- "nodemailer": "catalog:",
237
- "otplib": "catalog:",
238
- "pg": "catalog:",
239
- "pino": "catalog:",
240
- "qrcode": "catalog:",
241
- "react": "catalog:",
242
- "zod": "catalog:"
243
- },
244
- "mikro-orm": {
245
- "configPaths": [
246
- "./src/entrypoints/database/sqlite/cli.ts"
247
- ]
248
151
  }
249
- }
152
+ }