@dxos/plugin-client 0.6.12 → 0.6.13-main.09887cd
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/lib/browser/{chunk-3GFJ7SEI.mjs → chunk-GOCCTV5N.mjs} +1 -1
- package/dist/lib/browser/chunk-GOCCTV5N.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +9 -17
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/meta.mjs +1 -1
- package/dist/lib/node/{chunk-2E5ZNH3H.cjs → chunk-2SLZEXNL.cjs} +4 -4
- package/dist/lib/node/chunk-2SLZEXNL.cjs.map +7 -0
- package/dist/lib/node/index.cjs +20 -28
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/meta.cjs +4 -4
- package/dist/lib/node/meta.cjs.map +1 -1
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node-esm/chunk-HMR23AKU.mjs +23 -0
- package/dist/lib/node-esm/chunk-HMR23AKU.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +207 -0
- package/dist/lib/node-esm/index.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -0
- package/dist/lib/node-esm/meta.mjs +12 -0
- package/dist/lib/node-esm/meta.mjs.map +7 -0
- package/dist/types/src/ClientPlugin.d.ts +1 -1
- package/dist/types/src/ClientPlugin.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts.map +1 -1
- package/package.json +20 -17
- package/src/ClientPlugin.tsx +6 -13
- package/src/meta.ts +3 -1
- package/dist/lib/browser/chunk-3GFJ7SEI.mjs.map +0 -7
- package/dist/lib/node/chunk-2E5ZNH3H.cjs.map +0 -7
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/meta.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const CLIENT_PLUGIN = 'dxos.org/plugin/client';\n\nexport default {\n id: CLIENT_PLUGIN,\n name: 'Client',\n} satisfies PluginMeta;\n\nconst CLIENT_ACTION = `${CLIENT_PLUGIN}/action`;\nexport enum ClientAction {\n OPEN_SHELL = `${CLIENT_ACTION}/SHELL`,\n CREATE_IDENTITY = `${CLIENT_ACTION}/CREATE_IDENTITY`,\n JOIN_IDENTITY = `${CLIENT_ACTION}/JOIN_IDENTITY`,\n SHARE_IDENTITY = `${CLIENT_ACTION}/SHARE_IDENTITY`,\n}\n"],
|
|
5
|
+
"mappings": ";AAMO,IAAMA,gBAAgB;AAE7B,IAAA,eAAe;EACbC,IAAID;EACJE,MAAM;AACR;AAEA,IAAMC,gBAAgB,GAAGH,aAAAA;;UACbI,eAAAA;8CACG,GAAGD,aAAAA,QAAqB,IAAA;mDACnB,GAAGA,aAAAA,kBAA+B,IAAA;iDACpC,GAAGA,aAAAA,gBAA6B,IAAA;kDAC/B,GAAGA,aAAAA,iBAA8B,IAAA;GAJxCC,iBAAAA,eAAAA,CAAAA,EAAAA;",
|
|
6
|
+
"names": ["CLIENT_PLUGIN", "id", "name", "CLIENT_ACTION", "ClientAction"]
|
|
7
|
+
}
|
|
@@ -2,17 +2,16 @@ import {
|
|
|
2
2
|
CLIENT_PLUGIN,
|
|
3
3
|
ClientAction,
|
|
4
4
|
meta_default
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-GOCCTV5N.mjs";
|
|
6
6
|
|
|
7
7
|
// packages/plugins/plugin-client/src/ClientPlugin.tsx
|
|
8
|
-
import { AddressBook } from "@phosphor-icons/react";
|
|
9
8
|
import React from "react";
|
|
10
9
|
import { filterPlugins, parseIntentPlugin, resolvePlugin } from "@dxos/app-framework";
|
|
11
10
|
import { Config, Defaults, Envs, Local, Storage } from "@dxos/config";
|
|
12
|
-
import {
|
|
11
|
+
import { registerSignalsRuntime } from "@dxos/echo-signals/react";
|
|
13
12
|
import { log } from "@dxos/log";
|
|
14
13
|
import { createExtension } from "@dxos/plugin-graph";
|
|
15
|
-
import { Client,
|
|
14
|
+
import { Client, ClientProvider } from "@dxos/react-client";
|
|
16
15
|
|
|
17
16
|
// packages/plugins/plugin-client/src/translations.ts
|
|
18
17
|
var translations_default = [
|
|
@@ -30,7 +29,7 @@ var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-client/s
|
|
|
30
29
|
var parseClientPlugin = (plugin) => (plugin?.provides).client instanceof Client ? plugin : void 0;
|
|
31
30
|
var parseSchemaPlugin = (plugin) => Array.isArray(plugin?.provides.echo?.schema) ? plugin : void 0;
|
|
32
31
|
var ClientPlugin = ({ appKey, onClientInitialized, onReady, ...options }) => {
|
|
33
|
-
|
|
32
|
+
registerSignalsRuntime();
|
|
34
33
|
let client;
|
|
35
34
|
let error = null;
|
|
36
35
|
return {
|
|
@@ -56,15 +55,9 @@ var ClientPlugin = ({ appKey, onClientInitialized, onReady, ...options }) => {
|
|
|
56
55
|
}
|
|
57
56
|
return {
|
|
58
57
|
client,
|
|
59
|
-
context: ({ children }) => {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
value: {
|
|
63
|
-
client,
|
|
64
|
-
status
|
|
65
|
-
}
|
|
66
|
-
}, children);
|
|
67
|
-
}
|
|
58
|
+
context: ({ children }) => /* @__PURE__ */ React.createElement(ClientProvider, {
|
|
59
|
+
client
|
|
60
|
+
}, children)
|
|
68
61
|
};
|
|
69
62
|
},
|
|
70
63
|
ready: async (plugins) => {
|
|
@@ -77,7 +70,7 @@ var ClientPlugin = ({ appKey, onClientInitialized, onReady, ...options }) => {
|
|
|
77
70
|
id: plugin.meta.id
|
|
78
71
|
}, {
|
|
79
72
|
F: __dxlog_file,
|
|
80
|
-
L:
|
|
73
|
+
L: 112,
|
|
81
74
|
S: void 0,
|
|
82
75
|
C: (f, a) => f(...a)
|
|
83
76
|
});
|
|
@@ -114,8 +107,7 @@ var ClientPlugin = ({ appKey, onClientInitialized, onReady, ...options }) => {
|
|
|
114
107
|
ns: CLIENT_PLUGIN
|
|
115
108
|
}
|
|
116
109
|
],
|
|
117
|
-
icon:
|
|
118
|
-
iconSymbol: "ph--address-book--regular",
|
|
110
|
+
icon: "ph--address-book--regular",
|
|
119
111
|
keyBinding: {
|
|
120
112
|
macos: "meta+shift+.",
|
|
121
113
|
// TODO(wittjosiah): Test on windows to see if it behaves the same as linux.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/ClientPlugin.tsx", "../../../src/translations.ts", "../../../src/index.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport {
|
|
5
|
-
"mappings": ";;;;;;;
|
|
6
|
-
"names": ["
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Schema as S } from '@effect/schema';\nimport React from 'react';\n\nimport {\n filterPlugins,\n parseIntentPlugin,\n resolvePlugin,\n type GraphBuilderProvides,\n type IntentResolverProvides,\n type Plugin,\n type PluginDefinition,\n type TranslationsProvides,\n} from '@dxos/app-framework';\nimport { Config, Defaults, Envs, Local, Storage } from '@dxos/config';\nimport { registerSignalsRuntime } from '@dxos/echo-signals/react';\nimport { log } from '@dxos/log';\nimport { createExtension, type Node } from '@dxos/plugin-graph';\nimport { Client, type ClientOptions, ClientProvider } from '@dxos/react-client';\n\nimport meta, { CLIENT_PLUGIN, ClientAction } from './meta';\nimport translations from './translations';\n\nexport type ClientPluginOptions = ClientOptions & {\n /**\n * Used to track app-specific state in spaces.\n */\n appKey: string;\n\n /**\n * Run after the client has been initialized.\n */\n onClientInitialized?: (client: Client) => Promise<void>;\n\n /**\n * Run after the identity has been successfully initialized.\n * Run with client during plugin ready phase.\n */\n onReady?: (client: Client, plugins: Plugin[]) => Promise<void>;\n};\n\nexport type ClientPluginProvides = IntentResolverProvides &\n GraphBuilderProvides &\n TranslationsProvides & {\n client: Client;\n };\n\nexport const parseClientPlugin = (plugin?: Plugin) =>\n (plugin?.provides as any).client instanceof Client ? (plugin as Plugin<ClientPluginProvides>) : undefined;\n\nexport type SchemaProvides = {\n echo: {\n schema: S.Schema<any>[];\n };\n};\n\nexport const parseSchemaPlugin = (plugin?: Plugin) =>\n Array.isArray((plugin?.provides as any).echo?.schema) ? (plugin as Plugin<SchemaProvides>) : undefined;\n\nexport const ClientPlugin = ({\n appKey,\n onClientInitialized,\n onReady,\n ...options\n}: ClientPluginOptions): PluginDefinition<\n Omit<ClientPluginProvides, 'client'>,\n Pick<ClientPluginProvides, 'client'>\n> => {\n registerSignalsRuntime();\n\n let client: Client;\n let error: unknown = null;\n\n return {\n meta,\n initialize: async () => {\n const config = new Config(await Storage(), Envs(), Local(), Defaults());\n client = new Client({ config, ...options });\n\n try {\n await client.initialize();\n await onClientInitialized?.(client);\n\n // TODO(wittjosiah): Remove. This is a hack to get the app to boot with the new identity after a reset.\n client.reloaded.on(() => {\n client.halo.identity.subscribe(async (identity) => {\n if (identity) {\n window.location.href = window.location.origin;\n }\n });\n });\n } catch (err) {\n error = err;\n }\n\n return {\n client,\n context: ({ children }) => <ClientProvider client={client}>{children}</ClientProvider>,\n };\n },\n ready: async (plugins) => {\n if (error) {\n throw error;\n }\n\n await onReady?.(client, plugins);\n\n filterPlugins(plugins, parseSchemaPlugin).forEach((plugin) => {\n log('ready', { id: plugin.meta.id });\n client.addTypes(plugin.provides.echo.schema);\n });\n },\n unload: async () => {\n await client.destroy();\n },\n provides: {\n translations,\n graph: {\n builder: (plugins) => {\n const intentPlugin = resolvePlugin(plugins, parseIntentPlugin);\n const id = `${CLIENT_PLUGIN}/open-shell`;\n\n return createExtension({\n id: CLIENT_PLUGIN,\n filter: (node): node is Node<null> => node.id === 'root',\n actions: () => [\n {\n id,\n data: async () => {\n await intentPlugin?.provides.intent.dispatch([\n { plugin: CLIENT_PLUGIN, action: ClientAction.OPEN_SHELL },\n ]);\n },\n properties: {\n label: ['open shell label', { ns: CLIENT_PLUGIN }],\n icon: 'ph--address-book--regular',\n keyBinding: {\n macos: 'meta+shift+.',\n // TODO(wittjosiah): Test on windows to see if it behaves the same as linux.\n windows: 'alt+shift+.',\n linux: 'alt+shift+>',\n },\n testId: 'clientPlugin.openShell',\n },\n },\n ],\n });\n },\n },\n intent: {\n resolver: async (intent) => {\n switch (intent.action) {\n case ClientAction.OPEN_SHELL:\n await client.shell.open(intent.data?.layout);\n return { data: true };\n\n case ClientAction.CREATE_IDENTITY: {\n const data = await client.halo.createIdentity();\n return {\n data,\n intents: [\n [\n {\n // NOTE: This action is hardcoded to avoid circular dependency with observability plugin.\n action: 'dxos.org/plugin/observability/send-event',\n data: {\n name: 'identity.created',\n },\n },\n ],\n ],\n };\n }\n\n case ClientAction.JOIN_IDENTITY: {\n const data = await client.shell.joinIdentity({ invitationCode: intent.data?.invitationCode });\n return {\n data,\n intents: [\n [\n {\n // NOTE: This action is hardcoded to avoid circular dependency with observability plugin.\n action: 'dxos.org/plugin/observability/send-event',\n data: {\n name: 'identity.joined',\n },\n },\n ],\n ],\n };\n }\n\n case ClientAction.SHARE_IDENTITY: {\n const data = await client.shell.shareIdentity();\n return {\n data,\n intents: [\n [\n {\n // NOTE: This action is hardcoded to avoid circular dependency with observability plugin.\n action: 'dxos.org/plugin/observability/send-event',\n data: {\n name: 'identity.shared',\n properties: {\n deviceKey: data.device?.deviceKey.truncate(),\n deviceKind: data.device?.kind,\n error: data.error?.message,\n canceled: data.cancelled,\n },\n },\n },\n ],\n ],\n };\n }\n }\n },\n },\n },\n };\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { CLIENT_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [CLIENT_PLUGIN]: {\n 'open shell label': 'Open HALO',\n },\n },\n },\n];\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { ClientPlugin } from './ClientPlugin';\n\nexport default ClientPlugin;\n\nexport * from './ClientPlugin';\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["React", "filterPlugins", "parseIntentPlugin", "resolvePlugin", "Config", "Defaults", "Envs", "Local", "Storage", "registerSignalsRuntime", "log", "createExtension", "Client", "ClientProvider", "CLIENT_PLUGIN", "parseClientPlugin", "plugin", "provides", "client", "Client", "undefined", "parseSchemaPlugin", "Array", "isArray", "echo", "schema", "ClientPlugin", "appKey", "onClientInitialized", "onReady", "options", "registerSignalsRuntime", "error", "meta", "initialize", "config", "Config", "Storage", "Envs", "Local", "Defaults", "reloaded", "on", "halo", "identity", "subscribe", "window", "location", "href", "origin", "err", "context", "children", "ClientProvider", "ready", "plugins", "filterPlugins", "forEach", "log", "id", "addTypes", "unload", "destroy", "translations", "graph", "builder", "intentPlugin", "resolvePlugin", "parseIntentPlugin", "CLIENT_PLUGIN", "createExtension", "filter", "node", "actions", "data", "intent", "dispatch", "action", "ClientAction", "OPEN_SHELL", "properties", "label", "ns", "icon", "keyBinding", "macos", "windows", "linux", "testId", "resolver", "shell", "open", "layout", "CREATE_IDENTITY", "createIdentity", "intents", "name", "JOIN_IDENTITY", "joinIdentity", "invitationCode", "SHARE_IDENTITY", "shareIdentity", "deviceKey", "device", "truncate", "deviceKind", "kind", "message", "canceled", "cancelled", "ClientPlugin"]
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"packages/plugins/plugin-client/src/meta.ts":{"bytes":
|
|
1
|
+
{"inputs":{"packages/plugins/plugin-client/src/meta.ts":{"bytes":2186,"imports":[],"format":"esm"},"packages/plugins/plugin-client/src/translations.ts":{"bytes":1043,"imports":[{"path":"packages/plugins/plugin-client/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-client/src/ClientPlugin.tsx":{"bytes":24269,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/config","kind":"import-statement","external":true},{"path":"@dxos/echo-signals/react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-client/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-client/src/translations.ts","kind":"import-statement","original":"./translations"}],"format":"esm"},"packages/plugins/plugin-client/src/index.ts":{"bytes":782,"imports":[{"path":"packages/plugins/plugin-client/src/ClientPlugin.tsx","kind":"import-statement","original":"./ClientPlugin"},{"path":"packages/plugins/plugin-client/src/ClientPlugin.tsx","kind":"import-statement","original":"./ClientPlugin"}],"format":"esm"}},"outputs":{"packages/plugins/plugin-client/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":11795},"packages/plugins/plugin-client/dist/lib/browser/index.mjs":{"imports":[{"path":"packages/plugins/plugin-client/dist/lib/browser/chunk-GOCCTV5N.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/config","kind":"import-statement","external":true},{"path":"@dxos/echo-signals/react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true}],"exports":["ClientPlugin","default","parseClientPlugin","parseSchemaPlugin"],"entryPoint":"packages/plugins/plugin-client/src/index.ts","inputs":{"packages/plugins/plugin-client/src/ClientPlugin.tsx":{"bytesInOutput":5953},"packages/plugins/plugin-client/src/translations.ts":{"bytesInOutput":134},"packages/plugins/plugin-client/src/index.ts":{"bytesInOutput":32}},"bytes":6552},"packages/plugins/plugin-client/dist/lib/browser/meta.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/plugins/plugin-client/dist/lib/browser/meta.mjs":{"imports":[{"path":"packages/plugins/plugin-client/dist/lib/browser/chunk-GOCCTV5N.mjs","kind":"import-statement"}],"exports":["CLIENT_PLUGIN","ClientAction","default"],"entryPoint":"packages/plugins/plugin-client/src/meta.ts","inputs":{},"bytes":193},"packages/plugins/plugin-client/dist/lib/browser/chunk-GOCCTV5N.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":967},"packages/plugins/plugin-client/dist/lib/browser/chunk-GOCCTV5N.mjs":{"imports":[],"exports":["CLIENT_PLUGIN","ClientAction","meta_default"],"inputs":{"packages/plugins/plugin-client/src/meta.ts":{"bytesInOutput":644}},"bytes":795}}}
|
|
@@ -16,13 +16,13 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
16
|
return to;
|
|
17
17
|
};
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var
|
|
20
|
-
__export(
|
|
19
|
+
var chunk_2SLZEXNL_exports = {};
|
|
20
|
+
__export(chunk_2SLZEXNL_exports, {
|
|
21
21
|
CLIENT_PLUGIN: () => CLIENT_PLUGIN,
|
|
22
22
|
ClientAction: () => ClientAction,
|
|
23
23
|
meta_default: () => meta_default
|
|
24
24
|
});
|
|
25
|
-
module.exports = __toCommonJS(
|
|
25
|
+
module.exports = __toCommonJS(chunk_2SLZEXNL_exports);
|
|
26
26
|
var CLIENT_PLUGIN = "dxos.org/plugin/client";
|
|
27
27
|
var meta_default = {
|
|
28
28
|
id: CLIENT_PLUGIN,
|
|
@@ -42,4 +42,4 @@ var ClientAction;
|
|
|
42
42
|
ClientAction,
|
|
43
43
|
meta_default
|
|
44
44
|
});
|
|
45
|
-
//# sourceMappingURL=chunk-
|
|
45
|
+
//# sourceMappingURL=chunk-2SLZEXNL.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/meta.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const CLIENT_PLUGIN = 'dxos.org/plugin/client';\n\nexport default {\n id: CLIENT_PLUGIN,\n name: 'Client',\n} satisfies PluginMeta;\n\nconst CLIENT_ACTION = `${CLIENT_PLUGIN}/action`;\nexport enum ClientAction {\n OPEN_SHELL = `${CLIENT_ACTION}/SHELL`,\n CREATE_IDENTITY = `${CLIENT_ACTION}/CREATE_IDENTITY`,\n JOIN_IDENTITY = `${CLIENT_ACTION}/JOIN_IDENTITY`,\n SHARE_IDENTITY = `${CLIENT_ACTION}/SHARE_IDENTITY`,\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AAMO,IAAMA,gBAAgB;AAE7B,IAAA,eAAe;EACbC,IAAID;EACJE,MAAM;AACR;AAEA,IAAMC,gBAAgB,GAAGH,aAAAA;;UACbI,eAAAA;8CACG,GAAGD,aAAAA,QAAqB,IAAA;mDACnB,GAAGA,aAAAA,kBAA+B,IAAA;iDACpC,GAAGA,aAAAA,gBAA6B,IAAA;kDAC/B,GAAGA,aAAAA,iBAA8B,IAAA;GAJxCC,iBAAAA,eAAAA,CAAAA,EAAAA;",
|
|
6
|
+
"names": ["CLIENT_PLUGIN", "id", "name", "CLIENT_ACTION", "ClientAction"]
|
|
7
|
+
}
|
package/dist/lib/node/index.cjs
CHANGED
|
@@ -34,19 +34,18 @@ __export(node_exports, {
|
|
|
34
34
|
parseSchemaPlugin: () => parseSchemaPlugin
|
|
35
35
|
});
|
|
36
36
|
module.exports = __toCommonJS(node_exports);
|
|
37
|
-
var
|
|
38
|
-
var import_react = require("
|
|
39
|
-
var import_react2 = __toESM(require("react"));
|
|
37
|
+
var import_chunk_2SLZEXNL = require("./chunk-2SLZEXNL.cjs");
|
|
38
|
+
var import_react = __toESM(require("react"));
|
|
40
39
|
var import_app_framework = require("@dxos/app-framework");
|
|
41
40
|
var import_config = require("@dxos/config");
|
|
42
|
-
var
|
|
41
|
+
var import_react2 = require("@dxos/echo-signals/react");
|
|
43
42
|
var import_log = require("@dxos/log");
|
|
44
43
|
var import_plugin_graph = require("@dxos/plugin-graph");
|
|
45
44
|
var import_react_client = require("@dxos/react-client");
|
|
46
45
|
var translations_default = [
|
|
47
46
|
{
|
|
48
47
|
"en-US": {
|
|
49
|
-
[
|
|
48
|
+
[import_chunk_2SLZEXNL.CLIENT_PLUGIN]: {
|
|
50
49
|
"open shell label": "Open HALO"
|
|
51
50
|
}
|
|
52
51
|
}
|
|
@@ -56,11 +55,11 @@ var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-client/s
|
|
|
56
55
|
var parseClientPlugin = (plugin) => (plugin?.provides).client instanceof import_react_client.Client ? plugin : void 0;
|
|
57
56
|
var parseSchemaPlugin = (plugin) => Array.isArray(plugin?.provides.echo?.schema) ? plugin : void 0;
|
|
58
57
|
var ClientPlugin = ({ appKey, onClientInitialized, onReady, ...options }) => {
|
|
59
|
-
(0,
|
|
58
|
+
(0, import_react2.registerSignalsRuntime)();
|
|
60
59
|
let client;
|
|
61
60
|
let error = null;
|
|
62
61
|
return {
|
|
63
|
-
meta:
|
|
62
|
+
meta: import_chunk_2SLZEXNL.meta_default,
|
|
64
63
|
initialize: async () => {
|
|
65
64
|
const config = new import_config.Config(await (0, import_config.Storage)(), (0, import_config.Envs)(), (0, import_config.Local)(), (0, import_config.Defaults)());
|
|
66
65
|
client = new import_react_client.Client({
|
|
@@ -82,15 +81,9 @@ var ClientPlugin = ({ appKey, onClientInitialized, onReady, ...options }) => {
|
|
|
82
81
|
}
|
|
83
82
|
return {
|
|
84
83
|
client,
|
|
85
|
-
context: ({ children }) => {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
value: {
|
|
89
|
-
client,
|
|
90
|
-
status
|
|
91
|
-
}
|
|
92
|
-
}, children);
|
|
93
|
-
}
|
|
84
|
+
context: ({ children }) => /* @__PURE__ */ import_react.default.createElement(import_react_client.ClientProvider, {
|
|
85
|
+
client
|
|
86
|
+
}, children)
|
|
94
87
|
};
|
|
95
88
|
},
|
|
96
89
|
ready: async (plugins) => {
|
|
@@ -103,7 +96,7 @@ var ClientPlugin = ({ appKey, onClientInitialized, onReady, ...options }) => {
|
|
|
103
96
|
id: plugin.meta.id
|
|
104
97
|
}, {
|
|
105
98
|
F: __dxlog_file,
|
|
106
|
-
L:
|
|
99
|
+
L: 112,
|
|
107
100
|
S: void 0,
|
|
108
101
|
C: (f, a) => f(...a)
|
|
109
102
|
});
|
|
@@ -118,9 +111,9 @@ var ClientPlugin = ({ appKey, onClientInitialized, onReady, ...options }) => {
|
|
|
118
111
|
graph: {
|
|
119
112
|
builder: (plugins) => {
|
|
120
113
|
const intentPlugin = (0, import_app_framework.resolvePlugin)(plugins, import_app_framework.parseIntentPlugin);
|
|
121
|
-
const id = `${
|
|
114
|
+
const id = `${import_chunk_2SLZEXNL.CLIENT_PLUGIN}/open-shell`;
|
|
122
115
|
return (0, import_plugin_graph.createExtension)({
|
|
123
|
-
id:
|
|
116
|
+
id: import_chunk_2SLZEXNL.CLIENT_PLUGIN,
|
|
124
117
|
filter: (node) => node.id === "root",
|
|
125
118
|
actions: () => [
|
|
126
119
|
{
|
|
@@ -128,8 +121,8 @@ var ClientPlugin = ({ appKey, onClientInitialized, onReady, ...options }) => {
|
|
|
128
121
|
data: async () => {
|
|
129
122
|
await intentPlugin?.provides.intent.dispatch([
|
|
130
123
|
{
|
|
131
|
-
plugin:
|
|
132
|
-
action:
|
|
124
|
+
plugin: import_chunk_2SLZEXNL.CLIENT_PLUGIN,
|
|
125
|
+
action: import_chunk_2SLZEXNL.ClientAction.OPEN_SHELL
|
|
133
126
|
}
|
|
134
127
|
]);
|
|
135
128
|
},
|
|
@@ -137,11 +130,10 @@ var ClientPlugin = ({ appKey, onClientInitialized, onReady, ...options }) => {
|
|
|
137
130
|
label: [
|
|
138
131
|
"open shell label",
|
|
139
132
|
{
|
|
140
|
-
ns:
|
|
133
|
+
ns: import_chunk_2SLZEXNL.CLIENT_PLUGIN
|
|
141
134
|
}
|
|
142
135
|
],
|
|
143
|
-
icon:
|
|
144
|
-
iconSymbol: "ph--address-book--regular",
|
|
136
|
+
icon: "ph--address-book--regular",
|
|
145
137
|
keyBinding: {
|
|
146
138
|
macos: "meta+shift+.",
|
|
147
139
|
// TODO(wittjosiah): Test on windows to see if it behaves the same as linux.
|
|
@@ -158,12 +150,12 @@ var ClientPlugin = ({ appKey, onClientInitialized, onReady, ...options }) => {
|
|
|
158
150
|
intent: {
|
|
159
151
|
resolver: async (intent) => {
|
|
160
152
|
switch (intent.action) {
|
|
161
|
-
case
|
|
153
|
+
case import_chunk_2SLZEXNL.ClientAction.OPEN_SHELL:
|
|
162
154
|
await client.shell.open(intent.data?.layout);
|
|
163
155
|
return {
|
|
164
156
|
data: true
|
|
165
157
|
};
|
|
166
|
-
case
|
|
158
|
+
case import_chunk_2SLZEXNL.ClientAction.CREATE_IDENTITY: {
|
|
167
159
|
const data = await client.halo.createIdentity();
|
|
168
160
|
return {
|
|
169
161
|
data,
|
|
@@ -180,7 +172,7 @@ var ClientPlugin = ({ appKey, onClientInitialized, onReady, ...options }) => {
|
|
|
180
172
|
]
|
|
181
173
|
};
|
|
182
174
|
}
|
|
183
|
-
case
|
|
175
|
+
case import_chunk_2SLZEXNL.ClientAction.JOIN_IDENTITY: {
|
|
184
176
|
const data = await client.shell.joinIdentity({
|
|
185
177
|
invitationCode: intent.data?.invitationCode
|
|
186
178
|
});
|
|
@@ -199,7 +191,7 @@ var ClientPlugin = ({ appKey, onClientInitialized, onReady, ...options }) => {
|
|
|
199
191
|
]
|
|
200
192
|
};
|
|
201
193
|
}
|
|
202
|
-
case
|
|
194
|
+
case import_chunk_2SLZEXNL.ClientAction.SHARE_IDENTITY: {
|
|
203
195
|
const data = await client.shell.shareIdentity();
|
|
204
196
|
return {
|
|
205
197
|
data,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/ClientPlugin.tsx", "../../../src/translations.ts", "../../../src/index.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport {
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
6
|
-
"names": ["import_react", "CLIENT_PLUGIN", "parseClientPlugin", "plugin", "provides", "client", "Client", "undefined", "parseSchemaPlugin", "Array", "isArray", "echo", "schema", "ClientPlugin", "appKey", "onClientInitialized", "onReady", "options", "
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Schema as S } from '@effect/schema';\nimport React from 'react';\n\nimport {\n filterPlugins,\n parseIntentPlugin,\n resolvePlugin,\n type GraphBuilderProvides,\n type IntentResolverProvides,\n type Plugin,\n type PluginDefinition,\n type TranslationsProvides,\n} from '@dxos/app-framework';\nimport { Config, Defaults, Envs, Local, Storage } from '@dxos/config';\nimport { registerSignalsRuntime } from '@dxos/echo-signals/react';\nimport { log } from '@dxos/log';\nimport { createExtension, type Node } from '@dxos/plugin-graph';\nimport { Client, type ClientOptions, ClientProvider } from '@dxos/react-client';\n\nimport meta, { CLIENT_PLUGIN, ClientAction } from './meta';\nimport translations from './translations';\n\nexport type ClientPluginOptions = ClientOptions & {\n /**\n * Used to track app-specific state in spaces.\n */\n appKey: string;\n\n /**\n * Run after the client has been initialized.\n */\n onClientInitialized?: (client: Client) => Promise<void>;\n\n /**\n * Run after the identity has been successfully initialized.\n * Run with client during plugin ready phase.\n */\n onReady?: (client: Client, plugins: Plugin[]) => Promise<void>;\n};\n\nexport type ClientPluginProvides = IntentResolverProvides &\n GraphBuilderProvides &\n TranslationsProvides & {\n client: Client;\n };\n\nexport const parseClientPlugin = (plugin?: Plugin) =>\n (plugin?.provides as any).client instanceof Client ? (plugin as Plugin<ClientPluginProvides>) : undefined;\n\nexport type SchemaProvides = {\n echo: {\n schema: S.Schema<any>[];\n };\n};\n\nexport const parseSchemaPlugin = (plugin?: Plugin) =>\n Array.isArray((plugin?.provides as any).echo?.schema) ? (plugin as Plugin<SchemaProvides>) : undefined;\n\nexport const ClientPlugin = ({\n appKey,\n onClientInitialized,\n onReady,\n ...options\n}: ClientPluginOptions): PluginDefinition<\n Omit<ClientPluginProvides, 'client'>,\n Pick<ClientPluginProvides, 'client'>\n> => {\n registerSignalsRuntime();\n\n let client: Client;\n let error: unknown = null;\n\n return {\n meta,\n initialize: async () => {\n const config = new Config(await Storage(), Envs(), Local(), Defaults());\n client = new Client({ config, ...options });\n\n try {\n await client.initialize();\n await onClientInitialized?.(client);\n\n // TODO(wittjosiah): Remove. This is a hack to get the app to boot with the new identity after a reset.\n client.reloaded.on(() => {\n client.halo.identity.subscribe(async (identity) => {\n if (identity) {\n window.location.href = window.location.origin;\n }\n });\n });\n } catch (err) {\n error = err;\n }\n\n return {\n client,\n context: ({ children }) => <ClientProvider client={client}>{children}</ClientProvider>,\n };\n },\n ready: async (plugins) => {\n if (error) {\n throw error;\n }\n\n await onReady?.(client, plugins);\n\n filterPlugins(plugins, parseSchemaPlugin).forEach((plugin) => {\n log('ready', { id: plugin.meta.id });\n client.addTypes(plugin.provides.echo.schema);\n });\n },\n unload: async () => {\n await client.destroy();\n },\n provides: {\n translations,\n graph: {\n builder: (plugins) => {\n const intentPlugin = resolvePlugin(plugins, parseIntentPlugin);\n const id = `${CLIENT_PLUGIN}/open-shell`;\n\n return createExtension({\n id: CLIENT_PLUGIN,\n filter: (node): node is Node<null> => node.id === 'root',\n actions: () => [\n {\n id,\n data: async () => {\n await intentPlugin?.provides.intent.dispatch([\n { plugin: CLIENT_PLUGIN, action: ClientAction.OPEN_SHELL },\n ]);\n },\n properties: {\n label: ['open shell label', { ns: CLIENT_PLUGIN }],\n icon: 'ph--address-book--regular',\n keyBinding: {\n macos: 'meta+shift+.',\n // TODO(wittjosiah): Test on windows to see if it behaves the same as linux.\n windows: 'alt+shift+.',\n linux: 'alt+shift+>',\n },\n testId: 'clientPlugin.openShell',\n },\n },\n ],\n });\n },\n },\n intent: {\n resolver: async (intent) => {\n switch (intent.action) {\n case ClientAction.OPEN_SHELL:\n await client.shell.open(intent.data?.layout);\n return { data: true };\n\n case ClientAction.CREATE_IDENTITY: {\n const data = await client.halo.createIdentity();\n return {\n data,\n intents: [\n [\n {\n // NOTE: This action is hardcoded to avoid circular dependency with observability plugin.\n action: 'dxos.org/plugin/observability/send-event',\n data: {\n name: 'identity.created',\n },\n },\n ],\n ],\n };\n }\n\n case ClientAction.JOIN_IDENTITY: {\n const data = await client.shell.joinIdentity({ invitationCode: intent.data?.invitationCode });\n return {\n data,\n intents: [\n [\n {\n // NOTE: This action is hardcoded to avoid circular dependency with observability plugin.\n action: 'dxos.org/plugin/observability/send-event',\n data: {\n name: 'identity.joined',\n },\n },\n ],\n ],\n };\n }\n\n case ClientAction.SHARE_IDENTITY: {\n const data = await client.shell.shareIdentity();\n return {\n data,\n intents: [\n [\n {\n // NOTE: This action is hardcoded to avoid circular dependency with observability plugin.\n action: 'dxos.org/plugin/observability/send-event',\n data: {\n name: 'identity.shared',\n properties: {\n deviceKey: data.device?.deviceKey.truncate(),\n deviceKind: data.device?.kind,\n error: data.error?.message,\n canceled: data.cancelled,\n },\n },\n },\n ],\n ],\n };\n }\n }\n },\n },\n },\n };\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { CLIENT_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [CLIENT_PLUGIN]: {\n 'open shell label': 'Open HALO',\n },\n },\n },\n];\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { ClientPlugin } from './ClientPlugin';\n\nexport default ClientPlugin;\n\nexport * from './ClientPlugin';\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_react", "CLIENT_PLUGIN", "parseClientPlugin", "plugin", "provides", "client", "Client", "undefined", "parseSchemaPlugin", "Array", "isArray", "echo", "schema", "ClientPlugin", "appKey", "onClientInitialized", "onReady", "options", "registerSignalsRuntime", "error", "meta", "initialize", "config", "Config", "Storage", "Envs", "Local", "Defaults", "reloaded", "on", "halo", "identity", "subscribe", "window", "location", "href", "origin", "err", "context", "children", "React", "ClientProvider", "ready", "plugins", "filterPlugins", "forEach", "log", "id", "addTypes", "unload", "destroy", "translations", "graph", "builder", "intentPlugin", "resolvePlugin", "parseIntentPlugin", "createExtension", "filter", "node", "actions", "data", "intent", "dispatch", "action", "ClientAction", "OPEN_SHELL", "properties", "label", "ns", "icon", "keyBinding", "macos", "windows", "linux", "testId", "resolver", "shell", "open", "layout", "CREATE_IDENTITY", "createIdentity", "intents", "name", "JOIN_IDENTITY", "joinIdentity", "invitationCode", "SHARE_IDENTITY", "shareIdentity", "deviceKey", "device", "truncate", "deviceKind", "kind", "message", "canceled", "cancelled"]
|
|
7
7
|
}
|
package/dist/lib/node/meta.cjs
CHANGED
|
@@ -18,12 +18,12 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var meta_exports = {};
|
|
20
20
|
__export(meta_exports, {
|
|
21
|
-
CLIENT_PLUGIN: () =>
|
|
22
|
-
ClientAction: () =>
|
|
23
|
-
default: () =>
|
|
21
|
+
CLIENT_PLUGIN: () => import_chunk_2SLZEXNL.CLIENT_PLUGIN,
|
|
22
|
+
ClientAction: () => import_chunk_2SLZEXNL.ClientAction,
|
|
23
|
+
default: () => import_chunk_2SLZEXNL.meta_default
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(meta_exports);
|
|
26
|
-
var
|
|
26
|
+
var import_chunk_2SLZEXNL = require("./chunk-2SLZEXNL.cjs");
|
|
27
27
|
// Annotate the CommonJS export names for ESM import in node:
|
|
28
28
|
0 && (module.exports = {
|
|
29
29
|
CLIENT_PLUGIN,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["meta.cjs"],
|
|
4
|
-
"sourcesContent": ["import {\n CLIENT_PLUGIN,\n ClientAction,\n meta_default\n} from \"./chunk-
|
|
4
|
+
"sourcesContent": ["import {\n CLIENT_PLUGIN,\n ClientAction,\n meta_default\n} from \"./chunk-2SLZEXNL.cjs\";\nexport {\n CLIENT_PLUGIN,\n ClientAction,\n meta_default as default\n};\n//# sourceMappingURL=meta.cjs.map\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAIO;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/lib/node/meta.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"packages/plugins/plugin-client/src/meta.ts":{"bytes":
|
|
1
|
+
{"inputs":{"packages/plugins/plugin-client/src/meta.ts":{"bytes":2186,"imports":[],"format":"esm"},"packages/plugins/plugin-client/src/translations.ts":{"bytes":1043,"imports":[{"path":"packages/plugins/plugin-client/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-client/src/ClientPlugin.tsx":{"bytes":24269,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/config","kind":"import-statement","external":true},{"path":"@dxos/echo-signals/react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-client/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-client/src/translations.ts","kind":"import-statement","original":"./translations"}],"format":"esm"},"packages/plugins/plugin-client/src/index.ts":{"bytes":782,"imports":[{"path":"packages/plugins/plugin-client/src/ClientPlugin.tsx","kind":"import-statement","original":"./ClientPlugin"},{"path":"packages/plugins/plugin-client/src/ClientPlugin.tsx","kind":"import-statement","original":"./ClientPlugin"}],"format":"esm"}},"outputs":{"packages/plugins/plugin-client/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":11795},"packages/plugins/plugin-client/dist/lib/node/index.cjs":{"imports":[{"path":"packages/plugins/plugin-client/dist/lib/node/chunk-2SLZEXNL.cjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/config","kind":"import-statement","external":true},{"path":"@dxos/echo-signals/react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true}],"exports":["ClientPlugin","default","parseClientPlugin","parseSchemaPlugin"],"entryPoint":"packages/plugins/plugin-client/src/index.ts","inputs":{"packages/plugins/plugin-client/src/ClientPlugin.tsx":{"bytesInOutput":5953},"packages/plugins/plugin-client/src/translations.ts":{"bytesInOutput":134},"packages/plugins/plugin-client/src/index.ts":{"bytesInOutput":32}},"bytes":6552},"packages/plugins/plugin-client/dist/lib/node/meta.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/plugins/plugin-client/dist/lib/node/meta.cjs":{"imports":[{"path":"packages/plugins/plugin-client/dist/lib/node/chunk-2SLZEXNL.cjs","kind":"import-statement"}],"exports":["CLIENT_PLUGIN","ClientAction","default"],"entryPoint":"packages/plugins/plugin-client/src/meta.ts","inputs":{},"bytes":193},"packages/plugins/plugin-client/dist/lib/node/chunk-2SLZEXNL.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":967},"packages/plugins/plugin-client/dist/lib/node/chunk-2SLZEXNL.cjs":{"imports":[],"exports":["CLIENT_PLUGIN","ClientAction","meta_default"],"inputs":{"packages/plugins/plugin-client/src/meta.ts":{"bytesInOutput":644}},"bytes":795}}}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
+
|
|
3
|
+
// packages/plugins/plugin-client/src/meta.ts
|
|
4
|
+
var CLIENT_PLUGIN = "dxos.org/plugin/client";
|
|
5
|
+
var meta_default = {
|
|
6
|
+
id: CLIENT_PLUGIN,
|
|
7
|
+
name: "Client"
|
|
8
|
+
};
|
|
9
|
+
var CLIENT_ACTION = `${CLIENT_PLUGIN}/action`;
|
|
10
|
+
var ClientAction;
|
|
11
|
+
(function(ClientAction2) {
|
|
12
|
+
ClientAction2[ClientAction2["OPEN_SHELL"] = `${CLIENT_ACTION}/SHELL`] = "OPEN_SHELL";
|
|
13
|
+
ClientAction2[ClientAction2["CREATE_IDENTITY"] = `${CLIENT_ACTION}/CREATE_IDENTITY`] = "CREATE_IDENTITY";
|
|
14
|
+
ClientAction2[ClientAction2["JOIN_IDENTITY"] = `${CLIENT_ACTION}/JOIN_IDENTITY`] = "JOIN_IDENTITY";
|
|
15
|
+
ClientAction2[ClientAction2["SHARE_IDENTITY"] = `${CLIENT_ACTION}/SHARE_IDENTITY`] = "SHARE_IDENTITY";
|
|
16
|
+
})(ClientAction || (ClientAction = {}));
|
|
17
|
+
|
|
18
|
+
export {
|
|
19
|
+
CLIENT_PLUGIN,
|
|
20
|
+
meta_default,
|
|
21
|
+
ClientAction
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=chunk-HMR23AKU.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/meta.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const CLIENT_PLUGIN = 'dxos.org/plugin/client';\n\nexport default {\n id: CLIENT_PLUGIN,\n name: 'Client',\n} satisfies PluginMeta;\n\nconst CLIENT_ACTION = `${CLIENT_PLUGIN}/action`;\nexport enum ClientAction {\n OPEN_SHELL = `${CLIENT_ACTION}/SHELL`,\n CREATE_IDENTITY = `${CLIENT_ACTION}/CREATE_IDENTITY`,\n JOIN_IDENTITY = `${CLIENT_ACTION}/JOIN_IDENTITY`,\n SHARE_IDENTITY = `${CLIENT_ACTION}/SHARE_IDENTITY`,\n}\n"],
|
|
5
|
+
"mappings": ";;;AAMO,IAAMA,gBAAgB;AAE7B,IAAA,eAAe;EACbC,IAAID;EACJE,MAAM;AACR;AAEA,IAAMC,gBAAgB,GAAGH,aAAAA;;UACbI,eAAAA;8CACG,GAAGD,aAAAA,QAAqB,IAAA;mDACnB,GAAGA,aAAAA,kBAA+B,IAAA;iDACpC,GAAGA,aAAAA,gBAA6B,IAAA;kDAC/B,GAAGA,aAAAA,iBAA8B,IAAA;GAJxCC,iBAAAA,eAAAA,CAAAA,EAAAA;",
|
|
6
|
+
"names": ["CLIENT_PLUGIN", "id", "name", "CLIENT_ACTION", "ClientAction"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
CLIENT_PLUGIN,
|
|
4
|
+
ClientAction,
|
|
5
|
+
meta_default
|
|
6
|
+
} from "./chunk-HMR23AKU.mjs";
|
|
7
|
+
|
|
8
|
+
// packages/plugins/plugin-client/src/ClientPlugin.tsx
|
|
9
|
+
import React from "react";
|
|
10
|
+
import { filterPlugins, parseIntentPlugin, resolvePlugin } from "@dxos/app-framework";
|
|
11
|
+
import { Config, Defaults, Envs, Local, Storage } from "@dxos/config";
|
|
12
|
+
import { registerSignalsRuntime } from "@dxos/echo-signals/react";
|
|
13
|
+
import { log } from "@dxos/log";
|
|
14
|
+
import { createExtension } from "@dxos/plugin-graph";
|
|
15
|
+
import { Client, ClientProvider } from "@dxos/react-client";
|
|
16
|
+
|
|
17
|
+
// packages/plugins/plugin-client/src/translations.ts
|
|
18
|
+
var translations_default = [
|
|
19
|
+
{
|
|
20
|
+
"en-US": {
|
|
21
|
+
[CLIENT_PLUGIN]: {
|
|
22
|
+
"open shell label": "Open HALO"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
// packages/plugins/plugin-client/src/ClientPlugin.tsx
|
|
29
|
+
var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-client/src/ClientPlugin.tsx";
|
|
30
|
+
var parseClientPlugin = (plugin) => (plugin?.provides).client instanceof Client ? plugin : void 0;
|
|
31
|
+
var parseSchemaPlugin = (plugin) => Array.isArray(plugin?.provides.echo?.schema) ? plugin : void 0;
|
|
32
|
+
var ClientPlugin = ({ appKey, onClientInitialized, onReady, ...options }) => {
|
|
33
|
+
registerSignalsRuntime();
|
|
34
|
+
let client;
|
|
35
|
+
let error = null;
|
|
36
|
+
return {
|
|
37
|
+
meta: meta_default,
|
|
38
|
+
initialize: async () => {
|
|
39
|
+
const config = new Config(await Storage(), Envs(), Local(), Defaults());
|
|
40
|
+
client = new Client({
|
|
41
|
+
config,
|
|
42
|
+
...options
|
|
43
|
+
});
|
|
44
|
+
try {
|
|
45
|
+
await client.initialize();
|
|
46
|
+
await onClientInitialized?.(client);
|
|
47
|
+
client.reloaded.on(() => {
|
|
48
|
+
client.halo.identity.subscribe(async (identity) => {
|
|
49
|
+
if (identity) {
|
|
50
|
+
window.location.href = window.location.origin;
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
} catch (err) {
|
|
55
|
+
error = err;
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
client,
|
|
59
|
+
context: ({ children }) => /* @__PURE__ */ React.createElement(ClientProvider, {
|
|
60
|
+
client
|
|
61
|
+
}, children)
|
|
62
|
+
};
|
|
63
|
+
},
|
|
64
|
+
ready: async (plugins) => {
|
|
65
|
+
if (error) {
|
|
66
|
+
throw error;
|
|
67
|
+
}
|
|
68
|
+
await onReady?.(client, plugins);
|
|
69
|
+
filterPlugins(plugins, parseSchemaPlugin).forEach((plugin) => {
|
|
70
|
+
log("ready", {
|
|
71
|
+
id: plugin.meta.id
|
|
72
|
+
}, {
|
|
73
|
+
F: __dxlog_file,
|
|
74
|
+
L: 112,
|
|
75
|
+
S: void 0,
|
|
76
|
+
C: (f, a) => f(...a)
|
|
77
|
+
});
|
|
78
|
+
client.addTypes(plugin.provides.echo.schema);
|
|
79
|
+
});
|
|
80
|
+
},
|
|
81
|
+
unload: async () => {
|
|
82
|
+
await client.destroy();
|
|
83
|
+
},
|
|
84
|
+
provides: {
|
|
85
|
+
translations: translations_default,
|
|
86
|
+
graph: {
|
|
87
|
+
builder: (plugins) => {
|
|
88
|
+
const intentPlugin = resolvePlugin(plugins, parseIntentPlugin);
|
|
89
|
+
const id = `${CLIENT_PLUGIN}/open-shell`;
|
|
90
|
+
return createExtension({
|
|
91
|
+
id: CLIENT_PLUGIN,
|
|
92
|
+
filter: (node) => node.id === "root",
|
|
93
|
+
actions: () => [
|
|
94
|
+
{
|
|
95
|
+
id,
|
|
96
|
+
data: async () => {
|
|
97
|
+
await intentPlugin?.provides.intent.dispatch([
|
|
98
|
+
{
|
|
99
|
+
plugin: CLIENT_PLUGIN,
|
|
100
|
+
action: ClientAction.OPEN_SHELL
|
|
101
|
+
}
|
|
102
|
+
]);
|
|
103
|
+
},
|
|
104
|
+
properties: {
|
|
105
|
+
label: [
|
|
106
|
+
"open shell label",
|
|
107
|
+
{
|
|
108
|
+
ns: CLIENT_PLUGIN
|
|
109
|
+
}
|
|
110
|
+
],
|
|
111
|
+
icon: "ph--address-book--regular",
|
|
112
|
+
keyBinding: {
|
|
113
|
+
macos: "meta+shift+.",
|
|
114
|
+
// TODO(wittjosiah): Test on windows to see if it behaves the same as linux.
|
|
115
|
+
windows: "alt+shift+.",
|
|
116
|
+
linux: "alt+shift+>"
|
|
117
|
+
},
|
|
118
|
+
testId: "clientPlugin.openShell"
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
]
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
},
|
|
125
|
+
intent: {
|
|
126
|
+
resolver: async (intent) => {
|
|
127
|
+
switch (intent.action) {
|
|
128
|
+
case ClientAction.OPEN_SHELL:
|
|
129
|
+
await client.shell.open(intent.data?.layout);
|
|
130
|
+
return {
|
|
131
|
+
data: true
|
|
132
|
+
};
|
|
133
|
+
case ClientAction.CREATE_IDENTITY: {
|
|
134
|
+
const data = await client.halo.createIdentity();
|
|
135
|
+
return {
|
|
136
|
+
data,
|
|
137
|
+
intents: [
|
|
138
|
+
[
|
|
139
|
+
{
|
|
140
|
+
// NOTE: This action is hardcoded to avoid circular dependency with observability plugin.
|
|
141
|
+
action: "dxos.org/plugin/observability/send-event",
|
|
142
|
+
data: {
|
|
143
|
+
name: "identity.created"
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
]
|
|
147
|
+
]
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
case ClientAction.JOIN_IDENTITY: {
|
|
151
|
+
const data = await client.shell.joinIdentity({
|
|
152
|
+
invitationCode: intent.data?.invitationCode
|
|
153
|
+
});
|
|
154
|
+
return {
|
|
155
|
+
data,
|
|
156
|
+
intents: [
|
|
157
|
+
[
|
|
158
|
+
{
|
|
159
|
+
// NOTE: This action is hardcoded to avoid circular dependency with observability plugin.
|
|
160
|
+
action: "dxos.org/plugin/observability/send-event",
|
|
161
|
+
data: {
|
|
162
|
+
name: "identity.joined"
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
]
|
|
166
|
+
]
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
case ClientAction.SHARE_IDENTITY: {
|
|
170
|
+
const data = await client.shell.shareIdentity();
|
|
171
|
+
return {
|
|
172
|
+
data,
|
|
173
|
+
intents: [
|
|
174
|
+
[
|
|
175
|
+
{
|
|
176
|
+
// NOTE: This action is hardcoded to avoid circular dependency with observability plugin.
|
|
177
|
+
action: "dxos.org/plugin/observability/send-event",
|
|
178
|
+
data: {
|
|
179
|
+
name: "identity.shared",
|
|
180
|
+
properties: {
|
|
181
|
+
deviceKey: data.device?.deviceKey.truncate(),
|
|
182
|
+
deviceKind: data.device?.kind,
|
|
183
|
+
error: data.error?.message,
|
|
184
|
+
canceled: data.cancelled
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
]
|
|
189
|
+
]
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
};
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
// packages/plugins/plugin-client/src/index.ts
|
|
200
|
+
var src_default = ClientPlugin;
|
|
201
|
+
export {
|
|
202
|
+
ClientPlugin,
|
|
203
|
+
src_default as default,
|
|
204
|
+
parseClientPlugin,
|
|
205
|
+
parseSchemaPlugin
|
|
206
|
+
};
|
|
207
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/ClientPlugin.tsx", "../../../src/translations.ts", "../../../src/index.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Schema as S } from '@effect/schema';\nimport React from 'react';\n\nimport {\n filterPlugins,\n parseIntentPlugin,\n resolvePlugin,\n type GraphBuilderProvides,\n type IntentResolverProvides,\n type Plugin,\n type PluginDefinition,\n type TranslationsProvides,\n} from '@dxos/app-framework';\nimport { Config, Defaults, Envs, Local, Storage } from '@dxos/config';\nimport { registerSignalsRuntime } from '@dxos/echo-signals/react';\nimport { log } from '@dxos/log';\nimport { createExtension, type Node } from '@dxos/plugin-graph';\nimport { Client, type ClientOptions, ClientProvider } from '@dxos/react-client';\n\nimport meta, { CLIENT_PLUGIN, ClientAction } from './meta';\nimport translations from './translations';\n\nexport type ClientPluginOptions = ClientOptions & {\n /**\n * Used to track app-specific state in spaces.\n */\n appKey: string;\n\n /**\n * Run after the client has been initialized.\n */\n onClientInitialized?: (client: Client) => Promise<void>;\n\n /**\n * Run after the identity has been successfully initialized.\n * Run with client during plugin ready phase.\n */\n onReady?: (client: Client, plugins: Plugin[]) => Promise<void>;\n};\n\nexport type ClientPluginProvides = IntentResolverProvides &\n GraphBuilderProvides &\n TranslationsProvides & {\n client: Client;\n };\n\nexport const parseClientPlugin = (plugin?: Plugin) =>\n (plugin?.provides as any).client instanceof Client ? (plugin as Plugin<ClientPluginProvides>) : undefined;\n\nexport type SchemaProvides = {\n echo: {\n schema: S.Schema<any>[];\n };\n};\n\nexport const parseSchemaPlugin = (plugin?: Plugin) =>\n Array.isArray((plugin?.provides as any).echo?.schema) ? (plugin as Plugin<SchemaProvides>) : undefined;\n\nexport const ClientPlugin = ({\n appKey,\n onClientInitialized,\n onReady,\n ...options\n}: ClientPluginOptions): PluginDefinition<\n Omit<ClientPluginProvides, 'client'>,\n Pick<ClientPluginProvides, 'client'>\n> => {\n registerSignalsRuntime();\n\n let client: Client;\n let error: unknown = null;\n\n return {\n meta,\n initialize: async () => {\n const config = new Config(await Storage(), Envs(), Local(), Defaults());\n client = new Client({ config, ...options });\n\n try {\n await client.initialize();\n await onClientInitialized?.(client);\n\n // TODO(wittjosiah): Remove. This is a hack to get the app to boot with the new identity after a reset.\n client.reloaded.on(() => {\n client.halo.identity.subscribe(async (identity) => {\n if (identity) {\n window.location.href = window.location.origin;\n }\n });\n });\n } catch (err) {\n error = err;\n }\n\n return {\n client,\n context: ({ children }) => <ClientProvider client={client}>{children}</ClientProvider>,\n };\n },\n ready: async (plugins) => {\n if (error) {\n throw error;\n }\n\n await onReady?.(client, plugins);\n\n filterPlugins(plugins, parseSchemaPlugin).forEach((plugin) => {\n log('ready', { id: plugin.meta.id });\n client.addTypes(plugin.provides.echo.schema);\n });\n },\n unload: async () => {\n await client.destroy();\n },\n provides: {\n translations,\n graph: {\n builder: (plugins) => {\n const intentPlugin = resolvePlugin(plugins, parseIntentPlugin);\n const id = `${CLIENT_PLUGIN}/open-shell`;\n\n return createExtension({\n id: CLIENT_PLUGIN,\n filter: (node): node is Node<null> => node.id === 'root',\n actions: () => [\n {\n id,\n data: async () => {\n await intentPlugin?.provides.intent.dispatch([\n { plugin: CLIENT_PLUGIN, action: ClientAction.OPEN_SHELL },\n ]);\n },\n properties: {\n label: ['open shell label', { ns: CLIENT_PLUGIN }],\n icon: 'ph--address-book--regular',\n keyBinding: {\n macos: 'meta+shift+.',\n // TODO(wittjosiah): Test on windows to see if it behaves the same as linux.\n windows: 'alt+shift+.',\n linux: 'alt+shift+>',\n },\n testId: 'clientPlugin.openShell',\n },\n },\n ],\n });\n },\n },\n intent: {\n resolver: async (intent) => {\n switch (intent.action) {\n case ClientAction.OPEN_SHELL:\n await client.shell.open(intent.data?.layout);\n return { data: true };\n\n case ClientAction.CREATE_IDENTITY: {\n const data = await client.halo.createIdentity();\n return {\n data,\n intents: [\n [\n {\n // NOTE: This action is hardcoded to avoid circular dependency with observability plugin.\n action: 'dxos.org/plugin/observability/send-event',\n data: {\n name: 'identity.created',\n },\n },\n ],\n ],\n };\n }\n\n case ClientAction.JOIN_IDENTITY: {\n const data = await client.shell.joinIdentity({ invitationCode: intent.data?.invitationCode });\n return {\n data,\n intents: [\n [\n {\n // NOTE: This action is hardcoded to avoid circular dependency with observability plugin.\n action: 'dxos.org/plugin/observability/send-event',\n data: {\n name: 'identity.joined',\n },\n },\n ],\n ],\n };\n }\n\n case ClientAction.SHARE_IDENTITY: {\n const data = await client.shell.shareIdentity();\n return {\n data,\n intents: [\n [\n {\n // NOTE: This action is hardcoded to avoid circular dependency with observability plugin.\n action: 'dxos.org/plugin/observability/send-event',\n data: {\n name: 'identity.shared',\n properties: {\n deviceKey: data.device?.deviceKey.truncate(),\n deviceKind: data.device?.kind,\n error: data.error?.message,\n canceled: data.cancelled,\n },\n },\n },\n ],\n ],\n };\n }\n }\n },\n },\n },\n };\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { CLIENT_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [CLIENT_PLUGIN]: {\n 'open shell label': 'Open HALO',\n },\n },\n },\n];\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { ClientPlugin } from './ClientPlugin';\n\nexport default ClientPlugin;\n\nexport * from './ClientPlugin';\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["React", "filterPlugins", "parseIntentPlugin", "resolvePlugin", "Config", "Defaults", "Envs", "Local", "Storage", "registerSignalsRuntime", "log", "createExtension", "Client", "ClientProvider", "CLIENT_PLUGIN", "parseClientPlugin", "plugin", "provides", "client", "Client", "undefined", "parseSchemaPlugin", "Array", "isArray", "echo", "schema", "ClientPlugin", "appKey", "onClientInitialized", "onReady", "options", "registerSignalsRuntime", "error", "meta", "initialize", "config", "Config", "Storage", "Envs", "Local", "Defaults", "reloaded", "on", "halo", "identity", "subscribe", "window", "location", "href", "origin", "err", "context", "children", "ClientProvider", "ready", "plugins", "filterPlugins", "forEach", "log", "id", "addTypes", "unload", "destroy", "translations", "graph", "builder", "intentPlugin", "resolvePlugin", "parseIntentPlugin", "CLIENT_PLUGIN", "createExtension", "filter", "node", "actions", "data", "intent", "dispatch", "action", "ClientAction", "OPEN_SHELL", "properties", "label", "ns", "icon", "keyBinding", "macos", "windows", "linux", "testId", "resolver", "shell", "open", "layout", "CREATE_IDENTITY", "createIdentity", "intents", "name", "JOIN_IDENTITY", "joinIdentity", "invitationCode", "SHARE_IDENTITY", "shareIdentity", "deviceKey", "device", "truncate", "deviceKind", "kind", "message", "canceled", "cancelled", "ClientPlugin"]
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"inputs":{"packages/plugins/plugin-client/src/meta.ts":{"bytes":2186,"imports":[],"format":"esm"},"packages/plugins/plugin-client/src/translations.ts":{"bytes":1043,"imports":[{"path":"packages/plugins/plugin-client/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-client/src/ClientPlugin.tsx":{"bytes":24269,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/config","kind":"import-statement","external":true},{"path":"@dxos/echo-signals/react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-client/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-client/src/translations.ts","kind":"import-statement","original":"./translations"}],"format":"esm"},"packages/plugins/plugin-client/src/index.ts":{"bytes":782,"imports":[{"path":"packages/plugins/plugin-client/src/ClientPlugin.tsx","kind":"import-statement","original":"./ClientPlugin"},{"path":"packages/plugins/plugin-client/src/ClientPlugin.tsx","kind":"import-statement","original":"./ClientPlugin"}],"format":"esm"}},"outputs":{"packages/plugins/plugin-client/dist/lib/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":11796},"packages/plugins/plugin-client/dist/lib/node-esm/index.mjs":{"imports":[{"path":"packages/plugins/plugin-client/dist/lib/node-esm/chunk-HMR23AKU.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/config","kind":"import-statement","external":true},{"path":"@dxos/echo-signals/react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true}],"exports":["ClientPlugin","default","parseClientPlugin","parseSchemaPlugin"],"entryPoint":"packages/plugins/plugin-client/src/index.ts","inputs":{"packages/plugins/plugin-client/src/ClientPlugin.tsx":{"bytesInOutput":5953},"packages/plugins/plugin-client/src/translations.ts":{"bytesInOutput":134},"packages/plugins/plugin-client/src/index.ts":{"bytesInOutput":32}},"bytes":6644},"packages/plugins/plugin-client/dist/lib/node-esm/meta.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/plugins/plugin-client/dist/lib/node-esm/meta.mjs":{"imports":[{"path":"packages/plugins/plugin-client/dist/lib/node-esm/chunk-HMR23AKU.mjs","kind":"import-statement"}],"exports":["CLIENT_PLUGIN","ClientAction","default"],"entryPoint":"packages/plugins/plugin-client/src/meta.ts","inputs":{},"bytes":285},"packages/plugins/plugin-client/dist/lib/node-esm/chunk-HMR23AKU.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":969},"packages/plugins/plugin-client/dist/lib/node-esm/chunk-HMR23AKU.mjs":{"imports":[],"exports":["CLIENT_PLUGIN","ClientAction","meta_default"],"inputs":{"packages/plugins/plugin-client/src/meta.ts":{"bytesInOutput":644}},"bytes":888}}}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
CLIENT_PLUGIN,
|
|
4
|
+
ClientAction,
|
|
5
|
+
meta_default
|
|
6
|
+
} from "./chunk-HMR23AKU.mjs";
|
|
7
|
+
export {
|
|
8
|
+
CLIENT_PLUGIN,
|
|
9
|
+
ClientAction,
|
|
10
|
+
meta_default as default
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=meta.mjs.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { type Schema as S } from '@effect/schema';
|
|
1
2
|
import { type GraphBuilderProvides, type IntentResolverProvides, type Plugin, type PluginDefinition, type TranslationsProvides } from '@dxos/app-framework';
|
|
2
|
-
import { type S } from '@dxos/echo-schema';
|
|
3
3
|
import { Client, type ClientOptions } from '@dxos/react-client';
|
|
4
4
|
export type ClientPluginOptions = ClientOptions & {
|
|
5
5
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClientPlugin.d.ts","sourceRoot":"","sources":["../../../src/ClientPlugin.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ClientPlugin.d.ts","sourceRoot":"","sources":["../../../src/ClientPlugin.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,MAAM,IAAI,CAAC,EAAE,MAAM,gBAAgB,CAAC;AAGlD,OAAO,EAIL,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,MAAM,EACX,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EAC1B,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAkB,MAAM,oBAAoB,CAAC;AAKhF,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG;IAChD;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAExD;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAChE,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,sBAAsB,GACvD,oBAAoB,GACpB,oBAAoB,GAAG;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEJ,eAAO,MAAM,iBAAiB,YAAa,MAAM,6CAC0D,CAAC;AAE5G,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE;QACJ,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;KACzB,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,iBAAiB,YAAa,MAAM,uCACuD,CAAC;AAEzG,eAAO,MAAM,YAAY,yDAKtB,mBAAmB,KAAG,gBAAgB,CACvC,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAC,EACpC,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CA0JrC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../../src/meta.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../../src/meta.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,aAAa,2BAA2B,CAAC;;;;;AAEtD,wBAGuB;AAGvB,oBAAY,YAAY;IACtB,UAAU,wCAA2B;IACrC,eAAe,kDAAqC;IACpD,aAAa,gDAAmC;IAChD,cAAc,iDAAoC;CACnD"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/plugin-client",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.13-main.09887cd",
|
|
4
4
|
"description": "DXOS Surface plugin for DXOS Client",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -10,14 +10,16 @@
|
|
|
10
10
|
".": {
|
|
11
11
|
"browser": "./dist/lib/browser/index.mjs",
|
|
12
12
|
"node": {
|
|
13
|
-
"
|
|
13
|
+
"require": "./dist/lib/node/index.cjs",
|
|
14
|
+
"default": "./dist/lib/node-esm/index.mjs"
|
|
14
15
|
},
|
|
15
16
|
"types": "./dist/types/src/index.d.ts"
|
|
16
17
|
},
|
|
17
18
|
"./meta": {
|
|
18
19
|
"browser": "./dist/lib/browser/meta.mjs",
|
|
19
20
|
"node": {
|
|
20
|
-
"
|
|
21
|
+
"require": "./dist/lib/node/meta.cjs",
|
|
22
|
+
"default": "./dist/lib/node-esm/meta.mjs"
|
|
21
23
|
},
|
|
22
24
|
"types": "./dist/types/src/meta.d.ts"
|
|
23
25
|
}
|
|
@@ -36,28 +38,29 @@
|
|
|
36
38
|
],
|
|
37
39
|
"dependencies": {
|
|
38
40
|
"@phosphor-icons/react": "^2.1.5",
|
|
39
|
-
"@dxos/app-framework": "0.6.
|
|
40
|
-
"@dxos/
|
|
41
|
-
"@dxos/echo-
|
|
42
|
-
"@dxos/
|
|
43
|
-
"@dxos/
|
|
44
|
-
"@dxos/local-storage": "0.6.
|
|
45
|
-
"@dxos/
|
|
46
|
-
"@dxos/
|
|
47
|
-
"@dxos/react-
|
|
48
|
-
"@dxos/
|
|
41
|
+
"@dxos/app-framework": "0.6.13-main.09887cd",
|
|
42
|
+
"@dxos/echo-schema": "0.6.13-main.09887cd",
|
|
43
|
+
"@dxos/echo-signals": "0.6.13-main.09887cd",
|
|
44
|
+
"@dxos/invariant": "0.6.13-main.09887cd",
|
|
45
|
+
"@dxos/config": "0.6.13-main.09887cd",
|
|
46
|
+
"@dxos/local-storage": "0.6.13-main.09887cd",
|
|
47
|
+
"@dxos/log": "0.6.13-main.09887cd",
|
|
48
|
+
"@dxos/plugin-graph": "0.6.13-main.09887cd",
|
|
49
|
+
"@dxos/react-client": "0.6.13-main.09887cd",
|
|
50
|
+
"@dxos/react-ui": "0.6.13-main.09887cd"
|
|
49
51
|
},
|
|
50
52
|
"devDependencies": {
|
|
51
53
|
"@types/react": "~18.2.0",
|
|
52
54
|
"@types/react-dom": "~18.2.0",
|
|
53
55
|
"react": "~18.2.0",
|
|
54
56
|
"react-dom": "~18.2.0",
|
|
55
|
-
"vite": "
|
|
56
|
-
"@dxos/storybook-utils": "0.6.
|
|
57
|
+
"vite": "5.4.7",
|
|
58
|
+
"@dxos/storybook-utils": "0.6.13-main.09887cd"
|
|
57
59
|
},
|
|
58
60
|
"peerDependencies": {
|
|
59
|
-
"react": "^
|
|
60
|
-
"react
|
|
61
|
+
"@phosphor-icons/react": "^2.1.5",
|
|
62
|
+
"react": "~18.2.0",
|
|
63
|
+
"react-dom": "~18.2.0"
|
|
61
64
|
},
|
|
62
65
|
"publishConfig": {
|
|
63
66
|
"access": "public"
|
package/src/ClientPlugin.tsx
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { type Schema as S } from '@effect/schema';
|
|
6
6
|
import React from 'react';
|
|
7
7
|
|
|
8
8
|
import {
|
|
@@ -16,11 +16,10 @@ import {
|
|
|
16
16
|
type TranslationsProvides,
|
|
17
17
|
} from '@dxos/app-framework';
|
|
18
18
|
import { Config, Defaults, Envs, Local, Storage } from '@dxos/config';
|
|
19
|
-
import {
|
|
20
|
-
import { registerSignalRuntime } from '@dxos/echo-signals/react';
|
|
19
|
+
import { registerSignalsRuntime } from '@dxos/echo-signals/react';
|
|
21
20
|
import { log } from '@dxos/log';
|
|
22
21
|
import { createExtension, type Node } from '@dxos/plugin-graph';
|
|
23
|
-
import { Client, type ClientOptions,
|
|
22
|
+
import { Client, type ClientOptions, ClientProvider } from '@dxos/react-client';
|
|
24
23
|
|
|
25
24
|
import meta, { CLIENT_PLUGIN, ClientAction } from './meta';
|
|
26
25
|
import translations from './translations';
|
|
@@ -70,7 +69,7 @@ export const ClientPlugin = ({
|
|
|
70
69
|
Omit<ClientPluginProvides, 'client'>,
|
|
71
70
|
Pick<ClientPluginProvides, 'client'>
|
|
72
71
|
> => {
|
|
73
|
-
|
|
72
|
+
registerSignalsRuntime();
|
|
74
73
|
|
|
75
74
|
let client: Client;
|
|
76
75
|
let error: unknown = null;
|
|
@@ -99,12 +98,7 @@ export const ClientPlugin = ({
|
|
|
99
98
|
|
|
100
99
|
return {
|
|
101
100
|
client,
|
|
102
|
-
context: ({ children }) => {
|
|
103
|
-
// TODO(burdon): Use ClientProvider?
|
|
104
|
-
const status = useClientStatus(client);
|
|
105
|
-
return <ClientContext.Provider value={{ client, status }}>{children}</ClientContext.Provider>;
|
|
106
|
-
// return <ClientProvider client={client}>{children}</ClientProvider>;
|
|
107
|
-
},
|
|
101
|
+
context: ({ children }) => <ClientProvider client={client}>{children}</ClientProvider>,
|
|
108
102
|
};
|
|
109
103
|
},
|
|
110
104
|
ready: async (plugins) => {
|
|
@@ -142,8 +136,7 @@ export const ClientPlugin = ({
|
|
|
142
136
|
},
|
|
143
137
|
properties: {
|
|
144
138
|
label: ['open shell label', { ns: CLIENT_PLUGIN }],
|
|
145
|
-
icon:
|
|
146
|
-
iconSymbol: 'ph--address-book--regular',
|
|
139
|
+
icon: 'ph--address-book--regular',
|
|
147
140
|
keyBinding: {
|
|
148
141
|
macos: 'meta+shift+.',
|
|
149
142
|
// TODO(wittjosiah): Test on windows to see if it behaves the same as linux.
|
package/src/meta.ts
CHANGED
|
@@ -2,12 +2,14 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
+
import { type PluginMeta } from '@dxos/app-framework';
|
|
6
|
+
|
|
5
7
|
export const CLIENT_PLUGIN = 'dxos.org/plugin/client';
|
|
6
8
|
|
|
7
9
|
export default {
|
|
8
10
|
id: CLIENT_PLUGIN,
|
|
9
11
|
name: 'Client',
|
|
10
|
-
};
|
|
12
|
+
} satisfies PluginMeta;
|
|
11
13
|
|
|
12
14
|
const CLIENT_ACTION = `${CLIENT_PLUGIN}/action`;
|
|
13
15
|
export enum ClientAction {
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/meta.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nexport const CLIENT_PLUGIN = 'dxos.org/plugin/client';\n\nexport default {\n id: CLIENT_PLUGIN,\n name: 'Client',\n};\n\nconst CLIENT_ACTION = `${CLIENT_PLUGIN}/action`;\nexport enum ClientAction {\n OPEN_SHELL = `${CLIENT_ACTION}/SHELL`,\n CREATE_IDENTITY = `${CLIENT_ACTION}/CREATE_IDENTITY`,\n JOIN_IDENTITY = `${CLIENT_ACTION}/JOIN_IDENTITY`,\n SHARE_IDENTITY = `${CLIENT_ACTION}/SHARE_IDENTITY`,\n}\n"],
|
|
5
|
-
"mappings": ";AAIO,IAAMA,gBAAgB;AAE7B,IAAA,eAAe;EACbC,IAAID;EACJE,MAAM;AACR;AAEA,IAAMC,gBAAgB,GAAGH,aAAAA;;UACbI,eAAAA;8CACG,GAAGD,aAAAA,QAAqB,IAAA;mDACnB,GAAGA,aAAAA,kBAA+B,IAAA;iDACpC,GAAGA,aAAAA,gBAA6B,IAAA;kDAC/B,GAAGA,aAAAA,iBAA8B,IAAA;GAJxCC,iBAAAA,eAAAA,CAAAA,EAAAA;",
|
|
6
|
-
"names": ["CLIENT_PLUGIN", "id", "name", "CLIENT_ACTION", "ClientAction"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/meta.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nexport const CLIENT_PLUGIN = 'dxos.org/plugin/client';\n\nexport default {\n id: CLIENT_PLUGIN,\n name: 'Client',\n};\n\nconst CLIENT_ACTION = `${CLIENT_PLUGIN}/action`;\nexport enum ClientAction {\n OPEN_SHELL = `${CLIENT_ACTION}/SHELL`,\n CREATE_IDENTITY = `${CLIENT_ACTION}/CREATE_IDENTITY`,\n JOIN_IDENTITY = `${CLIENT_ACTION}/JOIN_IDENTITY`,\n SHARE_IDENTITY = `${CLIENT_ACTION}/SHARE_IDENTITY`,\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AAIO,IAAMA,gBAAgB;AAE7B,IAAA,eAAe;EACbC,IAAID;EACJE,MAAM;AACR;AAEA,IAAMC,gBAAgB,GAAGH,aAAAA;;UACbI,eAAAA;8CACG,GAAGD,aAAAA,QAAqB,IAAA;mDACnB,GAAGA,aAAAA,kBAA+B,IAAA;iDACpC,GAAGA,aAAAA,gBAA6B,IAAA;kDAC/B,GAAGA,aAAAA,iBAA8B,IAAA;GAJxCC,iBAAAA,eAAAA,CAAAA,EAAAA;",
|
|
6
|
-
"names": ["CLIENT_PLUGIN", "id", "name", "CLIENT_ACTION", "ClientAction"]
|
|
7
|
-
}
|