@nocobase/app-plugin-releases 0.1.0-beta.2 → 0.1.0-beta.20

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 (268) hide show
  1. package/CHANGELOG.md +341 -0
  2. package/LICENSE.txt +129 -0
  3. package/README.md +91 -16
  4. package/dist/client/components/environment-form.d.ts +1 -1
  5. package/dist/client/components/environment-form.d.ts.map +1 -1
  6. package/dist/client/components/environment-form.js +9 -2
  7. package/dist/client/components/environment-form.js.map +1 -1
  8. package/dist/client/components/page-header.d.ts.map +1 -1
  9. package/dist/client/components/page-header.js +1 -1
  10. package/dist/client/components/page-header.js.map +1 -1
  11. package/dist/client/components/release-badges.d.ts.map +1 -1
  12. package/dist/client/components/release-badges.js +13 -1
  13. package/dist/client/components/release-badges.js.map +1 -1
  14. package/dist/client/components/route-overlay.d.ts +4 -1
  15. package/dist/client/components/route-overlay.d.ts.map +1 -1
  16. package/dist/client/components/route-overlay.js +32 -3
  17. package/dist/client/components/route-overlay.js.map +1 -1
  18. package/dist/client/components/runtime-policy-fields.d.ts +7 -1
  19. package/dist/client/components/runtime-policy-fields.d.ts.map +1 -1
  20. package/dist/client/components/runtime-policy-fields.js +19 -5
  21. package/dist/client/components/runtime-policy-fields.js.map +1 -1
  22. package/dist/client/components/runtime-state.d.ts +6 -0
  23. package/dist/client/components/runtime-state.d.ts.map +1 -0
  24. package/dist/client/components/runtime-state.js +67 -0
  25. package/dist/client/components/runtime-state.js.map +1 -0
  26. package/dist/client/components/shared-host.d.ts +20 -0
  27. package/dist/client/components/shared-host.d.ts.map +1 -0
  28. package/dist/client/components/shared-host.js +88 -0
  29. package/dist/client/components/shared-host.js.map +1 -0
  30. package/dist/client/components/ui/progress.d.ts +9 -0
  31. package/dist/client/components/ui/progress.d.ts.map +1 -0
  32. package/dist/client/components/ui/progress.js +20 -0
  33. package/dist/client/components/ui/progress.js.map +1 -0
  34. package/dist/client/components/use-route-overlay.d.ts +2 -9
  35. package/dist/client/components/use-route-overlay.d.ts.map +1 -1
  36. package/dist/client/components/use-route-overlay.js +5 -3
  37. package/dist/client/components/use-route-overlay.js.map +1 -1
  38. package/dist/client/components/variable-alerts.d.ts.map +1 -1
  39. package/dist/client/components/variable-alerts.js +6 -18
  40. package/dist/client/components/variable-alerts.js.map +1 -1
  41. package/dist/client/hooks/use-app-summary.d.ts +1 -1
  42. package/dist/client/hooks/use-app-summary.d.ts.map +1 -1
  43. package/dist/client/hooks/use-app-summary.js +4 -1
  44. package/dist/client/hooks/use-app-summary.js.map +1 -1
  45. package/dist/client/hooks/use-releases.d.ts +4 -1
  46. package/dist/client/hooks/use-releases.d.ts.map +1 -1
  47. package/dist/client/hooks/use-releases.js +6 -2
  48. package/dist/client/hooks/use-releases.js.map +1 -1
  49. package/dist/client/lib/app-state.d.ts +2 -2
  50. package/dist/client/lib/app-state.d.ts.map +1 -1
  51. package/dist/client/lib/app-state.js +10 -3
  52. package/dist/client/lib/app-state.js.map +1 -1
  53. package/dist/client/lib/errors.d.ts.map +1 -1
  54. package/dist/client/lib/errors.js +7 -0
  55. package/dist/client/lib/errors.js.map +1 -1
  56. package/dist/client/lib/format.d.ts +2 -0
  57. package/dist/client/lib/format.d.ts.map +1 -1
  58. package/dist/client/lib/format.js +7 -0
  59. package/dist/client/lib/format.js.map +1 -1
  60. package/dist/client/lib/paths.d.ts +5 -0
  61. package/dist/client/lib/paths.d.ts.map +1 -1
  62. package/dist/client/lib/paths.js +10 -0
  63. package/dist/client/lib/paths.js.map +1 -1
  64. package/dist/client/lib/permissions.d.ts +5 -0
  65. package/dist/client/lib/permissions.d.ts.map +1 -1
  66. package/dist/client/lib/permissions.js +8 -0
  67. package/dist/client/lib/permissions.js.map +1 -1
  68. package/dist/client/lib/runtime-state.d.ts +25 -0
  69. package/dist/client/lib/runtime-state.d.ts.map +1 -0
  70. package/dist/client/lib/runtime-state.js +58 -0
  71. package/dist/client/lib/runtime-state.js.map +1 -0
  72. package/dist/client/locales/de-DE.d.ts +5 -0
  73. package/dist/client/locales/de-DE.d.ts.map +1 -0
  74. package/dist/client/locales/de-DE.js +876 -0
  75. package/dist/client/locales/de-DE.js.map +1 -0
  76. package/dist/client/locales/en-US.d.ts +83 -9
  77. package/dist/client/locales/en-US.d.ts.map +1 -1
  78. package/dist/client/locales/en-US.js +80 -9
  79. package/dist/client/locales/en-US.js.map +1 -1
  80. package/dist/client/locales/es-ES.d.ts +5 -0
  81. package/dist/client/locales/es-ES.d.ts.map +1 -0
  82. package/dist/client/locales/es-ES.js +882 -0
  83. package/dist/client/locales/es-ES.js.map +1 -0
  84. package/dist/client/locales/fr-FR.d.ts +5 -0
  85. package/dist/client/locales/fr-FR.d.ts.map +1 -0
  86. package/dist/client/locales/fr-FR.js +882 -0
  87. package/dist/client/locales/fr-FR.js.map +1 -0
  88. package/dist/client/locales/id-ID.d.ts +5 -0
  89. package/dist/client/locales/id-ID.d.ts.map +1 -0
  90. package/dist/client/locales/id-ID.js +876 -0
  91. package/dist/client/locales/id-ID.js.map +1 -0
  92. package/dist/client/locales/index.d.ts.map +1 -1
  93. package/dist/client/locales/index.js +10 -0
  94. package/dist/client/locales/index.js.map +1 -1
  95. package/dist/client/locales/ja-JP.d.ts +5 -0
  96. package/dist/client/locales/ja-JP.d.ts.map +1 -0
  97. package/dist/client/locales/ja-JP.js +876 -0
  98. package/dist/client/locales/ja-JP.js.map +1 -0
  99. package/dist/client/locales/ko-KR.d.ts +5 -0
  100. package/dist/client/locales/ko-KR.d.ts.map +1 -0
  101. package/dist/client/locales/ko-KR.js +879 -0
  102. package/dist/client/locales/ko-KR.js.map +1 -0
  103. package/dist/client/locales/pt-BR.d.ts +5 -0
  104. package/dist/client/locales/pt-BR.d.ts.map +1 -0
  105. package/dist/client/locales/pt-BR.js +882 -0
  106. package/dist/client/locales/pt-BR.js.map +1 -0
  107. package/dist/client/locales/ru-RU.d.ts +5 -0
  108. package/dist/client/locales/ru-RU.d.ts.map +1 -0
  109. package/dist/client/locales/ru-RU.js +891 -0
  110. package/dist/client/locales/ru-RU.js.map +1 -0
  111. package/dist/client/locales/vi-VN.d.ts +5 -0
  112. package/dist/client/locales/vi-VN.d.ts.map +1 -0
  113. package/dist/client/locales/vi-VN.js +876 -0
  114. package/dist/client/locales/vi-VN.js.map +1 -0
  115. package/dist/client/locales/zh-CN.d.ts.map +1 -1
  116. package/dist/client/locales/zh-CN.js +83 -9
  117. package/dist/client/locales/zh-CN.js.map +1 -1
  118. package/dist/client/locales/zh-TW.d.ts +5 -0
  119. package/dist/client/locales/zh-TW.d.ts.map +1 -0
  120. package/dist/client/locales/zh-TW.js +876 -0
  121. package/dist/client/locales/zh-TW.js.map +1 -0
  122. package/dist/client/pages/app-page.d.ts.map +1 -1
  123. package/dist/client/pages/app-page.js +14 -8
  124. package/dist/client/pages/app-page.js.map +1 -1
  125. package/dist/client/pages/apps-outlet.d.ts +8 -0
  126. package/dist/client/pages/apps-outlet.d.ts.map +1 -0
  127. package/dist/client/pages/apps-outlet.js +9 -0
  128. package/dist/client/pages/apps-outlet.js.map +1 -0
  129. package/dist/client/pages/environment-page.d.ts.map +1 -1
  130. package/dist/client/pages/environment-page.js +112 -24
  131. package/dist/client/pages/environment-page.js.map +1 -1
  132. package/dist/client/pages/environments-page.d.ts +8 -3
  133. package/dist/client/pages/environments-page.d.ts.map +1 -1
  134. package/dist/client/pages/environments-page.js +58 -10
  135. package/dist/client/pages/environments-page.js.map +1 -1
  136. package/dist/client/pages/new-app-page.d.ts +2 -4
  137. package/dist/client/pages/new-app-page.d.ts.map +1 -1
  138. package/dist/client/pages/new-app-page.js +29 -19
  139. package/dist/client/pages/new-app-page.js.map +1 -1
  140. package/dist/client/pages/new-app-redirect.d.ts +7 -0
  141. package/dist/client/pages/new-app-redirect.d.ts.map +1 -0
  142. package/dist/client/pages/new-app-redirect.js +8 -0
  143. package/dist/client/pages/new-app-redirect.js.map +1 -0
  144. package/dist/client/pages/request-page.js +1 -1
  145. package/dist/client/pages.d.ts +6 -2
  146. package/dist/client/pages.d.ts.map +1 -1
  147. package/dist/client/pages.js +8 -4
  148. package/dist/client/pages.js.map +1 -1
  149. package/dist/client/routes.d.ts.map +1 -1
  150. package/dist/client/routes.js +37 -10
  151. package/dist/client/routes.js.map +1 -1
  152. package/dist/database/migrations/.manifest.json +10 -2
  153. package/dist/database/migrations/202610020001_rel_create_tables.js +1 -1
  154. package/dist/database/migrations/202610020001_rel_create_tables.js.map +1 -1
  155. package/dist/database/migrations/202610260002_rel_bound_artifact_keys.d.ts +4 -0
  156. package/dist/database/migrations/202610260002_rel_bound_artifact_keys.d.ts.map +1 -0
  157. package/dist/database/migrations/202610260002_rel_bound_artifact_keys.js +51 -0
  158. package/dist/database/migrations/202610260002_rel_bound_artifact_keys.js.map +1 -0
  159. package/dist/database/migrations/202611020001_rel_environment_purpose.d.ts +8 -0
  160. package/dist/database/migrations/202611020001_rel_environment_purpose.d.ts.map +1 -0
  161. package/dist/database/migrations/202611020001_rel_environment_purpose.js +30 -0
  162. package/dist/database/migrations/202611020001_rel_environment_purpose.js.map +1 -0
  163. package/dist/server/access/caller.d.ts +6 -0
  164. package/dist/server/access/caller.d.ts.map +1 -1
  165. package/dist/server/access/caller.js +36 -0
  166. package/dist/server/access/caller.js.map +1 -1
  167. package/dist/server/artifact-config.d.ts +9 -0
  168. package/dist/server/artifact-config.d.ts.map +1 -0
  169. package/dist/server/artifact-config.js +49 -0
  170. package/dist/server/artifact-config.js.map +1 -0
  171. package/dist/server/composition.d.ts +6 -0
  172. package/dist/server/composition.d.ts.map +1 -1
  173. package/dist/server/composition.js +7 -1
  174. package/dist/server/composition.js.map +1 -1
  175. package/dist/server/config.d.ts +18 -2
  176. package/dist/server/config.d.ts.map +1 -1
  177. package/dist/server/drivers/host/driver.d.ts +13 -2
  178. package/dist/server/drivers/host/driver.d.ts.map +1 -1
  179. package/dist/server/drivers/host/driver.js +427 -81
  180. package/dist/server/drivers/host/driver.js.map +1 -1
  181. package/dist/server/drivers/types.d.ts +79 -1
  182. package/dist/server/drivers/types.d.ts.map +1 -1
  183. package/dist/server/drivers/types.js +6 -0
  184. package/dist/server/drivers/types.js.map +1 -1
  185. package/dist/server/index.d.ts +1 -1
  186. package/dist/server/index.d.ts.map +1 -1
  187. package/dist/server/index.js.map +1 -1
  188. package/dist/server/locales/de-DE.d.ts +5 -0
  189. package/dist/server/locales/de-DE.d.ts.map +1 -0
  190. package/dist/server/locales/de-DE.js +133 -0
  191. package/dist/server/locales/de-DE.js.map +1 -0
  192. package/dist/server/locales/es-ES.d.ts +5 -0
  193. package/dist/server/locales/es-ES.d.ts.map +1 -0
  194. package/dist/server/locales/es-ES.js +133 -0
  195. package/dist/server/locales/es-ES.js.map +1 -0
  196. package/dist/server/locales/fr-FR.d.ts +5 -0
  197. package/dist/server/locales/fr-FR.d.ts.map +1 -0
  198. package/dist/server/locales/fr-FR.js +133 -0
  199. package/dist/server/locales/fr-FR.js.map +1 -0
  200. package/dist/server/locales/id-ID.d.ts +5 -0
  201. package/dist/server/locales/id-ID.d.ts.map +1 -0
  202. package/dist/server/locales/id-ID.js +133 -0
  203. package/dist/server/locales/id-ID.js.map +1 -0
  204. package/dist/server/locales/index.d.ts.map +1 -1
  205. package/dist/server/locales/index.js +10 -0
  206. package/dist/server/locales/index.js.map +1 -1
  207. package/dist/server/locales/ja-JP.d.ts +5 -0
  208. package/dist/server/locales/ja-JP.d.ts.map +1 -0
  209. package/dist/server/locales/ja-JP.js +133 -0
  210. package/dist/server/locales/ja-JP.js.map +1 -0
  211. package/dist/server/locales/ko-KR.d.ts +5 -0
  212. package/dist/server/locales/ko-KR.d.ts.map +1 -0
  213. package/dist/server/locales/ko-KR.js +133 -0
  214. package/dist/server/locales/ko-KR.js.map +1 -0
  215. package/dist/server/locales/pt-BR.d.ts +5 -0
  216. package/dist/server/locales/pt-BR.d.ts.map +1 -0
  217. package/dist/server/locales/pt-BR.js +133 -0
  218. package/dist/server/locales/pt-BR.js.map +1 -0
  219. package/dist/server/locales/ru-RU.d.ts +5 -0
  220. package/dist/server/locales/ru-RU.d.ts.map +1 -0
  221. package/dist/server/locales/ru-RU.js +133 -0
  222. package/dist/server/locales/ru-RU.js.map +1 -0
  223. package/dist/server/locales/vi-VN.d.ts +5 -0
  224. package/dist/server/locales/vi-VN.d.ts.map +1 -0
  225. package/dist/server/locales/vi-VN.js +133 -0
  226. package/dist/server/locales/vi-VN.js.map +1 -0
  227. package/dist/server/locales/zh-TW.d.ts +5 -0
  228. package/dist/server/locales/zh-TW.d.ts.map +1 -0
  229. package/dist/server/locales/zh-TW.js +133 -0
  230. package/dist/server/locales/zh-TW.js.map +1 -0
  231. package/dist/server/providers/releases.d.ts.map +1 -1
  232. package/dist/server/providers/releases.js +12 -5
  233. package/dist/server/providers/releases.js.map +1 -1
  234. package/dist/server/routes/api.d.ts +1 -1
  235. package/dist/server/routes/api.d.ts.map +1 -1
  236. package/dist/server/routes/api.js +120 -20
  237. package/dist/server/routes/api.js.map +1 -1
  238. package/dist/server/routes/index.d.ts.map +1 -1
  239. package/dist/server/routes/index.js +10 -2
  240. package/dist/server/routes/index.js.map +1 -1
  241. package/dist/server/routes/schemas.d.ts +7 -2
  242. package/dist/server/routes/schemas.d.ts.map +1 -1
  243. package/dist/server/routes/schemas.js +320 -89
  244. package/dist/server/routes/schemas.js.map +1 -1
  245. package/dist/server/services/environments.d.ts +2 -2
  246. package/dist/server/services/environments.d.ts.map +1 -1
  247. package/dist/server/services/environments.js +21 -1
  248. package/dist/server/services/environments.js.map +1 -1
  249. package/dist/server/services/releases.d.ts +69 -8
  250. package/dist/server/services/releases.d.ts.map +1 -1
  251. package/dist/server/services/releases.js +574 -128
  252. package/dist/server/services/releases.js.map +1 -1
  253. package/dist/server/services/validation.d.ts +2 -0
  254. package/dist/server/services/validation.d.ts.map +1 -1
  255. package/dist/server/services/validation.js +8 -0
  256. package/dist/server/services/validation.js.map +1 -1
  257. package/dist/server/tokens.d.ts +15 -2
  258. package/dist/server/tokens.d.ts.map +1 -1
  259. package/dist/server/tokens.js.map +1 -1
  260. package/dist/shared/releases.d.ts +94 -3
  261. package/dist/shared/releases.d.ts.map +1 -1
  262. package/dist/shared/releases.js +37 -0
  263. package/dist/shared/releases.js.map +1 -1
  264. package/package.json +18 -18
  265. package/dist/client/pages/apps-page.d.ts +0 -4
  266. package/dist/client/pages/apps-page.d.ts.map +0 -1
  267. package/dist/client/pages/apps-page.js +0 -116
  268. package/dist/client/pages/apps-page.js.map +0 -1
