@dxos/plugin-script 0.8.4-main.c1de068 → 0.8.4-main.dedc0f3

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 (161) hide show
  1. package/dist/lib/browser/{DeploymentDialog-M4QIHTDR.mjs → DeploymentDialog-QZSTVNIS.mjs} +3 -3
  2. package/dist/lib/browser/{ScriptContainer-Z6SIGRRC.mjs → ScriptContainer-DNNA6XC6.mjs} +14 -11
  3. package/dist/lib/browser/ScriptContainer-DNNA6XC6.mjs.map +7 -0
  4. package/dist/lib/browser/{app-graph-builder-HLQ7K3BT.mjs → app-graph-builder-IABOSTBK.mjs} +2 -2
  5. package/dist/lib/{node-esm/app-graph-builder-7EYIHWH4.mjs.map → browser/app-graph-builder-IABOSTBK.mjs.map} +3 -3
  6. package/dist/lib/browser/blueprint-definition-AR7ITBCD.mjs +28 -0
  7. package/dist/lib/browser/blueprint-definition-AR7ITBCD.mjs.map +7 -0
  8. package/dist/lib/browser/{chunk-3U6DTUH3.mjs → chunk-6CAH7VIE.mjs} +14 -14
  9. package/dist/lib/browser/chunk-6CAH7VIE.mjs.map +7 -0
  10. package/dist/lib/browser/{chunk-FIM2MVNJ.mjs → chunk-GZKWMME3.mjs} +42 -41
  11. package/dist/lib/browser/chunk-GZKWMME3.mjs.map +7 -0
  12. package/dist/lib/browser/{chunk-FMDXKOP7.mjs → chunk-NXKU3BNX.mjs} +33 -44
  13. package/dist/lib/browser/chunk-NXKU3BNX.mjs.map +7 -0
  14. package/dist/lib/browser/chunk-RNGIQIEJ.mjs +88 -0
  15. package/dist/lib/browser/chunk-RNGIQIEJ.mjs.map +7 -0
  16. package/dist/lib/browser/{chunk-P4HQKUCP.mjs → chunk-YCZPTTFO.mjs} +3 -3
  17. package/dist/lib/browser/chunk-YCZPTTFO.mjs.map +7 -0
  18. package/dist/lib/browser/{compiler-CXCUA4UQ.mjs → compiler-2HJH34GM.mjs} +20 -4
  19. package/dist/lib/browser/compiler-2HJH34GM.mjs.map +7 -0
  20. package/dist/lib/browser/index.mjs +14 -13
  21. package/dist/lib/browser/index.mjs.map +3 -3
  22. package/dist/lib/browser/{intent-resolver-7B77IG3N.mjs → intent-resolver-F4YSRPJI.mjs} +8 -10
  23. package/dist/lib/browser/intent-resolver-F4YSRPJI.mjs.map +7 -0
  24. package/dist/lib/browser/meta.json +1 -1
  25. package/dist/lib/browser/{react-surface-FYYXZA7C.mjs → react-surface-BBHFU6MI.mjs} +6 -6
  26. package/dist/lib/browser/react-surface-BBHFU6MI.mjs.map +7 -0
  27. package/dist/lib/browser/templates/index.mjs +1 -1
  28. package/dist/lib/node-esm/{DeploymentDialog-3KPRWFE7.mjs → DeploymentDialog-G6EHEPXN.mjs} +3 -3
  29. package/dist/lib/node-esm/{ScriptContainer-KPU75HHI.mjs → ScriptContainer-KPYZN2KY.mjs} +14 -11
  30. package/dist/lib/node-esm/ScriptContainer-KPYZN2KY.mjs.map +7 -0
  31. package/dist/lib/node-esm/{app-graph-builder-7EYIHWH4.mjs → app-graph-builder-CQTTAYHP.mjs} +2 -2
  32. package/dist/lib/{browser/app-graph-builder-HLQ7K3BT.mjs.map → node-esm/app-graph-builder-CQTTAYHP.mjs.map} +3 -3
  33. package/dist/lib/node-esm/blueprint-definition-TJY4TX6S.mjs +30 -0
  34. package/dist/lib/node-esm/blueprint-definition-TJY4TX6S.mjs.map +7 -0
  35. package/dist/lib/node-esm/{chunk-RT43MACC.mjs → chunk-2GBESIHU.mjs} +14 -14
  36. package/dist/lib/node-esm/chunk-2GBESIHU.mjs.map +7 -0
  37. package/dist/lib/node-esm/chunk-GWHLP5LM.mjs +90 -0
  38. package/dist/lib/node-esm/chunk-GWHLP5LM.mjs.map +7 -0
  39. package/dist/lib/node-esm/{chunk-7NMI4CEU.mjs → chunk-HUHVIOL5.mjs} +42 -41
  40. package/dist/lib/node-esm/chunk-HUHVIOL5.mjs.map +7 -0
  41. package/dist/lib/node-esm/{chunk-XJPK3IYI.mjs → chunk-M642JUOZ.mjs} +33 -44
  42. package/dist/lib/node-esm/chunk-M642JUOZ.mjs.map +7 -0
  43. package/dist/lib/node-esm/{chunk-QKK3NDHW.mjs → chunk-ZA36GO4T.mjs} +3 -3
  44. package/dist/lib/node-esm/chunk-ZA36GO4T.mjs.map +7 -0
  45. package/dist/lib/node-esm/{compiler-EPFKQXPE.mjs → compiler-7SP27RA6.mjs} +20 -4
  46. package/dist/lib/node-esm/compiler-7SP27RA6.mjs.map +7 -0
  47. package/dist/lib/node-esm/index.mjs +14 -13
  48. package/dist/lib/node-esm/index.mjs.map +3 -3
  49. package/dist/lib/node-esm/{intent-resolver-FRZGS4TB.mjs → intent-resolver-CGQYRWWD.mjs} +8 -10
  50. package/dist/lib/node-esm/intent-resolver-CGQYRWWD.mjs.map +7 -0
  51. package/dist/lib/node-esm/meta.json +1 -1
  52. package/dist/lib/node-esm/{react-surface-V32NWHKN.mjs → react-surface-UWIWPKZD.mjs} +6 -6
  53. package/dist/lib/node-esm/react-surface-UWIWPKZD.mjs.map +7 -0
  54. package/dist/lib/node-esm/templates/index.mjs +1 -1
  55. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
  56. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  57. package/dist/types/src/capabilities/artifact-definition.d.ts +1 -1
  58. package/dist/types/src/capabilities/artifact-definition.d.ts.map +1 -1
  59. package/dist/types/src/capabilities/blueprint-definition.d.ts +5 -0
  60. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
  61. package/dist/types/src/capabilities/compiler.d.ts +1 -1
  62. package/dist/types/src/capabilities/compiler.d.ts.map +1 -1
  63. package/dist/types/src/capabilities/index.d.ts +6 -6
  64. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  65. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  66. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  67. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  68. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  69. package/dist/types/src/capabilities/settings.d.ts +1 -1
  70. package/dist/types/src/compiler/compiler.d.ts.map +1 -1
  71. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts +1 -1
  72. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts.map +1 -1
  73. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts +139 -12
  74. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts.map +1 -1
  75. package/dist/types/src/components/DeploymentDialog/index.d.ts +1 -1
  76. package/dist/types/src/components/DeploymentDialog/index.d.ts.map +1 -1
  77. package/dist/types/src/components/FrameContainer/FrameContainer.d.ts.map +1 -1
  78. package/dist/types/src/components/ScriptContainer.d.ts +1 -1
  79. package/dist/types/src/components/ScriptContainer.d.ts.map +1 -1
  80. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts.map +1 -1
  81. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts +7 -10
  82. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts.map +1 -1
  83. package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts.map +1 -1
  84. package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts.map +1 -1
  85. package/dist/types/src/components/TestPanel/TestContainer.d.ts.map +1 -1
  86. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts.map +1 -1
  87. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts +10 -3
  88. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts.map +1 -1
  89. package/dist/types/src/components/index.d.ts +1 -4
  90. package/dist/types/src/components/index.d.ts.map +1 -1
  91. package/dist/types/src/hooks/deploy.d.ts +5 -4
  92. package/dist/types/src/hooks/deploy.d.ts.map +1 -1
  93. package/dist/types/src/hooks/useCreateAndDeployScriptTemplates.d.ts.map +1 -1
  94. package/dist/types/src/templates/data-generator.d.ts.map +1 -1
  95. package/dist/types/src/translations.d.ts +1 -0
  96. package/dist/types/src/translations.d.ts.map +1 -1
  97. package/dist/types/src/util/deploy.d.ts +3 -3
  98. package/dist/types/src/util/deploy.d.ts.map +1 -1
  99. package/dist/types/src/util/functions.d.ts.map +1 -1
  100. package/dist/types/tsconfig.tsbuildinfo +1 -1
  101. package/package.json +64 -61
  102. package/src/ScriptPlugin.tsx +4 -4
  103. package/src/capabilities/app-graph-builder.ts +2 -2
  104. package/src/capabilities/artifact-definition.ts +7 -11
  105. package/src/capabilities/blueprint-definition.ts +30 -0
  106. package/src/capabilities/compiler.ts +2 -1
  107. package/src/capabilities/index.ts +1 -1
  108. package/src/capabilities/intent-resolver.ts +2 -5
  109. package/src/capabilities/react-surface.tsx +3 -2
  110. package/src/compiler/compiler.ts +1 -1
  111. package/src/components/DeploymentDialog/DeploymentDialog.stories.tsx +28 -16
  112. package/src/components/DeploymentDialog/DeploymentDialog.tsx +5 -5
  113. package/src/components/DeploymentDialog/index.ts +1 -1
  114. package/src/components/FrameContainer/FrameContainer.tsx +3 -2
  115. package/src/components/ScriptContainer.tsx +3 -2
  116. package/src/components/ScriptToolbar/ScriptToolbar.stories.tsx +19 -14
  117. package/src/components/ScriptToolbar/ScriptToolbar.tsx +14 -4
  118. package/src/components/Settings/ScriptObjectSettings.tsx +19 -23
  119. package/src/components/Settings/ScriptPluginSettings.tsx +33 -28
  120. package/src/components/TestPanel/TestContainer.tsx +2 -1
  121. package/src/components/TestPanel/TestPanel.tsx +1 -1
  122. package/src/components/TypescriptEditor/TypescriptEditor.stories.tsx +9 -16
  123. package/src/components/TypescriptEditor/TypescriptEditor.tsx +6 -4
  124. package/src/hooks/deploy.ts +11 -11
  125. package/src/hooks/template.ts +1 -1
  126. package/src/hooks/useCreateAndDeployScriptTemplates.ts +1 -0
  127. package/src/templates/chess.ts +1 -1
  128. package/src/templates/data-generator.ts +7 -3
  129. package/src/templates/discord.ts +4 -4
  130. package/src/templates/forex-effect.ts +3 -3
  131. package/src/templates/forex.ts +1 -1
  132. package/src/templates/gmail.ts +13 -54
  133. package/src/translations.ts +1 -0
  134. package/src/util/deploy.ts +20 -33
  135. package/src/util/functions.ts +4 -4
  136. package/dist/lib/browser/ScriptContainer-Z6SIGRRC.mjs.map +0 -7
  137. package/dist/lib/browser/artifact-definition-24Q3IHOU.mjs +0 -249
  138. package/dist/lib/browser/artifact-definition-24Q3IHOU.mjs.map +0 -7
  139. package/dist/lib/browser/chunk-3U6DTUH3.mjs.map +0 -7
  140. package/dist/lib/browser/chunk-FIM2MVNJ.mjs.map +0 -7
  141. package/dist/lib/browser/chunk-FMDXKOP7.mjs.map +0 -7
  142. package/dist/lib/browser/chunk-P4HQKUCP.mjs.map +0 -7
  143. package/dist/lib/browser/chunk-R4R7VOFY.mjs +0 -88
  144. package/dist/lib/browser/chunk-R4R7VOFY.mjs.map +0 -7
  145. package/dist/lib/browser/compiler-CXCUA4UQ.mjs.map +0 -7
  146. package/dist/lib/browser/intent-resolver-7B77IG3N.mjs.map +0 -7
  147. package/dist/lib/browser/react-surface-FYYXZA7C.mjs.map +0 -7
  148. package/dist/lib/node-esm/ScriptContainer-KPU75HHI.mjs.map +0 -7
  149. package/dist/lib/node-esm/artifact-definition-WAJFALUI.mjs +0 -250
  150. package/dist/lib/node-esm/artifact-definition-WAJFALUI.mjs.map +0 -7
  151. package/dist/lib/node-esm/chunk-7NMI4CEU.mjs.map +0 -7
  152. package/dist/lib/node-esm/chunk-F5GFJ3PY.mjs +0 -90
  153. package/dist/lib/node-esm/chunk-F5GFJ3PY.mjs.map +0 -7
  154. package/dist/lib/node-esm/chunk-QKK3NDHW.mjs.map +0 -7
  155. package/dist/lib/node-esm/chunk-RT43MACC.mjs.map +0 -7
  156. package/dist/lib/node-esm/chunk-XJPK3IYI.mjs.map +0 -7
  157. package/dist/lib/node-esm/compiler-EPFKQXPE.mjs.map +0 -7
  158. package/dist/lib/node-esm/intent-resolver-FRZGS4TB.mjs.map +0 -7
  159. package/dist/lib/node-esm/react-surface-V32NWHKN.mjs.map +0 -7
  160. /package/dist/lib/browser/{DeploymentDialog-M4QIHTDR.mjs.map → DeploymentDialog-QZSTVNIS.mjs.map} +0 -0
  161. /package/dist/lib/node-esm/{DeploymentDialog-3KPRWFE7.mjs.map → DeploymentDialog-G6EHEPXN.mjs.map} +0 -0
