@happyvertical/smrt-workbench 0.40.66

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 (52) hide show
  1. package/AGENTS.md +28 -0
  2. package/CLAUDE.md +1 -0
  3. package/LICENSE +7 -0
  4. package/README.md +31 -0
  5. package/dist/chunks/discovery-G9-foyW8.js +979 -0
  6. package/dist/chunks/discovery-G9-foyW8.js.map +1 -0
  7. package/dist/chunks/runtime-BTiu5fuP.js +93 -0
  8. package/dist/chunks/runtime-BTiu5fuP.js.map +1 -0
  9. package/dist/discovery.d.ts +14 -0
  10. package/dist/discovery.d.ts.map +1 -0
  11. package/dist/index.d.ts +4 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +3 -0
  14. package/dist/runtime.d.ts +10 -0
  15. package/dist/runtime.d.ts.map +1 -0
  16. package/dist/runtime.js +2 -0
  17. package/dist/svelte/MarkdownDocument.svelte +200 -0
  18. package/dist/svelte/MarkdownDocument.svelte.d.ts +7 -0
  19. package/dist/svelte/MarkdownDocument.svelte.d.ts.map +1 -0
  20. package/dist/svelte/WorkbenchHost.svelte +2058 -0
  21. package/dist/svelte/WorkbenchHost.svelte.d.ts +13 -0
  22. package/dist/svelte/WorkbenchHost.svelte.d.ts.map +1 -0
  23. package/dist/svelte/command.d.ts +6 -0
  24. package/dist/svelte/command.d.ts.map +1 -0
  25. package/dist/svelte/command.js +18 -0
  26. package/dist/svelte/index.d.ts +2 -0
  27. package/dist/svelte/index.d.ts.map +1 -0
  28. package/dist/svelte/index.js +1 -0
  29. package/dist/types.d.ts +202 -0
  30. package/dist/types.d.ts.map +1 -0
  31. package/dist/types.js +0 -0
  32. package/dist/utils.d.ts +3 -0
  33. package/dist/utils.d.ts.map +1 -0
  34. package/dist/vite.d.ts +6 -0
  35. package/dist/vite.d.ts.map +1 -0
  36. package/dist/vite.js +124 -0
  37. package/dist/vite.js.map +1 -0
  38. package/host/README.md +12 -0
  39. package/host/package.json +21 -0
  40. package/host/src/app.html +11 -0
  41. package/host/src/hooks.client.ts +5 -0
  42. package/host/src/routes/+error.svelte +44 -0
  43. package/host/src/routes/+page.svelte +15 -0
  44. package/host/svelte.config.js +12 -0
  45. package/host/tsconfig.json +10 -0
  46. package/host/vite.config.ts +202 -0
  47. package/package.json +96 -0
  48. package/src/discovery.ts +1748 -0
  49. package/src/runtime.ts +165 -0
  50. package/src/types.ts +243 -0
  51. package/src/utils.ts +16 -0
  52. package/src/vite.ts +303 -0
