@dxos/plugin-script 0.7.4 → 0.7.5-main.9d26e3a

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 (101) hide show
  1. package/dist/lib/browser/{AutomationPanel-PMTZROAZ.mjs → AutomationPanel-RFQAQ7NF.mjs} +2 -9
  2. package/dist/lib/browser/AutomationPanel-RFQAQ7NF.mjs.map +7 -0
  3. package/dist/lib/browser/{ScriptContainer-RYZFYCNK.mjs → ScriptContainer-GDVBWFI7.mjs} +16 -26
  4. package/dist/lib/browser/ScriptContainer-GDVBWFI7.mjs.map +7 -0
  5. package/dist/lib/browser/chunk-RQA3EB5K.mjs +26 -0
  6. package/dist/lib/browser/chunk-RQA3EB5K.mjs.map +7 -0
  7. package/dist/lib/browser/index.mjs +57 -131
  8. package/dist/lib/browser/index.mjs.map +3 -3
  9. package/dist/lib/browser/meta.json +1 -1
  10. package/dist/lib/browser/types.mjs +8 -0
  11. package/dist/lib/node/{AutomationPanel-AAGQREH7.cjs → AutomationPanel-5CJEF4MI.cjs} +12 -13
  12. package/dist/lib/node/AutomationPanel-5CJEF4MI.cjs.map +7 -0
  13. package/dist/lib/node/{ScriptContainer-FZ44UIRC.cjs → ScriptContainer-YWXXNLG6.cjs} +27 -28
  14. package/dist/lib/node/ScriptContainer-YWXXNLG6.cjs.map +7 -0
  15. package/dist/lib/node/chunk-PK3OQP5L.cjs +45 -0
  16. package/dist/lib/node/chunk-PK3OQP5L.cjs.map +7 -0
  17. package/dist/lib/node/index.cjs +61 -132
  18. package/dist/lib/node/index.cjs.map +3 -3
  19. package/dist/lib/node/meta.json +1 -1
  20. package/dist/lib/node/{types/index.cjs → types.cjs} +5 -9
  21. package/dist/lib/node/types.cjs.map +7 -0
  22. package/dist/lib/node-esm/{AutomationPanel-ETQEDY5I.mjs → AutomationPanel-7Y6REBNJ.mjs} +2 -9
  23. package/dist/lib/node-esm/AutomationPanel-7Y6REBNJ.mjs.map +7 -0
  24. package/dist/lib/node-esm/{ScriptContainer-3PKDW34A.mjs → ScriptContainer-BG2PHKEH.mjs} +16 -26
  25. package/dist/lib/node-esm/ScriptContainer-BG2PHKEH.mjs.map +7 -0
  26. package/dist/lib/node-esm/chunk-H6BBLQ5Q.mjs +27 -0
  27. package/dist/lib/node-esm/chunk-H6BBLQ5Q.mjs.map +7 -0
  28. package/dist/lib/node-esm/index.mjs +57 -131
  29. package/dist/lib/node-esm/index.mjs.map +3 -3
  30. package/dist/lib/node-esm/meta.json +1 -1
  31. package/dist/lib/node-esm/types.mjs +9 -0
  32. package/dist/types/src/ScriptPlugin.d.ts.map +1 -1
  33. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts +2 -2
  34. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts.map +1 -1
  35. package/dist/types/src/components/ScriptBlock/ScriptBlock.d.ts +1 -1
  36. package/dist/types/src/components/ScriptBlock/ScriptBlock.d.ts.map +1 -1
  37. package/dist/types/src/components/ScriptBlock/ScriptBlock.stories.d.ts.map +1 -1
  38. package/dist/types/src/components/ScriptEditor.d.ts +1 -1
  39. package/dist/types/src/components/ScriptEditor.d.ts.map +1 -1
  40. package/dist/types/src/components/ScriptSettingsPanel.d.ts +1 -1
  41. package/dist/types/src/components/ScriptSettingsPanel.d.ts.map +1 -1
  42. package/dist/types/src/translations.d.ts +0 -43
  43. package/dist/types/src/translations.d.ts.map +1 -1
  44. package/dist/types/src/types.d.ts +22 -0
  45. package/dist/types/src/types.d.ts.map +1 -0
  46. package/dist/types/tsconfig.tsbuildinfo +1 -0
  47. package/package.json +39 -47
  48. package/src/ScriptPlugin.tsx +43 -95
  49. package/src/components/AutomationPanel/AutomationPanel.tsx +2 -4
  50. package/src/components/FrameContainer/FrameContainer.tsx +1 -1
  51. package/src/components/ScriptBlock/ScriptBlock.stories.tsx +6 -3
  52. package/src/components/ScriptBlock/ScriptBlock.tsx +2 -2
  53. package/src/components/ScriptEditor.tsx +20 -18
  54. package/src/components/ScriptSettingsPanel.tsx +1 -2
  55. package/src/components/Toolbar/Toolbar.tsx +1 -1
  56. package/src/translations.ts +0 -4
  57. package/src/types.ts +38 -0
  58. package/dist/lib/browser/AutomationPanel-PMTZROAZ.mjs.map +0 -7
  59. package/dist/lib/browser/ScriptContainer-RYZFYCNK.mjs.map +0 -7
  60. package/dist/lib/browser/chunk-QFZUFT5G.mjs +0 -48
  61. package/dist/lib/browser/chunk-QFZUFT5G.mjs.map +0 -7
  62. package/dist/lib/browser/chunk-U3OP64V4.mjs +0 -123
  63. package/dist/lib/browser/chunk-U3OP64V4.mjs.map +0 -7
  64. package/dist/lib/browser/edge/index.mjs +0 -19
  65. package/dist/lib/browser/types/index.mjs +0 -12
  66. package/dist/lib/node/AutomationPanel-AAGQREH7.cjs.map +0 -7
  67. package/dist/lib/node/ScriptContainer-FZ44UIRC.cjs.map +0 -7
  68. package/dist/lib/node/chunk-CS25QNKZ.cjs +0 -151
  69. package/dist/lib/node/chunk-CS25QNKZ.cjs.map +0 -7
  70. package/dist/lib/node/chunk-DQYAU2CJ.cjs +0 -67
  71. package/dist/lib/node/chunk-DQYAU2CJ.cjs.map +0 -7
  72. package/dist/lib/node/edge/index.cjs +0 -41
  73. package/dist/lib/node/edge/index.cjs.map +0 -7
  74. package/dist/lib/node/types/index.cjs.map +0 -7
  75. package/dist/lib/node-esm/AutomationPanel-ETQEDY5I.mjs.map +0 -7
  76. package/dist/lib/node-esm/ScriptContainer-3PKDW34A.mjs.map +0 -7
  77. package/dist/lib/node-esm/chunk-36DLLQ6E.mjs +0 -125
  78. package/dist/lib/node-esm/chunk-36DLLQ6E.mjs.map +0 -7
  79. package/dist/lib/node-esm/chunk-GMVPKT6A.mjs +0 -49
  80. package/dist/lib/node-esm/chunk-GMVPKT6A.mjs.map +0 -7
  81. package/dist/lib/node-esm/edge/index.mjs +0 -20
  82. package/dist/lib/node-esm/edge/index.mjs.map +0 -7
  83. package/dist/lib/node-esm/types/index.mjs +0 -13
  84. package/dist/lib/node-esm/types/index.mjs.map +0 -7
  85. package/dist/types/src/edge/functions.d.ts +0 -25
  86. package/dist/types/src/edge/functions.d.ts.map +0 -1
  87. package/dist/types/src/edge/index.d.ts +0 -2
  88. package/dist/types/src/edge/index.d.ts.map +0 -1
  89. package/dist/types/src/types/index.d.ts +0 -3
  90. package/dist/types/src/types/index.d.ts.map +0 -1
  91. package/dist/types/src/types/schema.d.ts +0 -71
  92. package/dist/types/src/types/schema.d.ts.map +0 -1
  93. package/dist/types/src/types/types.d.ts +0 -8
  94. package/dist/types/src/types/types.d.ts.map +0 -1
  95. package/src/edge/functions.ts +0 -116
  96. package/src/edge/index.ts +0 -7
  97. package/src/types/index.ts +0 -6
  98. package/src/types/schema.ts +0 -44
  99. package/src/types/types.ts +0 -29
  100. /package/dist/lib/browser/{edge/index.mjs.map → types.mjs.map} +0 -0
  101. /package/dist/lib/{browser/types/index.mjs.map → node-esm/types.mjs.map} +0 -0