@@ -2,7 +2,7 @@ import { createRequire } from 'node:module';const require = createRequire(import
2
2
  import {
3
3
  useDeployState,
4
4
  useToolbarState
5
- } from "./chunk-RT43MACC.mjs";
5
+ } from "./chunk-2GBESIHU.mjs";
6
6
  import {
7
7
  SCRIPT_PLUGIN,
8
8
  meta
@@ -11,13 +11,13 @@ import {
11
11
  // src/components/Settings/ScriptObjectSettings.tsx
12
12
  import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
13
13
  import { Octokit } from "@octokit/core";
14
- import React, { useCallback, useEffect, useState } from "react";
15
- import { createIntent, SettingsAction, useIntentDispatcher } from "@dxos/app-framework";
16
- import { FunctionType, getInvocationUrl, getUserFunctionUrlInMetadata } from "@dxos/functions";
14
+ import React, { useCallback, useState } from "react";
15
+ import { SettingsAction, createIntent, useIntentDispatcher } from "@dxos/app-framework";
16
+ import { FunctionType, getInvocationUrl, getUserFunctionIdInMetadata } from "@dxos/functions";
17
17
  import { log } from "@dxos/log";
18
18
  import { useClient } from "@dxos/react-client";
19
- import { Filter, getMeta, getSpace, Ref, useQuery } from "@dxos/react-client/echo";
20
- import { Button, Clipboard, Input, useControlledState, useTranslation } from "@dxos/react-ui";
19
+ import { Filter, Ref, getMeta, getSpace, useQuery } from "@dxos/react-client/echo";
20
+ import { Button, Clipboard, Input, useAsyncEffect, useControlledState, useTranslation } from "@dxos/react-ui";
21
21
  import { DataType } from "@dxos/schema";
22
22
  var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-script/src/components/Settings/ScriptObjectSettings.tsx";
23
23
  var ScriptObjectSettings = ({ object }) => {
@@ -56,8 +56,8 @@ var Binding = ({ object }) => {
56
56
  const [fn] = useQuery(space, Filter.type(FunctionType, {
57
57
  source: Ref.make(object)
58
58
  }));
59
- const functionPath = fn && getUserFunctionUrlInMetadata(getMeta(fn));
60
- const functionUrl = functionPath && getInvocationUrl(functionPath, client.config.values.runtime?.services?.edge?.url ?? "", {
59
+ const functionId = fn && getUserFunctionIdInMetadata(getMeta(fn));
60
+ const functionUrl = functionId && getInvocationUrl(functionId, client.config.values.runtime?.services?.edge?.url ?? "", {
61
61
  spaceId: space?.id
62
62
  });
63
63
  const [binding, setBinding] = useControlledState(fn?.binding ?? "");
@@ -116,33 +116,30 @@ var Publishing = ({ object }) => {
116
116
  }));
117
117
  const gistKey = getMeta(object).keys.find(({ source }) => source === "github.com");
118
118
  const [gistUrl, setGistUrl] = useState();
119
- useEffect(() => {
119
+ useAsyncEffect(async () => {
120
120
  const token = githubToken?.token;
121
121
  const gistId = gistKey?.id;
122
122
  if (!token || !gistId) {
123
123
  setGistUrl(void 0);
124
124
  return;
125
125
  }
126
- const timeout = setTimeout(async () => {
127
- try {
128
- const octokit = new Octokit({
129
- auth: githubToken.token
130
- });
131
- const response = await octokit.request("GET /gists/{gist_id}", {
132
- gist_id: gistId
133
- });
134
- setGistUrl(response.data.html_url);
135
- } catch (err) {
136
- log.catch(err, void 0, {
137
- F: __dxlog_file,
138
- L: 135,
139
- S: void 0,
140
- C: (f, a) => f(...a)
141
- });
142
- setGistUrl(void 0);
143
- }
144
- });
145
- return () => clearTimeout(timeout);
126
+ try {
127
+ const octokit = new Octokit({
128
+ auth: githubToken.token
129
+ });
130
+ const response = await octokit.request("GET /gists/{gist_id}", {
131
+ gist_id: gistId
132
+ });
133
+ setGistUrl(response.data.html_url);
134
+ } catch (err) {
135
+ log.catch(err, void 0, {
136
+ F: __dxlog_file,
137
+ L: 134,
138
+ S: void 0,
139
+ C: (f, a) => f(...a)
140
+ });
141
+ setGistUrl(void 0);
142
+ }
146
143
  }, [
147
144
  githubToken,
148
145
  gistKey
@@ -219,7 +216,7 @@ import React2 from "react";
219
216
  import { useClient as useClient2 } from "@dxos/react-client";
220
217
  import { Button as Button2, Select, useTranslation as useTranslation2 } from "@dxos/react-ui";
221
218
  import { EditorInputModes } from "@dxos/react-ui-editor";
222
- import { DeprecatedFormContainer, DeprecatedFormInput } from "@dxos/react-ui-form";
219
+ import { ControlGroup, ControlItemInput, ControlPage, ControlSection } from "@dxos/react-ui-form";
223
220
  var ScriptPluginSettings = ({ settings }) => {
224
221
  var _effect = _useSignals2();
225
222
  try {
@@ -246,12 +243,16 @@ var ScriptPluginSettings = ({ settings }) => {
246
243
  }
247
244
  ]);
248
245
  };
249
- return /* @__PURE__ */ React2.createElement(DeprecatedFormContainer, null, /* @__PURE__ */ React2.createElement(DeprecatedFormInput, {
250
- label: t("authenticate action label")
246
+ return /* @__PURE__ */ React2.createElement(ControlPage, null, /* @__PURE__ */ React2.createElement(ControlSection, {
247
+ title: t("settings title", {
248
+ ns: meta.id
249
+ })
250
+ }, /* @__PURE__ */ React2.createElement(ControlGroup, null, /* @__PURE__ */ React2.createElement(ControlItemInput, {
251
+ title: t("authenticate action label")
251
252
  }, /* @__PURE__ */ React2.createElement(Button2, {
252
253
  onClick: handleAuthenticate
253
- }, t("authenticate button label"))), /* @__PURE__ */ React2.createElement(DeprecatedFormInput, {
254
- label: t("editor input mode label")
254
+ }, t("authenticate button label"))), /* @__PURE__ */ React2.createElement(ControlItemInput, {
255
+ title: t("editor input mode label")
255
256
  }, /* @__PURE__ */ React2.createElement(Select.Root, {
256
257
  value: settings.editorInputMode ?? "default",
257
258
  onValueChange: (value) => {
@@ -262,7 +263,7 @@ var ScriptPluginSettings = ({ settings }) => {
262
263
  }), /* @__PURE__ */ React2.createElement(Select.Portal, null, /* @__PURE__ */ React2.createElement(Select.Content, null, /* @__PURE__ */ React2.createElement(Select.Viewport, null, EditorInputModes.map((mode) => /* @__PURE__ */ React2.createElement(Select.Option, {
263
264
  key: mode,
264
265
  value: mode
265
- }, t(`settings editor input mode ${mode} label`)))))))));
266
+ }, t(`settings editor input mode ${mode} label`)))), /* @__PURE__ */ React2.createElement(Select.Arrow, null))))))));
266
267
  } finally {
267
268
  _effect.f();
268
269
  }
