create-qwik 0.0.8 → 0.0.12
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 +20 -0
- package/create-qwik +106 -0
- package/index.js +2 -101
- package/package.json +5 -4
- package/starters/apps/starter/index.html +1 -0
- package/starters/apps/starter/package.json +7 -10
- package/starters/apps/starter/public/favicon.ico +0 -0
- package/starters/apps/starter/src/{index.server.tsx → entry.server.tsx} +4 -5
- package/starters/apps/starter/src/root.css +3 -0
- package/starters/apps/starter/src/root.tsx +62 -0
- package/starters/apps/starter/tsconfig.json +3 -3
- package/starters/apps/starter/vite.config.js +34 -0
- package/starters/apps/starter-builder/index.html +1 -0
- package/starters/apps/starter-builder/package.json +7 -10
- package/starters/apps/starter-builder/public/favicon.ico +0 -0
- package/starters/apps/starter-builder/src/{index.server.tsx → entry.server.tsx} +4 -8
- package/starters/apps/starter-builder/src/root.css +3 -0
- package/starters/apps/starter-builder/src/root.tsx +41 -0
- package/starters/apps/starter-builder/tsconfig.json +3 -3
- package/starters/apps/starter-builder/vite.config.js +34 -0
- package/starters/apps/starter-partytown/index.html +1 -0
- package/starters/apps/starter-partytown/package.json +8 -11
- package/starters/apps/starter-partytown/src/{index.server.tsx → entry.server.tsx} +6 -7
- package/starters/apps/starter-partytown/src/root.css +3 -0
- package/starters/apps/starter-partytown/src/{my-app.tsx → root.tsx} +12 -18
- package/starters/apps/starter-partytown/tsconfig.json +3 -3
- package/starters/apps/starter-partytown/vite.config.js +34 -0
- package/starters/apps/todo/index.html +1 -0
- package/starters/apps/todo/package.json +7 -11
- package/starters/apps/todo/public/favicon.ico +0 -0
- package/starters/apps/todo/src/{index.server.tsx → entry.server.tsx} +3 -4
- package/starters/apps/todo/src/root.css +3 -0
- package/starters/apps/todo/src/root.tsx +232 -0
- package/starters/apps/todo/src/state.ts +5 -7
- package/starters/apps/todo/tsconfig.json +2 -3
- package/starters/apps/todo/vite.config.js +34 -0
- package/starters/features/prettier/.prettierignore +29 -0
- package/starters/features/prettier/package.json +12 -0
- package/starters/features/tailwindcss/package.json +10 -0
- package/starters/features/tailwindcss/postcss.config.js +6 -0
- package/starters/features/tailwindcss/src/root.css +3 -0
- package/starters/features/tailwindcss/tailwind.config.js +7 -0
- package/starters/servers/cloudflare/package.json +7 -9
- package/starters/servers/cloudflare/{workers-site → server}/package.json +1 -1
- package/starters/servers/cloudflare/src/{index.cloudflare.tsx → entry.cloudflare.tsx} +11 -4
- package/starters/servers/cloudflare/wrangler.toml +2 -2
- package/starters/servers/express/package.json +1 -1
- package/starters/servers/express/server/index.js +4 -4
- package/starters/apps/starter/rollup.config.js +0 -37
- package/starters/apps/starter/src/my-app.tsx +0 -63
- package/starters/apps/starter-builder/rollup.config.js +0 -37
- package/starters/apps/starter-builder/src/my-app.tsx +0 -34
- package/starters/apps/starter-partytown/rollup.config.js +0 -37
- package/starters/apps/todo/rollup.config.js +0 -39
- package/starters/apps/todo/src/components.tsx +0 -225
- package/starters/servers/cloudflare/rollup.config.server.js +0 -29
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { defineConfig } from 'vite';
|
|
2
|
+
import { qwikRollup } from '@builder.io/qwik/optimizer';
|
|
3
|
+
import { writeFile, mkdir } from 'fs/promises';
|
|
4
|
+
import { dirname, resolve } from 'path';
|
|
5
|
+
|
|
6
|
+
export default defineConfig({
|
|
7
|
+
build: {
|
|
8
|
+
rollupOptions: {
|
|
9
|
+
output: {
|
|
10
|
+
chunkFileNames: 'q-[hash].js',
|
|
11
|
+
assetFileNames: 'q-[hash].[ext]',
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
ssr: {
|
|
16
|
+
noExternal: true,
|
|
17
|
+
},
|
|
18
|
+
plugins: [
|
|
19
|
+
qwikRollup({
|
|
20
|
+
srcDir: resolve('./src'),
|
|
21
|
+
entryStrategy: {
|
|
22
|
+
type: 'single',
|
|
23
|
+
},
|
|
24
|
+
symbolsOutput: (data) => {
|
|
25
|
+
outputJSON('./server/q-symbols.json', data);
|
|
26
|
+
},
|
|
27
|
+
}),
|
|
28
|
+
],
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
async function outputJSON(path, data) {
|
|
32
|
+
await mkdir(dirname(path), { recursive: true });
|
|
33
|
+
await writeFile(path, JSON.stringify(data, null, 2));
|
|
34
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
**/*.log
|
|
2
|
+
**/.DS_Store
|
|
3
|
+
*.
|
|
4
|
+
.vscode/settings.json
|
|
5
|
+
.history
|
|
6
|
+
.yarn
|
|
7
|
+
bazel-*
|
|
8
|
+
bazel-bin
|
|
9
|
+
bazel-out
|
|
10
|
+
bazel-qwik
|
|
11
|
+
bazel-testlogs
|
|
12
|
+
dist
|
|
13
|
+
dist-dev
|
|
14
|
+
etc
|
|
15
|
+
external
|
|
16
|
+
node_modules
|
|
17
|
+
temp
|
|
18
|
+
tsc-out
|
|
19
|
+
tsdoc-metadata.json
|
|
20
|
+
integration/**/*.js
|
|
21
|
+
target
|
|
22
|
+
output
|
|
23
|
+
rollup.config.js
|
|
24
|
+
build
|
|
25
|
+
.cache
|
|
26
|
+
.vscode
|
|
27
|
+
.rollup.cache
|
|
28
|
+
dist
|
|
29
|
+
tsconfig.tsbuildinfo
|
|
@@ -3,17 +3,15 @@
|
|
|
3
3
|
"description": "Cloudflare Workers (serverless)",
|
|
4
4
|
"priority": -1,
|
|
5
5
|
"scripts": {
|
|
6
|
-
"build": "
|
|
7
|
-
"build.client": "rollup -c",
|
|
8
|
-
"build.server": "rollup -c rollup.config.server.js",
|
|
6
|
+
"build.server": "vite build --outDir server/build --ssr src/entry.cloudflare.tsx",
|
|
9
7
|
"deploy": "wrangler publish",
|
|
10
|
-
"
|
|
8
|
+
"deploy.preview": "wrangler preview",
|
|
9
|
+
"deploy.dev": "wrangler dev"
|
|
11
10
|
},
|
|
12
11
|
"devDependencies": {
|
|
13
|
-
"@cloudflare/kv-asset-handler": "
|
|
14
|
-
"@cloudflare/workers-types": "
|
|
15
|
-
"@
|
|
16
|
-
"@
|
|
17
|
-
"@rollup/plugin-json": "^4.1.0"
|
|
12
|
+
"@cloudflare/kv-asset-handler": "0.2.0",
|
|
13
|
+
"@cloudflare/workers-types": "3.2.0",
|
|
14
|
+
"@cloudflare/wrangler": "1.19.7",
|
|
15
|
+
"@types/service-worker-mock": "2.0.1"
|
|
18
16
|
}
|
|
19
17
|
}
|
|
@@ -1,6 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
|
|
3
|
+
// @ts-ignore
|
|
4
|
+
import { render } from './entry.server';
|
|
5
|
+
|
|
6
|
+
// @ts-ignore
|
|
2
7
|
import { getAssetFromKV } from '@cloudflare/kv-asset-handler';
|
|
3
|
-
|
|
8
|
+
|
|
9
|
+
// @ts-ignore
|
|
10
|
+
import symbols from '../server/q-symbols.json';
|
|
4
11
|
|
|
5
12
|
const CACHING = true;
|
|
6
13
|
|
|
@@ -30,14 +37,14 @@ async function handleQwik(event: any, request: Request) {
|
|
|
30
37
|
}
|
|
31
38
|
}
|
|
32
39
|
|
|
33
|
-
const ssrResult = await
|
|
40
|
+
const ssrResult = await render({
|
|
34
41
|
url: new URL(request.url),
|
|
35
42
|
symbols,
|
|
36
43
|
});
|
|
37
44
|
|
|
38
45
|
const response = new Response(ssrResult.html, {
|
|
39
46
|
headers: {
|
|
40
|
-
'Content-Type': 'text/html',
|
|
47
|
+
'Content-Type': 'text/html; charset=utf-8',
|
|
41
48
|
'Cache-Control': `max-age=${60}`,
|
|
42
49
|
},
|
|
43
50
|
});
|
|
@@ -14,5 +14,5 @@ command = "npm run build"
|
|
|
14
14
|
format = "service-worker"
|
|
15
15
|
|
|
16
16
|
[site]
|
|
17
|
-
bucket = "
|
|
18
|
-
entry-point = "
|
|
17
|
+
bucket = "dist" # directory with your static assets
|
|
18
|
+
entry-point = "server" # JS folder serving your assets
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
const express = require('express');
|
|
2
2
|
const { join } = require('path');
|
|
3
3
|
const { existsSync } = require('fs');
|
|
4
|
-
const {
|
|
5
|
-
const symbols = require('./
|
|
4
|
+
const { render } = require('./build/entry.js');
|
|
5
|
+
const symbols = require('./q-symbols.json');
|
|
6
6
|
const PORT = process.env.PORT || 8080;
|
|
7
7
|
|
|
8
8
|
async function startServer() {
|
|
9
9
|
async function handleQwik(req, res) {
|
|
10
|
-
const result = await
|
|
10
|
+
const result = await render({
|
|
11
11
|
symbols,
|
|
12
|
-
url: new URL(req.url),
|
|
12
|
+
url: new URL(`${req.protocol}://${req.hostname}${req.url}`),
|
|
13
13
|
debug: true,
|
|
14
14
|
});
|
|
15
15
|
res.send(result.html);
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { nodeResolve } from '@rollup/plugin-node-resolve';
|
|
2
|
-
import { qwikRollup } from '@builder.io/qwik/optimizer';
|
|
3
|
-
import { writeFile, mkdir } from "fs/promises";
|
|
4
|
-
import { dirname } from "path";
|
|
5
|
-
|
|
6
|
-
export default async function () {
|
|
7
|
-
return {
|
|
8
|
-
input: [
|
|
9
|
-
'src/index.server.tsx',
|
|
10
|
-
'src/my-app.tsx'
|
|
11
|
-
],
|
|
12
|
-
plugins: [
|
|
13
|
-
nodeResolve(),
|
|
14
|
-
qwikRollup({
|
|
15
|
-
symbolsOutput: (data) => {
|
|
16
|
-
outputJSON('./server/build/q-symbols.json', data);
|
|
17
|
-
},
|
|
18
|
-
})
|
|
19
|
-
],
|
|
20
|
-
output: [
|
|
21
|
-
{
|
|
22
|
-
chunkFileNames: 'q-[hash].js',
|
|
23
|
-
dir: 'public/build',
|
|
24
|
-
format: 'es',
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
dir: 'server/build',
|
|
28
|
-
format: 'cjs',
|
|
29
|
-
},
|
|
30
|
-
],
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
async function outputJSON(path, data) {
|
|
35
|
-
await mkdir(dirname(path), {recursive: true});
|
|
36
|
-
await writeFile(path, JSON.stringify(data, null, 2));
|
|
37
|
-
}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { h } from '@builder.io/qwik';
|
|
2
|
-
import { qComponent, qHook, useEvent } from '@builder.io/qwik';
|
|
3
|
-
|
|
4
|
-
export const MyApp = qComponent<{}, { name: string }>({
|
|
5
|
-
tagName: 'my-app', // optional
|
|
6
|
-
onMount: qHook(() => ({ name: 'World' })),
|
|
7
|
-
onRender: qHook((props, state) => {
|
|
8
|
-
return (
|
|
9
|
-
<div>
|
|
10
|
-
<p style={{ 'text-align': 'center' }}>
|
|
11
|
-
<a href="https://github.com/builderio/qwik">
|
|
12
|
-
<img
|
|
13
|
-
alt="Qwik Logo"
|
|
14
|
-
width={400}
|
|
15
|
-
src="https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F667ab6c2283d4c4d878fb9083aacc10f"
|
|
16
|
-
/>
|
|
17
|
-
</a>
|
|
18
|
-
</p>
|
|
19
|
-
<p>Congratulations Qwik is working!</p>
|
|
20
|
-
|
|
21
|
-
<p>Next steps:</p>
|
|
22
|
-
<ol>
|
|
23
|
-
<li>
|
|
24
|
-
Open dev-tools network tab and notice that no JavaScript was downloaded to render this
|
|
25
|
-
page. (Zero JavaScript no matter the size of your app.)
|
|
26
|
-
</li>
|
|
27
|
-
<li>
|
|
28
|
-
Try interacting with this component by changing{' '}
|
|
29
|
-
<input
|
|
30
|
-
value={state.name}
|
|
31
|
-
on:keyup={qHook<typeof MyApp>((props, state) => {
|
|
32
|
-
const event = useEvent<KeyboardEvent>();
|
|
33
|
-
const input = event.target as HTMLInputElement;
|
|
34
|
-
state.name = input.value;
|
|
35
|
-
})}
|
|
36
|
-
></input>
|
|
37
|
-
.
|
|
38
|
-
</li>
|
|
39
|
-
<li>
|
|
40
|
-
Observe that the binding changes: <code>Hello {state.name}!</code>
|
|
41
|
-
</li>
|
|
42
|
-
<li>
|
|
43
|
-
Notice that Qwik automatically lazily-loaded and hydrated the component upon interaction
|
|
44
|
-
without the developer having to code that behavior. (Lazy hydration is what gives even
|
|
45
|
-
large apps instant on behavior.)
|
|
46
|
-
</li>
|
|
47
|
-
<li>
|
|
48
|
-
Read the docs <a href="https://github.com/builderio/qwik">here</a>.
|
|
49
|
-
</li>
|
|
50
|
-
<li>Replace the content of this component with your code.</li>
|
|
51
|
-
<li>Build amazing web-sites with unbeatable startup performance.</li>
|
|
52
|
-
</ol>
|
|
53
|
-
<hr />
|
|
54
|
-
<p style={{ 'text-align': 'center' }}>
|
|
55
|
-
Made with ❤️ by{' '}
|
|
56
|
-
<a target="_blank" href="https://www.builder.io/">
|
|
57
|
-
Builder.io
|
|
58
|
-
</a>
|
|
59
|
-
</p>
|
|
60
|
-
</div>
|
|
61
|
-
);
|
|
62
|
-
}),
|
|
63
|
-
});
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { nodeResolve } from '@rollup/plugin-node-resolve';
|
|
2
|
-
import { qwikRollup } from '@builder.io/qwik/optimizer';
|
|
3
|
-
import { writeFile, mkdir } from "fs/promises";
|
|
4
|
-
import { dirname } from "path";
|
|
5
|
-
|
|
6
|
-
export default async function () {
|
|
7
|
-
return {
|
|
8
|
-
input: [
|
|
9
|
-
'src/index.server.tsx',
|
|
10
|
-
'src/my-app.tsx'
|
|
11
|
-
],
|
|
12
|
-
plugins: [
|
|
13
|
-
nodeResolve(),
|
|
14
|
-
qwikRollup({
|
|
15
|
-
symbolsOutput: (data) => {
|
|
16
|
-
outputJSON('./server/build/q-symbols.json', data);
|
|
17
|
-
},
|
|
18
|
-
})
|
|
19
|
-
],
|
|
20
|
-
output: [
|
|
21
|
-
{
|
|
22
|
-
chunkFileNames: 'q-[hash].js',
|
|
23
|
-
dir: 'public/build',
|
|
24
|
-
format: 'es',
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
dir: 'server/build',
|
|
28
|
-
format: 'cjs',
|
|
29
|
-
},
|
|
30
|
-
],
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
async function outputJSON(path, data) {
|
|
35
|
-
await mkdir(dirname(path), {recursive: true});
|
|
36
|
-
await writeFile(path, JSON.stringify(data, null, 2));
|
|
37
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { h, Fragment } from '@builder.io/qwik';
|
|
2
|
-
import { qComponent, qHook } from '@builder.io/qwik';
|
|
3
|
-
|
|
4
|
-
export const Header = qComponent<{}, { name: string }>({
|
|
5
|
-
onRender: qHook(() => {
|
|
6
|
-
return (
|
|
7
|
-
<p style={{ 'text-align': 'center' }}>
|
|
8
|
-
<a href="https://github.com/builderio/qwik">
|
|
9
|
-
<img
|
|
10
|
-
alt="Qwik Logo"
|
|
11
|
-
width={400}
|
|
12
|
-
src="https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F667ab6c2283d4c4d878fb9083aacc10f"
|
|
13
|
-
/>
|
|
14
|
-
</a>
|
|
15
|
-
</p>
|
|
16
|
-
);
|
|
17
|
-
}),
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
export const Footer = qComponent<{}, { name: string }>({
|
|
21
|
-
onRender: qHook(() => {
|
|
22
|
-
return (
|
|
23
|
-
<>
|
|
24
|
-
<hr />
|
|
25
|
-
<p style={{ 'text-align': 'center' }}>
|
|
26
|
-
Made with ❤️ by{' '}
|
|
27
|
-
<a target="_blank" href="https://www.builder.io/">
|
|
28
|
-
Builder.io
|
|
29
|
-
</a>
|
|
30
|
-
</p>
|
|
31
|
-
</>
|
|
32
|
-
);
|
|
33
|
-
}),
|
|
34
|
-
});
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { nodeResolve } from '@rollup/plugin-node-resolve';
|
|
2
|
-
import { qwikRollup } from '@builder.io/qwik/optimizer';
|
|
3
|
-
import { writeFile, mkdir } from "fs/promises";
|
|
4
|
-
import { dirname } from "path";
|
|
5
|
-
|
|
6
|
-
export default async function () {
|
|
7
|
-
return {
|
|
8
|
-
input: [
|
|
9
|
-
'src/index.server.tsx',
|
|
10
|
-
'src/my-app.tsx'
|
|
11
|
-
],
|
|
12
|
-
plugins: [
|
|
13
|
-
nodeResolve(),
|
|
14
|
-
qwikRollup({
|
|
15
|
-
symbolsOutput: (data) => {
|
|
16
|
-
outputJSON('./server/build/q-symbols.json', data);
|
|
17
|
-
},
|
|
18
|
-
})
|
|
19
|
-
],
|
|
20
|
-
output: [
|
|
21
|
-
{
|
|
22
|
-
chunkFileNames: 'q-[hash].js',
|
|
23
|
-
dir: 'public/build',
|
|
24
|
-
format: 'es',
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
dir: 'server/build',
|
|
28
|
-
format: 'cjs',
|
|
29
|
-
},
|
|
30
|
-
],
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
async function outputJSON(path, data) {
|
|
35
|
-
await mkdir(dirname(path), {recursive: true});
|
|
36
|
-
await writeFile(path, JSON.stringify(data, null, 2));
|
|
37
|
-
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { nodeResolve } from '@rollup/plugin-node-resolve';
|
|
2
|
-
import { qwikRollup } from '@builder.io/qwik/optimizer';
|
|
3
|
-
import { terser } from "rollup-plugin-terser";
|
|
4
|
-
import { writeFile, mkdir } from "fs/promises";
|
|
5
|
-
import { dirname } from "path";
|
|
6
|
-
|
|
7
|
-
export default async function () {
|
|
8
|
-
return {
|
|
9
|
-
input: [
|
|
10
|
-
'src/index.server.tsx',
|
|
11
|
-
'src/components.tsx'
|
|
12
|
-
],
|
|
13
|
-
plugins: [
|
|
14
|
-
nodeResolve(),
|
|
15
|
-
qwikRollup({
|
|
16
|
-
symbolsOutput: (data) => {
|
|
17
|
-
outputJSON('./server/build/q-symbols.json', data);
|
|
18
|
-
},
|
|
19
|
-
}),
|
|
20
|
-
terser(),
|
|
21
|
-
],
|
|
22
|
-
output: [
|
|
23
|
-
{
|
|
24
|
-
chunkFileNames: 'q-[hash].js',
|
|
25
|
-
dir: 'public/build',
|
|
26
|
-
format: 'es',
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
dir: 'server/build',
|
|
30
|
-
format: 'cjs',
|
|
31
|
-
},
|
|
32
|
-
],
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
async function outputJSON(path, data) {
|
|
37
|
-
await mkdir(dirname(path), {recursive: true});
|
|
38
|
-
await writeFile(path, JSON.stringify(data, null, 2));
|
|
39
|
-
}
|