@@ -1,7 +0,0 @@
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": ["React", "fullyQualifiedId", "useAttendableAttributes", "mx", "format", "prettierPluginEstree", "prettierPluginTypescript", "React", "useCallback", "useMemo", "useState", "log", "useClient", "create", "createDocAccessor", "Filter", "getMeta", "getSpace", "useQuery", "useIdentity", "useTranslation", "createDataExtensions", "listener", "mx", "React", "useState", "ElevationProvider", "Icon", "Select", "ToggleGroup", "ToggleGroupItem", "Toolbar", "NaturalToolbar", "Tooltip", "useTranslation", "Toolbar", "classNames", "deployed", "error", "functionUrl", "view", "templates", "onDeploy", "onFormat", "onViewChange", "onTemplateSelect", "t", "useTranslation", "SCRIPT_PLUGIN", "pending", "setPending", "useState", "handleCopyLink", "navigator", "clipboard", "writeText", "handleDeploy", "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", "javascript", "tsSync", "tsFacet", "tsLinter", "tsAutocomplete", "tsHover", "React", "useThemeContext", "autocomplete", "createBasicExtensions", "createThemeExtensions", "editorFullWidth", "editorGutter", "editorMonospace", "InputModeExtensions", "useTextEditor", "nonNullable", "TypescriptEditor", "id", "env", "className", "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", "React", "div", "ref", "ScriptEditor", "classNames", "script", "env", "t", "useTranslation", "SCRIPT_PLUGIN", "client", "useClient", "identity", "useIdentity", "space", "getSpace", "fn", "useQuery", "Filter", "schema", "FunctionType", "source", "extensions", "useMemo", "listener", "onChange", "text", "content", "changed", "createDataExtensions", "id", "createDocAccessor", "view", "setView", "useState", "existingFunctionUrl", "getUserFunctionUrlInMetadata", "getMeta", "error", "setError", "handleFormat", "useCallback", "format", "parser", "plugins", "prettierPluginEstree", "prettierPluginTypescript", "semi", "singleQuote", "err", "log", "catch", "handleTemplateChange", "template", "templates", "find", "name", "metaKeys", "keys", "oldPresetIndex", "findIndex", "key", "FUNCTIONS_PRESET_META_KEY", "splice", "presetId", "push", "handleDeploy", "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", "functionUrl", "getInvocationUrl", "config", "values", "runtime", "services", "edge", "url", "React", "div", "role", "className", "mx", "Toolbar", "deployed", "Boolean", "onDeploy", "onFormat", "onViewChange", "onTemplateSelect", "TypescriptEditor", "initialValue", "DebugPanel", "ScriptContainer", "script", "props", "attendableAttrs", "useAttendableAttributes", "fullyQualifiedId", "React", "div", "role", "className", "mx", "ScriptEditor"]
7
- }
@@ -1,125 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
-
3
- // packages/plugins/experimental/plugin-script/src/edge/functions.ts
4
- import { EdgeHttpClient } from "@dxos/edge-client";
5
- import { invariant } from "@dxos/invariant";
6
- import { log } from "@dxos/log";
7
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-script/src/edge/functions.ts";
8
- var FUNCTIONS_META_KEY = "dxos.org/service/function";
9
- var FUNCTIONS_PRESET_META_KEY = "dxos.org/service/function-preset";
10
- var uploadWorkerFunction = async ({ client, name, version, source, spaceId, functionId }) => {
11
- const edgeUrl = client.config.values.runtime?.services?.edge?.url;
12
- invariant(edgeUrl, "Edge is not configured.", {
13
- F: __dxlog_file,
14
- L: 38,
15
- S: void 0,
16
- A: [
17
- "edgeUrl",
18
- "'Edge is not configured.'"
19
- ]
20
- });
21
- const edgeClient = new EdgeHttpClient(edgeUrl);
22
- const edgeIdentity = createEdgeIdentity(client);
23
- edgeClient.setIdentity(edgeIdentity);
24
- const response = await edgeClient.uploadFunction({
25
- spaceId,
26
- functionId
27
- }, {
28
- name,
29
- version,
30
- script: source
31
- });
32
- log("Uploaded", {
33
- functionId,
34
- source,
35
- name,
36
- identityKey: edgeIdentity.identityKey,
37
- response
38
- }, {
39
- F: __dxlog_file,
40
- L: 44,
41
- S: void 0,
42
- C: (f, a) => f(...a)
43
- });
44
- return response;
45
- };
46
- var getUserFunctionUrlInMetadata = (meta) => {
47
- return meta.keys.find((key) => key.source === FUNCTIONS_META_KEY)?.id;
48
- };
49
- var setUserFunctionUrlInMetadata = (meta, functionUrl) => {
50
- const key = meta.keys.find((key2) => key2.source === FUNCTIONS_META_KEY);
51
- if (key) {
52
- if (key.id !== functionUrl) {
53
- throw new Error("Metadata mismatch");
54
- }
55
- } else {
56
- meta.keys.push({
57
- source: FUNCTIONS_META_KEY,
58
- id: functionUrl
59
- });
60
- }
61
- };
62
- var getInvocationUrl = (functionUrl, edgeUrl, options = {}) => {
63
- const baseUrl = new URL("functions/", edgeUrl);
64
- const relativeUrl = functionUrl.replace(/^\//, "");
65
- const url = new URL(`./${relativeUrl}`, baseUrl.toString());
66
- options.spaceId && url.searchParams.set("spaceId", options.spaceId);
67
- options.subjectId && url.searchParams.set("subjectId", options.subjectId);
68
- url.protocol = "https";
69
- return url.toString();
70
- };
71
- var createEdgeIdentity = (client) => {
72
- const identity = client.halo.identity.get();
73
- const device = client.halo.device;
74
- if (!identity || !device) {
75
- throw new Error("Identity not available");
76
- }
77
- return {
78
- identityKey: identity.identityKey.toHex(),
79
- peerKey: device.deviceKey.toHex(),
80
- presentCredentials: async ({ challenge }) => {
81
- const identityService = client.services.services.IdentityService;
82
- const authCredential = await identityService.createAuthCredential();
83
- return identityService.signPresentation({
84
- presentation: {
85
- credentials: [
86
- authCredential
87
- ]
88
- },
89
- nonce: challenge
90
- });
91
- }
92
- };
93
- };
94
- var incrementSemverPatch = (version) => {
95
- const [major, minor, patch] = version.split(".");
96
- const patchNum = Number(patch);
97
- invariant(!Number.isNaN(patchNum), "Unexpected function version format.", {
98
- F: __dxlog_file,
99
- L: 105,
100
- S: void 0,
101
- A: [
102
- "!Number.isNaN(patchNum)",
103
- "'Unexpected function version format.'"
104
- ]
105
- });
106
- return [
107
- major,
108
- minor,
109
- String(patchNum + 1)
110
- ].join(".");
111
- };
112
- var publicKeyToDid = (key) => {
113
- return `did:key:${key.toHex()}`;
114
- };
115
-
116
- export {
117
- FUNCTIONS_PRESET_META_KEY,
118
- uploadWorkerFunction,
119
- getUserFunctionUrlInMetadata,
120
- setUserFunctionUrlInMetadata,
121
- getInvocationUrl,
122
- incrementSemverPatch,
123
- publicKeyToDid
124
- };
125
- //# sourceMappingURL=chunk-36DLLQ6E.mjs.map
@@ -1,7 +0,0 @@
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": ["EdgeHttpClient", "invariant", "log", "FUNCTIONS_META_KEY", "FUNCTIONS_PRESET_META_KEY", "uploadWorkerFunction", "client", "name", "version", "source", "spaceId", "functionId", "edgeUrl", "config", "values", "runtime", "services", "edge", "url", "edgeClient", "edgeIdentity", "createEdgeIdentity", "setIdentity", "response", "uploadFunction", "script", "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
- }
@@ -1,49 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import {
3
- SCRIPT_PLUGIN
4
- } from "./chunk-SLTZMY34.mjs";
5
-
6
- // packages/plugins/experimental/plugin-script/src/types/schema.ts
7
- import { JsonSchemaType, ref, S, TypedObject } from "@dxos/echo-schema";
8
- import { TextType } from "@dxos/plugin-markdown/types";
9
- var ScriptType = class extends TypedObject({
10
- typename: "dxos.org/type/Script",
11
- version: "0.1.0"
12
- })({
13
- // TODO(burdon): Change to URI?
14
- name: S.optional(S.String),
15
- description: S.optional(S.String),
16
- // TODO(burdon): Change to hash of deployed content.
17
- // Whether source has changed since last deploy.
18
- changed: S.optional(S.Boolean),
19
- source: ref(TextType)
20
- }) {
21
- };
22
- var FunctionType = class extends TypedObject({
23
- typename: "dxos.org/type/Function",
24
- version: "0.1.0"
25
- })({
26
- // TODO(burdon): Rename to id/uri?
27
- name: S.NonEmptyString,
28
- version: S.String,
29
- // Reference to a source script if it exists within ECHO.
30
- // TODO(burdon): Don't ref ScriptType directly (core).
31
- source: S.optional(ref(ScriptType)),
32
- inputSchema: S.optional(JsonSchemaType),
33
- // Local binding to a function name.
34
- binding: S.optional(S.String)
35
- }) {
36
- };
37
-
38
- // packages/plugins/experimental/plugin-script/src/types/types.ts
39
- var ScriptAction;
40
- (function(ScriptAction2) {
41
- ScriptAction2[ScriptAction2["CREATE"] = `${SCRIPT_PLUGIN}/create`] = "CREATE";
42
- })(ScriptAction || (ScriptAction = {}));
43
-
44
- export {
45
- ScriptType,
46
- FunctionType,
47
- ScriptAction
48
- };
49
- //# sourceMappingURL=chunk-GMVPKT6A.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 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.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,SAASA,gBAAgBC,KAAKC,GAAGC,mBAAmB;AACpD,SAASC,gBAAgB;AAKlB,IAAMC,aAAN,cAAyBC,YAAY;EAC1CC,UAAU;EACVC,SAAS;AACX,CAAA,EAAG;;EAEDC,MAAMC,EAAEC,SAASD,EAAEE,MAAM;EACzBC,aAAaH,EAAEC,SAASD,EAAEE,MAAM;;;EAGhCE,SAASJ,EAAEC,SAASD,EAAEK,OAAO;EAC7BC,QAAQC,IAAIC,QAAAA;AACd,CAAA,EAAA;AAAI;AAMG,IAAMC,eAAN,cAA2Bb,YAAY;EAC5CC,UAAU;EACVC,SAAS;AACX,CAAA,EAAG;;EAEDC,MAAMC,EAAEU;EACRZ,SAASE,EAAEE;;;EAIXI,QAAQN,EAAEC,SAASM,IAAIZ,UAAAA,CAAAA;EAEvBgB,aAAaX,EAAEC,SAASW,cAAAA;;EAGxBC,SAASb,EAAEC,SAASD,EAAEE,MAAM;AAC9B,CAAA,EAAA;AAAI;;;;UC3BQY,eAAAA;0CACD,GAAGC,aAAAA,SAAsB,IAAA;GADxBD,iBAAAA,eAAAA,CAAAA,EAAAA;",
6
- "names": ["JsonSchemaType", "ref", "S", "TypedObject", "TextType", "ScriptType", "TypedObject", "typename", "version", "name", "S", "optional", "String", "description", "changed", "Boolean", "source", "ref", "TextType", "FunctionType", "NonEmptyString", "inputSchema", "JsonSchemaType", "binding", "ScriptAction", "SCRIPT_PLUGIN"]
7
- }
@@ -1,20 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import {
3
- FUNCTIONS_PRESET_META_KEY,
4
- getInvocationUrl,
5
- getUserFunctionUrlInMetadata,
6
- incrementSemverPatch,
7
- publicKeyToDid,
8
- setUserFunctionUrlInMetadata,
9
- uploadWorkerFunction
10
- } from "../chunk-36DLLQ6E.mjs";
11
- export {
12
- FUNCTIONS_PRESET_META_KEY,
13
- getInvocationUrl,
14
- getUserFunctionUrlInMetadata,
15
- incrementSemverPatch,
16
- publicKeyToDid,
17
- setUserFunctionUrlInMetadata,
18
- uploadWorkerFunction
19
- };
20
- //# sourceMappingURL=index.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
6
- "names": []
7
- }
@@ -1,13 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import {
3
- FunctionType,
4
- ScriptAction,
5
- ScriptType
6
- } from "../chunk-GMVPKT6A.mjs";
7
- import "../chunk-SLTZMY34.mjs";
8
- export {
9
- FunctionType,
10
- ScriptAction,
11
- ScriptType
12
- };
13
- //# sourceMappingURL=index.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
6
- "names": []
7
- }
@@ -1,25 +0,0 @@
1
- import { type DID } from 'iso-did/types';
2
- import { type Client } from '@dxos/client';
3
- import { type ObjectMeta } from '@dxos/echo-schema';
4
- import type { PublicKey, SpaceId } from '@dxos/keys';
5
- import { type UploadFunctionResponseBody } from '@dxos/protocols';
6
- export declare const FUNCTIONS_PRESET_META_KEY = "dxos.org/service/function-preset";
7
- export type UploadWorkerArgs = {
8
- client: Client;
9
- name?: string;
10
- source: string;
11
- version: string;
12
- functionId?: string;
13
- spaceId: SpaceId;
14
- };
15
- export declare const uploadWorkerFunction: ({ client, name, version, source, spaceId, functionId, }: UploadWorkerArgs) => Promise<UploadFunctionResponseBody>;
16
- export declare const getUserFunctionUrlInMetadata: (meta: ObjectMeta) => string | undefined;
17
- export declare const setUserFunctionUrlInMetadata: (meta: ObjectMeta, functionUrl: string) => void;
18
- export declare const getInvocationUrl: (functionUrl: string, edgeUrl: string, options?: InvocationOptions) => string;
19
- export declare const incrementSemverPatch: (version: string) => string;
20
- export declare const publicKeyToDid: (key: PublicKey) => DID;
21
- export type InvocationOptions = {
22
- spaceId?: SpaceId;
23
- subjectId?: string;
24
- };
25
- //# sourceMappingURL=functions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../../../../src/edge/functions.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErD,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAKlE,eAAO,MAAM,yBAAyB,qCAAqC,CAAC;AAE5E,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,oBAAoB,4DAO9B,gBAAgB,KAAG,OAAO,CAAC,0BAA0B,CAiBvD,CAAC;AAEF,eAAO,MAAM,4BAA4B,SAAU,UAAU,uBAE5D,CAAC;AAEF,eAAO,MAAM,4BAA4B,SAAU,UAAU,eAAe,MAAM,SASjF,CAAC;AAEF,eAAO,MAAM,gBAAgB,gBAAiB,MAAM,WAAW,MAAM,YAAW,iBAAiB,WAUhG,CAAC;AAsBF,eAAO,MAAM,oBAAoB,YAAa,MAAM,KAAG,MAKtD,CAAC;AAEF,eAAO,MAAM,cAAc,QAAS,SAAS,KAAG,GAE/C,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC"}
@@ -1,2 +0,0 @@
1
- export * from './functions';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/edge/index.ts"],"names":[],"mappings":"AAMA,cAAc,aAAa,CAAC"}
@@ -1,3 +0,0 @@
1
- export * from './schema';
2
- export * from './types';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/types/index.ts"],"names":[],"mappings":"AAIA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC"}
@@ -1,71 +0,0 @@
1
- import { JsonSchemaType, ref, S } from '@dxos/echo-schema';
2
- declare const ScriptType_base: import("@dxos/echo-schema").AbstractTypedObject<{
3
- name?: string | undefined;
4
- description?: string | undefined;
5
- changed?: boolean | undefined;
6
- source: import("@dxos/echo-schema").Ref<{
7
- content: string;
8
- } & {
9
- id: string;
10
- }>;
11
- } & {
12
- id: string;
13
- }, S.Struct.Encoded<{
14
- name: S.optional<typeof S.String>;
15
- description: S.optional<typeof S.String>;
16
- changed: S.optional<typeof S.Boolean>;
17
- source: ref<{
18
- content: string;
19
- } & {
20
- id: string;
21
- }>;
22
- }>>;
23
- /**
24
- * Source script.
25
- */
26
- export declare class ScriptType extends ScriptType_base {
27
- }
28
- declare const FunctionType_base: import("@dxos/echo-schema").AbstractTypedObject<{
29
- name: string;
30
- source?: import("@dxos/echo-schema").Ref<{
31
- name?: string | undefined;
32
- description?: string | undefined;
33
- changed?: boolean | undefined;
34
- source: import("@dxos/echo-schema").Ref<{
35
- content: string;
36
- } & {
37
- id: string;
38
- }>;
39
- } & {
40
- id: string;
41
- }>;
42
- version: string;
43
- inputSchema?: JsonSchemaType | undefined;
44
- binding?: string | undefined;
45
- } & {
46
- id: string;
47
- }, S.Struct.Encoded<{
48
- name: typeof S.NonEmptyString;
49
- version: typeof S.String;
50
- source: S.optional<ref<{
51
- name?: string | undefined;
52
- description?: string | undefined;
53
- changed?: boolean | undefined;
54
- source: import("@dxos/echo-schema").Ref<{
55
- content: string;
56
- } & {
57
- id: string;
58
- }>;
59
- } & {
60
- id: string;
61
- }>>;
62
- inputSchema: S.optional<S.Schema<JsonSchemaType, JsonSchemaType, never>>;
63
- binding: S.optional<typeof S.String>;
64
- }>>;
65
- /**
66
- * Function deployment.
67
- */
68
- export declare class FunctionType extends FunctionType_base {
69
- }
70
- export {};
71
- //# sourceMappingURL=schema.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/types/schema.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,EAAe,MAAM,mBAAmB,CAAC;;;;;;;;;;;;;;;;;;;;;;AAGxE;;GAEG;AACH,qBAAa,UAAW,SAAQ,eAW9B;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEL;;GAEG;AAEH,qBAAa,YAAa,SAAQ,iBAgBhC;CAAG"}
@@ -1,8 +0,0 @@
1
- import type { GraphBuilderProvides, IntentResolverProvides, MetadataRecordsProvides, SettingsProvides, SurfaceProvides, TranslationsProvides } from '@dxos/app-framework';
2
- import { type SchemaProvides } from '@dxos/plugin-space';
3
- export declare enum ScriptAction {
4
- CREATE = "dxos.org/plugin/script/create"
5
- }
6
- export type ScriptSettingsProps = {};
7
- export type ScriptPluginProvides = GraphBuilderProvides & IntentResolverProvides & MetadataRecordsProvides & SchemaProvides & SettingsProvides<ScriptSettingsProps> & SurfaceProvides & TranslationsProvides;
8
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/types/types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,oBAAoB,EACpB,sBAAsB,EACtB,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIzD,oBAAY,YAAY;IACtB,MAAM,kCAA4B;CACnC;AAED,MAAM,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAErC,MAAM,MAAM,oBAAoB,GAAG,oBAAoB,GACrD,sBAAsB,GACtB,uBAAuB,GACvB,cAAc,GACd,gBAAgB,CAAC,mBAAmB,CAAC,GACrC,eAAe,GACf,oBAAoB,CAAC"}
@@ -1,116 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { type DID } from 'iso-did/types';
6
-
7
- import { type Client } from '@dxos/client';
8
- import { type ObjectMeta } from '@dxos/echo-schema';
9
- import { EdgeHttpClient, type EdgeIdentity } from '@dxos/edge-client';
10
- import { invariant } from '@dxos/invariant';
11
- import type { PublicKey, SpaceId } from '@dxos/keys';
12
- import { log } from '@dxos/log';
13
- import { type UploadFunctionResponseBody } from '@dxos/protocols';
14
-
15
- // TODO: use URL scheme for source?
16
- const FUNCTIONS_META_KEY = 'dxos.org/service/function';
17
-
18
- export const FUNCTIONS_PRESET_META_KEY = 'dxos.org/service/function-preset';
19
-
20
- export type UploadWorkerArgs = {
21
- client: Client;
22
- name?: string;
23
- source: string;
24
- version: string;
25
- functionId?: string;
26
- spaceId: SpaceId;
27
- };
28
-
29
- export const uploadWorkerFunction = async ({
30
- client,
31
- name,
32
- version,
33
- source,
34
- spaceId,
35
- functionId,
36
- }: UploadWorkerArgs): Promise<UploadFunctionResponseBody> => {
37
- const edgeUrl = client.config.values.runtime?.services?.edge?.url;
38
- invariant(edgeUrl, 'Edge is not configured.');
39
- const edgeClient = new EdgeHttpClient(edgeUrl);
40
- const edgeIdentity = createEdgeIdentity(client);
41
- edgeClient.setIdentity(edgeIdentity);
42
- const response = await edgeClient.uploadFunction({ spaceId, functionId }, { name, version, script: source });
43
-
44
- log('Uploaded', {
45
- functionId,
46
- source,
47
- name,
48
- identityKey: edgeIdentity.identityKey,
49
- response,
50
- });
51
-
52
- return response;
53
- };
54
-
55
- export const getUserFunctionUrlInMetadata = (meta: ObjectMeta) => {
56
- return meta.keys.find((key) => key.source === FUNCTIONS_META_KEY)?.id;
57
- };
58
-
59
- export const setUserFunctionUrlInMetadata = (meta: ObjectMeta, functionUrl: string) => {
60
- const key = meta.keys.find((key) => key.source === FUNCTIONS_META_KEY);
61
- if (key) {
62
- if (key.id !== functionUrl) {
63
- throw new Error('Metadata mismatch');
64
- }
65
- } else {
66
- meta.keys.push({ source: FUNCTIONS_META_KEY, id: functionUrl });
67
- }
68
- };
69
-
70
- export const getInvocationUrl = (functionUrl: string, edgeUrl: string, options: InvocationOptions = {}) => {
71
- const baseUrl = new URL('functions/', edgeUrl);
72
-
73
- // Leading slashes cause the URL to be treated as an absolute path.
74
- const relativeUrl = functionUrl.replace(/^\//, '');
75
- const url = new URL(`./${relativeUrl}`, baseUrl.toString());
76
- options.spaceId && url.searchParams.set('spaceId', options.spaceId);
77
- options.subjectId && url.searchParams.set('subjectId', options.subjectId);
78
- url.protocol = 'https';
79
- return url.toString();
80
- };
81
-
82
- const createEdgeIdentity = (client: Client): EdgeIdentity => {
83
- const identity = client.halo.identity.get();
84
- const device = client.halo.device;
85
- if (!identity || !device) {
86
- throw new Error('Identity not available');
87
- }
88
- return {
89
- identityKey: identity.identityKey.toHex(),
90
- peerKey: device.deviceKey.toHex(),
91
- presentCredentials: async ({ challenge }) => {
92
- const identityService = client.services.services.IdentityService!;
93
- const authCredential = await identityService.createAuthCredential();
94
- return identityService.signPresentation({
95
- presentation: { credentials: [authCredential] },
96
- nonce: challenge,
97
- });
98
- },
99
- };
100
- };
101
-
102
- export const incrementSemverPatch = (version: string): string => {
103
- const [major, minor, patch] = version.split('.');
104
- const patchNum = Number(patch);
105
- invariant(!Number.isNaN(patchNum), 'Unexpected function version format.');
106
- return [major, minor, String(patchNum + 1)].join('.');
107
- };
108
-
109
- export const publicKeyToDid = (key: PublicKey): DID => {
110
- return `did:key:${key.toHex()}`;
111
- };
112
-
113
- export type InvocationOptions = {
114
- spaceId?: SpaceId;
115
- subjectId?: string;
116
- };
package/src/edge/index.ts DELETED
@@ -1,7 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- // TODO(wittjosiah): Factor out.
6
-
7
- export * from './functions';
@@ -1,6 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- export * from './schema';
6
- export * from './types';