effect 4.0.0-beta.44 → 4.0.0-beta.45
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/dist/Equal.d.ts.map +1 -1
- package/dist/Equal.js +16 -0
- package/dist/Equal.js.map +1 -1
- package/dist/Hash.js +1 -1
- package/dist/Hash.js.map +1 -1
- package/dist/Semaphore.d.ts +1 -1
- package/dist/Semaphore.d.ts.map +1 -1
- package/dist/Semaphore.js +1 -3
- package/dist/Semaphore.js.map +1 -1
- package/dist/unstable/ai/McpServer.d.ts.map +1 -1
- package/dist/unstable/ai/McpServer.js +24 -21
- package/dist/unstable/ai/McpServer.js.map +1 -1
- package/dist/unstable/eventlog/Event.d.ts +0 -6
- package/dist/unstable/eventlog/Event.d.ts.map +1 -1
- package/dist/unstable/eventlog/Event.js +0 -5
- package/dist/unstable/eventlog/Event.js.map +1 -1
- package/dist/unstable/eventlog/EventGroup.d.ts +0 -2
- package/dist/unstable/eventlog/EventGroup.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventGroup.js +0 -2
- package/dist/unstable/eventlog/EventGroup.js.map +1 -1
- package/dist/unstable/eventlog/EventJournal.d.ts +22 -5
- package/dist/unstable/eventlog/EventJournal.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventJournal.js +126 -67
- package/dist/unstable/eventlog/EventJournal.js.map +1 -1
- package/dist/unstable/eventlog/EventLog.d.ts +88 -34
- package/dist/unstable/eventlog/EventLog.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventLog.js +215 -141
- package/dist/unstable/eventlog/EventLog.js.map +1 -1
- package/dist/unstable/eventlog/EventLogEncryption.d.ts +9 -7
- package/dist/unstable/eventlog/EventLogEncryption.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventLogEncryption.js +13 -15
- package/dist/unstable/eventlog/EventLogEncryption.js.map +1 -1
- package/dist/unstable/eventlog/EventLogMessage.d.ts +228 -0
- package/dist/unstable/eventlog/EventLogMessage.d.ts.map +1 -0
- package/dist/unstable/eventlog/EventLogMessage.js +214 -0
- package/dist/unstable/eventlog/EventLogMessage.js.map +1 -0
- package/dist/unstable/eventlog/EventLogRemote.d.ts +109 -194
- package/dist/unstable/eventlog/EventLogRemote.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventLogRemote.js +165 -320
- package/dist/unstable/eventlog/EventLogRemote.js.map +1 -1
- package/dist/unstable/eventlog/EventLogServer.d.ts +25 -47
- package/dist/unstable/eventlog/EventLogServer.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventLogServer.js +127 -198
- package/dist/unstable/eventlog/EventLogServer.js.map +1 -1
- package/dist/unstable/eventlog/EventLogServerEncrypted.d.ts +60 -0
- package/dist/unstable/eventlog/EventLogServerEncrypted.d.ts.map +1 -0
- package/dist/unstable/eventlog/EventLogServerEncrypted.js +166 -0
- package/dist/unstable/eventlog/EventLogServerEncrypted.js.map +1 -0
- package/dist/unstable/eventlog/EventLogServerUnencrypted.d.ts +183 -0
- package/dist/unstable/eventlog/EventLogServerUnencrypted.d.ts.map +1 -0
- package/dist/unstable/eventlog/EventLogServerUnencrypted.js +461 -0
- package/dist/unstable/eventlog/EventLogServerUnencrypted.js.map +1 -0
- package/dist/unstable/eventlog/EventLogSessionAuth.d.ts +117 -0
- package/dist/unstable/eventlog/EventLogSessionAuth.d.ts.map +1 -0
- package/dist/unstable/eventlog/EventLogSessionAuth.js +284 -0
- package/dist/unstable/eventlog/EventLogSessionAuth.js.map +1 -0
- package/dist/unstable/eventlog/{SqlEventLogJournal.d.ts → SqlEventJournal.d.ts} +2 -2
- package/dist/unstable/eventlog/SqlEventJournal.d.ts.map +1 -0
- package/dist/unstable/eventlog/{SqlEventLogJournal.js → SqlEventJournal.js} +20 -14
- package/dist/unstable/eventlog/SqlEventJournal.js.map +1 -0
- package/dist/unstable/eventlog/{SqlEventLogServer.d.ts → SqlEventLogServerEncrypted.d.ts} +5 -5
- package/dist/unstable/eventlog/SqlEventLogServerEncrypted.d.ts.map +1 -0
- package/dist/unstable/eventlog/{SqlEventLogServer.js → SqlEventLogServerEncrypted.js} +65 -24
- package/dist/unstable/eventlog/SqlEventLogServerEncrypted.js.map +1 -0
- package/dist/unstable/eventlog/SqlEventLogServerUnencrypted.d.ts +25 -0
- package/dist/unstable/eventlog/SqlEventLogServerUnencrypted.d.ts.map +1 -0
- package/dist/unstable/eventlog/SqlEventLogServerUnencrypted.js +354 -0
- package/dist/unstable/eventlog/SqlEventLogServerUnencrypted.js.map +1 -0
- package/dist/unstable/eventlog/index.d.ts +22 -2
- package/dist/unstable/eventlog/index.d.ts.map +1 -1
- package/dist/unstable/eventlog/index.js +22 -2
- package/dist/unstable/eventlog/index.js.map +1 -1
- package/dist/unstable/eventlog/internal/identityRootSecretDerivation.d.ts +2 -0
- package/dist/unstable/eventlog/internal/identityRootSecretDerivation.d.ts.map +1 -0
- package/dist/unstable/eventlog/internal/identityRootSecretDerivation.js +89 -0
- package/dist/unstable/eventlog/internal/identityRootSecretDerivation.js.map +1 -0
- package/dist/unstable/reactivity/AtomHttpApi.d.ts +1 -2
- package/dist/unstable/reactivity/AtomHttpApi.d.ts.map +1 -1
- package/dist/unstable/reactivity/AtomHttpApi.js +2 -2
- package/dist/unstable/reactivity/AtomHttpApi.js.map +1 -1
- package/dist/unstable/reactivity/AtomRpc.d.ts +1 -2
- package/dist/unstable/reactivity/AtomRpc.d.ts.map +1 -1
- package/dist/unstable/reactivity/AtomRpc.js +3 -3
- package/dist/unstable/reactivity/AtomRpc.js.map +1 -1
- package/dist/unstable/rpc/Rpc.d.ts +25 -4
- package/dist/unstable/rpc/Rpc.d.ts.map +1 -1
- package/dist/unstable/rpc/Rpc.js +26 -0
- package/dist/unstable/rpc/Rpc.js.map +1 -1
- package/dist/unstable/rpc/RpcClient.d.ts +3 -13
- package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcClient.js +47 -23
- package/dist/unstable/rpc/RpcClient.js.map +1 -1
- package/dist/unstable/rpc/RpcGroup.d.ts +1 -1
- package/dist/unstable/rpc/RpcGroup.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcMiddleware.d.ts +2 -2
- package/dist/unstable/rpc/RpcMiddleware.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcServer.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcServer.js +3 -2
- package/dist/unstable/rpc/RpcServer.js.map +1 -1
- package/dist/unstable/rpc/Utils.d.ts +6 -0
- package/dist/unstable/rpc/Utils.d.ts.map +1 -1
- package/dist/unstable/rpc/Utils.js +44 -0
- package/dist/unstable/rpc/Utils.js.map +1 -1
- package/dist/unstable/schema/Model.d.ts +2 -2
- package/dist/unstable/schema/Model.d.ts.map +1 -1
- package/dist/unstable/schema/Model.js +2 -4
- package/dist/unstable/schema/Model.js.map +1 -1
- package/dist/unstable/schema/VariantSchema.d.ts +1 -1
- package/dist/unstable/schema/VariantSchema.d.ts.map +1 -1
- package/dist/unstable/schema/VariantSchema.js +1 -12
- package/dist/unstable/schema/VariantSchema.js.map +1 -1
- package/dist/unstable/workers/Transferable.d.ts +1 -1
- package/dist/unstable/workers/Transferable.d.ts.map +1 -1
- package/dist/unstable/workers/Transferable.js +1 -1
- package/dist/unstable/workers/Transferable.js.map +1 -1
- package/package.json +1 -1
- package/src/Equal.ts +17 -0
- package/src/Hash.ts +2 -2
- package/src/Semaphore.ts +2 -4
- package/src/unstable/ai/McpServer.ts +24 -22
- package/src/unstable/eventlog/Event.ts +0 -8
- package/src/unstable/eventlog/EventGroup.ts +0 -4
- package/src/unstable/eventlog/EventJournal.ts +144 -76
- package/src/unstable/eventlog/EventLog.ts +342 -221
- package/src/unstable/eventlog/EventLogEncryption.ts +16 -30
- package/src/unstable/eventlog/EventLogMessage.ts +277 -0
- package/src/unstable/eventlog/EventLogRemote.ts +261 -408
- package/src/unstable/eventlog/EventLogServer.ts +182 -274
- package/src/unstable/eventlog/EventLogServerEncrypted.ts +206 -0
- package/src/unstable/eventlog/EventLogServerUnencrypted.ts +749 -0
- package/src/unstable/eventlog/EventLogSessionAuth.ts +437 -0
- package/src/unstable/eventlog/{SqlEventLogJournal.ts → SqlEventJournal.ts} +26 -18
- package/src/unstable/eventlog/{SqlEventLogServer.ts → SqlEventLogServerEncrypted.ts} +102 -40
- package/src/unstable/eventlog/SqlEventLogServerUnencrypted.ts +500 -0
- package/src/unstable/eventlog/index.ts +27 -2
- package/src/unstable/eventlog/internal/identityRootSecretDerivation.ts +153 -0
- package/src/unstable/reactivity/AtomHttpApi.ts +23 -8
- package/src/unstable/reactivity/AtomRpc.ts +16 -5
- package/src/unstable/rpc/Rpc.ts +42 -4
- package/src/unstable/rpc/RpcClient.ts +59 -24
- package/src/unstable/rpc/RpcGroup.ts +1 -1
- package/src/unstable/rpc/RpcMiddleware.ts +2 -2
- package/src/unstable/rpc/RpcServer.ts +5 -3
- package/src/unstable/rpc/Utils.ts +59 -0
- package/src/unstable/schema/Model.ts +4 -6
- package/src/unstable/schema/VariantSchema.ts +4 -17
- package/src/unstable/workers/Transferable.ts +9 -11
- package/dist/unstable/eventlog/SqlEventLogJournal.d.ts.map +0 -1
- package/dist/unstable/eventlog/SqlEventLogJournal.js.map +0 -1
- package/dist/unstable/eventlog/SqlEventLogServer.d.ts.map +0 -1
- package/dist/unstable/eventlog/SqlEventLogServer.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SqlEventLogServerEncrypted.js","names":["Effect","Layer","PubSub","RcMap","Schema","Stream","SqlClient","EntryId","makeRemoteIdUnsafe","EventLogEncryption","EventLogServerEncrypted","makeStorage","options","gen","encryptions","sql","withoutTransforms","tablePrefix","entryTablePrefix","remoteIdTable","sessionAuthBindingsTable","insertBatchSize","remoteIdTableSql","sessionAuthBindingsTableSql","onDialectOrElse","pg","mysql","mssql","orElse","remoteId","pipe","flatMap","results","length","succeed","remote_id","created","as","resources","make","lookup","fnUntraced","scopeKey","scopeHash","sha256String","TextEncoder","encode","slice","table","tableSql","pubsub","acquireRelease","unbounded","shutdown","idleTimeToLive","getSessionAuthBinding","publicKey","decodeSessionAuthBindings","map","rows","row","undefined","signing_public_key","orDie","Storage","of","getId","getOrCreateSessionAuthBinding","signingPublicKey","existing","withTransaction","write","storeId","entries","makeEncryptedScopeKey","get","forInsert","ids","currentBatch","entry","push","entryId","iv","entry_id","encrypted_entry","encryptedEntry","allEntries","batch","encryptedEntries","insert","andThen","in","decodeEntries","publishAll","scoped","changes","startSequence","subscription","subscribe","initial","fromArray","concat","fromSubscription","unwrap","EncryptedRemoteEntrySql","Struct","sequence","Number","Uint8Array","SessionAuthBindingSql","public_key","String","decodeEntryRows","decodeUnknownEffect","Array","decodeSessionAuthBindingRows","toEncryptedRemoteEntry","layerStorage","effect","layerStorageSubtle","provide","layerSubtle"],"sources":["../../../src/unstable/eventlog/SqlEventLogServerEncrypted.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as Effect from "../../Effect.ts";
|
|
2
|
+
import * as Layer from "../../Layer.ts";
|
|
3
|
+
import type * as Scope from "../../Scope.ts";
|
|
4
|
+
import * as SqlClient from "../sql/SqlClient.ts";
|
|
5
|
+
import * as SqlError from "../sql/SqlError.ts";
|
|
6
|
+
import * as EventLogServerUnencrypted from "./EventLogServerUnencrypted.ts";
|
|
7
|
+
/**
|
|
8
|
+
* @since 4.0.0
|
|
9
|
+
* @category constructors
|
|
10
|
+
*/
|
|
11
|
+
export declare const makeStorage: (options?: {
|
|
12
|
+
readonly entryTablePrefix?: string;
|
|
13
|
+
readonly remoteIdTable?: string;
|
|
14
|
+
readonly insertBatchSize?: number;
|
|
15
|
+
}) => Effect.Effect<EventLogServerUnencrypted.Storage["Service"], SqlError.SqlError, SqlClient.SqlClient | Scope.Scope>;
|
|
16
|
+
/**
|
|
17
|
+
* @since 4.0.0
|
|
18
|
+
* @category layers
|
|
19
|
+
*/
|
|
20
|
+
export declare const layerStorage: (options?: {
|
|
21
|
+
readonly entryTablePrefix?: string;
|
|
22
|
+
readonly remoteIdTable?: string;
|
|
23
|
+
readonly insertBatchSize?: number;
|
|
24
|
+
}) => Layer.Layer<EventLogServerUnencrypted.Storage, SqlError.SqlError, SqlClient.SqlClient>;
|
|
25
|
+
//# sourceMappingURL=SqlEventLogServerUnencrypted.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SqlEventLogServerUnencrypted.d.ts","sourceRoot":"","sources":["../../../src/unstable/eventlog/SqlEventLogServerUnencrypted.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAA;AACzC,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AAIvC,OAAO,KAAK,KAAK,KAAK,MAAM,gBAAgB,CAAA;AAE5C,OAAO,KAAK,SAAS,MAAM,qBAAqB,CAAA;AAChD,OAAO,KAAK,QAAQ,MAAM,oBAAoB,CAAA;AAE9C,OAAO,KAAK,yBAAyB,MAAM,gCAAgC,CAAA;AAE3E;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAI,UAAU;IACpC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAClC,KAAG,MAAM,CAAC,MAAM,CACf,yBAAyB,CAAC,OAAO,CAAC,SAAS,CAAC,EAC5C,QAAQ,CAAC,QAAQ,EACjB,SAAS,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,CAwY/B,CAAA;AAEJ;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,UAAU;IACrC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAClC,KAAG,KAAK,CAAC,KAAK,CAAC,yBAAyB,CAAC,OAAO,EAAE,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,SAAS,CAClB,CAAA"}
|
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 4.0.0
|
|
3
|
+
*/
|
|
4
|
+
import * as Arr from "../../Array.js";
|
|
5
|
+
import * as Effect from "../../Effect.js";
|
|
6
|
+
import * as Layer from "../../Layer.js";
|
|
7
|
+
import * as PubSub from "../../PubSub.js";
|
|
8
|
+
import * as RcMap from "../../RcMap.js";
|
|
9
|
+
import * as Schema from "../../Schema.js";
|
|
10
|
+
import * as Stream from "../../Stream.js";
|
|
11
|
+
import * as SqlClient from "../sql/SqlClient.js";
|
|
12
|
+
import * as SqlError from "../sql/SqlError.js";
|
|
13
|
+
import { Entry, EntryId, makeRemoteIdUnsafe, RemoteEntry } from "./EventJournal.js";
|
|
14
|
+
import * as EventLogServerUnencrypted from "./EventLogServerUnencrypted.js";
|
|
15
|
+
/**
|
|
16
|
+
* @since 4.0.0
|
|
17
|
+
* @category constructors
|
|
18
|
+
*/
|
|
19
|
+
export const makeStorage = options => Effect.gen(function* () {
|
|
20
|
+
const sql = (yield* SqlClient.SqlClient).withoutTransforms();
|
|
21
|
+
const entriesTable = options?.entryTablePrefix ?? "effect_events";
|
|
22
|
+
const remoteIdTable = options?.remoteIdTable ?? "effect_remote_id";
|
|
23
|
+
const insertBatchSize = options?.insertBatchSize ?? 200;
|
|
24
|
+
const storesTable = `${entriesTable}_stores`;
|
|
25
|
+
const sessionAuthBindingsTable = `${entriesTable}_session_auth_bindings`;
|
|
26
|
+
const remoteIdTableSql = sql(remoteIdTable);
|
|
27
|
+
const entriesTableSql = sql(entriesTable);
|
|
28
|
+
const storesTableSql = sql(storesTable);
|
|
29
|
+
const sessionAuthBindingsTableSql = sql(sessionAuthBindingsTable);
|
|
30
|
+
yield* sql.onDialectOrElse({
|
|
31
|
+
pg: () => sql`
|
|
32
|
+
CREATE TABLE IF NOT EXISTS ${remoteIdTableSql} (
|
|
33
|
+
singleton INT PRIMARY KEY,
|
|
34
|
+
remote_id BYTEA NOT NULL
|
|
35
|
+
)`,
|
|
36
|
+
mysql: () => sql`
|
|
37
|
+
CREATE TABLE IF NOT EXISTS ${remoteIdTableSql} (
|
|
38
|
+
singleton INT PRIMARY KEY,
|
|
39
|
+
remote_id BINARY(16) NOT NULL
|
|
40
|
+
)`,
|
|
41
|
+
mssql: () => sql`
|
|
42
|
+
CREATE TABLE IF NOT EXISTS ${remoteIdTableSql} (
|
|
43
|
+
singleton INT PRIMARY KEY,
|
|
44
|
+
remote_id VARBINARY(16) NOT NULL
|
|
45
|
+
)`,
|
|
46
|
+
orElse: () => sql`
|
|
47
|
+
CREATE TABLE IF NOT EXISTS ${remoteIdTableSql} (
|
|
48
|
+
singleton INTEGER PRIMARY KEY,
|
|
49
|
+
remote_id BLOB NOT NULL
|
|
50
|
+
)`
|
|
51
|
+
});
|
|
52
|
+
yield* sql.onDialectOrElse({
|
|
53
|
+
pg: () => sql`
|
|
54
|
+
CREATE TABLE IF NOT EXISTS ${entriesTableSql} (
|
|
55
|
+
store_id TEXT NOT NULL,
|
|
56
|
+
sequence BIGINT NOT NULL,
|
|
57
|
+
entry_id BYTEA NOT NULL,
|
|
58
|
+
event TEXT NOT NULL,
|
|
59
|
+
primary_key TEXT NOT NULL,
|
|
60
|
+
payload BYTEA NOT NULL,
|
|
61
|
+
PRIMARY KEY (store_id, sequence),
|
|
62
|
+
UNIQUE (store_id, entry_id)
|
|
63
|
+
)`,
|
|
64
|
+
mysql: () => sql`
|
|
65
|
+
CREATE TABLE IF NOT EXISTS ${entriesTableSql} (
|
|
66
|
+
store_id VARCHAR(191) NOT NULL,
|
|
67
|
+
sequence BIGINT NOT NULL,
|
|
68
|
+
entry_id BINARY(16) NOT NULL,
|
|
69
|
+
event TEXT NOT NULL,
|
|
70
|
+
primary_key TEXT NOT NULL,
|
|
71
|
+
payload BLOB NOT NULL,
|
|
72
|
+
PRIMARY KEY (store_id, sequence),
|
|
73
|
+
UNIQUE (store_id, entry_id)
|
|
74
|
+
)`,
|
|
75
|
+
mssql: () => sql`
|
|
76
|
+
CREATE TABLE IF NOT EXISTS ${entriesTableSql} (
|
|
77
|
+
store_id NVARCHAR(191) NOT NULL,
|
|
78
|
+
sequence BIGINT NOT NULL,
|
|
79
|
+
entry_id VARBINARY(16) NOT NULL,
|
|
80
|
+
event NVARCHAR(MAX) NOT NULL,
|
|
81
|
+
primary_key NVARCHAR(MAX) NOT NULL,
|
|
82
|
+
payload VARBINARY(MAX) NOT NULL,
|
|
83
|
+
PRIMARY KEY (store_id, sequence),
|
|
84
|
+
UNIQUE (store_id, entry_id)
|
|
85
|
+
)`,
|
|
86
|
+
orElse: () => sql`
|
|
87
|
+
CREATE TABLE IF NOT EXISTS ${entriesTableSql} (
|
|
88
|
+
store_id TEXT NOT NULL,
|
|
89
|
+
sequence INTEGER NOT NULL,
|
|
90
|
+
entry_id BLOB NOT NULL,
|
|
91
|
+
event TEXT NOT NULL,
|
|
92
|
+
primary_key TEXT NOT NULL,
|
|
93
|
+
payload BLOB NOT NULL,
|
|
94
|
+
PRIMARY KEY (store_id, sequence),
|
|
95
|
+
UNIQUE (store_id, entry_id)
|
|
96
|
+
)`
|
|
97
|
+
});
|
|
98
|
+
yield* sql.onDialectOrElse({
|
|
99
|
+
pg: () => sql`
|
|
100
|
+
CREATE TABLE IF NOT EXISTS ${storesTableSql} (
|
|
101
|
+
store_id TEXT PRIMARY KEY,
|
|
102
|
+
next_sequence BIGINT NOT NULL
|
|
103
|
+
)`,
|
|
104
|
+
mysql: () => sql`
|
|
105
|
+
CREATE TABLE IF NOT EXISTS ${storesTableSql} (
|
|
106
|
+
store_id VARCHAR(191) PRIMARY KEY,
|
|
107
|
+
next_sequence BIGINT NOT NULL
|
|
108
|
+
)`,
|
|
109
|
+
mssql: () => sql`
|
|
110
|
+
CREATE TABLE IF NOT EXISTS ${storesTableSql} (
|
|
111
|
+
store_id NVARCHAR(191) PRIMARY KEY,
|
|
112
|
+
next_sequence BIGINT NOT NULL
|
|
113
|
+
)`,
|
|
114
|
+
orElse: () => sql`
|
|
115
|
+
CREATE TABLE IF NOT EXISTS ${storesTableSql} (
|
|
116
|
+
store_id TEXT PRIMARY KEY,
|
|
117
|
+
next_sequence INTEGER NOT NULL
|
|
118
|
+
)`
|
|
119
|
+
});
|
|
120
|
+
yield* sql.onDialectOrElse({
|
|
121
|
+
pg: () => sql`
|
|
122
|
+
CREATE TABLE IF NOT EXISTS ${sessionAuthBindingsTableSql} (
|
|
123
|
+
public_key TEXT PRIMARY KEY,
|
|
124
|
+
signing_public_key BYTEA NOT NULL
|
|
125
|
+
)`,
|
|
126
|
+
mysql: () => sql`
|
|
127
|
+
CREATE TABLE IF NOT EXISTS ${sessionAuthBindingsTableSql} (
|
|
128
|
+
public_key VARCHAR(191) PRIMARY KEY,
|
|
129
|
+
signing_public_key BINARY(32) NOT NULL
|
|
130
|
+
)`,
|
|
131
|
+
mssql: () => sql`
|
|
132
|
+
CREATE TABLE IF NOT EXISTS ${sessionAuthBindingsTableSql} (
|
|
133
|
+
public_key NVARCHAR(191) PRIMARY KEY,
|
|
134
|
+
signing_public_key VARBINARY(32) NOT NULL
|
|
135
|
+
)`,
|
|
136
|
+
orElse: () => sql`
|
|
137
|
+
CREATE TABLE IF NOT EXISTS ${sessionAuthBindingsTableSql} (
|
|
138
|
+
public_key TEXT PRIMARY KEY,
|
|
139
|
+
signing_public_key BLOB NOT NULL
|
|
140
|
+
)`
|
|
141
|
+
});
|
|
142
|
+
const selectRemoteId = sql`
|
|
143
|
+
SELECT remote_id
|
|
144
|
+
FROM ${remoteIdTableSql}
|
|
145
|
+
WHERE singleton = 1
|
|
146
|
+
`;
|
|
147
|
+
const remoteId = yield* selectRemoteId.pipe(Effect.flatMap(rows => {
|
|
148
|
+
const existing = rows[0];
|
|
149
|
+
if (existing !== undefined) {
|
|
150
|
+
return Effect.succeed(existing.remote_id);
|
|
151
|
+
}
|
|
152
|
+
const created = makeRemoteIdUnsafe();
|
|
153
|
+
return sql`
|
|
154
|
+
INSERT INTO ${remoteIdTableSql} (singleton, remote_id)
|
|
155
|
+
VALUES (1, ${created})
|
|
156
|
+
`.pipe(Effect.catchIf(error => error.reason._tag === "ConstraintError", () => Effect.void), Effect.andThen(selectRemoteId), Effect.map(rows => rows[0]?.remote_id), Effect.map(persisted => persisted ?? created));
|
|
157
|
+
}));
|
|
158
|
+
const pubsubs = yield* RcMap.make({
|
|
159
|
+
lookup: _storeId => Effect.acquireRelease(PubSub.unbounded(), PubSub.shutdown),
|
|
160
|
+
idleTimeToLive: "5 minutes"
|
|
161
|
+
});
|
|
162
|
+
const ensureStore = storeId => sql.onDialectOrElse({
|
|
163
|
+
pg: () => sql`
|
|
164
|
+
INSERT INTO ${storesTableSql} (store_id, next_sequence)
|
|
165
|
+
VALUES (${storeId}, 1)
|
|
166
|
+
ON CONFLICT (store_id) DO NOTHING
|
|
167
|
+
`,
|
|
168
|
+
mysql: () => sql`
|
|
169
|
+
INSERT INTO ${storesTableSql} (store_id, next_sequence)
|
|
170
|
+
VALUES (${storeId}, 1)
|
|
171
|
+
ON DUPLICATE KEY UPDATE store_id = store_id
|
|
172
|
+
`,
|
|
173
|
+
mssql: () => sql`
|
|
174
|
+
MERGE ${storesTableSql} WITH (HOLDLOCK) AS target
|
|
175
|
+
USING (SELECT ${storeId} AS store_id, 1 AS next_sequence) AS source
|
|
176
|
+
ON target.store_id = source.store_id
|
|
177
|
+
WHEN NOT MATCHED THEN
|
|
178
|
+
INSERT (store_id, next_sequence)
|
|
179
|
+
VALUES (source.store_id, source.next_sequence);
|
|
180
|
+
`,
|
|
181
|
+
orElse: () => sql`
|
|
182
|
+
INSERT INTO ${storesTableSql} (store_id, next_sequence)
|
|
183
|
+
VALUES (${storeId}, 1)
|
|
184
|
+
ON CONFLICT DO NOTHING
|
|
185
|
+
`
|
|
186
|
+
});
|
|
187
|
+
const lockStore = storeId => sql.onDialectOrElse({
|
|
188
|
+
pg: () => sql`
|
|
189
|
+
SELECT next_sequence
|
|
190
|
+
FROM ${storesTableSql}
|
|
191
|
+
WHERE store_id = ${storeId}
|
|
192
|
+
FOR UPDATE
|
|
193
|
+
`,
|
|
194
|
+
mysql: () => sql`
|
|
195
|
+
SELECT next_sequence
|
|
196
|
+
FROM ${storesTableSql}
|
|
197
|
+
WHERE store_id = ${storeId}
|
|
198
|
+
FOR UPDATE
|
|
199
|
+
`,
|
|
200
|
+
mssql: () => sql`
|
|
201
|
+
SELECT next_sequence
|
|
202
|
+
FROM ${storesTableSql} WITH (UPDLOCK, HOLDLOCK)
|
|
203
|
+
WHERE store_id = ${storeId}
|
|
204
|
+
`,
|
|
205
|
+
orElse: () => sql`
|
|
206
|
+
UPDATE ${storesTableSql}
|
|
207
|
+
SET next_sequence = next_sequence
|
|
208
|
+
WHERE store_id = ${storeId}
|
|
209
|
+
RETURNING next_sequence
|
|
210
|
+
`
|
|
211
|
+
}).pipe(Effect.flatMap(decodeStoreSequence));
|
|
212
|
+
const setNextSequence = (storeId, nextSequence) => sql`
|
|
213
|
+
UPDATE ${storesTableSql}
|
|
214
|
+
SET next_sequence = ${nextSequence}
|
|
215
|
+
WHERE store_id = ${storeId}
|
|
216
|
+
`;
|
|
217
|
+
const selectEntriesAfter = (storeId, startSequence) => sql`
|
|
218
|
+
SELECT sequence, entry_id, event, primary_key, payload
|
|
219
|
+
FROM ${entriesTableSql}
|
|
220
|
+
WHERE store_id = ${storeId} AND sequence >= ${startSequence}
|
|
221
|
+
ORDER BY sequence ASC
|
|
222
|
+
`.pipe(Effect.flatMap(decodeRemoteEntries));
|
|
223
|
+
const getSessionAuthBinding = publicKey => sql`
|
|
224
|
+
SELECT public_key, signing_public_key
|
|
225
|
+
FROM ${sessionAuthBindingsTableSql}
|
|
226
|
+
WHERE public_key = ${publicKey}
|
|
227
|
+
`.pipe(Effect.flatMap(decodeSessionAuthBindings), Effect.map(rows => {
|
|
228
|
+
const row = rows[0];
|
|
229
|
+
return row === undefined ? undefined : row.signing_public_key;
|
|
230
|
+
}), Effect.orDie);
|
|
231
|
+
return EventLogServerUnencrypted.Storage.of({
|
|
232
|
+
getId: Effect.succeed(remoteId),
|
|
233
|
+
getOrCreateSessionAuthBinding: Effect.fnUntraced(function* (publicKey, signingPublicKey) {
|
|
234
|
+
const existing = yield* getSessionAuthBinding(publicKey);
|
|
235
|
+
if (existing !== undefined) {
|
|
236
|
+
return existing;
|
|
237
|
+
}
|
|
238
|
+
return yield* sql`
|
|
239
|
+
INSERT INTO ${sessionAuthBindingsTableSql} (public_key, signing_public_key)
|
|
240
|
+
VALUES (${publicKey}, ${signingPublicKey})
|
|
241
|
+
`.pipe(Effect.as(signingPublicKey));
|
|
242
|
+
}, sql.withTransaction, Effect.orDie),
|
|
243
|
+
entriesAfter: (storeId, entry) => sql`
|
|
244
|
+
SELECT sequence, entry_id, event, primary_key, payload
|
|
245
|
+
FROM ${entriesTableSql}
|
|
246
|
+
WHERE store_id = ${storeId} AND entry_id >= ${entry.id}
|
|
247
|
+
ORDER BY sequence ASC
|
|
248
|
+
`.pipe(Effect.flatMap(decodeRemoteEntries), Effect.map(Arr.map(r => r.entry)), Effect.orDie),
|
|
249
|
+
write: Effect.fnUntraced(function* (storeId, entries) {
|
|
250
|
+
if (entries.length === 0) {
|
|
251
|
+
return [];
|
|
252
|
+
}
|
|
253
|
+
yield* ensureStore(storeId);
|
|
254
|
+
const currentNextSequence = yield* lockStore(storeId);
|
|
255
|
+
const committed = [];
|
|
256
|
+
let rowsForInsert = [];
|
|
257
|
+
for (let index = 0; index < entries.length; index++) {
|
|
258
|
+
const entry = entries[index];
|
|
259
|
+
const remoteSequence = currentNextSequence + index;
|
|
260
|
+
committed.push(new RemoteEntry({
|
|
261
|
+
remoteSequence,
|
|
262
|
+
entry
|
|
263
|
+
}, {
|
|
264
|
+
disableChecks: true
|
|
265
|
+
}));
|
|
266
|
+
rowsForInsert.push({
|
|
267
|
+
store_id: storeId,
|
|
268
|
+
sequence: remoteSequence,
|
|
269
|
+
entry_id: entry.id,
|
|
270
|
+
event: entry.event,
|
|
271
|
+
primary_key: entry.primaryKey,
|
|
272
|
+
payload: entry.payload
|
|
273
|
+
});
|
|
274
|
+
if (rowsForInsert.length >= insertBatchSize) {
|
|
275
|
+
yield* sql`INSERT INTO ${entriesTableSql} ${sql.insert(rowsForInsert)}`;
|
|
276
|
+
rowsForInsert = [];
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
if (rowsForInsert.length > 0) {
|
|
280
|
+
yield* sql`INSERT INTO ${entriesTableSql} ${sql.insert(rowsForInsert)}`;
|
|
281
|
+
}
|
|
282
|
+
const nextSequence = currentNextSequence + entries.length;
|
|
283
|
+
yield* setNextSequence(storeId, nextSequence);
|
|
284
|
+
const pubsub = yield* RcMap.get(pubsubs, storeId);
|
|
285
|
+
yield* PubSub.publishAll(pubsub, committed);
|
|
286
|
+
return committed;
|
|
287
|
+
}, Effect.scoped, sql.withTransaction, Effect.orDie),
|
|
288
|
+
changes: Effect.fnUntraced(function* ({
|
|
289
|
+
storeId,
|
|
290
|
+
startSequence,
|
|
291
|
+
compactors
|
|
292
|
+
}) {
|
|
293
|
+
const pubsub = yield* RcMap.get(pubsubs, storeId);
|
|
294
|
+
const subscription = yield* PubSub.subscribe(pubsub);
|
|
295
|
+
const backlog = yield* EventLogServerUnencrypted.compactBacklog({
|
|
296
|
+
compactors,
|
|
297
|
+
remoteEntries: yield* selectEntriesAfter(storeId, startSequence)
|
|
298
|
+
});
|
|
299
|
+
let watermark = backlog.length > 0 ? backlog[backlog.length - 1].remoteSequence : startSequence;
|
|
300
|
+
return Stream.fromArray(backlog).pipe(Stream.concat(Stream.fromSubscription(subscription).pipe(Stream.filter(entry => entry.remoteSequence > watermark))));
|
|
301
|
+
}, Effect.orDie, Stream.unwrap),
|
|
302
|
+
withTransaction: effect => sql.withTransaction(effect).pipe(Effect.catchIf(SqlError.isSqlError, Effect.die))
|
|
303
|
+
});
|
|
304
|
+
});
|
|
305
|
+
/**
|
|
306
|
+
* @since 4.0.0
|
|
307
|
+
* @category layers
|
|
308
|
+
*/
|
|
309
|
+
export const layerStorage = options => Layer.effect(EventLogServerUnencrypted.Storage)(makeStorage(options));
|
|
310
|
+
const EntrySql = /*#__PURE__*/Schema.Struct({
|
|
311
|
+
entry_id: EntryId,
|
|
312
|
+
event: Schema.String,
|
|
313
|
+
primary_key: Schema.String,
|
|
314
|
+
payload: Schema.Uint8Array
|
|
315
|
+
});
|
|
316
|
+
const SqlNumber = /*#__PURE__*/Schema.Union([Schema.Number, Schema.NumberFromString]);
|
|
317
|
+
const RemoteEntrySql = /*#__PURE__*/Schema.Struct({
|
|
318
|
+
...EntrySql.fields,
|
|
319
|
+
sequence: SqlNumber
|
|
320
|
+
});
|
|
321
|
+
const StoreSequenceSql = /*#__PURE__*/Schema.Struct({
|
|
322
|
+
next_sequence: SqlNumber
|
|
323
|
+
});
|
|
324
|
+
const SessionAuthBindingSql = /*#__PURE__*/Schema.Struct({
|
|
325
|
+
public_key: Schema.String,
|
|
326
|
+
signing_public_key: Schema.Uint8Array
|
|
327
|
+
});
|
|
328
|
+
const decodeRemoteEntryRows = /*#__PURE__*/Schema.decodeUnknownEffect(/*#__PURE__*/Schema.mutable(/*#__PURE__*/Schema.Array(RemoteEntrySql)));
|
|
329
|
+
const decodeStoreSequenceRows = /*#__PURE__*/Schema.decodeUnknownEffect(/*#__PURE__*/Schema.Array(StoreSequenceSql));
|
|
330
|
+
const decodeSessionAuthBindingRows = /*#__PURE__*/Schema.decodeUnknownEffect(/*#__PURE__*/Schema.Array(SessionAuthBindingSql));
|
|
331
|
+
const toEntry = row => new Entry({
|
|
332
|
+
id: row.entry_id,
|
|
333
|
+
event: row.event,
|
|
334
|
+
primaryKey: row.primary_key,
|
|
335
|
+
payload: row.payload
|
|
336
|
+
}, {
|
|
337
|
+
disableChecks: true
|
|
338
|
+
});
|
|
339
|
+
const toRemoteEntry = row => new RemoteEntry({
|
|
340
|
+
remoteSequence: row.sequence,
|
|
341
|
+
entry: toEntry(row)
|
|
342
|
+
}, {
|
|
343
|
+
disableChecks: true
|
|
344
|
+
});
|
|
345
|
+
const decodeRemoteEntries = rows => decodeRemoteEntryRows(rows).pipe(Effect.map(rows => rows.map(toRemoteEntry)));
|
|
346
|
+
const decodeStoreSequence = rows => decodeStoreSequenceRows(rows).pipe(Effect.flatMap(rows => {
|
|
347
|
+
const row = rows[0];
|
|
348
|
+
if (row === undefined) {
|
|
349
|
+
return Effect.die("SqlEventLogServerUnencrypted missing store sequence row");
|
|
350
|
+
}
|
|
351
|
+
return Effect.succeed(row.next_sequence);
|
|
352
|
+
}));
|
|
353
|
+
const decodeSessionAuthBindings = rows => decodeSessionAuthBindingRows(rows);
|
|
354
|
+
//# sourceMappingURL=SqlEventLogServerUnencrypted.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SqlEventLogServerUnencrypted.js","names":["Arr","Effect","Layer","PubSub","RcMap","Schema","Stream","SqlClient","SqlError","Entry","EntryId","makeRemoteIdUnsafe","RemoteEntry","EventLogServerUnencrypted","makeStorage","options","gen","sql","withoutTransforms","entriesTable","entryTablePrefix","remoteIdTable","insertBatchSize","storesTable","sessionAuthBindingsTable","remoteIdTableSql","entriesTableSql","storesTableSql","sessionAuthBindingsTableSql","onDialectOrElse","pg","mysql","mssql","orElse","selectRemoteId","remoteId","pipe","flatMap","rows","existing","undefined","succeed","remote_id","created","catchIf","error","reason","_tag","void","andThen","map","persisted","pubsubs","make","lookup","_storeId","acquireRelease","unbounded","shutdown","idleTimeToLive","ensureStore","storeId","lockStore","decodeStoreSequence","setNextSequence","nextSequence","selectEntriesAfter","startSequence","decodeRemoteEntries","getSessionAuthBinding","publicKey","decodeSessionAuthBindings","row","signing_public_key","orDie","Storage","of","getId","getOrCreateSessionAuthBinding","fnUntraced","signingPublicKey","as","withTransaction","entriesAfter","entry","id","r","write","entries","length","currentNextSequence","committed","rowsForInsert","index","remoteSequence","push","disableChecks","store_id","sequence","entry_id","event","primary_key","primaryKey","payload","insert","pubsub","get","publishAll","scoped","changes","compactors","subscription","subscribe","backlog","compactBacklog","remoteEntries","watermark","fromArray","concat","fromSubscription","filter","unwrap","effect","isSqlError","die","layerStorage","EntrySql","Struct","String","Uint8Array","SqlNumber","Union","Number","NumberFromString","RemoteEntrySql","fields","StoreSequenceSql","next_sequence","SessionAuthBindingSql","public_key","decodeRemoteEntryRows","decodeUnknownEffect","mutable","Array","decodeStoreSequenceRows","decodeSessionAuthBindingRows","toEntry","toRemoteEntry"],"sources":["../../../src/unstable/eventlog/SqlEventLogServerUnencrypted.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -21,6 +21,10 @@ export * as EventLog from "./EventLog.ts";
|
|
|
21
21
|
* @since 4.0.0
|
|
22
22
|
*/
|
|
23
23
|
export * as EventLogEncryption from "./EventLogEncryption.ts";
|
|
24
|
+
/**
|
|
25
|
+
* @since 4.0.0
|
|
26
|
+
*/
|
|
27
|
+
export * as EventLogMessage from "./EventLogMessage.ts";
|
|
24
28
|
/**
|
|
25
29
|
* @since 4.0.0
|
|
26
30
|
*/
|
|
@@ -32,9 +36,25 @@ export * as EventLogServer from "./EventLogServer.ts";
|
|
|
32
36
|
/**
|
|
33
37
|
* @since 4.0.0
|
|
34
38
|
*/
|
|
35
|
-
export * as
|
|
39
|
+
export * as EventLogServerEncrypted from "./EventLogServerEncrypted.ts";
|
|
40
|
+
/**
|
|
41
|
+
* @since 4.0.0
|
|
42
|
+
*/
|
|
43
|
+
export * as EventLogServerUnencrypted from "./EventLogServerUnencrypted.ts";
|
|
44
|
+
/**
|
|
45
|
+
* @since 4.0.0
|
|
46
|
+
*/
|
|
47
|
+
export * as EventLogSessionAuth from "./EventLogSessionAuth.ts";
|
|
48
|
+
/**
|
|
49
|
+
* @since 4.0.0
|
|
50
|
+
*/
|
|
51
|
+
export * as SqlEventJournal from "./SqlEventJournal.ts";
|
|
52
|
+
/**
|
|
53
|
+
* @since 4.0.0
|
|
54
|
+
*/
|
|
55
|
+
export * as SqlEventLogServerEncrypted from "./SqlEventLogServerEncrypted.ts";
|
|
36
56
|
/**
|
|
37
57
|
* @since 4.0.0
|
|
38
58
|
*/
|
|
39
|
-
export * as
|
|
59
|
+
export * as SqlEventLogServerUnencrypted from "./SqlEventLogServerUnencrypted.ts";
|
|
40
60
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/unstable/eventlog/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;GAEG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAE7D;;GAEG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;GAEG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;GAEG;AACH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/unstable/eventlog/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;GAEG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAE7D;;GAEG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD;;GAEG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;GAEG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;GAEG;AACH,OAAO,KAAK,uBAAuB,MAAM,8BAA8B,CAAA;AAEvE;;GAEG;AACH,OAAO,KAAK,yBAAyB,MAAM,gCAAgC,CAAA;AAE3E;;GAEG;AACH,OAAO,KAAK,mBAAmB,MAAM,0BAA0B,CAAA;AAE/D;;GAEG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD;;GAEG;AACH,OAAO,KAAK,0BAA0B,MAAM,iCAAiC,CAAA;AAE7E;;GAEG;AACH,OAAO,KAAK,4BAA4B,MAAM,mCAAmC,CAAA"}
|
|
@@ -22,6 +22,10 @@ export * as EventLog from "./EventLog.js";
|
|
|
22
22
|
* @since 4.0.0
|
|
23
23
|
*/
|
|
24
24
|
export * as EventLogEncryption from "./EventLogEncryption.js";
|
|
25
|
+
/**
|
|
26
|
+
* @since 4.0.0
|
|
27
|
+
*/
|
|
28
|
+
export * as EventLogMessage from "./EventLogMessage.js";
|
|
25
29
|
/**
|
|
26
30
|
* @since 4.0.0
|
|
27
31
|
*/
|
|
@@ -33,9 +37,25 @@ export * as EventLogServer from "./EventLogServer.js";
|
|
|
33
37
|
/**
|
|
34
38
|
* @since 4.0.0
|
|
35
39
|
*/
|
|
36
|
-
export * as
|
|
40
|
+
export * as EventLogServerEncrypted from "./EventLogServerEncrypted.js";
|
|
41
|
+
/**
|
|
42
|
+
* @since 4.0.0
|
|
43
|
+
*/
|
|
44
|
+
export * as EventLogServerUnencrypted from "./EventLogServerUnencrypted.js";
|
|
45
|
+
/**
|
|
46
|
+
* @since 4.0.0
|
|
47
|
+
*/
|
|
48
|
+
export * as EventLogSessionAuth from "./EventLogSessionAuth.js";
|
|
49
|
+
/**
|
|
50
|
+
* @since 4.0.0
|
|
51
|
+
*/
|
|
52
|
+
export * as SqlEventJournal from "./SqlEventJournal.js";
|
|
53
|
+
/**
|
|
54
|
+
* @since 4.0.0
|
|
55
|
+
*/
|
|
56
|
+
export * as SqlEventLogServerEncrypted from "./SqlEventLogServerEncrypted.js";
|
|
37
57
|
/**
|
|
38
58
|
* @since 4.0.0
|
|
39
59
|
*/
|
|
40
|
-
export * as
|
|
60
|
+
export * as SqlEventLogServerUnencrypted from "./SqlEventLogServerUnencrypted.js";
|
|
41
61
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["Event","EventGroup","EventJournal","EventLog","EventLogEncryption","EventLogRemote","EventLogServer","
|
|
1
|
+
{"version":3,"file":"index.js","names":["Event","EventGroup","EventJournal","EventLog","EventLogEncryption","EventLogMessage","EventLogRemote","EventLogServer","EventLogServerEncrypted","EventLogServerUnencrypted","EventLogSessionAuth","SqlEventJournal","SqlEventLogServerEncrypted","SqlEventLogServerUnencrypted"],"sources":["../../../src/unstable/eventlog/index.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAIA;AAEA;;;AAGA,OAAO,KAAKA,KAAK,MAAM,YAAY;AAEnC;;;AAGA,OAAO,KAAKC,UAAU,MAAM,iBAAiB;AAE7C;;;AAGA,OAAO,KAAKC,YAAY,MAAM,mBAAmB;AAEjD;;;AAGA,OAAO,KAAKC,QAAQ,MAAM,eAAe;AAEzC;;;AAGA,OAAO,KAAKC,kBAAkB,MAAM,yBAAyB;AAE7D;;;AAGA,OAAO,KAAKC,eAAe,MAAM,sBAAsB;AAEvD;;;AAGA,OAAO,KAAKC,cAAc,MAAM,qBAAqB;AAErD;;;AAGA,OAAO,KAAKC,cAAc,MAAM,qBAAqB;AAErD;;;AAGA,OAAO,KAAKC,uBAAuB,MAAM,8BAA8B;AAEvE;;;AAGA,OAAO,KAAKC,yBAAyB,MAAM,gCAAgC;AAE3E;;;AAGA,OAAO,KAAKC,mBAAmB,MAAM,0BAA0B;AAE/D;;;AAGA,OAAO,KAAKC,eAAe,MAAM,sBAAsB;AAEvD;;;AAGA,OAAO,KAAKC,0BAA0B,MAAM,iCAAiC;AAE7E;;;AAGA,OAAO,KAAKC,4BAA4B,MAAM,mCAAmC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identityRootSecretDerivation.d.ts","sourceRoot":"","sources":["../../../../src/unstable/eventlog/internal/identityRootSecretDerivation.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import * as Effect from "../../../Effect.js";
|
|
2
|
+
import * as Redacted from "../../../Redacted.js";
|
|
3
|
+
const textEncoder = /*#__PURE__*/new TextEncoder();
|
|
4
|
+
const Ed25519PublicKeyLength = 32;
|
|
5
|
+
const Ed25519Pkcs8SeedPrefix = /*#__PURE__*/Uint8Array.from([0x30, 0x2e, 0x02, 0x01, 0x00, 0x30, 0x05, 0x06, 0x03, 0x2b, 0x65, 0x70, 0x04, 0x22, 0x04, 0x20]);
|
|
6
|
+
/** @internal */
|
|
7
|
+
export const EncryptionDerivationLabelV1 = "effect/eventlog/identity/v1/encryption";
|
|
8
|
+
/** @internal */
|
|
9
|
+
export const SigningDerivationLabelV1 = "effect/eventlog/identity/v1/signing";
|
|
10
|
+
const toArrayBuffer = data => {
|
|
11
|
+
const copy = new Uint8Array(data.byteLength);
|
|
12
|
+
copy.set(data);
|
|
13
|
+
return copy.buffer;
|
|
14
|
+
};
|
|
15
|
+
const decodeBase64Url = value => {
|
|
16
|
+
const normalized = value.replaceAll("-", "+").replaceAll("_", "/");
|
|
17
|
+
const remainder = normalized.length % 4;
|
|
18
|
+
const padded = remainder === 0 ? normalized : `${normalized}${"=".repeat(4 - remainder)}`;
|
|
19
|
+
const decoded = atob(padded);
|
|
20
|
+
const bytes = new Uint8Array(decoded.length);
|
|
21
|
+
for (let i = 0; i < decoded.length; i++) {
|
|
22
|
+
bytes[i] = decoded.charCodeAt(i);
|
|
23
|
+
}
|
|
24
|
+
return bytes;
|
|
25
|
+
};
|
|
26
|
+
const makeEd25519Pkcs8FromSeed = seed => {
|
|
27
|
+
const key = new Uint8Array(Ed25519Pkcs8SeedPrefix.byteLength + seed.byteLength);
|
|
28
|
+
key.set(Ed25519Pkcs8SeedPrefix, 0);
|
|
29
|
+
key.set(seed, Ed25519Pkcs8SeedPrefix.byteLength);
|
|
30
|
+
return key;
|
|
31
|
+
};
|
|
32
|
+
const deriveSecretBytes = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
33
|
+
const labelBytes = textEncoder.encode(options.label);
|
|
34
|
+
const derivationInput = new Uint8Array(labelBytes.byteLength + 1 + options.rootSecret.byteLength);
|
|
35
|
+
derivationInput.set(labelBytes, 0);
|
|
36
|
+
derivationInput[labelBytes.byteLength] = 0;
|
|
37
|
+
derivationInput.set(options.rootSecret, labelBytes.byteLength + 1);
|
|
38
|
+
const digest = yield* Effect.promise(() => options.crypto.subtle.digest("SHA-256", toArrayBuffer(derivationInput)));
|
|
39
|
+
return new Uint8Array(digest);
|
|
40
|
+
});
|
|
41
|
+
/** @internal */
|
|
42
|
+
export const deriveIdentityRootSecretMaterial = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
43
|
+
const encryptionKeyMaterial = yield* deriveSecretBytes({
|
|
44
|
+
crypto: options.crypto,
|
|
45
|
+
rootSecret: options.rootSecret,
|
|
46
|
+
label: EncryptionDerivationLabelV1
|
|
47
|
+
});
|
|
48
|
+
const signingSeed = yield* deriveSecretBytes({
|
|
49
|
+
crypto: options.crypto,
|
|
50
|
+
rootSecret: options.rootSecret,
|
|
51
|
+
label: SigningDerivationLabelV1
|
|
52
|
+
});
|
|
53
|
+
const signingPrivateKeyBytes = makeEd25519Pkcs8FromSeed(signingSeed);
|
|
54
|
+
const encryptionKey = yield* Effect.promise(() => options.crypto.subtle.importKey("raw", toArrayBuffer(encryptionKeyMaterial), "AES-GCM", true, ["encrypt", "decrypt"]));
|
|
55
|
+
const signingPrivateKey = yield* Effect.promise(() => options.crypto.subtle.importKey("pkcs8", toArrayBuffer(signingPrivateKeyBytes), "Ed25519", true, ["sign"]));
|
|
56
|
+
const signingJwk = yield* Effect.promise(() => options.crypto.subtle.exportKey("jwk", signingPrivateKey));
|
|
57
|
+
if (typeof signingJwk.x !== "string") {
|
|
58
|
+
return yield* Effect.die(new Error("Unable to export deterministic Ed25519 public key"));
|
|
59
|
+
}
|
|
60
|
+
const signingPublicKey = decodeBase64Url(signingJwk.x);
|
|
61
|
+
if (signingPublicKey.byteLength !== Ed25519PublicKeyLength) {
|
|
62
|
+
return yield* Effect.die(new Error(`Expected derived signing public key to be ${Ed25519PublicKeyLength} bytes`));
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
encryptionKeyMaterial,
|
|
66
|
+
encryptionKey,
|
|
67
|
+
signingPublicKey,
|
|
68
|
+
signingPrivateKey: Redacted.make(signingPrivateKeyBytes)
|
|
69
|
+
};
|
|
70
|
+
});
|
|
71
|
+
/** @internal */
|
|
72
|
+
export const makeGetIdentityRootSecretMaterial = crypto => {
|
|
73
|
+
const cache = new WeakMap();
|
|
74
|
+
return Effect.fnUntraced(function* (identity) {
|
|
75
|
+
const cached = cache.get(identity);
|
|
76
|
+
if (cached !== undefined) {
|
|
77
|
+
return cached;
|
|
78
|
+
}
|
|
79
|
+
const derived = yield* deriveIdentityRootSecretMaterial({
|
|
80
|
+
crypto,
|
|
81
|
+
rootSecret: Redacted.value(identity.privateKey)
|
|
82
|
+
});
|
|
83
|
+
yield* Effect.sync(() => {
|
|
84
|
+
cache.set(identity, derived);
|
|
85
|
+
});
|
|
86
|
+
return derived;
|
|
87
|
+
});
|
|
88
|
+
};
|
|
89
|
+
//# sourceMappingURL=identityRootSecretDerivation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identityRootSecretDerivation.js","names":["Effect","Redacted","textEncoder","TextEncoder","Ed25519PublicKeyLength","Ed25519Pkcs8SeedPrefix","Uint8Array","from","EncryptionDerivationLabelV1","SigningDerivationLabelV1","toArrayBuffer","data","copy","byteLength","set","buffer","decodeBase64Url","value","normalized","replaceAll","remainder","length","padded","repeat","decoded","atob","bytes","i","charCodeAt","makeEd25519Pkcs8FromSeed","seed","key","deriveSecretBytes","fnUntraced","options","labelBytes","encode","label","derivationInput","rootSecret","digest","promise","crypto","subtle","deriveIdentityRootSecretMaterial","encryptionKeyMaterial","signingSeed","signingPrivateKeyBytes","encryptionKey","importKey","signingPrivateKey","signingJwk","exportKey","x","die","Error","signingPublicKey","make","makeGetIdentityRootSecretMaterial","cache","WeakMap","identity","cached","get","undefined","derived","privateKey","sync"],"sources":["../../../../src/unstable/eventlog/internal/identityRootSecretDerivation.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|