@dxos/plugin-script 0.6.10-main.e92b5eb → 0.6.10-staging.7621a6e

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.
Files changed (91) hide show
  1. package/README.md +45 -0
  2. package/dist/lib/browser/ScriptEditor-WNCGR5OU.mjs +452 -0
  3. package/dist/lib/browser/ScriptEditor-WNCGR5OU.mjs.map +7 -0
  4. package/dist/lib/browser/{TypescriptEditor-PIRIDDUS.mjs → TypescriptEditor-XTGRVCMY.mjs} +2 -2
  5. package/dist/lib/browser/{chunk-ISMNAD3P.mjs → chunk-DL5XQRQM.mjs} +13 -7
  6. package/dist/lib/browser/{chunk-ISMNAD3P.mjs.map → chunk-DL5XQRQM.mjs.map} +3 -3
  7. package/dist/lib/browser/{chunk-D4O723CR.mjs → chunk-DX5CSOBP.mjs} +22 -5
  8. package/dist/lib/browser/chunk-DX5CSOBP.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-RHEZ5LUU.mjs +229 -0
  10. package/dist/lib/browser/chunk-RHEZ5LUU.mjs.map +7 -0
  11. package/dist/lib/browser/edge/index.mjs +1 -1
  12. package/dist/lib/browser/index.mjs +88 -195
  13. package/dist/lib/browser/index.mjs.map +4 -4
  14. package/dist/lib/browser/meta.json +1 -1
  15. package/dist/lib/node/ScriptEditor-RR7AVOQL.cjs +465 -0
  16. package/dist/lib/node/ScriptEditor-RR7AVOQL.cjs.map +7 -0
  17. package/dist/lib/node/{TypescriptEditor-OTWJUIWB.cjs → TypescriptEditor-CRONCQSI.cjs} +7 -7
  18. package/dist/lib/node/{TypescriptEditor-OTWJUIWB.cjs.map → TypescriptEditor-CRONCQSI.cjs.map} +2 -2
  19. package/dist/lib/node/chunk-4GTXIELQ.cjs +252 -0
  20. package/dist/lib/node/chunk-4GTXIELQ.cjs.map +7 -0
  21. package/dist/lib/node/{chunk-HN3AVLUL.cjs → chunk-PFH3ROEH.cjs} +16 -10
  22. package/dist/lib/node/{chunk-HN3AVLUL.cjs.map → chunk-PFH3ROEH.cjs.map} +3 -3
  23. package/dist/lib/node/{chunk-ITLHJMWP.cjs → chunk-RXI576K3.cjs} +24 -7
  24. package/dist/lib/node/chunk-RXI576K3.cjs.map +7 -0
  25. package/dist/lib/node/edge/index.cjs +8 -8
  26. package/dist/lib/node/edge/index.cjs.map +1 -1
  27. package/dist/lib/node/index.cjs +85 -194
  28. package/dist/lib/node/index.cjs.map +4 -4
  29. package/dist/lib/node/meta.json +1 -1
  30. package/dist/types/src/ScriptPlugin.d.ts +1 -4
  31. package/dist/types/src/ScriptPlugin.d.ts.map +1 -1
  32. package/dist/types/src/bundler/bundler.d.ts +39 -0
  33. package/dist/types/src/bundler/bundler.d.ts.map +1 -0
  34. package/dist/types/src/bundler/bundler.test.d.ts +2 -0
  35. package/dist/types/src/bundler/bundler.test.d.ts.map +1 -0
  36. package/dist/types/src/bundler/index.d.ts +2 -0
  37. package/dist/types/src/bundler/index.d.ts.map +1 -0
  38. package/dist/types/src/compiler/compiler.browser.test.d.ts +2 -0
  39. package/dist/types/src/compiler/compiler.browser.test.d.ts.map +1 -0
  40. package/dist/types/src/compiler/compiler.d.ts +9 -34
  41. package/dist/types/src/compiler/compiler.d.ts.map +1 -1
  42. package/dist/types/src/components/DetailsPanel.d.ts +9 -0
  43. package/dist/types/src/components/DetailsPanel.d.ts.map +1 -0
  44. package/dist/types/src/components/ScriptBlock/FrameContainer/FrameContainer.d.ts +2 -2
  45. package/dist/types/src/components/ScriptBlock/FrameContainer/FrameContainer.d.ts.map +1 -1
  46. package/dist/types/src/components/ScriptBlock/ScriptBlock.d.ts.map +1 -1
  47. package/dist/types/src/components/ScriptEditor.d.ts +3 -2
  48. package/dist/types/src/components/ScriptEditor.d.ts.map +1 -1
  49. package/dist/types/src/components/Toolbar.d.ts +9 -7
  50. package/dist/types/src/components/Toolbar.d.ts.map +1 -1
  51. package/dist/types/src/components/Toolbar.stories.d.ts +1 -1
  52. package/dist/types/src/components/TypescriptEditor.d.ts +3 -1
  53. package/dist/types/src/components/TypescriptEditor.d.ts.map +1 -1
  54. package/dist/types/src/components/TypescriptEditor.stories.d.ts +1 -1
  55. package/dist/types/src/components/index.d.ts +2 -2
  56. package/dist/types/src/components/index.d.ts.map +1 -1
  57. package/dist/types/src/data/templates.md.d.ts +3 -0
  58. package/dist/types/src/data/templates.md.d.ts.map +1 -0
  59. package/dist/types/src/edge/functions.d.ts.map +1 -1
  60. package/dist/types/src/index.d.ts +1 -0
  61. package/dist/types/src/index.d.ts.map +1 -1
  62. package/dist/types/src/translations.d.ts +3 -2
  63. package/dist/types/src/translations.d.ts.map +1 -1
  64. package/package.json +38 -33
  65. package/src/ScriptPlugin.tsx +29 -10
  66. package/src/bundler/bundler.test.ts +44 -0
  67. package/src/bundler/bundler.ts +246 -0
  68. package/src/bundler/index.ts +5 -0
  69. package/src/compiler/compiler.browser.test.ts +18 -0
  70. package/src/compiler/compiler.ts +31 -190
  71. package/src/compiler/index.ts +1 -1
  72. package/src/components/DetailsPanel.tsx +218 -0
  73. package/src/components/ScriptBlock/FrameContainer/FrameContainer.tsx +2 -2
  74. package/src/components/ScriptBlock/ScriptBlock.tsx +10 -7
  75. package/src/components/ScriptEditor.tsx +71 -13
  76. package/src/components/Toolbar.tsx +69 -91
  77. package/src/components/TypescriptEditor.tsx +18 -4
  78. package/src/data/templates.md.ts +44 -0
  79. package/src/edge/functions.ts +9 -2
  80. package/src/index.ts +1 -0
  81. package/src/translations.ts +4 -3
  82. package/dist/lib/browser/ScriptEditor-MSQDR6D7.mjs +0 -241
  83. package/dist/lib/browser/ScriptEditor-MSQDR6D7.mjs.map +0 -7
  84. package/dist/lib/browser/chunk-D4O723CR.mjs.map +0 -7
  85. package/dist/lib/node/ScriptEditor-KBSACFYK.cjs +0 -258
  86. package/dist/lib/node/ScriptEditor-KBSACFYK.cjs.map +0 -7
  87. package/dist/lib/node/chunk-ITLHJMWP.cjs.map +0 -7
  88. package/dist/types/src/compiler/compiler.test.d.ts +0 -2
  89. package/dist/types/src/compiler/compiler.test.d.ts.map +0 -1
  90. package/src/compiler/compiler.test.ts +0 -17
  91. /package/dist/lib/browser/{TypescriptEditor-PIRIDDUS.mjs.map → TypescriptEditor-XTGRVCMY.mjs.map} +0 -0
