create-qwik 0.0.4 → 0.0.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/README.md +3 -3
- package/index.js +64 -64
- package/package.json +1 -1
- package/starters/apps/starter/package.json +4 -4
- package/starters/apps/starter/rollup.config.js +14 -7
- package/starters/apps/starter/src/{index.server.qwik.tsx → index.server.tsx} +3 -3
- package/starters/apps/starter/src/{my-app.qwik.tsx → my-app.tsx} +0 -0
- package/starters/apps/starter-builder/package.json +4 -4
- package/starters/apps/starter-builder/rollup.config.js +14 -7
- package/starters/apps/starter-builder/src/{index.server.qwik.tsx → index.server.tsx} +3 -3
- package/starters/apps/starter-builder/src/{my-app.qwik.tsx → my-app.tsx} +0 -0
- package/starters/apps/starter-partytown/package.json +4 -4
- package/starters/apps/starter-partytown/rollup.config.js +14 -7
- package/starters/apps/starter-partytown/src/{index.server.qwik.tsx → index.server.tsx} +3 -3
- package/starters/apps/starter-partytown/src/{my-app.qwik.tsx → my-app.tsx} +0 -0
- package/starters/apps/todo/package.json +6 -4
- package/starters/apps/todo/rollup.config.js +16 -7
- package/starters/apps/todo/src/{components.qwik.tsx → components.tsx} +1 -1
- package/starters/apps/todo/src/{index.server.qwik.tsx → index.server.tsx} +6 -6
- package/starters/apps/todo/src/{state.qwik.ts → state.ts} +0 -0
- package/starters/apps/todo/tsconfig.json +1 -0
- package/starters/servers/cloudflare/package.json +19 -0
- package/starters/servers/cloudflare/rollup.config.server.js +29 -0
- package/starters/servers/cloudflare/src/index.cloudflare.tsx +82 -0
- package/starters/servers/cloudflare/workers-site/package.json +4 -0
- package/starters/servers/cloudflare/wrangler.toml +18 -0
- package/starters/servers/express/package.json +1 -1
- package/starters/servers/express/server/index.js +8 -15
package/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "qwik-
|
|
2
|
+
"name": "qwik-project-name",
|
|
3
3
|
"version": "0.0.1",
|
|
4
4
|
"description": "Blank starter app",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build": "npm run clean && rollup -c",
|
|
7
7
|
"clean": "rimraf */build/",
|
|
8
|
-
"start": "npm run clean && concurrently -c blue,green \"rollup -c --configDev --watch\" \"wait-on public/build && npm run serve\""
|
|
8
|
+
"start": "npm run clean && concurrently -c blue,green \"rollup -c --configDev --watch\" \"wait-on public/build && npm run serve\"",
|
|
9
|
+
"serve": "node server/index.js"
|
|
9
10
|
},
|
|
10
11
|
"devDependencies": {
|
|
11
|
-
"@builder.io/qwik": "
|
|
12
|
+
"@builder.io/qwik": "0.0.16-1",
|
|
12
13
|
"@rollup/plugin-node-resolve": "^13.0.6",
|
|
13
|
-
"@rollup/plugin-typescript": "^8.3.0",
|
|
14
14
|
"concurrently": "^6.4.0",
|
|
15
15
|
"rimraf": "^3.0.2",
|
|
16
16
|
"rollup": "^2.59.0",
|
|
@@ -1,25 +1,27 @@
|
|
|
1
1
|
import { nodeResolve } from '@rollup/plugin-node-resolve';
|
|
2
2
|
import { qwikRollup } from '@builder.io/qwik/optimizer';
|
|
3
|
-
import
|
|
3
|
+
import { writeFile, mkdir } from "fs/promises";
|
|
4
|
+
import { dirname } from "path";
|
|
4
5
|
|
|
5
6
|
export default async function () {
|
|
6
7
|
return {
|
|
7
8
|
input: [
|
|
8
|
-
'src/index.server.
|
|
9
|
-
'src/my-app.
|
|
9
|
+
'src/index.server.tsx',
|
|
10
|
+
'src/my-app.tsx'
|
|
10
11
|
],
|
|
11
12
|
plugins: [
|
|
12
13
|
nodeResolve(),
|
|
13
14
|
qwikRollup({
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
symbolsOutput: (data) => {
|
|
16
|
+
outputJSON('./server/build/q-symbols.json', data);
|
|
17
|
+
},
|
|
18
|
+
})
|
|
17
19
|
],
|
|
18
20
|
output: [
|
|
19
21
|
{
|
|
20
22
|
chunkFileNames: 'q-[hash].js',
|
|
21
23
|
dir: 'public/build',
|
|
22
|
-
format: 'es',
|
|
24
|
+
format: 'es',
|
|
23
25
|
},
|
|
24
26
|
{
|
|
25
27
|
dir: 'server/build',
|
|
@@ -28,3 +30,8 @@ export default async function () {
|
|
|
28
30
|
],
|
|
29
31
|
};
|
|
30
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
|
+
}
|
|
@@ -8,20 +8,20 @@
|
|
|
8
8
|
|
|
9
9
|
import { h } from '@builder.io/qwik';
|
|
10
10
|
import { renderToString, RenderToStringOptions, QwikLoader } from '@builder.io/qwik/server';
|
|
11
|
-
import { MyApp } from './my-app
|
|
11
|
+
import { MyApp } from './my-app';
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* Entry point for server-side pre-rendering.
|
|
15
15
|
*
|
|
16
16
|
* @returns a promise when all of the rendering is completed.
|
|
17
17
|
*/
|
|
18
|
-
export
|
|
18
|
+
export function renderApp(opts: RenderToStringOptions) {
|
|
19
19
|
return renderToString(
|
|
20
20
|
<html>
|
|
21
21
|
<head>
|
|
22
22
|
<title>Qwik Blank App</title>
|
|
23
23
|
</head>
|
|
24
|
-
<body>
|
|
24
|
+
<body q:base="/build/">
|
|
25
25
|
<MyApp />
|
|
26
26
|
<QwikLoader debug={opts.debug} />
|
|
27
27
|
</body>
|
|
File without changes
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "qwik-
|
|
2
|
+
"name": "qwik-project-name",
|
|
3
3
|
"version": "0.0.1",
|
|
4
4
|
"description": "Blank builder starter app",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build": "npm run clean && rollup -c",
|
|
7
|
-
"
|
|
7
|
+
"serve": "echo \"server not setup\"",
|
|
8
|
+
"clean": "rimraf build",
|
|
8
9
|
"start": "npm run clean && concurrently -c blue,green \"rollup -c --configDev --watch\" \"wait-on public/build && npm run serve\""
|
|
9
10
|
},
|
|
10
11
|
"devDependencies": {
|
|
11
|
-
"@builder.io/qwik": "
|
|
12
|
+
"@builder.io/qwik": "0.0.16-1",
|
|
12
13
|
"@rollup/plugin-node-resolve": "^13.0.6",
|
|
13
|
-
"@rollup/plugin-typescript": "^8.3.0",
|
|
14
14
|
"concurrently": "^6.4.0",
|
|
15
15
|
"rimraf": "^3.0.2",
|
|
16
16
|
"rollup": "^2.59.0",
|
|
@@ -1,25 +1,27 @@
|
|
|
1
1
|
import { nodeResolve } from '@rollup/plugin-node-resolve';
|
|
2
2
|
import { qwikRollup } from '@builder.io/qwik/optimizer';
|
|
3
|
-
import
|
|
3
|
+
import { writeFile, mkdir } from "fs/promises";
|
|
4
|
+
import { dirname } from "path";
|
|
4
5
|
|
|
5
6
|
export default async function () {
|
|
6
7
|
return {
|
|
7
8
|
input: [
|
|
8
|
-
'src/index.server.
|
|
9
|
-
'src/my-app.
|
|
9
|
+
'src/index.server.tsx',
|
|
10
|
+
'src/my-app.tsx'
|
|
10
11
|
],
|
|
11
12
|
plugins: [
|
|
12
13
|
nodeResolve(),
|
|
13
14
|
qwikRollup({
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
symbolsOutput: (data) => {
|
|
16
|
+
outputJSON('./server/build/q-symbols.json', data);
|
|
17
|
+
},
|
|
18
|
+
})
|
|
17
19
|
],
|
|
18
20
|
output: [
|
|
19
21
|
{
|
|
20
22
|
chunkFileNames: 'q-[hash].js',
|
|
21
23
|
dir: 'public/build',
|
|
22
|
-
format: 'es',
|
|
24
|
+
format: 'es',
|
|
23
25
|
},
|
|
24
26
|
{
|
|
25
27
|
dir: 'server/build',
|
|
@@ -28,3 +30,8 @@ export default async function () {
|
|
|
28
30
|
],
|
|
29
31
|
};
|
|
30
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
|
+
}
|
|
@@ -8,20 +8,20 @@
|
|
|
8
8
|
|
|
9
9
|
import { h } from '@builder.io/qwik';
|
|
10
10
|
import { renderToString, RenderToStringOptions, QwikLoader } from '@builder.io/qwik/server';
|
|
11
|
-
import { Footer, Header } from './my-app
|
|
11
|
+
import { Footer, Header } from './my-app';
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* Entry point for server-side pre-rendering.
|
|
15
15
|
*
|
|
16
16
|
* @returns a promise when all of the rendering is completed.
|
|
17
17
|
*/
|
|
18
|
-
export
|
|
18
|
+
export function renderApp(opts: RenderToStringOptions) {
|
|
19
19
|
return renderToString(
|
|
20
20
|
<html>
|
|
21
21
|
<head>
|
|
22
22
|
<title>Qwik Blank App</title>
|
|
23
23
|
</head>
|
|
24
|
-
<body>
|
|
24
|
+
<body q:base="/build/">
|
|
25
25
|
<Header />
|
|
26
26
|
<div id="my-content"></div>
|
|
27
27
|
<Footer />
|
|
File without changes
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "qwik-
|
|
2
|
+
"name": "qwik-project-name",
|
|
3
3
|
"version": "0.0.1",
|
|
4
4
|
"description": "Blank starter app with Partytown",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build": "npm run clean && rollup -c",
|
|
7
7
|
"clean": "rimraf */build/",
|
|
8
|
-
"start": "npm run clean && concurrently -c blue,green \"rollup -c --configDev --watch\" \"wait-on public/build && npm run serve\""
|
|
8
|
+
"start": "npm run clean && concurrently -c blue,green \"rollup -c --configDev --watch\" \"wait-on public/build && npm run serve\"",
|
|
9
|
+
"serve": "echo \"server not setup\""
|
|
9
10
|
},
|
|
10
11
|
"devDependencies": {
|
|
11
|
-
"@builder.io/qwik": "
|
|
12
|
+
"@builder.io/qwik": "0.0.16-1",
|
|
12
13
|
"@rollup/plugin-node-resolve": "^13.0.6",
|
|
13
|
-
"@rollup/plugin-typescript": "^8.3.0",
|
|
14
14
|
"concurrently": "^6.4.0",
|
|
15
15
|
"rimraf": "^3.0.2",
|
|
16
16
|
"rollup": "^2.59.0",
|
|
@@ -1,25 +1,27 @@
|
|
|
1
1
|
import { nodeResolve } from '@rollup/plugin-node-resolve';
|
|
2
2
|
import { qwikRollup } from '@builder.io/qwik/optimizer';
|
|
3
|
-
import
|
|
3
|
+
import { writeFile, mkdir } from "fs/promises";
|
|
4
|
+
import { dirname } from "path";
|
|
4
5
|
|
|
5
6
|
export default async function () {
|
|
6
7
|
return {
|
|
7
8
|
input: [
|
|
8
|
-
'src/index.server.
|
|
9
|
-
'src/my-app.
|
|
9
|
+
'src/index.server.tsx',
|
|
10
|
+
'src/my-app.tsx'
|
|
10
11
|
],
|
|
11
12
|
plugins: [
|
|
12
13
|
nodeResolve(),
|
|
13
14
|
qwikRollup({
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
symbolsOutput: (data) => {
|
|
16
|
+
outputJSON('./server/build/q-symbols.json', data);
|
|
17
|
+
},
|
|
18
|
+
})
|
|
17
19
|
],
|
|
18
20
|
output: [
|
|
19
21
|
{
|
|
20
22
|
chunkFileNames: 'q-[hash].js',
|
|
21
23
|
dir: 'public/build',
|
|
22
|
-
format: 'es',
|
|
24
|
+
format: 'es',
|
|
23
25
|
},
|
|
24
26
|
{
|
|
25
27
|
dir: 'server/build',
|
|
@@ -28,3 +30,8 @@ export default async function () {
|
|
|
28
30
|
],
|
|
29
31
|
};
|
|
30
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
|
+
}
|
|
@@ -8,21 +8,21 @@
|
|
|
8
8
|
|
|
9
9
|
import { h } from '@builder.io/qwik';
|
|
10
10
|
import { renderToString, RenderToStringOptions, QwikLoader } from '@builder.io/qwik/server';
|
|
11
|
-
import { MyApp } from './my-app
|
|
11
|
+
import { MyApp } from './my-app';
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* Entry point for server-side pre-rendering.
|
|
15
15
|
*
|
|
16
16
|
* @returns a promise when all of the rendering is completed.
|
|
17
17
|
*/
|
|
18
|
-
export
|
|
18
|
+
export function renderApp(opts: RenderToStringOptions) {
|
|
19
19
|
return renderToString(
|
|
20
20
|
<html>
|
|
21
21
|
<head>
|
|
22
22
|
<title>Qwik + Partytown Blank App</title>
|
|
23
23
|
<script defer async src="~partytown/debug/partytown.js"></script>
|
|
24
24
|
</head>
|
|
25
|
-
<body>
|
|
25
|
+
<body q:base="/build/">
|
|
26
26
|
<MyApp />
|
|
27
27
|
<script type="text/partytown">
|
|
28
28
|
({partyTownExampleWhichBlocksMainThreadForOneSecond.toString()})()
|
|
File without changes
|
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "qwik-
|
|
2
|
+
"name": "qwik-project-name",
|
|
3
3
|
"version": "0.0.1",
|
|
4
4
|
"description": "Classic Todo MVC app",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build": "npm run clean && rollup -c",
|
|
7
7
|
"clean": "rimraf */build/",
|
|
8
|
+
"serve": "echo 'missing server'",
|
|
8
9
|
"start": "npm run clean && concurrently -c blue,green \"rollup -c --configDev --watch\" \"wait-on public/build && npm run serve\""
|
|
9
10
|
},
|
|
10
11
|
"devDependencies": {
|
|
11
|
-
"@builder.io/qwik": "
|
|
12
|
+
"@builder.io/qwik": "0.0.16-1",
|
|
12
13
|
"@rollup/plugin-node-resolve": "^13.0.6",
|
|
13
|
-
"@rollup/plugin-typescript": "^8.3.0",
|
|
14
14
|
"concurrently": "^6.4.0",
|
|
15
15
|
"rimraf": "^3.0.2",
|
|
16
16
|
"rollup": "^2.59.0",
|
|
17
|
-
"
|
|
17
|
+
"rollup-plugin-terser": "^7.0.2",
|
|
18
|
+
"typescript": "^4.5.2",
|
|
19
|
+
"wait-on": "^6.0.0"
|
|
18
20
|
},
|
|
19
21
|
"author": "Builder.io Team",
|
|
20
22
|
"license": "MIT",
|
|
@@ -1,25 +1,29 @@
|
|
|
1
1
|
import { nodeResolve } from '@rollup/plugin-node-resolve';
|
|
2
2
|
import { qwikRollup } from '@builder.io/qwik/optimizer';
|
|
3
|
-
import
|
|
3
|
+
import { terser } from "rollup-plugin-terser";
|
|
4
|
+
import { writeFile, mkdir } from "fs/promises";
|
|
5
|
+
import { dirname } from "path";
|
|
4
6
|
|
|
5
7
|
export default async function () {
|
|
6
8
|
return {
|
|
7
9
|
input: [
|
|
8
|
-
'src/index.server.
|
|
9
|
-
'src/components.
|
|
10
|
+
'src/index.server.tsx',
|
|
11
|
+
'src/components.tsx'
|
|
10
12
|
],
|
|
11
13
|
plugins: [
|
|
12
14
|
nodeResolve(),
|
|
13
15
|
qwikRollup({
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
symbolsOutput: (data) => {
|
|
17
|
+
outputJSON('./server/build/q-symbols.json', data);
|
|
18
|
+
},
|
|
19
|
+
}),
|
|
20
|
+
terser(),
|
|
17
21
|
],
|
|
18
22
|
output: [
|
|
19
23
|
{
|
|
20
24
|
chunkFileNames: 'q-[hash].js',
|
|
21
25
|
dir: 'public/build',
|
|
22
|
-
format: 'es',
|
|
26
|
+
format: 'es',
|
|
23
27
|
},
|
|
24
28
|
{
|
|
25
29
|
dir: 'server/build',
|
|
@@ -28,3 +32,8 @@ export default async function () {
|
|
|
28
32
|
],
|
|
29
33
|
};
|
|
30
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
|
+
}
|
|
@@ -8,15 +8,15 @@
|
|
|
8
8
|
|
|
9
9
|
import { h } from '@builder.io/qwik';
|
|
10
10
|
import { renderToString, RenderToStringOptions, QwikLoader } from '@builder.io/qwik/server';
|
|
11
|
-
import { ToDoApp } from './components
|
|
12
|
-
import type { Todos } from './state
|
|
11
|
+
import { ToDoApp } from './components';
|
|
12
|
+
import type { Todos } from './state';
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Entry point for server-side pre-rendering.
|
|
16
16
|
*
|
|
17
17
|
* @returns a promise when all of the rendering is completed.
|
|
18
18
|
*/
|
|
19
|
-
export
|
|
19
|
+
export function renderApp(opts: RenderToStringOptions) {
|
|
20
20
|
const todos: Todos = {
|
|
21
21
|
filter: 'all',
|
|
22
22
|
items: [
|
|
@@ -30,10 +30,10 @@ export default function serverRender(opts: RenderToStringOptions) {
|
|
|
30
30
|
<html>
|
|
31
31
|
<head>
|
|
32
32
|
<title>Qwik Demo: ToDo</title>
|
|
33
|
-
<link rel="stylesheet" href="base.css" />
|
|
34
|
-
<link rel="stylesheet" href="index.css" />
|
|
33
|
+
<link rel="stylesheet" href="/base.css" />
|
|
34
|
+
<link rel="stylesheet" href="/index.css" />
|
|
35
35
|
</head>
|
|
36
|
-
<body>
|
|
36
|
+
<body q:base="/build/">
|
|
37
37
|
<ToDoApp todos={todos} />
|
|
38
38
|
<QwikLoader debug={opts.debug} />
|
|
39
39
|
</body>
|
|
File without changes
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "qwik-project-name",
|
|
3
|
+
"description": "Cloudflare Workers (serverless)",
|
|
4
|
+
"priority": -1,
|
|
5
|
+
"scripts": {
|
|
6
|
+
"build": "npm run clean && npm run build.client && npm run build.server",
|
|
7
|
+
"build.client": "rollup -c",
|
|
8
|
+
"build.server": "rollup -c rollup.config.server.js",
|
|
9
|
+
"deploy": "wrangler publish",
|
|
10
|
+
"start": "wrangler dev"
|
|
11
|
+
},
|
|
12
|
+
"devDependencies": {
|
|
13
|
+
"@cloudflare/kv-asset-handler": "^0.2.0",
|
|
14
|
+
"@cloudflare/workers-types": "^3.2.0",
|
|
15
|
+
"@types/service-worker-mock": "^2.0.1",
|
|
16
|
+
"@rollup/plugin-commonjs": "^21.0.1",
|
|
17
|
+
"@rollup/plugin-json": "^4.1.0"
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { nodeResolve } from '@rollup/plugin-node-resolve';
|
|
2
|
+
import { qwikRollup } from '@builder.io/qwik/optimizer';
|
|
3
|
+
import jsonPlugin from '@rollup/plugin-json';
|
|
4
|
+
import commonjs from '@rollup/plugin-commonjs';
|
|
5
|
+
|
|
6
|
+
export default async function () {
|
|
7
|
+
return {
|
|
8
|
+
input: {
|
|
9
|
+
index: 'src/index.cloudflare.tsx',
|
|
10
|
+
},
|
|
11
|
+
inlineDynamicImports: true,
|
|
12
|
+
plugins: [
|
|
13
|
+
nodeResolve(),
|
|
14
|
+
jsonPlugin(),
|
|
15
|
+
qwikRollup({
|
|
16
|
+
entryStrategy: {
|
|
17
|
+
type: 'single',
|
|
18
|
+
},
|
|
19
|
+
}),
|
|
20
|
+
commonjs(),
|
|
21
|
+
],
|
|
22
|
+
output: [
|
|
23
|
+
{
|
|
24
|
+
dir: 'workers-site/build',
|
|
25
|
+
format: 'commonjs',
|
|
26
|
+
},
|
|
27
|
+
],
|
|
28
|
+
};
|
|
29
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { renderApp } from './index.server';
|
|
2
|
+
import { getAssetFromKV } from '@cloudflare/kv-asset-handler';
|
|
3
|
+
import symbols from '../server/build/q-symbols.json';
|
|
4
|
+
|
|
5
|
+
const CACHING = true;
|
|
6
|
+
|
|
7
|
+
addEventListener('fetch', (event: any) => {
|
|
8
|
+
event.respondWith(handleRequest(event));
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
async function handleRequest(event: any) {
|
|
12
|
+
const request = event.request;
|
|
13
|
+
const url = new URL(request.url);
|
|
14
|
+
|
|
15
|
+
if (/\.\w+$/.test(url.pathname)) {
|
|
16
|
+
// If path ends with extension, serve static file
|
|
17
|
+
return handleStaticAssets(event, url);
|
|
18
|
+
} else {
|
|
19
|
+
// Otherwise Server side render qwik
|
|
20
|
+
return handleQwik(event, request);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
async function handleQwik(event: any, request: Request) {
|
|
25
|
+
const cache = await caches.open('custom:qwik');
|
|
26
|
+
if (CACHING) {
|
|
27
|
+
const cachedResponse = await cache.match(request);
|
|
28
|
+
if (cachedResponse) {
|
|
29
|
+
return cachedResponse;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const ssrResult = await renderApp({
|
|
34
|
+
url: new URL(request.url),
|
|
35
|
+
symbols,
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
const response = new Response(ssrResult.html, {
|
|
39
|
+
headers: {
|
|
40
|
+
'Content-Type': 'text/html',
|
|
41
|
+
'Cache-Control': `max-age=${60}`,
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
if (CACHING) {
|
|
45
|
+
event.waitUntil(cache.put(request, response.clone()));
|
|
46
|
+
}
|
|
47
|
+
return response;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
async function handleStaticAssets(event: any, url: URL) {
|
|
51
|
+
try {
|
|
52
|
+
// Server static file
|
|
53
|
+
const options = CACHING
|
|
54
|
+
? {
|
|
55
|
+
cacheControl(req: Request) {
|
|
56
|
+
const inmmutable = /\/q-\w+\.\w+$/.test(req.url);
|
|
57
|
+
if (inmmutable) {
|
|
58
|
+
return {
|
|
59
|
+
browserTTL: 31536000,
|
|
60
|
+
edgeTTL: 31536000,
|
|
61
|
+
bypassCache: false,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
browserTTL: 60 * 60,
|
|
66
|
+
edgeTTL: 60,
|
|
67
|
+
bypassCache: false,
|
|
68
|
+
};
|
|
69
|
+
},
|
|
70
|
+
}
|
|
71
|
+
: undefined;
|
|
72
|
+
|
|
73
|
+
const staticResponse = await getAssetFromKV(event, options);
|
|
74
|
+
return staticResponse;
|
|
75
|
+
} catch (e) {
|
|
76
|
+
// Handle 404
|
|
77
|
+
return new Response(`"${url.pathname}" not found`, {
|
|
78
|
+
status: 404,
|
|
79
|
+
statusText: 'not found',
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
name = "qwik-project-name"
|
|
2
|
+
type = "javascript"
|
|
3
|
+
|
|
4
|
+
account_id = ""
|
|
5
|
+
workers_dev = true
|
|
6
|
+
route = ""
|
|
7
|
+
zone_id = ""
|
|
8
|
+
compatibility_date = "2021-12-13"
|
|
9
|
+
|
|
10
|
+
[build]
|
|
11
|
+
command = "npm run build"
|
|
12
|
+
|
|
13
|
+
[build.upload]
|
|
14
|
+
format = "service-worker"
|
|
15
|
+
|
|
16
|
+
[site]
|
|
17
|
+
bucket = "public" # directory with your static assets
|
|
18
|
+
entry-point = "workers-site" # JS folder serving your assets
|
|
@@ -1,21 +1,15 @@
|
|
|
1
1
|
const express = require('express');
|
|
2
|
-
const path = require('path');
|
|
3
|
-
const qwik = require('@builder.io/qwik/server');
|
|
4
2
|
const { join } = require('path');
|
|
5
3
|
const { existsSync } = require('fs');
|
|
6
|
-
|
|
4
|
+
const { renderApp } = require('./build/index.server.js');
|
|
5
|
+
const symbols = require('./build/q-symbols.json');
|
|
7
6
|
const PORT = process.env.PORT || 8080;
|
|
8
7
|
|
|
9
8
|
async function startServer() {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
async function indexHandler(req, res) {
|
|
17
|
-
const result = await render({
|
|
18
|
-
url: req.url,
|
|
9
|
+
async function handleQwik(req, res) {
|
|
10
|
+
const result = await renderApp({
|
|
11
|
+
symbols,
|
|
12
|
+
url: new URL(req.url),
|
|
19
13
|
debug: true,
|
|
20
14
|
});
|
|
21
15
|
res.send(result.html);
|
|
@@ -23,9 +17,7 @@ async function startServer() {
|
|
|
23
17
|
|
|
24
18
|
const app = express();
|
|
25
19
|
const publicDir = join(__dirname, '..', 'public');
|
|
26
|
-
const buildDir = join(__dirname, '..', 'public', 'build');
|
|
27
20
|
app.use(express.static(publicDir));
|
|
28
|
-
app.use(express.static(buildDir));
|
|
29
21
|
|
|
30
22
|
// Optionally server Partytown if found.
|
|
31
23
|
const partytownDir = join(__dirname, '..', 'node_modules', '@builder.io', 'partytown', 'lib');
|
|
@@ -33,7 +25,8 @@ async function startServer() {
|
|
|
33
25
|
app.use('/~partytown', express.static(partytownDir));
|
|
34
26
|
}
|
|
35
27
|
|
|
36
|
-
app.get('/',
|
|
28
|
+
app.get('/', handleQwik);
|
|
29
|
+
|
|
37
30
|
app.listen(PORT, () => {
|
|
38
31
|
// eslint-disable-next-line no-console
|
|
39
32
|
console.log(`http://localhost:${PORT}/`);
|