@antlur/backstage 1.0.10 → 1.2.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 (139) hide show
  1. package/dist/cjs/client.js +18 -5
  2. package/dist/cjs/endpoints/alerts.js +8 -5
  3. package/dist/cjs/endpoints/base.js +9 -0
  4. package/dist/cjs/endpoints/events.js +16 -18
  5. package/dist/cjs/endpoints/locations.js +21 -19
  6. package/dist/cjs/endpoints/menus.js +23 -22
  7. package/dist/cjs/endpoints/navigation.js +26 -25
  8. package/dist/cjs/endpoints/pages.js +20 -20
  9. package/dist/cjs/endpoints/press.js +8 -5
  10. package/dist/cjs/endpoints/website.js +8 -5
  11. package/dist/cjs/studio/define-block.js +6 -0
  12. package/dist/cjs/studio/define-field.js +6 -0
  13. package/dist/cjs/studio/define-schema.js +6 -0
  14. package/dist/cjs/studio/index.js +20 -0
  15. package/dist/cjs/studio/types/block.js +2 -0
  16. package/dist/cjs/studio/types/field-values.js +2 -0
  17. package/dist/cjs/studio/types/field.js +2 -0
  18. package/dist/cjs/studio/types/index.js +19 -0
  19. package/dist/cjs/types/index.js +1 -0
  20. package/dist/esm/client.d.ts +16 -1
  21. package/dist/esm/client.d.ts.map +1 -1
  22. package/dist/esm/client.js +17 -3
  23. package/dist/esm/config.d.ts +2 -0
  24. package/dist/esm/config.d.ts.map +1 -1
  25. package/dist/esm/endpoints/alerts.d.ts +4 -1
  26. package/dist/esm/endpoints/alerts.d.ts.map +1 -1
  27. package/dist/esm/endpoints/alerts.js +6 -4
  28. package/dist/esm/endpoints/base.d.ts +6 -0
  29. package/dist/esm/endpoints/base.d.ts.map +1 -0
  30. package/dist/esm/endpoints/base.js +5 -0
  31. package/dist/esm/endpoints/events.d.ts +6 -3
  32. package/dist/esm/endpoints/events.d.ts.map +1 -1
  33. package/dist/esm/endpoints/events.js +14 -15
  34. package/dist/esm/endpoints/locations.d.ts +5 -2
  35. package/dist/esm/endpoints/locations.d.ts.map +1 -1
  36. package/dist/esm/endpoints/locations.js +19 -17
  37. package/dist/esm/endpoints/menus.d.ts +6 -3
  38. package/dist/esm/endpoints/menus.d.ts.map +1 -1
  39. package/dist/esm/endpoints/menus.js +21 -19
  40. package/dist/esm/endpoints/navigation.d.ts +6 -3
  41. package/dist/esm/endpoints/navigation.d.ts.map +1 -1
  42. package/dist/esm/endpoints/navigation.js +24 -22
  43. package/dist/esm/endpoints/pages.d.ts +8 -5
  44. package/dist/esm/endpoints/pages.d.ts.map +1 -1
  45. package/dist/esm/endpoints/pages.js +18 -16
  46. package/dist/esm/endpoints/press.d.ts +4 -1
  47. package/dist/esm/endpoints/press.d.ts.map +1 -1
  48. package/dist/esm/endpoints/press.js +6 -4
  49. package/dist/esm/endpoints/website.d.ts +4 -1
  50. package/dist/esm/endpoints/website.d.ts.map +1 -1
  51. package/dist/esm/endpoints/website.js +6 -4
  52. package/dist/esm/studio/define-block.d.ts +11 -0
  53. package/dist/esm/studio/define-block.d.ts.map +1 -0
  54. package/dist/esm/studio/define-block.js +3 -0
  55. package/dist/esm/studio/define-field.d.ts +3 -0
  56. package/dist/esm/studio/define-field.d.ts.map +1 -0
  57. package/dist/esm/studio/define-field.js +3 -0
  58. package/dist/esm/studio/define-schema.d.ts +3 -0
  59. package/dist/esm/studio/define-schema.d.ts.map +1 -0
  60. package/dist/esm/studio/define-schema.js +3 -0
  61. package/dist/esm/studio/index.d.ts +5 -0
  62. package/dist/esm/studio/index.d.ts.map +1 -0
  63. package/dist/esm/studio/index.js +4 -0
  64. package/dist/esm/studio/types/block.d.ts +25 -0
  65. package/dist/esm/studio/types/block.d.ts.map +1 -0
  66. package/dist/esm/studio/types/block.js +1 -0
  67. package/dist/esm/studio/types/field-values.d.ts +8 -0
  68. package/dist/esm/studio/types/field-values.d.ts.map +1 -0
  69. package/dist/esm/studio/types/field-values.js +1 -0
  70. package/dist/esm/studio/types/field.d.ts +14 -0
  71. package/dist/esm/studio/types/field.d.ts.map +1 -0
  72. package/dist/esm/studio/types/field.js +1 -0
  73. package/dist/esm/studio/types/index.d.ts +4 -0
  74. package/dist/esm/studio/types/index.d.ts.map +1 -0
  75. package/dist/esm/studio/types/index.js +3 -0
  76. package/dist/esm/types/index.d.ts +1 -0
  77. package/dist/esm/types/index.d.ts.map +1 -1
  78. package/dist/esm/types/index.js +1 -0
  79. package/dist/types/client.d.ts +16 -1
  80. package/dist/types/client.d.ts.map +1 -1
  81. package/dist/types/config.d.ts +2 -0
  82. package/dist/types/config.d.ts.map +1 -1
  83. package/dist/types/endpoints/alerts.d.ts +4 -1
  84. package/dist/types/endpoints/alerts.d.ts.map +1 -1
  85. package/dist/types/endpoints/base.d.ts +6 -0
  86. package/dist/types/endpoints/base.d.ts.map +1 -0
  87. package/dist/types/endpoints/events.d.ts +6 -3
  88. package/dist/types/endpoints/events.d.ts.map +1 -1
  89. package/dist/types/endpoints/locations.d.ts +5 -2
  90. package/dist/types/endpoints/locations.d.ts.map +1 -1
  91. package/dist/types/endpoints/menus.d.ts +6 -3
  92. package/dist/types/endpoints/menus.d.ts.map +1 -1
  93. package/dist/types/endpoints/navigation.d.ts +6 -3
  94. package/dist/types/endpoints/navigation.d.ts.map +1 -1
  95. package/dist/types/endpoints/pages.d.ts +8 -5
  96. package/dist/types/endpoints/pages.d.ts.map +1 -1
  97. package/dist/types/endpoints/press.d.ts +4 -1
  98. package/dist/types/endpoints/press.d.ts.map +1 -1
  99. package/dist/types/endpoints/website.d.ts +4 -1
  100. package/dist/types/endpoints/website.d.ts.map +1 -1
  101. package/dist/types/studio/define-block.d.ts +11 -0
  102. package/dist/types/studio/define-block.d.ts.map +1 -0
  103. package/dist/types/studio/define-field.d.ts +3 -0
  104. package/dist/types/studio/define-field.d.ts.map +1 -0
  105. package/dist/types/studio/define-schema.d.ts +3 -0
  106. package/dist/types/studio/define-schema.d.ts.map +1 -0
  107. package/dist/types/studio/index.d.ts +5 -0
  108. package/dist/types/studio/index.d.ts.map +1 -0
  109. package/dist/types/studio/types/block.d.ts +25 -0
  110. package/dist/types/studio/types/block.d.ts.map +1 -0
  111. package/dist/types/studio/types/field-values.d.ts +8 -0
  112. package/dist/types/studio/types/field-values.d.ts.map +1 -0
  113. package/dist/types/studio/types/field.d.ts +14 -0
  114. package/dist/types/studio/types/field.d.ts.map +1 -0
  115. package/dist/types/studio/types/index.d.ts +4 -0
  116. package/dist/types/studio/types/index.d.ts.map +1 -0
  117. package/dist/types/types/index.d.ts +1 -0
  118. package/dist/types/types/index.d.ts.map +1 -1
  119. package/package.json +6 -1
  120. package/src/client.ts +28 -4
  121. package/src/config.ts +2 -0
  122. package/src/endpoints/alerts.ts +6 -4
  123. package/src/endpoints/base.ts +5 -0
  124. package/src/endpoints/events.ts +14 -15
  125. package/src/endpoints/locations.ts +21 -19
  126. package/src/endpoints/menus.ts +24 -20
  127. package/src/endpoints/navigation.ts +26 -24
  128. package/src/endpoints/pages.ts +19 -18
  129. package/src/endpoints/press.ts +6 -4
  130. package/src/endpoints/website.ts +6 -4
  131. package/src/studio/define-block.ts +14 -0
  132. package/src/studio/define-field.ts +5 -0
  133. package/src/studio/define-schema.ts +5 -0
  134. package/src/studio/index.ts +5 -0
  135. package/src/studio/types/block.ts +29 -0
  136. package/src/studio/types/field-values.ts +7 -0
  137. package/src/studio/types/field.ts +28 -0
  138. package/src/studio/types/index.ts +4 -0
  139. package/src/types/index.ts +2 -0
