blazed-past-us 0.5.5 → 0.6.7

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.
Binary file
package/dist/cli/build.js CHANGED
@@ -3,8 +3,9 @@ import { parseMarkdown } from '../server/parse-markdown.js';
3
3
  import fs from 'node:fs';
4
4
  import fsPromises from 'node:fs/promises';
5
5
  import path from 'node:path';
6
- import { log } from '../engine/utils.js';
6
+ import { getPostsRegistry, handlePostsRegistryUpdate, log, postNotInRegistry, } from '../server/server-utils.js';
7
7
  import { generatePostMetadata, writeTransformedPostFile, } from '../server/file-builder.js';
8
+ import { getSlug } from '../runtime/getters.js';
8
9
  /**
9
10
  * CLI entry point.
10
11
  * Resolves project paths and builds bundle.
@@ -33,15 +34,28 @@ function initPaths(root) {
33
34
  * writes transformed files, and emits a JSON index.
34
35
  */
35
36
  async function buildBundle(paths) {
36
- const postsFiles = fs.readdirSync(paths.input);
37
- const data = [];
37
+ const postsFiles = fs.readdirSync(paths.input).filter((f) => f.endsWith('.md'));
38
+ const data = new Array();
39
+ const postsRegistry = { data: await getPostsRegistry(paths.input), update: false };
38
40
  for (const filename of postsFiles) {
39
41
  const filePath = path.join(paths.input, filename);
40
42
  const parsedPostData = await parseMarkdown(filePath);
41
43
  const htmlFilename = filename.replace('.md', '.html');
42
- await generatePostMetadata(data, filePath, htmlFilename, parsedPostData.tags);
44
+ const slug = getSlug(htmlFilename);
45
+ await generatePostMetadata(data, filePath, htmlFilename, parsedPostData.tags, postsRegistry.data);
43
46
  await fsPromises.mkdir(paths.output, { recursive: true });
44
47
  await writeTransformedPostFile(path.join(paths.output, htmlFilename), parsedPostData.html, filename);
48
+ if (postNotInRegistry(postsRegistry.data, slug)) {
49
+ postsRegistry.update = true;
50
+ const stats = await fsPromises.stat(filePath);
51
+ postsRegistry.data?.push({
52
+ slug: getSlug(htmlFilename),
53
+ created: stats.birthtime,
54
+ });
55
+ }
56
+ }
57
+ if (postsRegistry.update) {
58
+ handlePostsRegistryUpdate(postsRegistry.data, paths);
45
59
  }
46
60
  const jsonPosts = JSON.stringify(data);
47
61
  fs.writeFileSync(path.join(paths.output, '/data.json'), jsonPosts);
@@ -1,41 +1,9 @@
1
1
  #!/usr/bin/env node
2
- import fs from 'node:fs';
3
2
  import path from 'node:path';
4
- import { log } from '../engine/utils.js';
3
+ import { copyRecursive, log } from '../server/server-utils.js';
5
4
  const dir = {
6
5
  template: path.resolve(import.meta.dirname, '../template'),
7
6
  target: process.cwd(),
8
7
  };
9
8
  copyRecursive(dir.template, dir.target);
10
9
  log('scafolld all set! 👷', 'green');
11
- function copyRecursive(src, destination) {
12
- const srcPathExists = fs.existsSync(src);
13
- if (!srcPathExists) {
14
- return;
15
- }
16
- if (fs.statSync(src).isDirectory()) {
17
- /**
18
- * Make a folder at the destination path with the same name
19
- * as the one in src.
20
- */
21
- if (!fs.existsSync(destination)) {
22
- fs.mkdirSync(destination);
23
- }
24
- /**
25
- * Copy the content of the src folder to the destination only if
26
- * it already does not exist. (to avoid unwanted overrites)
27
- */
28
- fs.readdirSync(src).forEach((item) => {
29
- const itemSrcPath = path.join(src, item);
30
- const itemDestinationPath = path.join(destination, item);
31
- if (fs.existsSync(itemDestinationPath) &&
32
- fs.statSync(itemDestinationPath).isFile()) {
33
- return;
34
- }
35
- copyRecursive(itemSrcPath, itemDestinationPath);
36
- });
37
- }
38
- else {
39
- fs.copyFileSync(src, destination);
40
- }
41
- }
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export * from './engine/getters';
2
- export * from './engine/utils';
3
- export * from './engine/render';
4
- export * from './engine/requests';
1
+ export * from './runtime/getters';
2
+ export * from './runtime/utils';
3
+ export * from './runtime/render';
4
+ export * from './runtime/requests';
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export * from './engine/getters';
2
- export * from './engine/utils';
3
- export * from './engine/render';
4
- export * from './engine/requests';
1
+ export * from './runtime/getters';
2
+ export * from './runtime/utils';
3
+ export * from './runtime/render';
4
+ export * from './runtime/requests';
@@ -1,8 +1,14 @@
1
1
  import type { PostMetadata, Config, PostDataType } from '../types';
2
2
  declare function getPostData(postsMetadata: PostMetadata[], slug: string, option: PostDataType): string | string[] | Date | undefined;
3
+ declare function getPathnameFromLocationHash(locationHash: string): string;
4
+ declare function getLocationHashSpecifics(window: Window): {
5
+ pathname: string;
6
+ queryString: string;
7
+ urlParams: URLSearchParams;
8
+ };
3
9
  declare function getSlug(htmlFilename: string): string;
4
10
  declare function getTitle(htmlFilename: string): string;
5
11
  declare function getBrief(fileContent: string, lines: number): string;
6
12
  declare function getTags(fileContent: string): string[];
7
13
  declare function getColoredTagsHTML(tags: string, config: Config): string;
8
- export { getPostData, getTitle, getTags, getBrief, getColoredTagsHTML, getSlug };
14
+ export { getPostData, getTitle, getTags, getBrief, getColoredTagsHTML, getSlug, getPathnameFromLocationHash, getLocationHashSpecifics, };
@@ -1,6 +1,16 @@
1
1
  function getPostData(postsMetadata, slug, option) {
2
2
  return postsMetadata.find((post) => post.slug === slug)?.[option];
3
3
  }
4
+ function getPathnameFromLocationHash(locationHash) {
5
+ return locationHash.split('/').splice(1).join('/');
6
+ }
7
+ function getLocationHashSpecifics(window) {
8
+ const hashRoute = window.location.hash;
9
+ const pathname = getPathnameFromLocationHash(hashRoute);
10
+ const queryString = hashRoute.split('?')[1] || '';
11
+ const urlParams = new URLSearchParams(queryString);
12
+ return { pathname, queryString, urlParams };
13
+ }
4
14
  function getSlug(htmlFilename) {
5
15
  return htmlFilename.replace('.html', '');
6
16
  }
@@ -42,4 +52,4 @@ function getColoredTagsHTML(tags, config) {
42
52
  })
