@dxos/plugin-template 0.6.7 → 0.6.8-main.046e6cf
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/LICENSE +1 -1
- package/README.md +2 -8
- package/dist/lib/browser/chunk-5WVRC7MV.mjs +17 -0
- package/dist/lib/browser/chunk-5WVRC7MV.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +171 -0
- package/dist/lib/browser/index.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -0
- package/dist/lib/browser/meta.mjs +9 -0
- package/dist/lib/browser/meta.mjs.map +7 -0
- package/dist/types/src/TemplatePlugin.d.ts +4 -0
- package/dist/types/src/TemplatePlugin.d.ts.map +1 -0
- package/dist/types/src/components/TemplateMain.d.ts +6 -0
- package/dist/types/src/components/TemplateMain.d.ts.map +1 -0
- package/dist/types/src/components/index.d.ts +2 -0
- package/dist/types/src/components/index.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +2 -0
- package/dist/types/src/index.d.ts.map +1 -0
- package/dist/types/src/meta.d.ts +15 -0
- package/dist/types/src/meta.d.ts.map +1 -0
- package/dist/types/src/translations.d.ts +12 -0
- package/dist/types/src/translations.d.ts.map +1 -0
- package/dist/types/src/types.d.ts +8 -0
- package/dist/types/src/types.d.ts.map +1 -0
- package/package.json +47 -29
- package/src/TemplatePlugin.tsx +101 -0
- package/src/components/TemplateMain.tsx +28 -0
- package/src/components/index.ts +5 -0
- package/src/index.ts +5 -0
- package/src/meta.tsx +17 -0
- package/src/translations.ts +18 -0
- package/src/types.ts +32 -0
- package/.eslintrc.js +0 -9
- package/dist/src/README.md.t.d.ts +0 -18
- package/dist/src/README.md.t.d.ts.map +0 -1
- package/dist/src/README.md.t.js +0 -27
- package/dist/src/README.md.t.js.map +0 -1
- package/dist/src/composer/config.ts.t.d.ts +0 -49
- package/dist/src/composer/config.ts.t.d.ts.map +0 -1
- package/dist/src/composer/config.ts.t.js +0 -16
- package/dist/src/composer/config.ts.t.js.map +0 -1
- package/dist/src/composer/main.tsx.t.d.ts +0 -49
- package/dist/src/composer/main.tsx.t.d.ts.map +0 -1
- package/dist/src/composer/main.tsx.t.js +0 -115
- package/dist/src/composer/main.tsx.t.js.map +0 -1
- package/dist/src/composer/shell.html.t.d.ts +0 -18
- package/dist/src/composer/shell.html.t.d.ts.map +0 -1
- package/dist/src/composer/shell.html.t.js +0 -49
- package/dist/src/composer/shell.html.t.js.map +0 -1
- package/dist/src/composer/shell.ts.t.d.ts +0 -49
- package/dist/src/composer/shell.ts.t.d.ts.map +0 -1
- package/dist/src/composer/shell.ts.t.js +0 -18
- package/dist/src/composer/shell.ts.t.js.map +0 -1
- package/dist/src/composer/translations.d.ts +0 -21
- package/dist/src/composer/translations.d.ts.map +0 -1
- package/dist/src/composer/translations.js +0 -27
- package/dist/src/composer/translations.js.map +0 -1
- package/dist/src/package.json.t.d.ts +0 -55
- package/dist/src/package.json.t.d.ts.map +0 -1
- package/dist/src/package.json.t.js +0 -112
- package/dist/src/package.json.t.js.map +0 -1
- package/dist/src/src/index.ts.t.d.ts +0 -18
- package/dist/src/src/index.ts.t.d.ts.map +0 -1
- package/dist/src/src/index.ts.t.js +0 -11
- package/dist/src/src/index.ts.t.js.map +0 -1
- package/dist/src/src/plugin.tsx.t.d.ts +0 -49
- package/dist/src/src/plugin.tsx.t.d.ts.map +0 -1
- package/dist/src/src/plugin.tsx.t.js +0 -68
- package/dist/src/src/plugin.tsx.t.js.map +0 -1
- package/dist/src/template.t.d.ts +0 -16
- package/dist/src/template.t.d.ts.map +0 -1
- package/dist/src/template.t.js +0 -45
- package/dist/src/template.t.js.map +0 -1
- package/dist/src/utils.t/packageJson.d.ts +0 -6
- package/dist/src/utils.t/packageJson.d.ts.map +0 -1
- package/dist/src/utils.t/packageJson.js +0 -6
- package/dist/src/utils.t/packageJson.js.map +0 -1
- package/dist/src/vite.config.ts.t.d.ts +0 -49
- package/dist/src/vite.config.ts.t.d.ts.map +0 -1
- package/dist/src/vite.config.ts.t.js +0 -70
- package/dist/src/vite.config.ts.t.js.map +0 -1
- package/dist/test/scenarios.d.ts +0 -4
- package/dist/test/scenarios.d.ts.map +0 -1
- package/dist/test/scenarios.js +0 -19
- package/dist/test/scenarios.js.map +0 -1
- package/dist/test/template.test.d.ts +0 -2
- package/dist/test/template.test.d.ts.map +0 -1
- package/dist/test/template.test.js +0 -62
- package/dist/test/template.test.js.map +0 -1
- package/project.json +0 -28
- package/src/.npmignore.t.ts +0 -5
- package/src/README.md.t.ts +0 -22
- package/src/composer/config.ts.t.ts +0 -11
- package/src/composer/dx.yml +0 -11
- package/src/composer/index.html +0 -50
- package/src/composer/main.tsx.t.ts +0 -118
- package/src/composer/shell.html.t.ts +0 -44
- package/src/composer/shell.ts.t.ts +0 -13
- package/src/composer/translations.ts +0 -28
- package/src/package.json.t.ts +0 -116
- package/src/src/index.ts.t.ts +0 -7
- package/src/src/plugin.tsx.t.ts +0 -63
- package/src/template.t.ts +0 -40
- package/src/tsconfig.json +0 -17
- package/src/utils.t/packageJson.ts +0 -7
- package/src/vite.config.ts.t.ts +0 -65
- package/test/scenarios.ts +0 -20
- package/test/template.test.ts +0 -43
- package/tsconfig.json +0 -39
- package/tsconfig.plate.json +0 -15
package/src/.npmignore.t.ts
DELETED
package/src/README.md.t.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { plate } from '@dxos/plate';
|
|
2
|
-
import template from './template.t';
|
|
3
|
-
|
|
4
|
-
export default template.define.text({
|
|
5
|
-
content: ({ input: { name } }) => plate`
|
|
6
|
-
# ${name}
|
|
7
|
-
|
|
8
|
-
This app was created with a DXOS application template.
|
|
9
|
-
|
|
10
|
-
Run the app with \`npm\`:
|
|
11
|
-
\`\`\`bash
|
|
12
|
-
npm install
|
|
13
|
-
npm run dev
|
|
14
|
-
\`\`\`
|
|
15
|
-
|
|
16
|
-
> Warning: pnpm is not supported for now, please use npm. (issue locating css in node_modules).
|
|
17
|
-
|
|
18
|
-
- [📚 Composer Documentation](https://docs.dxos.org/composer/)
|
|
19
|
-
- [📚 Using ECHO with React](https://docs.dxos.org/guide/react)
|
|
20
|
-
- [📚 DXOS Documentation](https://docs.dxos.org)
|
|
21
|
-
`
|
|
22
|
-
});
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { plate } from '@dxos/plate';
|
|
2
|
-
import template from '../template.t';
|
|
3
|
-
|
|
4
|
-
export default template.define.script({
|
|
5
|
-
content: ({ input: { defaultPlugins } }) => defaultPlugins && plate/* javascript */ `
|
|
6
|
-
import { Config, Defaults, Envs, Local, Storage } from '@dxos/config';
|
|
7
|
-
export const createConfig = async () => {
|
|
8
|
-
return new Config(await Storage(), Envs(), Local(), Defaults());
|
|
9
|
-
};
|
|
10
|
-
`,
|
|
11
|
-
});
|
package/src/composer/dx.yml
DELETED
package/src/composer/index.html
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en" style="overscroll-behavior: none">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8" />
|
|
5
|
-
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no,interactive-widget=resizes-content" />
|
|
6
|
-
<title>Composer</title>
|
|
7
|
-
<meta name="description" content="DXOS Composer Application" />
|
|
8
|
-
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
|
|
9
|
-
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
|
|
10
|
-
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
|
|
11
|
-
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#003E70" />
|
|
12
|
-
<meta name="msapplication-TileColor" content="#003E70" />
|
|
13
|
-
<meta name="theme-color" content="#003E70" />
|
|
14
|
-
<meta
|
|
15
|
-
http-equiv="Content-Security-Policy"
|
|
16
|
-
content="
|
|
17
|
-
connect-src https: file: ipc: socket: wss://*.dxos.org ws://localhost:* http://localhost:*;
|
|
18
|
-
script-src https: socket: http://localhost:* 'unsafe-eval' 'unsafe-inline';
|
|
19
|
-
frame-src https: socket: http://localhost:* composer:;
|
|
20
|
-
worker-src https: socket: http://localhost:*;
|
|
21
|
-
img-src https: data: file: http://localhost:*;
|
|
22
|
-
child-src 'none';
|
|
23
|
-
object-src 'none';
|
|
24
|
-
"
|
|
25
|
-
/>
|
|
26
|
-
<script>
|
|
27
|
-
function setTheme(darkMode) {
|
|
28
|
-
document.documentElement.classList[darkMode ? 'add' : 'remove']('dark');
|
|
29
|
-
}
|
|
30
|
-
setTheme(window.matchMedia('(prefers-color-scheme: dark)').matches);
|
|
31
|
-
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', function (event) {
|
|
32
|
-
setTheme(event.matches);
|
|
33
|
-
});
|
|
34
|
-
</script>
|
|
35
|
-
<style>
|
|
36
|
-
html {
|
|
37
|
-
font-size: 18px;
|
|
38
|
-
}
|
|
39
|
-
@media (min-width: 768px) {
|
|
40
|
-
html {
|
|
41
|
-
font-size: 16px;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
</style>
|
|
45
|
-
</head>
|
|
46
|
-
<body>
|
|
47
|
-
<div id="root"></div>
|
|
48
|
-
<script type="module" src="main.tsx"></script>
|
|
49
|
-
</body>
|
|
50
|
-
</html>
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
import template from '../template.t';
|
|
2
|
-
import { plate } from '@dxos/plate';
|
|
3
|
-
|
|
4
|
-
export default template.define.script({
|
|
5
|
-
content: ({ input: { defaultPlugins } }) => plate/* javascript */ `
|
|
6
|
-
import "@dxosTheme";
|
|
7
|
-
|
|
8
|
-
import React from "react";
|
|
9
|
-
import { registerSignalRuntime } from '@dxos/echo-signals';
|
|
10
|
-
import { Status, ThemeProvider, Tooltip } from "@dxos/react-ui";
|
|
11
|
-
import { defaultTx } from "@dxos/react-ui-theme";
|
|
12
|
-
import { createApp, Plugin } from "@dxos/app-framework";
|
|
13
|
-
import { createRoot } from "react-dom/client";
|
|
14
|
-
import translations from "./translations";
|
|
15
|
-
|
|
16
|
-
import ThemeMeta from "@braneframe/plugin-theme/meta";
|
|
17
|
-
${
|
|
18
|
-
defaultPlugins &&
|
|
19
|
-
plate/* javascript */ `
|
|
20
|
-
import ClientMeta from "@braneframe/plugin-client/meta";
|
|
21
|
-
import GraphMeta from "@braneframe/plugin-graph/meta";
|
|
22
|
-
import DeckMeta from "@braneframe/plugin-deck/meta";
|
|
23
|
-
import NavTreeMeta from "@braneframe/plugin-navtree/meta";
|
|
24
|
-
import SpaceMeta from "@braneframe/plugin-space/meta";
|
|
25
|
-
import StackMeta from "@braneframe/plugin-stack/meta";
|
|
26
|
-
import SettingsMeta from "@braneframe/plugin-settings/meta";
|
|
27
|
-
import MetadataMeta from "@braneframe/plugin-metadata/meta";
|
|
28
|
-
|
|
29
|
-
import { createClientServices } from "@dxos/react-client";
|
|
30
|
-
import { createConfig } from "./config";
|
|
31
|
-
`
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
import { meta } from "../src/plugin";
|
|
35
|
-
|
|
36
|
-
(async function () {
|
|
37
|
-
registerSignalRuntime();
|
|
38
|
-
|
|
39
|
-
${
|
|
40
|
-
defaultPlugins &&
|
|
41
|
-
plate/* javascript */ `
|
|
42
|
-
const config = await createConfig();
|
|
43
|
-
const services = await createClientServices(
|
|
44
|
-
config,
|
|
45
|
-
// () =>
|
|
46
|
-
// new SharedWorker(new URL("@dxos/client/shared-worker", import.meta.url), {
|
|
47
|
-
// type: "module",
|
|
48
|
-
// name: "dxos-client-worker",
|
|
49
|
-
// })
|
|
50
|
-
);`
|
|
51
|
-
}
|
|
52
|
-
const App = createApp({
|
|
53
|
-
fallback: ({ error }) => (
|
|
54
|
-
<ThemeProvider tx={defaultTx} resourceExtensions={translations}>
|
|
55
|
-
<Tooltip.Provider>
|
|
56
|
-
<div className="flex bs-[100dvh] justify-center items-center p-6 text-red-500">
|
|
57
|
-
{error.message}
|
|
58
|
-
</div>
|
|
59
|
-
</Tooltip.Provider>
|
|
60
|
-
</ThemeProvider>
|
|
61
|
-
),
|
|
62
|
-
placeholder: (
|
|
63
|
-
<ThemeProvider tx={defaultTx}>
|
|
64
|
-
<div className="flex bs-[100dvh] justify-center items-center">
|
|
65
|
-
<Status indeterminate aria-label="Initializing" placeholder="" />
|
|
66
|
-
</div>
|
|
67
|
-
</ThemeProvider>
|
|
68
|
-
),
|
|
69
|
-
plugins: {
|
|
70
|
-
[ThemeMeta.id]: Plugin.lazy(() => import("@braneframe/plugin-theme"), {
|
|
71
|
-
appName: "Composer",
|
|
72
|
-
}),
|
|
73
|
-
${
|
|
74
|
-
defaultPlugins &&
|
|
75
|
-
plate/* javascript */ `
|
|
76
|
-
[DeckMeta.id]: Plugin.lazy(() => import("@braneframe/plugin-deck")),
|
|
77
|
-
[NavTreeMeta.id]: Plugin.lazy(() => import("@braneframe/plugin-navTree")),
|
|
78
|
-
[SettingsMeta.id]: Plugin.lazy(() => import("@braneframe/plugin-settings")),
|
|
79
|
-
[ClientMeta.id]: Plugin.lazy(() => import("@braneframe/plugin-client"), {
|
|
80
|
-
appKey: "composer.local",
|
|
81
|
-
config,
|
|
82
|
-
services,
|
|
83
|
-
shell: "./shell.html",
|
|
84
|
-
}),
|
|
85
|
-
[SpaceMeta.id]: Plugin.lazy(() => import("@braneframe/plugin-space")),
|
|
86
|
-
[GraphMeta.id]: Plugin.lazy(() => import("@braneframe/plugin-graph")),
|
|
87
|
-
[MetadataMeta.id]: Plugin.lazy(
|
|
88
|
-
() => import("@braneframe/plugin-metadata")
|
|
89
|
-
),
|
|
90
|
-
[StackMeta.id]: Plugin.lazy(() => import("@braneframe/plugin-stack")),
|
|
91
|
-
`
|
|
92
|
-
}
|
|
93
|
-
[meta.id]: Plugin.lazy(() => import("../src/plugin")),
|
|
94
|
-
},
|
|
95
|
-
order: [
|
|
96
|
-
// Outside of error boundary so error dialog is styled.
|
|
97
|
-
ThemeMeta,
|
|
98
|
-
${
|
|
99
|
-
defaultPlugins &&
|
|
100
|
-
plate/* javascript */ `
|
|
101
|
-
DeckMeta,
|
|
102
|
-
NavTreeMeta,
|
|
103
|
-
SettingsMeta,
|
|
104
|
-
ClientMeta,
|
|
105
|
-
SpaceMeta,
|
|
106
|
-
GraphMeta,
|
|
107
|
-
MetadataMeta,
|
|
108
|
-
StackMeta,
|
|
109
|
-
`
|
|
110
|
-
}
|
|
111
|
-
meta,
|
|
112
|
-
],
|
|
113
|
-
});
|
|
114
|
-
|
|
115
|
-
createRoot(document.getElementById("root")!).render(<App />);
|
|
116
|
-
})();
|
|
117
|
-
`,
|
|
118
|
-
});
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { plate } from '@dxos/plate';
|
|
2
|
-
import template from '../template.t';
|
|
3
|
-
|
|
4
|
-
export default template.define.text({
|
|
5
|
-
content: ({ input: { defaultPlugins } }) => defaultPlugins && plate`
|
|
6
|
-
<!DOCTYPE html>
|
|
7
|
-
<html lang="en">
|
|
8
|
-
<head>
|
|
9
|
-
<meta charset="UTF-8" />
|
|
10
|
-
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no" />
|
|
11
|
-
<meta
|
|
12
|
-
http-equiv="Content-Security-Policy"
|
|
13
|
-
content="
|
|
14
|
-
connect-src https: file: ipc: socket: ws://localhost:* http://localhost:*;
|
|
15
|
-
script-src https: socket: http://localhost:* 'unsafe-eval' 'unsafe-inline';
|
|
16
|
-
img-src https: data: file: http://localhost:*;
|
|
17
|
-
child-src 'none';
|
|
18
|
-
object-src 'none';
|
|
19
|
-
"
|
|
20
|
-
/>
|
|
21
|
-
<style>
|
|
22
|
-
html,
|
|
23
|
-
body {
|
|
24
|
-
background: transparent !important;
|
|
25
|
-
}
|
|
26
|
-
</style>
|
|
27
|
-
<!-- TODO(wittjosiah): Add hash/nonce and remove unsafe-inline from content security policy. -->
|
|
28
|
-
<script>
|
|
29
|
-
function setTheme(darkMode) {
|
|
30
|
-
document.documentElement.classList[darkMode ? 'add' : 'remove']('dark');
|
|
31
|
-
}
|
|
32
|
-
setTheme(window.matchMedia('(prefers-color-scheme: dark)').matches);
|
|
33
|
-
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', function (e) {
|
|
34
|
-
setTheme(e.matches);
|
|
35
|
-
});
|
|
36
|
-
</script>
|
|
37
|
-
</head>
|
|
38
|
-
<body>
|
|
39
|
-
<div id="root"></div>
|
|
40
|
-
<script type="module" src="shell.ts"></script>
|
|
41
|
-
</body>
|
|
42
|
-
</html>
|
|
43
|
-
`
|
|
44
|
-
});
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { plate } from '@dxos/plate';
|
|
2
|
-
import template from '../template.t';
|
|
3
|
-
|
|
4
|
-
export default template.define.script({
|
|
5
|
-
content: ({ input: { defaultPlugins } }) => defaultPlugins && plate/* javascript */`
|
|
6
|
-
import '@dxosTheme';
|
|
7
|
-
import { runShell } from '@dxos/shell/react';
|
|
8
|
-
import { createConfig } from './config';
|
|
9
|
-
|
|
10
|
-
// eslint-disable-next-line no-console
|
|
11
|
-
createConfig().then(runShell).catch(console.error);
|
|
12
|
-
`
|
|
13
|
-
})
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Copyright 2024 DXOS.org
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
export default [
|
|
6
|
-
{
|
|
7
|
-
'en-US': {
|
|
8
|
-
composer: {
|
|
9
|
-
'show stack label': 'View stack trace',
|
|
10
|
-
'fatal error title': 'The app encountered an error',
|
|
11
|
-
'fatal error message':
|
|
12
|
-
'Please refresh the page to continue. If you keep seeing this error, please create a GitHub issue or ask for help on Discord.',
|
|
13
|
-
'reset dialog label': 'Reload or reset',
|
|
14
|
-
'reset dialog message':
|
|
15
|
-
'If you’re encountering issues, reloading may fix the issue. If reloading doesn’t help, consider resetting the app.',
|
|
16
|
-
'caught error message': 'Something went wrong; check the console for details.',
|
|
17
|
-
'copy error label': 'Copy this error',
|
|
18
|
-
'reload page label': 'Reload',
|
|
19
|
-
'update and reload page label': 'Update',
|
|
20
|
-
'reset client label': 'Reset',
|
|
21
|
-
'reset client confirm label': 'Confirm to wipe ALL DATA from local database',
|
|
22
|
-
'INVALID_STORAGE_VERSION title': 'Invalid storage version',
|
|
23
|
-
'INVALID_STORAGE_VERSION message':
|
|
24
|
-
'The application is not compatible with the current storage version. The data must be migrated to the new protocol in order to be used with this application. The current version is {{actual}} and the expected version is {{expected}}.',
|
|
25
|
-
},
|
|
26
|
-
},
|
|
27
|
-
},
|
|
28
|
-
];
|
package/src/package.json.t.ts
DELETED
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Copyright 2022 DXOS.org
|
|
3
|
-
//
|
|
4
|
-
import path from 'path';
|
|
5
|
-
import { promises as fs } from 'fs';
|
|
6
|
-
import { InputOf, Slot } from '@dxos/plate';
|
|
7
|
-
import { PackageJson } from './utils.t/packageJson';
|
|
8
|
-
import merge from 'lodash.merge';
|
|
9
|
-
|
|
10
|
-
import template from './template.t';
|
|
11
|
-
|
|
12
|
-
type Context = { version: string; frameworkVersion: string } & InputOf<typeof template>;
|
|
13
|
-
|
|
14
|
-
export namespace Features {
|
|
15
|
-
export const react = (): Partial<PackageJson> => ({
|
|
16
|
-
dependencies: {
|
|
17
|
-
react: '~18.2.0',
|
|
18
|
-
'react-dom': '~18.2.0',
|
|
19
|
-
},
|
|
20
|
-
devDependencies: {
|
|
21
|
-
'@types/react': '~18.2.0',
|
|
22
|
-
'@types/react-dom': '~18.2.0',
|
|
23
|
-
'@vitejs/plugin-react': '^4.2.1',
|
|
24
|
-
},
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
export const dxosUi = ({ frameworkVersion }: Context): Partial<PackageJson> => ({
|
|
28
|
-
dependencies: {
|
|
29
|
-
'@phosphor-icons/react': '^2.0.5',
|
|
30
|
-
},
|
|
31
|
-
devDependencies: {
|
|
32
|
-
'@dxos/react-ui': frameworkVersion,
|
|
33
|
-
'@dxos/react-ui-theme': frameworkVersion,
|
|
34
|
-
},
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
export const defaultPlugins = ({ frameworkVersion }: Context): Partial<PackageJson> => ({
|
|
38
|
-
devDependencies: {
|
|
39
|
-
'vite-plugin-wasm': '^3.3.0',
|
|
40
|
-
'vite-plugin-top-level-await': '^1.3.1',
|
|
41
|
-
'@dxos/react-client': frameworkVersion,
|
|
42
|
-
'@dxos/config': frameworkVersion,
|
|
43
|
-
'@dxos/shell': frameworkVersion,
|
|
44
|
-
'@braneframe/plugin-space': frameworkVersion,
|
|
45
|
-
'@braneframe/plugin-navtree': frameworkVersion,
|
|
46
|
-
'@braneframe/plugin-deck': frameworkVersion,
|
|
47
|
-
'@braneframe/plugin-graph': frameworkVersion,
|
|
48
|
-
'@braneframe/plugin-client': frameworkVersion,
|
|
49
|
-
'@braneframe/plugin-stack': frameworkVersion,
|
|
50
|
-
'@braneframe/plugin-metadata': frameworkVersion,
|
|
51
|
-
'@braneframe/plugin-settings': frameworkVersion,
|
|
52
|
-
},
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
export const base = ({ name, version, frameworkVersion }: Context): Partial<PackageJson> => {
|
|
57
|
-
return {
|
|
58
|
-
name,
|
|
59
|
-
version: version,
|
|
60
|
-
description: `${name} - a composer plugin`,
|
|
61
|
-
private: true,
|
|
62
|
-
main: 'dist/index.js',
|
|
63
|
-
types: 'dist/index.d.ts',
|
|
64
|
-
scripts: {
|
|
65
|
-
build: 'tsc',
|
|
66
|
-
serve: 'vite',
|
|
67
|
-
},
|
|
68
|
-
dependencies: {
|
|
69
|
-
'@preact/signals-react': '^1.3.6',
|
|
70
|
-
'@dxos/app-framework': frameworkVersion,
|
|
71
|
-
},
|
|
72
|
-
devDependencies: {
|
|
73
|
-
'@types/node': '^18.11.9',
|
|
74
|
-
vite: '^5.1.3',
|
|
75
|
-
typescript: '^5.0.4',
|
|
76
|
-
'@braneframe/plugin-theme': frameworkVersion,
|
|
77
|
-
},
|
|
78
|
-
};
|
|
79
|
-
};
|
|
80
|
-
|
|
81
|
-
const loadFromPackageRoot = async (moduleRelativePath: string) => {
|
|
82
|
-
const stepOut = __filename.endsWith('.ts') ? '../' : '../../';
|
|
83
|
-
const content = await fs.readFile(path.resolve(__dirname, stepOut, moduleRelativePath));
|
|
84
|
-
return JSON.parse(content.toString());
|
|
85
|
-
};
|
|
86
|
-
|
|
87
|
-
export default template.define
|
|
88
|
-
.slots<{ packageJson?: Slot<Partial<PackageJson>, InputOf<typeof template>, { depVersion?: string }> }>({
|
|
89
|
-
packageJson: {},
|
|
90
|
-
})
|
|
91
|
-
.text({
|
|
92
|
-
content: async ({ input, slots: { packageJson: slotPackageJson } }) => {
|
|
93
|
-
// TODO(wittjosiah): Importing directly causes package.json to be included in the output.
|
|
94
|
-
// Including package.json in the output causes syncpack to fail sometimes.
|
|
95
|
-
// Upgrading syncpack will likely fix this but this is simpler for now.
|
|
96
|
-
const ownPackageJson = await loadFromPackageRoot('package.json');
|
|
97
|
-
const context = {
|
|
98
|
-
version: '0.0.1',
|
|
99
|
-
frameworkVersion: ownPackageJson.version,
|
|
100
|
-
...input,
|
|
101
|
-
};
|
|
102
|
-
|
|
103
|
-
const [first, ...rest] = [
|
|
104
|
-
base(context),
|
|
105
|
-
Features.react(),
|
|
106
|
-
Features.dxosUi(context),
|
|
107
|
-
input.defaultPlugins && Features.defaultPlugins(context),
|
|
108
|
-
slotPackageJson?.() ?? {},
|
|
109
|
-
].filter(Boolean);
|
|
110
|
-
|
|
111
|
-
const packageJson = merge(first, ...rest);
|
|
112
|
-
|
|
113
|
-
const result = JSON.stringify(packageJson, null, 2);
|
|
114
|
-
return result;
|
|
115
|
-
},
|
|
116
|
-
});
|
package/src/src/index.ts.t.ts
DELETED
package/src/src/plugin.tsx.t.ts
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { plate } from '@dxos/plate';
|
|
2
|
-
import template from '../template.t';
|
|
3
|
-
|
|
4
|
-
export default template.define.script({
|
|
5
|
-
content: ({ input: { name }, imports }) => plate/* javascript */ `
|
|
6
|
-
${imports}
|
|
7
|
-
import React from 'react';
|
|
8
|
-
import { Asterisk } from '@phosphor-icons/react';
|
|
9
|
-
|
|
10
|
-
import {
|
|
11
|
-
PluginDefinition,
|
|
12
|
-
type SurfaceProvides,
|
|
13
|
-
type GraphBuilderProvides,
|
|
14
|
-
type IntentResolverProvides,
|
|
15
|
-
type TranslationsProvides,
|
|
16
|
-
pluginMeta,
|
|
17
|
-
} from '@dxos/app-framework';
|
|
18
|
-
|
|
19
|
-
export const PLUGIN_ID = '${name}';
|
|
20
|
-
|
|
21
|
-
export const meta = pluginMeta({
|
|
22
|
-
id: PLUGIN_ID,
|
|
23
|
-
name: "",
|
|
24
|
-
iconComponent: Asterisk,
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
export type TemplatePluginProvides = SurfaceProvides &
|
|
28
|
-
IntentResolverProvides &
|
|
29
|
-
GraphBuilderProvides &
|
|
30
|
-
TranslationsProvides & {};
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* See https://docs.dxos.org/composer/plugins/definition
|
|
34
|
-
*/
|
|
35
|
-
const plugin = (): PluginDefinition<TemplatePluginProvides> => {
|
|
36
|
-
return {
|
|
37
|
-
meta,
|
|
38
|
-
provides: {
|
|
39
|
-
root: () => null,
|
|
40
|
-
surface: {
|
|
41
|
-
component: ({ data, role }) => null,
|
|
42
|
-
},
|
|
43
|
-
intent: {
|
|
44
|
-
resolver: (intent) => {},
|
|
45
|
-
},
|
|
46
|
-
graph: {
|
|
47
|
-
builder: (plugins) => [],
|
|
48
|
-
},
|
|
49
|
-
translations: [
|
|
50
|
-
{
|
|
51
|
-
'en-US': {
|
|
52
|
-
[PLUGIN_ID]: {
|
|
53
|
-
'plugin name': 'Template',
|
|
54
|
-
},
|
|
55
|
-
},
|
|
56
|
-
},
|
|
57
|
-
],
|
|
58
|
-
},
|
|
59
|
-
};
|
|
60
|
-
};
|
|
61
|
-
export default plugin;
|
|
62
|
-
`,
|
|
63
|
-
});
|
package/src/template.t.ts
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { z, plate, interactiveDirectory } from '@dxos/plate';
|
|
2
|
-
import sanitize from 'sanitize-filename';
|
|
3
|
-
import path from 'path';
|
|
4
|
-
import chalk from 'chalk';
|
|
5
|
-
|
|
6
|
-
export default interactiveDirectory({
|
|
7
|
-
src: __filename.endsWith('.ts') ? __dirname : path.resolve(__dirname, '../../src'),
|
|
8
|
-
inputShape: z.object({
|
|
9
|
-
name: z.string().describe('Name the new package').default(path.basename(process.cwd())),
|
|
10
|
-
createFolder: z.boolean().describe('Create a new folder for the project').default(true),
|
|
11
|
-
defaultPlugins: z.boolean().describe('Include default plugins').default(true),
|
|
12
|
-
}),
|
|
13
|
-
options({ input, outputDirectory, ...rest }) {
|
|
14
|
-
const { name, createFolder } = {...input};
|
|
15
|
-
return {
|
|
16
|
-
input,
|
|
17
|
-
outputDirectory: createFolder ? path.resolve(outputDirectory, sanitize(name ?? '')) : outputDirectory,
|
|
18
|
-
...rest,
|
|
19
|
-
};
|
|
20
|
-
},
|
|
21
|
-
after({ outputDirectory, input: { name } }) {
|
|
22
|
-
const cwd = process.cwd();
|
|
23
|
-
const relative = path.relative(cwd, outputDirectory);
|
|
24
|
-
console.log(plate`
|
|
25
|
-
|
|
26
|
-
Plugin ${chalk.green(chalk.bold(name))} created.
|
|
27
|
-
|
|
28
|
-
Run the app:
|
|
29
|
-
${!!relative && `$ cd ${relative}`}
|
|
30
|
-
$ npm install
|
|
31
|
-
$ npm run serve
|
|
32
|
-
|
|
33
|
-
See also:
|
|
34
|
-
- ${path.join(relative, 'README.md')}
|
|
35
|
-
|
|
36
|
-
Warning:
|
|
37
|
-
- pnpm is not supported for now, please use npm. (issue locating css in node_modules).
|
|
38
|
-
`);
|
|
39
|
-
},
|
|
40
|
-
});
|
package/src/tsconfig.json
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"esModuleInterop": true,
|
|
4
|
-
"jsx": "react",
|
|
5
|
-
"emitDeclarationOnly": false,
|
|
6
|
-
"lib": ["DOM", "ESNext"],
|
|
7
|
-
"module": "ESNext",
|
|
8
|
-
"outDir": "dist",
|
|
9
|
-
"skipLibCheck": true,
|
|
10
|
-
"types": ["node"],
|
|
11
|
-
"moduleResolution": "node",
|
|
12
|
-
"isolatedModules": true,
|
|
13
|
-
"target": "ES2018"
|
|
14
|
-
},
|
|
15
|
-
"include": ["src"],
|
|
16
|
-
"exclude": ["node_modules", "dist", "vite.config.ts"]
|
|
17
|
-
}
|
package/src/vite.config.ts.t.ts
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import template from './template.t';
|
|
2
|
-
import { plate } from '@dxos/plate';
|
|
3
|
-
|
|
4
|
-
export default template.define.script({
|
|
5
|
-
content: ({ input: { defaultPlugins } }) => {
|
|
6
|
-
return plate/* javascript */`
|
|
7
|
-
import { defineConfig } from "vite";
|
|
8
|
-
import { resolve } from "path";
|
|
9
|
-
import react from "@vitejs/plugin-react";
|
|
10
|
-
import { ThemePlugin } from "@dxos/react-ui-theme/plugin";
|
|
11
|
-
|
|
12
|
-
${defaultPlugins && plate/* javascript */`
|
|
13
|
-
import { ConfigPlugin } from "@dxos/config/vite-plugin";
|
|
14
|
-
import TopLevelAwaitPlugin from 'vite-plugin-top-level-await';
|
|
15
|
-
import WasmPlugin from 'vite-plugin-wasm';
|
|
16
|
-
`}
|
|
17
|
-
|
|
18
|
-
// https://vitejs.dev/config
|
|
19
|
-
export default defineConfig({
|
|
20
|
-
server: {
|
|
21
|
-
host: true,
|
|
22
|
-
},
|
|
23
|
-
root: 'composer',
|
|
24
|
-
build: { outDir: "composer/out", target: "esnext" },
|
|
25
|
-
optimizeDeps: { esbuildOptions: { target: "esnext" } },
|
|
26
|
-
plugins: [
|
|
27
|
-
react(),
|
|
28
|
-
ThemePlugin({
|
|
29
|
-
root: __dirname + '/composer',
|
|
30
|
-
content: [
|
|
31
|
-
resolve(__dirname, "./composer/index.html"),
|
|
32
|
-
resolve(__dirname, "./src/**/*.{js,ts,jsx,tsx}"),
|
|
33
|
-
resolve(__dirname, "./composer/**/*.{js,ts,jsx,tsx}"),
|
|
34
|
-
${defaultPlugins && plate/* javascript */`
|
|
35
|
-
resolve(__dirname, "node_modules/@dxos/react-ui/dist/**/*.mjs"),
|
|
36
|
-
resolve(__dirname, "node_modules/@dxos/react-ui-theme/dist/**/*.mjs"),
|
|
37
|
-
resolve(
|
|
38
|
-
__dirname,
|
|
39
|
-
"node_modules/@dxos/react-ui-mosaic/dist/lib/**/*.mjs"
|
|
40
|
-
),
|
|
41
|
-
resolve(
|
|
42
|
-
__dirname,
|
|
43
|
-
"node_modules/@dxos/react-ui-stack/dist/lib/**/*.mjs"
|
|
44
|
-
),
|
|
45
|
-
resolve(
|
|
46
|
-
__dirname,
|
|
47
|
-
"node_modules/@dxos/react-ui-navtree/dist/lib/**/*.mjs"
|
|
48
|
-
),
|
|
49
|
-
resolve(
|
|
50
|
-
__dirname,
|
|
51
|
-
"node_modules/@braneframe/plugin-*/dist/lib/**/*.mjs"
|
|
52
|
-
),
|
|
53
|
-
`}
|
|
54
|
-
],
|
|
55
|
-
}),
|
|
56
|
-
${defaultPlugins && plate/* javascript */`
|
|
57
|
-
ConfigPlugin(),
|
|
58
|
-
TopLevelAwaitPlugin(),
|
|
59
|
-
WasmPlugin(),
|
|
60
|
-
`}
|
|
61
|
-
],
|
|
62
|
-
});
|
|
63
|
-
`
|
|
64
|
-
}
|
|
65
|
-
})
|
package/test/scenarios.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Copyright 2023 DXOS.org
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
import { type InputOf } from '@dxos/plate';
|
|
6
|
-
|
|
7
|
-
import type template from '../src/template.t';
|
|
8
|
-
|
|
9
|
-
export const scenarios: InputOf<typeof template>[] = [
|
|
10
|
-
{
|
|
11
|
-
name: 'default',
|
|
12
|
-
createFolder: true,
|
|
13
|
-
defaultPlugins: true,
|
|
14
|
-
},
|
|
15
|
-
{
|
|
16
|
-
name: 'default-bare',
|
|
17
|
-
createFolder: true,
|
|
18
|
-
defaultPlugins: false,
|
|
19
|
-
},
|
|
20
|
-
];
|