@rippling/rippling-sdk 0.2.0-alpha.33 → 0.2.0-alpha.35

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 (284) hide show
  1. package/client.d.mts +8 -2
  2. package/client.d.mts.map +1 -1
  3. package/client.d.ts +8 -2
  4. package/client.d.ts.map +1 -1
  5. package/client.js +17 -0
  6. package/client.js.map +1 -1
  7. package/client.mjs +17 -0
  8. package/client.mjs.map +1 -1
  9. package/internal/types.d.mts +6 -6
  10. package/internal/types.d.mts.map +1 -1
  11. package/internal/types.d.ts +6 -6
  12. package/internal/types.d.ts.map +1 -1
  13. package/lib/manifest/_helpers.d.mts +91 -0
  14. package/lib/manifest/_helpers.d.mts.map +1 -0
  15. package/lib/manifest/_helpers.d.ts +91 -0
  16. package/lib/manifest/_helpers.d.ts.map +1 -0
  17. package/lib/manifest/_helpers.js +65 -0
  18. package/lib/manifest/_helpers.js.map +1 -0
  19. package/lib/manifest/_helpers.mjs +61 -0
  20. package/lib/manifest/_helpers.mjs.map +1 -0
  21. package/lib/manifest/app.d.mts +113 -0
  22. package/lib/manifest/app.d.mts.map +1 -0
  23. package/lib/manifest/app.d.ts +113 -0
  24. package/lib/manifest/app.d.ts.map +1 -0
  25. package/lib/manifest/app.js +95 -0
  26. package/lib/manifest/app.js.map +1 -0
  27. package/lib/manifest/app.mjs +91 -0
  28. package/lib/manifest/app.mjs.map +1 -0
  29. package/lib/manifest/category.d.mts +79 -0
  30. package/lib/manifest/category.d.mts.map +1 -0
  31. package/lib/manifest/category.d.ts +79 -0
  32. package/lib/manifest/category.d.ts.map +1 -0
  33. package/lib/manifest/category.js +72 -0
  34. package/lib/manifest/category.js.map +1 -0
  35. package/lib/manifest/category.mjs +68 -0
  36. package/lib/manifest/category.mjs.map +1 -0
  37. package/lib/manifest/custom-object-field-section.d.mts +71 -0
  38. package/lib/manifest/custom-object-field-section.d.mts.map +1 -0
  39. package/lib/manifest/custom-object-field-section.d.ts +71 -0
  40. package/lib/manifest/custom-object-field-section.d.ts.map +1 -0
  41. package/lib/manifest/custom-object-field-section.js +69 -0
  42. package/lib/manifest/custom-object-field-section.js.map +1 -0
  43. package/lib/manifest/custom-object-field-section.mjs +65 -0
  44. package/lib/manifest/custom-object-field-section.mjs.map +1 -0
  45. package/lib/manifest/custom-object-page-layout.d.mts +318 -0
  46. package/lib/manifest/custom-object-page-layout.d.mts.map +1 -0
  47. package/lib/manifest/custom-object-page-layout.d.ts +318 -0
  48. package/lib/manifest/custom-object-page-layout.d.ts.map +1 -0
  49. package/lib/manifest/custom-object-page-layout.js +158 -0
  50. package/lib/manifest/custom-object-page-layout.js.map +1 -0
  51. package/lib/manifest/custom-object-page-layout.mjs +154 -0
  52. package/lib/manifest/custom-object-page-layout.mjs.map +1 -0
  53. package/lib/manifest/custom-object.d.mts +165 -0
  54. package/lib/manifest/custom-object.d.mts.map +1 -0
  55. package/lib/manifest/custom-object.d.ts +165 -0
  56. package/lib/manifest/custom-object.d.ts.map +1 -0
  57. package/lib/manifest/custom-object.js +254 -0
  58. package/lib/manifest/custom-object.js.map +1 -0
  59. package/lib/manifest/custom-object.mjs +250 -0
  60. package/lib/manifest/custom-object.mjs.map +1 -0
  61. package/lib/manifest/field.d.mts +487 -0
  62. package/lib/manifest/field.d.mts.map +1 -0
  63. package/lib/manifest/field.d.ts +487 -0
  64. package/lib/manifest/field.d.ts.map +1 -0
  65. package/lib/manifest/field.js +461 -0
  66. package/lib/manifest/field.js.map +1 -0
  67. package/lib/manifest/field.mjs +438 -0
  68. package/lib/manifest/field.mjs.map +1 -0
  69. package/lib/manifest/index.d.mts +15 -0
  70. package/lib/manifest/index.d.mts.map +1 -0
  71. package/lib/manifest/index.d.ts +15 -0
  72. package/lib/manifest/index.d.ts.map +1 -0
  73. package/lib/manifest/index.js +53 -0
  74. package/lib/manifest/index.js.map +1 -0
  75. package/lib/manifest/index.mjs +18 -0
  76. package/lib/manifest/index.mjs.map +1 -0
  77. package/lib/manifest/list-view.d.mts +138 -0
  78. package/lib/manifest/list-view.d.mts.map +1 -0
  79. package/lib/manifest/list-view.d.ts +138 -0
  80. package/lib/manifest/list-view.d.ts.map +1 -0
  81. package/lib/manifest/list-view.js +109 -0
  82. package/lib/manifest/list-view.js.map +1 -0
  83. package/lib/manifest/list-view.mjs +105 -0
  84. package/lib/manifest/list-view.mjs.map +1 -0
  85. package/lib/manifest/manifest-builder.d.mts +110 -0
  86. package/lib/manifest/manifest-builder.d.mts.map +1 -0
  87. package/lib/manifest/manifest-builder.d.ts +110 -0
  88. package/lib/manifest/manifest-builder.d.ts.map +1 -0
  89. package/lib/manifest/manifest-builder.js +91 -0
  90. package/lib/manifest/manifest-builder.js.map +1 -0
  91. package/lib/manifest/manifest-builder.mjs +87 -0
  92. package/lib/manifest/manifest-builder.mjs.map +1 -0
  93. package/lib/manifest/manifest-function.d.mts +119 -0
  94. package/lib/manifest/manifest-function.d.mts.map +1 -0
  95. package/lib/manifest/manifest-function.d.ts +119 -0
  96. package/lib/manifest/manifest-function.d.ts.map +1 -0
  97. package/lib/manifest/manifest-function.js +85 -0
  98. package/lib/manifest/manifest-function.js.map +1 -0
  99. package/lib/manifest/manifest-function.mjs +81 -0
  100. package/lib/manifest/manifest-function.mjs.map +1 -0
  101. package/lib/manifest/rule.d.mts +128 -0
  102. package/lib/manifest/rule.d.mts.map +1 -0
  103. package/lib/manifest/rule.d.ts +128 -0
  104. package/lib/manifest/rule.d.ts.map +1 -0
  105. package/lib/manifest/rule.js +105 -0
  106. package/lib/manifest/rule.js.map +1 -0
  107. package/lib/manifest/rule.mjs +101 -0
  108. package/lib/manifest/rule.mjs.map +1 -0
  109. package/lib/manifest/sdui-page.d.mts +89 -0
  110. package/lib/manifest/sdui-page.d.mts.map +1 -0
  111. package/lib/manifest/sdui-page.d.ts +89 -0
  112. package/lib/manifest/sdui-page.d.ts.map +1 -0
  113. package/lib/manifest/sdui-page.js +83 -0
  114. package/lib/manifest/sdui-page.js.map +1 -0
  115. package/lib/manifest/sdui-page.mjs +79 -0
  116. package/lib/manifest/sdui-page.mjs.map +1 -0
  117. package/lib/manifest/validation.d.mts +116 -0
  118. package/lib/manifest/validation.d.mts.map +1 -0
  119. package/lib/manifest/validation.d.ts +116 -0
  120. package/lib/manifest/validation.d.ts.map +1 -0
  121. package/lib/manifest/validation.js +83 -0
  122. package/lib/manifest/validation.js.map +1 -0
  123. package/lib/manifest/validation.mjs +79 -0
  124. package/lib/manifest/validation.mjs.map +1 -0
  125. package/lib/sdui/actions.d.mts +25 -0
  126. package/lib/sdui/actions.d.mts.map +1 -0
  127. package/lib/sdui/actions.d.ts +25 -0
  128. package/lib/sdui/actions.d.ts.map +1 -0
  129. package/lib/sdui/actions.js +53 -0
  130. package/lib/sdui/actions.js.map +1 -0
  131. package/lib/sdui/actions.mjs +42 -0
  132. package/lib/sdui/actions.mjs.map +1 -0
  133. package/lib/sdui/component.d.mts +41 -0
  134. package/lib/sdui/component.d.mts.map +1 -0
  135. package/lib/sdui/component.d.ts +41 -0
  136. package/lib/sdui/component.d.ts.map +1 -0
  137. package/lib/sdui/component.js +95 -0
  138. package/lib/sdui/component.js.map +1 -0
  139. package/lib/sdui/component.mjs +91 -0
  140. package/lib/sdui/component.mjs.map +1 -0
  141. package/lib/sdui/components.d.mts +149 -0
  142. package/lib/sdui/components.d.mts.map +1 -0
  143. package/lib/sdui/components.d.ts +149 -0
  144. package/lib/sdui/components.d.ts.map +1 -0
  145. package/lib/sdui/components.js +303 -0
  146. package/lib/sdui/components.js.map +1 -0
  147. package/lib/sdui/components.mjs +298 -0
  148. package/lib/sdui/components.mjs.map +1 -0
  149. package/lib/sdui/conditions.d.mts +25 -0
  150. package/lib/sdui/conditions.d.mts.map +1 -0
  151. package/lib/sdui/conditions.d.ts +25 -0
  152. package/lib/sdui/conditions.d.ts.map +1 -0
  153. package/lib/sdui/conditions.js +47 -0
  154. package/lib/sdui/conditions.js.map +1 -0
  155. package/lib/sdui/conditions.mjs +35 -0
  156. package/lib/sdui/conditions.mjs.map +1 -0
  157. package/lib/sdui/directives.d.mts +18 -0
  158. package/lib/sdui/directives.d.mts.map +1 -0
  159. package/lib/sdui/directives.d.ts +18 -0
  160. package/lib/sdui/directives.d.ts.map +1 -0
  161. package/lib/sdui/directives.js +28 -0
  162. package/lib/sdui/directives.js.map +1 -0
  163. package/lib/sdui/directives.mjs +21 -0
  164. package/lib/sdui/directives.mjs.map +1 -0
  165. package/lib/sdui/index.d.mts +362 -0
  166. package/lib/sdui/index.d.mts.map +1 -0
  167. package/lib/sdui/index.d.ts +362 -0
  168. package/lib/sdui/index.d.ts.map +1 -0
  169. package/lib/sdui/index.js +375 -0
  170. package/lib/sdui/index.js.map +1 -0
  171. package/lib/sdui/index.mjs +199 -0
  172. package/lib/sdui/index.mjs.map +1 -0
  173. package/lib/sdui/props.d.mts +12 -0
  174. package/lib/sdui/props.d.mts.map +1 -0
  175. package/lib/sdui/props.d.ts +12 -0
  176. package/lib/sdui/props.d.ts.map +1 -0
  177. package/lib/sdui/props.js +25 -0
  178. package/lib/sdui/props.js.map +1 -0
  179. package/lib/sdui/props.mjs +21 -0
  180. package/lib/sdui/props.mjs.map +1 -0
  181. package/lib/sdui/render.d.mts +23 -0
  182. package/lib/sdui/render.d.mts.map +1 -0
  183. package/lib/sdui/render.d.ts +23 -0
  184. package/lib/sdui/render.d.ts.map +1 -0
  185. package/lib/sdui/render.js +40 -0
  186. package/lib/sdui/render.js.map +1 -0
  187. package/lib/sdui/render.mjs +37 -0
  188. package/lib/sdui/render.mjs.map +1 -0
  189. package/lib/sdui/state.d.mts +22 -0
  190. package/lib/sdui/state.d.mts.map +1 -0
  191. package/lib/sdui/state.d.ts +22 -0
  192. package/lib/sdui/state.d.ts.map +1 -0
  193. package/lib/sdui/state.js +57 -0
  194. package/lib/sdui/state.js.map +1 -0
  195. package/lib/sdui/state.mjs +53 -0
  196. package/lib/sdui/state.mjs.map +1 -0
  197. package/package.json +11 -1
  198. package/resources/draft-hires.d.mts +26 -0
  199. package/resources/draft-hires.d.mts.map +1 -1
  200. package/resources/draft-hires.d.ts +26 -0
  201. package/resources/draft-hires.d.ts.map +1 -1
  202. package/resources/earnings-inputs.d.mts +99 -1
  203. package/resources/earnings-inputs.d.mts.map +1 -1
  204. package/resources/earnings-inputs.d.ts +99 -1
  205. package/resources/earnings-inputs.d.ts.map +1 -1
  206. package/resources/earnings-inputs.js +6 -0
  207. package/resources/earnings-inputs.js.map +1 -1
  208. package/resources/earnings-inputs.mjs +6 -0
  209. package/resources/earnings-inputs.mjs.map +1 -1
  210. package/resources/files.d.mts +164 -0
  211. package/resources/files.d.mts.map +1 -0
  212. package/resources/files.d.ts +164 -0
  213. package/resources/files.d.ts.map +1 -0
  214. package/resources/files.js +25 -0
  215. package/resources/files.js.map +1 -0
  216. package/resources/files.mjs +21 -0
  217. package/resources/files.mjs.map +1 -0
  218. package/resources/headcount-positions.d.mts +2 -2
  219. package/resources/headcount-positions.d.mts.map +1 -1
  220. package/resources/headcount-positions.d.ts +2 -2
  221. package/resources/headcount-positions.d.ts.map +1 -1
  222. package/resources/index.d.mts +2 -1
  223. package/resources/index.d.mts.map +1 -1
  224. package/resources/index.d.ts +2 -1
  225. package/resources/index.d.ts.map +1 -1
  226. package/resources/index.js +4 -2
  227. package/resources/index.js.map +1 -1
  228. package/resources/index.mjs +1 -0
  229. package/resources/index.mjs.map +1 -1
  230. package/resources/legal-entities.d.mts +1 -1
  231. package/resources/legal-entities.d.mts.map +1 -1
  232. package/resources/legal-entities.d.ts +1 -1
  233. package/resources/legal-entities.d.ts.map +1 -1
  234. package/resources/location-factors.d.mts +2 -2
  235. package/resources/location-factors.d.mts.map +1 -1
  236. package/resources/location-factors.d.ts +2 -2
  237. package/resources/location-factors.d.ts.map +1 -1
  238. package/resources/shared.d.mts +1 -1
  239. package/resources/shared.d.mts.map +1 -1
  240. package/resources/shared.d.ts +1 -1
  241. package/resources/shared.d.ts.map +1 -1
  242. package/resources/workers.d.mts +2 -2
  243. package/resources/workers.d.mts.map +1 -1
  244. package/resources/workers.d.ts +2 -2
  245. package/resources/workers.d.ts.map +1 -1
  246. package/src/client.ts +29 -0
  247. package/src/internal/types.ts +6 -8
  248. package/src/lib/manifest/_helpers.ts +164 -0
  249. package/src/lib/manifest/app.ts +163 -0
  250. package/src/lib/manifest/category.ts +100 -0
  251. package/src/lib/manifest/custom-object-field-section.ts +93 -0
  252. package/src/lib/manifest/custom-object-page-layout.ts +427 -0
  253. package/src/lib/manifest/custom-object.ts +360 -0
  254. package/src/lib/manifest/field.ts +822 -0
  255. package/src/lib/manifest/index.ts +114 -0
  256. package/src/lib/manifest/list-view.ts +183 -0
  257. package/src/lib/manifest/manifest-builder.ts +140 -0
  258. package/src/lib/manifest/manifest-function.ts +151 -0
  259. package/src/lib/manifest/rule.ts +191 -0
  260. package/src/lib/manifest/sdui-page.ts +118 -0
  261. package/src/lib/manifest/validation.ts +150 -0
  262. package/src/lib/sdui/actions.ts +58 -0
  263. package/src/lib/sdui/component.ts +122 -0
  264. package/src/lib/sdui/components.ts +308 -0
  265. package/src/lib/sdui/conditions.ts +59 -0
  266. package/src/lib/sdui/directives.ts +42 -0
  267. package/src/lib/sdui/index.ts +365 -0
  268. package/src/lib/sdui/props.ts +32 -0
  269. package/src/lib/sdui/render.ts +58 -0
  270. package/src/lib/sdui/state.ts +60 -0
  271. package/src/resources/draft-hires.ts +31 -0
  272. package/src/resources/earnings-inputs.ts +127 -0
  273. package/src/resources/files.ts +203 -0
  274. package/src/resources/headcount-positions.ts +2 -0
  275. package/src/resources/index.ts +3 -0
  276. package/src/resources/legal-entities.ts +1 -0
  277. package/src/resources/location-factors.ts +2 -0
  278. package/src/resources/shared.ts +1 -0
  279. package/src/resources/workers.ts +2 -0
  280. package/src/version.ts +1 -1
  281. package/version.d.mts +1 -1
  282. package/version.d.ts +1 -1
  283. package/version.js +1 -1
  284. package/version.mjs +1 -1
