@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,151 +0,0 @@
1
- <script lang="ts">
2
- import { meta } from '@toa.io/origin'
3
- import { ArrowRight } from '@lucide/svelte'
4
- import { dict } from '@/iam/ui/intl'
5
- import * as iam from '@/iam'
6
- import { Spinner } from '$ui/spinner'
7
- import { Input } from '$ui/input'
8
- import { Button } from '$ui/button'
9
- import { autofocus, onsubmit } from '$lib/tools'
10
- import { Shake } from '$com/shake'
11
- import Password from './Password.svelte'
12
- import type { Props } from './Form'
13
-
14
- const { account, oncreate }: Props = $props()
15
-
16
- let busy = $state(false)
17
- let username = $state('')
18
- let password = $state('')
19
- let otp = $state('')
20
- let passwordRef = $state<HTMLDivElement | null>(null)
21
- let mode = $state<'password' | 'otp'>('password')
22
- let shake: { shake: () => Promise<void> } | undefined = $state()
23
-
24
- async function submit() {
25
- if (password.length === 0)
26
- if (mode === 'password') await sendOTP()
27
- else await verifyOTP()
28
- else await basic()
29
- }
30
-
31
- async function basic() {
32
- busy = true
33
-
34
- const result =
35
- account === undefined
36
- ? await verifyPassword()
37
- : await iam.basic.capture(account.id, { username, password })
38
-
39
- busy = false
40
-
41
- if (result instanceof Error) await fail()
42
- }
43
-
44
- async function verifyPassword() {
45
- const echo = await iam.basic.verify(username, password)
46
-
47
- if (echo instanceof Error) return echo
48
-
49
- const response = meta(echo)
50
-
51
- if (response?.status === 201) oncreate?.(echo)
52
-
53
- return echo
54
- }
55
-
56
- async function sendOTP() {
57
- busy = true
58
-
59
- const response =
60
- account === undefined ? await iam.otp.send(username) : await iam.otp.add(account.id, username)
61
-
62
- busy = false
63
-
64
- if (response instanceof Error) return
65
-
66
- mode = 'otp'
67
- requestAnimationFrame(() => focus())
68
- }
69
-
70
- async function verifyOTP() {
71
- if (username.length === 0) {
72
- console.error('username is required')
73
-
74
- return
75
- }
76
-
77
- if (otp.length !== 6) {
78
- await fail()
79
-
80
- return
81
- }
82
-
83
- busy = true
84
-
85
- const echo = await iam.otp.verify(username, otp)
86
-
87
- busy = false
88
-
89
- if (echo instanceof Error) {
90
- otp = ''
91
- await fail()
92
-
93
- return
94
- }
95
-
96
- const response = meta(echo)
97
-
98
- if (response?.status === 201) oncreate?.(echo)
99
-
100
- return echo
101
- }
102
-
103
- async function fail() {
104
- await shake?.shake()
105
- focus()
106
- }
107
-
108
- function focus() {
109
- if (!autofocus) return
110
-
111
- passwordRef?.querySelector('input')?.focus()
112
- }
113
- </script>
114
-
115
- <form onsubmit={onsubmit(submit)}>
116
- <fieldset class="space-y-2">
117
- <Input
118
- id="iam-username-input"
119
- bind:value={username}
120
- name="username"
121
- type="email"
122
- autocomplete="username"
123
- required
124
- disabled={mode === 'otp' ? true : undefined}
125
- {autofocus}
126
- placeholder={$dict.auth.email} />
127
- <div class="space-y-2">
128
- <div class="flex items-center gap-2">
129
- <Shake bind:this={shake} class="w-full">
130
- <Password bind:ref={passwordRef} bind:password bind:otp {mode} />
131
- </Shake>
132
- <Button size="icon-lg" type="submit">
133
- {#if busy}
134
- <Spinner />
135
- {:else}
136
- <ArrowRight />
137
- {/if}
138
- <span class="sr-only">{$dict.auth.login}</span>
139
- </Button>
140
- </div>
141
- <div class="text-sm text-muted-foreground px-1">
142
- {#if mode === 'password'}
143
- <!-- eslint-disable-next-line svelte/no-at-html-tags -->
144
- {@html $dict.auth.passwordBlank}
145
- {:else}
146
- {$dict.auth.otpInstructions}
147
- {/if}
148
- </div>
149
- </div>
150
- </fieldset>
151
- </form>
@@ -1,6 +0,0 @@
1
- import type { AccountLike } from '../AccountLike'
2
-
3
- export interface Props {
4
- account?: AccountLike
5
- oncreate?: (account: AccountLike) => void
6
- }
@@ -1,39 +0,0 @@
1
- <script lang="ts">
2
- import { REGEXP_ONLY_DIGITS } from 'bits-ui'
3
- import { dict } from '@/iam/ui/intl'
4
- import * as InputOTP from '$ui/input-otp'
5
- import { Input } from '$ui/input'
6
- import type { Props } from './Password'
7
-
8
- let {
9
- ref = $bindable(null),
10
- mode = $bindable('password'),
11
- password = $bindable(''),
12
- otp = $bindable(''),
13
- }: Props = $props()
14
- </script>
15
-
16
- <div bind:this={ref} class="w-full flex items-center">
17
- {#if mode === 'password'}
18
- <Input
19
- id="iam-password-input"
20
- bind:value={password}
21
- name="password"
22
- type="password"
23
- minlength={6}
24
- autocomplete="current-password"
25
- placeholder={$dict.auth.password}
26
- class="placeholder:text-sm"
27
- />
28
- {:else}
29
- <InputOTP.Root bind:value={otp} maxlength={6} pattern={REGEXP_ONLY_DIGITS} required>
30
- {#snippet children({ cells })}
31
- <InputOTP.Group>
32
- {#each cells.slice(0, 6) as cell, i (i)}
33
- <InputOTP.Slot {cell} class="size-[40px] bg-background" />
34
- {/each}
35
- </InputOTP.Group>
36
- {/snippet}
37
- </InputOTP.Root>
38
- {/if}
39
- </div>
@@ -1,6 +0,0 @@
1
- export interface Props {
2
- ref?: HTMLElement | null
3
- mode?: 'password' | 'otp'
4
- password?: string
5
- otp?: string
6
- }
@@ -1,5 +0,0 @@
1
- <script lang="ts">
2
- import Form from './Form.svelte'
3
- </script>
4
-
5
- <Form />
@@ -1,2 +0,0 @@
1
- export { default as Authentication } from './Authentication.svelte'
2
- export { default as Refresh } from './Refresh.svelte'
@@ -1 +0,0 @@
1
- export * from './svc'
@@ -1,3 +0,0 @@
1
- export { origin } from './origin'
2
- export { query } from '@toa.io/origin'
3
- export type { RequestOptions, OctetsEntry, Faulty } from '@toa.io/origin'
@@ -1,8 +0,0 @@
1
- import { connect } from '@toa.io/origin'
2
- import * as config from '$config'
3
-
4
- const origin = connect({ origin: config.origin, sleep: config.sleep })
5
-
6
- console.info('Origin connected', config.origin, config.sleep ?? 'no sleep')
7
-
8
- export { origin }
@@ -1,45 +0,0 @@
1
- import { it, expect } from 'vitest'
2
- import { query } from './query'
3
-
4
- it('should build criteria', () => {
5
- const params = new URLSearchParams()
6
-
7
- params.set('foo', 'bar')
8
- params.set('baz', 'qux')
9
-
10
- const result = query(params)
11
-
12
- expect(result).toBe('?criteria=foo==bar;baz==qux')
13
- })
14
-
15
- it('should build empty criteria', () => {
16
- const params = new URLSearchParams()
17
-
18
- const result = query(params)
19
-
20
- expect(result).toBe('')
21
- })
22
-
23
- it('should separate known parameters', () => {
24
- const params = new URLSearchParams()
25
-
26
- params.set('foo', 'bar')
27
- params.set('omit', '10')
28
- params.set('limit', '20')
29
- params.set('search', 'qux')
30
-
31
- const result = query(params)
32
-
33
- expect(result).toBe('?criteria=foo==bar&omit=10&limit=20&search=qux')
34
- })
35
-
36
- it('should separate specified parameters', () => {
37
- const params = new URLSearchParams()
38
-
39
- params.set('foo', 'bar')
40
- params.set('baz', 'qux')
41
-
42
- const result = query(params, { separate: ['baz'] })
43
-
44
- expect(result).toBe('?criteria=foo==bar&baz=qux')
45
- })
@@ -1,25 +0,0 @@
1
- function query(params: URLSearchParams, options?: Options): string {
2
- const parts: string[] = []
3
- const criteria: string[] = []
4
-
5
- for (const [key, value] of params.entries())
6
- if (SEPARATE.includes(key) || options?.separate?.includes(key) === true)
7
- parts.push(`${key}=${value}`)
8
- else
9
- criteria.push(`${key}==${value}`)
10
-
11
- if (criteria.length > 0)
12
- parts.unshift(`criteria=${criteria.join(';')}`)
13
-
14
- return parts.length === 0
15
- ? ''
16
- : '?' + parts.join('&')
17
- }
18
-
19
- const SEPARATE: string[] = ['omit', 'limit', 'search'] as const
20
-
21
- interface Options {
22
- separate?: string[]
23
- }
24
-
25
- export { query }
@@ -1 +0,0 @@
1
- export * from './svc'
@@ -1,15 +0,0 @@
1
- import { passkeys } from './store'
2
- import * as origin from './net'
3
- import { create } from './create'
4
-
5
- export async function add(identity: string, name: string): Promise<void | Error> {
6
- const out = await create(name, identity)
7
-
8
- if (out instanceof Error) return out
9
-
10
- const key = await origin.post(identity, out.key)
11
-
12
- if (key instanceof Error) return key
13
-
14
- passkeys.add(key)
15
- }
@@ -1,58 +0,0 @@
1
- import * as origin from './net'
2
- import * as credentials from './credentials'
3
-
4
- export async function create(name: string, identity?: string): Promise<Output | Error> {
5
- const options = await origin.challenges.post('creation', identity)
6
-
7
- if (options instanceof Error)
8
- return options
9
-
10
- const credential = await credentials.create({ id: options.identity, name }, options)
11
-
12
- if (credential instanceof Error)
13
- return credential
14
-
15
- if (credential === null)
16
- throw new Error('No credential is created')
17
-
18
- return {
19
- key: toCreationResponse(credential, name),
20
- identity: options.identity,
21
- }
22
- }
23
-
24
- function toCreationResponse(
25
- credential: PublicKeyCredential,
26
- label: string,
27
- ): origin.CreationResponse {
28
- const response = credential.response as AuthenticatorAttestationResponse
29
- const authenticatorData = response.getAuthenticatorData()
30
- const transports = response.getTransports()
31
- const publicKeyAlgorithm = response.getPublicKeyAlgorithm()
32
- const publicKey = response.getPublicKey()
33
- const clientExtensionResults = credential.getClientExtensionResults()
34
-
35
- if (publicKey === null)
36
- throw new Error('No public key is created')
37
-
38
- return {
39
- id: credential.id,
40
- type: credential.type,
41
- response: {
42
- attestationObject: credentials.bufferToBase64url(response.attestationObject),
43
- clientDataJSON: credentials.bufferToBase64url(response.clientDataJSON),
44
- authenticatorData: credentials.bufferToBase64url(authenticatorData),
45
- transports,
46
- publicKeyAlgorithm,
47
- publicKey: credentials.bufferToBase64url(publicKey),
48
- },
49
- authenticatorAttachment: credential.authenticatorAttachment,
50
- clientExtensionResults,
51
- label,
52
- }
53
- }
54
-
55
- interface Output {
56
- key: origin.CreationResponse
57
- identity: string
58
- }
@@ -1,32 +0,0 @@
1
- export function base64urlToArrayBuffer(base64Url: string): ArrayBuffer {
2
- const padding = '='.repeat((4 - (base64Url.length % 4)) % 4)
3
- const base64 = (base64Url + padding).replace(/-/g, '+').replace(/_/g, '/')
4
- const raw = atob(base64)
5
-
6
- const bytes = new Uint8Array(raw.length)
7
-
8
- for (let i = 0; i < raw.length; i++) bytes[i] = raw.charCodeAt(i)
9
-
10
- return bytes.buffer
11
- }
12
-
13
- export function stringToArrayBuffer(str: string): ArrayBuffer {
14
- return new TextEncoder().encode(str).buffer
15
- }
16
-
17
- export function bufferToBase64url(buffer: ArrayBuffer): string {
18
- return btoa(String.fromCharCode(...new Uint8Array(buffer)))
19
- .replace(/\+/g, '-')
20
- .replace(/\//g, '_')
21
- .replace(/=+$/, '')
22
- }
23
-
24
- export function toBase64Url(string: string): string {
25
- return btoa(string).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '')
26
- }
27
-
28
- export function fromBase64Url(base64Url: string): string {
29
- const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/')
30
-
31
- return atob(base64.padEnd(base64.length + ((4 - (base64.length % 4)) % 4), '='))
32
- }
@@ -1,34 +0,0 @@
1
- import { key } from './key'
2
- import { base64urlToArrayBuffer, stringToArrayBuffer } from './convert'
3
- import type { CreationOptions } from '../net/challenges'
4
-
5
- export async function create(
6
- user: User,
7
- options: CreationOptions,
8
- ): Promise<PublicKeyCredential | null | Error> {
9
- const publicKey: PublicKeyCredentialCreationOptions = {
10
- challenge: base64urlToArrayBuffer(options.challenge),
11
- timeout: options.timeout,
12
- authenticatorSelection: options.authenticatorSelection,
13
- pubKeyCredParams: options.pubKeyCredParams,
14
- rp: {
15
- name: 'app',
16
- },
17
- user: {
18
- id: stringToArrayBuffer(user.id),
19
- name: user.name,
20
- displayName: user.name,
21
- },
22
- excludeCredentials: options.excludeCredentials.map(key),
23
- }
24
-
25
- return (await navigator.credentials.create({ publicKey }).catch((e) => e as Error)) as
26
- | PublicKeyCredential
27
- | null
28
- | Error
29
- }
30
-
31
- interface User {
32
- id: string
33
- name: string
34
- }
@@ -1,14 +0,0 @@
1
- import { key } from './key'
2
- import { base64urlToArrayBuffer } from './convert'
3
- import type { RequestOptions } from '../net/challenges'
4
-
5
- export async function get(options: RequestOptions): Promise<PublicKeyCredential | null> {
6
- const publicKey: PublicKeyCredentialRequestOptions = {
7
- timeout: options.timeout,
8
- challenge: base64urlToArrayBuffer(options.challenge),
9
- allowCredentials: options.allowCredentials.map(key),
10
- userVerification: options.userVerification,
11
- }
12
-
13
- return (await navigator.credentials.get({ publicKey })) as PublicKeyCredential
14
- }
@@ -1,3 +0,0 @@
1
- export { create } from './create'
2
- export { get } from './get'
3
- export * from './convert'
@@ -1,10 +0,0 @@
1
- import { base64urlToArrayBuffer } from './convert'
2
- import type { KeyDescriptor } from '../net/challenges'
3
-
4
- export function key({ id, transports }: KeyDescriptor): PublicKeyCredentialDescriptor {
5
- return {
6
- id: base64urlToArrayBuffer(id),
7
- type: 'public-key',
8
- transports,
9
- }
10
- }
@@ -1,10 +0,0 @@
1
- import { having } from 'svas'
2
- import { account } from '@/iam'
3
- import * as origin from './net'
4
- import type { Passkey } from './store'
5
-
6
- export async function get(): Promise<Passkey[] | Error> {
7
- const me = await having(account)
8
-
9
- return await origin.get(me.id)
10
- }
@@ -1,6 +0,0 @@
1
- export { add } from './add'
2
- export { remove } from './remove'
3
- export { create } from './create'
4
- export { request } from './request'
5
- export { supported } from './supported'
6
- export { passkeys, type Passkey } from './store'
@@ -1,15 +0,0 @@
1
- export interface CreationResponse {
2
- id: string
3
- type: string
4
- response: {
5
- attestationObject: string
6
- clientDataJSON: string
7
- authenticatorData: string
8
- transports: string[]
9
- publicKeyAlgorithm: number
10
- publicKey: string
11
- }
12
- authenticatorAttachment: string | null
13
- clientExtensionResults: AuthenticationExtensionsClientOutputs
14
- label?: string
15
- }
@@ -1,8 +0,0 @@
1
- export interface Passkey {
2
- id: string
3
- aid: string
4
- synced: boolean
5
- label: string
6
- _created: number
7
- _updated: number
8
- }
@@ -1,12 +0,0 @@
1
- export interface RequestResponse {
2
- id: string
3
- type: string
4
- response: {
5
- clientDataJSON: string
6
- authenticatorData: string
7
- signature: string
8
- userHandle?: string | null
9
- }
10
- authenticatorAttachment: string | null
11
- clientExtensionResults: AuthenticationExtensionsClientOutputs
12
- }
@@ -1,21 +0,0 @@
1
- interface CommonOptions {
2
- identity: string
3
- challenge: string
4
- timeout: number
5
- }
6
-
7
- export interface CreationOptions extends CommonOptions {
8
- authenticatorSelection?: Pick<AuthenticatorSelectionCriteria, 'userVerification' | 'residentKey'>
9
- pubKeyCredParams: PublicKeyCredentialParameters[]
10
- excludeCredentials: KeyDescriptor[]
11
- }
12
-
13
- export interface RequestOptions extends CommonOptions {
14
- allowCredentials: KeyDescriptor[]
15
- userVerification: UserVerificationRequirement
16
- }
17
-
18
- export interface KeyDescriptor {
19
- id: string
20
- transports: AuthenticatorTransport[]
21
- }
@@ -1,2 +0,0 @@
1
- export * from './interface'
2
- export type { CreationOptions, RequestOptions, KeyDescriptor } from './Options'
@@ -1,16 +0,0 @@
1
- import { origin } from '@/net'
2
- import type { CreationOptions, RequestOptions } from './Options'
3
-
4
- const challenges = origin.resource('/identity/passkeys/challenges/')
5
-
6
- export function post(type: 'creation', id?: string): Promise<CreationOptions | Error>
7
- export function post(type: 'request', id?: string): Promise<RequestOptions | Error>
8
-
9
- export async function post(type: Type, id?: string): Promise<CreationOptions | RequestOptions | Error> {
10
- const body = { type }
11
-
12
- if (id === undefined) return await challenges.json('.', { method: 'POST', body })
13
- else return await challenges.json(id, { method: 'POST', body })
14
- }
15
-
16
- type Type = 'creation' | 'request'
@@ -1,4 +0,0 @@
1
- export * from './interface'
2
- export type { Passkey } from './Passkey'
3
- export type { CreationResponse } from './CreationResponse'
4
- export type { RequestResponse } from './RequestResponse'
@@ -1,29 +0,0 @@
1
- import { origin } from '@/net'
2
- import type { RequestResponse } from './RequestResponse'
3
- import type { Passkey } from './Passkey'
4
- import type { CreationResponse } from './CreationResponse'
5
-
6
- const passkeys = origin.resource('/identity/passkeys/')
7
-
8
- export function post(body: RequestResponse): Promise<void | Error>
9
- export function post(identity: string, body: CreationResponse): Promise<Passkey | Error>
10
-
11
- export async function post(
12
- arg: string | RequestResponse,
13
- body?: CreationResponse,
14
- ): Promise<void | Passkey | Error> {
15
- if (typeof arg === 'string')
16
- return await passkeys.json(arg, { body, credentials: 'include' })
17
- else
18
- return await passkeys.json({ body: arg })
19
- }
20
-
21
- export async function get(identity: string): Promise<Passkey[] | Error> {
22
- return await passkeys.json<Passkey[]>(identity, { credentials: 'include' })
23
- }
24
-
25
- export async function del(identity: string, _: string): Promise<void | Error> {
26
- return await passkeys.json(identity, { credentials: 'include' })
27
- }
28
-
29
- export * as challenges from './challenges'
@@ -1,13 +0,0 @@
1
- import { having } from 'svas'
2
- import { account } from '@/iam'
3
- import { passkeys } from './store'
4
- import * as origin from './net'
5
-
6
- export async function remove(id: string): Promise<void | Error> {
7
- const me = await having(account)
8
- const ok = await origin.del(me.id, id)
9
-
10
- if (ok instanceof Error) return ok
11
-
12
- passkeys.delete(id)
13
- }