@@ -0,0 +1,202 @@
1
+ import { existsSync, readFileSync, readdirSync } from 'node:fs';
2
+ import { join, resolve } from 'node:path';
3
+ import { sveltekit } from '@sveltejs/kit/vite';
4
+ import { defineConfig } from 'vite';
5
+ import { smrtWorkbenchVitePlugin } from '../src/vite.js';
6
+
7
+ const defaultProjectRoot = resolve(__dirname, '../../..');
8
+ const projectRoot = resolve(
9
+ process.env.SMRT_WORKBENCH_PROJECT_ROOT || defaultProjectRoot,
10
+ );
11
+ const workbenchCwd = resolve(process.env.SMRT_WORKBENCH_CWD || projectRoot);
12
+ const allowRemoteHost = process.env.SMRT_WORKBENCH_ALLOW_REMOTE === '1';
13
+ const sourceWorkspaceRoot = existsSync(
14
+ join(projectRoot, 'packages', 'smrt-workbench', 'host', 'package.json'),
15
+ )
16
+ ? projectRoot
17
+ : null;
18
+
19
+ function escapeRegex(value: string) {
20
+ return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
21
+ }
22
+
23
+ function isLoopbackHost(host: string | boolean | undefined) {
24
+ if (host === undefined || host === false) {
25
+ return true;
26
+ }
27
+ return (
28
+ host === 'localhost' ||
29
+ host === '127.0.0.1' ||
30
+ host === '::1' ||
31
+ host === '[::1]'
32
+ );
33
+ }
34
+
35
+ function createWorkspacePackageAliases(workspaceRoot: string | null) {
36
+ if (!workspaceRoot) {
37
+ return [];
38
+ }
39
+
40
+ const packagesDir = resolve(workspaceRoot, 'packages');
41
+ const aliases: { find: RegExp; replacement: string }[] = [];
42
+
43
+ for (const packageDirName of readdirSync(packagesDir)) {
44
+ const packageDir = join(packagesDir, packageDirName);
45
+ const packageJsonPath = join(packageDir, 'package.json');
46
+
47
+ if (!existsSync(packageJsonPath)) {
48
+ continue;
49
+ }
50
+
51
+ const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf8'));
52
+ const packageName = packageJson.name;
53
+ if (
54
+ typeof packageName !== 'string' ||
55
+ !packageName.startsWith('@happyvertical/smrt-')
56
+ ) {
57
+ continue;
58
+ }
59
+
60
+ const srcIndexPath = join(packageDir, 'src', 'index.ts');
61
+ if (existsSync(srcIndexPath)) {
62
+ aliases.push({
63
+ find: new RegExp(`^${escapeRegex(packageName)}$`),
64
+ replacement: srcIndexPath,
65
+ });
66
+ }
67
+
68
+ const svelteIndexPath = join(packageDir, 'src', 'svelte', 'index.ts');
69
+ if (existsSync(svelteIndexPath)) {
70
+ aliases.push({
71
+ find: new RegExp(`^${escapeRegex(packageName)}/svelte$`),
72
+ replacement: svelteIndexPath,
73
+ });
74
+ }
75
+
76
+ const viteIndexPath = join(packageDir, 'src', 'vite.ts');
77
+ if (existsSync(viteIndexPath)) {
78
+ aliases.push({
79
+ find: new RegExp(`^${escapeRegex(packageName)}/vite$`),
80
+ replacement: viteIndexPath,
81
+ });
82
+ }
83
+
84
+ const runtimeIndexPath = join(packageDir, 'src', 'runtime.ts');
85
+ if (existsSync(runtimeIndexPath)) {
86
+ aliases.push({
87
+ find: new RegExp(`^${escapeRegex(packageName)}/runtime$`),
88
+ replacement: runtimeIndexPath,
89
+ });
90
+ }
91
+ }
92
+
93
+ return aliases.sort(
94
+ (left, right) => right.find.source.length - left.find.source.length,
95
+ );
96
+ }
97
+
98
+ const workspacePackageAliases =
99
+ createWorkspacePackageAliases(sourceWorkspaceRoot);
100
+ const sourceAliases = sourceWorkspaceRoot
101
+ ? [
102
+ {
103
+ find: /^@happyvertical\/smrt-ui\/themes\/styles\/(.*)$/,
104
+ replacement: resolve(
105
+ sourceWorkspaceRoot,
106
+ 'packages/smrt-ui/src/themes/styles/$1',
107
+ ),
108
+ },
109
+ {
110
+ find: /^@happyvertical\/smrt-ui\/themes$/,
111
+ replacement: resolve(
112
+ sourceWorkspaceRoot,
113
+ 'packages/smrt-ui/src/themes/index.ts',
114
+ ),
115
+ },
116
+ {
117
+ find: /^@happyvertical\/smrt-svelte\/workspace$/,
118
+ replacement: resolve(
119
+ sourceWorkspaceRoot,
120
+ 'packages/smrt-svelte/src/components/workspace/index.ts',
121
+ ),
122
+ },
123
+ {
124
+ find: /^@happyvertical\/smrt-ui\/layout$/,
125
+ replacement: resolve(
126
+ sourceWorkspaceRoot,
127
+ 'packages/smrt-ui/src/components/layout/index.ts',
128
+ ),
129
+ },
130
+ {
131
+ find: /^@happyvertical\/smrt-ui\/ui$/,
132
+ replacement: resolve(
133
+ sourceWorkspaceRoot,
134
+ 'packages/smrt-ui/src/components/ui/index.ts',
135
+ ),
136
+ },
137
+ {
138
+ find: /^@happyvertical\/smrt-ui\/registry$/,
139
+ replacement: resolve(
140
+ sourceWorkspaceRoot,
141
+ 'packages/smrt-ui/src/registry/index.ts',
142
+ ),
143
+ },
144
+ {
145
+ find: /^@happyvertical\/smrt-ui\/i18n$/,
146
+ replacement: resolve(
147
+ sourceWorkspaceRoot,
148
+ 'packages/smrt-ui/src/i18n/index.ts',
149
+ ),
150
+ },
151
+ ]
152
+ : [];
153
+
154
+ export default defineConfig({
155
+ oxc: {
156
+ decorator: {
157
+ legacy: true,
158
+ emitDecoratorMetadata: true,
159
+ },
160
+ },
161
+ resolve: {
162
+ alias: [...workspacePackageAliases, ...sourceAliases],
163
+ },
164
+ plugins: [
165
+ {
166
+ name: 'smrt-workbench-loopback-guard',
167
+ configResolved(config) {
168
+ if (!isLoopbackHost(config.server.host) && !allowRemoteHost) {
169
+ throw new Error(
170
+ 'Refusing to expose the workbench on a non-loopback host. Use the SMRT CLI with --allow-remote only on a trusted network.',
171
+ );
172
+ }
173
+ },
174
+ },
175
+ smrtWorkbenchVitePlugin({
176
+ cwd: workbenchCwd,
177
+ mode: 'auto',
178
+ projectRoot,
179
+ workspaceRoot: sourceWorkspaceRoot || undefined,
180
+ }),
181
+ sveltekit(),
182
+ ],
183
+ server: {
184
+ fs: {
185
+ allow: [projectRoot, resolve(__dirname, '..')],
186
+ deny: [
187
+ '.env',
188
+ '.env.*',
189
+ '*.{crt,pem,key,p12,pfx,cer,der}',
190
+ '.npmrc',
191
+ '.yarnrc.yml',
192
+ '**/.git/**',
193
+ '**/.smrt/**',
194
+ '**/*.db',
195
+ '**/*.db-{journal,shm,wal}',
196
+ '**/*.duckdb*',
197
+ '**/*.sqlite*',
198
+ ],
199
+ },
200
+ port: 5570,
201
+ },
202
+ });
package/package.json ADDED
@@ -0,0 +1,96 @@
1
+ {
2
+ "name": "@happyvertical/smrt-workbench",
3
+ "version": "0.40.66",
4
+ "description": "Shared SMRT package and project workbench",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "files": [
9
+ "CLAUDE.md",
10
+ "README.md",
11
+ "dist",
12
+ "host/package.json",
13
+ "host/src",
14
+ "host/svelte.config.js",
15
+ "host/tsconfig.json",
16
+ "host/vite.config.ts",
17
+ "src/discovery.ts",
18
+ "src/runtime.ts",
19
+ "src/types.ts",
20
+ "src/utils.ts",
21
+ "src/vite.ts",
22
+ "AGENTS.md"
23
+ ],
24
+ "exports": {
25
+ ".": {
26
+ "types": "./dist/index.d.ts",
27
+ "import": "./dist/index.js"
28
+ },
29
+ "./vite": {
30
+ "types": "./dist/vite.d.ts",
31
+ "import": "./dist/vite.js"
32
+ },
33
+ "./runtime": {
34
+ "types": "./dist/runtime.d.ts",
35
+ "import": "./dist/runtime.js"
36
+ },
37
+ "./svelte": {
38
+ "types": "./dist/svelte/index.d.ts",
39
+ "svelte": "./dist/svelte/index.js",
40
+ "import": "./dist/svelte/index.js"
41
+ }
42
+ },
43
+ "dependencies": {
44
+ "@sveltejs/adapter-static": "^3.0.10",
45
+ "@sveltejs/kit": "^2.69.1",
46
+ "@sveltejs/vite-plugin-svelte": "^7.1.2",
47
+ "fast-glob": "3.3.3",
48
+ "svelte": "^5.56.4",
49
+ "tsx": "^4.23.0",
50
+ "vite": "^8.1.3",
51
+ "@happyvertical/smrt-playground": "0.40.66",
52
+ "@happyvertical/smrt-svelte": "0.40.66",
53
+ "@happyvertical/smrt-ui": "0.40.66"
54
+ },
55
+ "peerDependencies": {
56
+ "svelte": "^5.56.4",
57
+ "vite": "^8.1.3"
58
+ },
59
+ "peerDependenciesMeta": {
60
+ "svelte": {
61
+ "optional": true
62
+ },
63
+ "vite": {
64
+ "optional": true
65
+ }
66
+ },
67
+ "devDependencies": {
68
+ "@sveltejs/package": "^2.5.8",
69
+ "@types/node": "24.13.2",
70
+ "svelte-check": "^4.7.1",
71
+ "typescript": "^5.9.3",
72
+ "vitest": "^4.1.9"
73
+ },
74
+ "publishConfig": {
75
+ "registry": "https://registry.npmjs.org",
76
+ "access": "public"
77
+ },
78
+ "license": "MIT",
79
+ "author": "HappyVertical",
80
+ "repository": {
81
+ "type": "git",
82
+ "url": "https://github.com/happyvertical/smrt.git",
83
+ "directory": "packages/smrt-workbench"
84
+ },
85
+ "scripts": {
86
+ "build": "vite build --mode library && svelte-package -i src/svelte -o dist/svelte --tsconfig tsconfig.svelte.json",
87
+ "build:watch": "vite build --mode library --watch",
88
+ "clean": "rm -rf dist",
89
+ "dev": "npm run build:watch",
90
+ "check": "pnpm exec svelte-check --tsconfig ./tsconfig.svelte.json",
91
+ "typecheck": "tsc --noEmit && node ../../scripts/svelte-check-a11y.mjs --tsconfig ./tsconfig.svelte.json",
92
+ "test": "vitest run",
93
+ "test:consumer": "node scripts/consumer-smoke.mjs",
94
+ "verify:pack": "node ../../scripts/verify-package-types-exports.js ."
95
+ }
96
+ }