spicedb-embedded 0.2.6 → 0.3.0

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 CHANGED
@@ -76,9 +76,7 @@ spicedb.close();
76
76
 
77
77
  It is scary! Using a C-shared library via FFI bindings introduces memory management in languages that don't typically have to worry about it.
78
78
 
79
- However, this library purposely limits the FFI layer. The only thing it is used for is to spawn the SpiceDB server (and to dispose of it when you shut down the embedded server). Once the SpiceDB server is running, it exposes a gRPC interface that listens over Unix Sockets (default on Linux/macOS) or TCP (default on Windows).
80
-
81
- So you get the benefits of (1) using the same generated gRPC code to communicate with SpiceDB that would in a non-embedded world, and (2) communication happens out-of-band so that no memory allocations happen in the FFI layer once the embedded server is running.
79
+ That being said, the SpiceDB code still runs in a Go runtime with garbage collection, which is where the vast majority of time is spent. To help mitigate some of the risk, the FFI layer is kept as straightforward as possible. protobuf is marshalled and unmarshalled at the FFI <--> language runtime boundary in a standardized way. After unmarshalling, requests are sent directly to the SpiceDB server, and responses are returned directly back to the language runtime (after marshalling).
82
80
 
83
81
  ## Comparison with SpiceDB WASM
84
82
 
@@ -190,7 +188,6 @@ import { EmbeddedSpiceDB, SpiceDBStartOptions } from "spicedb-embedded";
190
188
 
