@dxos/plugin-script 0.7.5-labs.8a82073 → 0.7.5-labs.a8b535d

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 (175) hide show
  1. package/dist/lib/browser/ScriptContainer-3RFMYKTV.mjs +258 -0
  2. package/dist/lib/browser/ScriptContainer-3RFMYKTV.mjs.map +7 -0
  3. package/dist/lib/browser/{artifact-3UZZBCZ2.mjs → artifact-definition-4LWPD3DH.mjs} +28 -20
  4. package/dist/lib/browser/artifact-definition-4LWPD3DH.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-45LXDWNF.mjs → chunk-5SXOHNAK.mjs} +3 -3
  6. package/dist/lib/browser/chunk-5SXOHNAK.mjs.map +7 -0
  7. package/dist/lib/browser/{ScriptContainer-QI4NQT7V.mjs → chunk-G2FYNDU4.mjs} +20 -258
  8. package/dist/lib/browser/chunk-G2FYNDU4.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-PZPYF7M4.mjs +69 -0
  10. package/dist/lib/browser/chunk-PZPYF7M4.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-F22QPQ6G.mjs → chunk-VTWBVFBK.mjs} +2 -4
  12. package/dist/lib/browser/{chunk-F22QPQ6G.mjs.map → chunk-VTWBVFBK.mjs.map} +3 -3
  13. package/dist/lib/browser/{compiler-K3FNRDDN.mjs → compiler-YY2XSKHQ.mjs} +2 -4
  14. package/dist/lib/browser/compiler-YY2XSKHQ.mjs.map +7 -0
  15. package/dist/lib/browser/index.mjs +61 -36
  16. package/dist/lib/browser/index.mjs.map +4 -4
  17. package/dist/lib/browser/{intent-resolver-CMKQTLBG.mjs → intent-resolver-D6FPY5ZA.mjs} +2 -2
  18. package/dist/lib/browser/meta.json +1 -1
  19. package/dist/lib/browser/{react-surface-YR4YO746.mjs → react-surface-G4C2PZ2K.mjs} +23 -7
  20. package/dist/lib/browser/react-surface-G4C2PZ2K.mjs.map +7 -0
  21. package/dist/lib/node/ScriptContainer-G6FZU4AM.cjs +274 -0
  22. package/dist/lib/node/ScriptContainer-G6FZU4AM.cjs.map +7 -0
  23. package/dist/lib/node/{artifact-A2QXHFGS.cjs → artifact-definition-BXQCFPAH.cjs} +27 -22
  24. package/dist/lib/node/artifact-definition-BXQCFPAH.cjs.map +7 -0
  25. package/dist/lib/node/chunk-ITAJ3WRW.cjs +77 -0
  26. package/dist/lib/node/chunk-ITAJ3WRW.cjs.map +7 -0
  27. package/dist/lib/node/{chunk-IID7WUQS.cjs → chunk-K3ZZWVXS.cjs} +5 -5
  28. package/dist/lib/node/chunk-K3ZZWVXS.cjs.map +7 -0
  29. package/dist/lib/node/{chunk-JSANQCTA.cjs → chunk-TOXBGIEI.cjs} +5 -8
  30. package/dist/lib/node/{chunk-JSANQCTA.cjs.map → chunk-TOXBGIEI.cjs.map} +3 -3
  31. package/dist/lib/node/{ScriptContainer-FSKWJR6Z.cjs → chunk-XKYJYY3T.cjs} +64 -283
  32. package/dist/lib/node/chunk-XKYJYY3T.cjs.map +7 -0
  33. package/dist/lib/node/{compiler-P2HQB22H.cjs → compiler-UIBLKJKG.cjs} +6 -6
  34. package/dist/lib/node/compiler-UIBLKJKG.cjs.map +7 -0
  35. package/dist/lib/node/index.cjs +59 -36
  36. package/dist/lib/node/index.cjs.map +4 -4
  37. package/dist/lib/node/{intent-resolver-V5ASU5DW.cjs → intent-resolver-NYJFPD5B.cjs} +6 -6
  38. package/dist/lib/node/meta.json +1 -1
  39. package/dist/lib/node/{react-surface-MFTICFI5.cjs → react-surface-EGSE3FMN.cjs} +24 -12
  40. package/dist/lib/node/react-surface-EGSE3FMN.cjs.map +7 -0
  41. package/dist/lib/node-esm/ScriptContainer-7FTCFIF3.mjs +259 -0
  42. package/dist/lib/node-esm/ScriptContainer-7FTCFIF3.mjs.map +7 -0
  43. package/dist/lib/node-esm/{artifact-RFZQ2AJJ.mjs → artifact-definition-KT4DK2LQ.mjs} +27 -20
  44. package/dist/lib/node-esm/artifact-definition-KT4DK2LQ.mjs.map +7 -0
  45. package/dist/lib/node-esm/{chunk-CGF7EOGD.mjs → chunk-2AFXX34U.mjs} +3 -3
  46. package/dist/lib/node-esm/chunk-2AFXX34U.mjs.map +7 -0
  47. package/dist/lib/node-esm/{ScriptContainer-MNETNTNQ.mjs → chunk-NRICF4KE.mjs} +20 -258
  48. package/dist/lib/node-esm/chunk-NRICF4KE.mjs.map +7 -0
  49. package/dist/lib/node-esm/{chunk-FGO5DVO2.mjs → chunk-S64WSJQK.mjs} +2 -4
  50. package/dist/lib/node-esm/{chunk-FGO5DVO2.mjs.map → chunk-S64WSJQK.mjs.map} +3 -3
  51. package/dist/lib/node-esm/chunk-YIWRJ25J.mjs +71 -0
  52. package/dist/lib/node-esm/chunk-YIWRJ25J.mjs.map +7 -0
  53. package/dist/lib/node-esm/{compiler-PDN46H4Y.mjs → compiler-XTXFGZJM.mjs} +2 -4
  54. package/dist/lib/node-esm/compiler-XTXFGZJM.mjs.map +7 -0
  55. package/dist/lib/node-esm/index.mjs +61 -36
  56. package/dist/lib/node-esm/index.mjs.map +4 -4
  57. package/dist/lib/node-esm/{intent-resolver-75BHFRUK.mjs → intent-resolver-KLBHSMW4.mjs} +2 -2
  58. package/dist/lib/node-esm/meta.json +1 -1
  59. package/dist/lib/node-esm/{react-surface-NAK6LMCY.mjs → react-surface-7YSGHZQM.mjs} +23 -7
  60. package/dist/lib/node-esm/react-surface-7YSGHZQM.mjs.map +7 -0
  61. package/dist/types/src/ScriptPlugin.d.ts.map +1 -1
  62. package/dist/types/src/capabilities/{artifact.d.ts → artifact-definition.d.ts} +1 -1
  63. package/dist/types/src/capabilities/artifact-definition.d.ts.map +1 -0
  64. package/dist/types/src/capabilities/index.d.ts +1 -1
  65. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  66. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  67. package/dist/types/src/components/DebugPanel/DebugPanel.d.ts +1 -2
  68. package/dist/types/src/components/DebugPanel/DebugPanel.d.ts.map +1 -1
  69. package/dist/types/src/components/FrameContainer/FrameContainer.d.ts +3 -4
  70. package/dist/types/src/components/FrameContainer/FrameContainer.d.ts.map +1 -1
  71. package/dist/types/src/components/ScriptContainer.d.ts +1 -2
  72. package/dist/types/src/components/ScriptContainer.d.ts.map +1 -1
  73. package/dist/types/src/components/ScriptSettings/ScriptSettings.d.ts +1 -2
  74. package/dist/types/src/components/ScriptSettings/ScriptSettings.d.ts.map +1 -1
  75. package/dist/types/src/components/ScriptSettingsPanel.d.ts +1 -2
  76. package/dist/types/src/components/ScriptSettingsPanel.d.ts.map +1 -1
  77. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts +1 -2
  78. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts.map +1 -1
  79. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts +1 -2
  80. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts.map +1 -1
  81. package/dist/types/src/components/index.d.ts +2 -2
  82. package/dist/types/src/components/index.d.ts.map +1 -1
  83. package/dist/types/src/events.d.ts +4 -0
  84. package/dist/types/src/events.d.ts.map +1 -0
  85. package/dist/types/src/hooks/deploy.d.ts.map +1 -1
  86. package/dist/types/src/hooks/template.d.ts +1 -1
  87. package/dist/types/src/hooks/view.d.ts +1 -1
  88. package/dist/types/src/hooks/view.d.ts.map +1 -1
  89. package/dist/types/src/index.d.ts +0 -1
  90. package/dist/types/src/index.d.ts.map +1 -1
  91. package/dist/types/src/templates/chess.d.ts +1 -4
  92. package/dist/types/src/templates/chess.d.ts.map +1 -1
  93. package/dist/types/src/templates/discord.d.ts +3 -0
  94. package/dist/types/src/templates/discord.d.ts.map +1 -0
  95. package/dist/types/src/templates/forex-effect.d.ts +0 -3
  96. package/dist/types/src/templates/forex-effect.d.ts.map +1 -1
  97. package/dist/types/src/templates/forex.d.ts +0 -3
  98. package/dist/types/src/templates/forex.d.ts.map +1 -1
  99. package/dist/types/src/templates/index.d.ts.map +1 -1
  100. package/dist/types/src/translations.d.ts +3 -0
  101. package/dist/types/src/translations.d.ts.map +1 -1
  102. package/dist/types/src/types.d.ts +1 -1
  103. package/package.json +43 -44
  104. package/src/ScriptPlugin.tsx +38 -18
  105. package/src/capabilities/{artifact.ts → artifact-definition.ts} +16 -11
  106. package/src/capabilities/compiler.ts +1 -1
  107. package/src/capabilities/index.ts +1 -1
  108. package/src/capabilities/react-surface.tsx +9 -3
  109. package/src/components/DebugPanel/DebugPanel.tsx +2 -2
  110. package/src/components/FrameContainer/FrameContainer.tsx +5 -4
  111. package/src/components/TypescriptEditor/TypescriptEditor.tsx +2 -2
  112. package/src/components/index.ts +1 -1
  113. package/src/events.ts +11 -0
  114. package/src/hooks/deploy.ts +3 -3
  115. package/src/hooks/view.ts +4 -1
  116. package/src/index.ts +0 -1
  117. package/src/templates/chat.ts +4 -4
  118. package/src/templates/chess.ts +42 -35
  119. package/src/templates/discord.ts +103 -0
  120. package/src/templates/forex-effect.ts +16 -17
  121. package/src/templates/forex.ts +2 -3
  122. package/src/templates/index.ts +10 -2
  123. package/src/translations.ts +3 -0
  124. package/dist/lib/browser/AutomationPanel-J3SZ5L3Y.mjs +0 -78
  125. package/dist/lib/browser/AutomationPanel-J3SZ5L3Y.mjs.map +0 -7
  126. package/dist/lib/browser/ScriptContainer-QI4NQT7V.mjs.map +0 -7
  127. package/dist/lib/browser/artifact-3UZZBCZ2.mjs.map +0 -7
  128. package/dist/lib/browser/chunk-45LXDWNF.mjs.map +0 -7
  129. package/dist/lib/browser/chunk-SDHKTS6H.mjs +0 -237
  130. package/dist/lib/browser/chunk-SDHKTS6H.mjs.map +0 -7
  131. package/dist/lib/browser/chunk-VIX22OMB.mjs +0 -60
  132. package/dist/lib/browser/chunk-VIX22OMB.mjs.map +0 -7
  133. package/dist/lib/browser/compiler-K3FNRDDN.mjs.map +0 -7
  134. package/dist/lib/browser/react-surface-YR4YO746.mjs.map +0 -7
  135. package/dist/lib/node/AutomationPanel-4M55FURO.cjs +0 -104
  136. package/dist/lib/node/AutomationPanel-4M55FURO.cjs.map +0 -7
  137. package/dist/lib/node/ScriptContainer-FSKWJR6Z.cjs.map +0 -7
  138. package/dist/lib/node/artifact-A2QXHFGS.cjs.map +0 -7
  139. package/dist/lib/node/chunk-IID7WUQS.cjs.map +0 -7
  140. package/dist/lib/node/chunk-PKT5DD3O.cjs +0 -70
  141. package/dist/lib/node/chunk-PKT5DD3O.cjs.map +0 -7
  142. package/dist/lib/node/chunk-T4TXCRN5.cjs +0 -260
  143. package/dist/lib/node/chunk-T4TXCRN5.cjs.map +0 -7
  144. package/dist/lib/node/compiler-P2HQB22H.cjs.map +0 -7
  145. package/dist/lib/node/react-surface-MFTICFI5.cjs.map +0 -7
  146. package/dist/lib/node-esm/AutomationPanel-W6SKG35R.mjs +0 -79
  147. package/dist/lib/node-esm/AutomationPanel-W6SKG35R.mjs.map +0 -7
  148. package/dist/lib/node-esm/ScriptContainer-MNETNTNQ.mjs.map +0 -7
  149. package/dist/lib/node-esm/artifact-RFZQ2AJJ.mjs.map +0 -7
  150. package/dist/lib/node-esm/chunk-CGF7EOGD.mjs.map +0 -7
  151. package/dist/lib/node-esm/chunk-G76M6O46.mjs +0 -239
  152. package/dist/lib/node-esm/chunk-G76M6O46.mjs.map +0 -7
  153. package/dist/lib/node-esm/chunk-NBAL5DXN.mjs +0 -62
  154. package/dist/lib/node-esm/chunk-NBAL5DXN.mjs.map +0 -7
  155. package/dist/lib/node-esm/compiler-PDN46H4Y.mjs.map +0 -7
  156. package/dist/lib/node-esm/react-surface-NAK6LMCY.mjs.map +0 -7
  157. package/dist/types/src/bundler/bundler.d.ts +0 -39
  158. package/dist/types/src/bundler/bundler.d.ts.map +0 -1
  159. package/dist/types/src/bundler/bundler.test.d.ts +0 -2
  160. package/dist/types/src/bundler/bundler.test.d.ts.map +0 -1
  161. package/dist/types/src/bundler/index.d.ts +0 -2
  162. package/dist/types/src/bundler/index.d.ts.map +0 -1
  163. package/dist/types/src/capabilities/artifact.d.ts.map +0 -1
  164. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts +0 -17
  165. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts.map +0 -1
  166. package/dist/types/src/components/AutomationPanel/index.d.ts +0 -4
  167. package/dist/types/src/components/AutomationPanel/index.d.ts.map +0 -1
  168. package/src/bundler/bundler.test.ts +0 -55
  169. package/src/bundler/bundler.ts +0 -250
  170. package/src/bundler/index.ts +0 -5
  171. package/src/components/AutomationPanel/AutomationPanel.tsx +0 -104
  172. package/src/components/AutomationPanel/index.ts +0 -9
  173. /package/dist/lib/browser/{intent-resolver-CMKQTLBG.mjs.map → intent-resolver-D6FPY5ZA.mjs.map} +0 -0
  174. /package/dist/lib/node/{intent-resolver-V5ASU5DW.cjs.map → intent-resolver-NYJFPD5B.cjs.map} +0 -0
  175. /package/dist/lib/node-esm/{intent-resolver-75BHFRUK.mjs.map → intent-resolver-KLBHSMW4.mjs.map} +0 -0
