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

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 (270) hide show
  1. package/CHANGELOG.md +349 -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-container.js +1 -1
  9. package/dist/client/components/page-container.js.map +1 -1
  10. package/dist/client/components/page-header.d.ts.map +1 -1
  11. package/dist/client/components/page-header.js +1 -1
  12. package/dist/client/components/page-header.js.map +1 -1
  13. package/dist/client/components/release-badges.d.ts.map +1 -1
  14. package/dist/client/components/release-badges.js +13 -1
  15. package/dist/client/components/release-badges.js.map +1 -1
  16. package/dist/client/components/route-overlay.d.ts +4 -1
  17. package/dist/client/components/route-overlay.d.ts.map +1 -1
  18. package/dist/client/components/route-overlay.js +32 -3
  19. package/dist/client/components/route-overlay.js.map +1 -1
  20. package/dist/client/components/runtime-policy-fields.d.ts +7 -1
  21. package/dist/client/components/runtime-policy-fields.d.ts.map +1 -1
  22. package/dist/client/components/runtime-policy-fields.js +19 -5
  23. package/dist/client/components/runtime-policy-fields.js.map +1 -1
  24. package/dist/client/components/runtime-state.d.ts +6 -0
  25. package/dist/client/components/runtime-state.d.ts.map +1 -0
  26. package/dist/client/components/runtime-state.js +67 -0
  27. package/dist/client/components/runtime-state.js.map +1 -0
  28. package/dist/client/components/shared-host.d.ts +20 -0
  29. package/dist/client/components/shared-host.d.ts.map +1 -0
  30. package/dist/client/components/shared-host.js +88 -0
  31. package/dist/client/components/shared-host.js.map +1 -0
  32. package/dist/client/components/ui/progress.d.ts +9 -0
  33. package/dist/client/components/ui/progress.d.ts.map +1 -0
  34. package/dist/client/components/ui/progress.js +20 -0
  35. package/dist/client/components/ui/progress.js.map +1 -0
  36. package/dist/client/components/use-route-overlay.d.ts +2 -9
  37. package/dist/client/components/use-route-overlay.d.ts.map +1 -1
  38. package/dist/client/components/use-route-overlay.js +5 -3
  39. package/dist/client/components/use-route-overlay.js.map +1 -1
  40. package/dist/client/components/variable-alerts.d.ts.map +1 -1
  41. package/dist/client/components/variable-alerts.js +6 -18
  42. package/dist/client/components/variable-alerts.js.map +1 -1
  43. package/dist/client/hooks/use-app-summary.d.ts +1 -1
  44. package/dist/client/hooks/use-app-summary.d.ts.map +1 -1
  45. package/dist/client/hooks/use-app-summary.js +4 -1
  46. package/dist/client/hooks/use-app-summary.js.map +1 -1
  47. package/dist/client/hooks/use-releases.d.ts +4 -1
  48. package/dist/client/hooks/use-releases.d.ts.map +1 -1
  49. package/dist/client/hooks/use-releases.js +6 -2
  50. package/dist/client/hooks/use-releases.js.map +1 -1
  51. package/dist/client/lib/app-state.d.ts +2 -2
  52. package/dist/client/lib/app-state.d.ts.map +1 -1
  53. package/dist/client/lib/app-state.js +10 -3
  54. package/dist/client/lib/app-state.js.map +1 -1
  55. package/dist/client/lib/errors.d.ts.map +1 -1
  56. package/dist/client/lib/errors.js +7 -0
  57. package/dist/client/lib/errors.js.map +1 -1
  58. package/dist/client/lib/format.d.ts +2 -0
  59. package/dist/client/lib/format.d.ts.map +1 -1
  60. package/dist/client/lib/format.js +7 -0
  61. package/dist/client/lib/format.js.map +1 -1
  62. package/dist/client/lib/paths.d.ts +5 -0
  63. package/dist/client/lib/paths.d.ts.map +1 -1
  64. package/dist/client/lib/paths.js +10 -0
  65. package/dist/client/lib/paths.js.map +1 -1
  66. package/dist/client/lib/permissions.d.ts +5 -0
  67. package/dist/client/lib/permissions.d.ts.map +1 -1
  68. package/dist/client/lib/permissions.js +8 -0
  69. package/dist/client/lib/permissions.js.map +1 -1
  70. package/dist/client/lib/runtime-state.d.ts +25 -0
  71. package/dist/client/lib/runtime-state.d.ts.map +1 -0
  72. package/dist/client/lib/runtime-state.js +58 -0
  73. package/dist/client/lib/runtime-state.js.map +1 -0
  74. package/dist/client/locales/de-DE.d.ts +5 -0
  75. package/dist/client/locales/de-DE.d.ts.map +1 -0
  76. package/dist/client/locales/de-DE.js +876 -0
  77. package/dist/client/locales/de-DE.js.map +1 -0
  78. package/dist/client/locales/en-US.d.ts +83 -9
  79. package/dist/client/locales/en-US.d.ts.map +1 -1
  80. package/dist/client/locales/en-US.js +80 -9
  81. package/dist/client/locales/en-US.js.map +1 -1
  82. package/dist/client/locales/es-ES.d.ts +5 -0
  83. package/dist/client/locales/es-ES.d.ts.map +1 -0
  84. package/dist/client/locales/es-ES.js +882 -0
  85. package/dist/client/locales/es-ES.js.map +1 -0
  86. package/dist/client/locales/fr-FR.d.ts +5 -0
  87. package/dist/client/locales/fr-FR.d.ts.map +1 -0
  88. package/dist/client/locales/fr-FR.js +882 -0
  89. package/dist/client/locales/fr-FR.js.map +1 -0
  90. package/dist/client/locales/id-ID.d.ts +5 -0
  91. package/dist/client/locales/id-ID.d.ts.map +1 -0
  92. package/dist/client/locales/id-ID.js +876 -0
  93. package/dist/client/locales/id-ID.js.map +1 -0
  94. package/dist/client/locales/index.d.ts.map +1 -1
  95. package/dist/client/locales/index.js +10 -0
  96. package/dist/client/locales/index.js.map +1 -1
  97. package/dist/client/locales/ja-JP.d.ts +5 -0
  98. package/dist/client/locales/ja-JP.d.ts.map +1 -0
  99. package/dist/client/locales/ja-JP.js +876 -0
  100. package/dist/client/locales/ja-JP.js.map +1 -0
  101. package/dist/client/locales/ko-KR.d.ts +5 -0
  102. package/dist/client/locales/ko-KR.d.ts.map +1 -0
  103. package/dist/client/locales/ko-KR.js +879 -0
  104. package/dist/client/locales/ko-KR.js.map +1 -0
  105. package/dist/client/locales/pt-BR.d.ts +5 -0
  106. package/dist/client/locales/pt-BR.d.ts.map +1 -0
  107. package/dist/client/locales/pt-BR.js +882 -0
  108. package/dist/client/locales/pt-BR.js.map +1 -0
  109. package/dist/client/locales/ru-RU.d.ts +5 -0
  110. package/dist/client/locales/ru-RU.d.ts.map +1 -0
  111. package/dist/client/locales/ru-RU.js +891 -0
  112. package/dist/client/locales/ru-RU.js.map +1 -0
  113. package/dist/client/locales/vi-VN.d.ts +5 -0
  114. package/dist/client/locales/vi-VN.d.ts.map +1 -0
  115. package/dist/client/locales/vi-VN.js +876 -0
  116. package/dist/client/locales/vi-VN.js.map +1 -0
  117. package/dist/client/locales/zh-CN.d.ts.map +1 -1
  118. package/dist/client/locales/zh-CN.js +83 -9
  119. package/dist/client/locales/zh-CN.js.map +1 -1
  120. package/dist/client/locales/zh-TW.d.ts +5 -0
  121. package/dist/client/locales/zh-TW.d.ts.map +1 -0
  122. package/dist/client/locales/zh-TW.js +876 -0
  123. package/dist/client/locales/zh-TW.js.map +1 -0
  124. package/dist/client/pages/app-page.d.ts.map +1 -1
  125. package/dist/client/pages/app-page.js +14 -8
  126. package/dist/client/pages/app-page.js.map +1 -1
  127. package/dist/client/pages/apps-outlet.d.ts +8 -0
  128. package/dist/client/pages/apps-outlet.d.ts.map +1 -0
  129. package/dist/client/pages/apps-outlet.js +9 -0
  130. package/dist/client/pages/apps-outlet.js.map +1 -0
  131. package/dist/client/pages/environment-page.d.ts.map +1 -1
  132. package/dist/client/pages/environment-page.js +112 -24
  133. package/dist/client/pages/environment-page.js.map +1 -1
  134. package/dist/client/pages/environments-page.d.ts +8 -3
  135. package/dist/client/pages/environments-page.d.ts.map +1 -1
  136. package/dist/client/pages/environments-page.js +58 -10
  137. package/dist/client/pages/environments-page.js.map +1 -1
  138. package/dist/client/pages/new-app-page.d.ts +2 -4
  139. package/dist/client/pages/new-app-page.d.ts.map +1 -1
  140. package/dist/client/pages/new-app-page.js +29 -19
  141. package/dist/client/pages/new-app-page.js.map +1 -1
  142. package/dist/client/pages/new-app-redirect.d.ts +7 -0
  143. package/dist/client/pages/new-app-redirect.d.ts.map +1 -0
  144. package/dist/client/pages/new-app-redirect.js +8 -0
  145. package/dist/client/pages/new-app-redirect.js.map +1 -0
  146. package/dist/client/pages/request-page.js +1 -1
  147. package/dist/client/pages.d.ts +6 -2
  148. package/dist/client/pages.d.ts.map +1 -1
  149. package/dist/client/pages.js +8 -4
  150. package/dist/client/pages.js.map +1 -1
  151. package/dist/client/routes.d.ts.map +1 -1
  152. package/dist/client/routes.js +37 -10
  153. package/dist/client/routes.js.map +1 -1
  154. package/dist/database/migrations/.manifest.json +10 -2
  155. package/dist/database/migrations/202610020001_rel_create_tables.js +1 -1
  156. package/dist/database/migrations/202610020001_rel_create_tables.js.map +1 -1
  157. package/dist/database/migrations/202610260002_rel_bound_artifact_keys.d.ts +4 -0
  158. package/dist/database/migrations/202610260002_rel_bound_artifact_keys.d.ts.map +1 -0
  159. package/dist/database/migrations/202610260002_rel_bound_artifact_keys.js +51 -0
  160. package/dist/database/migrations/202610260002_rel_bound_artifact_keys.js.map +1 -0
  161. package/dist/database/migrations/202611020001_rel_environment_purpose.d.ts +8 -0
  162. package/dist/database/migrations/202611020001_rel_environment_purpose.d.ts.map +1 -0
  163. package/dist/database/migrations/202611020001_rel_environment_purpose.js +30 -0
  164. package/dist/database/migrations/202611020001_rel_environment_purpose.js.map +1 -0
  165. package/dist/server/access/caller.d.ts +6 -0
  166. package/dist/server/access/caller.d.ts.map +1 -1
  167. package/dist/server/access/caller.js +36 -0
  168. package/dist/server/access/caller.js.map +1 -1
  169. package/dist/server/artifact-config.d.ts +9 -0
  170. package/dist/server/artifact-config.d.ts.map +1 -0
  171. package/dist/server/artifact-config.js +49 -0
  172. package/dist/server/artifact-config.js.map +1 -0
  173. package/dist/server/composition.d.ts +6 -0
  174. package/dist/server/composition.d.ts.map +1 -1
  175. package/dist/server/composition.js +7 -1
  176. package/dist/server/composition.js.map +1 -1
  177. package/dist/server/config.d.ts +18 -2
  178. package/dist/server/config.d.ts.map +1 -1
  179. package/dist/server/drivers/host/driver.d.ts +13 -2
  180. package/dist/server/drivers/host/driver.d.ts.map +1 -1
  181. package/dist/server/drivers/host/driver.js +427 -81
  182. package/dist/server/drivers/host/driver.js.map +1 -1
  183. package/dist/server/drivers/types.d.ts +79 -1
  184. package/dist/server/drivers/types.d.ts.map +1 -1
  185. package/dist/server/drivers/types.js +6 -0
  186. package/dist/server/drivers/types.js.map +1 -1
  187. package/dist/server/index.d.ts +1 -1
  188. package/dist/server/index.d.ts.map +1 -1
  189. package/dist/server/index.js.map +1 -1
  190. package/dist/server/locales/de-DE.d.ts +5 -0
  191. package/dist/server/locales/de-DE.d.ts.map +1 -0
  192. package/dist/server/locales/de-DE.js +133 -0
  193. package/dist/server/locales/de-DE.js.map +1 -0
  194. package/dist/server/locales/es-ES.d.ts +5 -0
  195. package/dist/server/locales/es-ES.d.ts.map +1 -0
  196. package/dist/server/locales/es-ES.js +133 -0
  197. package/dist/server/locales/es-ES.js.map +1 -0
  198. package/dist/server/locales/fr-FR.d.ts +5 -0
  199. package/dist/server/locales/fr-FR.d.ts.map +1 -0
  200. package/dist/server/locales/fr-FR.js +133 -0
  201. package/dist/server/locales/fr-FR.js.map +1 -0
  202. package/dist/server/locales/id-ID.d.ts +5 -0
  203. package/dist/server/locales/id-ID.d.ts.map +1 -0
  204. package/dist/server/locales/id-ID.js +133 -0
  205. package/dist/server/locales/id-ID.js.map +1 -0
  206. package/dist/server/locales/index.d.ts.map +1 -1
  207. package/dist/server/locales/index.js +10 -0
  208. package/dist/server/locales/index.js.map +1 -1
  209. package/dist/server/locales/ja-JP.d.ts +5 -0
  210. package/dist/server/locales/ja-JP.d.ts.map +1 -0
  211. package/dist/server/locales/ja-JP.js +133 -0
  212. package/dist/server/locales/ja-JP.js.map +1 -0
  213. package/dist/server/locales/ko-KR.d.ts +5 -0
  214. package/dist/server/locales/ko-KR.d.ts.map +1 -0
  215. package/dist/server/locales/ko-KR.js +133 -0
  216. package/dist/server/locales/ko-KR.js.map +1 -0
  217. package/dist/server/locales/pt-BR.d.ts +5 -0
  218. package/dist/server/locales/pt-BR.d.ts.map +1 -0
  219. package/dist/server/locales/pt-BR.js +133 -0
  220. package/dist/server/locales/pt-BR.js.map +1 -0
  221. package/dist/server/locales/ru-RU.d.ts +5 -0
  222. package/dist/server/locales/ru-RU.d.ts.map +1 -0
  223. package/dist/server/locales/ru-RU.js +133 -0
  224. package/dist/server/locales/ru-RU.js.map +1 -0
  225. package/dist/server/locales/vi-VN.d.ts +5 -0
  226. package/dist/server/locales/vi-VN.d.ts.map +1 -0
  227. package/dist/server/locales/vi-VN.js +133 -0
  228. package/dist/server/locales/vi-VN.js.map +1 -0
  229. package/dist/server/locales/zh-TW.d.ts +5 -0
  230. package/dist/server/locales/zh-TW.d.ts.map +1 -0
  231. package/dist/server/locales/zh-TW.js +133 -0
  232. package/dist/server/locales/zh-TW.js.map +1 -0
  233. package/dist/server/providers/releases.d.ts.map +1 -1
  234. package/dist/server/providers/releases.js +12 -5
  235. package/dist/server/providers/releases.js.map +1 -1
  236. package/dist/server/routes/api.d.ts +1 -1
  237. package/dist/server/routes/api.d.ts.map +1 -1
  238. package/dist/server/routes/api.js +120 -20
  239. package/dist/server/routes/api.js.map +1 -1
  240. package/dist/server/routes/index.d.ts.map +1 -1
  241. package/dist/server/routes/index.js +10 -2
  242. package/dist/server/routes/index.js.map +1 -1
  243. package/dist/server/routes/schemas.d.ts +7 -2
  244. package/dist/server/routes/schemas.d.ts.map +1 -1
  245. package/dist/server/routes/schemas.js +320 -89
  246. package/dist/server/routes/schemas.js.map +1 -1
  247. package/dist/server/services/environments.d.ts +2 -2
  248. package/dist/server/services/environments.d.ts.map +1 -1
  249. package/dist/server/services/environments.js +21 -1
  250. package/dist/server/services/environments.js.map +1 -1
  251. package/dist/server/services/releases.d.ts +69 -8
  252. package/dist/server/services/releases.d.ts.map +1 -1
  253. package/dist/server/services/releases.js +574 -128
  254. package/dist/server/services/releases.js.map +1 -1
  255. package/dist/server/services/validation.d.ts +2 -0
  256. package/dist/server/services/validation.d.ts.map +1 -1
  257. package/dist/server/services/validation.js +8 -0
  258. package/dist/server/services/validation.js.map +1 -1
  259. package/dist/server/tokens.d.ts +15 -2
  260. package/dist/server/tokens.d.ts.map +1 -1
  261. package/dist/server/tokens.js.map +1 -1
  262. package/dist/shared/releases.d.ts +94 -3
  263. package/dist/shared/releases.d.ts.map +1 -1
  264. package/dist/shared/releases.js +37 -0
  265. package/dist/shared/releases.js.map +1 -1
  266. package/package.json +18 -18
  267. package/dist/client/pages/apps-page.d.ts +0 -4
  268. package/dist/client/pages/apps-page.d.ts.map +0 -1
  269. package/dist/client/pages/apps-page.js +0 -116
  270. package/dist/client/pages/apps-page.js.map +0 -1