191
189
  const options: SpiceDBStartOptions = {
192
190
  datastore: "memory", // or "postgres", "cockroachdb", "spanner", "mysql"
193
- grpc_transport: "unix", // or "tcp"; default by platform
194
191
  datastore_uri: "postgres://user:pass@localhost:5432/spicedb", // required for remote
195
192
  spanner_credentials_file: "/path/to/key.json", // Spanner only
196
193
  spanner_emulator_host: "localhost:9010", // Spanner emulator
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Embedded SpiceDB instance.
3
3
  *
4
- * A thin wrapper that starts SpiceDB via the C-shared library, connects over a Unix
5
- * socket, and bootstraps schema and relationships via gRPC.
4
+ * Uses the C-shared library with in-memory transport: unary RPCs go through FFI,
5
+ * streaming APIs (Watch, ReadRelationships, etc.) use a streaming proxy.
6
6
  *
7
7
  * Use permissions(), schema(), and watch() to access the full SpiceDB API.
8
8
  */
@@ -13,32 +13,38 @@ export declare class SpiceDBError extends Error {
13
13
  }
14
14
  export declare class EmbeddedSpiceDB {
15
15
  private readonly handle;
16
- private readonly client;
16
+ private readonly _streamingAddress;
17
+ private readonly streamingClient;
18
+ private _closed;
17
19
  private constructor();
18
20
  /**
19
- * Create a new embedded SpiceDB instance with a schema and relationships.
21
+ * Create a new embedded SpiceDB instance (in-memory only).
20
22
  *
21
23
  * @param schema - The SpiceDB schema definition (ZED language)
22
24
  * @param relationships - Initial relationships (empty array allowed)
23
- * @param options - Optional configuration (datastore, grpc_transport). Omit for defaults.
25
+ * @param options - Optional datastore options (always in-memory)
24
26
  * @returns New EmbeddedSpiceDB instance
25
27
  */
26
28
  static create(schema: string, relationships?: v1.Relationship[], options?: SpiceDBStartOptions | null): Promise<EmbeddedSpiceDB>;
27
29
  private bootstrap;
28
30
  /**
29
- * Permissions service client (CheckPermission, WriteRelationships, ReadRelationships, etc.)
31
+ * Permissions service: unary RPCs via FFI, streaming (ReadRelationships, LookupResources, LookupSubjects) via streaming proxy.
30
32
  */
31
33
  permissions(): v1.ZedClientInterface;
32
34
  /**
33
- * Schema service client (ReadSchema, WriteSchema, ReflectSchema, etc.)
35
+ * Schema service (ReadSchema, WriteSchema, etc.) via FFI.
34
36
  */
35
37
  schema(): v1.ZedClientInterface;
36
38
  /**
37
- * Watch service client (watch for relationship changes)
39
+ * Watch service (streaming) via streaming proxy.
38
40
  */
39
41
  watch(): v1.ZedClientInterface;
40
42
  /**
41
- * Dispose the instance and close the channel.
43
+ * Streaming address (Unix path or host:port) for streaming APIs.
44
+ */
45
+ streamingAddress(): string;
46
+ /**
47
+ * Dispose the instance and close the streaming channel.
42
48
  */
43
49
  close(): void;
44
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"embedded.d.ts","sourceRoot":"","sources":["../src/embedded.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAC;AAC3C,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,UAAU,CAAC;AAYlB,qBAAa,YAAa,SAAQ,KAAK;gBACzB,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAE/C,OAAO;IAKP;;;;;;;OAOG;WACU,MAAM,CACjB,MAAM,EAAE,MAAM,EACd,aAAa,GAAE,EAAE,CAAC,YAAY,EAAO,EACrC,OAAO,CAAC,EAAE,mBAAmB,GAAG,IAAI,GACnC,OAAO,CAAC,eAAe,CAAC;YAyBb,SAAS;IAqBvB;;OAEG;IACH,WAAW,IAAI,EAAE,CAAC,kBAAkB;IAIpC;;OAEG;IACH,MAAM,IAAI,EAAE,CAAC,kBAAkB;IAI/B;;OAEG;IACH,KAAK,IAAI,EAAE,CAAC,kBAAkB;IAI9B;;OAEG;IACH,KAAK,IAAI,IAAI;CAId"}
1
+ {"version":3,"file":"embedded.d.ts","sourceRoot":"","sources":["../src/embedded.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAC;AAC3C,OAAO,EAUL,KAAK,mBAAmB,EACzB,MAAM,UAAU,CAAC;AAwBlB,qBAAa,YAAa,SAAQ,KAAK;gBACzB,OAAO,EAAE,MAAM;CAI5B;AAYD,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAwB;IACxD,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO;IAUP;;;;;;;OAOG;WACU,MAAM,CACjB,MAAM,EAAE,MAAM,EACd,aAAa,GAAE,EAAE,CAAC,YAAY,EAAO,EACrC,OAAO,CAAC,EAAE,mBAAmB,GAAG,IAAI,GACnC,OAAO,CAAC,eAAe,CAAC;YAsBb,SAAS;IAyBvB;;OAEG;IACH,WAAW,IAAI,EAAE,CAAC,kBAAkB;IAgMpC;;OAEG;IACH,MAAM,IAAI,EAAE,CAAC,kBAAkB;IAkF/B;;OAEG;IACH,KAAK,IAAI,EAAE,CAAC,kBAAkB;IAI9B;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;IACH,KAAK,IAAI,IAAI;CAMd"}
package/dist/embedded.js CHANGED
@@ -1,47 +1,54 @@
1
1
  /**
2
2
  * Embedded SpiceDB instance.
3
3
  *
4
- * A thin wrapper that starts SpiceDB via the C-shared library, connects over a Unix
5
- * socket, and bootstraps schema and relationships via gRPC.
4
+ * Uses the C-shared library with in-memory transport: unary RPCs go through FFI,
5
+ * streaming APIs (Watch, ReadRelationships, etc.) use a streaming proxy.
6
6
  *
7
7
  * Use permissions(), schema(), and watch() to access the full SpiceDB API.
8
8
  */
9
9
  import * as grpc from "@grpc/grpc-js";
10
10
  import { v1 } from "@authzed/authzed-node";
11
- import { spicedb_dispose, spicedb_start, } from "./ffi.js";
11
+ import { spicedb_dispose, spicedb_schema_read_schema, spicedb_schema_write_schema, spicedb_permissions_check_permission, spicedb_permissions_write_relationships, spicedb_permissions_delete_relationships, spicedb_permissions_check_bulk_permissions, spicedb_permissions_expand_permission_tree, spicedb_start, } from "./ffi.js";
12
12
  import { getTarget as getTcpTarget } from "./tcp_channel.js";
13
13
  import { getTarget as getUnixSocketTarget } from "./unix_socket_channel.js";
14
- const { NewClientWithChannelCredentials, RelationshipUpdate, RelationshipUpdate_Operation, WriteRelationshipsRequest, WriteSchemaRequest, } = v1;
14
+ const { CheckPermissionRequest, CheckPermissionResponse, CheckBulkPermissionsRequest, CheckBulkPermissionsResponse, ExpandPermissionTreeRequest, ExpandPermissionTreeResponse, DeleteRelationshipsRequest, DeleteRelationshipsResponse, WriteRelationshipsRequest, WriteRelationshipsResponse, ReadSchemaRequest, ReadSchemaResponse, WriteSchemaRequest, WriteSchemaResponse, NewClientWithChannelCredentials, RelationshipUpdate, RelationshipUpdate_Operation, } = v1;
15
15
  export class SpiceDBError extends Error {
16
16
  constructor(message) {
17
17
  super(message);
18
18
  this.name = "SpiceDBError";
19
19
  }
20
20
  }
21
+ /** Build gRPC target from streaming_address and streaming_transport. */
22
+ function streamingTarget(streamingAddress, streamingTransport) {
23
+ return streamingTransport === "unix"
24
+ ? getUnixSocketTarget(streamingAddress)
25
+ : getTcpTarget(streamingAddress);
26
+ }
21
27
  export class EmbeddedSpiceDB {
22
28
  handle;
23
- client;
24
- constructor(handle, client) {
29
+ _streamingAddress;
30
+ streamingClient;
31
+ _closed = false;
32
+ constructor(handle, streamingAddr, streamingClient) {
25
33
  this.handle = handle;
26
- this.client = client;
34
+ this._streamingAddress = streamingAddr;
35
+ this.streamingClient = streamingClient;
27
36
  }
28
37
  /**
29
- * Create a new embedded SpiceDB instance with a schema and relationships.
38
+ * Create a new embedded SpiceDB instance (in-memory only).
30
39
  *
31
40
  * @param schema - The SpiceDB schema definition (ZED language)
32
41
  * @param relationships - Initial relationships (empty array allowed)
33
- * @param options - Optional configuration (datastore, grpc_transport). Omit for defaults.
42
+ * @param options - Optional datastore options (always in-memory)
34
43
  * @returns New EmbeddedSpiceDB instance
35
44
  */
36
45
  static async create(schema, relationships = [], options) {
37
46
  const data = spicedb_start(options ?? undefined);
38
- const { handle, grpc_transport, address } = data;
39
- const target = grpc_transport === "unix"
40
- ? getUnixSocketTarget(address)
41
- : getTcpTarget(address);
47
+ const { handle, streaming_address, streaming_transport } = data;
48
+ const target = streamingTarget(streaming_address, streaming_transport);
42
49
  const creds = grpc.credentials.createInsecure();
43
- const client = NewClientWithChannelCredentials(target, creds);
44
- const db = new EmbeddedSpiceDB(handle, client);
50
+ const streamingClient = NewClientWithChannelCredentials(target, creds, 0);
51
+ const db = new EmbeddedSpiceDB(handle, streaming_address, streamingClient);
45
52
  try {
46
53
  await db.bootstrap(schema, relationships);
47
54
  }
@@ -53,41 +60,222 @@ export class EmbeddedSpiceDB {
53
60
  }
54
61
  async bootstrap(schema, relationships) {
55
62
  const schemaRequest = WriteSchemaRequest.create({ schema });
56
- await this.client.promises.writeSchema(schemaRequest);
63
+ const schemaBytes = new Uint8Array(WriteSchemaRequest.toBinary(schemaRequest));
64
+ spicedb_schema_write_schema(this.handle, schemaBytes);
57
65
  if (relationships.length > 0) {
58
66
  const updates = relationships.map((r) => RelationshipUpdate.create({
59
67
  operation: RelationshipUpdate_Operation.TOUCH,
60
68
  relationship: r,
61
69
  }));
62
- const writeRequest = WriteRelationshipsRequest.create({
63
- updates,
64
- });
65
- await this.client.promises.writeRelationships(writeRequest);
70
+ const writeRequest = WriteRelationshipsRequest.create({ updates });
71
+ const writeBytes = new Uint8Array(WriteRelationshipsRequest.toBinary(writeRequest));
72
+ spicedb_permissions_write_relationships(this.handle, writeBytes);
66
73
  }
67
74
  }
68
75
  /**
69
- * Permissions service client (CheckPermission, WriteRelationships, ReadRelationships, etc.)
76
+ * Permissions service: unary RPCs via FFI, streaming (ReadRelationships, LookupResources, LookupSubjects) via streaming proxy.
70
77
  */
71
78
  permissions() {
72
- return this.client;
79
+ const h = this.handle;
80
+ const stream = this.streamingClient;
81
+ const unaryCheckPermission = (input, metadata, options, callback) => {
82
+ const bytes = new Uint8Array(CheckPermissionRequest.toBinary(input));
83
+ try {
84
+ const out = spicedb_permissions_check_permission(h, bytes);
85
+ const resp = CheckPermissionResponse.fromBinary(out);
86
+ if (callback) {
87
+ setImmediate(() => callback(null, resp));
88
+ }
89
+ }
90
+ catch (err) {
91
+ if (callback) {
92
+ setImmediate(() => callback(err, undefined));
93
+ }
94
+ }
95
+ return {};
96
+ };
97
+ const unaryWriteRelationships = (input, metadata, options, callback) => {
98
+ const bytes = new Uint8Array(WriteRelationshipsRequest.toBinary(input));
99
+ try {
100
+ const out = spicedb_permissions_write_relationships(h, bytes);
101
+ const resp = WriteRelationshipsResponse.fromBinary(out);
102
+ if (callback) {
103
+ setImmediate(() => callback(null, resp));
104
+ }
105
+ }
106
+ catch (err) {
107
+ if (callback) {
108
+ setImmediate(() => callback(err, undefined));
109
+ }
110
+ }
111
+ return {};
112
+ };
113
+ const unaryDeleteRelationships = (input, metadata, options, callback) => {
114
+ const bytes = new Uint8Array(DeleteRelationshipsRequest.toBinary(input));
115
+ try {
116
+ const out = spicedb_permissions_delete_relationships(h, bytes);
117
+ const resp = DeleteRelationshipsResponse.fromBinary(out);
118
+ if (callback) {
119
+ setImmediate(() => callback(null, resp));
120
+ }
121
+ }
122
+ catch (err) {
123
+ if (callback) {
124
+ setImmediate(() => callback(err, undefined));
125
+ }
126
+ }
127
+ return {};
128
+ };
129
+ const unaryCheckBulkPermissions = (input, metadata, options, callback) => {
130
+ const bytes = new Uint8Array(CheckBulkPermissionsRequest.toBinary(input));
131
+ try {
132
+ const out = spicedb_permissions_check_bulk_permissions(h, bytes);
133
+ const resp = CheckBulkPermissionsResponse.fromBinary(out);
134
+ if (callback) {
135
+ setImmediate(() => callback(null, resp));
136
+ }
137
+ }
138
+ catch (err) {
139
+ if (callback) {
140
+ setImmediate(() => callback(err, undefined));
141
+ }
142
+ }
143
+ return {};
144
+ };
145
+ const unaryExpandPermissionTree = (input, metadata, options, callback) => {
146
+ const bytes = new Uint8Array(ExpandPermissionTreeRequest.toBinary(input));
147
+ try {
148
+ const out = spicedb_permissions_expand_permission_tree(h, bytes);
149
+ const resp = ExpandPermissionTreeResponse.fromBinary(out);
150
+ if (callback) {
151
+ setImmediate(() => callback(null, resp));
152
+ }
153
+ }
154
+ catch (err) {
155
+ if (callback) {
156
+ setImmediate(() => callback(err, undefined));
157
+ }
158
+ }
159
+ return {};
160
+ };
161
+ const promises = {
162
+ ...stream.promises,
163
+ readRelationships: stream.promises.readRelationships.bind(stream.promises),
164
+ lookupResources: stream.promises.lookupResources.bind(stream.promises),
165
+ lookupSubjects: stream.promises.lookupSubjects.bind(stream.promises),
166
+ checkPermission: (input) => new Promise((resolve, reject) => {
167
+ unaryCheckPermission(input, undefined, undefined, (err, value) => err ? reject(err) : resolve(value));
168
+ }),
169
+ writeRelationships: (input) => new Promise((resolve, reject) => {
170
+ unaryWriteRelationships(input, undefined, undefined, (err, value) => err ? reject(err) : resolve(value));
171
+ }),
172
+ deleteRelationships: (input) => new Promise((resolve, reject) => {
173
+ unaryDeleteRelationships(input, undefined, undefined, (err, value) => err ? reject(err) : resolve(value));
174
+ }),
175
+ checkBulkPermissions: (input) => new Promise((resolve, reject) => {
176
+ unaryCheckBulkPermissions(input, undefined, undefined, (err, value) => (err ? reject(err) : resolve(value)));
177
+ }),
178
+ expandPermissionTree: (input) => new Promise((resolve, reject) => {
179
+ unaryExpandPermissionTree(input, undefined, undefined, (err, value) => (err ? reject(err) : resolve(value)));
180
+ }),
181
+ };
182
+ return new Proxy(stream, {
183
+ get(target, prop) {
184
+ if (prop === "promises")
185
+ return promises;
186
+ if (prop === "checkPermission")
187
+ return unaryCheckPermission;
188
+ if (prop === "writeRelationships")
189
+ return unaryWriteRelationships;
190
+ if (prop === "deleteRelationships")
191
+ return unaryDeleteRelationships;
192
+ if (prop === "checkBulkPermissions")
193
+ return unaryCheckBulkPermissions;
194
+ if (prop === "expandPermissionTree")
195
+ return unaryExpandPermissionTree;
196
+ return target[prop];
197
+ },
198
+ });
73
199
  }
74
200
  /**
75
- * Schema service client (ReadSchema, WriteSchema, ReflectSchema, etc.)
201
+ * Schema service (ReadSchema, WriteSchema, etc.) via FFI.
76
202
  */
77
203
  schema() {
78
- return this.client;
204
+ const h = this.handle;
205
+ const stream = this.streamingClient;
206
+ const unaryReadSchema = (input, metadata, options, callback) => {
207
+ const bytes = new Uint8Array(ReadSchemaRequest.toBinary(input));
208
+ try {
209
+ const out = spicedb_schema_read_schema(h, bytes);
210
+ const resp = ReadSchemaResponse.fromBinary(out);
211
+ if (callback) {
212
+ setImmediate(() => callback(null, resp));
213
+ }
214
+ }
215
+ catch (err) {
216
+ if (callback) {
217
+ setImmediate(() => callback(err, undefined));
218
+ }
219
+ }
220
+ return {};
221
+ };
222
+ const unaryWriteSchema = (input, metadata, options, callback) => {
223
+ const bytes = new Uint8Array(WriteSchemaRequest.toBinary(input));
224
+ try {
225
+ const out = spicedb_schema_write_schema(h, bytes);
226
+ const resp = WriteSchemaResponse.fromBinary(out);
227
+ if (callback) {
228
+ setImmediate(() => callback(null, resp));
229
+ }
230
+ }
231
+ catch (err) {
232
+ if (callback) {
233
+ setImmediate(() => callback(err, undefined));
234
+ }
235
+ }
236
+ return {};
237
+ };
238
+ const promises = {
239
+ ...stream.promises,
240
+ readSchema: (input) => new Promise((resolve, reject) => {
241
+ unaryReadSchema(input, undefined, undefined, (err, value) => err ? reject(err) : resolve(value));
242
+ }),
243
+ writeSchema: (input) => new Promise((resolve, reject) => {
244
+ unaryWriteSchema(input, undefined, undefined, (err, value) => err ? reject(err) : resolve(value));
245
+ }),
246
+ };
247
+ return new Proxy(stream, {
248
+ get(target, prop) {
249
+ if (prop === "promises")
250
+ return promises;
251
+ if (prop === "readSchema")
252
+ return unaryReadSchema;
253
+ if (prop === "writeSchema")
254
+ return unaryWriteSchema;
255
+ return target[prop];
256
+ },
257
+ });
79
258
  }
80
259
  /**
81
- * Watch service client (watch for relationship changes)
260
+ * Watch service (streaming) via streaming proxy.
82
261
  */
83
262
  watch() {
84
- return this.client;
263
+ return this.streamingClient;
264
+ }
265
+ /**
266
+ * Streaming address (Unix path or host:port) for streaming APIs.
267
+ */
268
+ streamingAddress() {
269
+ return this._streamingAddress;
85
270
  }
86
271
  /**
87
- * Dispose the instance and close the channel.
272
+ * Dispose the instance and close the streaming channel.
88
273
  */
89
274
  close() {
90
- this.client.close();
275
+ if (this._closed)
276
+ return;
277
+ this._closed = true;
278
+ this.streamingClient.close();
91
279
  spicedb_dispose(this.handle);
92
280
  }
93
281
  }
@@ -1 +1 @@
1
- {"version":3,"file":"embedded.js","sourceRoot":"","sources":["../src/embedded.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"embedded.js","sourceRoot":"","sources":["../src/embedded.ts"],"names":[],"mappings":"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"}
package/dist/ffi.d.ts CHANGED
@@ -1,27 +1,39 @@
1
1
  /**
2
2
  * FFI bindings to the SpiceDB C-shared library (shared/c).
3
+ * Always uses in-memory transport; unary RPCs go through FFI, streaming via proxy.
3
4
  */
5
+ /** Result of starting an embedded instance (memory transport). */
4
6
  export interface SpiceDBStartResult {
5
7
  handle: number;
6
- grpc_transport: "unix" | "tcp";
7
- address: string;
8
+ /** Always "memory" when using this API. */
9
+ grpc_transport: "memory";
10
+ /** Address for streaming APIs (Watch, ReadRelationships, etc.). Unix path or host:port. */
11
+ streaming_address: string;
12
+ /** Transport for streaming proxy: "unix" or "tcp". */
13
+ streaming_transport: string;
8
14
  }
15
+ /** Options for starting an embedded instance. Only datastore-related options are used. */
9
16
  export interface SpiceDBStartOptions {
10
17
  /** Datastore: "memory" (default), "postgres", "cockroachdb", "spanner", "mysql" */
11
18
  datastore?: string;
12
19
  /** Connection string for remote datastores */
13
20
  datastore_uri?: string;
14
- /** gRPC transport: "unix" (default on Unix), "tcp" (default on Windows) */
15
- grpc_transport?: string;
16
21
  /** Path to Spanner service account JSON (Spanner only) */
17
22
  spanner_credentials_file?: string;
18
23
  /** Spanner emulator host (Spanner only) */
19
24
  spanner_emulator_host?: string;
20
25
  /** Prefix for all tables (MySQL only) */
21
26
  mysql_table_prefix?: string;
22
- /** Enable datastore Prometheus metrics (default: false; disabled allows multiple instances in same process) */
27
+ /** Enable datastore Prometheus metrics (default: false) */
23
28
  metrics_enabled?: boolean;
24
29
  }
25
30
  export declare function spicedb_start(options?: SpiceDBStartOptions | null): SpiceDBStartResult;
26
31
  export declare function spicedb_dispose(handle: number): void;
32
+ export declare function spicedb_permissions_check_permission(handle: number, requestBytes: Uint8Array): Uint8Array;
33
+ export declare function spicedb_schema_write_schema(handle: number, requestBytes: Uint8Array): Uint8Array;
34
+ export declare function spicedb_permissions_write_relationships(handle: number, requestBytes: Uint8Array): Uint8Array;
35
+ export declare function spicedb_permissions_delete_relationships(handle: number, requestBytes: Uint8Array): Uint8Array;
36
+ export declare function spicedb_permissions_check_bulk_permissions(handle: number, requestBytes: Uint8Array): Uint8Array;
37
+ export declare function spicedb_permissions_expand_permission_tree(handle: number, requestBytes: Uint8Array): Uint8Array;
38
+ export declare function spicedb_schema_read_schema(handle: number, requestBytes: Uint8Array): Uint8Array;
27
39
  //# sourceMappingURL=ffi.d.ts.map
package/dist/ffi.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ffi.d.ts","sourceRoot":"","sources":["../src/ffi.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,GAAG,KAAK,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2EAA2E;IAC3E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0DAA0D;IAC1D,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,2CAA2C;IAC3C,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,yCAAyC;IACzC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,+GAA+G;IAC/G,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAyFD,wBAAgB,aAAa,CAC3B,OAAO,CAAC,EAAE,mBAAmB,GAAG,IAAI,GACnC,kBAAkB,CAapB;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAOpD"}
1
+ {"version":3,"file":"ffi.d.ts","sourceRoot":"","sources":["../src/ffi.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,kEAAkE;AAClE,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,cAAc,EAAE,QAAQ,CAAC;IACzB,2FAA2F;IAC3F,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sDAAsD;IACtD,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,0FAA0F;AAC1F,MAAM,WAAW,mBAAmB;IAClC,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0DAA0D;IAC1D,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,2CAA2C;IAC3C,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,yCAAyC;IACzC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,2DAA2D;IAC3D,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAiOD,wBAAgB,aAAa,CAC3B,OAAO,CAAC,EAAE,mBAAmB,GAAG,IAAI,GACnC,kBAAkB,CA0BpB;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAOpD;AAgCD,wBAAgB,oCAAoC,CAClD,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,UAAU,GACvB,UAAU,CAMZ;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,UAAU,GACvB,UAAU,CAEZ;AAED,wBAAgB,uCAAuC,CACrD,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,UAAU,GACvB,UAAU,CAMZ;AAED,wBAAgB,wCAAwC,CACtD,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,UAAU,GACvB,UAAU,CAMZ;AAED,wBAAgB,0CAA0C,CACxD,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,UAAU,GACvB,UAAU,CAMZ;AAED,wBAAgB,0CAA0C,CACxD,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,UAAU,GACvB,UAAU,CAMZ;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,UAAU,GACvB,UAAU,CAEZ"}
package/dist/ffi.js CHANGED
@@ -1,5 +1,6 @@
1
1
  /**
2
2
  * FFI bindings to the SpiceDB C-shared library (shared/c).
3
+ * Always uses in-memory transport; unary RPCs go through FFI, streaming via proxy.
3
4
  */
4
5
  import koffi from "koffi";
5
6
  import { createRequire } from "module";
@@ -14,7 +15,6 @@ function findLibrary() {
14
15
  : currentPlatform === "darwin"
15
16
  ? "libspicedb.dylib"
16
17
  : "libspicedb.so";
17
- // Platform-specific optional dependency (only the matching platform is installed)
18
18
  const platformKey = `${currentPlatform}-${process.arch}`;
19
19
  const optionalPkgName = `spicedb-embedded-${platformKey}`;
20
20
  try {
@@ -27,7 +27,6 @@ function findLibrary() {
27
27
  catch {
28
28
  // optional dep not installed or no bundled lib for this platform
29
29
  }
30
- // Legacy: prebuilds next to dist/ (e.g. local dev after stage-all-prebuilds)
31
30
  const prebuildsDir = resolve(dirname(fileURLToPath(import.meta.url)), "..", "prebuilds", platformKey);
32
31
  const legacyPath = resolve(prebuildsDir, libName);
33
32
  try {
@@ -54,6 +53,37 @@ function findLibrary() {
54
53
  }
55
54
  return libName;
56
55
  }
56
+ function copyOutAndFree(ptr, len, freeBytes) {
57
+ if (len <= 0)
58
+ return new Uint8Array(0);
59
+ if (ptr == null)
60
+ return new Uint8Array(0);
61
+ let copy;
62
+ if (ptr instanceof Buffer) {
63
+ copy = new Uint8Array(ptr.subarray(0, len));
64
+ }
65
+ else if (ptr instanceof Uint8Array) {
66
+ copy = ptr.slice(0, len);
67
+ }
68
+ else if (typeof ptr === "object" &&
69
+ ptr !== null &&
70
+ "buffer" in ptr &&
71
+ ptr.buffer instanceof ArrayBuffer) {
72
+ const v = ptr;
73
+ copy = new Uint8Array(v.buffer, v.byteOffset ?? 0, len).slice();
74
+ }
75
+ else {
76
+ try {
77
+ const ab = koffi.view(ptr, len);
78
+ copy = new Uint8Array(ab).slice();
79
+ }
80
+ catch {
81
+ copy = new Uint8Array(len);
82
+ }
83
+ }
84
+ freeBytes(ptr);
85
+ return copy;
86
+ }
57
87
  let lib = null;
58
88
  function getLib() {
59
89
  if (lib)
@@ -61,16 +91,36 @@ function getLib() {
61
91
  const path = findLibrary();
62
92
  const loaded = koffi.load(path);
63
93
  const spicedb_free = loaded.func("void spicedb_free(char* ptr)");
64
- koffi.disposable("HeapStr", "str", (ptr) => spicedb_free(ptr));
94
+ try {
95
+ koffi.disposable("HeapStr", "str", (ptr) => spicedb_free(ptr));
96
+ }
97
+ catch {
98
+ // Already registered (e.g. second getLib() call after first threw)
99
+ }
100
+ const spicedb_free_bytes = loaded.func("void spicedb_free_bytes(void* ptr)");
101
+ const outUcharPtrPtr = koffi.out(koffi.pointer("uint8_t", 2));
102
+ const outIntPtr = koffi.out(koffi.pointer("int"));
103
+ const outCharPtrPtr = koffi.out(koffi.pointer("char", 2));
104
+ const inBytes = koffi.pointer("uint8_t");
65
105
  lib = {
66
106
  spicedb_start: loaded.func("HeapStr spicedb_start(const char* optionsJson)"),
67
107
  spicedb_dispose: loaded.func("HeapStr spicedb_dispose(unsigned long long handle)"),
108
+ spicedb_free: spicedb_free,
109
+ spicedb_free_bytes,
110
+ spicedb_permissions_check_permission: loaded.func("spicedb_permissions_check_permission", "void", ["ulonglong", inBytes, "int", outUcharPtrPtr, outIntPtr, outCharPtrPtr]),
111
+ spicedb_schema_write_schema: loaded.func("spicedb_schema_write_schema", "void", ["ulonglong", inBytes, "int", outUcharPtrPtr, outIntPtr, outCharPtrPtr]),
112
+ spicedb_permissions_write_relationships: loaded.func("spicedb_permissions_write_relationships", "void", ["ulonglong", inBytes, "int", outUcharPtrPtr, outIntPtr, outCharPtrPtr]),
113
+ spicedb_permissions_delete_relationships: loaded.func("spicedb_permissions_delete_relationships", "void", ["ulonglong", inBytes, "int", outUcharPtrPtr, outIntPtr, outCharPtrPtr]),
114
+ spicedb_permissions_check_bulk_permissions: loaded.func("spicedb_permissions_check_bulk_permissions", "void", ["ulonglong", inBytes, "int", outUcharPtrPtr, outIntPtr, outCharPtrPtr]),
115
+ spicedb_permissions_expand_permission_tree: loaded.func("spicedb_permissions_expand_permission_tree", "void", ["ulonglong", inBytes, "int", outUcharPtrPtr, outIntPtr, outCharPtrPtr]),
116
+ spicedb_schema_read_schema: loaded.func("spicedb_schema_read_schema", "void", ["ulonglong", inBytes, "int", outUcharPtrPtr, outIntPtr, outCharPtrPtr]),
68
117
  };
69
118
  return lib;
70
119
  }
71
120
  export function spicedb_start(options) {
72
121
  const l = getLib();
73
- const optionsJson = options != null ? JSON.stringify(options) : null;
122
+ const opts = options != null ? { ...options } : {};
123
+ const optionsJson = JSON.stringify(opts);
74
124
  const raw = l.spicedb_start(optionsJson);
75
125
  if (!raw)
76
126
  throw new Error("Null response from C library");
@@ -78,7 +128,16 @@ export function spicedb_start(options) {
78
128
  if (!data.success) {
79
129
  throw new Error(data.error ?? "Unknown error");
80
130
  }
81
- return data.data;
131
+ const d = data.data;
132
+ if (!d.streaming_address || !d.streaming_transport) {
133
+ throw new Error("Missing streaming_address or streaming_transport in C library response");
134
+ }
135
+ return {
136
+ handle: d.handle,
137
+ grpc_transport: "memory",
138
+ streaming_address: d.streaming_address,
139
+ streaming_transport: d.streaming_transport,
140
+ };
82
141
  }
83
142
  export function spicedb_dispose(handle) {
84
143
  const l = getLib();
@@ -88,4 +147,40 @@ export function spicedb_dispose(handle) {
88
147
  throw new Error(data.error ?? "Unknown error");
89
148
  }
90
149
  }
150
+ function callRpc(fn, handle, requestBytes) {
151
+ const l = getLib();
152
+ const buf = Buffer.from(requestBytes);
153
+ const outResp = [null];
154
+ const outLen = [0];
155
+ const outErr = [null];
156
+ fn(handle, buf, buf.length, outResp, outLen, outErr);
157
+ const errMsg = outErr[0];
158
+ if (errMsg != null && errMsg !== "") {
159
+ throw new Error(errMsg);
160
+ }
161
+ const ptr = outResp[0];
162
+ const len = outLen[0];
163
+ return copyOutAndFree(ptr, len, (p) => l.spicedb_free_bytes(p));
164
+ }
165
+ export function spicedb_permissions_check_permission(handle, requestBytes) {
166
+ return callRpc(getLib().spicedb_permissions_check_permission, handle, requestBytes);
167
+ }
168
+ export function spicedb_schema_write_schema(handle, requestBytes) {
169
+ return callRpc(getLib().spicedb_schema_write_schema, handle, requestBytes);
170
+ }
171
+ export function spicedb_permissions_write_relationships(handle, requestBytes) {
172
+ return callRpc(getLib().spicedb_permissions_write_relationships, handle, requestBytes);
173
+ }
174
+ export function spicedb_permissions_delete_relationships(handle, requestBytes) {
175
+ return callRpc(getLib().spicedb_permissions_delete_relationships, handle, requestBytes);
176
+ }
177
+ export function spicedb_permissions_check_bulk_permissions(handle, requestBytes) {
178
+ return callRpc(getLib().spicedb_permissions_check_bulk_permissions, handle, requestBytes);
179
+ }
180
+ export function spicedb_permissions_expand_permission_tree(handle, requestBytes) {
181
+ return callRpc(getLib().spicedb_permissions_expand_permission_tree, handle, requestBytes);
182
+ }
183
+ export function spicedb_schema_read_schema(handle, requestBytes) {
184
+ return callRpc(getLib().spicedb_schema_read_schema, handle, requestBytes);
185
+ }
91
186
  //# sourceMappingURL=ffi.js.map
package/dist/ffi.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ffi.js","sourceRoot":"","sources":["../src/ffi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ffi.js","sourceRoot":"","sources":["../src/ffi.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spicedb-embedded",
3
- "version": "0.2.6",
3
+ "version": "0.3.0",
4
4
  "description": "Embedded SpiceDB for TypeScript/Node.js — embedded authorization using the standard gRPC API",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -16,10 +16,10 @@
16
16
  "dist"
17
17
  ],
18
18
  "optionalDependencies": {
19
- "spicedb-embedded-linux-x64": "0.2.6",
20
- "spicedb-embedded-linux-arm64": "0.2.6",
21
- "spicedb-embedded-darwin-arm64": "0.2.6",
22
- "spicedb-embedded-win32-x64": "0.2.6"
19
+ "spicedb-embedded-linux-x64": "0.3.0",
20
+ "spicedb-embedded-linux-arm64": "0.3.0",
21
+ "spicedb-embedded-darwin-arm64": "0.3.0",
22
+ "spicedb-embedded-win32-x64": "0.3.0"
23
23
  },
24
24
  "scripts": {
25
25
  "build": "tsc",