@fougere/admin 0.9.3-alpha.0 → 0.10.0-alpha.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 (217) hide show
  1. package/dist/{extensions.d.ts → AdminExtension.d.ts} +5 -14
  2. package/dist/AdminExtension.d.ts.map +1 -0
  3. package/dist/{extensions.js → AdminExtension.js} +3 -3
  4. package/dist/AdminExtension.js.map +1 -0
  5. package/dist/AdminFacetRegistry.d.ts +9 -0
  6. package/dist/AdminFacetRegistry.d.ts.map +1 -0
  7. package/dist/AdminFacetRegistry.js +2 -0
  8. package/dist/AdminFacetRegistry.js.map +1 -0
  9. package/dist/AdminFacets.d.ts +6 -0
  10. package/dist/AdminFacets.d.ts.map +1 -0
  11. package/dist/{facets.js → AdminFacets.js} +1 -1
  12. package/dist/AdminFacets.js.map +1 -0
  13. package/dist/AdminFieldExtension.d.ts +7 -0
  14. package/dist/AdminFieldExtension.d.ts.map +1 -0
  15. package/dist/AdminFieldExtension.js +2 -0
  16. package/dist/AdminFieldExtension.js.map +1 -0
  17. package/dist/AdminOperation.d.ts +9 -0
  18. package/dist/AdminOperation.d.ts.map +1 -0
  19. package/dist/AdminOperation.js +2 -0
  20. package/dist/AdminOperation.js.map +1 -0
  21. package/dist/AdminOperationExtension.d.ts +6 -0
  22. package/dist/AdminOperationExtension.d.ts.map +1 -0
  23. package/dist/AdminOperationExtension.js +2 -0
  24. package/dist/AdminOperationExtension.js.map +1 -0
  25. package/dist/{resources.d.ts → AdminResource.d.ts} +11 -17
  26. package/dist/AdminResource.d.ts.map +1 -0
  27. package/dist/{resources.js → AdminResource.js} +13 -14
  28. package/dist/AdminResource.js.map +1 -0
  29. package/dist/AdminRuntime.d.ts +11 -0
  30. package/dist/AdminRuntime.d.ts.map +1 -0
  31. package/dist/{runtime.js → AdminRuntime.js} +5 -6
  32. package/dist/AdminRuntime.js.map +1 -0
  33. package/dist/AdminRuntimeOptions.d.ts +8 -0
  34. package/dist/AdminRuntimeOptions.d.ts.map +1 -0
  35. package/dist/AdminRuntimeOptions.js +2 -0
  36. package/dist/AdminRuntimeOptions.js.map +1 -0
  37. package/dist/{topology.d.ts → Drawing.d.ts} +5 -46
  38. package/dist/Drawing.d.ts.map +1 -0
  39. package/dist/{topology.js → Drawing.js} +4 -5
  40. package/dist/Drawing.js.map +1 -0
  41. package/dist/EditorialFacet.d.ts +13 -0
  42. package/dist/EditorialFacet.d.ts.map +1 -0
  43. package/dist/EditorialFacet.js +2 -0
  44. package/dist/EditorialFacet.js.map +1 -0
  45. package/dist/FougereAdminProps.d.ts +17 -0
  46. package/dist/FougereAdminProps.d.ts.map +1 -0
  47. package/dist/FougereAdminProps.js +2 -0
  48. package/dist/FougereAdminProps.js.map +1 -0
  49. package/dist/FougereDashboardContextValue.d.ts +11 -0
  50. package/dist/FougereDashboardContextValue.d.ts.map +1 -0
  51. package/dist/FougereDashboardContextValue.js +2 -0
  52. package/dist/FougereDashboardContextValue.js.map +1 -0
  53. package/dist/FougereDashboardExtension.d.ts +13 -0
  54. package/dist/FougereDashboardExtension.d.ts.map +1 -0
  55. package/dist/FougereDashboardExtension.js +2 -0
  56. package/dist/FougereDashboardExtension.js.map +1 -0
  57. package/dist/FougereDashboardMetrics.d.ts +7 -0
  58. package/dist/FougereDashboardMetrics.d.ts.map +1 -0
  59. package/dist/FougereDashboardMetrics.js +2 -0
  60. package/dist/FougereDashboardMetrics.js.map +1 -0
  61. package/dist/FougereDashboardResource.d.ts +14 -0
  62. package/dist/FougereDashboardResource.d.ts.map +1 -0
  63. package/dist/FougereDashboardResource.js +2 -0
  64. package/dist/FougereDashboardResource.js.map +1 -0
  65. package/dist/FougereDashboardWidget.d.ts +11 -0
  66. package/dist/FougereDashboardWidget.d.ts.map +1 -0
  67. package/dist/FougereDashboardWidget.js +2 -0
  68. package/dist/FougereDashboardWidget.js.map +1 -0
  69. package/dist/FougereDashboardZone.d.ts +2 -0
  70. package/dist/FougereDashboardZone.d.ts.map +1 -0
  71. package/dist/FougereDashboardZone.js +2 -0
  72. package/dist/FougereDashboardZone.js.map +1 -0
  73. package/dist/{provider.d.ts → FougereDataProvider.d.ts} +2 -17
  74. package/dist/FougereDataProvider.d.ts.map +1 -0
  75. package/dist/{provider.js → FougereDataProvider.js} +2 -3
  76. package/dist/FougereDataProvider.js.map +1 -0
  77. package/dist/FougereResourceOptions.d.ts +16 -0
  78. package/dist/FougereResourceOptions.d.ts.map +1 -0
  79. package/dist/FougereResourceOptions.js +2 -0
  80. package/dist/FougereResourceOptions.js.map +1 -0
  81. package/dist/LoadedAdmin.d.ts +7 -0
  82. package/dist/LoadedAdmin.d.ts.map +1 -0
  83. package/dist/LoadedAdmin.js +2 -0
  84. package/dist/LoadedAdmin.js.map +1 -0
  85. package/dist/PlacedEdge.d.ts +17 -0
  86. package/dist/PlacedEdge.d.ts.map +1 -0
  87. package/dist/PlacedEdge.js +2 -0
  88. package/dist/PlacedEdge.js.map +1 -0
  89. package/dist/PlacedNode.d.ts +10 -0
  90. package/dist/PlacedNode.d.ts.map +1 -0
  91. package/dist/PlacedNode.js +2 -0
  92. package/dist/PlacedNode.js.map +1 -0
  93. package/dist/Point.d.ts +5 -0
  94. package/dist/Point.d.ts.map +1 -0
  95. package/dist/Point.js +2 -0
  96. package/dist/Point.js.map +1 -0
  97. package/dist/ProviderOptions.d.ts +10 -0
  98. package/dist/ProviderOptions.d.ts.map +1 -0
  99. package/dist/ProviderOptions.js +2 -0
  100. package/dist/ProviderOptions.js.map +1 -0
  101. package/dist/ReactAdminFieldContext.d.ts +10 -0
  102. package/dist/ReactAdminFieldContext.d.ts.map +1 -0
  103. package/dist/ReactAdminFieldContext.js +2 -0
  104. package/dist/ReactAdminFieldContext.js.map +1 -0
  105. package/dist/ReactAdminFieldRenderer.d.ts +4 -0
  106. package/dist/ReactAdminFieldRenderer.d.ts.map +1 -0
  107. package/dist/ReactAdminFieldRenderer.js +2 -0
  108. package/dist/ReactAdminFieldRenderer.js.map +1 -0
  109. package/dist/ReactAdminInputContext.d.ts +9 -0
  110. package/dist/ReactAdminInputContext.d.ts.map +1 -0
  111. package/dist/ReactAdminInputContext.js +2 -0
  112. package/dist/ReactAdminInputContext.js.map +1 -0
  113. package/dist/ReactAdminInputRenderer.d.ts +4 -0
  114. package/dist/ReactAdminInputRenderer.d.ts.map +1 -0
  115. package/dist/ReactAdminInputRenderer.js +2 -0
  116. package/dist/ReactAdminInputRenderer.js.map +1 -0
  117. package/dist/ReactAdminRenderers.d.ts +8 -0
  118. package/dist/ReactAdminRenderers.d.ts.map +1 -0
  119. package/dist/ReactAdminRenderers.js +2 -0
  120. package/dist/ReactAdminRenderers.js.map +1 -0
  121. package/dist/ReactAdminResourceComponents.d.ts +9 -0
  122. package/dist/ReactAdminResourceComponents.d.ts.map +1 -0
  123. package/dist/ReactAdminResourceComponents.js +2 -0
  124. package/dist/ReactAdminResourceComponents.js.map +1 -0
  125. package/dist/ResourceKey.d.ts +8 -0
  126. package/dist/ResourceKey.d.ts.map +1 -0
  127. package/dist/ResourceKey.js +2 -0
  128. package/dist/ResourceKey.js.map +1 -0
  129. package/dist/ResourceRenderOptions.d.ts +7 -0
  130. package/dist/ResourceRenderOptions.d.ts.map +1 -0
  131. package/dist/ResourceRenderOptions.js +2 -0
  132. package/dist/ResourceRenderOptions.js.map +1 -0
  133. package/dist/TopologyNode.d.ts +18 -0
  134. package/dist/TopologyNode.d.ts.map +1 -0
  135. package/dist/TopologyNode.js +2 -0
  136. package/dist/TopologyNode.js.map +1 -0
  137. package/dist/UsersFacet.d.ts +13 -0
  138. package/dist/UsersFacet.d.ts.map +1 -0
  139. package/dist/UsersFacet.js +2 -0
  140. package/dist/UsersFacet.js.map +1 -0
  141. package/dist/dashboard.d.ts +4 -61
  142. package/dist/dashboard.d.ts.map +1 -1
  143. package/dist/dashboard.js +9 -9
  144. package/dist/dashboard.js.map +1 -1
  145. package/dist/index.d.ts +3 -2
  146. package/dist/index.d.ts.map +1 -1
  147. package/dist/index.js +1 -1
  148. package/dist/index.js.map +1 -1
  149. package/dist/react.d.ts +21 -65
  150. package/dist/react.d.ts.map +1 -1
  151. package/dist/react.js +7 -7
  152. package/dist/react.js.map +1 -1
  153. package/dist/theme.js +1 -1
  154. package/dist/topology-page.d.ts.map +1 -1
  155. package/dist/topology-page.js +3 -3
  156. package/dist/topology-page.js.map +1 -1
  157. package/package.json +6 -5
  158. package/src/{extensions.ts → AdminExtension.ts} +5 -16
  159. package/src/AdminFacetRegistry.ts +9 -0
  160. package/src/AdminFacets.ts +22 -0
  161. package/src/AdminFieldExtension.ts +6 -0
  162. package/src/AdminOperation.ts +9 -0
  163. package/src/AdminOperationExtension.ts +5 -0
  164. package/src/{resources.ts → AdminResource.ts} +18 -26
  165. package/src/{runtime.ts → AdminRuntime.ts} +6 -24
  166. package/src/AdminRuntimeOptions.ts +8 -0
  167. package/src/{topology.ts → Drawing.ts} +7 -60
  168. package/src/EditorialFacet.ts +12 -0
  169. package/src/FougereAdminProps.ts +17 -0
  170. package/src/FougereDashboardContextValue.ts +11 -0
  171. package/src/FougereDashboardExtension.ts +13 -0
  172. package/src/FougereDashboardMetrics.ts +6 -0
  173. package/src/FougereDashboardResource.ts +14 -0
  174. package/src/FougereDashboardWidget.ts +11 -0
  175. package/src/FougereDashboardZone.ts +1 -0
  176. package/src/{provider.ts → FougereDataProvider.ts} +3 -26
  177. package/src/FougereResourceOptions.ts +13 -0
  178. package/src/LoadedAdmin.ts +7 -0
  179. package/src/PlacedEdge.ts +17 -0
  180. package/src/PlacedNode.ts +10 -0
  181. package/src/Point.ts +4 -0
  182. package/src/ProviderOptions.ts +10 -0
  183. package/src/ReactAdminFieldContext.ts +10 -0
  184. package/src/ReactAdminFieldRenderer.ts +4 -0
  185. package/src/ReactAdminInputContext.ts +9 -0
  186. package/src/ReactAdminInputRenderer.ts +4 -0
  187. package/src/ReactAdminRenderers.ts +8 -0
  188. package/src/ReactAdminResourceComponents.ts +9 -0
  189. package/src/ResourceKey.ts +7 -0
  190. package/src/ResourceRenderOptions.ts +7 -0
  191. package/src/TopologyNode.ts +18 -0
  192. package/src/UsersFacet.ts +12 -0
  193. package/src/dashboard.tsx +19 -88
  194. package/src/index.ts +3 -9
  195. package/src/react.tsx +37 -80
  196. package/src/theme.tsx +1 -1
  197. package/src/topology-page.tsx +5 -3
  198. package/template/index.html +5 -0
  199. package/template/package.json +22 -0
  200. package/template/src/main.tsx +27 -0
  201. package/template/tsconfig.json +12 -0
  202. package/template/vite.config.ts +16 -0
  203. package/dist/extensions.d.ts.map +0 -1
  204. package/dist/extensions.js.map +0 -1
  205. package/dist/facets.d.ts +0 -36
  206. package/dist/facets.d.ts.map +0 -1
  207. package/dist/facets.js.map +0 -1
  208. package/dist/provider.d.ts.map +0 -1
  209. package/dist/provider.js.map +0 -1
  210. package/dist/resources.d.ts.map +0 -1
  211. package/dist/resources.js.map +0 -1
  212. package/dist/runtime.d.ts +0 -22
  213. package/dist/runtime.d.ts.map +0 -1
  214. package/dist/runtime.js.map +0 -1
  215. package/dist/topology.d.ts.map +0 -1
  216. package/dist/topology.js.map +0 -1
  217. package/src/facets.ts +0 -55
