@rippling/rippling-sdk 0.2.0-alpha.32 → 0.2.0-alpha.34
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.
- package/client.d.mts +8 -2
- package/client.d.mts.map +1 -1
- package/client.d.ts +8 -2
- package/client.d.ts.map +1 -1
- package/client.js +17 -0
- package/client.js.map +1 -1
- package/client.mjs +17 -0
- package/client.mjs.map +1 -1
- package/internal/types.d.mts +6 -6
- package/internal/types.d.mts.map +1 -1
- package/internal/types.d.ts +6 -6
- package/internal/types.d.ts.map +1 -1
- package/lib/manifest/_helpers.d.mts +91 -0
- package/lib/manifest/_helpers.d.mts.map +1 -0
- package/lib/manifest/_helpers.d.ts +91 -0
- package/lib/manifest/_helpers.d.ts.map +1 -0
- package/lib/manifest/_helpers.js +65 -0
- package/lib/manifest/_helpers.js.map +1 -0
- package/lib/manifest/_helpers.mjs +61 -0
- package/lib/manifest/_helpers.mjs.map +1 -0
- package/lib/manifest/app.d.mts +45 -0
- package/lib/manifest/app.d.mts.map +1 -0
- package/lib/manifest/app.d.ts +45 -0
- package/lib/manifest/app.d.ts.map +1 -0
- package/lib/manifest/app.js +74 -0
- package/lib/manifest/app.js.map +1 -0
- package/lib/manifest/app.mjs +70 -0
- package/lib/manifest/app.mjs.map +1 -0
- package/lib/manifest/category.d.mts +23 -0
- package/lib/manifest/category.d.mts.map +1 -0
- package/lib/manifest/category.d.ts +23 -0
- package/lib/manifest/category.d.ts.map +1 -0
- package/lib/manifest/category.js +37 -0
- package/lib/manifest/category.js.map +1 -0
- package/lib/manifest/category.mjs +33 -0
- package/lib/manifest/category.mjs.map +1 -0
- package/lib/manifest/custom-object-field-section.d.mts +21 -0
- package/lib/manifest/custom-object-field-section.d.mts.map +1 -0
- package/lib/manifest/custom-object-field-section.d.ts +21 -0
- package/lib/manifest/custom-object-field-section.d.ts.map +1 -0
- package/lib/manifest/custom-object-field-section.js +42 -0
- package/lib/manifest/custom-object-field-section.js.map +1 -0
- package/lib/manifest/custom-object-field-section.mjs +38 -0
- package/lib/manifest/custom-object-field-section.mjs.map +1 -0
- package/lib/manifest/custom-object-page-layout.d.mts +158 -0
- package/lib/manifest/custom-object-page-layout.d.mts.map +1 -0
- package/lib/manifest/custom-object-page-layout.d.ts +158 -0
- package/lib/manifest/custom-object-page-layout.d.ts.map +1 -0
- package/lib/manifest/custom-object-page-layout.js +112 -0
- package/lib/manifest/custom-object-page-layout.js.map +1 -0
- package/lib/manifest/custom-object-page-layout.mjs +108 -0
- package/lib/manifest/custom-object-page-layout.mjs.map +1 -0
- package/lib/manifest/custom-object.d.mts +52 -0
- package/lib/manifest/custom-object.d.mts.map +1 -0
- package/lib/manifest/custom-object.d.ts +52 -0
- package/lib/manifest/custom-object.d.ts.map +1 -0
- package/lib/manifest/custom-object.js +219 -0
- package/lib/manifest/custom-object.js.map +1 -0
- package/lib/manifest/custom-object.mjs +215 -0
- package/lib/manifest/custom-object.mjs.map +1 -0
- package/lib/manifest/field.d.mts +276 -0
- package/lib/manifest/field.d.mts.map +1 -0
- package/lib/manifest/field.d.ts +276 -0
- package/lib/manifest/field.d.ts.map +1 -0
- package/lib/manifest/field.js +418 -0
- package/lib/manifest/field.js.map +1 -0
- package/lib/manifest/field.mjs +395 -0
- package/lib/manifest/field.mjs.map +1 -0
- package/lib/manifest/index.d.mts +15 -0
- package/lib/manifest/index.d.mts.map +1 -0
- package/lib/manifest/index.d.ts +15 -0
- package/lib/manifest/index.d.ts.map +1 -0
- package/lib/manifest/index.js +53 -0
- package/lib/manifest/index.js.map +1 -0
- package/lib/manifest/index.mjs +18 -0
- package/lib/manifest/index.mjs.map +1 -0
- package/lib/manifest/list-view.d.mts +47 -0
- package/lib/manifest/list-view.d.mts.map +1 -0
- package/lib/manifest/list-view.d.ts +47 -0
- package/lib/manifest/list-view.d.ts.map +1 -0
- package/lib/manifest/list-view.js +73 -0
- package/lib/manifest/list-view.js.map +1 -0
- package/lib/manifest/list-view.mjs +69 -0
- package/lib/manifest/list-view.mjs.map +1 -0
- package/lib/manifest/manifest-builder.d.mts +44 -0
- package/lib/manifest/manifest-builder.d.mts.map +1 -0
- package/lib/manifest/manifest-builder.d.ts +44 -0
- package/lib/manifest/manifest-builder.d.ts.map +1 -0
- package/lib/manifest/manifest-builder.js +69 -0
- package/lib/manifest/manifest-builder.js.map +1 -0
- package/lib/manifest/manifest-builder.mjs +65 -0
- package/lib/manifest/manifest-builder.mjs.map +1 -0
- package/lib/manifest/manifest-function.d.mts +39 -0
- package/lib/manifest/manifest-function.d.mts.map +1 -0
- package/lib/manifest/manifest-function.d.ts +39 -0
- package/lib/manifest/manifest-function.d.ts.map +1 -0
- package/lib/manifest/manifest-function.js +56 -0
- package/lib/manifest/manifest-function.js.map +1 -0
- package/lib/manifest/manifest-function.mjs +52 -0
- package/lib/manifest/manifest-function.mjs.map +1 -0
- package/lib/manifest/rule.d.mts +50 -0
- package/lib/manifest/rule.d.mts.map +1 -0
- package/lib/manifest/rule.d.ts +50 -0
- package/lib/manifest/rule.d.ts.map +1 -0
- package/lib/manifest/rule.js +84 -0
- package/lib/manifest/rule.js.map +1 -0
- package/lib/manifest/rule.mjs +80 -0
- package/lib/manifest/rule.mjs.map +1 -0
- package/lib/manifest/sdui-page.d.mts +33 -0
- package/lib/manifest/sdui-page.d.mts.map +1 -0
- package/lib/manifest/sdui-page.d.ts +33 -0
- package/lib/manifest/sdui-page.d.ts.map +1 -0
- package/lib/manifest/sdui-page.js +52 -0
- package/lib/manifest/sdui-page.js.map +1 -0
- package/lib/manifest/sdui-page.mjs +48 -0
- package/lib/manifest/sdui-page.mjs.map +1 -0
- package/lib/manifest/validation.d.mts +41 -0
- package/lib/manifest/validation.d.mts.map +1 -0
- package/lib/manifest/validation.d.ts +41 -0
- package/lib/manifest/validation.d.ts.map +1 -0
- package/lib/manifest/validation.js +57 -0
- package/lib/manifest/validation.js.map +1 -0
- package/lib/manifest/validation.mjs +53 -0
- package/lib/manifest/validation.mjs.map +1 -0
- package/package.json +11 -1
- package/resources/draft-hires.d.mts +22 -0
- package/resources/draft-hires.d.mts.map +1 -1
- package/resources/draft-hires.d.ts +22 -0
- package/resources/draft-hires.d.ts.map +1 -1
- package/resources/earnings-inputs.d.mts +104 -1
- package/resources/earnings-inputs.d.mts.map +1 -1
- package/resources/earnings-inputs.d.ts +104 -1
- package/resources/earnings-inputs.d.ts.map +1 -1
- package/resources/earnings-inputs.js +17 -0
- package/resources/earnings-inputs.js.map +1 -1
- package/resources/earnings-inputs.mjs +17 -0
- package/resources/earnings-inputs.mjs.map +1 -1
- package/resources/files.d.mts +149 -0
- package/resources/files.d.mts.map +1 -0
- package/resources/files.d.ts +149 -0
- package/resources/files.d.ts.map +1 -0
- package/resources/files.js +25 -0
- package/resources/files.js.map +1 -0
- package/resources/files.mjs +21 -0
- package/resources/files.mjs.map +1 -0
- package/resources/index.d.mts +2 -1
- package/resources/index.d.mts.map +1 -1
- package/resources/index.d.ts +2 -1
- package/resources/index.d.ts.map +1 -1
- package/resources/index.js +4 -2
- package/resources/index.js.map +1 -1
- package/resources/index.mjs +1 -0
- package/resources/index.mjs.map +1 -1
- package/resources/object-categories.d.mts +1 -1
- package/resources/object-categories.d.ts +1 -1
- package/resources/object-categories.js +1 -1
- package/resources/object-categories.mjs +1 -1
- package/resources/report-runs.d.mts +11 -11
- package/resources/report-runs.d.ts +11 -11
- package/resources/workflow-action-executions.d.mts +17 -2
- package/resources/workflow-action-executions.d.mts.map +1 -1
- package/resources/workflow-action-executions.d.ts +17 -2
- package/resources/workflow-action-executions.d.ts.map +1 -1
- package/src/client.ts +29 -0
- package/src/internal/types.ts +6 -8
- package/src/lib/manifest/_helpers.ts +164 -0
- package/src/lib/manifest/app.ts +108 -0
- package/src/lib/manifest/category.ts +51 -0
- package/src/lib/manifest/custom-object-field-section.ts +54 -0
- package/src/lib/manifest/custom-object-page-layout.ts +292 -0
- package/src/lib/manifest/custom-object.ts +269 -0
- package/src/lib/manifest/field.ts +632 -0
- package/src/lib/manifest/index.ts +114 -0
- package/src/lib/manifest/list-view.ts +103 -0
- package/src/lib/manifest/manifest-builder.ts +97 -0
- package/src/lib/manifest/manifest-function.ts +81 -0
- package/src/lib/manifest/rule.ts +125 -0
- package/src/lib/manifest/sdui-page.ts +72 -0
- package/src/lib/manifest/validation.ts +87 -0
- package/src/resources/draft-hires.ts +26 -0
- package/src/resources/earnings-inputs.ts +140 -0
- package/src/resources/files.ts +186 -0
- package/src/resources/index.ts +3 -0
- package/src/resources/object-categories.ts +1 -1
- package/src/resources/report-runs.ts +32 -32
- package/src/resources/workflow-action-executions.ts +22 -1
- package/src/version.ts +1 -1
- package/version.d.mts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/version.mjs +1 -1
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* The contents of this file were inserted manually and are not generated by Stainless.
|
|
4
|
+
*
|
|
5
|
+
* CustomObject builder. Backend schema: CUSTOM_OBJECT (v2).
|
|
6
|
+
*
|
|
7
|
+
* Construction is CDK-style: `new CustomObject(scope, props)` where `scope`
|
|
8
|
+
* is the `ManifestBuilder` (or any `ManifestScope`). The CO also acts as a
|
|
9
|
+
* scope for its own children (fields, validations, rules, list views, page
|
|
10
|
+
* layouts, sections, actions) — those take the CO as their first arg and
|
|
11
|
+
* auto-register with the manifest through it.
|
|
12
|
+
*
|
|
13
|
+
* Every CO auto-registers 9 platform-managed standard field stubs at
|
|
14
|
+
* construction, matching `STANDARD_FIELDS` in the backend's `constants.py`:
|
|
15
|
+
* id, created_at, updated_at, system_updated_at, external_id, name,
|
|
16
|
+
* owner_role, last_modified_by, created_by
|
|
17
|
+
* The backend's closed-world `extract_from_configs` path (used by
|
|
18
|
+
* `POST /metadata/v2/validate`) treats these as hard dependencies of the CO —
|
|
19
|
+
* for any brand-new CO their configs must already be present in the submitted
|
|
20
|
+
* manifest, else validation raises `DEPENDENCY_ERROR`. Users never declare
|
|
21
|
+
* them explicitly; the SDK emits them with `is_standard: true`.
|
|
22
|
+
*/
|
|
23
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
+
exports.CustomObject = void 0;
|
|
25
|
+
// ────────────────────────────────────────────────────────────────────────
|
|
26
|
+
// Platform-managed standard fields — mirrors
|
|
27
|
+
// `app/hub_platform/custom_objects/constants.py::STANDARD_FIELDS`.
|
|
28
|
+
// Kept here (not in `field.ts`) so the `Field` class stays focused on
|
|
29
|
+
// user-authored `__c` fields with full validation.
|
|
30
|
+
// ────────────────────────────────────────────────────────────────────────
|
|
31
|
+
/** Specs for the 9 standard fields every CO ships with. Order matches the backend constant. */
|
|
32
|
+
const STANDARD_FIELD_SPECS = [
|
|
33
|
+
{
|
|
34
|
+
apiName: 'id',
|
|
35
|
+
displayName: 'ID',
|
|
36
|
+
description: 'The Rippling ID of a record',
|
|
37
|
+
dataType: { field_type: 'TEXT' },
|
|
38
|
+
required: true,
|
|
39
|
+
unique: true,
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
apiName: 'created_at',
|
|
43
|
+
displayName: 'Created Date',
|
|
44
|
+
description: 'The date and time a record was created',
|
|
45
|
+
dataType: { field_type: 'DATETIME' },
|
|
46
|
+
required: false,
|
|
47
|
+
unique: false,
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
apiName: 'updated_at',
|
|
51
|
+
displayName: 'Last Modified Date',
|
|
52
|
+
description: 'The date and time a record was last updated',
|
|
53
|
+
dataType: { field_type: 'DATETIME' },
|
|
54
|
+
required: false,
|
|
55
|
+
unique: false,
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
apiName: 'system_updated_at',
|
|
59
|
+
displayName: 'System Modified At',
|
|
60
|
+
description: 'The date and time a record was last updated by the system',
|
|
61
|
+
dataType: { field_type: 'DATETIME' },
|
|
62
|
+
required: false,
|
|
63
|
+
unique: false,
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
apiName: 'external_id',
|
|
67
|
+
displayName: 'External ID',
|
|
68
|
+
description: 'The external identifier for a record used in third party integrations',
|
|
69
|
+
dataType: { field_type: 'TEXT' },
|
|
70
|
+
required: false,
|
|
71
|
+
unique: true,
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
apiName: 'name',
|
|
75
|
+
displayName: 'Name',
|
|
76
|
+
description: 'A string used to describe a record. This is used for display purposes as well as search',
|
|
77
|
+
dataType: { field_type: 'TEXT' },
|
|
78
|
+
required: true,
|
|
79
|
+
unique: false,
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
apiName: 'owner_role',
|
|
83
|
+
displayName: 'Owner',
|
|
84
|
+
description: 'The Employee responsible for the record. This is used by Permissions to determine who has ability to view, edit, and delete data',
|
|
85
|
+
dataType: {
|
|
86
|
+
field_type: 'NATIVE_EDGE',
|
|
87
|
+
og_model_rql_name: 'Employee',
|
|
88
|
+
db_model_name: 'RoleWithCompany',
|
|
89
|
+
reference_column_storage_type: 'STRING',
|
|
90
|
+
},
|
|
91
|
+
required: false,
|
|
92
|
+
unique: false,
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
apiName: 'last_modified_by',
|
|
96
|
+
displayName: 'Last Modified by',
|
|
97
|
+
description: 'The Employee who made the latest change.',
|
|
98
|
+
dataType: {
|
|
99
|
+
field_type: 'NATIVE_EDGE',
|
|
100
|
+
og_model_rql_name: 'Employee',
|
|
101
|
+
db_model_name: 'RoleWithCompany',
|
|
102
|
+
reference_column_storage_type: 'STRING',
|
|
103
|
+
},
|
|
104
|
+
required: false,
|
|
105
|
+
unique: false,
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
apiName: 'created_by',
|
|
109
|
+
displayName: 'Created by',
|
|
110
|
+
description: 'The Employee who created the record',
|
|
111
|
+
dataType: {
|
|
112
|
+
field_type: 'NATIVE_EDGE',
|
|
113
|
+
og_model_rql_name: 'Employee',
|
|
114
|
+
db_model_name: 'RoleWithCompany',
|
|
115
|
+
reference_column_storage_type: 'STRING',
|
|
116
|
+
},
|
|
117
|
+
required: false,
|
|
118
|
+
unique: false,
|
|
119
|
+
},
|
|
120
|
+
];
|
|
121
|
+
/**
|
|
122
|
+
* Minimal `ManifestComponent` that emits a single standard field stub.
|
|
123
|
+
* Intentionally bypasses `Field`'s `__c` validator since standard api_names
|
|
124
|
+
* (`id`, `created_at`, …) don't carry the custom-field suffix.
|
|
125
|
+
*/
|
|
126
|
+
class _StandardField {
|
|
127
|
+
constructor(customObjectApiName, spec) {
|
|
128
|
+
this.customObjectApiName = customObjectApiName;
|
|
129
|
+
this.spec = spec;
|
|
130
|
+
}
|
|
131
|
+
toDict() {
|
|
132
|
+
return {
|
|
133
|
+
type: 'CUSTOM_OBJECT_FIELD',
|
|
134
|
+
custom_object_api_name: this.customObjectApiName,
|
|
135
|
+
field_api_name: this.spec.apiName,
|
|
136
|
+
field_display_name: this.spec.displayName,
|
|
137
|
+
data_type: { options_list: [], supported_types: [], ...this.spec.dataType },
|
|
138
|
+
description: this.spec.description,
|
|
139
|
+
is_required: this.spec.required,
|
|
140
|
+
is_unique: this.spec.unique,
|
|
141
|
+
is_indexed: null,
|
|
142
|
+
rql_formula: null,
|
|
143
|
+
formula_attr_metas: null,
|
|
144
|
+
is_standard: true,
|
|
145
|
+
derived_aggregated_field: null,
|
|
146
|
+
derived_field_formula: null,
|
|
147
|
+
section: null,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
class CustomObject {
|
|
152
|
+
/** Build a new CO and auto-register with `scope`; enforces `__c` suffix on `apiName`. */
|
|
153
|
+
constructor(scope, props) {
|
|
154
|
+
if (!props.apiName.endsWith('__c')) {
|
|
155
|
+
throw new Error(`Custom object api_name must end with __c: ${props.apiName}`);
|
|
156
|
+
}
|
|
157
|
+
this._scope = scope;
|
|
158
|
+
this._apiName = props.apiName;
|
|
159
|
+
this._name = props.name;
|
|
160
|
+
this._category = props.category;
|
|
161
|
+
this._description = props.description;
|
|
162
|
+
this._icon = props.icon;
|
|
163
|
+
this._pluralLabel = props.pluralLabel;
|
|
164
|
+
this._nameFieldDetails = props.nameFieldDetails;
|
|
165
|
+
this._defaultFieldSectionName = props.defaultFieldSectionName;
|
|
166
|
+
scope._register(this);
|
|
167
|
+
// Backend closed-world validation requires these 9 configs for every new CO.
|
|
168
|
+
for (const spec of STANDARD_FIELD_SPECS) {
|
|
169
|
+
scope._register(new _StandardField(this._apiName, spec));
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
/** @internal Scope hook: forward child registration up to the builder. */
|
|
173
|
+
_register(component) {
|
|
174
|
+
this._scope._register(component);
|
|
175
|
+
}
|
|
176
|
+
/** Backend api_name for this custom object. */
|
|
177
|
+
getApiName() {
|
|
178
|
+
return this._apiName;
|
|
179
|
+
}
|
|
180
|
+
/** Singular display name. */
|
|
181
|
+
getName() {
|
|
182
|
+
return this._name;
|
|
183
|
+
}
|
|
184
|
+
/** Serialize to the backend `CUSTOM_OBJECT` wire shape. */
|
|
185
|
+
toDict() {
|
|
186
|
+
const component = {
|
|
187
|
+
type: 'CUSTOM_OBJECT',
|
|
188
|
+
api_name: this._apiName,
|
|
189
|
+
name: this._name,
|
|
190
|
+
description: this._description ?? null,
|
|
191
|
+
category_api_name: typeof this._category === 'string' ? this._category : this._category.getApiName(),
|
|
192
|
+
};
|
|
193
|
+
if (this._icon != null) {
|
|
194
|
+
const iconDict = {};
|
|
195
|
+
if (this._icon.emoji != null)
|
|
196
|
+
iconDict['emoji'] = this._icon.emoji;
|
|
197
|
+
if (this._icon.ripplingIcon != null)
|
|
198
|
+
iconDict['rippling_icon'] = this._icon.ripplingIcon;
|
|
199
|
+
if (this._icon.s3Bucket != null)
|
|
200
|
+
iconDict['s3_bucket'] = this._icon.s3Bucket;
|
|
201
|
+
if (this._icon.s3Key != null)
|
|
202
|
+
iconDict['s3_key'] = this._icon.s3Key;
|
|
203
|
+
// Mirror backend `if self.icon:` — empty dict is falsy and gets omitted.
|
|
204
|
+
if (Object.keys(iconDict).length > 0) {
|
|
205
|
+
component['icon'] = iconDict;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
if (this._pluralLabel != null)
|
|
209
|
+
component['plural_label'] = this._pluralLabel;
|
|
210
|
+
if (this._nameFieldDetails != null)
|
|
211
|
+
component['name_field_details'] = this._nameFieldDetails;
|
|
212
|
+
if (this._defaultFieldSectionName != null) {
|
|
213
|
+
component['default_field_section_name'] = this._defaultFieldSectionName;
|
|
214
|
+
}
|
|
215
|
+
return component;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
exports.CustomObject = CustomObject;
|
|
219
|
+
//# 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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"}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* The contents of this file were inserted manually and are not generated by Stainless.
|
|
3
|
+
*
|
|
4
|
+
* CustomObject builder. Backend schema: CUSTOM_OBJECT (v2).
|
|
5
|
+
*
|
|
6
|
+
* Construction is CDK-style: `new CustomObject(scope, props)` where `scope`
|
|
7
|
+
* is the `ManifestBuilder` (or any `ManifestScope`). The CO also acts as a
|
|
8
|
+
* scope for its own children (fields, validations, rules, list views, page
|
|
9
|
+
* layouts, sections, actions) — those take the CO as their first arg and
|
|
10
|
+
* auto-register with the manifest through it.
|
|
11
|
+
*
|
|
12
|
+
* Every CO auto-registers 9 platform-managed standard field stubs at
|
|
13
|
+
* construction, matching `STANDARD_FIELDS` in the backend's `constants.py`:
|
|
14
|
+
* id, created_at, updated_at, system_updated_at, external_id, name,
|
|
15
|
+
* owner_role, last_modified_by, created_by
|
|
16
|
+
* The backend's closed-world `extract_from_configs` path (used by
|
|
17
|
+
* `POST /metadata/v2/validate`) treats these as hard dependencies of the CO —
|
|
18
|
+
* for any brand-new CO their configs must already be present in the submitted
|
|
19
|
+
* manifest, else validation raises `DEPENDENCY_ERROR`. Users never declare
|
|
20
|
+
* them explicitly; the SDK emits them with `is_standard: true`.
|
|
21
|
+
*/
|
|
22
|
+
// ────────────────────────────────────────────────────────────────────────
|
|
23
|
+
// Platform-managed standard fields — mirrors
|
|
24
|
+
// `app/hub_platform/custom_objects/constants.py::STANDARD_FIELDS`.
|
|
25
|
+
// Kept here (not in `field.ts`) so the `Field` class stays focused on
|
|
26
|
+
// user-authored `__c` fields with full validation.
|
|
27
|
+
// ────────────────────────────────────────────────────────────────────────
|
|
28
|
+
/** Specs for the 9 standard fields every CO ships with. Order matches the backend constant. */
|
|
29
|
+
const STANDARD_FIELD_SPECS = [
|
|
30
|
+
{
|
|
31
|
+
apiName: 'id',
|
|
32
|
+
displayName: 'ID',
|
|
33
|
+
description: 'The Rippling ID of a record',
|
|
34
|
+
dataType: { field_type: 'TEXT' },
|
|
35
|
+
required: true,
|
|
36
|
+
unique: true,
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
apiName: 'created_at',
|
|
40
|
+
displayName: 'Created Date',
|
|
41
|
+
description: 'The date and time a record was created',
|
|
42
|
+
dataType: { field_type: 'DATETIME' },
|
|
43
|
+
required: false,
|
|
44
|
+
unique: false,
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
apiName: 'updated_at',
|
|
48
|
+
displayName: 'Last Modified Date',
|
|
49
|
+
description: 'The date and time a record was last updated',
|
|
50
|
+
dataType: { field_type: 'DATETIME' },
|
|
51
|
+
required: false,
|
|
52
|
+
unique: false,
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
apiName: 'system_updated_at',
|
|
56
|
+
displayName: 'System Modified At',
|
|
57
|
+
description: 'The date and time a record was last updated by the system',
|
|
58
|
+
dataType: { field_type: 'DATETIME' },
|
|
59
|
+
required: false,
|
|
60
|
+
unique: false,
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
apiName: 'external_id',
|
|
64
|
+
displayName: 'External ID',
|
|
65
|
+
description: 'The external identifier for a record used in third party integrations',
|
|
66
|
+
dataType: { field_type: 'TEXT' },
|
|
67
|
+
required: false,
|
|
68
|
+
unique: true,
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
apiName: 'name',
|
|
72
|
+
displayName: 'Name',
|
|
73
|
+
description: 'A string used to describe a record. This is used for display purposes as well as search',
|
|
74
|
+
dataType: { field_type: 'TEXT' },
|
|
75
|
+
required: true,
|
|
76
|
+
unique: false,
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
apiName: 'owner_role',
|
|
80
|
+
displayName: 'Owner',
|
|
81
|
+
description: 'The Employee responsible for the record. This is used by Permissions to determine who has ability to view, edit, and delete data',
|
|
82
|
+
dataType: {
|
|
83
|
+
field_type: 'NATIVE_EDGE',
|
|
84
|
+
og_model_rql_name: 'Employee',
|
|
85
|
+
db_model_name: 'RoleWithCompany',
|
|
86
|
+
reference_column_storage_type: 'STRING',
|
|
87
|
+
},
|
|
88
|
+
required: false,
|
|
89
|
+
unique: false,
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
apiName: 'last_modified_by',
|
|
93
|
+
displayName: 'Last Modified by',
|
|
94
|
+
description: 'The Employee who made the latest change.',
|
|
95
|
+
dataType: {
|
|
96
|
+
field_type: 'NATIVE_EDGE',
|
|
97
|
+
og_model_rql_name: 'Employee',
|
|
98
|
+
db_model_name: 'RoleWithCompany',
|
|
99
|
+
reference_column_storage_type: 'STRING',
|
|
100
|
+
},
|
|
101
|
+
required: false,
|
|
102
|
+
unique: false,
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
apiName: 'created_by',
|
|
106
|
+
displayName: 'Created by',
|
|
107
|
+
description: 'The Employee who created the record',
|
|
108
|
+
dataType: {
|
|
109
|
+
field_type: 'NATIVE_EDGE',
|
|
110
|
+
og_model_rql_name: 'Employee',
|
|
111
|
+
db_model_name: 'RoleWithCompany',
|
|
112
|
+
reference_column_storage_type: 'STRING',
|
|
113
|
+
},
|
|
114
|
+
required: false,
|
|
115
|
+
unique: false,
|
|
116
|
+
},
|
|
117
|
+
];
|
|
118
|
+
/**
|
|
119
|
+
* Minimal `ManifestComponent` that emits a single standard field stub.
|
|
120
|
+
* Intentionally bypasses `Field`'s `__c` validator since standard api_names
|
|
121
|
+
* (`id`, `created_at`, …) don't carry the custom-field suffix.
|
|
122
|
+
*/
|
|
123
|
+
class _StandardField {
|
|
124
|
+
constructor(customObjectApiName, spec) {
|
|
125
|
+
this.customObjectApiName = customObjectApiName;
|
|
126
|
+
this.spec = spec;
|
|
127
|
+
}
|
|
128
|
+
toDict() {
|
|
129
|
+
return {
|
|
130
|
+
type: 'CUSTOM_OBJECT_FIELD',
|
|
131
|
+
custom_object_api_name: this.customObjectApiName,
|
|
132
|
+
field_api_name: this.spec.apiName,
|
|
133
|
+
field_display_name: this.spec.displayName,
|
|
134
|
+
data_type: { options_list: [], supported_types: [], ...this.spec.dataType },
|
|
135
|
+
description: this.spec.description,
|
|
136
|
+
is_required: this.spec.required,
|
|
137
|
+
is_unique: this.spec.unique,
|
|
138
|
+
is_indexed: null,
|
|
139
|
+
rql_formula: null,
|
|
140
|
+
formula_attr_metas: null,
|
|
141
|
+
is_standard: true,
|
|
142
|
+
derived_aggregated_field: null,
|
|
143
|
+
derived_field_formula: null,
|
|
144
|
+
section: null,
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
export class CustomObject {
|
|
149
|
+
/** Build a new CO and auto-register with `scope`; enforces `__c` suffix on `apiName`. */
|
|
150
|
+
constructor(scope, props) {
|
|
151
|
+
if (!props.apiName.endsWith('__c')) {
|
|
152
|
+
throw new Error(`Custom object api_name must end with __c: ${props.apiName}`);
|
|
153
|
+
}
|
|
154
|
+
this._scope = scope;
|
|
155
|
+
this._apiName = props.apiName;
|
|
156
|
+
this._name = props.name;
|
|
157
|
+
this._category = props.category;
|
|
158
|
+
this._description = props.description;
|
|
159
|
+
this._icon = props.icon;
|
|
160
|
+
this._pluralLabel = props.pluralLabel;
|
|
161
|
+
this._nameFieldDetails = props.nameFieldDetails;
|
|
162
|
+
this._defaultFieldSectionName = props.defaultFieldSectionName;
|
|
163
|
+
scope._register(this);
|
|
164
|
+
// Backend closed-world validation requires these 9 configs for every new CO.
|
|
165
|
+
for (const spec of STANDARD_FIELD_SPECS) {
|
|
166
|
+
scope._register(new _StandardField(this._apiName, spec));
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
/** @internal Scope hook: forward child registration up to the builder. */
|
|
170
|
+
_register(component) {
|
|
171
|
+
this._scope._register(component);
|
|
172
|
+
}
|
|
173
|
+
/** Backend api_name for this custom object. */
|
|
174
|
+
getApiName() {
|
|
175
|
+
return this._apiName;
|
|
176
|
+
}
|
|
177
|
+
/** Singular display name. */
|
|
178
|
+
getName() {
|
|
179
|
+
return this._name;
|
|
180
|
+
}
|
|
181
|
+
/** Serialize to the backend `CUSTOM_OBJECT` wire shape. */
|
|
182
|
+
toDict() {
|
|
183
|
+
const component = {
|
|
184
|
+
type: 'CUSTOM_OBJECT',
|
|
185
|
+
api_name: this._apiName,
|
|
186
|
+
name: this._name,
|
|
187
|
+
description: this._description ?? null,
|
|
188
|
+
category_api_name: typeof this._category === 'string' ? this._category : this._category.getApiName(),
|
|
189
|
+
};
|
|
190
|
+
if (this._icon != null) {
|
|
191
|
+
const iconDict = {};
|
|
192
|
+
if (this._icon.emoji != null)
|
|
193
|
+
iconDict['emoji'] = this._icon.emoji;
|
|
194
|
+
if (this._icon.ripplingIcon != null)
|
|
195
|
+
iconDict['rippling_icon'] = this._icon.ripplingIcon;
|
|
196
|
+
if (this._icon.s3Bucket != null)
|
|
197
|
+
iconDict['s3_bucket'] = this._icon.s3Bucket;
|
|
198
|
+
if (this._icon.s3Key != null)
|
|
199
|
+
iconDict['s3_key'] = this._icon.s3Key;
|
|
200
|
+
// Mirror backend `if self.icon:` — empty dict is falsy and gets omitted.
|
|
201
|
+
if (Object.keys(iconDict).length > 0) {
|
|
202
|
+
component['icon'] = iconDict;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
if (this._pluralLabel != null)
|
|
206
|
+
component['plural_label'] = this._pluralLabel;
|
|
207
|
+
if (this._nameFieldDetails != null)
|
|
208
|
+
component['name_field_details'] = this._nameFieldDetails;
|
|
209
|
+
if (this._defaultFieldSectionName != null) {
|
|
210
|
+
component['default_field_section_name'] = this._defaultFieldSectionName;
|
|
211
|
+
}
|
|
212
|
+
return component;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=custom-object.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-object.mjs","sourceRoot":"","sources":["../../src/lib/manifest/custom-object.ts"],"names":[],"mappings":"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"}
|