@effect/sql-pg 4.0.0-rc.111 → 4.0.0-rc.113

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 (60) hide show
  1. package/AGENTS.md +24 -9
  2. package/CLAUDE.md +24 -9
  3. package/ai-docs/package.json +2 -2
  4. package/ai-docs/src/01_effect/01_basics/02_effect-fn.ts +18 -5
  5. package/ai-docs/src/01_effect/01_basics/index.md +5 -3
  6. package/ai-docs/src/01_effect/03_services/20_layer-composition.ts +1 -1
  7. package/ai-docs/src/01_effect/03_services/20_layer-unwrap.ts +2 -2
  8. package/ai-docs/src/01_effect/05_resources/10_acquire-release.ts +2 -2
  9. package/ai-docs/src/03_stream/30_encoding.ts +5 -7
  10. package/ai-docs/src/08_observability/10_logging.ts +1 -1
  11. package/ai-docs/src/70_cli/10_basics.ts +7 -7
  12. package/ai-docs/src/71_ai/10_language-model.ts +2 -2
  13. package/ai-docs/src/71_ai/20_tools.ts +1 -1
  14. package/ai-docs/src/71_ai/30_chat.ts +1 -1
  15. package/dist/PgAuth.d.ts +93 -0
  16. package/dist/PgAuth.d.ts.map +1 -0
  17. package/dist/PgAuth.js +229 -0
  18. package/dist/PgAuth.js.map +1 -0
  19. package/dist/PgClient.d.ts +49 -82
  20. package/dist/PgClient.d.ts.map +1 -1
  21. package/dist/PgClient.js +58 -510
  22. package/dist/PgClient.js.map +1 -1
  23. package/dist/PgConnection.d.ts +177 -0
  24. package/dist/PgConnection.d.ts.map +1 -0
  25. package/dist/PgConnection.js +1786 -0
  26. package/dist/PgConnection.js.map +1 -0
  27. package/dist/PgPool.d.ts +107 -0
  28. package/dist/PgPool.d.ts.map +1 -0
  29. package/dist/PgPool.js +124 -0
  30. package/dist/PgPool.js.map +1 -0
  31. package/dist/PgProtocol.d.ts +783 -0
  32. package/dist/PgProtocol.d.ts.map +1 -0
  33. package/dist/PgProtocol.js +1202 -0
  34. package/dist/PgProtocol.js.map +1 -0
  35. package/dist/PgTypes.d.ts +429 -0
  36. package/dist/PgTypes.d.ts.map +1 -0
  37. package/dist/PgTypes.js +1511 -0
  38. package/dist/PgTypes.js.map +1 -0
  39. package/dist/index.d.ts +20 -0
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +20 -0
  42. package/dist/index.js.map +1 -1
  43. package/dist/internal/connection.d.ts +2 -0
  44. package/dist/internal/connection.d.ts.map +1 -0
  45. package/dist/internal/connection.js +5 -0
  46. package/dist/internal/connection.js.map +1 -0
  47. package/dist/internal/sqlError.d.ts +10 -0
  48. package/dist/internal/sqlError.d.ts.map +1 -0
  49. package/dist/internal/sqlError.js +57 -0
  50. package/dist/internal/sqlError.js.map +1 -0
  51. package/package.json +8 -12
  52. package/src/PgAuth.ts +318 -0
  53. package/src/PgClient.ts +138 -681
  54. package/src/PgConnection.ts +2294 -0
  55. package/src/PgPool.ts +231 -0
  56. package/src/PgProtocol.ts +1863 -0
  57. package/src/PgTypes.ts +1998 -0
  58. package/src/index.ts +25 -0
  59. package/src/internal/connection.ts +26 -0
  60. package/src/internal/sqlError.ts +75 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PgTypes.js","names":[],"sources":["../src/PgTypes.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/dist/index.d.ts CHANGED
@@ -1,12 +1,32 @@
1
1
  /**
2
2
  * @since 4.0.0
3
3
  */
4
+ /**
5
+ * @since 4.0.0
6
+ */
7
+ export * as PgAuth from "./PgAuth.ts";
4
8
  /**
5
9
  * @since 4.0.0
6
10
  */
7
11
  export * as PgClient from "./PgClient.ts";