@@ -270,7 +271,7 @@ var ScriptPluginSettings = ({ settings }) => {
270
271
 
271
272
  // src/components/TestPanel/TestPanel.tsx
272
273
  import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
273
- import React3, { forwardRef, useEffect as useEffect2, useRef, useState as useState2 } from "react";
274
+ import React3, { forwardRef, useEffect, useRef, useState as useState2 } from "react";
274
275
  import { log as log2 } from "@dxos/log";
275
276
  import { Avatar, Icon, Input as Input2, Toolbar, useTranslation as useTranslation3 } from "@dxos/react-ui";
276
277
  import { SyntaxHighlighter } from "@dxos/react-ui-syntax-highlighter";
@@ -292,7 +293,7 @@ var TestPanel = ({ classNames, functionUrl }) => {
292
293
  }
293
294
  };
294
295
  const controller = useRef();
295
- useEffect2(() => {
296
+ useEffect(() => {
296
297
  return () => {
297
298
  handleStop();
298
299
  };
@@ -500,7 +501,7 @@ var MessageItem = ({ classNames, message }) => {
500
501
  className: mx(wrapper, type === "request" && "bg-primary-400 dark:bg-primary-600")
501
502
  }, text || "\xD8"), data && /* @__PURE__ */ React3.createElement(SyntaxHighlighter, {
502
503
  language: "json",
503
- className: mx(wrapper, "px-8 py-2 text-xs")
504
+ className: mx(wrapper, "text-xs")
504
505
  }, JSON.stringify(data, null, 2)));
505
506
  } finally {
506
507
  _effect.f();
@@ -541,8 +542,8 @@ var TestContainer = ({ script }) => {
541
542
 
542
543
  // src/components/index.ts
543
544
  import { lazy } from "react";
544
- var ScriptContainer = lazy(() => import("./ScriptContainer-KPU75HHI.mjs"));
545
- var DeploymentDialog = lazy(() => import("./DeploymentDialog-3KPRWFE7.mjs"));
545
+ var ScriptContainer = lazy(() => import("./ScriptContainer-KPYZN2KY.mjs"));
546
+ var DeploymentDialog = lazy(() => import("./DeploymentDialog-G6EHEPXN.mjs"));
546
547
 
547
548
  export {
548
549
  ScriptObjectSettings,
@@ -553,4 +554,4 @@ export {
553
554
  ScriptContainer,
554
555
  DeploymentDialog
555
556
  };
556
- //# sourceMappingURL=chunk-7NMI4CEU.mjs.map
557
+ //# sourceMappingURL=chunk-HUHVIOL5.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/Settings/ScriptObjectSettings.tsx", "../../../src/components/Settings/ScriptPluginSettings.tsx", "../../../src/components/TestPanel/TestPanel.tsx", "../../../src/components/TestPanel/TestContainer.tsx", "../../../src/components/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { Octokit } from '@octokit/core';\nimport React, { type ChangeEvent, useCallback, useState } from 'react';\n\nimport { SettingsAction, createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { FunctionType, type ScriptType, getInvocationUrl, getUserFunctionIdInMetadata } from '@dxos/functions';\nimport { log } from '@dxos/log';\nimport { useClient } from '@dxos/react-client';\nimport { Filter, Ref, getMeta, getSpace, useQuery } from '@dxos/react-client/echo';\nimport { Button, Clipboard, Input, useAsyncEffect, useControlledState, useTranslation } from '@dxos/react-ui';\nimport { DataType } from '@dxos/schema';\n\nimport { SCRIPT_PLUGIN } from '../../meta';\n\nexport type ScriptObjectSettingsProps = {\n object: ScriptType;\n};\n\nexport const ScriptObjectSettings = ({ object }: ScriptObjectSettingsProps) => {\n return (\n <>\n <Binding object={object} />\n <Publishing object={object} />\n </>\n );\n};\n\nexport const ScriptProperties = ({ object }: ScriptObjectSettingsProps) => {\n const { t } = useTranslation(SCRIPT_PLUGIN);\n return (\n <Input.Root>\n <Input.Label>{t('description label')}</Input.Label>\n <Input.TextInput\n placeholder={t('description placeholder')}\n value={object.description ?? ''}\n onChange={(event) => {\n object.description = event.target.value;\n }}\n />\n </Input.Root>\n );\n};\n\nconst Binding = ({ object }: ScriptObjectSettingsProps) => {\n const { t } = useTranslation(SCRIPT_PLUGIN);\n const client = useClient();\n const space = getSpace(object);\n const [fn] = useQuery(space, Filter.type(FunctionType, { source: Ref.make(object) }));\n\n const functionId = fn && getUserFunctionIdInMetadata(getMeta(fn));\n const functionUrl =\n functionId &&\n getInvocationUrl(functionId, client.config.values.runtime?.services?.edge?.url ?? '', {\n spaceId: space?.id,\n });\n\n const [binding, setBinding] = useControlledState(fn?.binding ?? '');\n const handleBindingChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n setBinding(event.target.value);\n },\n [setBinding],\n );\n\n const handleBindingBlur = useCallback(() => {\n fn.binding = binding;\n }, [fn, binding]);\n\n if (!fn || !functionUrl) {\n return null;\n }\n\n // TODO(burdon): Use form.\n return (\n <div role='form' className='flex flex-col gap-2 mlb-cardSpacingBlock'>\n <h2>{t('remote function settings heading')}</h2>\n <Input.Root>\n <div role='none' className='flex flex-col gap-1'>\n <Input.Label>{t('function url label')}</Input.Label>\n <div role='none' className='flex gap-1'>\n <Input.TextInput\n disabled\n value={functionUrl}\n onChange={(event) => {\n fn.name = event.target.value;\n }}\n />\n <Clipboard.IconButton value={functionUrl} />\n </div>\n </div>\n </Input.Root>\n <Input.Root>\n <div role='none' className='flex flex-col gap-1'>\n <Input.Label>{t('function binding label')}</Input.Label>\n <Input.TextInput\n placeholder={t('function binding placeholder')}\n value={binding}\n onChange={handleBindingChange}\n onBlur={handleBindingBlur}\n />\n </div>\n </Input.Root>\n </div>\n );\n};\n\n// TODO(burdon): Move to separate tab?\nconst Publishing = ({ object }: ScriptObjectSettingsProps) => {\n const { t } = useTranslation(SCRIPT_PLUGIN);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const space = getSpace(object);\n const [githubToken] = useQuery(space, Filter.type(DataType.AccessToken, { source: 'github.com' }));\n const gistKey = getMeta(object).keys.find(({ source }) => source === 'github.com');\n const [gistUrl, setGistUrl] = useState<string | undefined>();\n\n useAsyncEffect(async () => {\n const token = githubToken?.token;\n const gistId = gistKey?.id;\n if (!token || !gistId) {\n setGistUrl(undefined);\n return;\n }\n\n try {\n const octokit = new Octokit({ auth: githubToken.token });\n const response = await octokit.request('GET /gists/{gist_id}', {\n gist_id: gistId,\n });\n setGistUrl(response.data.html_url);\n } catch (err) {\n log.catch(err);\n setGistUrl(undefined);\n }\n }, [githubToken, gistKey]);\n\n const handleOpenTokenManager = useCallback(\n () => dispatch(createIntent(SettingsAction.Open, { plugin: 'dxos.org/plugin/token-manager' })),\n [],\n );\n\n const [publishing, setPublishing] = useState(false);\n const handlePublish = useCallback(async () => {\n setPublishing(true);\n const octokit = new Octokit({ auth: githubToken.token });\n const source = await object.source.load();\n const filename = object.name ? kebabize(object.name) : 'composer-script';\n const files = { [`${filename}.ts`]: { content: source.content } };\n\n try {\n // TODO(wittjosiah): Factor out to intent.\n const meta = getMeta(object);\n const githubKey = meta.keys.find(({ source }) => source === 'github.com');\n const gistId = githubKey?.id;\n if (gistId) {\n await octokit.request('PATCH /gists/{gist_id}', {\n gist_id: gistId,\n files,\n });\n } else {\n const response = await octokit.request('POST /gists', {\n public: true,\n files,\n });\n if (response.data.id) {\n meta.keys.push({ source: 'github.com', id: response.data.id });\n }\n }\n } finally {\n setPublishing(false);\n }\n }, [object, githubToken]);\n\n return (\n <div className='flex flex-col gap-4 mlb-cardSpacingBlock'>\n <div>\n <h2>{t('script publish settings label')}</h2>\n <p className='text-description text-sm'>{t('script publish settings description')}</p>\n </div>\n {!githubToken && (\n <div className='flex flex-col gap-2'>\n <span>{t('no github token label')}</span>\n <Button onClick={handleOpenTokenManager}>{t('open token manager label')}</Button>\n </div>\n )}\n {githubToken && (\n <div className='flex justify-end gap-2'>\n {gistUrl && <Clipboard.IconButton value={gistUrl} />}\n <Button disabled={publishing} onClick={handlePublish}>\n {t(publishing ? 'publishing label' : 'publish label')}\n </Button>\n </div>\n )}\n </div>\n );\n};\n\n// TODO(wittjosiah): Factor out.\n// From https://stackoverflow.com/a/67243723/2804332\nconst kebabize = (str: string) => str.replace(/[A-Z]+(?![a-z])|[A-Z]/g, ($, ofs) => (ofs ? '-' : '') + $.toLowerCase());\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type Credential } from '@dxos/protocols/proto/dxos/halo/credentials';\nimport { useClient } from '@dxos/react-client';\nimport { Button, Select, useTranslation } from '@dxos/react-ui';\nimport { type EditorInputMode, EditorInputModes } from '@dxos/react-ui-editor';\nimport { ControlGroup, ControlItemInput, ControlPage, ControlSection } from '@dxos/react-ui-form';\n\nimport { meta } from '../../meta';\nimport { type ScriptSettingsProps } from '../../types';\n\nexport const ScriptPluginSettings = ({ settings }: { settings: ScriptSettingsProps }) => {\n const { t } = useTranslation(meta.id);\n const client = useClient();\n\n // TODO(burdon): Check token.\n const handleAuthenticate = async () => {\n const { identityKey } = client.halo.identity.get()!;\n await client.halo.writeCredentials([\n {\n issuer: identityKey,\n issuanceDate: new Date(),\n subject: {\n id: identityKey,\n assertion: {\n '@type': 'dxos.halo.credentials.ServiceAccess',\n serverName: 'hub.dxos.network',\n serverKey: identityKey,\n identityKey,\n capabilities: ['composer:beta'],\n },\n },\n } satisfies Credential,\n ]);\n };\n\n return (\n <ControlPage>\n <ControlSection title={t('settings title', { ns: meta.id })}>\n <ControlGroup>\n {/* TODO(wittjosiah): Hide outside of dev environments. */}\n <ControlItemInput title={t('authenticate action label')}>\n <Button onClick={handleAuthenticate}>{t('authenticate button label')}</Button>\n </ControlItemInput>\n\n <ControlItemInput title={t('editor input mode label')}>\n <Select.Root\n value={settings.editorInputMode ?? 'default'}\n onValueChange={(value) => {\n settings.editorInputMode = value as EditorInputMode;\n }}\n >\n <Select.TriggerButton placeholder={t('select editor input mode placeholder')} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {EditorInputModes.map((mode) => (\n <Select.Option key={mode} value={mode}>\n {t(`settings editor input mode ${mode} label`)}\n </Select.Option>\n ))}\n </Select.Viewport>\n <Select.Arrow />\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </ControlItemInput>\n </ControlGroup>\n </ControlSection>\n </ControlPage>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { forwardRef, useEffect, useRef, useState } from 'react';\n\nimport { log } from '@dxos/log';\nimport { Avatar, Icon, Input, type ThemedClassName, Toolbar, useTranslation } from '@dxos/react-ui';\nimport { SyntaxHighlighter } from '@dxos/react-ui-syntax-highlighter';\nimport { errorText, mx } from '@dxos/react-ui-theme';\n\nimport { SCRIPT_PLUGIN } from '../../meta';\n\ntype State = 'pending' | 'responding';\n\n/**\n * Request or response.\n */\ntype Message = { type: 'request' | 'response'; text?: string; data?: any; error?: Error };\n\nexport type TestPanelProps = ThemedClassName<{\n functionUrl?: string;\n}>;\n\n// TODO(burdon): Need persistent history (currently lost when switching tabs)..\nexport const TestPanel = ({ classNames, functionUrl }: TestPanelProps) => {\n const { t } = useTranslation(SCRIPT_PLUGIN);\n\n const inputRef = useRef<HTMLInputElement>(null);\n const [input, setInput] = useState('');\n const [result, setResult] = useState('');\n const [state, setState] = useState<State | null>(null);\n\n // TODO(burdon): Persistent history (thread).\n const [history, setHistory] = useState<Message[]>([]);\n\n const scrollerRef = useRef<HTMLDivElement>(null);\n const handleScroll = () => {\n if (scrollerRef.current) {\n scrollerRef.current.scrollTop = scrollerRef.current.scrollHeight;\n }\n };\n\n const controller = useRef<AbortController>();\n useEffect(() => {\n return () => {\n handleStop();\n };\n }, []);\n\n const handleStop = () => {\n controller.current?.abort('stop');\n controller.current = undefined;\n };\n\n const handleClear = () => {\n handleStop();\n setInput('');\n setResult('');\n setHistory([]);\n inputRef.current?.focus();\n };\n\n const handleResponse = ({ text, data, error }: { text?: string; data?: any; error?: Error } = {}) => {\n controller.current = undefined;\n setHistory((history) => [...history, { type: 'response', text, data, error } satisfies Message]);\n setResult('');\n setState(null);\n handleScroll();\n };\n\n const handleRequest = async (input: string) => {\n // Returns a promise that resolves when a value has been received.\n try {\n setState('pending');\n\n let data = null;\n // Detect JSON input.\n if (input.charAt(0) === '{') {\n try {\n const validJsonString = input.replace(/'/g, '\"').replace(/([{,]\\s*)([a-zA-Z0-9_]+)(\\s*:)/g, '$1\"$2\"$3');\n data = JSON.parse(validJsonString);\n input = JSON.stringify(data, null, 2);\n } catch (err) {\n inputRef.current?.focus();\n return;\n }\n }\n\n setInput('');\n setResult('');\n setHistory((history) => [...history, { type: 'request', text: input }]);\n setTimeout(() => {\n handleScroll();\n });\n\n // Throws DOMException when aborted.\n controller.current = new AbortController();\n const response = await fetch(functionUrl!, {\n signal: controller.current.signal,\n method: 'POST',\n body: input,\n headers: {\n 'Content-Type': data ? 'application/json' : 'text/plain',\n },\n });\n\n // Check for error.\n if (!response.ok) {\n const text = await response.text();\n handleResponse({ error: new Error(text || response.statusText || String(response.status)) });\n return;\n }\n\n // Check for JSON.\n const contentType = response.headers.get('content-type');\n if (contentType === 'application/json') {\n const data = await response.json();\n handleResponse({ data });\n return;\n }\n\n // Text (including streaming).\n setState('responding');\n let text = '';\n const reader = response.body!.getReader();\n const pump = async ({ done, value }: ReadableStreamReadResult<Uint8Array>): Promise<void> => {\n text = text + new TextDecoder().decode(value);\n if (!controller.current || done) {\n handleResponse({ text });\n return;\n }\n\n setResult(text);\n setTimeout(() => {\n handleScroll();\n });\n\n return reader.read().then(pump);\n };\n\n void reader\n .read()\n .then(pump)\n .catch((err) => {\n if (err.name !== 'AbortError') {\n log.catch(err);\n }\n });\n } catch (err: any) {\n if (err !== 'stop') {\n const error = err instanceof Error ? err : new Error(err);\n handleResponse({ error });\n log.catch(err);\n } else {\n handleResponse();\n }\n }\n };\n\n return (\n <div className={mx('flex flex-col h-full overflow-hidden', classNames)}>\n {/* TODO(burdon): Replace with Thread. */}\n <MessageThread ref={scrollerRef} state={state} result={result} history={history} />\n {/* TODO(burdon): Replace with Form based on the function's input schema. */}\n <Toolbar.Root classNames='p-2'>\n <Input.Root>\n <Input.TextInput\n ref={inputRef}\n autoFocus\n placeholder={t('function request placeholder')}\n value={input}\n onChange={(ev) => setInput(ev.target.value)}\n onKeyDown={(ev) => ev.key === 'Enter' && handleRequest(input)}\n />\n </Input.Root>\n <Toolbar.Button onClick={() => handleRequest(input)}>\n <Icon icon='ph--play--regular' size={4} />\n </Toolbar.Button>\n <Toolbar.Button onClick={() => (state ? handleStop() : handleClear())}>\n <Icon icon={state ? 'ph--stop--regular' : 'ph--trash--regular'} size={4} />\n </Toolbar.Button>\n </Toolbar.Root>\n </div>\n );\n};\n\n// TODO(burdon): Replace with thread?\n// TODO(burdon): Button to edit/re-run question.\ntype MessageThreadProps = {\n state: State | null;\n history: Message[];\n result: string;\n};\n\nconst MessageThread = forwardRef<HTMLDivElement, MessageThreadProps>(\n ({ state, history, result }: MessageThreadProps, forwardedRef) => {\n return (\n <div ref={forwardedRef} className='flex flex-col gap-6 h-full p-2 overflow-x-hidden overflow-y-auto'>\n {history.map((message, i) => (\n <div key={i} className='grid grid-cols-[2rem_1fr_2rem]'>\n <div className='p-1'>{message.type === 'response' && <RobotAvatar />}</div>\n <div className='overflow-auto'>\n <MessageItem message={message} />\n </div>\n </div>\n ))}\n\n {result?.length > 0 && (\n <div className='grid grid-cols-[2rem_1fr_2rem]'>\n <div className='p-1'>\n {(state === 'pending' && <Icon icon='ph--spinner--regular' size={6} classNames='animate-spin' />) || (\n <Icon icon='ph--robot--regular' size={6} classNames='animate-[pulse_1s_ease-in-out_infinite]' />\n )}\n </div>\n <div className='overflow-auto'>\n <MessageItem message={{ type: 'response', text: result }} />\n </div>\n </div>\n )}\n </div>\n );\n },\n);\n\nconst MessageItem = ({ classNames, message }: ThemedClassName<{ message: Message }>) => {\n const { type, text, data, error } = message;\n const wrapper = 'p-1 px-2 rounded-md bg-hoverSurface overflow-auto';\n return (\n <div className={mx('flex', type === 'request' ? 'ml-[1rem] justify-end' : 'mr-[1rem]', classNames)}>\n {error && <div className={mx(wrapper, 'whitespace-pre', errorText)}>{String(error)}</div>}\n\n {text !== undefined && (\n <div className={mx(wrapper, type === 'request' && 'bg-primary-400 dark:bg-primary-600')}>\n {text || '\\u00D8'}\n </div>\n )}\n\n {data && (\n <SyntaxHighlighter language='json' className={mx(wrapper, 'text-xs')}>\n {JSON.stringify(data, null, 2)}\n </SyntaxHighlighter>\n )}\n </div>\n );\n};\n\nconst RobotAvatar = () => (\n <Avatar.Root>\n <Avatar.Content size={6} variant='circle' icon='ph--robot--regular' />\n </Avatar.Root>\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type ScriptType } from '@dxos/functions';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { useDeployState, useToolbarState } from '../../hooks';\n\nimport { TestPanel } from './TestPanel';\n\nexport type TestContainerProps = {\n role: string;\n script: ScriptType;\n};\n\nexport const TestContainer = ({ script }: TestContainerProps) => {\n const state = useToolbarState();\n useDeployState({ state, script });\n return (\n <StackItem.Content>\n <TestPanel functionUrl={state.functionUrl} />\n </StackItem.Content>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { lazy } from 'react';\n\nexport * from './Settings';\nexport * from './TestPanel';\nexport { DEPLOYMENT_DIALOG } from './DeploymentDialog';\n\nexport const ScriptContainer = lazy(() => import('./ScriptContainer'));\nexport const DeploymentDialog = lazy(() => import('./DeploymentDialog'));\n"],
5
+ "mappings": "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",
6
+ "names": ["Octokit", "React", "useCallback", "useState", "SettingsAction", "createIntent", "useIntentDispatcher", "FunctionType", "getInvocationUrl", "getUserFunctionIdInMetadata", "log", "useClient", "Filter", "Ref", "getMeta", "getSpace", "useQuery", "Button", "Clipboard", "Input", "useAsyncEffect", "useControlledState", "useTranslation", "DataType", "ScriptObjectSettings", "object", "Binding", "Publishing", "ScriptProperties", "t", "useTranslation", "SCRIPT_PLUGIN", "Input", "Root", "Label", "TextInput", "placeholder", "value", "description", "onChange", "event", "target", "client", "useClient", "space", "getSpace", "fn", "useQuery", "Filter", "type", "FunctionType", "source", "Ref", "make", "functionId", "getUserFunctionIdInMetadata", "getMeta", "functionUrl", "getInvocationUrl", "config", "values", "runtime", "services", "edge", "url", "spaceId", "id", "binding", "setBinding", "useControlledState", "handleBindingChange", "useCallback", "handleBindingBlur", "div", "role", "className", "h2", "disabled", "name", "Clipboard", "IconButton", "onBlur", "dispatchPromise", "dispatch", "useIntentDispatcher", "githubToken", "DataType", "AccessToken", "gistKey", "keys", "find", "gistUrl", "setGistUrl", "useState", "useAsyncEffect", "token", "gistId", "undefined", "octokit", "Octokit", "auth", "response", "request", "gist_id", "data", "html_url", "err", "log", "catch", "handleOpenTokenManager", "createIntent", "SettingsAction", "Open", "plugin", "publishing", "setPublishing", "handlePublish", "load", "filename", "kebabize", "files", "content", "meta", "githubKey", "public", "push", "p", "span", "Button", "onClick", "str", "replace", "$", "ofs", "toLowerCase", "React", "useClient", "Button", "Select", "useTranslation", "EditorInputModes", "ControlGroup", "ControlItemInput", "ControlPage", "ControlSection", "ScriptPluginSettings", "settings", "t", "useTranslation", "meta", "id", "client", "useClient", "handleAuthenticate", "identityKey", "halo", "identity", "get", "writeCredentials", "issuer", "issuanceDate", "Date", "subject", "assertion", "serverName", "serverKey", "capabilities", "React", "ControlPage", "ControlSection", "title", "ns", "ControlGroup", "ControlItemInput", "Button", "onClick", "Select", "Root", "value", "editorInputMode", "onValueChange", "TriggerButton", "placeholder", "Portal", "Content", "Viewport", "EditorInputModes", "map", "mode", "Option", "key", "Arrow", "React", "forwardRef", "useEffect", "useRef", "useState", "log", "Avatar", "Icon", "Input", "Toolbar", "useTranslation", "SyntaxHighlighter", "errorText", "mx", "TestPanel", "classNames", "functionUrl", "t", "useTranslation", "SCRIPT_PLUGIN", "inputRef", "useRef", "input", "setInput", "useState", "result", "setResult", "state", "setState", "history", "setHistory", "scrollerRef", "handleScroll", "current", "scrollTop", "scrollHeight", "controller", "useEffect", "handleStop", "abort", "undefined", "handleClear", "focus", "handleResponse", "text", "data", "error", "type", "handleRequest", "charAt", "validJsonString", "replace", "JSON", "parse", "stringify", "err", "setTimeout", "AbortController", "response", "fetch", "signal", "method", "body", "headers", "ok", "Error", "statusText", "String", "status", "contentType", "get", "json", "reader", "getReader", "pump", "done", "value", "TextDecoder", "decode", "read", "then", "catch", "name", "log", "React", "div", "className", "mx", "MessageThread", "ref", "Toolbar", "Root", "Input", "TextInput", "autoFocus", "placeholder", "onChange", "ev", "target", "onKeyDown", "key", "Button", "onClick", "Icon", "icon", "size", "forwardRef", "forwardedRef", "map", "message", "i", "RobotAvatar", "MessageItem", "length", "wrapper", "errorText", "SyntaxHighlighter", "language", "Avatar", "Content", "variant", "React", "StackItem", "TestContainer", "script", "state", "useToolbarState", "useDeployState", "React", "StackItem", "Content", "TestPanel", "functionUrl", "lazy", "ScriptContainer", "lazy", "DeploymentDialog"]
7
+ }
@@ -4,17 +4,17 @@ import {
4
4
  } from "./chunk-JIPFLBYA.mjs";
5
5
 
6
6
  // src/util/functions.ts
7
- import { getInvocationUrl, getUserFunctionUrlInMetadata } from "@dxos/functions";
7
+ import { getInvocationUrl, getUserFunctionIdInMetadata } from "@dxos/functions";
8
8
  import { log } from "@dxos/log";
9
9
  import { getMeta, getSpace } from "@dxos/react-client/echo";
10
10
  var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-script/src/util/functions.ts";
11
11
  var getFunctionUrl = ({ script, fn, edgeUrl }) => {
12
12
  const space = getSpace(script);
13
- const existingFunctionUrl = fn && getUserFunctionUrlInMetadata(getMeta(fn));
14
- if (!existingFunctionUrl) {
13
+ const existingFunctionId = fn && getUserFunctionIdInMetadata(getMeta(fn));
14
+ if (!existingFunctionId) {
15
15
  return void 0;
16
16
  }
17
- return getInvocationUrl(existingFunctionUrl, edgeUrl, {
17
+ return getInvocationUrl(existingFunctionId, edgeUrl, {
18
18
  spaceId: space?.id
19
19
  });
20
20
  };
@@ -61,16 +61,16 @@ var updateFunctionMetadata = (script, storedFunction, meta, functionId) => {
61
61
 
62
62
  // src/util/deploy.ts
63
63
  import { Obj, Ref } from "@dxos/echo";
64
- import { FunctionType, getUserFunctionUrlInMetadata as getUserFunctionUrlInMetadata2, makeFunctionUrl, setUserFunctionUrlInMetadata } from "@dxos/functions";
64
+ import { FunctionType, getUserFunctionIdInMetadata as getUserFunctionIdInMetadata2, setUserFunctionIdInMetadata } from "@dxos/functions";
65
65
  import { Bundler } from "@dxos/functions/bundler";
66
66
  import { incrementSemverPatch, uploadWorkerFunction } from "@dxos/functions/edge";
67
67
  import { log as log2 } from "@dxos/log";
68
68
  var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-script/src/util/deploy.ts";
69
69
  var isScriptDeployed = ({ script, fn }) => {
70
- const existingFunctionUrl = fn && getUserFunctionUrlInMetadata2(Obj.getMeta(fn));
71
- return Boolean(existingFunctionUrl) && !script.changed;
70
+ const existingFunctionId = fn && getUserFunctionIdInMetadata2(Obj.getMeta(fn));
71
+ return Boolean(existingFunctionId) && !script.changed;
72
72
  };
73
- var deployScript = async ({ script, client, space, fn, existingFunctionUrl }) => {
73
+ var deployScript = async ({ script, client, space, fn, existingFunctionId }) => {
74
74
  const validationError = validateDeployInputs(script, space);
75
75
  if (validationError) {
76
76
  return {
@@ -79,17 +79,26 @@ var deployScript = async ({ script, client, space, fn, existingFunctionUrl }) =>
79
79
  };
80
80
  }
81
81
  try {
82
- const existingFunctionId = extractFunctionId(existingFunctionUrl);
83
- const { bundle, error } = await bundleScript(script.source.target.content);
84
- if (error || !bundle) {
85
- throw error || new Error("Bundle creation failed");
82
+ const bundler = new Bundler({
83
+ platform: "browser",
84
+ sandboxedModules: [],
85
+ remoteModules: {}
86
+ });
87
+ const buildResult = await bundler.bundle({
88
+ source: script.source.target.content
89
+ });
90
+ if ("error" in buildResult) {
91
+ throw buildResult.error || new Error("Bundle creation failed");
86
92
  }
87
93
  const { functionId, version, meta } = await uploadWorkerFunction({
88
94
  client,
89
95
  ownerPublicKey: space.key,
90
96
  version: fn ? incrementSemverPatch(fn.version) : "0.0.1",
91
97
  functionId: existingFunctionId,
92
- source: bundle
98
+ entryPoint: buildResult.entryPoint,
99
+ assets: {
100
+ [buildResult.entryPoint]: buildResult.asset
101
+ }
93
102
  });
94
103
  if (functionId === void 0 || version === void 0) {
95
104
  throw new Error(`Upload didn't return expected data: ${JSON.stringify({
@@ -100,18 +109,15 @@ var deployScript = async ({ script, client, space, fn, existingFunctionUrl }) =>
100
109
  const storedFunction = createOrUpdateFunctionInSpace(space, fn, script, functionId, version);
101
110
  script.changed = false;
102
111
  updateFunctionMetadata(script, storedFunction, meta, functionId);
103
- const functionUrl = makeFunctionUrl({
104
- functionId
105
- });
106
- setUserFunctionUrlInMetadata(Obj.getMeta(storedFunction), functionUrl);
112
+ setUserFunctionIdInMetadata(Obj.getMeta(storedFunction), functionId);
107
113
  return {
108
114
  success: true,
109
- functionUrl
115
+ functionId
110
116
  };
111
117
  } catch (err) {
112
118
  log2.catch(err, void 0, {
113
119
  F: __dxlog_file2,
114
- L: 80,
120
+ L: 78,
115
121
  S: void 0,
116
122
  C: (f, a) => f(...a)
117
123
  });
@@ -127,37 +133,20 @@ var validateDeployInputs = (script, space) => {
127
133
  }
128
134
  return null;
129
135
  };
130
- var extractFunctionId = (functionUrl) => {
131
- return functionUrl?.split("/").at(-1);
132
- };
133
- var bundleScript = async (source) => {
134
- const bundler = new Bundler({
135
- platform: "browser",
136
- sandboxedModules: [],
137
- remoteModules: {}
138
- });
139
- const buildResult = await bundler.bundle({
140
- source
141
- });
142
- if (buildResult.error || !buildResult.bundle) {
143
- return {
144
- error: buildResult.error || new Error("Bundle creation failed")
145
- };
146
- }
147
- return {
148
- bundle: buildResult.bundle
149
- };
150
- };
151
136
  var createOrUpdateFunctionInSpace = (space, fn, script, functionId, version) => {
152
137
  if (fn) {
138
+ fn.name = script.name ?? "New Function";
153
139
  fn.version = version;
154
140
  return fn;
155
141
  } else {
156
- return space.db.add(Obj.make(FunctionType, {
157
- name: functionId,
142
+ const fn2 = Obj.make(FunctionType, {
143
+ name: script.name ?? "New Function",
158
144
  version,
159
145
  source: Ref.make(script)
160
- }));
146
+ });
147
+ space.db.add(fn2);
148
+ setUserFunctionIdInMetadata(Obj.getMeta(fn2), functionId);
149
+ return fn2;
161
150
  }
162
151
  };
163
152
 
@@ -231,4 +220,4 @@ export {
231
220
  deployScript,
232
221
  useCreateAndDeployScriptTemplates
233
222
  };
234
- //# sourceMappingURL=chunk-XJPK3IYI.mjs.map
223
+ //# sourceMappingURL=chunk-M642JUOZ.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/util/functions.ts", "../../../src/util/deploy.ts", "../../../src/hooks/useCreateAndDeployScriptTemplates.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type ScriptType, getInvocationUrl, getUserFunctionIdInMetadata } from '@dxos/functions';\nimport { log } from '@dxos/log';\nimport { getMeta, getSpace } from '@dxos/react-client/echo';\n\n/**\n * Get the function URL for a given script and client configuration\n */\nexport const getFunctionUrl = ({\n script,\n fn,\n edgeUrl,\n}: {\n script: ScriptType;\n fn: any;\n edgeUrl: string;\n}): string | undefined => {\n const space = getSpace(script);\n const existingFunctionId = fn && getUserFunctionIdInMetadata(getMeta(fn));\n\n if (!existingFunctionId) {\n return undefined;\n }\n\n return getInvocationUrl(existingFunctionId, edgeUrl, {\n spaceId: space?.id,\n });\n};\n\nexport const updateFunctionMetadata = (script: ScriptType, storedFunction: any, meta: any, functionId: string) => {\n if (script.description !== undefined && script.description.trim() !== '') {\n storedFunction.description = script.description;\n } else if (meta.description) {\n storedFunction.description = meta.description;\n } else {\n log.verbose('no description in function metadata', { functionId });\n }\n\n if (meta.inputSchema) {\n storedFunction.inputSchema = meta.inputSchema;\n } else {\n log.verbose('no input schema in function metadata', { functionId });\n }\n\n if (meta.outputSchema) {\n storedFunction.outputSchema = meta.outputSchema;\n } else {\n log.verbose('no output schema in function metadata', { functionId });\n }\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Client } from '@dxos/client';\nimport { Obj, Ref } from '@dxos/echo';\nimport {\n FunctionType,\n type ScriptType,\n getUserFunctionIdInMetadata,\n setUserFunctionIdInMetadata,\n} from '@dxos/functions';\nimport { Bundler } from '@dxos/functions/bundler';\nimport { incrementSemverPatch, uploadWorkerFunction } from '@dxos/functions/edge';\nimport { log } from '@dxos/log';\nimport { type Space } from '@dxos/react-client/echo';\n\nimport { updateFunctionMetadata } from './functions';\n\nexport const isScriptDeployed = ({ script, fn }: { script: ScriptType; fn: any }): boolean => {\n const existingFunctionId = fn && getUserFunctionIdInMetadata(Obj.getMeta(fn));\n return Boolean(existingFunctionId) && !script.changed;\n};\n\ntype DeployScriptProps = {\n script: ScriptType;\n client: Client;\n space: Space;\n fn?: FunctionType;\n existingFunctionId?: string;\n};\n\ntype DeployScriptResult = { success: boolean; error?: Error; functionId?: string };\n\n/**\n * Deploy a script to a space, handling bundling and uploading to the FaaS infrastructure.\n */\nexport const deployScript = async ({\n script,\n client,\n space,\n fn,\n existingFunctionId,\n}: DeployScriptProps): Promise<DeployScriptResult> => {\n const validationError = validateDeployInputs(script, space);\n if (validationError) {\n return { success: false, error: validationError };\n }\n\n try {\n const bundler = new Bundler({ platform: 'browser', sandboxedModules: [], remoteModules: {} });\n const buildResult = await bundler.bundle({ source: script.source!.target!.content });\n if ('error' in buildResult) {\n throw buildResult.error || new Error('Bundle creation failed');\n }\n\n const { functionId, version, meta } = await uploadWorkerFunction({\n client,\n ownerPublicKey: space.key,\n version: fn ? incrementSemverPatch(fn.version) : '0.0.1',\n functionId: existingFunctionId,\n entryPoint: buildResult.entryPoint,\n assets: { [buildResult.entryPoint]: buildResult.asset },\n });\n\n if (functionId === undefined || version === undefined) {\n throw new Error(`Upload didn't return expected data: ${JSON.stringify({ functionId, version })}`);\n }\n\n const storedFunction = createOrUpdateFunctionInSpace(space, fn, script, functionId, version);\n script.changed = false;\n updateFunctionMetadata(script, storedFunction, meta, functionId);\n\n setUserFunctionIdInMetadata(Obj.getMeta(storedFunction), functionId);\n\n return { success: true, functionId };\n } catch (err: any) {\n log.catch(err);\n return { success: false, error: err };\n }\n};\n\n/**\n * Validate inputs for script deployment.\n */\nconst validateDeployInputs = (script: ScriptType, space: Space): Error | null => {\n if (!script.source || !space) {\n return new Error('Script source or space not available');\n }\n return null;\n};\n\nconst createOrUpdateFunctionInSpace = (\n space: Space,\n fn: FunctionType | undefined,\n script: ScriptType,\n functionId: string,\n version: string,\n): FunctionType => {\n if (fn) {\n fn.name = script.name ?? 'New Function';\n fn.version = version;\n return fn;\n } else {\n const fn = Obj.make(FunctionType, { name: script.name ?? 'New Function', version, source: Ref.make(script) });\n space.db.add(fn);\n setUserFunctionIdInMetadata(Obj.getMeta(fn), functionId);\n return fn;\n }\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { pipe } from 'effect/Function';\nimport { useCallback, useState } from 'react';\n\nimport { chain, createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { Obj } from '@dxos/echo';\nimport { ScriptType } from '@dxos/functions';\nimport { invariant } from '@dxos/invariant';\nimport { SpaceAction } from '@dxos/plugin-space/types';\nimport { useClient } from '@dxos/react-client';\nimport { type Space } from '@dxos/react-client/echo';\n\nimport { type Template } from '../templates';\nimport { ScriptAction } from '../types';\nimport { deployScript } from '../util';\n\ntype DeploymentStatus = 'idle' | 'pending' | 'success' | 'error';\n\n/**\n * Hook for creating and deploying multiple script templates concurrently.\n *\n * Takes a space and an array of script template IDs, then provides a callback\n * function that creates each script from its template and deploys it to the space.\n * All creation / deployment operations run concurrently for improved performance.\n */\nexport const useCreateAndDeployScriptTemplates = (space: Space | undefined, scriptTemplates: Template[]) => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const client = useClient();\n const [status, setStatus] = useState<DeploymentStatus>('idle');\n const [error, setError] = useState<Error | undefined>(undefined);\n\n const handleCreateAndDeployScripts = useCallback(async () => {\n invariant(space);\n setStatus('pending');\n setError(undefined);\n\n const deploymentResults = await Promise.all(\n scriptTemplates.map(async (template) => {\n const result = await dispatch(\n pipe(\n createIntent(ScriptAction.Create, { space, initialTemplateId: template.id }),\n chain(SpaceAction.AddObject, { target: space }),\n ),\n );\n invariant(Obj.instanceOf(ScriptType, result.data?.object));\n\n return deployScript({ space, client, script: result.data.object });\n }),\n );\n\n const hasErrors = deploymentResults.some((result) => !result.success);\n setStatus(hasErrors ? 'error' : 'success');\n }, [space, dispatch, client, scriptTemplates]);\n\n // TODO(burdon): Return onCreateAndDeployScripts.\n return { handleCreateAndDeployScripts, status, error };\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["getInvocationUrl", "getUserFunctionIdInMetadata", "log", "getMeta", "getSpace", "getFunctionUrl", "script", "fn", "edgeUrl", "space", "existingFunctionId", "undefined", "spaceId", "id", "updateFunctionMetadata", "storedFunction", "meta", "functionId", "description", "trim", "verbose", "inputSchema", "outputSchema", "Obj", "Ref", "FunctionType", "getUserFunctionIdInMetadata", "setUserFunctionIdInMetadata", "Bundler", "incrementSemverPatch", "uploadWorkerFunction", "log", "isScriptDeployed", "script", "fn", "existingFunctionId", "getUserFunctionIdInMetadata", "Obj", "getMeta", "Boolean", "changed", "deployScript", "client", "space", "validationError", "validateDeployInputs", "success", "error", "bundler", "Bundler", "platform", "sandboxedModules", "remoteModules", "buildResult", "bundle", "source", "target", "content", "Error", "functionId", "version", "meta", "uploadWorkerFunction", "ownerPublicKey", "key", "incrementSemverPatch", "entryPoint", "assets", "asset", "undefined", "JSON", "stringify", "storedFunction", "createOrUpdateFunctionInSpace", "updateFunctionMetadata", "setUserFunctionIdInMetadata", "err", "log", "catch", "name", "make", "FunctionType", "Ref", "db", "add", "pipe", "useCallback", "useState", "chain", "createIntent", "useIntentDispatcher", "Obj", "ScriptType", "invariant", "SpaceAction", "useClient", "useCreateAndDeployScriptTemplates", "space", "scriptTemplates", "dispatchPromise", "dispatch", "useIntentDispatcher", "client", "useClient", "status", "setStatus", "useState", "error", "setError", "undefined", "handleCreateAndDeployScripts", "useCallback", "invariant", "deploymentResults", "Promise", "all", "map", "template", "result", "pipe", "createIntent", "ScriptAction", "Create", "initialTemplateId", "id", "chain", "SpaceAction", "AddObject", "target", "Obj", "instanceOf", "ScriptType", "data", "object", "deployScript", "script", "hasErrors", "some", "success"]
7
+ }
@@ -1,7 +1,7 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  useCreateAndDeployScriptTemplates
4
- } from "./chunk-XJPK3IYI.mjs";
4
+ } from "./chunk-M642JUOZ.mjs";
5
5
  import {
6
6
  SCRIPT_PLUGIN
7
7
  } from "./chunk-AHXJ6NQU.mjs";
@@ -9,7 +9,7 @@ import {
9
9
  // src/components/DeploymentDialog/DeploymentDialog.tsx
10
10
  import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
11
11
  import React, { useEffect, useMemo } from "react";
12
- import { createIntent, LayoutAction, useIntentDispatcher } from "@dxos/app-framework";
12
+ import { LayoutAction, createIntent, useIntentDispatcher } from "@dxos/app-framework";
13
13
  import { getSpace } from "@dxos/react-client/echo";
14
14
  import { Button, Dialog, Icon, useTranslation } from "@dxos/react-ui";
15
15
  var DEPLOYMENT_DIALOG = `${SCRIPT_PLUGIN}/deployment/dialog`;
@@ -151,4 +151,4 @@ export {
151
151
  DEPLOYMENT_DIALOG,
152
152
  DeploymentDialog_default
153
153
  };
154
- //# sourceMappingURL=chunk-QKK3NDHW.mjs.map
154
+ //# sourceMappingURL=chunk-ZA36GO4T.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/DeploymentDialog/DeploymentDialog.tsx", "../../../src/components/DeploymentDialog/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useEffect, useMemo } from 'react';\n\nimport { LayoutAction, createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { getSpace } from '@dxos/react-client/echo';\nimport { Button, Dialog, Icon, useTranslation } from '@dxos/react-ui';\nimport { type DataType } from '@dxos/schema';\n\nimport { useCreateAndDeployScriptTemplates } from '../../hooks/useCreateAndDeployScriptTemplates';\nimport { SCRIPT_PLUGIN } from '../../meta';\nimport { type Template } from '../../templates';\n\nexport const DEPLOYMENT_DIALOG = `${SCRIPT_PLUGIN}/deployment/dialog`;\n\n// TODO(ZaymonFC):\n// - Show activity and feedback to the user.\n// - Only take an array of templateIds and get the name from the data.\n// - Pending / onError states.\n\nexport type DeploymentDialogProps = {\n accessToken: DataType.AccessToken;\n scriptTemplates: Template[];\n};\n\nexport const DeploymentDialog = ({ accessToken, scriptTemplates }: DeploymentDialogProps) => {\n const { t } = useTranslation(SCRIPT_PLUGIN);\n const space = useMemo(() => getSpace(accessToken), [accessToken]);\n\n // TODO(ZaymonFC): Thinking further. All of this should get moved to intents to run async in the background.\n // Deployment shouldn't be tied to the lifecycle of the dialogue component.\n const { handleCreateAndDeployScripts, status } = useCreateAndDeployScriptTemplates(space, scriptTemplates);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n\n useEffect(() => {\n if (status === 'success') {\n // TODO(ZaymonFC): We can probably re-use this toast for normal script deployment.\n void dispatch(\n createIntent(LayoutAction.AddToast, {\n part: 'toast',\n subject: {\n id: `${SCRIPT_PLUGIN}/deployment-success`,\n icon: 'ph--check--regular',\n duration: Infinity,\n title: ['script deployment toast label', { ns: SCRIPT_PLUGIN, count: scriptTemplates.length }],\n description: ['script deployment toast description', { ns: SCRIPT_PLUGIN, count: scriptTemplates.length }],\n closeLabel: ['script deployment toast close label', { ns: SCRIPT_PLUGIN, count: scriptTemplates.length }],\n },\n }),\n );\n void dispatch(createIntent(LayoutAction.UpdateDialog, { part: 'dialog', options: { state: false } }));\n }\n if (status === 'error') {\n void dispatch(createIntent(LayoutAction.UpdateDialog, { part: 'dialog', options: { state: false } }));\n void dispatch(\n createIntent(LayoutAction.AddToast, {\n part: 'toast',\n subject: {\n id: `${SCRIPT_PLUGIN}/deployment-error`,\n icon: 'ph--warning--regular',\n duration: Infinity,\n title: ['script deployment error toast label', { ns: SCRIPT_PLUGIN, count: scriptTemplates.length }],\n description: [\n 'script deployment error toast description',\n { ns: SCRIPT_PLUGIN, count: scriptTemplates.length },\n ],\n closeLabel: [\n 'script deployment error toast close label',\n { ns: SCRIPT_PLUGIN, count: scriptTemplates.length },\n ],\n },\n }),\n );\n }\n }, [status, dispatch]);\n\n return (\n <Dialog.Content>\n <div className='flex justify-between items-center'>\n <Dialog.Title>{t('deployment dialog title')}</Dialog.Title>\n <Dialog.Close asChild>\n <Button density='fine' variant='ghost'>\n <Icon icon='ph--x--regular' size={4} />\n </Button>\n </Dialog.Close>\n </div>\n <div role='none' className='plb-4'>\n {/* TODO: Implement deployment logic and UI. */}\n <p>{t('deployment dialog scripts found message', { count: scriptTemplates.length })}</p>\n <ul className='pbs-2'>\n {scriptTemplates.map((template) => {\n return <li key={template.id}>{template.name}</li>;\n })}\n </ul>\n </div>\n <div role='none' className='flex flex-row-reverse gap-1'>\n <Button variant='primary' onClick={handleCreateAndDeployScripts} disabled={status === 'pending'}>\n {status === 'pending'\n ? t('deployment dialog deploy functions pending button label', { count: scriptTemplates.length })\n : t('deployment dialog deploy functions button label', { count: scriptTemplates.length })}\n </Button>\n <Dialog.Close asChild disabled={status === 'pending'}>\n <Button disabled={status === 'pending'}>{t('deployment dialog skip button label')}</Button>\n </Dialog.Close>\n </div>\n </Dialog.Content>\n );\n};\n\nexport default DeploymentDialog;\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { DEPLOYMENT_DIALOG, DeploymentDialog } from './DeploymentDialog';\n\nexport { DEPLOYMENT_DIALOG };\n\nexport default DeploymentDialog;\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "useEffect", "useMemo", "LayoutAction", "createIntent", "useIntentDispatcher", "getSpace", "Button", "Dialog", "Icon", "useTranslation", "DEPLOYMENT_DIALOG", "SCRIPT_PLUGIN", "DeploymentDialog", "accessToken", "scriptTemplates", "t", "useTranslation", "space", "useMemo", "getSpace", "handleCreateAndDeployScripts", "status", "useCreateAndDeployScriptTemplates", "dispatchPromise", "dispatch", "useIntentDispatcher", "useEffect", "createIntent", "LayoutAction", "AddToast", "part", "subject", "id", "icon", "duration", "Infinity", "title", "ns", "count", "length", "description", "closeLabel", "UpdateDialog", "options", "state", "Dialog", "Content", "div", "className", "Title", "Close", "asChild", "Button", "density", "variant", "Icon", "size", "role", "p", "ul", "map", "template", "li", "key", "name", "onClick", "disabled", "DeploymentDialog"]
7
+ }
@@ -13,6 +13,19 @@ import { initializeBundler } from "@dxos/functions/bundler";
13
13
  import { createDefaultMapFromCDN, createSystem, createVirtualTypeScriptEnvironment } from "@typescript/vfs";
14
14
  import ts from "typescript";
15
15
  import { invariant } from "@dxos/invariant";
16
+ function _define_property(obj, key, value) {
17
+ if (key in obj) {
18
+ Object.defineProperty(obj, key, {
19
+ value,
20
+ enumerable: true,
21
+ configurable: true,
22
+ writable: true
23
+ });
24
+ } else {
25
+ obj[key] = value;
26
+ }
27
+ return obj;
28
+ }
16
29
  var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-script/src/compiler/compiler.ts";
17
30
  var defaultOptions = {
18
31
  lib: [
@@ -22,9 +35,6 @@ var defaultOptions = {
22
35
  target: ts.ScriptTarget.ES2022
23
36
  };
24
37
  var Compiler = class {
25
- constructor(_options = defaultOptions) {
26
- this._options = _options;
27
- }
28
38
  async initialize() {
29
39
  if (this._env) {
30
40
  return;
@@ -60,6 +70,12 @@ var Compiler = class {
60
70
  compile(fileName) {
61
71
  return this.environment.languageService.getEmitOutput(fileName);
62
72
  }
73
+ constructor(_options = defaultOptions) {
74
+ _define_property(this, "_options", void 0);
75
+ _define_property(this, "_env", void 0);
76
+ _define_property(this, "_fsMap", void 0);
77
+ this._options = _options;
78
+ }
63
79
  };
64
80
 
65
81
  // src/capabilities/compiler.ts
@@ -80,4 +96,4 @@ var compiler_default = async () => {
80
96
  export {
81
97
  compiler_default as default
82
98
  };
83
- //# sourceMappingURL=compiler-EPFKQXPE.mjs.map
99
+ //# sourceMappingURL=compiler-7SP27RA6.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/compiler.ts", "../../../src/compiler/compiler.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\n// @ts-ignore\nimport wasmUrl from 'esbuild-wasm/esbuild.wasm?url';\n\nimport { contributes } from '@dxos/app-framework';\nimport { initializeBundler } from '@dxos/functions/bundler';\n\nimport { Compiler } from '../compiler';\n\nimport { ScriptCapabilities } from './capabilities';\n\nexport default async () => {\n const compiler = new Compiler();\n\n await compiler.initialize();\n // TODO(wittjosiah): Fetch types for https modules.\n compiler.setFile('/src/typings.d.ts', \"declare module 'https://*';\");\n // TODO(wittjosiah): Proper function handler types.\n // TODO(wittjosiah): Remove.\n compiler.setFile(\n '/src/runtime.ts',\n `\n export const Filter: any = {};\n export type FunctionHandler = ({ event, context }: { event: any; context: any }) => Promise<Response>;\n export const functionHandler = (handler: FunctionHandler) => handler;\n `,\n );\n await initializeBundler({ wasmUrl });\n\n return contributes(ScriptCapabilities.Compiler, compiler);\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport {\n type VirtualTypeScriptEnvironment,\n createDefaultMapFromCDN,\n createSystem,\n createVirtualTypeScriptEnvironment,\n} from '@typescript/vfs';\nimport ts from 'typescript';\n\nimport { invariant } from '@dxos/invariant';\n\nconst defaultOptions: ts.CompilerOptions = {\n lib: ['DOM', 'es2022'],\n target: ts.ScriptTarget.ES2022,\n};\n\nexport class Compiler {\n private _env: VirtualTypeScriptEnvironment | undefined;\n private _fsMap: Map<string, string> | undefined;\n\n constructor(private readonly _options: ts.CompilerOptions = defaultOptions) {}\n\n async initialize(): Promise<void> {\n if (this._env) {\n return;\n }\n\n // TODO(wittjosiah): Figure out how to get workers working in plugin packages.\n // https://github.com/val-town/codemirror-ts?tab=readme-ov-file#setup-worker\n this._fsMap = await createDefaultMapFromCDN(this._options, '5.5.4', true, ts);\n const system = createSystem(this._fsMap);\n this._env = createVirtualTypeScriptEnvironment(system, [], ts, this._options);\n }\n\n get environment() {\n invariant(this._env, 'Compiler environment not initialized.');\n return this._env;\n }\n\n setFile(fileName: string, content: string): void {\n invariant(this._fsMap, 'File system map not initialized.');\n this.environment.createFile(fileName, content);\n }\n\n compile(fileName: string): ts.EmitOutput {\n return this.environment.languageService.getEmitOutput(fileName);\n }\n}\n"],
5
+ "mappings": ";;;;;;;AAKA,OAAOA,aAAa;AAEpB,SAASC,mBAAmB;AAC5B,SAASC,yBAAyB;;;ACJlC,SAEEC,yBACAC,cACAC,0CACK;AACP,OAAOC,QAAQ;AAEf,SAASC,iBAAiB;;;;;;;;;;;;;;;AAE1B,IAAMC,iBAAqC;EACzCC,KAAK;IAAC;IAAO;;EACbC,QAAQJ,GAAGK,aAAaC;AAC1B;AAEO,IAAMC,WAAN,MAAMA;EAMX,MAAMC,aAA4B;AAChC,QAAI,KAAKC,MAAM;AACb;IACF;AAIA,SAAKC,SAAS,MAAMb,wBAAwB,KAAKc,UAAU,SAAS,MAAMX,EAAAA;AAC1E,UAAMY,SAASd,aAAa,KAAKY,MAAM;AACvC,SAAKD,OAAOV,mCAAmCa,QAAQ,CAAA,GAAIZ,IAAI,KAAKW,QAAQ;EAC9E;EAEA,IAAIE,cAAc;AAChBZ,cAAU,KAAKQ,MAAM,yCAAA;;;;;;;;;AACrB,WAAO,KAAKA;EACd;EAEAK,QAAQC,UAAkBC,SAAuB;AAC/Cf,cAAU,KAAKS,QAAQ,oCAAA;;;;;;;;;AACvB,SAAKG,YAAYI,WAAWF,UAAUC,OAAAA;EACxC;EAEAE,QAAQH,UAAiC;AACvC,WAAO,KAAKF,YAAYM,gBAAgBC,cAAcL,QAAAA;EACxD;EA1BA,YAA6BJ,WAA+BT,gBAAgB;;AAH5E,qBAAA,MAAQO,QAAR,MAAA;AACA,qBAAA,MAAQC,UAAR,MAAA;SAE6BC,WAAAA;EAAgD;AA2B/E;;;ADpCA,IAAA,mBAAe,YAAA;AACb,QAAMU,WAAW,IAAIC,SAAAA;AAErB,QAAMD,SAASE,WAAU;AAEzBF,WAASG,QAAQ,qBAAqB,6BAAA;AAGtCH,WAASG,QACP,mBACA;;;;OAIG;AAEL,QAAMC,kBAAkB;IAAEC;EAAQ,CAAA;AAElC,SAAOC,YAAYC,mBAAmBN,UAAUD,QAAAA;AAClD;",
6
+ "names": ["wasmUrl", "contributes", "initializeBundler", "createDefaultMapFromCDN", "createSystem", "createVirtualTypeScriptEnvironment", "ts", "invariant", "defaultOptions", "lib", "target", "ScriptTarget", "ES2022", "Compiler", "initialize", "_env", "_fsMap", "_options", "system", "environment", "setFile", "fileName", "content", "createFile", "compile", "languageService", "getEmitOutput", "compiler", "Compiler", "initialize", "setFile", "initializeBundler", "wasmUrl", "contributes", "ScriptCapabilities"]
7
+ }