@derive-to/artifacts 0.6.0 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -7
- package/dist/host/client.d.ts +20 -4
- package/dist/host/client.d.ts.map +1 -1
- package/dist/host/client.js +29 -1
- package/dist/host/client.js.map +1 -1
- package/dist/host/index.d.ts +1 -1
- package/dist/host/index.d.ts.map +1 -1
- package/dist/host/index.js.map +1 -1
- package/dist/protocol/tools.d.ts +4 -0
- package/dist/protocol/tools.d.ts.map +1 -1
- package/dist/protocol/tools.js +5 -1
- package/dist/protocol/tools.js.map +1 -1
- package/dist/runtime/assets.js +1 -1
- package/dist/runtime.global.js +17 -17
- package/dist/server/adapters/kysely/index.d.ts +30 -0
- package/dist/server/adapters/kysely/index.d.ts.map +1 -0
- package/dist/server/adapters/kysely/index.js +31 -0
- package/dist/server/adapters/kysely/index.js.map +1 -0
- package/dist/server/adapters/kysely/schema.d.ts +11 -0
- package/dist/server/adapters/kysely/schema.d.ts.map +1 -0
- package/dist/server/adapters/kysely/schema.js +159 -0
- package/dist/server/adapters/kysely/schema.js.map +1 -0
- package/dist/server/adapters/kysely/sharing.d.ts +5 -0
- package/dist/server/adapters/kysely/sharing.d.ts.map +1 -0
- package/dist/server/adapters/kysely/sharing.js +81 -0
- package/dist/server/adapters/kysely/sharing.js.map +1 -0
- package/dist/server/adapters/kysely/store.d.ts +87 -0
- package/dist/server/adapters/kysely/store.d.ts.map +1 -0
- package/dist/server/adapters/kysely/store.js +328 -0
- package/dist/server/adapters/kysely/store.js.map +1 -0
- package/dist/server/adapters/sqlite/index.d.ts +7 -8
- package/dist/server/adapters/sqlite/index.d.ts.map +1 -1
- package/dist/server/adapters/sqlite/index.js +24 -44
- package/dist/server/adapters/sqlite/index.js.map +1 -1
- package/dist/server/bin.d.ts +3 -0
- package/dist/server/bin.d.ts.map +1 -0
- package/dist/server/bin.js +7 -0
- package/dist/server/bin.js.map +1 -0
- package/dist/server/cli.d.ts +8 -0
- package/dist/server/cli.d.ts.map +1 -0
- package/dist/server/cli.js +103 -0
- package/dist/server/cli.js.map +1 -0
- package/dist/server/kit/tool.d.ts +7 -1
- package/dist/server/kit/tool.d.ts.map +1 -1
- package/dist/server/kit/tool.js +9 -0
- package/dist/server/kit/tool.js.map +1 -1
- package/dist/server/kit.d.ts +1 -1
- package/dist/server/kit.d.ts.map +1 -1
- package/dist/server/kit.js +1 -1
- package/dist/server/kit.js.map +1 -1
- package/dist/server/sharing/store.d.ts +1 -1
- package/package.json +61 -55
- package/dist/server/adapters/sqlite/schema.d.ts +0 -3
- package/dist/server/adapters/sqlite/schema.d.ts.map +0 -1
- package/dist/server/adapters/sqlite/schema.js +0 -69
- package/dist/server/adapters/sqlite/schema.js.map +0 -1
- package/dist/server/adapters/sqlite/sharing.d.ts +0 -6
- package/dist/server/adapters/sqlite/sharing.d.ts.map +0 -1
- package/dist/server/adapters/sqlite/sharing.js +0 -81
- package/dist/server/adapters/sqlite/sharing.js.map +0 -1
- package/dist/server/adapters/sqlite/store.d.ts +0 -6
- package/dist/server/adapters/sqlite/store.d.ts.map +0 -1
- package/dist/server/adapters/sqlite/store.js +0 -130
- package/dist/server/adapters/sqlite/store.js.map +0 -1
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Kysely } from "kysely";
|
|
2
|
+
import type { BlobStore, Bus } from "../../ports.js";
|
|
3
|
+
import type { SharingStore } from "../../sharing/store.js";
|
|
4
|
+
import { type KitTables, kyselyStoreOn } from "./store.js";
|
|
5
|
+
export type { KitTables };
|
|
6
|
+
export interface KyselyBackend {
|
|
7
|
+
store: ReturnType<typeof kyselyStoreOn>;
|
|
8
|
+
blobs: BlobStore;
|
|
9
|
+
bus: Bus;
|
|
10
|
+
/** Sharing in the same database, for `sharing({ store })`. */
|
|
11
|
+
sharing: SharingStore;
|
|
12
|
+
/** Create or upgrade the tables. Run during deployment. */
|
|
13
|
+
migrate(): Promise<void>;
|
|
14
|
+
/** The schema as SQL for this dialect, for a host's own migration tool. */
|
|
15
|
+
schemaSql(): string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* The kit's default storage: your own Kysely instance, on Postgres or SQLite. Artifacts,
|
|
19
|
+
* versions, comments, shared state, files and sharing live in `oa_*` tables beside yours;
|
|
20
|
+
* nothing else is opened. Live events stay in this process unless you pass a `bus` to the
|
|
21
|
+
* server (Postgres `LISTEN` comes with the `postgres()` adapter).
|
|
22
|
+
*
|
|
23
|
+
* ```ts
|
|
24
|
+
* const db = new Kysely<YourTables>({ dialect: new PostgresDialect({ pool }) })
|
|
25
|
+
* const backend = kysely(db)
|
|
26
|
+
* await backend.migrate()
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export declare const kysely: <DB>(db: Kysely<DB>) => KyselyBackend;
|
|
30
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/server/adapters/kysely/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAI1D,OAAO,EAAE,KAAK,SAAS,EAAiB,aAAa,EAAE,MAAM,YAAY,CAAA;AAEzE,YAAY,EAAE,SAAS,EAAE,CAAA;AAEzB,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,CAAA;IACvC,KAAK,EAAE,SAAS,CAAA;IAChB,GAAG,EAAE,GAAG,CAAA;IACR,8DAA8D;IAC9D,OAAO,EAAE,YAAY,CAAA;IACrB,2DAA2D;IAC3D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACxB,2EAA2E;IAC3E,SAAS,IAAI,MAAM,CAAA;CACpB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,MAAM,GAAI,EAAE,MAAM,MAAM,CAAC,EAAE,CAAC,KAAG,aAa3C,CAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { memoryBus } from "../memory-bus.js";
|
|
2
|
+
import { dialectOf, migrate, schemaSql } from "./schema.js";
|
|
3
|
+
import { kyselySharingOn } from "./sharing.js";
|
|
4
|
+
import { kyselyBlobsOn, kyselyStoreOn } from "./store.js";
|
|
5
|
+
/**
|
|
6
|
+
* The kit's default storage: your own Kysely instance, on Postgres or SQLite. Artifacts,
|
|
7
|
+
* versions, comments, shared state, files and sharing live in `oa_*` tables beside yours;
|
|
8
|
+
* nothing else is opened. Live events stay in this process unless you pass a `bus` to the
|
|
9
|
+
* server (Postgres `LISTEN` comes with the `postgres()` adapter).
|
|
10
|
+
*
|
|
11
|
+
* ```ts
|
|
12
|
+
* const db = new Kysely<YourTables>({ dialect: new PostgresDialect({ pool }) })
|
|
13
|
+
* const backend = kysely(db)
|
|
14
|
+
* await backend.migrate()
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export const kysely = (db) => {
|
|
18
|
+
const dialect = dialectOf(db);
|
|
19
|
+
// The kit names only its own `oa_*` tables, which the host's table types do not describe;
|
|
20
|
+
// seen through the kit's own table types, the same instance runs the kit's queries.
|
|
21
|
+
const kit = db;
|
|
22
|
+
return {
|
|
23
|
+
store: kyselyStoreOn(kit, dialect),
|
|
24
|
+
blobs: kyselyBlobsOn(kit),
|
|
25
|
+
bus: memoryBus(),
|
|
26
|
+
sharing: kyselySharingOn(kit),
|
|
27
|
+
migrate: () => migrate(db),
|
|
28
|
+
schemaSql: () => schemaSql(db),
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/server/adapters/kysely/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAkB,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAgBzE;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAK,EAAc,EAAiB,EAAE;IAC1D,MAAM,OAAO,GAAG,SAAS,CAAC,EAAE,CAAC,CAAA;IAC7B,0FAA0F;IAC1F,oFAAoF;IACpF,MAAM,GAAG,GAAG,EAAkC,CAAA;IAC9C,OAAO;QACL,KAAK,EAAE,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC;QAClC,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC;QACzB,GAAG,EAAE,SAAS,EAAE;QAChB,OAAO,EAAE,eAAe,CAAC,GAAG,CAAC;QAC7B,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;KAC/B,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type Kysely } from "kysely";
|
|
2
|
+
/** The two SQL dialects the kit stores in. Anything else is refused, never guessed at. */
|
|
3
|
+
export type Dialect = "postgres" | "sqlite";
|
|
4
|
+
/** The dialect of a Kysely instance, from its adapter. */
|
|
5
|
+
export declare const dialectOf: <DB>(db: Kysely<DB>) => Dialect;
|
|
6
|
+
/** Create or upgrade the tables. Run during deployment, never from an artifact request. A
|
|
7
|
+
* failed migration is thrown with the step that failed. */
|
|
8
|
+
export declare const migrate: <DB>(db: Kysely<DB>) => Promise<void>;
|
|
9
|
+
/** The schema as SQL for this dialect, for a host that runs its own migration tool. */
|
|
10
|
+
export declare const schemaSql: <DB>(db: Kysely<DB>) => string;
|
|
11
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/server/adapters/kysely/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,MAAM,EAGZ,MAAM,QAAQ,CAAA;AAGf,0FAA0F;AAC1F,MAAM,MAAM,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAA;AAE3C,0DAA0D;AAC1D,eAAO,MAAM,SAAS,GAAI,EAAE,MAAM,MAAM,CAAC,EAAE,CAAC,KAAG,OAK9C,CAAA;AAoKD;4DAC4D;AAC5D,eAAO,MAAM,OAAO,GAAU,EAAE,MAAM,MAAM,CAAC,EAAE,CAAC,KAAG,OAAO,CAAC,IAAI,CAO9D,CAAA;AAED,uFAAuF;AACvF,eAAO,MAAM,SAAS,GAAI,EAAE,MAAM,MAAM,CAAC,EAAE,CAAC,KAAG,MAGxB,CAAA"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { PostgresAdapter, SqliteAdapter, } from "kysely";
|
|
2
|
+
import { Migrator } from "kysely/migration";
|
|
3
|
+
/** The dialect of a Kysely instance, from its adapter. */
|
|
4
|
+
export const dialectOf = (db) => {
|
|
5
|
+
const { adapter } = db.getExecutor();
|
|
6
|
+
if (adapter instanceof PostgresAdapter)
|
|
7
|
+
return "postgres";
|
|
8
|
+
if (adapter instanceof SqliteAdapter)
|
|
9
|
+
return "sqlite";
|
|
10
|
+
throw new Error("The artifact store runs on Postgres or SQLite; this Kysely dialect is neither.");
|
|
11
|
+
};
|
|
12
|
+
/** Column types that differ by dialect. Text everywhere else, so ids and times compare the
|
|
13
|
+
* same in both. */
|
|
14
|
+
const types = (dialect) => dialect === "postgres" ? { json: "jsonb", bytes: "bytea" } : { json: "text", bytes: "blob" };
|
|
15
|
+
const schemaStatements = (db, dialect) => {
|
|
16
|
+
const { json, bytes } = types(dialect);
|
|
17
|
+
const s = db.schema;
|
|
18
|
+
const cascade = (table) => `${table}.id`;
|
|
19
|
+
return [
|
|
20
|
+
s
|
|
21
|
+
.createTable("oa_artifacts")
|
|
22
|
+
.ifNotExists()
|
|
23
|
+
.addColumn("id", "text", (c) => c.primaryKey())
|
|
24
|
+
.addColumn("title", "text", (c) => c.notNull())
|
|
25
|
+
.addColumn("current_version", "integer", (c) => c.notNull())
|
|
26
|
+
.addColumn("created_at", "text", (c) => c.notNull())
|
|
27
|
+
.addColumn("updated_at", "text", (c) => c.notNull())
|
|
28
|
+
.addColumn("created_by", json, (c) => c.notNull())
|
|
29
|
+
.addColumn("space", "text", (c) => c.notNull().defaultTo(""))
|
|
30
|
+
.addColumn("summary", "text", (c) => c.notNull().defaultTo(""))
|
|
31
|
+
.addColumn("updated_by", json)
|
|
32
|
+
.addColumn("kind", "text", (c) => c.notNull().defaultTo("page")),
|
|
33
|
+
s
|
|
34
|
+
.createIndex("oa_artifacts_by_space")
|
|
35
|
+
.ifNotExists()
|
|
36
|
+
.on("oa_artifacts")
|
|
37
|
+
.columns(["space", "updated_at desc", "id desc"]),
|
|
38
|
+
s
|
|
39
|
+
.createTable("oa_versions")
|
|
40
|
+
.ifNotExists()
|
|
41
|
+
.addColumn("artifact_id", "text", (c) => c.notNull().references(cascade("oa_artifacts")).onDelete("cascade"))
|
|
42
|
+
.addColumn("n", "integer", (c) => c.notNull())
|
|
43
|
+
.addColumn("content_hash", "text", (c) => c.notNull())
|
|
44
|
+
.addColumn("size", "integer", (c) => c.notNull())
|
|
45
|
+
.addColumn("csp", json, (c) => c.notNull())
|
|
46
|
+
.addColumn("created_at", "text", (c) => c.notNull())
|
|
47
|
+
.addColumn("created_by", json, (c) => c.notNull())
|
|
48
|
+
.addColumn("source_info", json)
|
|
49
|
+
.addPrimaryKeyConstraint("oa_versions_pkey", ["artifact_id", "n"]),
|
|
50
|
+
s
|
|
51
|
+
.createTable("oa_threads")
|
|
52
|
+
.ifNotExists()
|
|
53
|
+
.addColumn("id", "text", (c) => c.primaryKey())
|
|
54
|
+
.addColumn("artifact_id", "text", (c) => c.notNull().references(cascade("oa_artifacts")).onDelete("cascade"))
|
|
55
|
+
.addColumn("state", "text", (c) => c.notNull()),
|
|
56
|
+
s.createIndex("oa_threads_by_artifact").ifNotExists().on("oa_threads").column("artifact_id"),
|
|
57
|
+
s
|
|
58
|
+
.createTable("oa_comments")
|
|
59
|
+
.ifNotExists()
|
|
60
|
+
.addColumn("id", "text", (c) => c.primaryKey())
|
|
61
|
+
.addColumn("artifact_id", "text", (c) => c.notNull().references(cascade("oa_artifacts")).onDelete("cascade"))
|
|
62
|
+
.addColumn("thread_id", "text", (c) => c.notNull().references(cascade("oa_threads")).onDelete("cascade"))
|
|
63
|
+
.addColumn("version", "integer", (c) => c.notNull())
|
|
64
|
+
.addColumn("quote", json)
|
|
65
|
+
.addColumn("body", "text", (c) => c.notNull())
|
|
66
|
+
.addColumn("author", json, (c) => c.notNull())
|
|
67
|
+
.addColumn("created_at", "text", (c) => c.notNull()),
|
|
68
|
+
s
|
|
69
|
+
.createIndex("oa_comments_by_artifact")
|
|
70
|
+
.ifNotExists()
|
|
71
|
+
.on("oa_comments")
|
|
72
|
+
.columns(["artifact_id", "created_at"]),
|
|
73
|
+
s
|
|
74
|
+
.createTable("oa_states")
|
|
75
|
+
.ifNotExists()
|
|
76
|
+
.addColumn("artifact_id", "text", (c) => c.notNull().references(cascade("oa_artifacts")).onDelete("cascade"))
|
|
77
|
+
.addColumn("key", "text", (c) => c.notNull())
|
|
78
|
+
.addColumn("items", json, (c) => c.notNull())
|
|
79
|
+
.addColumn("version", "integer", (c) => c.notNull())
|
|
80
|
+
.addPrimaryKeyConstraint("oa_states_pkey", ["artifact_id", "key"]),
|
|
81
|
+
s
|
|
82
|
+
.createTable("oa_activity")
|
|
83
|
+
.ifNotExists()
|
|
84
|
+
.addColumn("id", "integer", (c) => dialect === "postgres"
|
|
85
|
+
? c.primaryKey().generatedAlwaysAsIdentity()
|
|
86
|
+
: c.primaryKey().autoIncrement())
|
|
87
|
+
.addColumn("artifact_id", "text", (c) => c.notNull().references(cascade("oa_artifacts")).onDelete("cascade"))
|
|
88
|
+
.addColumn("key", "text", (c) => c.notNull())
|
|
89
|
+
.addColumn("action", "text", (c) => c.notNull())
|
|
90
|
+
.addColumn("item_id", "text", (c) => c.notNull())
|
|
91
|
+
.addColumn("version", "integer", (c) => c.notNull())
|
|
92
|
+
.addColumn("actor", json, (c) => c.notNull())
|
|
93
|
+
.addColumn("at", "text", (c) => c.notNull()),
|
|
94
|
+
s
|
|
95
|
+
.createIndex("oa_activity_by_key")
|
|
96
|
+
.ifNotExists()
|
|
97
|
+
.on("oa_activity")
|
|
98
|
+
.columns(["artifact_id", "key", "id desc"]),
|
|
99
|
+
s
|
|
100
|
+
.createTable("oa_blobs")
|
|
101
|
+
.ifNotExists()
|
|
102
|
+
.addColumn("key", "text", (c) => c.primaryKey())
|
|
103
|
+
.addColumn("type", "text", (c) => c.notNull())
|
|
104
|
+
.addColumn("bytes", bytes, (c) => c.notNull()),
|
|
105
|
+
s
|
|
106
|
+
.createTable("oa_share_settings")
|
|
107
|
+
.ifNotExists()
|
|
108
|
+
.addColumn("artifact_id", "text", (c) => c.primaryKey().references(cascade("oa_artifacts")).onDelete("cascade"))
|
|
109
|
+
.addColumn("space_access", "text", (c) => c.notNull())
|
|
110
|
+
.addColumn("link_role", "text", (c) => c.notNull())
|
|
111
|
+
.addColumn("link_token", "text", (c) => c.unique()),
|
|
112
|
+
s
|
|
113
|
+
.createTable("oa_share_grants")
|
|
114
|
+
.ifNotExists()
|
|
115
|
+
.addColumn("artifact_id", "text", (c) => c.notNull().references(cascade("oa_artifacts")).onDelete("cascade"))
|
|
116
|
+
.addColumn("actor_id", "text", (c) => c.notNull())
|
|
117
|
+
.addColumn("actor", json, (c) => c.notNull())
|
|
118
|
+
.addColumn("role", "text", (c) => c.notNull())
|
|
119
|
+
.addPrimaryKeyConstraint("oa_share_grants_pkey", ["artifact_id", "actor_id"]),
|
|
120
|
+
s
|
|
121
|
+
.createIndex("oa_share_grants_by_actor")
|
|
122
|
+
.ifNotExists()
|
|
123
|
+
.on("oa_share_grants")
|
|
124
|
+
.column("actor_id"),
|
|
125
|
+
];
|
|
126
|
+
};
|
|
127
|
+
/** The ledger's own tables, beside the kit's. */
|
|
128
|
+
const LEDGER = {
|
|
129
|
+
migrationTableName: "oa_kysely_migrations",
|
|
130
|
+
migrationLockTableName: "oa_kysely_migrations_lock",
|
|
131
|
+
};
|
|
132
|
+
/** Forward-only migrations. Append; never edit. */
|
|
133
|
+
const migrations = (dialect) => ({
|
|
134
|
+
"0001_schema": {
|
|
135
|
+
up: async (db) => {
|
|
136
|
+
// oxlint-disable-next-line no-await-in-loop -- each statement needs the one before
|
|
137
|
+
for (const statement of schemaStatements(db, dialect))
|
|
138
|
+
await statement.execute();
|
|
139
|
+
},
|
|
140
|
+
},
|
|
141
|
+
});
|
|
142
|
+
const provider = (dialect) => ({
|
|
143
|
+
getMigrations: async () => migrations(dialect),
|
|
144
|
+
});
|
|
145
|
+
/** Create or upgrade the tables. Run during deployment, never from an artifact request. A
|
|
146
|
+
* failed migration is thrown with the step that failed. */
|
|
147
|
+
export const migrate = async (db) => {
|
|
148
|
+
const migrator = new Migrator({ db, provider: provider(dialectOf(db)), ...LEDGER });
|
|
149
|
+
const { error, results } = await migrator.migrateToLatest();
|
|
150
|
+
if (error) {
|
|
151
|
+
const failed = results?.find((result) => result.status === "Error")?.migrationName;
|
|
152
|
+
throw new Error(`Artifact migration ${failed ?? ""} failed.`, { cause: error });
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
/** The schema as SQL for this dialect, for a host that runs its own migration tool. */
|
|
156
|
+
export const schemaSql = (db) => `${schemaStatements(db, dialectOf(db))
|
|
157
|
+
.map((statement) => statement.compile().sql)
|
|
158
|
+
.join(";\n\n")};\n`;
|
|
159
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../src/server/adapters/kysely/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { SharingStore } from "../../sharing/store.js";
|
|
2
|
+
import type { KitDb } from "./store.js";
|
|
3
|
+
/** Sharing in the same database, in the two tables the kit's migration creates. */
|
|
4
|
+
export declare const kyselySharingOn: (db: KitDb) => SharingStore;
|
|
5
|
+
//# sourceMappingURL=sharing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sharing.d.ts","sourceRoot":"","sources":["../../../../src/server/adapters/kysely/sharing.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAE1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAEvC,mFAAmF;AACnF,eAAO,MAAM,eAAe,OAAQ,KAAK,KAAG,YAgF1C,CAAA"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { toShareGrant, toShareSettings } from "../sql-rows.js";
|
|
2
|
+
/** Sharing in the same database, in the two tables the kit's migration creates. */
|
|
3
|
+
export const kyselySharingOn = (db) => ({
|
|
4
|
+
settings: async (ids) => {
|
|
5
|
+
if (ids.length === 0)
|
|
6
|
+
return new Map();
|
|
7
|
+
const rows = await db
|
|
8
|
+
.selectFrom("oa_share_settings")
|
|
9
|
+
.selectAll()
|
|
10
|
+
.where("artifact_id", "in", [...ids])
|
|
11
|
+
.execute();
|
|
12
|
+
return new Map(rows.map(toShareSettings));
|
|
13
|
+
},
|
|
14
|
+
putSettings: async (artifactId, next) => {
|
|
15
|
+
const values = {
|
|
16
|
+
space_access: next.spaceAccess,
|
|
17
|
+
link_role: next.linkRole,
|
|
18
|
+
link_token: next.linkToken,
|
|
19
|
+
};
|
|
20
|
+
await db
|
|
21
|
+
.insertInto("oa_share_settings")
|
|
22
|
+
.values({ artifact_id: artifactId, ...values })
|
|
23
|
+
.onConflict((oc) => oc.column("artifact_id").doUpdateSet(values))
|
|
24
|
+
.execute();
|
|
25
|
+
},
|
|
26
|
+
artifactForLink: async (token) => {
|
|
27
|
+
const row = await db
|
|
28
|
+
.selectFrom("oa_share_settings")
|
|
29
|
+
.select("artifact_id")
|
|
30
|
+
.where("link_token", "=", token)
|
|
31
|
+
.where("link_role", "<>", "none")
|
|
32
|
+
.executeTakeFirst();
|
|
33
|
+
return row?.artifact_id ?? null;
|
|
34
|
+
},
|
|
35
|
+
grants: async (artifactId) => (await db
|
|
36
|
+
.selectFrom("oa_share_grants")
|
|
37
|
+
.selectAll()
|
|
38
|
+
.where("artifact_id", "=", artifactId)
|
|
39
|
+
.orderBy("actor_id")
|
|
40
|
+
.execute()).map((raw) => {
|
|
41
|
+
const { actor, role } = toShareGrant(raw);
|
|
42
|
+
return { actor, role };
|
|
43
|
+
}),
|
|
44
|
+
grantsFor: async (actorId, ids) => {
|
|
45
|
+
if (ids.length === 0)
|
|
46
|
+
return new Map();
|
|
47
|
+
const rows = await db
|
|
48
|
+
.selectFrom("oa_share_grants")
|
|
49
|
+
.selectAll()
|
|
50
|
+
.where("actor_id", "=", actorId)
|
|
51
|
+
.where("artifact_id", "in", [...ids])
|
|
52
|
+
.execute();
|
|
53
|
+
return new Map(rows.map((raw) => {
|
|
54
|
+
const { artifactId, role } = toShareGrant(raw);
|
|
55
|
+
return [artifactId, role];
|
|
56
|
+
}));
|
|
57
|
+
},
|
|
58
|
+
putGrant: async (artifactId, actor, role) => {
|
|
59
|
+
const values = { actor: JSON.stringify(actor), role };
|
|
60
|
+
await db
|
|
61
|
+
.insertInto("oa_share_grants")
|
|
62
|
+
.values({ artifact_id: artifactId, actor_id: actor.id, ...values })
|
|
63
|
+
.onConflict((oc) => oc.columns(["artifact_id", "actor_id"]).doUpdateSet(values))
|
|
64
|
+
.execute();
|
|
65
|
+
},
|
|
66
|
+
deleteGrant: async (artifactId, actorId) => {
|
|
67
|
+
const result = await db
|
|
68
|
+
.deleteFrom("oa_share_grants")
|
|
69
|
+
.where("artifact_id", "=", artifactId)
|
|
70
|
+
.where("actor_id", "=", actorId)
|
|
71
|
+
.executeTakeFirst();
|
|
72
|
+
return Number(result.numDeletedRows) > 0;
|
|
73
|
+
},
|
|
74
|
+
forget: async (artifactId) => {
|
|
75
|
+
await db.transaction().execute(async (trx) => {
|
|
76
|
+
await trx.deleteFrom("oa_share_grants").where("artifact_id", "=", artifactId).execute();
|
|
77
|
+
await trx.deleteFrom("oa_share_settings").where("artifact_id", "=", artifactId).execute();
|
|
78
|
+
});
|
|
79
|
+
},
|
|
80
|
+
});
|
|
81
|
+
//# sourceMappingURL=sharing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sharing.js","sourceRoot":"","sources":["../../../../src/server/adapters/kysely/sharing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { type ColumnType, type Generated, type Kysely } from "kysely";
|
|
2
|
+
import type { ArtifactStore, BlobStore } from "../../ports.js";
|
|
3
|
+
import type { Dialect } from "./schema.js";
|
|
4
|
+
/** A JSON column: written as text, read back as text (SQLite) or parsed (Postgres jsonb).
|
|
5
|
+
* Either way the row mappers parse it, so reads are typed `unknown` here. */
|
|
6
|
+
type Json = ColumnType<unknown, string, string>;
|
|
7
|
+
type NullableJson = ColumnType<unknown, string | null, string | null>;
|
|
8
|
+
/** The kit's tables, as Kysely sees them. */
|
|
9
|
+
export interface KitTables {
|
|
10
|
+
oa_artifacts: {
|
|
11
|
+
id: string;
|
|
12
|
+
title: string;
|
|
13
|
+
current_version: number;
|
|
14
|
+
created_at: string;
|
|
15
|
+
updated_at: string;
|
|
16
|
+
created_by: Json;
|
|
17
|
+
space: string;
|
|
18
|
+
summary: string;
|
|
19
|
+
updated_by: NullableJson;
|
|
20
|
+
kind: string;
|
|
21
|
+
};
|
|
22
|
+
oa_versions: {
|
|
23
|
+
artifact_id: string;
|
|
24
|
+
n: number;
|
|
25
|
+
content_hash: string;
|
|
26
|
+
size: number;
|
|
27
|
+
csp: Json;
|
|
28
|
+
created_at: string;
|
|
29
|
+
created_by: Json;
|
|
30
|
+
source_info: NullableJson;
|
|
31
|
+
};
|
|
32
|
+
oa_threads: {
|
|
33
|
+
id: string;
|
|
34
|
+
artifact_id: string;
|
|
35
|
+
state: string;
|
|
36
|
+
};
|
|
37
|
+
oa_comments: {
|
|
38
|
+
id: string;
|
|
39
|
+
artifact_id: string;
|
|
40
|
+
thread_id: string;
|
|
41
|
+
version: number;
|
|
42
|
+
quote: NullableJson;
|
|
43
|
+
body: string;
|
|
44
|
+
author: Json;
|
|
45
|
+
created_at: string;
|
|
46
|
+
};
|
|
47
|
+
oa_states: {
|
|
48
|
+
artifact_id: string;
|
|
49
|
+
key: string;
|
|
50
|
+
items: Json;
|
|
51
|
+
version: number;
|
|
52
|
+
};
|
|
53
|
+
oa_activity: {
|
|
54
|
+
id: Generated<number>;
|
|
55
|
+
artifact_id: string;
|
|
56
|
+
key: string;
|
|
57
|
+
action: string;
|
|
58
|
+
item_id: string;
|
|
59
|
+
version: number;
|
|
60
|
+
actor: Json;
|
|
61
|
+
at: string;
|
|
62
|
+
};
|
|
63
|
+
oa_blobs: {
|
|
64
|
+
key: string;
|
|
65
|
+
type: string;
|
|
66
|
+
bytes: Uint8Array;
|
|
67
|
+
};
|
|
68
|
+
oa_share_settings: {
|
|
69
|
+
artifact_id: string;
|
|
70
|
+
space_access: string;
|
|
71
|
+
link_role: string;
|
|
72
|
+
link_token: string | null;
|
|
73
|
+
};
|
|
74
|
+
oa_share_grants: {
|
|
75
|
+
artifact_id: string;
|
|
76
|
+
actor_id: string;
|
|
77
|
+
actor: Json;
|
|
78
|
+
role: string;
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
export type KitDb = Kysely<KitTables>;
|
|
82
|
+
export declare const kyselyStoreOn: (db: KitDb, dialect: Dialect) => ArtifactStore;
|
|
83
|
+
/** Files in the same database: no bucket to provision. Content-addressed, so a second put
|
|
84
|
+
* of the same key is a no-op. */
|
|
85
|
+
export declare const kyselyBlobsOn: (db: KitDb) => BlobStore;
|
|
86
|
+
export {};
|
|
87
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../src/server/adapters/kysely/store.ts"],"names":[],"mappings":"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"}
|