okno 1.0.0-beta.7 → 1.0.0-beta.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +135 -88
- package/package.json +15 -15
package/dist/init.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAkBA,KAAK,SAAS,GAAG,OAAO,GAAG,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;AAEpE,UAAU,QAAQ;IACjB,SAAS,EAAE,SAAS,CAAA;IACpB,yEAAyE;IACzE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,oFAAoF;IACpF,SAAS,EAAE,KAAK,GAAG,MAAM,CAAA;CACzB;AAiBD,kEAAkE;AAClE,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CA0B5C;AAED;;;mEAGmE;AACnE,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CA8BrD;AAED,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,OAAO,CAAA;AAE9C;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,YAAwB,GAAG,OAAO,CAmB7E;AA2FD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWrD;AAED,qDAAqD;AACrD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAgB/E;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAkBA,KAAK,SAAS,GAAG,OAAO,GAAG,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;AAEpE,UAAU,QAAQ;IACjB,SAAS,EAAE,SAAS,CAAA;IACpB,yEAAyE;IACzE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,oFAAoF;IACpF,SAAS,EAAE,KAAK,GAAG,MAAM,CAAA;CACzB;AAiBD,kEAAkE;AAClE,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CA0B5C;AAED;;;mEAGmE;AACnE,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CA8BrD;AAED,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,OAAO,CAAA;AAE9C;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,YAAwB,GAAG,OAAO,CAmB7E;AA2FD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWrD;AAED,qDAAqD;AACrD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAgB/E;AA2DD,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAuK7C"}
|
package/dist/init.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { existsSync as c, readFileSync as
|
|
1
|
+
import { existsSync as c, readFileSync as d, writeFileSync as f, mkdirSync as g } from "node:fs";
|
|
2
2
|
import { join as i, dirname as v } from "node:path";
|
|
3
|
-
import { fileURLToPath as
|
|
4
|
-
import { spawnSync as
|
|
5
|
-
const
|
|
3
|
+
import { fileURLToPath as j } from "node:url";
|
|
4
|
+
import { spawnSync as $ } from "node:child_process";
|
|
5
|
+
const k = {
|
|
6
6
|
astro: ["astro.config.mjs", "astro.config.ts", "astro.config.js"],
|
|
7
7
|
sveltekit: ["vite.config.ts", "vite.config.js"],
|
|
8
8
|
nuxt: ["nuxt.config.ts", "nuxt.config.js"],
|
|
@@ -10,50 +10,50 @@ const f = {
|
|
|
10
10
|
};
|
|
11
11
|
function m(t, e) {
|
|
12
12
|
for (const n of e) {
|
|
13
|
-
const
|
|
14
|
-
if (c(
|
|
13
|
+
const s = i(t, n);
|
|
14
|
+
if (c(s)) return s;
|
|
15
15
|
}
|
|
16
16
|
return null;
|
|
17
17
|
}
|
|
18
|
-
function
|
|
18
|
+
function w(t) {
|
|
19
19
|
const e = i(t, "package.json"), n = {};
|
|
20
20
|
if (c(e))
|
|
21
21
|
try {
|
|
22
|
-
const
|
|
23
|
-
Object.assign(n,
|
|
22
|
+
const l = JSON.parse(d(e, "utf-8"));
|
|
23
|
+
Object.assign(n, l.dependencies, l.devDependencies);
|
|
24
24
|
} catch {
|
|
25
25
|
}
|
|
26
|
-
const
|
|
27
|
-
return
|
|
26
|
+
const s = (l) => l in n;
|
|
27
|
+
return s("astro") || m(t, k.astro) ? { framework: "astro", configPath: m(t, k.astro), pluginsAt: "vite" } : s("nuxt") ? { framework: "nuxt", configPath: m(t, k.nuxt), pluginsAt: "vite" } : s("@sveltejs/kit") ? { framework: "sveltekit", configPath: m(t, k.vite), pluginsAt: "top" } : s("vite") ? { framework: "vite", configPath: m(t, k.vite), pluginsAt: "top" } : { framework: "unknown", configPath: null, pluginsAt: "top" };
|
|
28
28
|
}
|
|
29
|
-
function
|
|
30
|
-
let e =
|
|
29
|
+
function y(t) {
|
|
30
|
+
let e = d(t, "utf-8");
|
|
31
31
|
if (/from\s*["']okno\/vite["']/.test(e)) return !0;
|
|
32
32
|
const n = e.match(/\bplugins\s*:\s*\[/);
|
|
33
33
|
if (!n || n.index === void 0) return !1;
|
|
34
|
-
const
|
|
35
|
-
let
|
|
36
|
-
const a =
|
|
37
|
-
a ?
|
|
38
|
-
${a[1]}okno(),` :
|
|
39
|
-
const
|
|
40
|
-
if (
|
|
41
|
-
const
|
|
42
|
-
e = e.slice(0,
|
|
43
|
-
` +
|
|
34
|
+
const s = n.index + n[0].length, l = e.slice(s);
|
|
35
|
+
let u;
|
|
36
|
+
const a = l.match(/^[^\S\n]*\n(\s*)/);
|
|
37
|
+
a ? u = `
|
|
38
|
+
${a[1]}okno(),` : l.trimStart().startsWith("]") ? u = "okno()" : u = "okno(), ", e = e.slice(0, s) + u + e.slice(s);
|
|
39
|
+
const h = 'import { okno } from "okno/vite"', o = [...e.matchAll(/^import .*$/gm)];
|
|
40
|
+
if (o.length) {
|
|
41
|
+
const r = o[o.length - 1], p = r.index + r[0].length;
|
|
42
|
+
e = e.slice(0, p) + `
|
|
43
|
+
` + h + e.slice(p);
|
|
44
44
|
} else
|
|
45
|
-
e =
|
|
45
|
+
e = h + `
|
|
46
46
|
` + e;
|
|
47
|
-
return
|
|
47
|
+
return f(t, e), !0;
|
|
48
48
|
}
|
|
49
|
-
function
|
|
50
|
-
const n = i(t, "okno"),
|
|
51
|
-
return c(
|
|
49
|
+
function M(t, e = "starter") {
|
|
50
|
+
const n = i(t, "okno"), s = i(n, "schema.ts");
|
|
51
|
+
return c(s) ? !1 : (g(n, { recursive: !0 }), e === "empty" ? (f(s, R), !0) : (g(i(n, "pages"), { recursive: !0 }), g(i(n, "globals"), { recursive: !0 }), f(s, E), f(i(n, "pages", "home.ts"), I), f(i(n, "globals", "meta.ts"), T), f(i(n, "globals", "navbar.ts"), O), f(i(n, "globals", "footer.ts"), N), !0));
|
|
52
52
|
}
|
|
53
|
-
const
|
|
53
|
+
const R = `import type { Schema } from "okno"
|
|
54
54
|
|
|
55
55
|
export default {} satisfies Schema
|
|
56
|
-
`,
|
|
56
|
+
`, E = `import type { Schema } from "okno"
|
|
57
57
|
|
|
58
58
|
export default {
|
|
59
59
|
pages: {
|
|
@@ -103,19 +103,19 @@ export default {
|
|
|
103
103
|
},
|
|
104
104
|
},
|
|
105
105
|
} satisfies Schema
|
|
106
|
-
`,
|
|
106
|
+
`, I = `export default {
|
|
107
107
|
headline: "Hello from okno",
|
|
108
108
|
subhead: "Edit this on the page — press “e” or visit ?okno.",
|
|
109
109
|
body: "<p>This is your home page. Everything here is content in your repo.</p>",
|
|
110
110
|
image: null,
|
|
111
111
|
}
|
|
112
|
-
`,
|
|
112
|
+
`, T = `export default {
|
|
113
113
|
title: "My okno site",
|
|
114
114
|
description: "Built with okno — a Git-backed CMS with live editing.",
|
|
115
115
|
shareImage: null,
|
|
116
116
|
favicon: null,
|
|
117
117
|
}
|
|
118
|
-
`,
|
|
118
|
+
`, O = `export default {
|
|
119
119
|
logo: "okno",
|
|
120
120
|
links: [
|
|
121
121
|
{ link: { text: "Home", url: "/", external: false } },
|
|
@@ -123,57 +123,104 @@ export default {
|
|
|
123
123
|
],
|
|
124
124
|
cta: { text: "Get started", url: "/", external: false },
|
|
125
125
|
}
|
|
126
|
-
`,
|
|
126
|
+
`, N = `export default {
|
|
127
127
|
text: "© My okno site",
|
|
128
128
|
links: [{ link: { text: "Home", url: "/", external: false } }],
|
|
129
129
|
}
|
|
130
130
|
`;
|
|
131
|
-
function
|
|
132
|
-
const e = v(
|
|
131
|
+
function b(t) {
|
|
132
|
+
const e = v(j(import.meta.url)), n = i(e, "..", "skills", "connect-okno", "SKILL.md");
|
|
133
133
|
if (!c(n)) return null;
|
|
134
|
-
const
|
|
135
|
-
return c(
|
|
134
|
+
const s = i(".claude", "skills", "connect-okno", "SKILL.md"), l = i(t, s);
|
|
135
|
+
return c(l) ? null : (g(v(l), { recursive: !0 }), f(l, d(n, "utf-8")), s);
|
|
136
136
|
}
|
|
137
|
-
function
|
|
138
|
-
const n = e === "claude" ? ".mcp.json" : i(".cursor", "mcp.json"),
|
|
139
|
-
let
|
|
140
|
-
if (c(
|
|
137
|
+
function S(t, e) {
|
|
138
|
+
const n = e === "claude" ? ".mcp.json" : i(".cursor", "mcp.json"), s = i(t, n);
|
|
139
|
+
let l = { mcpServers: {} };
|
|
140
|
+
if (c(s))
|
|
141
141
|
try {
|
|
142
|
-
|
|
142
|
+
l = JSON.parse(d(s, "utf-8"));
|
|
143
143
|
} catch {
|
|
144
144
|
}
|
|
145
|
-
return
|
|
145
|
+
return l.mcpServers ??= {}, l.mcpServers.okno = { command: "npx", args: ["okno", "mcp"] }, g(i(s, ".."), { recursive: !0 }), f(s, JSON.stringify(l, null, 2) + `
|
|
146
146
|
`), n;
|
|
147
147
|
}
|
|
148
|
-
function
|
|
148
|
+
function x(t) {
|
|
149
149
|
return c(i(t, "bun.lock")) || c(i(t, "bun.lockb")) ? "bun" : c(i(t, "pnpm-lock.yaml")) ? "pnpm" : c(i(t, "yarn.lock")) ? "yarn" : "npm";
|
|
150
150
|
}
|
|
151
|
-
function
|
|
151
|
+
function H() {
|
|
152
152
|
try {
|
|
153
|
-
const t = v(
|
|
154
|
-
return JSON.parse(
|
|
153
|
+
const t = v(j(import.meta.url));
|
|
154
|
+
return JSON.parse(d(i(t, "..", "package.json"), "utf-8")).version ?? "";
|
|
155
155
|
} catch {
|
|
156
156
|
return "";
|
|
157
157
|
}
|
|
158
158
|
}
|
|
159
|
-
function
|
|
159
|
+
function F(t) {
|
|
160
|
+
for (const e of [".mcp.json", i(".cursor", "mcp.json")]) {
|
|
161
|
+
const n = i(t, e);
|
|
162
|
+
if (c(n))
|
|
163
|
+
try {
|
|
164
|
+
if (JSON.parse(d(n, "utf-8"))?.mcpServers?.okno) return !0;
|
|
165
|
+
} catch {
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return !1;
|
|
169
|
+
}
|
|
170
|
+
function C(t) {
|
|
160
171
|
try {
|
|
161
|
-
const e = JSON.parse(
|
|
172
|
+
const e = JSON.parse(d(i(t, "package.json"), "utf-8"));
|
|
162
173
|
return !!(e.dependencies?.okno || e.devDependencies?.okno);
|
|
163
174
|
} catch {
|
|
164
175
|
return !1;
|
|
165
176
|
}
|
|
166
177
|
}
|
|
167
|
-
function
|
|
168
|
-
const n =
|
|
169
|
-
return
|
|
178
|
+
function A(t, e) {
|
|
179
|
+
const n = H(), s = n ? `okno@${n}` : "okno", l = e === "npm" ? ["install", s] : ["add", s], u = `${e} ${l.join(" ")}`;
|
|
180
|
+
return $(e, l, { cwd: t, stdio: "inherit", shell: process.platform === "win32" }).status === 0 ? u : null;
|
|
170
181
|
}
|
|
171
|
-
async function
|
|
182
|
+
async function L() {
|
|
172
183
|
const t = process.cwd(), e = await import("@clack/prompts");
|
|
173
184
|
e.intro("okno init");
|
|
174
|
-
let n =
|
|
185
|
+
let n = w(t);
|
|
186
|
+
if (c(i(t, "okno", "schema.ts"))) {
|
|
187
|
+
const o = [];
|
|
188
|
+
if (C(t))
|
|
189
|
+
o.push("• okno already installed");
|
|
190
|
+
else {
|
|
191
|
+
const r = x(t);
|
|
192
|
+
e.log.step(`Installing okno with ${r}…`);
|
|
193
|
+
const p = A(t, r);
|
|
194
|
+
o.push(
|
|
195
|
+
p ? `✓ Installed okno (${p})` : `! Couldn't install okno — run \`${r === "npm" ? "npm install" : `${r} add`} okno\` yourself`
|
|
196
|
+
);
|
|
197
|
+
}
|
|
198
|
+
if (n.configPath) {
|
|
199
|
+
const r = n.configPath.replace(t + "/", "");
|
|
200
|
+
/from\s*["']okno\/vite["']/.test(d(n.configPath, "utf-8")) ? o.push(`• Plugin already in ${r}`) : y(n.configPath) ? o.push(`✓ Added okno() to ${r}`) : o.push("! Add okno() to your config's plugins array yourself");
|
|
201
|
+
}
|
|
202
|
+
if (o.push("• okno/ already scaffolded — left it alone"), F(t))
|
|
203
|
+
o.push("• MCP already configured");
|
|
204
|
+
else {
|
|
205
|
+
const r = await e.select({
|
|
206
|
+
message: "Add the okno MCP server for your AI editor? (optional)",
|
|
207
|
+
options: [
|
|
208
|
+
{ value: "skip", label: "Skip", hint: "default — add later with `okno mcp`" },
|
|
209
|
+
{ value: "claude", label: "Claude Code", hint: ".mcp.json + connect-okno skill" },
|
|
210
|
+
{ value: "cursor", label: "Cursor", hint: ".cursor/mcp.json" }
|
|
211
|
+
],
|
|
212
|
+
initialValue: "skip"
|
|
213
|
+
});
|
|
214
|
+
if (!e.isCancel(r) && r !== "skip" && (o.push(`✓ Registered the okno MCP server in ${S(t, r)}`), r === "claude")) {
|
|
215
|
+
const p = b(t);
|
|
216
|
+
p && o.push(`✓ Installed the connect-okno skill in ${p}`);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
return e.note(o.join(`
|
|
220
|
+
`), "okno is already set up"), e.outro("Run your dev server and press “e” (or visit ?okno) to open the editor.");
|
|
221
|
+
}
|
|
175
222
|
if (n.framework === "unknown") {
|
|
176
|
-
const
|
|
223
|
+
const o = await e.select({
|
|
177
224
|
message: "Which framework is this project?",
|
|
178
225
|
options: [
|
|
179
226
|
{ value: "astro", label: "Astro" },
|
|
@@ -182,13 +229,13 @@ async function V() {
|
|
|
182
229
|
{ value: "nuxt", label: "Nuxt" }
|
|
183
230
|
]
|
|
184
231
|
});
|
|
185
|
-
if (e.isCancel(
|
|
186
|
-
const
|
|
187
|
-
n = { framework:
|
|
232
|
+
if (e.isCancel(o)) return e.cancel("Cancelled.");
|
|
233
|
+
const r = o, p = r === "astro" || r === "nuxt" ? "vite" : "top", P = k[r] ?? k.vite;
|
|
234
|
+
n = { framework: r, configPath: m(t, P), pluginsAt: p };
|
|
188
235
|
}
|
|
189
|
-
let
|
|
236
|
+
let s = "starter";
|
|
190
237
|
if (!c(i(t, "okno", "schema.ts"))) {
|
|
191
|
-
const
|
|
238
|
+
const o = await e.select({
|
|
192
239
|
message: "Scaffold a Starter, or an empty schema?",
|
|
193
240
|
options: [
|
|
194
241
|
{ value: "starter", label: "Starter", hint: "Home + Meta/Navbar/Footer globals, ready to edit" },
|
|
@@ -196,10 +243,10 @@ async function V() {
|
|
|
196
243
|
],
|
|
197
244
|
initialValue: "starter"
|
|
198
245
|
});
|
|
199
|
-
if (e.isCancel(
|
|
200
|
-
|
|
246
|
+
if (e.isCancel(o)) return e.cancel("Cancelled.");
|
|
247
|
+
s = o;
|
|
201
248
|
}
|
|
202
|
-
const
|
|
249
|
+
const u = await e.select({
|
|
203
250
|
message: "Set up the okno MCP server for your AI editor? (optional)",
|
|
204
251
|
options: [
|
|
205
252
|
{ value: "skip", label: "Skip", hint: "default — add later with `okno mcp`" },
|
|
@@ -208,48 +255,48 @@ async function V() {
|
|
|
208
255
|
],
|
|
209
256
|
initialValue: "skip"
|
|
210
257
|
});
|
|
211
|
-
if (e.isCancel(
|
|
258
|
+
if (e.isCancel(u)) return e.cancel("Cancelled.");
|
|
212
259
|
const a = [];
|
|
213
|
-
if (
|
|
260
|
+
if (C(t))
|
|
214
261
|
a.push("• okno already a dependency — skipped install");
|
|
215
262
|
else {
|
|
216
|
-
const
|
|
217
|
-
e.log.step(`Installing okno with ${
|
|
218
|
-
const
|
|
263
|
+
const o = x(t);
|
|
264
|
+
e.log.step(`Installing okno with ${o}…`);
|
|
265
|
+
const r = A(t, o);
|
|
219
266
|
a.push(
|
|
220
|
-
|
|
267
|
+
r ? `✓ Installed okno (${r})` : `! Couldn't install okno automatically — run \`${o === "npm" ? "npm install" : `${o} add`} okno\` yourself`
|
|
221
268
|
);
|
|
222
269
|
}
|
|
223
|
-
let
|
|
224
|
-
if (n.configPath && (
|
|
270
|
+
let h = !1;
|
|
271
|
+
if (n.configPath && (h = y(n.configPath)), h)
|
|
225
272
|
a.push(`✓ Added okno() to ${n.configPath.replace(t + "/", "")}`);
|
|
226
273
|
else {
|
|
227
|
-
const
|
|
274
|
+
const o = n.pluginsAt === "vite" ? `import { okno } from "okno/vite"
|
|
228
275
|
// inside defineConfig:
|
|
229
276
|
// vite: { plugins: [okno()] }` : `import { okno } from "okno/vite"
|
|
230
277
|
// inside defineConfig:
|
|
231
278
|
// plugins: [okno()]`;
|
|
232
279
|
a.push(`! Couldn't edit your config automatically — add okno() yourself:
|
|
233
|
-
${
|
|
280
|
+
${o}`);
|
|
234
281
|
}
|
|
235
|
-
if (
|
|
236
|
-
|
|
237
|
-
) : a.push("• okno/ already exists — left it alone"),
|
|
238
|
-
const
|
|
239
|
-
a.push(`✓ Registered the okno MCP server in ${
|
|
282
|
+
if (M(t, s) ? a.push(
|
|
283
|
+
s === "starter" ? "✓ Scaffolded the okno Starter (Home + Meta/Navbar/Footer globals)" : "✓ Scaffolded an empty okno/ (schema only — nothing else)"
|
|
284
|
+
) : a.push("• okno/ already exists — left it alone"), u !== "skip") {
|
|
285
|
+
const o = S(t, u);
|
|
286
|
+
a.push(`✓ Registered the okno MCP server in ${o}`);
|
|
240
287
|
}
|
|
241
|
-
if (
|
|
242
|
-
const
|
|
243
|
-
|
|
288
|
+
if (u === "claude") {
|
|
289
|
+
const o = b(t);
|
|
290
|
+
o && a.push(`✓ Installed the connect-okno skill in ${o}`);
|
|
244
291
|
}
|
|
245
292
|
e.note(a.join(`
|
|
246
293
|
`), "Done"), e.outro("Run your dev server and press “e” (or visit ?okno) to open the editor.");
|
|
247
294
|
}
|
|
248
295
|
export {
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
296
|
+
y as addPlugin,
|
|
297
|
+
w as detect,
|
|
298
|
+
L as runInit,
|
|
299
|
+
M as scaffold,
|
|
300
|
+
S as writeMcpConfig,
|
|
301
|
+
b as writeSkill
|
|
255
302
|
};
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "okno",
|
|
3
3
|
"description": "Git-backed CMS with live editing for any Vite framework",
|
|
4
4
|
"author": "Gabriel Uhlíř",
|
|
5
|
-
"version": "1.0.0-beta.
|
|
5
|
+
"version": "1.0.0-beta.8",
|
|
6
6
|
"homepage": "https://okno.build",
|
|
7
7
|
"type": "module",
|
|
8
8
|
"types": "./dist/index.d.ts",
|
|
@@ -46,20 +46,9 @@
|
|
|
46
46
|
"dependencies": {
|
|
47
47
|
"@clack/prompts": "^0.7.0",
|
|
48
48
|
"@modelcontextprotocol/sdk": "^1.12.0",
|
|
49
|
-
"zod": "^3.23.8",
|
|
50
|
-
"@internationalized/date": "^3.12.2",
|
|
51
|
-
"@tiptap/core": "^3.27.1",
|
|
52
|
-
"@tiptap/extension-image": "3.27.1",
|
|
53
|
-
"@tiptap/extension-table": "3.27.1",
|
|
54
|
-
"@tiptap/extension-text-align": "^3",
|
|
55
|
-
"@tiptap/pm": "^3.27.1",
|
|
56
|
-
"@tiptap/starter-kit": "^3.27.1",
|
|
57
|
-
"acorn": "^8.11.3",
|
|
58
|
-
"bits-ui": "^2.18.0",
|
|
59
|
-
"runed": "^0.23.0",
|
|
60
49
|
"simple-git": "^3.32.0",
|
|
61
|
-
"svelte": "
|
|
62
|
-
"
|
|
50
|
+
"svelte": "5.56.3",
|
|
51
|
+
"zod": "^3.23.8"
|
|
63
52
|
},
|
|
64
53
|
"devDependencies": {
|
|
65
54
|
"@hugeicons-pro/core-bulk-rounded": "*",
|
|
@@ -67,16 +56,27 @@
|
|
|
67
56
|
"@hugeicons-pro/core-stroke-rounded": "*",
|
|
68
57
|
"@hugeicons-pro/core-stroke-standard": "*",
|
|
69
58
|
"@hugeicons/svelte": "*",
|
|
59
|
+
"@internationalized/date": "^3.12.2",
|
|
70
60
|
"@sveltejs/vite-plugin-svelte": "^5.0.0",
|
|
71
61
|
"@tailwindcss/vite": "^4.0.0",
|
|
62
|
+
"@tiptap/core": "^3.27.1",
|
|
63
|
+
"@tiptap/extension-image": "3.27.1",
|
|
64
|
+
"@tiptap/extension-table": "3.27.1",
|
|
65
|
+
"@tiptap/extension-text-align": "^3",
|
|
66
|
+
"@tiptap/pm": "^3.27.1",
|
|
67
|
+
"@tiptap/starter-kit": "^3.27.1",
|
|
72
68
|
"@types/node": "^20.19.13",
|
|
69
|
+
"acorn": "^8.11.3",
|
|
70
|
+
"bits-ui": "^2.18.0",
|
|
71
|
+
"runed": "^0.23.0",
|
|
72
|
+
"svelte-dnd-action": "^0.9.69",
|
|
73
73
|
"tailwindcss": "^4.0.0",
|
|
74
74
|
"tailwindcss-animate": "^1.0.7",
|
|
75
75
|
"typescript": "^5.9.2",
|
|
76
76
|
"vite": "^6.4.3"
|
|
77
77
|
},
|
|
78
78
|
"peerDependencies": {
|
|
79
|
-
"svelte": "
|
|
79
|
+
"svelte": "5.56.3",
|
|
80
80
|
"vite": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0"
|
|
81
81
|
},
|
|
82
82
|
"keywords": [
|