@@ -75,8 +75,12 @@ export function useLoad(load, key) {
75
75
  }
76
76
  /** The signed-in user's permissions; nothing until they are known. */
77
77
  export function useMe() {
78
+ return useMeLoad().data ?? noOne;
79
+ }
80
+ /** The signed-in user's permissions with whether they are known yet, for a page that decides who may enter it. */
81
+ export function useMeLoad() {
78
82
  const api = useReleasesApi();
79
- const { data } = useLoad(() => api.get('me'), 'me');
80
- return data ?? { userId: null, kind: 'human', permissions: noPermissions() };
83
+ return useLoad(() => api.get('me'), 'me');
81
84
  }
85
+ const noOne = { userId: null, kind: 'human', permissions: noPermissions() };
82
86
  //# sourceMappingURL=use-releases.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-releases.js","sourceRoot":"","sources":["../../../client/hooks/use-releases.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-releases.js","sourceRoot":"","sources":["../../../client/hooks/use-releases.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import type { AppSummary } from '../../shared/releases.js';
2
2
  /**
3
- * The state an App's badge shows: deploying while a deployment is pending; a stopped on-demand App says that a visit
4
- * starts it.
3
+ * The state an App's badge shows: deploying while a deployment is pending; a stopped App whose last start was refused
4
+ * says what it waits for; a stopped on-demand App says that a visit starts it.
5
5
  */
