@mhbdev/unicms 0.1.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.
Files changed (54) hide show
  1. package/README.md +117 -0
  2. package/dist/client.d.ts +3 -0
  3. package/dist/client.d.ts.map +1 -0
  4. package/dist/client.js +30 -0
  5. package/dist/client.js.map +1 -0
  6. package/dist/contracts/v1.d.ts +13507 -0
  7. package/dist/contracts/v1.d.ts.map +1 -0
  8. package/dist/contracts/v1.js +354 -0
  9. package/dist/contracts/v1.js.map +1 -0
  10. package/dist/errors.d.ts +11 -0
  11. package/dist/errors.d.ts.map +1 -0
  12. package/dist/errors.js +13 -0
  13. package/dist/errors.js.map +1 -0
  14. package/dist/http.d.ts +15 -0
  15. package/dist/http.d.ts.map +1 -0
  16. package/dist/http.js +129 -0
  17. package/dist/http.js.map +1 -0
  18. package/dist/index.d.ts +5 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +3 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/methods/getPageBySlug.d.ts +6 -0
  23. package/dist/methods/getPageBySlug.d.ts.map +1 -0
  24. package/dist/methods/getPageBySlug.js +12 -0
  25. package/dist/methods/getPageBySlug.js.map +1 -0
  26. package/dist/methods/getPostBySlug.d.ts +6 -0
  27. package/dist/methods/getPostBySlug.d.ts.map +1 -0
  28. package/dist/methods/getPostBySlug.js +12 -0
  29. package/dist/methods/getPostBySlug.js.map +1 -0
  30. package/dist/methods/getSiteSettings.d.ts +4 -0
  31. package/dist/methods/getSiteSettings.d.ts.map +1 -0
  32. package/dist/methods/getSiteSettings.js +9 -0
  33. package/dist/methods/getSiteSettings.js.map +1 -0
  34. package/dist/methods/listCategories.d.ts +4 -0
  35. package/dist/methods/listCategories.d.ts.map +1 -0
  36. package/dist/methods/listCategories.js +9 -0
  37. package/dist/methods/listCategories.js.map +1 -0
  38. package/dist/methods/listFaqs.d.ts +6 -0
  39. package/dist/methods/listFaqs.d.ts.map +1 -0
  40. package/dist/methods/listFaqs.js +12 -0
  41. package/dist/methods/listFaqs.js.map +1 -0
  42. package/dist/methods/listPosts.d.ts +4 -0
  43. package/dist/methods/listPosts.d.ts.map +1 -0
  44. package/dist/methods/listPosts.js +16 -0
  45. package/dist/methods/listPosts.js.map +1 -0
  46. package/dist/methods/listTags.d.ts +4 -0
  47. package/dist/methods/listTags.d.ts.map +1 -0
  48. package/dist/methods/listTags.js +9 -0
  49. package/dist/methods/listTags.js.map +1 -0
  50. package/dist/types.d.ts +29 -0
  51. package/dist/types.d.ts.map +1 -0
  52. package/dist/types.js +2 -0
  53. package/dist/types.js.map +1 -0
  54. package/package.json +44 -0