@@ -1,16 +1,7 @@
1
- import { type AdminResource } from './resources.js';
2
- import { type AdminFacets } from './facets.js';
3
- export interface AdminFieldExtension {
4
- /** Changes the fallback in every derived view of this field. */
5
- label?: string;
6
- /** Removes the field from derived tables, shows and forms. */
7
- hidden?: boolean;
8
- }
9
- export interface AdminOperationExtension {
10
- label?: string;
11
- /** `false` explicitly removes a confirmation added by an earlier extension. */
12
- confirm?: string | false;
13
- }
1
+ import { type AdminResource } from './AdminResource.js';
2
+ import { type AdminFacets } from './AdminFacets.js';
3
+ import type { AdminFieldExtension } from './AdminFieldExtension.js';
4
+ import type { AdminOperationExtension } from './AdminOperationExtension.js';
14
5
  export interface AdminExtension {
15
6
  /** Registration key from the card (`post`, not `Post`). */
16
7
  resource: string;
@@ -24,4 +15,4 @@ export interface AdminExtension {
24
15
  export declare function defineAdminExtension<const T extends AdminExtension>(extension: T): T;
25
16
  /** Apply deltas to the latest derived model. Unmentioned and future resources pass through. */
26
17
  export declare function applyAdminExtensions(resources: readonly AdminResource[], extensions?: readonly AdminExtension[]): AdminResource[];
27
- //# sourceMappingURL=extensions.d.ts.map
18
+ //# sourceMappingURL=AdminExtension.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminExtension.d.ts","sourceRoot":"","sources":["../src/AdminExtension.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAE5E,MAAM,WAAW,cAAc;IAC7B,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+EAA+E;IAC/E,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;CACtD;AAED,qEAAqE;AACrE,wBAAgB,oBAAoB,CAAC,KAAK,CAAC,CAAC,SAAS,cAAc,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,CAEpF;AAsDD,+FAA+F;AAC/F,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,SAAS,aAAa,EAAE,EACnC,UAAU,GAAE,SAAS,cAAc,EAAO,GACzC,aAAa,EAAE,CAqBjB"}
@@ -1,5 +1,5 @@
1
- import { capabilitiesOf } from './resources.js';
2
- import { mergeAdminFacets } from './facets.js';
1
+ import { capabilitiesOf } from './AdminResource.js';
2
+ import { mergeAdminFacets } from './AdminFacets.js';
3
3
  /** Typed identity helper for extensions kept in their own module. */
4
4
  export function defineAdminExtension(extension) {
5
5
  return extension;
@@ -71,4 +71,4 @@ export function applyAdminExtensions(resources, extensions = []) {
71
71
  };
72
72
  });
73
73
  }