@@ -1,258 +0,0 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var ScriptEditor_KBSACFYK_exports = {};
30
- __export(ScriptEditor_KBSACFYK_exports, {
31
- ScriptEditor: () => ScriptEditor,
32
- default: () => ScriptEditor_default
33
- });
34
- module.exports = __toCommonJS(ScriptEditor_KBSACFYK_exports);
35
- var import_chunk_HN3AVLUL = require("./chunk-HN3AVLUL.cjs");
36
- var import_chunk_VW2POILW = require("./chunk-VW2POILW.cjs");
37
- var import_chunk_4VMNBXWU = require("./chunk-4VMNBXWU.cjs");
38
- var import_chunk_ITLHJMWP = require("./chunk-ITLHJMWP.cjs");
39
- var import_react = __toESM(require("react"));
40
- var import_log = require("@dxos/log");
41
- var import_react_client = require("@dxos/react-client");
42
- var import_echo = require("@dxos/react-client/echo");
43
- var import_halo = require("@dxos/react-client/halo");
44
- var import_react_ui = require("@dxos/react-ui");
45
- var import_react_ui_editor = require("@dxos/react-ui-editor");
46
- var import_react_ui_theme = require("@dxos/react-ui-theme");
47
- var import_react2 = require("@phosphor-icons/react");
48
- var import_react3 = __toESM(require("react"));
49
- var import_react_ui2 = require("@dxos/react-ui");
50
- var import_react_ui_theme2 = require("@dxos/react-ui-theme");
51
- var Toolbar = ({ binding: _binding, onBindingChange, deployed, onDeploy, functionUrl, error }) => {
52
- const { t } = (0, import_react_ui2.useTranslation)(import_chunk_4VMNBXWU.SCRIPT_PLUGIN);
53
- const [pending, setPending] = (0, import_react3.useState)(false);
54
- const [editing, setEditing] = (0, import_react3.useState)(false);
55
- const [binding, setBinding] = (0, import_react3.useState)(_binding);
56
- const inputRef = (0, import_react3.useRef)(null);
57
- (0, import_react3.useEffect)(() => {
58
- if (!editing && _binding !== binding) {
59
- setBinding(_binding);
60
- }
61
- }, [
62
- _binding
63
- ]);
64
- const handleEdit = () => {
65
- setEditing(true);
66
- inputRef.current?.focus();
67
- };
68
- const handleSave = () => {
69
- setEditing(false);
70
- onBindingChange(binding);
71
- };
72
- const handleCancel = () => {
73
- setEditing(false);
74
- };
75
- const handleCopyLink = async () => {
76
- if (!functionUrl) {
77
- return;
78
- }
79
- await navigator.clipboard.writeText(functionUrl);
80
- };
81
- const handleDeploy = async () => {
82
- setPending(true);
83
- await onDeploy?.();
84
- setPending(false);
85
- };
86
- return /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.DensityProvider, {
87
- density: "fine"
88
- }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.ElevationProvider, {
89
- elevation: "chrome"
90
- }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Toolbar.Root, {
91
- classNames: "p-1 is-full shrink-0 overflow-x-auto overflow-y-hidden",
92
- style: {
93
- contain: "layout"
94
- }
95
- }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Input.Root, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Input.Label, null, t("binding label")), /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Input.TextInput, {
96
- ref: inputRef,
97
- classNames: "!is-auto",
98
- disabled: !editing,
99
- value: binding,
100
- onChange: (event) => setBinding(event.target.value.toUpperCase())
101
- }), editing ? /* @__PURE__ */ import_react3.default.createElement(import_react3.default.Fragment, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Button, {
102
- variant: "ghost",
103
- onClick: handleCancel
104
- }, /* @__PURE__ */ import_react3.default.createElement(import_react2.X, {
105
- className: (0, import_react_ui_theme2.getSize)(4)
106
- })), /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Button, {
107
- variant: "ghost",
108
- onClick: handleSave
109
- }, /* @__PURE__ */ import_react3.default.createElement(import_react2.Check, {
110
- className: (0, import_react_ui_theme2.getSize)(4)
111
- }))) : /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Root, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Trigger, {
112
- asChild: true
113
- }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Button, {
114
- variant: "ghost",
115
- onClick: handleEdit
116
- }, /* @__PURE__ */ import_react3.default.createElement(import_react2.PencilSimple, {
117
- className: (0, import_react_ui_theme2.getSize)(4)
118
- }))), /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Portal, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Content, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Arrow, null), t("edit binding label"))))), /* @__PURE__ */ import_react3.default.createElement("div", {
119
- role: "separator",
120
- className: "grow"
121
- }), error ? /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Root, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Trigger, null, /* @__PURE__ */ import_react3.default.createElement(import_react2.WarningCircle, {
122
- className: (0, import_react_ui_theme2.getSize)(4)
123
- })), /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Portal, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Content, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Arrow, null), error))) : deployed ? /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Root, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Trigger, null, /* @__PURE__ */ import_react3.default.createElement(import_react2.Checks, {
124
- className: (0, import_react_ui_theme2.getSize)(4)
125
- })), /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Portal, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Content, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Arrow, null), t("deployed label")))) : null, functionUrl && /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Root, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Trigger, {
126
- asChild: true
127
- }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Toolbar.Button, {
128
- variant: "ghost",
129
- onClick: handleCopyLink
130
- }, /* @__PURE__ */ import_react3.default.createElement(import_react2.Link, {
131
- className: (0, import_react_ui_theme2.getSize)(4)
132
- }))), /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Portal, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Content, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Arrow, null), t("copy link label")))), /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Root, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Trigger, {
133
- asChild: true
134
- }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Toolbar.Button, {
135
- variant: "ghost",
136
- onClick: handleDeploy,
137
- disabled: pending
138
- }, pending ? /* @__PURE__ */ import_react3.default.createElement(import_react2.CircleNotch, {
139
- className: (0, import_react_ui_theme2.mx)("spinner", (0, import_react_ui_theme2.getSize)(4))
140
- }) : /* @__PURE__ */ import_react3.default.createElement(import_react2.UploadSimple, {
141
- className: (0, import_react_ui_theme2.getSize)(4)
142
- }))), /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Portal, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Content, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Arrow, null), pending ? t("pending label") : t("deploy label")))))));
143
- };
144
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-script/src/components/ScriptEditor.tsx";
145
- var ScriptEditor = ({ script, role }) => {
146
- const { t } = (0, import_react_ui.useTranslation)(import_chunk_4VMNBXWU.SCRIPT_PLUGIN);
147
- const client = (0, import_react_client.useClient)();
148
- const identity = (0, import_halo.useIdentity)();
149
- const space = (0, import_echo.getSpace)(script);
150
- const [fn] = (0, import_echo.useQuery)(space, import_echo.Filter.schema(import_chunk_VW2POILW.FunctionType, (fn2) => fn2.source === script));
151
- const extensions = (0, import_react.useMemo)(() => [
152
- (0, import_react_ui_editor.listener)({
153
- onChange: (text) => {
154
- if (script.source && script.source?.content !== text) {
155
- script.changed = true;
156
- }
157
- }
158
- }),
159
- (0, import_react_ui_editor.createDataExtensions)({
160
- id: script.id,
161
- text: script.source && (0, import_echo.createDocAccessor)(script.source, [
162
- "content"
163
- ]),
164
- space,
165
- identity
166
- })
167
- ], [
168
- script,
169
- script.source,
170
- space,
171
- identity
172
- ]);
173
- const initialValue = (0, import_react.useMemo)(() => script.source?.content, [
174
- script.source
175
- ]);
176
- const existingFunctionUrl = fn && (0, import_chunk_HN3AVLUL.getUserFunctionUrlInMetadata)((0, import_echo.getMeta)(fn));
177
- const [error, setError] = (0, import_react.useState)();
178
- const handleBindingChange = (0, import_react.useCallback)((binding) => {
179
- fn.binding = binding;
180
- }, [
181
- fn
182
- ]);
183
- const handleDeploy = (0, import_react.useCallback)(async () => {
184
- if (!script.source || !identity || !space) {
185
- return;
186
- }
187
- setError(void 0);
188
- try {
189
- const existingFunctionId = existingFunctionUrl?.split("/").at(-1);
190
- const ownerDid = existingFunctionUrl?.split("/").at(-2) ?? (0, import_chunk_HN3AVLUL.publicKeyToDid)(identity.identityKey);
191
- const { result, functionId, functionVersionNumber, errorMessage } = await (0, import_chunk_HN3AVLUL.uploadWorkerFunction)({
192
- clientConfig: client.config,
193
- halo: client.halo,
194
- ownerDid,
195
- functionId: existingFunctionId,
196
- source: script.source.content
197
- });
198
- if (result !== "success" || functionId === void 0 || functionVersionNumber === void 0) {
199
- throw new Error(errorMessage);
200
- }
201
- import_log.log.info("function uploaded", {
202
- functionId,
203
- functionVersionNumber
204
- }, {
205
- F: __dxlog_file,
206
- L: 91,
207
- S: void 0,
208
- C: (f, a) => f(...a)
209
- });
210
- if (fn) {
211
- fn.version = functionVersionNumber;
212
- }
213
- const deployedFunction = fn ?? space.db.add((0, import_echo.create)(import_chunk_VW2POILW.FunctionType, {
214
- version: functionVersionNumber,
215
- source: script
216
- }));
217
- const meta = (0, import_echo.getMeta)(deployedFunction);
218
- (0, import_chunk_HN3AVLUL.setUserFunctionUrlInMetadata)(meta, `/${ownerDid}/${functionId}`);
219
- script.changed = false;
220
- } catch (err) {
221
- import_log.log.catch(err, void 0, {
222
- F: __dxlog_file,
223
- L: 101,
224
- S: void 0,
225
- C: (f, a) => f(...a)
226
- });
227
- setError(t("upload failed label"));
228
- }
229
- }, [
230
- fn,
231
- existingFunctionUrl,
232
- script,
233
- script.name,
234
- script.source
235
- ]);
236
- return /* @__PURE__ */ import_react.default.createElement("div", {
237
- role: "none",
238
- className: (0, import_react_ui_theme.mx)(role === "article" && "row-span-2", "flex flex-col is-full bs-full overflow-hidden")
239
- }, /* @__PURE__ */ import_react.default.createElement(Toolbar, {
240
- binding: fn?.binding ?? "",
241
- onBindingChange: handleBindingChange,
242
- deployed: Boolean(existingFunctionUrl) && !script.changed,
243
- onDeploy: handleDeploy,
244
- functionUrl: existingFunctionUrl,
245
- error
246
- }), /* @__PURE__ */ import_react.default.createElement(import_chunk_ITLHJMWP.TypescriptEditor, {
247
- id: script.id,
248
- initialValue,
249
- extensions,
250
- className: "flex is-full bs-full overflow-hidden"
251
- }));
252
- };
253
- var ScriptEditor_default = ScriptEditor;
254
- // Annotate the CommonJS export names for ESM import in node:
255
- 0 && (module.exports = {
256
- ScriptEditor
257
- });
258
- //# sourceMappingURL=ScriptEditor-KBSACFYK.cjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/ScriptEditor.tsx", "../../../src/components/Toolbar.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type DID } from 'iso-did/types';\nimport React, { useCallback, useMemo, useState } from 'react';\n\nimport { log } from '@dxos/log';\nimport { useClient } from '@dxos/react-client';\nimport { create, createDocAccessor, Filter, getMeta, getSpace, useQuery } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { useTranslation } from '@dxos/react-ui';\nimport { createDataExtensions, listener } from '@dxos/react-ui-editor';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { Toolbar } from './Toolbar';\nimport { TypescriptEditor } from './TypescriptEditor';\nimport {\n getUserFunctionUrlInMetadata,\n publicKeyToDid,\n setUserFunctionUrlInMetadata,\n uploadWorkerFunction,\n} from '../edge';\nimport { SCRIPT_PLUGIN } from '../meta';\nimport { FunctionType, type ScriptType } from '../types';\n\nexport type ScriptEditorProps = {\n script: ScriptType;\n role?: string;\n};\n\nexport const ScriptEditor = ({ script, role }: ScriptEditorProps) => {\n const { t } = useTranslation(SCRIPT_PLUGIN);\n const client = useClient();\n const identity = useIdentity();\n const space = getSpace(script);\n const [fn] = useQuery(\n space,\n Filter.schema(FunctionType, (fn) => fn.source === script),\n );\n const extensions = useMemo(\n () => [\n listener({\n onChange: (text) => {\n if (script.source && script.source?.content !== text) {\n script.changed = true;\n }\n },\n }),\n createDataExtensions({\n id: script.id,\n text: script.source && createDocAccessor(script.source, ['content']),\n space,\n identity,\n }),\n ],\n [script, script.source, space, identity],\n );\n const initialValue = useMemo(() => script.source?.content, [script.source]);\n const existingFunctionUrl = fn && getUserFunctionUrlInMetadata(getMeta(fn));\n const [error, setError] = useState<string>();\n\n const handleBindingChange = useCallback(\n (binding: string) => {\n fn.binding = binding;\n },\n [fn],\n );\n\n const handleDeploy = useCallback(async () => {\n if (!script.source || !identity || !space) {\n return;\n }\n\n setError(undefined);\n\n try {\n const existingFunctionId = existingFunctionUrl?.split('/').at(-1);\n const ownerDid = (existingFunctionUrl?.split('/').at(-2) as DID) ?? publicKeyToDid(identity.identityKey);\n\n const { result, functionId, functionVersionNumber, errorMessage } = await uploadWorkerFunction({\n clientConfig: client.config,\n halo: client.halo,\n ownerDid,\n functionId: existingFunctionId,\n source: script.source.content,\n });\n if (result !== 'success' || functionId === undefined || functionVersionNumber === undefined) {\n throw new Error(errorMessage);\n }\n log.info('function uploaded', { functionId, functionVersionNumber });\n if (fn) {\n fn.version = functionVersionNumber;\n }\n const deployedFunction =\n fn ?? space.db.add(create(FunctionType, { version: functionVersionNumber, source: script }));\n const meta = getMeta(deployedFunction);\n setUserFunctionUrlInMetadata(meta, `/${ownerDid}/${functionId}`);\n script.changed = false;\n } catch (err: any) {\n log.catch(err);\n setError(t('upload failed label'));\n }\n }, [fn, existingFunctionUrl, script, script.name, script.source]);\n\n return (\n <div\n role='none'\n className={mx(role === 'article' && 'row-span-2', 'flex flex-col is-full bs-full overflow-hidden')}\n >\n <Toolbar\n binding={fn?.binding ?? ''}\n onBindingChange={handleBindingChange}\n deployed={Boolean(existingFunctionUrl) && !script.changed}\n onDeploy={handleDeploy}\n functionUrl={existingFunctionUrl}\n error={error}\n />\n <TypescriptEditor\n id={script.id}\n initialValue={initialValue}\n extensions={extensions}\n className='flex is-full bs-full overflow-hidden'\n />\n </div>\n );\n};\n\nexport default ScriptEditor;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Check, Checks, CircleNotch, Link, PencilSimple, UploadSimple, WarningCircle, X } from '@phosphor-icons/react';\nimport React, { useEffect, useRef, useState } from 'react';\n\nimport {\n Button,\n DensityProvider,\n ElevationProvider,\n Input,\n Toolbar as NaturalToolbar,\n Tooltip,\n useTranslation,\n} from '@dxos/react-ui';\nimport { getSize, mx } from '@dxos/react-ui-theme';\n\nimport { SCRIPT_PLUGIN } from '../meta';\n\nexport type ToolbarProps = {\n binding: string;\n onBindingChange: (binding: string) => void;\n deployed?: boolean;\n onDeploy?: () => Promise<void>;\n functionUrl?: string;\n error?: string;\n};\n\nexport const Toolbar = ({\n binding: _binding,\n onBindingChange,\n deployed,\n onDeploy,\n functionUrl,\n error,\n}: ToolbarProps) => {\n const { t } = useTranslation(SCRIPT_PLUGIN);\n const [pending, setPending] = useState(false);\n const [editing, setEditing] = useState(false);\n const [binding, setBinding] = useState(_binding);\n const inputRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n if (!editing && _binding !== binding) {\n setBinding(_binding);\n }\n }, [_binding]);\n\n const handleEdit = () => {\n setEditing(true);\n inputRef.current?.focus();\n };\n\n const handleSave = () => {\n setEditing(false);\n onBindingChange(binding);\n };\n\n const handleCancel = () => {\n setEditing(false);\n };\n\n const handleCopyLink = async () => {\n if (!functionUrl) {\n return;\n }\n\n await navigator.clipboard.writeText(functionUrl);\n };\n\n const handleDeploy = async () => {\n setPending(true);\n await onDeploy?.();\n setPending(false);\n };\n\n return (\n <DensityProvider density='fine'>\n <ElevationProvider elevation='chrome'>\n <NaturalToolbar.Root\n classNames='p-1 is-full shrink-0 overflow-x-auto overflow-y-hidden'\n style={{ contain: 'layout' }}\n >\n {/* TODO(wittjosiah): Binding input shouldn't be in the toolbar. */}\n <Input.Root>\n <Input.Label>{t('binding label')}</Input.Label>\n <Input.TextInput\n ref={inputRef}\n classNames='!is-auto'\n disabled={!editing}\n value={binding}\n onChange={(event) => setBinding(event.target.value.toUpperCase())}\n />\n {editing ? (\n <>\n <Button variant='ghost' onClick={handleCancel}>\n <X className={getSize(4)} />\n </Button>\n <Button variant='ghost' onClick={handleSave}>\n <Check className={getSize(4)} />\n </Button>\n </>\n ) : (\n <Tooltip.Root>\n <Tooltip.Trigger asChild>\n <Button variant='ghost' onClick={handleEdit}>\n <PencilSimple className={getSize(4)} />\n </Button>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content>\n <Tooltip.Arrow />\n {t('edit binding label')}\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n )}\n </Input.Root>\n <div role='separator' className='grow' />\n {/* TODO(wittjosiah): Better treatment for status indicators in toolbar? */}\n {error ? (\n <Tooltip.Root>\n <Tooltip.Trigger>\n <WarningCircle className={getSize(4)} />\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content>\n <Tooltip.Arrow />\n {error}\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n ) : deployed ? (\n <Tooltip.Root>\n <Tooltip.Trigger>\n <Checks className={getSize(4)} />\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content>\n <Tooltip.Arrow />\n {t('deployed label')}\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n ) : null}\n {functionUrl && (\n <Tooltip.Root>\n <Tooltip.Trigger asChild>\n <NaturalToolbar.Button variant='ghost' onClick={handleCopyLink}>\n <Link className={getSize(4)} />\n </NaturalToolbar.Button>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content>\n <Tooltip.Arrow />\n {t('copy link label')}\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n )}\n <Tooltip.Root>\n <Tooltip.Trigger asChild>\n <NaturalToolbar.Button variant='ghost' onClick={handleDeploy} disabled={pending}>\n {pending ? (\n <CircleNotch className={mx('spinner', getSize(4))} />\n ) : (\n <UploadSimple className={getSize(4)} />\n )}\n </NaturalToolbar.Button>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content>\n <Tooltip.Arrow />\n {pending ? t('pending label') : t('deploy label')}\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n </NaturalToolbar.Root>\n </ElevationProvider>\n </DensityProvider>\n );\n};\n"],
5
- "mappings": "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",
6
- "names": ["import_react", "import_react_ui", "import_react_ui_theme", "Toolbar", "binding", "_binding", "onBindingChange", "deployed", "onDeploy", "functionUrl", "error", "t", "useTranslation", "SCRIPT_PLUGIN", "pending", "setPending", "useState", "editing", "setEditing", "setBinding", "inputRef", "useRef", "useEffect", "handleEdit", "current", "focus", "handleSave", "handleCancel", "handleCopyLink", "navigator", "clipboard", "writeText", "handleDeploy", "React", "DensityProvider", "density", "ElevationProvider", "elevation", "NaturalToolbar", "Root", "classNames", "style", "contain", "Input", "Label", "TextInput", "ref", "disabled", "value", "onChange", "event", "target", "toUpperCase", "Button", "variant", "onClick", "X", "className", "getSize", "Check", "Tooltip", "Trigger", "asChild", "PencilSimple", "Portal", "Content", "Arrow", "div", "role", "WarningCircle", "Checks", "Link", "CircleNotch", "mx", "UploadSimple", "ScriptEditor", "script", "client", "useClient", "identity", "useIdentity", "space", "getSpace", "fn", "useQuery", "Filter", "schema", "FunctionType", "source", "extensions", "useMemo", "listener", "text", "content", "changed", "createDataExtensions", "id", "createDocAccessor", "initialValue", "existingFunctionUrl", "getUserFunctionUrlInMetadata", "getMeta", "setError", "handleBindingChange", "useCallback", "undefined", "existingFunctionId", "split", "at", "ownerDid", "publicKeyToDid", "identityKey", "result", "functionId", "functionVersionNumber", "errorMessage", "uploadWorkerFunction", "clientConfig", "config", "halo", "Error", "log", "info", "version", "deployedFunction", "db", "add", "create", "meta", "setUserFunctionUrlInMetadata", "err", "catch", "name", "Boolean", "TypescriptEditor"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/TypescriptEditor.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { javascript } from '@codemirror/lang-javascript';\nimport { defaultHighlightStyle, syntaxHighlighting } from '@codemirror/language';\nimport { oneDarkHighlightStyle } from '@codemirror/theme-one-dark';\nimport React from 'react';\n\nimport { useThemeContext } from '@dxos/react-ui';\nimport {\n autocomplete,\n createBasicExtensions,\n createThemeExtensions,\n editorContent,\n editorGutter,\n editorMonospace,\n useTextEditor,\n type UseTextEditorProps,\n} from '@dxos/react-ui-editor';\nimport { nonNullable } from '@dxos/util';\n\nexport type TypescriptEditorProps = {\n id: string;\n className?: string;\n scrollPastEnd?: boolean;\n} & Pick<UseTextEditorProps, 'initialValue' | 'extensions' | 'scrollTo' | 'selection'>;\n\nexport const TypescriptEditor = ({\n id,\n extensions,\n initialValue,\n scrollTo,\n selection,\n className,\n scrollPastEnd,\n}: TypescriptEditorProps) => {\n const { themeMode } = useThemeContext();\n const { parentRef, focusAttributes } = useTextEditor(\n () => ({\n id,\n initialValue,\n extensions: [\n extensions,\n // TODO(wittjosiah): Highlight active line doesn't work.\n createBasicExtensions({ highlightActiveLine: true, indentWithTab: true, lineNumbers: true, scrollPastEnd }),\n // TODO(wittjosiah): Factor out syntax highlighting to theme extensions.\n themeMode === 'dark' ? syntaxHighlighting(oneDarkHighlightStyle) : syntaxHighlighting(defaultHighlightStyle),\n createThemeExtensions({\n themeMode,\n slots: {\n content: { className: editorContent },\n },\n }),\n editorGutter,\n editorMonospace,\n javascript({ typescript: true }),\n autocomplete(),\n ].filter(nonNullable),\n selection,\n scrollTo,\n }),\n [id, initialValue, extensions, themeMode, selection, scrollTo],\n );\n\n return <div ref={parentRef} className={className} {...focusAttributes} />;\n};\n\nexport default TypescriptEditor;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,6BAA2B;AAC3B,sBAA0D;AAC1D,4BAAsC;AACtC,mBAAkB;AAElB,sBAAgC;AAChC,6BASO;AACP,kBAA4B;AAQrB,IAAMA,mBAAmB,CAAC,EAC/BC,IACAC,YACAC,cACAC,UACAC,WACAC,WACAC,cAAa,MACS;AACtB,QAAM,EAAEC,UAAS,QAAKC,iCAAAA;AACtB,QAAM,EAAEC,WAAWC,gBAAe,QAAKC,sCACrC,OAAO;IACLX;IACAE;IACAD,YAAY;MACVA;;UAEAW,8CAAsB;QAAEC,qBAAqB;QAAMC,eAAe;QAAMC,aAAa;QAAMT;MAAc,CAAA;;MAEzGC,cAAc,aAASS,oCAAmBC,2CAAAA,QAAyBD,oCAAmBE,qCAAAA;UACtFC,8CAAsB;QACpBZ;QACAa,OAAO;UACLC,SAAS;YAAEhB,WAAWiB;UAAc;QACtC;MACF,CAAA;MACAC;MACAC;UACAC,mCAAW;QAAEC,YAAY;MAAK,CAAA;UAC9BC,qCAAAA;MACAC,OAAOC,uBAAAA;IACTzB;IACAD;EACF,IACA;IAACH;IAAIE;IAAcD;IAAYM;IAAWH;IAAWD;GAAS;AAGhE,SAAO,6BAAA2B,QAAA,cAACC,OAAAA;IAAIC,KAAKvB;IAAWJ;IAAuB,GAAGK;;AACxD;AAEA,IAAA,2BAAeX;",
6
- "names": ["TypescriptEditor", "id", "extensions", "initialValue", "scrollTo", "selection", "className", "scrollPastEnd", "themeMode", "useThemeContext", "parentRef", "focusAttributes", "useTextEditor", "createBasicExtensions", "highlightActiveLine", "indentWithTab", "lineNumbers", "syntaxHighlighting", "oneDarkHighlightStyle", "defaultHighlightStyle", "createThemeExtensions", "slots", "content", "editorContent", "editorGutter", "editorMonospace", "javascript", "typescript", "autocomplete", "filter", "nonNullable", "React", "div", "ref"]
7
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=compiler.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compiler.test.d.ts","sourceRoot":"","sources":["../../../../src/compiler/compiler.test.ts"],"names":[],"mappings":""}
@@ -1,17 +0,0 @@
1
- //
2
- // Copyright 2022 DXOS.org
3
- //
4
-
5
- import { expect } from 'chai';
6
-
7
- import { describe, test } from '@dxos/test';
8
-
9
- import { Compiler } from './compiler';
10
-
11
- describe('Compiler', () => {
12
- test('Basic', async () => {
13
- const compiler = new Compiler({ platform: 'node', providedModules: [] });
14
- const result = await compiler.compile('const x = 100'); // TODO(burdon): Test import.
15
- expect(result).to.exist;
16
- });
17
- });