@super-line/server 0.6.0 → 0.7.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/dist/index.cjs CHANGED
@@ -16761,6 +16761,26 @@ function createSuperLineServer(contract, opts) {
16761
16761
  const remote = await presenceOrThrow().get(id);
16762
16762
  if (!remote) throw new import_core2.SuperLineError("NOT_FOUND", `Unknown connection: ${id}`);
16763
16763
  return { descriptor: remote, ctxAvailable: false };
16764
+ },
16765
+ listStores: async () => Object.entries(storeMap).map(([name, store]) => ({ name, model: store.model })),
16766
+ listResources: async (input) => {
16767
+ const store = storeMap[input.store];
16768
+ if (!store) throw new import_core2.SuperLineError("NOT_FOUND", `Unknown store: ${input.store}`);
16769
+ return store.list();
16770
+ },
16771
+ readResource: async (input) => {
16772
+ const { store: name, id } = input;
16773
+ const store = storeMap[name];
16774
+ if (!store) throw new import_core2.SuperLineError("NOT_FOUND", `Unknown store: ${name}`);
16775
+ const resource = await store.read(id);
16776
+ if (!resource) throw new import_core2.SuperLineError("NOT_FOUND", `No resource: ${name}/${id}`);
16777
+ let data = resource.data;
16778
+ if (store.open) {
16779
+ const replica = store.open(id);
16780
+ data = replica.getSnapshot();
16781
+ replica.close();
16782
+ }
16783
+ return { data: safeSnapshot(data), accessRules: resource.accessRules };
16764
16784
  }
16765
16785
  };
16766
16786
  const authHook = async (handshake) => {
@@ -17136,6 +17156,7 @@ function createSuperLineServer(contract, opts) {
17136
17156
  storeApi[name] = {
17137
17157
  async create(id, data, accessRules) {
17138
17158
  await store.create(id, data, accessRules);
17159
+ if (inspectorEnabled) emitInspectorEvent({ type: "store.create", store: name, id });
17139
17160
  },
17140
17161
  read(id) {
17141
17162
  return Promise.resolve(store.read(id));
@@ -17159,6 +17180,7 @@ function createSuperLineServer(contract, opts) {
17159
17180
  },
17160
17181
  async delete(id) {
17161
17182
  await store.delete(id);
17183
+ if (inspectorEnabled) emitInspectorEvent({ type: "store.delete", store: name, id });
17162
17184
  },
17163
17185
  list() {
17164
17186
  return Promise.resolve(store.list());
package/dist/index.js CHANGED
@@ -492,6 +492,26 @@ function createSuperLineServer(contract, opts) {
492
492
  const remote = await presenceOrThrow().get(id);
493
493
  if (!remote) throw new SuperLineError("NOT_FOUND", `Unknown connection: ${id}`);
494
494
  return { descriptor: remote, ctxAvailable: false };
495
+ },
496
+ listStores: async () => Object.entries(storeMap).map(([name, store]) => ({ name, model: store.model })),
497
+ listResources: async (input) => {
498
+ const store = storeMap[input.store];
499
+ if (!store) throw new SuperLineError("NOT_FOUND", `Unknown store: ${input.store}`);
500
+ return store.list();
501
+ },
502
+ readResource: async (input) => {
503
+ const { store: name, id } = input;
504
+ const store = storeMap[name];
505
+ if (!store) throw new SuperLineError("NOT_FOUND", `Unknown store: ${name}`);
506
+ const resource = await store.read(id);
507
+ if (!resource) throw new SuperLineError("NOT_FOUND", `No resource: ${name}/${id}`);
508
+ let data = resource.data;
509
+ if (store.open) {
510
+ const replica = store.open(id);
511
+ data = replica.getSnapshot();
512
+ replica.close();
513
+ }
514
+ return { data: safeSnapshot(data), accessRules: resource.accessRules };
495
515
  }
496
516
  };
497
517
  const authHook = async (handshake) => {
@@ -867,6 +887,7 @@ function createSuperLineServer(contract, opts) {
867
887
  storeApi[name] = {
868
888
  async create(id, data, accessRules) {
869
889
  await store.create(id, data, accessRules);
890
+ if (inspectorEnabled) emitInspectorEvent({ type: "store.create", store: name, id });
870
891
  },
871
892
  read(id) {
872
893
  return Promise.resolve(store.read(id));
@@ -890,6 +911,7 @@ function createSuperLineServer(contract, opts) {
890
911
  },
891
912
  async delete(id) {
892
913
  await store.delete(id);
914
+ if (inspectorEnabled) emitInspectorEvent({ type: "store.delete", store: name, id });
893
915
  },
894
916
  list() {
895
917
  return Promise.resolve(store.list());
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@super-line/server",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "type": "module",
5
5
  "description": "Typesafe WebSocket server for super-line — rooms, topics, middleware, pluggable adapters.",
6
6
  "license": "MIT",
@@ -47,7 +47,7 @@
47
47
  "access": "public"
48
48
  },
49
49
  "dependencies": {
50
- "@super-line/core": "^0.6.0"
50
+ "@super-line/core": "^0.7.0"
51
51
  },
52
52
  "devDependencies": {
53
53
  "@chainsafe/libp2p-noise": "^17.0.0",
@@ -68,14 +68,14 @@
68
68
  "zeromq": "^6.0.0",
69
69
  "zod": "^3.24.1",
70
70
  "zod-to-json-schema": "^3.25.2",
71
- "@super-line/adapter-zeromq": "0.5.0",
72
71
  "@super-line/client": "0.6.0",
73
72
  "@super-line/adapter-rabbitmq": "0.5.0",
73
+ "@super-line/adapter-redis": "0.5.0",
74
74
  "@super-line/adapter-libp2p": "0.5.0",
75
- "@super-line/transport-websocket": "0.5.0",
76
75
  "@super-line/transport-http": "0.5.0",
76
+ "@super-line/adapter-zeromq": "0.5.0",
77
77
  "@super-line/transport-loopback": "0.5.0",
78
- "@super-line/adapter-redis": "0.5.0"
78
+ "@super-line/transport-websocket": "0.5.0"
79
79
  },
80
80
  "optionalDependencies": {
81
81
  "@standard-community/standard-json": "^0.3.5"