@@ -0,0 +1,6 @@
1
+ import type { PostDTO } from '../contracts/v1.js';
2
+ import type { HttpClient } from '../http.js';
3
+ export declare const getPostBySlug: (http: HttpClient, slug: string, opts?: {
4
+ includeRawContent?: boolean;
5
+ }) => Promise<PostDTO>;
6
+ //# sourceMappingURL=getPostBySlug.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getPostBySlug.d.ts","sourceRoot":"","sources":["../../src/methods/getPostBySlug.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE5C,eAAO,MAAM,aAAa,GACxB,MAAM,UAAU,EAChB,MAAM,MAAM,EACZ,OAAO;IAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAAE,KACrC,OAAO,CAAC,OAAO,CAUjB,CAAA"}
@@ -0,0 +1,12 @@
1
+ import { postResponseSchema } from '../contracts/v1.js';
2
+ export const getPostBySlug = async (http, slug, opts) => {
3
+ const response = await http.get({
4
+ path: `/api/public/v1/posts/${encodeURIComponent(slug)}`,
5
+ query: {
6
+ includeRawContent: opts?.includeRawContent,
7
+ },
8
+ schema: postResponseSchema,
9
+ });
10
+ return response.data;
11
+ };
12
+ //# sourceMappingURL=getPostBySlug.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getPostBySlug.js","sourceRoot":"","sources":["../../src/methods/getPostBySlug.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAIvD,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAChC,IAAgB,EAChB,IAAY,EACZ,IAAsC,EACpB,EAAE;IACpB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC;QAC9B,IAAI,EAAE,wBAAwB,kBAAkB,CAAC,IAAI,CAAC,EAAE;QACxD,KAAK,EAAE;YACL,iBAAiB,EAAE,IAAI,EAAE,iBAAiB;SAC3C;QACD,MAAM,EAAE,kBAAkB;KAC3B,CAAC,CAAA;IAEF,OAAO,QAAQ,CAAC,IAAI,CAAA;AACtB,CAAC,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { SiteSettingsDTO } from '../contracts/v1.js';
2
+ import type { HttpClient } from '../http.js';
3
+ export declare const getSiteSettings: (http: HttpClient) => Promise<SiteSettingsDTO>;
4
+ //# sourceMappingURL=getSiteSettings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getSiteSettings.d.ts","sourceRoot":"","sources":["../../src/methods/getSiteSettings.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE5C,eAAO,MAAM,eAAe,GAAU,MAAM,UAAU,KAAG,OAAO,CAAC,eAAe,CAO/E,CAAA"}
@@ -0,0 +1,9 @@
1
+ import { siteSettingsResponseSchema } from '../contracts/v1.js';
2
+ export const getSiteSettings = async (http) => {
3
+ const response = await http.get({
4
+ path: '/api/public/v1/site-settings',
5
+ schema: siteSettingsResponseSchema,
6
+ });
7
+ return response.data;
8
+ };
9
+ //# sourceMappingURL=getSiteSettings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getSiteSettings.js","sourceRoot":"","sources":["../../src/methods/getSiteSettings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAA;AAI/D,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,IAAgB,EAA4B,EAAE;IAClF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC;QAC9B,IAAI,EAAE,8BAA8B;QACpC,MAAM,EAAE,0BAA0B;KACnC,CAAC,CAAA;IAEF,OAAO,QAAQ,CAAC,IAAI,CAAA;AACtB,CAAC,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { CategoryDTO } from '../contracts/v1.js';
2
+ import type { HttpClient } from '../http.js';
3
+ export declare const listCategories: (http: HttpClient) => Promise<CategoryDTO[]>;
4
+ //# sourceMappingURL=listCategories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listCategories.d.ts","sourceRoot":"","sources":["../../src/methods/listCategories.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE5C,eAAO,MAAM,cAAc,GAAU,MAAM,UAAU,KAAG,OAAO,CAAC,WAAW,EAAE,CAO5E,CAAA"}
@@ -0,0 +1,9 @@
1
+ import { categoriesResponseSchema } from '../contracts/v1.js';
2
+ export const listCategories = async (http) => {
3
+ const response = await http.get({
4
+ path: '/api/public/v1/categories',
5
+ schema: categoriesResponseSchema,
6
+ });
7
+ return response.data;
8
+ };
9
+ //# sourceMappingURL=listCategories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listCategories.js","sourceRoot":"","sources":["../../src/methods/listCategories.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAI7D,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,IAAgB,EAA0B,EAAE;IAC/E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC;QAC9B,IAAI,EAAE,2BAA2B;QACjC,MAAM,EAAE,wBAAwB;KACjC,CAAC,CAAA;IAEF,OAAO,QAAQ,CAAC,IAAI,CAAA;AACtB,CAAC,CAAA"}
@@ -0,0 +1,6 @@
1
+ import type { FaqDTO } from '../contracts/v1.js';
2
+ import type { HttpClient } from '../http.js';
3
+ export declare const listFaqs: (http: HttpClient, opts?: {
4
+ includeRawContent?: boolean;
5
+ }) => Promise<FaqDTO[]>;
6
+ //# sourceMappingURL=listFaqs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listFaqs.d.ts","sourceRoot":"","sources":["../../src/methods/listFaqs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE5C,eAAO,MAAM,QAAQ,GACnB,MAAM,UAAU,EAChB,OAAO;IAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAAE,KACrC,OAAO,CAAC,MAAM,EAAE,CAUlB,CAAA"}
@@ -0,0 +1,12 @@
1
+ import { faqsResponseSchema } from '../contracts/v1.js';
2
+ export const listFaqs = async (http, opts) => {
3
+ const response = await http.get({
4
+ path: '/api/public/v1/faqs',
5
+ query: {
6
+ includeRawContent: opts?.includeRawContent,
7
+ },
8
+ schema: faqsResponseSchema,
9
+ });
10
+ return response.data;
11
+ };
12
+ //# sourceMappingURL=listFaqs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listFaqs.js","sourceRoot":"","sources":["../../src/methods/listFaqs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAIvD,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAC3B,IAAgB,EAChB,IAAsC,EACnB,EAAE;IACrB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC;QAC9B,IAAI,EAAE,qBAAqB;QAC3B,KAAK,EAAE;YACL,iBAAiB,EAAE,IAAI,EAAE,iBAAiB;SAC3C;QACD,MAAM,EAAE,kBAAkB;KAC3B,CAAC,CAAA;IAEF,OAAO,QAAQ,CAAC,IAAI,CAAA;AACtB,CAAC,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { ListPostsParams, Paginated, PostSummaryDTO } from '../contracts/v1.js';
2
+ import type { HttpClient } from '../http.js';
3
+ export declare const listPosts: (http: HttpClient, params?: ListPostsParams) => Promise<Paginated<PostSummaryDTO>>;
4
+ //# sourceMappingURL=listPosts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listPosts.d.ts","sourceRoot":"","sources":["../../src/methods/listPosts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACpF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE5C,eAAO,MAAM,SAAS,GACpB,MAAM,UAAU,EAChB,SAAS,eAAe,KACvB,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,CAcnC,CAAA"}
@@ -0,0 +1,16 @@
1
+ import { postsListResponseSchema } from '../contracts/v1.js';
2
+ export const listPosts = async (http, params) => {
3
+ const response = await http.get({
4
+ path: '/api/public/v1/posts',
5
+ query: {
6
+ categorySlug: params?.categorySlug,
7
+ limit: params?.limit,
8
+ page: params?.page,
9
+ q: params?.q,
10
+ tagSlug: params?.tagSlug,
11
+ },
12
+ schema: postsListResponseSchema,
13
+ });
14
+ return response.data;
15
+ };
16
+ //# sourceMappingURL=listPosts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listPosts.js","sourceRoot":"","sources":["../../src/methods/listPosts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAI5D,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAC5B,IAAgB,EAChB,MAAwB,EACY,EAAE;IACtC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC;QAC9B,IAAI,EAAE,sBAAsB;QAC5B,KAAK,EAAE;YACL,YAAY,EAAE,MAAM,EAAE,YAAY;YAClC,KAAK,EAAE,MAAM,EAAE,KAAK;YACpB,IAAI,EAAE,MAAM,EAAE,IAAI;YAClB,CAAC,EAAE,MAAM,EAAE,CAAC;YACZ,OAAO,EAAE,MAAM,EAAE,OAAO;SACzB;QACD,MAAM,EAAE,uBAAuB;KAChC,CAAC,CAAA;IAEF,OAAO,QAAQ,CAAC,IAAI,CAAA;AACtB,CAAC,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { TagDTO } from '../contracts/v1.js';
2
+ import type { HttpClient } from '../http.js';
3
+ export declare const listTags: (http: HttpClient) => Promise<TagDTO[]>;
4
+ //# sourceMappingURL=listTags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listTags.d.ts","sourceRoot":"","sources":["../../src/methods/listTags.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE5C,eAAO,MAAM,QAAQ,GAAU,MAAM,UAAU,KAAG,OAAO,CAAC,MAAM,EAAE,CAOjE,CAAA"}
@@ -0,0 +1,9 @@
1
+ import { tagsResponseSchema } from '../contracts/v1.js';
2
+ export const listTags = async (http) => {
3
+ const response = await http.get({
4
+ path: '/api/public/v1/tags',
5
+ schema: tagsResponseSchema,
6
+ });
7
+ return response.data;
8
+ };
9
+ //# sourceMappingURL=listTags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listTags.js","sourceRoot":"","sources":["../../src/methods/listTags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAIvD,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAAE,IAAgB,EAAqB,EAAE;IACpE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC;QAC9B,IAAI,EAAE,qBAAqB;QAC3B,MAAM,EAAE,kBAAkB;KAC3B,CAAC,CAAA;IAEF,OAAO,QAAQ,CAAC,IAAI,CAAA;AACtB,CAAC,CAAA"}
@@ -0,0 +1,29 @@
1
+ import type { CategoryDTO, FaqDTO, ListPostsParams, Paginated, PageDTO, PostDTO, PostSummaryDTO, SiteSettingsDTO, TagDTO } from './contracts/v1.js';
2
+ export type TenantScope = {
3
+ slug: string;
4
+ } | {
5
+ domain: string;
6
+ };
7
+ export interface UniCmsClientOptions {
8
+ baseUrl: string;
9
+ tenant: TenantScope;
10
+ headers?: HeadersInit | (() => HeadersInit | Promise<HeadersInit>);
11
+ fetch?: typeof globalThis.fetch;
12
+ timeoutMs?: number;
13
+ }
14
+ export interface UniCmsClient {
15
+ getSiteSettings(): Promise<SiteSettingsDTO>;
16
+ getPageBySlug(slug: string, opts?: {
17
+ includeRawContent?: boolean;
18
+ }): Promise<PageDTO>;
19
+ listPosts(params?: ListPostsParams): Promise<Paginated<PostSummaryDTO>>;
20
+ getPostBySlug(slug: string, opts?: {
21
+ includeRawContent?: boolean;
22
+ }): Promise<PostDTO>;
23
+ listFaqs(opts?: {
24
+ includeRawContent?: boolean;
25
+ }): Promise<FaqDTO[]>;
26
+ listCategories(): Promise<CategoryDTO[]>;
27
+ listTags(): Promise<TagDTO[]>;
28
+ }
29
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,MAAM,EACN,eAAe,EACf,SAAS,EACT,OAAO,EACP,OAAO,EACP,cAAc,EACd,eAAe,EACf,MAAM,EACP,MAAM,mBAAmB,CAAA;AAE1B,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAE/D,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,WAAW,CAAA;IACnB,OAAO,CAAC,EAAE,WAAW,GAAG,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAA;IAClE,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,eAAe,IAAI,OAAO,CAAC,eAAe,CAAC,CAAA;IAC3C,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACrF,SAAS,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAA;IACvE,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACrF,QAAQ,CAAC,IAAI,CAAC,EAAE;QAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IACnE,cAAc,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAAA;IACxC,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;CAC9B"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,44 @@
1
+ {
2
+ "name": "@mhbdev/unicms",
3
+ "version": "0.1.0",
4
+ "description": "Typed SDK for UniCMS public API",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "sideEffects": false,
8
+ "files": [
9
+ "dist",
10
+ "README.md"
11
+ ],
12
+ "main": "./dist/index.js",
13
+ "module": "./dist/index.js",
14
+ "types": "./dist/index.d.ts",
15
+ "exports": {
16
+ ".": {
17
+ "types": "./dist/index.d.ts",
18
+ "import": "./dist/index.js"
19
+ }
20
+ },
21
+ "dependencies": {
22
+ "zod": "^3.25.76"
23
+ },
24
+ "devDependencies": {
25
+ "@types/node": "^24.3.0",
26
+ "tsx": "^4.21.0",
27
+ "typescript": "5.9.3"
28
+ },
29
+ "publishConfig": {
30
+ "access": "public"
31
+ },
32
+ "keywords": [
33
+ "cms",
34
+ "payload",
35
+ "typescript",
36
+ "sdk",
37
+ "headless"
38
+ ],
39
+ "scripts": {
40
+ "build": "pnpm -w run sync:public-contracts && node ./scripts/clean-dist.mjs && tsc -p tsconfig.json",
41
+ "typecheck": "tsc -p tsconfig.json --noEmit",
42
+ "test": "tsx --test src/**/*.test.ts"
43
+ }
44
+ }