node-autotask 0.9.0 → 0.10.0
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/MCP_TOOL_CATALOG.json +2 -2
- package/MCP_TOOL_MANIFEST.md +4 -4
- package/N8N_MCP_MANIFEST.json +2 -2
- package/N8N_MCP_MANIFEST.md +3 -3
- package/capabilities.json +1259 -1259
- package/dist/capabilities.cjs +2 -3
- package/dist/capabilities.js +1 -2
- package/dist/{chunk-UYJ5V262.js → chunk-3VB6N44U.js} +32 -182
- package/dist/{chunk-BZPFDRAE.js → chunk-6KFP5HV3.js} +1258 -1259
- package/dist/chunk-DMMMWO6A.js +0 -0
- package/dist/chunk-FLB2X6O5.cjs +1 -0
- package/dist/{chunk-UDWV4VVD.js → chunk-HWC2WPX2.js} +214 -20
- package/dist/chunk-IDPB4N2Q.cjs +1 -0
- package/dist/{chunk-QJU2N32V.js → chunk-NVJ2PTN3.js} +2 -3
- package/dist/{chunk-53MC2QRQ.cjs → chunk-QUM74WLQ.cjs} +135 -136
- package/dist/{chunk-OYHKIYVR.cjs → chunk-S7VMY5KN.cjs} +422 -572
- package/dist/chunk-UPQIUWOS.js +0 -0
- package/dist/{chunk-LTKMTXUR.cjs → chunk-WTVD2JZN.cjs} +1258 -1259
- package/dist/{chunk-RWLPTU67.cjs → chunk-WTVLHMZA.cjs} +235 -41
- package/dist/{index-ZknpNhtc.d.ts → index-BOyh7S65.d.cts} +8 -8
- package/dist/{index-CfU1JDgS.d.cts → index-DGgMD8aq.d.ts} +8 -8
- package/dist/{index-O2zzIMcQ.d.cts → index-cQ6CRexR.d.cts} +3 -1
- package/dist/{index-O2zzIMcQ.d.ts → index-cQ6CRexR.d.ts} +3 -1
- package/dist/index.cjs +21 -22
- package/dist/index.d.cts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.js +6 -7
- package/dist/operations/index.cjs +133 -129
- package/dist/operations/index.d.cts +8 -3
- package/dist/operations/index.d.ts +8 -3
- package/dist/operations/index.js +9 -5
- package/dist/pool.cjs +36 -12
- package/dist/pool.d.cts +2 -2
- package/dist/pool.d.ts +2 -2
- package/dist/pool.js +31 -7
- package/dist/resources/index.cjs +5 -6
- package/dist/resources/index.d.cts +2 -2
- package/dist/resources/index.d.ts +2 -2
- package/dist/resources/index.js +4 -5
- package/dist/types/index.cjs +1 -2
- package/dist/types/index.d.cts +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.js +1 -2
- package/dist/untrusted.cjs +0 -1
- package/dist/untrusted.js +0 -1
- package/docs/API.md +12 -6
- package/package.json +1 -1
- package/dist/capabilities.cjs.map +0 -1
- package/dist/capabilities.js.map +0 -1
- package/dist/chunk-53MC2QRQ.cjs.map +0 -1
- package/dist/chunk-BZPFDRAE.js.map +0 -1
- package/dist/chunk-CXM35TEC.cjs +0 -1
- package/dist/chunk-CXM35TEC.cjs.map +0 -1
- package/dist/chunk-GIVD2CQ3.js +0 -1
- package/dist/chunk-GIVD2CQ3.js.map +0 -1
- package/dist/chunk-LTKMTXUR.cjs.map +0 -1
- package/dist/chunk-MHBMSBTA.js +0 -1
- package/dist/chunk-MHBMSBTA.js.map +0 -1
- package/dist/chunk-NZUFSSIZ.cjs +0 -1
- package/dist/chunk-NZUFSSIZ.cjs.map +0 -1
- package/dist/chunk-OYHKIYVR.cjs.map +0 -1
- package/dist/chunk-QJU2N32V.js.map +0 -1
- package/dist/chunk-RWLPTU67.cjs.map +0 -1
- package/dist/chunk-UDWV4VVD.js.map +0 -1
- package/dist/chunk-UYJ5V262.js.map +0 -1
- package/dist/index.cjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/operations/index.cjs.map +0 -1
- package/dist/operations/index.js.map +0 -1
- package/dist/pool.cjs.map +0 -1
- package/dist/pool.js.map +0 -1
- package/dist/resources/index.cjs.map +0 -1
- package/dist/resources/index.js.map +0 -1
- package/dist/types/index.cjs.map +0 -1
- package/dist/types/index.js.map +0 -1
- package/dist/untrusted.cjs.map +0 -1
- package/dist/untrusted.js.map +0 -1
|
@@ -29,26 +29,27 @@
|
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
|
|
32
|
-
var _chunkRWLPTU67cjs = require('../chunk-RWLPTU67.cjs');
|
|
33
32
|
|
|
33
|
+
var _chunkWTVLHMZAcjs = require('../chunk-WTVLHMZA.cjs');
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
|
|
36
|
+
var _chunkWTVD2JZNcjs = require('../chunk-WTVD2JZN.cjs');
|
|
36
37
|
|
|
37
38
|
// src/operations/searchAcrossResources.ts
|
|
38
39
|
var DEFAULT_LIMIT = 25;
|
|
39
40
|
function resourceFor(client, key) {
|
|
40
|
-
return client[
|
|
41
|
+
return client[_chunkWTVLHMZAcjs.camelKey.call(void 0, key)];
|
|
41
42
|
}
|
|
42
43
|
async function searchAcrossResources(client, query, opts = {}) {
|
|
43
44
|
const text = query.trim();
|
|
44
45
|
if (text === "") {
|
|
45
|
-
throw new (0,
|
|
46
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)("searchAcrossResources: query must be a non-empty string");
|
|
46
47
|
}
|
|
47
|
-
const keys = _nullishCoalesce(opts.resources, () => (
|
|
48
|
+
const keys = _nullishCoalesce(opts.resources, () => ( _chunkWTVLHMZAcjs.WORKFLOW_RESOURCES));
|
|
48
49
|
if (keys.length === 0) {
|
|
49
|
-
throw new (0,
|
|
50
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)("searchAcrossResources: no resources requested");
|
|
50
51
|
}
|
|
51
|
-
const limit =
|
|
52
|
+
const limit = _chunkWTVLHMZAcjs.clampPageSize.call(void 0, _nullishCoalesce(opts.limit, () => ( DEFAULT_LIMIT)));
|
|
52
53
|
const results = [];
|
|
53
54
|
const skipped = [];
|
|
54
55
|
for (const key of keys) {
|
|
@@ -66,7 +67,7 @@ async function searchAcrossResources(client, query, opts = {}) {
|
|
|
66
67
|
|
|
67
68
|
// src/operations/resolveAny.ts
|
|
68
69
|
function resourceFor2(client, key) {
|
|
69
|
-
return client[
|
|
70
|
+
return client[_chunkWTVLHMZAcjs.camelKey.call(void 0, key)];
|
|
70
71
|
}
|
|
71
72
|
var FAULT_CATEGORIES = /* @__PURE__ */ new Set(["auth", "rate_limit", "server", "network", "timeout", "policy"]);
|
|
72
73
|
function missCost(identifier) {
|
|
@@ -75,13 +76,13 @@ function missCost(identifier) {
|
|
|
75
76
|
}
|
|
76
77
|
async function resolveAny(client, identifier, opts = {}) {
|
|
77
78
|
if (typeof identifier === "number") {
|
|
78
|
-
|
|
79
|
+
_chunkWTVLHMZAcjs.parseIdentifier.call(void 0, identifier, "identifier");
|
|
79
80
|
} else if (identifier.trim() === "") {
|
|
80
|
-
throw new (0,
|
|
81
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)("resolveAny: identifier must be non-empty");
|
|
81
82
|
}
|
|
82
|
-
const keys = _nullishCoalesce(opts.resources, () => (
|
|
83
|
+
const keys = _nullishCoalesce(opts.resources, () => ( _chunkWTVLHMZAcjs.WORKFLOW_RESOURCES));
|
|
83
84
|
if (keys.length === 0) {
|
|
84
|
-
throw new (0,
|
|
85
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)("resolveAny: no resources requested");
|
|
85
86
|
}
|
|
86
87
|
const results = [];
|
|
87
88
|
for (const key of keys) {
|
|
@@ -111,9 +112,9 @@ async function resolveAny(client, identifier, opts = {}) {
|
|
|
111
112
|
} catch (err) {
|
|
112
113
|
let code;
|
|
113
114
|
let candidates = [];
|
|
114
|
-
if (err instanceof
|
|
115
|
+
if (err instanceof _chunkWTVLHMZAcjs.AutotaskConfigError) {
|
|
115
116
|
code = "CONFIG_ERROR";
|
|
116
|
-
} else if (
|
|
117
|
+
} else if (_chunkWTVLHMZAcjs.isAutotaskError.call(void 0, err)) {
|
|
117
118
|
if (FAULT_CATEGORIES.has(err.category)) throw err;
|
|
118
119
|
code = err.code;
|
|
119
120
|
if (code === "RESOLUTION_AMBIGUOUS" && err.resourceIds !== void 0) {
|
|
@@ -262,7 +263,7 @@ var MODEL_FIELD_SETS = {
|
|
|
262
263
|
var FETCH_MANY_MAX_ITEMS = 20;
|
|
263
264
|
function validateFetchManyItems(items, cap, opName = "fetchMany", capRef = `FETCH_MANY_MAX_ITEMS = ${FETCH_MANY_MAX_ITEMS}`, validation) {
|
|
264
265
|
if (!Array.isArray(items)) {
|
|
265
|
-
throw new (0,
|
|
266
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)(
|
|
266
267
|
`${opName}: items must be the items ARRAY \u2014 one positional arg, [{ resource: string, id: number, fields?: string[] }] (got ${Array.isArray(items) ? "an array" : typeof items})`,
|
|
267
268
|
{
|
|
268
269
|
suggestedAction: 'Pass args = [[{ resource: "tickets", id: 123 }, { resource: "projects", id: 456 }]] \u2014 the items array is the single positional argument.'
|
|
@@ -270,12 +271,12 @@ function validateFetchManyItems(items, cap, opName = "fetchMany", capRef = `FETC
|
|
|
270
271
|
);
|
|
271
272
|
}
|
|
272
273
|
if (items.length === 0) {
|
|
273
|
-
throw new (0,
|
|
274
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)(`${opName}: items must not be empty (a zero-item batch is a shape error, not a no-op)`, {
|
|
274
275
|
suggestedAction: "Pass at least one { resource, id } item \u2014 or use the resource's query op for a filtered read."
|
|
275
276
|
});
|
|
276
277
|
}
|
|
277
278
|
if (items.length > cap) {
|
|
278
|
-
throw new (0,
|
|
279
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)(
|
|
279
280
|
`${opName}: ${items.length} items over the ${cap}-item cap (${capRef}) \u2014 zero items were fetched (pre-request)`,
|
|
280
281
|
{
|
|
281
282
|
suggestedAction: `Split the batch into groups of <= ${cap} items \u2014 or, for more than ${cap} records / a filtered set, use the resource's bounded query op (<resource>.query).`
|
|
@@ -303,15 +304,15 @@ function validateFetchManyItems(items, cap, opName = "fetchMany", capRef = `FETC
|
|
|
303
304
|
);
|
|
304
305
|
continue;
|
|
305
306
|
}
|
|
306
|
-
const rel =
|
|
307
|
+
const rel = _chunkWTVLHMZAcjs.RELATIONSHIP_MAP[resourceKey];
|
|
307
308
|
if (rel !== void 0 && rel.parentScoped) {
|
|
308
309
|
problems.push(
|
|
309
|
-
`${at}.resource: "${resourceKey}" is a parent-scoped child \u2014 its get needs (parentId, id); fetchMany takes single numeric ids of TOP-LEVEL records (scoped reads: client.${
|
|
310
|
+
`${at}.resource: "${resourceKey}" is a parent-scoped child \u2014 its get needs (parentId, id); fetchMany takes single numeric ids of TOP-LEVEL records (scoped reads: client.${_chunkWTVLHMZAcjs.camelKey.call(void 0, resourceKey)}.get(parentId, id))`
|
|
310
311
|
);
|
|
311
312
|
continue;
|
|
312
313
|
}
|
|
313
314
|
try {
|
|
314
|
-
|
|
315
|
+
_chunkWTVLHMZAcjs.parseIdentifier.call(void 0, item.id, `${at}.id`);
|
|
315
316
|
} catch (e2) {
|
|
316
317
|
if (typeof item.id === "string") {
|
|
317
318
|
problems.push(
|
|
@@ -344,7 +345,7 @@ function validateFetchManyItems(items, cap, opName = "fetchMany", capRef = `FETC
|
|
|
344
345
|
}
|
|
345
346
|
}
|
|
346
347
|
if (problems.length > 0) {
|
|
347
|
-
throw new (0,
|
|
348
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)(
|
|
348
349
|
`${opName}: ${problems.length} problem(s) found pre-request (zero wire was issued)
|
|
349
350
|
- ` + problems.join("\n- "),
|
|
350
351
|
{ suggestedAction: "Fix every item above and call again \u2014 validation covers the whole batch up-front (one round, zero wire)." }
|
|
@@ -361,11 +362,11 @@ function project(value, fields) {
|
|
|
361
362
|
async function fetchMany(client, items, opts = {}) {
|
|
362
363
|
if (opts.maxItems !== void 0) {
|
|
363
364
|
if (!Number.isInteger(opts.maxItems) || opts.maxItems < 1) {
|
|
364
|
-
throw new (0,
|
|
365
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)(`fetchMany: maxItems must be an integer >= 1 (got ${String(opts.maxItems)})`);
|
|
365
366
|
}
|
|
366
367
|
}
|
|
367
368
|
if (opts.liveFields !== void 0 && typeof opts.liveFields !== "boolean") {
|
|
368
|
-
throw new (0,
|
|
369
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)(`fetchMany: liveFields must be a boolean (got ${typeof opts.liveFields})`);
|
|
369
370
|
}
|
|
370
371
|
const cap = Math.min(FETCH_MANY_MAX_ITEMS, _nullishCoalesce(opts.maxItems, () => ( FETCH_MANY_MAX_ITEMS)));
|
|
371
372
|
if (opts.liveFields === true) {
|
|
@@ -374,9 +375,9 @@ async function fetchMany(client, items, opts = {}) {
|
|
|
374
375
|
for (const item of items) {
|
|
375
376
|
const key = item.resource;
|
|
376
377
|
if (liveFieldSets.has(key)) continue;
|
|
377
|
-
const holder = client[
|
|
378
|
+
const holder = client[_chunkWTVLHMZAcjs.camelKey.call(void 0, key)];
|
|
378
379
|
if (holder === void 0) {
|
|
379
|
-
throw new (0,
|
|
380
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)(`fetchMany: the client exposes no accessor for resource "${key}"`, {
|
|
380
381
|
suggestedAction: "Rebuild the client from the SDK build that ships this registry (the resource set is pinned by the plan)."
|
|
381
382
|
});
|
|
382
383
|
}
|
|
@@ -388,7 +389,7 @@ async function fetchMany(client, items, opts = {}) {
|
|
|
388
389
|
}
|
|
389
390
|
liveFieldSets.set(key, names.length > 0 ? names : null);
|
|
390
391
|
} catch (err) {
|
|
391
|
-
if (!
|
|
392
|
+
if (!_chunkWTVLHMZAcjs.isAutotaskError.call(void 0, err) || err.code === "ABORTED") throw err;
|
|
392
393
|
liveFieldSets.set(key, null);
|
|
393
394
|
}
|
|
394
395
|
}
|
|
@@ -399,10 +400,10 @@ async function fetchMany(client, items, opts = {}) {
|
|
|
399
400
|
const results = [];
|
|
400
401
|
for (const item of items) {
|
|
401
402
|
const key = item.resource;
|
|
402
|
-
const id =
|
|
403
|
-
const holder = client[
|
|
403
|
+
const id = _chunkWTVLHMZAcjs.parseIdentifier.call(void 0, item.id, `items[${results.length}].id`);
|
|
404
|
+
const holder = client[_chunkWTVLHMZAcjs.camelKey.call(void 0, key)];
|
|
404
405
|
if (holder === void 0) {
|
|
405
|
-
throw new (0,
|
|
406
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)(`fetchMany: the client exposes no accessor for resource "${key}"`, {
|
|
406
407
|
suggestedAction: "Rebuild the client from the SDK build that ships this registry (the resource set is pinned by the plan)."
|
|
407
408
|
});
|
|
408
409
|
}
|
|
@@ -410,9 +411,9 @@ async function fetchMany(client, items, opts = {}) {
|
|
|
410
411
|
const value = await holder.get(id);
|
|
411
412
|
results.push({ resource: key, id, found: true, value: item.fields !== void 0 ? project(value, item.fields) : value });
|
|
412
413
|
} catch (err) {
|
|
413
|
-
if (err instanceof
|
|
414
|
+
if (err instanceof _chunkWTVLHMZAcjs.NotFoundError) {
|
|
414
415
|
results.push({ resource: key, id, found: false, value: null, error: { code: "NOT_FOUND", message: err.message } });
|
|
415
|
-
} else if (
|
|
416
|
+
} else if (_chunkWTVLHMZAcjs.isAutotaskError.call(void 0, err) && err.code !== "ABORTED") {
|
|
416
417
|
const e = { code: err.code, message: err.message };
|
|
417
418
|
if (err.httpStatus !== void 0) e.httpStatus = err.httpStatus;
|
|
418
419
|
results.push({ resource: key, id, found: false, value: null, error: e });
|
|
@@ -428,10 +429,10 @@ async function fetchMany(client, items, opts = {}) {
|
|
|
428
429
|
// src/operations/aggregate.ts
|
|
429
430
|
var AGGREGATE_TOP_MAX = 100;
|
|
430
431
|
var AGGREGATE_DEFAULT_TOP = 25;
|
|
431
|
-
var AGGREGATE_DEFAULT_LIMIT =
|
|
432
|
+
var AGGREGATE_DEFAULT_LIMIT = _chunkWTVLHMZAcjs.BOUNDED_QUERY_MAX_LIMIT;
|
|
432
433
|
var QUERY_RESOURCE_KEYS = (() => {
|
|
433
434
|
const s = /* @__PURE__ */ new Set();
|
|
434
|
-
for (const rec of
|
|
435
|
+
for (const rec of _chunkWTVD2JZNcjs.CAPABILITIES) if (rec.operation === "query") s.add(rec.resource);
|
|
435
436
|
return s;
|
|
436
437
|
})();
|
|
437
438
|
var AGGREGATE_OPT_KEYS = ["groupBy", "sum", "top", "limit"];
|
|
@@ -466,14 +467,14 @@ function validateAggregate(operation, filter, opts) {
|
|
|
466
467
|
conditions = [];
|
|
467
468
|
} else {
|
|
468
469
|
try {
|
|
469
|
-
conditions =
|
|
470
|
+
conditions = _chunkWTVLHMZAcjs.buildFilter.call(void 0, conds).filter;
|
|
470
471
|
} catch (err) {
|
|
471
|
-
problems.push(err instanceof
|
|
472
|
+
problems.push(err instanceof _chunkWTVLHMZAcjs.AutotaskConfigError ? err.message : `filter must be the query-bag filter (13 operators; caps 500 OR-conditions / 1 UDF / 8000 chars); ${String(err)}`);
|
|
472
473
|
}
|
|
473
474
|
}
|
|
474
475
|
}
|
|
475
476
|
if (opts !== void 0 && (typeof opts !== "object" || opts === null || Array.isArray(opts))) {
|
|
476
|
-
throw new (0,
|
|
477
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)(
|
|
477
478
|
`aggregate: opts must be the options object (got ${Array.isArray(opts) ? "an array" : typeof opts})`,
|
|
478
479
|
{ operation: "operations.aggregate" }
|
|
479
480
|
);
|
|
@@ -515,11 +516,11 @@ function validateAggregate(operation, filter, opts) {
|
|
|
515
516
|
if (!Number.isInteger(opts.limit)) {
|
|
516
517
|
problems.push(`limit must be an integer (got ${String(opts.limit)})`);
|
|
517
518
|
} else {
|
|
518
|
-
limit = Math.min(Math.max(opts.limit, 1),
|
|
519
|
+
limit = Math.min(Math.max(opts.limit, 1), _chunkWTVLHMZAcjs.BOUNDED_QUERY_MAX_LIMIT);
|
|
519
520
|
}
|
|
520
521
|
}
|
|
521
522
|
if (problems.length > 0) {
|
|
522
|
-
throw new (0,
|
|
523
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)(
|
|
523
524
|
`aggregate: ${problems.length} problem(s) found pre-request (zero wire was issued)
|
|
524
525
|
- ` + problems.join("\n- "),
|
|
525
526
|
{ operation: "operations.aggregate" }
|
|
@@ -529,9 +530,9 @@ function validateAggregate(operation, filter, opts) {
|
|
|
529
530
|
}
|
|
530
531
|
async function aggregate(client, operation, filter, opts = {}) {
|
|
531
532
|
const v = validateAggregate(operation, filter, opts);
|
|
532
|
-
const holder = client[
|
|
533
|
+
const holder = client[_chunkWTVLHMZAcjs.camelKey.call(void 0, v.resourceKey)];
|
|
533
534
|
if (holder === void 0) {
|
|
534
|
-
throw new (0,
|
|
535
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)(`aggregate: the client exposes no accessor for resource "${v.resourceKey}"`, {
|
|
535
536
|
operation: "operations.aggregate",
|
|
536
537
|
suggestedAction: "Rebuild the client from the SDK build that ships this registry (the resource set is pinned by the plan)."
|
|
537
538
|
});
|
|
@@ -551,8 +552,9 @@ async function aggregate(client, operation, filter, opts = {}) {
|
|
|
551
552
|
const key = {};
|
|
552
553
|
const values = [];
|
|
553
554
|
for (const f of v.groupBy) {
|
|
554
|
-
|
|
555
|
-
|
|
555
|
+
const value = item[f] === void 0 ? null : item[f];
|
|
556
|
+
key[f] = value;
|
|
557
|
+
values.push(value);
|
|
556
558
|
}
|
|
557
559
|
const keyOrder = JSON.stringify(values);
|
|
558
560
|
let g = groups.get(keyOrder);
|
|
@@ -570,6 +572,8 @@ async function aggregate(client, operation, filter, opts = {}) {
|
|
|
570
572
|
const result = {
|
|
571
573
|
mode: v.groupBy.length > 0 ? "group" : "sum",
|
|
572
574
|
groups: top.map((g) => ({ key: g.key, count: g.count, ...g.sums !== void 0 ? { sums: g.sums } : {} })),
|
|
575
|
+
totalGroups: sorted.length,
|
|
576
|
+
groupsTruncated: sorted.length > top.length,
|
|
573
577
|
totalScanned: res.fetched,
|
|
574
578
|
hasMore: res.hasMore
|
|
575
579
|
};
|
|
@@ -591,7 +595,7 @@ function project2(value, fields) {
|
|
|
591
595
|
function resourcePathOf(key, holder) {
|
|
592
596
|
const path = _optionalChain([holder, 'optionalAccess', _5 => _5.resourcePath]);
|
|
593
597
|
if (typeof path !== "string" || path === "") {
|
|
594
|
-
throw new (0,
|
|
598
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)(`fetchByIds: the client exposes no ${key} resource path (registry drift)`, {
|
|
595
599
|
suggestedAction: "Rebuild the client from the SDK build that ships this registry (the resource set is pinned by the plan)."
|
|
596
600
|
});
|
|
597
601
|
}
|
|
@@ -600,7 +604,7 @@ function resourcePathOf(key, holder) {
|
|
|
600
604
|
async function fetchByIds(client, items, opts = {}) {
|
|
601
605
|
if (opts.maxItems !== void 0) {
|
|
602
606
|
if (!Number.isInteger(opts.maxItems) || opts.maxItems < 1) {
|
|
603
|
-
throw new (0,
|
|
607
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)(`fetchByIds: maxItems must be an integer >= 1 (got ${String(opts.maxItems)})`);
|
|
604
608
|
}
|
|
605
609
|
}
|
|
606
610
|
const cap = Math.min(FETCH_BY_IDS_MAX_ITEMS, _nullishCoalesce(opts.maxItems, () => ( FETCH_BY_IDS_MAX_ITEMS)));
|
|
@@ -609,7 +613,7 @@ async function fetchByIds(client, items, opts = {}) {
|
|
|
609
613
|
const canonical = [];
|
|
610
614
|
for (let i = 0; i < items.length; i += 1) {
|
|
611
615
|
const item = items[i];
|
|
612
|
-
const id =
|
|
616
|
+
const id = _chunkWTVLHMZAcjs.parseIdentifier.call(void 0, item.id, `items[${i}].id`);
|
|
613
617
|
canonical[i] = id;
|
|
614
618
|
const g = _nullishCoalesce(groups.get(item.resource), () => ( { indices: [], fields: /* @__PURE__ */ new Set(), anyFields: false }));
|
|
615
619
|
g.indices.push(i);
|
|
@@ -621,9 +625,9 @@ async function fetchByIds(client, items, opts = {}) {
|
|
|
621
625
|
}
|
|
622
626
|
const byKey = /* @__PURE__ */ new Map();
|
|
623
627
|
for (const [key, group] of groups) {
|
|
624
|
-
const holder = client[
|
|
628
|
+
const holder = client[_chunkWTVLHMZAcjs.camelKey.call(void 0, key)];
|
|
625
629
|
if (holder === void 0) {
|
|
626
|
-
throw new (0,
|
|
630
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)(`fetchByIds: the client exposes no accessor for resource "${key}"`, {
|
|
627
631
|
suggestedAction: "Rebuild the client from the SDK build that ships this registry (the resource set is pinned by the plan)."
|
|
628
632
|
});
|
|
629
633
|
}
|
|
@@ -643,13 +647,13 @@ async function fetchByIds(client, items, opts = {}) {
|
|
|
643
647
|
const chunk = unique.slice(c, c + FETCH_BY_IDS_CHUNK_SIZE);
|
|
644
648
|
const chunkKeys = new Set(chunk.map((id) => String(id)));
|
|
645
649
|
try {
|
|
646
|
-
const req =
|
|
650
|
+
const req = _chunkWTVLHMZAcjs.buildQueryRequest.call(void 0, client.http.baseUrl, resourcePath, {
|
|
647
651
|
filter: [{ field: "id", op: "in", value: chunk }],
|
|
648
652
|
maxRecords: FETCH_BY_IDS_CHUNK_SIZE,
|
|
649
653
|
includeFields
|
|
650
654
|
});
|
|
651
655
|
const res = await client.http.request({ ...req, operation: `${key}.fetchByIds` });
|
|
652
|
-
const { items: rows } =
|
|
656
|
+
const { items: rows } = _chunkWTVLHMZAcjs.unwrapItems.call(void 0, res, `${key}.fetchByIds`);
|
|
653
657
|
for (const row of rows) {
|
|
654
658
|
const k = String(row.id);
|
|
655
659
|
if (!chunkKeys.has(k)) continue;
|
|
@@ -657,7 +661,7 @@ async function fetchByIds(client, items, opts = {}) {
|
|
|
657
661
|
if (!byKey.has(q)) byKey.set(q, { found: true, value: row });
|
|
658
662
|
}
|
|
659
663
|
} catch (err) {
|
|
660
|
-
if (
|
|
664
|
+
if (_chunkWTVLHMZAcjs.isAutotaskError.call(void 0, err) && err.code !== "ABORTED") {
|
|
661
665
|
const e = { code: err.code, message: err.message };
|
|
662
666
|
if (err.httpStatus !== void 0) e.httpStatus = err.httpStatus;
|
|
663
667
|
for (const u of chunk) {
|
|
@@ -676,9 +680,9 @@ async function fetchByIds(client, items, opts = {}) {
|
|
|
676
680
|
const value = await holder.get(id);
|
|
677
681
|
byKey.set(k, { found: true, value });
|
|
678
682
|
} catch (err) {
|
|
679
|
-
if (err instanceof
|
|
683
|
+
if (err instanceof _chunkWTVLHMZAcjs.NotFoundError) {
|
|
680
684
|
byKey.set(k, { found: false, value: null, error: { code: "NOT_FOUND", message: err.message } });
|
|
681
|
-
} else if (
|
|
685
|
+
} else if (_chunkWTVLHMZAcjs.isAutotaskError.call(void 0, err) && err.code !== "ABORTED") {
|
|
682
686
|
const e = { code: err.code, message: err.message };
|
|
683
687
|
if (err.httpStatus !== void 0) e.httpStatus = err.httpStatus;
|
|
684
688
|
byKey.set(k, { found: false, value: null, error: e });
|
|
@@ -706,20 +710,20 @@ async function fetchByIds(client, items, opts = {}) {
|
|
|
706
710
|
async function relationshipMap(client, resourceKey) {
|
|
707
711
|
void client;
|
|
708
712
|
if (typeof resourceKey !== "string" || resourceKey.trim() === "") {
|
|
709
|
-
throw new (0,
|
|
713
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)(
|
|
710
714
|
`relationshipMap: resourceKey must be a non-empty plan resource key string (e.g. 'tickets'; got ${typeof resourceKey === "string" ? "a blank string" : typeof resourceKey})`,
|
|
711
715
|
{ suggestedAction: "Pass the exact plan resource key (snake_case) from autotask_catalog \u2014 e.g. tickets, companies, configuration_items, ticket_notes." }
|
|
712
716
|
);
|
|
713
717
|
}
|
|
714
718
|
const key = resourceKey.trim();
|
|
715
|
-
const entry =
|
|
719
|
+
const entry = _chunkWTVLHMZAcjs.RELATIONSHIP_MAP[key];
|
|
716
720
|
if (entry === void 0) {
|
|
717
|
-
throw new (0,
|
|
718
|
-
`relationshipMap: unknown resource "${key}" \u2014 the plan has ${Object.keys(
|
|
721
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskError)(
|
|
722
|
+
`relationshipMap: unknown resource "${key}" \u2014 the plan has ${Object.keys(_chunkWTVLHMZAcjs.RELATIONSHIP_MAP).length} resources`,
|
|
719
723
|
{
|
|
720
724
|
code: "RESOURCE_UNKNOWN",
|
|
721
725
|
category: "validation",
|
|
722
|
-
suggestedAction: `Pass the exact plan resource key (snake_case) from autotask_catalog (e.g. tickets, companies, configuration_items). Zone facts served are ${
|
|
726
|
+
suggestedAction: `Pass the exact plan resource key (snake_case) from autotask_catalog (e.g. tickets, companies, configuration_items). Zone facts served are ${_chunkWTVLHMZAcjs.RELATIONSHIP_ZONE.label} (${_chunkWTVLHMZAcjs.RELATIONSHIP_ZONE.zone})-verified.`
|
|
723
727
|
}
|
|
724
728
|
);
|
|
725
729
|
}
|
|
@@ -736,24 +740,24 @@ var BLIND_SURFACE_KINDS = [
|
|
|
736
740
|
async function blindSurfaces(client, opts) {
|
|
737
741
|
void client;
|
|
738
742
|
if (opts !== void 0 && (typeof opts !== "object" || opts === null || Array.isArray(opts))) {
|
|
739
|
-
throw new (0,
|
|
743
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)("blindSurfaces: opts must be an object { resource?: string, kind?: BlindSurfaceKind }");
|
|
740
744
|
}
|
|
741
|
-
const inv =
|
|
745
|
+
const inv = _chunkWTVLHMZAcjs.BLIND_SURFACE_INVENTORY;
|
|
742
746
|
if (inv === null) {
|
|
743
|
-
throw new (0,
|
|
747
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)("blindSurfaces: the reachability inventory is absent from the generated artifact \u2014 re-run the build");
|
|
744
748
|
}
|
|
745
749
|
let surfaces = inv.surfaces;
|
|
746
750
|
if (_optionalChain([opts, 'optionalAccess', _6 => _6.resource]) !== void 0) {
|
|
747
751
|
const key = typeof opts.resource === "string" ? opts.resource.trim() : "";
|
|
748
752
|
if (key === "") {
|
|
749
|
-
throw new (0,
|
|
753
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)(
|
|
750
754
|
"blindSurfaces: opts.resource must be a non-empty plan resource key string (e.g. 'tickets')",
|
|
751
755
|
{ suggestedAction: "Pass the exact plan resource key (snake_case) from autotask_catalog \u2014 e.g. tickets, companies, configuration_items." }
|
|
752
756
|
);
|
|
753
757
|
}
|
|
754
758
|
if (!inv.surfaces.some((row) => row.resource === key)) {
|
|
755
|
-
throw new (0,
|
|
756
|
-
`blindSurfaces: unknown resource "${key}" \u2014 the plan has ${Object.keys(
|
|
759
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskError)(
|
|
760
|
+
`blindSurfaces: unknown resource "${key}" \u2014 the plan has ${Object.keys(_chunkWTVLHMZAcjs.RELATIONSHIP_MAP).length} resources`,
|
|
757
761
|
{
|
|
758
762
|
code: "RESOURCE_UNKNOWN",
|
|
759
763
|
category: "validation",
|
|
@@ -765,7 +769,7 @@ async function blindSurfaces(client, opts) {
|
|
|
765
769
|
}
|
|
766
770
|
if (_optionalChain([opts, 'optionalAccess', _7 => _7.kind]) !== void 0) {
|
|
767
771
|
if (!BLIND_SURFACE_KINDS.includes(opts.kind)) {
|
|
768
|
-
throw new (0,
|
|
772
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)(
|
|
769
773
|
`blindSurfaces: unknown kind "${String(opts.kind)}" \u2014 the valid classes are: ${BLIND_SURFACE_KINDS.join(", ")}`,
|
|
770
774
|
{ suggestedAction: `Filter with one of: ${BLIND_SURFACE_KINDS.join(", ")} (or omit kind for the full 116-surface inventory).` }
|
|
771
775
|
);
|
|
@@ -778,51 +782,51 @@ async function blindSurfaces(client, opts) {
|
|
|
778
782
|
// src/operations/probeReachability.ts
|
|
779
783
|
async function probeReachability(client, opts) {
|
|
780
784
|
if (opts !== void 0 && (typeof opts !== "object" || opts === null || Array.isArray(opts))) {
|
|
781
|
-
throw new (0,
|
|
785
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)("probeReachability: opts must be an object { resources?: string[], limit?: 1|2, maxWireCalls?: number, confirmProbe?: true }");
|
|
782
786
|
}
|
|
783
|
-
const defs =
|
|
787
|
+
const defs = _chunkWTVLHMZAcjs.REACHABILITY_PROBE_DEFAULTS;
|
|
784
788
|
if (_optionalChain([opts, 'optionalAccess', _8 => _8.confirmProbe]) !== true) {
|
|
785
|
-
throw new (0,
|
|
789
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)(
|
|
786
790
|
"probeReachability: confirmProbe: true is required \u2014 the op deliberately fans out read wire across the tenant (one bounded query per surface); pass confirmProbe: true to run it",
|
|
787
791
|
{ suggestedAction: `Re-call with { confirmProbe: true } (plus resources/limit/maxWireCalls as needed). For the ZERO-wire pinned inventory use operations.blindSurfaces.` }
|
|
788
792
|
);
|
|
789
793
|
}
|
|
790
794
|
const limit = _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _9 => _9.limit]), () => ( defs.limitDefault));
|
|
791
795
|
if (!Number.isInteger(limit) || limit < 1 || limit > defs.limitMax) {
|
|
792
|
-
throw new (0,
|
|
796
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)(
|
|
793
797
|
`probeReachability: limit must be an integer 1..${defs.limitMax} (got ${String(limit)}) \u2014 the rows-per-surface bound for the discovery read`
|
|
794
798
|
);
|
|
795
799
|
}
|
|
796
800
|
const cap = _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _10 => _10.maxWireCalls]), () => ( defs.defaultCap));
|
|
797
801
|
if (!Number.isInteger(cap) || cap < 1) {
|
|
798
|
-
throw new (0,
|
|
802
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)(`probeReachability: maxWireCalls must be a positive integer (got ${String(cap)})`);
|
|
799
803
|
}
|
|
800
804
|
if (cap > defs.hardCap) {
|
|
801
|
-
throw new (0,
|
|
805
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)(
|
|
802
806
|
`probeReachability: maxWireCalls ${cap} exceeds the hard wire cap of ${defs.hardCap} \u2014 the sweep is refused above it (never capped silently)`,
|
|
803
807
|
{ suggestedAction: `Pass maxWireCalls \u2264 ${defs.hardCap} and a resources set no larger than the cap (the refused set is never truncated).` }
|
|
804
808
|
);
|
|
805
809
|
}
|
|
806
|
-
const inv =
|
|
810
|
+
const inv = _chunkWTVLHMZAcjs.BLIND_SURFACE_INVENTORY;
|
|
807
811
|
if (inv === null) {
|
|
808
|
-
throw new (0,
|
|
812
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)("probeReachability: the reachability inventory is absent from the generated artifact \u2014 re-run the build");
|
|
809
813
|
}
|
|
810
814
|
let targets;
|
|
811
815
|
if (_optionalChain([opts, 'optionalAccess', _11 => _11.resources]) === void 0) {
|
|
812
816
|
targets = [...defs.defaultTargets];
|
|
813
817
|
} else {
|
|
814
818
|
if (!Array.isArray(opts.resources) || opts.resources.length === 0) {
|
|
815
|
-
throw new (0,
|
|
819
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)("probeReachability: opts.resources must be a non-empty string[] of plan resource keys (or omit it for the default non-data-full set)");
|
|
816
820
|
}
|
|
817
821
|
const seen = /* @__PURE__ */ new Set();
|
|
818
822
|
for (const r of opts.resources) {
|
|
819
823
|
if (typeof r !== "string" || r.trim() === "") {
|
|
820
|
-
throw new (0,
|
|
824
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)(`probeReachability: opts.resources must contain non-empty plan resource key strings (got ${typeof r === "string" && r.trim() === "" ? "a blank string" : typeof r})`);
|
|
821
825
|
}
|
|
822
826
|
const key = r.trim();
|
|
823
827
|
if (!inv.surfaces.some((row) => row.resource === key)) {
|
|
824
828
|
const surfaceCount = new Set(inv.surfaces.map((s) => s.resource)).size;
|
|
825
|
-
throw new (0,
|
|
829
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskError)(
|
|
826
830
|
`probeReachability: unknown resource "${key}" \u2014 the inventory has ${surfaceCount} surfaces`,
|
|
827
831
|
{
|
|
828
832
|
code: "RESOURCE_UNKNOWN",
|
|
@@ -836,7 +840,7 @@ async function probeReachability(client, opts) {
|
|
|
836
840
|
targets = [...seen];
|
|
837
841
|
}
|
|
838
842
|
if (targets.length > cap) {
|
|
839
|
-
throw new (0,
|
|
843
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)(
|
|
840
844
|
`probeReachability: ${targets.length} requested surface(s) exceed the wire cap of ${cap} \u2014 the sweep is refused above its cap (never truncated)`,
|
|
841
845
|
{ suggestedAction: `Raise maxWireCalls (\u2264 ${defs.hardCap}) to cover the set, or pass a smaller resources list.` }
|
|
842
846
|
);
|
|
@@ -846,7 +850,7 @@ async function probeReachability(client, opts) {
|
|
|
846
850
|
for (const resource of targets.sort()) {
|
|
847
851
|
const row = byResource.get(resource);
|
|
848
852
|
if (row === void 0) continue;
|
|
849
|
-
const holder = client[
|
|
853
|
+
const holder = client[_chunkWTVLHMZAcjs.camelKey.call(void 0, resource)];
|
|
850
854
|
const probeFn = _optionalChain([holder, 'optionalAccess', _12 => _12.queryBounded]);
|
|
851
855
|
if (typeof probeFn !== "function") {
|
|
852
856
|
results.push({
|
|
@@ -865,7 +869,7 @@ async function probeReachability(client, opts) {
|
|
|
865
869
|
probe: { ok: true, wire: 1, error: null }
|
|
866
870
|
});
|
|
867
871
|
} catch (err) {
|
|
868
|
-
const code =
|
|
872
|
+
const code = _chunkWTVLHMZAcjs.isAutotaskError.call(void 0, err) ? err.code : "NETWORK_ERROR";
|
|
869
873
|
const message = err instanceof Error ? err.message : String(err);
|
|
870
874
|
results.push({
|
|
871
875
|
...row,
|
|
@@ -893,24 +897,24 @@ var CREATE_BLOCKER_KINDS = [
|
|
|
893
897
|
async function createGuidance(client, opts) {
|
|
894
898
|
void client;
|
|
895
899
|
if (opts !== void 0 && (typeof opts !== "object" || opts === null || Array.isArray(opts))) {
|
|
896
|
-
throw new (0,
|
|
900
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)(
|
|
897
901
|
"createGuidance: opts must be an object { resources?: string[], kind?: CreateBlockerKind }"
|
|
898
902
|
);
|
|
899
903
|
}
|
|
900
|
-
let rows =
|
|
904
|
+
let rows = _chunkWTVLHMZAcjs.CREATE_GUIDANCE.rows;
|
|
901
905
|
if (_optionalChain([opts, 'optionalAccess', _14 => _14.resources]) !== void 0) {
|
|
902
906
|
if (!Array.isArray(opts.resources) || opts.resources.length === 0) {
|
|
903
|
-
throw new (0,
|
|
907
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)("createGuidance: opts.resources must be a non-empty string[] of plan resource keys");
|
|
904
908
|
}
|
|
905
909
|
const wanted = /* @__PURE__ */ new Set();
|
|
906
910
|
for (const r of opts.resources) {
|
|
907
911
|
if (typeof r !== "string" || r.trim() === "") {
|
|
908
|
-
throw new (0,
|
|
912
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)("createGuidance: opts.resources must contain non-empty plan resource key strings");
|
|
909
913
|
}
|
|
910
914
|
const key = r.trim();
|
|
911
|
-
if (!
|
|
912
|
-
throw new (0,
|
|
913
|
-
`createGuidance: unknown resource "${key}" \u2014 the catalog has ${
|
|
915
|
+
if (!_chunkWTVLHMZAcjs.CREATE_GUIDANCE.rows.some((row) => row.resource === key)) {
|
|
916
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskError)(
|
|
917
|
+
`createGuidance: unknown resource "${key}" \u2014 the catalog has ${_chunkWTVLHMZAcjs.CREATE_GUIDANCE.rows.length} create entities`,
|
|
914
918
|
{
|
|
915
919
|
code: "RESOURCE_UNKNOWN",
|
|
916
920
|
category: "validation",
|
|
@@ -924,18 +928,18 @@ async function createGuidance(client, opts) {
|
|
|
924
928
|
}
|
|
925
929
|
if (_optionalChain([opts, 'optionalAccess', _15 => _15.kind]) !== void 0) {
|
|
926
930
|
if (!CREATE_BLOCKER_KINDS.includes(opts.kind)) {
|
|
927
|
-
throw new (0,
|
|
931
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)(
|
|
928
932
|
`createGuidance: unknown kind "${String(opts.kind)}" \u2014 the valid kinds are: ${CREATE_BLOCKER_KINDS.join(", ")}`
|
|
929
933
|
);
|
|
930
934
|
}
|
|
931
935
|
rows = rows.filter((row) => _optionalChain([row, 'access', _16 => _16.blocker, 'optionalAccess', _17 => _17.kind]) === opts.kind);
|
|
932
936
|
}
|
|
933
937
|
return {
|
|
934
|
-
zone:
|
|
935
|
-
label:
|
|
936
|
-
verifiedAt:
|
|
938
|
+
zone: _chunkWTVLHMZAcjs.CREATE_GUIDANCE.zone,
|
|
939
|
+
label: _chunkWTVLHMZAcjs.CREATE_GUIDANCE.label,
|
|
940
|
+
verifiedAt: _chunkWTVLHMZAcjs.CREATE_GUIDANCE.verifiedAt,
|
|
937
941
|
rows,
|
|
938
|
-
counts:
|
|
942
|
+
counts: _chunkWTVLHMZAcjs.CREATE_GUIDANCE.counts
|
|
939
943
|
};
|
|
940
944
|
}
|
|
941
945
|
|
|
@@ -944,7 +948,7 @@ var RECOVERY_CONFIRM = "operations.recovery";
|
|
|
944
948
|
var RECOVERY_DEFAULT_LIMIT = 25;
|
|
945
949
|
var RECOVERY_MAX_LIMIT = 100;
|
|
946
950
|
function configError(message, operation, suggestedAction) {
|
|
947
|
-
throw new (0,
|
|
951
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)(message, { operation, suggestedAction });
|
|
948
952
|
}
|
|
949
953
|
function parseMatchId(record) {
|
|
950
954
|
const raw = record.id;
|
|
@@ -961,7 +965,7 @@ function parseMatchId(record) {
|
|
|
961
965
|
}
|
|
962
966
|
async function recovery(client, input, opts = {}) {
|
|
963
967
|
const operation = RECOVERY_CONFIRM;
|
|
964
|
-
if (!
|
|
968
|
+
if (!_chunkWTVLHMZAcjs.isRecord.call(void 0, input)) {
|
|
965
969
|
configError(
|
|
966
970
|
`recovery: input must be an object { resource, marker, ... } (got ${typeof input})`,
|
|
967
971
|
operation,
|
|
@@ -992,10 +996,10 @@ async function recovery(client, input, opts = {}) {
|
|
|
992
996
|
"Pass action: 'delete' for the destructive path (dry-run-first; the apply requires the confirm string)."
|
|
993
997
|
);
|
|
994
998
|
}
|
|
995
|
-
const entry =
|
|
999
|
+
const entry = _chunkWTVLHMZAcjs.RELATIONSHIP_MAP[resource];
|
|
996
1000
|
if (entry === void 0) {
|
|
997
|
-
throw new (0,
|
|
998
|
-
`recovery: unknown resource "${resource}" \u2014 the plan has ${Object.keys(
|
|
1001
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskError)(
|
|
1002
|
+
`recovery: unknown resource "${resource}" \u2014 the plan has ${Object.keys(_chunkWTVLHMZAcjs.RELATIONSHIP_MAP).length} resources`,
|
|
999
1003
|
{
|
|
1000
1004
|
code: "RESOURCE_UNKNOWN",
|
|
1001
1005
|
category: "validation",
|
|
@@ -1004,7 +1008,7 @@ async function recovery(client, input, opts = {}) {
|
|
|
1004
1008
|
}
|
|
1005
1009
|
);
|
|
1006
1010
|
}
|
|
1007
|
-
const holder = client[
|
|
1011
|
+
const holder = client[_chunkWTVLHMZAcjs.camelKey.call(void 0, resource)];
|
|
1008
1012
|
if (!holder || typeof holder.queryBounded !== "function") {
|
|
1009
1013
|
configError(
|
|
1010
1014
|
`recovery: ${resource} exposes no bounded query surface \u2014 the marker search cannot run`,
|
|
@@ -1012,7 +1016,7 @@ async function recovery(client, input, opts = {}) {
|
|
|
1012
1016
|
"Use a resource with a query surface, or address the record by id directly (get/fetchMany)."
|
|
1013
1017
|
);
|
|
1014
1018
|
}
|
|
1015
|
-
const field = input.field !== void 0 ? String(input.field) :
|
|
1019
|
+
const field = input.field !== void 0 ? String(input.field) : _chunkWTVLHMZAcjs.MARKER_FIELDS[resource];
|
|
1016
1020
|
if (typeof field !== "string" || field.trim() === "") {
|
|
1017
1021
|
configError(
|
|
1018
1022
|
`recovery: ${resource} has no plan markerField and no input.field was passed \u2014 the marker search needs a name-like field to filter on`,
|
|
@@ -1048,7 +1052,7 @@ async function recovery(client, input, opts = {}) {
|
|
|
1048
1052
|
);
|
|
1049
1053
|
}
|
|
1050
1054
|
for (const c of input.filter) {
|
|
1051
|
-
if (!
|
|
1055
|
+
if (!_chunkWTVLHMZAcjs.isRecord.call(void 0, c) || typeof c.op !== "string" || c.op === "and" || c.op === "or") {
|
|
1052
1056
|
configError(
|
|
1053
1057
|
"recovery: input.filter accepts only plain leaf conditions ({ field, op, value }) \u2014 no grouping",
|
|
1054
1058
|
operation,
|
|
@@ -1069,7 +1073,7 @@ async function recovery(client, input, opts = {}) {
|
|
|
1069
1073
|
}
|
|
1070
1074
|
limit = input.limit;
|
|
1071
1075
|
}
|
|
1072
|
-
const boundaryNote =
|
|
1076
|
+
const boundaryNote = _chunkWTVLHMZAcjs.DELETE_BOUNDARY_NOTES[resource];
|
|
1073
1077
|
const boundary = {
|
|
1074
1078
|
available: boundaryNote === void 0,
|
|
1075
1079
|
reason: _nullishCoalesce(boundaryNote, () => ( null)),
|
|
@@ -1081,7 +1085,7 @@ async function recovery(client, input, opts = {}) {
|
|
|
1081
1085
|
};
|
|
1082
1086
|
const isDelete = action === "delete";
|
|
1083
1087
|
if (isDelete && boundaryNote !== void 0) {
|
|
1084
|
-
throw new (0,
|
|
1088
|
+
throw new (0, _chunkWTVLHMZAcjs.DeleteBoundaryError)(
|
|
1085
1089
|
`recovery: the vendor defines no DELETE for ${resource} \u2014 the delete cannot be issued through the API (zero wire was issued)`,
|
|
1086
1090
|
{
|
|
1087
1091
|
operation,
|
|
@@ -1093,7 +1097,7 @@ async function recovery(client, input, opts = {}) {
|
|
|
1093
1097
|
const dryRun = _optionalChain([opts, 'optionalAccess', _18 => _18.dryRun]) !== false;
|
|
1094
1098
|
const confirm = _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _19 => _19.confirm]), () => ( input.confirm));
|
|
1095
1099
|
if (isDelete && !dryRun && confirm !== RECOVERY_CONFIRM) {
|
|
1096
|
-
throw new (0,
|
|
1100
|
+
throw new (0, _chunkWTVLHMZAcjs.ConfirmationRequiredError)(
|
|
1097
1101
|
`recovery: action 'delete' apply is destructive and requires its confirmation flag: pass confirm: "${RECOVERY_CONFIRM}"`,
|
|
1098
1102
|
{
|
|
1099
1103
|
operation: RECOVERY_CONFIRM,
|
|
@@ -1109,7 +1113,7 @@ async function recovery(client, input, opts = {}) {
|
|
|
1109
1113
|
const query = await holder.queryBounded({ filter: conditions, limit });
|
|
1110
1114
|
if (query.hasMore) {
|
|
1111
1115
|
const wire = isDelete ? "DELETE wire" : "mutating wire";
|
|
1112
|
-
throw new (0,
|
|
1116
|
+
throw new (0, _chunkWTVLHMZAcjs.RecoveryTruncatedError)(
|
|
1113
1117
|
`recovery: the marker search on ${resource} TRIPPED its match cap (${limit}) \u2014 more matches exist than were returned (zero ${wire} was issued)`,
|
|
1114
1118
|
{
|
|
1115
1119
|
operation,
|
|
@@ -1148,7 +1152,7 @@ async function recovery(client, input, opts = {}) {
|
|
|
1148
1152
|
return { ...base, simulated: true, dryRun: true };
|
|
1149
1153
|
}
|
|
1150
1154
|
if (unsafeId) {
|
|
1151
|
-
throw new (0,
|
|
1155
|
+
throw new (0, _chunkWTVLHMZAcjs.MarkerUnsafeIdError)(
|
|
1152
1156
|
`recovery: ${unsafeIds.length} of ${matches.length} match(es) on ${resource} have ids beyond Number.MAX_SAFE_INTEGER \u2014 they CANNOT be addressed through the SDK's typed delete surface (zero DELETE wire was issued)`,
|
|
1153
1157
|
{
|
|
1154
1158
|
operation,
|
|
@@ -1159,7 +1163,7 @@ async function recovery(client, input, opts = {}) {
|
|
|
1159
1163
|
}
|
|
1160
1164
|
const deleteMethod = holder.delete;
|
|
1161
1165
|
if (deleteMethod === void 0) {
|
|
1162
|
-
throw new (0,
|
|
1166
|
+
throw new (0, _chunkWTVLHMZAcjs.DeleteBoundaryError)(
|
|
1163
1167
|
`recovery: ${resource} has no delete method on the client \u2014 the boundary is marked available in the plan but the typed delete surface is missing`,
|
|
1164
1168
|
{
|
|
1165
1169
|
operation,
|
|
@@ -1188,14 +1192,14 @@ async function recovery(client, input, opts = {}) {
|
|
|
1188
1192
|
verify = "still-present";
|
|
1189
1193
|
}
|
|
1190
1194
|
} catch (err) {
|
|
1191
|
-
if (err instanceof
|
|
1195
|
+
if (err instanceof _chunkWTVLHMZAcjs.NotFoundError) verify = "not-found";
|
|
1192
1196
|
else {
|
|
1193
1197
|
verify = "error";
|
|
1194
|
-
code =
|
|
1198
|
+
code = _chunkWTVLHMZAcjs.isAutotaskError.call(void 0, err) ? err.code : "SERVER_ERROR";
|
|
1195
1199
|
}
|
|
1196
1200
|
}
|
|
1197
1201
|
} catch (err) {
|
|
1198
|
-
code =
|
|
1202
|
+
code = _chunkWTVLHMZAcjs.isAutotaskError.call(void 0, err) ? err.code : "SERVER_ERROR";
|
|
1199
1203
|
}
|
|
1200
1204
|
deleted.push({ id, verified: verify === "not-found", code });
|
|
1201
1205
|
}
|
|
@@ -1203,13 +1207,13 @@ async function recovery(client, input, opts = {}) {
|
|
|
1203
1207
|
}
|
|
1204
1208
|
|
|
1205
1209
|
// src/operations/invoke.ts
|
|
1206
|
-
var RECORDS =
|
|
1210
|
+
var RECORDS = _chunkWTVD2JZNcjs.CAPABILITIES;
|
|
1207
1211
|
var byId = new Map(RECORDS.map((r) => [r.id, r]));
|
|
1208
1212
|
function needsConfirmation(record) {
|
|
1209
1213
|
return record.effect === "destructive" || (_nullishCoalesce(record.flags, () => ( []))).includes("requiresApproval");
|
|
1210
1214
|
}
|
|
1211
1215
|
function refuse(message, operation, suggestedAction) {
|
|
1212
|
-
throw new (0,
|
|
1216
|
+
throw new (0, _chunkWTVLHMZAcjs.ConfirmationRequiredError)(message, { operation, suggestedAction });
|
|
1213
1217
|
}
|
|
1214
1218
|
var MODE_BY_EFFECT = {
|
|
1215
1219
|
read: "read",
|
|
@@ -1253,7 +1257,7 @@ function looseTypeOk(type, value) {
|
|
|
1253
1257
|
case "string[]":
|
|
1254
1258
|
return Array.isArray(value) && value.every((v) => typeof v === "string");
|
|
1255
1259
|
case "object":
|
|
1256
|
-
return
|
|
1260
|
+
return _chunkWTVLHMZAcjs.isRecord.call(void 0, value);
|
|
1257
1261
|
default:
|
|
1258
1262
|
return true;
|
|
1259
1263
|
}
|
|
@@ -1270,7 +1274,7 @@ function validateDispatchArgs(record, argsIn) {
|
|
|
1270
1274
|
const schema = _nullishCoalesce(record.inputSchema, () => ( {}));
|
|
1271
1275
|
const names = Object.keys(schema);
|
|
1272
1276
|
if (args.length > names.length) {
|
|
1273
|
-
throw new (0,
|
|
1277
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)(
|
|
1274
1278
|
`invoke: "${operation}" declares ${names.length} positional arg(s) (${declaredArgList(record)}) but ${args.length} were passed \u2014 extra args are refused, not dropped (v0.2.0 silently dropped them)`,
|
|
1275
1279
|
{
|
|
1276
1280
|
operation,
|
|
@@ -1280,7 +1284,7 @@ function validateDispatchArgs(record, argsIn) {
|
|
|
1280
1284
|
}
|
|
1281
1285
|
const required = names.filter((n) => schema[n].required);
|
|
1282
1286
|
if (args.length < required.length) {
|
|
1283
|
-
throw new (0,
|
|
1287
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)(
|
|
1284
1288
|
`invoke: "${operation}" requires ${required.length} positional arg(s) (${required.map((n) => `${n}: ${schema[n].type}`).join(", ")}) but only ${args.length} were passed \u2014 declared args: ${declaredArgList(record)}`,
|
|
1285
1289
|
{ operation }
|
|
1286
1290
|
);
|
|
@@ -1291,7 +1295,7 @@ function validateDispatchArgs(record, argsIn) {
|
|
|
1291
1295
|
const name = names[i];
|
|
1292
1296
|
const spec = schema[name];
|
|
1293
1297
|
if (!looseTypeOk(spec.type, value)) {
|
|
1294
|
-
throw new (0,
|
|
1298
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)(
|
|
1295
1299
|
`invoke: "${operation}" arg ${i + 1} is declared ${name}: ${spec.type} \u2014 the value has the wrong type (pass a ${spec.type} value)`,
|
|
1296
1300
|
{ operation }
|
|
1297
1301
|
);
|
|
@@ -1343,11 +1347,11 @@ function validateParamsBag(record, args) {
|
|
|
1343
1347
|
const valid = PARAMS_BAG_KEYS[record.operation];
|
|
1344
1348
|
if (valid === void 0) return;
|
|
1345
1349
|
const bag = _optionalChain([args, 'optionalAccess', _20 => _20[0]]);
|
|
1346
|
-
if (bag === void 0 || bag === null || !
|
|
1350
|
+
if (bag === void 0 || bag === null || !_chunkWTVLHMZAcjs.isRecord.call(void 0, bag)) return;
|
|
1347
1351
|
const unknown = Object.keys(bag).filter((k) => !valid.includes(k));
|
|
1348
1352
|
if (unknown.length === 0) return;
|
|
1349
1353
|
const suggestions = unknown.map((k) => [k, suggestForKey(k, valid)]).filter((pair) => pair[1] !== null).map(([k, s]) => `"${k}" \u2192 "${s}"`);
|
|
1350
|
-
throw new (0,
|
|
1354
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)(
|
|
1351
1355
|
`invoke: "${record.id}" params bag has unknown key(s) ${unknown.map((k) => `"${k}"`).join(", ")} \u2014 the bag is closed (valid keys: ${valid.join(", ")})`,
|
|
1352
1356
|
{
|
|
1353
1357
|
operation: record.id,
|
|
@@ -1361,7 +1365,7 @@ function validateInvokeOptions(opts, operation) {
|
|
|
1361
1365
|
const unknown = Object.keys(opts).filter((k) => !INVOKE_OPTION_KEYS.includes(k));
|
|
1362
1366
|
if (unknown.length === 0) return;
|
|
1363
1367
|
const suggestions = unknown.map((k) => [k, suggestForKey(k, ["dryRun", "confirm", "lastModifiedDate"])]).filter((pair) => pair[1] !== null).map(([k, s]) => `"${k}" \u2192 "${s}"`);
|
|
1364
|
-
throw new (0,
|
|
1368
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)(
|
|
1365
1369
|
`invoke: "${operation}" has unknown option key(s) ${unknown.map((k) => `"${k}"`).join(", ")} \u2014 the options set is closed (valid: dryRun, confirm, lastModifiedDate)`,
|
|
1366
1370
|
{
|
|
1367
1371
|
operation,
|
|
@@ -1374,7 +1378,7 @@ function unknownKeysRefusal(raw, validKeys, subject, operation) {
|
|
|
1374
1378
|
const unknown = Object.keys(raw).filter((k) => !validKeys.includes(k));
|
|
1375
1379
|
if (unknown.length === 0) return null;
|
|
1376
1380
|
const suggestions = unknown.map((k) => [k, suggestForKey(k, [...validKeys])]).filter((pair) => pair[1] !== null).map(([k, s]) => `"${k}" \u2192 "${s}"`);
|
|
1377
|
-
return new (0,
|
|
1381
|
+
return new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)(
|
|
1378
1382
|
`unknown ${subject} ${unknown.map((k) => `"${k}"`).join(", ")} \u2014 the ${subject} set is closed (valid keys: ${validKeys.join(", ")})`,
|
|
1379
1383
|
{
|
|
1380
1384
|
...operation !== void 0 ? { operation } : {},
|
|
@@ -1386,7 +1390,7 @@ async function invokeMode(client, operation, argsIn = [], opts = {}) {
|
|
|
1386
1390
|
const args = _nullishCoalesce(argsIn, () => ( []));
|
|
1387
1391
|
const record = byId.get(operation);
|
|
1388
1392
|
if (record === void 0) {
|
|
1389
|
-
throw new (0,
|
|
1393
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)(
|
|
1390
1394
|
`invoke: unknown operation "${operation}" \u2014 it is not in the capability registry`,
|
|
1391
1395
|
{ operation, suggestedAction: "List the registry (the ./capabilities subpath) for the exact operation key." }
|
|
1392
1396
|
);
|
|
@@ -1394,17 +1398,17 @@ async function invokeMode(client, operation, argsIn = [], opts = {}) {
|
|
|
1394
1398
|
validateInvokeOptions(opts, operation);
|
|
1395
1399
|
const mode = opts.mode;
|
|
1396
1400
|
if (mode !== void 0 && MODE_BY_EFFECT[record.effect] !== mode) {
|
|
1397
|
-
throw new (0,
|
|
1401
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)(crossModeRefusal(operation, record.effect, mode), { operation });
|
|
1398
1402
|
}
|
|
1399
1403
|
if (opts.dryRun !== void 0 && typeof opts.dryRun !== "boolean") {
|
|
1400
|
-
throw new (0,
|
|
1404
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)(
|
|
1401
1405
|
`invoke: dryRun must be a boolean (got ${typeof opts.dryRun}) \u2014 "${operation}" was not issued`,
|
|
1402
1406
|
{ operation, suggestedAction: "Pass dryRun: true (simulate) or dryRun: false (apply) as a real boolean." }
|
|
1403
1407
|
);
|
|
1404
1408
|
}
|
|
1405
1409
|
const isWrite = record.effect !== "read";
|
|
1406
1410
|
if (!isWrite && opts.dryRun === true) {
|
|
1407
|
-
throw new (0,
|
|
1411
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)(
|
|
1408
1412
|
`invoke: "${operation}" is a read \u2014 dryRun is not applicable (reads issue their request as-is)`,
|
|
1409
1413
|
{ operation }
|
|
1410
1414
|
);
|
|
@@ -1419,9 +1423,9 @@ async function invokeMode(client, operation, argsIn = [], opts = {}) {
|
|
|
1419
1423
|
validateDispatchArgs(record, args);
|
|
1420
1424
|
validateParamsBag(record, args);
|
|
1421
1425
|
const boundedQuery = record.kind === "primitive" && record.operation === "query";
|
|
1422
|
-
let holder = client[
|
|
1426
|
+
let holder = client[_chunkWTVLHMZAcjs.camelKey.call(void 0, record.resource)];
|
|
1423
1427
|
if (typeof holder === "function") {
|
|
1424
|
-
holder = _nullishCoalesce(client[`${
|
|
1428
|
+
holder = _nullishCoalesce(client[`${_chunkWTVLHMZAcjs.camelKey.call(void 0, record.resource)}Resource`], () => ( holder));
|
|
1425
1429
|
}
|
|
1426
1430
|
if (holder === void 0 && record.resource === "operations") {
|
|
1427
1431
|
holder = {
|
|
@@ -1442,7 +1446,7 @@ async function invokeMode(client, operation, argsIn = [], opts = {}) {
|
|
|
1442
1446
|
// reads ONLY (never an id-in query — the resources table can be blind
|
|
1443
1447
|
// to count/query while per-id reads work); blind-marked rows for ids
|
|
1444
1448
|
// the API user cannot resolve; the name cache (default-on).
|
|
1445
|
-
expandResourceNames: (ids, opts2) =>
|
|
1449
|
+
expandResourceNames: (ids, opts2) => _chunkWTVLHMZAcjs.expandResourceNames.call(void 0, client, ids, opts2),
|
|
1446
1450
|
relationshipMap: (resourceKey) => relationshipMap(client, resourceKey),
|
|
1447
1451
|
// Issue #11: the served blind-surface inventory (zero wire) + the
|
|
1448
1452
|
// bounded caller-opted reachability sweep (read-only, confirmProbe-
|
|
@@ -1455,7 +1459,7 @@ async function invokeMode(client, operation, argsIn = [], opts = {}) {
|
|
|
1455
1459
|
// entityInformation GETs (the op's own cap refuses over-cap fan-outs
|
|
1456
1460
|
// pre-request; per-resource failures are recorded on the row and
|
|
1457
1461
|
// never abort the call).
|
|
1458
|
-
fieldCatalog: (opts2) =>
|
|
1462
|
+
fieldCatalog: (opts2) => _chunkWTVLHMZAcjs.fieldCatalog.call(void 0, client, opts2),
|
|
1459
1463
|
// Issue #9: the one-call recovery/cleanup op — effect write in the
|
|
1460
1464
|
// registry (the governor's dry-run-first applies to it); the op's own
|
|
1461
1465
|
// confirm gate makes the destructive action deliberate (the governor
|
|
@@ -1464,7 +1468,7 @@ async function invokeMode(client, operation, argsIn = [], opts = {}) {
|
|
|
1464
1468
|
};
|
|
1465
1469
|
}
|
|
1466
1470
|
if (holder === void 0) {
|
|
1467
|
-
throw new (0,
|
|
1471
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)(
|
|
1468
1472
|
`invoke: the client exposes no accessor for resource "${record.resource}"`,
|
|
1469
1473
|
{ operation }
|
|
1470
1474
|
);
|
|
@@ -1472,7 +1476,7 @@ async function invokeMode(client, operation, argsIn = [], opts = {}) {
|
|
|
1472
1476
|
const methodName = boundedQuery ? "queryBounded" : record.operation;
|
|
1473
1477
|
const method = holder[methodName];
|
|
1474
1478
|
if (typeof method !== "function") {
|
|
1475
|
-
throw new (0,
|
|
1479
|
+
throw new (0, _chunkWTVLHMZAcjs.AutotaskConfigError)(
|
|
1476
1480
|
`invoke: "${record.resource}.${methodName}" is not a callable method on the client`,
|
|
1477
1481
|
{ operation }
|
|
1478
1482
|
);
|
|
@@ -1573,5 +1577,5 @@ async function invokeDelete(client, operation, args = [], opts = {}) {
|
|
|
1573
1577
|
|
|
1574
1578
|
|
|
1575
1579
|
|
|
1576
|
-
|
|
1577
|
-
|
|
1580
|
+
|
|
1581
|
+
exports.AGGREGATE_DEFAULT_LIMIT = AGGREGATE_DEFAULT_LIMIT; exports.AGGREGATE_DEFAULT_TOP = AGGREGATE_DEFAULT_TOP; exports.AGGREGATE_TOP_MAX = AGGREGATE_TOP_MAX; exports.BLIND_SURFACE_KINDS = BLIND_SURFACE_KINDS; exports.CREATE_BLOCKER_KINDS = CREATE_BLOCKER_KINDS; exports.EXPAND_RESOURCE_NAMES_MAX_IDS = _chunkWTVLHMZAcjs.EXPAND_RESOURCE_NAMES_MAX_IDS; exports.FETCH_BY_IDS_CHUNK_SIZE = FETCH_BY_IDS_CHUNK_SIZE; exports.FETCH_BY_IDS_MAX_ITEMS = FETCH_BY_IDS_MAX_ITEMS; exports.FETCH_MANY_MAX_ITEMS = FETCH_MANY_MAX_ITEMS; exports.FIELD_CACHE_KINDS = _chunkWTVLHMZAcjs.FIELD_CACHE_KINDS; exports.FIELD_CATALOG_HONESTY_NOTE = _chunkWTVLHMZAcjs.FIELD_CATALOG_HONESTY_NOTE; exports.INVOKE_OPTION_KEYS = INVOKE_OPTION_KEYS; exports.MAX_FIELD_CATALOG_WIRE = _chunkWTVLHMZAcjs.MAX_FIELD_CATALOG_WIRE; exports.PARAMS_BAG_KEYS = PARAMS_BAG_KEYS; exports.PICKLIST_VALUE_NOT_SERVED_NOTE = _chunkWTVLHMZAcjs.PICKLIST_VALUE_NOT_SERVED_NOTE; exports.RECOVERY_CONFIRM = RECOVERY_CONFIRM; exports.RECOVERY_DEFAULT_LIMIT = RECOVERY_DEFAULT_LIMIT; exports.RECOVERY_MAX_LIMIT = RECOVERY_MAX_LIMIT; exports.WORKFLOW_RESOURCES = _chunkWTVLHMZAcjs.WORKFLOW_RESOURCES; exports.aggregate = aggregate; exports.blindSurfaces = blindSurfaces; exports.createGuidance = createGuidance; exports.expandResourceNames = _chunkWTVLHMZAcjs.expandResourceNames; exports.fetchByIds = fetchByIds; exports.fetchMany = fetchMany; exports.fieldCatalog = _chunkWTVLHMZAcjs.fieldCatalog; exports.invoke = invoke; exports.invokeDelete = invokeDelete; exports.invokeRead = invokeRead; exports.invokeWrite = invokeWrite; exports.needsConfirmation = needsConfirmation; exports.probeReachability = probeReachability; exports.recovery = recovery; exports.relationshipMap = relationshipMap; exports.resolveAny = resolveAny; exports.searchAcrossResources = searchAcrossResources; exports.unknownKeysRefusal = unknownKeysRefusal; exports.validateDispatchArgs = validateDispatchArgs; exports.validateFetchManyItems = validateFetchManyItems; exports.validateInvokeOptions = validateInvokeOptions; exports.validateParamsBag = validateParamsBag;
|