Update wrangler (#1)

* update wrangler and fix default template styles

* Add webpack build stage to deal with current limitations of workers platform

* fix template compilation command example in the readme
This commit is contained in:
Gonçalo Valério 2023-06-30 21:04:35 +01:00 committed by GitHub
parent 7473334a98
commit 4e5200bb40
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 6399 additions and 438 deletions

1
.gitignore vendored
View File

@ -9,3 +9,4 @@ worker/
node_modules/
.cargo-ok
wrangler.toml
.wrangler

View File

@ -15,14 +15,16 @@ This ends up being specially useful for communities, in order to follow the work
# How to deploy
First you need to have [wrangler](https://github.com/cloudflare/wrangler) correctly setup on your machine. Then:
1. Clone this repository
2. Create a `wrangler.toml` file based on the existing `wrangler.toml.example`
3. Create KV namespaces and add their ids to the `kv_namespaces` setting on `wrangler.toml`
4. Add your `account_id` and customize all the `vars` in `wrangler.toml`. `FEEDS` should be
2. Install the project dependencies: `npm install`
3. Create a `wrangler.toml` file based on the existing `wrangler.toml.example`
4. Create KV namespaces and add their ids to the `kv_namespaces` setting on `wrangler.toml`
5. Add your `account_id` and customize all the `vars` in `wrangler.toml`. `FEEDS` should be
a string of coma separated urls, to each of the RSS/ATOM sources that will be part of your planet.
5. Run `wrangler publish`
6. Build the worker bundle: `npm run build`
7. Deploy your new worker: `npm run deploy`
**Note:** For the last step you might need to set the `CLOUDFLARE_API_TOKEN` environment variable.
## Configuration variables
@ -35,10 +37,8 @@ First you need to have [wrangler](https://github.com/cloudflare/wrangler) correc
## Customize the generated HTML
Each community has its own identity, so you should be able to easily customize the look and feel
of the generated page. To do so, before publishing you can edit the `templates/list_posts.handlebars` file.
of the generated page. To do so, before publishing you can edit the `templates/default.handlebars` file.
After you should "precompile" that file using the following command:
> \$ handlebars templates/list_posts.handlebars -f templates/list_posts.precompiled.js -c handlebars/runtime
**Note:** You need to have handlebars installed "globally" for this step.
> \$ npm run template -- templates/default.handlebars -f templates/default.precompiled.js

View File

@ -1,7 +1,7 @@
import Parser from 'rss-parser'
import { Feed } from 'feed'
import Handlebars from 'handlebars/runtime'
import template from './templates/list_posts.precompiled'
import template from './templates/default.precompiled'
addEventListener('scheduled', event => {
event.waitUntil(handleScheduled(event))
@ -166,7 +166,7 @@ function createFeed(items) {
*/
function createHTML(items, sources) {
console.log(`[createHTML] building the HTML document`)
let template = Handlebars.templates['list_posts']
let template = Handlebars.templates['default']
return template({
items: items,
sources: sources,

6334
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -3,19 +3,26 @@
"name": "worker-planet",
"version": "1.0.0",
"description": "Generate a single feed of content from multiple RSS/Atom sources. Runs on Cloudflare Workers.",
"main": "index.js",
"main": "./index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"format": "prettier --write '**/*.{js,css,json,md}'"
"format": "prettier --write '**/*.{js,css,json,md}' '!**/worker/*' '!**/templates/*'",
"template": "handlebars -c handlebars/runtime",
"build": "webpack",
"dev": "wrangler dev",
"deploy": "wrangler deploy"
},
"author": "Gonçalo Valério <gon@ovalerio.net>",
"license": "AGPL-3.0",
"devDependencies": {
"prettier": "^1.18.2"
"prettier": "^1.18.2",
"webpack": "^4.46.0",
"webpack-cli": "^4.10.0",
"wrangler": "^3.1.1",
"wranglerjs-compat-webpack-plugin": "^0.0.6"
},
"dependencies": {
"feed": "^4.2.2",
"handlebars": "^4.7.7",
"rss-parser": "^3.12.0"
"rss-parser": "^3.13.0"
}
}

View File

@ -8,7 +8,7 @@
<title>{{page_title}}</title>
<meta property="og:title" content="{{page_title}}" />
<meta property="og:description" content="{{page_description}}" />
<meta http-equiv="Content-Security-Policy" content="script-src https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/js/bootstrap.bundle.min.js; style-src https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css https://cdn.jsdelivr.net/npm/bootstrap-icons@1.5.0/font/bootstrap-icons.css 'sha256-Rlrl8UtcuZXDdr9KU9SZlhcRnb8Epry8Jgy1xIoCOkg=';">
<meta http-equiv="Content-Security-Policy" content="script-src https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/js/bootstrap.bundle.min.js; style-src https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css https://cdn.jsdelivr.net/npm/bootstrap-icons@1.5.0/font/bootstrap-icons.css 'sha256-G3Hryz5a3r//doprn3mQdVn71SMV/Wb1C6hMehrBGnk=';" />
<link rel="alternate" type="application/rss+xml" title="Planet RSS feed" href="/rss" />
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x" crossorigin="anonymous" />
@ -16,15 +16,18 @@
integrity="sha256-PDJQdTN7dolQWDASIoBVrjkuOEaI137FI15sqI3Oxu8=" crossorigin="anonymous" />
<style>
img {
width: 100% !important;
max-width:600px !important;
height: auto;
width: 100% !important;
max-width:100% !important;
height: auto;
}
code {
display: block;
white-space: pre-wrap;
overflow-wrap: break-word;
}
video {
max-width: 100%;
}
</style>
</head>

View File

@ -0,0 +1,59 @@
var Handlebars = require("handlebars/runtime"); var template = Handlebars.template, templates = Handlebars.templates = Handlebars.templates || {};
templates['default'] = template({"1":function(container,depth0,helpers,partials,data) {
var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
return parent[propertyName];
}
return undefined
};
return " <div class=\"row p-2\">\n <article>\n <div class=\"card\">\n <div class=\"card-body\">\n <h2 class=\"card-title\"><a href=\""
+ alias4(((helper = (helper = lookupProperty(helpers,"link") || (depth0 != null ? lookupProperty(depth0,"link") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"link","hash":{},"data":data,"loc":{"start":{"line":64,"column":44},"end":{"line":64,"column":52}}}) : helper)))
+ "\">"
+ alias4(((helper = (helper = lookupProperty(helpers,"title") || (depth0 != null ? lookupProperty(depth0,"title") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"title","hash":{},"data":data,"loc":{"start":{"line":64,"column":54},"end":{"line":64,"column":63}}}) : helper)))
+ "</a></h2>\n <p class=\"card-subtitle mb-2 text-muted\">\n <small>Date: "
+ alias4(((helper = (helper = lookupProperty(helpers,"pubDate") || (depth0 != null ? lookupProperty(depth0,"pubDate") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"pubDate","hash":{},"data":data,"loc":{"start":{"line":66,"column":27},"end":{"line":66,"column":38}}}) : helper)))
+ "</small><br>\n <small>Source: <a href=\""
+ alias4(((helper = (helper = lookupProperty(helpers,"source_link") || (depth0 != null ? lookupProperty(depth0,"source_link") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"source_link","hash":{},"data":data,"loc":{"start":{"line":67,"column":38},"end":{"line":67,"column":53}}}) : helper)))
+ "\">"
+ alias4(((helper = (helper = lookupProperty(helpers,"source_title") || (depth0 != null ? lookupProperty(depth0,"source_title") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"source_title","hash":{},"data":data,"loc":{"start":{"line":67,"column":55},"end":{"line":67,"column":71}}}) : helper)))
+ "</a></small>\n </p>\n\n "
+ ((stack1 = ((helper = (helper = lookupProperty(helpers,"content") || (depth0 != null ? lookupProperty(depth0,"content") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"content","hash":{},"data":data,"loc":{"start":{"line":70,"column":12},"end":{"line":70,"column":25}}}) : helper))) != null ? stack1 : "")
+ "\n </div>\n </div>\n </article>\n </div>\n";
},"3":function(container,depth0,helpers,partials,data) {
var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
return parent[propertyName];
}
return undefined
};
return " <li><a href=\""
+ alias4(((helper = (helper = lookupProperty(helpers,"link") || (depth0 != null ? lookupProperty(depth0,"link") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"link","hash":{},"data":data,"loc":{"start":{"line":96,"column":23},"end":{"line":96,"column":31}}}) : helper)))
+ "\">"
+ alias4(((helper = (helper = lookupProperty(helpers,"name") || (depth0 != null ? lookupProperty(depth0,"name") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"name","hash":{},"data":data,"loc":{"start":{"line":96,"column":33},"end":{"line":96,"column":41}}}) : helper)))
+ "</a></li>\n";
},"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) {
var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
return parent[propertyName];
}
return undefined
};
return "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n <meta charset=\"UTF-8\">\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>"
+ alias4(((helper = (helper = lookupProperty(helpers,"page_title") || (depth0 != null ? lookupProperty(depth0,"page_title") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"page_title","hash":{},"data":data,"loc":{"start":{"line":8,"column":9},"end":{"line":8,"column":23}}}) : helper)))
+ "</title>\n <meta property=\"og:title\" content=\""
+ alias4(((helper = (helper = lookupProperty(helpers,"page_title") || (depth0 != null ? lookupProperty(depth0,"page_title") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"page_title","hash":{},"data":data,"loc":{"start":{"line":9,"column":37},"end":{"line":9,"column":51}}}) : helper)))
+ "\" />\n <meta property=\"og:description\" content=\""
+ alias4(((helper = (helper = lookupProperty(helpers,"page_description") || (depth0 != null ? lookupProperty(depth0,"page_description") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"page_description","hash":{},"data":data,"loc":{"start":{"line":10,"column":43},"end":{"line":10,"column":63}}}) : helper)))
+ "\" />\n <meta http-equiv=\"Content-Security-Policy\" content=\"script-src https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/js/bootstrap.bundle.min.js; style-src https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css https://cdn.jsdelivr.net/npm/bootstrap-icons@1.5.0/font/bootstrap-icons.css 'sha256-G3Hryz5a3r//doprn3mQdVn71SMV/Wb1C6hMehrBGnk=';\" />\n <link rel=\"alternate\" type=\"application/rss+xml\" title=\"Planet RSS feed\" href=\"/rss\" />\n <link href=\"https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css\" rel=\"stylesheet\"\n integrity=\"sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x\" crossorigin=\"anonymous\" />\n <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/bootstrap-icons@1.5.0/font/bootstrap-icons.css\"\n integrity=\"sha256-PDJQdTN7dolQWDASIoBVrjkuOEaI137FI15sqI3Oxu8=\" crossorigin=\"anonymous\" />\n <style>\n img {\n width: 100% !important;\n max-width:100% !important;\n height: auto;\n }\n code {\n display: block;\n white-space: pre-wrap;\n overflow-wrap: break-word;\n }\n video {\n max-width: 100%;\n }\n </style>\n</head>\n\n<body>\n <nav class=\"navbar navbar-expand-lg navbar-light bg-light\">\n <div class=\"container-fluid\">\n <a class=\"navbar-brand\" href=\"#\">"
+ alias4(((helper = (helper = lookupProperty(helpers,"page_title") || (depth0 != null ? lookupProperty(depth0,"page_title") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"page_title","hash":{},"data":data,"loc":{"start":{"line":37,"column":39},"end":{"line":37,"column":53}}}) : helper)))
+ "</a>\n <ul class=\"navbar-nav ms-auto\">\n <li class=\"nav-item\">\n <a class=\"nav-link active\" aria-current=\"page\" href=\"/rss\">\n <i class=\"bi bi-rss\" role=\"img\" aria-label=\"RSS\"></i> RSS Feed\n </a>\n </li>\n <li class=\"nav-item\">\n <a class=\"nav-link active\" aria-current=\"page\" href=\"https://github.com/dethos/worker-planet\">\n <i class=\"bi bi-github\" role=\"img\" aria-label=\"GitHub\"></i> Source Code\n </a>\n </li>\n <li class=\"nav-item\">\n <a class=\"nav-link active\" aria-current=\"page\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#aboutPanel\" aria-controls=\"offcanvasRight\" href=\"#\">\n <i class=\"bi bi-patch-question\" role=\"img\" aria-label=\"About\"></i> About\n </a>\n </li>\n </ul>\n </div>\n </nav>\n\n <main class=\"container d-grid\">\n"
+ ((stack1 = lookupProperty(helpers,"each").call(alias1,(depth0 != null ? lookupProperty(depth0,"items") : depth0),{"name":"each","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":59,"column":4},"end":{"line":75,"column":13}}})) != null ? stack1 : "")
+ " </main>\n <footer class=\"footer mt-auto py-3 bg-light\">\n <div class=\"container-fluid\">\n <p class=\"text-muted\">\n <span>All rights belong to the original authors. Powered by <a href=\"https://github.com/dethos/worker-planet\">worker-planet</a>.</span>\n <span class=\"float-end\"><a href=\"#\">Back to top</a></span>\n </p>\n </div>\n </footer>\n <div class=\"offcanvas offcanvas-end\" tabindex=\"-1\" id=\"aboutPanel\" aria-labelledby=\"aboutLabel\">\n <div class=\"offcanvas-header\">\n <h4 id=\"aboutLabel\">About</h4>\n <button type=\"button\" class=\"btn-close text-reset\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\"></button>\n </div>\n <div class=\"offcanvas-body\">\n <p>"
+ alias4(((helper = (helper = lookupProperty(helpers,"page_description") || (depth0 != null ? lookupProperty(depth0,"page_description") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"page_description","hash":{},"data":data,"loc":{"start":{"line":91,"column":9},"end":{"line":91,"column":29}}}) : helper)))
+ "</p>\n\n <h5>Sources</h5>\n <ul>\n"
+ ((stack1 = lookupProperty(helpers,"each").call(alias1,(depth0 != null ? lookupProperty(depth0,"sources") : depth0),{"name":"each","hash":{},"fn":container.program(3, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":95,"column":8},"end":{"line":97,"column":17}}})) != null ? stack1 : "")
+ " </ul>\n </div>\n </div>\n <script src=\"https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/js/bootstrap.bundle.min.js\"\n integrity=\"sha384-gtEjrD/SeCtmISkJkNUaaKMoLD0//ElJ19smozuHV6z3Iehds+3Ulb9Bn9Plx0x4\" crossorigin=\"anonymous\"></script>\n</body>\n\n</html>\n";
},"useData":true});

View File

@ -1,376 +0,0 @@
var Handlebars = require('handlebars/runtime')
var template = Handlebars.template,
templates = (Handlebars.templates = Handlebars.templates || {})
templates['list_posts'] = template({
'1': function(container, depth0, helpers, partials, data) {
var stack1,
helper,
alias1 = depth0 != null ? depth0 : container.nullContext || {},
alias2 = container.hooks.helperMissing,
alias3 = 'function',
alias4 = container.escapeExpression,
lookupProperty =
container.lookupProperty ||
function(parent, propertyName) {
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
return parent[propertyName]
}
return undefined
}
return (
' <div class="row p-2">\n <article>\n <div class="card">\n <div class="card-body">\n <h2 class="card-title"><a href="' +
alias4(
((helper =
(helper =
lookupProperty(helpers, 'link') ||
(depth0 != null ? lookupProperty(depth0, 'link') : depth0)) != null
? helper
: alias2),
typeof helper === alias3
? helper.call(alias1, {
name: 'link',
hash: {},
data: data,
loc: {
start: { line: 61, column: 44 },
end: { line: 61, column: 52 },
},
})
: helper),
) +
'">' +
alias4(
((helper =
(helper =
lookupProperty(helpers, 'title') ||
(depth0 != null ? lookupProperty(depth0, 'title') : depth0)) != null
? helper
: alias2),
typeof helper === alias3
? helper.call(alias1, {
name: 'title',
hash: {},
data: data,
loc: {
start: { line: 61, column: 54 },
end: { line: 61, column: 63 },
},
})
: helper),
) +
'</a></h2>\n <p class="card-subtitle mb-2 text-muted">\n <small>Date: ' +
alias4(
((helper =
(helper =
lookupProperty(helpers, 'pubDate') ||
(depth0 != null ? lookupProperty(depth0, 'pubDate') : depth0)) !=
null
? helper
: alias2),
typeof helper === alias3
? helper.call(alias1, {
name: 'pubDate',
hash: {},
data: data,
loc: {
start: { line: 63, column: 27 },
end: { line: 63, column: 38 },
},
})
: helper),
) +
'</small><br>\n <small>Source: <a href="' +
alias4(
((helper =
(helper =
lookupProperty(helpers, 'source_link') ||
(depth0 != null
? lookupProperty(depth0, 'source_link')
: depth0)) != null
? helper
: alias2),
typeof helper === alias3
? helper.call(alias1, {
name: 'source_link',
hash: {},
data: data,
loc: {
start: { line: 64, column: 38 },
end: { line: 64, column: 53 },
},
})
: helper),
) +
'">' +
alias4(
((helper =
(helper =
lookupProperty(helpers, 'source_title') ||
(depth0 != null
? lookupProperty(depth0, 'source_title')
: depth0)) != null
? helper
: alias2),
typeof helper === alias3
? helper.call(alias1, {
name: 'source_title',
hash: {},
data: data,
loc: {
start: { line: 64, column: 55 },
end: { line: 64, column: 71 },
},
})
: helper),
) +
'</a></small>\n </p>\n\n ' +
((stack1 =
((helper =
(helper =
lookupProperty(helpers, 'content') ||
(depth0 != null ? lookupProperty(depth0, 'content') : depth0)) !=
null
? helper
: alias2),
typeof helper === alias3
? helper.call(alias1, {
name: 'content',
hash: {},
data: data,
loc: {
start: { line: 67, column: 12 },
end: { line: 67, column: 25 },
},
})
: helper)) != null
? stack1
: '') +
'\n </div>\n </div>\n </article>\n </div>\n'
)
},
'3': function(container, depth0, helpers, partials, data) {
var helper,
alias1 = depth0 != null ? depth0 : container.nullContext || {},
alias2 = container.hooks.helperMissing,
alias3 = 'function',
alias4 = container.escapeExpression,
lookupProperty =
container.lookupProperty ||
function(parent, propertyName) {
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
return parent[propertyName]
}
return undefined
}
return (
' <li><a href="' +
alias4(
((helper =
(helper =
lookupProperty(helpers, 'link') ||
(depth0 != null ? lookupProperty(depth0, 'link') : depth0)) != null
? helper
: alias2),
typeof helper === alias3
? helper.call(alias1, {
name: 'link',
hash: {},
data: data,
loc: {
start: { line: 93, column: 23 },
end: { line: 93, column: 31 },
},
})
: helper),
) +
'">' +
alias4(
((helper =
(helper =
lookupProperty(helpers, 'name') ||
(depth0 != null ? lookupProperty(depth0, 'name') : depth0)) != null
? helper
: alias2),
typeof helper === alias3
? helper.call(alias1, {
name: 'name',
hash: {},
data: data,
loc: {
start: { line: 93, column: 33 },
end: { line: 93, column: 41 },
},
})
: helper),
) +
'</a></li>\n'
)
},
compiler: [8, '>= 4.3.0'],
main: function(container, depth0, helpers, partials, data) {
var stack1,
helper,
alias1 = depth0 != null ? depth0 : container.nullContext || {},
alias2 = container.hooks.helperMissing,
alias3 = 'function',
alias4 = container.escapeExpression,
lookupProperty =
container.lookupProperty ||
function(parent, propertyName) {
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
return parent[propertyName]
}
return undefined
}
return (
'<!DOCTYPE html>\n<html lang="en">\n\n<head>\n <meta charset="UTF-8">\n <meta http-equiv="X-UA-Compatible" content="IE=edge">\n <meta name="viewport" content="width=device-width, initial-scale=1.0">\n <title>' +
alias4(
((helper =
(helper =
lookupProperty(helpers, 'page_title') ||
(depth0 != null ? lookupProperty(depth0, 'page_title') : depth0)) !=
null
? helper
: alias2),
typeof helper === alias3
? helper.call(alias1, {
name: 'page_title',
hash: {},
data: data,
loc: {
start: { line: 8, column: 9 },
end: { line: 8, column: 23 },
},
})
: helper),
) +
'</title>\n <meta property="og:title" content="' +
alias4(
((helper =
(helper =
lookupProperty(helpers, 'page_title') ||
(depth0 != null ? lookupProperty(depth0, 'page_title') : depth0)) !=
null
? helper
: alias2),
typeof helper === alias3
? helper.call(alias1, {
name: 'page_title',
hash: {},
data: data,
loc: {
start: { line: 9, column: 37 },
end: { line: 9, column: 51 },
},
})
: helper),
) +
'" />\n <meta property="og:description" content="' +
alias4(
((helper =
(helper =
lookupProperty(helpers, 'page_description') ||
(depth0 != null
? lookupProperty(depth0, 'page_description')
: depth0)) != null
? helper
: alias2),
typeof helper === alias3
? helper.call(alias1, {
name: 'page_description',
hash: {},
data: data,
loc: {
start: { line: 10, column: 43 },
end: { line: 10, column: 63 },
},
})
: helper),
) +
'" />\n <meta http-equiv="Content-Security-Policy" content="script-src https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/js/bootstrap.bundle.min.js; style-src https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css https://cdn.jsdelivr.net/npm/bootstrap-icons@1.5.0/font/bootstrap-icons.css \'sha256-Rlrl8UtcuZXDdr9KU9SZlhcRnb8Epry8Jgy1xIoCOkg=\';">\n <link rel="alternate" type="application/rss+xml" title="Planet RSS feed" href="/rss" />\n <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css" rel="stylesheet"\n integrity="sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x" crossorigin="anonymous" />\n <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.5.0/font/bootstrap-icons.css"\n integrity="sha256-PDJQdTN7dolQWDASIoBVrjkuOEaI137FI15sqI3Oxu8=" crossorigin="anonymous" />\n <style>\n img {\n width: 100% !important;\n max-width:600px !important;\n height: auto;\n }\n code {\n display: block;\n white-space: pre-wrap;\n overflow-wrap: break-word;\n }\n </style>\n</head>\n\n<body>\n <nav class="navbar navbar-expand-lg navbar-light bg-light">\n <div class="container-fluid">\n <a class="navbar-brand" href="#">' +
alias4(
((helper =
(helper =
lookupProperty(helpers, 'page_title') ||
(depth0 != null ? lookupProperty(depth0, 'page_title') : depth0)) !=
null
? helper
: alias2),
typeof helper === alias3
? helper.call(alias1, {
name: 'page_title',
hash: {},
data: data,
loc: {
start: { line: 34, column: 39 },
end: { line: 34, column: 53 },
},
})
: helper),
) +
'</a>\n <ul class="navbar-nav ms-auto">\n <li class="nav-item">\n <a class="nav-link active" aria-current="page" href="/rss">\n <i class="bi bi-rss" role="img" aria-label="RSS"></i> RSS Feed\n </a>\n </li>\n <li class="nav-item">\n <a class="nav-link active" aria-current="page" href="https://github.com/dethos/worker-planet">\n <i class="bi bi-github" role="img" aria-label="GitHub"></i> Source Code\n </a>\n </li>\n <li class="nav-item">\n <a class="nav-link active" aria-current="page" data-bs-toggle="offcanvas" data-bs-target="#aboutPanel" aria-controls="offcanvasRight" href="#">\n <i class="bi bi-patch-question" role="img" aria-label="About"></i> About\n </a>\n </li>\n </ul>\n </div>\n </nav>\n\n <main class="container d-grid">\n' +
((stack1 = lookupProperty(helpers, 'each').call(
alias1,
depth0 != null ? lookupProperty(depth0, 'items') : depth0,
{
name: 'each',
hash: {},
fn: container.program(1, data, 0),
inverse: container.noop,
data: data,
loc: {
start: { line: 56, column: 4 },
end: { line: 72, column: 13 },
},
},
)) != null
? stack1
: '') +
' </main>\n <footer class="footer mt-auto py-3 bg-light">\n <div class="container-fluid">\n <p class="text-muted">\n <span>All rights belong to the original authors. Powered by <a href="https://github.com/dethos/worker-planet">worker-planet</a>.</span>\n <span class="float-end"><a href="#">Back to top</a></span>\n </p>\n </div>\n </footer>\n <div class="offcanvas offcanvas-end" tabindex="-1" id="aboutPanel" aria-labelledby="aboutLabel">\n <div class="offcanvas-header">\n <h4 id="aboutLabel">About</h4>\n <button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="Close"></button>\n </div>\n <div class="offcanvas-body">\n <p>' +
alias4(
((helper =
(helper =
lookupProperty(helpers, 'page_description') ||
(depth0 != null
? lookupProperty(depth0, 'page_description')
: depth0)) != null
? helper
: alias2),
typeof helper === alias3
? helper.call(alias1, {
name: 'page_description',
hash: {},
data: data,
loc: {
start: { line: 88, column: 9 },
end: { line: 88, column: 29 },
},
})
: helper),
) +
'</p>\n\n <h5>Sources</h5>\n <ul>\n' +
((stack1 = lookupProperty(helpers, 'each').call(
alias1,
depth0 != null ? lookupProperty(depth0, 'sources') : depth0,
{
name: 'each',
hash: {},
fn: container.program(3, data, 0),
inverse: container.noop,
data: data,
loc: {
start: { line: 92, column: 8 },
end: { line: 94, column: 17 },
},
},
)) != null
? stack1
: '') +
' </ul>\n </div>\n </div>\n <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/js/bootstrap.bundle.min.js"\n integrity="sha384-gtEjrD/SeCtmISkJkNUaaKMoLD0//ElJ19smozuHV6z3Iehds+3Ulb9Bn9Plx0x4" crossorigin="anonymous"></script>\n</body>\n\n</html>\n'
)
},
useData: true,
})

9
webpack.config.js Normal file
View File

@ -0,0 +1,9 @@
const path = require('path')
const {
WranglerJsCompatWebpackPlugin,
} = require('wranglerjs-compat-webpack-plugin')
module.exports = {
entry: './index.js',
plugins: [new WranglerJsCompatWebpackPlugin()],
}

View File

@ -1,9 +1,9 @@
name = "worker-planet"
type = "webpack"
main = "./worker/script.js"
compatibility_date = "2023-05-18"
node_compat = true
account_id = ""
workers_dev = true
route = ""
zone_id = ""
kv_namespaces = [
{ binding = "WORKER_PLANET_STORE", id = "", preview_id = "" }