@@ -0,0 +1,165 @@
1
+ import { Category } from "./category.mjs";
2
+ import type { ManifestComponent, ManifestScope } from "./manifest-builder.mjs";
3
+ /**
4
+ * Icon displayed next to the custom object name in the Rippling UI.
5
+ */
6
+ export interface IconConfig {
7
+ /**
8
+ * A Unicode emoji character, e.g. `'🏋️'`.
9
+ *
10
+ * Optional. Omit all four sources (or pass `null`) to show no icon.
11
+ */
12
+ emoji?: string | null;
13
+ /**
14
+ * Name of a built-in Rippling icon asset.
15
+ *
16
+ * Optional.
17
+ */
18
+ ripplingIcon?: string | null;
19
+ /**
20
+ * S3 bucket for a custom image asset.
21
+ *
22
+ * Optional. Must be set together with `s3Key`.
23
+ */
24
+ s3Bucket?: string;
25
+ /**
26
+ * S3 key (path) within `s3Bucket`.
27
+ *
28
+ * Optional. Must be set together with `s3Bucket`.
29
+ */
30
+ s3Key?: string;
31
+ }
32
+ /**
33
+ * Initialization properties for {@link CustomObject}.
34
+ */
35
+ export interface CustomObjectProps {
36
+ /**
37
+ * Unique identifier for this custom object.
38
+ *
39
+ * Required. Must end with `__c` (e.g. `'gym_member__c'`). The constructor throws
40
+ * immediately if this suffix is missing.
41
+ */
42
+ apiName: string;
43
+ /**
44
+ * Singular display name shown in the Rippling UI (e.g. `'Member'`).
45
+ *
46
+ * Required.
47
+ */
48
+ name: string;
49
+ /**
50
+ * The category this object belongs to.
51
+ *
52
+ * Required. Pass a {@link Category} instance defined in the same manifest, or a raw
53
+ * api_name string for categories defined outside this manifest.
54
+ */
55
+ category: Category | string;
56
+ /**
57
+ * Human-readable description of what this entity represents.
58
+ *
59
+ * Optional. @default null
60
+ */
61
+ description?: string | null;
62
+ /**
63
+ * Icon shown next to the object name in the Rippling UI.
64
+ *
65
+ * Optional. @default null
66
+ */
67
+ icon?: IconConfig | null;
68
+ /**
69
+ * Plural form of the display name, used in list headings (e.g. `'Members'`).
70
+ *
71
+ * Optional. @default null
72
+ */
73
+ pluralLabel?: string | null;
74
+ /**
75
+ * Overrides for the auto-number name field — controls the format string and starting number.
76
+ * Leave `null` to use the default name field behavior.
77
+ *
78
+ * Optional. @default null
79
+ */
80
+ nameFieldDetails?: Record<string, any> | null;
81
+ /**
82
+ * API name of the field section that newly created fields are grouped into by default.
83
+ *
84
+ * Optional. @default null
85
+ */
86
+ defaultFieldSectionName?: string | null;
87
+ }
88
+ /**
89
+ * Defines a custom object and registers it with the manifest.
90
+ *
91
+ * A custom object is a new entity type with its own fields, validations, rules, list views,
92
+ * and page layouts. You would normally define all custom objects near the top of your manifest
93
+ * file, then define their children (fields, sections, rules, etc.) below. Each child takes
94
+ * the `CustomObject` instance as its first argument and registers automatically.
95
+ *
96
+ * @example
97
+ * ```ts
98
+ * const manifest = new ManifestBuilder({
99
+ * key: 'gym_membership_management',
100
+ * name: 'Gym Membership Management',
101
+ * });
102
+ *
103
+ * const gymCategory = new Category(manifest, { apiName: 'gym__c', name: 'Gym' });
104
+ *
105
+ * const memberObj = new CustomObject(manifest, {
106
+ * apiName: 'gym_member__c',
107
+ * name: 'Member',
108
+ * pluralLabel: 'Members',
109
+ * category: gymCategory,
110
+ * description: 'Gym member profile, contact, and membership status',
111
+ * icon: { emoji: '🏋️' },
112
+ * });
113
+ *
114
+ * // The object is now a scope — children register through it:
115
+ * const firstName = new TextField(memberObj, {
116
+ * apiName: 'first_name__c',
117
+ * displayName: 'First name',
118
+ * required: true,
119
+ * });
120
+ * ```
121
+ *
122
+ * @remarks
123
+ * **Required: every `CustomObject` must have at least one `CustomObjectPageLayout` in the
124
+ * manifest.** Omitting it passes component-level validation but fails at the package level
125
+ * with `DEPENDENCY_ERROR: Page layout config for CO (api_name=...) not found in package
126
+ * configs. CO requires at least one page layout in the package.`
127
+ * Use {@link CustomObjectPageLayout.basic} for a minimal single-tab layout.
128
+ */
129
+ export declare class CustomObject implements ManifestScope {
130
+ private readonly _scope;
131
+ private readonly _apiName;
132
+ private readonly _name;
133
+ private readonly _category;
134
+ private _description;
135
+ private _icon;
136
+ private _pluralLabel;
137
+ private _nameFieldDetails;
138
+ private _defaultFieldSectionName;
139
+ /**
140
+ * @param scope - The manifest or parent scope to register this object with.
141
+ * @param props - Initialization properties.
142
+ * @throws {Error} If `props.apiName` does not end with `__c`.
143
+ */
144
+ constructor(scope: ManifestScope, props: CustomObjectProps);
145
+ /** @internal Scope hook — forwards child registration up to the root builder. */
146
+ _register(component: ManifestComponent): void;
147
+ /**
148
+ * Returns the api_name of this custom object (e.g. `'gym_member__c'`).
149
+ *
150
+ * Use the return value wherever a field or layout needs to reference this object by name.
151
+ */
152
+ getApiName(): string;
153
+ /**
154
+ * Returns the singular display name of this custom object (e.g. `'Member'`).
155
+ */
156
+ getName(): string;
157
+ /**
158
+ * Serializes this custom object to the wire format consumed by the manifest install endpoint.
159
+ *
160
+ * @returns A plain object with `type: 'CUSTOM_OBJECT'` and all configured fields.
161
+ * Optional fields are omitted when `null`. An `icon` with no populated keys is omitted entirely.
162
+ */
163
+ toDict(): Record<string, any>;
164
+ }
165
+ //# sourceMappingURL=custom-object.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-object.d.mts","sourceRoot":"","sources":["../../src/lib/manifest/custom-object.ts"],"names":[],"mappings":"OAAO,EAAE,QAAQ,EAAE;OACZ,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE;AA4IhD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC5B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IACzB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IAC9C;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,qBAAa,YAAa,YAAW,aAAa;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoB;IAC9C,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,iBAAiB,CAAyC;IAClE,OAAO,CAAC,wBAAwB,CAA4B;IAE5D;;;;OAIG;gBACS,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,iBAAiB;IAqB1D,iFAAiF;IACjF,SAAS,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI;IAI7C;;;;OAIG;IACH,UAAU,IAAI,MAAM;IAIpB;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;;;;OAKG;IACH,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CA0B9B"}
@@ -0,0 +1,165 @@
1
+ import { Category } from "./category.js";
2
+ import type { ManifestComponent, ManifestScope } from "./manifest-builder.js";
3
+ /**
4
+ * Icon displayed next to the custom object name in the Rippling UI.
5
+ */
6
+ export interface IconConfig {
7
+ /**
8
+ * A Unicode emoji character, e.g. `'🏋️'`.
9
+ *
10
+ * Optional. Omit all four sources (or pass `null`) to show no icon.
11
+ */
12
+ emoji?: string | null;
13
+ /**
14
+ * Name of a built-in Rippling icon asset.
15
+ *
16
+ * Optional.
17
+ */
18
+ ripplingIcon?: string | null;
19
+ /**
20
+ * S3 bucket for a custom image asset.
21
+ *
22
+ * Optional. Must be set together with `s3Key`.
23
+ */
24
+ s3Bucket?: string;
25
+ /**
26
+ * S3 key (path) within `s3Bucket`.
27
+ *
28
+ * Optional. Must be set together with `s3Bucket`.
29
+ */
30
+ s3Key?: string;
31
+ }
32
+ /**
33
+ * Initialization properties for {@link CustomObject}.
34
+ */
35
+ export interface CustomObjectProps {
36
+ /**
37
+ * Unique identifier for this custom object.
38
+ *
39
+ * Required. Must end with `__c` (e.g. `'gym_member__c'`). The constructor throws
40
+ * immediately if this suffix is missing.
41
+ */
42
+ apiName: string;
43
+ /**
44
+ * Singular display name shown in the Rippling UI (e.g. `'Member'`).
45
+ *
46
+ * Required.
47
+ */
48
+ name: string;
49
+ /**
50
+ * The category this object belongs to.
51
+ *
52
+ * Required. Pass a {@link Category} instance defined in the same manifest, or a raw
53
+ * api_name string for categories defined outside this manifest.
54
+ */
55
+ category: Category | string;
56
+ /**
57
+ * Human-readable description of what this entity represents.
58
+ *
59
+ * Optional. @default null
60
+ */
61
+ description?: string | null;
62
+ /**
63
+ * Icon shown next to the object name in the Rippling UI.
64
+ *
65
+ * Optional. @default null
66
+ */
67
+ icon?: IconConfig | null;
68
+ /**
69
+ * Plural form of the display name, used in list headings (e.g. `'Members'`).
70
+ *
71
+ * Optional. @default null
72
+ */
73
+ pluralLabel?: string | null;
74
+ /**
75
+ * Overrides for the auto-number name field — controls the format string and starting number.
76
+ * Leave `null` to use the default name field behavior.
77
+ *
78
+ * Optional. @default null
79
+ */
80
+ nameFieldDetails?: Record<string, any> | null;
81
+ /**
82
+ * API name of the field section that newly created fields are grouped into by default.
83
+ *
84
+ * Optional. @default null
85
+ */
86
+ defaultFieldSectionName?: string | null;
87
+ }
88
+ /**
89
+ * Defines a custom object and registers it with the manifest.
90
+ *
91
+ * A custom object is a new entity type with its own fields, validations, rules, list views,
92
+ * and page layouts. You would normally define all custom objects near the top of your manifest
93
+ * file, then define their children (fields, sections, rules, etc.) below. Each child takes
94
+ * the `CustomObject` instance as its first argument and registers automatically.
95
+ *
96
+ * @example
97
+ * ```ts
98
+ * const manifest = new ManifestBuilder({
99
+ * key: 'gym_membership_management',
100
+ * name: 'Gym Membership Management',
101
+ * });
102
+ *
103
+ * const gymCategory = new Category(manifest, { apiName: 'gym__c', name: 'Gym' });
104
+ *
105
+ * const memberObj = new CustomObject(manifest, {
106
+ * apiName: 'gym_member__c',
107
+ * name: 'Member',
108
+ * pluralLabel: 'Members',
109
+ * category: gymCategory,
110
+ * description: 'Gym member profile, contact, and membership status',
111
+ * icon: { emoji: '🏋️' },
112
+ * });
113
+ *
114
+ * // The object is now a scope — children register through it:
115
+ * const firstName = new TextField(memberObj, {
116
+ * apiName: 'first_name__c',
117
+ * displayName: 'First name',
118
+ * required: true,
119
+ * });
120
+ * ```
121
+ *
122
+ * @remarks
123
+ * **Required: every `CustomObject` must have at least one `CustomObjectPageLayout` in the
124
+ * manifest.** Omitting it passes component-level validation but fails at the package level
125
+ * with `DEPENDENCY_ERROR: Page layout config for CO (api_name=...) not found in package
126
+ * configs. CO requires at least one page layout in the package.`
127
+ * Use {@link CustomObjectPageLayout.basic} for a minimal single-tab layout.
128
+ */
129
+ export declare class CustomObject implements ManifestScope {
130
+ private readonly _scope;
131
+ private readonly _apiName;
132
+ private readonly _name;
133
+ private readonly _category;
134
+ private _description;
135
+ private _icon;
136
+ private _pluralLabel;
137
+ private _nameFieldDetails;
138
+ private _defaultFieldSectionName;
139
+ /**
140
+ * @param scope - The manifest or parent scope to register this object with.
141
+ * @param props - Initialization properties.
142
+ * @throws {Error} If `props.apiName` does not end with `__c`.
143
+ */
144
+ constructor(scope: ManifestScope, props: CustomObjectProps);
145
+ /** @internal Scope hook — forwards child registration up to the root builder. */
146
+ _register(component: ManifestComponent): void;
147
+ /**
148
+ * Returns the api_name of this custom object (e.g. `'gym_member__c'`).
149
+ *
150
+ * Use the return value wherever a field or layout needs to reference this object by name.
151
+ */
152
+ getApiName(): string;
153
+ /**
154
+ * Returns the singular display name of this custom object (e.g. `'Member'`).
155
+ */
156
+ getName(): string;
157
+ /**
158
+ * Serializes this custom object to the wire format consumed by the manifest install endpoint.
159
+ *
160
+ * @returns A plain object with `type: 'CUSTOM_OBJECT'` and all configured fields.
161
+ * Optional fields are omitted when `null`. An `icon` with no populated keys is omitted entirely.
162
+ */
163
+ toDict(): Record<string, any>;
164
+ }
165
+ //# sourceMappingURL=custom-object.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-object.d.ts","sourceRoot":"","sources":["../../src/lib/manifest/custom-object.ts"],"names":[],"mappings":"OAAO,EAAE,QAAQ,EAAE;OACZ,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE;AA4IhD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC5B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IACzB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IAC9C;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,qBAAa,YAAa,YAAW,aAAa;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoB;IAC9C,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,iBAAiB,CAAyC;IAClE,OAAO,CAAC,wBAAwB,CAA4B;IAE5D;;;;OAIG;gBACS,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,iBAAiB;IAqB1D,iFAAiF;IACjF,SAAS,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI;IAI7C;;;;OAIG;IACH,UAAU,IAAI,MAAM;IAIpB;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;;;;OAKG;IACH,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CA0B9B"}
@@ -0,0 +1,254 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CustomObject = void 0;
4
+ // ────────────────────────────────────────────────────────────────────────
5
+ // Platform-managed standard fields — mirrors
6
+ // `app/hub_platform/custom_objects/constants.py::STANDARD_FIELDS`.
7
+ // Kept here (not in `field.ts`) so the `Field` class stays focused on
8
+ // user-authored `__c` fields with full validation.
9
+ // ────────────────────────────────────────────────────────────────────────
10
+ /** Specs for the 9 standard fields every CO ships with. Order matches the backend constant. */
11
+ const STANDARD_FIELD_SPECS = [
12
+ {
13
+ apiName: 'id',
14
+ displayName: 'ID',
15
+ description: 'The Rippling ID of a record',
16
+ dataType: { field_type: 'TEXT' },
17
+ required: true,
18
+ unique: true,
19
+ },
20
+ {
21
+ apiName: 'created_at',
22
+ displayName: 'Created Date',
23
+ description: 'The date and time a record was created',
24
+ dataType: { field_type: 'DATETIME' },
25
+ required: false,
26
+ unique: false,
27
+ },
28
+ {
29
+ apiName: 'updated_at',
30
+ displayName: 'Last Modified Date',
31
+ description: 'The date and time a record was last updated',
32
+ dataType: { field_type: 'DATETIME' },
33
+ required: false,
34
+ unique: false,
35
+ },
36
+ {
37
+ apiName: 'system_updated_at',
38
+ displayName: 'System Modified At',
39
+ description: 'The date and time a record was last updated by the system',
40
+ dataType: { field_type: 'DATETIME' },
41
+ required: false,
42
+ unique: false,
43
+ },
44
+ {
45
+ apiName: 'external_id',
46
+ displayName: 'External ID',
47
+ description: 'The external identifier for a record used in third party integrations',
48
+ dataType: { field_type: 'TEXT' },
49
+ required: false,
50
+ unique: true,
51
+ },
52
+ {
53
+ apiName: 'name',
54
+ displayName: 'Name',
55
+ description: 'A string used to describe a record. This is used for display purposes as well as search',
56
+ dataType: { field_type: 'TEXT' },
57
+ required: true,
58
+ unique: false,
59
+ },
60
+ {
61
+ apiName: 'owner_role',
62
+ displayName: 'Owner',
63
+ description: 'The Employee responsible for the record. This is used by Permissions to determine who has ability to view, edit, and delete data',
64
+ dataType: {
65
+ field_type: 'NATIVE_EDGE',
66
+ og_model_rql_name: 'Employee',
67
+ db_model_name: 'RoleWithCompany',
68
+ reference_column_storage_type: 'STRING',
69
+ },
70
+ required: false,
71
+ unique: false,
72
+ },
73
+ {
74
+ apiName: 'last_modified_by',
75
+ displayName: 'Last Modified by',
76
+ description: 'The Employee who made the latest change.',
77
+ dataType: {
78
+ field_type: 'NATIVE_EDGE',
79
+ og_model_rql_name: 'Employee',
80
+ db_model_name: 'RoleWithCompany',
81
+ reference_column_storage_type: 'STRING',
82
+ },
83
+ required: false,
84
+ unique: false,
85
+ },
86
+ {
87
+ apiName: 'created_by',
88
+ displayName: 'Created by',
89
+ description: 'The Employee who created the record',
90
+ dataType: {
91
+ field_type: 'NATIVE_EDGE',
92
+ og_model_rql_name: 'Employee',
93
+ db_model_name: 'RoleWithCompany',
94
+ reference_column_storage_type: 'STRING',
95
+ },
96
+ required: false,
97
+ unique: false,
98
+ },
99
+ ];
100
+ /**
101
+ * Minimal `ManifestComponent` that emits a single standard field stub.
102
+ * Intentionally bypasses `Field`'s `__c` validator since standard api_names
103
+ * (`id`, `created_at`, …) don't carry the custom-field suffix.
104
+ */
105
+ class _StandardField {
106
+ constructor(customObjectApiName, spec) {
107
+ this.customObjectApiName = customObjectApiName;
108
+ this.spec = spec;
109
+ }
110
+ toDict() {
111
+ return {
112
+ type: 'CUSTOM_OBJECT_FIELD',
113
+ custom_object_api_name: this.customObjectApiName,
114
+ field_api_name: this.spec.apiName,
115
+ field_display_name: this.spec.displayName,
116
+ data_type: { options_list: [], supported_types: [], ...this.spec.dataType },
117
+ description: this.spec.description,
118
+ is_required: this.spec.required,
119
+ is_unique: this.spec.unique,
120
+ is_indexed: null,
121
+ rql_formula: null,
122
+ formula_attr_metas: null,
123
+ is_standard: true,
124
+ derived_aggregated_field: null,
125
+ derived_field_formula: null,
126
+ section: null,
127
+ };
128
+ }
129
+ }
130
+ /**
131
+ * Defines a custom object and registers it with the manifest.
132
+ *
133
+ * A custom object is a new entity type with its own fields, validations, rules, list views,
134
+ * and page layouts. You would normally define all custom objects near the top of your manifest
135
+ * file, then define their children (fields, sections, rules, etc.) below. Each child takes
136
+ * the `CustomObject` instance as its first argument and registers automatically.
137
+ *
138
+ * @example
139
+ * ```ts
140
+ * const manifest = new ManifestBuilder({
141
+ * key: 'gym_membership_management',
142
+ * name: 'Gym Membership Management',
143
+ * });
144
+ *
145
+ * const gymCategory = new Category(manifest, { apiName: 'gym__c', name: 'Gym' });
146
+ *
147
+ * const memberObj = new CustomObject(manifest, {
148
+ * apiName: 'gym_member__c',
149
+ * name: 'Member',
150
+ * pluralLabel: 'Members',
151
+ * category: gymCategory,
152
+ * description: 'Gym member profile, contact, and membership status',
153
+ * icon: { emoji: '🏋️' },
154
+ * });
155
+ *
156
+ * // The object is now a scope — children register through it:
157
+ * const firstName = new TextField(memberObj, {
158
+ * apiName: 'first_name__c',
159
+ * displayName: 'First name',
160
+ * required: true,
161
+ * });
162
+ * ```
163
+ *
164
+ * @remarks
165
+ * **Required: every `CustomObject` must have at least one `CustomObjectPageLayout` in the
166
+ * manifest.** Omitting it passes component-level validation but fails at the package level
167
+ * with `DEPENDENCY_ERROR: Page layout config for CO (api_name=...) not found in package
168
+ * configs. CO requires at least one page layout in the package.`
169
+ * Use {@link CustomObjectPageLayout.basic} for a minimal single-tab layout.
170
+ */
171
+ class CustomObject {
172
+ /**
173
+ * @param scope - The manifest or parent scope to register this object with.
174
+ * @param props - Initialization properties.
175
+ * @throws {Error} If `props.apiName` does not end with `__c`.
176
+ */
177
+ constructor(scope, props) {
178
+ if (!props.apiName.endsWith('__c')) {
179
+ throw new Error(`Custom object api_name must end with __c: ${props.apiName}`);
180
+ }
181
+ this._scope = scope;
182
+ this._apiName = props.apiName;
183
+ this._name = props.name;
184
+ this._category = props.category;
185
+ this._description = props.description;
186
+ this._icon = props.icon;
187
+ this._pluralLabel = props.pluralLabel;
188
+ this._nameFieldDetails = props.nameFieldDetails;
189
+ this._defaultFieldSectionName = props.defaultFieldSectionName;
190
+ scope._register(this);
191
+ // Backend closed-world validation requires these 9 configs for every new CO.
192
+ for (const spec of STANDARD_FIELD_SPECS) {
193
+ scope._register(new _StandardField(this._apiName, spec));
194
+ }
195
+ }
196
+ /** @internal Scope hook — forwards child registration up to the root builder. */
197
+ _register(component) {
198
+ this._scope._register(component);
199
+ }
200
+ /**
201
+ * Returns the api_name of this custom object (e.g. `'gym_member__c'`).
202
+ *
203
+ * Use the return value wherever a field or layout needs to reference this object by name.
204
+ */
205
+ getApiName() {
206
+ return this._apiName;
207
+ }
208
+ /**
209
+ * Returns the singular display name of this custom object (e.g. `'Member'`).
210
+ */
211
+ getName() {
212
+ return this._name;
213
+ }
214
+ /**
215
+ * Serializes this custom object to the wire format consumed by the manifest install endpoint.
216
+ *
217
+ * @returns A plain object with `type: 'CUSTOM_OBJECT'` and all configured fields.
218
+ * Optional fields are omitted when `null`. An `icon` with no populated keys is omitted entirely.
219
+ */
220
+ toDict() {
221
+ const component = {
222
+ type: 'CUSTOM_OBJECT',
223
+ api_name: this._apiName,
224
+ name: this._name,
225
+ description: this._description ?? null,
226
+ category_api_name: typeof this._category === 'string' ? this._category : this._category.getApiName(),
227
+ };
228
+ if (this._icon != null) {
229
+ const iconDict = {};
230
+ if (this._icon.emoji != null)
231
+ iconDict['emoji'] = this._icon.emoji;
232
+ if (this._icon.ripplingIcon != null)
233
+ iconDict['rippling_icon'] = this._icon.ripplingIcon;
234
+ if (this._icon.s3Bucket != null)
235
+ iconDict['s3_bucket'] = this._icon.s3Bucket;
236
+ if (this._icon.s3Key != null)
237
+ iconDict['s3_key'] = this._icon.s3Key;
238
+ // Mirror backend `if self.icon:` — empty dict is falsy and gets omitted.
239
+ if (Object.keys(iconDict).length > 0) {
240
+ component['icon'] = iconDict;
241
+ }
242
+ }
243
+ if (this._pluralLabel != null)
244
+ component['plural_label'] = this._pluralLabel;
245
+ if (this._nameFieldDetails != null)
246
+ component['name_field_details'] = this._nameFieldDetails;
247
+ if (this._defaultFieldSectionName != null) {
248
+ component['default_field_section_name'] = this._defaultFieldSectionName;
249
+ }
250
+ return component;
251
+ }
252
+ }
253
+ exports.CustomObject = CustomObject;
254
+ //# sourceMappingURL=custom-object.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-object.js","sourceRoot":"","sources":["../../src/lib/manifest/custom-object.ts"],"names":[],"mappings":"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"}