@@ -26,64 +26,45 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var ScriptContainer_FSKWJR6Z_exports = {};
30
- __export(ScriptContainer_FSKWJR6Z_exports, {
31
- ScriptContainer: () => ScriptContainer,
32
- default: () => ScriptContainer_default
29
+ var chunk_XKYJYY3T_exports = {};
30
+ __export(chunk_XKYJYY3T_exports, {
31
+ createDeploy: () => createDeploy,
32
+ createFormat: () => createFormat,
33
+ createTemplateSelect: () => createTemplateSelect,
34
+ createView: () => createView,
35
+ useDeployState: () => useDeployState,
36
+ useToolbarAction: () => useToolbarAction,
37
+ useToolbarState: () => useToolbarState
33
38
  });
34
- module.exports = __toCommonJS(ScriptContainer_FSKWJR6Z_exports);
35
- var import_chunk_T4TXCRN5 = require("./chunk-T4TXCRN5.cjs");
36
- var import_chunk_PKT5DD3O = require("./chunk-PKT5DD3O.cjs");
37
- var import_chunk_IID7WUQS = require("./chunk-IID7WUQS.cjs");
39
+ module.exports = __toCommonJS(chunk_XKYJYY3T_exports);
40
+ var import_chunk_ITAJ3WRW = require("./chunk-ITAJ3WRW.cjs");
38
41
  var import_chunk_5UH3F7TA = require("./chunk-5UH3F7TA.cjs");
39
- var import_react = __toESM(require("react"));
40
- var import_echo = require("@dxos/react-client/echo");
41
- var import_halo = require("@dxos/react-client/halo");
42
- var import_react_ui_editor = require("@dxos/react-ui-editor");
43
- var import_react_ui_stack = require("@dxos/react-ui-stack");
44
- var import_react_ui_theme = require("@dxos/react-ui-theme");
45
- var import_react2 = __toESM(require("react"));
46
- var import_echo2 = require("@dxos/react-client/echo");
47
- var import_react_ui = require("@dxos/react-ui");
48
- var import_react_ui_editor2 = require("@dxos/react-ui-editor");
49
- var import_react_ui_menu = require("@dxos/react-ui-menu");
50
- var import_react3 = require("react");
42
+ var import_react = require("react");
51
43
  var import_functions = require("@dxos/functions");
44
+ var import_bundler = require("@dxos/functions/bundler");
52
45
  var import_log = require("@dxos/log");
53
46
  var import_react_client = require("@dxos/react-client");
54
- var import_echo3 = require("@dxos/react-client/echo");
55
- var import_react_ui2 = require("@dxos/react-ui");
56
- var import_react_ui_menu2 = require("@dxos/react-ui-menu");
47
+ var import_echo = require("@dxos/react-client/echo");
48
+ var import_react_ui = require("@dxos/react-ui");
49
+ var import_react_ui_menu = require("@dxos/react-ui-menu");
50
+ var import_react2 = require("react");
51
+ var import_live_object = require("@dxos/live-object");
57
52
  var import_prettier = require("prettier");
58
53
  var import_estree = __toESM(require("prettier/plugins/estree"));
59
54
  var import_typescript = __toESM(require("prettier/plugins/typescript"));
60
- var import_react4 = require("react");
55
+ var import_react3 = require("react");
61
56
  var import_log2 = require("@dxos/log");
62
- var import_react_ui_menu3 = require("@dxos/react-ui-menu");
63
- var import_react5 = require("react");
57
+ var import_react_ui_menu2 = require("@dxos/react-ui-menu");
58
+ var import_react4 = require("react");
64
59
  var import_functions2 = require("@dxos/functions");
65
- var import_live_object = require("@dxos/live-object");
60
+ var import_live_object2 = require("@dxos/live-object");
61
+ var import_react_ui_menu3 = require("@dxos/react-ui-menu");
66
62
  var import_react_ui_menu4 = require("@dxos/react-ui-menu");
67
- var import_react_ui_menu5 = require("@dxos/react-ui-menu");
68
- var import_react6 = require("react");
63
+ var import_react5 = require("react");
69
64
  var import_log3 = require("@dxos/log");
70
- var import_react7 = require("react");
71
- var import_live_object2 = require("@dxos/live-object");
72
- var import_lang_javascript = require("@codemirror/lang-javascript");
73
- var import_language = require("@codemirror/language");
74
- var import_state = require("@codemirror/state");
75
- var import_theme_one_dark = require("@codemirror/theme-one-dark");
76
- var import_view = require("@codemirror/view");
77
- var import_highlight = require("@lezer/highlight");
78
- var import_codemirror_continue = require("@valtown/codemirror-continue");
79
- var import_codemirror_ts = require("@valtown/codemirror-ts");
80
- var import_react8 = __toESM(require("react"));
81
- var import_react_ui3 = require("@dxos/react-ui");
82
- var import_react_ui_editor3 = require("@dxos/react-ui-editor");
83
- var import_util = require("@dxos/util");
84
65
  var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-script/src/hooks/deploy.ts";
85
66
  var createDeploy = (state) => {
86
- const errorItem = (0, import_react_ui_menu2.createMenuAction)("error", {
67
+ const errorItem = (0, import_react_ui_menu.createMenuAction)("error", {
87
68
  label: state.error ?? [
88
69
  "no error label",
89
70
  {
@@ -93,7 +74,7 @@ var createDeploy = (state) => {
93
74
  icon: "ph--warning-circle--regular",
94
75
  hidden: !state.error
95
76
  });
96
- const deployAction = (0, import_react_ui_menu2.createMenuAction)("deploy", {
77
+ const deployAction = (0, import_react_ui_menu.createMenuAction)("deploy", {
97
78
  type: "deploy",
98
79
  label: [
99
80
  state.deploying ? "pending label" : "deploy label",
@@ -105,7 +86,7 @@ var createDeploy = (state) => {
105
86
  disabled: state.deploying,
106
87
  classNames: state.deploying ? "[&_svg]:animate-spin" : ""
107
88
  });
108
- const copyAction = (0, import_react_ui_menu2.createMenuAction)("copy", {
89
+ const copyAction = (0, import_react_ui_menu.createMenuAction)("copy", {
109
90
  type: "copy",
110
91
  label: [
111
92
  "copy link label",
@@ -139,12 +120,12 @@ var createDeploy = (state) => {
139
120
  };
140
121
  };
141
122
  var useDeployDeps = ({ state, script }) => {
142
- const space = (0, import_echo3.getSpace)(script);
143
- const [fn] = (0, import_echo3.useQuery)(space, import_echo3.Filter.schema(import_functions.FunctionType, {
123
+ const space = (0, import_echo.getSpace)(script);
124
+ const [fn] = (0, import_echo.useQuery)(space, import_echo.Filter.schema(import_functions.FunctionType, {
144
125
  source: script
145
126
  }));
146
127
  const client = (0, import_react_client.useClient)();
147
- const existingFunctionUrl = (0, import_react3.useMemo)(() => fn && (0, import_functions.getUserFunctionUrlInMetadata)((0, import_echo3.getMeta)(fn)), [
128
+ const existingFunctionUrl = (0, import_react.useMemo)(() => fn && (0, import_functions.getUserFunctionUrlInMetadata)((0, import_echo.getMeta)(fn)), [
148
129
  fn
149
130
  ]);
150
131
  return {
@@ -159,7 +140,7 @@ var useDeployState = ({ state, script }) => {
159
140
  state,
160
141
  script
161
142
  });
162
- (0, import_react3.useEffect)(() => {
143
+ (0, import_react.useEffect)(() => {
163
144
  if (!existingFunctionUrl) {
164
145
  return;
165
146
  }
@@ -170,7 +151,7 @@ var useDeployState = ({ state, script }) => {
170
151
  existingFunctionUrl,
171
152
  space
172
153
  ]);
173
- (0, import_react3.useEffect)(() => {
154
+ (0, import_react.useEffect)(() => {
174
155
  state.deployed = Boolean(existingFunctionUrl) && !script.changed;
175
156
  }, [
176
157
  script.changed,
@@ -182,8 +163,8 @@ var useDeployHandler = ({ state, script }) => {
182
163
  state,
183
164
  script
184
165
  });
185
- const { t } = (0, import_react_ui2.useTranslation)(import_chunk_5UH3F7TA.SCRIPT_PLUGIN);
186
- return (0, import_react3.useCallback)(async () => {
166
+ const { t } = (0, import_react_ui.useTranslation)(import_chunk_5UH3F7TA.SCRIPT_PLUGIN);
167
+ return (0, import_react.useCallback)(async () => {
187
168
  if (!script.source || !space) {
188
169
  return;
189
170
  }
@@ -191,12 +172,14 @@ var useDeployHandler = ({ state, script }) => {
191
172
  state.deploying = true;
192
173
  try {
193
174
  const existingFunctionId = existingFunctionUrl?.split("/").at(-1);
194
- const bundler = new import_chunk_T4TXCRN5.Bundler({
175
+ const bundler = new import_bundler.Bundler({
195
176
  platform: "browser",
196
177
  sandboxedModules: [],
197
178
  remoteModules: {}
198
179
  });
199
- const buildResult = await bundler.bundle(script.source.target.content);
180
+ const buildResult = await bundler.bundle({
181
+ source: script.source.target.content
182
+ });
200
183
  if (buildResult.error || !buildResult.bundle) {
201
184
  throw buildResult.error;
202
185
  }
@@ -222,10 +205,10 @@ var useDeployHandler = ({ state, script }) => {
222
205
  if (fn) {
223
206
  fn.version = version;
224
207
  }
225
- const deployedFunction = fn ?? space.db.add((0, import_echo3.create)(import_functions.FunctionType, {
208
+ const deployedFunction = fn ?? space.db.add((0, import_echo.create)(import_functions.FunctionType, {
226
209
  name: functionId,
227
210
  version,
228
- source: (0, import_echo3.makeRef)(script)
211
+ source: (0, import_echo.makeRef)(script)
229
212
  }));
230
213
  script.changed = false;
231
214
  if (script.description !== void 0 && script.description.trim() !== "") {
@@ -266,7 +249,7 @@ var useDeployHandler = ({ state, script }) => {
266
249
  C: (f, a) => f(...a)
267
250
  });
268
251
  }
269
- (0, import_functions.setUserFunctionUrlInMetadata)((0, import_echo3.getMeta)(deployedFunction), `/${space.id}/${functionId}`);
252
+ (0, import_functions.setUserFunctionUrlInMetadata)((0, import_echo.getMeta)(deployedFunction), `/${space.id}/${functionId}`);
270
253
  state.view = "split";
271
254
  } catch (err) {
272
255
  import_log.log.catch(err, void 0, {
@@ -289,7 +272,7 @@ var useDeployHandler = ({ state, script }) => {
289
272
  space?.id ?? null
290
273
  ]);
291
274
  };
292
- var useCopyHandler = ({ state }) => (0, import_react3.useCallback)(async () => {
275
+ var useCopyHandler = ({ state }) => (0, import_react.useCallback)(async () => {
293
276
  if (!state.functionUrl) {
294
277
  return;
295
278
  }
@@ -297,9 +280,12 @@ var useCopyHandler = ({ state }) => (0, import_react3.useCallback)(async () => {
297
280
  }, [
298
281
  state.functionUrl
299
282
  ]);
283
+ var useToolbarState = (initialState = {}) => {
284
+ return (0, import_react2.useMemo)(() => (0, import_live_object.create)(initialState), []);
285
+ };
300
286
  var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-script/src/hooks/format.ts";
301
287
  var createFormat = () => {
302
- const formatAction = (0, import_react_ui_menu3.createMenuAction)("format", {
288
+ const formatAction = (0, import_react_ui_menu2.createMenuAction)("format", {
303
289
  label: [
304
290
  "format label",
305
291
  {
@@ -320,7 +306,7 @@ var createFormat = () => {
320
306
  ]
321
307
  };
322
308
  };
323
- var useFormatHandler = ({ script }) => (0, import_react4.useCallback)(async () => {
309
+ var useFormatHandler = ({ script }) => (0, import_react3.useCallback)(async () => {
324
310
  if (!script.source) {
325
311
  return;
326
312
  }
@@ -346,7 +332,7 @@ var useFormatHandler = ({ script }) => (0, import_react4.useCallback)(async () =
346
332
  script.source
347
333
  ]);
348
334
  var createTemplateSelectGroup = () => {
349
- return (0, import_react_ui_menu4.createMenuItemGroup)("template-select", {
335
+ return (0, import_react_ui_menu3.createMenuItemGroup)("template-select", {
350
336
  label: [
351
337
  "template select group label",
352
338
  {
@@ -357,8 +343,8 @@ var createTemplateSelectGroup = () => {
357
343
  });
358
344
  };
359
345
  var createTemplateSelectActions = () => {
360
- return import_chunk_PKT5DD3O.templates.map((template) => {
361
- return (0, import_react_ui_menu4.createMenuAction)(`template--${template.id}`, {
346
+ return import_chunk_ITAJ3WRW.templates.map((template) => {
347
+ return (0, import_react_ui_menu3.createMenuAction)(`template--${template.id}`, {
362
348
  label: template.name,
363
349
  value: template.id,
364
350
  type: "template"
@@ -386,12 +372,12 @@ var createTemplateSelect = () => {
386
372
  };
387
373
  };
388
374
  var useTemplateSelectHandler = ({ script }) => {
389
- return (0, import_react5.useCallback)((templateId) => {
390
- const template = import_chunk_PKT5DD3O.templates.find((template2) => template2.id === templateId);
375
+ return (0, import_react4.useCallback)((templateId) => {
376
+ const template = import_chunk_ITAJ3WRW.templates.find((template2) => template2.id === templateId);
391
377
  if (template) {
392
378
  script.name = template.name;
393
379
  script.source.target.content = template.source;
394
- const metaKeys = (0, import_live_object.getMeta)(script).keys;
380
+ const metaKeys = (0, import_live_object2.getMeta)(script).keys;
395
381
  const oldPresetIndex = metaKeys.findIndex((key) => key.source === import_functions2.FUNCTIONS_PRESET_META_KEY);
396
382
  if (oldPresetIndex >= 0) {
397
383
  metaKeys.splice(oldPresetIndex, 1);
@@ -413,7 +399,7 @@ var views = {
413
399
  debug: "ph--bug--regular"
414
400
  };
415
401
  var createViewGroupItem = (state) => {
416
- return (0, import_react_ui_menu5.createMenuItemGroup)("view", {
402
+ return (0, import_react_ui_menu4.createMenuItemGroup)("view", {
417
403
  label: [
418
404
  "view group label",
419
405
  {
@@ -427,7 +413,7 @@ var createViewGroupItem = (state) => {
427
413
  };
428
414
  var createViewActions = (state) => {
429
415
  return Object.entries(views).map(([viewType, icon]) => {
430
- return (0, import_react_ui_menu5.createMenuAction)(`view--${viewType}`, {
416
+ return (0, import_react_ui_menu4.createMenuAction)(`view--${viewType}`, {
431
417
  type: "view",
432
418
  value: viewType,
433
419
  label: [
@@ -467,7 +453,7 @@ var useToolbarAction = (props) => {
467
453
  const handleFormat = useFormatHandler(props);
468
454
  const handleDeploy = useDeployHandler(props);
469
455
  const handleCopy = useCopyHandler(props);
470
- return (0, import_react6.useCallback)((action) => {
456
+ return (0, import_react5.useCallback)((action) => {
471
457
  switch (action.properties.type) {
472
458
  case "template":
473
459
  handleTemplateSelect(action.properties.value);
@@ -499,219 +485,14 @@ var useToolbarAction = (props) => {
499
485
  handleCopy
500
486
  ]);
501
487
  };
502
- var useToolbarState = (initialState = {}) => {
503
- return (0, import_react7.useMemo)(() => (0, import_live_object2.create)(initialState), []);
504
- };
505
- var createToolbar = (state) => {
506
- const templateSelect = createTemplateSelect();
507
- const format2 = createFormat();
508
- const gap = (0, import_react_ui_menu.createGapSeparator)();
509
- const deploy = createDeploy(state);
510
- const view = createView(state);
511
- return {
512
- nodes: [
513
- ...templateSelect.nodes,
514
- ...format2.nodes,
515
- ...gap.nodes,
516
- ...deploy.nodes,
517
- ...view.nodes
518
- ],
519
- edges: [
520
- ...templateSelect.edges,
521
- ...format2.edges,
522
- ...gap.edges,
523
- ...deploy.edges,
524
- ...view.edges
525
- ]
526
- };
527
- };
528
- var ScriptToolbar = ({ script, role, state, classNames }) => {
529
- const handleAction = useToolbarAction({
530
- state,
531
- script
532
- });
533
- const toolbarCreator = (0, import_react2.useCallback)(() => createToolbar(state), [
534
- state
535
- ]);
536
- const menu = (0, import_react_ui_menu.useMenuActions)(toolbarCreator);
537
- return /* @__PURE__ */ import_react2.default.createElement("div", {
538
- role: "none",
539
- className: (0, import_react_ui_editor2.stackItemContentToolbarClassNames)(role)
540
- }, /* @__PURE__ */ import_react2.default.createElement(import_react_ui.ElevationProvider, {
541
- elevation: role === "section" ? "positioned" : "base"
542
- }, /* @__PURE__ */ import_react2.default.createElement(import_react_ui_menu.MenuProvider, {
543
- ...menu,
544
- onAction: handleAction,
545
- attendableId: (0, import_echo2.fullyQualifiedId)(script)
546
- }, /* @__PURE__ */ import_react2.default.createElement(import_react_ui_menu.ToolbarMenu, {
547
- classNames
548
- }))));
549
- };
550
- var TypescriptEditor = ({ id, env, className, initialValue, extensions, scrollTo, selection, toolbar, inputMode = "vscode" }) => {
551
- const { themeMode } = (0, import_react_ui3.useThemeContext)();
552
- const { parentRef, focusAttributes } = (0, import_react_ui_editor3.useTextEditor)(() => ({
553
- id,
554
- initialValue,
555
- extensions: [
556
- extensions,
557
- (0, import_react_ui_editor3.createBasicExtensions)({
558
- highlightActiveLine: true,
559
- indentWithTab: true,
560
- lineNumbers: true,
561
- lineWrapping: false,
562
- scrollPastEnd: true
563
- }),
564
- (0, import_react_ui_editor3.createThemeExtensions)({
565
- themeMode,
566
- syntaxHighlighting: true,
567
- slots: {
568
- content: {
569
- className: import_react_ui_editor3.editorFullWidth
570
- }
571
- }
572
- }),
573
- // NOTE: Not using default editor gutter because folding for code works best right beside text.
574
- import_react_ui_editor3.EditorView.theme({
575
- ".cm-gutters": {
576
- // Match margin from content.
577
- marginTop: "16px"
578
- }
579
- }),
580
- import_react_ui_editor3.InputModeExtensions[inputMode],
581
- (0, import_react_ui_editor3.folding)(),
582
- // Continues block comments when you hit Enter.
583
- import_state.Prec.high(import_view.keymap.of(import_codemirror_continue.continueKeymap)),
584
- // TODO(burdon): Factor out.
585
- [
586
- import_react_ui_editor3.editorMonospace,
587
- (0, import_lang_javascript.javascript)({
588
- typescript: true
589
- }),
590
- // https://github.com/val-town/codemirror-ts
591
- (0, import_react_ui_editor3.autocomplete)({
592
- override: env ? [
593
- (0, import_codemirror_ts.tsAutocomplete)()
594
- ] : []
595
- }),
596
- env ? [
597
- import_codemirror_ts.tsFacet.of({
598
- env,
599
- path: `/src/${id}.ts`
600
- }),
601
- (0, import_codemirror_ts.tsSync)(),
602
- (0, import_codemirror_ts.tsLinter)(),
603
- (0, import_codemirror_ts.tsHover)({
604
- renderTooltip: createTooltipRenderer(themeMode)
605
- })
606
- ] : []
607
- ]
608
- ].filter(import_util.nonNullable),
609
- selection,
610
- scrollTo
611
- }), [
612
- id,
613
- extensions,
614
- themeMode,
615
- inputMode,
616
- selection,
617
- scrollTo
618
- ]);
619
- return /* @__PURE__ */ import_react8.default.createElement("div", {
620
- ref: parentRef,
621
- "data-toolbar": toolbar ? "enabled" : "disabled",
622
- className,
623
- ...focusAttributes
624
- });
625
- };
626
- var createTooltipRenderer = (themeMode) => {
627
- const theme = themeMode === "dark" ? import_theme_one_dark.oneDarkHighlightStyle : import_language.defaultHighlightStyle;
628
- const classFromKind = (_kind) => {
629
- const kind = _kind.endsWith("Name") ? "name" : _kind;
630
- const validTag = kind in import_highlight.tags;
631
- if (!validTag) {
632
- return "";
633
- }
634
- const tag = import_highlight.tags[kind];
635
- if (typeof tag === "function") {
636
- return "";
637
- }
638
- return theme.style([
639
- tag
640
- ]) ?? "";
641
- };
642
- return (info) => {
643
- const div = document.createElement("div");
644
- div.className = "p-1 rounded border border-separator bg-baseSurface xs:max-w-80 max-w-lg";
645
- if (info.quickInfo?.displayParts) {
646
- for (const part of info.quickInfo.displayParts) {
647
- const span = div.appendChild(document.createElement("span"));
648
- span.className = classFromKind(part.kind);
649
- span.innerText = part.text;
650
- }
651
- }
652
- return {
653
- dom: div
654
- };
655
- };
656
- };
657
- var ScriptContainer = ({ role, classNames, script, settings = {
658
- editorInputMode: "vscode"
659
- }, env }) => {
660
- const identity = (0, import_halo.useIdentity)();
661
- const space = (0, import_echo.getSpace)(script);
662
- const extensions = (0, import_react.useMemo)(() => [
663
- (0, import_react_ui_editor.listener)({
664
- onChange: (text) => {
665
- if (script.source.target && script.source.target.content !== text) {
666
- script.changed = true;
667
- }
668
- }
669
- }),
670
- (0, import_react_ui_editor.createDataExtensions)({
671
- id: script.id,
672
- text: script.source.target && (0, import_echo.createDocAccessor)(script.source.target, [
673
- "content"
674
- ]),
675
- space,
676
- identity
677
- })
678
- ], [
679
- script,
680
- script.source.target,
681
- space,
682
- identity
683
- ]);
684
- const state = useToolbarState({
685
- view: "editor"
686
- });
687
- useDeployState({
688
- state,
689
- script
690
- });
691
- return /* @__PURE__ */ import_react.default.createElement(import_react_ui_stack.StackItem.Content, {
692
- toolbar: true
693
- }, /* @__PURE__ */ import_react.default.createElement(ScriptToolbar, {
694
- state,
695
- role,
696
- script
697
- }), /* @__PURE__ */ import_react.default.createElement("div", {
698
- role: "none",
699
- className: (0, import_react_ui_theme.mx)("flex flex-col w-full overflow-hidden divide-y divide-separator", classNames)
700
- }, state.view !== "debug" && /* @__PURE__ */ import_react.default.createElement(TypescriptEditor, {
701
- id: script.id,
702
- env,
703
- initialValue: script.source?.target?.content,
704
- extensions,
705
- className: (0, import_react_ui_editor.stackItemContentEditorClassNames)(role),
706
- inputMode: settings.editorInputMode,
707
- toolbar: true
708
- }), state.view !== "editor" && /* @__PURE__ */ import_react.default.createElement(import_chunk_IID7WUQS.DebugPanel, {
709
- functionUrl: state.functionUrl
710
- })));
711
- };
712
- var ScriptContainer_default = ScriptContainer;
713
488
  // Annotate the CommonJS export names for ESM import in node:
714
489
  0 && (module.exports = {
715
- ScriptContainer
490
+ createDeploy,
491
+ createFormat,
492
+ createTemplateSelect,
493
+ createView,
494
+ useDeployState,
495
+ useToolbarAction,
496
+ useToolbarState
716
497
  });
717
- //# sourceMappingURL=ScriptContainer-FSKWJR6Z.cjs.map
498
+ //# sourceMappingURL=chunk-XKYJYY3T.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/hooks/deploy.ts", "../../../src/hooks/useToolbarState.ts", "../../../src/hooks/format.ts", "../../../src/hooks/template.ts", "../../../src/hooks/view.ts", "../../../src/hooks/useToolbarAction.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback, useEffect, useMemo } from 'react';\n\nimport {\n FunctionType,\n type ScriptType,\n getInvocationUrl,\n getUserFunctionUrlInMetadata,\n incrementSemverPatch,\n setUserFunctionUrlInMetadata,\n uploadWorkerFunction,\n} from '@dxos/functions';\nimport { Bundler } from '@dxos/functions/bundler';\nimport { log } from '@dxos/log';\nimport { useClient } from '@dxos/react-client';\nimport { Filter, create, getMeta, getSpace, makeRef, useQuery } from '@dxos/react-client/echo';\nimport { useTranslation } from '@dxos/react-ui';\nimport { createMenuAction } from '@dxos/react-ui-menu';\n\nimport { type ViewState } from './view';\nimport { SCRIPT_PLUGIN } from '../meta';\n\nexport type DeployActionProperties = { type: 'deploy' } | { type: 'copy' };\n\nexport type DeployState = ViewState & {\n deploying: boolean;\n deployed: boolean;\n functionUrl: string;\n error: string;\n};\n\nexport const createDeploy = (state: Partial<DeployState>) => {\n const errorItem = createMenuAction('error', {\n label: state.error ?? ['no error label', { ns: SCRIPT_PLUGIN }],\n icon: 'ph--warning-circle--regular',\n hidden: !state.error,\n });\n\n const deployAction = createMenuAction<DeployActionProperties>('deploy', {\n type: 'deploy',\n label: [state.deploying ? 'pending label' : 'deploy label', { ns: SCRIPT_PLUGIN }],\n icon: state.deploying ? 'ph--spinner-gap--regular' : 'ph--cloud-arrow-up--regular',\n disabled: state.deploying,\n classNames: state.deploying ? '[&_svg]:animate-spin' : '',\n });\n\n const copyAction = createMenuAction<DeployActionProperties>('copy', {\n type: 'copy',\n label: ['copy link label', { ns: SCRIPT_PLUGIN }],\n icon: 'ph--link--regular',\n disabled: !state.functionUrl,\n });\n\n return {\n nodes: [errorItem, deployAction, copyAction],\n edges: [\n { source: 'root', target: 'error' },\n { source: 'root', target: 'deploy' },\n { source: 'root', target: 'copy' },\n ],\n };\n};\n\nconst useDeployDeps = ({ state, script }: { state: Partial<DeployState>; script: ScriptType }) => {\n const space = getSpace(script);\n const [fn] = useQuery(space, Filter.schema(FunctionType, { source: script }));\n const client = useClient();\n const existingFunctionUrl = useMemo(() => fn && getUserFunctionUrlInMetadata(getMeta(fn)), [fn]);\n return { space, fn, client, existingFunctionUrl };\n};\n\nexport const useDeployState = ({ state, script }: { state: Partial<DeployState>; script: ScriptType }) => {\n const { space, client, existingFunctionUrl } = useDeployDeps({ state, script });\n useEffect(() => {\n if (!existingFunctionUrl) {\n return;\n }\n\n state.functionUrl = getInvocationUrl(existingFunctionUrl, client.config.values.runtime?.services?.edge?.url ?? '', {\n spaceId: space?.id,\n });\n }, [existingFunctionUrl, space]);\n\n useEffect(() => {\n state.deployed = Boolean(existingFunctionUrl) && !script.changed;\n }, [script.changed, existingFunctionUrl]);\n};\n\nexport const useDeployHandler = ({ state, script }: { state: Partial<DeployState>; script: ScriptType }) => {\n const { space, fn, client, existingFunctionUrl } = useDeployDeps({ state, script });\n const { t } = useTranslation(SCRIPT_PLUGIN);\n\n return useCallback(async () => {\n if (!script.source || !space) {\n return;\n }\n\n state.error = undefined;\n state.deploying = true;\n\n try {\n const existingFunctionId = existingFunctionUrl?.split('/').at(-1);\n\n const bundler = new Bundler({ platform: 'browser', sandboxedModules: [], remoteModules: {} });\n const buildResult = await bundler.bundle({ source: script.source.target!.content });\n if (buildResult.error || !buildResult.bundle) {\n throw buildResult.error;\n }\n\n const { functionId, version, meta } = await uploadWorkerFunction({\n client,\n spaceId: space.id,\n version: fn ? incrementSemverPatch(fn.version) : '0.0.1',\n functionId: existingFunctionId,\n source: buildResult.bundle,\n });\n if (functionId === undefined || version === undefined) {\n throw new Error(`Upload didn't return expected data: functionId=${functionId}, version=${version}`);\n }\n\n log.info('function uploaded', { functionId, version });\n if (fn) {\n fn.version = version;\n }\n\n const deployedFunction =\n fn ?? space.db.add(create(FunctionType, { name: functionId, version, source: makeRef(script) }));\n\n script.changed = false;\n if (script.description !== undefined && script.description.trim() !== '') {\n deployedFunction.description = script.description;\n } else if (meta.description) {\n deployedFunction.description = meta.description;\n } else {\n log.verbose('no description in function metadata', { functionId });\n }\n\n if (meta.inputSchema) {\n deployedFunction.inputSchema = meta.inputSchema;\n } else {\n log.verbose('no input schema in function metadata', { functionId });\n }\n if (meta.outputSchema) {\n deployedFunction.outputSchema = meta.outputSchema;\n } else {\n log.verbose('no output schema in function metadata', { functionId });\n }\n\n setUserFunctionUrlInMetadata(getMeta(deployedFunction), `/${space.id}/${functionId}`);\n\n state.view = 'split';\n } catch (err: any) {\n log.catch(err);\n state.error = t('upload failed label');\n }\n state.deploying = false;\n }, [fn, client, t, existingFunctionUrl, script, script.name, script.source, space?.id ?? null]);\n};\n\nexport const useCopyHandler = ({ state }: { state: Partial<DeployState> }) =>\n useCallback(async () => {\n if (!state.functionUrl) {\n return;\n }\n await navigator.clipboard.writeText(state.functionUrl);\n }, [state.functionUrl]);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { create } from '@dxos/live-object';\n\nimport { type DeployState } from './deploy';\nimport { type ViewState } from './view';\n\nexport type ScriptToolbarState = Partial<DeployState & ViewState>;\n\nexport const useToolbarState = (initialState: ScriptToolbarState = {}) => {\n return useMemo(() => create<ScriptToolbarState>(initialState), []);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { format } from 'prettier';\nimport prettierPluginEstree from 'prettier/plugins/estree';\nimport prettierPluginTypescript from 'prettier/plugins/typescript';\nimport { useCallback } from 'react';\n\nimport { type ScriptType } from '@dxos/functions';\nimport { log } from '@dxos/log';\nimport { createMenuAction } from '@dxos/react-ui-menu';\n\nimport { SCRIPT_PLUGIN } from '../meta';\n\nexport type FormatActionProperties = { type: 'format' };\n\nexport const createFormat = () => {\n const formatAction = createMenuAction('format', {\n label: ['format label', { ns: SCRIPT_PLUGIN }],\n icon: 'ph--magic-wand--regular',\n });\n\n return {\n nodes: [formatAction],\n edges: [{ source: 'root', target: 'format' }],\n };\n};\n\nexport const useFormatHandler = ({ script }: { script: ScriptType }) =>\n useCallback(async () => {\n if (!script.source) {\n return;\n }\n\n try {\n script.source.target!.content = await format(script.source.target!.content, {\n parser: 'typescript',\n plugins: [prettierPluginEstree, prettierPluginTypescript],\n semi: true,\n singleQuote: true,\n });\n } catch (err: any) {\n // TODO(wittjosiah): Show error in UI.\n log.catch(err);\n }\n }, [script.source]);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback } from 'react';\n\nimport { FUNCTIONS_PRESET_META_KEY, type ScriptType } from '@dxos/functions';\nimport { getMeta } from '@dxos/live-object';\nimport { createMenuItemGroup, createMenuAction } from '@dxos/react-ui-menu';\n\nimport { SCRIPT_PLUGIN } from '../meta';\nimport { templates } from '../templates';\n\nexport type TemplateActionProperties = { type: 'template'; value: string };\n\nconst createTemplateSelectGroup = () => {\n return createMenuItemGroup('template-select', {\n label: ['template select group label', { ns: SCRIPT_PLUGIN }],\n variant: 'dropdownMenu',\n });\n};\n\nconst createTemplateSelectActions = () => {\n return templates.map((template) => {\n return createMenuAction<TemplateActionProperties>(`template--${template.id}`, {\n label: template.name,\n value: template.id,\n type: 'template',\n });\n });\n};\n\nexport const createTemplateSelect = () => {\n const templateSelectGroup = createTemplateSelectGroup();\n const templateSelectActions = createTemplateSelectActions();\n return {\n nodes: [templateSelectGroup, ...templateSelectActions],\n edges: [\n { source: 'root', target: 'template-select' },\n ...templateSelectActions.map((action) => ({ source: 'template-select', target: action.id })),\n ],\n };\n};\n\nexport const useTemplateSelectHandler = ({ script }: { script: ScriptType }) => {\n return useCallback(\n (templateId: string) => {\n const template = templates.find((template) => template.id === templateId);\n if (template) {\n script.name = template.name;\n script.source!.target!.content = template.source;\n const metaKeys = getMeta(script).keys;\n const oldPresetIndex = metaKeys.findIndex((key) => key.source === FUNCTIONS_PRESET_META_KEY);\n if (oldPresetIndex >= 0) {\n metaKeys.splice(oldPresetIndex, 1);\n }\n if (template.presetId) {\n metaKeys.push({ source: FUNCTIONS_PRESET_META_KEY, id: template.presetId });\n }\n }\n },\n [script],\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { createMenuAction, createMenuItemGroup } from '@dxos/react-ui-menu';\n\nimport { SCRIPT_PLUGIN } from '../meta';\n\n// TODO(wittjosiah): Replace debug with logs.\nexport type ViewType = 'editor' | 'split' | 'debug'; // 'logs';\n\nexport type ViewState = { view: ViewType };\n\nexport type ViewActionProperties = { type: 'view'; value: ViewType };\n\nconst views: Record<ViewType, string> = {\n editor: 'ph--code--regular',\n split: 'ph--square-split-vertical--regular',\n debug: 'ph--bug--regular',\n // TODO(wittjosiah): Replace debug with logs.\n // logs: 'ph--clock-counter-clockwise--regular',\n};\n\nconst createViewGroupItem = (state: Partial<ViewState>) => {\n return createMenuItemGroup('view', {\n label: ['view group label', { ns: SCRIPT_PLUGIN }],\n variant: 'dropdownMenu',\n applyActive: true,\n value: state.view,\n });\n};\n\nconst createViewActions = (state: Partial<ViewState>) => {\n return Object.entries(views).map(([viewType, icon]) => {\n return createMenuAction<ViewActionProperties>(`view--${viewType}`, {\n type: 'view',\n value: viewType as ViewType,\n label: [`view ${viewType} label`, { ns: SCRIPT_PLUGIN }],\n icon,\n checked: state.view === viewType,\n });\n });\n};\n\nexport const createView = (state: Partial<ViewState>) => {\n const viewGroupItem = createViewGroupItem(state);\n const viewActions = createViewActions(state);\n return {\n nodes: [viewGroupItem, ...viewActions],\n edges: [\n { source: 'root', target: 'view' },\n ...viewActions.map((action) => ({ source: 'view', target: action.id })),\n ],\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback } from 'react';\n\nimport { type ScriptType } from '@dxos/functions';\nimport { log } from '@dxos/log';\nimport { type MenuAction, type MenuActionHandler } from '@dxos/react-ui-menu';\n\nimport { type DeployActionProperties, useDeployHandler, useCopyHandler } from './deploy';\nimport { type FormatActionProperties, useFormatHandler } from './format';\nimport { type TemplateActionProperties, useTemplateSelectHandler } from './template';\nimport { type ScriptToolbarState } from './useToolbarState';\nimport { type ViewActionProperties } from './view';\n\nexport type ScriptToolbarActionProperties =\n | TemplateActionProperties\n | ViewActionProperties\n | FormatActionProperties\n | DeployActionProperties;\n\nexport type ScriptToolbarAction = MenuAction<ScriptToolbarActionProperties>;\n\nexport const useToolbarAction = (props: { state: ScriptToolbarState; script: ScriptType }) => {\n const handleTemplateSelect = useTemplateSelectHandler(props);\n const handleFormat = useFormatHandler(props);\n const handleDeploy = useDeployHandler(props);\n const handleCopy = useCopyHandler(props);\n return useCallback(\n ((action: ScriptToolbarAction) => {\n switch (action.properties.type) {\n case 'template':\n handleTemplateSelect(action.properties.value);\n break;\n case 'view':\n props.state.view = action.properties.value;\n break;\n case 'format':\n void handleFormat();\n break;\n case 'deploy':\n void handleDeploy();\n break;\n case 'copy':\n void handleCopy();\n break;\n default:\n log.error('Unknown action type', action);\n }\n }) as MenuActionHandler,\n [handleTemplateSelect, handleFormat, handleDeploy, handleCopy],\n );\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["import_react", "import_log", "import_react_ui_menu", "import_functions", "import_live_object", "createDeploy", "state", "errorItem", "createMenuAction", "label", "error", "ns", "SCRIPT_PLUGIN", "icon", "hidden", "deployAction", "type", "deploying", "disabled", "classNames", "copyAction", "functionUrl", "nodes", "edges", "source", "target", "useDeployDeps", "script", "space", "getSpace", "fn", "useQuery", "Filter", "schema", "FunctionType", "client", "useClient", "existingFunctionUrl", "useMemo", "getUserFunctionUrlInMetadata", "getMeta", "useDeployState", "useEffect", "getInvocationUrl", "config", "values", "runtime", "services", "edge", "url", "spaceId", "id", "deployed", "Boolean", "changed", "useDeployHandler", "t", "useTranslation", "useCallback", "undefined", "existingFunctionId", "split", "at", "bundler", "Bundler", "platform", "sandboxedModules", "remoteModules", "buildResult", "bundle", "content", "functionId", "version", "meta", "uploadWorkerFunction", "incrementSemverPatch", "Error", "log", "info", "deployedFunction", "db", "add", "create", "name", "makeRef", "description", "trim", "verbose", "inputSchema", "outputSchema", "setUserFunctionUrlInMetadata", "view", "err", "catch", "useCopyHandler", "navigator", "clipboard", "writeText", "useToolbarState", "initialState", "createFormat", "formatAction", "useFormatHandler", "format", "parser", "plugins", "prettierPluginEstree", "prettierPluginTypescript", "semi", "singleQuote", "createTemplateSelectGroup", "createMenuItemGroup", "variant", "createTemplateSelectActions", "templates", "map", "template", "value", "createTemplateSelect", "templateSelectGroup", "templateSelectActions", "action", "useTemplateSelectHandler", "templateId", "find", "metaKeys", "keys", "oldPresetIndex", "findIndex", "key", "FUNCTIONS_PRESET_META_KEY", "splice", "presetId", "push", "views", "editor", "debug", "createViewGroupItem", "applyActive", "createViewActions", "Object", "entries", "viewType", "checked", "createView", "viewGroupItem", "viewActions", "useToolbarAction", "props", "handleTemplateSelect", "handleFormat", "handleDeploy", "handleCopy", "properties"]
7
+ }
@@ -26,16 +26,16 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var compiler_P2HQB22H_exports = {};
30
- __export(compiler_P2HQB22H_exports, {
29
+ var compiler_UIBLKJKG_exports = {};
30
+ __export(compiler_UIBLKJKG_exports, {
31
31
  default: () => compiler_default
32
32
  });
33
- module.exports = __toCommonJS(compiler_P2HQB22H_exports);
34
- var import_chunk_T4TXCRN5 = require("./chunk-T4TXCRN5.cjs");
33
+ module.exports = __toCommonJS(compiler_UIBLKJKG_exports);
35
34
  var import_chunk_ALY3N6PW = require("./chunk-ALY3N6PW.cjs");
36
35
  var import_chunk_5UH3F7TA = require("./chunk-5UH3F7TA.cjs");
37
36
  var import_esbuild = __toESM(require("esbuild-wasm/esbuild.wasm?url"));
38
37
  var import_app_framework = require("@dxos/app-framework");
38
+ var import_bundler = require("@dxos/functions/bundler");
39
39
  var import_vfs = require("@typescript/vfs");
40
40
  var import_typescript = __toESM(require("typescript"));
41
41
  var import_invariant = require("@dxos/invariant");
@@ -96,9 +96,9 @@ var compiler_default = async () => {
96
96
  export type FunctionHandler = ({ event, context }: { event: any; context: any }) => Promise<Response>;
97
97
  export const functionHandler = (handler: FunctionHandler) => handler;
98
98
  `);
99
- await (0, import_chunk_T4TXCRN5.initializeBundler)({
99
+ await (0, import_bundler.initializeBundler)({
100
100
  wasmUrl: import_esbuild.default
101
101
  });
102
102
  return (0, import_app_framework.contributes)(import_chunk_ALY3N6PW.ScriptCapabilities.Compiler, compiler);
103
103
  };
104
- //# sourceMappingURL=compiler-P2HQB22H.cjs.map
104
+ //# sourceMappingURL=compiler-UIBLKJKG.cjs.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 { ScriptCapabilities } from './capabilities';\nimport { Compiler } from '../compiler';\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 createDefaultMapFromCDN,\n createSystem,\n createVirtualTypeScriptEnvironment,\n type VirtualTypeScriptEnvironment,\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() {\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) {\n invariant(this._fsMap, 'File system map not initialized.');\n this.environment.createFile(fileName, content);\n }\n\n compile(fileName: string) {\n return this.environment.languageService.getEmitOutput(fileName);\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,qBAAoB;AAEpB,2BAA4B;AAC5B,qBAAkC;ACJlC,iBAKO;AACP,wBAAe;AAEf,uBAA0B;;AAE1B,IAAMA,iBAAqC;EACzCC,KAAK;IAAC;IAAO;;EACbC,QAAQC,kBAAAA,QAAGC,aAAaC;AAC1B;AAEO,IAAMC,WAAN,MAAMA;EAIXC,YAA6BC,WAA+BR,gBAAgB;SAA/CQ,WAAAA;EAAgD;EAE7E,MAAMC,aAAa;AACjB,QAAI,KAAKC,MAAM;AACb;IACF;AAIA,SAAKC,SAAS,UAAMC,oCAAwB,KAAKJ,UAAU,SAAS,MAAML,kBAAAA,OAAAA;AAC1E,UAAMU,aAASC,yBAAa,KAAKH,MAAM;AACvC,SAAKD,WAAOK,+CAAmCF,QAAQ,CAAA,GAAIV,kBAAAA,SAAI,KAAKK,QAAQ;EAC9E;EAEA,IAAIQ,cAAc;AAChBC,oCAAU,KAAKP,MAAM,yCAAA;;;;;;;;;AACrB,WAAO,KAAKA;EACd;EAEAQ,QAAQC,UAAkBC,SAAiB;AACzCH,oCAAU,KAAKN,QAAQ,oCAAA;;;;;;;;;AACvB,SAAKK,YAAYK,WAAWF,UAAUC,OAAAA;EACxC;EAEAE,QAAQH,UAAkB;AACxB,WAAO,KAAKH,YAAYO,gBAAgBC,cAAcL,QAAAA;EACxD;AACF;ADrCA,IAAA,mBAAe,YAAA;AACb,QAAMM,WAAW,IAAInB,SAAAA;AAErB,QAAMmB,SAAShB,WAAU;AAEzBgB,WAASP,QAAQ,qBAAqB,6BAAA;AAGtCO,WAASP,QACP,mBACA;;;;OAIG;AAEL,YAAMQ,kCAAkB;IAAEC,wBAAAA;EAAQ,CAAA;AAElC,aAAOC,kCAAYC,yCAAmBvB,UAAUmB,QAAAA;AAClD;",
6
+ "names": ["defaultOptions", "lib", "target", "ts", "ScriptTarget", "ES2022", "Compiler", "constructor", "_options", "initialize", "_env", "_fsMap", "createDefaultMapFromCDN", "system", "createSystem", "createVirtualTypeScriptEnvironment", "environment", "invariant", "setFile", "fileName", "content", "createFile", "compile", "languageService", "getEmitOutput", "compiler", "initializeBundler", "wasmUrl", "contributes", "ScriptCapabilities"]
7
+ }