@toa.io/extensions.configuration 1.0.0-alpha.274 → 1.0.0-alpha.276

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 (501) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/components/configuration.values/operations/create.d.ts +16 -0
  3. package/components/configuration.values/operations/create.js +58 -0
  4. package/components/configuration.values/operations/create.js.map +1 -0
  5. package/components/configuration.values/operations/fetch.d.ts +11 -0
  6. package/components/configuration.values/operations/fetch.js +17 -0
  7. package/components/configuration.values/operations/fetch.js.map +1 -0
  8. package/components/configuration.values/operations/get.d.ts +17 -0
  9. package/components/configuration.values/operations/get.js +23 -0
  10. package/components/configuration.values/operations/get.js.map +1 -0
  11. package/components/configuration.values/operations/lib/map.d.ts +11 -0
  12. package/components/configuration.values/operations/lib/map.js +26 -0
  13. package/components/configuration.values/operations/lib/map.js.map +1 -0
  14. package/components/configuration.values/operations/lib/map.test.d.ts +1 -0
  15. package/components/configuration.values/operations/lib/map.test.js +26 -0
  16. package/components/configuration.values/operations/lib/map.test.js.map +1 -0
  17. package/components/configuration.values/operations/lib/resolve.d.ts +27 -0
  18. package/components/configuration.values/operations/lib/resolve.js +28 -0
  19. package/components/configuration.values/operations/lib/resolve.js.map +1 -0
  20. package/components/configuration.values/operations/list.d.ts +10 -0
  21. package/components/configuration.values/operations/list.js +15 -0
  22. package/components/configuration.values/operations/list.js.map +1 -0
  23. package/components/configuration.values/operations/tsconfig.tsbuildinfo +1 -0
  24. package/features/site/favicon.ico +0 -0
  25. package/features/ui.feature +8 -0
  26. package/package.json +2 -2
  27. package/source/Aspect.ts +7 -2
  28. package/source/UI.ts +16 -1
  29. package/source/deployment.ts +1 -1
  30. package/transpiled/Aspect.js +3 -2
  31. package/transpiled/Aspect.js.map +1 -1
  32. package/transpiled/UI.js +14 -1
  33. package/transpiled/UI.js.map +1 -1
  34. package/transpiled/deployment.d.ts +1 -1
  35. package/transpiled/tsconfig.tsbuildinfo +1 -1
  36. package/ui/dist/_app/env.js +1 -0
  37. package/ui/dist/_app/immutable/assets/0.CNS8Cqhc.css +2 -0
  38. package/ui/dist/_app/immutable/assets/inter-cyrillic-ext-wght-normal.BOeWTOD4.woff2 +0 -0
  39. package/ui/dist/_app/immutable/assets/inter-cyrillic-wght-normal.DqGufNeO.woff2 +0 -0
  40. package/ui/dist/_app/immutable/assets/inter-greek-ext-wght-normal.DlzME5K_.woff2 +0 -0
  41. package/ui/dist/_app/immutable/assets/inter-greek-wght-normal.CkhJZR-_.woff2 +0 -0
  42. package/ui/dist/_app/immutable/assets/inter-latin-ext-wght-normal.DO1Apj_S.woff2 +0 -0
  43. package/ui/dist/_app/immutable/assets/inter-latin-wght-normal.Dx4kXJAl.woff2 +0 -0
  44. package/ui/dist/_app/immutable/assets/inter-vietnamese-wght-normal.CBcvBZtf.woff2 +0 -0
  45. package/ui/dist/_app/immutable/assets/ui.BghF56l_.css +1 -0
  46. package/ui/dist/_app/immutable/chunks/Bjy-W4x2.js +81 -0
  47. package/ui/dist/_app/immutable/chunks/CDKtbN4n.js +6 -0
  48. package/ui/dist/_app/immutable/chunks/CcD_ISxM.js +3 -0
  49. package/ui/dist/_app/immutable/chunks/Chb3af1a.js +1 -0
  50. package/ui/dist/_app/immutable/chunks/Cov6-56A.js +50 -0
  51. package/ui/dist/_app/immutable/chunks/E7oj41Za.js +1 -0
  52. package/ui/dist/_app/immutable/chunks/MOpxGoVO.js +8 -0
  53. package/ui/dist/_app/immutable/chunks/xihTtKlq.js +1 -0
  54. package/ui/dist/_app/immutable/entry/app.B9v2AwU_.js +2 -0
  55. package/ui/dist/_app/immutable/entry/start.B97KALv1.js +1 -0
  56. package/ui/dist/_app/immutable/nodes/0.DKSa6mGa.js +1 -0
  57. package/ui/dist/_app/immutable/nodes/1.Cnu_jAWf.js +1 -0
  58. package/ui/dist/_app/immutable/nodes/2.Dg1zeC2b.js +1 -0
  59. package/ui/dist/_app/immutable/nodes/3.QCbZIibO.js +1 -0
  60. package/ui/dist/_app/immutable/nodes/4.1bG6DC_9.js +1 -0
  61. package/ui/dist/_app/version.json +1 -0
  62. package/ui/dist/apple-touch-icon.png +0 -0
  63. package/ui/dist/favicon-96x96.png +0 -0
  64. package/ui/dist/favicon.ico +0 -0
  65. package/ui/dist/index.html +52 -0
  66. package/ui/.agents/skills/antcn/SKILL.md +0 -91
  67. package/ui/.agents/skills/antcn/references/analytics.md +0 -78
  68. package/ui/.agents/skills/antcn/references/bridge.md +0 -41
  69. package/ui/.agents/skills/antcn/references/clipboard.md +0 -23
  70. package/ui/.agents/skills/antcn/references/dismissable.md +0 -75
  71. package/ui/.agents/skills/antcn/references/dropdown.md +0 -153
  72. package/ui/.agents/skills/antcn/references/fragments.md +0 -29
  73. package/ui/.agents/skills/antcn/references/fullscreen.md +0 -157
  74. package/ui/.agents/skills/antcn/references/geo.md +0 -27
  75. package/ui/.agents/skills/antcn/references/globals.md +0 -31
  76. package/ui/.agents/skills/antcn/references/grammatical-form.md +0 -69
  77. package/ui/.agents/skills/antcn/references/hints.md +0 -44
  78. package/ui/.agents/skills/antcn/references/hold.md +0 -34
  79. package/ui/.agents/skills/antcn/references/iam.md +0 -117
  80. package/ui/.agents/skills/antcn/references/input-form.md +0 -34
  81. package/ui/.agents/skills/antcn/references/locale.md +0 -66
  82. package/ui/.agents/skills/antcn/references/net.md +0 -33
  83. package/ui/.agents/skills/antcn/references/panel.md +0 -44
  84. package/ui/.agents/skills/antcn/references/passkeys.md +0 -27
  85. package/ui/.agents/skills/antcn/references/payments.md +0 -99
  86. package/ui/.agents/skills/antcn/references/realtime.md +0 -69
  87. package/ui/.agents/skills/antcn/references/scrollable.md +0 -39
  88. package/ui/.agents/skills/antcn/references/selector.md +0 -71
  89. package/ui/.agents/skills/antcn/references/shake.md +0 -36
  90. package/ui/.agents/skills/antcn/references/share.md +0 -28
  91. package/ui/.agents/skills/antcn/references/shell.md +0 -139
  92. package/ui/.agents/skills/antcn/references/stack.md +0 -53
  93. package/ui/.agents/skills/antcn/references/system.md +0 -149
  94. package/ui/.agents/skills/antcn/references/taptap.md +0 -28
  95. package/ui/.agents/skills/antcn/references/tools.md +0 -68
  96. package/ui/.agents/skills/antcn/references/transmission.md +0 -96
  97. package/ui/.agents/skills/shadcn-svelte/SKILL.md +0 -227
  98. package/ui/.agents/skills/shadcn-svelte/agents/openai.yml +0 -5
  99. package/ui/.agents/skills/shadcn-svelte/assets/shadcn-svelte-small.png +0 -0
  100. package/ui/.agents/skills/shadcn-svelte/assets/shadcn-svelte.png +0 -0
  101. package/ui/.agents/skills/shadcn-svelte/cli.md +0 -166
  102. package/ui/.agents/skills/shadcn-svelte/customization.md +0 -213
  103. package/ui/.agents/skills/shadcn-svelte/evals/evals.json +0 -47
  104. package/ui/.agents/skills/shadcn-svelte/rules/composition.md +0 -244
  105. package/ui/.agents/skills/shadcn-svelte/rules/forms.md +0 -234
  106. package/ui/.agents/skills/shadcn-svelte/rules/icons.md +0 -107
  107. package/ui/.agents/skills/shadcn-svelte/rules/styling.md +0 -195
  108. package/ui/.agents/skills/svas/SKILL.md +0 -169
  109. package/ui/.agents/skills/svas/references/patterns.md +0 -95
  110. package/ui/.agents/skills/svintl/SKILL.md +0 -176
  111. package/ui/.claude/settings.json +0 -15
  112. package/ui/.codex/hooks.json +0 -15
  113. package/ui/.cursor/hooks.json +0 -11
  114. package/ui/.env.example +0 -1
  115. package/ui/.prettierrc +0 -9
  116. package/ui/.vscode/extensions.json +0 -7
  117. package/ui/.vscode/settings.json +0 -27
  118. package/ui/AGENTS.md +0 -51
  119. package/ui/architecture.md +0 -390
  120. package/ui/components.json +0 -20
  121. package/ui/eslint.config.js +0 -152
  122. package/ui/features/base.ts +0 -2
  123. package/ui/features/boot.feature +0 -5
  124. package/ui/features/steps/authentication.ts +0 -34
  125. package/ui/features/steps/navigaton.ts +0 -37
  126. package/ui/features/steps/typing.ts +0 -24
  127. package/ui/package-lock.json +0 -8173
  128. package/ui/package.json +0 -76
  129. package/ui/playwright.config.ts +0 -13
  130. package/ui/skills-lock.json +0 -30
  131. package/ui/src/@/configuration/index.ts +0 -1
  132. package/ui/src/@/configuration/svc/create.ts +0 -29
  133. package/ui/src/@/configuration/svc/index.ts +0 -3
  134. package/ui/src/@/configuration/svc/net/Configuration.ts +0 -18
  135. package/ui/src/@/configuration/svc/net/index.ts +0 -2
  136. package/ui/src/@/configuration/svc/net/interface.ts +0 -35
  137. package/ui/src/@/configuration/svc/store.ts +0 -14
  138. package/ui/src/@/configuration/ui/Configurations.svelte +0 -85
  139. package/ui/src/@/configuration/ui/Configurations.ts +0 -5
  140. package/ui/src/@/configuration/ui/Create.svelte +0 -64
  141. package/ui/src/@/configuration/ui/Create.ts +0 -7
  142. package/ui/src/@/configuration/ui/Form.svelte +0 -75
  143. package/ui/src/@/configuration/ui/Form.ts +0 -79
  144. package/ui/src/@/configuration/ui/Row.svelte +0 -44
  145. package/ui/src/@/configuration/ui/Row.ts +0 -9
  146. package/ui/src/@/configuration/ui/Value.svelte +0 -33
  147. package/ui/src/@/configuration/ui/Value.ts +0 -6
  148. package/ui/src/@/configuration/ui/index.ts +0 -9
  149. package/ui/src/@/configuration/ui/intl/built.js +0 -38
  150. package/ui/src/@/configuration/ui/intl/context.yaml +0 -51
  151. package/ui/src/@/configuration/ui/intl/en-US.yaml +0 -21
  152. package/ui/src/@/configuration/ui/intl/index.ts +0 -9
  153. package/ui/src/@/configuration/ui/intl/types.ts +0 -31
  154. package/ui/src/@/configuration/ui/read.test.ts +0 -75
  155. package/ui/src/@/configuration/ui/read.ts +0 -102
  156. package/ui/src/@/configuration/ui/ui.test.ts +0 -69
  157. package/ui/src/@/configuration/ui/ui.ts +0 -115
  158. package/ui/src/@/iam/index.ts +0 -1
  159. package/ui/src/@/iam/rc.ts +0 -22
  160. package/ui/src/@/iam/svc/authenticated.ts +0 -17
  161. package/ui/src/@/iam/svc/basic.ts +0 -23
  162. package/ui/src/@/iam/svc/index.ts +0 -10
  163. package/ui/src/@/iam/svc/logout.ts +0 -5
  164. package/ui/src/@/iam/svc/named.ts +0 -16
  165. package/ui/src/@/iam/svc/net/Echo.ts +0 -9
  166. package/ui/src/@/iam/svc/net/basic/index.ts +0 -1
  167. package/ui/src/@/iam/svc/net/basic/interface.ts +0 -15
  168. package/ui/src/@/iam/svc/net/federation/index.ts +0 -1
  169. package/ui/src/@/iam/svc/net/federation/interface.ts +0 -12
  170. package/ui/src/@/iam/svc/net/index.ts +0 -6
  171. package/ui/src/@/iam/svc/net/interface.ts +0 -17
  172. package/ui/src/@/iam/svc/net/otp/index.ts +0 -1
  173. package/ui/src/@/iam/svc/net/otp/interface.ts +0 -14
  174. package/ui/src/@/iam/svc/net/passkeys/index.ts +0 -1
  175. package/ui/src/@/iam/svc/net/passkeys/interface.ts +0 -12
  176. package/ui/src/@/iam/svc/oidc/apple.ts +0 -47
  177. package/ui/src/@/iam/svc/oidc/authenticate.ts +0 -62
  178. package/ui/src/@/iam/svc/oidc/google.ts +0 -45
  179. package/ui/src/@/iam/svc/oidc/hello.ts +0 -82
  180. package/ui/src/@/iam/svc/oidc/index.ts +0 -3
  181. package/ui/src/@/iam/svc/oidc/nonce.ts +0 -5
  182. package/ui/src/@/iam/svc/oidc/providers.ts +0 -28
  183. package/ui/src/@/iam/svc/oidc/standard.ts +0 -28
  184. package/ui/src/@/iam/svc/otp.ts +0 -18
  185. package/ui/src/@/iam/svc/passkeys/create.ts +0 -20
  186. package/ui/src/@/iam/svc/passkeys/index.ts +0 -2
  187. package/ui/src/@/iam/svc/passkeys/login.ts +0 -21
  188. package/ui/src/@/iam/svc/store.ts +0 -36
  189. package/ui/src/@/iam/svc/sync.ts +0 -18
  190. package/ui/src/@/iam/svc/transfer.ts +0 -11
  191. package/ui/src/@/iam/svc/update.ts +0 -8
  192. package/ui/src/@/iam/ui/AccountLike.ts +0 -4
  193. package/ui/src/@/iam/ui/Authenticated.svelte +0 -37
  194. package/ui/src/@/iam/ui/Authenticated.ts +0 -10
  195. package/ui/src/@/iam/ui/Authentication.svelte +0 -50
  196. package/ui/src/@/iam/ui/Authentication.ts +0 -9
  197. package/ui/src/@/iam/ui/Authorized.svelte +0 -32
  198. package/ui/src/@/iam/ui/Authorized.ts +0 -65
  199. package/ui/src/@/iam/ui/Card.svelte +0 -14
  200. package/ui/src/@/iam/ui/Card.ts +0 -7
  201. package/ui/src/@/iam/ui/Refresh.svelte +0 -39
  202. package/ui/src/@/iam/ui/credentials/Credentials.svelte +0 -26
  203. package/ui/src/@/iam/ui/credentials/Credentials.ts +0 -5
  204. package/ui/src/@/iam/ui/credentials/Provider.svelte +0 -24
  205. package/ui/src/@/iam/ui/credentials/Provider.ts +0 -5
  206. package/ui/src/@/iam/ui/credentials/index.ts +0 -1
  207. package/ui/src/@/iam/ui/credentials/passkeys/Key.svelte +0 -42
  208. package/ui/src/@/iam/ui/credentials/passkeys/Key.ts +0 -29
  209. package/ui/src/@/iam/ui/credentials/passkeys/Manager.svelte +0 -83
  210. package/ui/src/@/iam/ui/credentials/passkeys/Manager.ts +0 -5
  211. package/ui/src/@/iam/ui/credentials/passkeys/Passkeys.svelte +0 -39
  212. package/ui/src/@/iam/ui/credentials/passkeys/Summary.svelte +0 -27
  213. package/ui/src/@/iam/ui/credentials/passkeys/Summary.ts +0 -5
  214. package/ui/src/@/iam/ui/credentials/passkeys/index.ts +0 -1
  215. package/ui/src/@/iam/ui/credentials/providers.ts +0 -15
  216. package/ui/src/@/iam/ui/credentials/transfer/Qr.svelte +0 -24
  217. package/ui/src/@/iam/ui/credentials/transfer/Qr.ts +0 -3
  218. package/ui/src/@/iam/ui/credentials/transfer/Transfer.svelte +0 -48
  219. package/ui/src/@/iam/ui/credentials/transfer/Transfer.ts +0 -5
  220. package/ui/src/@/iam/ui/credentials/transfer/index.ts +0 -1
  221. package/ui/src/@/iam/ui/index.ts +0 -3
  222. package/ui/src/@/iam/ui/intl/built.js +0 -79
  223. package/ui/src/@/iam/ui/intl/context.yaml +0 -91
  224. package/ui/src/@/iam/ui/intl/en-US.yaml +0 -64
  225. package/ui/src/@/iam/ui/intl/index.ts +0 -10
  226. package/ui/src/@/iam/ui/intl/types.ts +0 -70
  227. package/ui/src/@/iam/ui/oidc/Authentication.svelte +0 -16
  228. package/ui/src/@/iam/ui/oidc/Authentication.ts +0 -5
  229. package/ui/src/@/iam/ui/oidc/Button.svelte +0 -36
  230. package/ui/src/@/iam/ui/oidc/Button.ts +0 -11
  231. package/ui/src/@/iam/ui/oidc/Refresh.svelte +0 -16
  232. package/ui/src/@/iam/ui/oidc/icons/Apple.svelte +0 -19
  233. package/ui/src/@/iam/ui/oidc/icons/Google.svelte +0 -31
  234. package/ui/src/@/iam/ui/oidc/icons/index.ts +0 -11
  235. package/ui/src/@/iam/ui/oidc/index.ts +0 -2
  236. package/ui/src/@/iam/ui/passkey/Authentication.svelte +0 -64
  237. package/ui/src/@/iam/ui/passkey/Authentication.ts +0 -8
  238. package/ui/src/@/iam/ui/passkey/Create.svelte +0 -53
  239. package/ui/src/@/iam/ui/passkey/Create.ts +0 -7
  240. package/ui/src/@/iam/ui/passkey/Login.svelte +0 -29
  241. package/ui/src/@/iam/ui/passkey/Refresh.svelte +0 -29
  242. package/ui/src/@/iam/ui/passkey/index.ts +0 -2
  243. package/ui/src/@/iam/ui/password/Authentication.svelte +0 -19
  244. package/ui/src/@/iam/ui/password/Authentication.ts +0 -8
  245. package/ui/src/@/iam/ui/password/Form.svelte +0 -151
  246. package/ui/src/@/iam/ui/password/Form.ts +0 -6
  247. package/ui/src/@/iam/ui/password/Password.svelte +0 -39
  248. package/ui/src/@/iam/ui/password/Password.ts +0 -6
  249. package/ui/src/@/iam/ui/password/Refresh.svelte +0 -5
  250. package/ui/src/@/iam/ui/password/index.ts +0 -2
  251. package/ui/src/@/net/index.ts +0 -1
  252. package/ui/src/@/net/svc/index.ts +0 -3
  253. package/ui/src/@/net/svc/origin.ts +0 -8
  254. package/ui/src/@/net/svc/query.test.ts +0 -45
  255. package/ui/src/@/net/svc/query.ts +0 -25
  256. package/ui/src/@/passkeys/index.ts +0 -1
  257. package/ui/src/@/passkeys/svc/add.ts +0 -15
  258. package/ui/src/@/passkeys/svc/create.ts +0 -58
  259. package/ui/src/@/passkeys/svc/credentials/convert.ts +0 -32
  260. package/ui/src/@/passkeys/svc/credentials/create.ts +0 -34
  261. package/ui/src/@/passkeys/svc/credentials/get.ts +0 -14
  262. package/ui/src/@/passkeys/svc/credentials/index.ts +0 -3
  263. package/ui/src/@/passkeys/svc/credentials/key.ts +0 -10
  264. package/ui/src/@/passkeys/svc/get.ts +0 -10
  265. package/ui/src/@/passkeys/svc/index.ts +0 -6
  266. package/ui/src/@/passkeys/svc/net/CreationResponse.ts +0 -15
  267. package/ui/src/@/passkeys/svc/net/Passkey.ts +0 -8
  268. package/ui/src/@/passkeys/svc/net/RequestResponse.ts +0 -12
  269. package/ui/src/@/passkeys/svc/net/challenges/Options.ts +0 -21
  270. package/ui/src/@/passkeys/svc/net/challenges/index.ts +0 -2
  271. package/ui/src/@/passkeys/svc/net/challenges/interface.ts +0 -16
  272. package/ui/src/@/passkeys/svc/net/index.ts +0 -4
  273. package/ui/src/@/passkeys/svc/net/interface.ts +0 -29
  274. package/ui/src/@/passkeys/svc/remove.ts +0 -13
  275. package/ui/src/@/passkeys/svc/request.ts +0 -50
  276. package/ui/src/@/passkeys/svc/store.ts +0 -13
  277. package/ui/src/@/passkeys/svc/supported.ts +0 -1
  278. package/ui/src/@/passkeys/ui/aaguid.json +0 -150
  279. package/ui/src/@/realtime/events.ts +0 -1
  280. package/ui/src/@/realtime/index.ts +0 -1
  281. package/ui/src/@/realtime/rc.ts +0 -13
  282. package/ui/src/@/realtime/svc/connect.ts +0 -67
  283. package/ui/src/@/realtime/svc/events.ts +0 -17
  284. package/ui/src/@/realtime/svc/index.ts +0 -5
  285. package/ui/src/@/realtime/svc/net/Message.ts +0 -6
  286. package/ui/src/@/realtime/svc/net/index.ts +0 -2
  287. package/ui/src/@/realtime/svc/net/interface.ts +0 -13
  288. package/ui/src/@/realtime/svc/reset.ts +0 -5
  289. package/ui/src/@/realtime/svc/status.ts +0 -12
  290. package/ui/src/@/realtime/svc/store.ts +0 -30
  291. package/ui/src/@/realtime/svc/time.ts +0 -15
  292. package/ui/src/app.d.ts +0 -20
  293. package/ui/src/app.html +0 -13
  294. package/ui/src/config/index.ts +0 -70
  295. package/ui/src/lib/assets/favicon.svg +0 -1
  296. package/ui/src/lib/components/clipboard/Clipboard.svelte +0 -63
  297. package/ui/src/lib/components/clipboard/Clipboard.ts +0 -12
  298. package/ui/src/lib/components/clipboard/index.ts +0 -1
  299. package/ui/src/lib/components/dismissable/Dismissable.svelte +0 -81
  300. package/ui/src/lib/components/dismissable/Dismissable.ts +0 -7
  301. package/ui/src/lib/components/dismissable/index.ts +0 -1
  302. package/ui/src/lib/components/dropdown/Back.svelte +0 -14
  303. package/ui/src/lib/components/dropdown/Back.ts +0 -3
  304. package/ui/src/lib/components/dropdown/Content.svelte +0 -76
  305. package/ui/src/lib/components/dropdown/Content.ts +0 -13
  306. package/ui/src/lib/components/dropdown/Context.ts +0 -18
  307. package/ui/src/lib/components/dropdown/Group.svelte +0 -24
  308. package/ui/src/lib/components/dropdown/Group.ts +0 -8
  309. package/ui/src/lib/components/dropdown/GroupContext.ts +0 -15
  310. package/ui/src/lib/components/dropdown/Item.svelte +0 -31
  311. package/ui/src/lib/components/dropdown/Item.ts +0 -5
  312. package/ui/src/lib/components/dropdown/Layer.svelte +0 -11
  313. package/ui/src/lib/components/dropdown/Layer.ts +0 -7
  314. package/ui/src/lib/components/dropdown/Root.svelte +0 -88
  315. package/ui/src/lib/components/dropdown/Root.ts +0 -6
  316. package/ui/src/lib/components/dropdown/Separator.svelte +0 -13
  317. package/ui/src/lib/components/dropdown/Separator.ts +0 -5
  318. package/ui/src/lib/components/dropdown/Trigger.svelte +0 -33
  319. package/ui/src/lib/components/dropdown/Trigger.ts +0 -5
  320. package/ui/src/lib/components/dropdown/index.ts +0 -8
  321. package/ui/src/lib/components/fullscreen/Fullscreen.svelte +0 -97
  322. package/ui/src/lib/components/fullscreen/Fullscreen.ts +0 -18
  323. package/ui/src/lib/components/fullscreen/Overlay.svelte +0 -15
  324. package/ui/src/lib/components/fullscreen/Overlay.ts +0 -7
  325. package/ui/src/lib/components/fullscreen/index.ts +0 -2
  326. package/ui/src/lib/components/hold/Hold.svelte +0 -133
  327. package/ui/src/lib/components/hold/Hold.ts +0 -23
  328. package/ui/src/lib/components/hold/index.ts +0 -1
  329. package/ui/src/lib/components/scrollable/Scrollable.svelte +0 -49
  330. package/ui/src/lib/components/scrollable/Scrollable.ts +0 -117
  331. package/ui/src/lib/components/scrollable/index.ts +0 -2
  332. package/ui/src/lib/components/shake/Shake.svelte +0 -62
  333. package/ui/src/lib/components/shake/Shake.ts +0 -7
  334. package/ui/src/lib/components/shake/index.ts +0 -1
  335. package/ui/src/lib/components/share/Share.svelte +0 -58
  336. package/ui/src/lib/components/share/Share.ts +0 -9
  337. package/ui/src/lib/components/share/index.ts +0 -1
  338. package/ui/src/lib/components/shell/Attention.svelte +0 -11
  339. package/ui/src/lib/components/shell/Attention.ts +0 -6
  340. package/ui/src/lib/components/shell/Header.svelte +0 -18
  341. package/ui/src/lib/components/shell/Header.ts +0 -7
  342. package/ui/src/lib/components/shell/Screen.svelte +0 -28
  343. package/ui/src/lib/components/shell/Screen.ts +0 -11
  344. package/ui/src/lib/components/shell/Sticky.svelte +0 -23
  345. package/ui/src/lib/components/shell/Sticky.ts +0 -8
  346. package/ui/src/lib/components/shell/Underlay.svelte +0 -21
  347. package/ui/src/lib/components/shell/Underlay.ts +0 -6
  348. package/ui/src/lib/components/shell/index.ts +0 -6
  349. package/ui/src/lib/components/shell/nav/Actions.svelte +0 -31
  350. package/ui/src/lib/components/shell/nav/Actions.ts +0 -16
  351. package/ui/src/lib/components/shell/nav/Back.svelte +0 -20
  352. package/ui/src/lib/components/shell/nav/Back.ts +0 -9
  353. package/ui/src/lib/components/shell/nav/Bar.svelte +0 -24
  354. package/ui/src/lib/components/shell/nav/Bar.ts +0 -3
  355. package/ui/src/lib/components/shell/nav/Button.svelte +0 -64
  356. package/ui/src/lib/components/shell/nav/Button.ts +0 -7
  357. package/ui/src/lib/components/shell/nav/Nav.svelte +0 -62
  358. package/ui/src/lib/components/shell/nav/Nav.ts +0 -35
  359. package/ui/src/lib/components/shell/nav/Return.svelte +0 -29
  360. package/ui/src/lib/components/shell/nav/Return.ts +0 -15
  361. package/ui/src/lib/components/shell/nav/Sections.svelte +0 -58
  362. package/ui/src/lib/components/shell/nav/Sections.ts +0 -6
  363. package/ui/src/lib/components/shell/nav/Toolbar.svelte +0 -73
  364. package/ui/src/lib/components/shell/nav/Toolbar.ts +0 -3
  365. package/ui/src/lib/components/shell/nav/history.ts +0 -36
  366. package/ui/src/lib/components/shell/nav/index.ts +0 -5
  367. package/ui/src/lib/components/shell/nav/store.ts +0 -24
  368. package/ui/src/lib/components/ui/alert/alert-action.svelte +0 -20
  369. package/ui/src/lib/components/ui/alert/alert-description.svelte +0 -23
  370. package/ui/src/lib/components/ui/alert/alert-title.svelte +0 -23
  371. package/ui/src/lib/components/ui/alert/alert.svelte +0 -43
  372. package/ui/src/lib/components/ui/alert/index.ts +0 -17
  373. package/ui/src/lib/components/ui/alert-dialog/alert-dialog-action.svelte +0 -27
  374. package/ui/src/lib/components/ui/alert-dialog/alert-dialog-cancel.svelte +0 -27
  375. package/ui/src/lib/components/ui/alert-dialog/alert-dialog-content.svelte +0 -32
  376. package/ui/src/lib/components/ui/alert-dialog/alert-dialog-description.svelte +0 -17
  377. package/ui/src/lib/components/ui/alert-dialog/alert-dialog-footer.svelte +0 -23
  378. package/ui/src/lib/components/ui/alert-dialog/alert-dialog-header.svelte +0 -20
  379. package/ui/src/lib/components/ui/alert-dialog/alert-dialog-media.svelte +0 -20
  380. package/ui/src/lib/components/ui/alert-dialog/alert-dialog-overlay.svelte +0 -17
  381. package/ui/src/lib/components/ui/alert-dialog/alert-dialog-portal.svelte +0 -7
  382. package/ui/src/lib/components/ui/alert-dialog/alert-dialog-title.svelte +0 -17
  383. package/ui/src/lib/components/ui/alert-dialog/alert-dialog-trigger.svelte +0 -7
  384. package/ui/src/lib/components/ui/alert-dialog/alert-dialog.svelte +0 -7
  385. package/ui/src/lib/components/ui/alert-dialog/index.ts +0 -40
  386. package/ui/src/lib/components/ui/badge/badge.svelte +0 -49
  387. package/ui/src/lib/components/ui/badge/index.ts +0 -2
  388. package/ui/src/lib/components/ui/button/button.svelte +0 -82
  389. package/ui/src/lib/components/ui/button/index.ts +0 -17
  390. package/ui/src/lib/components/ui/button-group/button-group-separator.svelte +0 -23
  391. package/ui/src/lib/components/ui/button-group/button-group-text.svelte +0 -28
  392. package/ui/src/lib/components/ui/button-group/button-group.svelte +0 -46
  393. package/ui/src/lib/components/ui/button-group/index.ts +0 -15
  394. package/ui/src/lib/components/ui/card/card-action.svelte +0 -23
  395. package/ui/src/lib/components/ui/card/card-content.svelte +0 -20
  396. package/ui/src/lib/components/ui/card/card-description.svelte +0 -20
  397. package/ui/src/lib/components/ui/card/card-footer.svelte +0 -20
  398. package/ui/src/lib/components/ui/card/card-header.svelte +0 -23
  399. package/ui/src/lib/components/ui/card/card-title.svelte +0 -20
  400. package/ui/src/lib/components/ui/card/card.svelte +0 -22
  401. package/ui/src/lib/components/ui/card/index.ts +0 -25
  402. package/ui/src/lib/components/ui/checkbox/checkbox.svelte +0 -39
  403. package/ui/src/lib/components/ui/checkbox/index.ts +0 -6
  404. package/ui/src/lib/components/ui/collapsible/collapsible-content.svelte +0 -7
  405. package/ui/src/lib/components/ui/collapsible/collapsible-trigger.svelte +0 -7
  406. package/ui/src/lib/components/ui/collapsible/collapsible.svelte +0 -20
  407. package/ui/src/lib/components/ui/collapsible/index.ts +0 -13
  408. package/ui/src/lib/components/ui/input/index.ts +0 -7
  409. package/ui/src/lib/components/ui/input/input.svelte +0 -48
  410. package/ui/src/lib/components/ui/input-otp/index.ts +0 -15
  411. package/ui/src/lib/components/ui/input-otp/input-otp-group.svelte +0 -20
  412. package/ui/src/lib/components/ui/input-otp/input-otp-separator.svelte +0 -27
  413. package/ui/src/lib/components/ui/input-otp/input-otp-slot.svelte +0 -31
  414. package/ui/src/lib/components/ui/input-otp/input-otp.svelte +0 -23
  415. package/ui/src/lib/components/ui/item/index.ts +0 -34
  416. package/ui/src/lib/components/ui/item/item-actions.svelte +0 -20
  417. package/ui/src/lib/components/ui/item/item-content.svelte +0 -23
  418. package/ui/src/lib/components/ui/item/item-description.svelte +0 -23
  419. package/ui/src/lib/components/ui/item/item-footer.svelte +0 -20
  420. package/ui/src/lib/components/ui/item/item-group.svelte +0 -21
  421. package/ui/src/lib/components/ui/item/item-header.svelte +0 -20
  422. package/ui/src/lib/components/ui/item/item-media.svelte +0 -42
  423. package/ui/src/lib/components/ui/item/item-separator.svelte +0 -19
  424. package/ui/src/lib/components/ui/item/item-title.svelte +0 -20
  425. package/ui/src/lib/components/ui/item/item.svelte +0 -61
  426. package/ui/src/lib/components/ui/kbd/index.ts +0 -10
  427. package/ui/src/lib/components/ui/kbd/kbd-group.svelte +0 -20
  428. package/ui/src/lib/components/ui/kbd/kbd.svelte +0 -23
  429. package/ui/src/lib/components/ui/label/index.ts +0 -7
  430. package/ui/src/lib/components/ui/label/label.svelte +0 -20
  431. package/ui/src/lib/components/ui/progress/index.ts +0 -7
  432. package/ui/src/lib/components/ui/progress/progress.svelte +0 -27
  433. package/ui/src/lib/components/ui/select/index.ts +0 -37
  434. package/ui/src/lib/components/ui/select/select-content.svelte +0 -45
  435. package/ui/src/lib/components/ui/select/select-group-heading.svelte +0 -21
  436. package/ui/src/lib/components/ui/select/select-group.svelte +0 -17
  437. package/ui/src/lib/components/ui/select/select-item.svelte +0 -40
  438. package/ui/src/lib/components/ui/select/select-label.svelte +0 -20
  439. package/ui/src/lib/components/ui/select/select-portal.svelte +0 -7
  440. package/ui/src/lib/components/ui/select/select-scroll-down-button.svelte +0 -20
  441. package/ui/src/lib/components/ui/select/select-scroll-up-button.svelte +0 -20
  442. package/ui/src/lib/components/ui/select/select-separator.svelte +0 -18
  443. package/ui/src/lib/components/ui/select/select-trigger.svelte +0 -29
  444. package/ui/src/lib/components/ui/select/select.svelte +0 -11
  445. package/ui/src/lib/components/ui/separator/index.ts +0 -7
  446. package/ui/src/lib/components/ui/separator/separator.svelte +0 -23
  447. package/ui/src/lib/components/ui/spinner/index.ts +0 -1
  448. package/ui/src/lib/components/ui/spinner/spinner.svelte +0 -18
  449. package/ui/src/lib/components/ui/tabs/index.ts +0 -18
  450. package/ui/src/lib/components/ui/tabs/tabs-content.svelte +0 -17
  451. package/ui/src/lib/components/ui/tabs/tabs-list.svelte +0 -40
  452. package/ui/src/lib/components/ui/tabs/tabs-trigger.svelte +0 -23
  453. package/ui/src/lib/components/ui/tabs/tabs.svelte +0 -19
  454. package/ui/src/lib/components/ui/textarea/index.ts +0 -7
  455. package/ui/src/lib/components/ui/textarea/textarea.svelte +0 -22
  456. package/ui/src/lib/intl/bcp.ts +0 -25
  457. package/ui/src/lib/intl/built.js +0 -18
  458. package/ui/src/lib/intl/context.yaml +0 -18
  459. package/ui/src/lib/intl/en-US.yaml +0 -6
  460. package/ui/src/lib/intl/index.ts +0 -65
  461. package/ui/src/lib/intl/types.ts +0 -19
  462. package/ui/src/lib/tools/ago.ts +0 -10
  463. package/ui/src/lib/tools/assert.ts +0 -3
  464. package/ui/src/lib/tools/cap.ts +0 -5
  465. package/ui/src/lib/tools/clicks.ts +0 -25
  466. package/ui/src/lib/tools/contextmenu.ts +0 -19
  467. package/ui/src/lib/tools/convert.ts +0 -32
  468. package/ui/src/lib/tools/currency.test.ts +0 -10
  469. package/ui/src/lib/tools/currency.ts +0 -55
  470. package/ui/src/lib/tools/date.test.ts +0 -21
  471. package/ui/src/lib/tools/date.ts +0 -35
  472. package/ui/src/lib/tools/delay.ts +0 -7
  473. package/ui/src/lib/tools/image.ts +0 -39
  474. package/ui/src/lib/tools/index.ts +0 -20
  475. package/ui/src/lib/tools/location.ts +0 -41
  476. package/ui/src/lib/tools/metronome.ts +0 -11
  477. package/ui/src/lib/tools/mq.ts +0 -84
  478. package/ui/src/lib/tools/onsubmit.ts +0 -21
  479. package/ui/src/lib/tools/random.ts +0 -15
  480. package/ui/src/lib/tools/search.ts +0 -25
  481. package/ui/src/lib/tools/timeout.ts +0 -26
  482. package/ui/src/lib/tools/transition.ts +0 -207
  483. package/ui/src/lib/tools/types.ts +0 -3
  484. package/ui/src/lib/tools/uuid.test.ts +0 -28
  485. package/ui/src/lib/tools/uuid.ts +0 -9
  486. package/ui/src/lib/typeset.css +0 -502
  487. package/ui/src/lib/utils.ts +0 -12
  488. package/ui/src/routes/(private)/+layout.svelte +0 -112
  489. package/ui/src/routes/(private)/+page.svelte +0 -7
  490. package/ui/src/routes/(private)/[component]/+page.svelte +0 -77
  491. package/ui/src/routes/+layout.svelte +0 -25
  492. package/ui/src/routes/+layout.ts +0 -14
  493. package/ui/src/routes/layout.css +0 -232
  494. package/ui/svelte.config.js +0 -36
  495. package/ui/tools/feat.js +0 -43
  496. package/ui/tools/hooks/README.md +0 -13
  497. package/ui/tools/hooks/guard-intl.sh +0 -40
  498. package/ui/tools/shad.js +0 -7
  499. package/ui/tsconfig.json +0 -20
  500. package/ui/vite.config.ts +0 -8
  501. /package/ui/{static → dist}/robots.txt +0 -0