12
+ /**
13
+ * @since 4.0.0
14
+ */
15
+ export * as PgConnection from "./PgConnection.ts";
8
16
  /**
9
17
  * @since 4.0.0
10
18
  */
11
19
  export * as PgMigrator from "./PgMigrator.ts";
20
+ /**
21
+ * @since 4.0.0
22
+ */
23
+ export * as PgPool from "./PgPool.ts";
24
+ /**
25
+ * @since 4.0.0
26
+ */
27
+ export * as PgProtocol from "./PgProtocol.ts";
28
+ /**
29
+ * @since 4.0.0
30
+ */
31
+ export * as PgTypes from "./PgTypes.ts";
12
32
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;GAEG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA"}
package/dist/index.js CHANGED
@@ -2,12 +2,32 @@
2
2
  * @since 4.0.0
3
3
  */
4
4
  // @barrel: Auto-generated exports. Do not edit manually.
5
+ /**
6
+ * @since 4.0.0
7
+ */
8
+ export * as PgAuth from "./PgAuth.js";
5
9
  /**
6
10
  * @since 4.0.0
7
11
  */
8
12
  export * as PgClient from "./PgClient.js";
13
+ /**
14
+ * @since 4.0.0
15
+ */
16
+ export * as PgConnection from "./PgConnection.js";
9
17
  /**
10
18
  * @since 4.0.0
11
19
  */
12
20
  export * as PgMigrator from "./PgMigrator.js";
