@rippling/rippling-sdk 0.2.0-alpha.84 → 0.2.0-alpha.85

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 (314) hide show
  1. package/examples/manifest/custom-object-creation-workflow/custom-object-creation-workflow.ts +44 -26
  2. package/examples/manifest/dental-practice-management/dental-practice-management.ts +470 -142
  3. package/examples/manifest/dental-practice-management/functions/chair-schedule.ts +23 -13
  4. package/examples/manifest/dental-practice-management/functions/complete-visit.ts +55 -32
  5. package/examples/manifest/dental-practice-management/functions/operatory-list.ts +23 -13
  6. package/examples/manifest/dental-practice-management/functions/patient-list.ts +23 -13
  7. package/examples/manifest/dental-practice-management/functions/treatment-plan-list.ts +23 -13
  8. package/examples/manifest/existing-manifest-mutations/existing-manifest-mutations.ts +23 -68
  9. package/examples/manifest/field-service-dispatch/field-service-dispatch.ts +375 -102
  10. package/examples/manifest/grant-program-management/grant-program-management.ts +419 -125
  11. package/examples/manifest/gym-membership-management/functions/check-in-desk.ts +23 -13
  12. package/examples/manifest/gym-membership-management/functions/member-list.ts +23 -13
  13. package/examples/manifest/gym-membership-management/functions/today-schedule.ts +23 -13
  14. package/examples/manifest/gym-membership-management/functions/trainer-list.ts +23 -13
  15. package/examples/manifest/gym-membership-management/gym-membership-management.ts +442 -92
  16. package/examples/manifest/procurement-approval-hub/procurement-approval-hub.ts +408 -122
  17. package/examples/manifest/simple-todo-app/functions/mark-done.ts +12 -16
  18. package/examples/manifest/simple-todo-app/functions/todo-list.ts +23 -13
  19. package/examples/manifest/simple-todo-app/simple-todo-app.ts +109 -40
  20. package/examples/manifest/todo-app-without-object-list-view/functions/todo-page.ts +193 -166
  21. package/examples/manifest/todo-app-without-object-list-view/todo-app-without-object-list-view.ts +47 -24
  22. package/package.json +13 -7
  23. package/resources/custom-objects/custom-objects.d.mts +0 -7
  24. package/resources/custom-objects/custom-objects.d.mts.map +1 -1
  25. package/resources/custom-objects/custom-objects.d.ts +0 -7
  26. package/resources/custom-objects/custom-objects.d.ts.map +1 -1
  27. package/resources/custom-objects/custom-objects.js.map +1 -1
  28. package/resources/custom-objects/custom-objects.mjs.map +1 -1
  29. package/resources/custom-objects/fields.d.mts +14 -128
  30. package/resources/custom-objects/fields.d.mts.map +1 -1
  31. package/resources/custom-objects/fields.d.ts +14 -128
  32. package/resources/custom-objects/fields.d.ts.map +1 -1
  33. package/src/resources/custom-objects/custom-objects.ts +0 -8
  34. package/src/resources/custom-objects/fields.ts +13 -191
  35. package/src/tsconfig.json +1 -1
  36. package/src/version.ts +1 -1
  37. package/version.d.mts +1 -1
  38. package/version.d.ts +1 -1
  39. package/version.js +1 -1
  40. package/version.mjs +1 -1
  41. package/core/platform/custom-objects/category.d.mts +0 -125
  42. package/core/platform/custom-objects/category.d.mts.map +0 -1
  43. package/core/platform/custom-objects/category.d.ts +0 -125
  44. package/core/platform/custom-objects/category.d.ts.map +0 -1
  45. package/core/platform/custom-objects/category.js +0 -188
  46. package/core/platform/custom-objects/category.js.map +0 -1
  47. package/core/platform/custom-objects/category.mjs +0 -178
  48. package/core/platform/custom-objects/category.mjs.map +0 -1
  49. package/core/platform/custom-objects/definition.d.mts +0 -147
  50. package/core/platform/custom-objects/definition.d.mts.map +0 -1
  51. package/core/platform/custom-objects/definition.d.ts +0 -147
  52. package/core/platform/custom-objects/definition.d.ts.map +0 -1
  53. package/core/platform/custom-objects/definition.js +0 -200
  54. package/core/platform/custom-objects/definition.js.map +0 -1
  55. package/core/platform/custom-objects/definition.mjs +0 -190
  56. package/core/platform/custom-objects/definition.mjs.map +0 -1
  57. package/core/platform/custom-objects/fields.d.mts +0 -302
  58. package/core/platform/custom-objects/fields.d.mts.map +0 -1
  59. package/core/platform/custom-objects/fields.d.ts +0 -302
  60. package/core/platform/custom-objects/fields.d.ts.map +0 -1
  61. package/core/platform/custom-objects/fields.js +0 -369
  62. package/core/platform/custom-objects/fields.js.map +0 -1
  63. package/core/platform/custom-objects/fields.mjs +0 -347
  64. package/core/platform/custom-objects/fields.mjs.map +0 -1
  65. package/core/platform/custom-objects/function-runtime.d.mts +0 -42
  66. package/core/platform/custom-objects/function-runtime.d.mts.map +0 -1
  67. package/core/platform/custom-objects/function-runtime.d.ts +0 -42
  68. package/core/platform/custom-objects/function-runtime.d.ts.map +0 -1
  69. package/core/platform/custom-objects/function-runtime.js +0 -38
  70. package/core/platform/custom-objects/function-runtime.js.map +0 -1
  71. package/core/platform/custom-objects/function-runtime.mjs +0 -35
  72. package/core/platform/custom-objects/function-runtime.mjs.map +0 -1
  73. package/core/platform/custom-objects/lifecycle.d.mts +0 -83
  74. package/core/platform/custom-objects/lifecycle.d.mts.map +0 -1
  75. package/core/platform/custom-objects/lifecycle.d.ts +0 -83
  76. package/core/platform/custom-objects/lifecycle.d.ts.map +0 -1
  77. package/core/platform/custom-objects/lifecycle.js +0 -372
  78. package/core/platform/custom-objects/lifecycle.js.map +0 -1
  79. package/core/platform/custom-objects/lifecycle.mjs +0 -367
  80. package/core/platform/custom-objects/lifecycle.mjs.map +0 -1
  81. package/core/platform/custom-objects/manager.d.mts +0 -354
  82. package/core/platform/custom-objects/manager.d.mts.map +0 -1
  83. package/core/platform/custom-objects/manager.d.ts +0 -354
  84. package/core/platform/custom-objects/manager.d.ts.map +0 -1
  85. package/core/platform/custom-objects/manager.js +0 -646
  86. package/core/platform/custom-objects/manager.js.map +0 -1
  87. package/core/platform/custom-objects/manager.mjs +0 -637
  88. package/core/platform/custom-objects/manager.mjs.map +0 -1
  89. package/core/platform/custom-objects/provisioning.d.mts +0 -138
  90. package/core/platform/custom-objects/provisioning.d.mts.map +0 -1
  91. package/core/platform/custom-objects/provisioning.d.ts +0 -138
  92. package/core/platform/custom-objects/provisioning.d.ts.map +0 -1
  93. package/core/platform/custom-objects/provisioning.js +0 -455
  94. package/core/platform/custom-objects/provisioning.js.map +0 -1
  95. package/core/platform/custom-objects/provisioning.mjs +0 -447
  96. package/core/platform/custom-objects/provisioning.mjs.map +0 -1
  97. package/core/platform/custom-objects/rql.d.mts +0 -122
  98. package/core/platform/custom-objects/rql.d.mts.map +0 -1
  99. package/core/platform/custom-objects/rql.d.ts +0 -122
  100. package/core/platform/custom-objects/rql.d.ts.map +0 -1
  101. package/core/platform/custom-objects/rql.js +0 -225
  102. package/core/platform/custom-objects/rql.js.map +0 -1
  103. package/core/platform/custom-objects/rql.mjs +0 -222
  104. package/core/platform/custom-objects/rql.mjs.map +0 -1
  105. package/core/platform/custom-objects/schema-manager.d.mts +0 -203
  106. package/core/platform/custom-objects/schema-manager.d.mts.map +0 -1
  107. package/core/platform/custom-objects/schema-manager.d.ts +0 -203
  108. package/core/platform/custom-objects/schema-manager.d.ts.map +0 -1
  109. package/core/platform/custom-objects/schema-manager.js +0 -256
  110. package/core/platform/custom-objects/schema-manager.js.map +0 -1
  111. package/core/platform/custom-objects/schema-manager.mjs +0 -249
  112. package/core/platform/custom-objects/schema-manager.mjs.map +0 -1
  113. package/core/platform/custom-objects/typed-rql.d.mts +0 -157
  114. package/core/platform/custom-objects/typed-rql.d.mts.map +0 -1
  115. package/core/platform/custom-objects/typed-rql.d.ts +0 -157
  116. package/core/platform/custom-objects/typed-rql.d.ts.map +0 -1
  117. package/core/platform/custom-objects/typed-rql.js +0 -583
  118. package/core/platform/custom-objects/typed-rql.js.map +0 -1
  119. package/core/platform/custom-objects/typed-rql.mjs +0 -580
  120. package/core/platform/custom-objects/typed-rql.mjs.map +0 -1
  121. package/core/platform/custom-objects/types.d.mts +0 -549
  122. package/core/platform/custom-objects/types.d.mts.map +0 -1
  123. package/core/platform/custom-objects/types.d.ts +0 -549
  124. package/core/platform/custom-objects/types.d.ts.map +0 -1
  125. package/core/platform/custom-objects/types.js +0 -20
  126. package/core/platform/custom-objects/types.js.map +0 -1
  127. package/core/platform/custom-objects/types.mjs +0 -17
  128. package/core/platform/custom-objects/types.mjs.map +0 -1
  129. package/core/platform/custom-objects/validation.d.mts +0 -97
  130. package/core/platform/custom-objects/validation.d.mts.map +0 -1
  131. package/core/platform/custom-objects/validation.d.ts +0 -97
  132. package/core/platform/custom-objects/validation.d.ts.map +0 -1
  133. package/core/platform/custom-objects/validation.js +0 -477
  134. package/core/platform/custom-objects/validation.js.map +0 -1
  135. package/core/platform/custom-objects/validation.mjs +0 -465
  136. package/core/platform/custom-objects/validation.mjs.map +0 -1
  137. package/core/platform/custom-objects.d.mts +0 -67
  138. package/core/platform/custom-objects.d.mts.map +0 -1
  139. package/core/platform/custom-objects.d.ts +0 -67
  140. package/core/platform/custom-objects.d.ts.map +0 -1
  141. package/core/platform/custom-objects.js +0 -118
  142. package/core/platform/custom-objects.js.map +0 -1
  143. package/core/platform/custom-objects.mjs +0 -45
  144. package/core/platform/custom-objects.mjs.map +0 -1
  145. package/core/platform/manifest/custom-objects/action.d.mts +0 -58
  146. package/core/platform/manifest/custom-objects/action.d.mts.map +0 -1
  147. package/core/platform/manifest/custom-objects/action.d.ts +0 -58
  148. package/core/platform/manifest/custom-objects/action.d.ts.map +0 -1
  149. package/core/platform/manifest/custom-objects/action.js +0 -44
  150. package/core/platform/manifest/custom-objects/action.js.map +0 -1
  151. package/core/platform/manifest/custom-objects/action.mjs +0 -40
  152. package/core/platform/manifest/custom-objects/action.mjs.map +0 -1
  153. package/core/platform/manifest/custom-objects/conditions.d.mts +0 -240
  154. package/core/platform/manifest/custom-objects/conditions.d.mts.map +0 -1
  155. package/core/platform/manifest/custom-objects/conditions.d.ts +0 -240
  156. package/core/platform/manifest/custom-objects/conditions.d.ts.map +0 -1
  157. package/core/platform/manifest/custom-objects/conditions.js +0 -326
  158. package/core/platform/manifest/custom-objects/conditions.js.map +0 -1
  159. package/core/platform/manifest/custom-objects/conditions.mjs +0 -321
  160. package/core/platform/manifest/custom-objects/conditions.mjs.map +0 -1
  161. package/core/platform/manifest/custom-objects/existing.d.mts +0 -87
  162. package/core/platform/manifest/custom-objects/existing.d.mts.map +0 -1
  163. package/core/platform/manifest/custom-objects/existing.d.ts +0 -87
  164. package/core/platform/manifest/custom-objects/existing.d.ts.map +0 -1
  165. package/core/platform/manifest/custom-objects/existing.js +0 -113
  166. package/core/platform/manifest/custom-objects/existing.js.map +0 -1
  167. package/core/platform/manifest/custom-objects/existing.mjs +0 -109
  168. package/core/platform/manifest/custom-objects/existing.mjs.map +0 -1
  169. package/core/platform/manifest/custom-objects/field-resolution.d.mts +0 -48
  170. package/core/platform/manifest/custom-objects/field-resolution.d.mts.map +0 -1
  171. package/core/platform/manifest/custom-objects/field-resolution.d.ts +0 -48
  172. package/core/platform/manifest/custom-objects/field-resolution.d.ts.map +0 -1
  173. package/core/platform/manifest/custom-objects/field-resolution.js +0 -61
  174. package/core/platform/manifest/custom-objects/field-resolution.js.map +0 -1
  175. package/core/platform/manifest/custom-objects/field-resolution.mjs +0 -58
  176. package/core/platform/manifest/custom-objects/field-resolution.mjs.map +0 -1
  177. package/core/platform/manifest/custom-objects/function-file.d.mts +0 -87
  178. package/core/platform/manifest/custom-objects/function-file.d.mts.map +0 -1
  179. package/core/platform/manifest/custom-objects/function-file.d.ts +0 -87
  180. package/core/platform/manifest/custom-objects/function-file.d.ts.map +0 -1
  181. package/core/platform/manifest/custom-objects/function-file.js +0 -76
  182. package/core/platform/manifest/custom-objects/function-file.js.map +0 -1
  183. package/core/platform/manifest/custom-objects/function-file.mjs +0 -69
  184. package/core/platform/manifest/custom-objects/function-file.mjs.map +0 -1
  185. package/core/platform/manifest/custom-objects/list-view.d.mts +0 -65
  186. package/core/platform/manifest/custom-objects/list-view.d.mts.map +0 -1
  187. package/core/platform/manifest/custom-objects/list-view.d.ts +0 -65
  188. package/core/platform/manifest/custom-objects/list-view.d.ts.map +0 -1
  189. package/core/platform/manifest/custom-objects/list-view.js +0 -33
  190. package/core/platform/manifest/custom-objects/list-view.js.map +0 -1
  191. package/core/platform/manifest/custom-objects/list-view.mjs +0 -30
  192. package/core/platform/manifest/custom-objects/list-view.mjs.map +0 -1
  193. package/core/platform/manifest/custom-objects/object-list-page.d.mts +0 -43
  194. package/core/platform/manifest/custom-objects/object-list-page.d.mts.map +0 -1
  195. package/core/platform/manifest/custom-objects/object-list-page.d.ts +0 -43
  196. package/core/platform/manifest/custom-objects/object-list-page.d.ts.map +0 -1
  197. package/core/platform/manifest/custom-objects/object-list-page.js +0 -54
  198. package/core/platform/manifest/custom-objects/object-list-page.js.map +0 -1
  199. package/core/platform/manifest/custom-objects/object-list-page.mjs +0 -50
  200. package/core/platform/manifest/custom-objects/object-list-page.mjs.map +0 -1
  201. package/core/platform/manifest/custom-objects/page-layout.d.mts +0 -142
  202. package/core/platform/manifest/custom-objects/page-layout.d.mts.map +0 -1
  203. package/core/platform/manifest/custom-objects/page-layout.d.ts +0 -142
  204. package/core/platform/manifest/custom-objects/page-layout.d.ts.map +0 -1
  205. package/core/platform/manifest/custom-objects/page-layout.js +0 -184
  206. package/core/platform/manifest/custom-objects/page-layout.js.map +0 -1
  207. package/core/platform/manifest/custom-objects/page-layout.mjs +0 -180
  208. package/core/platform/manifest/custom-objects/page-layout.mjs.map +0 -1
  209. package/core/platform/manifest/custom-objects/register.d.mts +0 -87
  210. package/core/platform/manifest/custom-objects/register.d.mts.map +0 -1
  211. package/core/platform/manifest/custom-objects/register.d.ts +0 -87
  212. package/core/platform/manifest/custom-objects/register.d.ts.map +0 -1
  213. package/core/platform/manifest/custom-objects/register.js +0 -395
  214. package/core/platform/manifest/custom-objects/register.js.map +0 -1
  215. package/core/platform/manifest/custom-objects/register.mjs +0 -391
  216. package/core/platform/manifest/custom-objects/register.mjs.map +0 -1
  217. package/core/platform/manifest/custom-objects/rule.d.mts +0 -113
  218. package/core/platform/manifest/custom-objects/rule.d.mts.map +0 -1
  219. package/core/platform/manifest/custom-objects/rule.d.ts +0 -113
  220. package/core/platform/manifest/custom-objects/rule.d.ts.map +0 -1
  221. package/core/platform/manifest/custom-objects/rule.js +0 -49
  222. package/core/platform/manifest/custom-objects/rule.js.map +0 -1
  223. package/core/platform/manifest/custom-objects/rule.mjs +0 -45
  224. package/core/platform/manifest/custom-objects/rule.mjs.map +0 -1
  225. package/core/platform/manifest/custom-objects/sdui-page.d.mts +0 -214
  226. package/core/platform/manifest/custom-objects/sdui-page.d.mts.map +0 -1
  227. package/core/platform/manifest/custom-objects/sdui-page.d.ts +0 -214
  228. package/core/platform/manifest/custom-objects/sdui-page.d.ts.map +0 -1
  229. package/core/platform/manifest/custom-objects/sdui-page.js +0 -194
  230. package/core/platform/manifest/custom-objects/sdui-page.js.map +0 -1
  231. package/core/platform/manifest/custom-objects/sdui-page.mjs +0 -182
  232. package/core/platform/manifest/custom-objects/sdui-page.mjs.map +0 -1
  233. package/core/platform/manifest/custom-objects/typed-condition.d.mts +0 -28
  234. package/core/platform/manifest/custom-objects/typed-condition.d.mts.map +0 -1
  235. package/core/platform/manifest/custom-objects/typed-condition.d.ts +0 -28
  236. package/core/platform/manifest/custom-objects/typed-condition.d.ts.map +0 -1
  237. package/core/platform/manifest/custom-objects/typed-condition.js +0 -434
  238. package/core/platform/manifest/custom-objects/typed-condition.js.map +0 -1
  239. package/core/platform/manifest/custom-objects/typed-condition.mjs +0 -431
  240. package/core/platform/manifest/custom-objects/typed-condition.mjs.map +0 -1
  241. package/core/platform/manifest/custom-objects/types.d.mts +0 -29
  242. package/core/platform/manifest/custom-objects/types.d.mts.map +0 -1
  243. package/core/platform/manifest/custom-objects/types.d.ts +0 -29
  244. package/core/platform/manifest/custom-objects/types.d.ts.map +0 -1
  245. package/core/platform/manifest/custom-objects/types.js +0 -3
  246. package/core/platform/manifest/custom-objects/types.js.map +0 -1
  247. package/core/platform/manifest/custom-objects/types.mjs +0 -2
  248. package/core/platform/manifest/custom-objects/types.mjs.map +0 -1
  249. package/core/platform/manifest/custom-objects/validation.d.mts +0 -44
  250. package/core/platform/manifest/custom-objects/validation.d.mts.map +0 -1
  251. package/core/platform/manifest/custom-objects/validation.d.ts +0 -44
  252. package/core/platform/manifest/custom-objects/validation.d.ts.map +0 -1
  253. package/core/platform/manifest/custom-objects/validation.js +0 -30
  254. package/core/platform/manifest/custom-objects/validation.js.map +0 -1
  255. package/core/platform/manifest/custom-objects/validation.mjs +0 -27
  256. package/core/platform/manifest/custom-objects/validation.mjs.map +0 -1
  257. package/core/platform/manifest/custom-objects/workflow.d.mts +0 -47
  258. package/core/platform/manifest/custom-objects/workflow.d.mts.map +0 -1
  259. package/core/platform/manifest/custom-objects/workflow.d.ts +0 -47
  260. package/core/platform/manifest/custom-objects/workflow.d.ts.map +0 -1
  261. package/core/platform/manifest/custom-objects/workflow.js +0 -38
  262. package/core/platform/manifest/custom-objects/workflow.js.map +0 -1
  263. package/core/platform/manifest/custom-objects/workflow.mjs +0 -34
  264. package/core/platform/manifest/custom-objects/workflow.mjs.map +0 -1
  265. package/core/platform/manifest/custom-objects.d.mts +0 -85
  266. package/core/platform/manifest/custom-objects.d.mts.map +0 -1
  267. package/core/platform/manifest/custom-objects.d.ts +0 -85
  268. package/core/platform/manifest/custom-objects.d.ts.map +0 -1
  269. package/core/platform/manifest/custom-objects.js +0 -84
  270. package/core/platform/manifest/custom-objects.js.map +0 -1
  271. package/core/platform/manifest/custom-objects.mjs +0 -55
  272. package/core/platform/manifest/custom-objects.mjs.map +0 -1
  273. package/examples/manifest/custom-object-creation-workflow/functions/intake-request-created.ts +0 -20
  274. package/examples/manifest/custom-object-creation-workflow/schema.ts +0 -29
  275. package/examples/manifest/dental-practice-management/schema.ts +0 -298
  276. package/examples/manifest/field-service-dispatch/schema.ts +0 -248
  277. package/examples/manifest/grant-program-management/schema.ts +0 -269
  278. package/examples/manifest/gym-membership-management/schema.ts +0 -266
  279. package/examples/manifest/procurement-approval-hub/functions/route-purchase-request.ts +0 -20
  280. package/examples/manifest/procurement-approval-hub/schema.ts +0 -256
  281. package/examples/manifest/simple-todo-app/schema.ts +0 -60
  282. package/examples/manifest/todo-app-without-object-list-view/schema.ts +0 -28
  283. package/src/core/platform/README.md +0 -20
  284. package/src/core/platform/custom-objects/category.ts +0 -294
  285. package/src/core/platform/custom-objects/definition.ts +0 -373
  286. package/src/core/platform/custom-objects/fields.ts +0 -653
  287. package/src/core/platform/custom-objects/function-runtime.ts +0 -76
  288. package/src/core/platform/custom-objects/lifecycle.ts +0 -557
  289. package/src/core/platform/custom-objects/manager.ts +0 -959
  290. package/src/core/platform/custom-objects/provisioning.ts +0 -672
  291. package/src/core/platform/custom-objects/rql.ts +0 -375
  292. package/src/core/platform/custom-objects/schema-manager.ts +0 -351
  293. package/src/core/platform/custom-objects/typed-rql.ts +0 -1273
  294. package/src/core/platform/custom-objects/types.ts +0 -753
  295. package/src/core/platform/custom-objects/validation.ts +0 -573
  296. package/src/core/platform/custom-objects.ts +0 -269
  297. package/src/core/platform/manifest/README.md +0 -26
  298. package/src/core/platform/manifest/custom-objects/action.ts +0 -87
  299. package/src/core/platform/manifest/custom-objects/conditions.ts +0 -762
  300. package/src/core/platform/manifest/custom-objects/existing.ts +0 -221
  301. package/src/core/platform/manifest/custom-objects/field-resolution.ts +0 -116
  302. package/src/core/platform/manifest/custom-objects/function-file.ts +0 -149
  303. package/src/core/platform/manifest/custom-objects/list-view.ts +0 -95
  304. package/src/core/platform/manifest/custom-objects/object-list-page.ts +0 -87
  305. package/src/core/platform/manifest/custom-objects/page-layout.ts +0 -380
  306. package/src/core/platform/manifest/custom-objects/register.ts +0 -555
  307. package/src/core/platform/manifest/custom-objects/rule.ts +0 -192
  308. package/src/core/platform/manifest/custom-objects/sdui-page.ts +0 -515
  309. package/src/core/platform/manifest/custom-objects/typed-condition.ts +0 -617
  310. package/src/core/platform/manifest/custom-objects/types.ts +0 -92
  311. package/src/core/platform/manifest/custom-objects/validation.ts +0 -70
  312. package/src/core/platform/manifest/custom-objects/workflow.ts +0 -71
  313. package/src/core/platform/manifest/custom-objects.ts +0 -203
  314. package/src/pebble-sdui-web-custom-apps-shim.d.ts +0 -3
