@rippling/rippling-sdk 0.2.0-alpha.84 → 0.2.0-alpha.85
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/examples/manifest/custom-object-creation-workflow/custom-object-creation-workflow.ts +44 -26
- package/examples/manifest/dental-practice-management/dental-practice-management.ts +470 -142
- package/examples/manifest/dental-practice-management/functions/chair-schedule.ts +23 -13
- package/examples/manifest/dental-practice-management/functions/complete-visit.ts +55 -32
- package/examples/manifest/dental-practice-management/functions/operatory-list.ts +23 -13
- package/examples/manifest/dental-practice-management/functions/patient-list.ts +23 -13
- package/examples/manifest/dental-practice-management/functions/treatment-plan-list.ts +23 -13
- package/examples/manifest/existing-manifest-mutations/existing-manifest-mutations.ts +23 -68
- package/examples/manifest/field-service-dispatch/field-service-dispatch.ts +375 -102
- package/examples/manifest/grant-program-management/grant-program-management.ts +419 -125
- package/examples/manifest/gym-membership-management/functions/check-in-desk.ts +23 -13
- package/examples/manifest/gym-membership-management/functions/member-list.ts +23 -13
- package/examples/manifest/gym-membership-management/functions/today-schedule.ts +23 -13
- package/examples/manifest/gym-membership-management/functions/trainer-list.ts +23 -13
- package/examples/manifest/gym-membership-management/gym-membership-management.ts +442 -92
- package/examples/manifest/procurement-approval-hub/procurement-approval-hub.ts +408 -122
- package/examples/manifest/simple-todo-app/functions/mark-done.ts +12 -16
- package/examples/manifest/simple-todo-app/functions/todo-list.ts +23 -13
- package/examples/manifest/simple-todo-app/simple-todo-app.ts +109 -40
- package/examples/manifest/todo-app-without-object-list-view/functions/todo-page.ts +193 -166
- package/examples/manifest/todo-app-without-object-list-view/todo-app-without-object-list-view.ts +47 -24
- package/package.json +13 -7
- package/resources/custom-objects/custom-objects.d.mts +0 -7
- package/resources/custom-objects/custom-objects.d.mts.map +1 -1
- package/resources/custom-objects/custom-objects.d.ts +0 -7
- package/resources/custom-objects/custom-objects.d.ts.map +1 -1
- package/resources/custom-objects/custom-objects.js.map +1 -1
- package/resources/custom-objects/custom-objects.mjs.map +1 -1
- package/resources/custom-objects/fields.d.mts +14 -128
- package/resources/custom-objects/fields.d.mts.map +1 -1
- package/resources/custom-objects/fields.d.ts +14 -128
- package/resources/custom-objects/fields.d.ts.map +1 -1
- package/src/resources/custom-objects/custom-objects.ts +0 -8
- package/src/resources/custom-objects/fields.ts +13 -191
- package/src/tsconfig.json +1 -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
- package/core/platform/custom-objects/category.d.mts +0 -125
- package/core/platform/custom-objects/category.d.mts.map +0 -1
- package/core/platform/custom-objects/category.d.ts +0 -125
- package/core/platform/custom-objects/category.d.ts.map +0 -1
- package/core/platform/custom-objects/category.js +0 -188
- package/core/platform/custom-objects/category.js.map +0 -1
- package/core/platform/custom-objects/category.mjs +0 -178
- package/core/platform/custom-objects/category.mjs.map +0 -1
- package/core/platform/custom-objects/definition.d.mts +0 -147
- package/core/platform/custom-objects/definition.d.mts.map +0 -1
- package/core/platform/custom-objects/definition.d.ts +0 -147
- package/core/platform/custom-objects/definition.d.ts.map +0 -1
- package/core/platform/custom-objects/definition.js +0 -200
- package/core/platform/custom-objects/definition.js.map +0 -1
- package/core/platform/custom-objects/definition.mjs +0 -190
- package/core/platform/custom-objects/definition.mjs.map +0 -1
- package/core/platform/custom-objects/fields.d.mts +0 -302
- package/core/platform/custom-objects/fields.d.mts.map +0 -1
- package/core/platform/custom-objects/fields.d.ts +0 -302
- package/core/platform/custom-objects/fields.d.ts.map +0 -1
- package/core/platform/custom-objects/fields.js +0 -369
- package/core/platform/custom-objects/fields.js.map +0 -1
- package/core/platform/custom-objects/fields.mjs +0 -347
- package/core/platform/custom-objects/fields.mjs.map +0 -1
- package/core/platform/custom-objects/function-runtime.d.mts +0 -42
- package/core/platform/custom-objects/function-runtime.d.mts.map +0 -1
- package/core/platform/custom-objects/function-runtime.d.ts +0 -42
- package/core/platform/custom-objects/function-runtime.d.ts.map +0 -1
- package/core/platform/custom-objects/function-runtime.js +0 -38
- package/core/platform/custom-objects/function-runtime.js.map +0 -1
- package/core/platform/custom-objects/function-runtime.mjs +0 -35
- package/core/platform/custom-objects/function-runtime.mjs.map +0 -1
- package/core/platform/custom-objects/lifecycle.d.mts +0 -83
- package/core/platform/custom-objects/lifecycle.d.mts.map +0 -1
- package/core/platform/custom-objects/lifecycle.d.ts +0 -83
- package/core/platform/custom-objects/lifecycle.d.ts.map +0 -1
- package/core/platform/custom-objects/lifecycle.js +0 -372
- package/core/platform/custom-objects/lifecycle.js.map +0 -1
- package/core/platform/custom-objects/lifecycle.mjs +0 -367
- package/core/platform/custom-objects/lifecycle.mjs.map +0 -1
- package/core/platform/custom-objects/manager.d.mts +0 -354
- package/core/platform/custom-objects/manager.d.mts.map +0 -1
- package/core/platform/custom-objects/manager.d.ts +0 -354
- package/core/platform/custom-objects/manager.d.ts.map +0 -1
- package/core/platform/custom-objects/manager.js +0 -646
- package/core/platform/custom-objects/manager.js.map +0 -1
- package/core/platform/custom-objects/manager.mjs +0 -637
- package/core/platform/custom-objects/manager.mjs.map +0 -1
- package/core/platform/custom-objects/provisioning.d.mts +0 -138
- package/core/platform/custom-objects/provisioning.d.mts.map +0 -1
- package/core/platform/custom-objects/provisioning.d.ts +0 -138
- package/core/platform/custom-objects/provisioning.d.ts.map +0 -1
- package/core/platform/custom-objects/provisioning.js +0 -455
- package/core/platform/custom-objects/provisioning.js.map +0 -1
- package/core/platform/custom-objects/provisioning.mjs +0 -447
- package/core/platform/custom-objects/provisioning.mjs.map +0 -1
- package/core/platform/custom-objects/rql.d.mts +0 -122
- package/core/platform/custom-objects/rql.d.mts.map +0 -1
- package/core/platform/custom-objects/rql.d.ts +0 -122
- package/core/platform/custom-objects/rql.d.ts.map +0 -1
- package/core/platform/custom-objects/rql.js +0 -225
- package/core/platform/custom-objects/rql.js.map +0 -1
- package/core/platform/custom-objects/rql.mjs +0 -222
- package/core/platform/custom-objects/rql.mjs.map +0 -1
- package/core/platform/custom-objects/schema-manager.d.mts +0 -203
- package/core/platform/custom-objects/schema-manager.d.mts.map +0 -1
- package/core/platform/custom-objects/schema-manager.d.ts +0 -203
- package/core/platform/custom-objects/schema-manager.d.ts.map +0 -1
- package/core/platform/custom-objects/schema-manager.js +0 -256
- package/core/platform/custom-objects/schema-manager.js.map +0 -1
- package/core/platform/custom-objects/schema-manager.mjs +0 -249
- package/core/platform/custom-objects/schema-manager.mjs.map +0 -1
- package/core/platform/custom-objects/typed-rql.d.mts +0 -157
- package/core/platform/custom-objects/typed-rql.d.mts.map +0 -1
- package/core/platform/custom-objects/typed-rql.d.ts +0 -157
- package/core/platform/custom-objects/typed-rql.d.ts.map +0 -1
- package/core/platform/custom-objects/typed-rql.js +0 -583
- package/core/platform/custom-objects/typed-rql.js.map +0 -1
- package/core/platform/custom-objects/typed-rql.mjs +0 -580
- package/core/platform/custom-objects/typed-rql.mjs.map +0 -1
- package/core/platform/custom-objects/types.d.mts +0 -549
- package/core/platform/custom-objects/types.d.mts.map +0 -1
- package/core/platform/custom-objects/types.d.ts +0 -549
- package/core/platform/custom-objects/types.d.ts.map +0 -1
- package/core/platform/custom-objects/types.js +0 -20
- package/core/platform/custom-objects/types.js.map +0 -1
- package/core/platform/custom-objects/types.mjs +0 -17
- package/core/platform/custom-objects/types.mjs.map +0 -1
- package/core/platform/custom-objects/validation.d.mts +0 -97
- package/core/platform/custom-objects/validation.d.mts.map +0 -1
- package/core/platform/custom-objects/validation.d.ts +0 -97
- package/core/platform/custom-objects/validation.d.ts.map +0 -1
- package/core/platform/custom-objects/validation.js +0 -477
- package/core/platform/custom-objects/validation.js.map +0 -1
- package/core/platform/custom-objects/validation.mjs +0 -465
- package/core/platform/custom-objects/validation.mjs.map +0 -1
- package/core/platform/custom-objects.d.mts +0 -67
- package/core/platform/custom-objects.d.mts.map +0 -1
- package/core/platform/custom-objects.d.ts +0 -67
- package/core/platform/custom-objects.d.ts.map +0 -1
- package/core/platform/custom-objects.js +0 -118
- package/core/platform/custom-objects.js.map +0 -1
- package/core/platform/custom-objects.mjs +0 -45
- package/core/platform/custom-objects.mjs.map +0 -1
- package/core/platform/manifest/custom-objects/action.d.mts +0 -58
- package/core/platform/manifest/custom-objects/action.d.mts.map +0 -1
- package/core/platform/manifest/custom-objects/action.d.ts +0 -58
- package/core/platform/manifest/custom-objects/action.d.ts.map +0 -1
- package/core/platform/manifest/custom-objects/action.js +0 -44
- package/core/platform/manifest/custom-objects/action.js.map +0 -1
- package/core/platform/manifest/custom-objects/action.mjs +0 -40
- package/core/platform/manifest/custom-objects/action.mjs.map +0 -1
- package/core/platform/manifest/custom-objects/conditions.d.mts +0 -240
- package/core/platform/manifest/custom-objects/conditions.d.mts.map +0 -1
- package/core/platform/manifest/custom-objects/conditions.d.ts +0 -240
- package/core/platform/manifest/custom-objects/conditions.d.ts.map +0 -1
- package/core/platform/manifest/custom-objects/conditions.js +0 -326
- package/core/platform/manifest/custom-objects/conditions.js.map +0 -1
- package/core/platform/manifest/custom-objects/conditions.mjs +0 -321
- package/core/platform/manifest/custom-objects/conditions.mjs.map +0 -1
- package/core/platform/manifest/custom-objects/existing.d.mts +0 -87
- package/core/platform/manifest/custom-objects/existing.d.mts.map +0 -1
- package/core/platform/manifest/custom-objects/existing.d.ts +0 -87
- package/core/platform/manifest/custom-objects/existing.d.ts.map +0 -1
- package/core/platform/manifest/custom-objects/existing.js +0 -113
- package/core/platform/manifest/custom-objects/existing.js.map +0 -1
- package/core/platform/manifest/custom-objects/existing.mjs +0 -109
- package/core/platform/manifest/custom-objects/existing.mjs.map +0 -1
- package/core/platform/manifest/custom-objects/field-resolution.d.mts +0 -48
- package/core/platform/manifest/custom-objects/field-resolution.d.mts.map +0 -1
- package/core/platform/manifest/custom-objects/field-resolution.d.ts +0 -48
- package/core/platform/manifest/custom-objects/field-resolution.d.ts.map +0 -1
- package/core/platform/manifest/custom-objects/field-resolution.js +0 -61
- package/core/platform/manifest/custom-objects/field-resolution.js.map +0 -1
- package/core/platform/manifest/custom-objects/field-resolution.mjs +0 -58
- package/core/platform/manifest/custom-objects/field-resolution.mjs.map +0 -1
- package/core/platform/manifest/custom-objects/function-file.d.mts +0 -87
- package/core/platform/manifest/custom-objects/function-file.d.mts.map +0 -1
- package/core/platform/manifest/custom-objects/function-file.d.ts +0 -87
- package/core/platform/manifest/custom-objects/function-file.d.ts.map +0 -1
- package/core/platform/manifest/custom-objects/function-file.js +0 -76
- package/core/platform/manifest/custom-objects/function-file.js.map +0 -1
- package/core/platform/manifest/custom-objects/function-file.mjs +0 -69
- package/core/platform/manifest/custom-objects/function-file.mjs.map +0 -1
- package/core/platform/manifest/custom-objects/list-view.d.mts +0 -65
- package/core/platform/manifest/custom-objects/list-view.d.mts.map +0 -1
- package/core/platform/manifest/custom-objects/list-view.d.ts +0 -65
- package/core/platform/manifest/custom-objects/list-view.d.ts.map +0 -1
- package/core/platform/manifest/custom-objects/list-view.js +0 -33
- package/core/platform/manifest/custom-objects/list-view.js.map +0 -1
- package/core/platform/manifest/custom-objects/list-view.mjs +0 -30
- package/core/platform/manifest/custom-objects/list-view.mjs.map +0 -1
- package/core/platform/manifest/custom-objects/object-list-page.d.mts +0 -43
- package/core/platform/manifest/custom-objects/object-list-page.d.mts.map +0 -1
- package/core/platform/manifest/custom-objects/object-list-page.d.ts +0 -43
- package/core/platform/manifest/custom-objects/object-list-page.d.ts.map +0 -1
- package/core/platform/manifest/custom-objects/object-list-page.js +0 -54
- package/core/platform/manifest/custom-objects/object-list-page.js.map +0 -1
- package/core/platform/manifest/custom-objects/object-list-page.mjs +0 -50
- package/core/platform/manifest/custom-objects/object-list-page.mjs.map +0 -1
- package/core/platform/manifest/custom-objects/page-layout.d.mts +0 -142
- package/core/platform/manifest/custom-objects/page-layout.d.mts.map +0 -1
- package/core/platform/manifest/custom-objects/page-layout.d.ts +0 -142
- package/core/platform/manifest/custom-objects/page-layout.d.ts.map +0 -1
- package/core/platform/manifest/custom-objects/page-layout.js +0 -184
- package/core/platform/manifest/custom-objects/page-layout.js.map +0 -1
- package/core/platform/manifest/custom-objects/page-layout.mjs +0 -180
- package/core/platform/manifest/custom-objects/page-layout.mjs.map +0 -1
- package/core/platform/manifest/custom-objects/register.d.mts +0 -87
- package/core/platform/manifest/custom-objects/register.d.mts.map +0 -1
- package/core/platform/manifest/custom-objects/register.d.ts +0 -87
- package/core/platform/manifest/custom-objects/register.d.ts.map +0 -1
- package/core/platform/manifest/custom-objects/register.js +0 -395
- package/core/platform/manifest/custom-objects/register.js.map +0 -1
- package/core/platform/manifest/custom-objects/register.mjs +0 -391
- package/core/platform/manifest/custom-objects/register.mjs.map +0 -1
- package/core/platform/manifest/custom-objects/rule.d.mts +0 -113
- package/core/platform/manifest/custom-objects/rule.d.mts.map +0 -1
- package/core/platform/manifest/custom-objects/rule.d.ts +0 -113
- package/core/platform/manifest/custom-objects/rule.d.ts.map +0 -1
- package/core/platform/manifest/custom-objects/rule.js +0 -49
- package/core/platform/manifest/custom-objects/rule.js.map +0 -1
- package/core/platform/manifest/custom-objects/rule.mjs +0 -45
- package/core/platform/manifest/custom-objects/rule.mjs.map +0 -1
- package/core/platform/manifest/custom-objects/sdui-page.d.mts +0 -214
- package/core/platform/manifest/custom-objects/sdui-page.d.mts.map +0 -1
- package/core/platform/manifest/custom-objects/sdui-page.d.ts +0 -214
- package/core/platform/manifest/custom-objects/sdui-page.d.ts.map +0 -1
- package/core/platform/manifest/custom-objects/sdui-page.js +0 -194
- package/core/platform/manifest/custom-objects/sdui-page.js.map +0 -1
- package/core/platform/manifest/custom-objects/sdui-page.mjs +0 -182
- package/core/platform/manifest/custom-objects/sdui-page.mjs.map +0 -1
- package/core/platform/manifest/custom-objects/typed-condition.d.mts +0 -28
- package/core/platform/manifest/custom-objects/typed-condition.d.mts.map +0 -1
- package/core/platform/manifest/custom-objects/typed-condition.d.ts +0 -28
- package/core/platform/manifest/custom-objects/typed-condition.d.ts.map +0 -1
- package/core/platform/manifest/custom-objects/typed-condition.js +0 -434
- package/core/platform/manifest/custom-objects/typed-condition.js.map +0 -1
- package/core/platform/manifest/custom-objects/typed-condition.mjs +0 -431
- package/core/platform/manifest/custom-objects/typed-condition.mjs.map +0 -1
- package/core/platform/manifest/custom-objects/types.d.mts +0 -29
- package/core/platform/manifest/custom-objects/types.d.mts.map +0 -1
- package/core/platform/manifest/custom-objects/types.d.ts +0 -29
- package/core/platform/manifest/custom-objects/types.d.ts.map +0 -1
- package/core/platform/manifest/custom-objects/types.js +0 -3
- package/core/platform/manifest/custom-objects/types.js.map +0 -1
- package/core/platform/manifest/custom-objects/types.mjs +0 -2
- package/core/platform/manifest/custom-objects/types.mjs.map +0 -1
- package/core/platform/manifest/custom-objects/validation.d.mts +0 -44
- package/core/platform/manifest/custom-objects/validation.d.mts.map +0 -1
- package/core/platform/manifest/custom-objects/validation.d.ts +0 -44
- package/core/platform/manifest/custom-objects/validation.d.ts.map +0 -1
- package/core/platform/manifest/custom-objects/validation.js +0 -30
- package/core/platform/manifest/custom-objects/validation.js.map +0 -1
- package/core/platform/manifest/custom-objects/validation.mjs +0 -27
- package/core/platform/manifest/custom-objects/validation.mjs.map +0 -1
- package/core/platform/manifest/custom-objects/workflow.d.mts +0 -47
- package/core/platform/manifest/custom-objects/workflow.d.mts.map +0 -1
- package/core/platform/manifest/custom-objects/workflow.d.ts +0 -47
- package/core/platform/manifest/custom-objects/workflow.d.ts.map +0 -1
- package/core/platform/manifest/custom-objects/workflow.js +0 -38
- package/core/platform/manifest/custom-objects/workflow.js.map +0 -1
- package/core/platform/manifest/custom-objects/workflow.mjs +0 -34
- package/core/platform/manifest/custom-objects/workflow.mjs.map +0 -1
- package/core/platform/manifest/custom-objects.d.mts +0 -85
- package/core/platform/manifest/custom-objects.d.mts.map +0 -1
- package/core/platform/manifest/custom-objects.d.ts +0 -85
- package/core/platform/manifest/custom-objects.d.ts.map +0 -1
- package/core/platform/manifest/custom-objects.js +0 -84
- package/core/platform/manifest/custom-objects.js.map +0 -1
- package/core/platform/manifest/custom-objects.mjs +0 -55
- package/core/platform/manifest/custom-objects.mjs.map +0 -1
- package/examples/manifest/custom-object-creation-workflow/functions/intake-request-created.ts +0 -20
- package/examples/manifest/custom-object-creation-workflow/schema.ts +0 -29
- package/examples/manifest/dental-practice-management/schema.ts +0 -298
- package/examples/manifest/field-service-dispatch/schema.ts +0 -248
- package/examples/manifest/grant-program-management/schema.ts +0 -269
- package/examples/manifest/gym-membership-management/schema.ts +0 -266
- package/examples/manifest/procurement-approval-hub/functions/route-purchase-request.ts +0 -20
- package/examples/manifest/procurement-approval-hub/schema.ts +0 -256
- package/examples/manifest/simple-todo-app/schema.ts +0 -60
- package/examples/manifest/todo-app-without-object-list-view/schema.ts +0 -28
- package/src/core/platform/README.md +0 -20
- package/src/core/platform/custom-objects/category.ts +0 -294
- package/src/core/platform/custom-objects/definition.ts +0 -373
- package/src/core/platform/custom-objects/fields.ts +0 -653
- package/src/core/platform/custom-objects/function-runtime.ts +0 -76
- package/src/core/platform/custom-objects/lifecycle.ts +0 -557
- package/src/core/platform/custom-objects/manager.ts +0 -959
- package/src/core/platform/custom-objects/provisioning.ts +0 -672
- package/src/core/platform/custom-objects/rql.ts +0 -375
- package/src/core/platform/custom-objects/schema-manager.ts +0 -351
- package/src/core/platform/custom-objects/typed-rql.ts +0 -1273
- package/src/core/platform/custom-objects/types.ts +0 -753
- package/src/core/platform/custom-objects/validation.ts +0 -573
- package/src/core/platform/custom-objects.ts +0 -269
- package/src/core/platform/manifest/README.md +0 -26
- package/src/core/platform/manifest/custom-objects/action.ts +0 -87
- package/src/core/platform/manifest/custom-objects/conditions.ts +0 -762
- package/src/core/platform/manifest/custom-objects/existing.ts +0 -221
- package/src/core/platform/manifest/custom-objects/field-resolution.ts +0 -116
- package/src/core/platform/manifest/custom-objects/function-file.ts +0 -149
- package/src/core/platform/manifest/custom-objects/list-view.ts +0 -95
- package/src/core/platform/manifest/custom-objects/object-list-page.ts +0 -87
- package/src/core/platform/manifest/custom-objects/page-layout.ts +0 -380
- package/src/core/platform/manifest/custom-objects/register.ts +0 -555
- package/src/core/platform/manifest/custom-objects/rule.ts +0 -192
- package/src/core/platform/manifest/custom-objects/sdui-page.ts +0 -515
- package/src/core/platform/manifest/custom-objects/typed-condition.ts +0 -617
- package/src/core/platform/manifest/custom-objects/types.ts +0 -92
- package/src/core/platform/manifest/custom-objects/validation.ts +0 -70
- package/src/core/platform/manifest/custom-objects/workflow.ts +0 -71
- package/src/core/platform/manifest/custom-objects.ts +0 -203
- package/src/pebble-sdui-web-custom-apps-shim.d.ts +0 -3
|
@@ -1,646 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.COManager = exports.CustomObjectManager = exports.TypedCustomObjectRecordManager = exports.InMemoryCustomObjectRecordAdapter = exports.CustomObjectRecordValidationError = void 0;
|
|
4
|
-
exports.createCustomObjectRecordAdapter = createCustomObjectRecordAdapter;
|
|
5
|
-
const validation_1 = require("./validation.js");
|
|
6
|
-
/**
|
|
7
|
-
* Structured validation failure thrown by typed record managers.
|
|
8
|
-
*
|
|
9
|
-
* @typeParam TDefinition - Object definition whose payload validation failed.
|
|
10
|
-
*/
|
|
11
|
-
class CustomObjectRecordValidationError extends Error {
|
|
12
|
-
/**
|
|
13
|
-
* Builds a validation error for a typed record operation.
|
|
14
|
-
*
|
|
15
|
-
* @typeParam TDefinition - Object definition whose payload validation failed.
|
|
16
|
-
*/
|
|
17
|
-
constructor(definition, operation, issues) {
|
|
18
|
-
super(`Invalid ${operation} payload for ${definition.apiName}: ${issues
|
|
19
|
-
.map((current) => `${current.path}: ${current.message}`)
|
|
20
|
-
.join('; ')}`);
|
|
21
|
-
this.name = 'CustomObjectRecordValidationError';
|
|
22
|
-
this.definition = definition;
|
|
23
|
-
this.operation = operation;
|
|
24
|
-
this.issues = issues;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
exports.CustomObjectRecordValidationError = CustomObjectRecordValidationError;
|
|
28
|
-
/**
|
|
29
|
-
* Returns whether one value is a plain object-like record.
|
|
30
|
-
*
|
|
31
|
-
* @param value - Candidate value to inspect.
|
|
32
|
-
* @returns Whether the value is a non-array object.
|
|
33
|
-
*/
|
|
34
|
-
function isObject(value) {
|
|
35
|
-
return value != null && typeof value === 'object' && !Array.isArray(value);
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Requires a create/update response to contain the expected row payload.
|
|
39
|
-
*
|
|
40
|
-
* @param customObjectApiName - Custom-object API name involved in the operation.
|
|
41
|
-
* @param operation - Human-readable operation name for error messages.
|
|
42
|
-
* @param row - Optional row payload returned by the backend.
|
|
43
|
-
* @returns Required row payload.
|
|
44
|
-
* @throws Error when the backend response is missing the expected row payload.
|
|
45
|
-
*/
|
|
46
|
-
function requireSingleRow(customObjectApiName, operation, row) {
|
|
47
|
-
if (row != null)
|
|
48
|
-
return row;
|
|
49
|
-
throw new Error(`Expected ${operation} on ${customObjectApiName} to return a record payload.`);
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Normalizes a lookup-or-file value into the wire-level id string expected by the REST API.
|
|
53
|
-
*
|
|
54
|
-
* @param value - Logical lookup or file value to normalize.
|
|
55
|
-
* @returns Wire-level id string when possible, otherwise the original value.
|
|
56
|
-
*/
|
|
57
|
-
function toWireReference(value) {
|
|
58
|
-
if (typeof value === 'string')
|
|
59
|
-
return value;
|
|
60
|
-
if (isObject(value) && typeof value['id'] === 'string')
|
|
61
|
-
return value['id'];
|
|
62
|
-
return value;
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Serializes one logical field value into the backend wire shape.
|
|
66
|
-
*
|
|
67
|
-
* @param field - Typed field definition that owns the value.
|
|
68
|
-
* @param value - Logical field value to serialize.
|
|
69
|
-
* @returns Wire-level field value suitable for the records API.
|
|
70
|
-
*/
|
|
71
|
-
function serializeFieldValue(field, value) {
|
|
72
|
-
switch (field.kind) {
|
|
73
|
-
case 'lookup':
|
|
74
|
-
case 'parent-child':
|
|
75
|
-
case 'file':
|
|
76
|
-
return toWireReference(value);
|
|
77
|
-
default:
|
|
78
|
-
return value;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Serializes a logical create/update payload into wire-level API-name keys.
|
|
83
|
-
*
|
|
84
|
-
* @param definition - Typed object definition that owns the payload fields.
|
|
85
|
-
* @param input - Logical create/update payload to serialize.
|
|
86
|
-
* @returns Wire-level payload suitable for the records API.
|
|
87
|
-
* @typeParam TDefinition - Object definition being serialized.
|
|
88
|
-
*/
|
|
89
|
-
function serializeRecordInput(definition, input) {
|
|
90
|
-
const wire = {};
|
|
91
|
-
if (Object.prototype.hasOwnProperty.call(input, 'name') && input['name'] !== undefined) {
|
|
92
|
-
wire['name'] = input['name'];
|
|
93
|
-
}
|
|
94
|
-
if (Object.prototype.hasOwnProperty.call(input, 'external_id') && input['external_id'] !== undefined) {
|
|
95
|
-
wire['external_id'] = input['external_id'];
|
|
96
|
-
}
|
|
97
|
-
if (Object.prototype.hasOwnProperty.call(input, 'owner_role') && input['owner_role'] !== undefined) {
|
|
98
|
-
wire['owner_role'] = toWireReference(input['owner_role']);
|
|
99
|
-
}
|
|
100
|
-
for (const [logicalName, rawField] of Object.entries(definition.fields)) {
|
|
101
|
-
if (!Object.prototype.hasOwnProperty.call(input, logicalName))
|
|
102
|
-
continue;
|
|
103
|
-
const value = input[logicalName];
|
|
104
|
-
if (value === undefined)
|
|
105
|
-
continue;
|
|
106
|
-
const field = rawField;
|
|
107
|
-
wire[field.apiName] = serializeFieldValue(field, value);
|
|
108
|
-
}
|
|
109
|
-
return wire;
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Normalizes a backend lookup value into the logical record shape.
|
|
113
|
-
*
|
|
114
|
-
* @param targetApiName - Expected target API name when the backend omits it.
|
|
115
|
-
* @param value - Raw backend lookup value.
|
|
116
|
-
* @returns Logical lookup reference or `null` when the backend value cannot be interpreted.
|
|
117
|
-
* @typeParam TApiName - Lookup target API name.
|
|
118
|
-
*/
|
|
119
|
-
function deserializeLookupReference(targetApiName, value) {
|
|
120
|
-
if (typeof value === 'string') {
|
|
121
|
-
return { id: value, apiName: targetApiName };
|
|
122
|
-
}
|
|
123
|
-
if (!isObject(value))
|
|
124
|
-
return null;
|
|
125
|
-
if (typeof value['id'] !== 'string')
|
|
126
|
-
return null;
|
|
127
|
-
return {
|
|
128
|
-
id: value['id'],
|
|
129
|
-
...(typeof value['apiName'] === 'string' ?
|
|
130
|
-
{ apiName: value['apiName'] }
|
|
131
|
-
: { apiName: targetApiName }),
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Deserializes one backend field value into the logical typed shape.
|
|
136
|
-
*
|
|
137
|
-
* @param field - Typed field definition that owns the value.
|
|
138
|
-
* @param value - Raw backend field value.
|
|
139
|
-
* @returns Logical field value suitable for typed record helpers.
|
|
140
|
-
*/
|
|
141
|
-
function deserializeFieldValue(field, value) {
|
|
142
|
-
if (value == null)
|
|
143
|
-
return null;
|
|
144
|
-
switch (field.kind) {
|
|
145
|
-
case 'lookup':
|
|
146
|
-
case 'parent-child':
|
|
147
|
-
return deserializeLookupReference(field.targetApiName ?? 'unknown', value);
|
|
148
|
-
case 'file':
|
|
149
|
-
return (typeof value === 'string' ? value
|
|
150
|
-
: isObject(value) && typeof value['id'] === 'string' ? { id: value['id'] }
|
|
151
|
-
: null);
|
|
152
|
-
default:
|
|
153
|
-
return value;
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Converts one raw backend row into the logical typed record shape.
|
|
158
|
-
*
|
|
159
|
-
* @param definition - Typed object definition that owns the row shape.
|
|
160
|
-
* @param row - Raw backend row to deserialize.
|
|
161
|
-
* @returns Typed logical record.
|
|
162
|
-
* @typeParam TDefinition - Object definition being deserialized.
|
|
163
|
-
*/
|
|
164
|
-
function deserializeRecord(definition, row) {
|
|
165
|
-
const typedRecord = {
|
|
166
|
-
id: row.id,
|
|
167
|
-
name: row.name,
|
|
168
|
-
created_at: typeof row.created_at === 'string' ? row.created_at : null,
|
|
169
|
-
updated_at: typeof row.updated_at === 'string' ? row.updated_at : null,
|
|
170
|
-
system_updated_at: typeof row.system_updated_at === 'string' ? row.system_updated_at : null,
|
|
171
|
-
external_id: typeof row.external_id === 'string' ? row.external_id : null,
|
|
172
|
-
owner_role: deserializeLookupReference('Employee', row.owner_role),
|
|
173
|
-
created_by: deserializeLookupReference('Employee', row.created_by),
|
|
174
|
-
last_modified_by: deserializeLookupReference('Employee', row.last_modified_by),
|
|
175
|
-
};
|
|
176
|
-
for (const [logicalName, rawField] of Object.entries(definition.fields)) {
|
|
177
|
-
const field = rawField;
|
|
178
|
-
typedRecord[logicalName] = deserializeFieldValue(field, row[field.apiName]);
|
|
179
|
-
}
|
|
180
|
-
return typedRecord;
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
* Prefixes validation issue paths for batch operations.
|
|
184
|
-
*
|
|
185
|
-
* @param prefix - Path prefix to prepend to each issue.
|
|
186
|
-
* @param issues - Validation issues to rewrite.
|
|
187
|
-
* @returns Rewritten validation issues with prefixed paths.
|
|
188
|
-
*/
|
|
189
|
-
function prefixIssues(prefix, issues) {
|
|
190
|
-
return issues.map((current) => ({ path: `${prefix}.${current.path}`, message: current.message }));
|
|
191
|
-
}
|
|
192
|
-
/**
|
|
193
|
-
* Validates one create payload and throws a typed error when invalid.
|
|
194
|
-
*
|
|
195
|
-
* @param definition - Typed object definition whose create payload is being validated.
|
|
196
|
-
* @param input - Typed create payload to validate.
|
|
197
|
-
* @throws CustomObjectRecordValidationError when the payload is invalid.
|
|
198
|
-
* @typeParam TDefinition - Object definition being validated.
|
|
199
|
-
*/
|
|
200
|
-
function assertValidCreatePayload(definition, input) {
|
|
201
|
-
const result = (0, validation_1.validateCreateInput)(definition, input);
|
|
202
|
-
if (!result.valid)
|
|
203
|
-
throw new CustomObjectRecordValidationError(definition, 'create', result.issues);
|
|
204
|
-
}
|
|
205
|
-
/**
|
|
206
|
-
* Validates one update payload and throws a typed error when invalid.
|
|
207
|
-
*
|
|
208
|
-
* @param definition - Typed object definition whose update payload is being validated.
|
|
209
|
-
* @param input - Typed update payload to validate.
|
|
210
|
-
* @throws CustomObjectRecordValidationError when the payload is invalid.
|
|
211
|
-
* @typeParam TDefinition - Object definition being validated.
|
|
212
|
-
*/
|
|
213
|
-
function assertValidUpdatePayload(definition, input) {
|
|
214
|
-
const result = (0, validation_1.validateUpdateInput)(definition, input);
|
|
215
|
-
if (!result.valid)
|
|
216
|
-
throw new CustomObjectRecordValidationError(definition, 'update', result.issues);
|
|
217
|
-
}
|
|
218
|
-
/**
|
|
219
|
-
* Validates a batch of create payloads and throws a typed error when any row is invalid.
|
|
220
|
-
*
|
|
221
|
-
* @param definition - Typed object definition whose payloads are being validated.
|
|
222
|
-
* @param rows - Typed create payloads to validate as a batch.
|
|
223
|
-
* @throws CustomObjectRecordValidationError when any row is invalid.
|
|
224
|
-
* @typeParam TDefinition - Object definition being validated.
|
|
225
|
-
*/
|
|
226
|
-
function assertValidCreateBatch(definition, rows) {
|
|
227
|
-
const issues = rows.flatMap((row, index) => {
|
|
228
|
-
const result = (0, validation_1.validateCreateInput)(definition, row);
|
|
229
|
-
return result.valid ? [] : prefixIssues(`rows[${index}]`, result.issues);
|
|
230
|
-
});
|
|
231
|
-
if (issues.length > 0)
|
|
232
|
-
throw new CustomObjectRecordValidationError(definition, 'bulk-create', issues);
|
|
233
|
-
}
|
|
234
|
-
/**
|
|
235
|
-
* Validates a batch of update payloads and throws a typed error when any row is invalid.
|
|
236
|
-
*
|
|
237
|
-
* @param definition - Typed object definition whose payloads are being validated.
|
|
238
|
-
* @param rows - Typed update payloads to validate as a batch.
|
|
239
|
-
* @throws CustomObjectRecordValidationError when any row is invalid.
|
|
240
|
-
* @typeParam TDefinition - Object definition being validated.
|
|
241
|
-
*/
|
|
242
|
-
function assertValidUpdateBatch(definition, rows) {
|
|
243
|
-
const issues = rows.flatMap((row, index) => {
|
|
244
|
-
if (row.id.trim().length === 0) {
|
|
245
|
-
return [{ path: `rows[${index}].id`, message: 'Record id cannot be empty.' }];
|
|
246
|
-
}
|
|
247
|
-
const { id: _id, ...patch } = row;
|
|
248
|
-
const result = (0, validation_1.validateUpdateInput)(definition, patch);
|
|
249
|
-
return result.valid ? [] : prefixIssues(`rows[${index}]`, result.issues);
|
|
250
|
-
});
|
|
251
|
-
if (issues.length > 0)
|
|
252
|
-
throw new CustomObjectRecordValidationError(definition, 'bulk-update', issues);
|
|
253
|
-
}
|
|
254
|
-
/**
|
|
255
|
-
* Records-resource adapter implementation for typed record managers.
|
|
256
|
-
*
|
|
257
|
-
* @param records - Low-level records resource to adapt into the manager-friendly transport boundary.
|
|
258
|
-
* @returns Adapter implementation backed by the supplied records resource.
|
|
259
|
-
*/
|
|
260
|
-
function createCustomObjectRecordAdapter(records) {
|
|
261
|
-
return {
|
|
262
|
-
async create(customObjectApiName, body) {
|
|
263
|
-
const response = await records.create(customObjectApiName, body);
|
|
264
|
-
return requireSingleRow(customObjectApiName, 'create', response.data);
|
|
265
|
-
},
|
|
266
|
-
retrieve(customObjectApiName, recordId) {
|
|
267
|
-
return records.retrieve(customObjectApiName, recordId);
|
|
268
|
-
},
|
|
269
|
-
retrieveByExternalID(customObjectApiName, externalID) {
|
|
270
|
-
return records.retrieveByExternalID(customObjectApiName, externalID);
|
|
271
|
-
},
|
|
272
|
-
async update(customObjectApiName, recordId, body) {
|
|
273
|
-
const response = await records.update(customObjectApiName, recordId, body);
|
|
274
|
-
return requireSingleRow(customObjectApiName, 'update', response.data);
|
|
275
|
-
},
|
|
276
|
-
delete(customObjectApiName, recordId) {
|
|
277
|
-
return records.delete(customObjectApiName, recordId);
|
|
278
|
-
},
|
|
279
|
-
async query(customObjectApiName, params) {
|
|
280
|
-
const response = await records.query(customObjectApiName, params);
|
|
281
|
-
return {
|
|
282
|
-
cursor: response.cursor ?? null,
|
|
283
|
-
results: response.results ?? [],
|
|
284
|
-
};
|
|
285
|
-
},
|
|
286
|
-
async bulkCreate(customObjectApiName, request) {
|
|
287
|
-
const response = await records.bulkCreate(customObjectApiName, {
|
|
288
|
-
...(request.allOrNothing != null ? { all_or_nothing: request.allOrNothing } : {}),
|
|
289
|
-
rows_to_write: [...request.rowsToWrite],
|
|
290
|
-
});
|
|
291
|
-
return response.data ?? [];
|
|
292
|
-
},
|
|
293
|
-
async bulkUpdate(customObjectApiName, request) {
|
|
294
|
-
const response = await records.bulkUpdate(customObjectApiName, {
|
|
295
|
-
...(request.allOrNothing != null ? { all_or_nothing: request.allOrNothing } : {}),
|
|
296
|
-
rows_to_update: [...request.rowsToUpdate],
|
|
297
|
-
});
|
|
298
|
-
return response.data ?? [];
|
|
299
|
-
},
|
|
300
|
-
bulkDelete(customObjectApiName, request) {
|
|
301
|
-
return records.bulkDelete(customObjectApiName, {
|
|
302
|
-
...(request.allOrNothing != null ? { all_or_nothing: request.allOrNothing } : {}),
|
|
303
|
-
rows_to_delete: [...request.rowsToDelete],
|
|
304
|
-
});
|
|
305
|
-
},
|
|
306
|
-
};
|
|
307
|
-
}
|
|
308
|
-
/**
|
|
309
|
-
* In-memory adapter useful for unit tests and local flows that should not depend
|
|
310
|
-
* on a real SDK transport.
|
|
311
|
-
*/
|
|
312
|
-
class InMemoryCustomObjectRecordAdapter {
|
|
313
|
-
/** Builds a new in-memory adapter. */
|
|
314
|
-
constructor(options = {}) {
|
|
315
|
-
this.sequence = 0;
|
|
316
|
-
this.rowsByObjectApiName = new Map(Object.entries(options.seedRowsByObjectApiName ?? {}).map(([customObjectApiName, rows]) => [
|
|
317
|
-
customObjectApiName,
|
|
318
|
-
new Map(rows.map((row) => [row.id, { ...row }])),
|
|
319
|
-
]));
|
|
320
|
-
this.now = options.now ?? (() => new Date().toISOString());
|
|
321
|
-
this.nextID =
|
|
322
|
-
options.nextID ??
|
|
323
|
-
((customObjectApiName) => {
|
|
324
|
-
this.sequence += 1;
|
|
325
|
-
return `${customObjectApiName.replace(/__c$/, '')}_row_${this.sequence}`;
|
|
326
|
-
});
|
|
327
|
-
this.queryEvaluator = options.queryEvaluator;
|
|
328
|
-
}
|
|
329
|
-
rowMap(customObjectApiName) {
|
|
330
|
-
const existing = this.rowsByObjectApiName.get(customObjectApiName);
|
|
331
|
-
if (existing != null)
|
|
332
|
-
return existing;
|
|
333
|
-
const created = new Map();
|
|
334
|
-
this.rowsByObjectApiName.set(customObjectApiName, created);
|
|
335
|
-
return created;
|
|
336
|
-
}
|
|
337
|
-
requiredRow(customObjectApiName, recordId) {
|
|
338
|
-
const row = this.rowMap(customObjectApiName).get(recordId);
|
|
339
|
-
if (row != null)
|
|
340
|
-
return row;
|
|
341
|
-
throw new Error(`Record ${recordId} was not found in ${customObjectApiName}.`);
|
|
342
|
-
}
|
|
343
|
-
paginate(rows, params) {
|
|
344
|
-
const startIndex = params.cursor == null ? 0 : Number(params.cursor);
|
|
345
|
-
const safeStartIndex = Number.isFinite(startIndex) && startIndex >= 0 ? startIndex : 0;
|
|
346
|
-
const endIndex = params.limit == null ? rows.length : safeStartIndex + params.limit;
|
|
347
|
-
const page = rows.slice(safeStartIndex, endIndex);
|
|
348
|
-
const cursor = endIndex < rows.length ? String(endIndex) : null;
|
|
349
|
-
return { cursor, results: page };
|
|
350
|
-
}
|
|
351
|
-
async create(customObjectApiName, body) {
|
|
352
|
-
const id = this.nextID(customObjectApiName);
|
|
353
|
-
const timestamp = this.now();
|
|
354
|
-
const row = {
|
|
355
|
-
id,
|
|
356
|
-
name: typeof body['name'] === 'string' ? body['name'] : id,
|
|
357
|
-
created_at: timestamp,
|
|
358
|
-
updated_at: timestamp,
|
|
359
|
-
...body,
|
|
360
|
-
};
|
|
361
|
-
this.rowMap(customObjectApiName).set(id, row);
|
|
362
|
-
return { ...row };
|
|
363
|
-
}
|
|
364
|
-
async retrieve(customObjectApiName, recordId) {
|
|
365
|
-
return { ...this.requiredRow(customObjectApiName, recordId) };
|
|
366
|
-
}
|
|
367
|
-
async retrieveByExternalID(customObjectApiName, externalID) {
|
|
368
|
-
const row = [...this.rowMap(customObjectApiName).values()].find((candidate) => candidate.external_id === externalID);
|
|
369
|
-
if (row != null)
|
|
370
|
-
return { ...row };
|
|
371
|
-
throw new Error(`No record with external_id ${externalID} exists in ${customObjectApiName}.`);
|
|
372
|
-
}
|
|
373
|
-
async update(customObjectApiName, recordId, body) {
|
|
374
|
-
const previous = this.requiredRow(customObjectApiName, recordId);
|
|
375
|
-
const next = {
|
|
376
|
-
...previous,
|
|
377
|
-
...body,
|
|
378
|
-
updated_at: this.now(),
|
|
379
|
-
name: typeof body['name'] === 'string' ? body['name'] : previous.name,
|
|
380
|
-
};
|
|
381
|
-
this.rowMap(customObjectApiName).set(recordId, next);
|
|
382
|
-
return { ...next };
|
|
383
|
-
}
|
|
384
|
-
async delete(customObjectApiName, recordId) {
|
|
385
|
-
const deleted = this.rowMap(customObjectApiName).delete(recordId);
|
|
386
|
-
if (!deleted)
|
|
387
|
-
throw new Error(`Record ${recordId} was not found in ${customObjectApiName}.`);
|
|
388
|
-
}
|
|
389
|
-
async query(customObjectApiName, params) {
|
|
390
|
-
const rows = [...this.rowMap(customObjectApiName).values()];
|
|
391
|
-
const filtered = params.query == null || params.query.trim().length === 0 ? rows
|
|
392
|
-
: this.queryEvaluator == null ?
|
|
393
|
-
(() => {
|
|
394
|
-
throw new Error(`In-memory adapter for ${customObjectApiName} does not support raw query strings without a queryEvaluator.`);
|
|
395
|
-
})()
|
|
396
|
-
: rows.filter((row) => this.queryEvaluator({ customObjectApiName, query: params.query, row }));
|
|
397
|
-
return this.paginate(filtered, params);
|
|
398
|
-
}
|
|
399
|
-
async bulkCreate(customObjectApiName, request) {
|
|
400
|
-
const created = [];
|
|
401
|
-
for (const row of request.rowsToWrite) {
|
|
402
|
-
created.push(await this.create(customObjectApiName, { ...row }));
|
|
403
|
-
}
|
|
404
|
-
return created;
|
|
405
|
-
}
|
|
406
|
-
async bulkUpdate(customObjectApiName, request) {
|
|
407
|
-
const updated = [];
|
|
408
|
-
for (const row of request.rowsToUpdate) {
|
|
409
|
-
if (typeof row['id'] !== 'string') {
|
|
410
|
-
throw new Error(`Bulk update for ${customObjectApiName} requires each row to include an id.`);
|
|
411
|
-
}
|
|
412
|
-
const { id, ...patch } = row;
|
|
413
|
-
updated.push(await this.update(customObjectApiName, row['id'], patch));
|
|
414
|
-
void id;
|
|
415
|
-
}
|
|
416
|
-
return updated;
|
|
417
|
-
}
|
|
418
|
-
async bulkDelete(customObjectApiName, request) {
|
|
419
|
-
for (const recordId of request.rowsToDelete) {
|
|
420
|
-
await this.delete(customObjectApiName, recordId);
|
|
421
|
-
}
|
|
422
|
-
}
|
|
423
|
-
}
|
|
424
|
-
exports.InMemoryCustomObjectRecordAdapter = InMemoryCustomObjectRecordAdapter;
|
|
425
|
-
/**
|
|
426
|
-
* Definition-bound CRUD manager returned by {@link CustomObjectManager.forObject}.
|
|
427
|
-
*
|
|
428
|
-
* @typeParam TDefinition - Object definition whose logical field names and value
|
|
429
|
-
* types should be enforced.
|
|
430
|
-
*/
|
|
431
|
-
class TypedCustomObjectRecordManager {
|
|
432
|
-
/**
|
|
433
|
-
* Creates a bound typed manager for one object definition.
|
|
434
|
-
*
|
|
435
|
-
* @param definition - Typed object definition to bind to the manager.
|
|
436
|
-
* @param adapter - Transport adapter used for all record operations.
|
|
437
|
-
*/
|
|
438
|
-
constructor(definition, adapter) {
|
|
439
|
-
this.definition = definition;
|
|
440
|
-
this.adapter = adapter;
|
|
441
|
-
}
|
|
442
|
-
/**
|
|
443
|
-
* Creates one typed record after local schema validation.
|
|
444
|
-
*
|
|
445
|
-
* @param input - Typed logical create payload.
|
|
446
|
-
* @returns Created typed record.
|
|
447
|
-
*/
|
|
448
|
-
async create(input) {
|
|
449
|
-
assertValidCreatePayload(this.definition, input);
|
|
450
|
-
const row = await this.adapter.create(this.definition.apiName, serializeRecordInput(this.definition, input));
|
|
451
|
-
return deserializeRecord(this.definition, row);
|
|
452
|
-
}
|
|
453
|
-
/**
|
|
454
|
-
* Creates many typed records after validating the full batch locally.
|
|
455
|
-
*
|
|
456
|
-
* @param rows - Typed logical create payloads.
|
|
457
|
-
* @param options - Batch-write options forwarded to the adapter.
|
|
458
|
-
* @returns Created typed records in backend response order.
|
|
459
|
-
*/
|
|
460
|
-
async createMany(rows, options = {}) {
|
|
461
|
-
assertValidCreateBatch(this.definition, rows);
|
|
462
|
-
const created = await this.adapter.bulkCreate(this.definition.apiName, {
|
|
463
|
-
...(options.allOrNothing != null ? { allOrNothing: options.allOrNothing } : {}),
|
|
464
|
-
rowsToWrite: rows.map((row) => serializeRecordInput(this.definition, row)),
|
|
465
|
-
});
|
|
466
|
-
return created.map((row) => deserializeRecord(this.definition, row));
|
|
467
|
-
}
|
|
468
|
-
/**
|
|
469
|
-
* Retrieves one typed record by id.
|
|
470
|
-
*
|
|
471
|
-
* @param recordId - Backend record id to fetch.
|
|
472
|
-
* @returns Typed record for the requested id.
|
|
473
|
-
*/
|
|
474
|
-
async get(recordId) {
|
|
475
|
-
const row = await this.adapter.retrieve(this.definition.apiName, recordId);
|
|
476
|
-
return deserializeRecord(this.definition, row);
|
|
477
|
-
}
|
|
478
|
-
/**
|
|
479
|
-
* Retrieves one typed record by external id.
|
|
480
|
-
*
|
|
481
|
-
* @param externalID - External id to look up.
|
|
482
|
-
* @returns Typed record for the requested external id.
|
|
483
|
-
*/
|
|
484
|
-
async getByExternalID(externalID) {
|
|
485
|
-
const row = await this.adapter.retrieveByExternalID(this.definition.apiName, externalID);
|
|
486
|
-
return deserializeRecord(this.definition, row);
|
|
487
|
-
}
|
|
488
|
-
/**
|
|
489
|
-
* Updates one typed record after local schema validation.
|
|
490
|
-
*
|
|
491
|
-
* @param recordId - Backend record id to update.
|
|
492
|
-
* @param patch - Typed logical update payload.
|
|
493
|
-
* @returns Updated typed record.
|
|
494
|
-
*/
|
|
495
|
-
async update(recordId, patch) {
|
|
496
|
-
assertValidUpdatePayload(this.definition, patch);
|
|
497
|
-
const row = await this.adapter.update(this.definition.apiName, recordId, serializeRecordInput(this.definition, patch));
|
|
498
|
-
return deserializeRecord(this.definition, row);
|
|
499
|
-
}
|
|
500
|
-
/**
|
|
501
|
-
* Updates many typed records after validating the full batch locally.
|
|
502
|
-
*
|
|
503
|
-
* @param rows - Typed update payloads, each including a backend record id.
|
|
504
|
-
* @param options - Batch-write options forwarded to the adapter.
|
|
505
|
-
* @returns Updated typed records in backend response order.
|
|
506
|
-
*/
|
|
507
|
-
async updateMany(rows, options = {}) {
|
|
508
|
-
assertValidUpdateBatch(this.definition, rows);
|
|
509
|
-
const updated = await this.adapter.bulkUpdate(this.definition.apiName, {
|
|
510
|
-
...(options.allOrNothing != null ? { allOrNothing: options.allOrNothing } : {}),
|
|
511
|
-
rowsToUpdate: rows.map((row) => {
|
|
512
|
-
const { id, ...patch } = row;
|
|
513
|
-
return { id, ...serializeRecordInput(this.definition, patch) };
|
|
514
|
-
}),
|
|
515
|
-
});
|
|
516
|
-
return updated.map((row) => deserializeRecord(this.definition, row));
|
|
517
|
-
}
|
|
518
|
-
/**
|
|
519
|
-
* Deletes one record by id.
|
|
520
|
-
*
|
|
521
|
-
* @param recordId - Backend record id to delete.
|
|
522
|
-
*/
|
|
523
|
-
delete(recordId) {
|
|
524
|
-
return this.adapter.delete(this.definition.apiName, recordId);
|
|
525
|
-
}
|
|
526
|
-
/**
|
|
527
|
-
* Deletes many records by id.
|
|
528
|
-
*
|
|
529
|
-
* @param recordIDs - Backend record ids to delete.
|
|
530
|
-
* @param options - Batch-write options forwarded to the adapter.
|
|
531
|
-
*/
|
|
532
|
-
deleteMany(recordIDs, options = {}) {
|
|
533
|
-
return this.adapter.bulkDelete(this.definition.apiName, {
|
|
534
|
-
...(options.allOrNothing != null ? { allOrNothing: options.allOrNothing } : {}),
|
|
535
|
-
rowsToDelete: recordIDs,
|
|
536
|
-
});
|
|
537
|
-
}
|
|
538
|
-
/**
|
|
539
|
-
* Lists records using backend pagination without applying any query filter.
|
|
540
|
-
*
|
|
541
|
-
* @param options - Pagination options for the backend list operation.
|
|
542
|
-
* @returns Typed record page.
|
|
543
|
-
*/
|
|
544
|
-
async list(options = {}) {
|
|
545
|
-
const page = await this.adapter.query(this.definition.apiName, options);
|
|
546
|
-
return {
|
|
547
|
-
cursor: page.cursor,
|
|
548
|
-
results: page.results.map((row) => deserializeRecord(this.definition, row)),
|
|
549
|
-
};
|
|
550
|
-
}
|
|
551
|
-
/**
|
|
552
|
-
* Queries records with an optional raw RQL filter string.
|
|
553
|
-
*
|
|
554
|
-
* @param options - Query and pagination options for the backend query operation.
|
|
555
|
-
* @returns Typed record page.
|
|
556
|
-
*/
|
|
557
|
-
async query(options = {}) {
|
|
558
|
-
const page = await this.adapter.query(this.definition.apiName, options);
|
|
559
|
-
return {
|
|
560
|
-
cursor: page.cursor,
|
|
561
|
-
results: page.results.map((row) => deserializeRecord(this.definition, row)),
|
|
562
|
-
};
|
|
563
|
-
}
|
|
564
|
-
}
|
|
565
|
-
exports.TypedCustomObjectRecordManager = TypedCustomObjectRecordManager;
|
|
566
|
-
/**
|
|
567
|
-
* Root manager that binds typed custom-object definitions to a transport adapter.
|
|
568
|
-
*
|
|
569
|
-
* Callers can pass either a records resource or a test adapter. If neither is
|
|
570
|
-
* provided, the manager defaults to an in-memory adapter so unit tests can use
|
|
571
|
-
* the same high-level API without bootstrapping a backend client.
|
|
572
|
-
*/
|
|
573
|
-
class CustomObjectManager {
|
|
574
|
-
/**
|
|
575
|
-
* Creates a new custom-object manager.
|
|
576
|
-
*
|
|
577
|
-
* @param options - Optional records resource or adapter implementation.
|
|
578
|
-
*/
|
|
579
|
-
constructor(options = {}) {
|
|
580
|
-
if (options.records != null && options.adapter != null) {
|
|
581
|
-
throw new Error('Pass either records or adapter to CustomObjectManager, not both.');
|
|
582
|
-
}
|
|
583
|
-
this.adapter =
|
|
584
|
-
options.adapter ??
|
|
585
|
-
(options.records != null ?
|
|
586
|
-
createCustomObjectRecordAdapter(options.records)
|
|
587
|
-
: new InMemoryCustomObjectRecordAdapter());
|
|
588
|
-
}
|
|
589
|
-
/**
|
|
590
|
-
* Builds a manager from a records resource.
|
|
591
|
-
*
|
|
592
|
-
* @param records - Low-level records resource to wrap.
|
|
593
|
-
* @returns Custom-object manager backed by that records resource.
|
|
594
|
-
*/
|
|
595
|
-
static fromRecords(records) {
|
|
596
|
-
return new CustomObjectManager({ records });
|
|
597
|
-
}
|
|
598
|
-
/**
|
|
599
|
-
* Builds a manager from a real SDK client.
|
|
600
|
-
*
|
|
601
|
-
* @param sdk - SDK-shaped client exposing `customObjects.records`.
|
|
602
|
-
* @returns Custom-object manager backed by the SDK records resource.
|
|
603
|
-
*/
|
|
604
|
-
static fromSDK(sdk) {
|
|
605
|
-
return new CustomObjectManager({ records: sdk.customObjects.records });
|
|
606
|
-
}
|
|
607
|
-
/**
|
|
608
|
-
* Builds a manager backed by an in-memory adapter.
|
|
609
|
-
*
|
|
610
|
-
* @param options - In-memory adapter options for seed data and deterministic behavior.
|
|
611
|
-
* @returns Custom-object manager backed by an in-memory adapter.
|
|
612
|
-
*/
|
|
613
|
-
static inMemory(options = {}) {
|
|
614
|
-
return new CustomObjectManager({ adapter: new InMemoryCustomObjectRecordAdapter(options) });
|
|
615
|
-
}
|
|
616
|
-
/** Returns the low-level adapter used by this manager. */
|
|
617
|
-
getAdapter() {
|
|
618
|
-
return this.adapter;
|
|
619
|
-
}
|
|
620
|
-
/**
|
|
621
|
-
* Returns a typed record manager bound to one object definition.
|
|
622
|
-
*
|
|
623
|
-
* @param definition - Typed object definition to bind.
|
|
624
|
-
* @returns Definition-bound typed record manager.
|
|
625
|
-
* @typeParam TDefinition - Object definition bound to the manager.
|
|
626
|
-
*/
|
|
627
|
-
forObject(definition) {
|
|
628
|
-
return new TypedCustomObjectRecordManager(definition, this.adapter);
|
|
629
|
-
}
|
|
630
|
-
/**
|
|
631
|
-
* Short ergonomic alias for {@link forObject}.
|
|
632
|
-
*
|
|
633
|
-
* @param definition - Typed object definition to bind.
|
|
634
|
-
* @returns Definition-bound typed record manager.
|
|
635
|
-
* @typeParam TDefinition - Object definition bound to the manager.
|
|
636
|
-
*/
|
|
637
|
-
for(definition) {
|
|
638
|
-
return this.forObject(definition);
|
|
639
|
-
}
|
|
640
|
-
}
|
|
641
|
-
exports.CustomObjectManager = CustomObjectManager;
|
|
642
|
-
/** Short alias for teams that prefer concise manager names. */
|
|
643
|
-
class COManager extends CustomObjectManager {
|
|
644
|
-
}
|
|
645
|
-
exports.COManager = COManager;
|
|
646
|
-
//# sourceMappingURL=manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/core/platform/custom-objects/manager.ts"],"names":[],"mappings":"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"}
|