opentwig 1.1.0 → 1.1.1
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/AGENTS.md +49 -200
- package/package.json +2 -3
- package/src/live-ui/editor.js +1 -0
- package/src/live-ui/sidebar.js +2 -0
- package/src/utils/favicon.js +20 -0
- package/src/utils/loadConfig.js +3 -1
- package/src/utils/setupWatcher.js +2 -2
- package/src/utils/startLiveServer.js +11 -8
- package/theme/default/index.js +2 -0
- package/vitest.config.js +19 -10
- package/website/README.md +42 -0
- package/website/components.json +16 -0
- package/website/eslint.config.js +36 -0
- package/website/package-lock.json +4136 -0
- package/website/package.json +41 -0
- package/website/shadcn-svelte.md +118 -0
- package/website/src/app.d.ts +13 -0
- package/website/src/lib/components/ui/badge/badge.svelte +50 -0
- package/website/src/lib/components/ui/badge/index.ts +2 -0
- package/website/src/lib/components/ui/button/button.svelte +82 -0
- package/website/src/lib/components/ui/button/index.ts +17 -0
- package/website/src/lib/components/ui/card/card-action.svelte +20 -0
- package/website/src/lib/components/ui/card/card-content.svelte +15 -0
- package/website/src/lib/components/ui/card/card-description.svelte +20 -0
- package/website/src/lib/components/ui/card/card-footer.svelte +20 -0
- package/website/src/lib/components/ui/card/card-header.svelte +23 -0
- package/website/src/lib/components/ui/card/card-title.svelte +20 -0
- package/website/src/lib/components/ui/card/card.svelte +23 -0
- package/website/src/lib/components/ui/card/index.ts +25 -0
- package/website/src/lib/components/ui/separator/index.ts +7 -0
- package/website/src/lib/components/ui/separator/separator.svelte +21 -0
- package/website/src/lib/components/ui/tooltip/index.ts +19 -0
- package/website/src/lib/components/ui/tooltip/tooltip-content.svelte +52 -0
- package/website/src/lib/components/ui/tooltip/tooltip-portal.svelte +7 -0
- package/website/src/lib/components/ui/tooltip/tooltip-provider.svelte +7 -0
- package/website/src/lib/components/ui/tooltip/tooltip-trigger.svelte +7 -0
- package/website/src/lib/components/ui/tooltip/tooltip.svelte +7 -0
- package/website/src/lib/index.ts +1 -0
- package/website/src/lib/utils.ts +13 -0
- package/website/src/routes/+layout.svelte +23 -0
- package/website/src/routes/+page.server.ts +82 -0
- package/website/src/routes/+page.svelte +892 -0
- package/website/static/robots.txt +3 -0
- package/website/svelte.config.js +31 -0
- package/website/vite.config.ts +5 -0
- package/test-og.js +0 -40
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import adapter from '@sveltejs/adapter-static';
|
|
2
|
+
import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
|
|
3
|
+
|
|
4
|
+
/** @type {import('@sveltejs/kit').Config} */
|
|
5
|
+
const config = {
|
|
6
|
+
preprocess: vitePreprocess(),
|
|
7
|
+
kit: {
|
|
8
|
+
adapter: adapter({
|
|
9
|
+
pages: 'build',
|
|
10
|
+
assets: 'build',
|
|
11
|
+
precompress: false,
|
|
12
|
+
strict: true
|
|
13
|
+
}),
|
|
14
|
+
paths: {
|
|
15
|
+
base: ''
|
|
16
|
+
},
|
|
17
|
+
prerender: {
|
|
18
|
+
entries: ['*'],
|
|
19
|
+
handleHttpError: ({ path, referrer, message }) => {
|
|
20
|
+
// Ignore warnings about external links
|
|
21
|
+
if (message.includes('Not found')) {
|
|
22
|
+
console.warn(`Warning: ${path} not found (referrer: ${referrer})`);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
throw new Error(message);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export default config;
|
package/test-og.js
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
const fs = require('fs');
|
|
2
|
-
const path = require('path');
|
|
3
|
-
|
|
4
|
-
const render = require('./theme/default');
|
|
5
|
-
|
|
6
|
-
const sample = {
|
|
7
|
-
title: 'A <Title> & Test "Quote"',
|
|
8
|
-
url: 'https://example.com/page?arg=1&other=<bad>',
|
|
9
|
-
name: "O'Connor & Co <dev>",
|
|
10
|
-
content: 'This is a description with <tags> & special "characters" and \'quotes\'.',
|
|
11
|
-
avatar: null,
|
|
12
|
-
links: [],
|
|
13
|
-
footerLinks: [],
|
|
14
|
-
share: {}
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
const out = render(sample);
|
|
18
|
-
const outPath = path.join(__dirname, 'test-output.html');
|
|
19
|
-
fs.writeFileSync(outPath, out);
|
|
20
|
-
console.log('Wrote', outPath);
|
|
21
|
-
|
|
22
|
-
// Basic assertions
|
|
23
|
-
function assertContainsEscaped(haystack, raw, escaped) {
|
|
24
|
-
if (haystack.includes(raw)) {
|
|
25
|
-
throw new Error(`Found unescaped string: ${raw}`);
|
|
26
|
-
}
|
|
27
|
-
if (!haystack.includes(escaped)) {
|
|
28
|
-
throw new Error(`Did not find escaped string: ${escaped}`);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
// Check several values
|
|
33
|
-
assertContainsEscaped(out, '<Title>', '<Title>');
|
|
34
|
-
// URL should have ampersand escaped and angle brackets escaped
|
|
35
|
-
assertContainsEscaped(out, '&other=<bad>', '&other=<bad>');
|
|
36
|
-
assertContainsEscaped(out, "O'Connor", "O'Connor");
|
|
37
|
-
assertContainsEscaped(out, '"Quote"', '"Quote"');
|
|
38
|
-
assertContainsEscaped(out, "<tags>", '<tags>');
|
|
39
|
-
|
|
40
|
-
console.log('All assertions passed.');
|