@@ -1,373 +0,0 @@
1
- import type { CustomObjectCategoryDefinition } from './category';
2
- import type {
3
- AnyCustomObjectDefinition,
4
- AnyFieldDefinition,
5
- CategoryApiName,
6
- CustomObjectApiName,
7
- CustomObjectDefinition,
8
- FieldDefinitions,
9
- FieldNames,
10
- LogicalCategoryName,
11
- LogicalCustomFieldName,
12
- LogicalCustomObjectName,
13
- NameFieldDefinition,
14
- ResolvedFieldDefinition,
15
- SectionDefinitions,
16
- } from './types';
17
- import {
18
- validateCustomObjectDefinition,
19
- validateLogicalCategoryName,
20
- validateLogicalCustomFieldName,
21
- validateLogicalCustomObjectName,
22
- } from './validation';
23
-
24
- /**
25
- * Internal input shape accepted by {@link defineCustomObject} before normalization.
26
- *
27
- * @typeParam TObjectName - Logical custom-object name for the definition.
28
- * @typeParam TCategoryName - Logical category name associated with the object.
29
- * @typeParam TSections - Section map available to field definitions.
30
- * @typeParam TFields - Field map keyed by logical custom-field names.
31
- * @typeParam TNameField - Optional name-field behavior supplied by the caller.
32
- */
33
- type CategoryInput<TCategoryName extends string> =
34
- | LogicalCategoryName<TCategoryName>
35
- | CustomObjectCategoryDefinition<LogicalCategoryName<TCategoryName>>;
36
-
37
- /**
38
- * Internal input shape accepted by {@link defineCustomObject} before normalization.
39
- *
40
- * @typeParam TObjectName - Logical custom-object name for the definition.
41
- * @typeParam TCategoryName - Logical category name associated with the object.
42
- * @typeParam TSections - Section map available to field definitions.
43
- * @typeParam TFields - Field map keyed by logical custom-field names.
44
- * @typeParam TNameField - Optional name-field behavior supplied by the caller.
45
- */
46
- interface CustomObjectDefinitionInput<
47
- TObjectName extends string,
48
- TCategoryName extends string,
49
- TSections extends SectionDefinitions,
50
- TFields extends FieldDefinitions,
51
- TNameField extends NameFieldDefinition,
52
- > {
53
- readonly name: LogicalCustomObjectName<TObjectName>;
54
- readonly displayName: string;
55
- readonly pluralLabel?: string;
56
- readonly category: CategoryInput<TCategoryName>;
57
- readonly ownerRole?: string;
58
- readonly enableHistory?: boolean;
59
- readonly description: string;
60
- readonly icon?: {
61
- readonly emoji?: string | null;
62
- readonly ripplingIcon?: string | null;
63
- readonly s3Bucket?: string;
64
- readonly s3Key?: string;
65
- };
66
- readonly nameField?: TNameField;
67
- readonly sections?: TSections;
68
- readonly fields: ValidateFieldMap<TFields>;
69
- }
70
-
71
- /**
72
- * Rejects extension objects that try to redefine keys already present on the base definition.
73
- *
74
- * @typeParam TExisting - Existing key set on the base definition.
75
- * @typeParam TAdded - Proposed extension object.
76
- */
77
- type NoOverlappingKeys<TExisting extends object, TAdded extends object> = Extract<
78
- keyof TExisting,
79
- keyof TAdded
80
- > extends never ?
81
- TAdded
82
- : never;
83
-
84
- /**
85
- * Converts a logical field map into a version whose keys must all satisfy the
86
- * logical custom-field name contract.
87
- *
88
- * @typeParam TFields - Candidate logical field map supplied by callers.
89
- */
90
- type ValidateFieldMap<TFields extends FieldDefinitions> = {
91
- readonly [K in keyof TFields]: K extends string ?
92
- LogicalCustomFieldName<K> extends never ?
93
- never
94
- : TFields[K]
95
- : never;
96
- };
97
-
98
- /**
99
- * Recursively freezes author-authored schema definitions.
100
- *
101
- * The schema layer is intended to act like durable configuration data rather
102
- * than mutable runtime state, so this helper aggressively removes mutation as a
103
- * failure mode after validation succeeds.
104
- *
105
- * @typeParam T - Value being frozen.
106
- */
107
- /**
108
- * Deeply freezes a schema fragment after validation succeeds.
109
- *
110
- * @param value - Value to recursively freeze in place.
111
- * @returns The same value, now deeply frozen where applicable.
112
- * @typeParam T - Value being frozen.
113
- */
114
- function deepFreeze<T>(value: T): T {
115
- if (value == null || typeof value !== 'object') return value;
116
-
117
- for (const child of Object.values(value as Record<string, unknown>)) {
118
- deepFreeze(child);
119
- }
120
-
121
- return Object.freeze(value);
122
- }
123
-
124
- /**
125
- * Appends the platform-required `__c` suffix to a logical custom-object name.
126
- *
127
- * @param name - Logical unsuffixed custom-object name.
128
- * @returns Wire-level custom-object API name with the required `__c` suffix.
129
- * @typeParam TObjectName - Logical custom-object name to compile.
130
- */
131
- export function toCustomObjectApiName<TObjectName extends string>(
132
- name: LogicalCustomObjectName<TObjectName>,
133
- ): CustomObjectApiName<TObjectName> {
134
- return `${name}__c` as CustomObjectApiName<TObjectName>;
135
- }
136
-
137
- /**
138
- * Appends the platform-required `__c` suffix to a logical custom-field name.
139
- *
140
- * @param name - Logical unsuffixed custom-field name.
141
- * @returns Wire-level custom-field API name with the required `__c` suffix.
142
- * @typeParam TFieldName - Logical custom-field name to compile.
143
- */
144
- export function toCustomFieldApiName<TFieldName extends string>(
145
- name: LogicalCustomFieldName<TFieldName>,
146
- ): `${TFieldName}__c` {
147
- return `${name}__c`;
148
- }
149
-
150
- /**
151
- * Appends the platform-required `__c` suffix to a logical category name.
152
- *
153
- * @param name - Logical unsuffixed category name.
154
- * @returns Wire-level category API name with the required `__c` suffix.
155
- * @typeParam TCategoryName - Logical category name to compile.
156
- */
157
- export function toCustomCategoryApiName<TCategoryName extends string>(
158
- name: LogicalCategoryName<TCategoryName>,
159
- ): CategoryApiName<TCategoryName> {
160
- return `${name}__c` as CategoryApiName<TCategoryName>;
161
- }
162
-
163
- /**
164
- * Defines an immutable, strongly typed custom-object schema.
165
- *
166
- * Callers author only logical snake_case names. The returned value includes the
167
- * derived wire-level api names so downstream tooling can emit valid manifest
168
- * payloads without requiring authors to know about the `__c` suffix contract.
169
- *
170
- * @typeParam TObjectName - Logical custom-object name for the definition.
171
- * @typeParam TCategoryName - Logical category name associated with the object.
172
- * @typeParam TSections - Section map available to field definitions.
173
- * @typeParam TFields - Field map keyed by logical custom-field names.
174
- * @param definition - Author-facing typed schema definition to normalize, validate, and freeze.
175
- * @returns Immutable normalized custom-object definition with compiled field and object API names.
176
- * @typeParam TNameField - Name-field behavior for the object.
177
- */
178
- export function defineCustomObject<
179
- TObjectName extends string,
180
- TCategoryName extends string,
181
- TSections extends SectionDefinitions = {},
182
- TFields extends FieldDefinitions = FieldDefinitions,
183
- TNameField extends NameFieldDefinition = { kind: 'text' },
184
- >(
185
- definition: CustomObjectDefinitionInput<TObjectName, TCategoryName, TSections, TFields, TNameField>,
186
- ): Readonly<
187
- CustomObjectDefinition<
188
- LogicalCustomObjectName<TObjectName>,
189
- LogicalCategoryName<TCategoryName>,
190
- TSections,
191
- TFields,
192
- TNameField
193
- >
194
- > {
195
- validateLogicalCustomObjectName(definition.name);
196
-
197
- const categoryDefinition = typeof definition.category === 'string' ? undefined : definition.category;
198
- const categoryName =
199
- typeof definition.category === 'string' ? definition.category : definition.category.name;
200
- const categoryApiName =
201
- typeof definition.category === 'string' ?
202
- toCustomCategoryApiName(definition.category)
203
- : definition.category.apiName;
204
-
205
- validateLogicalCategoryName(categoryName);
206
-
207
- const resolvedFields = Object.fromEntries(
208
- Object.entries(definition.fields).map(([logicalName, field]) => {
209
- validateLogicalCustomFieldName(logicalName);
210
- return [
211
- logicalName,
212
- {
213
- ...field,
214
- logicalName,
215
- apiName: toCustomFieldApiName(logicalName),
216
- },
217
- ];
218
- }),
219
- ) as unknown as {
220
- readonly [K in Extract<keyof TFields, string>]: ResolvedFieldDefinition<K, TFields[K]>;
221
- };
222
-
223
- const normalized = {
224
- name: definition.name,
225
- apiName: toCustomObjectApiName(definition.name) as CustomObjectApiName<
226
- LogicalCustomObjectName<TObjectName>
227
- >,
228
- displayName: definition.displayName,
229
- ...(definition.pluralLabel != null ? { pluralLabel: definition.pluralLabel } : {}),
230
- category: categoryName,
231
- ...(categoryDefinition != null ? { categoryDefinition } : {}),
232
- ...(definition.ownerRole != null ? { ownerRole: definition.ownerRole } : {}),
233
- ...(definition.enableHistory != null ? { enableHistory: definition.enableHistory } : {}),
234
- categoryApiName: categoryApiName as CategoryApiName<LogicalCategoryName<TCategoryName>>,
235
- description: definition.description,
236
- ...(definition.icon != null ? { icon: definition.icon } : {}),
237
- nameField: (definition.nameField ?? { kind: 'text' }) as TNameField,
238
- sections: (definition.sections ?? ({} as TSections)) as TSections,
239
- fields: resolvedFields,
240
- };
241
-
242
- const issues = validateCustomObjectDefinition(normalized as unknown as AnyCustomObjectDefinition);
243
- if (issues.length > 0) {
244
- throw new Error(
245
- `Invalid custom object definition for "${definition.name}":\n` +
246
- issues.map((issue) => `- ${issue.path}: ${issue.message}`).join('\n'),
247
- );
248
- }
249
-
250
- return deepFreeze(normalized) as Readonly<
251
- CustomObjectDefinition<
252
- LogicalCustomObjectName<TObjectName>,
253
- LogicalCategoryName<TCategoryName>,
254
- TSections,
255
- TFields,
256
- TNameField
257
- >
258
- >;
259
- }
260
-
261
- /**
262
- * Extends an existing object definition without losing type information.
263
- *
264
- * This helper is useful when a platform package wants to publish a base schema
265
- * and another package wants to add fields or sections in a type-safe way.
266
- *
267
- * @typeParam TBase - Existing object definition being extended.
268
- * @typeParam TAddedSections - New section definitions merged into the base object.
269
- * @param base - Existing typed object definition to extend.
270
- * @param extension - Additional metadata, sections, and fields to merge into the base definition.
271
- * @returns New immutable custom-object definition preserving the combined type information.
272
- * @typeParam TAddedFields - New field definitions merged into the base object.
273
- */
274
- export function extendCustomObject<
275
- TBase extends AnyCustomObjectDefinition,
276
- TAddedSections extends SectionDefinitions = {},
277
- TAddedFields extends FieldDefinitions = {},
278
- >(
279
- base: TBase,
280
- extension: {
281
- readonly displayName?: string;
282
- readonly pluralLabel?: string;
283
- readonly ownerRole?: string;
284
- readonly enableHistory?: boolean;
285
- readonly description?: string;
286
- readonly icon?: TBase['icon'];
287
- readonly sections?: NoOverlappingKeys<TBase['sections'], TAddedSections>;
288
- readonly fields?: NoOverlappingKeys<TBase['fields'], ValidateFieldMap<TAddedFields>>;
289
- },
290
- ): Readonly<
291
- CustomObjectDefinition<
292
- TBase['name'],
293
- TBase['category'],
294
- TBase['sections'] & TAddedSections,
295
- Omit<TBase['fields'], never> & TAddedFields,
296
- TBase['nameField']
297
- >
298
- > {
299
- const mergedSections = {
300
- ...base.sections,
301
- ...(extension.sections ?? {}),
302
- } as TBase['sections'] & TAddedSections;
303
-
304
- const mergedFields = Object.fromEntries(
305
- Object.entries({ ...base.fields, ...(extension.fields ?? {}) }).map(([logicalName, field]) => [
306
- logicalName,
307
- {
308
- ...field,
309
- logicalName,
310
- apiName: toCustomFieldApiName(logicalName as LogicalCustomFieldName<string>),
311
- },
312
- ]),
313
- ) as unknown as Omit<TBase['fields'], never> & TAddedFields;
314
-
315
- return defineCustomObject({
316
- name: base.name,
317
- displayName: extension.displayName ?? base.displayName,
318
- ...(extension.pluralLabel != null || base.pluralLabel != null ?
319
- { pluralLabel: extension.pluralLabel ?? base.pluralLabel }
320
- : {}),
321
- ...(extension.ownerRole != null || base.ownerRole != null ?
322
- { ownerRole: extension.ownerRole ?? base.ownerRole }
323
- : {}),
324
- ...(extension.enableHistory != null || base.enableHistory != null ?
325
- { enableHistory: extension.enableHistory ?? base.enableHistory }
326
- : {}),
327
- category: base.categoryDefinition ?? base.category,
328
- description: extension.description ?? base.description,
329
- ...((extension.icon ?? base.icon) != null ? { icon: extension.icon ?? base.icon } : {}),
330
- nameField: base.nameField,
331
- sections: mergedSections,
332
- fields: mergedFields as ValidateFieldMap<Omit<TBase['fields'], never> & TAddedFields>,
333
- });
334
- }
335
-
336
- /**
337
- * Returns the logical custom field names defined on an object.
338
- *
339
- * @param definition - Object definition whose logical field names should be returned.
340
- * @returns Frozen array of logical field names from the definition.
341
- * @typeParam TDefinition - Object definition whose field names should be returned.
342
- */
343
- export function fieldNames<TDefinition extends AnyCustomObjectDefinition>(
344
- definition: TDefinition,
345
- ): ReadonlyArray<FieldNames<TDefinition>> {
346
- return Object.freeze(Object.keys(definition.fields) as FieldNames<TDefinition>[]);
347
- }
348
-
349
- /**
350
- * Retrieves a field definition by logical field name with precise typing.
351
- *
352
- * @param definition - Object definition that owns the field.
353
- * @param fieldName - Logical field name to retrieve.
354
- * @returns Precisely typed field definition for the requested logical field name.
355
- * @typeParam TDefinition - Object definition that owns the field.
356
- * @typeParam TFieldName - Logical field name being retrieved.
357
- */
358
- export function getFieldDefinition<
359
- TDefinition extends AnyCustomObjectDefinition,
360
- TFieldName extends FieldNames<TDefinition>,
361
- >(definition: TDefinition, fieldName: TFieldName): TDefinition['fields'][TFieldName] {
362
- return (definition.fields as Record<string, unknown>)[fieldName] as TDefinition['fields'][TFieldName];
363
- }
364
-
365
- /**
366
- * Returns whether one typed field definition is writable by record create/update helpers.
367
- *
368
- * @param field - Typed field definition to inspect.
369
- * @returns Whether the field may be written by callers.
370
- */
371
- export function isWritableField(field: AnyFieldDefinition): boolean {
372
- return field.writable;
373
- }