74
- //# sourceMappingURL=extensions.js.map
74
+ //# sourceMappingURL=AdminExtension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminExtension.js","sourceRoot":"","sources":["../src/AdminExtension.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAsB,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAoB,MAAM,kBAAkB,CAAC;AActE,qEAAqE;AACrE,MAAM,UAAU,oBAAoB,CAAiC,SAAY;IAC/E,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,eAAe,CAAC,UAAqC;IAC5D,MAAM,MAAM,GAAqC,EAAE,CAAC;IACpD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QAClE,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACnC,MAAM,CAAC,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;QAC1E,CAAC;QACD,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YACrB,MAAM,CAAC,MAAM,KAAK,EAAE,CAAC;YACrB,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC7D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;YAC7D,CAAC;QACH,CAAC;QACD,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;YACzB,MAAM,CAAC,UAAU,KAAK,EAAE,CAAC;YACzB,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;gBACjE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;YACrE,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,YAAY,CACnB,MAAoB,EACpB,OAAiC;IAEjC,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAC9B,MAAM,KAAK,GAAG,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,KAAK,EAAE,MAAM;YAAE,OAAO,EAAE,CAAC;QAC7B,OAAO,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,gBAAgB,CACvB,UAAqC,EACrC,OAAqC;IAErC,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;QAClC,MAAM,KAAK,GAAG,OAAO,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO;YACL,GAAG,SAAS;YACZ,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7D,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK;gBAC1B,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE;gBACxB,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,SAAS;oBAC5B,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE;oBAC5B,CAAC,CAAC,EAAE,CAAC;SACV,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,oBAAoB,CAClC,SAAmC,EACnC,UAAU,GAA8B,EAAE;IAE1C,MAAM,UAAU,GAAG,IAAI,GAAG,EAA4B,CAAC;IACvD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrB,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QAChC,MAAM,KAAK,GAAG,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACnE,MAAM,UAAU,GAAG,gBAAgB,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QAC3E,OAAO;YACL,GAAG,QAAQ;YACX,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5D,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;YAC7D,OAAO,EAAE,YAAY,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC;YACrD,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YACnD,UAAU;YACV,GAAG,EAAE,cAAc,CAAC,UAAU,CAAC;SAChC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { EditorialFacet } from './EditorialFacet.js';
2
+ import type { UsersFacet } from './UsersFacet.js';
3
+ /** Open registry of the semantic projections renderers understand. */
4
+ export interface AdminFacetRegistry {
5
+ editorial: EditorialFacet;
6
+ users: UsersFacet;
7
+ [facet: string]: unknown;
8
+ }
9
+ //# sourceMappingURL=AdminFacetRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminFacetRegistry.d.ts","sourceRoot":"","sources":["../src/AdminFacetRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,sEAAsE;AACtE,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,cAAc,CAAC;IAC1B,KAAK,EAAE,UAAU,CAAC;IAClB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=AdminFacetRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminFacetRegistry.js","sourceRoot":"","sources":["../src/AdminFacetRegistry.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import type { AdminFacetRegistry } from './AdminFacetRegistry.js';
2
+ export type AdminFacets = Partial<AdminFacetRegistry>;
3
+ export declare function defineAdminFacet<const Name extends string, const Value>(name: Name, value: Value): Record<Name, Value>;
4
+ /** Arrays replace; semantic objects merge recursively so small project deltas stay small. */
5
+ export declare function mergeAdminFacets(base: AdminFacets, patch: AdminFacets): AdminFacets;
6
+ //# sourceMappingURL=AdminFacets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminFacets.d.ts","sourceRoot":"","sources":["../src/AdminFacets.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAEtD,wBAAgB,gBAAgB,CAAC,KAAK,CAAC,IAAI,SAAS,MAAM,EAAE,KAAK,CAAC,KAAK,EACrE,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,GACX,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAErB;AAED,6FAA6F;AAC7F,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,GAAG,WAAW,CAQnF"}
@@ -14,4 +14,4 @@ export function mergeAdminFacets(base, patch) {
14
14
  };