@@ -1,9 +1,15 @@
1
1
  import type { ReactElement } from 'react';
2
2
  import { type RuntimePolicyDraft } from '../lib/runtime-policy.js';
3
- export declare function RuntimePolicyFields({ value, onChange, supported, }: {
3
+ export declare function RuntimePolicyFields({ value, onChange, supported, timerModes, onTimerModesChange, }: {
4
4
  readonly value: RuntimePolicyDraft;
5
5
  readonly onChange: (value: RuntimePolicyDraft) => void;
6
6
  /** Whether the environment's driver honours the policy. */
7
7
  readonly supported?: boolean;
8
+ /** In a new App, each blank timer may inherit independently or explicitly be off. */
9
+ readonly timerModes?: {
10
+ readonly idle: 'inherit' | 'custom';
11
+ readonly dormant: 'inherit' | 'custom';
12
+ };
13
+ readonly onTimerModesChange?: (modes: NonNullable<typeof timerModes>) => void;
8
14
  }): ReactElement;
9
15
  //# sourceMappingURL=runtime-policy-fields.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-policy-fields.d.ts","sourceRoot":"","sources":["../../../client/components/runtime-policy-fields.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAO1C,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,0BAA0B,CAAC;AAsBlC,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EACL,QAAQ,EACR,SAAgB,GACjB,EAAE;IACD,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACvD,2DAA2D;IAC3D,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B,GAAG,YAAY,CAgGf"}
1
+ {"version":3,"file":"runtime-policy-fields.d.ts","sourceRoot":"","sources":["../../../client/components/runtime-policy-fields.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAO1C,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,0BAA0B,CAAC;AAsBlC,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EACL,QAAQ,EACR,SAAgB,EAChB,UAAU,EACV,kBAAkB,GACnB,EAAE;IACD,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACvD,2DAA2D;IAC3D,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,qFAAqF;IACrF,QAAQ,CAAC,UAAU,CAAC,EAAE;QACpB,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,QAAQ,CAAC;QACpC,QAAQ,CAAC,OAAO,EAAE,SAAS,GAAG,QAAQ,CAAC;KACxC,CAAC;IACF,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,UAAU,CAAC,KAAK,IAAI,CAAC;CAC/E,GAAG,YAAY,CAsIf"}
@@ -10,17 +10,31 @@ import { parsePolicyDraft, } from '../lib/runtime-policy.js';
10
10
  import { Field, FieldDescription, FieldError, FieldGroup, FieldLabel, } from './ui/field.js';
11
11
  import { InputGroup, InputGroupAddon, InputGroupInput, InputGroupText, } from './ui/input-group.js';
12
12
  import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from './ui/select.js';
13
- export function RuntimePolicyFields({ value, onChange, supported = true, }) {
13
+ export function RuntimePolicyFields({ value, onChange, supported = true, timerModes, onTimerModesChange, }) {
14
14
  const { t } = useTranslation(ACCESS_NAMESPACE);
15
- const parsed = parsePolicyDraft(value);
15
+ const effectiveValue = timerModes
16
+ ? {
17
+ ...value,
18
+ idleStopMinutes: timerModes.idle === 'inherit' ? '' : value.idleStopMinutes,
19
+ dormantAfterHours: timerModes.dormant === 'inherit' ? '' : value.dormantAfterHours,
20
+ }
21
+ : value;
22
+ const parsed = parsePolicyDraft(effectiveValue);
16
23
  const items = ['eager', 'onDemand'].map((activation) => ({
17
24
  value: activation,
18
25
  label: t(`ui.policy.activation.${activation}`),
19
26
  }));
20
- return (_jsxs(FieldGroup, { className: 'gap-4', children: [_jsxs(Field, { children: [_jsx(FieldLabel, { htmlFor: 'rel-policy-activation', children: t('ui.policy.activationLabel') }), _jsxs(Select, { items: items, value: value.activation, onValueChange: (next) => onChange({ ...value, activation: next ?? 'eager' }), children: [_jsx(SelectTrigger, { id: 'rel-policy-activation', className: 'w-full', children: _jsx(SelectValue, {}) }), _jsx(SelectContent, { className: 'w-auto max-w-[min(var(--container-sm),var(--available-width))] min-w-(--anchor-width) [&_[data-slot=select-item]>:first-child]:whitespace-normal', children: items.map((item) => (_jsx(SelectItem, { value: item.value, children: item.label }, item.value))) })] }), _jsx(FieldDescription, { children: t(`ui.policy.activationHint.${value.activation}`) })] }), _jsxs("div", { className: 'grid gap-4 sm:grid-cols-2', children: [_jsxs(Field, { "data-invalid": parsed.errors?.idle ? true : undefined, children: [_jsx(FieldLabel, { htmlFor: 'rel-policy-idle', children: t('ui.policy.idleLabel') }), _jsxs(InputGroup, { children: [_jsx(InputGroupInput, { id: 'rel-policy-idle', inputMode: 'numeric', value: value.idleStopMinutes, placeholder: t('ui.policy.neverIdle'), "aria-invalid": parsed.errors?.idle ? true : undefined, onChange: (event) => onChange({ ...value, idleStopMinutes: event.target.value }) }), _jsx(InputGroupAddon, { align: 'inline-end', children: _jsx(InputGroupText, { children: t('ui.policy.minutes') }) })] }), parsed.errors?.idle ? (_jsx(FieldError, { children: t(`ui.policy.errors.${parsed.errors.idle}`, {
27
+ return (_jsxs(FieldGroup, { className: 'gap-4', children: [_jsxs(Field, { children: [_jsx(FieldLabel, { htmlFor: 'rel-policy-activation', children: t('ui.policy.activationLabel') }), _jsxs(Select, { items: items, value: value.activation, onValueChange: (next) => onChange({ ...value, activation: next ?? 'eager' }), children: [_jsx(SelectTrigger, { id: 'rel-policy-activation', className: 'w-full', children: _jsx(SelectValue, {}) }), _jsx(SelectContent, { className: 'w-auto max-w-[min(var(--container-sm),var(--available-width))] min-w-(--anchor-width) [&_[data-slot=select-item]>:first-child]:whitespace-normal', children: items.map((item) => (_jsx(SelectItem, { value: item.value, children: item.label }, item.value))) })] }), _jsx(FieldDescription, { children: t(`ui.policy.activationHint.${value.activation}`) })] }), _jsxs("div", { className: 'grid gap-4 sm:grid-cols-2', children: [_jsxs(Field, { "data-invalid": parsed.errors?.idle ? true : undefined, children: [_jsx(FieldLabel, { htmlFor: 'rel-policy-idle', children: t('ui.policy.idleLabel') }), timerModes ? (_jsx(TimerModeSelect, { id: 'rel-policy-idle-mode', label: t('ui.policy.idleModeLabel'), value: timerModes.idle, onChange: (idle) => onTimerModesChange?.({ ...timerModes, idle }), t: t })) : null, _jsxs(InputGroup, { children: [_jsx(InputGroupInput, { id: 'rel-policy-idle', inputMode: 'numeric', value: timerModes?.idle === 'inherit' ? '' : value.idleStopMinutes, placeholder: t('ui.policy.neverIdle'), disabled: timerModes?.idle === 'inherit', "aria-invalid": parsed.errors?.idle ? true : undefined, onChange: (event) => onChange({ ...value, idleStopMinutes: event.target.value }) }), _jsx(InputGroupAddon, { align: 'inline-end', children: _jsx(InputGroupText, { children: t('ui.policy.minutes') }) })] }), parsed.errors?.idle ? (_jsx(FieldError, { children: t(`ui.policy.errors.${parsed.errors.idle}`, {
21
28
  max: APP_POLICY_LIMITS.idleStopMinutes.max,
22
- }) })) : null] }), _jsxs(Field, { "data-invalid": parsed.errors?.dormant ? true : undefined, children: [_jsx(FieldLabel, { htmlFor: 'rel-policy-dormant', children: t('ui.policy.dormantLabel') }), _jsxs(InputGroup, { children: [_jsx(InputGroupInput, { id: 'rel-policy-dormant', inputMode: 'decimal', value: value.dormantAfterHours, placeholder: t('ui.policy.neverDormant'), "aria-invalid": parsed.errors?.dormant ? true : undefined, onChange: (event) => onChange({ ...value, dormantAfterHours: event.target.value }) }), _jsx(InputGroupAddon, { align: 'inline-end', children: _jsx(InputGroupText, { children: t('ui.policy.hours') }) })] }), parsed.errors?.dormant ? (_jsx(FieldError, { children: t(`ui.policy.errors.${parsed.errors.dormant}`, {
29
+ }) })) : null] }), _jsxs(Field, { "data-invalid": parsed.errors?.dormant ? true : undefined, children: [_jsx(FieldLabel, { htmlFor: 'rel-policy-dormant', children: t('ui.policy.dormantLabel') }), timerModes ? (_jsx(TimerModeSelect, { id: 'rel-policy-dormant-mode', label: t('ui.policy.dormantModeLabel'), value: timerModes.dormant, onChange: (dormant) => onTimerModesChange?.({ ...timerModes, dormant }), t: t })) : null, _jsxs(InputGroup, { children: [_jsx(InputGroupInput, { id: 'rel-policy-dormant', inputMode: 'decimal', value: timerModes?.dormant === 'inherit' ? '' : value.dormantAfterHours, placeholder: t('ui.policy.neverDormant'), disabled: timerModes?.dormant === 'inherit', "aria-invalid": parsed.errors?.dormant ? true : undefined, onChange: (event) => onChange({ ...value, dormantAfterHours: event.target.value }) }), _jsx(InputGroupAddon, { align: 'inline-end', children: _jsx(InputGroupText, { children: t('ui.policy.hours') }) })] }), parsed.errors?.dormant ? (_jsx(FieldError, { children: t(`ui.policy.errors.${parsed.errors.dormant}`, {
23
30
  max: APP_POLICY_LIMITS.dormantAfterHours.max,
24
- }) })) : null] })] }), _jsx(FieldDescription, { children: supported ? t('ui.policy.timersHint') : t('ui.policy.unsupported') })] }));
31
+ }) })) : null] })] }), _jsx(FieldDescription, { children: supported ? t('ui.policy.timersHint') : t('ui.policy.unsupported') }), timerModes ? (_jsx(FieldDescription, { children: t('ui.policy.customTimerHint') })) : null] }));
32
+ }
33
+ function TimerModeSelect({ id, label, value, onChange, t, }) {
34
+ const items = ['inherit', 'custom'].map((mode) => ({
35
+ value: mode,
36
+ label: t(`ui.policy.timerMode.${mode}`),
37
+ }));
38
+ return (_jsxs(Select, { items: items, value: value, onValueChange: (next) => next && onChange(next), children: [_jsx(SelectTrigger, { id: id, "aria-label": label, className: 'w-full', children: _jsx(SelectValue, {}) }), _jsx(SelectContent, { children: items.map((item) => (_jsx(SelectItem, { value: item.value, children: item.label }, item.value))) })] }));
25
39
  }
26
40
  //# sourceMappingURL=runtime-policy-fields.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-policy-fields.js","sourceRoot":"","sources":["../../../client/components/runtime-policy-fields.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime-policy-fields.js","sourceRoot":"","sources":["../../../client/components/runtime-policy-fields.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { type ReactElement } from 'react';
2
+ import type { RuntimeStatus } from '../../shared/releases.js';
3
+ export declare function RuntimeStateBadge({ runtime, }: {
4
+ readonly runtime: RuntimeStatus;
5
+ }): ReactElement;
6
+ //# sourceMappingURL=runtime-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-state.d.ts","sourceRoot":"","sources":["../../../client/components/runtime-state.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAG5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAoB9D,wBAAgB,iBAAiB,CAAC,EAChC,OAAO,GACR,EAAE;IACD,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;CACjC,GAAG,YAAY,CAkEf"}
@@ -0,0 +1,67 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * An App's runtime state as an environment's Apps show it: a tag with the runtime alone (a deployment in progress is marked
4
+ * beside it), and why it is in that state — what holds it on its runtime, what its start waits for, its error and its
5
+ * last visit — on hover or focus, and on a tap where there is no hover.
6
+ */
7
+ import { useTranslation } from '@nocobase/i18n/client';
8
+ import { useRef, useState } from 'react';
9
+ import { ACCESS_NAMESPACE } from '../../shared/access.js';
10
+ import { messageText } from '../lib/errors.js';
11
+ import { formatDate } from '../lib/format.js';
12
+ import { runtimeReasons, runtimeStateKey } from '../lib/runtime-state.js';
13
+ import { Tag } from './tag.js';
14
+ import { Tooltip, TooltipContent, TooltipTrigger } from './ui/tooltip.js';
15
+ const TONE = {
16
+ running: 'green',
17
+ pending: 'grey',
18
+ starting: 'blue',
19
+ stopped: 'grey',
20
+ dormant: 'violet',
21
+ waitingCapacity: 'amber',
22
+ waitingMemory: 'amber',
23
+ waitingRecycle: 'amber',
24
+ failed: 'red',
25
+ unknown: 'grey',
26
+ };
27
+ export function RuntimeStateBadge({ runtime, }) {
28
+ const { t, i18n } = useTranslation(ACCESS_NAMESPACE);
29
+ const [open, setOpen] = useState(false);
30
+ // Opened by a press (a tap where there is no hover): the pointer leaving does not close it.
31
+ const pressedRef = useRef(false);
32
+ const key = runtimeStateKey(runtime);
33
+ const tag = (_jsx(Tag, { tone: TONE[key] ?? 'grey', dot: true, children: key === 'pending'
34
+ ? t('ui.apps.runStates.pending')
35
+ : t(`ui.state.${key}`) }));
36
+ const reasons = runtimeReasons(runtime).map((reason) => t(reason));
37
+ const details = [
38
+ ...reasons,
39
+ ...(runtime.error ? [messageText(t, runtime.error)] : []),
40
+ ...(runtime.lastAccessedAt
41
+ ? [
42
+ t('ui.runtime.lastVisit', {
43
+ time: formatDate(runtime.lastAccessedAt, i18n.language),
44
+ }),
45
+ ]
46
+ : []),
47
+ ];
48
+ if (details.length === 0)
49
+ return tag;
50
+ return (_jsxs(Tooltip, { open: open, onOpenChange: (next, details) => {
51
+ // A press opens it (below) rather than closing it; a press elsewhere, Escape or leaving the focus closes it.
52
+ if (details.reason === 'trigger-press')
53
+ return;
54
+ if (!next && details.reason === 'trigger-hover' && pressedRef.current)
55
+ return;
56
+ if (!next)
57
+ pressedRef.current = false;
58
+ setOpen(next);
59
+ }, children: [_jsxs(TooltipTrigger, { render: _jsx("button", { type: 'button', "data-slot": 'runtime-state', className: 'inline-flex rounded-md outline-none focus-visible:ring-2 focus-visible:ring-ring',
60
+ // A tap opens it where there is no hover; on the list it does not open the row.
61
+ onClick: (event) => {
62
+ event.stopPropagation();
63
+ pressedRef.current = true;
64
+ setOpen(true);
65
+ } }), children: [tag, _jsx("span", { className: 'sr-only', children: details.join('. ') })] }), _jsx(TooltipContent, { className: 'flex-col items-start gap-0.5', "aria-hidden": true, children: details.map((line) => (_jsx("span", { className: 'wrap-anywhere', children: line }, line))) })] }));
66
+ }
67
+ //# sourceMappingURL=runtime-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-state.js","sourceRoot":"","sources":["../../../client/components/runtime-state.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { ReactElement } from 'react';
2
+ import type { AppSummary, SharedHostView } from '../../shared/releases.js';
3
+ /**
4
+ * One line on an App's page while its shared host affects it, null otherwise. `canReadEnvironments` adds the link to
5
+ * the host's block on the environments page, which needs the `rel.environments` `read` setting.
6
+ */
7
+ export declare function SharedHostNotice({ summary, canReadEnvironments, }: {
8
+ readonly summary: AppSummary;
9
+ readonly canReadEnvironments: boolean;
10
+ }): ReactElement | null;
11
+ /**
12
+ * One host's capacity card. Its counts are the whole host's, every environment on it included. Its footer splits the
13
+ * running or starting Apps by environment, each linking `canViewApps` readers to the environment's Apps filtered to
14
+ * them; the server counts with the same states the filter keeps, so the two agree.
15
+ */
16
+ export declare function SharedHostSection({ host, canViewApps, }: {
17
+ readonly host: SharedHostView;
18
+ readonly canViewApps: boolean;
19
+ }): ReactElement;
20
+ //# sourceMappingURL=shared-host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-host.d.ts","sourceRoot":"","sources":["../../../client/components/shared-host.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAI1C,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAgB3E;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,mBAAmB,GACpB,EAAE;IACD,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC;CACvC,GAAG,YAAY,GAAG,IAAI,CAyBtB;AAiDD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,WAAW,GACZ,EAAE;IACD,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B,GAAG,YAAY,CA2If"}
@@ -0,0 +1,88 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /**
3
+ * A shared app host: the environments page shows each one once as a capacity card (`SharedHostSection`) — how many
4
+ * Apps run or start against its limit, the shared process's memory as one total (it cannot be divided among the Apps),
5
+ * its restart state and the environments it could not restore — with those Apps by environment, each linking to the
6
+ * environment's Apps filtered to them. An App's
7
+ * page mentions its host only when the host affects it (`SharedHostNotice`), linking to the card for those who may read
8
+ * the environments page.
9
+ */
10
+ import { useTranslation } from '@nocobase/i18n/client';
11
+ import { RefreshCwIcon, TriangleAlertIcon } from 'lucide-react';
12
+ import { Link } from 'react-router';
13
+ import { ACCESS_NAMESPACE } from '../../shared/access.js';
14
+ import { messageText } from '../lib/errors.js';
15
+ import { formatMemory } from '../lib/format.js';
16
+ import { useReleasesLinks, useReleasesPaths } from '../lib/paths.js';
17
+ import { hostNoticeOf, sharedHostAnchor } from '../lib/runtime-state.js';
18
+ import { Alert, AlertDescription, AlertTitle } from './ui/alert.js';
19
+ import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, } from './ui/card.js';
20
+ import { Progress } from './ui/progress.js';
21
+ /**
22
+ * One line on an App's page while its shared host affects it, null otherwise. `canReadEnvironments` adds the link to
23
+ * the host's block on the environments page, which needs the `rel.environments` `read` setting.
24
+ */
25
+ export function SharedHostNotice({ summary, canReadEnvironments, }) {
26
+ const { t } = useTranslation(ACCESS_NAMESPACE);
27
+ const paths = useReleasesPaths();
28
+ const notice = hostNoticeOf(summary);
29
+ if (!notice || !summary.host)
30
+ return null;
31
+ return (_jsxs(Alert, { role: 'status', "data-slot": 'shared-host-notice', children: [notice.startsWith('ui.sharedHost.recycling.') ? (_jsx(RefreshCwIcon, {})) : (_jsx(TriangleAlertIcon, {})), _jsxs(AlertTitle, { className: 'flex flex-wrap items-baseline gap-x-3 gap-y-1 font-normal', children: [_jsx("span", { children: t(notice) }), canReadEnvironments ? (_jsx(Link, { to: `${paths.environments}#${sharedHostAnchor(summary.host.id)}`, className: 'text-primary underline-offset-4 hover:underline', children: t('ui.sharedHost.view') })) : null] })] }));
32
+ }
33
+ /**
34
+ * One of the card's metrics, all built alike so their bars line up: a short label and its value on one line (the label
35
+ * truncates rather than wrapping), then the bar. Without a `max` (no limit) a blank track keeps the line's height.
36
+ */
37
+ function Meter({ label, value, used, max, }) {
38
+ const head = (_jsxs("div", { className: 'flex min-w-0 items-baseline justify-between gap-3 text-sm', children: [_jsx("span", { className: 'min-w-0 truncate text-muted-foreground', children: label }), _jsx("span", { className: 'shrink-0 font-medium whitespace-nowrap tabular-nums', children: value })] }));
39
+ if (!max)
40
+ return (_jsxs("div", { className: 'grid gap-1.5', "data-slot": 'shared-host-metric', children: [head, _jsx("div", { className: 'h-1 rounded-full bg-muted', "aria-hidden": true })] }));
41
+ return (_jsx(Progress, { value: Math.min(100, (used / max) * 100), getAriaValueText: () => value, "aria-label": label, className: 'grid gap-1.5', "data-slot": 'shared-host-metric', children: head }));
42
+ }
43
+ /** An environment's Apps filtered to those the card counts: running or starting. */
44
+ const RUNNING_SEARCH = '?runtimeState=running&runtimeState=starting';
45
+ /**
46
+ * One host's capacity card. Its counts are the whole host's, every environment on it included. Its footer splits the
47
+ * running or starting Apps by environment, each linking `canViewApps` readers to the environment's Apps filtered to
48
+ * them; the server counts with the same states the filter keeps, so the two agree.
49
+ */
50
+ export function SharedHostSection({ host, canViewApps, }) {
51
+ const { t } = useTranslation(ACCESS_NAMESPACE);
52
+ const links = useReleasesLinks();
53
+ const memory = host.memory;
54
+ return (_jsxs(Card, { id: sharedHostAnchor(host.id), className: 'scroll-mt-4', children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { children: t('ui.sharedHost.title') }), _jsx(CardDescription, { children: host.environments.length > 0
55
+ ? t('ui.sharedHost.environments', {
56
+ names: host.environments
57
+ .map((environment) => environment.name)
58
+ .join(', '),
59
+ })
60
+ : t('ui.sharedHost.description') })] }), _jsxs(CardContent, { className: 'space-y-4', children: [_jsxs("div", { className: 'grid gap-x-6 gap-y-4 sm:grid-cols-2 lg:grid-cols-3', children: [_jsx(Meter, { label: t('ui.sharedHost.appsLabel'), value: host.maxActive
61
+ ? t('ui.sharedHost.ratio', {
62
+ used: host.running,
63
+ limit: host.maxActive,
64
+ })
65
+ : t('ui.sharedHost.runningUnlimited', { running: host.running }), used: host.running, max: host.maxActive }), memory ? (_jsxs(_Fragment, { children: [_jsx(Meter, { label: t('ui.sharedHost.heapLabel'), value: t('ui.sharedHost.ratio', {
66
+ used: formatMemory(memory.heapUsed),
67
+ limit: formatMemory(memory.heapLimit),
68
+ }), used: memory.heapUsed, max: memory.heapLimit }), _jsx(Meter, { label: t('ui.sharedHost.processLabel'), value: t('ui.sharedHost.ratio', {
69
+ used: formatMemory(memory.rss),
70
+ limit: formatMemory(memory.rss + memory.available),
71
+ }), used: memory.rss, max: memory.rss + memory.available })] })) : null] }), _jsx("p", { className: 'text-xs text-muted-foreground', children: [
72
+ t('ui.sharedHost.deployed', { count: host.deployed }),
73
+ ...(memory
74
+ ? [
75
+ t('ui.sharedHost.available', {
76
+ available: formatMemory(memory.available),
77
+ }),
78
+ ]
79
+ : []),
80
+ t('ui.sharedHost.wholeHost'),
81
+ ].join(' · ') }), host.recycling ? (_jsxs(Alert, { role: 'status', "data-slot": 'shared-host-recycling', children: [_jsx(RefreshCwIcon, {}), _jsx(AlertTitle, { className: 'font-normal', children: t(`ui.sharedHost.recycling.${host.recycling}`) })] })) : null, host.failedEnvironments.map((environment) => (_jsxs(Alert, { variant: 'destructive', "data-slot": 'shared-host-restore-failed', children: [_jsx(TriangleAlertIcon, {}), _jsx(AlertTitle, { className: 'font-normal', children: t('ui.sharedHost.restoreFailed', {
82
+ name: environment.name ?? environment.id,
83
+ }) }), environment.error ? (_jsx(AlertDescription, { className: 'break-words', children: messageText(t, environment.error) })) : null] }, environment.id)))] }), host.environments.length > 0 ? (_jsxs(CardFooter, { className: 'flex flex-wrap items-baseline gap-x-3 gap-y-1', "data-host-environments": '', children: [_jsx("span", { className: 'text-sm text-muted-foreground', children: t('ui.sharedHost.byEnvironment') }), _jsx("ul", { className: 'flex flex-wrap items-baseline gap-x-3 gap-y-1 text-sm', children: host.environments.map((environment) => {
84
+ const label = (_jsxs(_Fragment, { children: [environment.name, ' ', _jsx("span", { className: 'tabular-nums', children: environment.running })] }));
85
+ return (_jsx("li", { children: canViewApps ? (_jsx(Link, { to: `${links.environment(environment.id)}${RUNNING_SEARCH}`, className: 'text-primary underline-offset-4 hover:underline', children: label })) : (label) }, environment.id));
86
+ }) }), canViewApps ? (_jsx("span", { className: 'text-xs text-muted-foreground', children: t('ui.sharedHost.viewAppsNote') })) : null] })) : null] }));
87
+ }
88
+ //# sourceMappingURL=shared-host.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-host.js","sourceRoot":"","sources":["../../../client/components/shared-host.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { ReactElement } from 'react';
2
+ import { Progress as ProgressPrimitive } from '@base-ui/react/progress';
3
+ declare function Progress({ className, children, value, ...props }: ProgressPrimitive.Root.Props): ReactElement;
4
+ declare function ProgressTrack({ className, ...props }: ProgressPrimitive.Track.Props): ReactElement;
5
+ declare function ProgressIndicator({ className, ...props }: ProgressPrimitive.Indicator.Props): ReactElement;
6
+ declare function ProgressLabel({ className, ...props }: ProgressPrimitive.Label.Props): ReactElement;
7
+ declare function ProgressValue({ className, ...props }: ProgressPrimitive.Value.Props): ReactElement;
8
+ export { Progress, ProgressTrack, ProgressIndicator, ProgressLabel, ProgressValue, };
9
+ //# sourceMappingURL=progress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../../../client/components/ui/progress.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAGxE,iBAAS,QAAQ,CAAC,EAChB,SAAS,EACT,QAAQ,EACR,KAAK,EACL,GAAG,KAAK,EACT,EAAE,iBAAiB,CAAC,IAAI,CAAC,KAAK,GAAG,YAAY,CAc7C;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,iBAAiB,CAAC,KAAK,CAAC,KAAK,GAAG,YAAY,CAW9C;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,iBAAiB,CAAC,SAAS,CAAC,KAAK,GAAG,YAAY,CAQlD;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,iBAAiB,CAAC,KAAK,CAAC,KAAK,GAAG,YAAY,CAQ9C;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,iBAAiB,CAAC,KAAK,CAAC,KAAK,GAAG,YAAY,CAW9C;AAED,OAAO,EACL,QAAQ,EACR,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,aAAa,GACd,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Progress as ProgressPrimitive } from '@base-ui/react/progress';
3
+ import { cn } from 'cn';
4
+ function Progress({ className, children, value, ...props }) {
5
+ return (_jsxs(ProgressPrimitive.Root, { value: value, "data-slot": 'progress', className: cn('flex flex-wrap gap-3', className), ...props, children: [children, _jsx(ProgressTrack, { children: _jsx(ProgressIndicator, {}) })] }));
6
+ }
7
+ function ProgressTrack({ className, ...props }) {
8
+ return (_jsx(ProgressPrimitive.Track, { className: cn('relative flex h-1 w-full items-center overflow-x-hidden rounded-full bg-muted', className), "data-slot": 'progress-track', ...props }));
9
+ }
10
+ function ProgressIndicator({ className, ...props }) {
11
+ return (_jsx(ProgressPrimitive.Indicator, { "data-slot": 'progress-indicator', className: cn('h-full bg-primary transition-all', className), ...props }));
12
+ }
13
+ function ProgressLabel({ className, ...props }) {
14
+ return (_jsx(ProgressPrimitive.Label, { className: cn('text-sm font-medium', className), "data-slot": 'progress-label', ...props }));
15
+ }
16
+ function ProgressValue({ className, ...props }) {
17
+ return (_jsx(ProgressPrimitive.Value, { className: cn('ml-auto text-sm text-muted-foreground tabular-nums', className), "data-slot": 'progress-value', ...props }));
18
+ }
19
+ export { Progress, ProgressTrack, ProgressIndicator, ProgressLabel, ProgressValue, };
20
+ //# sourceMappingURL=progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.js","sourceRoot":"","sources":["../../../../client/components/ui/progress.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,EAAE,EAAE,MAAM,IAAI,CAAC;AAExB,SAAS,QAAQ,CAAC,EAChB,SAAS,EACT,QAAQ,EACR,KAAK,EACL,GAAG,KAAK,EACqB;IAC7B,OAAO,CACL,MAAC,iBAAiB,CAAC,IAAI,IACrB,KAAK,EAAE,KAAK,eACF,UAAU,EACpB,SAAS,EAAE,EAAE,CAAC,sBAAsB,EAAE,SAAS,CAAC,KAC5C,KAAK,aAER,QAAQ,EACT,KAAC,aAAa,cACZ,KAAC,iBAAiB,KAAG,GACP,IACO,CAC1B,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EACsB;IAC9B,OAAO,CACL,KAAC,iBAAiB,CAAC,KAAK,IACtB,SAAS,EAAE,EAAE,CACX,+EAA+E,EAC/E,SAAS,CACV,eACS,gBAAgB,KACtB,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EAC0B;IAClC,OAAO,CACL,KAAC,iBAAiB,CAAC,SAAS,iBAChB,oBAAoB,EAC9B,SAAS,EAAE,EAAE,CAAC,kCAAkC,EAAE,SAAS,CAAC,KACxD,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EACsB;IAC9B,OAAO,CACL,KAAC,iBAAiB,CAAC,KAAK,IACtB,SAAS,EAAE,EAAE,CAAC,qBAAqB,EAAE,SAAS,CAAC,eACrC,gBAAgB,KACtB,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EACsB;IAC9B,OAAO,CACL,KAAC,iBAAiB,CAAC,KAAK,IACtB,SAAS,EAAE,EAAE,CACX,oDAAoD,EACpD,SAAS,CACV,eACS,gBAAgB,KACtB,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,OAAO,EACL,QAAQ,EACR,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,aAAa,GACd,CAAC"}
@@ -1,12 +1,5 @@
1
- import { type Context } from 'react';
2
- export interface RouteOverlayContextValue {
3
- /** Runs `beforeClose`, then navigates to the parent route unless it declined. Concurrent calls share one request. */
4
- readonly close: () => Promise<void>;
5
- /** True while a close request for the current location is pending. */
6
- readonly isClosing: boolean;
7
- }
8
- /** Internal context shared by both route overlay components. */
9
- export declare const RouteOverlayContext: Context<RouteOverlayContextValue | null>;
1
+ import { RouteOverlayContext, type RouteOverlayContextValue } from '@nocobase/app-client/route-containers';
2
+ export { RouteOverlayContext, type RouteOverlayContextValue };
10
3
  /**
11
4
  * Closes the enclosing `RouteDialog` or `RouteDrawer`. Call it from a component rendered inside the overlay — its
12
5
  * body or its footer — never from the page that returns the overlay, which sits outside the provider.
@@ -1 +1 @@
1
- {"version":3,"file":"use-route-overlay.d.ts","sourceRoot":"","sources":["../../../client/components/use-route-overlay.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhE,MAAM,WAAW,wBAAwB;IACvC,qHAAqH;IACrH,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,sEAAsE;IACtE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED,gEAAgE;AAChE,eAAO,MAAM,mBAAmB,EAAE,OAAO,CAAC,wBAAwB,GAAG,IAAI,CACnB,CAAC;AAEvD;;;GAGG;AACH,wBAAgB,eAAe,IAAI,wBAAwB,CAQ1D"}
1
+ {"version":3,"file":"use-route-overlay.d.ts","sourceRoot":"","sources":["../../../client/components/use-route-overlay.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,KAAK,wBAAwB,EAC9B,MAAM,uCAAuC,CAAC;AAK/C,OAAO,EAAE,mBAAmB,EAAE,KAAK,wBAAwB,EAAE,CAAC;AAE9D;;;GAGG;AACH,wBAAgB,eAAe,IAAI,wBAAwB,CAQ1D"}
@@ -1,6 +1,8 @@
1
- import { createContext, useContext } from 'react';
2
- /** Internal context shared by both route overlay components. */
3
- export const RouteOverlayContext = createContext(null);
1
+ import { RouteOverlayContext, } from '@nocobase/app-client/route-containers';
2
+ import { useContext } from 'react';
3
+ // The context lives in `@nocobase/app-client` so every copy of the route overlay components, including a plugin's,
4
+ // shares it: a footer button inside a panel the application opened reaches that panel's close request.
5
+ export { RouteOverlayContext };
4
6
  /**
5
7
  * Closes the enclosing `RouteDialog` or `RouteDrawer`. Call it from a component rendered inside the overlay — its
6
8
  * body or its footer — never from the page that returns the overlay, which sits outside the provider.
@@ -1 +1 @@
1
- {"version":3,"file":"use-route-overlay.js","sourceRoot":"","sources":["../../../client/components/use-route-overlay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAgB,MAAM,OAAO,CAAC;AAShE,gEAAgE;AAChE,MAAM,CAAC,MAAM,mBAAmB,GAC9B,aAAa,CAAkC,IAAI,CAAC,CAAC;AAEvD;;;GAGG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,KAAK,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAC;IAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,gEAAgE,CACjE,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"use-route-overlay.js","sourceRoot":"","sources":["../../../client/components/use-route-overlay.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,GAEpB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEnC,mHAAmH;AACnH,uGAAuG;AACvG,OAAO,EAAE,mBAAmB,EAAiC,CAAC;AAE9D;;;GAGG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,KAAK,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAC;IAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,gEAAgE,CACjE,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"variable-alerts.d.ts","sourceRoot":"","sources":["../../../client/components/variable-alerts.tsx"],"names":[],"mappings":"AAeA,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAgBpD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,KAAK,EACL,aAAa,EACb,KAAK,GACN,EAAE;IACD,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,2FAA2F;IAC3F,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,sEAAsE;IACtE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,YAAY,GAAG,IAAI,CAkCtB;AAED,+FAA+F;AAC/F,wBAAgB,qBAAqB,CAAC,EACpC,IAAI,EACJ,OAAO,GACR,EAAE;IACD,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,2DAA2D;IAC3D,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CAC/B,GAAG,YAAY,CAmBf;AAED,gHAAgH;AAChH,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,SAAS,GACV,EAAE;IACD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B,GAAG,YAAY,GAAG,IAAI,CAqHtB"}
1
+ {"version":3,"file":"variable-alerts.d.ts","sourceRoot":"","sources":["../../../client/components/variable-alerts.tsx"],"names":[],"mappings":"AAeA,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAgBpD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,KAAK,EACL,aAAa,EACb,KAAK,GACN,EAAE;IACD,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,2FAA2F;IAC3F,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,sEAAsE;IACtE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,YAAY,GAAG,IAAI,CAkCtB;AAED,+FAA+F;AAC/F,wBAAgB,qBAAqB,CAAC,EACpC,IAAI,EACJ,OAAO,GACR,EAAE;IACD,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,2DAA2D;IAC3D,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CAC/B,GAAG,YAAY,CAmBf;AAED,gHAAgH;AAChH,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,SAAS,GACV,EAAE;IACD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B,GAAG,YAAY,GAAG,IAAI,CAkGtB"}
@@ -4,7 +4,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
4
  * changed since the running deployment, and the first administrator a first deployment generated (shown masked to
5
5
  * those who may deploy, until someone saved it).
6
6
  */
