@memberjunction/core-actions 6.2.0-edge.0 → 6.2.0-edge.1
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/dist/config.d.ts +6 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +16 -4
- package/dist/config.js.map +1 -1
- package/dist/custom/ai/base-find-actions.action.js +6 -6
- package/dist/custom/ai/base-find-agents.action.js +6 -6
- package/dist/custom/ai/find-candidate-agents.action.js +2 -2
- package/dist/custom/ai/semantic-entity-search.helper.d.ts +6 -0
- package/dist/custom/ai/semantic-entity-search.helper.d.ts.map +1 -1
- package/dist/custom/ai/semantic-entity-search.helper.js +16 -4
- package/dist/custom/ai/semantic-entity-search.helper.js.map +1 -1
- package/dist/custom/data/search-query-catalog.action.js +2 -2
- package/dist/custom/integration/api-rate-limiter.action.d.ts +4 -0
- package/dist/custom/integration/api-rate-limiter.action.d.ts.map +1 -1
- package/dist/custom/integration/api-rate-limiter.action.js +10 -2
- package/dist/custom/integration/api-rate-limiter.action.js.map +1 -1
- package/dist/custom/integration/gamma-generate-presentation.action.js +2 -2
- package/dist/custom/integration/integration-action-executor.d.ts +22 -22
- package/dist/custom/integration/integration-action-executor.js +83 -83
- package/dist/custom/interactive-forms/_shared.d.ts +69 -0
- package/dist/custom/interactive-forms/_shared.d.ts.map +1 -1
- package/dist/custom/interactive-forms/_shared.js +118 -38
- package/dist/custom/interactive-forms/_shared.js.map +1 -1
- package/dist/custom/interactive-forms/activate-interactive-form-version.action.js +25 -25
- package/dist/custom/interactive-forms/create-interactive-form.action.js +22 -22
- package/dist/custom/interactive-forms/modify-interactive-form.action.js +35 -35
- package/dist/custom/interactive-forms/revert-interactive-form.action.js +32 -32
- package/dist/custom/lists/_action-helpers.d.ts +10 -0
- package/dist/custom/lists/_action-helpers.d.ts.map +1 -1
- package/dist/custom/lists/_action-helpers.js +26 -6
- package/dist/custom/lists/_action-helpers.js.map +1 -1
- package/dist/custom/lists/add-view-results-to-list.action.js +8 -8
- package/dist/custom/lists/bulk-update-list-item-status.action.js +8 -8
- package/dist/custom/lists/compose-lists.action.js +14 -14
- package/dist/custom/lists/invite-to-list.action.js +10 -10
- package/dist/custom/lists/materialize-list-from-view.action.js +13 -13
- package/dist/custom/lists/move-list-members.action.js +12 -12
- package/dist/custom/lists/refresh-list-from-source.action.js +8 -8
- package/dist/custom/lists/resolve-audience.action.js +7 -7
- package/dist/custom/lists/revoke-list-invitation.action.js +3 -3
- package/dist/custom/lists/share-list.action.js +8 -8
- package/dist/custom/lists/unshare-list.action.js +3 -3
- package/dist/custom/utilities/address-services.action.js +2 -2
- package/dist/custom/utilities/artifact-builder-service.d.ts +16 -16
- package/dist/custom/utilities/artifact-builder-service.js +39 -39
- package/dist/custom/utilities/artifact-builder-service.js.map +1 -1
- package/dist/custom/utilities/docx-renderer.d.ts +17 -11
- package/dist/custom/utilities/docx-renderer.d.ts.map +1 -1
- package/dist/custom/utilities/docx-renderer.js +60 -48
- package/dist/custom/utilities/docx-renderer.js.map +1 -1
- package/dist/custom/utilities/json-param-helper.d.ts +6 -0
- package/dist/custom/utilities/json-param-helper.d.ts.map +1 -1
- package/dist/custom/utilities/json-param-helper.js +16 -4
- package/dist/custom/utilities/json-param-helper.js.map +1 -1
- package/dist/custom/utilities/pdf-renderer.d.ts +13 -7
- package/dist/custom/utilities/pdf-renderer.d.ts.map +1 -1
- package/dist/custom/utilities/pdf-renderer.js +27 -15
- package/dist/custom/utilities/pdf-renderer.js.map +1 -1
- package/dist/custom/utilities/xlsx-renderer.d.ts +19 -11
- package/dist/custom/utilities/xlsx-renderer.d.ts.map +1 -1
- package/dist/custom/utilities/xlsx-renderer.js +55 -39
- package/dist/custom/utilities/xlsx-renderer.js.map +1 -1
- package/dist/custom/visualization/create-svg-chart.action.js +23 -23
- package/dist/custom/visualization/create-svg-diagram.action.js +10 -10
- package/dist/custom/visualization/create-svg-infographic.action.js +4 -4
- package/dist/custom/visualization/create-svg-network.action.js +12 -12
- package/dist/custom/visualization/create-svg-sketch-diagram.action.js +10 -10
- package/dist/custom/visualization/create-svg-word-cloud.action.js +11 -11
- package/dist/custom/visualization/shared/svg-theming.d.ts +17 -0
- package/dist/custom/visualization/shared/svg-theming.d.ts.map +1 -1
- package/dist/custom/visualization/shared/svg-theming.js +34 -10
- package/dist/custom/visualization/shared/svg-theming.js.map +1 -1
- package/dist/custom/visualization/shared/svg-utils.d.ts +39 -0
- package/dist/custom/visualization/shared/svg-utils.d.ts.map +1 -1
- package/dist/custom/visualization/shared/svg-utils.js +81 -17
- package/dist/custom/visualization/shared/svg-utils.js.map +1 -1
- package/dist/custom/web/duckduckgo-rate-limiter.d.ts +17 -1
- package/dist/custom/web/duckduckgo-rate-limiter.d.ts.map +1 -1
- package/dist/custom/web/duckduckgo-rate-limiter.js +26 -6
- package/dist/custom/web/duckduckgo-rate-limiter.js.map +1 -1
- package/dist/custom/web/google-custom-search.action.js +2 -2
- package/dist/custom/web/rss-feed-parsing.d.ts +19 -0
- package/dist/custom/web/rss-feed-parsing.d.ts.map +1 -1
- package/dist/custom/web/rss-feed-parsing.js +45 -13
- package/dist/custom/web/rss-feed-parsing.js.map +1 -1
- package/dist/custom/web/rss-feed-read.action.js +5 -5
- package/dist/custom/web/tavily-search.action.js +2 -2
- package/package.json +40 -40
|
@@ -29,13 +29,13 @@ let IntegrationActionExecutor = class IntegrationActionExecutor extends BaseActi
|
|
|
29
29
|
async InternalRunAction(params) {
|
|
30
30
|
try {
|
|
31
31
|
// 1. Parse config
|
|
32
|
-
const config = this.
|
|
32
|
+
const config = this.parseConfig(params);
|
|
33
33
|
// 2. Resolve connector
|
|
34
|
-
const connector = await this.
|
|
34
|
+
const connector = await this.resolveConnector(config.IntegrationName, params);
|
|
35
35
|
// 3. Resolve CompanyIntegration
|
|
36
|
-
const companyIntegration = await this.
|
|
36
|
+
const companyIntegration = await this.resolveCompanyIntegration(config.IntegrationName, params);
|
|
37
37
|
// 4. Dispatch to verb handler
|
|
38
|
-
const result = await this.
|
|
38
|
+
const result = await this.dispatchVerb(config, connector, companyIntegration, params);
|
|
39
39
|
return result;
|
|
40
40
|
}
|
|
41
41
|
catch (error) {
|
|
@@ -60,15 +60,15 @@ let IntegrationActionExecutor = class IntegrationActionExecutor extends BaseActi
|
|
|
60
60
|
* three values are read (case-insensitive) from the ActionParams. This lets a
|
|
61
61
|
* single generic action do CRUD on ANY object without pre-generation.
|
|
62
62
|
*/
|
|
63
|
-
|
|
63
|
+
parseConfig(params) {
|
|
64
64
|
const configJson = params.Action?.Config_;
|
|
65
65
|
if (configJson && configJson.trim().length > 0) {
|
|
66
|
-
return this.
|
|
66
|
+
return this.parseConfigFromJson(configJson);
|
|
67
67
|
}
|
|
68
|
-
return this.
|
|
68
|
+
return this.parseConfigFromParams(params);
|
|
69
69
|
}
|
|
70
70
|
/** Parse + validate the JSON stored in Action.Config_ (pre-generated actions). */
|
|
71
|
-
|
|
71
|
+
parseConfigFromJson(configJson) {
|
|
72
72
|
const parsed = JSON.parse(configJson);
|
|
73
73
|
const integrationName = parsed['IntegrationName'];
|
|
74
74
|
const objectName = parsed['ObjectName'];
|
|
@@ -85,10 +85,10 @@ let IntegrationActionExecutor = class IntegrationActionExecutor extends BaseActi
|
|
|
85
85
|
* still references Action.Config_ so existing pre-generated callers get a
|
|
86
86
|
* familiar diagnostic when nothing at all was provided.
|
|
87
87
|
*/
|
|
88
|
-
|
|
89
|
-
const integrationName = this.
|
|
90
|
-
const objectName = this.
|
|
91
|
-
const verb = this.
|
|
88
|
+
parseConfigFromParams(params) {
|
|
89
|
+
const integrationName = this.getParamValue(params.Params, 'IntegrationName');
|
|
90
|
+
const objectName = this.getParamValue(params.Params, 'ObjectName');
|
|
91
|
+
const verb = this.getParamValue(params.Params, 'Verb');
|
|
92
92
|
if (!integrationName || !objectName || !verb) {
|
|
93
93
|
throw new Error('Action.Config_ is required for IntegrationActionExecutor, or pass ' +
|
|
94
94
|
'IntegrationName, ObjectName and Verb as ActionParams for generic invocation');
|
|
@@ -96,11 +96,11 @@ let IntegrationActionExecutor = class IntegrationActionExecutor extends BaseActi
|
|
|
96
96
|
return { IntegrationName: integrationName, ObjectName: objectName, Verb: verb };
|
|
97
97
|
}
|
|
98
98
|
// ─── Connector Resolution ────────────────────────────────────────
|
|
99
|
-
async
|
|
100
|
-
const integration = await this.
|
|
99
|
+
async resolveConnector(integrationName, params) {
|
|
100
|
+
const integration = await this.loadIntegrationEntity(integrationName, params);
|
|
101
101
|
return ConnectorFactory.Resolve(integration);
|
|
102
102
|
}
|
|
103
|
-
async
|
|
103
|
+
async loadIntegrationEntity(integrationName, params) {
|
|
104
104
|
const rv = new RunView();
|
|
105
105
|
const result = await rv.RunView({
|
|
106
106
|
EntityName: 'MJ: Integrations',
|
|
@@ -114,11 +114,11 @@ let IntegrationActionExecutor = class IntegrationActionExecutor extends BaseActi
|
|
|
114
114
|
return result.Results[0];
|
|
115
115
|
}
|
|
116
116
|
// ─── CompanyIntegration Resolution ───────────────────────────────
|
|
117
|
-
async
|
|
117
|
+
async resolveCompanyIntegration(integrationName, params) {
|
|
118
118
|
// Check if CompanyIntegrationID was passed as an ActionParam
|
|
119
|
-
const ciIdParam = this.
|
|
119
|
+
const ciIdParam = this.getParamValue(params.Params, 'CompanyIntegrationID');
|
|
120
120
|
if (ciIdParam) {
|
|
121
|
-
return this.
|
|
121
|
+
return this.loadCompanyIntegrationByID(ciIdParam, params);
|
|
122
122
|
}
|
|
123
123
|
// Otherwise look up the first active CompanyIntegration for this integration name
|
|
124
124
|
const rv = new RunView();
|
|
@@ -134,7 +134,7 @@ let IntegrationActionExecutor = class IntegrationActionExecutor extends BaseActi
|
|
|
134
134
|
}
|
|
135
135
|
return result.Results[0];
|
|
136
136
|
}
|
|
137
|
-
async
|
|
137
|
+
async loadCompanyIntegrationByID(id, params) {
|
|
138
138
|
const md = params.Provider ?? new Metadata();
|
|
139
139
|
const entity = await md.GetEntityObject('MJ: Company Integrations', params.ContextUser);
|
|
140
140
|
const loaded = await entity.Load(id);
|
|
@@ -144,29 +144,29 @@ let IntegrationActionExecutor = class IntegrationActionExecutor extends BaseActi
|
|
|
144
144
|
return entity;
|
|
145
145
|
}
|
|
146
146
|
// ─── Verb Dispatch ───────────────────────────────────────────────
|
|
147
|
-
async
|
|
147
|
+
async dispatchVerb(config, connector, companyIntegration, params) {
|
|
148
148
|
switch (config.Verb) {
|
|
149
149
|
case 'Get':
|
|
150
|
-
return this.
|
|
150
|
+
return this.handleGet(config, connector, companyIntegration, params);
|
|
151
151
|
case 'Create':
|
|
152
|
-
return this.
|
|
152
|
+
return this.handleCreate(config, connector, companyIntegration, params);
|
|
153
153
|
case 'Update':
|
|
154
|
-
return this.
|
|
154
|
+
return this.handleUpdate(config, connector, companyIntegration, params);
|
|
155
155
|
case 'Upsert':
|
|
156
|
-
return this.
|
|
156
|
+
return this.handleUpsert(config, connector, companyIntegration, params);
|
|
157
157
|
case 'Delete':
|
|
158
|
-
return this.
|
|
158
|
+
return this.handleDelete(config, connector, companyIntegration, params);
|
|
159
159
|
case 'Search':
|
|
160
|
-
return this.
|
|
160
|
+
return this.handleSearch(config, connector, companyIntegration, params);
|
|
161
161
|
case 'List':
|
|
162
|
-
return this.
|
|
162
|
+
return this.handleList(config, connector, companyIntegration, params);
|
|
163
163
|
default:
|
|
164
164
|
throw new Error(`Unsupported verb: ${config.Verb}`);
|
|
165
165
|
}
|
|
166
166
|
}
|
|
167
167
|
// ─── Get ─────────────────────────────────────────────────────────
|
|
168
|
-
async
|
|
169
|
-
const externalID = this.
|
|
168
|
+
async handleGet(config, connector, companyIntegration, params) {
|
|
169
|
+
const externalID = this.getRequiredParam(params.Params, 'ExternalID');
|
|
170
170
|
const ctx = {
|
|
171
171
|
CompanyIntegration: companyIntegration,
|
|
172
172
|
ObjectName: config.ObjectName,
|
|
@@ -175,18 +175,18 @@ let IntegrationActionExecutor = class IntegrationActionExecutor extends BaseActi
|
|
|
175
175
|
};
|
|
176
176
|
const record = await connector.GetRecord(ctx);
|
|
177
177
|
if (!record) {
|
|
178
|
-
return this.
|
|
178
|
+
return this.buildResult(false, 'NOT_FOUND', `Record ${externalID} not found`, params.Params);
|
|
179
179
|
}
|
|
180
|
-
this.
|
|
181
|
-
this.
|
|
182
|
-
return this.
|
|
180
|
+
this.setOutputParam(params.Params, 'Record', record.Fields);
|
|
181
|
+
this.setOutputParam(params.Params, 'ExternalID', record.ExternalID);
|
|
182
|
+
return this.buildResult(true, 'SUCCESS', `Retrieved ${config.ObjectName} ${externalID}`, params.Params);
|
|
183
183
|
}
|
|
184
184
|
// ─── Create ──────────────────────────────────────────────────────
|
|
185
|
-
async
|
|
185
|
+
async handleCreate(config, connector, companyIntegration, params) {
|
|
186
186
|
if (!connector.SupportsCreate) {
|
|
187
|
-
return this.
|
|
187
|
+
return this.buildResult(false, 'NOT_SUPPORTED', `Create not supported for ${config.IntegrationName}`, params.Params);
|
|
188
188
|
}
|
|
189
|
-
const attributes = this.
|
|
189
|
+
const attributes = this.collectInputAttributes(params.Params);
|
|
190
190
|
const ctx = {
|
|
191
191
|
CompanyIntegration: companyIntegration,
|
|
192
192
|
ObjectName: config.ObjectName,
|
|
@@ -194,15 +194,15 @@ let IntegrationActionExecutor = class IntegrationActionExecutor extends BaseActi
|
|
|
194
194
|
Attributes: attributes,
|
|
195
195
|
};
|
|
196
196
|
const result = await connector.CreateRecord(ctx);
|
|
197
|
-
return this.
|
|
197
|
+
return this.cRUDResultToActionResult(result, 'Create', config.ObjectName, params.Params);
|
|
198
198
|
}
|
|
199
199
|
// ─── Update ──────────────────────────────────────────────────────
|
|
200
|
-
async
|
|
200
|
+
async handleUpdate(config, connector, companyIntegration, params) {
|
|
201
201
|
if (!connector.SupportsUpdate) {
|
|
202
|
-
return this.
|
|
202
|
+
return this.buildResult(false, 'NOT_SUPPORTED', `Update not supported for ${config.IntegrationName}`, params.Params);
|
|
203
203
|
}
|
|
204
|
-
const externalID = this.
|
|
205
|
-
const attributes = this.
|
|
204
|
+
const externalID = this.getRequiredParam(params.Params, 'ExternalID');
|
|
205
|
+
const attributes = this.collectInputAttributes(params.Params);
|
|
206
206
|
const ctx = {
|
|
207
207
|
CompanyIntegration: companyIntegration,
|
|
208
208
|
ObjectName: config.ObjectName,
|
|
@@ -211,15 +211,15 @@ let IntegrationActionExecutor = class IntegrationActionExecutor extends BaseActi
|
|
|
211
211
|
Attributes: attributes,
|
|
212
212
|
};
|
|
213
213
|
const result = await connector.UpdateRecord(ctx);
|
|
214
|
-
return this.
|
|
214
|
+
return this.cRUDResultToActionResult(result, 'Update', config.ObjectName, params.Params);
|
|
215
215
|
}
|
|
216
216
|
// ─── Upsert ──────────────────────────────────────────────────────
|
|
217
|
-
async
|
|
217
|
+
async handleUpsert(config, connector, companyIntegration, params) {
|
|
218
218
|
if (!connector.SupportsUpsert) {
|
|
219
|
-
return this.
|
|
219
|
+
return this.buildResult(false, 'NOT_SUPPORTED', `Upsert not supported for ${config.IntegrationName}`, params.Params);
|
|
220
220
|
}
|
|
221
|
-
const attributes = this.
|
|
222
|
-
const idProperty = this.
|
|
221
|
+
const attributes = this.collectInputAttributes(params.Params);
|
|
222
|
+
const idProperty = this.getParamValue(params.Params, 'IDProperty');
|
|
223
223
|
const ctx = {
|
|
224
224
|
CompanyIntegration: companyIntegration,
|
|
225
225
|
ObjectName: config.ObjectName,
|
|
@@ -228,14 +228,14 @@ let IntegrationActionExecutor = class IntegrationActionExecutor extends BaseActi
|
|
|
228
228
|
IDProperty: idProperty ?? undefined,
|
|
229
229
|
};
|
|
230
230
|
const result = await connector.Upsert(ctx);
|
|
231
|
-
return this.
|
|
231
|
+
return this.cRUDResultToActionResult(result, 'Upsert', config.ObjectName, params.Params);
|
|
232
232
|
}
|
|
233
233
|
// ─── Delete ──────────────────────────────────────────────────────
|
|
234
|
-
async
|
|
234
|
+
async handleDelete(config, connector, companyIntegration, params) {
|
|
235
235
|
if (!connector.SupportsDelete) {
|
|
236
|
-
return this.
|
|
236
|
+
return this.buildResult(false, 'NOT_SUPPORTED', `Delete not supported for ${config.IntegrationName}`, params.Params);
|
|
237
237
|
}
|
|
238
|
-
const externalID = this.
|
|
238
|
+
const externalID = this.getRequiredParam(params.Params, 'ExternalID');
|
|
239
239
|
const ctx = {
|
|
240
240
|
CompanyIntegration: companyIntegration,
|
|
241
241
|
ObjectName: config.ObjectName,
|
|
@@ -243,17 +243,17 @@ let IntegrationActionExecutor = class IntegrationActionExecutor extends BaseActi
|
|
|
243
243
|
ExternalID: externalID,
|
|
244
244
|
};
|
|
245
245
|
const result = await connector.DeleteRecord(ctx);
|
|
246
|
-
return this.
|
|
246
|
+
return this.cRUDResultToActionResult(result, 'Delete', config.ObjectName, params.Params);
|
|
247
247
|
}
|
|
248
248
|
// ─── Search ──────────────────────────────────────────────────────
|
|
249
|
-
async
|
|
249
|
+
async handleSearch(config, connector, companyIntegration, params) {
|
|
250
250
|
if (!connector.SupportsSearch) {
|
|
251
|
-
return this.
|
|
251
|
+
return this.buildResult(false, 'NOT_SUPPORTED', `Search not supported for ${config.IntegrationName}`, params.Params);
|
|
252
252
|
}
|
|
253
|
-
const filters = this.
|
|
254
|
-
const pageSize = this.
|
|
255
|
-
const page = this.
|
|
256
|
-
const sort = this.
|
|
253
|
+
const filters = this.collectInputAttributes(params.Params);
|
|
254
|
+
const pageSize = this.getOptionalNumericParam(params.Params, 'PageSize');
|
|
255
|
+
const page = this.getOptionalNumericParam(params.Params, 'Page');
|
|
256
|
+
const sort = this.getParamValue(params.Params, 'Sort');
|
|
257
257
|
const ctx = {
|
|
258
258
|
CompanyIntegration: companyIntegration,
|
|
259
259
|
ObjectName: config.ObjectName,
|
|
@@ -264,19 +264,19 @@ let IntegrationActionExecutor = class IntegrationActionExecutor extends BaseActi
|
|
|
264
264
|
Sort: sort ?? undefined,
|
|
265
265
|
};
|
|
266
266
|
const result = await connector.SearchRecords(ctx);
|
|
267
|
-
this.
|
|
268
|
-
this.
|
|
269
|
-
this.
|
|
270
|
-
return this.
|
|
267
|
+
this.setOutputParam(params.Params, 'Records', result.Records.map(r => r.Fields));
|
|
268
|
+
this.setOutputParam(params.Params, 'TotalCount', result.TotalCount);
|
|
269
|
+
this.setOutputParam(params.Params, 'HasMore', result.HasMore);
|
|
270
|
+
return this.buildResult(true, 'SUCCESS', `Found ${result.TotalCount} ${config.ObjectName} record(s)`, params.Params);
|
|
271
271
|
}
|
|
272
272
|
// ─── List ────────────────────────────────────────────────────────
|
|
273
|
-
async
|
|
273
|
+
async handleList(config, connector, companyIntegration, params) {
|
|
274
274
|
if (!connector.SupportsListing) {
|
|
275
|
-
return this.
|
|
275
|
+
return this.buildResult(false, 'NOT_SUPPORTED', `List not supported for ${config.IntegrationName}`, params.Params);
|
|
276
276
|
}
|
|
277
|
-
const pageSize = this.
|
|
278
|
-
const cursor = this.
|
|
279
|
-
const sort = this.
|
|
277
|
+
const pageSize = this.getOptionalNumericParam(params.Params, 'PageSize');
|
|
278
|
+
const cursor = this.getParamValue(params.Params, 'Cursor');
|
|
279
|
+
const sort = this.getParamValue(params.Params, 'Sort');
|
|
280
280
|
const ctx = {
|
|
281
281
|
CompanyIntegration: companyIntegration,
|
|
282
282
|
ObjectName: config.ObjectName,
|
|
@@ -286,33 +286,33 @@ let IntegrationActionExecutor = class IntegrationActionExecutor extends BaseActi
|
|
|
286
286
|
Sort: sort ?? undefined,
|
|
287
287
|
};
|
|
288
288
|
const result = await connector.ListRecords(ctx);
|
|
289
|
-
this.
|
|
290
|
-
this.
|
|
291
|
-
this.
|
|
289
|
+
this.setOutputParam(params.Params, 'Records', result.Records.map(r => r.Fields));
|
|
290
|
+
this.setOutputParam(params.Params, 'HasMore', result.HasMore);
|
|
291
|
+
this.setOutputParam(params.Params, 'NextCursor', result.NextCursor);
|
|
292
292
|
if (result.TotalCount != null) {
|
|
293
|
-
this.
|
|
293
|
+
this.setOutputParam(params.Params, 'TotalCount', result.TotalCount);
|
|
294
294
|
}
|
|
295
|
-
return this.
|
|
295
|
+
return this.buildResult(true, 'SUCCESS', `Listed ${result.Records.length} ${config.ObjectName} record(s)`, params.Params);
|
|
296
296
|
}
|
|
297
297
|
// ─── Parameter Helpers ───────────────────────────────────────────
|
|
298
298
|
/** Gets a parameter value by name (case-insensitive). Returns null if not found. */
|
|
299
|
-
|
|
299
|
+
getParamValue(actionParams, name) {
|
|
300
300
|
const param = actionParams.find(p => p.Name.trim().toLowerCase() === name.toLowerCase() && p.Type !== 'Output');
|
|
301
301
|
if (!param || param.Value == null)
|
|
302
302
|
return null;
|
|
303
303
|
return String(param.Value);
|
|
304
304
|
}
|
|
305
305
|
/** Gets a required parameter, throwing if not found. */
|
|
306
|
-
|
|
307
|
-
const value = this.
|
|
306
|
+
getRequiredParam(actionParams, name) {
|
|
307
|
+
const value = this.getParamValue(actionParams, name);
|
|
308
308
|
if (!value) {
|
|
309
309
|
throw new Error(`Required parameter "${name}" is missing`);
|
|
310
310
|
}
|
|
311
311
|
return value;
|
|
312
312
|
}
|
|
313
313
|
/** Gets an optional numeric parameter. */
|
|
314
|
-
|
|
315
|
-
const value = this.
|
|
314
|
+
getOptionalNumericParam(actionParams, name) {
|
|
315
|
+
const value = this.getParamValue(actionParams, name);
|
|
316
316
|
if (!value)
|
|
317
317
|
return undefined;
|
|
318
318
|
const parsed = Number(value);
|
|
@@ -322,7 +322,7 @@ let IntegrationActionExecutor = class IntegrationActionExecutor extends BaseActi
|
|
|
322
322
|
* Collects all Input parameters (excluding system params like ExternalID, CompanyIntegrationID,
|
|
323
323
|
* PageSize, Page, Cursor, Sort, IDProperty) into a key-value object suitable for CRUD Attributes.
|
|
324
324
|
*/
|
|
325
|
-
|
|
325
|
+
collectInputAttributes(actionParams) {
|
|
326
326
|
const systemParams = new Set([
|
|
327
327
|
'externalid', 'companyintegrationid', 'pagesize', 'page', 'cursor', 'sort', 'idproperty',
|
|
328
328
|
// Generic catch-all routing params — never treated as record attributes.
|
|
@@ -342,7 +342,7 @@ let IntegrationActionExecutor = class IntegrationActionExecutor extends BaseActi
|
|
|
342
342
|
return attributes;
|
|
343
343
|
}
|
|
344
344
|
/** Sets (or creates) an output parameter. */
|
|
345
|
-
|
|
345
|
+
setOutputParam(actionParams, name, value) {
|
|
346
346
|
const existing = actionParams.find(p => p.Name.trim().toLowerCase() === name.toLowerCase() && p.Type === 'Output');
|
|
347
347
|
if (existing) {
|
|
348
348
|
existing.Value = value;
|
|
@@ -352,7 +352,7 @@ let IntegrationActionExecutor = class IntegrationActionExecutor extends BaseActi
|
|
|
352
352
|
}
|
|
353
353
|
}
|
|
354
354
|
// ─── Result Builders ─────────────────────────────────────────────
|
|
355
|
-
|
|
355
|
+
buildResult(success, resultCode, message, actionParams) {
|
|
356
356
|
return {
|
|
357
357
|
Success: success,
|
|
358
358
|
ResultCode: resultCode,
|
|
@@ -360,14 +360,14 @@ let IntegrationActionExecutor = class IntegrationActionExecutor extends BaseActi
|
|
|
360
360
|
Params: actionParams,
|
|
361
361
|
};
|
|
362
362
|
}
|
|
363
|
-
|
|
363
|
+
cRUDResultToActionResult(result, operation, objectName, actionParams) {
|
|
364
364
|
if (result.Success) {
|
|
365
365
|
if (result.ExternalID) {
|
|
366
|
-
this.
|
|
366
|
+
this.setOutputParam(actionParams, 'ExternalID', result.ExternalID);
|
|
367
367
|
}
|
|
368
|
-
return this.
|
|
368
|
+
return this.buildResult(true, 'SUCCESS', `${operation} ${objectName} succeeded${result.ExternalID ? ` (ID: ${result.ExternalID})` : ''}`, actionParams);
|
|
369
369
|
}
|
|
370
|
-
return this.
|
|
370
|
+
return this.buildResult(false, `${operation.toUpperCase()}_FAILED`, result.ErrorMessage ?? `${operation} ${objectName} failed (HTTP ${result.StatusCode})`, actionParams);
|
|
371
371
|
}
|
|
372
372
|
};
|
|
373
373
|
IntegrationActionExecutor = __decorate([
|
|
@@ -8,13 +8,29 @@ import { ActionResultSimple, RunActionParams } from "@memberjunction/actions-bas
|
|
|
8
8
|
import { IMetadataProvider, UserInfo } from "@memberjunction/core";
|
|
9
9
|
import { MJComponentEntity, MJEntityFormOverrideEntity } from "@memberjunction/core-entities";
|
|
10
10
|
import type { ComponentSpec } from "@memberjunction/interactive-component-types";
|
|
11
|
+
export declare function GetParam(params: RunActionParams, name: string): unknown;
|
|
12
|
+
/** @deprecated Use {@link GetParam}. */
|
|
11
13
|
export declare function getParam(params: RunActionParams, name: string): unknown;
|
|
14
|
+
export declare function GetStringParam(params: RunActionParams, name: string): string | null;
|
|
15
|
+
/** @deprecated Use {@link GetStringParam}. */
|
|
12
16
|
export declare function getStringParam(params: RunActionParams, name: string): string | null;
|
|
17
|
+
export declare function GetNumberParam(params: RunActionParams, name: string): number | null;
|
|
18
|
+
/** @deprecated Use {@link GetNumberParam}. */
|
|
13
19
|
export declare function getNumberParam(params: RunActionParams, name: string): number | null;
|
|
20
|
+
export declare function AddOutput(params: RunActionParams, name: string, value: unknown): void;
|
|
21
|
+
/** @deprecated Use {@link AddOutput}. */
|
|
14
22
|
export declare function addOutput(params: RunActionParams, name: string, value: unknown): void;
|
|
23
|
+
export declare function Failure(resultCode: string, message: string): ActionResultSimple;
|
|
24
|
+
/** @deprecated Use {@link Failure}. */
|
|
15
25
|
export declare function failure(resultCode: string, message: string): ActionResultSimple;
|
|
26
|
+
export declare function Success(message: string): ActionResultSimple;
|
|
27
|
+
/** @deprecated Use {@link Success}. */
|
|
16
28
|
export declare function success(message: string): ActionResultSimple;
|
|
17
29
|
/** Parse a Spec param that may arrive as object or stringified JSON. */
|
|
30
|
+
export declare function ParseSpecParam(raw: unknown): ComponentSpec | {
|
|
31
|
+
error: string;
|
|
32
|
+
};
|
|
33
|
+
/** @deprecated Use {@link ParseSpecParam}. */
|
|
18
34
|
export declare function parseSpecParam(raw: unknown): ComponentSpec | {
|
|
19
35
|
error: string;
|
|
20
36
|
};
|
|
@@ -25,10 +41,16 @@ export declare function parseSpecParam(raw: unknown): ComponentSpec | {
|
|
|
25
41
|
* lint comments in the original create-interactive-form action for the
|
|
26
42
|
* rationale.
|
|
27
43
|
*/
|
|
44
|
+
export declare function LintFormSpec(spec: ComponentSpec, contextUser: UserInfo): Promise<ActionResultSimple | null>;
|
|
45
|
+
/** @deprecated Use {@link LintFormSpec}. */
|
|
28
46
|
export declare function lintFormSpec(spec: ComponentSpec, contextUser: UserInfo): Promise<ActionResultSimple | null>;
|
|
29
47
|
/** Load a Component entity object by primary key. */
|
|
48
|
+
export declare function LoadComponent(provider: IMetadataProvider, user: UserInfo, componentID: string): Promise<MJComponentEntity | null>;
|
|
49
|
+
/** @deprecated Use {@link LoadComponent}. */
|
|
30
50
|
export declare function loadComponent(provider: IMetadataProvider, user: UserInfo, componentID: string): Promise<MJComponentEntity | null>;
|
|
31
51
|
/** Load an Override entity object by primary key. */
|
|
52
|
+
export declare function LoadOverride(provider: IMetadataProvider, user: UserInfo, overrideID: string): Promise<MJEntityFormOverrideEntity | null>;
|
|
53
|
+
/** @deprecated Use {@link LoadOverride}. */
|
|
32
54
|
export declare function loadOverride(provider: IMetadataProvider, user: UserInfo, overrideID: string): Promise<MJEntityFormOverrideEntity | null>;
|
|
33
55
|
/**
|
|
34
56
|
* Defense-in-depth ownership check for the override-mutation actions
|
|
@@ -47,6 +69,8 @@ export declare function loadOverride(provider: IMetadataProvider, user: UserInfo
|
|
|
47
69
|
*
|
|
48
70
|
* Returns `null` on success; a `FORBIDDEN` failure result on rejection.
|
|
49
71
|
*/
|
|
72
|
+
export declare function CheckOverrideOwnership(override: Pick<MJEntityFormOverrideEntity, 'ID' | 'Scope' | 'UserID' | 'RoleID'>, user: UserInfo): ActionResultSimple | null;
|
|
73
|
+
/** @deprecated Use {@link CheckOverrideOwnership}. */
|
|
50
74
|
export declare function checkOverrideOwnership(override: Pick<MJEntityFormOverrideEntity, 'ID' | 'Scope' | 'UserID' | 'RoleID'>, user: UserInfo): ActionResultSimple | null;
|
|
51
75
|
/**
|
|
52
76
|
* Lifecycle mapping. EntityFormOverride.Status uses
|
|
@@ -58,7 +82,11 @@ export declare function checkOverrideOwnership(override: Pick<MJEntityFormOverri
|
|
|
58
82
|
* (Draft), or an archived version (Deprecated).
|
|
59
83
|
*/
|
|
60
84
|
export type FormLifecycle = 'Active' | 'Pending' | 'Inactive';
|
|
85
|
+
export declare function MapToComponentStatus(lifecycle: FormLifecycle): 'Published' | 'Draft' | 'Deprecated';
|
|
86
|
+
/** @deprecated Use {@link MapToComponentStatus}. */
|
|
61
87
|
export declare function mapToComponentStatus(lifecycle: FormLifecycle): 'Published' | 'Draft' | 'Deprecated';
|
|
88
|
+
export declare function MapFromComponentStatus(status: string | null | undefined): FormLifecycle;
|
|
89
|
+
/** @deprecated Use {@link MapFromComponentStatus}. */
|
|
62
90
|
export declare function mapFromComponentStatus(status: string | null | undefined): FormLifecycle;
|
|
63
91
|
/**
|
|
64
92
|
* Insert a new Component row carrying the supplied spec. Used by both
|
|
@@ -71,6 +99,21 @@ export declare function mapFromComponentStatus(status: string | null | undefined
|
|
|
71
99
|
* ('Active' or 'Pending') — translated to the Component table's union via
|
|
72
100
|
* {@link mapToComponentStatus}.
|
|
73
101
|
*/
|
|
102
|
+
export declare function InsertComponent(opts: {
|
|
103
|
+
provider: IMetadataProvider;
|
|
104
|
+
user: UserInfo;
|
|
105
|
+
spec: ComponentSpec;
|
|
106
|
+
fallbackName: string;
|
|
107
|
+
description: string | null;
|
|
108
|
+
version: string;
|
|
109
|
+
versionSequence: number;
|
|
110
|
+
componentStatus: FormLifecycle;
|
|
111
|
+
}): Promise<{
|
|
112
|
+
id: string;
|
|
113
|
+
} | {
|
|
114
|
+
error: ActionResultSimple;
|
|
115
|
+
}>;
|
|
116
|
+
/** @deprecated Use {@link InsertComponent}. */
|
|
74
117
|
export declare function insertComponent(opts: {
|
|
75
118
|
provider: IMetadataProvider;
|
|
76
119
|
user: UserInfo;
|
|
@@ -90,6 +133,22 @@ export declare function insertComponent(opts: {
|
|
|
90
133
|
* unless `allowGlobalOrRole` is explicitly true — which is reserved for the
|
|
91
134
|
* future "promote variant" UI path, not the agent.
|
|
92
135
|
*/
|
|
136
|
+
export declare function InsertOverride(opts: {
|
|
137
|
+
provider: IMetadataProvider;
|
|
138
|
+
user: UserInfo;
|
|
139
|
+
entityID: string;
|
|
140
|
+
componentID: string;
|
|
141
|
+
name: string;
|
|
142
|
+
description: string | null;
|
|
143
|
+
notes?: string | null;
|
|
144
|
+
status: 'Active' | 'Pending';
|
|
145
|
+
priority?: number;
|
|
146
|
+
}): Promise<{
|
|
147
|
+
id: string;
|
|
148
|
+
} | {
|
|
149
|
+
error: ActionResultSimple;
|
|
150
|
+
}>;
|
|
151
|
+
/** @deprecated Use {@link InsertOverride}. */
|
|
93
152
|
export declare function insertOverride(opts: {
|
|
94
153
|
provider: IMetadataProvider;
|
|
95
154
|
user: UserInfo;
|
|
@@ -116,23 +175,31 @@ export type VersionBumpKind = 'in-place' | 'patch' | 'minor' | 'major';
|
|
|
116
175
|
* "1.0.0" → "1.0.1", "1.7.3" → "1.7.4". Used for small/defect-style edits
|
|
117
176
|
* that deserve a rollback checkpoint but aren't a meaningful UX change.
|
|
118
177
|
*/
|
|
178
|
+
export declare function BumpPatchVersion(current: string | null | undefined): string;
|
|
179
|
+
/** @deprecated Use {@link BumpPatchVersion}. */
|
|
119
180
|
export declare function bumpPatchVersion(current: string | null | undefined): string;
|
|
120
181
|
/**
|
|
121
182
|
* Compute the next semver-minor bump for an existing version string.
|
|
122
183
|
* "1.0.0" → "1.1.0", "1.7.3" → "1.8.0". Used for feature additions —
|
|
123
184
|
* new fields, sections, charts, tabs.
|
|
124
185
|
*/
|
|
186
|
+
export declare function BumpMinorVersion(current: string | null | undefined): string;
|
|
187
|
+
/** @deprecated Use {@link BumpMinorVersion}. */
|
|
125
188
|
export declare function bumpMinorVersion(current: string | null | undefined): string;
|
|
126
189
|
/**
|
|
127
190
|
* "1.7.3" → "2.0.0", "3.4.5" → "4.0.0". Used for radical redesigns or
|
|
128
191
|
* when the user explicitly asks for a new major version.
|
|
129
192
|
*/
|
|
193
|
+
export declare function BumpMajorVersion(current: string | null | undefined): string;
|
|
194
|
+
/** @deprecated Use {@link BumpMajorVersion}. */
|
|
130
195
|
export declare function bumpMajorVersion(current: string | null | undefined): string;
|
|
131
196
|
/**
|
|
132
197
|
* Dispatch a version bump based on the caller's stated intent.
|
|
133
198
|
* `'in-place'` returns the same version unchanged — caller should branch
|
|
134
199
|
* separately (no new Component row is written).
|
|
135
200
|
*/
|
|
201
|
+
export declare function BumpVersion(current: string | null | undefined, kind: VersionBumpKind): string;
|
|
202
|
+
/** @deprecated Use {@link BumpVersion}. */
|
|
136
203
|
export declare function bumpVersion(current: string | null | undefined, kind: VersionBumpKind): string;
|
|
137
204
|
/**
|
|
138
205
|
* Parse and normalize a VersionBumpKind value from a string. Accepts the
|
|
@@ -140,5 +207,7 @@ export declare function bumpVersion(current: string | null | undefined, kind: Ve
|
|
|
140
207
|
* the input doesn't map to a known kind, so callers can decide whether
|
|
141
208
|
* to default or reject.
|
|
142
209
|
*/
|
|
210
|
+
export declare function ParseVersionBumpKind(raw: unknown): VersionBumpKind | null;
|
|
211
|
+
/** @deprecated Use {@link ParseVersionBumpKind}. */
|
|
143
212
|
export declare function parseVersionBumpKind(raw: unknown): VersionBumpKind | null;
|
|
144
213
|
//# sourceMappingURL=_shared.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_shared.d.ts","sourceRoot":"","sources":["../../../src/custom/interactive-forms/_shared.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"_shared.d.ts","sourceRoot":"","sources":["../../../src/custom/interactive-forms/_shared.ts"],"names":[],"mappings":"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"}
|