primitive-admin 1.0.61 → 1.0.63

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 (320) hide show
  1. package/README.md +125 -69
  2. package/assets/skill/skills/primitive-platform/SKILL.md +336 -37
  3. package/dist/bin/primitive.js +25 -14
  4. package/dist/bin/primitive.js.map +1 -1
  5. package/dist/src/commands/analytics.js +36 -16
  6. package/dist/src/commands/analytics.js.map +1 -1
  7. package/dist/src/commands/apps.js +52 -188
  8. package/dist/src/commands/apps.js.map +1 -1
  9. package/dist/src/commands/blob-buckets.js +13 -153
  10. package/dist/src/commands/blob-buckets.js.map +1 -1
  11. package/dist/src/commands/collection-type-configs.js +14 -100
  12. package/dist/src/commands/collection-type-configs.js.map +1 -1
  13. package/dist/src/commands/collections.js +47 -8
  14. package/dist/src/commands/collections.js.map +1 -1
  15. package/dist/src/commands/config.d.ts +46 -0
  16. package/dist/src/commands/config.js +479 -0
  17. package/dist/src/commands/config.js.map +1 -0
  18. package/dist/src/commands/connections.js +12 -7
  19. package/dist/src/commands/connections.js.map +1 -1
  20. package/dist/src/commands/cron-triggers.js +84 -176
  21. package/dist/src/commands/cron-triggers.js.map +1 -1
  22. package/dist/src/commands/database-type-configs.d.ts +2 -0
  23. package/dist/src/commands/database-type-configs.js +171 -0
  24. package/dist/src/commands/database-type-configs.js.map +1 -0
  25. package/dist/src/commands/database-types.js +4 -4
  26. package/dist/src/commands/database-types.js.map +1 -1
  27. package/dist/src/commands/databases.d.ts +63 -0
  28. package/dist/src/commands/databases.js +649 -87
  29. package/dist/src/commands/databases.js.map +1 -1
  30. package/dist/src/commands/documents.js +869 -12
  31. package/dist/src/commands/documents.js.map +1 -1
  32. package/dist/src/commands/email-templates.js +21 -128
  33. package/dist/src/commands/email-templates.js.map +1 -1
  34. package/dist/src/commands/env.d.ts +12 -1
  35. package/dist/src/commands/env.js +115 -26
  36. package/dist/src/commands/env.js.map +1 -1
  37. package/dist/src/commands/feature-flags.d.ts +14 -0
  38. package/dist/src/commands/feature-flags.js +116 -0
  39. package/dist/src/commands/feature-flags.js.map +1 -0
  40. package/dist/src/commands/group-type-configs.js +14 -109
  41. package/dist/src/commands/group-type-configs.js.map +1 -1
  42. package/dist/src/commands/init.d.ts +24 -1
  43. package/dist/src/commands/init.js +1194 -279
  44. package/dist/src/commands/init.js.map +1 -1
  45. package/dist/src/commands/integrations.js +166 -435
  46. package/dist/src/commands/integrations.js.map +1 -1
  47. package/dist/src/commands/metadata-category-configs.d.ts +12 -0
  48. package/dist/src/commands/metadata-category-configs.js +112 -0
  49. package/dist/src/commands/metadata-category-configs.js.map +1 -0
  50. package/dist/src/commands/metadata.js +33 -141
  51. package/dist/src/commands/metadata.js.map +1 -1
  52. package/dist/src/commands/prompts.js +206 -563
  53. package/dist/src/commands/prompts.js.map +1 -1
  54. package/dist/src/commands/rule-sets.d.ts +1 -1
  55. package/dist/src/commands/rule-sets.js +16 -132
  56. package/dist/src/commands/rule-sets.js.map +1 -1
  57. package/dist/src/commands/scripts.d.ts +10 -0
  58. package/dist/src/commands/scripts.js +203 -241
  59. package/dist/src/commands/scripts.js.map +1 -1
  60. package/dist/src/commands/sessions.js +17 -5
  61. package/dist/src/commands/sessions.js.map +1 -1
  62. package/dist/src/commands/sync-app-settings.d.ts +113 -70
  63. package/dist/src/commands/sync-app-settings.js +193 -242
  64. package/dist/src/commands/sync-app-settings.js.map +1 -1
  65. package/dist/src/commands/sync.d.ts +1904 -51
  66. package/dist/src/commands/sync.js +9468 -1790
  67. package/dist/src/commands/sync.js.map +1 -1
  68. package/dist/src/commands/tokens.js +8 -2
  69. package/dist/src/commands/tokens.js.map +1 -1
  70. package/dist/src/commands/users.js +92 -1
  71. package/dist/src/commands/users.js.map +1 -1
  72. package/dist/src/commands/vars.js +44 -58
  73. package/dist/src/commands/vars.js.map +1 -1
  74. package/dist/src/commands/webhooks.js +318 -156
  75. package/dist/src/commands/webhooks.js.map +1 -1
  76. package/dist/src/commands/workflows.d.ts +49 -12
  77. package/dist/src/commands/workflows.js +652 -1086
  78. package/dist/src/commands/workflows.js.map +1 -1
  79. package/dist/src/lib/access-rule-display.d.ts +21 -0
  80. package/dist/src/lib/access-rule-display.js +34 -0
  81. package/dist/src/lib/access-rule-display.js.map +1 -0
  82. package/dist/src/lib/api-client.d.ts +541 -61
  83. package/dist/src/lib/api-client.js +559 -102
  84. package/dist/src/lib/api-client.js.map +1 -1
  85. package/dist/src/lib/app-settings-descriptor.d.ts +180 -25
  86. package/dist/src/lib/app-settings-descriptor.js +403 -82
  87. package/dist/src/lib/app-settings-descriptor.js.map +1 -1
  88. package/dist/src/lib/canonical-json.d.ts +12 -0
  89. package/dist/src/lib/canonical-json.js +35 -0
  90. package/dist/src/lib/canonical-json.js.map +1 -0
  91. package/dist/src/lib/cli-manifest.d.ts +8 -0
  92. package/dist/src/lib/cli-manifest.js +1 -0
  93. package/dist/src/lib/cli-manifest.js.map +1 -1
  94. package/dist/src/lib/codegen-shared/generatedFiles.d.ts +6 -2
  95. package/dist/src/lib/codegen-shared/generatedFiles.js +9 -2
  96. package/dist/src/lib/codegen-shared/generatedFiles.js.map +1 -1
  97. package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.d.ts +6 -6
  98. package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.js +8 -8
  99. package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.js.map +1 -1
  100. package/dist/src/lib/config-object-descriptor.d.ts +127 -0
  101. package/dist/src/lib/config-object-descriptor.js +658 -0
  102. package/dist/src/lib/config-object-descriptor.js.map +1 -0
  103. package/dist/src/lib/config-payload.d.ts +85 -0
  104. package/dist/src/lib/config-payload.js +116 -0
  105. package/dist/src/lib/config-payload.js.map +1 -0
  106. package/dist/src/lib/config-surface.d.ts +130 -0
  107. package/dist/src/lib/config-surface.js +300 -0
  108. package/dist/src/lib/config-surface.js.map +1 -0
  109. package/dist/src/lib/credentials-store.d.ts +10 -0
  110. package/dist/src/lib/credentials-store.js +23 -0
  111. package/dist/src/lib/credentials-store.js.map +1 -1
  112. package/dist/src/lib/data-input.d.ts +23 -0
  113. package/dist/src/lib/data-input.js +50 -0
  114. package/dist/src/lib/data-input.js.map +1 -0
  115. package/dist/src/lib/db-codegen/dbTemplates.js +1 -1
  116. package/dist/src/lib/db-codegen/dbTemplates.js.map +1 -1
  117. package/dist/src/lib/db-codegen/dbTypeIR.d.ts +1 -1
  118. package/dist/src/lib/env-resolver-core.d.ts +187 -0
  119. package/dist/src/lib/env-resolver-core.js +325 -0
  120. package/dist/src/lib/env-resolver-core.js.map +1 -0
  121. package/dist/src/lib/env-resolver.d.ts +28 -6
  122. package/dist/src/lib/env-resolver.js +44 -32
  123. package/dist/src/lib/env-resolver.js.map +1 -1
  124. package/dist/src/lib/generated-allowlist.js +12 -0
  125. package/dist/src/lib/generated-allowlist.js.map +1 -1
  126. package/dist/src/lib/generated-config-surfaces.d.ts +682 -0
  127. package/dist/src/lib/generated-config-surfaces.js +4058 -0
  128. package/dist/src/lib/generated-config-surfaces.js.map +1 -0
  129. package/dist/src/lib/generated-template-lint.d.ts +212 -0
  130. package/dist/src/lib/generated-template-lint.js +624 -0
  131. package/dist/src/lib/generated-template-lint.js.map +1 -0
  132. package/dist/src/lib/init-adopt.d.ts +16 -0
  133. package/dist/src/lib/init-adopt.js +34 -0
  134. package/dist/src/lib/init-adopt.js.map +1 -0
  135. package/dist/src/lib/init-assets.d.ts +39 -0
  136. package/dist/src/lib/init-assets.js +97 -0
  137. package/dist/src/lib/init-assets.js.map +1 -0
  138. package/dist/src/lib/init-client-platforms.d.ts +14 -0
  139. package/dist/src/lib/init-client-platforms.js +71 -0
  140. package/dist/src/lib/init-client-platforms.js.map +1 -0
  141. package/dist/src/lib/init-config.d.ts +44 -5
  142. package/dist/src/lib/init-config.js +80 -7
  143. package/dist/src/lib/init-config.js.map +1 -1
  144. package/dist/src/lib/init-email-redirect-uris.d.ts +37 -0
  145. package/dist/src/lib/init-email-redirect-uris.js +46 -0
  146. package/dist/src/lib/init-email-redirect-uris.js.map +1 -0
  147. package/dist/src/lib/init-ios-links.d.ts +90 -0
  148. package/dist/src/lib/init-ios-links.js +218 -0
  149. package/dist/src/lib/init-ios-links.js.map +1 -0
  150. package/dist/src/lib/init-plan.d.ts +80 -0
  151. package/dist/src/lib/init-plan.js +95 -0
  152. package/dist/src/lib/init-plan.js.map +1 -0
  153. package/dist/src/lib/init-production-env.d.ts +48 -0
  154. package/dist/src/lib/init-production-env.js +59 -0
  155. package/dist/src/lib/init-production-env.js.map +1 -0
  156. package/dist/src/lib/init-schema.d.ts +74 -0
  157. package/dist/src/lib/init-schema.js +358 -0
  158. package/dist/src/lib/init-schema.js.map +1 -0
  159. package/dist/src/lib/init-xcode.d.ts +33 -0
  160. package/dist/src/lib/init-xcode.js +114 -0
  161. package/dist/src/lib/init-xcode.js.map +1 -0
  162. package/dist/src/lib/integration-request-config.d.ts +30 -0
  163. package/dist/src/lib/integration-request-config.js +145 -0
  164. package/dist/src/lib/integration-request-config.js.map +1 -0
  165. package/dist/src/lib/integration-selector.d.ts +42 -0
  166. package/dist/src/lib/integration-selector.js +46 -0
  167. package/dist/src/lib/integration-selector.js.map +1 -0
  168. package/dist/src/lib/local-state.d.ts +55 -0
  169. package/dist/src/lib/local-state.js +167 -0
  170. package/dist/src/lib/local-state.js.map +1 -0
  171. package/dist/src/lib/local-test-cases.d.ts +63 -0
  172. package/dist/src/lib/local-test-cases.js +135 -0
  173. package/dist/src/lib/local-test-cases.js.map +1 -0
  174. package/dist/src/lib/log-inspection.d.ts +568 -0
  175. package/dist/src/lib/log-inspection.js +639 -0
  176. package/dist/src/lib/log-inspection.js.map +1 -0
  177. package/dist/src/lib/migration-nag.d.ts +2 -2
  178. package/dist/src/lib/migration-nag.js +3 -3
  179. package/dist/src/lib/object-status-filter.d.ts +22 -0
  180. package/dist/src/lib/object-status-filter.js +45 -0
  181. package/dist/src/lib/object-status-filter.js.map +1 -0
  182. package/dist/src/lib/output.d.ts +24 -1
  183. package/dist/src/lib/output.js +42 -1
  184. package/dist/src/lib/output.js.map +1 -1
  185. package/dist/src/lib/package-manager.d.ts +140 -0
  186. package/dist/src/lib/package-manager.js +305 -0
  187. package/dist/src/lib/package-manager.js.map +1 -0
  188. package/dist/src/lib/paginate.d.ts +50 -0
  189. package/dist/src/lib/paginate.js +53 -0
  190. package/dist/src/lib/paginate.js.map +1 -1
  191. package/dist/src/lib/platform-owned.d.ts +29 -3
  192. package/dist/src/lib/platform-owned.js +42 -3
  193. package/dist/src/lib/platform-owned.js.map +1 -1
  194. package/dist/src/lib/project-config.d.ts +8 -0
  195. package/dist/src/lib/project-config.js +30 -5
  196. package/dist/src/lib/project-config.js.map +1 -1
  197. package/dist/src/lib/query-operators.d.ts +1 -1
  198. package/dist/src/lib/query-operators.js +1 -1
  199. package/dist/src/lib/record-filter.d.ts +18 -0
  200. package/dist/src/lib/record-filter.js +55 -0
  201. package/dist/src/lib/record-filter.js.map +1 -0
  202. package/dist/src/lib/resolve-init-dev-port.d.ts +56 -0
  203. package/dist/src/lib/resolve-init-dev-port.js +55 -0
  204. package/dist/src/lib/resolve-init-dev-port.js.map +1 -0
  205. package/dist/src/lib/resolve-init-server.d.ts +64 -0
  206. package/dist/src/lib/resolve-init-server.js +77 -0
  207. package/dist/src/lib/resolve-init-server.js.map +1 -0
  208. package/dist/src/lib/resolve-platform.d.ts +43 -14
  209. package/dist/src/lib/resolve-platform.js +74 -12
  210. package/dist/src/lib/resolve-platform.js.map +1 -1
  211. package/dist/src/lib/run-status.d.ts +19 -0
  212. package/dist/src/lib/run-status.generated.d.ts +39 -0
  213. package/dist/src/lib/run-status.generated.js +66 -0
  214. package/dist/src/lib/run-status.generated.js.map +1 -0
  215. package/dist/src/lib/run-status.js +19 -0
  216. package/dist/src/lib/run-status.js.map +1 -0
  217. package/dist/src/lib/server-text-normalization.d.ts +51 -0
  218. package/dist/src/lib/server-text-normalization.js +90 -0
  219. package/dist/src/lib/server-text-normalization.js.map +1 -0
  220. package/dist/src/lib/server-url.d.ts +22 -0
  221. package/dist/src/lib/server-url.js +33 -0
  222. package/dist/src/lib/server-url.js.map +1 -0
  223. package/dist/src/lib/signing-secret-status.d.ts +81 -0
  224. package/dist/src/lib/signing-secret-status.js +116 -0
  225. package/dist/src/lib/signing-secret-status.js.map +1 -0
  226. package/dist/src/lib/skill-installer.js +6 -3
  227. package/dist/src/lib/skill-installer.js.map +1 -1
  228. package/dist/src/lib/snapshots.d.ts +2 -2
  229. package/dist/src/lib/snapshots.js +2 -2
  230. package/dist/src/lib/swift-codegen/dbGenerator.d.ts +15 -2
  231. package/dist/src/lib/swift-codegen/dbGenerator.js +250 -18
  232. package/dist/src/lib/swift-codegen/dbGenerator.js.map +1 -1
  233. package/dist/src/lib/swift-codegen/generator.d.ts +11 -2
  234. package/dist/src/lib/swift-codegen/generator.js +181 -7
  235. package/dist/src/lib/swift-codegen/generator.js.map +1 -1
  236. package/dist/src/lib/swift-codegen/siblingSymbols.d.ts +7 -3
  237. package/dist/src/lib/swift-codegen/siblingSymbols.js +4 -1
  238. package/dist/src/lib/swift-codegen/siblingSymbols.js.map +1 -1
  239. package/dist/src/lib/sync-dir-selector.d.ts +21 -0
  240. package/dist/src/lib/sync-dir-selector.js +30 -0
  241. package/dist/src/lib/sync-dir-selector.js.map +1 -0
  242. package/dist/src/lib/sync-paths.d.ts +39 -0
  243. package/dist/src/lib/sync-paths.js +70 -2
  244. package/dist/src/lib/sync-paths.js.map +1 -1
  245. package/dist/src/lib/sync-resource-types.d.ts +138 -31
  246. package/dist/src/lib/sync-resource-types.js +241 -47
  247. package/dist/src/lib/sync-resource-types.js.map +1 -1
  248. package/dist/src/lib/sync-selectors.d.ts +95 -0
  249. package/dist/src/lib/sync-selectors.js +228 -0
  250. package/dist/src/lib/sync-selectors.js.map +1 -0
  251. package/dist/src/lib/template.d.ts +62 -4
  252. package/dist/src/lib/template.js +147 -39
  253. package/dist/src/lib/template.js.map +1 -1
  254. package/dist/src/lib/test-case-file-names.d.ts +40 -0
  255. package/dist/src/lib/test-case-file-names.js +91 -0
  256. package/dist/src/lib/test-case-file-names.js.map +1 -0
  257. package/dist/src/lib/test-case-keys.d.ts +29 -0
  258. package/dist/src/lib/test-case-keys.js +55 -0
  259. package/dist/src/lib/test-case-keys.js.map +1 -0
  260. package/dist/src/lib/test-case-variables.d.ts +15 -0
  261. package/dist/src/lib/test-case-variables.js +29 -0
  262. package/dist/src/lib/test-case-variables.js.map +1 -0
  263. package/dist/src/lib/toml-database-config.d.ts +4 -4
  264. package/dist/src/lib/toml-database-config.js +27 -34
  265. package/dist/src/lib/toml-database-config.js.map +1 -1
  266. package/dist/src/lib/toml-metadata-config.d.ts +9 -5
  267. package/dist/src/lib/toml-metadata-config.js +40 -45
  268. package/dist/src/lib/toml-metadata-config.js.map +1 -1
  269. package/dist/src/lib/toml-native-form.d.ts +1 -1
  270. package/dist/src/lib/toml-native-form.js +1 -1
  271. package/dist/src/lib/toml-params-validator.d.ts +1 -1
  272. package/dist/src/lib/toml-params-validator.js +1 -1
  273. package/dist/src/lib/toml-scalar-edit.d.ts +43 -0
  274. package/dist/src/lib/toml-scalar-edit.js +283 -0
  275. package/dist/src/lib/toml-scalar-edit.js.map +1 -0
  276. package/dist/src/lib/user-selector.d.ts +24 -0
  277. package/dist/src/lib/user-selector.js +33 -0
  278. package/dist/src/lib/user-selector.js.map +1 -0
  279. package/dist/src/lib/version-check.d.ts +25 -0
  280. package/dist/src/lib/version-check.js +77 -8
  281. package/dist/src/lib/version-check.js.map +1 -1
  282. package/dist/src/lib/watch.d.ts +121 -0
  283. package/dist/src/lib/watch.js +169 -0
  284. package/dist/src/lib/watch.js.map +1 -0
  285. package/dist/src/lib/web-url.d.ts +40 -0
  286. package/dist/src/lib/web-url.js +76 -0
  287. package/dist/src/lib/web-url.js.map +1 -0
  288. package/dist/src/lib/workflow-apply.d.ts +69 -45
  289. package/dist/src/lib/workflow-apply.js +99 -72
  290. package/dist/src/lib/workflow-apply.js.map +1 -1
  291. package/dist/src/lib/workflow-codegen/generator.js +4 -4
  292. package/dist/src/lib/workflow-codegen/generator.js.map +1 -1
  293. package/dist/src/lib/workflow-codegen/invokerIR.d.ts +11 -0
  294. package/dist/src/lib/workflow-codegen/invokerIR.js +5 -0
  295. package/dist/src/lib/workflow-codegen/invokerIR.js.map +1 -1
  296. package/dist/src/lib/workflow-config-apply.d.ts +70 -0
  297. package/dist/src/lib/workflow-config-apply.js +137 -0
  298. package/dist/src/lib/workflow-config-apply.js.map +1 -0
  299. package/dist/src/lib/workflow-config-sidecar.d.ts +63 -0
  300. package/dist/src/lib/workflow-config-sidecar.js +96 -0
  301. package/dist/src/lib/workflow-config-sidecar.js.map +1 -0
  302. package/dist/src/lib/workflow-defaults.d.ts +29 -0
  303. package/dist/src/lib/workflow-defaults.js +41 -0
  304. package/dist/src/lib/workflow-defaults.js.map +1 -0
  305. package/dist/src/lib/workflow-include-preserve.d.ts +76 -0
  306. package/dist/src/lib/workflow-include-preserve.js +286 -0
  307. package/dist/src/lib/workflow-include-preserve.js.map +1 -0
  308. package/dist/src/lib/workflow-payload.d.ts +31 -20
  309. package/dist/src/lib/workflow-payload.js +100 -110
  310. package/dist/src/lib/workflow-payload.js.map +1 -1
  311. package/dist/src/lib/workflow-toml-validator.d.ts +37 -16
  312. package/dist/src/lib/workflow-toml-validator.js +141 -16
  313. package/dist/src/lib/workflow-toml-validator.js.map +1 -1
  314. package/dist/src/types/index.d.ts +78 -22
  315. package/dist/src/validators.d.ts +7 -7
  316. package/dist/src/validators.js +6 -6
  317. package/package.json +11 -6
  318. package/dist/src/commands/settings.d.ts +0 -15
  319. package/dist/src/commands/settings.js +0 -102
  320. package/dist/src/commands/settings.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"project-config.js","sourceRoot":"","sources":["../../../src/lib/project-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-config.js","sourceRoot":"","sources":["../../../src/lib/project-config.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  *
5
5
  * Background (issue #1255): a database-operation `filter` uses Mongo-style
6
6
  * operators (`$gte`, `$in`, ...). A typo like `$gt` → `$gte` or an invented
7
- * `$foo` silently passes `sync push` (the server only validates `filter` is
7
+ * `$foo` silently passes `config push` (the server only validates `filter` is
8
8
  * an object) and then throws `InvalidOperatorError` at *query execution*.
9
9
  * The CLI can warn about unknown operators at push time so the author fixes
10
10
  * it before it reaches runtime.
@@ -4,7 +4,7 @@
4
4
  *
5
5
  * Background (issue #1255): a database-operation `filter` uses Mongo-style
6
6
  * operators (`$gte`, `$in`, ...). A typo like `$gt` → `$gte` or an invented
7
- * `$foo` silently passes `sync push` (the server only validates `filter` is
7
+ * `$foo` silently passes `config push` (the server only validates `filter` is
8
8
  * an object) and then throws `InvalidOperatorError` at *query execution*.
9
9
  * The CLI can warn about unknown operators at push time so the author fixes
10
10
  * it before it reaches runtime.
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Parse the shared `--filter` / `--filter-file` option pair used by the record
3
+ * read/query verbs on both surfaces: `databases records` (`query`, `count`,
4
+ * `aggregate`, `delete-all`) and `documents records` (`query`, `count`,
5
+ * `aggregate`).
6
+ *
7
+ * `--filter` takes an inline JSON object; `--filter-file` reads the filter from
8
+ * a JSON file, or a TOML file (either a top-level table or a `[filter]` section).
9
+ * The two options are mutually exclusive. All validation happens CLI-side so a
10
+ * malformed filter produces a clear error rather than a server 500.
11
+ *
12
+ * Exits the process with a clear message on bad input. Returns `undefined` when
13
+ * neither option is supplied.
14
+ */
15
+ export declare function parseFilterOptions(options: {
16
+ filter?: string;
17
+ filterFile?: string;
18
+ }): Record<string, any> | undefined;
@@ -0,0 +1,55 @@
1
+ import { readFileSync } from "fs";
2
+ import { parseConfigToml } from "./config-toml.js";
3
+ import { error } from "./output.js";
4
+ /**
5
+ * Parse the shared `--filter` / `--filter-file` option pair used by the record
6
+ * read/query verbs on both surfaces: `databases records` (`query`, `count`,
7
+ * `aggregate`, `delete-all`) and `documents records` (`query`, `count`,
8
+ * `aggregate`).
9
+ *
10
+ * `--filter` takes an inline JSON object; `--filter-file` reads the filter from
11
+ * a JSON file, or a TOML file (either a top-level table or a `[filter]` section).
12
+ * The two options are mutually exclusive. All validation happens CLI-side so a
13
+ * malformed filter produces a clear error rather than a server 500.
14
+ *
15
+ * Exits the process with a clear message on bad input. Returns `undefined` when
16
+ * neither option is supplied.
17
+ */
18
+ export function parseFilterOptions(options) {
19
+ if (options.filter && options.filterFile) {
20
+ error("Cannot use both --filter and --filter-file.");
21
+ process.exit(1);
22
+ }
23
+ if (options.filterFile) {
24
+ let content;
25
+ try {
26
+ content = readFileSync(options.filterFile, "utf-8");
27
+ }
28
+ catch (err) {
29
+ error(`Failed to read filter file: ${err.message}`);
30
+ process.exit(1);
31
+ }
32
+ try {
33
+ if (options.filterFile.endsWith(".toml")) {
34
+ const parsed = parseConfigToml(content);
35
+ return parsed.filter || parsed;
36
+ }
37
+ return JSON.parse(content);
38
+ }
39
+ catch (err) {
40
+ error(`Invalid filter file: ${err.message}`);
41
+ process.exit(1);
42
+ }
43
+ }
44
+ if (options.filter) {
45
+ try {
46
+ return JSON.parse(options.filter);
47
+ }
48
+ catch {
49
+ error("Invalid --filter JSON.");
50
+ process.exit(1);
51
+ }
52
+ }
53
+ return undefined;
54
+ }
55
+ //# sourceMappingURL=record-filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-filter.js","sourceRoot":"","sources":["../../../src/lib/record-filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAGlC;IACC,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACzC,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YACH,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,KAAK,CAAC,+BAA+B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,CAAC;YACH,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzC,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAQ,CAAC;gBAC/C,OAAO,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC;YACjC,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,KAAK,CAAC,wBAAwB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACP,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Pure resolution of the dev server port for `primitive init` (step 6).
3
+ *
4
+ * Background (issue #2720): `primitive init --help` documents a `dev_port`
5
+ * init-config key and `init-config.ts` validates it, but the step-6 prompt ran
6
+ * unconditionally — the only branch in the command that wasn't guarded with
7
+ * `if (initConfig)`. So the config's port was ignored, and on a piped/CI stdin
8
+ * the `@inquirer/prompts` `input` threw `ERR_USE_AFTER_CLOSE` into a swallowing
9
+ * catch: the run kept 5173, skipped the CORS/redirect-URI update a non-default
10
+ * port needs, and still exited 0.
11
+ *
12
+ * Resolution follows the same interactivity contract as `resolve-platform.ts`:
13
+ *
14
+ * (a) init-config with `dev_port` -> use it (never prompt)
15
+ * (b) init-config without `dev_port` -> keep the default (never prompt)
16
+ * (c) interactive TTY, no config -> prompt
17
+ * (d) non-TTY, no config -> keep the default WITHOUT prompting,
18
+ * so the closed-stdin crash above can't happen
19
+ *
20
+ * Extracting the decision into a pure function (with injectable `isTTY` /
21
+ * `promptFn`) makes the terminal-dependent contract unit-testable.
22
+ */
23
+ /** Vite's default dev port, and the universal localhost origin for an app. */
24
+ export declare const DEFAULT_DEV_PORT = 5173;
25
+ /** Where the resolved port came from. */
26
+ export type DevPortSource = "config" | "prompt" | "default";
27
+ /** Prompt thunk returning the chosen port. Injectable for testing. */
28
+ export type DevPortPromptFn = () => Promise<number>;
29
+ export interface ResolveDevPortOptions {
30
+ /** `dev_port` from a loaded `.primitive-init.toml`, if set. */
31
+ configPort?: number;
32
+ /**
33
+ * Whether a non-interactive init-config file is in effect. When `true`, the
34
+ * prompt is skipped entirely (cases a/b) regardless of TTY.
35
+ */
36
+ hasConfig: boolean;
37
+ /** Whether stdin is an interactive TTY. Inject `false` to exercise case (d). */
38
+ isTTY: boolean;
39
+ /** Prompt function used only in the interactive case (c). */
40
+ promptFn: DevPortPromptFn;
41
+ /** Overridable default, for tests. */
42
+ defaultPort?: number;
43
+ }
44
+ export interface ResolvedDevPort {
45
+ port: number;
46
+ source: DevPortSource;
47
+ }
48
+ /**
49
+ * Validates a typed-in port. Shared by the interactive prompt so a rejected
50
+ * value reads the same as the init-config validation in `init-config.ts`.
51
+ */
52
+ export declare function validateDevPort(value: string): true | string;
53
+ /**
54
+ * Resolve the dev server port per the 4-case contract above.
55
+ */
56
+ export declare function resolveDevPort(options: ResolveDevPortOptions): Promise<ResolvedDevPort>;
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Pure resolution of the dev server port for `primitive init` (step 6).
3
+ *
4
+ * Background (issue #2720): `primitive init --help` documents a `dev_port`
5
+ * init-config key and `init-config.ts` validates it, but the step-6 prompt ran
6
+ * unconditionally — the only branch in the command that wasn't guarded with
7
+ * `if (initConfig)`. So the config's port was ignored, and on a piped/CI stdin
8
+ * the `@inquirer/prompts` `input` threw `ERR_USE_AFTER_CLOSE` into a swallowing
9
+ * catch: the run kept 5173, skipped the CORS/redirect-URI update a non-default
10
+ * port needs, and still exited 0.
11
+ *
12
+ * Resolution follows the same interactivity contract as `resolve-platform.ts`:
13
+ *
14
+ * (a) init-config with `dev_port` -> use it (never prompt)
15
+ * (b) init-config without `dev_port` -> keep the default (never prompt)
16
+ * (c) interactive TTY, no config -> prompt
17
+ * (d) non-TTY, no config -> keep the default WITHOUT prompting,
18
+ * so the closed-stdin crash above can't happen
19
+ *
20
+ * Extracting the decision into a pure function (with injectable `isTTY` /
21
+ * `promptFn`) makes the terminal-dependent contract unit-testable.
22
+ */
23
+ /** Vite's default dev port, and the universal localhost origin for an app. */
24
+ export const DEFAULT_DEV_PORT = 5173;
25
+ /**
26
+ * Validates a typed-in port. Shared by the interactive prompt so a rejected
27
+ * value reads the same as the init-config validation in `init-config.ts`.
28
+ */
29
+ export function validateDevPort(value) {
30
+ const port = parseInt(value, 10);
31
+ if (isNaN(port) || port < 1 || port > 65535) {
32
+ return "Enter a valid port number.";
33
+ }
34
+ return true;
35
+ }
36
+ /**
37
+ * Resolve the dev server port per the 4-case contract above.
38
+ */
39
+ export async function resolveDevPort(options) {
40
+ const defaultPort = options.defaultPort ?? DEFAULT_DEV_PORT;
41
+ // (a)/(b) non-interactive config present: use its port, else the default.
42
+ if (options.hasConfig) {
43
+ if (options.configPort !== undefined) {
44
+ return { port: options.configPort, source: "config" };
45
+ }
46
+ return { port: defaultPort, source: "default" };
47
+ }
48
+ // (c) interactive TTY, no config: prompt.
49
+ if (options.isTTY) {
50
+ return { port: await options.promptFn(), source: "prompt" };
51
+ }
52
+ // (d) non-TTY, no config: never prompt; keep the default.
53
+ return { port: defaultPort, source: "default" };
54
+ }
55
+ //# sourceMappingURL=resolve-init-dev-port.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-init-dev-port.js","sourceRoot":"","sources":["../../../src/lib/resolve-init-dev-port.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,8EAA8E;AAC9E,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AA6BrC;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACjC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;QAC5C,OAAO,4BAA4B,CAAC;IACtC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAA8B;IAE9B,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,gBAAgB,CAAC;IAE5D,0EAA0E;IAC1E,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACrC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QACxD,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAClD,CAAC;IAED,0CAA0C;IAC1C,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAC9D,CAAC;IAED,0DAA0D;IAC1D,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAClD,CAAC"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Pure resolution of the target server for `primitive init`.
3
+ *
4
+ * Background (issue #2376): the init-config TOML documents a `server` key, but
5
+ * `init` only ever read the `-s/--server` flag and the current credentials. A
6
+ * config that named a different server was silently ignored — the app was
7
+ * created on the CLI's current server and the scaffolded `primitive.json` got
8
+ * that URL too.
9
+ *
10
+ * Precedence (highest first):
11
+ * (a) `-s/--server` flag
12
+ * (b) init-config `server` key
13
+ * (c) the server the CLI is currently logged into
14
+ * (d) `DEFAULT_SERVER_URL`
15
+ *
16
+ * Case (c) has one interactive twist: when the current server is not the
17
+ * default and the run is interactive (no flag, no config, TTY stdin), init
18
+ * asks which server to use. The prompt is TTY- and config-guarded here so a
19
+ * piped/CI stdin can never trigger the `@inquirer/prompts` closed-stdin crash
20
+ * (same hazard hardened in #972/#999).
21
+ *
22
+ * Extracting the decision into a pure function with an injectable prompt
23
+ * mirrors `resolve-platform.ts`, which the same command already uses, and makes
24
+ * the precedence contract unit-testable without a network or a terminal.
25
+ */
26
+ /** Where the resolved server URL came from. */
27
+ export type InitServerSource = "flag" | "config" | "prompt" | "current" | "default";
28
+ /** Prompt thunk returning the chosen server URL. Injectable for testing. */
29
+ export type ServerPromptFn = () => Promise<string>;
30
+ export interface ResolveInitServerOptions {
31
+ /** Value of the explicit `-s/--server` flag, or `undefined` when omitted. */
32
+ flagServer?: string;
33
+ /** `server` key from a loaded init-config TOML, if a config is present. */
34
+ configServer?: string;
35
+ /**
36
+ * Whether a non-interactive init-config file is in effect. When `true` the
37
+ * prompt is skipped entirely, regardless of TTY.
38
+ */
39
+ hasConfig: boolean;
40
+ /** Server URL of the current credentials, or `undefined` when logged out. */
41
+ currentServer?: string;
42
+ /** Fallback when nothing else selects a server (`DEFAULT_SERVER_URL`). */
43
+ defaultServer: string;
44
+ /** Whether stdin is an interactive TTY. */
45
+ isTTY: boolean;
46
+ /** Prompt used only in the interactive case. */
47
+ promptFn: ServerPromptFn;
48
+ }
49
+ export interface ResolvedInitServer {
50
+ /** The server init should create the app on and write into the scaffold. */
51
+ serverUrl: string;
52
+ /** Which input selected it. */
53
+ source: InitServerSource;
54
+ /**
55
+ * True when the resolved server differs from the server the stored
56
+ * credentials belong to. Callers use it to authenticate against the target
57
+ * server instead of silently reusing the current login.
58
+ */
59
+ serverChanged: boolean;
60
+ }
61
+ /**
62
+ * Resolve the server `primitive init` should target, per the precedence above.
63
+ */
64
+ export declare function resolveInitServer(options: ResolveInitServerOptions): Promise<ResolvedInitServer>;
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Pure resolution of the target server for `primitive init`.
3
+ *
4
+ * Background (issue #2376): the init-config TOML documents a `server` key, but
5
+ * `init` only ever read the `-s/--server` flag and the current credentials. A
6
+ * config that named a different server was silently ignored — the app was
7
+ * created on the CLI's current server and the scaffolded `primitive.json` got
8
+ * that URL too.
9
+ *
10
+ * Precedence (highest first):
11
+ * (a) `-s/--server` flag
12
+ * (b) init-config `server` key
13
+ * (c) the server the CLI is currently logged into
14
+ * (d) `DEFAULT_SERVER_URL`
15
+ *
16
+ * Case (c) has one interactive twist: when the current server is not the
17
+ * default and the run is interactive (no flag, no config, TTY stdin), init
18
+ * asks which server to use. The prompt is TTY- and config-guarded here so a
19
+ * piped/CI stdin can never trigger the `@inquirer/prompts` closed-stdin crash
20
+ * (same hazard hardened in #972/#999).
21
+ *
22
+ * Extracting the decision into a pure function with an injectable prompt
23
+ * mirrors `resolve-platform.ts`, which the same command already uses, and makes
24
+ * the precedence contract unit-testable without a network or a terminal.
25
+ */
26
+ import { normalizeServerUrl } from "./channel.js";
27
+ /**
28
+ * Canonical form used for both comparison and the value written into the
29
+ * scaffold: `channel.ts`'s `normalizeServerUrl` (shared with the
30
+ * branch-as-channel detection) strips trailing slashes so `https://host/` and
31
+ * `https://host` compare equal and `${serverUrl}${path}` never doubles up.
32
+ * Unparseable values are left as-is — `validateServerUrl` (now the shared
33
+ * validator in `server-url.ts`) rejects them before they reach here.
34
+ */
35
+ function canonicalize(url) {
36
+ const trimmed = url.trim();
37
+ return normalizeServerUrl(trimmed) ?? trimmed;
38
+ }
39
+ /**
40
+ * Resolve the server `primitive init` should target, per the precedence above.
41
+ */
42
+ export async function resolveInitServer(options) {
43
+ const currentServer = options.currentServer
44
+ ? canonicalize(options.currentServer)
45
+ : undefined;
46
+ const defaultServer = canonicalize(options.defaultServer);
47
+ const changedFrom = (serverUrl) => !!currentServer && currentServer !== serverUrl;
48
+ // (a)/(b) An explicitly requested server wins; the flag beats the config.
49
+ const explicit = options.flagServer ?? options.configServer;
50
+ if (explicit !== undefined) {
51
+ const serverUrl = canonicalize(explicit);
52
+ return {
53
+ serverUrl,
54
+ source: options.flagServer !== undefined ? "flag" : "config",
55
+ serverChanged: changedFrom(serverUrl),
56
+ };
57
+ }
58
+ // (c) Interactive runs on a non-default server ask where to create the app.
59
+ if (currentServer &&
60
+ currentServer !== defaultServer &&
61
+ !options.hasConfig &&
62
+ options.isTTY) {
63
+ const serverUrl = canonicalize(await options.promptFn());
64
+ return {
65
+ serverUrl,
66
+ source: "prompt",
67
+ serverChanged: changedFrom(serverUrl),
68
+ };
69
+ }
70
+ // (c)/(d) Stay on the current server, or fall back to the default.
71
+ return {
72
+ serverUrl: currentServer || defaultServer,
73
+ source: currentServer ? "current" : "default",
74
+ serverChanged: false,
75
+ };
76
+ }
77
+ //# sourceMappingURL=resolve-init-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-init-server.js","sourceRoot":"","sources":["../../../src/lib/resolve-init-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AA8ClD;;;;;;;GAOG;AACH,SAAS,YAAY,CAAC,GAAW;IAC/B,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,OAAO,kBAAkB,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAiC;IAEjC,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa;QACzC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC;QACrC,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAE1D,MAAM,WAAW,GAAG,CAAC,SAAiB,EAAW,EAAE,CACjD,CAAC,CAAC,aAAa,IAAI,aAAa,KAAK,SAAS,CAAC;IAEjD,0EAA0E;IAC1E,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,YAAY,CAAC;IAC5D,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QACzC,OAAO;YACL,SAAS;YACT,MAAM,EAAE,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;YAC5D,aAAa,EAAE,WAAW,CAAC,SAAS,CAAC;SACtC,CAAC;IACJ,CAAC;IAED,4EAA4E;IAC5E,IACE,aAAa;QACb,aAAa,KAAK,aAAa;QAC/B,CAAC,OAAO,CAAC,SAAS;QAClB,OAAO,CAAC,KAAK,EACb,CAAC;QACD,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzD,OAAO;YACL,SAAS;YACT,MAAM,EAAE,QAAQ;YAChB,aAAa,EAAE,WAAW,CAAC,SAAS,CAAC;SACtC,CAAC;IACJ,CAAC;IAED,mEAAmE;IACnE,OAAO;QACL,SAAS,EAAE,aAAa,IAAI,aAAa;QACzC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QAC7C,aAAa,EAAE,KAAK;KACrB,CAAC;AACJ,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Pure resolution of the target platform for `primitive init`.
2
+ * Pure resolution of the target platforms for `primitive init`.
3
3
  *
4
4
  * Background (issue #1009): `primitive init` must become platform-aware. The
5
5
  * commander `-p, --platform` option no longer carries a `"web"` default, so an
@@ -9,24 +9,53 @@
9
9
  * (a) explicit `--platform` flag set -> use it (never prompt)
10
10
  * (b) init-config TOML present (configPlatform may be set) -> use config
11
11
  * value, else fall back to "web" (never prompt)
12
- * (c) interactive TTY, no flag, no config -> prompt with `select`
12
+ * (c) interactive TTY, no flag, no config -> prompt with `checkbox`
13
13
  * (d) non-TTY, no flag, no config -> fall back to "web" WITHOUT
14
14
  * hanging and WITHOUT the `ERR_USE_AFTER_CLOSE` crash that
15
- * `@inquirer/prompts` `select` throws on a closed/piped stdin
16
- * (same hazard family hardened in #972/#999 — see `confirm-prompt.ts`).
15
+ * `@inquirer/prompts` throws on a closed/piped stdin (same hazard family
16
+ * hardened in #972/#999 — see `confirm-prompt.ts`).
17
+ *
18
+ * Issue #2890 makes the resolved value a LIST: one Primitive app can have a web
19
+ * client and a native client, and `primitive init my-app --platform web,ios`
20
+ * scaffolds both into one repository. A single platform is just a list of one,
21
+ * so the contract above is unchanged — and the interactive case is a
22
+ * multi-select rather than a single-select.
17
23
  *
18
24
  * Extracting the decision into a pure function (with injectable `isTTY` /
19
25
  * `promptFn`, mirroring `confirm-prompt.ts`) makes the otherwise
20
26
  * terminal-dependent interactivity contract unit-testable.
21
27
  */
22
28
  export type Platform = "web" | "ios";
23
- /** Prompt thunk returning the chosen platform. Injectable for testing. */
24
- export type PlatformPromptFn = () => Promise<Platform>;
25
- export interface ResolvePlatformOptions {
26
- /** Value of the explicit `--platform` flag, or `undefined` when omitted. */
27
- flag?: Platform;
28
- /** `platform` key from a loaded `.primitive-init.toml`, if a config is present. */
29
- configPlatform?: Platform;
29
+ /**
30
+ * Every platform `--platform` accepts, in the order a run processes them: the
31
+ * web client is configured first (it owns the dev-port step). Parsing
32
+ * normalizes to this order, so `--platform ios,web` and `--platform web,ios`
33
+ * scaffold the same repository.
34
+ */
35
+ export declare const SUPPORTED_PLATFORMS: readonly ["web", "ios"];
36
+ /** Prompt thunk returning the chosen platforms. Injectable for testing. */
37
+ export type PlatformPromptFn = () => Promise<Platform[]>;
38
+ export interface ParsePlatformsResult {
39
+ /** Whether the value named a valid, duplicate-free, non-empty platform set. */
40
+ ok: boolean;
41
+ /** The validated platforms in canonical order; empty when `ok` is false. */
42
+ platforms: Platform[];
43
+ /** A user-facing message naming the supported set; set when `ok` is false. */
44
+ error?: string;
45
+ }
46
+ /**
47
+ * Parses a `--platform` flag value (`"web"`, `"web,ios"`) or an init-config
48
+ * `platform` key (a string or a TOML array) into a validated platform list.
49
+ *
50
+ * Returns a result rather than throwing so `validateInitConfig` can collect the
51
+ * message alongside its other errors and the flag path can print it and exit.
52
+ */
53
+ export declare function parsePlatformList(raw: string | readonly string[]): ParsePlatformsResult;
54
+ export interface ResolvePlatformsOptions {
55
+ /** Parsed `--platform` flag, or `undefined` when omitted. */
56
+ flag?: Platform[];
57
+ /** Parsed `platform` key from a loaded `.primitive-init.toml`, if any. */
58
+ configPlatform?: Platform[];
30
59
  /**
31
60
  * Whether a non-interactive init-config file is in effect. When `true`, the
32
61
  * prompt is skipped entirely (case b) regardless of TTY.
@@ -38,8 +67,8 @@ export interface ResolvePlatformOptions {
38
67
  promptFn: PlatformPromptFn;
39
68
  }
40
69
  /**
41
- * Resolve the target platform per the 4-case interactivity contract above.
70
+ * Resolve the target platforms per the 4-case interactivity contract above.
42
71
  *
43
- * @returns the resolved platform (`"web"` or `"ios"`).
72
+ * @returns a non-empty list of platforms to scaffold.
44
73
  */
45
- export declare function resolvePlatform(options: ResolvePlatformOptions): Promise<Platform>;
74
+ export declare function resolvePlatforms(options: ResolvePlatformsOptions): Promise<Platform[]>;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Pure resolution of the target platform for `primitive init`.
2
+ * Pure resolution of the target platforms for `primitive init`.
3
3
  *
4
4
  * Background (issue #1009): `primitive init` must become platform-aware. The
5
5
  * commander `-p, --platform` option no longer carries a `"web"` default, so an
@@ -9,35 +9,97 @@
9
9
  * (a) explicit `--platform` flag set -> use it (never prompt)
10
10
  * (b) init-config TOML present (configPlatform may be set) -> use config
11
11
  * value, else fall back to "web" (never prompt)
12
- * (c) interactive TTY, no flag, no config -> prompt with `select`
12
+ * (c) interactive TTY, no flag, no config -> prompt with `checkbox`
13
13
  * (d) non-TTY, no flag, no config -> fall back to "web" WITHOUT
14
14
  * hanging and WITHOUT the `ERR_USE_AFTER_CLOSE` crash that
15
- * `@inquirer/prompts` `select` throws on a closed/piped stdin
16
- * (same hazard family hardened in #972/#999 — see `confirm-prompt.ts`).
15
+ * `@inquirer/prompts` throws on a closed/piped stdin (same hazard family
16
+ * hardened in #972/#999 — see `confirm-prompt.ts`).
17
+ *
18
+ * Issue #2890 makes the resolved value a LIST: one Primitive app can have a web
19
+ * client and a native client, and `primitive init my-app --platform web,ios`
20
+ * scaffolds both into one repository. A single platform is just a list of one,
21
+ * so the contract above is unchanged — and the interactive case is a
22
+ * multi-select rather than a single-select.
17
23
  *
18
24
  * Extracting the decision into a pure function (with injectable `isTTY` /
19
25
  * `promptFn`, mirroring `confirm-prompt.ts`) makes the otherwise
20
26
  * terminal-dependent interactivity contract unit-testable.
21
27
  */
22
28
  /**
23
- * Resolve the target platform per the 4-case interactivity contract above.
29
+ * Every platform `--platform` accepts, in the order a run processes them: the
30
+ * web client is configured first (it owns the dev-port step). Parsing
31
+ * normalizes to this order, so `--platform ios,web` and `--platform web,ios`
32
+ * scaffold the same repository.
33
+ */
34
+ export const SUPPORTED_PLATFORMS = ["web", "ios"];
35
+ const SUPPORTED_LIST = SUPPORTED_PLATFORMS.join(", ");
36
+ /** The CLI compiles with `strict: false`, so callers read `ok` explicitly. */
37
+ function rejected(error) {
38
+ return { ok: false, platforms: [], error };
39
+ }
40
+ /**
41
+ * Parses a `--platform` flag value (`"web"`, `"web,ios"`) or an init-config
42
+ * `platform` key (a string or a TOML array) into a validated platform list.
43
+ *
44
+ * Returns a result rather than throwing so `validateInitConfig` can collect the
45
+ * message alongside its other errors and the flag path can print it and exit.
46
+ */
47
+ export function parsePlatformList(raw) {
48
+ const entries = typeof raw === "string" ? raw.split(",") : [...raw];
49
+ const platforms = [];
50
+ for (const entry of entries) {
51
+ if (typeof entry !== "string") {
52
+ return rejected(`Platform entries must be strings. Supported platforms: ${SUPPORTED_LIST}`);
53
+ }
54
+ const value = entry.trim();
55
+ if (value.length === 0) {
56
+ return rejected(`Empty platform entry. Supported platforms: ${SUPPORTED_LIST}`);
57
+ }
58
+ if (!SUPPORTED_PLATFORMS.includes(value)) {
59
+ return rejected(`Unknown platform "${value}". Supported platforms: ${SUPPORTED_LIST}`);
60
+ }
61
+ if (platforms.includes(value)) {
62
+ return rejected(`Duplicate platform "${value}". Name each platform once. Supported platforms: ${SUPPORTED_LIST}`);
63
+ }
64
+ platforms.push(value);
65
+ }
66
+ if (platforms.length === 0) {
67
+ return rejected(`No platform selected. Supported platforms: ${SUPPORTED_LIST}`);
68
+ }
69
+ return {
70
+ ok: true,
71
+ platforms: SUPPORTED_PLATFORMS.filter((p) => platforms.includes(p)),
72
+ };
73
+ }
74
+ /**
75
+ * Resolve the target platforms per the 4-case interactivity contract above.
24
76
  *
25
- * @returns the resolved platform (`"web"` or `"ios"`).
77
+ * @returns a non-empty list of platforms to scaffold.
26
78
  */
27
- export async function resolvePlatform(options) {
79
+ export async function resolvePlatforms(options) {
80
+ // A selection with nothing in it has nothing to scaffold. The prompt's own
81
+ // `validate` re-asks rather than returning one, and `parsePlatformList`
82
+ // rejects one — this is the backstop, so no caller ever plans a layout with
83
+ // no clients in it.
84
+ const required = (platforms) => {
85
+ if (platforms.length === 0) {
86
+ throw new Error(`Select at least one platform. Supported platforms: ${SUPPORTED_LIST}`);
87
+ }
88
+ return platforms;
89
+ };
28
90
  // (a) explicit flag wins, no prompt.
29
91
  if (options.flag !== undefined) {
30
- return options.flag;
92
+ return required(options.flag);
31
93
  }
32
- // (b) non-interactive config present: use its platform or default to web.
94
+ // (b) non-interactive config present: use its platforms or default to web.
33
95
  if (options.hasConfig) {
34
- return options.configPlatform ?? "web";
96
+ return required(options.configPlatform ?? ["web"]);
35
97
  }
36
98
  // (c) interactive TTY, no flag, no config: prompt.
37
99
  if (options.isTTY) {
38
- return options.promptFn();
100
+ return required(await options.promptFn());
39
101
  }
40
102
  // (d) non-TTY, no flag, no config: never prompt; fall back to web.
41
- return "web";
103
+ return ["web"];
42
104
  }
43
105
  //# sourceMappingURL=resolve-platform.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-platform.js","sourceRoot":"","sources":["../../../src/lib/resolve-platform.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAuBH;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAA+B;IAE/B,qCAAqC;IACrC,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,OAAO,CAAC,IAAI,CAAC;IACtB,CAAC;IAED,0EAA0E;IAC1E,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,OAAO,OAAO,CAAC,cAAc,IAAI,KAAK,CAAC;IACzC,CAAC;IAED,mDAAmD;IACnD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC;IAC5B,CAAC;IAED,mEAAmE;IACnE,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"resolve-platform.js","sourceRoot":"","sources":["../../../src/lib/resolve-platform.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * The canonical workflow-run status vocabulary, as the CLI sees it (#2348).
3
+ *
4
+ * The server reconciles every status surface (the app status endpoints,
5
+ * `listRuns`, and all three admin status handlers) onto exactly these values
6
+ * before they go on the wire, so the CLI never has to re-derive terminality
7
+ * from a raw Cloudflare spelling (`complete`, `errored`, `waiting`) again.
8
+ * Those spellings no longer reach a client.
9
+ *
10
+ * #2636 — the vocabulary itself is no longer copied by hand: it is GENERATED
11
+ * from the server's `src/workflows/run-status.ts` into
12
+ * `run-status.generated.ts` (`pnpm gen:run-status`) and re-exported here, so a
13
+ * future status is a one-site edit plus regeneration rather than four
14
+ * hand-edits that a lagging copy turns into a hung poll loop. This module stays
15
+ * the ONE place `cli/` imports the vocabulary from — every command and
16
+ * formatter reads it from here.
17
+ */
18
+ export { RUN_STATUSES, RUN_STATUS_LIST, TERMINAL_RUN_STATUSES, APPLY_RUN_STATUSES, IN_FLIGHT_RUN_STATUSES, SETTLED_RUN_STATUSES, isRunStatus, } from "./run-status.generated.js";
19
+ export type { RunStatus } from "./run-status.generated.js";