@@ -1,38 +0,0 @@
1
- // Auto-generated by i18n CLI - do not edit manually
2
-
3
- /** @type {Record<import('$lib/intl').Locale, import('./types').Dictionary>} */
4
- export const dictionaries = {
5
- "en-US": {
6
- "values": {
7
- "empty": "No component declares configuration.",
8
- "nomatch": "No results match the filter."
9
- },
10
- "value": {
11
- "none": "This component has no configuration.",
12
- "secret": "Secret",
13
- "count": (count) => {
14
- const forms = {"one":"{n} value","other":"{n} values"};
15
- const locale = "en-US"; // This will be replaced by the build system
16
- const pluralRules = new Intl.PluralRules(locale);
17
- const rule = pluralRules.select(count);
18
- const table = /** @type {Record<string, string>} */ (forms);
19
-
20
- return (table[rule] ?? table.other).replace(/{n}/g, new Intl.NumberFormat(locale).format(count));
21
- },
22
- "title": "Configuration"
23
- },
24
- "create": {
25
- "action": "Edit",
26
- "title": "Edit configuration",
27
- "editor": "Configuration",
28
- "submit": "Update",
29
- "cancel": "Cancel",
30
- "malformed": "This is not valid YAML.",
31
- "failed": "The configuration could not be created."
32
- },
33
- "space": {
34
- "user": "Userspace",
35
- "system": "System"
36
- }
37
- }
38
- };
@@ -1,51 +0,0 @@
1
- context: Mount 'configuration' context
2
- inputs:
3
- values:
4
- empty:
5
- input: No component declares configuration.
6
- context: shown when the application has no configured components at all
7
- nomatch:
8
- input: No results match the filter.
9
- context: shown when the filter leaves the list empty
10
- value:
11
- none:
12
- input: This component has no configuration.
13
- context: shown on a component's screen when the service holds no configuration for it
14
- secret:
15
- input: Secret
16
- context: "stands in place of a value that is a secret and is never shown; a noun, capitalized as a label"
17
- count:
18
- input: value
19
- context: how many top-level values a component's configuration holds, shown on its row in the list
20
- title:
21
- input: Configuration
22
- context: heading over the component's current configuration
23
- create:
24
- action:
25
- input: Edit
26
- context: "button that opens the dialog for changing a component's configuration. A change is stored as a new immutable object, but the reader edits what is there, so the word is the reader's, not the service's"
27
- title:
28
- input: Edit configuration
29
- context: title of that dialog
30
- editor:
31
- input: Configuration
32
- context: accessible name of the text area holding the configuration as YAML
33
- submit:
34
- input: Update
35
- context: button that sends the edited configuration
36
- cancel:
37
- input: Cancel
38
- context: button that closes the dialog without creating anything
39
- malformed:
40
- input: This is not valid YAML.
41
- context: shown under the editor when the text cannot be parsed
42
- failed:
43
- input: The configuration could not be created.
44
- context: shown when the service refused the request
45
- space:
46
- user:
47
- input: Userspace
48
- context: heading over the components the application itself declares
49
- system:
50
- input: System
51
- context: heading over the components the runtime provides, such as identity
@@ -1,21 +0,0 @@
1
- values:
2
- empty: No component declares configuration.
3
- nomatch: No results match the filter.
4
- value:
5
- none: This component has no configuration.
6
- secret: Secret
7
- count:
8
- - one: "{n} value"
9
- other: "{n} values"
10
- title: Configuration
11
- create:
12
- action: Edit
13
- title: Edit configuration
14
- editor: Configuration
15
- submit: Update
16
- cancel: Cancel
17
- malformed: This is not valid YAML.
18
- failed: The configuration could not be created.
19
- space:
20
- user: Userspace
21
- system: System
@@ -1,9 +0,0 @@
1
- import { derived } from 'svelte/store'
2
- import { locale } from '$lib/intl'
3
- import { dictionaries } from './built.js'
4
- import type { Dictionary } from './types'
5
-
6
- const dict = derived(locale, ($locale) => dictionaries[$locale])
7
-
8
- export { dict, dictionaries }
9
- export type { Dictionary }
@@ -1,31 +0,0 @@
1
- /**
2
- * Auto-generated TypeScript definitions for i18n dictionaries
3
- *
4
- * @author copilot
5
- */
6
-
7
- export type Dictionary = {
8
- values: {
9
- empty: string
10
- nomatch: string
11
- }
12
- value: {
13
- none: string
14
- secret: string
15
- count: (value: number) => string
16
- title: string
17
- }
18
- create: {
19
- action: string
20
- title: string
21
- editor: string
22
- submit: string
23
- cancel: string
24
- malformed: string
25
- failed: string
26
- }
27
- space: {
28
- user: string
29
- system: string
30
- }
31
- }
@@ -1,75 +0,0 @@
1
- import { it, expect } from 'vitest'
2
- import { holds, read } from './read'
3
-
4
- it('should read scalars', () => {
5
- expect(read({ foo: 'hello', num: 0, on: true, none: null })).toEqual([
6
- { depth: 0, key: 'foo', value: 'hello', secret: false },
7
- { depth: 0, key: 'num', value: '0', secret: false },
8
- { depth: 0, key: 'on', value: 'true', secret: false },
9
- { depth: 0, key: 'none', value: 'null', secret: false },
10
- ])
11
- })
12
-
13
- it('should open an object onto its properties', () => {
14
- expect(read({ nested: { foo: 'bar' } })).toEqual([
15
- { depth: 0, key: 'nested', value: null, secret: false },
16
- { depth: 1, key: 'foo', value: 'bar', secret: false },
17
- ])
18
- })
19
-
20
- it('should mark a list item', () => {
21
- expect(read({ list: ['one', 'two'] })).toEqual([
22
- { depth: 0, key: 'list', value: null, secret: false },
23
- { depth: 1, key: '-', value: 'one', secret: false },
24
- { depth: 1, key: '-', value: 'two', secret: false },
25
- ])
26
- })
27
-
28
- it('should open a list of objects', () => {
29
- expect(read({ greetings: [{ text: 'hello', times: 2 }] })).toEqual([
30
- { depth: 0, key: 'greetings', value: null, secret: false },
31
- { depth: 1, key: '-', value: null, secret: false },
32
- { depth: 2, key: 'text', value: 'hello', secret: false },
33
- { depth: 2, key: 'times', value: '2', secret: false },
34
- ])
35
- })
36
-
37
- it('should write an empty object or list rather than open it', () => {
38
- expect(read({ nothing: {}, none: [] })).toEqual([
39
- { depth: 0, key: 'nothing', value: '{}', secret: false },
40
- { depth: 0, key: 'none', value: '[]', secret: false },
41
- ])
42
- })
43
-
44
- it('should never show a secret', () => {
45
- expect(read({ apiKey: '$STRIPE_API_KEY' })).toEqual([
46
- { depth: 0, key: 'apiKey', value: null, secret: true },
47
- ])
48
- })
49
-
50
- it('should read a secret nested in a list', () => {
51
- expect(read({ keys: [{ key: '$KEY0' }] })).toEqual([
52
- { depth: 0, key: 'keys', value: null, secret: false },
53
- { depth: 1, key: '-', value: null, secret: false },
54
- { depth: 2, key: 'key', value: null, secret: true },
55
- ])
56
- })
57
-
58
- it('should take a reference of digits, as the runtime does', () => {
59
- expect(read({ price: '$100' })).toEqual([{ depth: 0, key: 'price', value: null, secret: true }])
60
- })
61
-
62
- it('should not take a lowercase or unprefixed name for a secret', () => {
63
- expect(read({ word: '$lower', plain: 'NAME' })).toEqual([
64
- { depth: 0, key: 'word', value: '$lower', secret: false },
65
- { depth: 0, key: 'plain', value: 'NAME', secret: false },
66
- ])
67
- })
68
-
69
- it('should say whether a configuration holds a secret', () => {
70
- expect(holds({ foo: 'plain' })).toBe(false)
71
- expect(holds({ apiKey: '$STRIPE_API_KEY' })).toBe(true)
72
- expect(holds({ nested: { deep: { key: '$KEY0' } } })).toBe(true)
73
- expect(holds({ keys: [{ key: '$KEY0' }] })).toBe(true)
74
- expect(holds({})).toBe(false)
75
- })
@@ -1,102 +0,0 @@
1
- /**
2
- * A configuration read as lines: what each value is, and what the things it hold are.
3
- * The sibling of introspection's `shape.ts` — that one reads a schema, this one reads
4
- * the value the schema describes.
5
- *
6
- * A secret never reaches the page: what is stored in its place is a reference to the
7
- * variable the component substitutes, and a reference is all there is to show.
8
- */
9
-
10
- /** One line of the value, indented by its depth. */
11
- export interface Line {
12
- depth: number
13
- /** The property this line is about; `-` marks an item of a list. */
14
- key: string
15
- /** What is written after the key, or null where the line opens onto the lines beneath. */
16
- value: string | null
17
- /** Stored as a reference, and shown as one. */
18
- secret: boolean
19
- }
20
-
21
- /**
22
- * A secret is an uppercase name prefixed with `$`. Mirrors `SECRET_RX` in
23
- * `extensions/configuration/source/const.ts`; the two must say the same thing.
24
- */
25
- const SECRET = /^\$([A-Z0-9_]{1,32})$/
26
-
27
- /** The marker a list item is written with, in place of a key. */
28
- export const ITEM = '-'
29
-
30
- export function read(value: unknown): Line[] {
31
- const lines: Line[] = []
32
-
33
- add(null, value, 0, lines)
34
-
35
- return lines
36
- }
37
-
38
- function add(key: string | null, value: unknown, depth: number, into: Line[]): void {
39
- const held = open(value)
40
-
41
- // the whole of what is shown needs no line of its own; its children are the shape
42
- if (key === null) {
43
- if (held === null) into.push(line(ITEM, value, depth))
44
- else for (const [name, child] of held) add(name, child, depth, into)
45
-
46
- return
47
- }
48
-
49
- if (held === null) {
50
- into.push(line(key, value, depth))
51
-
52
- return
53
- }
54
-
55
- into.push({ depth, key, value: null, secret: false })
56
-
57
- for (const [name, child] of held) add(name, child, depth + 1, into)
58
- }
59
-
60
- /**
61
- * The pairs a line opens onto, or `null` when the value is written on the line itself.
62
- * An empty object or list opens onto nothing, so it is written rather than opened.
63
- */
64
- function open(value: unknown): Array<[string, unknown]> | null {
65
- if (Array.isArray(value))
66
- return value.length === 0 ? null : value.map((item) => [ITEM, item])
67
-
68
- if (typeof value === 'object' && value !== null) {
69
- const entries = Object.entries(value)
70
-
71
- return entries.length === 0 ? null : entries
72
- }
73
-
74
- return null
75
- }
76
-
77
- function line(key: string, value: unknown, depth: number): Line {
78
- const secret = typeof value === 'string' && SECRET.test(value)
79
-
80
- return { depth, key, value: secret ? null : write(value), secret }
81
- }
82
-
83
- /** How a value is written: a string as it reads, everything else as JSON says. */
84
- function write(value: unknown): string {
85
- if (typeof value === 'string') return value
86
-
87
- if (Array.isArray(value)) return '[]'
88
-
89
- if (typeof value === 'object' && value !== null) return '{}'
90
-
91
- return JSON.stringify(value) ?? 'null'
92
- }
93
-
94
- /** Whether a value is a secret reference, for anything that asks outside a line. */
95
- export function secret(value: unknown): boolean {
96
- return typeof value === 'string' && SECRET.test(value)
97
- }
98
-
99
- /** Whether a configuration holds a secret anywhere in it, however deep. */
100
- export function holds(value: unknown): boolean {
101
- return read(value).some((line) => line.secret)
102
- }
@@ -1,69 +0,0 @@
1
- import { it, expect } from 'vitest'
2
- import { matches, rank, split } from './ui'
3
-
4
- it('should split a namespaced name', () => {
5
- expect(split('identity.tokens')).toEqual({ namespace: 'identity', component: 'tokens' })
6
- })
7
-
8
- it('should read an unqualified name as the default namespace', () => {
9
- expect(split('dummy')).toEqual({ namespace: 'default', component: 'dummy' })
10
- })
11
-
12
- it('should split on the first dot only', () => {
13
- expect(split('a.b.c')).toEqual({ namespace: 'a', component: 'b.c' })
14
- })
15
-
16
- it('should match a subsequence', () => {
17
- expect(matches('identity.tokens', 'idtok')).toBe(true)
18
- expect(matches('identity.tokens', 'identity tokens')).toBe(true)
19
- expect(matches('identity.tokens', '')).toBe(true)
20
- expect(matches('identity.tokens', 'zzz')).toBe(false)
21
- })
22
-
23
- const dummy = {
24
- component: 'dummies.dummy',
25
- configuration: {
26
- foo: 'deployed',
27
- num: 7,
28
- nested: { deep: { flag: true } },
29
- greetings: [{ text: 'hello' }],
30
- apiKey: '$STRIPE_API_KEY',
31
- },
32
- }
33
-
34
- it('should rank a name above what a configuration holds', () => {
35
- expect(rank(dummy, 'dummy')).toBeGreaterThan(rank(dummy, 'deployed'))
36
- })
37
-
38
- it('should match a top-level key and value', () => {
39
- expect(rank(dummy, 'foo')).toBe(1)
40
- expect(rank(dummy, 'deployed')).toBe(1)
41
- })
42
-
43
- it('should match a nested key and value', () => {
44
- expect(rank(dummy, 'deep')).toBe(1)
45
- expect(rank(dummy, 'flag')).toBe(1)
46
- })
47
-
48
- it('should match inside a list of objects', () => {
49
- expect(rank(dummy, 'hello')).toBe(1)
50
- expect(rank(dummy, 'text')).toBe(1)
51
- })
52
-
53
- it('should match a number or a boolean', () => {
54
- expect(rank(dummy, '7')).toBe(1)
55
- expect(rank(dummy, 'true')).toBe(1)
56
- })
57
-
58
- it('should match the key of a secret but never its reference', () => {
59
- expect(rank(dummy, 'apiKey')).toBe(1)
60
- expect(rank(dummy, 'STRIPE')).toBe(0)
61
- })
62
-
63
- it('should not match across two unrelated values', () => {
64
- expect(rank(dummy, 'deployedhello')).toBe(0)
65
- })
66
-
67
- it('should keep every component on an empty query', () => {
68
- expect(rank(dummy, '')).toBe(2)
69
- })
@@ -1,115 +0,0 @@
1
- import { writable } from 'svelte/store'
2
-
3
- /** What the header's filter holds. Transient: not persisted, not in the URL. */
4
- export const query = writable('')
5
-
6
- /**
7
- * What Enter in the filter does, set by whichever screen is showing. A filter narrowed to
8
- * one thing leaves nothing to choose, so the key does what pressing that thing does; with
9
- * none or many left there is nothing to mean by it.
10
- */
11
- export const only = writable<(() => void) | null>(null)
12
-
13
- /** The namespace an application does not name; it is noise on every row. */
14
- export const DEFAULT = 'default'
15
-
16
- /** The namespace of a component, and the name under it. */
17
- export function split(id: string): { namespace: string; component: string } {
18
- const at = id.indexOf('.')
19
-
20
- if (at === -1) return { namespace: DEFAULT, component: id }
21
-
22
- return { namespace: id.slice(0, at), component: id.slice(at + 1) }
23
- }
24
-
25
- /**
26
- * The namespaces the runtime provides components in. Configuration has no notion of a
27
- * system component — what the service is told is a name and a schema — so this is a
28
- * list, and it grows when the runtime ships another one. It must keep saying what
29
- * `SYSTEM` says in the introspection UI.
30
- */
31
- const SYSTEM = new Set(['identity', 'exposition', 'realtime', 'introspection', 'configuration'])
32
-
33
- /** Whether a component came with the runtime rather than with the application. */
34
- export function system(component: string): boolean {
35
- return SYSTEM.has(split(component).namespace)
36
- }
37
-
38
- /** A name match outranks a match on something the configuration merely holds. */
39
- const NAME = 2
40
- const MEMBER = 1
41
-
42
- type Searchable = { component: string; configuration: object }
43
-
44
- /**
45
- * How well a component answers the filter, or `0` when it does not. Someone typing
46
- * `apps` means the component of that name before a value that happens to read the
47
- * same, so the list leads with names.
48
- *
49
- * An empty query matches every name, which leaves the order alone.
50
- */
51
- export function rank(item: Searchable, query: string): number {
52
- if (matches(item.component, query)) return NAME
53
-
54
- return terms(item.configuration).some((term) => matches(term, query)) ? MEMBER : 0
55
- }
56
-
57
- /**
58
- * Every key and every value in a configuration, at any depth, each as its own term —
59
- * never a concatenation of them, or a query would creep across two unrelated values
60
- * and call it a hit.
61
- *
62
- * A secret is left out. What stands in its place is a reference rather than the secret,
63
- * but the page refuses to show it, and a filter that answered for it would show it.
64
- */
65
- function terms(value: unknown, into: string[] = []): string[] {
66
- if (Array.isArray(value)) {
67
- for (const item of value) terms(item, into)
68
-
69
- return into
70
- }
71
-
72
- if (typeof value === 'object' && value !== null) {
73
- for (const [key, held] of Object.entries(value)) {
74
- into.push(key)
75
- terms(held, into)
76
- }
77
-
78
- return into
79
- }
80
-
81
- if (typeof value === 'string') {
82
- if (!SECRET.test(value)) into.push(value)
83
-
84
- return into
85
- }
86
-
87
- if (typeof value === 'number' || typeof value === 'boolean') into.push(String(value))
88
-
89
- return into
90
- }
91
-
92
- /** Mirrors `SECRET_RX` in `extensions/configuration/source/const.ts`. */
93
- const SECRET = /^\$([A-Z0-9_]{1,32})$/
94
-
95
- /**
96
- * A subsequence match, so `idtok` finds `identity.tokens`. Spaces in the query are
97
- * dropped, which lets `identity tokens` find it too. An empty query matches everything.
98
- */
99
- export function matches(text: string, query: string): boolean {
100
- const needle = query.toLowerCase().replace(/\s+/g, '')
101
-
102
- if (needle === '') return true
103
-
104
- const haystack = text.toLowerCase()
105
-
106
- let at = 0
107
-
108
- for (const character of needle) {
109
- at = haystack.indexOf(character, at) + 1
110
-
111
- if (at === 0) return false
112
- }
113
-
114
- return true
115
- }
@@ -1 +0,0 @@
1
- export * from './svc'
@@ -1,22 +0,0 @@
1
- import { origin } from '@/net'
2
- import { consume } from './svc/transfer'
3
- import { sync } from './svc/sync'
4
- import { challenge } from './svc/store'
5
-
6
- function rc() {
7
- origin.events.on('challenge', (value) => challenge.set(value))
8
-
9
- origin.events.on('error', (error) => {
10
- if (error.code === 401) challenge.set(null)
11
- })
12
-
13
- challenge.subscribe((challenge) => origin.authenticate(challenge))
14
-
15
- const transferred = consume()
16
-
17
- if (transferred !== null) challenge.set(transferred)
18
-
19
- void sync()
20
- }
21
-
22
- export { rc }
@@ -1,17 +0,0 @@
1
- import { iam, method, type Method } from './store'
2
- import type { Echo } from './net'
3
-
4
- /**
5
- * Set current account and authentication method.
6
- *
7
- * @param echo - The authenticated account echo (`201` on first registration, else `200`).
8
- * @param channel - The auth channel the user authenticated through.
9
- */
10
- export function authenticated(echo: Echo | Error, channel: Method): Echo | Error {
11
- if (echo instanceof Error) return echo
12
-
13
- iam(echo)
14
- method.set(channel)
15
-
16
- return echo
17
- }
@@ -1,23 +0,0 @@
1
- import { sync } from './sync'
2
- import * as net from './net'
3
- import { authenticated } from './authenticated'
4
- import type { Echo } from './net'
5
-
6
- export async function verify(username: string, password: string): Promise<Echo | Error> {
7
- const credentials = btoa(`${username}:${password}`)
8
- const echo = await net.get('Basic ' + credentials)
9
-
10
- return authenticated(echo, 'password')
11
- }
12
-
13
- export async function create(identity: string, body: net.basic.Basic): Promise<void | Error> {
14
- return await net.basic.post(identity, body)
15
- }
16
-
17
- export async function capture(identity: string, body: net.basic.Basic): Promise<void | Error> {
18
- const created = await create(identity, body)
19
-
20
- if (created instanceof Error) return created
21
-
22
- void sync()
23
- }
@@ -1,10 +0,0 @@
1
- export * as oidc from './oidc'
2
- export { apple } from './oidc/apple'
3
- export { google } from './oidc/google'
4
- export { logout } from './logout'
5
- export { update } from './update'
6
- export { named } from './named'
7
- export * from './store'
8
- export * as basic from './basic'
9
- export * as otp from './otp'
10
- export * as passkeys from './passkeys'
@@ -1,5 +0,0 @@
1
- import { account } from './store'
2
-
3
- export function logout() {
4
- account.set(null)
5
- }
@@ -1,16 +0,0 @@
1
- import { account } from './store'
2
-
3
- export async function named(): Promise<string> {
4
- const current = account.extract()
5
-
6
- if (current?.name !== undefined) return current.name
7
-
8
- return new Promise<string>((resolve) => {
9
- const unsubscribe = account.subscribe((acc) => {
10
- if (acc?.name !== undefined) {
11
- unsubscribe()
12
- resolve(acc.name)
13
- }
14
- })
15
- })
16
- }
@@ -1,9 +0,0 @@
1
- import type { Grammar } from '$lib/intl'
2
-
3
- export interface Echo {
4
- id: string
5
- roles: string[]
6
- name?: string
7
- locale?: string
8
- grammar?: Grammar | null
9
- }
@@ -1 +0,0 @@
1
- export * from './interface'
@@ -1,15 +0,0 @@
1
- import { origin } from '@/net'
2
-
3
- const basic = origin.resource('/identity/basic/', { credentials: 'include' })
4
-
5
- export interface Basic {
6
- username: string
7
- password: string
8
- }
9
-
10
- export async function post(id: string, body: Basic): Promise<void | Error> {
11
- return await basic.json(id, {
12
- method: 'POST',
13
- body,
14
- })
15
- }
@@ -1 +0,0 @@
1
- export * from './interface'
@@ -1,12 +0,0 @@
1
- import { origin } from '@/net'
2
-
3
- const federation = origin.resource('/identity/federation/', { credentials: 'include' })
4
-
5
- interface Post {
6
- scheme: 'bearer' | 'code'
7
- credentials: string
8
- }
9
-
10
- export async function post(identity: string, body: Post): Promise<void | Error> {
11
- return await federation.json(identity, { method: 'POST', body })
12
- }
@@ -1,6 +0,0 @@
1
- export * from './interface'
2
- export * as basic from './basic'
3
- export * as otp from './otp'
4
- export * as passkeys from './passkeys'
5
- export * as federation from './federation'
6
- export type { Echo } from './Echo'