workos 0.18.0 → 0.20.1

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 (835) hide show
  1. package/README.md +4 -783
  2. package/bin/workos.js +44 -0
  3. package/package.json +18 -107
  4. package/LICENSE +0 -47
  5. package/dist/bin.d.ts +0 -2
  6. package/dist/bin.js +0 -1711
  7. package/dist/bin.js.map +0 -1
  8. package/dist/check-coverage.ts +0 -237
  9. package/dist/cli.config.d.ts +0 -88
  10. package/dist/cli.config.js +0 -110
  11. package/dist/cli.config.js.map +0 -1
  12. package/dist/commands/api/catalog.d.ts +0 -23
  13. package/dist/commands/api/catalog.js +0 -97
  14. package/dist/commands/api/catalog.js.map +0 -1
  15. package/dist/commands/api/format.d.ts +0 -5
  16. package/dist/commands/api/format.js +0 -46
  17. package/dist/commands/api/format.js.map +0 -1
  18. package/dist/commands/api/index.d.ts +0 -15
  19. package/dist/commands/api/index.js +0 -205
  20. package/dist/commands/api/index.js.map +0 -1
  21. package/dist/commands/api/interactive.d.ts +0 -3
  22. package/dist/commands/api/interactive.js +0 -133
  23. package/dist/commands/api/interactive.js.map +0 -1
  24. package/dist/commands/api/request.d.ts +0 -14
  25. package/dist/commands/api/request.js +0 -38
  26. package/dist/commands/api/request.js.map +0 -1
  27. package/dist/commands/api-key-mgmt.d.ts +0 -16
  28. package/dist/commands/api-key-mgmt.js +0 -96
  29. package/dist/commands/api-key-mgmt.js.map +0 -1
  30. package/dist/commands/audit-log.d.ts +0 -26
  31. package/dist/commands/audit-log.js +0 -155
  32. package/dist/commands/audit-log.js.map +0 -1
  33. package/dist/commands/auth-status.d.ts +0 -1
  34. package/dist/commands/auth-status.js +0 -57
  35. package/dist/commands/auth-status.js.map +0 -1
  36. package/dist/commands/claim.d.ts +0 -11
  37. package/dist/commands/claim.js +0 -131
  38. package/dist/commands/claim.js.map +0 -1
  39. package/dist/commands/config.d.ts +0 -3
  40. package/dist/commands/config.js +0 -54
  41. package/dist/commands/config.js.map +0 -1
  42. package/dist/commands/connection.d.ts +0 -13
  43. package/dist/commands/connection.js +0 -96
  44. package/dist/commands/connection.js.map +0 -1
  45. package/dist/commands/debug-sso.d.ts +0 -1
  46. package/dist/commands/debug-sso.js +0 -78
  47. package/dist/commands/debug-sso.js.map +0 -1
  48. package/dist/commands/debug-sync.d.ts +0 -1
  49. package/dist/commands/debug-sync.js +0 -102
  50. package/dist/commands/debug-sync.js.map +0 -1
  51. package/dist/commands/debug.d.ts +0 -28
  52. package/dist/commands/debug.js +0 -406
  53. package/dist/commands/debug.js.map +0 -1
  54. package/dist/commands/dev.d.ts +0 -23
  55. package/dist/commands/dev.js +0 -145
  56. package/dist/commands/dev.js.map +0 -1
  57. package/dist/commands/directory.d.ts +0 -27
  58. package/dist/commands/directory.js +0 -176
  59. package/dist/commands/directory.js.map +0 -1
  60. package/dist/commands/doctor.d.ts +0 -12
  61. package/dist/commands/doctor.js +0 -41
  62. package/dist/commands/doctor.js.map +0 -1
  63. package/dist/commands/emulate.d.ts +0 -6
  64. package/dist/commands/emulate.js +0 -68
  65. package/dist/commands/emulate.js.map +0 -1
  66. package/dist/commands/env.d.ts +0 -9
  67. package/dist/commands/env.js +0 -227
  68. package/dist/commands/env.js.map +0 -1
  69. package/dist/commands/event.d.ts +0 -9
  70. package/dist/commands/event.js +0 -43
  71. package/dist/commands/event.js.map +0 -1
  72. package/dist/commands/feature-flag.d.ts +0 -12
  73. package/dist/commands/feature-flag.js +0 -96
  74. package/dist/commands/feature-flag.js.map +0 -1
  75. package/dist/commands/install-skill.d.ts +0 -85
  76. package/dist/commands/install-skill.js +0 -332
  77. package/dist/commands/install-skill.js.map +0 -1
  78. package/dist/commands/install.d.ts +0 -6
  79. package/dist/commands/install.js +0 -56
  80. package/dist/commands/install.js.map +0 -1
  81. package/dist/commands/invitation.d.ts +0 -19
  82. package/dist/commands/invitation.js +0 -94
  83. package/dist/commands/invitation.js.map +0 -1
  84. package/dist/commands/list-skills.d.ts +0 -4
  85. package/dist/commands/list-skills.js +0 -52
  86. package/dist/commands/list-skills.js.map +0 -1
  87. package/dist/commands/login.d.ts +0 -22
  88. package/dist/commands/login.js +0 -184
  89. package/dist/commands/login.js.map +0 -1
  90. package/dist/commands/logout.d.ts +0 -1
  91. package/dist/commands/logout.js +0 -17
  92. package/dist/commands/logout.js.map +0 -1
  93. package/dist/commands/mcp.d.ts +0 -14
  94. package/dist/commands/mcp.js +0 -108
  95. package/dist/commands/mcp.js.map +0 -1
  96. package/dist/commands/membership.d.ts +0 -20
  97. package/dist/commands/membership.js +0 -129
  98. package/dist/commands/membership.js.map +0 -1
  99. package/dist/commands/migrations.d.ts +0 -2
  100. package/dist/commands/migrations.js +0 -49
  101. package/dist/commands/migrations.js.map +0 -1
  102. package/dist/commands/onboard-user.d.ts +0 -7
  103. package/dist/commands/onboard-user.js +0 -61
  104. package/dist/commands/onboard-user.js.map +0 -1
  105. package/dist/commands/org-domain.d.ts +0 -4
  106. package/dist/commands/org-domain.js +0 -45
  107. package/dist/commands/org-domain.js.map +0 -1
  108. package/dist/commands/organization.d.ts +0 -14
  109. package/dist/commands/organization.js +0 -103
  110. package/dist/commands/organization.js.map +0 -1
  111. package/dist/commands/permission.d.ts +0 -20
  112. package/dist/commands/permission.js +0 -93
  113. package/dist/commands/permission.js.map +0 -1
  114. package/dist/commands/portal.d.ts +0 -7
  115. package/dist/commands/portal.js +0 -26
  116. package/dist/commands/portal.js.map +0 -1
  117. package/dist/commands/role.d.ts +0 -17
  118. package/dist/commands/role.js +0 -122
  119. package/dist/commands/role.js.map +0 -1
  120. package/dist/commands/seed.d.ts +0 -6
  121. package/dist/commands/seed.js +0 -297
  122. package/dist/commands/seed.js.map +0 -1
  123. package/dist/commands/session.d.ts +0 -8
  124. package/dist/commands/session.js +0 -63
  125. package/dist/commands/session.js.map +0 -1
  126. package/dist/commands/setup-org.d.ts +0 -6
  127. package/dist/commands/setup-org.js +0 -99
  128. package/dist/commands/setup-org.js.map +0 -1
  129. package/dist/commands/telemetry.d.ts +0 -3
  130. package/dist/commands/telemetry.js +0 -88
  131. package/dist/commands/telemetry.js.map +0 -1
  132. package/dist/commands/uninstall-skill.d.ts +0 -11
  133. package/dist/commands/uninstall-skill.js +0 -117
  134. package/dist/commands/uninstall-skill.js.map +0 -1
  135. package/dist/commands/user.d.ts +0 -19
  136. package/dist/commands/user.js +0 -92
  137. package/dist/commands/user.js.map +0 -1
  138. package/dist/commands/vault-run.d.ts +0 -13
  139. package/dist/commands/vault-run.js +0 -194
  140. package/dist/commands/vault-run.js.map +0 -1
  141. package/dist/commands/vault.d.ts +0 -25
  142. package/dist/commands/vault.js +0 -153
  143. package/dist/commands/vault.js.map +0 -1
  144. package/dist/commands/webhook.d.ts +0 -3
  145. package/dist/commands/webhook.js +0 -92
  146. package/dist/commands/webhook.js.map +0 -1
  147. package/dist/craft-pre-release.sh +0 -10
  148. package/dist/dashboard/components/AnimatedLogo.d.ts +0 -8
  149. package/dist/dashboard/components/AnimatedLogo.js +0 -16
  150. package/dist/dashboard/components/AnimatedLogo.js.map +0 -1
  151. package/dist/dashboard/components/CompletionView.d.ts +0 -13
  152. package/dist/dashboard/components/CompletionView.js +0 -25
  153. package/dist/dashboard/components/CompletionView.js.map +0 -1
  154. package/dist/dashboard/components/ConfirmPrompt.d.ts +0 -9
  155. package/dist/dashboard/components/ConfirmPrompt.js +0 -25
  156. package/dist/dashboard/components/ConfirmPrompt.js.map +0 -1
  157. package/dist/dashboard/components/CredentialsForm.d.ts +0 -10
  158. package/dist/dashboard/components/CredentialsForm.js +0 -47
  159. package/dist/dashboard/components/CredentialsForm.js.map +0 -1
  160. package/dist/dashboard/components/Dashboard.d.ts +0 -3
  161. package/dist/dashboard/components/Dashboard.js +0 -100
  162. package/dist/dashboard/components/Dashboard.js.map +0 -1
  163. package/dist/dashboard/components/DashboardLayout.d.ts +0 -24
  164. package/dist/dashboard/components/DashboardLayout.js +0 -25
  165. package/dist/dashboard/components/DashboardLayout.js.map +0 -1
  166. package/dist/dashboard/components/DiffPanel.d.ts +0 -9
  167. package/dist/dashboard/components/DiffPanel.js +0 -136
  168. package/dist/dashboard/components/DiffPanel.js.map +0 -1
  169. package/dist/dashboard/components/InlinePrompt.d.ts +0 -8
  170. package/dist/dashboard/components/InlinePrompt.js +0 -19
  171. package/dist/dashboard/components/InlinePrompt.js.map +0 -1
  172. package/dist/dashboard/components/OutputPanel.d.ts +0 -10
  173. package/dist/dashboard/components/OutputPanel.js +0 -100
  174. package/dist/dashboard/components/OutputPanel.js.map +0 -1
  175. package/dist/dashboard/components/Panel.d.ts +0 -12
  176. package/dist/dashboard/components/Panel.js +0 -6
  177. package/dist/dashboard/components/Panel.js.map +0 -1
  178. package/dist/dashboard/components/TextInput.d.ts +0 -13
  179. package/dist/dashboard/components/TextInput.js +0 -57
  180. package/dist/dashboard/components/TextInput.js.map +0 -1
  181. package/dist/dashboard/components/WelcomeArt.d.ts +0 -2
  182. package/dist/dashboard/components/WelcomeArt.js +0 -9
  183. package/dist/dashboard/components/WelcomeArt.js.map +0 -1
  184. package/dist/dashboard/hooks/useAnimation.d.ts +0 -7
  185. package/dist/dashboard/hooks/useAnimation.js +0 -24
  186. package/dist/dashboard/hooks/useAnimation.js.map +0 -1
  187. package/dist/dashboard/hooks/useKeyboard.d.ts +0 -8
  188. package/dist/dashboard/hooks/useKeyboard.js +0 -18
  189. package/dist/dashboard/hooks/useKeyboard.js.map +0 -1
  190. package/dist/dashboard/hooks/useTerminalSize.d.ts +0 -8
  191. package/dist/dashboard/hooks/useTerminalSize.js +0 -23
  192. package/dist/dashboard/hooks/useTerminalSize.js.map +0 -1
  193. package/dist/dashboard/index.d.ts +0 -6
  194. package/dist/dashboard/index.js +0 -36
  195. package/dist/dashboard/index.js.map +0 -1
  196. package/dist/dashboard/lib/diff-utils.d.ts +0 -21
  197. package/dist/dashboard/lib/diff-utils.js +0 -271
  198. package/dist/dashboard/lib/diff-utils.js.map +0 -1
  199. package/dist/dashboard/lib/logo-frames.d.ts +0 -20
  200. package/dist/dashboard/lib/logo-frames.js +0 -109
  201. package/dist/dashboard/lib/logo-frames.js.map +0 -1
  202. package/dist/dashboard/lib/welcome-art.d.ts +0 -1
  203. package/dist/dashboard/lib/welcome-art.js +0 -5
  204. package/dist/dashboard/lib/welcome-art.js.map +0 -1
  205. package/dist/dashboard/types.d.ts +0 -5
  206. package/dist/dashboard/types.js +0 -2
  207. package/dist/dashboard/types.js.map +0 -1
  208. package/dist/doctor/agent-prompt.d.ts +0 -10
  209. package/dist/doctor/agent-prompt.js +0 -190
  210. package/dist/doctor/agent-prompt.js.map +0 -1
  211. package/dist/doctor/checks/ai-analysis.d.ts +0 -9
  212. package/dist/doctor/checks/ai-analysis.js +0 -124
  213. package/dist/doctor/checks/ai-analysis.js.map +0 -1
  214. package/dist/doctor/checks/auth-patterns.d.ts +0 -2
  215. package/dist/doctor/checks/auth-patterns.js +0 -569
  216. package/dist/doctor/checks/auth-patterns.js.map +0 -1
  217. package/dist/doctor/checks/connectivity.d.ts +0 -2
  218. package/dist/doctor/checks/connectivity.js +0 -35
  219. package/dist/doctor/checks/connectivity.js.map +0 -1
  220. package/dist/doctor/checks/dashboard.d.ts +0 -3
  221. package/dist/doctor/checks/dashboard.js +0 -123
  222. package/dist/doctor/checks/dashboard.js.map +0 -1
  223. package/dist/doctor/checks/environment.d.ts +0 -2
  224. package/dist/doctor/checks/environment.js +0 -86
  225. package/dist/doctor/checks/environment.js.map +0 -1
  226. package/dist/doctor/checks/framework.d.ts +0 -2
  227. package/dist/doctor/checks/framework.js +0 -94
  228. package/dist/doctor/checks/framework.js.map +0 -1
  229. package/dist/doctor/checks/host-execution.d.ts +0 -2
  230. package/dist/doctor/checks/host-execution.js +0 -21
  231. package/dist/doctor/checks/host-execution.js.map +0 -1
  232. package/dist/doctor/checks/language.d.ts +0 -6
  233. package/dist/doctor/checks/language.js +0 -104
  234. package/dist/doctor/checks/language.js.map +0 -1
  235. package/dist/doctor/checks/mcp.d.ts +0 -15
  236. package/dist/doctor/checks/mcp.js +0 -34
  237. package/dist/doctor/checks/mcp.js.map +0 -1
  238. package/dist/doctor/checks/runtime.d.ts +0 -2
  239. package/dist/doctor/checks/runtime.js +0 -20
  240. package/dist/doctor/checks/runtime.js.map +0 -1
  241. package/dist/doctor/checks/sdk.d.ts +0 -2
  242. package/dist/doctor/checks/sdk.js +0 -192
  243. package/dist/doctor/checks/sdk.js.map +0 -1
  244. package/dist/doctor/checks/skills.d.ts +0 -9
  245. package/dist/doctor/checks/skills.js +0 -84
  246. package/dist/doctor/checks/skills.js.map +0 -1
  247. package/dist/doctor/clipboard.d.ts +0 -1
  248. package/dist/doctor/clipboard.js +0 -43
  249. package/dist/doctor/clipboard.js.map +0 -1
  250. package/dist/doctor/index.d.ts +0 -26
  251. package/dist/doctor/index.js +0 -182
  252. package/dist/doctor/index.js.map +0 -1
  253. package/dist/doctor/issues.d.ts +0 -63
  254. package/dist/doctor/issues.js +0 -198
  255. package/dist/doctor/issues.js.map +0 -1
  256. package/dist/doctor/json-output.d.ts +0 -2
  257. package/dist/doctor/json-output.js +0 -4
  258. package/dist/doctor/json-output.js.map +0 -1
  259. package/dist/doctor/output.d.ts +0 -7
  260. package/dist/doctor/output.js +0 -288
  261. package/dist/doctor/output.js.map +0 -1
  262. package/dist/doctor/types.d.ts +0 -203
  263. package/dist/doctor/types.js +0 -2
  264. package/dist/doctor/types.js.map +0 -1
  265. package/dist/emulate/core/id.d.ts +0 -48
  266. package/dist/emulate/core/id.js +0 -73
  267. package/dist/emulate/core/id.js.map +0 -1
  268. package/dist/emulate/core/index.d.ts +0 -8
  269. package/dist/emulate/core/index.js +0 -8
  270. package/dist/emulate/core/index.js.map +0 -1
  271. package/dist/emulate/core/jwt.d.ts +0 -28
  272. package/dist/emulate/core/jwt.js +0 -78
  273. package/dist/emulate/core/jwt.js.map +0 -1
  274. package/dist/emulate/core/middleware/auth.d.ts +0 -15
  275. package/dist/emulate/core/middleware/auth.js +0 -17
  276. package/dist/emulate/core/middleware/auth.js.map +0 -1
  277. package/dist/emulate/core/middleware/error-handler.d.ts +0 -22
  278. package/dist/emulate/core/middleware/error-handler.js +0 -72
  279. package/dist/emulate/core/middleware/error-handler.js.map +0 -1
  280. package/dist/emulate/core/pagination.d.ts +0 -27
  281. package/dist/emulate/core/pagination.js +0 -43
  282. package/dist/emulate/core/pagination.js.map +0 -1
  283. package/dist/emulate/core/plugin.d.ts +0 -15
  284. package/dist/emulate/core/plugin.js +0 -2
  285. package/dist/emulate/core/plugin.js.map +0 -1
  286. package/dist/emulate/core/server.d.ts +0 -17
  287. package/dist/emulate/core/server.js +0 -90
  288. package/dist/emulate/core/server.js.map +0 -1
  289. package/dist/emulate/core/store.d.ts +0 -44
  290. package/dist/emulate/core/store.js +0 -169
  291. package/dist/emulate/core/store.js.map +0 -1
  292. package/dist/emulate/index.d.ts +0 -25
  293. package/dist/emulate/index.js +0 -47
  294. package/dist/emulate/index.js.map +0 -1
  295. package/dist/emulate/workos/constants.d.ts +0 -56
  296. package/dist/emulate/workos/constants.js +0 -56
  297. package/dist/emulate/workos/constants.js.map +0 -1
  298. package/dist/emulate/workos/entities.d.ts +0 -360
  299. package/dist/emulate/workos/entities.js +0 -2
  300. package/dist/emulate/workos/entities.js.map +0 -1
  301. package/dist/emulate/workos/event-bus.d.ts +0 -17
  302. package/dist/emulate/workos/event-bus.js +0 -70
  303. package/dist/emulate/workos/event-bus.js.map +0 -1
  304. package/dist/emulate/workos/helpers.d.ts +0 -72
  305. package/dist/emulate/workos/helpers.js +0 -211
  306. package/dist/emulate/workos/helpers.js.map +0 -1
  307. package/dist/emulate/workos/index.d.ts +0 -93
  308. package/dist/emulate/workos/index.js +0 -326
  309. package/dist/emulate/workos/index.js.map +0 -1
  310. package/dist/emulate/workos/role-helpers.d.ts +0 -21
  311. package/dist/emulate/workos/role-helpers.js +0 -130
  312. package/dist/emulate/workos/role-helpers.js.map +0 -1
  313. package/dist/emulate/workos/routes/api-keys.d.ts +0 -2
  314. package/dist/emulate/workos/routes/api-keys.js +0 -32
  315. package/dist/emulate/workos/routes/api-keys.js.map +0 -1
  316. package/dist/emulate/workos/routes/audit-logs.d.ts +0 -2
  317. package/dist/emulate/workos/routes/audit-logs.js +0 -104
  318. package/dist/emulate/workos/routes/audit-logs.js.map +0 -1
  319. package/dist/emulate/workos/routes/auth-challenges.d.ts +0 -2
  320. package/dist/emulate/workos/routes/auth-challenges.js +0 -51
  321. package/dist/emulate/workos/routes/auth-challenges.js.map +0 -1
  322. package/dist/emulate/workos/routes/auth-factors.d.ts +0 -2
  323. package/dist/emulate/workos/routes/auth-factors.js +0 -51
  324. package/dist/emulate/workos/routes/auth-factors.js.map +0 -1
  325. package/dist/emulate/workos/routes/auth.d.ts +0 -2
  326. package/dist/emulate/workos/routes/auth.js +0 -350
  327. package/dist/emulate/workos/routes/auth.js.map +0 -1
  328. package/dist/emulate/workos/routes/authorization-checks.d.ts +0 -10
  329. package/dist/emulate/workos/routes/authorization-checks.js +0 -123
  330. package/dist/emulate/workos/routes/authorization-checks.js.map +0 -1
  331. package/dist/emulate/workos/routes/authorization-org-roles.d.ts +0 -2
  332. package/dist/emulate/workos/routes/authorization-org-roles.js +0 -64
  333. package/dist/emulate/workos/routes/authorization-org-roles.js.map +0 -1
  334. package/dist/emulate/workos/routes/authorization-permissions.d.ts +0 -2
  335. package/dist/emulate/workos/routes/authorization-permissions.js +0 -67
  336. package/dist/emulate/workos/routes/authorization-permissions.js.map +0 -1
  337. package/dist/emulate/workos/routes/authorization-resources.d.ts +0 -2
  338. package/dist/emulate/workos/routes/authorization-resources.js +0 -117
  339. package/dist/emulate/workos/routes/authorization-resources.js.map +0 -1
  340. package/dist/emulate/workos/routes/authorization-roles.d.ts +0 -2
  341. package/dist/emulate/workos/routes/authorization-roles.js +0 -13
  342. package/dist/emulate/workos/routes/authorization-roles.js.map +0 -1
  343. package/dist/emulate/workos/routes/config.d.ts +0 -2
  344. package/dist/emulate/workos/routes/config.js +0 -57
  345. package/dist/emulate/workos/routes/config.js.map +0 -1
  346. package/dist/emulate/workos/routes/connect.d.ts +0 -2
  347. package/dist/emulate/workos/routes/connect.js +0 -65
  348. package/dist/emulate/workos/routes/connect.js.map +0 -1
  349. package/dist/emulate/workos/routes/connections.d.ts +0 -2
  350. package/dist/emulate/workos/routes/connections.js +0 -73
  351. package/dist/emulate/workos/routes/connections.js.map +0 -1
  352. package/dist/emulate/workos/routes/data-integrations.d.ts +0 -2
  353. package/dist/emulate/workos/routes/data-integrations.js +0 -55
  354. package/dist/emulate/workos/routes/data-integrations.js.map +0 -1
  355. package/dist/emulate/workos/routes/directories.d.ts +0 -2
  356. package/dist/emulate/workos/routes/directories.js +0 -90
  357. package/dist/emulate/workos/routes/directories.js.map +0 -1
  358. package/dist/emulate/workos/routes/email-verification.d.ts +0 -2
  359. package/dist/emulate/workos/routes/email-verification.js +0 -49
  360. package/dist/emulate/workos/routes/email-verification.js.map +0 -1
  361. package/dist/emulate/workos/routes/events.d.ts +0 -2
  362. package/dist/emulate/workos/routes/events.js +0 -18
  363. package/dist/emulate/workos/routes/events.js.map +0 -1
  364. package/dist/emulate/workos/routes/feature-flags.d.ts +0 -2
  365. package/dist/emulate/workos/routes/feature-flags.js +0 -103
  366. package/dist/emulate/workos/routes/feature-flags.js.map +0 -1
  367. package/dist/emulate/workos/routes/invitations.d.ts +0 -2
  368. package/dist/emulate/workos/routes/invitations.js +0 -122
  369. package/dist/emulate/workos/routes/invitations.js.map +0 -1
  370. package/dist/emulate/workos/routes/legacy-mfa.d.ts +0 -2
  371. package/dist/emulate/workos/routes/legacy-mfa.js +0 -75
  372. package/dist/emulate/workos/routes/legacy-mfa.js.map +0 -1
  373. package/dist/emulate/workos/routes/magic-auth.d.ts +0 -2
  374. package/dist/emulate/workos/routes/magic-auth.js +0 -32
  375. package/dist/emulate/workos/routes/magic-auth.js.map +0 -1
  376. package/dist/emulate/workos/routes/memberships.d.ts +0 -2
  377. package/dist/emulate/workos/routes/memberships.js +0 -114
  378. package/dist/emulate/workos/routes/memberships.js.map +0 -1
  379. package/dist/emulate/workos/routes/organization-domains.d.ts +0 -2
  380. package/dist/emulate/workos/routes/organization-domains.js +0 -58
  381. package/dist/emulate/workos/routes/organization-domains.js.map +0 -1
  382. package/dist/emulate/workos/routes/organizations.d.ts +0 -2
  383. package/dist/emulate/workos/routes/organizations.js +0 -131
  384. package/dist/emulate/workos/routes/organizations.js.map +0 -1
  385. package/dist/emulate/workos/routes/password-reset.d.ts +0 -2
  386. package/dist/emulate/workos/routes/password-reset.js +0 -61
  387. package/dist/emulate/workos/routes/password-reset.js.map +0 -1
  388. package/dist/emulate/workos/routes/pipes.d.ts +0 -2
  389. package/dist/emulate/workos/routes/pipes.js +0 -82
  390. package/dist/emulate/workos/routes/pipes.js.map +0 -1
  391. package/dist/emulate/workos/routes/portal.d.ts +0 -2
  392. package/dist/emulate/workos/routes/portal.js +0 -18
  393. package/dist/emulate/workos/routes/portal.js.map +0 -1
  394. package/dist/emulate/workos/routes/radar.d.ts +0 -2
  395. package/dist/emulate/workos/routes/radar.js +0 -41
  396. package/dist/emulate/workos/routes/radar.js.map +0 -1
  397. package/dist/emulate/workos/routes/sessions.d.ts +0 -2
  398. package/dist/emulate/workos/routes/sessions.js +0 -51
  399. package/dist/emulate/workos/routes/sessions.js.map +0 -1
  400. package/dist/emulate/workos/routes/sso.d.ts +0 -2
  401. package/dist/emulate/workos/routes/sso.js +0 -161
  402. package/dist/emulate/workos/routes/sso.js.map +0 -1
  403. package/dist/emulate/workos/routes/user-features.d.ts +0 -2
  404. package/dist/emulate/workos/routes/user-features.js +0 -50
  405. package/dist/emulate/workos/routes/user-features.js.map +0 -1
  406. package/dist/emulate/workos/routes/users.d.ts +0 -2
  407. package/dist/emulate/workos/routes/users.js +0 -129
  408. package/dist/emulate/workos/routes/users.js.map +0 -1
  409. package/dist/emulate/workos/routes/webhook-endpoints.d.ts +0 -2
  410. package/dist/emulate/workos/routes/webhook-endpoints.js +0 -67
  411. package/dist/emulate/workos/routes/webhook-endpoints.js.map +0 -1
  412. package/dist/emulate/workos/routes/widgets.d.ts +0 -2
  413. package/dist/emulate/workos/routes/widgets.js +0 -27
  414. package/dist/emulate/workos/routes/widgets.js.map +0 -1
  415. package/dist/emulate/workos/store.d.ts +0 -48
  416. package/dist/emulate/workos/store.js +0 -102
  417. package/dist/emulate/workos/store.js.map +0 -1
  418. package/dist/emulate/workos/webhook-signer.d.ts +0 -1
  419. package/dist/emulate/workos/webhook-signer.js +0 -8
  420. package/dist/emulate/workos/webhook-signer.js.map +0 -1
  421. package/dist/gen-routes-lib.spec.ts +0 -659
  422. package/dist/gen-routes-lib.ts +0 -647
  423. package/dist/gen-routes.ts +0 -96
  424. package/dist/integrations/dotnet/index.d.ts +0 -8
  425. package/dist/integrations/dotnet/index.js +0 -170
  426. package/dist/integrations/dotnet/index.js.map +0 -1
  427. package/dist/integrations/elixir/index.d.ts +0 -8
  428. package/dist/integrations/elixir/index.js +0 -146
  429. package/dist/integrations/elixir/index.js.map +0 -1
  430. package/dist/integrations/go/index.d.ts +0 -11
  431. package/dist/integrations/go/index.js +0 -212
  432. package/dist/integrations/go/index.js.map +0 -1
  433. package/dist/integrations/kotlin/index.d.ts +0 -4
  434. package/dist/integrations/kotlin/index.js +0 -78
  435. package/dist/integrations/kotlin/index.js.map +0 -1
  436. package/dist/integrations/nextjs/index.d.ts +0 -4
  437. package/dist/integrations/nextjs/index.js +0 -90
  438. package/dist/integrations/nextjs/index.js.map +0 -1
  439. package/dist/integrations/nextjs/utils.d.ts +0 -8
  440. package/dist/integrations/nextjs/utils.js +0 -53
  441. package/dist/integrations/nextjs/utils.js.map +0 -1
  442. package/dist/integrations/node/index.d.ts +0 -4
  443. package/dist/integrations/node/index.js +0 -52
  444. package/dist/integrations/node/index.js.map +0 -1
  445. package/dist/integrations/php/index.d.ts +0 -4
  446. package/dist/integrations/php/index.js +0 -51
  447. package/dist/integrations/php/index.js.map +0 -1
  448. package/dist/integrations/php-laravel/index.d.ts +0 -4
  449. package/dist/integrations/php-laravel/index.js +0 -51
  450. package/dist/integrations/php-laravel/index.js.map +0 -1
  451. package/dist/integrations/python/index.d.ts +0 -9
  452. package/dist/integrations/python/index.js +0 -249
  453. package/dist/integrations/python/index.js.map +0 -1
  454. package/dist/integrations/react/index.d.ts +0 -4
  455. package/dist/integrations/react/index.js +0 -49
  456. package/dist/integrations/react/index.js.map +0 -1
  457. package/dist/integrations/react-router/index.d.ts +0 -4
  458. package/dist/integrations/react-router/index.js +0 -94
  459. package/dist/integrations/react-router/index.js.map +0 -1
  460. package/dist/integrations/react-router/utils.d.ts +0 -10
  461. package/dist/integrations/react-router/utils.js +0 -146
  462. package/dist/integrations/react-router/utils.js.map +0 -1
  463. package/dist/integrations/ruby/index.d.ts +0 -8
  464. package/dist/integrations/ruby/index.js +0 -137
  465. package/dist/integrations/ruby/index.js.map +0 -1
  466. package/dist/integrations/sveltekit/index.d.ts +0 -4
  467. package/dist/integrations/sveltekit/index.js +0 -50
  468. package/dist/integrations/sveltekit/index.js.map +0 -1
  469. package/dist/integrations/tanstack-start/index.d.ts +0 -4
  470. package/dist/integrations/tanstack-start/index.js +0 -51
  471. package/dist/integrations/tanstack-start/index.js.map +0 -1
  472. package/dist/integrations/vanilla-js/index.d.ts +0 -4
  473. package/dist/integrations/vanilla-js/index.js +0 -49
  474. package/dist/integrations/vanilla-js/index.js.map +0 -1
  475. package/dist/lib/__test-helpers__/mock-unclaimed-env-api-error.d.ts +0 -7
  476. package/dist/lib/__test-helpers__/mock-unclaimed-env-api-error.js +0 -12
  477. package/dist/lib/__test-helpers__/mock-unclaimed-env-api-error.js.map +0 -1
  478. package/dist/lib/adapters/cli-adapter.d.ts +0 -84
  479. package/dist/lib/adapters/cli-adapter.js +0 -525
  480. package/dist/lib/adapters/cli-adapter.js.map +0 -1
  481. package/dist/lib/adapters/dashboard-adapter.d.ts +0 -34
  482. package/dist/lib/adapters/dashboard-adapter.js +0 -121
  483. package/dist/lib/adapters/dashboard-adapter.js.map +0 -1
  484. package/dist/lib/adapters/headless-adapter.d.ts +0 -73
  485. package/dist/lib/adapters/headless-adapter.js +0 -310
  486. package/dist/lib/adapters/headless-adapter.js.map +0 -1
  487. package/dist/lib/adapters/index.d.ts +0 -4
  488. package/dist/lib/adapters/index.js +0 -4
  489. package/dist/lib/adapters/index.js.map +0 -1
  490. package/dist/lib/adapters/types.d.ts +0 -41
  491. package/dist/lib/adapters/types.js +0 -2
  492. package/dist/lib/adapters/types.js.map +0 -1
  493. package/dist/lib/agent-interface.d.ts +0 -84
  494. package/dist/lib/agent-interface.js +0 -826
  495. package/dist/lib/agent-interface.js.map +0 -1
  496. package/dist/lib/agent-runner.d.ts +0 -9
  497. package/dist/lib/agent-runner.js +0 -261
  498. package/dist/lib/agent-runner.js.map +0 -1
  499. package/dist/lib/ai-content.d.ts +0 -14
  500. package/dist/lib/ai-content.js +0 -131
  501. package/dist/lib/ai-content.js.map +0 -1
  502. package/dist/lib/api-error-handler.d.ts +0 -18
  503. package/dist/lib/api-error-handler.js +0 -76
  504. package/dist/lib/api-error-handler.js.map +0 -1
  505. package/dist/lib/api-key.d.ts +0 -14
  506. package/dist/lib/api-key.js +0 -36
  507. package/dist/lib/api-key.js.map +0 -1
  508. package/dist/lib/api.d.ts +0 -25
  509. package/dist/lib/api.js +0 -120
  510. package/dist/lib/api.js.map +0 -1
  511. package/dist/lib/background-refresh.d.ts +0 -29
  512. package/dist/lib/background-refresh.js +0 -95
  513. package/dist/lib/background-refresh.js.map +0 -1
  514. package/dist/lib/command-aliases.d.ts +0 -8
  515. package/dist/lib/command-aliases.js +0 -12
  516. package/dist/lib/command-aliases.js.map +0 -1
  517. package/dist/lib/config-store.d.ts +0 -50
  518. package/dist/lib/config-store.js +0 -269
  519. package/dist/lib/config-store.js.map +0 -1
  520. package/dist/lib/config.d.ts +0 -34
  521. package/dist/lib/config.js +0 -37
  522. package/dist/lib/config.js.map +0 -1
  523. package/dist/lib/constants.d.ts +0 -43
  524. package/dist/lib/constants.js +0 -42
  525. package/dist/lib/constants.js.map +0 -1
  526. package/dist/lib/credential-discovery.d.ts +0 -42
  527. package/dist/lib/credential-discovery.js +0 -100
  528. package/dist/lib/credential-discovery.js.map +0 -1
  529. package/dist/lib/credential-proxy.d.ts +0 -45
  530. package/dist/lib/credential-proxy.js +0 -364
  531. package/dist/lib/credential-proxy.js.map +0 -1
  532. package/dist/lib/credential-store.d.ts +0 -32
  533. package/dist/lib/credential-store.js +0 -236
  534. package/dist/lib/credential-store.js.map +0 -1
  535. package/dist/lib/credentials.d.ts +0 -13
  536. package/dist/lib/credentials.js +0 -34
  537. package/dist/lib/credentials.js.map +0 -1
  538. package/dist/lib/dev-command.d.ts +0 -26
  539. package/dist/lib/dev-command.js +0 -129
  540. package/dist/lib/dev-command.js.map +0 -1
  541. package/dist/lib/device-auth.d.ts +0 -48
  542. package/dist/lib/device-auth.js +0 -176
  543. package/dist/lib/device-auth.js.map +0 -1
  544. package/dist/lib/device-id.d.ts +0 -25
  545. package/dist/lib/device-id.js +0 -102
  546. package/dist/lib/device-id.js.map +0 -1
  547. package/dist/lib/ensure-auth.d.ts +0 -12
  548. package/dist/lib/ensure-auth.js +0 -111
  549. package/dist/lib/ensure-auth.js.map +0 -1
  550. package/dist/lib/env-writer.d.ts +0 -25
  551. package/dist/lib/env-writer.js +0 -90
  552. package/dist/lib/env-writer.js.map +0 -1
  553. package/dist/lib/events.d.ts +0 -215
  554. package/dist/lib/events.js +0 -19
  555. package/dist/lib/events.js.map +0 -1
  556. package/dist/lib/framework-config.d.ts +0 -127
  557. package/dist/lib/framework-config.js +0 -11
  558. package/dist/lib/framework-config.js.map +0 -1
  559. package/dist/lib/helper-functions.d.ts +0 -1
  560. package/dist/lib/helper-functions.js +0 -2
  561. package/dist/lib/helper-functions.js.map +0 -1
  562. package/dist/lib/host-probe.d.ts +0 -28
  563. package/dist/lib/host-probe.js +0 -154
  564. package/dist/lib/host-probe.js.map +0 -1
  565. package/dist/lib/installer-core.d.ts +0 -556
  566. package/dist/lib/installer-core.js +0 -1115
  567. package/dist/lib/installer-core.js.map +0 -1
  568. package/dist/lib/installer-core.types.d.ts +0 -160
  569. package/dist/lib/installer-core.types.js +0 -2
  570. package/dist/lib/installer-core.types.js.map +0 -1
  571. package/dist/lib/mcp-clients.d.ts +0 -39
  572. package/dist/lib/mcp-clients.js +0 -284
  573. package/dist/lib/mcp-clients.js.map +0 -1
  574. package/dist/lib/mcp-notice.d.ts +0 -72
  575. package/dist/lib/mcp-notice.js +0 -275
  576. package/dist/lib/mcp-notice.js.map +0 -1
  577. package/dist/lib/port-detection.d.ts +0 -7
  578. package/dist/lib/port-detection.js +0 -238
  579. package/dist/lib/port-detection.js.map +0 -1
  580. package/dist/lib/post-install.d.ts +0 -8
  581. package/dist/lib/post-install.js +0 -51
  582. package/dist/lib/post-install.js.map +0 -1
  583. package/dist/lib/preferences.d.ts +0 -115
  584. package/dist/lib/preferences.js +0 -201
  585. package/dist/lib/preferences.js.map +0 -1
  586. package/dist/lib/progress-tracker.d.ts +0 -22
  587. package/dist/lib/progress-tracker.js +0 -47
  588. package/dist/lib/progress-tracker.js.map +0 -1
  589. package/dist/lib/registry.d.ts +0 -42
  590. package/dist/lib/registry.js +0 -96
  591. package/dist/lib/registry.js.map +0 -1
  592. package/dist/lib/resolve-install-credentials.d.ts +0 -11
  593. package/dist/lib/resolve-install-credentials.js +0 -53
  594. package/dist/lib/resolve-install-credentials.js.map +0 -1
  595. package/dist/lib/run-with-core.d.ts +0 -7
  596. package/dist/lib/run-with-core.js +0 -522
  597. package/dist/lib/run-with-core.js.map +0 -1
  598. package/dist/lib/safe-tools.d.ts +0 -2
  599. package/dist/lib/safe-tools.js +0 -212
  600. package/dist/lib/safe-tools.js.map +0 -1
  601. package/dist/lib/scaffold/index.d.ts +0 -1
  602. package/dist/lib/scaffold/index.js +0 -2
  603. package/dist/lib/scaffold/index.js.map +0 -1
  604. package/dist/lib/scaffold/scaffold.d.ts +0 -66
  605. package/dist/lib/scaffold/scaffold.js +0 -156
  606. package/dist/lib/scaffold/scaffold.js.map +0 -1
  607. package/dist/lib/settings.d.ts +0 -60
  608. package/dist/lib/settings.js +0 -31
  609. package/dist/lib/settings.js.map +0 -1
  610. package/dist/lib/staging-api.d.ts +0 -22
  611. package/dist/lib/staging-api.js +0 -74
  612. package/dist/lib/staging-api.js.map +0 -1
  613. package/dist/lib/startup-notice-gate.d.ts +0 -21
  614. package/dist/lib/startup-notice-gate.js +0 -29
  615. package/dist/lib/startup-notice-gate.js.map +0 -1
  616. package/dist/lib/telemetry-notice.d.ts +0 -25
  617. package/dist/lib/telemetry-notice.js +0 -59
  618. package/dist/lib/telemetry-notice.js.map +0 -1
  619. package/dist/lib/token-refresh-client.d.ts +0 -23
  620. package/dist/lib/token-refresh-client.js +0 -89
  621. package/dist/lib/token-refresh-client.js.map +0 -1
  622. package/dist/lib/token-refresh.d.ts +0 -12
  623. package/dist/lib/token-refresh.js +0 -27
  624. package/dist/lib/token-refresh.js.map +0 -1
  625. package/dist/lib/unclaimed-env-api.d.ts +0 -42
  626. package/dist/lib/unclaimed-env-api.js +0 -139
  627. package/dist/lib/unclaimed-env-api.js.map +0 -1
  628. package/dist/lib/unclaimed-env-provision.d.ts +0 -24
  629. package/dist/lib/unclaimed-env-provision.js +0 -77
  630. package/dist/lib/unclaimed-env-provision.js.map +0 -1
  631. package/dist/lib/unclaimed-warning.d.ts +0 -15
  632. package/dist/lib/unclaimed-warning.js +0 -77
  633. package/dist/lib/unclaimed-warning.js.map +0 -1
  634. package/dist/lib/validation/build-validator.d.ts +0 -21
  635. package/dist/lib/validation/build-validator.js +0 -153
  636. package/dist/lib/validation/build-validator.js.map +0 -1
  637. package/dist/lib/validation/index.d.ts +0 -4
  638. package/dist/lib/validation/index.js +0 -4
  639. package/dist/lib/validation/index.js.map +0 -1
  640. package/dist/lib/validation/quick-checks.d.ts +0 -19
  641. package/dist/lib/validation/quick-checks.js +0 -192
  642. package/dist/lib/validation/quick-checks.js.map +0 -1
  643. package/dist/lib/validation/security-checks.d.ts +0 -35
  644. package/dist/lib/validation/security-checks.js +0 -105
  645. package/dist/lib/validation/security-checks.js.map +0 -1
  646. package/dist/lib/validation/types.d.ts +0 -56
  647. package/dist/lib/validation/types.js +0 -2
  648. package/dist/lib/validation/types.js.map +0 -1
  649. package/dist/lib/validation/validator.d.ts +0 -13
  650. package/dist/lib/validation/validator.js +0 -684
  651. package/dist/lib/validation/validator.js.map +0 -1
  652. package/dist/lib/version-check.d.ts +0 -6
  653. package/dist/lib/version-check.js +0 -46
  654. package/dist/lib/version-check.js.map +0 -1
  655. package/dist/lib/workos-api.d.ts +0 -30
  656. package/dist/lib/workos-api.js +0 -69
  657. package/dist/lib/workos-api.js.map +0 -1
  658. package/dist/lib/workos-client.d.ts +0 -58
  659. package/dist/lib/workos-client.js +0 -140
  660. package/dist/lib/workos-client.js.map +0 -1
  661. package/dist/lib/workos-management.d.ts +0 -32
  662. package/dist/lib/workos-management.js +0 -142
  663. package/dist/lib/workos-management.js.map +0 -1
  664. package/dist/nextjs/nextjs-installer-agent.d.ts +0 -5
  665. package/dist/nextjs/nextjs-installer-agent.js +0 -6
  666. package/dist/nextjs/nextjs-installer-agent.js.map +0 -1
  667. package/dist/nextjs/utils.d.ts +0 -4
  668. package/dist/nextjs/utils.js +0 -5
  669. package/dist/nextjs/utils.js.map +0 -1
  670. package/dist/react/react-installer-agent.d.ts +0 -4
  671. package/dist/react/react-installer-agent.js +0 -5
  672. package/dist/react/react-installer-agent.js.map +0 -1
  673. package/dist/react-router/react-router-installer-agent.d.ts +0 -4
  674. package/dist/react-router/react-router-installer-agent.js +0 -5
  675. package/dist/react-router/react-router-installer-agent.js.map +0 -1
  676. package/dist/react-router/utils.d.ts +0 -4
  677. package/dist/react-router/utils.js +0 -5
  678. package/dist/react-router/utils.js.map +0 -1
  679. package/dist/run.d.ts +0 -32
  680. package/dist/run.js +0 -54
  681. package/dist/run.js.map +0 -1
  682. package/dist/smoke-test.ts +0 -881
  683. package/dist/steps/add-or-update-environment-variables.d.ts +0 -10
  684. package/dist/steps/add-or-update-environment-variables.js +0 -155
  685. package/dist/steps/add-or-update-environment-variables.js.map +0 -1
  686. package/dist/steps/index.d.ts +0 -3
  687. package/dist/steps/index.js +0 -4
  688. package/dist/steps/index.js.map +0 -1
  689. package/dist/steps/run-prettier.d.ts +0 -5
  690. package/dist/steps/run-prettier.js +0 -50
  691. package/dist/steps/run-prettier.js.map +0 -1
  692. package/dist/steps/upload-environment-variables/EnvironmentProvider.d.ts +0 -8
  693. package/dist/steps/upload-environment-variables/EnvironmentProvider.js +0 -7
  694. package/dist/steps/upload-environment-variables/EnvironmentProvider.js.map +0 -1
  695. package/dist/steps/upload-environment-variables/index.d.ts +0 -6
  696. package/dist/steps/upload-environment-variables/index.js +0 -57
  697. package/dist/steps/upload-environment-variables/index.js.map +0 -1
  698. package/dist/steps/upload-environment-variables/providers/vercel.d.ts +0 -14
  699. package/dist/steps/upload-environment-variables/providers/vercel.js +0 -107
  700. package/dist/steps/upload-environment-variables/providers/vercel.js.map +0 -1
  701. package/dist/tanstack-start/tanstack-start-installer-agent.d.ts +0 -4
  702. package/dist/tanstack-start/tanstack-start-installer-agent.js +0 -5
  703. package/dist/tanstack-start/tanstack-start-installer-agent.js.map +0 -1
  704. package/dist/telemetry.d.ts +0 -2
  705. package/dist/telemetry.js +0 -29
  706. package/dist/telemetry.js.map +0 -1
  707. package/dist/test/force-insecure-storage.d.ts +0 -1
  708. package/dist/test/force-insecure-storage.js +0 -9
  709. package/dist/test/force-insecure-storage.js.map +0 -1
  710. package/dist/test/setup.d.ts +0 -1
  711. package/dist/test/setup.js +0 -38
  712. package/dist/test/setup.js.map +0 -1
  713. package/dist/utils/analytics.d.ts +0 -66
  714. package/dist/utils/analytics.js +0 -330
  715. package/dist/utils/analytics.js.map +0 -1
  716. package/dist/utils/bash.d.ts +0 -2
  717. package/dist/utils/bash.js +0 -17
  718. package/dist/utils/bash.js.map +0 -1
  719. package/dist/utils/box.d.ts +0 -33
  720. package/dist/utils/box.js +0 -102
  721. package/dist/utils/box.js.map +0 -1
  722. package/dist/utils/clack-utils.d.ts +0 -97
  723. package/dist/utils/clack-utils.js +0 -422
  724. package/dist/utils/clack-utils.js.map +0 -1
  725. package/dist/utils/clack.d.ts +0 -5
  726. package/dist/utils/clack.js +0 -34
  727. package/dist/utils/clack.js.map +0 -1
  728. package/dist/utils/cli-exit.d.ts +0 -15
  729. package/dist/utils/cli-exit.js +0 -11
  730. package/dist/utils/cli-exit.js.map +0 -1
  731. package/dist/utils/cli-symbols.d.ts +0 -32
  732. package/dist/utils/cli-symbols.js +0 -46
  733. package/dist/utils/cli-symbols.js.map +0 -1
  734. package/dist/utils/command-invocation.d.ts +0 -10
  735. package/dist/utils/command-invocation.js +0 -26
  736. package/dist/utils/command-invocation.js.map +0 -1
  737. package/dist/utils/command-telemetry.d.ts +0 -17
  738. package/dist/utils/command-telemetry.js +0 -67
  739. package/dist/utils/command-telemetry.js.map +0 -1
  740. package/dist/utils/crash-reporter.d.ts +0 -13
  741. package/dist/utils/crash-reporter.js +0 -91
  742. package/dist/utils/crash-reporter.js.map +0 -1
  743. package/dist/utils/debug.d.ts +0 -9
  744. package/dist/utils/debug.js +0 -105
  745. package/dist/utils/debug.js.map +0 -1
  746. package/dist/utils/env-parser.d.ts +0 -5
  747. package/dist/utils/env-parser.js +0 -18
  748. package/dist/utils/env-parser.js.map +0 -1
  749. package/dist/utils/environment.d.ts +0 -10
  750. package/dist/utils/environment.js +0 -69
  751. package/dist/utils/environment.js.map +0 -1
  752. package/dist/utils/errors.d.ts +0 -3
  753. package/dist/utils/errors.js +0 -7
  754. package/dist/utils/errors.js.map +0 -1
  755. package/dist/utils/exec-file.d.ts +0 -15
  756. package/dist/utils/exec-file.js +0 -39
  757. package/dist/utils/exec-file.js.map +0 -1
  758. package/dist/utils/exit-codes.d.ts +0 -31
  759. package/dist/utils/exit-codes.js +0 -69
  760. package/dist/utils/exit-codes.js.map +0 -1
  761. package/dist/utils/git-utils.d.ts +0 -23
  762. package/dist/utils/git-utils.js +0 -86
  763. package/dist/utils/git-utils.js.map +0 -1
  764. package/dist/utils/help-json.d.ts +0 -58
  765. package/dist/utils/help-json.js +0 -1466
  766. package/dist/utils/help-json.js.map +0 -1
  767. package/dist/utils/interaction-mode.d.ts +0 -25
  768. package/dist/utils/interaction-mode.js +0 -99
  769. package/dist/utils/interaction-mode.js.map +0 -1
  770. package/dist/utils/lock-art.d.ts +0 -4
  771. package/dist/utils/lock-art.js +0 -73
  772. package/dist/utils/lock-art.js.map +0 -1
  773. package/dist/utils/logging.d.ts +0 -9
  774. package/dist/utils/logging.js +0 -36
  775. package/dist/utils/logging.js.map +0 -1
  776. package/dist/utils/ndjson.d.ts +0 -16
  777. package/dist/utils/ndjson.js +0 -18
  778. package/dist/utils/ndjson.js.map +0 -1
  779. package/dist/utils/output.d.ts +0 -60
  780. package/dist/utils/output.js +0 -124
  781. package/dist/utils/output.js.map +0 -1
  782. package/dist/utils/package-json.d.ts +0 -26
  783. package/dist/utils/package-json.js +0 -32
  784. package/dist/utils/package-json.js.map +0 -1
  785. package/dist/utils/package-manager.d.ts +0 -21
  786. package/dist/utils/package-manager.js +0 -166
  787. package/dist/utils/package-manager.js.map +0 -1
  788. package/dist/utils/paths.d.ts +0 -5
  789. package/dist/utils/paths.js +0 -18
  790. package/dist/utils/paths.js.map +0 -1
  791. package/dist/utils/platform.d.ts +0 -8
  792. package/dist/utils/platform.js +0 -7
  793. package/dist/utils/platform.js.map +0 -1
  794. package/dist/utils/recovery-hints.d.ts +0 -37
  795. package/dist/utils/recovery-hints.js +0 -80
  796. package/dist/utils/recovery-hints.js.map +0 -1
  797. package/dist/utils/redact.d.ts +0 -5
  798. package/dist/utils/redact.js +0 -29
  799. package/dist/utils/redact.js.map +0 -1
  800. package/dist/utils/register-subcommand.d.ts +0 -10
  801. package/dist/utils/register-subcommand.js +0 -33
  802. package/dist/utils/register-subcommand.js.map +0 -1
  803. package/dist/utils/semver.d.ts +0 -10
  804. package/dist/utils/semver.js +0 -43
  805. package/dist/utils/semver.js.map +0 -1
  806. package/dist/utils/string.d.ts +0 -1
  807. package/dist/utils/string.js +0 -6
  808. package/dist/utils/string.js.map +0 -1
  809. package/dist/utils/summary-box.d.ts +0 -18
  810. package/dist/utils/summary-box.js +0 -148
  811. package/dist/utils/summary-box.js.map +0 -1
  812. package/dist/utils/table.d.ts +0 -5
  813. package/dist/utils/table.js +0 -18
  814. package/dist/utils/table.js.map +0 -1
  815. package/dist/utils/telemetry-client.d.ts +0 -43
  816. package/dist/utils/telemetry-client.js +0 -171
  817. package/dist/utils/telemetry-client.js.map +0 -1
  818. package/dist/utils/telemetry-store-forward.d.ts +0 -11
  819. package/dist/utils/telemetry-store-forward.js +0 -94
  820. package/dist/utils/telemetry-store-forward.js.map +0 -1
  821. package/dist/utils/telemetry-types.d.ts +0 -100
  822. package/dist/utils/telemetry-types.js +0 -6
  823. package/dist/utils/telemetry-types.js.map +0 -1
  824. package/dist/utils/types.d.ts +0 -113
  825. package/dist/utils/types.js +0 -2
  826. package/dist/utils/types.js.map +0 -1
  827. package/dist/utils/urls.d.ts +0 -13
  828. package/dist/utils/urls.js +0 -14
  829. package/dist/utils/urls.js.map +0 -1
  830. package/dist/utils/vendor/is-unicorn-supported.d.ts +0 -1
  831. package/dist/utils/vendor/is-unicorn-supported.js +0 -21
  832. package/dist/utils/vendor/is-unicorn-supported.js.map +0 -1
  833. package/dist/vanilla-js/vanilla-js-installer-agent.d.ts +0 -4
  834. package/dist/vanilla-js/vanilla-js-installer-agent.js +0 -5
  835. package/dist/vanilla-js/vanilla-js-installer-agent.js.map +0 -1
