@dxos/react-edge-client 0.8.1-main.ba2dec9 → 0.8.1-staging.31c3ee1

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.
@@ -1,59 +1,40 @@
1
+ // packages/sdk/react-edge-client/src/index.ts
2
+ import { EdgeHttpClient as EdgeHttpClient2 } from "@dxos/edge-client";
3
+
1
4
  // packages/sdk/react-edge-client/src/hooks/useEdgeClient.ts
2
5
  import { useMemo } from "react";
6
+ import { createEdgeIdentity } from "@dxos/client/edge";
3
7
  import { EdgeHttpClient } from "@dxos/edge-client";
4
8
  import { invariant } from "@dxos/invariant";
5
- import { useConfig } from "@dxos/react-client";
9
+ import { useConfig, useClient } from "@dxos/react-client";
10
+ import { useIdentity } from "@dxos/react-client/halo";
6
11
  var __dxlog_file = "/home/runner/work/dxos/dxos/packages/sdk/react-edge-client/src/hooks/useEdgeClient.ts";
7
12
  var useEdgeClient = () => {
8
13
  const config = useConfig();
14
+ const client = useClient();
15
+ const identity = useIdentity();
9
16
  const edgeUrl = config.values.runtime?.services?.edge?.url;
10
17
  invariant(edgeUrl, "EDGE services not configured.", {
11
18
  F: __dxlog_file,
12
- L: 18,
19
+ L: 22,
13
20
  S: void 0,
14
21
  A: [
15
22
  "edgeUrl",
16
23
  "'EDGE services not configured.'"
17
24
  ]
18
25
  });
19
- return useMemo(() => new EdgeHttpClient(edgeUrl), [
20
- edgeUrl
21
- ]);
22
- };
23
-
24
- // packages/sdk/react-edge-client/src/hooks/useQueue.ts
25
- import { useEffect, useMemo as useMemo2 } from "react";
26
- import { QueueImpl } from "@dxos/echo-db";
27
- var MIN_POLL_INTERVAL = 1e3;
28
- var useQueue = (client, queueDxn, options = {}) => {
29
- const queue = useMemo2(() => queueDxn ? new QueueImpl(client, queueDxn) : void 0, [
30
- client,
31
- queueDxn?.toString()
32
- ]);
33
- useEffect(() => {
34
- void queue?.refresh();
35
- }, [
36
- queue
37
- ]);
38
- useEffect(() => {
39
- let timeout;
40
- if (options.pollInterval) {
41
- const poll = () => {
42
- void queue?.refresh().finally(() => {
43
- timeout = setTimeout(poll, Math.max(options.pollInterval ?? 0, MIN_POLL_INTERVAL));
44
- });
45
- };
46
- poll();
47
- }
48
- return () => clearTimeout(timeout);
26
+ return useMemo(() => {
27
+ const edgeClient = new EdgeHttpClient(edgeUrl);
28
+ const edgeIdentity = createEdgeIdentity(client);
29
+ edgeClient.setIdentity(edgeIdentity);
30
+ return edgeClient;
49
31
  }, [
50
- queue,
51
- options.pollInterval
32
+ edgeUrl,
33
+ identity
52
34
  ]);
53
- return queue;
54
35
  };
55
36
  export {
56
- useEdgeClient,
57
- useQueue
37
+ EdgeHttpClient2 as EdgeHttpClient,
38
+ useEdgeClient
58
39
  };
59
40
  //# sourceMappingURL=index.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/hooks/useEdgeClient.ts", "../../../src/hooks/useQueue.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { EdgeHttpClient } from '@dxos/edge-client';\nimport { invariant } from '@dxos/invariant';\nimport { useConfig } from '@dxos/react-client';\n\n/**\n * Client for edge services.\n */\n// TODO(mykola): This should be done through client-service RPC.\nexport const useEdgeClient = () => {\n const config = useConfig();\n const edgeUrl = config.values.runtime?.services?.edge?.url;\n invariant(edgeUrl, 'EDGE services not configured.');\n return useMemo(() => new EdgeHttpClient(edgeUrl), [edgeUrl]);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect, useMemo } from 'react';\n\nimport type { Queue } from '@dxos/echo-db';\nimport { QueueImpl } from '@dxos/echo-db';\nimport { type EdgeHttpClient } from '@dxos/edge-client';\nimport { type DXN } from '@dxos/keys';\n\nconst MIN_POLL_INTERVAL = 1_000;\n\nexport type UseQueueOptions = {\n pollInterval?: number;\n};\n\n/**\n * Polls the given Edge queue.\n */\n// TODO(burdon): Replace polling with socket?\nexport const useQueue = <T>(\n client: EdgeHttpClient,\n queueDxn?: DXN,\n options: UseQueueOptions = {},\n): Queue<T> | undefined => {\n const queue = useMemo<QueueImpl<T> | undefined>(\n () => (queueDxn ? new QueueImpl(client, queueDxn) : undefined),\n [client, queueDxn?.toString()],\n );\n\n useEffect(() => {\n void queue?.refresh();\n }, [queue]);\n\n useEffect(() => {\n let timeout: NodeJS.Timeout;\n if (options.pollInterval) {\n const poll = () => {\n void queue?.refresh().finally(() => {\n timeout = setTimeout(poll, Math.max(options.pollInterval ?? 0, MIN_POLL_INTERVAL));\n });\n };\n\n poll();\n }\n\n return () => clearTimeout(timeout);\n }, [queue, options.pollInterval]);\n\n return queue;\n};\n"],
5
- "mappings": ";AAIA,SAASA,eAAe;AAExB,SAASC,sBAAsB;AAC/B,SAASC,iBAAiB;AAC1B,SAASC,iBAAiB;;AAMnB,IAAMC,gBAAgB,MAAA;AAC3B,QAAMC,SAASF,UAAAA;AACf,QAAMG,UAAUD,OAAOE,OAAOC,SAASC,UAAUC,MAAMC;AACvDT,YAAUI,SAAS,iCAAA;;;;;;;;;AACnB,SAAON,QAAQ,MAAM,IAAIC,eAAeK,OAAAA,GAAU;IAACA;GAAQ;AAC7D;;;ACfA,SAASM,WAAWC,WAAAA,gBAAe;AAGnC,SAASC,iBAAiB;AAI1B,IAAMC,oBAAoB;AAUnB,IAAMC,WAAW,CACtBC,QACAC,UACAC,UAA2B,CAAC,MAAC;AAE7B,QAAMC,QAAQC,SACZ,MAAOH,WAAW,IAAII,UAAUL,QAAQC,QAAAA,IAAYK,QACpD;IAACN;IAAQC,UAAUM,SAAAA;GAAW;AAGhCC,YAAU,MAAA;AACR,SAAKL,OAAOM,QAAAA;EACd,GAAG;IAACN;GAAM;AAEVK,YAAU,MAAA;AACR,QAAIE;AACJ,QAAIR,QAAQS,cAAc;AACxB,YAAMC,OAAO,MAAA;AACX,aAAKT,OAAOM,QAAAA,EAAUI,QAAQ,MAAA;AAC5BH,oBAAUI,WAAWF,MAAMG,KAAKC,IAAId,QAAQS,gBAAgB,GAAGb,iBAAAA,CAAAA;QACjE,CAAA;MACF;AAEAc,WAAAA;IACF;AAEA,WAAO,MAAMK,aAAaP,OAAAA;EAC5B,GAAG;IAACP;IAAOD,QAAQS;GAAa;AAEhC,SAAOR;AACT;",
6
- "names": ["useMemo", "EdgeHttpClient", "invariant", "useConfig", "useEdgeClient", "config", "edgeUrl", "values", "runtime", "services", "edge", "url", "useEffect", "useMemo", "QueueImpl", "MIN_POLL_INTERVAL", "useQueue", "client", "queueDxn", "options", "queue", "useMemo", "QueueImpl", "undefined", "toString", "useEffect", "refresh", "timeout", "pollInterval", "poll", "finally", "setTimeout", "Math", "max", "clearTimeout"]
3
+ "sources": ["../../../src/index.ts", "../../../src/hooks/useEdgeClient.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nexport { EdgeHttpClient } from '@dxos/edge-client';\nexport * from './hooks';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { createEdgeIdentity } from '@dxos/client/edge';\nimport { EdgeHttpClient } from '@dxos/edge-client';\nimport { invariant } from '@dxos/invariant';\nimport { useConfig, useClient } from '@dxos/react-client';\nimport { useIdentity } from '@dxos/react-client/halo';\n\n/**\n * Client for edge services.\n */\n// TODO(mykola): This should be done through client-service RPC.\nexport const useEdgeClient = () => {\n const config = useConfig();\n const client = useClient();\n const identity = useIdentity();\n const edgeUrl = config.values.runtime?.services?.edge?.url;\n invariant(edgeUrl, 'EDGE services not configured.');\n return useMemo(() => {\n const edgeClient = new EdgeHttpClient(edgeUrl);\n const edgeIdentity = createEdgeIdentity(client);\n edgeClient.setIdentity(edgeIdentity);\n return edgeClient;\n }, [edgeUrl, identity]);\n};\n"],
5
+ "mappings": ";AAIA,SAASA,kBAAAA,uBAAsB;;;ACA/B,SAASC,eAAe;AAExB,SAASC,0BAA0B;AACnC,SAASC,sBAAsB;AAC/B,SAASC,iBAAiB;AAC1B,SAASC,WAAWC,iBAAiB;AACrC,SAASC,mBAAmB;;AAMrB,IAAMC,gBAAgB,MAAA;AAC3B,QAAMC,SAASJ,UAAAA;AACf,QAAMK,SAASJ,UAAAA;AACf,QAAMK,WAAWJ,YAAAA;AACjB,QAAMK,UAAUH,OAAOI,OAAOC,SAASC,UAAUC,MAAMC;AACvDb,YAAUQ,SAAS,iCAAA;;;;;;;;;AACnB,SAAOX,QAAQ,MAAA;AACb,UAAMiB,aAAa,IAAIf,eAAeS,OAAAA;AACtC,UAAMO,eAAejB,mBAAmBQ,MAAAA;AACxCQ,eAAWE,YAAYD,YAAAA;AACvB,WAAOD;EACT,GAAG;IAACN;IAASD;GAAS;AACxB;",
6
+ "names": ["EdgeHttpClient", "useMemo", "createEdgeIdentity", "EdgeHttpClient", "invariant", "useConfig", "useClient", "useIdentity", "useEdgeClient", "config", "client", "identity", "edgeUrl", "values", "runtime", "services", "edge", "url", "edgeClient", "edgeIdentity", "setIdentity"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"packages/sdk/react-edge-client/src/hooks/useEdgeClient.ts":{"bytes":2511,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/edge-client","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/react-edge-client/src/hooks/useQueue.ts":{"bytes":4072,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo-db","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/react-edge-client/src/hooks/index.ts":{"bytes":613,"imports":[{"path":"packages/sdk/react-edge-client/src/hooks/useEdgeClient.ts","kind":"import-statement","original":"./useEdgeClient"},{"path":"packages/sdk/react-edge-client/src/hooks/useQueue.ts","kind":"import-statement","original":"./useQueue"}],"format":"esm"},"packages/sdk/react-edge-client/src/index.ts":{"bytes":571,"imports":[{"path":"packages/sdk/react-edge-client/src/hooks/index.ts","kind":"import-statement","original":"./hooks"}],"format":"esm"}},"outputs":{"packages/sdk/react-edge-client/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3255},"packages/sdk/react-edge-client/dist/lib/browser/index.mjs":{"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/edge-client","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo-db","kind":"import-statement","external":true}],"exports":["useEdgeClient","useQueue"],"entryPoint":"packages/sdk/react-edge-client/src/index.ts","inputs":{"packages/sdk/react-edge-client/src/hooks/useEdgeClient.ts":{"bytesInOutput":662},"packages/sdk/react-edge-client/src/hooks/index.ts":{"bytesInOutput":0},"packages/sdk/react-edge-client/src/hooks/useQueue.ts":{"bytesInOutput":765},"packages/sdk/react-edge-client/src/index.ts":{"bytesInOutput":0}},"bytes":1620}}}
1
+ {"inputs":{"packages/sdk/react-edge-client/src/hooks/useEdgeClient.ts":{"bytes":3769,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client/edge","kind":"import-statement","external":true},{"path":"@dxos/edge-client","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/halo","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/react-edge-client/src/hooks/index.ts":{"bytes":521,"imports":[{"path":"packages/sdk/react-edge-client/src/hooks/useEdgeClient.ts","kind":"import-statement","original":"./useEdgeClient"}],"format":"esm"},"packages/sdk/react-edge-client/src/index.ts":{"bytes":679,"imports":[{"path":"@dxos/edge-client","kind":"import-statement","external":true},{"path":"packages/sdk/react-edge-client/src/hooks/index.ts","kind":"import-statement","original":"./hooks"}],"format":"esm"}},"outputs":{"packages/sdk/react-edge-client/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1973},"packages/sdk/react-edge-client/dist/lib/browser/index.mjs":{"imports":[{"path":"@dxos/edge-client","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client/edge","kind":"import-statement","external":true},{"path":"@dxos/edge-client","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/halo","kind":"import-statement","external":true}],"exports":["EdgeHttpClient","useEdgeClient"],"entryPoint":"packages/sdk/react-edge-client/src/index.ts","inputs":{"packages/sdk/react-edge-client/src/index.ts":{"bytesInOutput":71},"packages/sdk/react-edge-client/src/hooks/useEdgeClient.ts":{"bytesInOutput":1010},"packages/sdk/react-edge-client/src/hooks/index.ts":{"bytesInOutput":0}},"bytes":1290}}}
@@ -18,64 +18,45 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var node_exports = {};
20
20
  __export(node_exports, {
21
- useEdgeClient: () => useEdgeClient,
22
- useQueue: () => useQueue
21
+ EdgeHttpClient: () => import_edge_client.EdgeHttpClient,
22
+ useEdgeClient: () => useEdgeClient
23
23
  });
24
24
  module.exports = __toCommonJS(node_exports);
25
- var import_react = require("react");
26
25
  var import_edge_client = require("@dxos/edge-client");
26
+ var import_react = require("react");
27
+ var import_edge = require("@dxos/client/edge");
28
+ var import_edge_client2 = require("@dxos/edge-client");
27
29
  var import_invariant = require("@dxos/invariant");
28
30
  var import_react_client = require("@dxos/react-client");
29
- var import_react2 = require("react");
30
- var import_echo_db = require("@dxos/echo-db");
31
+ var import_halo = require("@dxos/react-client/halo");
31
32
  var __dxlog_file = "/home/runner/work/dxos/dxos/packages/sdk/react-edge-client/src/hooks/useEdgeClient.ts";
32
33
  var useEdgeClient = () => {
33
34
  const config = (0, import_react_client.useConfig)();
35
+ const client = (0, import_react_client.useClient)();
36
+ const identity = (0, import_halo.useIdentity)();
34
37
  const edgeUrl = config.values.runtime?.services?.edge?.url;
35
38
  (0, import_invariant.invariant)(edgeUrl, "EDGE services not configured.", {
36
39
  F: __dxlog_file,
37
- L: 18,
40
+ L: 22,
38
41
  S: void 0,
39
42
  A: [
40
43
  "edgeUrl",
41
44
  "'EDGE services not configured.'"
42
45
  ]
43
46
  });
44
- return (0, import_react.useMemo)(() => new import_edge_client.EdgeHttpClient(edgeUrl), [
45
- edgeUrl
46
- ]);
47
- };
48
- var MIN_POLL_INTERVAL = 1e3;
49
- var useQueue = (client, queueDxn, options = {}) => {
50
- const queue = (0, import_react2.useMemo)(() => queueDxn ? new import_echo_db.QueueImpl(client, queueDxn) : void 0, [
51
- client,
52
- queueDxn?.toString()
53
- ]);
54
- (0, import_react2.useEffect)(() => {
55
- void queue?.refresh();
56
- }, [
57
- queue
58
- ]);
59
- (0, import_react2.useEffect)(() => {
60
- let timeout;
61
- if (options.pollInterval) {
62
- const poll = () => {
63
- void queue?.refresh().finally(() => {
64
- timeout = setTimeout(poll, Math.max(options.pollInterval ?? 0, MIN_POLL_INTERVAL));
65
- });
66
- };
67
- poll();
68
- }
69
- return () => clearTimeout(timeout);
47
+ return (0, import_react.useMemo)(() => {
48
+ const edgeClient = new import_edge_client2.EdgeHttpClient(edgeUrl);
49
+ const edgeIdentity = (0, import_edge.createEdgeIdentity)(client);
50
+ edgeClient.setIdentity(edgeIdentity);
51
+ return edgeClient;
70
52
  }, [
71
- queue,
72
- options.pollInterval
53
+ edgeUrl,
54
+ identity
73
55
  ]);
74
- return queue;
75
56
  };
76
57
  // Annotate the CommonJS export names for ESM import in node:
77
58
  0 && (module.exports = {
78
- useEdgeClient,
79
- useQueue
59
+ EdgeHttpClient,
60
+ useEdgeClient
80
61
  });
81
62
  //# sourceMappingURL=index.cjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/hooks/useEdgeClient.ts", "../../../src/hooks/useQueue.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { EdgeHttpClient } from '@dxos/edge-client';\nimport { invariant } from '@dxos/invariant';\nimport { useConfig } from '@dxos/react-client';\n\n/**\n * Client for edge services.\n */\n// TODO(mykola): This should be done through client-service RPC.\nexport const useEdgeClient = () => {\n const config = useConfig();\n const edgeUrl = config.values.runtime?.services?.edge?.url;\n invariant(edgeUrl, 'EDGE services not configured.');\n return useMemo(() => new EdgeHttpClient(edgeUrl), [edgeUrl]);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect, useMemo } from 'react';\n\nimport type { Queue } from '@dxos/echo-db';\nimport { QueueImpl } from '@dxos/echo-db';\nimport { type EdgeHttpClient } from '@dxos/edge-client';\nimport { type DXN } from '@dxos/keys';\n\nconst MIN_POLL_INTERVAL = 1_000;\n\nexport type UseQueueOptions = {\n pollInterval?: number;\n};\n\n/**\n * Polls the given Edge queue.\n */\n// TODO(burdon): Replace polling with socket?\nexport const useQueue = <T>(\n client: EdgeHttpClient,\n queueDxn?: DXN,\n options: UseQueueOptions = {},\n): Queue<T> | undefined => {\n const queue = useMemo<QueueImpl<T> | undefined>(\n () => (queueDxn ? new QueueImpl(client, queueDxn) : undefined),\n [client, queueDxn?.toString()],\n );\n\n useEffect(() => {\n void queue?.refresh();\n }, [queue]);\n\n useEffect(() => {\n let timeout: NodeJS.Timeout;\n if (options.pollInterval) {\n const poll = () => {\n void queue?.refresh().finally(() => {\n timeout = setTimeout(poll, Math.max(options.pollInterval ?? 0, MIN_POLL_INTERVAL));\n });\n };\n\n poll();\n }\n\n return () => clearTimeout(timeout);\n }, [queue, options.pollInterval]);\n\n return queue;\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAIA,mBAAwB;AAExB,yBAA+B;AAC/B,uBAA0B;AAC1B,0BAA0B;ACJ1B,IAAAA,gBAAmC;AAGnC,qBAA0B;;ADOnB,IAAMC,gBAAgB,MAAA;AAC3B,QAAMC,aAASC,+BAAAA;AACf,QAAMC,UAAUF,OAAOG,OAAOC,SAASC,UAAUC,MAAMC;AACvDC,kCAAUN,SAAS,iCAAA;;;;;;;;;AACnB,aAAOO,sBAAQ,MAAM,IAAIC,kCAAeR,OAAAA,GAAU;IAACA;GAAQ;AAC7D;ACRA,IAAMS,oBAAoB;AAUnB,IAAMC,WAAW,CACtBC,QACAC,UACAC,UAA2B,CAAC,MAAC;AAE7B,QAAMC,YAAQP,cAAAA,SACZ,MAAOK,WAAW,IAAIG,yBAAUJ,QAAQC,QAAAA,IAAYI,QACpD;IAACL;IAAQC,UAAUK,SAAAA;GAAW;AAGhCC,+BAAU,MAAA;AACR,SAAKJ,OAAOK,QAAAA;EACd,GAAG;IAACL;GAAM;AAEVI,+BAAU,MAAA;AACR,QAAIE;AACJ,QAAIP,QAAQQ,cAAc;AACxB,YAAMC,OAAO,MAAA;AACX,aAAKR,OAAOK,QAAAA,EAAUI,QAAQ,MAAA;AAC5BH,oBAAUI,WAAWF,MAAMG,KAAKC,IAAIb,QAAQQ,gBAAgB,GAAGZ,iBAAAA,CAAAA;QACjE,CAAA;MACF;AAEAa,WAAAA;IACF;AAEA,WAAO,MAAMK,aAAaP,OAAAA;EAC5B,GAAG;IAACN;IAAOD,QAAQQ;GAAa;AAEhC,SAAOP;AACT;",
6
- "names": ["import_react", "useEdgeClient", "config", "useConfig", "edgeUrl", "values", "runtime", "services", "edge", "url", "invariant", "useMemo", "EdgeHttpClient", "MIN_POLL_INTERVAL", "useQueue", "client", "queueDxn", "options", "queue", "QueueImpl", "undefined", "toString", "useEffect", "refresh", "timeout", "pollInterval", "poll", "finally", "setTimeout", "Math", "max", "clearTimeout"]
3
+ "sources": ["../../../src/index.ts", "../../../src/hooks/useEdgeClient.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nexport { EdgeHttpClient } from '@dxos/edge-client';\nexport * from './hooks';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { createEdgeIdentity } from '@dxos/client/edge';\nimport { EdgeHttpClient } from '@dxos/edge-client';\nimport { invariant } from '@dxos/invariant';\nimport { useConfig, useClient } from '@dxos/react-client';\nimport { useIdentity } from '@dxos/react-client/halo';\n\n/**\n * Client for edge services.\n */\n// TODO(mykola): This should be done through client-service RPC.\nexport const useEdgeClient = () => {\n const config = useConfig();\n const client = useClient();\n const identity = useIdentity();\n const edgeUrl = config.values.runtime?.services?.edge?.url;\n invariant(edgeUrl, 'EDGE services not configured.');\n return useMemo(() => {\n const edgeClient = new EdgeHttpClient(edgeUrl);\n const edgeIdentity = createEdgeIdentity(client);\n edgeClient.setIdentity(edgeIdentity);\n return edgeClient;\n }, [edgeUrl, identity]);\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAIA,yBAA+B;ACA/B,mBAAwB;AAExB,kBAAmC;AACnC,IAAAA,sBAA+B;AAC/B,uBAA0B;AAC1B,0BAAqC;AACrC,kBAA4B;;AAMrB,IAAMC,gBAAgB,MAAA;AAC3B,QAAMC,aAASC,+BAAAA;AACf,QAAMC,aAASC,+BAAAA;AACf,QAAMC,eAAWC,yBAAAA;AACjB,QAAMC,UAAUN,OAAOO,OAAOC,SAASC,UAAUC,MAAMC;AACvDC,kCAAUN,SAAS,iCAAA;;;;;;;;;AACnB,aAAOO,sBAAQ,MAAA;AACb,UAAMC,aAAa,IAAIC,mCAAeT,OAAAA;AACtC,UAAMU,mBAAeC,gCAAmBf,MAAAA;AACxCY,eAAWI,YAAYF,YAAAA;AACvB,WAAOF;EACT,GAAG;IAACR;IAASF;GAAS;AACxB;",
6
+ "names": ["import_edge_client", "useEdgeClient", "config", "useConfig", "client", "useClient", "identity", "useIdentity", "edgeUrl", "values", "runtime", "services", "edge", "url", "invariant", "useMemo", "edgeClient", "EdgeHttpClient", "edgeIdentity", "createEdgeIdentity", "setIdentity"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"packages/sdk/react-edge-client/src/hooks/useEdgeClient.ts":{"bytes":2511,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/edge-client","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/react-edge-client/src/hooks/useQueue.ts":{"bytes":4072,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo-db","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/react-edge-client/src/hooks/index.ts":{"bytes":613,"imports":[{"path":"packages/sdk/react-edge-client/src/hooks/useEdgeClient.ts","kind":"import-statement","original":"./useEdgeClient"},{"path":"packages/sdk/react-edge-client/src/hooks/useQueue.ts","kind":"import-statement","original":"./useQueue"}],"format":"esm"},"packages/sdk/react-edge-client/src/index.ts":{"bytes":571,"imports":[{"path":"packages/sdk/react-edge-client/src/hooks/index.ts","kind":"import-statement","original":"./hooks"}],"format":"esm"}},"outputs":{"packages/sdk/react-edge-client/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3255},"packages/sdk/react-edge-client/dist/lib/node/index.cjs":{"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/edge-client","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo-db","kind":"import-statement","external":true}],"exports":["useEdgeClient","useQueue"],"entryPoint":"packages/sdk/react-edge-client/src/index.ts","inputs":{"packages/sdk/react-edge-client/src/hooks/useEdgeClient.ts":{"bytesInOutput":662},"packages/sdk/react-edge-client/src/hooks/index.ts":{"bytesInOutput":0},"packages/sdk/react-edge-client/src/hooks/useQueue.ts":{"bytesInOutput":765},"packages/sdk/react-edge-client/src/index.ts":{"bytesInOutput":0}},"bytes":1620}}}
1
+ {"inputs":{"packages/sdk/react-edge-client/src/hooks/useEdgeClient.ts":{"bytes":3769,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client/edge","kind":"import-statement","external":true},{"path":"@dxos/edge-client","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/halo","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/react-edge-client/src/hooks/index.ts":{"bytes":521,"imports":[{"path":"packages/sdk/react-edge-client/src/hooks/useEdgeClient.ts","kind":"import-statement","original":"./useEdgeClient"}],"format":"esm"},"packages/sdk/react-edge-client/src/index.ts":{"bytes":679,"imports":[{"path":"@dxos/edge-client","kind":"import-statement","external":true},{"path":"packages/sdk/react-edge-client/src/hooks/index.ts","kind":"import-statement","original":"./hooks"}],"format":"esm"}},"outputs":{"packages/sdk/react-edge-client/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1973},"packages/sdk/react-edge-client/dist/lib/node/index.cjs":{"imports":[{"path":"@dxos/edge-client","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client/edge","kind":"import-statement","external":true},{"path":"@dxos/edge-client","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/halo","kind":"import-statement","external":true}],"exports":["EdgeHttpClient","useEdgeClient"],"entryPoint":"packages/sdk/react-edge-client/src/index.ts","inputs":{"packages/sdk/react-edge-client/src/index.ts":{"bytesInOutput":71},"packages/sdk/react-edge-client/src/hooks/useEdgeClient.ts":{"bytesInOutput":1010},"packages/sdk/react-edge-client/src/hooks/index.ts":{"bytesInOutput":0}},"bytes":1290}}}
@@ -1,61 +1,42 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
 
3
+ // packages/sdk/react-edge-client/src/index.ts
4
+ import { EdgeHttpClient as EdgeHttpClient2 } from "@dxos/edge-client";
5
+
3
6
  // packages/sdk/react-edge-client/src/hooks/useEdgeClient.ts
4
7
  import { useMemo } from "react";
8
+ import { createEdgeIdentity } from "@dxos/client/edge";
5
9
  import { EdgeHttpClient } from "@dxos/edge-client";
6
10
  import { invariant } from "@dxos/invariant";
7
- import { useConfig } from "@dxos/react-client";
11
+ import { useConfig, useClient } from "@dxos/react-client";
12
+ import { useIdentity } from "@dxos/react-client/halo";
8
13
  var __dxlog_file = "/home/runner/work/dxos/dxos/packages/sdk/react-edge-client/src/hooks/useEdgeClient.ts";
9
14
  var useEdgeClient = () => {
10
15
  const config = useConfig();
16
+ const client = useClient();
17
+ const identity = useIdentity();
11
18
  const edgeUrl = config.values.runtime?.services?.edge?.url;
12
19
  invariant(edgeUrl, "EDGE services not configured.", {
13
20
  F: __dxlog_file,
14
- L: 18,
21
+ L: 22,
15
22
  S: void 0,
16
23
  A: [
17
24
  "edgeUrl",
18
25
  "'EDGE services not configured.'"
19
26
  ]
20
27
  });
21
- return useMemo(() => new EdgeHttpClient(edgeUrl), [
22
- edgeUrl
23
- ]);
24
- };
25
-
26
- // packages/sdk/react-edge-client/src/hooks/useQueue.ts
27
- import { useEffect, useMemo as useMemo2 } from "react";
28
- import { QueueImpl } from "@dxos/echo-db";
29
- var MIN_POLL_INTERVAL = 1e3;
30
- var useQueue = (client, queueDxn, options = {}) => {
31
- const queue = useMemo2(() => queueDxn ? new QueueImpl(client, queueDxn) : void 0, [
32
- client,
33
- queueDxn?.toString()
34
- ]);
35
- useEffect(() => {
36
- void queue?.refresh();
37
- }, [
38
- queue
39
- ]);
40
- useEffect(() => {
41
- let timeout;
42
- if (options.pollInterval) {
43
- const poll = () => {
44
- void queue?.refresh().finally(() => {
45
- timeout = setTimeout(poll, Math.max(options.pollInterval ?? 0, MIN_POLL_INTERVAL));
46
- });
47
- };
48
- poll();
49
- }
50
- return () => clearTimeout(timeout);
28
+ return useMemo(() => {
29
+ const edgeClient = new EdgeHttpClient(edgeUrl);
30
+ const edgeIdentity = createEdgeIdentity(client);
31
+ edgeClient.setIdentity(edgeIdentity);
32
+ return edgeClient;
51
33
  }, [
52
- queue,
53
- options.pollInterval
34
+ edgeUrl,
35
+ identity
54
36
  ]);
55
- return queue;
56
37
  };
57
38
  export {
58
- useEdgeClient,
59
- useQueue
39
+ EdgeHttpClient2 as EdgeHttpClient,
40
+ useEdgeClient
60
41
  };
61
42
  //# sourceMappingURL=index.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/hooks/useEdgeClient.ts", "../../../src/hooks/useQueue.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { EdgeHttpClient } from '@dxos/edge-client';\nimport { invariant } from '@dxos/invariant';\nimport { useConfig } from '@dxos/react-client';\n\n/**\n * Client for edge services.\n */\n// TODO(mykola): This should be done through client-service RPC.\nexport const useEdgeClient = () => {\n const config = useConfig();\n const edgeUrl = config.values.runtime?.services?.edge?.url;\n invariant(edgeUrl, 'EDGE services not configured.');\n return useMemo(() => new EdgeHttpClient(edgeUrl), [edgeUrl]);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect, useMemo } from 'react';\n\nimport type { Queue } from '@dxos/echo-db';\nimport { QueueImpl } from '@dxos/echo-db';\nimport { type EdgeHttpClient } from '@dxos/edge-client';\nimport { type DXN } from '@dxos/keys';\n\nconst MIN_POLL_INTERVAL = 1_000;\n\nexport type UseQueueOptions = {\n pollInterval?: number;\n};\n\n/**\n * Polls the given Edge queue.\n */\n// TODO(burdon): Replace polling with socket?\nexport const useQueue = <T>(\n client: EdgeHttpClient,\n queueDxn?: DXN,\n options: UseQueueOptions = {},\n): Queue<T> | undefined => {\n const queue = useMemo<QueueImpl<T> | undefined>(\n () => (queueDxn ? new QueueImpl(client, queueDxn) : undefined),\n [client, queueDxn?.toString()],\n );\n\n useEffect(() => {\n void queue?.refresh();\n }, [queue]);\n\n useEffect(() => {\n let timeout: NodeJS.Timeout;\n if (options.pollInterval) {\n const poll = () => {\n void queue?.refresh().finally(() => {\n timeout = setTimeout(poll, Math.max(options.pollInterval ?? 0, MIN_POLL_INTERVAL));\n });\n };\n\n poll();\n }\n\n return () => clearTimeout(timeout);\n }, [queue, options.pollInterval]);\n\n return queue;\n};\n"],
5
- "mappings": ";;;AAIA,SAASA,eAAe;AAExB,SAASC,sBAAsB;AAC/B,SAASC,iBAAiB;AAC1B,SAASC,iBAAiB;;AAMnB,IAAMC,gBAAgB,MAAA;AAC3B,QAAMC,SAASF,UAAAA;AACf,QAAMG,UAAUD,OAAOE,OAAOC,SAASC,UAAUC,MAAMC;AACvDT,YAAUI,SAAS,iCAAA;;;;;;;;;AACnB,SAAON,QAAQ,MAAM,IAAIC,eAAeK,OAAAA,GAAU;IAACA;GAAQ;AAC7D;;;ACfA,SAASM,WAAWC,WAAAA,gBAAe;AAGnC,SAASC,iBAAiB;AAI1B,IAAMC,oBAAoB;AAUnB,IAAMC,WAAW,CACtBC,QACAC,UACAC,UAA2B,CAAC,MAAC;AAE7B,QAAMC,QAAQC,SACZ,MAAOH,WAAW,IAAII,UAAUL,QAAQC,QAAAA,IAAYK,QACpD;IAACN;IAAQC,UAAUM,SAAAA;GAAW;AAGhCC,YAAU,MAAA;AACR,SAAKL,OAAOM,QAAAA;EACd,GAAG;IAACN;GAAM;AAEVK,YAAU,MAAA;AACR,QAAIE;AACJ,QAAIR,QAAQS,cAAc;AACxB,YAAMC,OAAO,MAAA;AACX,aAAKT,OAAOM,QAAAA,EAAUI,QAAQ,MAAA;AAC5BH,oBAAUI,WAAWF,MAAMG,KAAKC,IAAId,QAAQS,gBAAgB,GAAGb,iBAAAA,CAAAA;QACjE,CAAA;MACF;AAEAc,WAAAA;IACF;AAEA,WAAO,MAAMK,aAAaP,OAAAA;EAC5B,GAAG;IAACP;IAAOD,QAAQS;GAAa;AAEhC,SAAOR;AACT;",
6
- "names": ["useMemo", "EdgeHttpClient", "invariant", "useConfig", "useEdgeClient", "config", "edgeUrl", "values", "runtime", "services", "edge", "url", "useEffect", "useMemo", "QueueImpl", "MIN_POLL_INTERVAL", "useQueue", "client", "queueDxn", "options", "queue", "useMemo", "QueueImpl", "undefined", "toString", "useEffect", "refresh", "timeout", "pollInterval", "poll", "finally", "setTimeout", "Math", "max", "clearTimeout"]
3
+ "sources": ["../../../src/index.ts", "../../../src/hooks/useEdgeClient.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nexport { EdgeHttpClient } from '@dxos/edge-client';\nexport * from './hooks';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { createEdgeIdentity } from '@dxos/client/edge';\nimport { EdgeHttpClient } from '@dxos/edge-client';\nimport { invariant } from '@dxos/invariant';\nimport { useConfig, useClient } from '@dxos/react-client';\nimport { useIdentity } from '@dxos/react-client/halo';\n\n/**\n * Client for edge services.\n */\n// TODO(mykola): This should be done through client-service RPC.\nexport const useEdgeClient = () => {\n const config = useConfig();\n const client = useClient();\n const identity = useIdentity();\n const edgeUrl = config.values.runtime?.services?.edge?.url;\n invariant(edgeUrl, 'EDGE services not configured.');\n return useMemo(() => {\n const edgeClient = new EdgeHttpClient(edgeUrl);\n const edgeIdentity = createEdgeIdentity(client);\n edgeClient.setIdentity(edgeIdentity);\n return edgeClient;\n }, [edgeUrl, identity]);\n};\n"],
5
+ "mappings": ";;;AAIA,SAASA,kBAAAA,uBAAsB;;;ACA/B,SAASC,eAAe;AAExB,SAASC,0BAA0B;AACnC,SAASC,sBAAsB;AAC/B,SAASC,iBAAiB;AAC1B,SAASC,WAAWC,iBAAiB;AACrC,SAASC,mBAAmB;;AAMrB,IAAMC,gBAAgB,MAAA;AAC3B,QAAMC,SAASJ,UAAAA;AACf,QAAMK,SAASJ,UAAAA;AACf,QAAMK,WAAWJ,YAAAA;AACjB,QAAMK,UAAUH,OAAOI,OAAOC,SAASC,UAAUC,MAAMC;AACvDb,YAAUQ,SAAS,iCAAA;;;;;;;;;AACnB,SAAOX,QAAQ,MAAA;AACb,UAAMiB,aAAa,IAAIf,eAAeS,OAAAA;AACtC,UAAMO,eAAejB,mBAAmBQ,MAAAA;AACxCQ,eAAWE,YAAYD,YAAAA;AACvB,WAAOD;EACT,GAAG;IAACN;IAASD;GAAS;AACxB;",
6
+ "names": ["EdgeHttpClient", "useMemo", "createEdgeIdentity", "EdgeHttpClient", "invariant", "useConfig", "useClient", "useIdentity", "useEdgeClient", "config", "client", "identity", "edgeUrl", "values", "runtime", "services", "edge", "url", "edgeClient", "edgeIdentity", "setIdentity"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"packages/sdk/react-edge-client/src/hooks/useEdgeClient.ts":{"bytes":2511,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/edge-client","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/react-edge-client/src/hooks/useQueue.ts":{"bytes":4072,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo-db","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/react-edge-client/src/hooks/index.ts":{"bytes":613,"imports":[{"path":"packages/sdk/react-edge-client/src/hooks/useEdgeClient.ts","kind":"import-statement","original":"./useEdgeClient"},{"path":"packages/sdk/react-edge-client/src/hooks/useQueue.ts","kind":"import-statement","original":"./useQueue"}],"format":"esm"},"packages/sdk/react-edge-client/src/index.ts":{"bytes":571,"imports":[{"path":"packages/sdk/react-edge-client/src/hooks/index.ts","kind":"import-statement","original":"./hooks"}],"format":"esm"}},"outputs":{"packages/sdk/react-edge-client/dist/lib/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3257},"packages/sdk/react-edge-client/dist/lib/node-esm/index.mjs":{"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/edge-client","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo-db","kind":"import-statement","external":true}],"exports":["useEdgeClient","useQueue"],"entryPoint":"packages/sdk/react-edge-client/src/index.ts","inputs":{"packages/sdk/react-edge-client/src/hooks/useEdgeClient.ts":{"bytesInOutput":662},"packages/sdk/react-edge-client/src/hooks/index.ts":{"bytesInOutput":0},"packages/sdk/react-edge-client/src/hooks/useQueue.ts":{"bytesInOutput":765},"packages/sdk/react-edge-client/src/index.ts":{"bytesInOutput":0}},"bytes":1713}}}
1
+ {"inputs":{"packages/sdk/react-edge-client/src/hooks/useEdgeClient.ts":{"bytes":3769,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client/edge","kind":"import-statement","external":true},{"path":"@dxos/edge-client","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/halo","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/react-edge-client/src/hooks/index.ts":{"bytes":521,"imports":[{"path":"packages/sdk/react-edge-client/src/hooks/useEdgeClient.ts","kind":"import-statement","original":"./useEdgeClient"}],"format":"esm"},"packages/sdk/react-edge-client/src/index.ts":{"bytes":679,"imports":[{"path":"@dxos/edge-client","kind":"import-statement","external":true},{"path":"packages/sdk/react-edge-client/src/hooks/index.ts","kind":"import-statement","original":"./hooks"}],"format":"esm"}},"outputs":{"packages/sdk/react-edge-client/dist/lib/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1975},"packages/sdk/react-edge-client/dist/lib/node-esm/index.mjs":{"imports":[{"path":"@dxos/edge-client","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client/edge","kind":"import-statement","external":true},{"path":"@dxos/edge-client","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/halo","kind":"import-statement","external":true}],"exports":["EdgeHttpClient","useEdgeClient"],"entryPoint":"packages/sdk/react-edge-client/src/index.ts","inputs":{"packages/sdk/react-edge-client/src/index.ts":{"bytesInOutput":71},"packages/sdk/react-edge-client/src/hooks/useEdgeClient.ts":{"bytesInOutput":1010},"packages/sdk/react-edge-client/src/hooks/index.ts":{"bytesInOutput":0}},"bytes":1383}}}
@@ -1,3 +1,2 @@
1
1
  export * from './useEdgeClient';
2
- export * from './useQueue';
3
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/hooks/index.ts"],"names":[],"mappings":"AAIA,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/hooks/index.ts"],"names":[],"mappings":"AAIA,cAAc,iBAAiB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useEdgeClient.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useEdgeClient.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAInD;;GAEG;AAEH,eAAO,MAAM,aAAa,sBAKzB,CAAC"}
1
+ {"version":3,"file":"useEdgeClient.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useEdgeClient.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAKnD;;GAEG;AAEH,eAAO,MAAM,aAAa,sBAYzB,CAAC"}
@@ -1,3 +1,3 @@
1
- export { type EdgeHttpClient } from '@dxos/edge-client';
1
+ export { EdgeHttpClient } from '@dxos/edge-client';
2
2
  export * from './hooks';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,cAAc,SAAS,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/react-edge-client",
3
- "version": "0.8.1-main.ba2dec9",
3
+ "version": "0.8.1-staging.31c3ee1",
4
4
  "description": "React hooks for the Edge Client.",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -20,13 +20,15 @@
20
20
  "src"
21
21
  ],
22
22
  "dependencies": {
23
- "@dxos/echo-signals": "0.8.1-main.ba2dec9",
24
- "@dxos/echo-db": "0.8.1-main.ba2dec9",
25
- "@dxos/edge-client": "0.8.1-main.ba2dec9",
26
- "@dxos/invariant": "0.8.1-main.ba2dec9",
27
- "@dxos/log": "0.8.1-main.ba2dec9",
28
- "@dxos/react-client": "0.8.1-main.ba2dec9",
29
- "@dxos/util": "0.8.1-main.ba2dec9"
23
+ "@dxos/client": "0.8.1-staging.31c3ee1",
24
+ "@dxos/debug": "0.8.1-staging.31c3ee1",
25
+ "@dxos/echo-db": "0.8.1-staging.31c3ee1",
26
+ "@dxos/edge-client": "0.8.1-staging.31c3ee1",
27
+ "@dxos/invariant": "0.8.1-staging.31c3ee1",
28
+ "@dxos/echo-signals": "0.8.1-staging.31c3ee1",
29
+ "@dxos/log": "0.8.1-staging.31c3ee1",
30
+ "@dxos/react-client": "0.8.1-staging.31c3ee1",
31
+ "@dxos/util": "0.8.1-staging.31c3ee1"
30
32
  },
31
33
  "devDependencies": {
32
34
  "react": "~18.2.0",
@@ -3,4 +3,3 @@
3
3
  //
4
4
 
5
5
  export * from './useEdgeClient';
6
- export * from './useQueue';
@@ -4,9 +4,11 @@
4
4
 
5
5
  import { useMemo } from 'react';
6
6
 
7
+ import { createEdgeIdentity } from '@dxos/client/edge';
7
8
  import { EdgeHttpClient } from '@dxos/edge-client';
8
9
  import { invariant } from '@dxos/invariant';
9
- import { useConfig } from '@dxos/react-client';
10
+ import { useConfig, useClient } from '@dxos/react-client';
11
+ import { useIdentity } from '@dxos/react-client/halo';
10
12
 
11
13
  /**
12
14
  * Client for edge services.
@@ -14,7 +16,14 @@ import { useConfig } from '@dxos/react-client';
14
16
  // TODO(mykola): This should be done through client-service RPC.
15
17
  export const useEdgeClient = () => {
16
18
  const config = useConfig();
19
+ const client = useClient();
20
+ const identity = useIdentity();
17
21
  const edgeUrl = config.values.runtime?.services?.edge?.url;
18
22
  invariant(edgeUrl, 'EDGE services not configured.');
19
- return useMemo(() => new EdgeHttpClient(edgeUrl), [edgeUrl]);
23
+ return useMemo(() => {
24
+ const edgeClient = new EdgeHttpClient(edgeUrl);
25
+ const edgeIdentity = createEdgeIdentity(client);
26
+ edgeClient.setIdentity(edgeIdentity);
27
+ return edgeClient;
28
+ }, [edgeUrl, identity]);
20
29
  };
package/src/index.ts CHANGED
@@ -2,5 +2,5 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- export { type EdgeHttpClient } from '@dxos/edge-client';
5
+ export { EdgeHttpClient } from '@dxos/edge-client';
6
6
  export * from './hooks';
@@ -1,11 +0,0 @@
1
- import type { Queue } from '@dxos/echo-db';
2
- import { type EdgeHttpClient } from '@dxos/edge-client';
3
- import { type DXN } from '@dxos/keys';
4
- export type UseQueueOptions = {
5
- pollInterval?: number;
6
- };
7
- /**
8
- * Polls the given Edge queue.
9
- */
10
- export declare const useQueue: <T>(client: EdgeHttpClient, queueDxn?: DXN, options?: UseQueueOptions) => Queue<T> | undefined;
11
- //# sourceMappingURL=useQueue.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useQueue.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useQueue.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,YAAY,CAAC;AAItC,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;GAEG;AAEH,eAAO,MAAM,QAAQ,GAAI,CAAC,UAChB,cAAc,aACX,GAAG,YACL,eAAe,KACvB,KAAK,CAAC,CAAC,CAAC,GAAG,SA0Bb,CAAC"}
@@ -1,52 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { useEffect, useMemo } from 'react';
6
-
7
- import type { Queue } from '@dxos/echo-db';
8
- import { QueueImpl } from '@dxos/echo-db';
9
- import { type EdgeHttpClient } from '@dxos/edge-client';
10
- import { type DXN } from '@dxos/keys';
11
-
12
- const MIN_POLL_INTERVAL = 1_000;
13
-
14
- export type UseQueueOptions = {
15
- pollInterval?: number;
16
- };
17
-
18
- /**
19
- * Polls the given Edge queue.
20
- */
21
- // TODO(burdon): Replace polling with socket?
22
- export const useQueue = <T>(
23
- client: EdgeHttpClient,
24
- queueDxn?: DXN,
25
- options: UseQueueOptions = {},
26
- ): Queue<T> | undefined => {
27
- const queue = useMemo<QueueImpl<T> | undefined>(
28
- () => (queueDxn ? new QueueImpl(client, queueDxn) : undefined),
29
- [client, queueDxn?.toString()],
30
- );
31
-
32
- useEffect(() => {
33
- void queue?.refresh();
34
- }, [queue]);
35
-
36
- useEffect(() => {
37
- let timeout: NodeJS.Timeout;
38
- if (options.pollInterval) {
39
- const poll = () => {
40
- void queue?.refresh().finally(() => {
41
- timeout = setTimeout(poll, Math.max(options.pollInterval ?? 0, MIN_POLL_INTERVAL));
42
- });
43
- };
44
-
45
- poll();
46
- }
47
-
48
- return () => clearTimeout(timeout);
49
- }, [queue, options.pollInterval]);
50
-
51
- return queue;
52
- };