@nocturnium/svelte-ide 1.0.0 → 1.0.2
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/README.md +43 -47
- package/dist/components/agents/AgentActivityPanel.svelte +3 -1
- package/dist/components/agents/AgentAvatar.svelte +127 -35
- package/dist/components/agents/AgentCursor.svelte +15 -5
- package/dist/components/agents/AgentPresenceBar.svelte +7 -2
- package/dist/components/ai/AIConversationList.svelte +39 -34
- package/dist/components/ai/AIInlineEdit.svelte +1 -3
- package/dist/components/ai/AIMessage.svelte +5 -5
- package/dist/components/ai/AIMessageActions.svelte +18 -3
- package/dist/components/ai/AIMessageContent.svelte +22 -20
- package/dist/components/ai/AIPanel.svelte +17 -9
- package/dist/components/ai/AISuggestionWidget.svelte +1 -3
- package/dist/components/ai/AIToolCallDisplay.svelte +10 -14
- package/dist/components/core/Badge.svelte +9 -1
- package/dist/components/core/ConnectionStatus.svelte +73 -68
- package/dist/components/core/ErrorBoundary.svelte +56 -56
- package/dist/components/core/ErrorBoundary.svelte.d.ts +5 -5
- package/dist/components/core/Icon.svelte +22 -11
- package/dist/components/core/ResizeHandle.svelte +1 -1
- package/dist/components/core/Tooltip.svelte +1 -7
- package/dist/components/editor/AIFocusLayer.svelte +15 -7
- package/dist/components/editor/Breadcrumbs.svelte +18 -6
- package/dist/components/editor/BreakpointLayer.svelte +51 -60
- package/dist/components/editor/CognitiveLoadMeter.svelte +4 -2
- package/dist/components/editor/CollaborativeEditor.svelte +1 -5
- package/dist/components/editor/CommandPalette.svelte +1 -4
- package/dist/components/editor/ComplexityLayer.svelte +8 -6
- package/dist/components/editor/ConflictZoneLayer.svelte +2 -8
- package/dist/components/editor/ContextLens.svelte +1 -4
- package/dist/components/editor/CustomEditor.svelte +85 -41
- package/dist/components/editor/DebugConsole.svelte +8 -17
- package/dist/components/editor/EchoCursorLayer.svelte +3 -1
- package/dist/components/editor/EditorGutter.svelte +8 -2
- package/dist/components/editor/EditorLines.svelte +6 -3
- package/dist/components/editor/EditorPane.svelte +1 -6
- package/dist/components/editor/EditorSelections.svelte +29 -11
- package/dist/components/editor/FileExplorer.svelte +26 -4
- package/dist/components/editor/FileIcon.svelte +3 -1
- package/dist/components/editor/FindReplace.svelte +16 -4
- package/dist/components/editor/GhostBracketLayer.svelte +2 -2
- package/dist/components/editor/GitBlameLayer.svelte +2 -1
- package/dist/components/editor/InlineDiagnosticsLayer.svelte +4 -13
- package/dist/components/editor/InlineDiffLayer.svelte +18 -9
- package/dist/components/editor/Minimap.svelte +16 -9
- package/dist/components/editor/PluginPreviewSandbox.svelte +3 -2
- package/dist/components/editor/ProblemsPanel.svelte +11 -35
- package/dist/components/editor/QuickActionsMenu.svelte +5 -14
- package/dist/components/editor/SnippetPalette.svelte +11 -12
- package/dist/components/editor/StructureMap.svelte +2 -1
- package/dist/components/editor/SymbolOutline.svelte +14 -19
- package/dist/components/editor/TimelineScrubber.svelte +7 -6
- package/dist/components/editor/core/complexity-analyzer.js +42 -12
- package/dist/components/editor/core/conflict-predictor.js +2 -4
- package/dist/components/editor/core/folding.d.ts +9 -0
- package/dist/components/editor/core/folding.js +40 -5
- package/dist/components/editor/core/multi-cursor.js +4 -8
- package/dist/components/editor/core/navigation.js +2 -6
- package/dist/components/editor/core/quick-actions.js +22 -17
- package/dist/components/editor/core/search.js +2 -6
- package/dist/components/editor/core/semantic-analyzer.js +1 -3
- package/dist/components/editor/core/snippet-manager.js +4 -3
- package/dist/components/editor/core/state.js +2 -2
- package/dist/components/editor/core/timeline.js +1 -3
- package/dist/components/editor/editor-input.js +9 -6
- package/dist/components/editor/editor-multicursor.js +2 -2
- package/dist/components/editor/tokenizer/languages/css.js +146 -24
- package/dist/components/editor/tokenizer/languages/go.js +76 -13
- package/dist/components/editor/tokenizer/languages/javascript.d.ts +13 -2
- package/dist/components/editor/tokenizer/languages/javascript.js +278 -84
- package/dist/components/editor/tokenizer/languages/python.js +116 -19
- package/dist/components/editor/tokenizer/languages/svelte.js +20 -7
- package/dist/components/layout/IDELayout.svelte +6 -2
- package/dist/components/layout/StatusBar.svelte +32 -20
- package/dist/components/lsp/AutocompleteWidget.svelte +19 -19
- package/dist/components/lsp/DiagnosticMarker.svelte +61 -52
- package/dist/components/lsp/DiagnosticsPanel.svelte +45 -27
- package/dist/components/lsp/HoverTooltip.svelte +56 -61
- package/dist/components/lsp/LSPEditor.svelte +7 -18
- package/dist/components/lsp/SignatureHelpWidget.svelte +12 -9
- package/dist/components/plugins/PluginCard.svelte +3 -13
- package/dist/components/plugins/PluginProposalForm.svelte +19 -31
- package/dist/components/vfs/LockConflictDialog.svelte +112 -45
- package/dist/components/vfs/LockIndicator.svelte +0 -1
- package/dist/components/vfs/LockOverlay.svelte +53 -53
- package/dist/components/vfs/LockOverlay.svelte.d.ts +5 -5
- package/dist/components/vfs/VersionConflictDialog.svelte +107 -77
- package/dist/services/error-handling.js +1 -7
- package/dist/services/mock-ai.js +9 -7
- package/dist/stores/agents.svelte.js +50 -10
- package/dist/stores/ai.svelte.js +66 -18
- package/dist/stores/collaboration.svelte.js +70 -14
- package/dist/stores/editor.svelte.js +50 -10
- package/dist/stores/plugin.svelte.js +60 -12
- package/dist/stores/vfs.svelte.js +77 -19
- package/dist/styles/theme.css +16 -7
- package/package.json +186 -1
|
@@ -74,18 +74,66 @@ export function getDeployedProposals() {
|
|
|
74
74
|
return state.proposals.filter((p) => p.status === 'deployed');
|
|
75
75
|
}
|
|
76
76
|
// Legacy aliases for backward compatibility
|
|
77
|
-
export const proposals = {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
export const
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
export const
|
|
88
|
-
|
|
77
|
+
export const proposals = {
|
|
78
|
+
get current() {
|
|
79
|
+
return getProposals();
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
export const instances = {
|
|
83
|
+
get current() {
|
|
84
|
+
return getInstances();
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
export const activeInstances = {
|
|
88
|
+
get current() {
|
|
89
|
+
return getActiveInstances();
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
export const commands = {
|
|
93
|
+
get current() {
|
|
94
|
+
return getCommands();
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
export const panels = {
|
|
98
|
+
get current() {
|
|
99
|
+
return getPanels();
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
export const connected = {
|
|
103
|
+
get current() {
|
|
104
|
+
return getConnected();
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
export const loadingProposals = {
|
|
108
|
+
get current() {
|
|
109
|
+
return getLoadingProposals();
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
export const loadingInstance = {
|
|
113
|
+
get current() {
|
|
114
|
+
return getLoadingInstance();
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
export const error = {
|
|
118
|
+
get current() {
|
|
119
|
+
return getError();
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
export const draftProposals = {
|
|
123
|
+
get current() {
|
|
124
|
+
return getDraftProposals();
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
export const reviewingProposals = {
|
|
128
|
+
get current() {
|
|
129
|
+
return getReviewingProposals();
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
export const deployedProposals = {
|
|
133
|
+
get current() {
|
|
134
|
+
return getDeployedProposals();
|
|
135
|
+
}
|
|
136
|
+
};
|
|
89
137
|
// Event handlers
|
|
90
138
|
// eslint-disable-next-line svelte/prefer-svelte-reactivity -- internal non-reactive event dispatch registry, not UI state
|
|
91
139
|
const eventHandlers = new Map();
|
|
@@ -150,16 +150,56 @@ export function getFilesInDirectory(dirPath) {
|
|
|
150
150
|
return state.files.filter((f) => f.path.startsWith(prefix) && !f.path.slice(prefix.length).includes('/'));
|
|
151
151
|
}
|
|
152
152
|
// Legacy aliases for backward compatibility
|
|
153
|
-
export const workspace = {
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
export const
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
153
|
+
export const workspace = {
|
|
154
|
+
get current() {
|
|
155
|
+
return getWorkspace();
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
export const workspaceLoading = {
|
|
159
|
+
get current() {
|
|
160
|
+
return getWorkspaceLoading();
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
export const files = {
|
|
164
|
+
get current() {
|
|
165
|
+
return getFiles();
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
export const fileTree = {
|
|
169
|
+
get current() {
|
|
170
|
+
return getFileTree();
|
|
171
|
+
}
|
|
172
|
+
};
|
|
173
|
+
export const locks = {
|
|
174
|
+
get current() {
|
|
175
|
+
return getLocks();
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
export const dirtyFiles = {
|
|
179
|
+
get current() {
|
|
180
|
+
return getDirtyFiles();
|
|
181
|
+
}
|
|
182
|
+
};
|
|
183
|
+
export const activeTransactions = {
|
|
184
|
+
get current() {
|
|
185
|
+
return getActiveTransactions();
|
|
186
|
+
}
|
|
187
|
+
};
|
|
188
|
+
export const connected = {
|
|
189
|
+
get current() {
|
|
190
|
+
return getConnected();
|
|
191
|
+
}
|
|
192
|
+
};
|
|
193
|
+
export const syncing = {
|
|
194
|
+
get current() {
|
|
195
|
+
return getSyncing();
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
export const error = {
|
|
199
|
+
get current() {
|
|
200
|
+
return getError();
|
|
201
|
+
}
|
|
202
|
+
};
|
|
163
203
|
// ============================================================================
|
|
164
204
|
// Initialization
|
|
165
205
|
// ============================================================================
|
|
@@ -229,7 +269,15 @@ export async function writeFileOptimistic(path, content, _options = {}) {
|
|
|
229
269
|
return {
|
|
230
270
|
success: false,
|
|
231
271
|
error,
|
|
232
|
-
operation: {
|
|
272
|
+
operation: {
|
|
273
|
+
id: '',
|
|
274
|
+
type: 'file_write',
|
|
275
|
+
payload: { path, content },
|
|
276
|
+
timestamp: Date.now(),
|
|
277
|
+
status: 'failed',
|
|
278
|
+
retryCount: 0,
|
|
279
|
+
maxRetries: 3
|
|
280
|
+
}
|
|
233
281
|
};
|
|
234
282
|
}
|
|
235
283
|
const previousFile = state.fileMap.get(path);
|
|
@@ -290,7 +338,15 @@ export async function deleteFileOptimistic(path) {
|
|
|
290
338
|
return {
|
|
291
339
|
success: false,
|
|
292
340
|
error,
|
|
293
|
-
operation: {
|
|
341
|
+
operation: {
|
|
342
|
+
id: '',
|
|
343
|
+
type: 'file_delete',
|
|
344
|
+
payload: { path },
|
|
345
|
+
timestamp: Date.now(),
|
|
346
|
+
status: 'failed',
|
|
347
|
+
retryCount: 0,
|
|
348
|
+
maxRetries: 3
|
|
349
|
+
}
|
|
294
350
|
};
|
|
295
351
|
}
|
|
296
352
|
const previousFile = state.fileMap.get(path);
|
|
@@ -331,7 +387,7 @@ export async function deleteFileOptimistic(path) {
|
|
|
331
387
|
* Resolve a file conflict
|
|
332
388
|
*/
|
|
333
389
|
export function resolveConflict(path, resolution, mergedContent) {
|
|
334
|
-
const conflictIndex = state.conflictQueue.findIndex(c => c.path === path);
|
|
390
|
+
const conflictIndex = state.conflictQueue.findIndex((c) => c.path === path);
|
|
335
391
|
if (conflictIndex === -1)
|
|
336
392
|
return;
|
|
337
393
|
const conflict = state.conflictQueue[conflictIndex];
|
|
@@ -340,12 +396,13 @@ export function resolveConflict(path, resolution, mergedContent) {
|
|
|
340
396
|
case 'use_local':
|
|
341
397
|
// Re-attempt write with force flag
|
|
342
398
|
if (state.workspace) {
|
|
343
|
-
vfsClient
|
|
344
|
-
.
|
|
399
|
+
vfsClient
|
|
400
|
+
.quickWriteFile(state.workspace.id, path, conflict.localContent)
|
|
401
|
+
.then((result) => {
|
|
345
402
|
updateFileInfo(result);
|
|
346
403
|
markClean(path);
|
|
347
404
|
})
|
|
348
|
-
.catch(err => {
|
|
405
|
+
.catch((err) => {
|
|
349
406
|
state.structuredError = parseError(err, { path });
|
|
350
407
|
});
|
|
351
408
|
}
|
|
@@ -357,12 +414,13 @@ export function resolveConflict(path, resolution, mergedContent) {
|
|
|
357
414
|
case 'merge':
|
|
358
415
|
// Write merged content
|
|
359
416
|
if (mergedContent && state.workspace) {
|
|
360
|
-
vfsClient
|
|
361
|
-
.
|
|
417
|
+
vfsClient
|
|
418
|
+
.quickWriteFile(state.workspace.id, path, mergedContent)
|
|
419
|
+
.then((result) => {
|
|
362
420
|
updateFileInfo(result);
|
|
363
421
|
markClean(path);
|
|
364
422
|
})
|
|
365
|
-
.catch(err => {
|
|
423
|
+
.catch((err) => {
|
|
366
424
|
state.structuredError = parseError(err, { path });
|
|
367
425
|
});
|
|
368
426
|
}
|
package/dist/styles/theme.css
CHANGED
|
@@ -43,7 +43,11 @@
|
|
|
43
43
|
--ide-bg-elevated: color-mix(in srgb, var(--ide-bg-secondary) 90%, white 10%);
|
|
44
44
|
--ide-bg-hover: color-mix(in srgb, var(--ide-bg-tertiary) 50%, transparent);
|
|
45
45
|
--ide-bg-active: var(--ide-bg-tertiary);
|
|
46
|
-
--ide-bg-selection-secondary: color-mix(
|
|
46
|
+
--ide-bg-selection-secondary: color-mix(
|
|
47
|
+
in srgb,
|
|
48
|
+
var(--color-nocturnium-aurora-purple) 22%,
|
|
49
|
+
transparent
|
|
50
|
+
);
|
|
47
51
|
|
|
48
52
|
/* IDE Text Colors */
|
|
49
53
|
--ide-text-primary: var(--color-nocturnium-moon);
|
|
@@ -105,7 +109,8 @@
|
|
|
105
109
|
|
|
106
110
|
/* IDE Typography */
|
|
107
111
|
--ide-font-sans: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
|
|
108
|
-
--ide-font-mono:
|
|
112
|
+
--ide-font-mono:
|
|
113
|
+
'JetBrains Mono', 'Fira Code', 'SF Mono', Menlo, Monaco, 'Courier New', monospace;
|
|
109
114
|
--ide-font-size-xs: 0.75rem;
|
|
110
115
|
--ide-font-size-sm: 0.875rem;
|
|
111
116
|
--ide-font-size-base: 1rem;
|
|
@@ -556,7 +561,11 @@
|
|
|
556
561
|
}
|
|
557
562
|
|
|
558
563
|
.ide-agent-cursor--ai {
|
|
559
|
-
background: linear-gradient(
|
|
564
|
+
background: linear-gradient(
|
|
565
|
+
180deg,
|
|
566
|
+
var(--ide-agent-ai-primary) 0%,
|
|
567
|
+
var(--color-nocturnium-flame) 100%
|
|
568
|
+
);
|
|
560
569
|
box-shadow: var(--ide-agent-glow);
|
|
561
570
|
}
|
|
562
571
|
|
|
@@ -615,9 +624,9 @@
|
|
|
615
624
|
}
|
|
616
625
|
|
|
617
626
|
/* Force default cursor on editor gutter/line numbers */
|
|
618
|
-
[class*=
|
|
619
|
-
[class*=
|
|
620
|
-
[data-cursor-type=
|
|
621
|
-
[data-cursor-type=
|
|
627
|
+
[class*='gutter'],
|
|
628
|
+
[class*='line-number'],
|
|
629
|
+
[data-cursor-type='default'],
|
|
630
|
+
[data-cursor-type='default'] * {
|
|
622
631
|
cursor: default !important;
|
|
623
632
|
}
|
package/package.json
CHANGED
|
@@ -1 +1,186 @@
|
|
|
1
|
-
{
|
|
1
|
+
{
|
|
2
|
+
"name": "@nocturnium/svelte-ide",
|
|
3
|
+
"version": "1.0.2",
|
|
4
|
+
"description": "Svelte 5 code editor and IDE building blocks — custom editor, syntax highlighting, code folding, multi-cursor, LSP client, and optional realtime collaboration.",
|
|
5
|
+
"author": "Nocturnium & Jordan Dziat <hello@nocturnium.ai> (https://nocturnium.ai)",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"publishConfig": {
|
|
9
|
+
"access": "public",
|
|
10
|
+
"registry": "https://registry.npmjs.org/"
|
|
11
|
+
},
|
|
12
|
+
"svelte": "./dist/index.js",
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
14
|
+
"sideEffects": false,
|
|
15
|
+
"exports": {
|
|
16
|
+
".": {
|
|
17
|
+
"types": "./dist/index.d.ts",
|
|
18
|
+
"svelte": "./dist/index.js",
|
|
19
|
+
"default": "./dist/index.js"
|
|
20
|
+
},
|
|
21
|
+
"./theme.css": "./dist/styles/theme.css",
|
|
22
|
+
"./stores": {
|
|
23
|
+
"types": "./dist/stores/index.d.ts",
|
|
24
|
+
"svelte": "./dist/stores/index.js",
|
|
25
|
+
"default": "./dist/stores/index.js"
|
|
26
|
+
},
|
|
27
|
+
"./components/editor": {
|
|
28
|
+
"types": "./dist/components/editor/index.d.ts",
|
|
29
|
+
"svelte": "./dist/components/editor/index.js",
|
|
30
|
+
"default": "./dist/components/editor/index.js"
|
|
31
|
+
},
|
|
32
|
+
"./components/core": {
|
|
33
|
+
"types": "./dist/components/core/index.d.ts",
|
|
34
|
+
"svelte": "./dist/components/core/index.js",
|
|
35
|
+
"default": "./dist/components/core/index.js"
|
|
36
|
+
},
|
|
37
|
+
"./components/ai": {
|
|
38
|
+
"types": "./dist/components/ai/index.d.ts",
|
|
39
|
+
"svelte": "./dist/components/ai/index.js",
|
|
40
|
+
"default": "./dist/components/ai/index.js"
|
|
41
|
+
},
|
|
42
|
+
"./components/layout": {
|
|
43
|
+
"types": "./dist/components/layout/index.d.ts",
|
|
44
|
+
"svelte": "./dist/components/layout/index.js",
|
|
45
|
+
"default": "./dist/components/layout/index.js"
|
|
46
|
+
},
|
|
47
|
+
"./components/lsp": {
|
|
48
|
+
"types": "./dist/components/lsp/index.d.ts",
|
|
49
|
+
"svelte": "./dist/components/lsp/index.js",
|
|
50
|
+
"default": "./dist/components/lsp/index.js"
|
|
51
|
+
},
|
|
52
|
+
"./components/agents": {
|
|
53
|
+
"types": "./dist/components/agents/index.d.ts",
|
|
54
|
+
"svelte": "./dist/components/agents/index.js",
|
|
55
|
+
"default": "./dist/components/agents/index.js"
|
|
56
|
+
},
|
|
57
|
+
"./components/vfs": {
|
|
58
|
+
"types": "./dist/components/vfs/index.d.ts",
|
|
59
|
+
"svelte": "./dist/components/vfs/index.js",
|
|
60
|
+
"default": "./dist/components/vfs/index.js"
|
|
61
|
+
},
|
|
62
|
+
"./components/plugins": {
|
|
63
|
+
"types": "./dist/components/plugins/index.d.ts",
|
|
64
|
+
"svelte": "./dist/components/plugins/index.js",
|
|
65
|
+
"default": "./dist/components/plugins/index.js"
|
|
66
|
+
},
|
|
67
|
+
"./types": {
|
|
68
|
+
"types": "./dist/types/index.d.ts",
|
|
69
|
+
"svelte": "./dist/types/index.js",
|
|
70
|
+
"default": "./dist/types/index.js"
|
|
71
|
+
},
|
|
72
|
+
"./utils": {
|
|
73
|
+
"types": "./dist/utils/index.d.ts",
|
|
74
|
+
"svelte": "./dist/utils/index.js",
|
|
75
|
+
"default": "./dist/utils/index.js"
|
|
76
|
+
},
|
|
77
|
+
"./plugins": {
|
|
78
|
+
"types": "./dist/plugins/index.d.ts",
|
|
79
|
+
"svelte": "./dist/plugins/index.js",
|
|
80
|
+
"default": "./dist/plugins/index.js"
|
|
81
|
+
},
|
|
82
|
+
"./crdt": {
|
|
83
|
+
"types": "./dist/crdt/index.d.ts",
|
|
84
|
+
"svelte": "./dist/crdt/index.js",
|
|
85
|
+
"default": "./dist/crdt/index.js"
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
"files": [
|
|
89
|
+
"dist"
|
|
90
|
+
],
|
|
91
|
+
"scripts": {
|
|
92
|
+
"dev": "vite dev",
|
|
93
|
+
"build": "vite build",
|
|
94
|
+
"build:lib": "npm run package",
|
|
95
|
+
"preview": "vite preview",
|
|
96
|
+
"package": "svelte-kit sync && svelte-package && node scripts/strip-dist-tests.mjs && publint",
|
|
97
|
+
"prepublishOnly": "npm run check && npm run package",
|
|
98
|
+
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
|
|
99
|
+
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
|
|
100
|
+
"test": "vitest run",
|
|
101
|
+
"test:watch": "vitest",
|
|
102
|
+
"test:e2e": "playwright test",
|
|
103
|
+
"test:e2e:ui": "playwright test --ui",
|
|
104
|
+
"lint": "eslint .",
|
|
105
|
+
"lint:fix": "eslint . --fix",
|
|
106
|
+
"format": "prettier --write .",
|
|
107
|
+
"format:check": "prettier --check .",
|
|
108
|
+
"clean": "rm -rf dist .svelte-kit node_modules/.vite"
|
|
109
|
+
},
|
|
110
|
+
"engines": {
|
|
111
|
+
"node": ">=18.0.0"
|
|
112
|
+
},
|
|
113
|
+
"peerDependencies": {
|
|
114
|
+
"svelte": "^5.0.0",
|
|
115
|
+
"y-protocols": "^1.0.6",
|
|
116
|
+
"y-websocket": "^2.0.4",
|
|
117
|
+
"yjs": "^13.6.20"
|
|
118
|
+
},
|
|
119
|
+
"peerDependenciesMeta": {
|
|
120
|
+
"yjs": {
|
|
121
|
+
"optional": true
|
|
122
|
+
},
|
|
123
|
+
"y-protocols": {
|
|
124
|
+
"optional": true
|
|
125
|
+
},
|
|
126
|
+
"y-websocket": {
|
|
127
|
+
"optional": true
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
"devDependencies": {
|
|
131
|
+
"@commitlint/cli": "^21.0.2",
|
|
132
|
+
"@commitlint/config-conventional": "^21.0.2",
|
|
133
|
+
"@fontsource/inter": "^5.2.8",
|
|
134
|
+
"@fontsource/jetbrains-mono": "^5.2.8",
|
|
135
|
+
"@playwright/test": "^1.57.0",
|
|
136
|
+
"@semantic-release/changelog": "^6.0.3",
|
|
137
|
+
"@semantic-release/git": "^10.0.1",
|
|
138
|
+
"@sveltejs/adapter-auto": "^6.0.0",
|
|
139
|
+
"@sveltejs/adapter-static": "^3.0.10",
|
|
140
|
+
"@sveltejs/kit": "^2.21.0",
|
|
141
|
+
"@sveltejs/package": "^2.3.11",
|
|
142
|
+
"@sveltejs/vite-plugin-svelte": "^5.1.0",
|
|
143
|
+
"@tailwindcss/vite": "^4.1.0",
|
|
144
|
+
"@types/node": "^22.15.0",
|
|
145
|
+
"eslint": "^9.39.0",
|
|
146
|
+
"eslint-plugin-svelte": "^3.9.0",
|
|
147
|
+
"globals": "^16.2.0",
|
|
148
|
+
"prettier": "^3.7.0",
|
|
149
|
+
"prettier-plugin-svelte": "^3.4.0",
|
|
150
|
+
"publint": "^0.3.0",
|
|
151
|
+
"semantic-release": "^25.0.3",
|
|
152
|
+
"svelte": "^5.28.0",
|
|
153
|
+
"svelte-check": "^4.2.0",
|
|
154
|
+
"tailwindcss": "^4.1.0",
|
|
155
|
+
"typescript": "^5.8.0",
|
|
156
|
+
"typescript-eslint": "^8.32.0",
|
|
157
|
+
"vite": "^6.0.0",
|
|
158
|
+
"vitest": "^4.1.0",
|
|
159
|
+
"y-protocols": "^1.0.7",
|
|
160
|
+
"y-websocket": "^2.1.0",
|
|
161
|
+
"yjs": "^13.6.31"
|
|
162
|
+
},
|
|
163
|
+
"overrides": {
|
|
164
|
+
"cookie": "^0.7.0"
|
|
165
|
+
},
|
|
166
|
+
"keywords": [
|
|
167
|
+
"svelte",
|
|
168
|
+
"svelte5",
|
|
169
|
+
"code-editor",
|
|
170
|
+
"syntax-highlighting",
|
|
171
|
+
"code-folding",
|
|
172
|
+
"lightweight",
|
|
173
|
+
"crdt",
|
|
174
|
+
"yjs",
|
|
175
|
+
"collaboration",
|
|
176
|
+
"codemirror-alternative"
|
|
177
|
+
],
|
|
178
|
+
"homepage": "https://github.com/nocturnium/svelte-ide#readme",
|
|
179
|
+
"repository": {
|
|
180
|
+
"type": "git",
|
|
181
|
+
"url": "git+https://github.com/nocturnium/svelte-ide.git"
|
|
182
|
+
},
|
|
183
|
+
"bugs": {
|
|
184
|
+
"url": "https://github.com/nocturnium/svelte-ide/issues"
|
|
185
|
+
}
|
|
186
|
+
}
|