@@ -1,72 +0,0 @@
1
- export class WorkOSApiError extends Error {
2
- status;
3
- code;
4
- errors;
5
- constructor(status, message, code, errors) {
6
- super(message);
7
- this.status = status;
8
- this.code = code;
9
- this.errors = errors;
10
- this.name = 'WorkOSApiError';
11
- }
12
- }
13
- export function createApiErrorHandler() {
14
- return (err, c) => {
15
- if (err instanceof WorkOSApiError) {
16
- const body = {
17
- message: err.message,
18
- code: err.code,
19
- };
20
- if (err.errors) {
21
- body.errors = err.errors;
22
- }
23
- return c.json(body, err.status);
24
- }
25
- const status = errorStatus(err);
26
- return c.json({
27
- message: 'Internal Server Error',
28
- code: 'server_error',
29
- }, status);
30
- };
31
- }
32
- export function requestIdMiddleware() {
33
- return async (c, next) => {
34
- const requestId = c.req.header('X-Request-ID') ?? `req_${crypto.randomUUID()}`;
35
- c.set('requestId', requestId);
36
- c.header('X-Request-ID', requestId);
37
- await next();
38
- };
39
- }
40
- export function notFound(resource) {
41
- return new WorkOSApiError(404, resource ? `${resource} not found` : 'Not Found', 'not_found');
42
- }
43
- export function validationError(message, errors) {
44
- return new WorkOSApiError(422, message, 'unprocessable_entity', errors);
45
- }
46
- export function unauthorized() {
47
- return new WorkOSApiError(401, 'Unauthorized', 'unauthorized');
48
- }
49
- export function forbidden() {
50
- return new WorkOSApiError(403, 'Forbidden', 'forbidden');
51
- }
52
- export async function parseJsonBody(c) {
53
- try {
54
- const body = await c.req.json();
55
- if (body && typeof body === 'object' && !Array.isArray(body)) {
56
- return body;
57
- }
58
- return {};
59
- }
60
- catch {
61
- throw new WorkOSApiError(400, 'Problems parsing JSON', 'invalid_request_body');
62
- }
63
- }
64
- function errorStatus(err) {
65
- if (err && typeof err === 'object' && 'status' in err) {
66
- const s = err.status;
67
- if (typeof s === 'number' && Number.isFinite(s))
68
- return s;
69
- }
70
- return 500;
71
- }
72
- //# sourceMappingURL=error-handler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../../../../src/emulate/core/middleware/error-handler.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Context, ErrorHandler, MiddlewareHandler } from 'hono';\nimport type { ContentfulStatusCode } from 'hono/utils/http-status';\n\nexport class WorkOSApiError extends Error {\n constructor(\n public status: number,\n message: string,\n public code: string,\n public errors?: Array<{ field: string; code: string; message?: string }>,\n ) {\n super(message);\n this.name = 'WorkOSApiError';\n }\n}\n\nexport function createApiErrorHandler(): ErrorHandler {\n return (err, c) => {\n if (err instanceof WorkOSApiError) {\n const body: Record<string, unknown> = {\n message: err.message,\n code: err.code,\n };\n if (err.errors) {\n body.errors = err.errors;\n }\n return c.json(body, err.status as ContentfulStatusCode);\n }\n\n const status = errorStatus(err);\n return c.json(\n {\n message: 'Internal Server Error',\n code: 'server_error',\n },\n status as ContentfulStatusCode,\n );\n };\n}\n\nexport function requestIdMiddleware(): MiddlewareHandler {\n return async (c, next) => {\n const requestId = c.req.header('X-Request-ID') ?? `req_${crypto.randomUUID()}`;\n c.set('requestId', requestId);\n c.header('X-Request-ID', requestId);\n await next();\n };\n}\n\nexport function notFound(resource?: string): WorkOSApiError {\n return new WorkOSApiError(404, resource ? `${resource} not found` : 'Not Found', 'not_found');\n}\n\nexport function validationError(message: string, errors?: WorkOSApiError['errors']): WorkOSApiError {\n return new WorkOSApiError(422, message, 'unprocessable_entity', errors);\n}\n\nexport function unauthorized(): WorkOSApiError {\n return new WorkOSApiError(401, 'Unauthorized', 'unauthorized');\n}\n\nexport function forbidden(): WorkOSApiError {\n return new WorkOSApiError(403, 'Forbidden', 'forbidden');\n}\n\nexport async function parseJsonBody(c: Context): Promise<Record<string, unknown>> {\n try {\n const body = await c.req.json();\n if (body && typeof body === 'object' && !Array.isArray(body)) {\n return body as Record<string, unknown>;\n }\n return {};\n } catch {\n throw new WorkOSApiError(400, 'Problems parsing JSON', 'invalid_request_body');\n }\n}\n\nfunction errorStatus(err: unknown): number {\n if (err && typeof err === 'object' && 'status' in err) {\n const s = (err as { status: unknown }).status;\n if (typeof s === 'number' && Number.isFinite(s)) return s;\n }\n return 500;\n}\n"]}
@@ -1,27 +0,0 @@
1
- export interface Entity {
2
- id: string;
3
- created_at: string;
4
- updated_at: string;
5
- }
6
- export interface CursorPaginationOptions<T> {
7
- filter?: (item: T) => boolean;
8
- sort?: (a: T, b: T) => number;
9
- limit?: number;
10
- order?: 'asc' | 'desc';
11
- before?: string;
12
- after?: string;
13
- }
14
- export interface CursorPaginatedResult<T> {
15
- data: T[];
16
- list_metadata: {
17
- before: string | null;
18
- after: string | null;
19
- };
20
- }
21
- export declare function parseListParams(url: URL): {
22
- limit: number;
23
- order: "asc" | "desc";
24
- before: string | undefined;
25
- after: string | undefined;
26
- };
27
- export declare function cursorPaginate<T extends Entity>(items: T[], options?: CursorPaginationOptions<T>): CursorPaginatedResult<T>;
@@ -1,43 +0,0 @@
1
- export function parseListParams(url) {
2
- const limit = parseInt(url.searchParams.get('limit') ?? '10') || 10;
3
- const order = url.searchParams.get('order') ?? 'desc';
4
- const before = url.searchParams.get('before') ?? undefined;
5
- const after = url.searchParams.get('after') ?? undefined;
6
- return { limit, order, before, after };
7
- }
8
- export function cursorPaginate(items, options = {}) {
9
- // Callers must pass a fresh array (e.g. Collection.all()) — sort mutates in-place
10
- let filtered = options.filter ? items.filter(options.filter) : items;
11
- const order = options.order ?? 'desc';
12
- const defaultSort = (a, b) => order === 'desc'
13
- ? b.created_at.localeCompare(a.created_at) || b.id.localeCompare(a.id)
14
- : a.created_at.localeCompare(b.created_at) || a.id.localeCompare(b.id);
15
- filtered.sort(options.sort ?? defaultSort);
16
- const limit = Math.max(1, Math.min(options.limit ?? 10, 100));
17
- let startIndex = 0;
18
- let endIndex = filtered.length;
19
- if (options.after) {
20
- const afterIndex = filtered.findIndex((item) => item.id === options.after);
21
- if (afterIndex !== -1) {
22
- startIndex = afterIndex + 1;
23
- }
24
- }
25
- if (options.before) {
26
- const beforeIndex = filtered.findIndex((item) => item.id === options.before);
27
- if (beforeIndex !== -1) {
28
- endIndex = beforeIndex;
29
- }
30
- }
31
- const window = filtered.slice(startIndex, endIndex);
32
- const page = window.slice(0, limit);
33
- const hasMore = window.length > limit;
34
- const hasPrev = startIndex > 0;
35
- return {
36
- data: page,
37
- list_metadata: {
38
- before: page.length > 0 && hasPrev ? page[0].id : null,
39
- after: page.length > 0 && hasMore ? page[page.length - 1].id : null,
40
- },
41
- };
42
- }
43
- //# sourceMappingURL=pagination.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../../src/emulate/core/pagination.ts"],"names":[],"mappings":"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","sourcesContent":["export interface Entity {\n id: string;\n created_at: string;\n updated_at: string;\n}\n\nexport interface CursorPaginationOptions<T> {\n filter?: (item: T) => boolean;\n sort?: (a: T, b: T) => number;\n limit?: number;\n order?: 'asc' | 'desc';\n before?: string;\n after?: string;\n}\n\nexport interface CursorPaginatedResult<T> {\n data: T[];\n list_metadata: {\n before: string | null;\n after: string | null;\n };\n}\n\nexport function parseListParams(url: URL) {\n const limit = parseInt(url.searchParams.get('limit') ?? '10') || 10;\n const order = (url.searchParams.get('order') as 'asc' | 'desc') ?? 'desc';\n const before = url.searchParams.get('before') ?? undefined;\n const after = url.searchParams.get('after') ?? undefined;\n return { limit, order, before, after };\n}\n\nexport function cursorPaginate<T extends Entity>(\n items: T[],\n options: CursorPaginationOptions<T> = {},\n): CursorPaginatedResult<T> {\n // Callers must pass a fresh array (e.g. Collection.all()) — sort mutates in-place\n let filtered = options.filter ? items.filter(options.filter) : items;\n\n const order = options.order ?? 'desc';\n const defaultSort = (a: T, b: T) =>\n order === 'desc'\n ? b.created_at.localeCompare(a.created_at) || b.id.localeCompare(a.id)\n : a.created_at.localeCompare(b.created_at) || a.id.localeCompare(b.id);\n\n filtered.sort(options.sort ?? defaultSort);\n\n const limit = Math.max(1, Math.min(options.limit ?? 10, 100));\n\n let startIndex = 0;\n let endIndex = filtered.length;\n\n if (options.after) {\n const afterIndex = filtered.findIndex((item) => item.id === options.after);\n if (afterIndex !== -1) {\n startIndex = afterIndex + 1;\n }\n }\n\n if (options.before) {\n const beforeIndex = filtered.findIndex((item) => item.id === options.before);\n if (beforeIndex !== -1) {\n endIndex = beforeIndex;\n }\n }\n\n const window = filtered.slice(startIndex, endIndex);\n const page = window.slice(0, limit);\n\n const hasMore = window.length > limit;\n const hasPrev = startIndex > 0;\n\n return {\n data: page,\n list_metadata: {\n before: page.length > 0 && hasPrev ? page[0].id : null,\n after: page.length > 0 && hasMore ? page[page.length - 1].id : null,\n },\n };\n}\n"]}
@@ -1,15 +0,0 @@
1
- import type { Hono } from 'hono';
2
- import type { Store } from './store.js';
3
- import type { JWTManager } from './jwt.js';
4
- import type { WorkOSAppEnv } from './middleware/auth.js';
5
- export interface RouteContext {
6
- app: Hono<WorkOSAppEnv>;
7
- store: Store;
8
- jwt: JWTManager;
9
- baseUrl: string;
10
- }
11
- export interface ServicePlugin {
12
- name: string;
13
- register(ctx: RouteContext): void;
14
- seed?(store: Store, baseUrl: string): void;
15
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=plugin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/emulate/core/plugin.ts"],"names":[],"mappings":"","sourcesContent":["import type { Hono } from 'hono';\nimport type { Store } from './store.js';\nimport type { JWTManager } from './jwt.js';\nimport type { WorkOSAppEnv } from './middleware/auth.js';\n\nexport interface RouteContext {\n app: Hono<WorkOSAppEnv>;\n store: Store;\n jwt: JWTManager;\n baseUrl: string;\n}\n\nexport interface ServicePlugin {\n name: string;\n register(ctx: RouteContext): void;\n seed?(store: Store, baseUrl: string): void;\n}\n"]}
@@ -1,17 +0,0 @@
1
- import { Hono } from 'hono';
2
- import { Store } from './store.js';
3
- import { JWTManager } from './jwt.js';
4
- import { type ApiKeyMap, type WorkOSAppEnv } from './middleware/auth.js';
5
- import type { ServicePlugin } from './plugin.js';
6
- export interface ServerOptions {
7
- port?: number;
8
- baseUrl?: string;
9
- apiKeys?: ApiKeyMap;
10
- }
11
- export declare function createServer(plugin: ServicePlugin, options?: ServerOptions): {
12
- app: Hono<WorkOSAppEnv, import("hono/types").BlankSchema, "/">;
13
- store: Store;
14
- jwt: JWTManager;
15
- port: number;
16
- baseUrl: string;
17
- };
@@ -1,90 +0,0 @@
1
- import { Hono } from 'hono';
2
- import { cors } from 'hono/cors';
3
- import { Store } from './store.js';
4
- import { JWTManager } from './jwt.js';
5
- import { createApiErrorHandler, requestIdMiddleware } from './middleware/error-handler.js';
6
- import { authMiddleware } from './middleware/auth.js';
7
- export function createServer(plugin, options = {}) {
8
- const port = options.port ?? 4100;
9
- const baseUrl = options.baseUrl ?? `http://localhost:${port}`;
10
- const app = new Hono();
11
- const store = new Store();
12
- const jwt = new JWTManager(baseUrl);
13
- const apiKeys = options.apiKeys ?? {
14
- sk_test_default: { environment: 'test' },
15
- };
16
- app.onError(createApiErrorHandler());
17
- app.use('*', cors());
18
- app.use('*', requestIdMiddleware());
19
- // JWKS endpoint (public, no auth)
20
- app.get('/sso/jwks/:client_id', (c) => {
21
- return c.json(jwt.getJWKS());
22
- });
23
- // Auth middleware — single catch-all instance
24
- const auth = authMiddleware(apiKeys);
25
- const PUBLIC_PATHS = new Set([
26
- '/health',
27
- '/user_management/authorize',
28
- '/user_management/authenticate',
29
- '/user_management/sessions/logout',
30
- ]);
31
- const PUBLIC_PATH_PREFIXES = ['/sso/', '/user_management/sessions/jwks/', '/data-integrations/'];
32
- app.use('*', async (c, next) => {
33
- const path = new URL(c.req.url).pathname;
34
- // Skip auth for public paths
35
- if (PUBLIC_PATHS.has(path))
36
- return next();
37
- for (const prefix of PUBLIC_PATH_PREFIXES) {
38
- if (path.startsWith(prefix)) {
39
- // data-integrations: only /authorize subpath is public
40
- if (prefix === '/data-integrations/' && !path.endsWith('/authorize'))
41
- break;
42
- return next();
43
- }
44
- }
45
- return auth(c, next);
46
- });
47
- // Rate limiting
48
- const rateLimitCounters = new Map();
49
- let lastPruneAt = Math.floor(Date.now() / 1000);
50
- app.use('*', async (c, next) => {
51
- const auth = c.get('auth');
52
- const key = auth?.apiKey ?? '__anonymous__';
53
- const now = Math.floor(Date.now() / 1000);
54
- if (now - lastPruneAt > 3600) {
55
- for (const [k, val] of rateLimitCounters) {
56
- if (val.resetAt <= now)
57
- rateLimitCounters.delete(k);
58
- }
59
- lastPruneAt = now;
60
- }
61
- let counter = rateLimitCounters.get(key);
62
- if (!counter || counter.resetAt <= now) {
63
- counter = { remaining: 1000, resetAt: now + 60 };
64
- rateLimitCounters.set(key, counter);
65
- }
66
- counter.remaining = Math.max(0, counter.remaining - 1);
67
- c.header('X-RateLimit-Limit', '1000');
68
- c.header('X-RateLimit-Remaining', String(counter.remaining));
69
- c.header('X-RateLimit-Reset', String(counter.resetAt));
70
- if (counter.remaining === 0) {
71
- c.header('Retry-After', String(counter.resetAt - now));
72
- return c.json({
73
- message: 'Too Many Requests',
74
- code: 'rate_limit_exceeded',
75
- }, 429);
76
- }
77
- await next();
78
- });
79
- // Store API key map for route access
80
- store.setData('apiKeyMap', apiKeys);
81
- // Register plugin routes
82
- plugin.register({ app, store, jwt, baseUrl });
83
- // Not found handler
84
- app.notFound((c) => c.json({
85
- message: 'Not Found',
86
- code: 'not_found',
87
- }, 404));
88
- return { app, store, jwt, port, baseUrl };
89
- }
90
- //# sourceMappingURL=server.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/emulate/core/server.ts"],"names":[],"mappings":"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","sourcesContent":["import { Hono } from 'hono';\nimport { cors } from 'hono/cors';\nimport { Store } from './store.js';\nimport { JWTManager } from './jwt.js';\nimport { createApiErrorHandler, requestIdMiddleware } from './middleware/error-handler.js';\nimport { authMiddleware, type ApiKeyMap, type WorkOSAppEnv } from './middleware/auth.js';\nimport type { ServicePlugin } from './plugin.js';\n\nexport interface ServerOptions {\n port?: number;\n baseUrl?: string;\n apiKeys?: ApiKeyMap;\n}\n\nexport function createServer(plugin: ServicePlugin, options: ServerOptions = {}) {\n const port = options.port ?? 4100;\n const baseUrl = options.baseUrl ?? `http://localhost:${port}`;\n\n const app = new Hono<WorkOSAppEnv>();\n const store = new Store();\n const jwt = new JWTManager(baseUrl);\n\n const apiKeys: ApiKeyMap = options.apiKeys ?? {\n sk_test_default: { environment: 'test' },\n };\n\n app.onError(createApiErrorHandler());\n app.use('*', cors());\n app.use('*', requestIdMiddleware());\n\n // JWKS endpoint (public, no auth)\n app.get('/sso/jwks/:client_id', (c) => {\n return c.json(jwt.getJWKS());\n });\n\n // Auth middleware — single catch-all instance\n const auth = authMiddleware(apiKeys);\n\n const PUBLIC_PATHS = new Set([\n '/health',\n '/user_management/authorize',\n '/user_management/authenticate',\n '/user_management/sessions/logout',\n ]);\n\n const PUBLIC_PATH_PREFIXES = ['/sso/', '/user_management/sessions/jwks/', '/data-integrations/'];\n\n app.use('*', async (c, next) => {\n const path = new URL(c.req.url).pathname;\n\n // Skip auth for public paths\n if (PUBLIC_PATHS.has(path)) return next();\n for (const prefix of PUBLIC_PATH_PREFIXES) {\n if (path.startsWith(prefix)) {\n // data-integrations: only /authorize subpath is public\n if (prefix === '/data-integrations/' && !path.endsWith('/authorize')) break;\n return next();\n }\n }\n\n return auth(c, next);\n });\n\n // Rate limiting\n const rateLimitCounters = new Map<string, { remaining: number; resetAt: number }>();\n let lastPruneAt = Math.floor(Date.now() / 1000);\n\n app.use('*', async (c, next) => {\n const auth = c.get('auth');\n const key = auth?.apiKey ?? '__anonymous__';\n const now = Math.floor(Date.now() / 1000);\n\n if (now - lastPruneAt > 3600) {\n for (const [k, val] of rateLimitCounters) {\n if (val.resetAt <= now) rateLimitCounters.delete(k);\n }\n lastPruneAt = now;\n }\n\n let counter = rateLimitCounters.get(key);\n if (!counter || counter.resetAt <= now) {\n counter = { remaining: 1000, resetAt: now + 60 };\n rateLimitCounters.set(key, counter);\n }\n\n counter.remaining = Math.max(0, counter.remaining - 1);\n\n c.header('X-RateLimit-Limit', '1000');\n c.header('X-RateLimit-Remaining', String(counter.remaining));\n c.header('X-RateLimit-Reset', String(counter.resetAt));\n\n if (counter.remaining === 0) {\n c.header('Retry-After', String(counter.resetAt - now));\n return c.json(\n {\n message: 'Too Many Requests',\n code: 'rate_limit_exceeded',\n },\n 429,\n );\n }\n\n await next();\n });\n\n // Store API key map for route access\n store.setData('apiKeyMap', apiKeys);\n\n // Register plugin routes\n plugin.register({ app, store, jwt, baseUrl });\n\n // Not found handler\n app.notFound((c) =>\n c.json(\n {\n message: 'Not Found',\n code: 'not_found',\n },\n 404,\n ),\n );\n\n return { app, store, jwt, port, baseUrl };\n}\n"]}
@@ -1,44 +0,0 @@
1
- import { type Entity, type CursorPaginationOptions, type CursorPaginatedResult } from './pagination.js';
2
- export type { Entity };
3
- export type InsertInput<T extends Entity> = Omit<T, 'id' | 'created_at' | 'updated_at'> & {
4
- id?: string;
5
- };
6
- export type FilterFn<T> = (item: T) => boolean;
7
- export type SortFn<T> = (a: T, b: T) => number;
8
- export interface CollectionHooks<T extends Entity> {
9
- onInsert?: (item: T) => void;
10
- onUpdate?: (item: T) => void;
11
- onDelete?: (item: T) => void;
12
- }
13
- export declare class Collection<T extends Entity> {
14
- private prefix;
15
- private indexFields;
16
- private items;
17
- private indexes;
18
- private hooks;
19
- readonly fieldNames: string[];
20
- constructor(prefix: string, indexFields?: (keyof T)[]);
21
- private addToIndex;
22
- private removeFromIndex;
23
- insert(data: InsertInput<T>): T;
24
- get(id: string): T | undefined;
25
- findBy(field: keyof T, value: string | number): T[];
26
- findOneBy(field: keyof T, value: string | number): T | undefined;
27
- update(id: string, data: Partial<T>): T | undefined;
28
- delete(id: string): boolean;
29
- deleteBy(field: keyof T, value: string | number): number;
30
- setHooks(hooks: CollectionHooks<T>): void;
31
- all(): T[];
32
- list(options?: CursorPaginationOptions<T>): CursorPaginatedResult<T>;
33
- count(filter?: FilterFn<T>): number;
34
- clear(): void;
35
- }
36
- export declare class Store {
37
- private collections;
38
- private _data;
39
- collection<T extends Entity>(name: string, prefix: string, indexFields?: (keyof T)[]): Collection<T>;
40
- getData<V>(key: string): V | undefined;
41
- setData<V>(key: string, value: V): void;
42
- deleteDataByPrefix(prefix: string): number;
43
- reset(): void;
44
- }
@@ -1,169 +0,0 @@
1
- import { generateId } from './id.js';
2
- import { cursorPaginate } from './pagination.js';
3
- export class Collection {
4
- prefix;
5
- indexFields;
6
- items = new Map();
7
- indexes = new Map();
8
- hooks = {};
9
- fieldNames;
10
- constructor(prefix, indexFields = []) {
11
- this.prefix = prefix;
12
- this.indexFields = indexFields;
13
- this.fieldNames = indexFields.map(String).sort();
14
- for (const field of indexFields) {
15
- this.indexes.set(String(field), new Map());
16
- }
17
- }
18
- addToIndex(item) {
19
- for (const field of this.indexFields) {
20
- const value = item[field];
21
- if (value === undefined || value === null)
22
- continue;
23
- const indexMap = this.indexes.get(String(field));
24
- const key = String(value);
25
- if (!indexMap.has(key)) {
26
- indexMap.set(key, new Set());
27
- }
28
- indexMap.get(key).add(item.id);
29
- }
30
- }
31
- removeFromIndex(item) {
32
- for (const field of this.indexFields) {
33
- const value = item[field];
34
- if (value === undefined || value === null)
35
- continue;
36
- const indexMap = this.indexes.get(String(field));
37
- const key = String(value);
38
- indexMap.get(key)?.delete(item.id);
39
- }
40
- }
41
- insert(data) {
42
- const now = new Date().toISOString();
43
- const id = data.id ?? generateId(this.prefix);
44
- const item = {
45
- ...data,
46
- id,
47
- created_at: now,
48
- updated_at: now,
49
- };
50
- this.items.set(id, item);
51
- this.addToIndex(item);
52
- this.hooks.onInsert?.(item);
53
- return item;
54
- }
55
- get(id) {
56
- return this.items.get(id);
57
- }
58
- findBy(field, value) {
59
- if (this.indexes.has(String(field))) {
60
- const ids = this.indexes.get(String(field)).get(String(value));
61
- if (!ids)
62
- return [];
63
- return Array.from(ids)
64
- .map((id) => this.items.get(id))
65
- .filter(Boolean);
66
- }
67
- return this.all().filter((item) => item[field] === value);
68
- }
69
- findOneBy(field, value) {
70
- return this.findBy(field, value)[0];
71
- }
72
- update(id, data) {
73
- const existing = this.items.get(id);
74
- if (!existing)
75
- return undefined;
76
- this.removeFromIndex(existing);
77
- const updated = {
78
- ...existing,
79
- ...data,
80
- id,
81
- updated_at: new Date().toISOString(),
82
- };
83
- this.items.set(id, updated);
84
- this.addToIndex(updated);
85
- this.hooks.onUpdate?.(updated);
86
- return updated;
87
- }
88
- delete(id) {
89
- const existing = this.items.get(id);
90
- if (!existing)
91
- return false;
92
- this.hooks.onDelete?.(existing);
93
- this.removeFromIndex(existing);
94
- return this.items.delete(id);
95
- }
96
- deleteBy(field, value) {
97
- const items = this.findBy(field, value);
98
- for (const item of items)
99
- this.delete(item.id);
100
- return items.length;
101
- }
102
- setHooks(hooks) {
103
- this.hooks = hooks;
104
- }
105
- all() {
106
- return Array.from(this.items.values());
107
- }
108
- list(options = {}) {
109
- return cursorPaginate(this.all(), options);
110
- }
111
- count(filter) {
112
- if (!filter)
113
- return this.items.size;
114
- let n = 0;
115
- for (const item of this.items.values()) {
116
- if (filter(item))
117
- n++;
118
- }
119
- return n;
120
- }
121
- clear() {
122
- this.items.clear();
123
- for (const indexMap of this.indexes.values()) {
124
- indexMap.clear();
125
- }
126
- }
127
- }
128
- export class Store {
129
- collections = new Map();
130
- _data = new Map();
131
- collection(name, prefix, indexFields = []) {
132
- const existing = this.collections.get(name);
133
- if (existing) {
134
- if (indexFields.length > 0) {
135
- const requested = indexFields.map(String).sort();
136
- if (existing.fieldNames.length !== requested.length || existing.fieldNames.some((f, i) => f !== requested[i])) {
137
- throw new Error(`Collection "${name}" already exists with indexes [${existing.fieldNames}] but was requested with [${requested}]`);
138
- }
139
- }
140
- return existing;
141
- }
142
- const col = new Collection(prefix, indexFields);
143
- this.collections.set(name, col);
144
- return col;
145
- }
146
- getData(key) {
147
- return this._data.get(key);
148
- }
149
- setData(key, value) {
150
- this._data.set(key, value);
151
- }
152
- deleteDataByPrefix(prefix) {
153
- let count = 0;
154
- for (const key of this._data.keys()) {
155
- if (key.startsWith(prefix)) {
156
- this._data.delete(key);
157
- count++;
158
- }
159
- }
160
- return count;
161
- }
162
- reset() {
163
- for (const collection of this.collections.values()) {
164
- collection.clear();
165
- }
166
- this._data.clear();
167
- }
168
- }
169
- //# sourceMappingURL=store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/emulate/core/store.ts"],"names":[],"mappings":"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","sourcesContent":["import { generateId } from './id.js';\nimport { cursorPaginate, type Entity, type CursorPaginationOptions, type CursorPaginatedResult } from './pagination.js';\n\nexport type { Entity };\n\nexport type InsertInput<T extends Entity> = Omit<T, 'id' | 'created_at' | 'updated_at'> & {\n id?: string;\n};\n\nexport type FilterFn<T> = (item: T) => boolean;\nexport type SortFn<T> = (a: T, b: T) => number;\n\nexport interface CollectionHooks<T extends Entity> {\n onInsert?: (item: T) => void;\n onUpdate?: (item: T) => void;\n onDelete?: (item: T) => void;\n}\n\nexport class Collection<T extends Entity> {\n private items = new Map<string, T>();\n private indexes = new Map<string, Map<string, Set<string>>>();\n private hooks: CollectionHooks<T> = {};\n readonly fieldNames: string[];\n\n constructor(\n private prefix: string,\n private indexFields: (keyof T)[] = [],\n ) {\n this.fieldNames = indexFields.map(String).sort();\n for (const field of indexFields) {\n this.indexes.set(String(field), new Map());\n }\n }\n\n private addToIndex(item: T): void {\n for (const field of this.indexFields) {\n const value = item[field];\n if (value === undefined || value === null) continue;\n const indexMap = this.indexes.get(String(field))!;\n const key = String(value);\n if (!indexMap.has(key)) {\n indexMap.set(key, new Set());\n }\n indexMap.get(key)!.add(item.id);\n }\n }\n\n private removeFromIndex(item: T): void {\n for (const field of this.indexFields) {\n const value = item[field];\n if (value === undefined || value === null) continue;\n const indexMap = this.indexes.get(String(field))!;\n const key = String(value);\n indexMap.get(key)?.delete(item.id);\n }\n }\n\n insert(data: InsertInput<T>): T {\n const now = new Date().toISOString();\n const id = data.id ?? generateId(this.prefix);\n const item = {\n ...data,\n id,\n created_at: now,\n updated_at: now,\n } as unknown as T;\n this.items.set(id, item);\n this.addToIndex(item);\n this.hooks.onInsert?.(item);\n return item;\n }\n\n get(id: string): T | undefined {\n return this.items.get(id);\n }\n\n findBy(field: keyof T, value: string | number): T[] {\n if (this.indexes.has(String(field))) {\n const ids = this.indexes.get(String(field))!.get(String(value));\n if (!ids) return [];\n return Array.from(ids)\n .map((id) => this.items.get(id)!)\n .filter(Boolean);\n }\n return this.all().filter((item) => item[field] === value);\n }\n\n findOneBy(field: keyof T, value: string | number): T | undefined {\n return this.findBy(field, value)[0];\n }\n\n update(id: string, data: Partial<T>): T | undefined {\n const existing = this.items.get(id);\n if (!existing) return undefined;\n this.removeFromIndex(existing);\n const updated = {\n ...existing,\n ...data,\n id,\n updated_at: new Date().toISOString(),\n } as T;\n this.items.set(id, updated);\n this.addToIndex(updated);\n this.hooks.onUpdate?.(updated);\n return updated;\n }\n\n delete(id: string): boolean {\n const existing = this.items.get(id);\n if (!existing) return false;\n this.hooks.onDelete?.(existing);\n this.removeFromIndex(existing);\n return this.items.delete(id);\n }\n\n deleteBy(field: keyof T, value: string | number): number {\n const items = this.findBy(field, value);\n for (const item of items) this.delete(item.id);\n return items.length;\n }\n\n setHooks(hooks: CollectionHooks<T>): void {\n this.hooks = hooks;\n }\n\n all(): T[] {\n return Array.from(this.items.values());\n }\n\n list(options: CursorPaginationOptions<T> = {}): CursorPaginatedResult<T> {\n return cursorPaginate(this.all(), options);\n }\n\n count(filter?: FilterFn<T>): number {\n if (!filter) return this.items.size;\n let n = 0;\n for (const item of this.items.values()) {\n if (filter(item)) n++;\n }\n return n;\n }\n\n clear(): void {\n this.items.clear();\n for (const indexMap of this.indexes.values()) {\n indexMap.clear();\n }\n }\n}\n\nexport class Store {\n private collections = new Map<string, Collection<any>>();\n private _data = new Map<string, unknown>();\n\n collection<T extends Entity>(name: string, prefix: string, indexFields: (keyof T)[] = []): Collection<T> {\n const existing = this.collections.get(name);\n if (existing) {\n if (indexFields.length > 0) {\n const requested = indexFields.map(String).sort();\n if (existing.fieldNames.length !== requested.length || existing.fieldNames.some((f, i) => f !== requested[i])) {\n throw new Error(\n `Collection \"${name}\" already exists with indexes [${existing.fieldNames}] but was requested with [${requested}]`,\n );\n }\n }\n return existing as Collection<T>;\n }\n const col = new Collection<T>(prefix, indexFields);\n this.collections.set(name, col);\n return col;\n }\n\n getData<V>(key: string): V | undefined {\n return this._data.get(key) as V | undefined;\n }\n\n setData<V>(key: string, value: V): void {\n this._data.set(key, value);\n }\n\n deleteDataByPrefix(prefix: string): number {\n let count = 0;\n for (const key of this._data.keys()) {\n if (key.startsWith(prefix)) {\n this._data.delete(key);\n count++;\n }\n }\n return count;\n }\n\n reset(): void {\n for (const collection of this.collections.values()) {\n collection.clear();\n }\n this._data.clear();\n }\n}\n"]}
@@ -1,25 +0,0 @@
1
- import { type WorkOSSeedConfig } from './workos/index.js';
2
- export interface EmulatorSeedConfig {
3
- apiKeys?: Record<string, {
4
- environment: string;
5
- }>;
6
- organizations?: WorkOSSeedConfig['organizations'];
7
- users?: WorkOSSeedConfig['users'];
8
- connections?: WorkOSSeedConfig['connections'];
9
- invitations?: WorkOSSeedConfig['invitations'];
10
- roles?: WorkOSSeedConfig['roles'];
11
- permissions?: WorkOSSeedConfig['permissions'];
12
- webhookEndpoints?: WorkOSSeedConfig['webhookEndpoints'];
13
- }
14
- export interface EmulatorOptions {
15
- port?: number;
16
- seed?: EmulatorSeedConfig;
17
- }
18
- export interface Emulator {
19
- url: string;
20
- port: number;
21
- apiKey: string;
22
- close(): Promise<void>;
23
- reset(): void;
24
- }
25
- export declare function createEmulator(options?: EmulatorOptions): Promise<Emulator>;
@@ -1,47 +0,0 @@
1
- import { createServer } from './core/index.js';
2
- import { workosPlugin, seedFromConfig } from './workos/index.js';
3
- import { serve } from '@hono/node-server';
4
- export async function createEmulator(options = {}) {
5
- const port = options.port ?? 4100;
6
- const baseUrl = `http://localhost:${port}`;
7
- const apiKeys = options.seed?.apiKeys ?? {
8
- sk_test_default: { environment: 'test' },
9
- };
10
- const { app, store, jwt } = createServer(workosPlugin, {
11
- port,
12
- baseUrl,
13
- apiKeys,
14
- });
15
- // Health check endpoint
16
- app.get('/health', (c) => c.json({ status: 'ok' }));
17
- const seedFn = () => {
18
- workosPlugin.seed?.(store, baseUrl);
19
- if (options.seed) {
20
- seedFromConfig(store, baseUrl, options.seed);
21
- }
22
- };
23
- seedFn();
24
- const httpServer = serve({ fetch: app.fetch, port });
25
- // Resolve actual port (important for port: 0)
26
- const addr = httpServer.address();
27
- const actualPort = typeof addr === 'object' && addr ? addr.port : port;
28
- const url = `http://localhost:${actualPort}`;
29
- // Update JWT issuer to reflect the actual bound URL (matters when port: 0)
30
- jwt.issuer = url;
31
- const primaryApiKey = Object.keys(apiKeys)[0];
32
- return {
33
- url,
34
- port: actualPort,
35
- apiKey: primaryApiKey,
36
- reset() {
37
- store.reset();
38
- seedFn();
39
- },
40
- close() {
41
- return new Promise((resolve, reject) => {
42
- httpServer.close((err) => (err ? reject(err) : resolve()));
43
- });
44
- },
45
- };
46
- }
47
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/emulate/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAkB,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,cAAc,EAAyB,MAAM,mBAAmB,CAAC;AACxF,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AA0B1C,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,UAA2B,EAAE;IAChE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC;IAClC,MAAM,OAAO,GAAG,oBAAoB,IAAI,EAAE,CAAC;IAE3C,MAAM,OAAO,GAAc,OAAO,CAAC,IAAI,EAAE,OAAO,IAAI;QAClD,eAAe,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE;KACzC,CAAC;IAEF,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,YAAY,EAAE;QACrD,IAAI;QACJ,OAAO;QACP,OAAO;KACR,CAAC,CAAC;IAEH,wBAAwB;IACxB,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAEpD,MAAM,MAAM,GAAG,GAAG,EAAE;QAClB,YAAY,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACpC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC,CAAC;IACF,MAAM,EAAE,CAAC;IAET,MAAM,UAAU,GAAG,KAAK,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAErD,8CAA8C;IAC9C,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;IAClC,MAAM,UAAU,GAAG,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACvE,MAAM,GAAG,GAAG,oBAAoB,UAAU,EAAE,CAAC;IAE7C,2EAA2E;IAC3E,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;IAEjB,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9C,OAAO;QACL,GAAG;QACH,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,aAAa;QACrB,KAAK;YACH,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,MAAM,EAAE,CAAC;QACX,CAAC;QACD,KAAK;YACH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC7D,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["import { createServer, type ApiKeyMap } from './core/index.js';\nimport { workosPlugin, seedFromConfig, type WorkOSSeedConfig } from './workos/index.js';\nimport { serve } from '@hono/node-server';\n\nexport interface EmulatorSeedConfig {\n apiKeys?: Record<string, { environment: string }>;\n organizations?: WorkOSSeedConfig['organizations'];\n users?: WorkOSSeedConfig['users'];\n connections?: WorkOSSeedConfig['connections'];\n invitations?: WorkOSSeedConfig['invitations'];\n roles?: WorkOSSeedConfig['roles'];\n permissions?: WorkOSSeedConfig['permissions'];\n webhookEndpoints?: WorkOSSeedConfig['webhookEndpoints'];\n}\n\nexport interface EmulatorOptions {\n port?: number;\n seed?: EmulatorSeedConfig;\n}\n\nexport interface Emulator {\n url: string;\n port: number;\n apiKey: string;\n close(): Promise<void>;\n reset(): void;\n}\n\nexport async function createEmulator(options: EmulatorOptions = {}): Promise<Emulator> {\n const port = options.port ?? 4100;\n const baseUrl = `http://localhost:${port}`;\n\n const apiKeys: ApiKeyMap = options.seed?.apiKeys ?? {\n sk_test_default: { environment: 'test' },\n };\n\n const { app, store, jwt } = createServer(workosPlugin, {\n port,\n baseUrl,\n apiKeys,\n });\n\n // Health check endpoint\n app.get('/health', (c) => c.json({ status: 'ok' }));\n\n const seedFn = () => {\n workosPlugin.seed?.(store, baseUrl);\n if (options.seed) {\n seedFromConfig(store, baseUrl, options.seed);\n }\n };\n seedFn();\n\n const httpServer = serve({ fetch: app.fetch, port });\n\n // Resolve actual port (important for port: 0)\n const addr = httpServer.address();\n const actualPort = typeof addr === 'object' && addr ? addr.port : port;\n const url = `http://localhost:${actualPort}`;\n\n // Update JWT issuer to reflect the actual bound URL (matters when port: 0)\n jwt.issuer = url;\n\n const primaryApiKey = Object.keys(apiKeys)[0];\n\n return {\n url,\n port: actualPort,\n apiKey: primaryApiKey,\n reset() {\n store.reset();\n seedFn();\n },\n close(): Promise<void> {\n return new Promise((resolve, reject) => {\n httpServer.close((err) => (err ? reject(err) : resolve()));\n });\n },\n };\n}\n"]}