@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.
- 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 +113 -0
- package/lib/manifest/app.d.mts.map +1 -0
- package/lib/manifest/app.d.ts +113 -0
- package/lib/manifest/app.d.ts.map +1 -0
- package/lib/manifest/app.js +95 -0
- package/lib/manifest/app.js.map +1 -0
- package/lib/manifest/app.mjs +91 -0
- package/lib/manifest/app.mjs.map +1 -0
- package/lib/manifest/category.d.mts +79 -0
- package/lib/manifest/category.d.mts.map +1 -0
- package/lib/manifest/category.d.ts +79 -0
- package/lib/manifest/category.d.ts.map +1 -0
- package/lib/manifest/category.js +72 -0
- package/lib/manifest/category.js.map +1 -0
- package/lib/manifest/category.mjs +68 -0
- package/lib/manifest/category.mjs.map +1 -0
- package/lib/manifest/custom-object-field-section.d.mts +71 -0
- package/lib/manifest/custom-object-field-section.d.mts.map +1 -0
- package/lib/manifest/custom-object-field-section.d.ts +71 -0
- package/lib/manifest/custom-object-field-section.d.ts.map +1 -0
- package/lib/manifest/custom-object-field-section.js +69 -0
- package/lib/manifest/custom-object-field-section.js.map +1 -0
- package/lib/manifest/custom-object-field-section.mjs +65 -0
- package/lib/manifest/custom-object-field-section.mjs.map +1 -0
- package/lib/manifest/custom-object-page-layout.d.mts +318 -0
- package/lib/manifest/custom-object-page-layout.d.mts.map +1 -0
- package/lib/manifest/custom-object-page-layout.d.ts +318 -0
- package/lib/manifest/custom-object-page-layout.d.ts.map +1 -0
- package/lib/manifest/custom-object-page-layout.js +158 -0
- package/lib/manifest/custom-object-page-layout.js.map +1 -0
- package/lib/manifest/custom-object-page-layout.mjs +154 -0
- package/lib/manifest/custom-object-page-layout.mjs.map +1 -0
- package/lib/manifest/custom-object.d.mts +165 -0
- package/lib/manifest/custom-object.d.mts.map +1 -0
- package/lib/manifest/custom-object.d.ts +165 -0
- package/lib/manifest/custom-object.d.ts.map +1 -0
- package/lib/manifest/custom-object.js +254 -0
- package/lib/manifest/custom-object.js.map +1 -0
- package/lib/manifest/custom-object.mjs +250 -0
- package/lib/manifest/custom-object.mjs.map +1 -0
- package/lib/manifest/field.d.mts +487 -0
- package/lib/manifest/field.d.mts.map +1 -0
- package/lib/manifest/field.d.ts +487 -0
- package/lib/manifest/field.d.ts.map +1 -0
- package/lib/manifest/field.js +461 -0
- package/lib/manifest/field.js.map +1 -0
- package/lib/manifest/field.mjs +438 -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 +138 -0
- package/lib/manifest/list-view.d.mts.map +1 -0
- package/lib/manifest/list-view.d.ts +138 -0
- package/lib/manifest/list-view.d.ts.map +1 -0
- package/lib/manifest/list-view.js +109 -0
- package/lib/manifest/list-view.js.map +1 -0
- package/lib/manifest/list-view.mjs +105 -0
- package/lib/manifest/list-view.mjs.map +1 -0
- package/lib/manifest/manifest-builder.d.mts +110 -0
- package/lib/manifest/manifest-builder.d.mts.map +1 -0
- package/lib/manifest/manifest-builder.d.ts +110 -0
- package/lib/manifest/manifest-builder.d.ts.map +1 -0
- package/lib/manifest/manifest-builder.js +91 -0
- package/lib/manifest/manifest-builder.js.map +1 -0
- package/lib/manifest/manifest-builder.mjs +87 -0
- package/lib/manifest/manifest-builder.mjs.map +1 -0
- package/lib/manifest/manifest-function.d.mts +119 -0
- package/lib/manifest/manifest-function.d.mts.map +1 -0
- package/lib/manifest/manifest-function.d.ts +119 -0
- package/lib/manifest/manifest-function.d.ts.map +1 -0
- package/lib/manifest/manifest-function.js +85 -0
- package/lib/manifest/manifest-function.js.map +1 -0
- package/lib/manifest/manifest-function.mjs +81 -0
- package/lib/manifest/manifest-function.mjs.map +1 -0
- package/lib/manifest/rule.d.mts +128 -0
- package/lib/manifest/rule.d.mts.map +1 -0
- package/lib/manifest/rule.d.ts +128 -0
- package/lib/manifest/rule.d.ts.map +1 -0
- package/lib/manifest/rule.js +105 -0
- package/lib/manifest/rule.js.map +1 -0
- package/lib/manifest/rule.mjs +101 -0
- package/lib/manifest/rule.mjs.map +1 -0
- package/lib/manifest/sdui-page.d.mts +89 -0
- package/lib/manifest/sdui-page.d.mts.map +1 -0
- package/lib/manifest/sdui-page.d.ts +89 -0
- package/lib/manifest/sdui-page.d.ts.map +1 -0
- package/lib/manifest/sdui-page.js +83 -0
- package/lib/manifest/sdui-page.js.map +1 -0
- package/lib/manifest/sdui-page.mjs +79 -0
- package/lib/manifest/sdui-page.mjs.map +1 -0
- package/lib/manifest/validation.d.mts +116 -0
- package/lib/manifest/validation.d.mts.map +1 -0
- package/lib/manifest/validation.d.ts +116 -0
- package/lib/manifest/validation.d.ts.map +1 -0
- package/lib/manifest/validation.js +83 -0
- package/lib/manifest/validation.js.map +1 -0
- package/lib/manifest/validation.mjs +79 -0
- package/lib/manifest/validation.mjs.map +1 -0
- package/lib/sdui/actions.d.mts +25 -0
- package/lib/sdui/actions.d.mts.map +1 -0
- package/lib/sdui/actions.d.ts +25 -0
- package/lib/sdui/actions.d.ts.map +1 -0
- package/lib/sdui/actions.js +53 -0
- package/lib/sdui/actions.js.map +1 -0
- package/lib/sdui/actions.mjs +42 -0
- package/lib/sdui/actions.mjs.map +1 -0
- package/lib/sdui/component.d.mts +41 -0
- package/lib/sdui/component.d.mts.map +1 -0
- package/lib/sdui/component.d.ts +41 -0
- package/lib/sdui/component.d.ts.map +1 -0
- package/lib/sdui/component.js +95 -0
- package/lib/sdui/component.js.map +1 -0
- package/lib/sdui/component.mjs +91 -0
- package/lib/sdui/component.mjs.map +1 -0
- package/lib/sdui/components.d.mts +149 -0
- package/lib/sdui/components.d.mts.map +1 -0
- package/lib/sdui/components.d.ts +149 -0
- package/lib/sdui/components.d.ts.map +1 -0
- package/lib/sdui/components.js +303 -0
- package/lib/sdui/components.js.map +1 -0
- package/lib/sdui/components.mjs +298 -0
- package/lib/sdui/components.mjs.map +1 -0
- package/lib/sdui/conditions.d.mts +25 -0
- package/lib/sdui/conditions.d.mts.map +1 -0
- package/lib/sdui/conditions.d.ts +25 -0
- package/lib/sdui/conditions.d.ts.map +1 -0
- package/lib/sdui/conditions.js +47 -0
- package/lib/sdui/conditions.js.map +1 -0
- package/lib/sdui/conditions.mjs +35 -0
- package/lib/sdui/conditions.mjs.map +1 -0
- package/lib/sdui/directives.d.mts +18 -0
- package/lib/sdui/directives.d.mts.map +1 -0
- package/lib/sdui/directives.d.ts +18 -0
- package/lib/sdui/directives.d.ts.map +1 -0
- package/lib/sdui/directives.js +28 -0
- package/lib/sdui/directives.js.map +1 -0
- package/lib/sdui/directives.mjs +21 -0
- package/lib/sdui/directives.mjs.map +1 -0
- package/lib/sdui/index.d.mts +362 -0
- package/lib/sdui/index.d.mts.map +1 -0
- package/lib/sdui/index.d.ts +362 -0
- package/lib/sdui/index.d.ts.map +1 -0
- package/lib/sdui/index.js +375 -0
- package/lib/sdui/index.js.map +1 -0
- package/lib/sdui/index.mjs +199 -0
- package/lib/sdui/index.mjs.map +1 -0
- package/lib/sdui/props.d.mts +12 -0
- package/lib/sdui/props.d.mts.map +1 -0
- package/lib/sdui/props.d.ts +12 -0
- package/lib/sdui/props.d.ts.map +1 -0
- package/lib/sdui/props.js +25 -0
- package/lib/sdui/props.js.map +1 -0
- package/lib/sdui/props.mjs +21 -0
- package/lib/sdui/props.mjs.map +1 -0
- package/lib/sdui/render.d.mts +23 -0
- package/lib/sdui/render.d.mts.map +1 -0
- package/lib/sdui/render.d.ts +23 -0
- package/lib/sdui/render.d.ts.map +1 -0
- package/lib/sdui/render.js +40 -0
- package/lib/sdui/render.js.map +1 -0
- package/lib/sdui/render.mjs +37 -0
- package/lib/sdui/render.mjs.map +1 -0
- package/lib/sdui/state.d.mts +22 -0
- package/lib/sdui/state.d.mts.map +1 -0
- package/lib/sdui/state.d.ts +22 -0
- package/lib/sdui/state.d.ts.map +1 -0
- package/lib/sdui/state.js +57 -0
- package/lib/sdui/state.js.map +1 -0
- package/lib/sdui/state.mjs +53 -0
- package/lib/sdui/state.mjs.map +1 -0
- package/package.json +11 -1
- package/resources/draft-hires.d.mts +26 -0
- package/resources/draft-hires.d.mts.map +1 -1
- package/resources/draft-hires.d.ts +26 -0
- package/resources/draft-hires.d.ts.map +1 -1
- package/resources/earnings-inputs.d.mts +99 -1
- package/resources/earnings-inputs.d.mts.map +1 -1
- package/resources/earnings-inputs.d.ts +99 -1
- package/resources/earnings-inputs.d.ts.map +1 -1
- package/resources/earnings-inputs.js +6 -0
- package/resources/earnings-inputs.js.map +1 -1
- package/resources/earnings-inputs.mjs +6 -0
- package/resources/earnings-inputs.mjs.map +1 -1
- package/resources/files.d.mts +164 -0
- package/resources/files.d.mts.map +1 -0
- package/resources/files.d.ts +164 -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/headcount-positions.d.mts +2 -2
- package/resources/headcount-positions.d.mts.map +1 -1
- package/resources/headcount-positions.d.ts +2 -2
- package/resources/headcount-positions.d.ts.map +1 -1
- 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/legal-entities.d.mts +1 -1
- package/resources/legal-entities.d.mts.map +1 -1
- package/resources/legal-entities.d.ts +1 -1
- package/resources/legal-entities.d.ts.map +1 -1
- package/resources/location-factors.d.mts +2 -2
- package/resources/location-factors.d.mts.map +1 -1
- package/resources/location-factors.d.ts +2 -2
- package/resources/location-factors.d.ts.map +1 -1
- package/resources/shared.d.mts +1 -1
- package/resources/shared.d.mts.map +1 -1
- package/resources/shared.d.ts +1 -1
- package/resources/shared.d.ts.map +1 -1
- package/resources/workers.d.mts +2 -2
- package/resources/workers.d.mts.map +1 -1
- package/resources/workers.d.ts +2 -2
- package/resources/workers.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 +163 -0
- package/src/lib/manifest/category.ts +100 -0
- package/src/lib/manifest/custom-object-field-section.ts +93 -0
- package/src/lib/manifest/custom-object-page-layout.ts +427 -0
- package/src/lib/manifest/custom-object.ts +360 -0
- package/src/lib/manifest/field.ts +822 -0
- package/src/lib/manifest/index.ts +114 -0
- package/src/lib/manifest/list-view.ts +183 -0
- package/src/lib/manifest/manifest-builder.ts +140 -0
- package/src/lib/manifest/manifest-function.ts +151 -0
- package/src/lib/manifest/rule.ts +191 -0
- package/src/lib/manifest/sdui-page.ts +118 -0
- package/src/lib/manifest/validation.ts +150 -0
- package/src/lib/sdui/actions.ts +58 -0
- package/src/lib/sdui/component.ts +122 -0
- package/src/lib/sdui/components.ts +308 -0
- package/src/lib/sdui/conditions.ts +59 -0
- package/src/lib/sdui/directives.ts +42 -0
- package/src/lib/sdui/index.ts +365 -0
- package/src/lib/sdui/props.ts +32 -0
- package/src/lib/sdui/render.ts +58 -0
- package/src/lib/sdui/state.ts +60 -0
- package/src/resources/draft-hires.ts +31 -0
- package/src/resources/earnings-inputs.ts +127 -0
- package/src/resources/files.ts +203 -0
- package/src/resources/headcount-positions.ts +2 -0
- package/src/resources/index.ts +3 -0
- package/src/resources/legal-entities.ts +1 -0
- package/src/resources/location-factors.ts +2 -0
- package/src/resources/shared.ts +1 -0
- package/src/resources/workers.ts +2 -0
- 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,461 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SummaryField = exports.FormulaField = exports.ParentChildField = exports.LookupField = exports.FileField = exports.BooleanField = exports.RadioField = exports.SelectField = exports.TimeField = exports.DatetimeField = exports.DateField = exports.PercentageField = exports.CurrencyField = exports.NumberField = exports.PhoneField = exports.UrlField = exports.EmailField = exports.LongTextField = exports.TextField = exports.Field = void 0;
|
|
4
|
+
const _helpers_1 = require("./_helpers.js");
|
|
5
|
+
function validateApiName(apiName) {
|
|
6
|
+
if (!apiName.endsWith('__c')) {
|
|
7
|
+
throw new Error(`Field api_name must end with __c: ${apiName}`);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
// ────────────────────────────────────────────────────────────────────────
|
|
11
|
+
// Base class
|
|
12
|
+
// ────────────────────────────────────────────────────────────────────────
|
|
13
|
+
/**
|
|
14
|
+
* Base class for every custom-object field.
|
|
15
|
+
*
|
|
16
|
+
* Prefer the typed subclasses (`TextField`, `NumberField`, `LookupField`, …) over
|
|
17
|
+
* constructing `Field` directly. Use `Field` only for wire-level field types the
|
|
18
|
+
* SDK does not yet model with a dedicated subclass.
|
|
19
|
+
*
|
|
20
|
+
* All field classes share the same scope-first CDK pattern: pass the parent
|
|
21
|
+
* {@link CustomObject} as the first argument and the field auto-registers with
|
|
22
|
+
* the manifest. Every field api_name must end with `__c`.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```ts
|
|
26
|
+
* // Prefer typed subclasses:
|
|
27
|
+
* const firstName = new TextField(memberObj, {
|
|
28
|
+
* apiName: 'first_name__c',
|
|
29
|
+
* displayName: 'First name',
|
|
30
|
+
* required: true,
|
|
31
|
+
* maxLength: 80,
|
|
32
|
+
* });
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* @see {@link TextField}, {@link NumberField}, {@link LookupField}, {@link SummaryField}
|
|
36
|
+
*/
|
|
37
|
+
class Field {
|
|
38
|
+
/**
|
|
39
|
+
* @param customObject - The custom object this field belongs to.
|
|
40
|
+
* @param props - Field configuration. See {@link FieldProps}.
|
|
41
|
+
* @throws {Error} If `props.apiName` does not end with `__c`.
|
|
42
|
+
*/
|
|
43
|
+
constructor(customObject, props) {
|
|
44
|
+
validateApiName(props.apiName);
|
|
45
|
+
this._fieldApiName = props.apiName;
|
|
46
|
+
this._fieldDisplayName = props.displayName;
|
|
47
|
+
this._customObjectApiName = customObject.getApiName();
|
|
48
|
+
const dt = { ...(props.dataType ?? {}) };
|
|
49
|
+
if (props.fieldType != null)
|
|
50
|
+
dt['field_type'] = props.fieldType;
|
|
51
|
+
if (props.maxLength != null)
|
|
52
|
+
dt['max_length'] = props.maxLength;
|
|
53
|
+
if (props.decimalPlaces != null)
|
|
54
|
+
dt['num_of_decimal_places'] = props.decimalPlaces;
|
|
55
|
+
if (props.currency != null)
|
|
56
|
+
dt['currency'] = props.currency;
|
|
57
|
+
if (props.options != null)
|
|
58
|
+
dt['options_list'] = [...props.options];
|
|
59
|
+
this._dataType = dt;
|
|
60
|
+
this._description = props.description ?? null;
|
|
61
|
+
this._isRequired = props.required ?? null;
|
|
62
|
+
this._isUnique = props.unique ?? null;
|
|
63
|
+
this._isIndexed = props.indexed ?? null;
|
|
64
|
+
this._rqlFormula = props.rqlFormula ?? null;
|
|
65
|
+
this._formulaAttrMetas = props.formulaAttrMetas ?? null;
|
|
66
|
+
this._derivedAggregatedFieldStatic = props.derivedAggregatedField ?? null;
|
|
67
|
+
this._derivedFieldFormula = props.derivedFieldFormula ?? null;
|
|
68
|
+
this._summarySpec = props.summarySpec ?? null;
|
|
69
|
+
const rawSection = props.section;
|
|
70
|
+
this._section =
|
|
71
|
+
rawSection == null ? null
|
|
72
|
+
: typeof rawSection === 'string' ? rawSection
|
|
73
|
+
: rawSection.getSectionId();
|
|
74
|
+
customObject._register(this);
|
|
75
|
+
}
|
|
76
|
+
// ── Getters ────────────────────────────────────────────────────────────
|
|
77
|
+
/** Returns the api_name of this field (e.g. `'first_name__c'`). */
|
|
78
|
+
getApiName() {
|
|
79
|
+
return this._fieldApiName;
|
|
80
|
+
}
|
|
81
|
+
/** Returns the display name of this field. */
|
|
82
|
+
getDisplayName() {
|
|
83
|
+
return this._fieldDisplayName;
|
|
84
|
+
}
|
|
85
|
+
/** Returns the api_name of the custom object this field belongs to. */
|
|
86
|
+
getCustomObjectApiName() {
|
|
87
|
+
return this._customObjectApiName;
|
|
88
|
+
}
|
|
89
|
+
/** Returns the resolved `field_type` (e.g. `'TEXT'`), or `null` if unset. */
|
|
90
|
+
getFieldType() {
|
|
91
|
+
return this._dataType['field_type'] ?? null;
|
|
92
|
+
}
|
|
93
|
+
/** Returns a read-only view of the raw `data_type` dict. */
|
|
94
|
+
getDataType() {
|
|
95
|
+
return this._dataType;
|
|
96
|
+
}
|
|
97
|
+
/** Returns `true` if this is a formula (computed) field. */
|
|
98
|
+
isFormula() {
|
|
99
|
+
return this._derivedFieldFormula != null;
|
|
100
|
+
}
|
|
101
|
+
/** Returns `true` if this is a summary (rollup) field. */
|
|
102
|
+
isSummary() {
|
|
103
|
+
return this._summarySpec != null;
|
|
104
|
+
}
|
|
105
|
+
// ── Serialization ──────────────────────────────────────────────────────
|
|
106
|
+
/**
|
|
107
|
+
* Serializes this field to the wire format consumed by the manifest install endpoint.
|
|
108
|
+
*
|
|
109
|
+
* @returns A plain object with `type: 'CUSTOM_OBJECT_FIELD'`.
|
|
110
|
+
*/
|
|
111
|
+
toDict() {
|
|
112
|
+
return {
|
|
113
|
+
type: 'CUSTOM_OBJECT_FIELD',
|
|
114
|
+
custom_object_api_name: this._customObjectApiName,
|
|
115
|
+
field_api_name: this._fieldApiName,
|
|
116
|
+
field_display_name: this._fieldDisplayName,
|
|
117
|
+
data_type: { options_list: [], supported_types: [], ...this._dataType },
|
|
118
|
+
description: this._description,
|
|
119
|
+
is_required: this._isRequired,
|
|
120
|
+
is_unique: this._isUnique,
|
|
121
|
+
is_indexed: this._isIndexed,
|
|
122
|
+
rql_formula: this._rqlFormula ?? null,
|
|
123
|
+
formula_attr_metas: this._formulaAttrMetas,
|
|
124
|
+
// User-authored package fields are never standard (backend invariant).
|
|
125
|
+
is_standard: false,
|
|
126
|
+
derived_aggregated_field: this._resolveAggregatedField(),
|
|
127
|
+
derived_field_formula: this._derivedFieldFormula ?? null,
|
|
128
|
+
section: this._section,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
/** Build the `derived_aggregated_field` dict from `_summarySpec` with cross-CO checks. */
|
|
132
|
+
_resolveAggregatedField() {
|
|
133
|
+
if (this._summarySpec == null)
|
|
134
|
+
return this._derivedAggregatedFieldStatic;
|
|
135
|
+
const spec = this._summarySpec;
|
|
136
|
+
const aggParent = spec.aggregates.getCustomObjectApiName();
|
|
137
|
+
const lookupParent = spec.lookup.getCustomObjectApiName();
|
|
138
|
+
if (lookupParent !== aggParent) {
|
|
139
|
+
throw new Error(`SummaryField "${this._fieldApiName}": lookup lives on "${lookupParent}" ` +
|
|
140
|
+
`but aggregates lives on "${aggParent}" — both must live on the same ` +
|
|
141
|
+
`child CustomObject.`);
|
|
142
|
+
}
|
|
143
|
+
// Per-filter residency / back-ref / LONG_TEXT / formula checks: backend only.
|
|
144
|
+
return {
|
|
145
|
+
aggregation_function: spec.using,
|
|
146
|
+
child_model_name: aggParent,
|
|
147
|
+
currency_code: spec.currencyCode,
|
|
148
|
+
field_to_aggregate: spec.aggregates.getApiName(),
|
|
149
|
+
filters: spec.filters.map((f) => ({
|
|
150
|
+
field_name: f.field.getApiName(),
|
|
151
|
+
filter_value: f.value,
|
|
152
|
+
operator: f.operator,
|
|
153
|
+
})),
|
|
154
|
+
lookup_field_api_name: spec.lookup.getApiName(),
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
exports.Field = Field;
|
|
159
|
+
/** Single-line text field. */
|
|
160
|
+
class TextField extends Field {
|
|
161
|
+
constructor(customObject, props) {
|
|
162
|
+
super(customObject, { ...props, fieldType: 'TEXT' });
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
exports.TextField = TextField;
|
|
166
|
+
/** Multi-line text field. */
|
|
167
|
+
class LongTextField extends Field {
|
|
168
|
+
constructor(customObject, props) {
|
|
169
|
+
super(customObject, { ...props, fieldType: 'LONG_TEXT' });
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
exports.LongTextField = LongTextField;
|
|
173
|
+
/** Email address field. Format is validated by the Rippling UI. */
|
|
174
|
+
class EmailField extends Field {
|
|
175
|
+
constructor(customObject, props) {
|
|
176
|
+
super(customObject, { ...props, fieldType: 'EMAIL' });
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
exports.EmailField = EmailField;
|
|
180
|
+
/** URL field. Format is validated by the Rippling UI. */
|
|
181
|
+
class UrlField extends Field {
|
|
182
|
+
constructor(customObject, props) {
|
|
183
|
+
super(customObject, { ...props, fieldType: 'URL' });
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
exports.UrlField = UrlField;
|
|
187
|
+
/** Phone number field. */
|
|
188
|
+
class PhoneField extends Field {
|
|
189
|
+
constructor(customObject, props) {
|
|
190
|
+
super(customObject, { ...props, fieldType: 'PHONE_NUMBER' });
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
exports.PhoneField = PhoneField;
|
|
194
|
+
/** Numeric field. */
|
|
195
|
+
class NumberField extends Field {
|
|
196
|
+
constructor(customObject, props) {
|
|
197
|
+
super(customObject, { ...props, fieldType: 'NUMBER' });
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
exports.NumberField = NumberField;
|
|
201
|
+
/** Currency amount field. */
|
|
202
|
+
class CurrencyField extends Field {
|
|
203
|
+
constructor(customObject, props) {
|
|
204
|
+
super(customObject, { ...props, fieldType: 'CURRENCY' });
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
exports.CurrencyField = CurrencyField;
|
|
208
|
+
/** Percentage field. */
|
|
209
|
+
class PercentageField extends Field {
|
|
210
|
+
constructor(customObject, props) {
|
|
211
|
+
super(customObject, { ...props, fieldType: 'PERCENTAGE' });
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
exports.PercentageField = PercentageField;
|
|
215
|
+
/** Date field (no time component). */
|
|
216
|
+
class DateField extends Field {
|
|
217
|
+
constructor(customObject, props) {
|
|
218
|
+
super(customObject, { ...props, fieldType: 'DATE' });
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
exports.DateField = DateField;
|
|
222
|
+
/** Date and time field. */
|
|
223
|
+
class DatetimeField extends Field {
|
|
224
|
+
constructor(customObject, props) {
|
|
225
|
+
super(customObject, { ...props, fieldType: 'DATETIME' });
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
exports.DatetimeField = DatetimeField;
|
|
229
|
+
/** Time-of-day field. */
|
|
230
|
+
class TimeField extends Field {
|
|
231
|
+
constructor(customObject, props) {
|
|
232
|
+
super(customObject, { ...props, fieldType: 'TIME' });
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
exports.TimeField = TimeField;
|
|
236
|
+
/** Dropdown single-select field. */
|
|
237
|
+
class SelectField extends Field {
|
|
238
|
+
constructor(customObject, props) {
|
|
239
|
+
super(customObject, { ...props, fieldType: 'SELECT' });
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
exports.SelectField = SelectField;
|
|
243
|
+
/** Radio button group field. */
|
|
244
|
+
class RadioField extends Field {
|
|
245
|
+
constructor(customObject, props) {
|
|
246
|
+
super(customObject, { ...props, fieldType: 'RADIO' });
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
exports.RadioField = RadioField;
|
|
250
|
+
/** Boolean (checkbox) field. */
|
|
251
|
+
class BooleanField extends Field {
|
|
252
|
+
constructor(customObject, props) {
|
|
253
|
+
super(customObject, { ...props, fieldType: 'BOOLEAN' });
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
exports.BooleanField = BooleanField;
|
|
257
|
+
/** File attachment field. */
|
|
258
|
+
class FileField extends Field {
|
|
259
|
+
constructor(customObject, props) {
|
|
260
|
+
const { allowedType, ...rest } = props;
|
|
261
|
+
const supported = allowedType === 'any' ? ['*'] : [allowedType];
|
|
262
|
+
super(customObject, {
|
|
263
|
+
...rest,
|
|
264
|
+
fieldType: 'FILE',
|
|
265
|
+
dataType: { supported_types: supported },
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
exports.FileField = FileField;
|
|
270
|
+
/**
|
|
271
|
+
* Many-to-one reference field. Links this record to one record on the target object.
|
|
272
|
+
*
|
|
273
|
+
* Use {@link ParentChildField} instead when the relationship should create a
|
|
274
|
+
* parent-child hierarchy with rollup support.
|
|
275
|
+
*/
|
|
276
|
+
class LookupField extends Field {
|
|
277
|
+
constructor(customObject, props) {
|
|
278
|
+
const targetApiName = typeof props.target === 'string' ? props.target : props.target.getApiName();
|
|
279
|
+
super(customObject, {
|
|
280
|
+
apiName: props.apiName,
|
|
281
|
+
displayName: props.displayName,
|
|
282
|
+
dataType: {
|
|
283
|
+
field_type: 'OG_REFERENCE_FIELD',
|
|
284
|
+
og_model_rql_name: targetApiName,
|
|
285
|
+
edge_type: 'LOOKUP',
|
|
286
|
+
...(props.relatedDataLabel != null ? { related_data_label: props.relatedDataLabel } : {}),
|
|
287
|
+
},
|
|
288
|
+
required: props.required,
|
|
289
|
+
description: props.description,
|
|
290
|
+
section: props.section,
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
exports.LookupField = LookupField;
|
|
295
|
+
/**
|
|
296
|
+
* Parent-child reference field. Creates a hierarchical relationship between
|
|
297
|
+
* this object (child) and the target (parent), enabling {@link SummaryField}
|
|
298
|
+
* rollups from the child to the parent.
|
|
299
|
+
*
|
|
300
|
+
* Always emitted as `required: true` on the wire.
|
|
301
|
+
*/
|
|
302
|
+
class ParentChildField extends Field {
|
|
303
|
+
constructor(customObject, props) {
|
|
304
|
+
super(customObject, {
|
|
305
|
+
apiName: props.apiName,
|
|
306
|
+
displayName: props.displayName,
|
|
307
|
+
dataType: {
|
|
308
|
+
field_type: 'OG_REFERENCE_FIELD',
|
|
309
|
+
og_model_rql_name: props.target.getApiName(),
|
|
310
|
+
edge_type: 'PARENT_CHILD',
|
|
311
|
+
...(props.relatedDataLabel != null ? { related_data_label: props.relatedDataLabel } : {}),
|
|
312
|
+
...(props.parentChildType != null ? { parent_child_type: props.parentChildType } : {}),
|
|
313
|
+
...(props.enableParentOwnerInheritance != null ?
|
|
314
|
+
{ enable_parent_owner_inheritance: props.enableParentOwnerInheritance }
|
|
315
|
+
: {}),
|
|
316
|
+
},
|
|
317
|
+
required: true,
|
|
318
|
+
description: props.description,
|
|
319
|
+
section: props.section,
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
exports.ParentChildField = ParentChildField;
|
|
324
|
+
/**
|
|
325
|
+
* Read-only computed field whose value is derived from an RQL formula.
|
|
326
|
+
*
|
|
327
|
+
* `fieldType` is required and restricted to the 7 output types the Rippling
|
|
328
|
+
* formula editor supports. `maxLength` is required when `fieldType === 'TEXT'`.
|
|
329
|
+
*
|
|
330
|
+
* @example
|
|
331
|
+
* ```ts
|
|
332
|
+
* const memberDisplayName = new FormulaField(memberObj, {
|
|
333
|
+
* apiName: 'member_display_name__c',
|
|
334
|
+
* displayName: 'Display name',
|
|
335
|
+
* fieldType: 'TEXT',
|
|
336
|
+
* maxLength: 200,
|
|
337
|
+
* formula: "CONCATENATE(TRIM(first_name__c), ' ', TRIM(last_name__c))",
|
|
338
|
+
* });
|
|
339
|
+
* ```
|
|
340
|
+
*/
|
|
341
|
+
class FormulaField extends Field {
|
|
342
|
+
constructor(customObject, props) {
|
|
343
|
+
if (props.fieldType === 'TEXT' && props.maxLength == null) {
|
|
344
|
+
throw new Error(`FormulaField "${props.apiName}": maxLength is required when fieldType is 'TEXT'.`);
|
|
345
|
+
}
|
|
346
|
+
const { formula, ...rest } = props;
|
|
347
|
+
super(customObject, {
|
|
348
|
+
...rest,
|
|
349
|
+
derivedFieldFormula: formula,
|
|
350
|
+
required: null,
|
|
351
|
+
unique: null,
|
|
352
|
+
indexed: null,
|
|
353
|
+
});
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
exports.FormulaField = FormulaField;
|
|
357
|
+
/**
|
|
358
|
+
* Read-only rollup field that aggregates a child object's field values.
|
|
359
|
+
*
|
|
360
|
+
* Defined on the **parent** object. Requires a {@link ParentChildField} on the
|
|
361
|
+
* child object pointing back at this parent as the `lookup` edge.
|
|
362
|
+
*
|
|
363
|
+
* @example
|
|
364
|
+
* ```ts
|
|
365
|
+
* // Count enrollments on a class session:
|
|
366
|
+
* const enrollmentCount = new SummaryField(sessionObj, {
|
|
367
|
+
* apiName: 'enrollment_count__c',
|
|
368
|
+
* displayName: 'Enrolled (count)',
|
|
369
|
+
* aggregates: enrollmentMemberRef,
|
|
370
|
+
* using: 'COUNT',
|
|
371
|
+
* lookup: enrollmentSessionRef, // ParentChildField on enrollmentObj → sessionObj
|
|
372
|
+
* });
|
|
373
|
+
* ```
|
|
374
|
+
*
|
|
375
|
+
* @see {@link ParentChildField} — must be used as `lookup`.
|
|
376
|
+
*/
|
|
377
|
+
class SummaryField extends Field {
|
|
378
|
+
constructor(customObject, props) {
|
|
379
|
+
// lookup must be a parentChild field.
|
|
380
|
+
if (props.lookup.getDataType()['edge_type'] !== 'PARENT_CHILD') {
|
|
381
|
+
throw new Error(`SummaryField "${props.apiName}": 'lookup' must be a parentChild ` +
|
|
382
|
+
`field on the child CO (got edge_type=` +
|
|
383
|
+
`${props.lookup.getDataType()['edge_type'] ?? 'undefined'}).`);
|
|
384
|
+
}
|
|
385
|
+
// Infer output fieldType: NUMBER for COUNT, else the aggregated field's type.
|
|
386
|
+
let outputFieldType;
|
|
387
|
+
if (props.using === 'COUNT') {
|
|
388
|
+
outputFieldType = 'NUMBER';
|
|
389
|
+
}
|
|
390
|
+
else {
|
|
391
|
+
const agg = props.aggregates.getFieldType();
|
|
392
|
+
if (agg == null) {
|
|
393
|
+
throw new Error(`SummaryField "${props.apiName}": cannot infer output type — ` +
|
|
394
|
+
`aggregates field "${props.aggregates.getApiName()}" has no ` +
|
|
395
|
+
`known field_type. Construct it with a typed subclass (e.g. ` +
|
|
396
|
+
`CurrencyField / NumberField).`);
|
|
397
|
+
}
|
|
398
|
+
outputFieldType = agg;
|
|
399
|
+
}
|
|
400
|
+
// Summary-filter field restrictions. Mirror the admin condition-builder
|
|
401
|
+
// picker so SDK-authored manifests are fully editable in the UI, and
|
|
402
|
+
// catch the backend's own hard rejects ahead of /validate.
|
|
403
|
+
for (const f of props.filters ?? []) {
|
|
404
|
+
const fname = f.field.getApiName();
|
|
405
|
+
const ft = f.field.getFieldType();
|
|
406
|
+
// (a) Can't filter on the parent-child lookup field itself
|
|
407
|
+
// (backend: parent_child_util.py rejects this explicitly).
|
|
408
|
+
if (f.field === props.lookup) {
|
|
409
|
+
throw new Error(`SummaryField "${props.apiName}": filter field "${fname}" is the ` +
|
|
410
|
+
`parent-child lookup field — that's reserved as the aggregation ` +
|
|
411
|
+
`axis and can't be a filter. Pick a scalar field on the child CO.`);
|
|
412
|
+
}
|
|
413
|
+
// (b) Can't filter on a derived (formula or summary) field
|
|
414
|
+
// (backend rejects both).
|
|
415
|
+
if (f.field.isFormula() || f.field.isSummary()) {
|
|
416
|
+
throw new Error(`SummaryField "${props.apiName}": filter field "${fname}" is ` +
|
|
417
|
+
`itself a derived field (formula/summary). The backend does not ` +
|
|
418
|
+
`allow derived fields as summary-filter fields. Filter on a ` +
|
|
419
|
+
`plain scalar field on the child CO instead.`);
|
|
420
|
+
}
|
|
421
|
+
if (ft == null)
|
|
422
|
+
continue;
|
|
423
|
+
// (c) FILTER_OPERATORS_BY_TYPE is the single source of truth for
|
|
424
|
+
// "which field types can be used as summary-filter fields".
|
|
425
|
+
// Absent key ⇒ UI picker hides this type ⇒ SDK rejects it.
|
|
426
|
+
const allowed = _helpers_1.FILTER_OPERATORS_BY_TYPE[ft];
|
|
427
|
+
if (allowed == null) {
|
|
428
|
+
throw new Error(`SummaryField "${props.apiName}": filter field "${fname}" has type ` +
|
|
429
|
+
`${ft}, which the admin UI excludes from summary-filter pickers ` +
|
|
430
|
+
`(ambiguous semantics for aggregations). Model a plain BOOLEAN ` +
|
|
431
|
+
`field on the child CO (updated via a Rule) and filter on that.`);
|
|
432
|
+
}
|
|
433
|
+
// (d) Per-type operator allow-list.
|
|
434
|
+
if (!allowed.has(f.operator)) {
|
|
435
|
+
throw new Error(`SummaryField "${props.apiName}": operator "${f.operator}" is ` +
|
|
436
|
+
`not valid for ${ft} field "${fname}". ` +
|
|
437
|
+
`Allowed: ${[...allowed].join(', ')}.`);
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
super(customObject, {
|
|
441
|
+
apiName: props.apiName,
|
|
442
|
+
displayName: props.displayName,
|
|
443
|
+
fieldType: outputFieldType,
|
|
444
|
+
currency: outputFieldType === 'CURRENCY' ? props.currencyCode : undefined,
|
|
445
|
+
required: null,
|
|
446
|
+
unique: null,
|
|
447
|
+
indexed: null,
|
|
448
|
+
description: props.description,
|
|
449
|
+
section: props.section,
|
|
450
|
+
summarySpec: {
|
|
451
|
+
aggregates: props.aggregates,
|
|
452
|
+
using: props.using,
|
|
453
|
+
lookup: props.lookup,
|
|
454
|
+
filters: props.filters ?? [],
|
|
455
|
+
currencyCode: props.currencyCode ?? null,
|
|
456
|
+
},
|
|
457
|
+
});
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
exports.SummaryField = SummaryField;
|
|
461
|
+
//# sourceMappingURL=field.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field.js","sourceRoot":"","sources":["../../src/lib/manifest/field.ts"],"names":[],"mappings":"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"}
|