6
6
  export declare function appStateOf(summary: AppSummary): string;
7
7
  //# sourceMappingURL=app-state.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"app-state.d.ts","sourceRoot":"","sources":["../../../client/lib/app-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAUtD"}
1
+ {"version":3,"file":"app-state.d.ts","sourceRoot":"","sources":["../../../client/lib/app-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAatD"}
@@ -1,15 +1,22 @@
1
1
  /**
2
- * The state an App's badge shows: deploying while a deployment is pending; a stopped on-demand App says that a visit
3
- * starts it.
2
+ * The state an App's badge shows: deploying while a deployment is pending; a stopped App whose last start was refused
3
+ * says what it waits for; a stopped on-demand App says that a visit starts it.
4
4
  */
5
5
  export function appStateOf(summary) {
6
6
  if (summary.hasPendingDeployment)
7
- return 'deploying';
7
+ return summary.pendingDeployment?.status ?? 'deploying';
8
8
  const state = summary.runtime.state;
9
+ if (state !== 'running' && state !== 'starting' && summary.runtime.waiting)
10
+ return WAITING_STATE[summary.runtime.waiting];
9
11
  if (state === 'stopped' &&
10
12
  summary.app.activation === 'onDemand' &&
11
13
  summary.app.currentDeploymentId)
12
14
  return 'stoppedOnDemand';
13
15
  return state;
14
16
  }
17
+ const WAITING_STATE = {
18
+ capacity: 'waitingCapacity',
19
+ memory: 'waitingMemory',
20
+ recycle: 'waitingRecycle',
21
+ };
15
22
  //# sourceMappingURL=app-state.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"app-state.js","sourceRoot":"","sources":["../../../client/lib/app-state.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,OAAmB;IAC5C,IAAI,OAAO,CAAC,oBAAoB;QAAE,OAAO,WAAW,CAAC;IACrD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;IACpC,IACE,KAAK,KAAK,SAAS;QACnB,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,UAAU;QACrC,OAAO,CAAC,GAAG,CAAC,mBAAmB;QAE/B,OAAO,iBAAiB,CAAC;IAC3B,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"app-state.js","sourceRoot":"","sources":["../../../client/lib/app-state.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,OAAmB;IAC5C,IAAI,OAAO,CAAC,oBAAoB;QAC9B,OAAO,OAAO,CAAC,iBAAiB,EAAE,MAAM,IAAI,WAAW,CAAC;IAC1D,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;IACpC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO;QACxE,OAAO,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,IACE,KAAK,KAAK,SAAS;QACnB,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,UAAU;QACrC,OAAO,CAAC,GAAG,CAAC,mBAAmB;QAE/B,OAAO,iBAAiB,CAAC;IAC3B,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,aAAa,GAAG;IACpB,QAAQ,EAAE,iBAAiB;IAC3B,MAAM,EAAE,eAAe;IACvB,OAAO,EAAE,gBAAgB;CACjB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../client/lib/errors.ts"],"names":[],"mappings":"AAQA,KAAK,SAAS,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;AA4B5E,2FAA2F;AAC3F,wBAAgB,WAAW,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CASjE;AAED,4FAA4F;AAC5F,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,CAS3D;AAED,uHAAuH;AACvH,wBAAgB,SAAS,CACvB,CAAC,EAAE,SAAS,EACZ,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,MAAM,GACf,MAAM,CAmBR"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../client/lib/errors.ts"],"names":[],"mappings":"AAQA,KAAK,SAAS,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;AA4B5E,2FAA2F;AAC3F,wBAAgB,WAAW,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAkBjE;AAED,4FAA4F;AAC5F,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,CAS3D;AAED,uHAAuH;AACvH,wBAAgB,SAAS,CACvB,CAAC,EAAE,SAAS,EACZ,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,MAAM,GACf,MAAM,CAmBR"}
@@ -32,6 +32,13 @@ const PREFIXES = [
32
32
  /** A runtime's or the plugin's message in the reader's language; unknown text as it is. */
33
33
  export function messageText(t, message) {
34
34
  const text = message.trim();
35
+ if (text === 'Deployment cancelled.')
36
+ return t('ui.deployments.statuses.cancelled');
37
+ if (text === 'Replaced by a newer deployment.')
38
+ return t('ui.deployments.replaced');
39
+ if (text ===
40
+ 'Deployment was interrupted by a restart. Deploy the release again.')
41
+ return t('ui.deployments.restartHint');
35
42
  for (const [prefix, key] of PREFIXES)
36
43
  if (text.startsWith(prefix))
37
44
  return t(`ui.errors.prefixed.${key}`, {
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../client/lib/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../client/lib/errors.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  export declare function formatDate(value: string | null | undefined, locale?: string): string;
2
2
  export declare function formatSize(bytes: number): string;
3
+ /** Memory as people read it: whole MiB below a GiB, GiB with at most one decimal above, no trailing `.0`. */
4
+ export declare function formatMemory(bytes: number): string;
3
5
  export declare function formatLabels(labels: Readonly<Record<string, string>>): string;
4
6
  /** The `X-Release-Labels` value of `labels`; null without any. */
5
7
  export declare function labelsHeader(labels: Readonly<Record<string, string>>): string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../client/lib/format.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAChC,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAGR;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIhD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAI7E;AAED,kEAAkE;AAClE,wBAAgB,YAAY,CAC1B,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GACvC,MAAM,GAAG,IAAI,CAMf;AAED,uGAAuG;AACvG,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GACvC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAGxB"}
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../client/lib/format.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAChC,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAGR;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIhD;AAED,6GAA6G;AAC7G,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIlD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAI7E;AAED,kEAAkE;AAClE,wBAAgB,YAAY,CAC1B,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GACvC,MAAM,GAAG,IAAI,CAMf;AAED,uGAAuG;AACvG,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GACvC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAGxB"}
@@ -10,6 +10,13 @@ export function formatSize(bytes) {
10
10
  return `${(bytes / 1024).toFixed(1)} KiB`;
11
11
  return `${(bytes / 1024 / 1024).toFixed(1)} MiB`;
12
12
  }
13
+ /** Memory as people read it: whole MiB below a GiB, GiB with at most one decimal above, no trailing `.0`. */
14
+ export function formatMemory(bytes) {
15
+ const mib = bytes / 1024 / 1024;
16
+ if (mib < 1024)
17
+ return `${Math.round(mib).toString()} MiB`;
18
+ return `${String(Math.round((mib / 1024) * 10) / 10)} GiB`;
19
+ }
13
20
  export function formatLabels(labels) {
14
21
  return Object.entries(labels)
15
22
  .map(([key, value]) => `${key}=${value}`)
@@ -1 +1 @@
1
- {"version":3,"file":"format.js","sourceRoot":"","sources":["../../../client/lib/format.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,UAAU,CACxB,KAAgC,EAChC,MAAe;IAEf,IAAI,CAAC,KAAK;QAAE,OAAO,GAAG,CAAC;IACvB,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,IAAI,KAAK,GAAG,IAAI;QAAE,OAAO,GAAG,KAAK,IAAI,CAAC;IACtC,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI;QAAE,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IACnE,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAwC;IACnE,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;SAC1B,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;SACxC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,YAAY,CAC1B,MAAwC;IAExC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAClD,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,CACnC,cAAc,EACd,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CACnE,CAAC;AACJ,CAAC;AAED,uGAAuG;AACvG,MAAM,UAAU,YAAY,CAC1B,MAAc,EACd,MAAwC;IAExC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC1B,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC;AAClD,CAAC"}
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../../client/lib/format.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,UAAU,CACxB,KAAgC,EAChC,MAAe;IAEf,IAAI,CAAC,KAAK;QAAE,OAAO,GAAG,CAAC;IACvB,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,IAAI,KAAK,GAAG,IAAI;QAAE,OAAO,GAAG,KAAK,IAAI,CAAC;IACtC,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI;QAAE,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IACnE,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AACnD,CAAC;AAED,6GAA6G;AAC7G,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,MAAM,GAAG,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC;IAChC,IAAI,GAAG,GAAG,IAAI;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC3D,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAwC;IACnE,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;SAC1B,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;SACxC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,YAAY,CAC1B,MAAwC;IAExC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAClD,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,CACnC,cAAc,EACd,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CACnE,CAAC;AACJ,CAAC;AAED,uGAAuG;AACvG,MAAM,UAAU,YAAY,CAC1B,MAAc,EACd,MAAwC;IAExC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC1B,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC;AAClD,CAAC"}
@@ -22,4 +22,9 @@ export declare function useReleasesPaths(): ReleasesPaths;
22
22
  export declare function useReleasesLinks(): ReleasesLinks;
23
23
  /** `component` with the pages at `paths`, for routes that mount them elsewhere than the defaults. */
24
24
  export declare function withReleasesPaths(component: ComponentType, paths: ReleasesPaths): ComponentType;
25
+ /**
26
+ * Where Create App's old address below the Apps page (`new`) leads: Create App on the one environment its search names
27
+ * (`?environmentId=`, as the former Apps list's filter kept it), or the environments, to pick one.
28
+ */
29
+ export declare function newAppTarget(search: string, paths: ReleasesPaths): string;
25
30
  //# sourceMappingURL=paths.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../../client/lib/paths.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAIL,KAAK,aAAa,EAClB,KAAK,OAAO,EAEb,MAAM,OAAO,CAAC;AAEf,MAAM,WAAW,aAAa;IAC5B,sEAAsE;IACtE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sGAAsG;IACtG,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,eAAO,MAAM,sBAAsB,EAAE,aAGpC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,OAAO,CAAC,aAAa,CACF,CAAC;AAEvD,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAAC;CAC5C;AAED,yDAAyD;AACzD,wBAAgB,gBAAgB,IAAI,aAAa,CAEhD;AAED,mDAAmD;AACnD,wBAAgB,gBAAgB,IAAI,aAAa,CAOhD;AAED,qGAAqG;AACrG,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,aAAa,EACxB,KAAK,EAAE,aAAa,GACnB,aAAa,CASf"}
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../../client/lib/paths.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAIL,KAAK,aAAa,EAClB,KAAK,OAAO,EAEb,MAAM,OAAO,CAAC;AAEf,MAAM,WAAW,aAAa;IAC5B,sEAAsE;IACtE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sGAAsG;IACtG,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,eAAO,MAAM,sBAAsB,EAAE,aAGpC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,OAAO,CAAC,aAAa,CACF,CAAC;AAEvD,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAAC;CAC5C;AAED,yDAAyD;AACzD,wBAAgB,gBAAgB,IAAI,aAAa,CAEhD;AAED,mDAAmD;AACnD,wBAAgB,gBAAgB,IAAI,aAAa,CAOhD;AAED,qGAAqG;AACrG,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,aAAa,EACxB,KAAK,EAAE,aAAa,GACnB,aAAa,CASf;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,MAAM,CAKzE"}
@@ -28,4 +28,14 @@ export function withReleasesPaths(component, paths) {
28
28
  }
29
29
  return WithReleasesPaths;
30
30
  }
31
+ /**
32
+ * Where Create App's old address below the Apps page (`new`) leads: Create App on the one environment its search names
33
+ * (`?environmentId=`, as the former Apps list's filter kept it), or the environments, to pick one.
34
+ */
35
+ export function newAppTarget(search, paths) {
36
+ const named = new URLSearchParams(search).getAll('environmentId');
37
+ return named.length === 1
38
+ ? `${paths.environments}/${encodeURIComponent(named[0])}/apps/new`
39
+ : paths.environments;
40
+ }
31
41
  //# sourceMappingURL=paths.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../client/lib/paths.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EACL,aAAa,EACb,aAAa,EACb,UAAU,GAIX,MAAM,OAAO,CAAC;AASf,MAAM,CAAC,MAAM,sBAAsB,GAAkB;IACnD,IAAI,EAAE,WAAW;IACjB,YAAY,EAAE,uBAAuB;CACtC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAC/B,aAAa,CAAgB,sBAAsB,CAAC,CAAC;AAOvD,yDAAyD;AACzD,MAAM,UAAU,gBAAgB;IAC9B,OAAO,UAAU,CAAC,oBAAoB,CAAC,CAAC;AAC1C,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,gBAAgB;IAC9B,MAAM,KAAK,GAAG,UAAU,CAAC,oBAAoB,CAAC,CAAC;IAC/C,OAAO;QACL,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE;QAC5D,WAAW,EAAE,CAAC,aAAa,EAAE,EAAE,CAC7B,GAAG,KAAK,CAAC,YAAY,IAAI,kBAAkB,CAAC,aAAa,CAAC,EAAE;KAC/D,CAAC;AACJ,CAAC;AAED,qGAAqG;AACrG,MAAM,UAAU,iBAAiB,CAC/B,SAAwB,EACxB,KAAoB;IAEpB,SAAS,iBAAiB;QACxB,OAAO,aAAa,CAClB,oBAAoB,CAAC,QAAQ,EAC7B,EAAE,KAAK,EAAE,KAAK,EAAE,EAChB,aAAa,CAAC,SAAS,CAAC,CACzB,CAAC;IACJ,CAAC;IACD,OAAO,iBAAiB,CAAC;AAC3B,CAAC"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../client/lib/paths.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EACL,aAAa,EACb,aAAa,EACb,UAAU,GAIX,MAAM,OAAO,CAAC;AASf,MAAM,CAAC,MAAM,sBAAsB,GAAkB;IACnD,IAAI,EAAE,WAAW;IACjB,YAAY,EAAE,uBAAuB;CACtC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAC/B,aAAa,CAAgB,sBAAsB,CAAC,CAAC;AAOvD,yDAAyD;AACzD,MAAM,UAAU,gBAAgB;IAC9B,OAAO,UAAU,CAAC,oBAAoB,CAAC,CAAC;AAC1C,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,gBAAgB;IAC9B,MAAM,KAAK,GAAG,UAAU,CAAC,oBAAoB,CAAC,CAAC;IAC/C,OAAO;QACL,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE;QAC5D,WAAW,EAAE,CAAC,aAAa,EAAE,EAAE,CAC7B,GAAG,KAAK,CAAC,YAAY,IAAI,kBAAkB,CAAC,aAAa,CAAC,EAAE;KAC/D,CAAC;AACJ,CAAC;AAED,qGAAqG;AACrG,MAAM,UAAU,iBAAiB,CAC/B,SAAwB,EACxB,KAAoB;IAEpB,SAAS,iBAAiB;QACxB,OAAO,aAAa,CAClB,oBAAoB,CAAC,QAAQ,EAC7B,EAAE,KAAK,EAAE,KAAK,EAAE,EAChB,aAAa,CAAC,SAAS,CAAC,CACzB,CAAC;IACJ,CAAC;IACD,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,KAAoB;IAC/D,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAClE,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;QACvB,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW;QAClE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;AACzB,CAAC"}
@@ -3,4 +3,9 @@ import type { AppSummary } from '../../shared/releases.js';
3
3
  import type { Me } from '../hooks/use-releases.js';
4
4
  /** Whether the caller may act on this App: what the server answered for it, else whether their scope may allow it. */
5
5
  export declare function canOnApp(me: Me, action: AppAction, app: AppSummary | undefined): boolean;
6
+ /**
7
+ * Who may open the environments and an environment's page: those who may read environments (the setting), and App
8
+ * readers, who list and create an environment's Apps there. Each part of the pages keeps its own check.
9
+ */
10
+ export declare function canEnterEnvironments(me: Me): boolean;
6
11
  //# sourceMappingURL=permissions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../../client/lib/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAEnD,sHAAsH;AACtH,wBAAgB,QAAQ,CACtB,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,SAAS,EACjB,GAAG,EAAE,UAAU,GAAG,SAAS,GAC1B,OAAO,CAQT"}
1
+ {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../../client/lib/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAEnD,sHAAsH;AACtH,wBAAgB,QAAQ,CACtB,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,SAAS,EACjB,GAAG,EAAE,UAAU,GAAG,SAAS,GAC1B,OAAO,CAQT;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAKpD"}
@@ -11,4 +11,12 @@ export function canOnApp(me, action, app) {
11
11
  // The application may relate more Apps than the ones created; the server decides those.
12
12
  return scope.users.length > 0;
13
13
  }
14
+ /**
15
+ * Who may open the environments and an environment's page: those who may read environments (the setting), and App
16
+ * readers, who list and create an environment's Apps there. Each part of the pages keeps its own check.
17
+ */
18
+ export function canEnterEnvironments(me) {
19
+ return (me.permissions.settings['rel.environments/read'] ||
20
+ me.permissions.pages['rel-apps']);
21
+ }
14
22
  //# sourceMappingURL=permissions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../../client/lib/permissions.ts"],"names":[],"mappings":"AAIA,sHAAsH;AACtH,MAAM,UAAU,QAAQ,CACtB,EAAM,EACN,MAAiB,EACjB,GAA2B;IAE3B,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,+EAA+E;IAC/E,IAAI,GAAG,CAAC,OAAO;QAAE,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,MAAM,EAAE,CAAC,CAAC;IAC1D,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,KAAK,KAAK,KAAK,CAAC;IAChE,wFAAwF;IACxF,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../../client/lib/permissions.ts"],"names":[],"mappings":"AAIA,sHAAsH;AACtH,MAAM,UAAU,QAAQ,CACtB,EAAM,EACN,MAAiB,EACjB,GAA2B;IAE3B,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,+EAA+E;IAC/E,IAAI,GAAG,CAAC,OAAO;QAAE,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,MAAM,EAAE,CAAC,CAAC;IAC1D,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,KAAK,KAAK,KAAK,CAAC;IAChE,wFAAwF;IACxF,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,EAAM;IACzC,OAAO,CACL,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QAChD,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CACjC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { AppSummary, RuntimeStatus } from '../../shared/releases.js';
2
+ /**
3
+ * An App's runtime as its state badge words it (a `ui.state.*` key), a deployment in progress aside: a refused start
4
+ * says what it waits for, a hibernating App says so.
5
+ */
6
+ export declare function runtimeStateKey(runtime: RuntimeStatus): string;
7
+ /**
8
+ * Why the App is in its state, as translation keys: what holds it on its runtime, what its start waits for, or that it
9
+ * runs idle and is stopped first when room is needed.
10
+ */
11
+ export declare function runtimeReasons(runtime: RuntimeStatus): readonly string[];
12
+ /** Where the environments page shows a shared host, so an App's page links to it. */
13
+ export declare function sharedHostAnchor(hostId: string): string;
14
+ /**
15
+ * Why the App's own page mentions its shared host, as a translation key: it waits for a slot, memory or a restart, the
16
+ * host restarted and could not put this App back, or the host restarts or is to restart. Null when the host does not
17
+ * affect it, and for an App on no shared host.
18
+ *
19
+ * A failed start alone says nothing of the host: a wrong database password or a broken archive fails it too, and the
20
+ * App's own error shows that. Only structured fields count — `runtime.waiting`, `runtime.unrestored` (which the driver
21
+ * sets for this App alone; the host's `failedEnvironments` names whole environments, whose other Apps may be back on
22
+ * the host and fail on their own) and `recycling`.
23
+ */
24
+ export declare function hostNoticeOf(summary: AppSummary): string | null;
25
+ //# sourceMappingURL=runtime-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-state.d.ts","sourceRoot":"","sources":["../../../client/lib/runtime-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE1E;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAU9D;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,SAAS,MAAM,EAAE,CAaxE;AAED,qFAAqF;AACrF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAU/D"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * An App's runtime as its state badge words it (a `ui.state.*` key), a deployment in progress aside: a refused start
3
+ * says what it waits for, a hibernating App says so.
4
+ */
5
+ export function runtimeStateKey(runtime) {
6
+ const { state, waiting } = runtime;
7
+ if (waiting &&
8
+ state !== 'running' &&
9
+ state !== 'starting' &&
10
+ state !== 'failed')
11
+ return `waiting${waiting[0].toUpperCase()}${waiting.slice(1)}`;
12
+ return state;
13
+ }
14
+ /**
15
+ * Why the App is in its state, as translation keys: what holds it on its runtime, what its start waits for, or that it
16
+ * runs idle and is stopped first when room is needed.
17
+ */
18
+ export function runtimeReasons(runtime) {
19
+ const holds = runtime.holds ?? [];
20
+ if (holds.length)
21
+ return holds
22
+ .filter(
23
+ // `busy` only adds something when nothing more specific explains it.
24
+ (hold) => hold !== 'busy' || holds.every((other) => other === 'busy'))
25
+ .map((hold) => `ui.runtime.holds.${hold}`);
26
+ if (runtime.waiting && runtime.state !== 'running')
27
+ return [`ui.runtime.waiting.${runtime.waiting}`];
28
+ if (runtime.state === 'running')
29
+ return ['ui.runtime.idle'];
30
+ return [];
31
+ }
32
+ /** Where the environments page shows a shared host, so an App's page links to it. */
33
+ export function sharedHostAnchor(hostId) {
34
+ return `shared-host-${hostId}`;
35
+ }
36
+ /**
37
+ * Why the App's own page mentions its shared host, as a translation key: it waits for a slot, memory or a restart, the
38
+ * host restarted and could not put this App back, or the host restarts or is to restart. Null when the host does not
39
+ * affect it, and for an App on no shared host.
40
+ *
41
+ * A failed start alone says nothing of the host: a wrong database password or a broken archive fails it too, and the
42
+ * App's own error shows that. Only structured fields count — `runtime.waiting`, `runtime.unrestored` (which the driver
43
+ * sets for this App alone; the host's `failedEnvironments` names whole environments, whose other Apps may be back on
44
+ * the host and fail on their own) and `recycling`.
45
+ */
46
+ export function hostNoticeOf(summary) {
47
+ if (!summary.host)
48
+ return null;
49
+ const { state, waiting } = summary.runtime;
50
+ if (waiting && state !== 'running' && state !== 'starting')
51
+ return `ui.runtime.waiting.${waiting}`;
52
+ if (state === 'failed' && summary.runtime.unrestored)
53
+ return 'ui.sharedHost.failed';
54
+ if (summary.host.recycling)
55
+ return `ui.sharedHost.recycling.${summary.host.recycling}`;
56
+ return null;
57
+ }
58
+ //# sourceMappingURL=runtime-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-state.js","sourceRoot":"","sources":["../../../client/lib/runtime-state.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,OAAsB;IACpD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACnC,IACE,OAAO;QACP,KAAK,KAAK,SAAS;QACnB,KAAK,KAAK,UAAU;QACpB,KAAK,KAAK,QAAQ;QAElB,OAAO,UAAU,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,OAAsB;IACnD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;IAClC,IAAI,KAAK,CAAC,MAAM;QACd,OAAO,KAAK;aACT,MAAM;QACL,qEAAqE;QACrE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,MAAM,CAAC,CACtE;aACA,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC;IAC/C,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;QAChD,OAAO,CAAC,sBAAsB,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACnD,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC5D,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,OAAO,eAAe,MAAM,EAAE,CAAC;AACjC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAAC,OAAmB;IAC9C,IAAI,CAAC,OAAO,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAC3C,IAAI,OAAO,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,UAAU;QACxD,OAAO,sBAAsB,OAAO,EAAE,CAAC;IACzC,IAAI,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,UAAU;QAClD,OAAO,sBAAsB,CAAC;IAChC,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS;QACxB,OAAO,2BAA2B,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IAC7D,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { LocaleResource } from '@nocobase/i18n';
2
+ import type enUS from './en-US.js';
3
+ declare const deDE: LocaleResource<typeof enUS>;
4
+ export default deDE;
5
+ //# sourceMappingURL=de-DE.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"de-DE.d.ts","sourceRoot":"","sources":["../../../client/locales/de-DE.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAEnC,QAAA,MAAM,IAAI,EAAE,cAAc,CAAC,OAAO,IAAI,CAigCrC,CAAC;AAEF,eAAe,IAAI,CAAC"}