@dxos/plugin-script 0.7.2 → 0.7.3-staging.971cd8d
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/{AutomationPanel-BZCRRLOQ.mjs → AutomationPanel-PMTZROAZ.mjs} +18 -11
- package/dist/lib/browser/AutomationPanel-PMTZROAZ.mjs.map +7 -0
- package/dist/lib/browser/{ScriptContainer-GQ2KJ5BM.mjs → ScriptContainer-RYZFYCNK.mjs} +27 -25
- package/dist/lib/browser/ScriptContainer-RYZFYCNK.mjs.map +7 -0
- package/dist/lib/browser/{chunk-NCZUJKJE.mjs → chunk-K7KY6YMG.mjs} +14 -10
- package/dist/lib/browser/chunk-K7KY6YMG.mjs.map +7 -0
- package/dist/lib/browser/{chunk-DTVOXLPP.mjs → chunk-QFZUFT5G.mjs} +2 -2
- package/dist/lib/browser/{chunk-DTVOXLPP.mjs.map → chunk-QFZUFT5G.mjs.map} +3 -3
- package/dist/lib/browser/chunk-U3OP64V4.mjs +123 -0
- package/dist/lib/browser/chunk-U3OP64V4.mjs.map +7 -0
- package/dist/lib/browser/edge/index.mjs +5 -9
- package/dist/lib/browser/index.mjs +15 -18
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/types/index.mjs +1 -1
- package/dist/lib/node/{AutomationPanel-VNLNP3EE.cjs → AutomationPanel-AAGQREH7.cjs} +21 -16
- package/dist/lib/node/AutomationPanel-AAGQREH7.cjs.map +7 -0
- package/dist/lib/node/{ScriptContainer-K67ZWCKL.cjs → ScriptContainer-FZ44UIRC.cjs} +32 -30
- package/dist/lib/node/ScriptContainer-FZ44UIRC.cjs.map +7 -0
- package/dist/lib/node/{chunk-BJ4WIWCP.cjs → chunk-4INUJLXL.cjs} +16 -12
- package/dist/lib/node/chunk-4INUJLXL.cjs.map +7 -0
- package/dist/lib/node/chunk-CS25QNKZ.cjs +151 -0
- package/dist/lib/node/chunk-CS25QNKZ.cjs.map +7 -0
- package/dist/lib/node/{chunk-T4PYTKIW.cjs → chunk-DQYAU2CJ.cjs} +5 -5
- package/dist/lib/node/{chunk-T4PYTKIW.cjs.map → chunk-DQYAU2CJ.cjs.map} +3 -3
- package/dist/lib/node/edge/index.cjs +10 -14
- package/dist/lib/node/edge/index.cjs.map +2 -2
- package/dist/lib/node/index.cjs +30 -33
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/types/index.cjs +4 -4
- package/dist/lib/node/types/index.cjs.map +1 -1
- package/dist/lib/node-esm/{AutomationPanel-NWE2QCOE.mjs → AutomationPanel-ETQEDY5I.mjs} +18 -11
- package/dist/lib/node-esm/AutomationPanel-ETQEDY5I.mjs.map +7 -0
- package/dist/lib/node-esm/{ScriptContainer-BVDYLJZI.mjs → ScriptContainer-3PKDW34A.mjs} +27 -25
- package/dist/lib/node-esm/ScriptContainer-3PKDW34A.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-36DLLQ6E.mjs +125 -0
- package/dist/lib/node-esm/chunk-36DLLQ6E.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-2HYWFUEN.mjs → chunk-GMVPKT6A.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-2HYWFUEN.mjs.map → chunk-GMVPKT6A.mjs.map} +3 -3
- package/dist/lib/node-esm/{chunk-DXWSRDEN.mjs → chunk-OFYGBUNI.mjs} +14 -10
- package/dist/lib/node-esm/chunk-OFYGBUNI.mjs.map +7 -0
- package/dist/lib/node-esm/edge/index.mjs +5 -9
- package/dist/lib/node-esm/index.mjs +15 -18
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/types/index.mjs +1 -1
- package/dist/types/src/ScriptPlugin.d.ts.map +1 -1
- package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts.map +1 -1
- package/dist/types/src/components/DebugPanel/DebugPanel.d.ts.map +1 -1
- package/dist/types/src/components/ScriptBlock/ScriptBlock.d.ts +1 -5
- package/dist/types/src/components/ScriptBlock/ScriptBlock.d.ts.map +1 -1
- package/dist/types/src/components/ScriptBlock/ScriptBlock.stories.d.ts.map +1 -1
- package/dist/types/src/components/ScriptEditor.d.ts.map +1 -1
- package/dist/types/src/components/ScriptSettingsPanel.d.ts.map +1 -1
- package/dist/types/src/edge/functions.d.ts +13 -21
- package/dist/types/src/edge/functions.d.ts.map +1 -1
- package/dist/types/src/edge/index.d.ts +0 -3
- package/dist/types/src/edge/index.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +43 -0
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/schema.d.ts +2 -2
- package/dist/types/src/types/types.d.ts +2 -3
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/package.json +37 -36
- package/src/ScriptPlugin.tsx +4 -8
- package/src/components/AutomationPanel/AutomationPanel.tsx +10 -5
- package/src/components/DebugPanel/DebugPanel.tsx +41 -30
- package/src/components/ScriptBlock/ScriptBlock.stories.tsx +5 -25
- package/src/components/ScriptBlock/ScriptBlock.tsx +3 -8
- package/src/components/ScriptEditor.tsx +16 -23
- package/src/components/ScriptSettingsPanel.tsx +1 -5
- package/src/edge/functions.ts +69 -109
- package/src/edge/index.ts +0 -3
- package/src/translations.ts +4 -0
- package/src/types/schema.ts +1 -1
- package/src/types/types.ts +1 -3
- package/dist/lib/browser/AutomationPanel-BZCRRLOQ.mjs.map +0 -7
- package/dist/lib/browser/ScriptContainer-GQ2KJ5BM.mjs.map +0 -7
- package/dist/lib/browser/chunk-5GGRYRS4.mjs +0 -253
- package/dist/lib/browser/chunk-5GGRYRS4.mjs.map +0 -7
- package/dist/lib/browser/chunk-NCZUJKJE.mjs.map +0 -7
- package/dist/lib/node/AutomationPanel-VNLNP3EE.cjs.map +0 -7
- package/dist/lib/node/ScriptContainer-K67ZWCKL.cjs.map +0 -7
- package/dist/lib/node/chunk-BJ4WIWCP.cjs.map +0 -7
- package/dist/lib/node/chunk-XS6GEYYH.cjs +0 -273
- package/dist/lib/node/chunk-XS6GEYYH.cjs.map +0 -7
- package/dist/lib/node-esm/AutomationPanel-NWE2QCOE.mjs.map +0 -7
- package/dist/lib/node-esm/ScriptContainer-BVDYLJZI.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-DXWSRDEN.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-V74XKPLC.mjs +0 -255
- package/dist/lib/node-esm/chunk-V74XKPLC.mjs.map +0 -7
- package/dist/types/src/edge/codec.d.ts +0 -4
- package/dist/types/src/edge/codec.d.ts.map +0 -1
- package/dist/types/src/edge/header-codec.d.ts +0 -24
- package/dist/types/src/edge/header-codec.d.ts.map +0 -1
- package/dist/types/src/edge/hub-protocol.d.ts +0 -6
- package/dist/types/src/edge/hub-protocol.d.ts.map +0 -1
- package/src/edge/codec.ts +0 -13
- package/src/edge/header-codec.ts +0 -97
- package/src/edge/hub-protocol.ts +0 -27
|
@@ -26,15 +26,15 @@ 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
|
|
30
|
-
__export(
|
|
29
|
+
var ScriptContainer_FZ44UIRC_exports = {};
|
|
30
|
+
__export(ScriptContainer_FZ44UIRC_exports, {
|
|
31
31
|
default: () => ScriptContainer_default
|
|
32
32
|
});
|
|
33
|
-
module.exports = __toCommonJS(
|
|
33
|
+
module.exports = __toCommonJS(ScriptContainer_FZ44UIRC_exports);
|
|
34
34
|
var import_chunk_WPP65EYS = require("./chunk-WPP65EYS.cjs");
|
|
35
|
-
var
|
|
36
|
-
var
|
|
37
|
-
var
|
|
35
|
+
var import_chunk_4INUJLXL = require("./chunk-4INUJLXL.cjs");
|
|
36
|
+
var import_chunk_CS25QNKZ = require("./chunk-CS25QNKZ.cjs");
|
|
37
|
+
var import_chunk_DQYAU2CJ = require("./chunk-DQYAU2CJ.cjs");
|
|
38
38
|
var import_chunk_6LYX73ZT = require("./chunk-6LYX73ZT.cjs");
|
|
39
39
|
var import_react = __toESM(require("react"));
|
|
40
40
|
var import_echo = require("@dxos/react-client/echo");
|
|
@@ -232,7 +232,9 @@ var ScriptEditor = ({ classNames, script, env }) => {
|
|
|
232
232
|
const client = (0, import_react_client.useClient)();
|
|
233
233
|
const identity = (0, import_halo.useIdentity)();
|
|
234
234
|
const space = (0, import_echo2.getSpace)(script);
|
|
235
|
-
const [fn] = (0, import_echo2.useQuery)(space, import_echo2.Filter.schema(
|
|
235
|
+
const [fn] = (0, import_echo2.useQuery)(space, import_echo2.Filter.schema(import_chunk_DQYAU2CJ.FunctionType, {
|
|
236
|
+
source: script
|
|
237
|
+
}));
|
|
236
238
|
const extensions = (0, import_react2.useMemo)(() => [
|
|
237
239
|
(0, import_react_ui_editor.listener)({
|
|
238
240
|
onChange: (text) => {
|
|
@@ -256,7 +258,7 @@ var ScriptEditor = ({ classNames, script, env }) => {
|
|
|
256
258
|
identity
|
|
257
259
|
]);
|
|
258
260
|
const [view, setView] = (0, import_react2.useState)("editor");
|
|
259
|
-
const existingFunctionUrl = fn && (0,
|
|
261
|
+
const existingFunctionUrl = fn && (0, import_chunk_CS25QNKZ.getUserFunctionUrlInMetadata)((0, import_echo2.getMeta)(fn));
|
|
260
262
|
const [error, setError] = (0, import_react2.useState)();
|
|
261
263
|
const handleFormat = (0, import_react2.useCallback)(async () => {
|
|
262
264
|
if (!script.source) {
|
|
@@ -275,7 +277,7 @@ var ScriptEditor = ({ classNames, script, env }) => {
|
|
|
275
277
|
} catch (err) {
|
|
276
278
|
import_log.log.catch(err, void 0, {
|
|
277
279
|
F: __dxlog_file,
|
|
278
|
-
L:
|
|
280
|
+
L: 83,
|
|
279
281
|
S: void 0,
|
|
280
282
|
C: (f, a) => f(...a)
|
|
281
283
|
});
|
|
@@ -289,13 +291,13 @@ var ScriptEditor = ({ classNames, script, env }) => {
|
|
|
289
291
|
script.name = template.name;
|
|
290
292
|
script.source.content = template.source;
|
|
291
293
|
const metaKeys = (0, import_echo2.getMeta)(script).keys;
|
|
292
|
-
const oldPresetIndex = metaKeys.findIndex((key) => key.source ===
|
|
294
|
+
const oldPresetIndex = metaKeys.findIndex((key) => key.source === import_chunk_CS25QNKZ.FUNCTIONS_PRESET_META_KEY);
|
|
293
295
|
if (oldPresetIndex >= 0) {
|
|
294
296
|
metaKeys.splice(oldPresetIndex, 1);
|
|
295
297
|
}
|
|
296
298
|
if (template.presetId) {
|
|
297
299
|
metaKeys.push({
|
|
298
|
-
source:
|
|
300
|
+
source: import_chunk_CS25QNKZ.FUNCTIONS_PRESET_META_KEY,
|
|
299
301
|
id: template.presetId
|
|
300
302
|
});
|
|
301
303
|
}
|
|
@@ -308,7 +310,6 @@ var ScriptEditor = ({ classNames, script, env }) => {
|
|
|
308
310
|
setError(void 0);
|
|
309
311
|
try {
|
|
310
312
|
const existingFunctionId = existingFunctionUrl?.split("/").at(-1);
|
|
311
|
-
const ownerDid = existingFunctionUrl?.split("/").at(-2) ?? (0, import_chunk_XS6GEYYH.publicKeyToDid)(identity.identityKey);
|
|
312
313
|
const bundler = new import_chunk_WPP65EYS.Bundler({
|
|
313
314
|
platform: "browser",
|
|
314
315
|
sandboxedModules: [],
|
|
@@ -318,31 +319,31 @@ var ScriptEditor = ({ classNames, script, env }) => {
|
|
|
318
319
|
if (buildResult.error || !buildResult.bundle) {
|
|
319
320
|
throw buildResult.error;
|
|
320
321
|
}
|
|
321
|
-
const {
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
322
|
+
const { functionId, version, meta } = await (0, import_chunk_CS25QNKZ.uploadWorkerFunction)({
|
|
323
|
+
client,
|
|
324
|
+
spaceId: space.id,
|
|
325
|
+
version: fn ? (0, import_chunk_CS25QNKZ.incrementSemverPatch)(fn.version) : "0.0.1",
|
|
325
326
|
functionId: existingFunctionId,
|
|
326
327
|
source: buildResult.bundle
|
|
327
328
|
});
|
|
328
|
-
if (
|
|
329
|
-
throw new Error(
|
|
329
|
+
if (functionId === void 0 || version === void 0) {
|
|
330
|
+
throw new Error(`Upload didn't return expected data: functionId=${functionId}, version=${version}`);
|
|
330
331
|
}
|
|
331
332
|
import_log.log.info("function uploaded", {
|
|
332
333
|
functionId,
|
|
333
|
-
|
|
334
|
+
version
|
|
334
335
|
}, {
|
|
335
336
|
F: __dxlog_file,
|
|
336
|
-
L:
|
|
337
|
+
L: 130,
|
|
337
338
|
S: void 0,
|
|
338
339
|
C: (f, a) => f(...a)
|
|
339
340
|
});
|
|
340
341
|
if (fn) {
|
|
341
|
-
fn.version =
|
|
342
|
+
fn.version = version;
|
|
342
343
|
}
|
|
343
|
-
const deployedFunction = fn ?? space.db.add((0, import_echo2.create)(
|
|
344
|
+
const deployedFunction = fn ?? space.db.add((0, import_echo2.create)(import_chunk_DQYAU2CJ.FunctionType, {
|
|
344
345
|
name: functionId,
|
|
345
|
-
version
|
|
346
|
+
version,
|
|
346
347
|
source: script
|
|
347
348
|
}));
|
|
348
349
|
script.changed = false;
|
|
@@ -353,17 +354,17 @@ var ScriptEditor = ({ classNames, script, env }) => {
|
|
|
353
354
|
functionId
|
|
354
355
|
}, {
|
|
355
356
|
F: __dxlog_file,
|
|
356
|
-
L:
|
|
357
|
+
L: 142,
|
|
357
358
|
S: void 0,
|
|
358
359
|
C: (f, a) => f(...a)
|
|
359
360
|
});
|
|
360
361
|
}
|
|
361
|
-
(0,
|
|
362
|
+
(0, import_chunk_CS25QNKZ.setUserFunctionUrlInMetadata)((0, import_echo2.getMeta)(deployedFunction), `/${space.id}/${functionId}`);
|
|
362
363
|
setView("split");
|
|
363
364
|
} catch (err) {
|
|
364
365
|
import_log.log.catch(err, void 0, {
|
|
365
366
|
F: __dxlog_file,
|
|
366
|
-
L:
|
|
367
|
+
L: 149,
|
|
367
368
|
S: void 0,
|
|
368
369
|
C: (f, a) => f(...a)
|
|
369
370
|
});
|
|
@@ -374,13 +375,14 @@ var ScriptEditor = ({ classNames, script, env }) => {
|
|
|
374
375
|
existingFunctionUrl,
|
|
375
376
|
script,
|
|
376
377
|
script.name,
|
|
377
|
-
script.source
|
|
378
|
+
script.source,
|
|
379
|
+
space?.id ?? null
|
|
378
380
|
]);
|
|
379
381
|
const functionUrl = (0, import_react2.useMemo)(() => {
|
|
380
382
|
if (!existingFunctionUrl) {
|
|
381
383
|
return;
|
|
382
384
|
}
|
|
383
|
-
return (0,
|
|
385
|
+
return (0, import_chunk_CS25QNKZ.getInvocationUrl)(existingFunctionUrl, client.config.values.runtime?.services?.edge?.url ?? "", {
|
|
384
386
|
spaceId: space?.id
|
|
385
387
|
});
|
|
386
388
|
}, [
|
|
@@ -406,7 +408,7 @@ var ScriptEditor = ({ classNames, script, env }) => {
|
|
|
406
408
|
initialValue: script.source?.content,
|
|
407
409
|
extensions,
|
|
408
410
|
className: "flex is-full bs-full overflow-hidden ch-focus-ring-inset-over-all"
|
|
409
|
-
}), view !== "editor" && /* @__PURE__ */ import_react2.default.createElement(
|
|
411
|
+
}), view !== "editor" && /* @__PURE__ */ import_react2.default.createElement(import_chunk_4INUJLXL.DebugPanel, {
|
|
410
412
|
functionUrl
|
|
411
413
|
}));
|
|
412
414
|
};
|
|
@@ -422,4 +424,4 @@ var ScriptContainer = ({ script, ...props }) => {
|
|
|
422
424
|
}));
|
|
423
425
|
};
|
|
424
426
|
var ScriptContainer_default = ScriptContainer;
|
|
425
|
-
//# sourceMappingURL=ScriptContainer-
|
|
427
|
+
//# sourceMappingURL=ScriptContainer-FZ44UIRC.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/ScriptContainer.tsx", "../../../src/components/ScriptEditor.tsx", "../../../src/components/Toolbar/Toolbar.tsx", "../../../src/components/TypescriptEditor/TypescriptEditor.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { fullyQualifiedId } from '@dxos/react-client/echo';\nimport { useAttendableAttributes } from '@dxos/react-ui-attention';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { ScriptEditor, type ScriptEditorProps } from './ScriptEditor';\n\nconst ScriptContainer = ({ script, ...props }: ScriptEditorProps) => {\n const attendableAttrs = useAttendableAttributes(fullyQualifiedId(script));\n return (\n <div role='none' className={mx('flex row-span-2 w-full overflow-hidden attention-surface')} {...attendableAttrs}>\n <ScriptEditor {...props} script={script} />\n </div>\n );\n};\n\nexport default ScriptContainer;\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { format } from 'prettier';\nimport prettierPluginEstree from 'prettier/plugins/estree';\nimport prettierPluginTypescript from 'prettier/plugins/typescript';\nimport React, { useCallback, useMemo, useState } from 'react';\n\nimport { log } from '@dxos/log';\nimport { useClient } from '@dxos/react-client';\nimport { create, createDocAccessor, Filter, getMeta, getSpace, useQuery } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { useTranslation, type ThemedClassName } from '@dxos/react-ui';\nimport { createDataExtensions, listener } from '@dxos/react-ui-editor';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { DebugPanel } from './DebugPanel';\nimport { type TemplateSelectProps, Toolbar, type ViewType } from './Toolbar';\nimport { TypescriptEditor, type TypescriptEditorProps } from './TypescriptEditor';\nimport { Bundler } from '../bundler';\nimport {\n getInvocationUrl,\n getUserFunctionUrlInMetadata,\n setUserFunctionUrlInMetadata,\n uploadWorkerFunction,\n FUNCTIONS_PRESET_META_KEY,\n incrementSemverPatch,\n} from '../edge';\nimport { SCRIPT_PLUGIN } from '../meta';\nimport { templates } from '../templates';\nimport { FunctionType, type ScriptType } from '../types';\n\nexport type ScriptEditorProps = ThemedClassName<{\n script: ScriptType;\n}> &\n Pick<TypescriptEditorProps, 'env'>;\n\nexport const ScriptEditor = ({ classNames, script, env }: ScriptEditorProps) => {\n const { t } = useTranslation(SCRIPT_PLUGIN);\n const client = useClient();\n const identity = useIdentity();\n const space = getSpace(script);\n const [fn] = useQuery(space, Filter.schema(FunctionType, { source: script }));\n\n const extensions = useMemo(\n () => [\n listener({\n onChange: (text) => {\n if (script.source && script.source?.content !== text) {\n script.changed = true;\n }\n },\n }),\n createDataExtensions({\n id: script.id,\n text: script.source && createDocAccessor(script.source, ['content']),\n space,\n identity,\n }),\n ],\n [script, script.source, space, identity],\n );\n\n const [view, setView] = useState<ViewType>('editor');\n const existingFunctionUrl = fn && getUserFunctionUrlInMetadata(getMeta(fn));\n const [error, setError] = useState<string>();\n\n const handleFormat = useCallback(async () => {\n if (!script.source) {\n return;\n }\n\n try {\n script.source.content = await format(script.source.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 const handleTemplateChange: TemplateSelectProps['onTemplateSelect'] = (id) => {\n const template = templates.find((template) => template.id === id);\n if (template) {\n script.name = template.name;\n script.source!.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\n const handleDeploy = useCallback(async () => {\n if (!script.source || !identity || !space) {\n return;\n }\n\n setError(undefined);\n\n try {\n const existingFunctionId = existingFunctionUrl?.split('/').at(-1);\n\n const bundler = new Bundler({ platform: 'browser', sandboxedModules: [], remoteModules: {} });\n const buildResult = await bundler.bundle(script.source.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 = fn ?? space.db.add(create(FunctionType, { name: functionId, version, source: script }));\n\n script.changed = false;\n\n if (meta.inputSchema) {\n deployedFunction.inputSchema = meta.inputSchema;\n } else {\n log.verbose('no input schema in function metadata', { functionId });\n }\n\n setUserFunctionUrlInMetadata(getMeta(deployedFunction), `/${space.id}/${functionId}`);\n\n setView('split');\n } catch (err: any) {\n log.catch(err);\n setError(t('upload failed label'));\n }\n }, [fn, existingFunctionUrl, script, script.name, script.source, space?.id ?? null]);\n\n const functionUrl = useMemo(() => {\n if (!existingFunctionUrl) {\n return;\n }\n\n return getInvocationUrl(existingFunctionUrl, client.config.values.runtime?.services?.edge?.url ?? '', {\n spaceId: space?.id,\n });\n }, [existingFunctionUrl, space]);\n\n return (\n <div role='none' className={mx('flex flex-col w-full overflow-hidden divide-y divide-separator', classNames)}>\n <Toolbar\n deployed={Boolean(existingFunctionUrl) && !script.changed}\n functionUrl={functionUrl}\n error={error}\n view={view}\n templates={templates}\n onDeploy={handleDeploy}\n onFormat={handleFormat}\n onViewChange={setView}\n onTemplateSelect={handleTemplateChange}\n />\n\n {view !== 'preview' && (\n <TypescriptEditor\n id={script.id}\n env={env}\n initialValue={script.source?.content}\n extensions={extensions}\n className='flex is-full bs-full overflow-hidden ch-focus-ring-inset-over-all'\n />\n )}\n\n {view !== 'editor' && <DebugPanel functionUrl={functionUrl} />}\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useState } from 'react';\n\nimport {\n ElevationProvider,\n Icon,\n Select,\n type ThemedClassName,\n ToggleGroup,\n ToggleGroupItem,\n type ToolbarButtonProps,\n Toolbar as NaturalToolbar,\n Tooltip,\n useTranslation,\n} from '@dxos/react-ui';\n\nimport { SCRIPT_PLUGIN } from '../../meta';\nimport { type Template } from '../../templates';\n\nexport type ToolbarProps = ThemedClassName<\n {\n deployed?: boolean;\n error?: string;\n functionUrl?: string;\n onDeploy?: () => Promise<void>;\n onFormat?: () => Promise<void>;\n } & TemplateSelectProps &\n ViewSelectorProps\n>;\n\nexport const Toolbar = ({\n classNames,\n deployed,\n error,\n functionUrl,\n view,\n templates,\n onDeploy,\n onFormat,\n onViewChange,\n onTemplateSelect,\n}: ToolbarProps) => {\n const { t } = useTranslation(SCRIPT_PLUGIN);\n const [pending, setPending] = useState(false);\n\n const handleCopyLink = async () => {\n if (!functionUrl) {\n return;\n }\n\n await navigator.clipboard.writeText(functionUrl);\n };\n\n const handleDeploy = async () => {\n if (!pending) {\n setPending(true);\n await onDeploy?.();\n setPending(false);\n }\n };\n\n // TODO(burdon): Factor out common toolbar components with sheet/editor?\n return (\n <ElevationProvider elevation='chrome'>\n <NaturalToolbar.Root classNames={['p-1', classNames]} style={{ contain: 'layout' }}>\n {templates && <TemplateSelect templates={templates} onTemplateSelect={onTemplateSelect} />}\n {onFormat && <ToolbarIconButton icon='ph--magic-wand--regular' text={t('format label')} onClick={onFormat} />}\n\n <div role='separator' className='grow' />\n\n {error ? (\n <Tooltip.Root>\n <Tooltip.Trigger>\n <Icon icon='ph--warning-circle--regular' size={4} />\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content>\n <Tooltip.Arrow />\n {error}\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n ) : null}\n\n {functionUrl && deployed && (\n <ToolbarIconButton icon='ph--link--regular' text={t('copy link label')} onClick={handleCopyLink} />\n )}\n\n {onDeploy && (\n <ToolbarIconButton\n icon={pending ? 'ph--spinner-gap--regular' : 'ph--cloud-arrow-up--regular'}\n classNames={[pending && 'animate-spin']}\n text={pending ? t('pending label') : t('deploy label')}\n onClick={handleDeploy}\n />\n )}\n\n <ViewSelector view={view} onViewChange={onViewChange} />\n </NaturalToolbar.Root>\n </ElevationProvider>\n );\n};\n\nconst ToolbarIconButton = ({\n icon,\n text,\n classNames,\n disabled,\n onClick,\n}: { icon: string; text: string } & Pick<ToolbarButtonProps, 'classNames' | 'disabled' | 'onClick'>) => {\n return (\n <Tooltip.Root>\n <Tooltip.Trigger asChild>\n <NaturalToolbar.Button variant='ghost' disabled={disabled} onClick={onClick}>\n <Icon icon={icon} size={4} classNames={classNames} />\n </NaturalToolbar.Button>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content>\n <Tooltip.Arrow />\n {text}\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n );\n};\n\nexport type ViewType = 'editor' | 'split' | 'preview';\n\nexport type TemplateSelectProps = {\n templates?: Template[];\n onTemplateSelect?: (id: string) => void;\n};\n\nexport const TemplateSelect = ({ templates = [], onTemplateSelect }: TemplateSelectProps) => {\n return (\n <Select.Root value={''} onValueChange={onTemplateSelect}>\n <Select.TriggerButton />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n <Select.Option value={''}>Template</Select.Option>\n {templates.map(({ id, name }) => (\n <Select.Option key={id} value={id}>\n {name}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n );\n};\n\nexport type ViewSelectorProps = {\n view?: ViewType;\n onViewChange?: (view: ViewType) => void;\n};\n\nexport const ViewSelector = ({ view, onViewChange }: ViewSelectorProps) => {\n return (\n <ToggleGroup type='single' value={view} onValueChange={(value) => onViewChange?.(value as ViewType)}>\n <ToggleGroupItem value='editor' classNames='bg-transparent text-subdued'>\n <Icon icon='ph--code--regular' size={4} />\n </ToggleGroupItem>\n <ToggleGroupItem value='split' classNames='bg-transparent text-subdued'>\n <Icon icon='ph--square-split-vertical--regular' size={4} />\n </ToggleGroupItem>\n <ToggleGroupItem value='preview' classNames='bg-transparent text-subdued'>\n <Icon icon='ph--eye--regular' size={4} />\n </ToggleGroupItem>\n </ToggleGroup>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { javascript } from '@codemirror/lang-javascript';\nimport { type VirtualTypeScriptEnvironment } from '@typescript/vfs';\nimport { tsSync, tsFacet, tsLinter, tsAutocomplete, tsHover } from '@valtown/codemirror-ts';\nimport React from 'react';\n\nimport { useThemeContext } from '@dxos/react-ui';\nimport {\n autocomplete,\n createBasicExtensions,\n createThemeExtensions,\n editorFullWidth,\n editorGutter,\n editorMonospace,\n InputModeExtensions,\n useTextEditor,\n type UseTextEditorProps,\n} from '@dxos/react-ui-editor';\nimport { nonNullable } from '@dxos/util';\n\nexport type TypescriptEditorProps = {\n id: string;\n env?: VirtualTypeScriptEnvironment;\n} & Pick<UseTextEditorProps, 'className' | 'initialValue' | 'extensions' | 'scrollTo' | 'selection'>;\n\nexport const TypescriptEditor = ({\n id,\n env,\n className,\n initialValue,\n extensions,\n scrollTo,\n selection,\n}: TypescriptEditorProps) => {\n const { themeMode } = useThemeContext();\n const { parentRef, focusAttributes } = useTextEditor(\n () => ({\n id,\n initialValue,\n extensions: [\n extensions,\n createBasicExtensions({\n highlightActiveLine: true,\n indentWithTab: true,\n lineNumbers: true,\n lineWrapping: false,\n scrollPastEnd: true,\n }),\n createThemeExtensions({\n themeMode,\n syntaxHighlighting: true,\n slots: {\n content: { className: editorFullWidth },\n },\n }),\n editorGutter,\n // TODO(burdon): Factor out.\n [\n editorMonospace,\n javascript({ typescript: true }),\n // https://github.com/val-town/codemirror-ts\n autocomplete({ override: env ? [tsAutocomplete()] : [] }),\n env ? [tsFacet.of({ env, path: `/src/${id}.ts` }), tsSync(), tsLinter(), tsHover()] : [],\n InputModeExtensions.vscode,\n ],\n ].filter(nonNullable),\n selection,\n scrollTo,\n }),\n [id, extensions, themeMode, selection, scrollTo],\n );\n\n return <div ref={parentRef} className={className} {...focusAttributes} />;\n};\n\nexport default TypescriptEditor;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_react", "import_echo", "import_react_ui_theme", "import_react_ui", "import_react_ui_editor", "Toolbar", "classNames", "deployed", "error", "functionUrl", "view", "templates", "onDeploy", "onFormat", "onViewChange", "onTemplateSelect", "t", "useTranslation", "SCRIPT_PLUGIN", "pending", "setPending", "useState", "handleCopyLink", "navigator", "clipboard", "writeText", "handleDeploy", "React", "ElevationProvider", "elevation", "NaturalToolbar", "Root", "style", "contain", "TemplateSelect", "ToolbarIconButton", "icon", "text", "onClick", "div", "role", "className", "Tooltip", "Trigger", "Icon", "size", "Portal", "Content", "Arrow", "ViewSelector", "disabled", "asChild", "Button", "variant", "Select", "value", "onValueChange", "TriggerButton", "Viewport", "Option", "map", "id", "name", "key", "ToggleGroup", "type", "ToggleGroupItem", "TypescriptEditor", "env", "initialValue", "extensions", "scrollTo", "selection", "themeMode", "useThemeContext", "parentRef", "focusAttributes", "useTextEditor", "createBasicExtensions", "highlightActiveLine", "indentWithTab", "lineNumbers", "lineWrapping", "scrollPastEnd", "createThemeExtensions", "syntaxHighlighting", "slots", "content", "editorFullWidth", "editorGutter", "editorMonospace", "javascript", "typescript", "autocomplete", "override", "tsAutocomplete", "tsFacet", "of", "path", "tsSync", "tsLinter", "tsHover", "InputModeExtensions", "vscode", "filter", "nonNullable", "ref", "ScriptEditor", "script", "client", "useClient", "identity", "useIdentity", "space", "getSpace", "fn", "useQuery", "Filter", "schema", "FunctionType", "source", "useMemo", "listener", "onChange", "changed", "createDataExtensions", "createDocAccessor", "setView", "existingFunctionUrl", "getUserFunctionUrlInMetadata", "getMeta", "setError", "handleFormat", "useCallback", "format", "parser", "plugins", "prettierPluginEstree", "prettierPluginTypescript", "semi", "singleQuote", "err", "log", "catch", "handleTemplateChange", "template", "find", "metaKeys", "keys", "oldPresetIndex", "findIndex", "FUNCTIONS_PRESET_META_KEY", "splice", "presetId", "push", "undefined", "existingFunctionId", "split", "at", "bundler", "Bundler", "platform", "sandboxedModules", "remoteModules", "buildResult", "bundle", "functionId", "version", "meta", "uploadWorkerFunction", "spaceId", "incrementSemverPatch", "Error", "info", "deployedFunction", "db", "add", "create", "inputSchema", "verbose", "setUserFunctionUrlInMetadata", "getInvocationUrl", "config", "values", "runtime", "services", "edge", "url", "mx", "Boolean", "DebugPanel", "ScriptContainer", "props", "attendableAttrs", "useAttendableAttributes", "fullyQualifiedId"]
|
|
7
|
+
}
|
|
@@ -26,11 +26,11 @@ 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
|
|
30
|
-
__export(
|
|
29
|
+
var chunk_4INUJLXL_exports = {};
|
|
30
|
+
__export(chunk_4INUJLXL_exports, {
|
|
31
31
|
DebugPanel: () => DebugPanel
|
|
32
32
|
});
|
|
33
|
-
module.exports = __toCommonJS(
|
|
33
|
+
module.exports = __toCommonJS(chunk_4INUJLXL_exports);
|
|
34
34
|
var import_chunk_6LYX73ZT = require("./chunk-6LYX73ZT.cjs");
|
|
35
35
|
var import_react = __toESM(require("react"));
|
|
36
36
|
var import_log = require("@dxos/log");
|
|
@@ -179,15 +179,13 @@ var DebugPanel = ({ classNames, functionUrl }) => {
|
|
|
179
179
|
};
|
|
180
180
|
return /* @__PURE__ */ import_react.default.createElement("div", {
|
|
181
181
|
className: (0, import_react_ui_theme.mx)("flex flex-col h-full overflow-hidden", classNames)
|
|
182
|
-
}, /* @__PURE__ */ import_react.default.createElement("div", {
|
|
183
|
-
ref: scrollerRef,
|
|
184
|
-
className: "flex flex-col gap-6 h-full p-2 overflow-x-hidden overflow-y-auto"
|
|
185
182
|
}, /* @__PURE__ */ import_react.default.createElement(MessageThread, {
|
|
183
|
+
ref: scrollerRef,
|
|
186
184
|
state,
|
|
187
185
|
result,
|
|
188
186
|
history
|
|
189
|
-
})
|
|
190
|
-
classNames: "p-
|
|
187
|
+
}), /* @__PURE__ */ import_react.default.createElement(import_react_ui.Toolbar.Root, {
|
|
188
|
+
classNames: "p-1"
|
|
191
189
|
}, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Input.Root, null, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Input.TextInput, {
|
|
192
190
|
ref: inputRef,
|
|
193
191
|
autoFocus: true,
|
|
@@ -207,8 +205,14 @@ var DebugPanel = ({ classNames, functionUrl }) => {
|
|
|
207
205
|
size: 4
|
|
208
206
|
}))));
|
|
209
207
|
};
|
|
210
|
-
var MessageThread = ({ state,
|
|
211
|
-
|
|
208
|
+
var MessageThread = /* @__PURE__ */ (0, import_react.forwardRef)(({ state, history, result }, forwardedRef) => {
|
|
209
|
+
if (!history.length && !result.length) {
|
|
210
|
+
return null;
|
|
211
|
+
}
|
|
212
|
+
return /* @__PURE__ */ import_react.default.createElement("div", {
|
|
213
|
+
ref: forwardedRef,
|
|
214
|
+
className: "flex flex-col gap-6 h-full p-2 overflow-x-hidden overflow-y-auto"
|
|
215
|
+
}, history.map((message, i) => /* @__PURE__ */ import_react.default.createElement("div", {
|
|
212
216
|
key: i,
|
|
213
217
|
className: "grid grid-cols-[2rem_1fr_2rem]"
|
|
214
218
|
}, /* @__PURE__ */ import_react.default.createElement("div", {
|
|
@@ -237,7 +241,7 @@ var MessageThread = ({ state, result, history }) => {
|
|
|
237
241
|
text: result
|
|
238
242
|
}
|
|
239
243
|
}))));
|
|
240
|
-
};
|
|
244
|
+
});
|
|
241
245
|
var MessageItem = ({ classNames, message }) => {
|
|
242
246
|
const { type, text, data, error } = message;
|
|
243
247
|
const wrapper = "p-1 px-2 rounded-lg bg-hoverSurface overflow-auto";
|
|
@@ -262,4 +266,4 @@ var RobotAvatar = () => /* @__PURE__ */ import_react.default.createElement(impor
|
|
|
262
266
|
0 && (module.exports = {
|
|
263
267
|
DebugPanel
|
|
264
268
|
});
|
|
265
|
-
//# sourceMappingURL=chunk-
|
|
269
|
+
//# sourceMappingURL=chunk-4INUJLXL.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/DebugPanel/DebugPanel.tsx"],
|
|
4
|
+
"sourcesContent": ["//\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 { 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 DebugPanelProps = ThemedClassName<{\n functionUrl?: string;\n}>;\n\nexport const DebugPanel = ({ classNames, functionUrl }: DebugPanelProps) => {\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 -- at least for session (non-space ECHO data?)\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\n <Toolbar.Root classNames='p-1'>\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 delete individual messages.\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 if (!history.length && !result.length) {\n return null;\n }\n\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-lg 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 text-error')}>{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, 'px-8 py-2 text-xs')}>\n {JSON.stringify(data, null, 2)}\n </SyntaxHighlighter>\n )}\n </div>\n );\n};\n\nconst RobotAvatar = () => (\n <Avatar.Root size={6} variant='circle'>\n <Avatar.Frame>\n <Avatar.Icon icon='ph--robot--regular' />\n </Avatar.Frame>\n </Avatar.Root>\n);\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["DebugPanel", "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", "length", "map", "message", "i", "RobotAvatar", "MessageItem", "wrapper", "SyntaxHighlighter", "language", "Avatar", "variant", "Frame"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var chunk_CS25QNKZ_exports = {};
|
|
20
|
+
__export(chunk_CS25QNKZ_exports, {
|
|
21
|
+
FUNCTIONS_PRESET_META_KEY: () => FUNCTIONS_PRESET_META_KEY,
|
|
22
|
+
getInvocationUrl: () => getInvocationUrl,
|
|
23
|
+
getUserFunctionUrlInMetadata: () => getUserFunctionUrlInMetadata,
|
|
24
|
+
incrementSemverPatch: () => incrementSemverPatch,
|
|
25
|
+
publicKeyToDid: () => publicKeyToDid,
|
|
26
|
+
setUserFunctionUrlInMetadata: () => setUserFunctionUrlInMetadata,
|
|
27
|
+
uploadWorkerFunction: () => uploadWorkerFunction
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(chunk_CS25QNKZ_exports);
|
|
30
|
+
var import_edge_client = require("@dxos/edge-client");
|
|
31
|
+
var import_invariant = require("@dxos/invariant");
|
|
32
|
+
var import_log = require("@dxos/log");
|
|
33
|
+
var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-script/src/edge/functions.ts";
|
|
34
|
+
var FUNCTIONS_META_KEY = "dxos.org/service/function";
|
|
35
|
+
var FUNCTIONS_PRESET_META_KEY = "dxos.org/service/function-preset";
|
|
36
|
+
var uploadWorkerFunction = async ({ client, name, version, source, spaceId, functionId }) => {
|
|
37
|
+
const edgeUrl = client.config.values.runtime?.services?.edge?.url;
|
|
38
|
+
(0, import_invariant.invariant)(edgeUrl, "Edge is not configured.", {
|
|
39
|
+
F: __dxlog_file,
|
|
40
|
+
L: 38,
|
|
41
|
+
S: void 0,
|
|
42
|
+
A: [
|
|
43
|
+
"edgeUrl",
|
|
44
|
+
"'Edge is not configured.'"
|
|
45
|
+
]
|
|
46
|
+
});
|
|
47
|
+
const edgeClient = new import_edge_client.EdgeHttpClient(edgeUrl);
|
|
48
|
+
const edgeIdentity = createEdgeIdentity(client);
|
|
49
|
+
edgeClient.setIdentity(edgeIdentity);
|
|
50
|
+
const response = await edgeClient.uploadFunction({
|
|
51
|
+
spaceId,
|
|
52
|
+
functionId
|
|
53
|
+
}, {
|
|
54
|
+
name,
|
|
55
|
+
version,
|
|
56
|
+
script: source
|
|
57
|
+
});
|
|
58
|
+
(0, import_log.log)("Uploaded", {
|
|
59
|
+
functionId,
|
|
60
|
+
source,
|
|
61
|
+
name,
|
|
62
|
+
identityKey: edgeIdentity.identityKey,
|
|
63
|
+
response
|
|
64
|
+
}, {
|
|
65
|
+
F: __dxlog_file,
|
|
66
|
+
L: 44,
|
|
67
|
+
S: void 0,
|
|
68
|
+
C: (f, a) => f(...a)
|
|
69
|
+
});
|
|
70
|
+
return response;
|
|
71
|
+
};
|
|
72
|
+
var getUserFunctionUrlInMetadata = (meta) => {
|
|
73
|
+
return meta.keys.find((key) => key.source === FUNCTIONS_META_KEY)?.id;
|
|
74
|
+
};
|
|
75
|
+
var setUserFunctionUrlInMetadata = (meta, functionUrl) => {
|
|
76
|
+
const key = meta.keys.find((key2) => key2.source === FUNCTIONS_META_KEY);
|
|
77
|
+
if (key) {
|
|
78
|
+
if (key.id !== functionUrl) {
|
|
79
|
+
throw new Error("Metadata mismatch");
|
|
80
|
+
}
|
|
81
|
+
} else {
|
|
82
|
+
meta.keys.push({
|
|
83
|
+
source: FUNCTIONS_META_KEY,
|
|
84
|
+
id: functionUrl
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
var getInvocationUrl = (functionUrl, edgeUrl, options = {}) => {
|
|
89
|
+
const baseUrl = new URL("functions/", edgeUrl);
|
|
90
|
+
const relativeUrl = functionUrl.replace(/^\//, "");
|
|
91
|
+
const url = new URL(`./${relativeUrl}`, baseUrl.toString());
|
|
92
|
+
options.spaceId && url.searchParams.set("spaceId", options.spaceId);
|
|
93
|
+
options.subjectId && url.searchParams.set("subjectId", options.subjectId);
|
|
94
|
+
url.protocol = "https";
|
|
95
|
+
return url.toString();
|
|
96
|
+
};
|
|
97
|
+
var createEdgeIdentity = (client) => {
|
|
98
|
+
const identity = client.halo.identity.get();
|
|
99
|
+
const device = client.halo.device;
|
|
100
|
+
if (!identity || !device) {
|
|
101
|
+
throw new Error("Identity not available");
|
|
102
|
+
}
|
|
103
|
+
return {
|
|
104
|
+
identityKey: identity.identityKey.toHex(),
|
|
105
|
+
peerKey: device.deviceKey.toHex(),
|
|
106
|
+
presentCredentials: async ({ challenge }) => {
|
|
107
|
+
const identityService = client.services.services.IdentityService;
|
|
108
|
+
const authCredential = await identityService.createAuthCredential();
|
|
109
|
+
return identityService.signPresentation({
|
|
110
|
+
presentation: {
|
|
111
|
+
credentials: [
|
|
112
|
+
authCredential
|
|
113
|
+
]
|
|
114
|
+
},
|
|
115
|
+
nonce: challenge
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
};
|
|
120
|
+
var incrementSemverPatch = (version) => {
|
|
121
|
+
const [major, minor, patch] = version.split(".");
|
|
122
|
+
const patchNum = Number(patch);
|
|
123
|
+
(0, import_invariant.invariant)(!Number.isNaN(patchNum), "Unexpected function version format.", {
|
|
124
|
+
F: __dxlog_file,
|
|
125
|
+
L: 105,
|
|
126
|
+
S: void 0,
|
|
127
|
+
A: [
|
|
128
|
+
"!Number.isNaN(patchNum)",
|
|
129
|
+
"'Unexpected function version format.'"
|
|
130
|
+
]
|
|
131
|
+
});
|
|
132
|
+
return [
|
|
133
|
+
major,
|
|
134
|
+
minor,
|
|
135
|
+
String(patchNum + 1)
|
|
136
|
+
].join(".");
|
|
137
|
+
};
|
|
138
|
+
var publicKeyToDid = (key) => {
|
|
139
|
+
return `did:key:${key.toHex()}`;
|
|
140
|
+
};
|
|
141
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
142
|
+
0 && (module.exports = {
|
|
143
|
+
FUNCTIONS_PRESET_META_KEY,
|
|
144
|
+
getInvocationUrl,
|
|
145
|
+
getUserFunctionUrlInMetadata,
|
|
146
|
+
incrementSemverPatch,
|
|
147
|
+
publicKeyToDid,
|
|
148
|
+
setUserFunctionUrlInMetadata,
|
|
149
|
+
uploadWorkerFunction
|
|
150
|
+
});
|
|
151
|
+
//# sourceMappingURL=chunk-CS25QNKZ.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/edge/functions.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { type DID } from 'iso-did/types';\n\nimport { type Client } from '@dxos/client';\nimport { type ObjectMeta } from '@dxos/echo-schema';\nimport { EdgeHttpClient, type EdgeIdentity } from '@dxos/edge-client';\nimport { invariant } from '@dxos/invariant';\nimport type { PublicKey, SpaceId } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { type UploadFunctionResponseBody } from '@dxos/protocols';\n\n// TODO: use URL scheme for source?\nconst FUNCTIONS_META_KEY = 'dxos.org/service/function';\n\nexport const FUNCTIONS_PRESET_META_KEY = 'dxos.org/service/function-preset';\n\nexport type UploadWorkerArgs = {\n client: Client;\n name?: string;\n source: string;\n version: string;\n functionId?: string;\n spaceId: SpaceId;\n};\n\nexport const uploadWorkerFunction = async ({\n client,\n name,\n version,\n source,\n spaceId,\n functionId,\n}: UploadWorkerArgs): Promise<UploadFunctionResponseBody> => {\n const edgeUrl = client.config.values.runtime?.services?.edge?.url;\n invariant(edgeUrl, 'Edge is not configured.');\n const edgeClient = new EdgeHttpClient(edgeUrl);\n const edgeIdentity = createEdgeIdentity(client);\n edgeClient.setIdentity(edgeIdentity);\n const response = await edgeClient.uploadFunction({ spaceId, functionId }, { name, version, script: source });\n\n log('Uploaded', {\n functionId,\n source,\n name,\n identityKey: edgeIdentity.identityKey,\n response,\n });\n\n return response;\n};\n\nexport const getUserFunctionUrlInMetadata = (meta: ObjectMeta) => {\n return meta.keys.find((key) => key.source === FUNCTIONS_META_KEY)?.id;\n};\n\nexport const setUserFunctionUrlInMetadata = (meta: ObjectMeta, functionUrl: string) => {\n const key = meta.keys.find((key) => key.source === FUNCTIONS_META_KEY);\n if (key) {\n if (key.id !== functionUrl) {\n throw new Error('Metadata mismatch');\n }\n } else {\n meta.keys.push({ source: FUNCTIONS_META_KEY, id: functionUrl });\n }\n};\n\nexport const getInvocationUrl = (functionUrl: string, edgeUrl: string, options: InvocationOptions = {}) => {\n const baseUrl = new URL('functions/', edgeUrl);\n\n // Leading slashes cause the URL to be treated as an absolute path.\n const relativeUrl = functionUrl.replace(/^\\//, '');\n const url = new URL(`./${relativeUrl}`, baseUrl.toString());\n options.spaceId && url.searchParams.set('spaceId', options.spaceId);\n options.subjectId && url.searchParams.set('subjectId', options.subjectId);\n url.protocol = 'https';\n return url.toString();\n};\n\nconst createEdgeIdentity = (client: Client): EdgeIdentity => {\n const identity = client.halo.identity.get();\n const device = client.halo.device;\n if (!identity || !device) {\n throw new Error('Identity not available');\n }\n return {\n identityKey: identity.identityKey.toHex(),\n peerKey: device.deviceKey.toHex(),\n presentCredentials: async ({ challenge }) => {\n const identityService = client.services.services.IdentityService!;\n const authCredential = await identityService.createAuthCredential();\n return identityService.signPresentation({\n presentation: { credentials: [authCredential] },\n nonce: challenge,\n });\n },\n };\n};\n\nexport const incrementSemverPatch = (version: string): string => {\n const [major, minor, patch] = version.split('.');\n const patchNum = Number(patch);\n invariant(!Number.isNaN(patchNum), 'Unexpected function version format.');\n return [major, minor, String(patchNum + 1)].join('.');\n};\n\nexport const publicKeyToDid = (key: PublicKey): DID => {\n return `did:key:${key.toHex()}`;\n};\n\nexport type InvocationOptions = {\n spaceId?: SpaceId;\n subjectId?: string;\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["FUNCTIONS_META_KEY", "FUNCTIONS_PRESET_META_KEY", "uploadWorkerFunction", "client", "name", "version", "source", "spaceId", "functionId", "edgeUrl", "config", "values", "runtime", "services", "edge", "url", "invariant", "edgeClient", "EdgeHttpClient", "edgeIdentity", "createEdgeIdentity", "setIdentity", "response", "uploadFunction", "script", "log", "identityKey", "getUserFunctionUrlInMetadata", "meta", "keys", "find", "key", "id", "setUserFunctionUrlInMetadata", "functionUrl", "Error", "push", "getInvocationUrl", "options", "baseUrl", "URL", "relativeUrl", "replace", "toString", "searchParams", "set", "subjectId", "protocol", "identity", "halo", "get", "device", "toHex", "peerKey", "deviceKey", "presentCredentials", "challenge", "identityService", "IdentityService", "authCredential", "createAuthCredential", "signPresentation", "presentation", "credentials", "nonce", "incrementSemverPatch", "major", "minor", "patch", "split", "patchNum", "Number", "isNaN", "String", "join", "publicKeyToDid"]
|
|
7
|
+
}
|
|
@@ -16,13 +16,13 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
16
|
return to;
|
|
17
17
|
};
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var
|
|
20
|
-
__export(
|
|
19
|
+
var chunk_DQYAU2CJ_exports = {};
|
|
20
|
+
__export(chunk_DQYAU2CJ_exports, {
|
|
21
21
|
FunctionType: () => FunctionType,
|
|
22
22
|
ScriptAction: () => ScriptAction,
|
|
23
23
|
ScriptType: () => ScriptType
|
|
24
24
|
});
|
|
25
|
-
module.exports = __toCommonJS(
|
|
25
|
+
module.exports = __toCommonJS(chunk_DQYAU2CJ_exports);
|
|
26
26
|
var import_chunk_6LYX73ZT = require("./chunk-6LYX73ZT.cjs");
|
|
27
27
|
var import_echo_schema = require("@dxos/echo-schema");
|
|
28
28
|
var import_types = require("@dxos/plugin-markdown/types");
|
|
@@ -45,7 +45,7 @@ var FunctionType = class extends (0, import_echo_schema.TypedObject)({
|
|
|
45
45
|
})({
|
|
46
46
|
// TODO(burdon): Rename to id/uri?
|
|
47
47
|
name: import_echo_schema.S.NonEmptyString,
|
|
48
|
-
version: import_echo_schema.S.
|
|
48
|
+
version: import_echo_schema.S.String,
|
|
49
49
|
// Reference to a source script if it exists within ECHO.
|
|
50
50
|
// TODO(burdon): Don't ref ScriptType directly (core).
|
|
51
51
|
source: import_echo_schema.S.optional((0, import_echo_schema.ref)(ScriptType)),
|
|
@@ -64,4 +64,4 @@ var ScriptAction;
|
|
|
64
64
|
ScriptAction,
|
|
65
65
|
ScriptType
|
|
66
66
|
});
|
|
67
|
-
//# sourceMappingURL=chunk-
|
|
67
|
+
//# sourceMappingURL=chunk-DQYAU2CJ.cjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/types/schema.ts", "../../../src/types/types.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { JsonSchemaType, ref, S, TypedObject } from '@dxos/echo-schema';\nimport { TextType } from '@dxos/plugin-markdown/types';\n\n/**\n * Source script.\n */\nexport class ScriptType extends TypedObject({\n typename: 'dxos.org/type/Script',\n version: '0.1.0',\n})({\n // TODO(burdon): Change to URI?\n name: S.optional(S.String),\n description: S.optional(S.String),\n // TODO(burdon): Change to hash of deployed content.\n // Whether source has changed since last deploy.\n changed: S.optional(S.Boolean),\n source: ref(TextType),\n}) {}\n\n/**\n * Function deployment.\n */\n// TODO(burdon): Move to core/functions.\nexport class FunctionType extends TypedObject({\n typename: 'dxos.org/type/Function',\n version: '0.1.0',\n})({\n // TODO(burdon): Rename to id/uri?\n name: S.NonEmptyString,\n version: S.
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,yBAAoD;AACpD,mBAAyB;AAKlB,IAAMA,aAAN,kBAAyBC,gCAAY;EAC1CC,UAAU;EACVC,SAAS;AACX,CAAA,EAAG;;EAEDC,MAAMC,qBAAEC,SAASD,qBAAEE,MAAM;EACzBC,aAAaH,qBAAEC,SAASD,qBAAEE,MAAM;;;EAGhCE,SAASJ,qBAAEC,SAASD,qBAAEK,OAAO;EAC7BC,YAAQC,wBAAIC,qBAAAA;AACd,CAAA,EAAA;AAAI;AAMG,IAAMC,eAAN,kBAA2Bb,gCAAY;EAC5CC,UAAU;EACVC,SAAS;AACX,CAAA,EAAG;;EAEDC,MAAMC,qBAAEU;EACRZ,SAASE,
|
|
6
|
-
"names": ["ScriptType", "TypedObject", "typename", "version", "name", "S", "optional", "String", "description", "changed", "Boolean", "source", "ref", "TextType", "FunctionType", "NonEmptyString", "
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { JsonSchemaType, ref, S, TypedObject } from '@dxos/echo-schema';\nimport { TextType } from '@dxos/plugin-markdown/types';\n\n/**\n * Source script.\n */\nexport class ScriptType extends TypedObject({\n typename: 'dxos.org/type/Script',\n version: '0.1.0',\n})({\n // TODO(burdon): Change to URI?\n name: S.optional(S.String),\n description: S.optional(S.String),\n // TODO(burdon): Change to hash of deployed content.\n // Whether source has changed since last deploy.\n changed: S.optional(S.Boolean),\n source: ref(TextType),\n}) {}\n\n/**\n * Function deployment.\n */\n// TODO(burdon): Move to core/functions.\nexport class FunctionType extends TypedObject({\n typename: 'dxos.org/type/Function',\n version: '0.1.0',\n})({\n // TODO(burdon): Rename to id/uri?\n name: S.NonEmptyString,\n version: S.String,\n\n // Reference to a source script if it exists within ECHO.\n // TODO(burdon): Don't ref ScriptType directly (core).\n source: S.optional(ref(ScriptType)),\n\n inputSchema: S.optional(JsonSchemaType),\n\n // Local binding to a function name.\n binding: S.optional(S.String),\n}) {}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport type {\n GraphBuilderProvides,\n IntentResolverProvides,\n MetadataRecordsProvides,\n SettingsProvides,\n SurfaceProvides,\n TranslationsProvides,\n} from '@dxos/app-framework';\nimport { type SchemaProvides } from '@dxos/plugin-space';\n\nimport { SCRIPT_PLUGIN } from '../meta';\n\nexport enum ScriptAction {\n CREATE = `${SCRIPT_PLUGIN}/create`,\n}\n\nexport type ScriptSettingsProps = {};\n\nexport type ScriptPluginProvides = GraphBuilderProvides &\n IntentResolverProvides &\n MetadataRecordsProvides &\n SchemaProvides &\n SettingsProvides<ScriptSettingsProps> &\n SurfaceProvides &\n TranslationsProvides;\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,yBAAoD;AACpD,mBAAyB;AAKlB,IAAMA,aAAN,kBAAyBC,gCAAY;EAC1CC,UAAU;EACVC,SAAS;AACX,CAAA,EAAG;;EAEDC,MAAMC,qBAAEC,SAASD,qBAAEE,MAAM;EACzBC,aAAaH,qBAAEC,SAASD,qBAAEE,MAAM;;;EAGhCE,SAASJ,qBAAEC,SAASD,qBAAEK,OAAO;EAC7BC,YAAQC,wBAAIC,qBAAAA;AACd,CAAA,EAAA;AAAI;AAMG,IAAMC,eAAN,kBAA2Bb,gCAAY;EAC5CC,UAAU;EACVC,SAAS;AACX,CAAA,EAAG;;EAEDC,MAAMC,qBAAEU;EACRZ,SAASE,qBAAEE;;;EAIXI,QAAQN,qBAAEC,aAASM,wBAAIZ,UAAAA,CAAAA;EAEvBgB,aAAaX,qBAAEC,SAASW,iCAAAA;;EAGxBC,SAASb,qBAAEC,SAASD,qBAAEE,MAAM;AAC9B,CAAA,EAAA;AAAI;;UC3BQY,eAAAA;0CACD,GAAGC,mCAAAA,SAAsB,IAAA;GADxBD,iBAAAA,eAAAA,CAAAA,EAAAA;",
|
|
6
|
+
"names": ["ScriptType", "TypedObject", "typename", "version", "name", "S", "optional", "String", "description", "changed", "Boolean", "source", "ref", "TextType", "FunctionType", "NonEmptyString", "inputSchema", "JsonSchemaType", "binding", "ScriptAction", "SCRIPT_PLUGIN"]
|
|
7
7
|
}
|
|
@@ -18,26 +18,22 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var edge_exports = {};
|
|
20
20
|
__export(edge_exports, {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
setUserFunctionUrlInMetadata: () => import_chunk_XS6GEYYH.setUserFunctionUrlInMetadata,
|
|
29
|
-
uploadWorkerFunction: () => import_chunk_XS6GEYYH.uploadWorkerFunction
|
|
21
|
+
FUNCTIONS_PRESET_META_KEY: () => import_chunk_CS25QNKZ.FUNCTIONS_PRESET_META_KEY,
|
|
22
|
+
getInvocationUrl: () => import_chunk_CS25QNKZ.getInvocationUrl,
|
|
23
|
+
getUserFunctionUrlInMetadata: () => import_chunk_CS25QNKZ.getUserFunctionUrlInMetadata,
|
|
24
|
+
incrementSemverPatch: () => import_chunk_CS25QNKZ.incrementSemverPatch,
|
|
25
|
+
publicKeyToDid: () => import_chunk_CS25QNKZ.publicKeyToDid,
|
|
26
|
+
setUserFunctionUrlInMetadata: () => import_chunk_CS25QNKZ.setUserFunctionUrlInMetadata,
|
|
27
|
+
uploadWorkerFunction: () => import_chunk_CS25QNKZ.uploadWorkerFunction
|
|
30
28
|
});
|
|
31
29
|
module.exports = __toCommonJS(edge_exports);
|
|
32
|
-
var
|
|
30
|
+
var import_chunk_CS25QNKZ = require("../chunk-CS25QNKZ.cjs");
|
|
33
31
|
// Annotate the CommonJS export names for ESM import in node:
|
|
34
32
|
0 && (module.exports = {
|
|
35
|
-
|
|
36
|
-
USERFUNCTIONS_PRESET_META_KEY,
|
|
37
|
-
codec,
|
|
33
|
+
FUNCTIONS_PRESET_META_KEY,
|
|
38
34
|
getInvocationUrl,
|
|
39
35
|
getUserFunctionUrlInMetadata,
|
|
40
|
-
|
|
36
|
+
incrementSemverPatch,
|
|
41
37
|
publicKeyToDid,
|
|
42
38
|
setUserFunctionUrlInMetadata,
|
|
43
39
|
uploadWorkerFunction
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["index.cjs"],
|
|
4
|
-
"sourcesContent": ["import {\n
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA
|
|
4
|
+
"sourcesContent": ["import {\n FUNCTIONS_PRESET_META_KEY,\n getInvocationUrl,\n getUserFunctionUrlInMetadata,\n incrementSemverPatch,\n publicKeyToDid,\n setUserFunctionUrlInMetadata,\n uploadWorkerFunction\n} from \"../chunk-CS25QNKZ.cjs\";\nexport {\n FUNCTIONS_PRESET_META_KEY,\n getInvocationUrl,\n getUserFunctionUrlInMetadata,\n incrementSemverPatch,\n publicKeyToDid,\n setUserFunctionUrlInMetadata,\n uploadWorkerFunction\n};\n//# sourceMappingURL=index.cjs.map\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAQO;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|