- {tabLinks.map((item, i) => (
+ {tabLinks.map((item: {name: string, children: string}, i: number) => (
{
const singlePages = await getSinglePage(collection);
const taxonomyPages = singlePages.map((page) => page.data[name]);
- let taxonomies = [];
+ let taxonomies: string[] = [];
for (let i = 0; i < taxonomyPages.length; i++) {
const categoryArray = taxonomyPages[i];
for (let j = 0; j < categoryArray.length; j++) {
@@ -20,7 +20,7 @@ export const getTaxonomy = async (collection: string, name: string) => {
export const getAllTaxonomy = async (collection: string, name: string) => {
const singlePages = await getSinglePage(collection);
const taxonomyPages = singlePages.map((page) => page.data[name]);
- let taxonomies = [];
+ let taxonomies: string[] = [];
for (let i = 0; i < taxonomyPages.length; i++) {
const categoryArray = taxonomyPages[i];
for (let j = 0; j < categoryArray.length; j++) {
diff --git a/src/lib/utils/dateFormat.ts b/src/lib/utils/dateFormat.ts
index f712a8e..65b2397 100755
--- a/src/lib/utils/dateFormat.ts
+++ b/src/lib/utils/dateFormat.ts
@@ -1,6 +1,6 @@
import { formatInTimeZone } from "date-fns-tz";
-const dateFormat = (date:Date | string, format:string = "dd MMM, yyyy") => {
+const dateFormat = (date:Date | string, format:string = "dd MMM, yyyy"): string => {
return formatInTimeZone(date, "America/New_York", format);
};
diff --git a/src/lib/utils/readingTime.ts b/src/lib/utils/readingTime.ts
index ebd8fcc..6968ac2 100644
--- a/src/lib/utils/readingTime.ts
+++ b/src/lib/utils/readingTime.ts
@@ -1,5 +1,5 @@
// content reading
-const readingTime = (content: string) => {
+const readingTime = (content: string): string => {
const WPS = 275 / 60;
let images = 0;
diff --git a/src/lib/utils/similarItems.ts b/src/lib/utils/similarItems.ts
index d402ba0..63041f4 100644
--- a/src/lib/utils/similarItems.ts
+++ b/src/lib/utils/similarItems.ts
@@ -1,7 +1,7 @@
// similer products
const similerItems = (currentItem: any, allItems: any, slug: string) => {
- let categories: [] = [];
- let tags: [] = [];
+ let categories: string[] = [];
+ let tags: string[] = [];
// set categories
if (currentItem.data.categories.length > 0) {
diff --git a/src/lib/utils/taxonomyFilter.ts b/src/lib/utils/taxonomyFilter.ts
index 1341721..a2d1543 100755
--- a/src/lib/utils/taxonomyFilter.ts
+++ b/src/lib/utils/taxonomyFilter.ts
@@ -1,6 +1,6 @@
import { slugify } from "@/lib/utils/textConverter";
-const taxonomyFilter = (posts: any[], name: string, key: any) =>
+const taxonomyFilter = (posts: any[], name: string, key: string) =>
posts.filter((post) =>
post.data[name].map((name: string) => slugify(name)).includes(key)
);
diff --git a/src/lib/utils/textConverter.ts b/src/lib/utils/textConverter.ts
index dbfd99c..a2354cb 100644
--- a/src/lib/utils/textConverter.ts
+++ b/src/lib/utils/textConverter.ts
@@ -7,22 +7,18 @@ marked.use({
});
// slugify
-export const slugify = (content: string) => {
- if (!content) return null;
+export const slugify = (content: string): string => {
return slug(content);
};
// markdownify
-export const markdownify = (content: string, div?:boolean) => {
- if (!content) return null;
-
+export const markdownify = (content: string, div?:boolean): string => {
return div? marked.parse(content) : marked.parseInline(content);
};
// humanize
-export const humanize = (content: string) => {
- if (!content) return null;
+export const humanize = (content: string): string => {
return content
.replace(/^[\s_]+|[\s_]+$/g, "")
@@ -33,9 +29,7 @@ export const humanize = (content: string) => {
};
// plainify
-export const plainify = (content: string) => {
- if (!content) return null;
-
+export const plainify = (content: string): string => {
const filterBrackets = content.replace(/<\/?[^>]+(>|$)/gm, "");
const filterSpaces = filterBrackets.replace(/[\r\n]\s*[\r\n]/gm, "");
const stripHTML = htmlEntityDecoder(filterSpaces);
diff --git a/src/pages/[regular].astro b/src/pages/[regular].astro
index 7879c79..43bb11c 100755
--- a/src/pages/[regular].astro
+++ b/src/pages/[regular].astro
@@ -3,7 +3,7 @@ import Base from "@/layouts/Base.astro";
import { getSinglePage } from "@/lib/contentParser.astro";
import PageHeader from "@/partials/PageHeader.astro";
-export async function getStaticPaths() {
+export async function getStaticPaths(): Promise<{params: {regular: string}}[]> {
const pages = await getSinglePage("pages");
const paths = pages.map((page) => ({
diff --git a/src/pages/authors/[single].astro b/src/pages/authors/[single].astro
index 0a6c87b..c27f583 100755
--- a/src/pages/authors/[single].astro
+++ b/src/pages/authors/[single].astro
@@ -6,8 +6,9 @@ import config from "@/config/config.json";
import Base from "@/layouts/Base.astro";
import { getSinglePage } from "@/lib/contentParser.astro";
import { slugify } from "@/lib/utils/textConverter";
+import type { Blog_folder } from "types";
-export async function getStaticPaths() {
+export async function getStaticPaths(): Promise<{params: {single: string}, props: {author: string}}[]> {
const authors = await getSinglePage("authors");
const paths = authors.map((author) => ({
@@ -19,7 +20,7 @@ export async function getStaticPaths() {
return paths;
}
-const { blog_folder } = config.settings;
+const { blog_folder }: Blog_folder = config.settings;
const { author } = Astro.props;
const { title, social, meta_title, description, image } = author.data;
const { Content } = await author.render();
diff --git a/src/pages/categories/[category].astro b/src/pages/categories/[category].astro
index 17b9a77..d6b9d9c 100755
--- a/src/pages/categories/[category].astro
+++ b/src/pages/categories/[category].astro
@@ -7,7 +7,7 @@ import { getTaxonomy } from "@/lib/taxonomyParser.astro";
import taxonomyFilter from "@/lib/utils/taxonomyFilter";
import PageHeader from "@/partials/PageHeader.astro";
-export async function getStaticPaths() {
+export async function getStaticPaths(): Promise<{params: {category: string}}[]> {
const categories = await getTaxonomy(
config.settings.blog_folder,
"categories"
@@ -22,7 +22,7 @@ export async function getStaticPaths() {
const { category } = Astro.params;
const posts = await getSinglePage(config.settings.blog_folder);
-const filterByCategories = taxonomyFilter(posts, "categories", category);
+const filterByCategories = taxonomyFilter(posts, "categories", category!);
---
diff --git a/src/pages/categories/index.astro b/src/pages/categories/index.astro
index e16ffef..107cdd6 100755
--- a/src/pages/categories/index.astro
+++ b/src/pages/categories/index.astro
@@ -4,8 +4,9 @@ import Base from "@/layouts/Base.astro";
import { getAllTaxonomy, getTaxonomy } from "@/lib/taxonomyParser.astro";
import { humanize } from "@/lib/utils/textConverter";
import PageHeader from "@/partials/PageHeader.astro";
+import type { Blog_folder } from "types";
-const { blog_folder } = config.settings;
+const { blog_folder }: Blog_folder = config.settings;
const categories = await getTaxonomy(blog_folder, "categories");
const allCategories = await getAllTaxonomy(blog_folder, "categories");
---
@@ -16,7 +17,7 @@ const allCategories = await getAllTaxonomy(blog_folder, "categories");
{
- categories.map((category: any) => {
+ categories.map((category: string) => {
const count = allCategories.filter((c) => c === category).length;
return (
-
diff --git a/src/pages/contact.astro b/src/pages/contact.astro
index 8a6fd59..2a66c73 100644
--- a/src/pages/contact.astro
+++ b/src/pages/contact.astro
@@ -5,7 +5,7 @@ import PageHeader from "@/partials/PageHeader.astro";
import { getEntryBySlug } from "astro:content";
const entry = await getEntryBySlug("pages", "contact");
-const { contact_form_action } = config.params;
+const { contact_form_action }: {contact_form_action: string} = config.params;
const { title, description, meta_title, image } = entry.data;
---
diff --git a/src/pages/index.astro b/src/pages/index.astro
index 09801b6..dcad88f 100755
--- a/src/pages/index.astro
+++ b/src/pages/index.astro
@@ -6,11 +6,22 @@ import Testimonial from "@/partials/Testimonial.astro";
import { Image } from "@astrojs/image/components";
import { getEntryBySlug } from "astro:content";
import { FaCheck } from "react-icons/fa/index.js";
+import type { Button, Feature } from "types";
+
+interface Homepage {
+ banner: {
+ title: string
+ content: string,
+ image: string,
+ button: Button,
+ }
+ features: Feature[]
+}
const homepage = await getEntryBySlug("homepage", "index");
const testimonial = await getEntryBySlug("sections", "testimonial");
const call_to_action = await getEntryBySlug("sections", "call-to-action");
-const { banner, features } = homepage.data;
+const { banner, features }: Homepage = homepage.data;
---
@@ -50,13 +61,7 @@ const { banner, features } = homepage.data;
{
features.map(
(
- feature: {
- button: any;
- image: string;
- bulletpoints: any;
- content: string;
- title: string;
- },
+ feature,
index: number
) => (
diff --git a/src/pages/posts/[single].astro b/src/pages/posts/[single].astro
index 5632442..4d7b28d 100755
--- a/src/pages/posts/[single].astro
+++ b/src/pages/posts/[single].astro
@@ -4,7 +4,7 @@ import Base from "@/layouts/Base.astro";
import PostSingle from "@/layouts/PostSingle.astro";
import { getSinglePage } from "@/lib/contentParser.astro";
-export async function getStaticPaths() {
+export async function getStaticPaths(): Promise<{params: {single: string}, props: {post: any}}[]> {
const posts = await getSinglePage(config.settings.blog_folder);
const paths = posts.map((post) => ({
diff --git a/src/pages/posts/index.astro b/src/pages/posts/index.astro
index 552b1ff..2e2ee72 100755
--- a/src/pages/posts/index.astro
+++ b/src/pages/posts/index.astro
@@ -17,7 +17,7 @@ const allCategories = await getAllTaxonomy(blog_folder, "categories");
const categories = await getTaxonomy(blog_folder, "categories");
const tags = await getTaxonomy(blog_folder, "tags");
const sortedPosts = sortByDate(posts);
-const totalPages = Math.ceil(posts.length / config.settings.pagination);
+const totalPages: number = Math.ceil(posts.length / config.settings.pagination);
const currentPosts = sortedPosts.slice(0, config.settings.pagination);
---
diff --git a/src/pages/tags/[tag].astro b/src/pages/tags/[tag].astro
index 75673fa..907e148 100755
--- a/src/pages/tags/[tag].astro
+++ b/src/pages/tags/[tag].astro
@@ -19,7 +19,7 @@ export async function getStaticPaths() {
const { tag } = Astro.params;
const posts = await getSinglePage(config.settings.blog_folder);
-const filterByCategories = taxonomyFilter(posts, "tags", tag);
+const filterByCategories = taxonomyFilter(posts, "tags", tag!);
---
diff --git a/src/pages/tags/index.astro b/src/pages/tags/index.astro
index b152d9f..f00ac14 100755
--- a/src/pages/tags/index.astro
+++ b/src/pages/tags/index.astro
@@ -4,8 +4,9 @@ import Base from "@/layouts/Base.astro";
import { getAllTaxonomy, getTaxonomy } from "@/lib/taxonomyParser.astro";
import { humanize } from "@/lib/utils/textConverter";
import PageHeader from "@/partials/PageHeader.astro";
+import type { Blog_folder } from "types";
-const { blog_folder } = config.settings;
+const { blog_folder }: Blog_folder = config.settings;
const tags = await getTaxonomy(blog_folder, "tags");
const allTags = await getAllTaxonomy(blog_folder, "tags");
---
diff --git a/types/index.d.ts b/types/index.d.ts
new file mode 100644
index 0000000..ade2158
--- /dev/null
+++ b/types/index.d.ts
@@ -0,0 +1,15 @@
+export type Feature = {
+ button: button
+ image: string
+ bulletpoints: string[]
+ content: string
+ title: string
+}
+
+export type Button = {
+ enable: boolean
+ label: string
+ link: string
+}
+
+export type Blog_folder = {blog_folder: string};
\ No newline at end of file