@@ -1,5 +1,8 @@
1
1
  import { Menu } from "../types";
2
- export declare function getMenus(): Promise<Menu[]>;
3
- export declare function getMenu(id: string): Promise<Menu | Menu[]>;
4
- export declare function getMenuBySlug(slug: string): Promise<Menu | Menu[]>;
2
+ import { BaseService } from "./base";
3
+ export declare class MenuService extends BaseService {
4
+ getMenus(): Promise<Menu[]>;
5
+ getMenu(id: string): Promise<Menu | Menu[]>;
6
+ getMenuBySlug(slug: string): Promise<Menu | Menu[]>;
7
+ }
5
8
  //# sourceMappingURL=menus.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"menus.d.ts","sourceRoot":"","sources":["../../../src/endpoints/menus.ts"],"names":[],"mappings":"AACA,OAAO,EAAyB,IAAI,EAAE,MAAM,UAAU,CAAC;AAEvD,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAIhD;AAED,wBAAsB,OAAO,CAAC,EAAE,EAAE,MAAM,0BASvC;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,0BAS/C"}
1
+ {"version":3,"file":"menus.d.ts","sourceRoot":"","sources":["../../../src/endpoints/menus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,IAAI,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC,qBAAa,WAAY,SAAQ,WAAW;IACpC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAM3B,OAAO,CAAC,EAAE,EAAE,MAAM;IAWlB,aAAa,CAAC,IAAI,EAAE,MAAM;CAYjC"}
@@ -1,5 +1,8 @@
1
1
  import { Navigation } from "../types";
2
- export declare function getDefaultNavigation(): Promise<Navigation>;
3
- export declare function getNavigations(): Promise<Navigation[]>;
4
- export declare function getNavigation(id: string): Promise<Navigation>;
2
+ import { BaseService } from "./base";
3
+ export declare class NavigationService extends BaseService {
4
+ getNavigations(): Promise<Navigation[]>;
5
+ getDefaultNavigation(): Promise<Navigation>;
6
+ getNavigation(id: string): Promise<Navigation>;
7
+ }
5
8
  //# sourceMappingURL=navigation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../../src/endpoints/navigation.ts"],"names":[],"mappings":"AACA,OAAO,EAA4C,UAAU,EAAE,MAAM,UAAU,CAAC;AAEhF,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,UAAU,CAAC,CAGhE;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAU5D;AAED,wBAAsB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAanE"}
1
+ {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../../src/endpoints/navigation.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4C,UAAU,EAAE,MAAM,UAAU,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC,qBAAa,iBAAkB,SAAQ,WAAW;IAC1C,cAAc,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAYvC,oBAAoB,IAAI,OAAO,CAAC,UAAU,CAAC;IAK3C,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;CAcrD"}
@@ -1,6 +1,9 @@
1
- import { Page } from "../types/page";
2
- export declare function getPage(slug: string): Promise<Page>;
3
- export declare function getPages(): Promise<Page[]>;
4
- export declare function getHomePage(): Promise<Page>;
5
- export declare function getPageBySlug(slug: string): Promise<Page>;
1
+ import { Page } from "../types";
2
+ import { BaseService } from "./base";
3
+ export declare class PageService extends BaseService {
4
+ getPages(): Promise<Page[]>;
5
+ getPage(id: string): Promise<Page>;
6
+ getPageBySlug(slug: string): Promise<Page>;
7
+ getHomePage(): Promise<Page>;
8
+ }
6
9
  //# sourceMappingURL=pages.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pages.d.ts","sourceRoot":"","sources":["../../../src/endpoints/pages.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAGrC,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGzD;AAED,wBAAsB,QAAQ,oBAG7B;AAED,wBAAsB,WAAW,kBAGhC;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,iBAG/C"}
1
+ {"version":3,"file":"pages.d.ts","sourceRoot":"","sources":["../../../src/endpoints/pages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,IAAI,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC,qBAAa,WAAY,SAAQ,WAAW;IACpC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAK3B,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1C,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;CAInC"}
@@ -1,3 +1,6 @@
1
1
  import { Press } from "../types";
2
- export declare function getPress(): Promise<Press[]>;
2
+ import { BaseService } from "./base";
3
+ export declare class PressService extends BaseService {
4
+ getPress(): Promise<Press[]>;
5
+ }
3
6
  //# sourceMappingURL=press.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"press.d.ts","sourceRoot":"","sources":["../../../src/endpoints/press.ts"],"names":[],"mappings":"AACA,OAAO,EAAyB,KAAK,EAAE,MAAM,UAAU,CAAC;AAExD,wBAAsB,QAAQ,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,CAGjD"}
1
+ {"version":3,"file":"press.d.ts","sourceRoot":"","sources":["../../../src/endpoints/press.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC,qBAAa,YAAa,SAAQ,WAAW;IACrC,QAAQ,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;CAInC"}
@@ -1,3 +1,6 @@
1
1
  import { Website } from "../types";
2
- export declare function getWebsite(): Promise<Website>;
2
+ import { BaseService } from "./base";
3
+ export declare class WebsiteService extends BaseService {
4
+ getWebsite(): Promise<Website>;
5
+ }
3
6
  //# sourceMappingURL=website.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"website.d.ts","sourceRoot":"","sources":["../../../src/endpoints/website.ts"],"names":[],"mappings":"AACA,OAAO,EAAyB,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1D,wBAAsB,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CAGnD"}
1
+ {"version":3,"file":"website.d.ts","sourceRoot":"","sources":["../../../src/endpoints/website.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC,qBAAa,cAAe,SAAQ,WAAW;IACvC,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;CAIrC"}
@@ -0,0 +1,11 @@
1
+ import { BlockSchema, BlockDefinition, BlockComponentProps, Field } from "./types";
2
+ export type FieldValues<TFields extends Record<string, Field<any>>> = {
3
+ [K in keyof TFields]: TFields[K]["value"];
4
+ };
5
+ export declare function defineBlock<TFields extends Record<string, Field<any>>>(options: {
6
+ name: string;
7
+ slug: string;
8
+ schema: BlockSchema<TFields>;
9
+ component: React.ComponentType<BlockComponentProps<FieldValues<TFields>>>;
10
+ }): BlockDefinition<TFields>;
11
+ //# sourceMappingURL=define-block.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-block.d.ts","sourceRoot":"","sources":["../../../src/studio/define-block.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEnF,MAAM,MAAM,WAAW,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI;KACnE,CAAC,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;CAC1C,CAAC;AAEF,wBAAgB,WAAW,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE;IAC/E,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC7B,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,mBAAmB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CAC3E,GAAG,eAAe,CAAC,OAAO,CAAC,CAE3B"}
@@ -0,0 +1,3 @@
1
+ import { Field } from "./types";
2
+ export declare function defineField<TValue>(field: Field<TValue>): Field<TValue>;
3
+ //# sourceMappingURL=define-field.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-field.d.ts","sourceRoot":"","sources":["../../../src/studio/define-field.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,wBAAgB,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAEvE"}
@@ -0,0 +1,3 @@
1
+ import { BlockSchema, Field } from "./types";
2
+ export declare function defineSchema<TFields extends Record<string, Field<any>>>(schema: BlockSchema<TFields>): BlockSchema<TFields>;
3
+ //# sourceMappingURL=define-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-schema.d.ts","sourceRoot":"","sources":["../../../src/studio/define-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAE7C,wBAAgB,YAAY,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,wBAEpG"}
@@ -0,0 +1,5 @@
1
+ export * from "./types";
2
+ export * from "./define-block";
3
+ export * from "./define-field";
4
+ export * from "./define-schema";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/studio/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AAExB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { FieldValues } from "../define-block";
2
+ import { Field } from "./field";
3
+ export interface BlockSchema<TFields extends Record<string, Field<any>>> {
4
+ fields: TFields;
5
+ properties?: BlockProperties;
6
+ }
7
+ export interface BlockDefinition<TFields extends Record<string, Field<any>>> {
8
+ name: string;
9
+ schema: BlockSchema<TFields>;
10
+ component: React.ComponentType<BlockComponentProps<FieldValues<TFields>>>;
11
+ }
12
+ export interface BuilderBlock<TFields extends Record<string, Field<any>>> {
13
+ id: string;
14
+ type: string;
15
+ fields: TFields;
16
+ properties?: BlockProperties;
17
+ }
18
+ export interface BlockProperties {
19
+ customClassName?: string;
20
+ }
21
+ export interface BlockComponentProps<TFieldValues extends Record<string, any>> {
22
+ block: BuilderBlock<TFieldValues>;
23
+ onFieldChange: (blockId: string, fieldName: keyof TFieldValues, value: any) => void;
24
+ }
25
+ //# sourceMappingURL=block.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block.d.ts","sourceRoot":"","sources":["../../../../src/studio/types/block.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,MAAM,WAAW,WAAW,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACrE,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,eAAe,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACzE,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC7B,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,mBAAmB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CAC3E;AAED,MAAM,WAAW,YAAY,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACtE,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,eAAe,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB,CAAC,YAAY,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAC3E,KAAK,EAAE,YAAY,CAAC,YAAY,CAAC,CAAC;IAClC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,YAAY,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;CACrF"}
@@ -0,0 +1,8 @@
1
+ export interface Media {
2
+ id: string;
3
+ url: string;
4
+ width: number;
5
+ height: number;
6
+ alt: string;
7
+ }
8
+ //# sourceMappingURL=field-values.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-values.d.ts","sourceRoot":"","sources":["../../../../src/studio/types/field-values.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb"}
@@ -0,0 +1,14 @@
1
+ export type FieldType = "boolean" | "event_select" | "form_select" | "image" | "image_list" | "list_array" | "media" | "menu_select" | "number" | "press_select" | "repeater" | "rich_text" | "separator" | "spacer" | "text" | "textarea" | "url";
2
+ export interface Field<TValue = any> {
3
+ name: string;
4
+ slug: string;
5
+ type: FieldType;
6
+ value?: TValue;
7
+ placeholder?: string;
8
+ required?: boolean;
9
+ options?: Array<{
10
+ label: string;
11
+ value: any;
12
+ }>;
13
+ }
14
+ //# sourceMappingURL=field.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../../../../src/studio/types/field.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GACjB,SAAS,GACT,cAAc,GACd,aAAa,GACb,OAAO,GACP,YAAY,GACZ,YAAY,GACZ,OAAO,GACP,aAAa,GACb,QAAQ,GACR,cAAc,GACd,UAAU,GACV,WAAW,GACX,WAAW,GACX,QAAQ,GACR,MAAM,GACN,UAAU,GACV,KAAK,CAAC;AAEV,MAAM,WAAW,KAAK,CAAC,MAAM,GAAG,GAAG;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,CAAC,CAAC;CAChD"}
@@ -0,0 +1,4 @@
1
+ export * from "./block";
2
+ export * from "./field";
3
+ export * from "./field-values";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/studio/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AAExB,cAAc,gBAAgB,CAAC"}
@@ -11,4 +11,5 @@ export * from "./navigation";
11
11
  export * from "./page";
12
12
  export * from "./press";
13
13
  export * from "./website";
14
+ export * from "../studio/types/index";
14
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAE1B,cAAc,uBAAuB,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@antlur/backstage",
3
3
  "author": "Anthony Holmes",
4
- "version": "1.0.10",
4
+ "version": "1.2.0",
5
5
  "description": "A simple client for Backstage CMS",
6
6
  "main": "./dist/cjs/index.js",
7
7
  "module": "./dist/esm/index.js",
@@ -17,6 +17,11 @@
17
17
  "import": "./dist/esm/types/index.js",
18
18
  "types": "./dist/types/types/*.d.ts"
19
19
  },
20
+ "./studio": {
21
+ "require": "./dist/cjs/studio/index.js",
22
+ "import": "./dist/esm/studio/index.js",
23
+ "types": "./dist/types/studio/*.d.ts"
24
+ },
20
25
  "./*": {
21
26
  "require": "./dist/cjs/*.js",
22
27
  "import": "./dist/esm/*.js",
package/src/client.ts CHANGED
@@ -1,9 +1,27 @@
1
1
  import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse, AxiosError } from "axios";
2
2
  import { getGlobalConfig, BackstageUserConfig } from "./config";
3
+ import { AlertService } from "./endpoints/alerts";
4
+ import { EventService } from "./endpoints/events";
5
+ import { LocationService } from "./endpoints/locations";
6
+ import { MenuService } from "./endpoints/menus";
7
+ import { NavigationService } from "./endpoints/navigation";
8
+ import { PageService } from "./endpoints/pages";
9
+ import { PressService } from "./endpoints/press";
10
+ import { WebsiteService } from "./endpoints/website";
3
11
 
4
12
  export class BackstageClient {
5
13
  private instance: AxiosInstance;
6
14
 
15
+ // Service Instances
16
+ public readonly alerts: AlertService;
17
+ public readonly events: EventService;
18
+ public readonly locations: LocationService;
19
+ public readonly menus: MenuService;
20
+ public readonly navigation: NavigationService;
21
+ public readonly pages: PageService;
22
+ public readonly press: PressService;
23
+ public readonly website: WebsiteService;
24
+
7
25
  constructor(config?: BackstageUserConfig) {
8
26
  // If no config is passed, try to get from the global config
9
27
  const globalConfig = getGlobalConfig();
@@ -60,6 +78,16 @@ export class BackstageClient {
60
78
  return Promise.reject(error);
61
79
  }
62
80
  );
81
+
82
+ // Initialize service instances
83
+ this.alerts = new AlertService(this);
84
+ this.events = new EventService(this);
85
+ this.locations = new LocationService(this);
86
+ this.menus = new MenuService(this);
87
+ this.navigation = new NavigationService(this);
88
+ this.pages = new PageService(this);
89
+ this.press = new PressService(this);
90
+ this.website = new WebsiteService(this);
63
91
  }
64
92
 
65
93
  public async get<T = unknown>(url: string, config?: AxiosRequestConfig): Promise<T> {
@@ -91,7 +119,3 @@ export class BackstageClient {
91
119
  return this.instance;
92
120
  }
93
121
  }
94
-
95
- export const client = function (config?: BackstageUserConfig): BackstageClient {
96
- return new BackstageClient(config);
97
- };
package/src/config.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { AxiosError } from "axios";
2
+ import type { BlockDefinition } from "./studio/types";
2
3
 
3
4
  const ROOT = process.cwd();
4
5
  const CONFIG_PATH = process.env.BACKSTAGE_CONFIG_PATH || "./backstage.config";
@@ -8,6 +9,7 @@ export interface BackstageUserConfig {
8
9
  accountId?: string | undefined;
9
10
  token?: string | undefined;
10
11
  baseURL?: string;
12
+ blocks?: BlockDefinition<any>[] | undefined;
11
13
  onError?: (error: AxiosError) => void;
12
14
  }
13
15
 
@@ -1,7 +1,9 @@
1
- import { client } from "../client";
2
1
  import { ApiCollectionResponse, Alert } from "../types";
2
+ import { BaseService } from "./base";
3
3
 
4
- export async function getAlerts() {
5
- const { data } = await client().get<ApiCollectionResponse<Alert>>("/alerts");
6
- return data;
4
+ export class AlertService extends BaseService {
5
+ async getAlerts(): Promise<Alert[]> {
6
+ const { data } = await this.client.get<ApiCollectionResponse<Alert>>("/alerts");
7
+ return data;
8
+ }
7
9
  }
@@ -0,0 +1,5 @@
1
+ import { BackstageClient } from "../client";
2
+
3
+ export class BaseService {
4
+ constructor(protected client: BackstageClient) {}
5
+ }
@@ -1,20 +1,19 @@
1
- import { client } from "../client";
2
1
  import { ApiCollectionResponse, Event } from "../types";
2
+ import { BaseService } from "./base";
3
3
 
4
- export async function getEvents(): Promise<Event[]> {
5
- const res = await client().get<ApiCollectionResponse<Event>>("/events");
6
- const pages = res.data;
7
- return pages;
8
- }
4
+ export class EventService extends BaseService {
5
+ async getEvents(): Promise<Event[]> {
6
+ const { data } = await this.client.get<ApiCollectionResponse<Event>>("/events");
7
+ return data;
8
+ }
9
9
 
10
- export async function getEvent(id: string): Promise<Event> {
11
- const res = await client().get<ApiCollectionResponse<Event>>("/events" + "?filter[id]=" + id);
12
- const pages = res.data?.[0];
13
- return pages;
14
- }
10
+ async getEvent(id: string): Promise<Event> {
11
+ const { data } = await this.client.get<ApiCollectionResponse<Event>>("/events" + "?filter[id]=" + id);
12
+ return data?.[0];
13
+ }
15
14
 
16
- export async function getEventBySlug(slug: string): Promise<Event> {
17
- const res = await client().get<ApiCollectionResponse<Event>>("/events" + "?filter[slug]=" + slug);
18
- const pages = res.data?.[0];
19
- return pages;
15
+ async getEventBySlug(slug: string): Promise<Event> {
16
+ const { data } = await this.client.get<ApiCollectionResponse<Event>>("/events" + "?filter[slug]=" + slug);
17
+ return data?.[0];
18
+ }
20
19
  }
@@ -1,25 +1,27 @@
1
- import { client } from "../client";
2
1
  import { ApiCollectionResponse, Location } from "../types";
2
+ import { BaseService } from "./base";
3
3
 
4
- export async function getLocations(): Promise<Location[]> {
5
- const res = await client().get<ApiCollectionResponse<Location>>("/locations");
6
- let locations = res.data;
7
- locations = locations.sort((a: any, b: any) => {
8
- if (a.name < b.name) {
9
- return -1;
10
- }
11
- return 1;
12
- });
13
- return locations;
14
- }
4
+ export class LocationService extends BaseService {
5
+ async getLocations(): Promise<Location[]> {
6
+ const res = await this.client.get<ApiCollectionResponse<Location>>("/locations");
7
+ let locations = res.data;
8
+ locations = locations.sort((a: any, b: any) => {
9
+ if (a.name < b.name) {
10
+ return -1;
11
+ }
12
+ return 1;
13
+ });
14
+ return locations;
15
+ }
15
16
 
16
- export async function getLocationBySlug(slug: string) {
17
- const res = await client().get<ApiCollectionResponse<Location>>(`/locations?filter[slug]=${slug}`);
18
- const data = res.data;
17
+ async getLocationBySlug(slug: string) {
18
+ const res = await this.client.get<ApiCollectionResponse<Location>>(`/locations?filter[slug]=${slug}`);
19
+ const data = res.data;
19
20
 
20
- if (Array.isArray(data) && data.length > 0) {
21
- return data[0];
22
- }
21
+ if (Array.isArray(data) && data.length > 0) {
22
+ return data[0];
23
+ }
23
24
 
24
- return data;
25
+ return data;
26
+ }
25
27
  }
@@ -1,30 +1,34 @@
1
- import { client } from "../client";
2
1
  import { ApiCollectionResponse, Menu } from "../types";
2
+ import { BaseService } from "./base";
3
3
 
4
- export async function getMenus(): Promise<Menu[]> {
5
- const res = await client().get<ApiCollectionResponse<Menu>>("/menus");
6
- const menus = res.data;
7
- return menus;
8
- }
4
+ export class MenuService extends BaseService {
5
+ async getMenus(): Promise<Menu[]> {
6
+ const res = await this.client.get<ApiCollectionResponse<Menu>>("/menus");
7
+ const menus = res.data;
8
+ return menus;
9
+ }
10
+
11
+ async getMenu(id: string) {
12
+ const res = await this.client.get<ApiCollectionResponse<Menu>>(`/menus?filter[id]=${id}&include=categories.items`);
13
+ const data = res.data;
9
14
 
10
- export async function getMenu(id: string) {
11
- const res = await client().get<ApiCollectionResponse<Menu>>(`/menus?filter[id]=${id}&include=categories.items`);
12
- const data = res.data;
15
+ if (Array.isArray(data) && data.length > 0) {
16
+ return data[0];
17
+ }
13
18
 
14
- if (Array.isArray(data) && data.length > 0) {
15
- return data[0];
19
+ return data;
16
20
  }
17
21
 
18
- return data;
19
- }
22
+ async getMenuBySlug(slug: string) {
23
+ const res = await this.client.get<ApiCollectionResponse<Menu>>(
24
+ `/menus?filter[slug]=${slug}&include=categories.items`
25
+ );
26
+ const data = res.data;
20
27
 
21
- export async function getMenuBySlug(slug: string) {
22
- const res = await client().get<ApiCollectionResponse<Menu>>(`/menus?filter[slug]=${slug}&include=categories.items`);
23
- const data = res.data;
28
+ if (Array.isArray(data) && data.length > 0) {
29
+ return data[0];
30
+ }
24
31
 
25
- if (Array.isArray(data) && data.length > 0) {
26
- return data[0];
32
+ return data;
27
33
  }
28
-
29
- return data;
30
34
  }
@@ -1,34 +1,36 @@
1
- import { client } from "../client";
2
1
  import { ApiSingleResponse, ApiCollectionResponse, Navigation } from "../types";
2
+ import { BaseService } from "./base";
3
3
 
4
- export async function getDefaultNavigation(): Promise<Navigation> {
5
- const navigations = await getNavigations();
6
- return navigations[0];
7
- }
4
+ export class NavigationService extends BaseService {
5
+ async getNavigations(): Promise<Navigation[]> {
6
+ const res = await this.client.get<ApiCollectionResponse<Navigation>>("/navigations");
7
+ const navigations = res.data;
8
8
 
9
- export async function getNavigations(): Promise<Navigation[]> {
10
- const res = await client().get<ApiCollectionResponse<Navigation>>("/navigations");
11
- const navigations = res.data;
9
+ return Promise.all(
10
+ navigations.map(async (navigation: any) => {
11
+ const res = await this.client.get<ApiCollectionResponse<Navigation>>("/navigations/" + navigation.id);
12
+ return res.data[0];
13
+ })
14
+ );
15
+ }
12
16
 
13
- return Promise.all(
14
- navigations.map(async (navigation: any) => {
15
- const res = await client().get<ApiCollectionResponse<Navigation>>("/navigations/" + navigation.id);
16
- return res.data[0];
17
- })
18
- );
19
- }
17
+ async getDefaultNavigation(): Promise<Navigation> {
18
+ const navigations = await this.getNavigations();
19
+ return navigations[0];
20
+ }
20
21
 
21
- export async function getNavigation(id: string): Promise<Navigation> {
22
- const res = await client().get<ApiSingleResponse<Navigation>>(`/navigations/${id}`);
23
- const navigation = res.data;
22
+ async getNavigation(id: string): Promise<Navigation> {
23
+ const res = await this.client.get<ApiSingleResponse<Navigation>>(`/navigations/${id}`);
24
+ const navigation = res.data;
24
25
 
25
- const topLevelItems = navigation.items.filter((item: any) => item.parent_id === null);
26
+ const topLevelItems = navigation.items.filter((item: any) => item.parent_id === null);
26
27
 
27
- topLevelItems.forEach((item: any) => {
28
- item.children = navigation.items.filter((child: any) => child.parent_id === item.id);
29
- });
28
+ topLevelItems.forEach((item: any) => {
29
+ item.children = navigation.items.filter((child: any) => child.parent_id === item.id);
30
+ });
30
31
 
31
- navigation.items = topLevelItems;
32
+ navigation.items = topLevelItems;
32
33
 
33
- return navigation;
34
+ return navigation;
35
+ }
34
36
  }
@@ -1,23 +1,24 @@
1
- import { client } from "../client";
2
- import { Page } from "../types/page";
3
- import { ApiCollectionResponse } from "../types/api";
1
+ import { ApiCollectionResponse, Page } from "../types";
2
+ import { BaseService } from "./base";
4
3
 
5
- export async function getPage(slug: string): Promise<Page> {
6
- const res = await client().get<ApiCollectionResponse<Page>>(`/pages/?filter[slug]=${slug}`);
7
- return res.data[0];
8
- }
4
+ export class PageService extends BaseService {
5
+ async getPages(): Promise<Page[]> {
6
+ const res = await this.client.get<ApiCollectionResponse<Page>>("/pages");
7
+ return res.data;
8
+ }
9
9
 
10
- export async function getPages() {
11
- const { data } = await client().get<ApiCollectionResponse<Page>>("/pages");
12
- return data;
13
- }
10
+ async getPage(id: string): Promise<Page> {
11
+ const res = await this.client.get<ApiCollectionResponse<Page>>(`/pages/${id}`);
12
+ return res.data[0];
13
+ }
14
14
 
15
- export async function getHomePage() {
16
- const res = await client().get<ApiCollectionResponse<Page>>("/pages?filter[slug]=/");
17
- return res.data[0];
18
- }
15
+ async getPageBySlug(slug: string): Promise<Page> {
16
+ const res = await this.client.get<ApiCollectionResponse<Page>>(`/pages?filter[slug]=${slug}`);
17
+ return res.data[0];
18
+ }
19
19
 
20
- export async function getPageBySlug(slug: string) {
21
- const res = await client().get<ApiCollectionResponse<Page>>("/pages?filter[slug]=" + slug);
22
- return res.data[0];
20
+ async getHomePage(): Promise<Page> {
21
+ const res = await this.client.get<ApiCollectionResponse<Page>>("/pages?filter[slug]=/");
22
+ return res.data[0];
23
+ }
23
24
  }
@@ -1,7 +1,9 @@
1
- import { client } from "../client";
2
1
  import { ApiCollectionResponse, Press } from "../types";
2
+ import { BaseService } from "./base";
3
3
 
4
- export async function getPress(): Promise<Press[]> {
5
- const { data } = await client().get<ApiCollectionResponse<Press>>("/press");
6
- return data;
4
+ export class PressService extends BaseService {
5
+ async getPress(): Promise<Press[]> {
6
+ const { data } = await this.client.get<ApiCollectionResponse<Press>>("/press");
7
+ return data;
8
+ }
7
9
  }
@@ -1,7 +1,9 @@
1
- import { client } from "../client";
2
1
  import { ApiCollectionResponse, Website } from "../types";
2
+ import { BaseService } from "./base";
3
3
 
4
- export async function getWebsite(): Promise<Website> {
5
- const res = await client().get<ApiCollectionResponse<Website>>("/websites");
6
- return res.data[0];
4
+ export class WebsiteService extends BaseService {
5
+ async getWebsite(): Promise<Website> {
6
+ const res = await this.client.get<ApiCollectionResponse<Website>>("/websites");
7
+ return res.data[0];
8
+ }
7
9
  }