@endora-commerce/mod-blog 0.100.0
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/LICENSE +21 -0
- package/README.md +62 -0
- package/dist/admin/api/blog-client.d.ts +70 -0
- package/dist/admin/api/blog-client.d.ts.map +1 -0
- package/dist/admin/api/blog-client.js +137 -0
- package/dist/admin/api/blog-client.js.map +1 -0
- package/dist/admin/components/CategoryTreeNode.d.ts +25 -0
- package/dist/admin/components/CategoryTreeNode.d.ts.map +1 -0
- package/dist/admin/components/CategoryTreeNode.js +14 -0
- package/dist/admin/components/CategoryTreeNode.js.map +1 -0
- package/dist/admin/components/PostStatusBadge.d.ts +7 -0
- package/dist/admin/components/PostStatusBadge.d.ts.map +1 -0
- package/dist/admin/components/PostStatusBadge.js +16 -0
- package/dist/admin/components/PostStatusBadge.js.map +1 -0
- package/dist/admin/components/RelatedPostsPicker.d.ts +11 -0
- package/dist/admin/components/RelatedPostsPicker.d.ts.map +1 -0
- package/dist/admin/components/RelatedPostsPicker.js +77 -0
- package/dist/admin/components/RelatedPostsPicker.js.map +1 -0
- package/dist/admin/components/RelatedProductsPicker.d.ts +9 -0
- package/dist/admin/components/RelatedProductsPicker.d.ts.map +1 -0
- package/dist/admin/components/RelatedProductsPicker.js +66 -0
- package/dist/admin/components/RelatedProductsPicker.js.map +1 -0
- package/dist/admin/components/TagPicker.d.ts +9 -0
- package/dist/admin/components/TagPicker.d.ts.map +1 -0
- package/dist/admin/components/TagPicker.js +66 -0
- package/dist/admin/components/TagPicker.js.map +1 -0
- package/dist/admin/index.d.ts +33 -0
- package/dist/admin/index.d.ts.map +1 -0
- package/dist/admin/index.js +114 -0
- package/dist/admin/index.js.map +1 -0
- package/dist/admin/pages/BlogCategoryEditor.d.ts +9 -0
- package/dist/admin/pages/BlogCategoryEditor.d.ts.map +1 -0
- package/dist/admin/pages/BlogCategoryEditor.js +196 -0
- package/dist/admin/pages/BlogCategoryEditor.js.map +1 -0
- package/dist/admin/pages/BlogCategoryTreePage.d.ts +9 -0
- package/dist/admin/pages/BlogCategoryTreePage.d.ts.map +1 -0
- package/dist/admin/pages/BlogCategoryTreePage.js +122 -0
- package/dist/admin/pages/BlogCategoryTreePage.js.map +1 -0
- package/dist/admin/pages/BlogPostEditor.d.ts +9 -0
- package/dist/admin/pages/BlogPostEditor.d.ts.map +1 -0
- package/dist/admin/pages/BlogPostEditor.js +314 -0
- package/dist/admin/pages/BlogPostEditor.js.map +1 -0
- package/dist/admin/pages/BlogPostListPage.d.ts +9 -0
- package/dist/admin/pages/BlogPostListPage.d.ts.map +1 -0
- package/dist/admin/pages/BlogPostListPage.js +75 -0
- package/dist/admin/pages/BlogPostListPage.js.map +1 -0
- package/dist/admin/pages/BlogTagListPage.d.ts +9 -0
- package/dist/admin/pages/BlogTagListPage.d.ts.map +1 -0
- package/dist/admin/pages/BlogTagListPage.js +145 -0
- package/dist/admin/pages/BlogTagListPage.js.map +1 -0
- package/dist/backend/entities/blog-category-language.entity.d.ts +11 -0
- package/dist/backend/entities/blog-category-language.entity.d.ts.map +1 -0
- package/dist/backend/entities/blog-category-language.entity.js +35 -0
- package/dist/backend/entities/blog-category-language.entity.js.map +1 -0
- package/dist/backend/entities/blog-category-sales-channel.entity.d.ts +17 -0
- package/dist/backend/entities/blog-category-sales-channel.entity.d.ts.map +1 -0
- package/dist/backend/entities/blog-category-sales-channel.entity.js +48 -0
- package/dist/backend/entities/blog-category-sales-channel.entity.js.map +1 -0
- package/dist/backend/entities/blog-category.entity.d.ts +32 -0
- package/dist/backend/entities/blog-category.entity.d.ts.map +1 -0
- package/dist/backend/entities/blog-category.entity.js +113 -0
- package/dist/backend/entities/blog-category.entity.js.map +1 -0
- package/dist/backend/entities/blog-post-category.entity.d.ts +10 -0
- package/dist/backend/entities/blog-post-category.entity.d.ts.map +1 -0
- package/dist/backend/entities/blog-post-category.entity.js +34 -0
- package/dist/backend/entities/blog-post-category.entity.js.map +1 -0
- package/dist/backend/entities/blog-post-language.entity.d.ts +9 -0
- package/dist/backend/entities/blog-post-language.entity.d.ts.map +1 -0
- package/dist/backend/entities/blog-post-language.entity.js +33 -0
- package/dist/backend/entities/blog-post-language.entity.js.map +1 -0
- package/dist/backend/entities/blog-post-related-post.entity.d.ts +15 -0
- package/dist/backend/entities/blog-post-related-post.entity.d.ts.map +1 -0
- package/dist/backend/entities/blog-post-related-post.entity.js +42 -0
- package/dist/backend/entities/blog-post-related-post.entity.js.map +1 -0
- package/dist/backend/entities/blog-post-related-product.entity.d.ts +14 -0
- package/dist/backend/entities/blog-post-related-product.entity.d.ts.map +1 -0
- package/dist/backend/entities/blog-post-related-product.entity.js +41 -0
- package/dist/backend/entities/blog-post-related-product.entity.js.map +1 -0
- package/dist/backend/entities/blog-post-sales-channel.entity.d.ts +16 -0
- package/dist/backend/entities/blog-post-sales-channel.entity.d.ts.map +1 -0
- package/dist/backend/entities/blog-post-sales-channel.entity.js +47 -0
- package/dist/backend/entities/blog-post-sales-channel.entity.js.map +1 -0
- package/dist/backend/entities/blog-post-tag.entity.d.ts +14 -0
- package/dist/backend/entities/blog-post-tag.entity.d.ts.map +1 -0
- package/dist/backend/entities/blog-post-tag.entity.js +41 -0
- package/dist/backend/entities/blog-post-tag.entity.js.map +1 -0
- package/dist/backend/entities/blog-post.entity.d.ts +31 -0
- package/dist/backend/entities/blog-post.entity.d.ts.map +1 -0
- package/dist/backend/entities/blog-post.entity.js +106 -0
- package/dist/backend/entities/blog-post.entity.js.map +1 -0
- package/dist/backend/entities/blog-tag.entity.d.ts +18 -0
- package/dist/backend/entities/blog-tag.entity.d.ts.map +1 -0
- package/dist/backend/entities/blog-tag.entity.js +66 -0
- package/dist/backend/entities/blog-tag.entity.js.map +1 -0
- package/dist/backend/index.d.ts +100 -0
- package/dist/backend/index.d.ts.map +1 -0
- package/dist/backend/index.js +182 -0
- package/dist/backend/index.js.map +1 -0
- package/dist/backend/routes.admin.d.ts +12 -0
- package/dist/backend/routes.admin.d.ts.map +1 -0
- package/dist/backend/routes.admin.js +148 -0
- package/dist/backend/routes.admin.js.map +1 -0
- package/dist/backend/routes.storefront.d.ts +6 -0
- package/dist/backend/routes.storefront.d.ts.map +1 -0
- package/dist/backend/routes.storefront.js +72 -0
- package/dist/backend/routes.storefront.js.map +1 -0
- package/dist/backend/services/blog-asset-references.d.ts +4 -0
- package/dist/backend/services/blog-asset-references.d.ts.map +1 -0
- package/dist/backend/services/blog-asset-references.js +79 -0
- package/dist/backend/services/blog-asset-references.js.map +1 -0
- package/dist/backend/services/blog-cache.d.ts +55 -0
- package/dist/backend/services/blog-cache.d.ts.map +1 -0
- package/dist/backend/services/blog-cache.js +111 -0
- package/dist/backend/services/blog-cache.js.map +1 -0
- package/dist/backend/services/blog-category-service.d.ts +53 -0
- package/dist/backend/services/blog-category-service.d.ts.map +1 -0
- package/dist/backend/services/blog-category-service.js +446 -0
- package/dist/backend/services/blog-category-service.js.map +1 -0
- package/dist/backend/services/blog-language-reference.d.ts +18 -0
- package/dist/backend/services/blog-language-reference.d.ts.map +1 -0
- package/dist/backend/services/blog-language-reference.js +43 -0
- package/dist/backend/services/blog-language-reference.js.map +1 -0
- package/dist/backend/services/blog-post-service.d.ts +79 -0
- package/dist/backend/services/blog-post-service.d.ts.map +1 -0
- package/dist/backend/services/blog-post-service.js +539 -0
- package/dist/backend/services/blog-post-service.js.map +1 -0
- package/dist/backend/services/blog-settings-resolver.d.ts +36 -0
- package/dist/backend/services/blog-settings-resolver.d.ts.map +1 -0
- package/dist/backend/services/blog-settings-resolver.js +68 -0
- package/dist/backend/services/blog-settings-resolver.js.map +1 -0
- package/dist/backend/services/blog-slug-collision.d.ts +35 -0
- package/dist/backend/services/blog-slug-collision.d.ts.map +1 -0
- package/dist/backend/services/blog-slug-collision.js +84 -0
- package/dist/backend/services/blog-slug-collision.js.map +1 -0
- package/dist/backend/services/blog-storefront-resolver.d.ts +107 -0
- package/dist/backend/services/blog-storefront-resolver.d.ts.map +1 -0
- package/dist/backend/services/blog-storefront-resolver.js +492 -0
- package/dist/backend/services/blog-storefront-resolver.js.map +1 -0
- package/dist/backend/services/blog-tag-service.d.ts +45 -0
- package/dist/backend/services/blog-tag-service.d.ts.map +1 -0
- package/dist/backend/services/blog-tag-service.js +198 -0
- package/dist/backend/services/blog-tag-service.js.map +1 -0
- package/dist/backend/services/seed-default-category.d.ts +25 -0
- package/dist/backend/services/seed-default-category.d.ts.map +1 -0
- package/dist/backend/services/seed-default-category.js +48 -0
- package/dist/backend/services/seed-default-category.js.map +1 -0
- package/dist/backend/services/seed-roles.d.ts +41 -0
- package/dist/backend/services/seed-roles.d.ts.map +1 -0
- package/dist/backend/services/seed-roles.js +98 -0
- package/dist/backend/services/seed-roles.js.map +1 -0
- package/dist/manifest.d.ts +226 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +236 -0
- package/dist/manifest.js.map +1 -0
- package/dist/migrations/20260506T081055_blog_init.d.ts +33 -0
- package/dist/migrations/20260506T081055_blog_init.d.ts.map +1 -0
- package/dist/migrations/20260506T081055_blog_init.js +260 -0
- package/dist/migrations/20260506T081055_blog_init.js.map +1 -0
- package/dist/migrations/20260903T101744_blog_namespace_block_names.d.ts +6 -0
- package/dist/migrations/20260903T101744_blog_namespace_block_names.d.ts.map +1 -0
- package/dist/migrations/20260903T101744_blog_namespace_block_names.js +58 -0
- package/dist/migrations/20260903T101744_blog_namespace_block_names.js.map +1 -0
- package/dist/migrations/index.d.ts +34 -0
- package/dist/migrations/index.d.ts.map +1 -0
- package/dist/migrations/index.js +37 -0
- package/dist/migrations/index.js.map +1 -0
- package/docs/blog/index.md +199 -0
- package/i18n/en.json +166 -0
- package/i18n/pl.json +166 -0
- package/package.json +108 -0
- package/tailwind.css +14 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { DictionaryReferenceRegistryPort } from '@endora-commerce/contracts';
|
|
2
|
+
import type { EntityManager } from '@mikro-orm/postgresql';
|
|
3
|
+
/**
|
|
4
|
+
* Who in `blog` still points at a language (feature 077, D-87).
|
|
5
|
+
*
|
|
6
|
+
* Two descriptors, one per table: `languages` used to count both itself, and
|
|
7
|
+
* `dictionaries`' orphan report joined both a second time. Both statements
|
|
8
|
+
* named this module's tables in strings no import-level boundary check can
|
|
9
|
+
* see.
|
|
10
|
+
*
|
|
11
|
+
* Contributed whatever this module's effective state, and blocking while it
|
|
12
|
+
* is off: a switched-off blog still owns rows carrying the language code, so
|
|
13
|
+
* deleting the language would leave them dangling the moment an operator
|
|
14
|
+
* switches the blog back on. That is the registry's stated enumeration
|
|
15
|
+
* policy, and the reason it is `honour` rather than `skip`.
|
|
16
|
+
*/
|
|
17
|
+
export declare function registerBlogLanguageReferences(registry: DictionaryReferenceRegistryPort, emFactory: () => EntityManager): void;
|
|
18
|
+
//# sourceMappingURL=blog-language-reference.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blog-language-reference.d.ts","sourceRoot":"","sources":["../../../src/backend/services/blog-language-reference.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,4BAA4B,CAAC;AAClF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D;;;;;;;;;;;;;GAaG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,+BAA+B,EACzC,SAAS,EAAE,MAAM,aAAa,GAC7B,IAAI,CAuCN"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Who in `blog` still points at a language (feature 077, D-87).
|
|
3
|
+
*
|
|
4
|
+
* Two descriptors, one per table: `languages` used to count both itself, and
|
|
5
|
+
* `dictionaries`' orphan report joined both a second time. Both statements
|
|
6
|
+
* named this module's tables in strings no import-level boundary check can
|
|
7
|
+
* see.
|
|
8
|
+
*
|
|
9
|
+
* Contributed whatever this module's effective state, and blocking while it
|
|
10
|
+
* is off: a switched-off blog still owns rows carrying the language code, so
|
|
11
|
+
* deleting the language would leave them dangling the moment an operator
|
|
12
|
+
* switches the blog back on. That is the registry's stated enumeration
|
|
13
|
+
* policy, and the reason it is `honour` rather than `skip`.
|
|
14
|
+
*/
|
|
15
|
+
export function registerBlogLanguageReferences(registry, emFactory) {
|
|
16
|
+
registry.register({
|
|
17
|
+
ownerModuleId: 'blog',
|
|
18
|
+
consumer: 'blog',
|
|
19
|
+
tableName: 'blog_post_languages',
|
|
20
|
+
columnName: 'language',
|
|
21
|
+
blocking: true,
|
|
22
|
+
countReferences: async (code) => {
|
|
23
|
+
const rows = (await emFactory().execute(`select count(*)::int as n from "blog_post_languages" where "language" = ?`, [code]));
|
|
24
|
+
return rows[0]?.n ?? 0;
|
|
25
|
+
},
|
|
26
|
+
usedCodes: async () => (await emFactory().execute(`select "language" as code, count(*)::int as count
|
|
27
|
+
from "blog_post_languages" where "language" is not null group by "language"`)),
|
|
28
|
+
});
|
|
29
|
+
registry.register({
|
|
30
|
+
ownerModuleId: 'blog',
|
|
31
|
+
consumer: 'blog',
|
|
32
|
+
tableName: 'blog_category_languages',
|
|
33
|
+
columnName: 'language',
|
|
34
|
+
blocking: true,
|
|
35
|
+
countReferences: async (code) => {
|
|
36
|
+
const rows = (await emFactory().execute(`select count(*)::int as n from "blog_category_languages" where "language" = ?`, [code]));
|
|
37
|
+
return rows[0]?.n ?? 0;
|
|
38
|
+
},
|
|
39
|
+
usedCodes: async () => (await emFactory().execute(`select "language" as code, count(*)::int as count
|
|
40
|
+
from "blog_category_languages" where "language" is not null group by "language"`)),
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=blog-language-reference.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blog-language-reference.js","sourceRoot":"","sources":["../../../src/backend/services/blog-language-reference.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,8BAA8B,CAC5C,QAAyC,EACzC,SAA8B;IAE9B,QAAQ,CAAC,QAAQ,CAAC;QAChB,aAAa,EAAE,MAAM;QACrB,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,qBAAqB;QAChC,UAAU,EAAE,UAAU;QACtB,QAAQ,EAAE,IAAI;QACd,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YAC9B,MAAM,IAAI,GAAG,CAAC,MAAM,SAAS,EAAE,CAAC,OAAO,CACrC,2EAA2E,EAC3E,CAAC,IAAI,CAAC,CACP,CAAyB,CAAC;YAC3B,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QACD,SAAS,EAAE,KAAK,IAAI,EAAE,CACpB,CAAC,MAAM,SAAS,EAAE,CAAC,OAAO,CACxB;uFAC+E,CAChF,CAA2C;KAC/C,CAAC,CAAC;IACH,QAAQ,CAAC,QAAQ,CAAC;QAChB,aAAa,EAAE,MAAM;QACrB,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,yBAAyB;QACpC,UAAU,EAAE,UAAU;QACtB,QAAQ,EAAE,IAAI;QACd,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YAC9B,MAAM,IAAI,GAAG,CAAC,MAAM,SAAS,EAAE,CAAC,OAAO,CACrC,+EAA+E,EAC/E,CAAC,IAAI,CAAC,CACP,CAAyB,CAAC;YAC3B,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QACD,SAAS,EAAE,KAAK,IAAI,EAAE,CACpB,CAAC,MAAM,SAAS,EAAE,CAAC,OAAO,CACxB;2FACmF,CACpF,CAA2C;KAC/C,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import type { EntityManager } from '@mikro-orm/postgresql';
|
|
2
|
+
import { type BlogPostDetail, type BlogPostInboundReferencesResponse, type BlogPostStatus, type BlogPostSummary, type CreateBlogPostRequest, type DictionaryValidator, type PatchBlogPostRequest, type PutBlogPostContentRequest } from '@endora-commerce/contracts';
|
|
3
|
+
import type { BlogCacheService } from './blog-cache.js';
|
|
4
|
+
type PostListFilters = {
|
|
5
|
+
q?: string | undefined;
|
|
6
|
+
status?: BlogPostStatus | undefined;
|
|
7
|
+
salesChannelId?: string | undefined;
|
|
8
|
+
categoryId?: string | undefined;
|
|
9
|
+
tagId?: string | undefined;
|
|
10
|
+
language?: string | undefined;
|
|
11
|
+
page?: number | undefined;
|
|
12
|
+
perPage?: number | undefined;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* BlogPostService — feature 016 / T033.
|
|
16
|
+
*
|
|
17
|
+
* Owns the full BlogPost CRUD + lifecycle + relations contract documented
|
|
18
|
+
* in `contracts/blog-admin-http.contract.md`. The service runs every
|
|
19
|
+
* write inside an `em.transactional(...)` block; the slug-collision
|
|
20
|
+
* helper acquires per-(channel, slug) advisory locks so a concurrent
|
|
21
|
+
* write cannot squeeze a duplicate past the partial unique indexes.
|
|
22
|
+
*
|
|
23
|
+
* The status state machine is documented in `data-model.md` § State
|
|
24
|
+
* transitions: draft → published (sets published_at if null), published
|
|
25
|
+
* → draft (preserves published_at), published ↔ archived. softDelete
|
|
26
|
+
* additionally detaches every blog_post_related_posts row where
|
|
27
|
+
* related_post_id = id (FR-028 / R5) so deleting an article does not
|
|
28
|
+
* orphan a parent post's strip — the storefront just sees a shorter
|
|
29
|
+
* list and the admin's confirmation dialog has already surfaced the
|
|
30
|
+
* affected parents.
|
|
31
|
+
*/
|
|
32
|
+
export declare class BlogPostService {
|
|
33
|
+
private readonly emFactory;
|
|
34
|
+
private readonly cache?;
|
|
35
|
+
private readonly dictionaryValidator?;
|
|
36
|
+
constructor(emFactory: () => EntityManager, cache?: BlogCacheService | undefined, dictionaryValidator?: DictionaryValidator | undefined);
|
|
37
|
+
list(filters: PostListFilters): Promise<{
|
|
38
|
+
data: BlogPostSummary[];
|
|
39
|
+
pagination: {
|
|
40
|
+
page: number;
|
|
41
|
+
perPage: number;
|
|
42
|
+
totalPages: number;
|
|
43
|
+
totalItems: number;
|
|
44
|
+
};
|
|
45
|
+
}>;
|
|
46
|
+
create(input: CreateBlogPostRequest): Promise<BlogPostDetail>;
|
|
47
|
+
getById(id: string): Promise<BlogPostDetail>;
|
|
48
|
+
patch(id: string, input: PatchBlogPostRequest): Promise<BlogPostDetail>;
|
|
49
|
+
setContent(id: string, input: PutBlogPostContentRequest): Promise<BlogPostDetail>;
|
|
50
|
+
setTags(id: string, tagIds: string[], version: number): Promise<BlogPostDetail>;
|
|
51
|
+
setRelatedPosts(id: string, relatedPostIds: string[], version: number): Promise<BlogPostDetail>;
|
|
52
|
+
setRelatedProducts(id: string, productIds: string[], version: number): Promise<BlogPostDetail>;
|
|
53
|
+
publish(id: string, version: number): Promise<BlogPostDetail>;
|
|
54
|
+
unpublish(id: string, version: number): Promise<BlogPostDetail>;
|
|
55
|
+
archive(id: string, version: number): Promise<BlogPostDetail>;
|
|
56
|
+
softDelete(id: string, version: number): Promise<{
|
|
57
|
+
detachedFromParents: string[];
|
|
58
|
+
}>;
|
|
59
|
+
getInboundReferences(id: string): Promise<BlogPostInboundReferencesResponse>;
|
|
60
|
+
private transitionStatus;
|
|
61
|
+
private findRow;
|
|
62
|
+
private assertVersion;
|
|
63
|
+
private getByIdInTx;
|
|
64
|
+
private toSummary;
|
|
65
|
+
private normaliseContent;
|
|
66
|
+
private toIso;
|
|
67
|
+
private toIsoNonNull;
|
|
68
|
+
private loadChannelIds;
|
|
69
|
+
private loadLanguages;
|
|
70
|
+
private validateLanguages;
|
|
71
|
+
private replaceChannels;
|
|
72
|
+
private replaceLanguages;
|
|
73
|
+
private replaceCategories;
|
|
74
|
+
private replaceTags;
|
|
75
|
+
private fallbackToDefaultCategory;
|
|
76
|
+
private invalidateCacheForPost;
|
|
77
|
+
}
|
|
78
|
+
export {};
|
|
79
|
+
//# sourceMappingURL=blog-post-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blog-post-service.d.ts","sourceRoot":"","sources":["../../../src/backend/services/blog-post-service.ts"],"names":[],"mappings":"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"}
|