15
15
  return merge(base, patch);
16
16
  }
17
- //# sourceMappingURL=facets.js.map
17
+ //# sourceMappingURL=AdminFacets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminFacets.js","sourceRoot":"","sources":["../src/AdminFacets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAK3C,MAAM,UAAU,gBAAgB,CAC9B,IAAU,EACV,KAAY;IAEZ,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAyB,CAAC;AAClD,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,gBAAgB,CAAC,IAAiB,EAAE,KAAkB;IACpE,MAAM,KAAK,GAAG,CAAC,IAAa,EAAE,KAAc,EAAW,EAAE;QACvD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACtD,MAAM,GAAG,GAA4B,EAAE,GAAG,IAAI,EAAE,CAAC;QACjD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;QACpF,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,EAAE,KAAK,CAAgB,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,7 @@
1
+ export interface AdminFieldExtension {
2
+ /** Changes the fallback in every derived view of this field. */
3
+ label?: string;
4
+ /** Removes the field from derived tables, shows and forms. */
5
+ hidden?: boolean;
6
+ }
7
+ //# sourceMappingURL=AdminFieldExtension.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminFieldExtension.d.ts","sourceRoot":"","sources":["../src/AdminFieldExtension.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=AdminFieldExtension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminFieldExtension.js","sourceRoot":"","sources":["../src/AdminFieldExtension.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import { type CardOp } from '@fougere/core/contract';
2
+ /** One operation as the admin meets it, before a renderer decides its widget. */
3
+ export interface AdminOperation extends CardOp {
4
+ /** Display fallback. An extension may replace it without renaming the call. */
5
+ label: string;
6
+ /** Optional confirmation sentence, interpreted by renderers that support actions. */
7
+ confirm?: string;
8
+ }
9
+ //# sourceMappingURL=AdminOperation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminOperation.d.ts","sourceRoot":"","sources":["../src/AdminOperation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAErD,iFAAiF;AACjF,MAAM,WAAW,cAAe,SAAQ,MAAM;IAC5C,+EAA+E;IAC/E,KAAK,EAAE,MAAM,CAAC;IACd,qFAAqF;IACrF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=AdminOperation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminOperation.js","sourceRoot":"","sources":["../src/AdminOperation.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ export interface AdminOperationExtension {
2
+ label?: string;
3
+ /** `false` explicitly removes a confirmation added by an earlier extension. */
4
+ confirm?: string | false;
5
+ }
6
+ //# sourceMappingURL=AdminOperationExtension.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminOperationExtension.d.ts","sourceRoot":"","sources":["../src/AdminOperationExtension.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,uBAAuB;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;CAC1B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=AdminOperationExtension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminOperationExtension.js","sourceRoot":"","sources":["../src/AdminOperationExtension.ts"],"names":[],"mappings":""}
@@ -1,15 +1,9 @@
1
1
  import { type Fetcher, type FormField, type TableColumn } from '@fougere/app/client';
