diff --git a/.changeset/modern-boats-talk.md b/.changeset/modern-boats-talk.md new file mode 100644 index 0000000..f2a6624 --- /dev/null +++ b/.changeset/modern-boats-talk.md @@ -0,0 +1,5 @@ +--- +"notion-downloader": patch +--- + +Created a urlEncoding naming strategy diff --git a/packages/notion-downloader/src/config/schema.ts b/packages/notion-downloader/src/config/schema.ts index 1f4b247..a8cf79f 100644 --- a/packages/notion-downloader/src/config/schema.ts +++ b/packages/notion-downloader/src/config/schema.ts @@ -26,6 +26,7 @@ export const MarkdownNamingStrategyNames = z.enum([ "githubSlug", "notionSlug", "title", + "urlEncoding", ]) export type MarkdownNamingStrategyNames = z.infer< typeof MarkdownNamingStrategyNames diff --git a/packages/notion-downloader/src/namingStrategy/getNamingStrategy.ts b/packages/notion-downloader/src/namingStrategy/getNamingStrategy.ts index 74288a6..91a3cab 100644 --- a/packages/notion-downloader/src/namingStrategy/getNamingStrategy.ts +++ b/packages/notion-downloader/src/namingStrategy/getNamingStrategy.ts @@ -14,6 +14,7 @@ import { GuidNamingStrategy, NotionSlugNamingStrategy, TitleNamingStrategy, + UrlEncodingNamingStrategy, } from "./namingStrategies" export function getAssetNamingStrategy( @@ -42,6 +43,8 @@ export function getMarkdownNamingStrategy( return new TitleNamingStrategy() case AllNamingSchemaName.enum.guid: return new GuidNamingStrategy() + case MarkdownNamingStrategyNames.enum.urlEncoding: + return new UrlEncodingNamingStrategy() case MarkdownNamingStrategyNames.enum.githubSlug: return new GithubSlugNamingStrategy(slugProperty) case MarkdownNamingStrategyNames.enum.notionSlug: diff --git a/packages/notion-downloader/src/namingStrategy/namingStrategies.ts b/packages/notion-downloader/src/namingStrategy/namingStrategies.ts index 06da40b..ff952b8 100644 --- a/packages/notion-downloader/src/namingStrategy/namingStrategies.ts +++ b/packages/notion-downloader/src/namingStrategy/namingStrategies.ts @@ -97,3 +97,12 @@ export class TitleNamingStrategy extends NamingStrategy { .replaceAll("--", "-") } } + +export class UrlEncodingNamingStrategy extends NamingStrategy { + constructor() { + super([ObjectType.enum.page, ObjectType.enum.database]) + } + protected _nameForObject(notionObject: NotionDatabase | NotionPage): string { + return encodeURIComponent(notionObject.title) + } +}