@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.
- package/AGENTS.md +24 -9
- package/CLAUDE.md +24 -9
- package/ai-docs/package.json +2 -2
- package/ai-docs/src/01_effect/01_basics/02_effect-fn.ts +18 -5
- package/ai-docs/src/01_effect/01_basics/index.md +5 -3
- package/ai-docs/src/01_effect/03_services/20_layer-composition.ts +1 -1
- package/ai-docs/src/01_effect/03_services/20_layer-unwrap.ts +2 -2
- package/ai-docs/src/01_effect/05_resources/10_acquire-release.ts +2 -2
- package/ai-docs/src/03_stream/30_encoding.ts +5 -7
- package/ai-docs/src/08_observability/10_logging.ts +1 -1
- package/ai-docs/src/70_cli/10_basics.ts +7 -7
- package/ai-docs/src/71_ai/10_language-model.ts +2 -2
- package/ai-docs/src/71_ai/20_tools.ts +1 -1
- package/ai-docs/src/71_ai/30_chat.ts +1 -1
- package/dist/PgAuth.d.ts +93 -0
- package/dist/PgAuth.d.ts.map +1 -0
- package/dist/PgAuth.js +229 -0
- package/dist/PgAuth.js.map +1 -0
- package/dist/PgClient.d.ts +49 -82
- package/dist/PgClient.d.ts.map +1 -1
- package/dist/PgClient.js +58 -510
- package/dist/PgClient.js.map +1 -1
- package/dist/PgConnection.d.ts +177 -0
- package/dist/PgConnection.d.ts.map +1 -0
- package/dist/PgConnection.js +1786 -0
- package/dist/PgConnection.js.map +1 -0
- package/dist/PgPool.d.ts +107 -0
- package/dist/PgPool.d.ts.map +1 -0
- package/dist/PgPool.js +124 -0
- package/dist/PgPool.js.map +1 -0
- package/dist/PgProtocol.d.ts +783 -0
- package/dist/PgProtocol.d.ts.map +1 -0
- package/dist/PgProtocol.js +1202 -0
- package/dist/PgProtocol.js.map +1 -0
- package/dist/PgTypes.d.ts +429 -0
- package/dist/PgTypes.d.ts.map +1 -0
- package/dist/PgTypes.js +1511 -0
- package/dist/PgTypes.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -1
- package/dist/internal/connection.d.ts +2 -0
- package/dist/internal/connection.d.ts.map +1 -0
- package/dist/internal/connection.js +5 -0
- package/dist/internal/connection.js.map +1 -0
- package/dist/internal/sqlError.d.ts +10 -0
- package/dist/internal/sqlError.d.ts.map +1 -0
- package/dist/internal/sqlError.js +57 -0
- package/dist/internal/sqlError.js.map +1 -0
- package/package.json +8 -12
- package/src/PgAuth.ts +318 -0
- package/src/PgClient.ts +138 -681
- package/src/PgConnection.ts +2294 -0
- package/src/PgPool.ts +231 -0
- package/src/PgProtocol.ts +1863 -0
- package/src/PgTypes.ts +1998 -0
- package/src/index.ts +25 -0
- package/src/internal/connection.ts +26 -0
- 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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/internal/connection.ts"],"names":[],"mappings":""}
|
|
@@ -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.
|
|
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/
|
|
52
|
-
"
|
|
53
|
-
"
|
|
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.
|
|
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))
|