21
+ /**
22
+ * @since 4.0.0
23
+ */
24
+ export * as PgPool from "./PgPool.js";
25
+ /**
26
+ * @since 4.0.0
27
+ */
28
+ export * as PgProtocol from "./PgProtocol.js";
29
+ /**
30
+ * @since 4.0.0
31
+ */
32
+ export * as PgTypes from "./PgTypes.js";
13
33
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAIA;AAEA;;;AAGA,OAAO,KAAK,QAAQ,MAAM,eAAe;AAEzC;;;AAGA,OAAO,KAAK,UAAU,MAAM,iBAAiB","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAIA;AAEA;;;AAGA,OAAO,KAAK,MAAM,MAAM,aAAa;AAErC;;;AAGA,OAAO,KAAK,QAAQ,MAAM,eAAe;AAEzC;;;AAGA,OAAO,KAAK,YAAY,MAAM,mBAAmB;AAEjD;;;AAGA,OAAO,KAAK,UAAU,MAAM,iBAAiB;AAE7C;;;AAGA,OAAO,KAAK,MAAM,MAAM,aAAa;AAErC;;;AAGA,OAAO,KAAK,UAAU,MAAM,iBAAiB;AAE7C;;;AAGA,OAAO,KAAK,OAAO,MAAM,cAAc","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=connection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/internal/connection.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ /** @internal */
2
+ export const internalsKey = "~@effect/sql-pg/PgConnection/internals";
3
+ /** @internal */
4
+ export const connectionInternals = connection => connection[internalsKey];
5
+ //# sourceMappingURL=connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.js","names":[],"sources":["../../src/internal/connection.ts"],"sourcesContent":[null],"mappings":"AAIA;AACA,OAAO,MAAM,YAAY,GAAG,wCAAiD;AAkB7E;AACA,OAAO,MAAM,mBAAmB,GAAI,UAAkB,IACnD,UAA+D,CAAC,YAAY,CAAC","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ import { SqlError, type SqlErrorReason } from "effect/unstable/sql/SqlError";
2
+ interface ErrorProps {
3
+ readonly cause: unknown;
4
+ readonly message: string;
5
+ readonly operation: string;
6
+ }
7
+ export declare const validateChannelName: (channel: string, operation: string) => SqlError | undefined;
8
+ export declare const classifySqlState: (code: string | undefined, constraint: unknown, props: ErrorProps) => SqlErrorReason;
9
+ export {};
10
+ //# sourceMappingURL=sqlError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlError.d.ts","sourceRoot":"","sources":["../../src/internal/sqlError.ts"],"names":[],"mappings":"AAAA,OAAO,EAQL,QAAQ,EACR,KAAK,cAAc,EAKpB,MAAM,8BAA8B,CAAA;AAErC,UAAU,UAAU;IAClB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B;AAID,eAAO,MAAM,mBAAmB,YAAa,MAAM,aAAa,MAAM,KAAG,QAAQ,GAAG,SAInF,CAAA;AAQD,eAAO,MAAM,gBAAgB,SACrB,MAAM,GAAG,SAAS,cACZ,OAAO,SACZ,UAAU,KAChB,cAkCF,CAAA"}
@@ -0,0 +1,57 @@
1
+ import { AuthenticationError, AuthorizationError, ConnectionError, ConstraintError, DeadlockError, LockTimeoutError, SerializationError, SqlError, SqlSyntaxError, StatementTimeoutError, UniqueViolation, UnknownError } from "effect/unstable/sql/SqlError";
2
+ const channelNameEncoder = /*#__PURE__*/new TextEncoder();
3
+ export const validateChannelName = (channel, operation) => {
4
+ if (channelNameEncoder.encode(channel).byteLength <= 63) return undefined;
5
+ const message = "PostgreSQL channel names must not exceed 63 UTF-8 bytes";
6
+ return new SqlError({
7
+ reason: new UnknownError({
8
+ cause: new Error(message),
9
+ message,
10
+ operation
11
+ })
12
+ });
13
+ };
14
+ const normalizeConstraint = constraint => {
15
+ if (typeof constraint !== "string") return "unknown";
16
+ const normalized = constraint.trim();
17
+ return normalized.length === 0 ? "unknown" : normalized;
18
+ };
19
+ export const classifySqlState = (code, constraint, props) => {
20
+ if (code !== undefined) {
21
+ if (code.startsWith("08")) {
22
+ return new ConnectionError(props);
23
+ }
24
+ if (code.startsWith("28")) {
25
+ return new AuthenticationError(props);
26
+ }
27
+ if (code === "42501") {
28
+ return new AuthorizationError(props);
29
+ }
30
+ if (code.startsWith("42")) {
31
+ return new SqlSyntaxError(props);
32
+ }
33
+ if (code === "23505") {
34
+ return new UniqueViolation({
35
+ ...props,
36
+ constraint: normalizeConstraint(constraint)
37
+ });
38
+ }
39
+ if (code.startsWith("23")) {
40
+ return new ConstraintError(props);
41
+ }
42
+ if (code === "40P01") {
43
+ return new DeadlockError(props);
44
+ }
45
+ if (code === "40001") {
46
+ return new SerializationError(props);
47
+ }
48
+ if (code === "55P03") {
49
+ return new LockTimeoutError(props);
50
+ }
51
+ if (code === "57014") {
52
+ return new StatementTimeoutError(props);
53
+ }
54
+ }
55
+ return new UnknownError(props);
56
+ };
57
+ //# sourceMappingURL=sqlError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlError.js","names":[],"sources":["../../src/internal/sqlError.ts"],"sourcesContent":[null],"mappings":"AAAA,SACE,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,QAAQ,EAER,cAAc,EACd,qBAAqB,EACrB,eAAe,EACf,YAAY,QACP,8BAA8B;AAQrC,MAAM,kBAAkB,gBAAG,IAAI,WAAW,EAAE;AAE5C,OAAO,MAAM,mBAAmB,GAAG,CAAC,OAAe,EAAE,SAAiB,KAA0B;EAC9F,IAAI,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,UAAU,IAAI,EAAE,EAAE,OAAO,SAAS;EACzE,MAAM,OAAO,GAAG,yDAAyD;EACzE,OAAO,IAAI,QAAQ,CAAC;IAAE,MAAM,EAAE,IAAI,YAAY,CAAC;MAAE,KAAK,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC;MAAE,OAAO;MAAE;IAAS,CAAE;EAAC,CAAE,CAAC;AACtG,CAAC;AAED,MAAM,mBAAmB,GAAI,UAAmB,IAAY;EAC1D,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,OAAO,SAAS;EACpD,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,EAAE;EACpC,OAAO,UAAU,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,GAAG,UAAU;AACzD,CAAC;AAED,OAAO,MAAM,gBAAgB,GAAG,CAC9B,IAAwB,EACxB,UAAmB,EACnB,KAAiB,KACC;EAClB,IAAI,IAAI,KAAK,SAAS,EAAE;IACtB,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;MACzB,OAAO,IAAI,eAAe,CAAC,KAAK,CAAC;IACnC;IACA,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;MACzB,OAAO,IAAI,mBAAmB,CAAC,KAAK,CAAC;IACvC;IACA,IAAI,IAAI,KAAK,OAAO,EAAE;MACpB,OAAO,IAAI,kBAAkB,CAAC,KAAK,CAAC;IACtC;IACA,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;MACzB,OAAO,IAAI,cAAc,CAAC,KAAK,CAAC;IAClC;IACA,IAAI,IAAI,KAAK,OAAO,EAAE;MACpB,OAAO,IAAI,eAAe,CAAC;QAAE,GAAG,KAAK;QAAE,UAAU,EAAE,mBAAmB,CAAC,UAAU;MAAC,CAAE,CAAC;IACvF;IACA,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;MACzB,OAAO,IAAI,eAAe,CAAC,KAAK,CAAC;IACnC;IACA,IAAI,IAAI,KAAK,OAAO,EAAE;MACpB,OAAO,IAAI,aAAa,CAAC,KAAK,CAAC;IACjC;IACA,IAAI,IAAI,KAAK,OAAO,EAAE;MACpB,OAAO,IAAI,kBAAkB,CAAC,KAAK,CAAC;IACtC;IACA,IAAI,IAAI,KAAK,OAAO,EAAE;MACpB,OAAO,IAAI,gBAAgB,CAAC,KAAK,CAAC;IACpC;IACA,IAAI,IAAI,KAAK,OAAO,EAAE;MACpB,OAAO,IAAI,qBAAqB,CAAC,KAAK,CAAC;IACzC;EACF;EACA,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC;AAChC,CAAC","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/sql-pg",
3
- "version": "4.0.0-rc.111",
3
+ "version": "4.0.0-rc.113",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "description": "A PostgreSQL toolkit for Effect",
@@ -48,21 +48,17 @@
48
48
  },
