poops 1.0.18 → 1.0.20
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 +71 -2
- package/lib/copy.js +121 -0
- package/lib/markups.js +226 -143
- package/lib/styles.js +65 -24
- package/lib/utils/helpers.js +197 -3
- package/package.json +8 -3
- package/poops.js +12 -1
- package/.eslintrc.yml +0 -10
- package/.github/dependabot.yml +0 -9
- package/.github/workflows/npm_publish.yml +0 -17
- package/.nojekyll +0 -1
- package/changelog/blog-functionality.html +0 -58
- package/changelog/feed.rss +0 -31
- package/changelog/front-matter.html +0 -61
- package/changelog/index.html +0 -74
- package/changelog/markdown-support.html +0 -56
- package/example/dist/css/styles.css +0 -7172
- package/example/dist/css/styles.css.map +0 -1
- package/example/dist/css/styles.min.css +0 -2
- package/example/dist/js/scripts.js +0 -35
- package/example/dist/js/scripts.js.map +0 -7
- package/example/dist/js/scripts.min.js +0 -2
- package/example/src/js/main.ts +0 -28
- package/example/src/js/scripts/utils.ts +0 -16
- package/example/src/markup/_data/features.yaml +0 -9
- package/example/src/markup/_data/links.json +0 -10
- package/example/src/markup/_data/poops.yaml +0 -7
- package/example/src/markup/_layouts/blog.html +0 -35
- package/example/src/markup/_layouts/default.html +0 -93
- package/example/src/markup/_partials/heading.html +0 -10
- package/example/src/markup/_partials/site-header.html +0 -17
- package/example/src/markup/changelog/blog-functionality.md +0 -9
- package/example/src/markup/changelog/feed.rss +0 -23
- package/example/src/markup/changelog/front-matter.md +0 -12
- package/example/src/markup/changelog/index.html +0 -30
- package/example/src/markup/changelog/markdown-support.md +0 -7
- package/example/src/markup/index.html +0 -33
- package/example/src/scss/_config.scss +0 -22
- package/example/src/scss/index.scss +0 -4
- package/example/src/scss/style/index.scss +0 -13
- package/example/src/scss/style/test.css +0 -3
- package/index.html +0 -166
- package/poop.png +0 -0
- package/script/build +0 -3
- package/script/publish +0 -138
- package/script/server +0 -3
- package/test.html +0 -96
- package/tsconfig.json +0 -16
- package//360/237/222/251.json +0 -55
package/lib/utils/helpers.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
const fs = require('node:fs')
|
|
2
|
+
const glob = require('glob')
|
|
2
3
|
const path = require('node:path')
|
|
4
|
+
const frontMatterCache = new Map()
|
|
3
5
|
|
|
4
6
|
function pathExists() {
|
|
5
7
|
return fs.existsSync(path.join(...arguments))
|
|
@@ -9,9 +11,13 @@ function pathIsDirectory() {
|
|
|
9
11
|
return fs.lstatSync(path.join(...arguments)).isDirectory()
|
|
10
12
|
}
|
|
11
13
|
|
|
14
|
+
function mkDir(dirPath) {
|
|
15
|
+
if (!fs.existsSync(dirPath)) fs.mkdirSync(dirPath, { recursive: true })
|
|
16
|
+
}
|
|
17
|
+
|
|
12
18
|
function mkPath(filePath) {
|
|
13
19
|
const dirPath = path.dirname(filePath)
|
|
14
|
-
|
|
20
|
+
mkDir(dirPath)
|
|
15
21
|
}
|
|
16
22
|
|
|
17
23
|
function pathForFile(filePath) {
|
|
@@ -74,7 +80,66 @@ function readJsonFile(filePath) {
|
|
|
74
80
|
}
|
|
75
81
|
|
|
76
82
|
function readYamlFile(filePath) {
|
|
77
|
-
|
|
83
|
+
try {
|
|
84
|
+
return require('yaml').parse(fs.readFileSync(filePath, 'utf8'))
|
|
85
|
+
} catch (e) {
|
|
86
|
+
console.error(`Error reading YAML file at ${filePath}:`, e)
|
|
87
|
+
return null
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
function parseFrontMatter(filePath) {
|
|
92
|
+
let stat
|
|
93
|
+
try {
|
|
94
|
+
stat = fs.statSync(filePath)
|
|
95
|
+
} catch (e) {
|
|
96
|
+
throw new Error(`Error stating file at ${filePath}: ${e.message}`)
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
const cached = frontMatterCache.get(filePath)
|
|
100
|
+
if (cached && cached.mtimeMs === stat.mtimeMs && cached.size === stat.size) {
|
|
101
|
+
return { frontMatter: { ...cached.value.frontMatter }, content: cached.value.content }
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
let content = ''
|
|
105
|
+
try {
|
|
106
|
+
content = fs.readFileSync(filePath, 'utf8')
|
|
107
|
+
} catch (e) {
|
|
108
|
+
throw new Error(`Error reading file at ${filePath}: ${e.message}`)
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
if (!content) {
|
|
112
|
+
throw new Error(`File at ${filePath} is empty`)
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
const frontMatterRegex = /^\s*---\s*[\r\n]+([\s\S]*?)\s*---\s*[\r\n]+/
|
|
116
|
+
const match = content.match(frontMatterRegex)
|
|
117
|
+
|
|
118
|
+
if (!match) {
|
|
119
|
+
const value = { frontMatter: {}, content }
|
|
120
|
+
frontMatterCache.set(filePath, { mtimeMs: stat.mtimeMs, size: stat.size, value })
|
|
121
|
+
return { frontMatter: {}, content }
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
let frontMatter = {}
|
|
125
|
+
try {
|
|
126
|
+
frontMatter = require('yaml').parse(match[1])
|
|
127
|
+
} catch (e) {
|
|
128
|
+
throw new Error(`Error parsing front matter in file at ${filePath}: ${e.message}`)
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
const contentWithoutFrontMatter = content.slice(match[0].length)
|
|
132
|
+
const value = { frontMatter, content: contentWithoutFrontMatter }
|
|
133
|
+
frontMatterCache.set(filePath, { mtimeMs: stat.mtimeMs, size: stat.size, value })
|
|
134
|
+
return { frontMatter: { ...frontMatter }, content: contentWithoutFrontMatter }
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
function clearFrontMatterCache(filePath) {
|
|
138
|
+
if (!filePath) {
|
|
139
|
+
frontMatterCache.clear()
|
|
140
|
+
return
|
|
141
|
+
}
|
|
142
|
+
frontMatterCache.delete(filePath)
|
|
78
143
|
}
|
|
79
144
|
|
|
80
145
|
function readDataFile(filePath) {
|
|
@@ -106,9 +171,134 @@ function deleteDirectory(directory) {
|
|
|
106
171
|
fs.rmdirSync(directory)
|
|
107
172
|
}
|
|
108
173
|
|
|
174
|
+
function copyDirectory(src, dest) {
|
|
175
|
+
if (!pathExists(src)) return
|
|
176
|
+
|
|
177
|
+
if (!pathIsDirectory(src)) {
|
|
178
|
+
fs.copyFileSync(src, dest)
|
|
179
|
+
return
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
mkDir(dest)
|
|
183
|
+
|
|
184
|
+
const entries = fs.readdirSync(src, { withFileTypes: true })
|
|
185
|
+
|
|
186
|
+
for (const entry of entries) {
|
|
187
|
+
const srcPath = path.join(src, entry.name)
|
|
188
|
+
const destPath = path.join(dest, entry.name)
|
|
189
|
+
|
|
190
|
+
if (entry.isDirectory()) {
|
|
191
|
+
copyDirectory(srcPath, destPath)
|
|
192
|
+
} else {
|
|
193
|
+
fs.copyFileSync(srcPath, destPath)
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
function convertGlobToRegex(glob) {
|
|
199
|
+
let regexString = ''
|
|
200
|
+
const charMap = {
|
|
201
|
+
'*': '[^\\/\\\\]*',
|
|
202
|
+
'?': '[^\\/\\\\]',
|
|
203
|
+
'!': '^',
|
|
204
|
+
'{': '(',
|
|
205
|
+
'}': ')',
|
|
206
|
+
',': '|',
|
|
207
|
+
'.': '\\.',
|
|
208
|
+
'-': '\\-',
|
|
209
|
+
// eslint-disable-next-line quote-props
|
|
210
|
+
'$': '\\$',
|
|
211
|
+
'+': '\\+',
|
|
212
|
+
'/': '\\/',
|
|
213
|
+
'\\': '\\\\'
|
|
214
|
+
}
|
|
215
|
+
let insideSquareBrackets = false
|
|
216
|
+
let insideCurlyBraces = false
|
|
217
|
+
|
|
218
|
+
for (let i = 0; i < glob.length; i++) {
|
|
219
|
+
const char = glob[i]
|
|
220
|
+
// eslint-disable-next-line no-prototype-builtins
|
|
221
|
+
if (charMap.hasOwnProperty(char)) {
|
|
222
|
+
let currentChar = charMap[char]
|
|
223
|
+
switch (char) {
|
|
224
|
+
case '{':
|
|
225
|
+
insideCurlyBraces = true
|
|
226
|
+
break
|
|
227
|
+
case '}':
|
|
228
|
+
insideCurlyBraces = false
|
|
229
|
+
break
|
|
230
|
+
case '!':
|
|
231
|
+
if (!insideSquareBrackets) currentChar = '\\!' // Escape '!' outside square brackets
|
|
232
|
+
break
|
|
233
|
+
case ',':
|
|
234
|
+
if (!insideCurlyBraces) currentChar = '\\,' // Escape ',' outside curly braces
|
|
235
|
+
break
|
|
236
|
+
case '-':
|
|
237
|
+
if (insideSquareBrackets) currentChar = char // Don't escape '-' inside square brackets
|
|
238
|
+
break
|
|
239
|
+
}
|
|
240
|
+
regexString += currentChar
|
|
241
|
+
} else {
|
|
242
|
+
switch (char) {
|
|
243
|
+
case '[':
|
|
244
|
+
insideSquareBrackets = true
|
|
245
|
+
break
|
|
246
|
+
case ']':
|
|
247
|
+
insideSquareBrackets = false
|
|
248
|
+
break
|
|
249
|
+
}
|
|
250
|
+
regexString += char
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
let re = null
|
|
255
|
+
|
|
256
|
+
try {
|
|
257
|
+
re = new RegExp(regexString)
|
|
258
|
+
} catch (e) {
|
|
259
|
+
// Invalid regex
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
return re
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
function removeDirNavWildcards(filePath) {
|
|
266
|
+
return path.normalize(filePath).replace(/(\.\.\/|\.\/|\/\.\.|\.\.\\|\.\\|\\\.\.)/g, '')
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
function pathContainsPathSegment(filePath, segment) {
|
|
270
|
+
segment = removeDirNavWildcards(segment)
|
|
271
|
+
if (glob.hasMagic(segment)) {
|
|
272
|
+
segment = convertGlobToRegex(segment)
|
|
273
|
+
if (!segment) return false
|
|
274
|
+
return segment.test(filePath)
|
|
275
|
+
} else {
|
|
276
|
+
return filePath.includes(segment)
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
function doesFileBelongToPath(filePath, configPaths) {
|
|
281
|
+
if (!configPaths) return false
|
|
282
|
+
if (!Array.isArray(configPaths)) configPaths = [configPaths]
|
|
283
|
+
for (const configPath of configPaths) {
|
|
284
|
+
if (!configPath.in) continue
|
|
285
|
+
const configInPaths = Array.isArray(configPath.in) ? configPath.in : [configPath.in]
|
|
286
|
+
for (const inPath of configInPaths) {
|
|
287
|
+
if (pathContainsPathSegment(filePath, inPath)) {
|
|
288
|
+
return {
|
|
289
|
+
in: inPath,
|
|
290
|
+
out: configPath.out || null
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
return false
|
|
296
|
+
}
|
|
297
|
+
|
|
109
298
|
module.exports = {
|
|
110
299
|
pathExists,
|
|
111
300
|
pathIsDirectory,
|
|
301
|
+
mkDir,
|
|
112
302
|
mkPath,
|
|
113
303
|
pathForFile,
|
|
114
304
|
insertMinSuffix,
|
|
@@ -121,5 +311,9 @@ module.exports = {
|
|
|
121
311
|
readYamlFile,
|
|
122
312
|
readDataFile,
|
|
123
313
|
deleteDirectoryContents,
|
|
124
|
-
deleteDirectory
|
|
314
|
+
deleteDirectory,
|
|
315
|
+
copyDirectory,
|
|
316
|
+
doesFileBelongToPath,
|
|
317
|
+
parseFrontMatter,
|
|
318
|
+
clearFrontMatterCache
|
|
125
319
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "poops",
|
|
3
3
|
"description": "Straightforward, no-bullshit bundler for the web.",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.20",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "poops.js",
|
|
7
7
|
"repository": {
|
|
@@ -12,6 +12,10 @@
|
|
|
12
12
|
"poops": "poops.js",
|
|
13
13
|
"💩": "poops.js"
|
|
14
14
|
},
|
|
15
|
+
"files": [
|
|
16
|
+
"poops.js",
|
|
17
|
+
"lib/"
|
|
18
|
+
],
|
|
15
19
|
"author": "Stamat <@stamat> (http://stamat.info)",
|
|
16
20
|
"homepage": "https://github.com/stamat/poops",
|
|
17
21
|
"private": false,
|
|
@@ -26,13 +30,14 @@
|
|
|
26
30
|
"static-site-generator"
|
|
27
31
|
],
|
|
28
32
|
"scripts": {
|
|
33
|
+
"build": "node ./poops.js -b",
|
|
29
34
|
"lint": "eslint ./poops.js"
|
|
30
35
|
},
|
|
31
36
|
"dependencies": {
|
|
32
37
|
"chokidar": "^3.5.3",
|
|
33
38
|
"connect": "^3.7.0",
|
|
34
39
|
"deepmerge": "^4.3.1",
|
|
35
|
-
"esbuild": "^0.
|
|
40
|
+
"esbuild": "^0.25.0",
|
|
36
41
|
"glob": "^10.3.1",
|
|
37
42
|
"livereload": "^0.9.3",
|
|
38
43
|
"marked": "^9.0.3",
|
|
@@ -49,6 +54,6 @@
|
|
|
49
54
|
"eslint-plugin-import": "^2.26.0",
|
|
50
55
|
"eslint-plugin-n": "^16.0.0",
|
|
51
56
|
"eslint-plugin-promise": "^6.1.1",
|
|
52
|
-
"sulphuris": "^
|
|
57
|
+
"sulphuris": "^2.0.0"
|
|
53
58
|
}
|
|
54
59
|
}
|
package/poops.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
const chokidar = require('chokidar')
|
|
4
4
|
const connect = require('connect')
|
|
5
|
+
const Copy = require('./lib/copy.js')
|
|
5
6
|
const helpers = require('./lib/utils/helpers.js')
|
|
6
7
|
const http = require('node:http')
|
|
7
8
|
const livereload = require('livereload')
|
|
@@ -13,7 +14,7 @@ const PrintStyle = require('./lib/utils/print-style.js')
|
|
|
13
14
|
const Styles = require('./lib/styles.js')
|
|
14
15
|
const portscanner = require('portscanner')
|
|
15
16
|
|
|
16
|
-
const { pathExists } = helpers
|
|
17
|
+
const { pathExists, doesFileBelongToPath } = helpers
|
|
17
18
|
|
|
18
19
|
const cwd = process.cwd() // Current Working Directory
|
|
19
20
|
const pkg = require('./package.json')
|
|
@@ -100,11 +101,13 @@ async function poops() {
|
|
|
100
101
|
const styles = new Styles(config)
|
|
101
102
|
const scripts = new Scripts(config)
|
|
102
103
|
const markups = new Markups(config)
|
|
104
|
+
const copy = new Copy(config)
|
|
103
105
|
|
|
104
106
|
if (build || (!config.watch && !config.livereload && !config.serve)) {
|
|
105
107
|
await styles.compile()
|
|
106
108
|
await scripts.compile()
|
|
107
109
|
await markups.compile()
|
|
110
|
+
await copy.execute()
|
|
108
111
|
process.exit(0)
|
|
109
112
|
}
|
|
110
113
|
|
|
@@ -134,6 +137,7 @@ async function poops() {
|
|
|
134
137
|
await styles.compile()
|
|
135
138
|
await scripts.compile()
|
|
136
139
|
await markups.compile()
|
|
140
|
+
await copy.execute()
|
|
137
141
|
|
|
138
142
|
if (config.watch) {
|
|
139
143
|
// TODO: think about watching the updates of the config file itself, we can reload the config and recompile everything.
|
|
@@ -149,14 +153,21 @@ async function poops() {
|
|
|
149
153
|
markups.compile()
|
|
150
154
|
})
|
|
151
155
|
}
|
|
156
|
+
|
|
157
|
+
doesFileBelongToPath(file, config.copy) && copy.execute()
|
|
152
158
|
}).on('unlink', (file) => {
|
|
153
159
|
if (/(\.html|\.xml|\.rss|\.atom|\.njk|\.md)$/i.test(file)) markups.compile()
|
|
160
|
+
copy.unlink(file, doesFileBelongToPath(file, config.copy))
|
|
161
|
+
}).on('unlinkDir', (path) => {
|
|
162
|
+
doesFileBelongToPath(path, config.markup) && markups.compile()
|
|
163
|
+
copy.unlink(path, doesFileBelongToPath(path, config.copy))
|
|
154
164
|
}).on('add', (file) => {
|
|
155
165
|
if (/(\.json|\.ya?ml)$/i.test(file)) {
|
|
156
166
|
markups.reloadDataFiles().then(() => {
|
|
157
167
|
markups.compile()
|
|
158
168
|
})
|
|
159
169
|
}
|
|
170
|
+
doesFileBelongToPath(file, config.copy) && copy.execute()
|
|
160
171
|
})
|
|
161
172
|
}
|
|
162
173
|
}
|
package/.eslintrc.yml
DELETED
package/.github/dependabot.yml
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
name: NPM Publish
|
|
2
|
-
on:
|
|
3
|
-
release:
|
|
4
|
-
types: [published]
|
|
5
|
-
jobs:
|
|
6
|
-
build:
|
|
7
|
-
runs-on: ubuntu-latest
|
|
8
|
-
steps:
|
|
9
|
-
- uses: actions/checkout@v3
|
|
10
|
-
# Setup .npmrc file to publish to npm
|
|
11
|
-
- uses: actions/setup-node@v3
|
|
12
|
-
with:
|
|
13
|
-
node-version: '16.x'
|
|
14
|
-
- name: Publish to npm registry
|
|
15
|
-
run: |
|
|
16
|
-
echo "//registry.npmjs.org/:_authToken=\${{ secrets.NPM_TOKEN }}" >> .npmrc
|
|
17
|
-
npm publish
|
package/.nojekyll
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8">
|
|
5
|
-
<title>Blog Functionality | 💩 Poops</title>
|
|
6
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
7
|
-
<meta name="description" content="Hey folks, this is my second blog post.">
|
|
8
|
-
<link rel="alternate" type="application/rss+xml" href="https://stamat.github.io/poops/changelog/feed.rss">
|
|
9
|
-
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
10
|
-
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
11
|
-
<link rel="stylesheet" href="../example/dist/css/styles.min.css">
|
|
12
|
-
<link href="https://fonts.googleapis.com/css2?family=DM+Sans&family=Poppins:wght@700&display=swap" rel="stylesheet">
|
|
13
|
-
<script src="https://cdn.jsdelivr.net/npm/canvas-confetti@1.5.1/dist/confetti.browser.min.js"></script>
|
|
14
|
-
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/atom-one-dark.min.css">
|
|
15
|
-
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
|
|
16
|
-
</head>
|
|
17
|
-
<body class="bg-brownish">
|
|
18
|
-
|
|
19
|
-
<header class="py-8">
|
|
20
|
-
<div class="container d-flex justify-space-between align-center h-48">
|
|
21
|
-
|
|
22
|
-
<a href="../" class="d-flex flex-row align-center text-primary text-none text-bold font-heading h6" style="letter-spacing: -.045rem;">
|
|
23
|
-
<img src="../poop.png" class="d-block mr-8" alt="Poops" width="48" height="48">
|
|
24
|
-
POOPS
|
|
25
|
-
</a>
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
<nav class="ml-auto">
|
|
29
|
-
|
|
30
|
-
<a href="../changelog" class="text-none text-bold d-inline-block ml-lg-16 font-heading">Changelog</a>
|
|
31
|
-
|
|
32
|
-
<a href="https://github.com/stamat/poops#readme" class="text-none text-bold d-inline-block ml-lg-16 font-heading">Docs</a>
|
|
33
|
-
|
|
34
|
-
<a href="https://github.com/stamat/poops" class="d-inline-block ml-lg-16"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" class="w-24 h-24" style="vertical-align: middle"><path d="M8 0c4.42 0 8 3.58 8 8a8.013 8.013 0 0 1-5.45 7.59c-.4.08-.55-.17-.55-.38 0-.27.01-1.13.01-2.2 0-.75-.25-1.23-.54-1.48 1.78-.2 3.65-.88 3.65-3.95 0-.88-.31-1.59-.82-2.15.08-.2.36-1.02-.08-2.12 0 0-.67-.22-2.2.82-.64-.18-1.32-.27-2-.27-.68 0-1.36.09-2 .27-1.53-1.03-2.2-.82-2.2-.82-.44 1.1-.16 1.92-.08 2.12-.51.56-.82 1.28-.82 2.15 0 3.06 1.86 3.75 3.64 3.95-.23.2-.44.55-.51 1.07-.46.21-1.61.55-2.33-.66-.15-.24-.6-.83-1.23-.82-.67.01-.27.38.01.53.34.19.73.9.82 1.13.16.45.68 1.31 2.69.94 0 .67.01 1.3.01 1.49 0 .21-.15.45-.55.38A7.995 7.995 0 0 1 0 8c0-4.42 3.58-8 8-8Z"></path></svg></a>
|
|
35
|
-
</nav>
|
|
36
|
-
</div>
|
|
37
|
-
</header>
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
<div class="container">
|
|
41
|
-
|
|
42
|
-
<h1>Blog Functionality</h1>
|
|
43
|
-
<p> Hey folks, this is my second blog post.</p>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
</div>
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
<script>document.write('<script src="http://'
|
|
50
|
-
+ (location.host || 'localhost').split(':')[0]
|
|
51
|
-
+ ':35730/livereload.js?snipver=1"></'
|
|
52
|
-
+ 'script>')</script>
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
<script>hljs.highlightAll();</script>
|
|
56
|
-
<script async type="text/javascript" src="../example/dist/js/scripts.min.js"></script>
|
|
57
|
-
</body>
|
|
58
|
-
</html>
|
package/changelog/feed.rss
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8" ?>
|
|
2
|
-
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
|
3
|
-
<channel>
|
|
4
|
-
<title>Changelog | 💩 Poops</title>
|
|
5
|
-
<description>Straightforward, no-bullshit bundler for the web.</description>
|
|
6
|
-
<link>https://stamat.github.io/poops</link>
|
|
7
|
-
<atom:link href="https://stamat.github.io/poops/changelog/feed.rss" rel="self" type="application/rss+xml" />
|
|
8
|
-
<lastBuildDate>Thu, 12 Oct 2023 18:19:14 +0200</lastBuildDate>
|
|
9
|
-
|
|
10
|
-
<pubDate>Thu, 12 Oct 2023 16:10:00 +0200</pubDate>
|
|
11
|
-
<ttl>1800</ttl>
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
<item>
|
|
15
|
-
<title>Blog Functionality</title>
|
|
16
|
-
<guid isPermaLink="true">https://stamat.github.io/poops/changelog/blog-functionality.html</guid>
|
|
17
|
-
<link>https://stamat.github.io/poops/changelog/blog-functionality.html</link>
|
|
18
|
-
<description>Hey folks, this is my second blog post.</description>
|
|
19
|
-
<pubDate>Thu, 12 Oct 2023 16:10:00 +0200</pubDate>
|
|
20
|
-
</item>
|
|
21
|
-
|
|
22
|
-
<item>
|
|
23
|
-
<title>Added Front Matter support!</title>
|
|
24
|
-
<guid isPermaLink="true">https://stamat.github.io/poops/changelog/front-matter.html</guid>
|
|
25
|
-
<link>https://stamat.github.io/poops/changelog/front-matter.html</link>
|
|
26
|
-
<description>Front matter is an awesome idea! Since the static site generator functionality of Poops is inspired by Jekyll and the genius of peeps that came up with the idea of front matter, I decided to add it to Poops as well. Made things super simple! And that's what Poops is all about. Making things simple.</description>
|
|
27
|
-
<pubDate>Tue, 19 Sep 2023 02:00:00 +0200</pubDate>
|
|
28
|
-
</item>
|
|
29
|
-
|
|
30
|
-
</channel>
|
|
31
|
-
</rss>
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8">
|
|
5
|
-
<title>Added Front Matter support! | 💩 Poops</title>
|
|
6
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
7
|
-
<meta name="description" content="Front matter is an awesome idea! Since the static site generator functionality of Poops is inspired by Jekyll and the genius of peeps that came up with the idea of front matter, I decided to add it to Poops as well. Made things super simple! And that's what Poops is all about. Making things simple.">
|
|
8
|
-
<link rel="alternate" type="application/rss+xml" href="https://stamat.github.io/poops/changelog/feed.rss">
|
|
9
|
-
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
10
|
-
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
11
|
-
<link rel="stylesheet" href="../example/dist/css/styles.min.css">
|
|
12
|
-
<link href="https://fonts.googleapis.com/css2?family=DM+Sans&family=Poppins:wght@700&display=swap" rel="stylesheet">
|
|
13
|
-
<script src="https://cdn.jsdelivr.net/npm/canvas-confetti@1.5.1/dist/confetti.browser.min.js"></script>
|
|
14
|
-
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/atom-one-dark.min.css">
|
|
15
|
-
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
|
|
16
|
-
</head>
|
|
17
|
-
<body class="bg-brownish">
|
|
18
|
-
|
|
19
|
-
<header class="py-8">
|
|
20
|
-
<div class="container d-flex justify-space-between align-center h-48">
|
|
21
|
-
|
|
22
|
-
<a href="../" class="d-flex flex-row align-center text-primary text-none text-bold font-heading h6" style="letter-spacing: -.045rem;">
|
|
23
|
-
<img src="../poop.png" class="d-block mr-8" alt="Poops" width="48" height="48">
|
|
24
|
-
POOPS
|
|
25
|
-
</a>
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
<nav class="ml-auto">
|
|
29
|
-
|
|
30
|
-
<a href="../changelog" class="text-none text-bold d-inline-block ml-lg-16 font-heading">Changelog</a>
|
|
31
|
-
|
|
32
|
-
<a href="https://github.com/stamat/poops#readme" class="text-none text-bold d-inline-block ml-lg-16 font-heading">Docs</a>
|
|
33
|
-
|
|
34
|
-
<a href="https://github.com/stamat/poops" class="d-inline-block ml-lg-16"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" class="w-24 h-24" style="vertical-align: middle"><path d="M8 0c4.42 0 8 3.58 8 8a8.013 8.013 0 0 1-5.45 7.59c-.4.08-.55-.17-.55-.38 0-.27.01-1.13.01-2.2 0-.75-.25-1.23-.54-1.48 1.78-.2 3.65-.88 3.65-3.95 0-.88-.31-1.59-.82-2.15.08-.2.36-1.02-.08-2.12 0 0-.67-.22-2.2.82-.64-.18-1.32-.27-2-.27-.68 0-1.36.09-2 .27-1.53-1.03-2.2-.82-2.2-.82-.44 1.1-.16 1.92-.08 2.12-.51.56-.82 1.28-.82 2.15 0 3.06 1.86 3.75 3.64 3.95-.23.2-.44.55-.51 1.07-.46.21-1.61.55-2.33-.66-.15-.24-.6-.83-1.23-.82-.67.01-.27.38.01.53.34.19.73.9.82 1.13.16.45.68 1.31 2.69.94 0 .67.01 1.3.01 1.49 0 .21-.15.45-.55.38A7.995 7.995 0 0 1 0 8c0-4.42 3.58-8 8-8Z"></path></svg></a>
|
|
35
|
-
</nav>
|
|
36
|
-
</div>
|
|
37
|
-
</header>
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
<div class="container">
|
|
41
|
-
|
|
42
|
-
<h1>Added Front Matter support!</h1>
|
|
43
|
-
<blockquote>
|
|
44
|
-
<p>Front matter is an awesome idea! Since the static site generator functionality of Poops is inspired by Jekyll and the genius of peeps that came up with the idea of front matter, I decided to add it to Poops as well. Made things super simple! And that's what Poops is all about. Making things simple.</p>
|
|
45
|
-
</blockquote>
|
|
46
|
-
<p>Adding Front Matter was a breeze. Seriously.</p>
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
</div>
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
<script>document.write('<script src="http://'
|
|
53
|
-
+ (location.host || 'localhost').split(':')[0]
|
|
54
|
-
+ ':35730/livereload.js?snipver=1"></'
|
|
55
|
-
+ 'script>')</script>
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
<script>hljs.highlightAll();</script>
|
|
59
|
-
<script async type="text/javascript" src="../example/dist/js/scripts.min.js"></script>
|
|
60
|
-
</body>
|
|
61
|
-
</html>
|
package/changelog/index.html
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8">
|
|
5
|
-
<title>Changelog | 💩 Poops</title>
|
|
6
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
7
|
-
<meta name="description" content="Follow the latest changes of Poops.">
|
|
8
|
-
<link rel="alternate" type="application/rss+xml" href="https://stamat.github.io/poops/changelog/feed.rss">
|
|
9
|
-
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
10
|
-
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
11
|
-
<link rel="stylesheet" href="../example/dist/css/styles.min.css">
|
|
12
|
-
<link href="https://fonts.googleapis.com/css2?family=DM+Sans&family=Poppins:wght@700&display=swap" rel="stylesheet">
|
|
13
|
-
<script src="https://cdn.jsdelivr.net/npm/canvas-confetti@1.5.1/dist/confetti.browser.min.js"></script>
|
|
14
|
-
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/atom-one-dark.min.css">
|
|
15
|
-
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
|
|
16
|
-
</head>
|
|
17
|
-
<body class="bg-brownish">
|
|
18
|
-
|
|
19
|
-
<header class="py-8">
|
|
20
|
-
<div class="container d-flex justify-space-between align-center h-48">
|
|
21
|
-
|
|
22
|
-
<a href="../" class="d-flex flex-row align-center text-primary text-none text-bold font-heading h6" style="letter-spacing: -.045rem;">
|
|
23
|
-
<img src="../poop.png" class="d-block mr-8" alt="Poops" width="48" height="48">
|
|
24
|
-
POOPS
|
|
25
|
-
</a>
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
<nav class="ml-auto">
|
|
29
|
-
|
|
30
|
-
<a href="../changelog" class="text-underline text-bold d-inline-block ml-lg-16 font-heading">Changelog</a>
|
|
31
|
-
|
|
32
|
-
<a href="https://github.com/stamat/poops#readme" class="text-none text-bold d-inline-block ml-lg-16 font-heading">Docs</a>
|
|
33
|
-
|
|
34
|
-
<a href="https://github.com/stamat/poops" class="d-inline-block ml-lg-16"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" class="w-24 h-24" style="vertical-align: middle"><path d="M8 0c4.42 0 8 3.58 8 8a8.013 8.013 0 0 1-5.45 7.59c-.4.08-.55-.17-.55-.38 0-.27.01-1.13.01-2.2 0-.75-.25-1.23-.54-1.48 1.78-.2 3.65-.88 3.65-3.95 0-.88-.31-1.59-.82-2.15.08-.2.36-1.02-.08-2.12 0 0-.67-.22-2.2.82-.64-.18-1.32-.27-2-.27-.68 0-1.36.09-2 .27-1.53-1.03-2.2-.82-2.2-.82-.44 1.1-.16 1.92-.08 2.12-.51.56-.82 1.28-.82 2.15 0 3.06 1.86 3.75 3.64 3.95-.23.2-.44.55-.51 1.07-.46.21-1.61.55-2.33-.66-.15-.24-.6-.83-1.23-.82-.67.01-.27.38.01.53.34.19.73.9.82 1.13.16.45.68 1.31 2.69.94 0 .67.01 1.3.01 1.49 0 .21-.15.45-.55.38A7.995 7.995 0 0 1 0 8c0-4.42 3.58-8 8-8Z"></path></svg></a>
|
|
35
|
-
</nav>
|
|
36
|
-
</div>
|
|
37
|
-
</header>
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
<div class="container">
|
|
41
|
-
|
|
42
|
-
<div class="text-center">
|
|
43
|
-
<h1>Changelog</h1>
|
|
44
|
-
</div>
|
|
45
|
-
|
|
46
|
-
<div class="post">
|
|
47
|
-
<h2><a href="../changelog/blog-functionality.html">Blog Functionality</a></h2>
|
|
48
|
-
<div class="date">Oct 12, 2023</div>
|
|
49
|
-
Hey folks, this is my second blog post.
|
|
50
|
-
</div>
|
|
51
|
-
|
|
52
|
-
<div class="post">
|
|
53
|
-
<h2><a href="../changelog/front-matter.html">Added Front Matter support!</a></h2>
|
|
54
|
-
<div class="date">Sep 19, 2023</div>
|
|
55
|
-
Front matter is an awesome idea! Since the static site generator functionality of Poops is inspired by Jekyll and the genius of peeps that came up with the idea of front matter, I decided to add it to Poops as well. Made things super simple! And that's what Poops is all about. Making things simple.
|
|
56
|
-
</div>
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
</div>
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
<script>document.write('<script src="http://'
|
|
66
|
-
+ (location.host || 'localhost').split(':')[0]
|
|
67
|
-
+ ':35730/livereload.js?snipver=1"></'
|
|
68
|
-
+ 'script>')</script>
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
<script>hljs.highlightAll();</script>
|
|
72
|
-
<script async type="text/javascript" src="../example/dist/js/scripts.min.js"></script>
|
|
73
|
-
</body>
|
|
74
|
-
</html>
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8">
|
|
5
|
-
<title>Markdown Support | 💩 Poops</title>
|
|
6
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
7
|
-
<meta name="description" content="Hey folks, this is my second blog post.">
|
|
8
|
-
<link rel="alternate" type="application/rss+xml" href="https://stamat.github.io/poops/changelog/feed.rss">
|
|
9
|
-
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
10
|
-
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
11
|
-
<link rel="stylesheet" href="../example/dist/css/styles.min.css">
|
|
12
|
-
<link href="https://fonts.googleapis.com/css2?family=DM+Sans&family=Poppins:wght@700&display=swap" rel="stylesheet">
|
|
13
|
-
<script src="https://cdn.jsdelivr.net/npm/canvas-confetti@1.5.1/dist/confetti.browser.min.js"></script>
|
|
14
|
-
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/atom-one-dark.min.css">
|
|
15
|
-
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
|
|
16
|
-
</head>
|
|
17
|
-
<body class="bg-brownish">
|
|
18
|
-
|
|
19
|
-
<header class="py-8">
|
|
20
|
-
<div class="container d-flex justify-space-between align-center h-48">
|
|
21
|
-
|
|
22
|
-
<a href="../" class="d-flex flex-row align-center text-primary text-none text-bold font-heading h6" style="letter-spacing: -.045rem;">
|
|
23
|
-
<img src="../poop.png" class="d-block mr-8" alt="Poops" width="48" height="48">
|
|
24
|
-
POOPS
|
|
25
|
-
</a>
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
<nav class="ml-auto">
|
|
29
|
-
|
|
30
|
-
<a href="../changelog" class="text-none text-bold d-inline-block ml-lg-16 font-heading">Changelog</a>
|
|
31
|
-
|
|
32
|
-
<a href="https://github.com/stamat/poops#readme" class="text-none text-bold d-inline-block ml-lg-16 font-heading">Docs</a>
|
|
33
|
-
|
|
34
|
-
<a href="https://github.com/stamat/poops" class="d-inline-block ml-lg-16"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" class="w-24 h-24" style="vertical-align: middle"><path d="M8 0c4.42 0 8 3.58 8 8a8.013 8.013 0 0 1-5.45 7.59c-.4.08-.55-.17-.55-.38 0-.27.01-1.13.01-2.2 0-.75-.25-1.23-.54-1.48 1.78-.2 3.65-.88 3.65-3.95 0-.88-.31-1.59-.82-2.15.08-.2.36-1.02-.08-2.12 0 0-.67-.22-2.2.82-.64-.18-1.32-.27-2-.27-.68 0-1.36.09-2 .27-1.53-1.03-2.2-.82-2.2-.82-.44 1.1-.16 1.92-.08 2.12-.51.56-.82 1.28-.82 2.15 0 3.06 1.86 3.75 3.64 3.95-.23.2-.44.55-.51 1.07-.46.21-1.61.55-2.33-.66-.15-.24-.6-.83-1.23-.82-.67.01-.27.38.01.53.34.19.73.9.82 1.13.16.45.68 1.31 2.69.94 0 .67.01 1.3.01 1.49 0 .21-.15.45-.55.38A7.995 7.995 0 0 1 0 8c0-4.42 3.58-8 8-8Z"></path></svg></a>
|
|
35
|
-
</nav>
|
|
36
|
-
</div>
|
|
37
|
-
</header>
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
<div class="container">
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
</div>
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
<script>document.write('<script src="http://'
|
|
48
|
-
+ (location.host || 'localhost').split(':')[0]
|
|
49
|
-
+ ':35730/livereload.js?snipver=1"></'
|
|
50
|
-
+ 'script>')</script>
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
<script>hljs.highlightAll();</script>
|
|
54
|
-
<script async type="text/javascript" src="../example/dist/js/scripts.min.js"></script>
|
|
55
|
-
</body>
|
|
56
|
-
</html>
|