7
- import { ApiClientError } from '@nocobase/app-client';
7
+ import { copyText, ApiClientError } from '@nocobase/app-client';
8
8
  import { useTranslation } from '@nocobase/i18n/client';
9
9
  import { CopyIcon, EyeIcon, EyeOffIcon, KeyRoundIcon, RotateCwIcon, TriangleAlertIcon, } from 'lucide-react';
10
10
  import { useState } from 'react';
@@ -39,13 +39,7 @@ export function InitialAdminAlert({ appId, reloadKey, }) {
39
39
  const [dismissing, setDismissing] = useState(false);
40
40
  const [dismissed, setDismissed] = useState(false);
41
41
  // Nothing to show answers 404, and a caller who may not read it 403: both are simply no alert.
42
- const admin = useLoad(() => api.get(`apps/${appId}/initialAdmin`).then((found) => ({
43
- ...found,
44
- // Whole hours left, read when it loads.
45
- hours: found.expiresAt
46
- ? Math.max(1, Math.ceil((Date.parse(found.expiresAt) - Date.now()) / 3_600_000))
47
- : null,
48
- }), (reason) => {
42
+ const admin = useLoad(() => api.get(`apps/${appId}/initialAdmin`).then((found) => found, (reason) => {
49
43
  if (reason instanceof ApiClientError &&
50
44
  (reason.status === 404 || reason.status === 403))
51
45
  return null;
@@ -54,15 +48,11 @@ export function InitialAdminAlert({ appId, reloadKey, }) {
54
48
  const data = admin.data;
55
49
  if (!data || dismissed)
56
50
  return null;
57
- const { hours } = data;
58
51
  const copy = async () => {
59
- try {
60
- await navigator.clipboard.writeText(data.password);
52
+ if (await copyText(data.password))
61
53
  notify.success(t('ui.initialAdmin.copied'));
62
- }
63
- catch (reason) {
64
- notify.error(reason);
65
- }
54
+ else
55
+ notify.error(new Error(t('ui.initialAdmin.copyFailed')));
66
56
  };
67
57
  const dismiss = async () => {
68
58
  setDismissing(true);
@@ -78,8 +68,6 @@ export function InitialAdminAlert({ appId, reloadKey, }) {
78
68
  setDismissing(false);
79
69
  }
80
70
  };
81
- return (_jsxs(Alert, { "data-slot": 'initial-admin', children: [_jsx(KeyRoundIcon, {}), _jsx(AlertTitle, { children: t('ui.initialAdmin.title') }), _jsxs(AlertDescription, { children: [_jsx("p", { children: hours === null
82
- ? t('ui.initialAdmin.kept')
83
- : t('ui.initialAdmin.expires', { hours }) }), _jsxs("dl", { className: 'mt-2 grid grid-cols-[auto_1fr] gap-x-3 gap-y-1 text-foreground', children: [_jsx("dt", { className: 'text-muted-foreground', children: t('ui.initialAdmin.username') }), _jsx("dd", { className: 'font-mono text-xs leading-5', children: data.username }), _jsx("dt", { className: 'text-muted-foreground', children: t('ui.initialAdmin.email') }), _jsx("dd", { className: 'font-mono text-xs leading-5', children: data.email }), _jsx("dt", { className: 'text-muted-foreground', children: t('ui.initialAdmin.password') }), _jsxs("dd", { className: 'flex flex-wrap items-center gap-1', children: [_jsx("span", { className: 'font-mono text-xs', "data-slot": 'initial-password', children: shown ? data.password : '••••••••••••' }), _jsx(Button, { variant: 'ghost', size: 'icon-xs', "aria-label": shown ? t('ui.initialAdmin.hide') : t('ui.initialAdmin.show'), onClick: () => setShown((value) => !value), children: shown ? _jsx(EyeOffIcon, {}) : _jsx(EyeIcon, {}) }), _jsx(Button, { variant: 'ghost', size: 'icon-xs', "aria-label": t('ui.initialAdmin.copy'), onClick: () => void copy(), children: _jsx(CopyIcon, {}) })] })] })] }), _jsx(AlertAction, { children: _jsxs(Button, { variant: 'outline', size: 'sm', disabled: dismissing, onClick: () => void dismiss(), children: [dismissing ? _jsx(Spinner, { "data-icon": 'inline-start' }) : null, t('ui.initialAdmin.dismiss')] }) })] }));
71
+ return (_jsxs(Alert, { "data-slot": 'initial-admin', children: [_jsx(KeyRoundIcon, {}), _jsx(AlertTitle, { children: t('ui.initialAdmin.title') }), _jsxs(AlertDescription, { children: [_jsx("p", { children: t('ui.initialAdmin.kept') }), _jsxs("dl", { className: 'mt-2 grid grid-cols-[auto_1fr] gap-x-3 gap-y-1 text-foreground', children: [_jsx("dt", { className: 'text-muted-foreground', children: t('ui.initialAdmin.username') }), _jsx("dd", { className: 'font-mono text-xs leading-5', children: data.username }), _jsx("dt", { className: 'text-muted-foreground', children: t('ui.initialAdmin.email') }), _jsx("dd", { className: 'font-mono text-xs leading-5', children: data.email }), _jsx("dt", { className: 'text-muted-foreground', children: t('ui.initialAdmin.password') }), _jsxs("dd", { className: 'flex flex-wrap items-center gap-1', children: [_jsx("span", { className: 'font-mono text-xs', "data-slot": 'initial-password', children: shown ? data.password : '••••••••••••' }), _jsx(Button, { variant: 'ghost', size: 'icon-xs', "aria-label": shown ? t('ui.initialAdmin.hide') : t('ui.initialAdmin.show'), onClick: () => setShown((value) => !value), children: shown ? _jsx(EyeOffIcon, {}) : _jsx(EyeIcon, {}) }), _jsx(Button, { variant: 'ghost', size: 'icon-xs', "aria-label": t('ui.initialAdmin.copy'), onClick: () => void copy(), children: _jsx(CopyIcon, {}) })] })] })] }), _jsx(AlertAction, { children: _jsxs(Button, { variant: 'outline', size: 'sm', disabled: dismissing, onClick: () => void dismiss(), children: [dismissing ? _jsx(Spinner, { "data-icon": 'inline-start' }) : null, t('ui.initialAdmin.dismiss')] }) })] }));
84
72
  }
85
73
  //# sourceMappingURL=variable-alerts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"variable-alerts.js","sourceRoot":"","sources":["../../../client/components/variable-alerts.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"variable-alerts.js","sourceRoot":"","sources":["../../../client/components/variable-alerts.tsx"],"names":[],"mappings":"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"}
@@ -6,6 +6,6 @@ interface AppSummaryLoader {
6
6
  readonly reload: () => Promise<void>;
7
7
  }
8
8
  /** One request at a time, including manual refreshes and refreshes after mutations. */
9
- export declare function useAppSummary(appId: string, load: () => Promise<AppSummary>, onDeploymentChanged: () => void): AppSummaryLoader;
9
+ export declare function useAppSummary(appId: string, load: () => Promise<AppSummary>, onDeploymentChanged: () => void, onDeploymentProgress?: () => void): AppSummaryLoader;
10
10
  export {};
11
11
  //# sourceMappingURL=use-app-summary.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-app-summary.d.ts","sourceRoot":"","sources":["../../../client/hooks/use-app-summary.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAU3D,UAAU,gBAAgB;IACxB,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AAED,uFAAuF;AACvF,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,EAC/B,mBAAmB,EAAE,MAAM,IAAI,GAC9B,gBAAgB,CAmGlB"}
1
+ {"version":3,"file":"use-app-summary.d.ts","sourceRoot":"","sources":["../../../client/hooks/use-app-summary.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAU3D,UAAU,gBAAgB;IACxB,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AAED,uFAAuF;AACvF,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,EAC/B,mBAAmB,EAAE,MAAM,IAAI,EAC/B,oBAAoB,CAAC,EAAE,MAAM,IAAI,GAChC,gBAAgB,CAqGlB"}
@@ -2,11 +2,12 @@ import { ApiClientError } from '@nocobase/app-client';
2
2
  import { useCallback, useEffect, useEffectEvent, useRef, useState, } from 'react';
3
3
  import { appRefreshDelay } from '../lib/app-operations.js';
4
4
  /** One request at a time, including manual refreshes and refreshes after mutations. */
5
- export function useAppSummary(appId, load, onDeploymentChanged) {
5
+ export function useAppSummary(appId, load, onDeploymentChanged, onDeploymentProgress) {
6
6
  const [state, setState] = useState({ appId, loading: true });
7
7
  const reloadRef = useRef(async () => undefined);
8
8
  const fetchLatest = useEffectEvent(load);
9
9
  const deploymentChanged = useEffectEvent(onDeploymentChanged);
10
+ const deploymentProgress = useEffectEvent(() => onDeploymentProgress?.());
10
11
  useEffect(() => {
11
12
  let active = true;
12
13
  let latest;
@@ -52,6 +53,8 @@ export function useAppSummary(appId, load, onDeploymentChanged) {
52
53
  setState({ appId, data: next, loading: false });
53
54
  if (changed)
54
55
  deploymentChanged();
56
+ else if (next.hasPendingDeployment)
57
+ deploymentProgress();
55
58
  }
56
59
  catch (reason) {
57
60
  if (!active || requestRevision !== revision)
@@ -1 +1 @@
1
- {"version":3,"file":"use-app-summary.js","sourceRoot":"","sources":["../../../client/hooks/use-app-summary.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-app-summary.js","sourceRoot":"","sources":["../../../client/hooks/use-app-summary.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,8 @@ export interface Me {
6
6
  readonly permissions: ReleasesPermissions;
7
7
  }
8
8
  type Method = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
9
- type Query = Record<string, string | number | boolean | undefined>;
9
+ /** A repeated parameter (`?environmentId=a&environmentId=b`) is an array. */
10
+ type Query = Record<string, string | number | boolean | readonly string[] | undefined>;
10
11
  /** A list answer: its items, and what `meta` says about them (`total`, and `page`/`pageSize` when it pages). */
11
12
  export interface ListResult<T> {
12
13
  readonly items: readonly T[];
@@ -38,5 +39,7 @@ export interface Loaded<T> {
38
39
  export declare function useLoad<T>(load: () => Promise<T>, key: string): Loaded<T>;
39
40
  /** The signed-in user's permissions; nothing until they are known. */
40
41
  export declare function useMe(): Me;
42
+ /** The signed-in user's permissions with whether they are known yet, for a page that decides who may enter it. */
43
+ export declare function useMeLoad(): Loaded<Me>;
41
44
  export {};
42
45
  //# sourceMappingURL=use-releases.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-releases.d.ts","sourceRoot":"","sources":["../../../client/hooks/use-releases.ts"],"names":[],"mappings":"AAOA,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,MAAM,WAAW,EAAE;IACjB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,mBAAmB,CAAC;CAC3C;AAED,KAAK,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE1D,KAAK,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;AAEnE,gHAAgH;AAChH,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE;QACb,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;KAC5B,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAChD,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,qFAAqF;IACrF,IAAI,CAAC,CAAC,EACJ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GACzC,OAAO,CAAC,CAAC,CAAC,CAAC;IACd,MAAM,CAAC,CAAC,EACN,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,IAAI,EACV,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,OAAO,CAAC,CAAC,CAAC,CAAC;CACf;AAED,wBAAgB,cAAc,IAAI,WAAW,CA6C5C;AAED,MAAM,WAAW,MAAM,CAAC,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC;IAC7B,qEAAqE;IACrE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAmCzE;AAED,sEAAsE;AACtE,wBAAgB,KAAK,IAAI,EAAE,CAI1B"}
1
+ {"version":3,"file":"use-releases.d.ts","sourceRoot":"","sources":["../../../client/hooks/use-releases.ts"],"names":[],"mappings":"AAOA,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,MAAM,WAAW,EAAE;IACjB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,mBAAmB,CAAC;CAC3C;AAED,KAAK,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE1D,6EAA6E;AAC7E,KAAK,KAAK,GAAG,MAAM,CACjB,MAAM,EACN,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,CAC1D,CAAC;AAEF,gHAAgH;AAChH,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE;QACb,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;KAC5B,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAChD,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,qFAAqF;IACrF,IAAI,CAAC,CAAC,EACJ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GACzC,OAAO,CAAC,CAAC,CAAC,CAAC;IACd,MAAM,CAAC,CAAC,EACN,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,IAAI,EACV,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,OAAO,CAAC,CAAC,CAAC,CAAC;CACf;AAED,wBAAgB,cAAc,IAAI,WAAW,CA6C5C;AAED,MAAM,WAAW,MAAM,CAAC,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC;IAC7B,qEAAqE;IACrE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAmCzE;AAED,sEAAsE;AACtE,wBAAgB,KAAK,IAAI,EAAE,CAE1B;AAED,kHAAkH;AAClH,wBAAgB,SAAS,IAAI,MAAM,CAAC,EAAE,CAAC,CAGtC"}