49
49
  "devDependencies": {
50
50
  "@testcontainers/postgresql": "^12.1.0",
51
- "@types/pg": "^8.21.0",
52
- "@types/pg-cursor": "^2.7.2",
53
- "effect": "^4.0.0-rc.111"
51
+ "@types/node": "^26.4.1",
52
+ "postgres": "^3.4.9",
53
+ "tinybench": "^6.1.6",
54
+ "effect": "^4.0.0-rc.113"
54
55
  },
55
56
  "peerDependencies": {
56
- "effect": "^4.0.0-rc.111"
57
- },
58
- "dependencies": {
59
- "pg": "^8.23.0",
60
- "pg-connection-string": "^2.14.0",
61
- "pg-cursor": "^2.22.0",
62
- "pg-pool": "^3.14.0",
63
- "pg-types": "^4.1.0"
57
+ "effect": "^4.0.0-rc.113"
64
58
  },
65
59
  "scripts": {
60
+ "benchmark:client": "node benchmark/PgClient.ts",
61
+ "benchmark:codec": "node benchmark/PgCodec.ts",
66
62
  "codegen": "effect-utils codegen",
67
63
  "build": "tsc -b tsconfig.json && pnpm babel",
68
64
  "babel": "babel dist --plugins annotate-pure-calls --out-dir dist --source-maps",
package/src/PgAuth.ts ADDED
@@ -0,0 +1,318 @@
1
+ /**
2
+ * Password authentication for the PostgreSQL protocol: MD5 and
3
+ * SCRAM-SHA-256.
4
+ *
5
+ * Message framing lives in `PgProtocol` - SASL payloads travel as opaque
6
+ * bytes - so this module only computes what goes inside them. Cleartext
7
+ * authentication needs nothing from here; send the password as a
8
+ * `PasswordMessage`.
9
+ *
10
+ * `SCRAM-SHA-256-PLUS` is not implemented: channel binding needs the TLS
11
+ * socket, which this codec does not own. Passwords are used as UTF-8 without
12
+ * SASLprep normalisation, so non-ASCII passwords that require normalisation
13
+ * are not supported. Server iteration counts above 1,000,000 are rejected
14
+ * before password derivation.
15
+ *
16
+ * @since 4.0.0
17
+ */
18
+ import * as Data from "effect/Data"
19
+ import * as Encoding from "effect/Encoding"
20
+ import * as Result from "effect/Result"
21
+ import { createHash, createHmac, pbkdf2Sync } from "node:crypto"
22
+
23
+ /**
24
+ * Failure returned when an authentication exchange cannot be completed.
25
+ *
26
+ * @category errors
27
+ * @since 4.0.0
28
+ */
29
+ export class AuthError extends Data.TaggedError("PgAuthError")<{
30
+ readonly message: string
31
+ }> {}
32
+
33
+ const fail = (message: string): never => {
34
+ throw new AuthError({ message })
35
+ }
36
+
37
+ const result = <A>(evaluate: () => A): Result.Result<A, AuthError> => {
38
+ try {
39
+ return Result.succeed(evaluate())
40
+ } catch (error) {
41
+ if (error instanceof AuthError) return Result.fail(error)
42
+ throw error
43
+ }
44
+ }
45
+
46
+ const textEncoder = new TextEncoder()
47
+ const textDecoder = new TextDecoder("utf-8", { fatal: true })
48
+ /** Bounds synchronous PBKDF2 work requested by an untrusted server. */
49
+ const maxScramIterations = 1_000_000
50
+
51
+ const bytesOf = (value: Uint8Array): Uint8Array => Uint8Array.from(value)
52
+
53
+ const sha256 = (data: Uint8Array): Uint8Array => bytesOf(createHash("sha256").update(data).digest())
54
+
55
+ const hmacSha256 = (key: Uint8Array, data: Uint8Array): Uint8Array =>
56
+ bytesOf(createHmac("sha256", key).update(data).digest())
57
+
58
+ const xor = (left: Uint8Array, right: Uint8Array): Uint8Array => {
59
+ const result = new Uint8Array(left.length)
60
+ for (let i = 0; i < left.length; i++) {
61
+ result[i] = left[i] ^ right[i]
62
+ }
63
+ return result
64
+ }
65
+
66
+ const toBase64 = (bytes: Uint8Array): string => Encoding.encodeBase64(bytes)
67
+
68
+ const fromBase64 = (text: string, field: string): Uint8Array => {
69
+ const decoded = Encoding.decodeBase64(text)
70
+ if (Result.isFailure(decoded)) {
71
+ return fail(`Invalid base64 in SCRAM attribute "${field}"`)
72
+ }
73
+ return decoded.success
74
+ }
75
+
76
+ const decodeUtf8 = (bytes: Uint8Array, what: string): string => {
77
+ try {
78
+ return textDecoder.decode(bytes)
79
+ } catch {
80
+ return fail(`Invalid UTF-8 in ${what}`)
81
+ }
82
+ }
83
+
84
+ /**
85
+ * Computes the password string for an `AuthenticationMD5Password` challenge:
86
+ * `"md5" + md5(md5(password + user) + salt)`. Send the result verbatim as a
87
+ * `PasswordMessage`.
88
+ *
89
+ * @category MD5
90
+ * @since 4.0.0
91
+ */
92
+ const md5PasswordUnsafe = (options: {
93
+ readonly user: string
94
+ readonly password: string
95
+ readonly salt: Uint8Array
96
+ }): string => {
97
+ if (options.salt.length !== 4) {
98
+ return fail(`PostgreSQL MD5 salt must be exactly 4 bytes, received ${options.salt.length}`)
99
+ }
100
+ const inner = createHash("md5").update(textEncoder.encode(options.password + options.user)).digest("hex")
101
+ const outer = createHash("md5").update(textEncoder.encode(inner)).update(options.salt).digest("hex")
102
+ return `md5${outer}`
103
+ }
104
+
105
+ /**
106
+ * Computes the legacy PostgreSQL MD5 password response.
107
+ *
108
+ * @category authentication
109
+ * @since 4.0.0
110
+ */
111
+ export const md5Password = (options: {
112
+ readonly user: string
113
+ readonly password: string
114
+ readonly salt: Uint8Array
115
+ }): Result.Result<string, AuthError> => result(() => md5PasswordUnsafe(options))
116
+
117
+ /**
118
+ * The only SASL mechanism this module implements.
119
+ *
120
+ * @category SCRAM
121
+ * @since 4.0.0
122
+ */
123
+ export const SCRAM_SHA_256 = "SCRAM-SHA-256"
124
+
125
+ /**
126
+ * State after the client's first message, awaiting the server's challenge.
127
+ *
128
+ * @category SCRAM
129
+ * @since 4.0.0
130
+ */
131
+ export interface ScramFirst {
132
+ readonly _tag: "ScramFirst"
133
+ readonly password: string
134
+ readonly clientNonce: string
135
+ readonly clientFirstMessageBare: string
136
+ }
137
+
138
+ /**
139
+ * State after the client's final message, awaiting the server signature.
140
+ *
141
+ * @category SCRAM
142
+ * @since 4.0.0
143
+ */
144
+ export interface ScramFinal {
145
+ readonly _tag: "ScramFinal"
146
+ readonly serverSignature: Uint8Array
147
+ }
148
+
149
+ /**
150
+ * The SCRAM exchange state.
151
+ *
152
+ * @category SCRAM
153
+ * @since 4.0.0
154
+ */
155
+ export type ScramState = ScramFirst | ScramFinal
156
+
157
+ const GS2_HEADER = "n,,"
158
+ /** Base64 of the GS2 header, the `c=` attribute value without channel binding. */
159
+ const CHANNEL_BINDING = "biws"
160
+
161
+ const parseAttributes = (message: string): Map<string, string> => {
162
+ const attributes = new Map<string, string>()
163
+ for (const part of message.split(",")) {
164
+ const separator = part.indexOf("=")
165
+ if (separator < 1) {
166
+ return fail(`Malformed SCRAM attribute: "${part}"`)
167
+ }
168
+ const key = part.slice(0, separator)
169
+ if (attributes.has(key)) {
170
+ return fail(`Duplicate SCRAM attribute "${key}"`)
171
+ }
172
+ attributes.set(key, part.slice(separator + 1))
173
+ }
174
+ return attributes
175
+ }
176
+
177
+ const attribute = (attributes: Map<string, string>, key: string): string =>
178
+ attributes.get(key) ?? fail(`Missing SCRAM attribute "${key}"`)
179
+
180
+ /**
181
+ * Starts a SCRAM-SHA-256 exchange. The `nonce` must be a fresh, random,
182
+ * printable ASCII string chosen by the caller; this module never generates
183
+ * randomness.
184
+ *
185
+ * The successful result contains the `initialResponse` bytes for a
186
+ * `SASLInitialResponse` message with mechanism `SCRAM_SHA_256`.
187
+ *
188
+ * @category SCRAM
189
+ * @since 4.0.0
190
+ */
191
+ const scramInitUnsafe = (options: {
192
+ readonly password: string
193
+ readonly nonce: string
194
+ }): { readonly state: ScramFirst; readonly response: Uint8Array } => {
195
+ if (!/^[\x21-\x2b\x2d-\x7e]+$/.test(options.nonce)) {
196
+ return fail("SCRAM nonce must contain only printable ASCII characters other than comma")
197
+ }
198
+ const clientFirstMessageBare = `n=,r=${options.nonce}`
199
+ return {
200
+ state: {
201
+ _tag: "ScramFirst",
202
+ password: options.password,
203
+ clientNonce: options.nonce,
204
+ clientFirstMessageBare
205
+ },
206
+ response: textEncoder.encode(GS2_HEADER + clientFirstMessageBare)
207
+ }
208
+ }
209
+
210
+ /**
211
+ * Creates the first SCRAM-SHA-256 client message.
212
+ *
213
+ * @category SCRAM
214
+ * @since 4.0.0
215
+ */
216
+ export const scramInit = (options: {
217
+ readonly password: string
218
+ readonly nonce: string
219
+ }): Result.Result<{ readonly state: ScramFirst; readonly response: Uint8Array }, AuthError> =>
220
+ result(() => scramInitUnsafe(options))
221
+
222
+ /**
223
+ * Answers an `AuthenticationSASLContinue` challenge.
224
+ *
225
+ * The successful result contains the payload bytes for a `SASLResponse`
226
+ * message.
227
+ *
228
+ * @category SCRAM
229
+ * @since 4.0.0
230
+ */
231
+ const scramContinueUnsafe = (
232
+ state: ScramFirst,
233
+ challenge: Uint8Array
234
+ ): { readonly state: ScramFinal; readonly response: Uint8Array } => {
235
+ const serverFirstMessage = decodeUtf8(challenge, "the SCRAM server-first-message")
236
+ const attributes = parseAttributes(serverFirstMessage)
237
+ const nonce = attribute(attributes, "r")
238
+ if (!nonce.startsWith(state.clientNonce) || nonce.length === state.clientNonce.length) {
239
+ return fail("SCRAM server nonce does not extend the client nonce")
240
+ }
241
+ const saltText = attribute(attributes, "s")
242
+ if (saltText.length === 0) {
243
+ return fail("SCRAM salt must not be empty")
244
+ }
245
+ const salt = fromBase64(saltText, "s")
246
+ const iterationText = attribute(attributes, "i")
247
+ const iterations = Number(iterationText)
248
+ if (
249
+ !/^[1-9]\d*$/.test(iterationText) ||
250
+ !Number.isSafeInteger(iterations) ||
251
+ iterations > maxScramIterations
252
+ ) {
253
+ return fail(`Invalid SCRAM iteration count: ${iterationText}`)
254
+ }
255
+
256
+ const saltedPassword = bytesOf(
257
+ pbkdf2Sync(textEncoder.encode(state.password), salt, iterations, 32, "sha256")
258
+ )
259
+ const clientKey = hmacSha256(saltedPassword, textEncoder.encode("Client Key"))
260
+ const storedKey = sha256(clientKey)
261
+ const clientFinalMessageWithoutProof = `c=${CHANNEL_BINDING},r=${nonce}`
262
+ const authMessage = textEncoder.encode(
263
+ `${state.clientFirstMessageBare},${serverFirstMessage},${clientFinalMessageWithoutProof}`
264
+ )
265
+ const clientProof = xor(clientKey, hmacSha256(storedKey, authMessage))
266
+ const serverKey = hmacSha256(saltedPassword, textEncoder.encode("Server Key"))
267
+
268
+ return {
269
+ state: {
270
+ _tag: "ScramFinal",
271
+ serverSignature: hmacSha256(serverKey, authMessage)
272
+ },
273
+ response: textEncoder.encode(`${clientFinalMessageWithoutProof},p=${toBase64(clientProof)}`)
274
+ }
275
+ }
276
+
277
+ /**
278
+ * Processes the server's SCRAM challenge and creates the client proof.
279
+ *
280
+ * @category SCRAM
281
+ * @since 4.0.0
282
+ */
283
+ export const scramContinue = (
284
+ state: ScramFirst,
285
+ challenge: Uint8Array
286
+ ): Result.Result<{ readonly state: ScramFinal; readonly response: Uint8Array }, AuthError> =>
287
+ result(() => scramContinueUnsafe(state, challenge))
288
+
289
+ /**
290
+ * Verifies the server signature carried by `AuthenticationSASLFinal`. Returns
291
+ * `Result.void` on success and an `AuthError` failure when the server could
292
+ * not prove that it knows the stored key.
293
+ *
294
+ * @category SCRAM
295
+ * @since 4.0.0
296
+ */
297
+ const scramFinishUnsafe = (state: ScramFinal, challenge: Uint8Array): void => {
298
+ const attributes = parseAttributes(decodeUtf8(challenge, "the SCRAM server-final-message"))
299
+ const error = attributes.get("e")
300
+ if (error !== undefined) {
301
+ fail(`SCRAM authentication failed: ${error}`)
302
+ }
303
+ const signature = fromBase64(attribute(attributes, "v"), "v")
304
+ if (toBase64(state.serverSignature) !== toBase64(signature)) {
305
+ fail("SCRAM server signature mismatch")
306
+ }
307
+ }
308
+
309
+ /**
310
+ * Verifies the server's final SCRAM message.
311
+ *
312
+ * @category SCRAM
313
+ * @since 4.0.0
314
+ */
315
+ export const scramFinish = (
316
+ state: ScramFinal,
317
+ challenge: Uint8Array
318
+ ): Result.Result<void, AuthError> => result(() => scramFinishUnsafe(state, challenge))