2
- import { type CardOp, type IdentityCard } from '@fougere/core/contract';
3
- import type { ResourceKey } from './provider.js';
4
- import type { AdminFacets } from './facets.js';
5
- /** One operation as the admin meets it, before a renderer decides its widget. */
6
- export interface AdminOperation extends CardOp {
7
- /** Display fallback. An extension may replace it without renaming the call. */
8
- label: string;
9
- /** Optional confirmation sentence, interpreted by renderers that support actions. */
10
- confirm?: string;
11
- }
12
- /** One door, everything the UI needs to render it. */
2
+ import { type IdentityCard } from '@fougere/core/contract';
3
+ import type { ResourceKey } from './ResourceKey.js';
4
+ import type { AdminFacets } from './AdminFacets.js';
5
+ import type { AdminOperation } from './AdminOperation.js';
6
+ /** One facade, everything the UI needs to render it. */
13
7
  export interface AdminResource extends ResourceKey {
14
8
  /** The frond it belongs to — the menu groups by it, as the card does. */
15
9
  frond: string;
@@ -27,7 +21,7 @@ export interface AdminResource extends ResourceKey {
27
21
  /** Every callable operation, including the five CRUD verbs. */
28
22
  operations: AdminOperation[];
29
23
  /**
30
- * Which of the five the door actually serves. A door answering only `list` gets a
24
+ * Which of the five the facade actually serves. A facade answering only `list` gets a
31
25
  * list and no buttons — the card says so, so the UI never offers what would 404.
32
26
  */
33
27
  can: {
@@ -39,18 +33,18 @@ export interface AdminResource extends ResourceKey {
39
33
  };
40
34
  }
41
35
  /**
42
- * The five verbs react-admin already has pages for. Everything else a door serves is a
36
+ * The five verbs react-admin already has pages for. Everything else a facade serves is a
43
37
  * business operation, and gets a button rather than a page.
44
38
  */
45
39
  export declare const CRUD_OPS: readonly ['list', 'findById', 'create', 'update', 'delete'];
46
- /** What a door serves beyond CRUD — the only thing this panel has that a generic one has not. */
40
+ /** What a facade serves beyond CRUD — the only thing this panel has that a generic one has not. */
47
41
  export declare function actionsOf(operations: readonly AdminOperation[]): AdminOperation[];
48
42
  /** Capabilities are a reading of the visible operations, never a second list to maintain. */
49
43
  export declare function capabilitiesOf(operations: readonly Pick<AdminOperation, 'name'>[]): AdminResource['can'];
50
- /** A door with no schema is not a resource. */
44
+ /** A facade with no schema is not a resource. */
51
45
  export declare function resourcesOf(card: IdentityCard): AdminResource[];
52
- /** The provider's index — the half of a resource it needs, keyed by door name. */
46
+ /** The provider's index — the half of a resource it needs, keyed by facade name. */
53
47
  export declare function keysOf(resources: AdminResource[]): Record<string, ResourceKey>;
54
48
  /** Ask the running app what it hosts. */
55
49
  export declare function fetchCard(endpoint?: string, fetcher?: Fetcher): Promise<IdentityCard>;
56
- //# sourceMappingURL=resources.d.ts.map
50
+ //# sourceMappingURL=AdminResource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminResource.d.ts","sourceRoot":"","sources":["../src/AdminResource.ts"],"names":[],"mappings":"AACA,OAAO,EAML,KAAK,OAAO,EACZ,KAAK,SAAS,EACd,KAAK,WAAW,EACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,YAAY,EAAc,MAAM,wBAAwB,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,wDAAwD;AACxD,MAAM,WAAW,aAAc,SAAQ,WAAW;IAChD,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,MAAM,EAAE,WAAW,CAAC;IACpB,kEAAkE;IAClE,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,4EAA4E;IAC5E,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,+DAA+D;IAC/D,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B;;;OAGG;IACH,GAAG,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;CACxF;AAOD;;;GAGG;AACH,eAAO,MAAM,QAAQ,YAAI,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAU,CAAC;AAEpF,mGAAmG;AACnG,wBAAgB,SAAS,CAAC,UAAU,EAAE,SAAS,cAAc,EAAE,GAAG,cAAc,EAAE,CAEjF;AAED,6FAA6F;AAC7F,wBAAgB,cAAc,CAAC,UAAU,EAAE,SAAS,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,CASxG;AAED,iDAAiD;AACjD,wBAAgB,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,aAAa,EAAE,CA4B/D;AAED,oFAAoF;AACpF,wBAAgB,MAAM,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAE9E;AAED,yCAAyC;AACzC,wBAAsB,SAAS,CAC7B,QAAQ,SAAgB,EACxB,OAAO,GAAE,OAAwB,GAChC,OAAO,CAAC,YAAY,CAAC,CAOvB"}
@@ -1,4 +1,3 @@
1
- /** What the app hosts, read as a back-office. */
2
1
  import { Card, FieldSet } from '@fougere/schema';
3
2
  import { CALL_ENDPOINT, fetcher as browserFetcher, formFieldsOf, sendCall, tableColumnsOf, } from '@fougere/app/client';
4
3
  import { Invocation } from '@fougere/core/contract';
@@ -7,11 +6,11 @@ function labelOf(name) {
7
6
  return words.charAt(0).toUpperCase() + words.slice(1);
8
7
  }
9
8
  /**
10
- * The five verbs react-admin already has pages for. Everything else a door serves is a
9
+ * The five verbs react-admin already has pages for. Everything else a facade serves is a
11
10
  * business operation, and gets a button rather than a page.
12
11
  */
13
12
  export const CRUD_OPS = ['list', 'findById', 'create', 'update', 'delete'];
14
- /** What a door serves beyond CRUD — the only thing this panel has that a generic one has not. */
13
+ /** What a facade serves beyond CRUD — the only thing this panel has that a generic one has not. */
15
14
  export function actionsOf(operations) {
16
15
  return operations.filter((op) => !CRUD_OPS.includes(op.name));
17
16
  }
@@ -26,27 +25,27 @@ export function capabilitiesOf(operations) {
26
25
  delete: serves.has('delete'),
27
26
  };
28
27
  }
29
- /** A door with no schema is not a resource. */
28
+ /** A facade with no schema is not a resource. */
30
29
  export function resourcesOf(card) {
31
30
  const out = [];
32
31
  for (const frond of card.fronds) {
33
- for (const door of frond.doors) {
34
- if (!door.schema)
32
+ for (const facade of frond.facades) {
33
+ if (!facade.schema)
35
34
  continue;
36
- const entity = Card.fromDescriptor(door.schema).toSchema();
35
+ const entity = Card.fromDescriptor(facade.schema).toSchema();
37
36
  const primary = FieldSet.of(entity.getFields()).primary;
38
37
  // No primary means no row identity — a list could be drawn, but nothing could be
39
38
  // opened, edited or deleted. Refusing here is the same answer `FieldSet.primary`
40
39
  // gives by not defaulting to 'id': the caller decides, and this caller declines.
41
40
  if (!primary)
42
41
  continue;
43
- const operations = door.ops.map((op) => ({ ...op, label: labelOf(op.name) }));
44
- const columns = tableColumnsOf(entity, door.name);
45
- const fields = formFieldsOf(entity, door.name);
42
+ const operations = facade.ops.map((op) => ({ ...op, label: labelOf(op.name) }));
43
+ const columns = tableColumnsOf(entity, facade.name);
44
+ const fields = formFieldsOf(entity, facade.name);
46
45
  out.push({
47
- name: door.name,
46
+ name: facade.name,
48
47
  frond: frond.name,
49
- label: labelOf(door.name),
48
+ label: labelOf(facade.name),
50
49
  facets: {},
51
50
  primary,
52
51
  columns,
@@ -58,7 +57,7 @@ export function resourcesOf(card) {
58
57
  }
59
58
  return out;
60
59
  }
61
- /** The provider's index — the half of a resource it needs, keyed by door name. */
60
+ /** The provider's index — the half of a resource it needs, keyed by facade name. */
62
61
  export function keysOf(resources) {
63
62
  return Object.fromEntries(resources.map((r) => [r.name, { name: r.name, primary: r.primary }]));
64
63
  }
@@ -66,4 +65,4 @@ export function keysOf(resources) {
66
65
  export async function fetchCard(endpoint = CALL_ENDPOINT, fetcher = browserFetcher) {
67
66
  return await sendCall(fetcher, { entity: 'rpc', op: 'discover' }, Invocation.empty, endpoint);
68
67
  }
69
- //# sourceMappingURL=resources.js.map
68
+ //# sourceMappingURL=AdminResource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminResource.js","sourceRoot":"","sources":["../src/AdminResource.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { type FougereDataProvider } from './FougereDataProvider.js';
2
+ import type { AdminRuntimeOptions } from './AdminRuntimeOptions.js';
3
+ import type { LoadedAdmin } from './LoadedAdmin.js';
4
+ export interface AdminRuntime {
5
+ /** Loads and caches the card-derived model. */
6
+ load(): Promise<LoadedAdmin>;
7
+ /** Synchronous shell required by react-admin; delegates after `load()` resolves. */
8
+ dataProvider: FougereDataProvider;
9
+ }
10
+ export declare function createAdminRuntime(options?: AdminRuntimeOptions): AdminRuntime;
11
+ //# sourceMappingURL=AdminRuntime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminRuntime.d.ts","sourceRoot":"","sources":["../src/AdminRuntime.ts"],"names":[],"mappings":"AAEA,OAAO,EAA8C,KAAK,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEhH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,WAAW,YAAY;IAC3B,+CAA+C;IAC/C,IAAI,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IAC7B,oFAAoF;IACpF,YAAY,EAAE,mBAAmB,CAAC;CACnC;AAED,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,mBAAwB,GAAG,YAAY,CA0BlF"}
@@ -1,8 +1,7 @@
1
- /** One card request, shared by resource discovery and every provider operation. */
2
- import { CALL_ENDPOINT, fetcher as browserFetcher, } from '@fougere/app/client';
3
- import { applyAdminExtensions } from './extensions.js';
4
- import { createDataProvider, createLazyDataProvider, } from './provider.js';
5
- import { fetchCard, keysOf, resourcesOf } from './resources.js';
1
+ import { CALL_ENDPOINT, fetcher as browserFetcher } from '@fougere/app/client';
2
+ import { applyAdminExtensions } from './AdminExtension.js';
3
+ import { createDataProvider, createLazyDataProvider } from './FougereDataProvider.js';
4
+ import { fetchCard, keysOf, resourcesOf } from './AdminResource.js';
6
5
  export function createAdminRuntime(options = {}) {
7
6
  const { endpoint = CALL_ENDPOINT, fetcher = browserFetcher, extensions = [], } = options;
8
7
  let loading;
@@ -24,4 +23,4 @@ export function createAdminRuntime(options = {}) {
24
23
  dataProvider: createLazyDataProvider(async () => (await load()).provider),
25
24
  };
26
25
  }
27
- //# sourceMappingURL=runtime.js.map
26
+ //# sourceMappingURL=AdminRuntime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminRuntime.js","sourceRoot":"","sources":["../src/AdminRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAA4B,MAAM,0BAA0B,CAAC;AAChH,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAWpE,MAAM,UAAU,kBAAkB,CAAC,OAAO,GAAwB,EAAE;IAClE,MAAM,EACJ,QAAQ,GAAG,aAAa,EACxB,OAAO,GAAG,cAAc,EACxB,UAAU,GAAG,EAAE,GAChB,GAAG,OAAO,CAAC;IACZ,IAAI,OAAyC,CAAC;IAE9C,iEAAiE;IACjE,MAAM,IAAI,GAAG,GAAyB,EAAE,CAAC,OAAO,KAAK,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC;SAC9E,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QACb,MAAM,SAAS,GAAG,oBAAoB,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC;QACtE,OAAO;YACL,SAAS;YACT,QAAQ,EAAE,kBAAkB,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;SAClF,CAAC;IACJ,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QACxB,OAAO,GAAG,SAAS,CAAC;QACpB,MAAM,KAAK,CAAC;IACd,CAAC,CAAC,CAAC;IAEL,OAAO;QACL,IAAI;QACJ,YAAY,EAAE,sBAAsB,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC;KAC1E,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { type Fetcher } from '@fougere/app/client';
2
+ import { type AdminExtension } from './AdminExtension.js';
3
+ export interface AdminRuntimeOptions {
4
+ endpoint?: string;
5
+ fetcher?: Fetcher;
6
+ extensions?: readonly AdminExtension[];
7
+ }
8
+ //# sourceMappingURL=AdminRuntimeOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminRuntimeOptions.d.ts","sourceRoot":"","sources":["../src/AdminRuntimeOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;CACxC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=AdminRuntimeOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminRuntimeOptions.js","sourceRoot":"","sources":["../src/AdminRuntimeOptions.ts"],"names":[],"mappings":""}
@@ -1,53 +1,12 @@
1
1
  import { type Fetcher } from '@fougere/app/client';
2
- import { type DeclaredEdge, type Edge, type FrondPlacement, type TopologyReport } from '@fougere/core/contract';
3
- export type { TopologyReport, FrondPlacement, Edge, DeclaredEdge };
2
+ import { type FrondPlacement, type TopologyReport } from '@fougere/core/contract';
3
+ import type { TopologyNode } from './TopologyNode.js';
4
+ import type { PlacedNode } from './PlacedNode.js';
5
+ import type { PlacedEdge } from './PlacedEdge.js';
4
6
  /** The report, or `undefined` when the app serves no topology at all. */
5
7
  export declare function fetchTopology(endpoint?: string, fetcher?: Fetcher): Promise<TopologyReport | undefined>;
6
- /** One frond as the page draws it: its placement, and the calls observed around it. */
7
- export interface TopologyNode extends FrondPlacement {
8
- /** Fronds this one called, with what it cost them. */
9
- calls: Edge[];
10
- /** Fronds that called this one. */
11
- calledBy: Edge[];
12
- /** Fronds its code reaches, whether or not a call has ever gone down the link. */
13
- declaredCalls: DeclaredEdge[];
14
- /** Where the config says to reach it, when it says so. */
15
- at?: string;
16
- /**
17
- * Declared in `remotes:` and never heard from. A different absence from an opaque remote,
18
- * which answered and keeps its shape to itself: this one may simply be down.
19
- */
20
- silent: boolean;
21
- }
22
8
  /** The report read as a graph — what runs here first, then what answered, then what never did. */
23
9
  export declare function nodesOf(report: TopologyReport): TopologyNode[];
24
- export interface Point {
25
- x: number;
26
- y: number;
27
- }
28
- /** A node placed on the drawing. `x`/`y` are its CENTRE, the convention the layout answers in. */
29
- export interface PlacedNode {
30
- node: TopologyNode;
31
- x: number;
32
- y: number;
33
- width: number;
34
- height: number;
35
- }
36
- /**
37
- * One link between two nodes. `count` is absent on a link nothing has travelled: the config
38
- * declares it and no call has gone down it, which is drawn broken rather than not drawn.
39
- */
40
- export interface PlacedEdge {
41
- from: string;
42
- to: string;
43
- path: string;
44
- /** Where this link's figure goes — clear of every node, or absent when the route is a point. */
45
- at?: Point;
46
- count?: number;
47
- errors: number;
48
- /** Where this link's volume sits among the others, `0` to `1`. Absent when nothing travelled. */
49
- weight?: number;
50
- }
51
10
  export interface Drawing {
52
11
  nodes: PlacedNode[];
53
12
  edges: PlacedEdge[];
@@ -77,4 +36,4 @@ export declare function figureOf(link: Pick<PlacedEdge, 'count' | 'errors'>): st
77
36
  * a frond that never answered has the same two zeroes and a different reason for them.
78
37
  */
79
38
  export declare function isOpaque(node: FrondPlacement): boolean;
80
- //# sourceMappingURL=topology.d.ts.map
39
+ //# sourceMappingURL=Drawing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Drawing.d.ts","sourceRoot":"","sources":["../src/Drawing.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,OAAO,EACb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAa,KAAK,cAAc,EAAE,KAAK,cAAc,EAAc,MAAM,wBAAwB,CAAC;AACzG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,yEAAyE;AACzE,wBAAsB,aAAa,CACjC,QAAQ,SAAgB,EACxB,OAAO,GAAE,OAAwB,GAChC,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAYrC;AAED,kGAAkG;AAClG,wBAAgB,OAAO,CAAC,MAAM,EAAE,cAAc,GAAG,YAAY,EAAE,CAqC9D;AAED,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAID;;;;;;;;;;;;GAYG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,GAAG,OAAO,CA6ChE;AAED,0EAA0E;AAC1E,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAI3C;AAED,2EAA2E;AAC3E,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,QAAQ,CAAC,GAAG,MAAM,CAI3E;AAsGD;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAEtD"}
@@ -1,7 +1,6 @@
1
- /** How the system is arranged, as the app itself reports it. */
2
1
  import dagre from '@dagrejs/dagre';
3
2
  import { CALL_ENDPOINT, fetcher as browserFetcher, sendCall, } from '@fougere/app/client';
4
- import { ErrorCode, Invocation, } from '@fougere/core/contract';
3
+ import { ErrorCode, Invocation } from '@fougere/core/contract';
5
4
  /** The report, or `undefined` when the app serves no topology at all. */
6
5
  export async function fetchTopology(endpoint = CALL_ENDPOINT, fetcher = browserFetcher) {
7
6
  try {
@@ -41,7 +40,7 @@ export function nodesOf(report) {
41
40
  frond: one.frond,
42
41
  placement: 'remote',
43
42
  entities: 0,
44
- doors: 0,
43
+ facades: 0,
45
44
  ...around(one.frond),
46
45
  ...(one.at ? { at: one.at } : {}),
47
46
  silent: true,
@@ -208,6 +207,6 @@ function labelAt(points, boxes, half) {
208
207
  * a frond that never answered has the same two zeroes and a different reason for them.
209
208
  */
210
209
  export function isOpaque(node) {
211
- return node.placement === 'remote' && node.entities === 0 && node.doors === 0;
210
+ return node.placement === 'remote' && node.entities === 0 && node.facades === 0;
212
211
  }
213
- //# sourceMappingURL=topology.js.map
212
+ //# sourceMappingURL=Drawing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Drawing.js","sourceRoot":"","sources":["../src/Drawing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export interface EditorialFacet {
2
+ /** The field that carries the human-readable title. */
3
+ title: string;
4
+ /** The lifecycle vocabulary, grouped by meaning rather than by raw enum value. */
5
+ state?: {
6
+ field: string;
7
+ draft?: readonly string[];
8
+ published?: readonly string[];
9
+ };
10
+ createdAt?: string;
11
+ updatedAt?: string;
12
+ }
13
+ //# sourceMappingURL=EditorialFacet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EditorialFacet.d.ts","sourceRoot":"","sources":["../src/EditorialFacet.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,uDAAuD;IACvD,KAAK,EAAE,MAAM,CAAC;IACd,kFAAkF;IAClF,KAAK,CAAC,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QAC1B,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;KAC/B,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=EditorialFacet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EditorialFacet.js","sourceRoot":"","sources":["../src/EditorialFacet.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ import type { AdminProps as BaseAdminProps } from 'react-admin';
2
+ import type { FougereDashboardExtension } from './FougereDashboardExtension.js';
3
+ import type { AdminExtension } from './AdminExtension.js';
4
+ import type { Fetcher } from '@fougere/app/client';
5
+ import type { ReactAdminRenderers } from './ReactAdminRenderers.js';
6
+ import type { ReactAdminResourceComponents } from './ReactAdminResourceComponents.js';
7
+ export type FougereAdminProps = Omit<BaseAdminProps, 'children' | 'dataProvider'> & {
8
+ endpoint?: string;
9
+ fetcher?: Fetcher;
10
+ extensions?: readonly AdminExtension[];
11
+ renderers?: ReactAdminRenderers;
12
+ /** Add, move, resize, replace or hide widgets without snapshotting the dashboard. */
13
+ dashboardExtensions?: readonly FougereDashboardExtension[];
14
+ /** Explicit page-level escape hatches, scoped to one resource and one view. */
15
+ resourceComponents?: Record<string, ReactAdminResourceComponents>;
16
+ };
17
+ //# sourceMappingURL=FougereAdminProps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FougereAdminProps.d.ts","sourceRoot":"","sources":["../src/FougereAdminProps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAEtF,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,cAAc,EAAE,UAAU,GAAG,cAAc,CAAC,GAAG;IAClF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IACvC,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,qFAAqF;IACrF,mBAAmB,CAAC,EAAE,SAAS,yBAAyB,EAAE,CAAC;IAC3D,+EAA+E;IAC/E,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAAC;CACnE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=FougereAdminProps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FougereAdminProps.js","sourceRoot":"","sources":["../src/FougereAdminProps.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ import type { FougereDashboardResource } from './FougereDashboardResource.js';
2
+ import type { FougereDashboardMetrics } from './FougereDashboardMetrics.js';
3
+ export interface FougereDashboardContextValue {
4
+ loading: boolean;
5
+ resources: FougereDashboardResource[];
6
+ editorial: FougereDashboardResource[];
7
+ users: FougereDashboardResource[];
8
+ metrics: FougereDashboardMetrics;
9
+ navigate(view: 'list' | 'show' | 'edit' | 'create', resource: string, id?: string | number): void;
10
+ }
11
+ //# sourceMappingURL=FougereDashboardContextValue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FougereDashboardContextValue.d.ts","sourceRoot":"","sources":["../src/FougereDashboardContextValue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAC9E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAE5E,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,wBAAwB,EAAE,CAAC;IACtC,SAAS,EAAE,wBAAwB,EAAE,CAAC;IACtC,KAAK,EAAE,wBAAwB,EAAE,CAAC;IAClC,OAAO,EAAE,uBAAuB,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CACnG"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=FougereDashboardContextValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FougereDashboardContextValue.js","sourceRoot":"","sources":["../src/FougereDashboardContextValue.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import type { ComponentType } from 'react';
2
+ import type { FougereDashboardZone } from './FougereDashboardZone.js';
3
+ /** A delta over stable widget ids; a component on a new id contributes a new widget. */
4
+ export interface FougereDashboardExtension {
5
+ widget: string;
6
+ component?: ComponentType;
7
+ zone?: FougereDashboardZone;
8
+ span?: number;
9
+ hidden?: boolean;
10
+ before?: string;
11
+ after?: string;
12
+ }
13
+ //# sourceMappingURL=FougereDashboardExtension.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FougereDashboardExtension.d.ts","sourceRoot":"","sources":["../src/FougereDashboardExtension.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEtE,wFAAwF;AACxF,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,IAAI,CAAC,EAAE,oBAAoB,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=FougereDashboardExtension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FougereDashboardExtension.js","sourceRoot":"","sources":["../src/FougereDashboardExtension.ts"],"names":[],"mappings":""}