43
53
  .join(`<span class="tag-separator">, </span>`);
44
54
  }
45
- export { getPostData, getTitle, getTags, getBrief, getColoredTagsHTML, getSlug };
55
+ export { getPostData, getTitle, getTags, getBrief, getColoredTagsHTML, getSlug, getPathnameFromLocationHash, getLocationHashSpecifics, };
@@ -1,5 +1,6 @@
1
1
  import { Config, PostMetadata, PostHTML } from '../types';
2
- export declare function fetchResources(config: Config): Promise<void | {
2
+ declare function fetchResources(config: Config): Promise<void | {
3
3
  postsMetadata: PostMetadata[];
4
4
  postsHTML: PostHTML[];
5
5
  }>;
6
+ export { fetchResources };
@@ -1,4 +1,4 @@
1
- export async function fetchResources(config) {
1
+ async function fetchResources(config) {
2
2
  try {
3
3
  const postsMetadata = await fetchPostsMetaData(config);
4
4
  const postsHTML = await fetchAllPostsHTML(config.base_url, postsMetadata);
@@ -41,3 +41,4 @@ async function fetchPostsMetaData(config) {
41
41
  throw error;
42
42
  }
43
43
  }
44
+ export { fetchResources };
@@ -0,0 +1,8 @@
1
+ import { Config, PostMetadata } from '../types';
2
+ declare function postExists(postsMetadata: any[], slug: string): boolean;
3
+ declare function beautifyDate(d: Date | undefined): undefined | string;
4
+ declare function inject(root: HTMLElement, html: string): void;
5
+ declare function activateBoltRotator(): void;
6
+ declare function setTitleAndSubtitle(packageName: string, config: Config): void;
7
+ declare function filterByUrlQueryIfPresent(postsMetadata: PostMetadata[], tags: string[]): PostMetadata[];
8
+ export { postExists, beautifyDate, inject, activateBoltRotator, setTitleAndSubtitle, filterByUrlQueryIfPresent, };
@@ -1,11 +1,6 @@
1
- import chalk from 'chalk';
2
- import pkg from '../../package.json' with { type: 'json' };
3
1
  function postExists(postsMetadata, slug) {
4
2
  return postsMetadata.some((post) => post.slug === slug);
5
3
  }
6
- function getPathnameFromLocationHash(locationHash) {
7
- return locationHash.split('/').splice(1).join('/');
8
- }
9
4
  function beautifyDate(d) {
10
5
  if (!d)
11
6
  return;
@@ -19,23 +14,6 @@ function beautifyDate(d) {
19
14
  function inject(root, html) {
20
15
  root.innerHTML = html;
21
16
  }
22
- function log(msg, color) {
23
- let coloredMsg;
24
- switch (color) {
25
- case 'yellow':
26
- coloredMsg = chalk.yellow(msg);
27
- break;
28
- case 'green':
29
- coloredMsg = chalk.green(msg);
30
- break;
31
- case 'red':
32
- coloredMsg = chalk.red(msg);
33
- break;
34
- default:
35
- coloredMsg = msg;
36
- }
37
- console.log(`${chalk.blue(pkg.name + ' v' + pkg.version)} ${coloredMsg}`);
38
- }
39
17
  function activateBoltRotator() {
40
18
  const logoElement = document.querySelector('.logo');
41
19
  window.onhashchange = () => {
@@ -58,11 +36,4 @@ function setTitleAndSubtitle(packageName, config) {
58
36
  function filterByUrlQueryIfPresent(postsMetadata, tags) {
59
37
  return postsMetadata.filter((post) => tags ? tags.some((tag) => post.tags.includes(tag)) : true);
60
38
  }
61
- function getLocationHashSpecifics(window) {
62
- const hashRoute = window.location.hash;
63
- const pathname = getPathnameFromLocationHash(hashRoute);
64
- const queryString = hashRoute.split('?')[1] || '';
65
- const urlParams = new URLSearchParams(queryString);
66
- return { pathname, queryString, urlParams };
67
- }
68
- export { postExists, beautifyDate, inject, log, activateBoltRotator, setTitleAndSubtitle, getPathnameFromLocationHash, filterByUrlQueryIfPresent, getLocationHashSpecifics, };
39
+ export { postExists, beautifyDate, inject, activateBoltRotator, setTitleAndSubtitle, filterByUrlQueryIfPresent, };
@@ -1,4 +1,4 @@
1
- import { PostMetadata } from '../types';
1
+ import { PostMetadata, PostsRegistry } from '../types';
2
2
  declare function writeTransformedPostFile(outputPath: string, postHtmlContent: string, filename: string): Promise<void>;
3
- declare function generatePostMetadata(data: Array<PostMetadata>, filePath: string, htmlFilename: string, postTags: string[]): Promise<void>;
3
+ declare function generatePostMetadata(data: Array<PostMetadata>, filePath: string, htmlFilename: string, postTags: string[], persistentPostsMetadata: PostsRegistry | void): Promise<void>;
4
4
  export { generatePostMetadata, writeTransformedPostFile };
@@ -1,5 +1,5 @@
1
1
  import chalk from 'chalk';
2
- import { getTitle, getBrief, getSlug } from '../engine/getters.js';
2
+ import { getTitle, getBrief, getSlug } from '../runtime/getters.js';
3
3
  import fsPromises from 'node:fs/promises';
4
4
  async function writeTransformedPostFile(outputPath, postHtmlContent, filename) {
5
5
  await fsPromises
@@ -7,17 +7,18 @@ async function writeTransformedPostFile(outputPath, postHtmlContent, filename) {
7
7
  .then(() => console.log(chalk.green(`✔ ${filename}`)))
8
8
  .catch((error) => console.error(error));
9
9
  }
10
- async function generatePostMetadata(data, filePath, htmlFilename, postTags) {
10
+ async function generatePostMetadata(data, filePath, htmlFilename, postTags, persistentPostsMetadata) {
11
11
  const stats = await fsPromises.stat(filePath);
12
12
  const fileContent = await fsPromises.readFile(filePath, 'utf-8');
13
+ const slug = getSlug(htmlFilename);
14
+ const createdDate = persistentPostsMetadata?.find((p) => p.slug === slug)?.created || stats.birthtime;
13
15
  data.push({
14
16
  slug: getSlug(htmlFilename),
15
17
  filename: htmlFilename,
16
18
  title: getTitle(htmlFilename),
17
19
  brief: getBrief(fileContent, 3),
18
20
  tags: postTags,
19
- created: stats.birthtime,
20
- modified: stats.mtime,
21
+ created: createdDate,
21
22
  });
22
23
  }
23
24
  export { generatePostMetadata, writeTransformedPostFile };
@@ -6,7 +6,7 @@ import remarkRehype from 'remark-rehype';
6
6
  import rehypePrettyCode from 'rehype-pretty-code';
7
7
  import rehypeStringify from 'rehype-stringify';
8
8
  import path from 'node:path';
9
- import { getColoredTagsHTML } from '../engine/getters.js';
9
+ import { getColoredTagsHTML } from '../runtime/getters.js';
10
10
  /**
11
11
  * Converts a Markdown file to HTML with syntax highlighting.
12
12
  *
@@ -0,0 +1,7 @@
1
+ import { MsgColor, PostsPaths, PostsRegistry } from '../types';
2
+ declare function postNotInRegistry(registry: PostsRegistry | [] | void, slug: string): boolean;
3
+ declare function handlePostsRegistryUpdate(postsRegistry: PostsRegistry | void, paths: PostsPaths): void;
4
+ declare function getPostsRegistry(postsDirectoryPath: string): Promise<void | PostsRegistry>;
5
+ declare function copyRecursive(src: string, destination: string): void;
6
+ declare function log(msg: string, color: MsgColor): void;
7
+ export { postNotInRegistry, handlePostsRegistryUpdate, getPostsRegistry, copyRecursive, log, };
@@ -0,0 +1,73 @@
1
+ import path from 'node:path';
2
+ import fsPromises from 'node:fs/promises';
3
+ import fs from 'node:fs';
4
+ import chalk from 'chalk';
5
+ import pkg from '../../package.json' with { type: 'json' };
6
+ function postNotInRegistry(registry, slug) {
7
+ return !registry?.some((p) => p.slug === slug);
8
+ }
9
+ function handlePostsRegistryUpdate(postsRegistry, paths) {
10
+ if (postsRegistry) {
11
+ const postsRegistryJSON = JSON.stringify(postsRegistry);
12
+ fs.writeFileSync(path.join(paths.input, 'registry.json'), postsRegistryJSON);
13
+ log('posts registry updated 💾', 'yellow');
14
+ }
15
+ }
16
+ async function getPostsRegistry(postsDirectoryPath) {
17
+ try {
18
+ const resp = await fsPromises.readFile(path.join(postsDirectoryPath, 'registry.json'), 'utf8');
19
+ return JSON.parse(resp);
20
+ }
21
+ catch (error) {
22
+ console.error(error);
23
+ }
24
+ }
25
+ function copyRecursive(src, destination) {
26
+ const srcPathExists = fs.existsSync(src);
27
+ if (!srcPathExists) {
28
+ return;
29
+ }
30
+ if (fs.statSync(src).isDirectory()) {
31
+ /**
32
+ * Make a folder at the destination path with the same name
33
+ * as the one in src.
34
+ */
35
+ if (!fs.existsSync(destination)) {
36
+ fs.mkdirSync(destination);
37
+ }
38
+ /**
39
+ * Copy the content of the src folder to the destination only if
40
+ * it already does not exist. (to avoid unwanted overrites)
41
+ */
42
+ fs.readdirSync(src).forEach((item) => {
43
+ const itemSrcPath = path.join(src, item);
44
+ const itemDestinationPath = path.join(destination, item);
45
+ if (fs.existsSync(itemDestinationPath) &&
46
+ fs.statSync(itemDestinationPath).isFile()) {
47
+ return;
48
+ }
49
+ copyRecursive(itemSrcPath, itemDestinationPath);
50
+ });
51
+ }
52
+ else {
53
+ fs.copyFileSync(src, destination);
54
+ }
55
+ }
56
+ function log(msg, color) {
57
+ let coloredMsg;
58
+ switch (color) {
59
+ case 'yellow':
60
+ coloredMsg = chalk.yellow(msg);
61
+ break;
62
+ case 'green':
63
+ coloredMsg = chalk.green(msg);
64
+ break;
65
+ case 'red':
66
+ coloredMsg = chalk.red(msg);
67
+ break;
68
+ default:
69
+ coloredMsg = msg;
70
+ }
71
+ console.log(`${chalk.blue(pkg.name + ' v' + pkg.version)} ${coloredMsg}`);
72
+ }
73
+ export { postNotInRegistry, handlePostsRegistryUpdate, getPostsRegistry, copyRecursive, log, };
@@ -8,7 +8,7 @@
8
8
  "main": "./src/index.html",
9
9
  "scripts": {
10
10
  "build": "rimraf dist && vite build && blazed build",
11
- "dev": "nodemon --watch src --ext ts,json,css,html --exec \"npm run build && vite preview\""
11
+ "dev": "nodemon --watch src --ext ts,css,html --exec \"npm run build && vite preview\""
12
12
  },
13
13
  "devDependencies": {
14
14
  "nodemon": "^3.1.11",
@@ -0,0 +1 @@
1
+ []
@@ -15,7 +15,7 @@ function routeRenderer(root, postsMetadata, postsHTML) {
15
15
  const views = { home, post, notFound };
16
16
 
17
17
  switch (true) {
18
- case pathname === '' || pathname === 'home' || queryString:
18
+ case pathname === '' || pathname === 'home' || !!queryString:
19
19
  render('home', root, views, postsMetadata, postsHTML, urlParams.get('tags'));
20
20
  break;
21
21
 
@@ -8,35 +8,30 @@ header {
8
8
  header .top {
9
9
  display: flex;
10
10
  flex-direction: column;
11
+ letter-spacing: 0.15rem;
11
12
  }
12
13
 
13
14
  header .top .title {
14
15
  font-family: 'Bangers Regular';
15
16
  font-size: 3.1rem;
16
17
  color: var(--light-blue-09);
17
- letter-spacing: 0.15rem;
18
18
  }
19
19
 
20
20
  header .top .subtitle {
21
- font-size: 0.85rem;
22
21
  padding-left: 0.3rem;
22
+ font-size: 0.85rem;
23
23
  font-family: 'Inter Extra Bold';
24
- color: var(--light-yellow);
25
24
  text-transform: uppercase;
26
- letter-spacing: 0.15rem;
27
- opacity: 1;
25
+ color: var(--light-yellow);
28
26
  animation: flicker 4s infinite;
29
27
  }
30
28
 
31
29
  header .logo {
32
- border: 1px solid white;
33
- height: 6.25rem;
30
+ height: 3.75rem;
31
+ width: 3.75rem;
32
+ margin-right: 1.25rem;
34
33
  border: 0.25rem solid var(--light-blue-09);
35
34
  border-radius: 50%;
36
- width: 6.25rem;
37
- max-width: 3.75rem;
38
- max-height: 3.75rem;
39
- margin-right: 1.25rem;
40
35
  }
41
36
 
42
37
  .logo.rotate {
@@ -45,34 +40,31 @@ header .logo {
45
40
  }
46
41
 
47
42
  .logo #bolt {
48
- animation: flicker 5s infinite;
43
+ animation: flicker 4s infinite;
49
44
  }
50
45
 
51
46
  .logo .bolt-wrapper {
52
- min-width: 3.75rem;
53
- min-height: 3.75rem;
54
- filter: drop-shadow(0 0 0.2rem #00edfa6e) drop-shadow(0 0 0.345rem #00edfa6b)
55
- drop-shadow(0 0 0.4275rem #00edfa69) drop-shadow(0 0 0.55rem #00edfa70);
47
+ width: 3.75rem;
48
+ height: 3.75rem;
49
+ filter: drop-shadow(0 0 0.5rem #00edfa41) drop-shadow(0 0 0.4rem #00edfa6b)
50
+ drop-shadow(0 0 0.4em #00edfa69) drop-shadow(0 0 0.6rem #00edfa70);
56
51
  }
57
52
 
58
- .logo .bolt-wrapper .top {
53
+ .logo .bolt-wrapper > * {
59
54
  position: absolute;
60
55
  transform-origin: center;
56
+ }
57
+
58
+ .logo .bolt-wrapper .top {
61
59
  top: 19%;
62
60
  left: 33%;
63
- width: 0;
64
- height: 0;
65
61
  border-left: 0.9375rem solid transparent;
66
62
  border-bottom: 1.384375rem solid #ffff90;
67
63
  }
68
64
 
69
65
  .logo .bolt-wrapper .bottom {
70
- position: absolute;
71
- transform-origin: center;
72
- top: 46%;
66
+ top: 45%;
73
67
  right: 30%;
74
- width: 0;
75
- height: 0;
76
68
  border-right: 0.9375rem solid transparent;
77
69
  border-top: 1.40625rem solid #ffffb4;
78
70
  }
@@ -1,6 +1,6 @@
1
1
  .post-card {
2
2
  padding: 1.5625rem 2.1875rem 1.5625rem 1.25rem;
3
- margin-top: 1.25rem;
3
+ margin-top: 1.2rem;
4
4
  border-radius: var(--border-radius);
5
5
  opacity: 0.9;
6
6
  }
@@ -12,8 +12,8 @@
12
12
 
13
13
  .post-card .title {
14
14
  font-family: 'Inter Extra Bold';
15
- color: rgb(241, 241, 241);
16
15
  font-size: 2.25rem;
16
+ color: rgb(241, 241, 241);
17
17
  }
18
18
 
19
19
  .post-card p {
@@ -29,7 +29,7 @@
29
29
  font-size: var(--body-font-size);
30
30
  display: -webkit-box;
31
31
  line-clamp: 2;
32
- -webkit-line-clamp: 2; /* number of lines to show */
32
+ -webkit-line-clamp: 2;
33
33
  -webkit-box-orient: vertical;
34
34
  overflow: hidden;
35
35
  }
@@ -8,8 +8,11 @@
8
8
  --background: linear-gradient(#0f0f23, #1d1d43);
9
9
  --max-width: 55rem;
10
10
  --neon: #82f9ff;
11
+ --post-title-color: rgb(241, 241, 241);
12
+ --body-text-color: #ececec;
11
13
  --light-blue-09: rgba(129, 213, 255, 0.9);
12
14
  --light-blue-05: rgba(129, 213, 255, 0.5);
15
+ --light-grey-06: rgba(255, 255, 255, 0.6);
13
16
  --light-yellow: #ffffb4;
14
17
  --body-font-family: 'Merriweather Sans Light';
15
18
  --body-font-size: 1.1rem;
@@ -55,8 +58,8 @@ canvas {
55
58
 
56
59
  .date {
57
60
  font-family: 'Inter Regular';
58
- color: rgba(255, 255, 255, 0.6);
59
- margin-top: 0.1rem;
60
61
  font-size: 0.85rem;
62
+ color: var(--light-grey-06);
63
+ margin-top: 0.1rem;
61
64
  text-transform: uppercase;
62
65
  }
@@ -6,7 +6,7 @@
6
6
  .post p {
7
7
  font-family: var(--body-font-family);
8
8
  font-size: var(--body-font-size);
9
- color: #ececec;
9
+ color: var(--body-text-color);
10
10
  text-align: justify;
11
11
  line-height: 1.8;
12
12
  letter-spacing: 0.04rem;
@@ -15,12 +15,12 @@
15
15
  .post .tag-separator {
16
16
  font-size: 1.4rem;
17
17
  font-family: 'Permanent Marker Regular';
18
- color: #ececec;
18
+ color: var(--body-text-color);
19
19
  }
20
20
 
21
21
  .post .title {
22
22
  font-family: 'Inter Extra Bold';
23
- color: rgb(241, 241, 241);
23
+ color: var(--post-title-color);
24
24
  font-size: 2.25rem;
25
25
  }
26
26
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "blazed-past-us",
3
- "version": "0.5.5",
3
+ "version": "0.6.7",
4
4
  "description": "A static blog framework made for developers that allows content to be written in Markdown directly from the IDE.",
5
5
  "license": "MIT",
6
6
  "author": "gass-git",
Binary file
@@ -1,15 +0,0 @@
1
- import { Config, MsgColor, PostMetadata } from '../types';
2
- declare function postExists(postsMetadata: any[], slug: string): boolean;
3
- declare function getPathnameFromLocationHash(locationHash: string): string;
4
- declare function beautifyDate(d: Date | undefined): undefined | string;
5
- declare function inject(root: HTMLElement, html: string): void;
6
- declare function log(msg: string, color: MsgColor): void;
7
- declare function activateBoltRotator(): void;
8
- declare function setTitleAndSubtitle(packageName: string, config: Config): void;
9
- declare function filterByUrlQueryIfPresent(postsMetadata: PostMetadata[], tags: string[]): PostMetadata[];
10
- declare function getLocationHashSpecifics(window: Window): {
11
- pathname: string;
12
- queryString: string;
13
- urlParams: URLSearchParams;
14
- };
15
- export { postExists, beautifyDate, inject, log, activateBoltRotator, setTitleAndSubtitle, getPathnameFromLocationHash, filterByUrlQueryIfPresent, getLocationHashSpecifics, };
File without changes
File without changes