mcp-dataverse 0.3.8 → 0.3.9
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/CAPABILITIES.md +1039 -1039
- package/LICENSE +21 -21
- package/README.md +114 -105
- package/dist/auth-provider.factory-MSMLSOX3.js +1 -0
- package/dist/chunk-24RDOMG4.js +29 -0
- package/dist/chunk-OXKMMPM3.js +37 -0
- package/dist/chunk-PAX4NW5B.js +1 -0
- package/dist/chunk-SUDI4JM6.js +3 -0
- package/dist/config.loader-VTIKUDN7.js +1 -0
- package/dist/dataverse-client-advanced-T5ZJMRLK.js +1 -0
- package/dist/doctor.js +2 -102
- package/dist/http-server.js +3 -61
- package/dist/install.js +8 -233
- package/dist/server.js +43 -202
- package/dist/setup-auth.js +18 -41
- package/package.json +95 -94
- package/server.json +51 -50
- package/dist/auth/auth-provider.factory.d.ts +0 -4
- package/dist/auth/auth-provider.factory.d.ts.map +0 -1
- package/dist/auth/auth-provider.factory.js +0 -5
- package/dist/auth/auth-provider.factory.js.map +0 -1
- package/dist/auth/auth-provider.interface.d.ts +0 -21
- package/dist/auth/auth-provider.interface.d.ts.map +0 -1
- package/dist/auth/auth-provider.interface.js +0 -2
- package/dist/auth/auth-provider.interface.js.map +0 -1
- package/dist/auth/device-code-auth-provider.d.ts +0 -18
- package/dist/auth/device-code-auth-provider.d.ts.map +0 -1
- package/dist/auth/device-code-auth-provider.js +0 -167
- package/dist/auth/device-code-auth-provider.js.map +0 -1
- package/dist/config/config.loader.d.ts +0 -3
- package/dist/config/config.loader.d.ts.map +0 -1
- package/dist/config/config.loader.js +0 -39
- package/dist/config/config.loader.js.map +0 -1
- package/dist/config/config.schema.d.ts +0 -16
- package/dist/config/config.schema.d.ts.map +0 -1
- package/dist/config/config.schema.js +0 -20
- package/dist/config/config.schema.js.map +0 -1
- package/dist/dataverse/dataverse-client-advanced.d.ts +0 -53
- package/dist/dataverse/dataverse-client-advanced.d.ts.map +0 -1
- package/dist/dataverse/dataverse-client-advanced.js +0 -199
- package/dist/dataverse/dataverse-client-advanced.js.map +0 -1
- package/dist/dataverse/dataverse-client.actions.d.ts +0 -11
- package/dist/dataverse/dataverse-client.actions.d.ts.map +0 -1
- package/dist/dataverse/dataverse-client.actions.js +0 -25
- package/dist/dataverse/dataverse-client.actions.js.map +0 -1
- package/dist/dataverse/dataverse-client.batch.d.ts +0 -10
- package/dist/dataverse/dataverse-client.batch.d.ts.map +0 -1
- package/dist/dataverse/dataverse-client.batch.js +0 -74
- package/dist/dataverse/dataverse-client.batch.js.map +0 -1
- package/dist/dataverse/dataverse-client.d.ts +0 -46
- package/dist/dataverse/dataverse-client.d.ts.map +0 -1
- package/dist/dataverse/dataverse-client.js +0 -275
- package/dist/dataverse/dataverse-client.js.map +0 -1
- package/dist/dataverse/dataverse-client.metadata.d.ts +0 -41
- package/dist/dataverse/dataverse-client.metadata.d.ts.map +0 -1
- package/dist/dataverse/dataverse-client.metadata.js +0 -124
- package/dist/dataverse/dataverse-client.metadata.js.map +0 -1
- package/dist/dataverse/dataverse-client.utils.d.ts +0 -14
- package/dist/dataverse/dataverse-client.utils.d.ts.map +0 -1
- package/dist/dataverse/dataverse-client.utils.js +0 -65
- package/dist/dataverse/dataverse-client.utils.js.map +0 -1
- package/dist/dataverse/http-client.d.ts +0 -38
- package/dist/dataverse/http-client.d.ts.map +0 -1
- package/dist/dataverse/http-client.js +0 -111
- package/dist/dataverse/http-client.js.map +0 -1
- package/dist/dataverse/types.d.ts +0 -68
- package/dist/dataverse/types.d.ts.map +0 -1
- package/dist/dataverse/types.js +0 -2
- package/dist/dataverse/types.js.map +0 -1
- package/dist/doctor.d.ts +0 -7
- package/dist/doctor.d.ts.map +0 -1
- package/dist/doctor.js.map +0 -1
- package/dist/http-server.d.ts +0 -3
- package/dist/http-server.d.ts.map +0 -1
- package/dist/http-server.js.map +0 -1
- package/dist/install.d.ts +0 -3
- package/dist/install.d.ts.map +0 -1
- package/dist/install.js.map +0 -1
- package/dist/resources/resource-provider.d.ts +0 -11
- package/dist/resources/resource-provider.d.ts.map +0 -1
- package/dist/resources/resource-provider.js +0 -79
- package/dist/resources/resource-provider.js.map +0 -1
- package/dist/server.d.ts +0 -3
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js.map +0 -1
- package/dist/setup-auth.d.ts +0 -3
- package/dist/setup-auth.d.ts.map +0 -1
- package/dist/setup-auth.js.map +0 -1
- package/dist/tools/actions.tools.d.ts +0 -206
- package/dist/tools/actions.tools.d.ts.map +0 -1
- package/dist/tools/actions.tools.js +0 -256
- package/dist/tools/actions.tools.js.map +0 -1
- package/dist/tools/annotations.tools.d.ts +0 -94
- package/dist/tools/annotations.tools.d.ts.map +0 -1
- package/dist/tools/annotations.tools.js +0 -225
- package/dist/tools/annotations.tools.js.map +0 -1
- package/dist/tools/audit.tools.d.ts +0 -51
- package/dist/tools/audit.tools.d.ts.map +0 -1
- package/dist/tools/audit.tools.js +0 -170
- package/dist/tools/audit.tools.js.map +0 -1
- package/dist/tools/auth.tools.d.ts +0 -23
- package/dist/tools/auth.tools.d.ts.map +0 -1
- package/dist/tools/auth.tools.js +0 -36
- package/dist/tools/auth.tools.js.map +0 -1
- package/dist/tools/batch.tools.d.ts +0 -52
- package/dist/tools/batch.tools.d.ts.map +0 -1
- package/dist/tools/batch.tools.js +0 -89
- package/dist/tools/batch.tools.js.map +0 -1
- package/dist/tools/crud.tools.d.ts +0 -260
- package/dist/tools/crud.tools.d.ts.map +0 -1
- package/dist/tools/crud.tools.js +0 -290
- package/dist/tools/crud.tools.js.map +0 -1
- package/dist/tools/customization.tools.d.ts +0 -127
- package/dist/tools/customization.tools.d.ts.map +0 -1
- package/dist/tools/customization.tools.js +0 -285
- package/dist/tools/customization.tools.js.map +0 -1
- package/dist/tools/environment.tools.d.ts +0 -106
- package/dist/tools/environment.tools.d.ts.map +0 -1
- package/dist/tools/environment.tools.js +0 -274
- package/dist/tools/environment.tools.js.map +0 -1
- package/dist/tools/file.tools.d.ts +0 -73
- package/dist/tools/file.tools.d.ts.map +0 -1
- package/dist/tools/file.tools.js +0 -160
- package/dist/tools/file.tools.js.map +0 -1
- package/dist/tools/guardrails.d.ts +0 -22
- package/dist/tools/guardrails.d.ts.map +0 -1
- package/dist/tools/guardrails.js +0 -56
- package/dist/tools/guardrails.js.map +0 -1
- package/dist/tools/impersonate.tools.d.ts +0 -44
- package/dist/tools/impersonate.tools.d.ts.map +0 -1
- package/dist/tools/impersonate.tools.js +0 -87
- package/dist/tools/impersonate.tools.js.map +0 -1
- package/dist/tools/metadata.tools.d.ts +0 -279
- package/dist/tools/metadata.tools.d.ts.map +0 -1
- package/dist/tools/metadata.tools.js +0 -400
- package/dist/tools/metadata.tools.js.map +0 -1
- package/dist/tools/org.tools.d.ts +0 -32
- package/dist/tools/org.tools.d.ts.map +0 -1
- package/dist/tools/org.tools.js +0 -65
- package/dist/tools/org.tools.js.map +0 -1
- package/dist/tools/output.utils.d.ts +0 -63
- package/dist/tools/output.utils.d.ts.map +0 -1
- package/dist/tools/output.utils.js +0 -78
- package/dist/tools/output.utils.js.map +0 -1
- package/dist/tools/progress.d.ts +0 -15
- package/dist/tools/progress.d.ts.map +0 -1
- package/dist/tools/progress.js +0 -29
- package/dist/tools/progress.js.map +0 -1
- package/dist/tools/quality.tools.d.ts +0 -36
- package/dist/tools/quality.tools.d.ts.map +0 -1
- package/dist/tools/quality.tools.js +0 -97
- package/dist/tools/quality.tools.js.map +0 -1
- package/dist/tools/query.tools.d.ts +0 -151
- package/dist/tools/query.tools.d.ts.map +0 -1
- package/dist/tools/query.tools.js +0 -293
- package/dist/tools/query.tools.js.map +0 -1
- package/dist/tools/relations.tools.d.ts +0 -77
- package/dist/tools/relations.tools.d.ts.map +0 -1
- package/dist/tools/relations.tools.js +0 -96
- package/dist/tools/relations.tools.js.map +0 -1
- package/dist/tools/router.tools.d.ts +0 -5
- package/dist/tools/router.tools.d.ts.map +0 -1
- package/dist/tools/router.tools.js +0 -247
- package/dist/tools/router.tools.js.map +0 -1
- package/dist/tools/search.tools.d.ts +0 -74
- package/dist/tools/search.tools.d.ts.map +0 -1
- package/dist/tools/search.tools.js +0 -142
- package/dist/tools/search.tools.js.map +0 -1
- package/dist/tools/solution.tools.d.ts +0 -113
- package/dist/tools/solution.tools.d.ts.map +0 -1
- package/dist/tools/solution.tools.js +0 -176
- package/dist/tools/solution.tools.js.map +0 -1
- package/dist/tools/teams.tools.d.ts +0 -65
- package/dist/tools/teams.tools.d.ts.map +0 -1
- package/dist/tools/teams.tools.js +0 -127
- package/dist/tools/teams.tools.js.map +0 -1
- package/dist/tools/tool-registry.d.ts +0 -35
- package/dist/tools/tool-registry.d.ts.map +0 -1
- package/dist/tools/tool-registry.js +0 -31
- package/dist/tools/tool-registry.js.map +0 -1
- package/dist/tools/trace.tools.d.ts +0 -75
- package/dist/tools/trace.tools.d.ts.map +0 -1
- package/dist/tools/trace.tools.js +0 -233
- package/dist/tools/trace.tools.js.map +0 -1
- package/dist/tools/tracking.tools.d.ts +0 -41
- package/dist/tools/tracking.tools.d.ts.map +0 -1
- package/dist/tools/tracking.tools.js +0 -76
- package/dist/tools/tracking.tools.js.map +0 -1
- package/dist/tools/users.tools.d.ts +0 -141
- package/dist/tools/users.tools.d.ts.map +0 -1
- package/dist/tools/users.tools.js +0 -321
- package/dist/tools/users.tools.js.map +0 -1
- package/dist/tools/validation.utils.d.ts +0 -6
- package/dist/tools/validation.utils.d.ts.map +0 -1
- package/dist/tools/validation.utils.js +0 -14
- package/dist/tools/validation.utils.js.map +0 -1
- package/dist/tools/views.tools.d.ts +0 -36
- package/dist/tools/views.tools.d.ts.map +0 -1
- package/dist/tools/views.tools.js +0 -92
- package/dist/tools/views.tools.js.map +0 -1
- package/dist/tools/workflow.tools.d.ts +0 -111
- package/dist/tools/workflow.tools.d.ts.map +0 -1
- package/dist/tools/workflow.tools.js +0 -449
- package/dist/tools/workflow.tools.js.map +0 -1
- package/dist/transport.d.ts +0 -6
- package/dist/transport.d.ts.map +0 -1
- package/dist/transport.js +0 -21
- package/dist/transport.js.map +0 -1
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { readFileSync, existsSync } from "fs";
|
|
2
|
-
import { join } from "path";
|
|
3
|
-
import { homedir } from "os";
|
|
4
|
-
import { ConfigSchema } from "./config.schema.js";
|
|
5
|
-
const CONFIG_FILE_NAME = "config.json";
|
|
6
|
-
export function loadConfig() {
|
|
7
|
-
// Priority: env vars > 1. MCP_CONFIG_PATH > 2. ~/.mcp-dataverse/config.json > 3. cwd/config.json
|
|
8
|
-
const defaultConfigPath = join(homedir(), ".mcp-dataverse", CONFIG_FILE_NAME);
|
|
9
|
-
const configPath = process.env["MCP_CONFIG_PATH"] ??
|
|
10
|
-
(existsSync(defaultConfigPath) ? defaultConfigPath : join(process.cwd(), CONFIG_FILE_NAME));
|
|
11
|
-
let rawConfig = {};
|
|
12
|
-
if (existsSync(configPath)) {
|
|
13
|
-
const fileContent = readFileSync(configPath, "utf-8");
|
|
14
|
-
try {
|
|
15
|
-
rawConfig = JSON.parse(fileContent);
|
|
16
|
-
}
|
|
17
|
-
catch {
|
|
18
|
-
throw new Error(`Invalid JSON in ${configPath}. Check for syntax errors (trailing commas, missing quotes).`);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
// Override with env vars if present.
|
|
22
|
-
// Accepts both SCREAMING_SNAKE_CASE (documented, server.json) and camelCase
|
|
23
|
-
// (generated by VS Code when it reads config.example.json from the npm package).
|
|
24
|
-
const envUrl = process.env["DATAVERSE_ENV_URL"] ?? process.env["environmentUrl"];
|
|
25
|
-
if (envUrl)
|
|
26
|
-
rawConfig["environmentUrl"] = envUrl;
|
|
27
|
-
const timeoutMs = process.env["REQUEST_TIMEOUT_MS"] ?? process.env["requestTimeoutMs"];
|
|
28
|
-
if (timeoutMs)
|
|
29
|
-
rawConfig["requestTimeoutMs"] = Number(timeoutMs);
|
|
30
|
-
const maxRetries = process.env["MAX_RETRIES"] ?? process.env["maxRetries"];
|
|
31
|
-
if (maxRetries)
|
|
32
|
-
rawConfig["maxRetries"] = Number(maxRetries);
|
|
33
|
-
const result = ConfigSchema.safeParse(rawConfig);
|
|
34
|
-
if (!result.success) {
|
|
35
|
-
throw new Error(`Invalid configuration:\n${result.error.issues.map((i) => ` - ${i.path.join(".")}: ${i.message}`).join("\n")}`);
|
|
36
|
-
}
|
|
37
|
-
return result.data;
|
|
38
|
-
}
|
|
39
|
-
//# sourceMappingURL=config.loader.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.loader.js","sourceRoot":"","sources":["../../src/config/config.loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAe,MAAM,oBAAoB,CAAC;AAE/D,MAAM,gBAAgB,GAAG,aAAa,CAAC;AAEvC,MAAM,UAAU,UAAU;IACxB,iGAAiG;IACjG,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;IAC9E,MAAM,UAAU,GACd,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAC9B,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAE9F,IAAI,SAAS,GAA4B,EAAE,CAAC;IAE5C,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,MAAM,WAAW,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACtD,IAAI,CAAC;YACH,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAA4B,CAAC;QACjE,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CACb,mBAAmB,UAAU,8DAA8D,CAC5F,CAAC;QACJ,CAAC;IACH,CAAC;IAED,qCAAqC;IACrC,4EAA4E;IAC5E,iFAAiF;IACjF,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACjF,IAAI,MAAM;QAAE,SAAS,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC;IAEjD,MAAM,SAAS,GACb,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACvE,IAAI,SAAS;QAAE,SAAS,CAAC,kBAAkB,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IAEjE,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC3E,IAAI,UAAU;QAAE,SAAS,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IAE7D,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAEjD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACb,2BAA2B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAChH,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
export declare const ConfigSchema: z.ZodObject<{
|
|
3
|
-
environmentUrl: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>;
|
|
4
|
-
requestTimeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
5
|
-
maxRetries: z.ZodDefault<z.ZodNumber>;
|
|
6
|
-
}, "strip", z.ZodTypeAny, {
|
|
7
|
-
environmentUrl: string;
|
|
8
|
-
requestTimeoutMs: number;
|
|
9
|
-
maxRetries: number;
|
|
10
|
-
}, {
|
|
11
|
-
environmentUrl: string;
|
|
12
|
-
requestTimeoutMs?: number | undefined;
|
|
13
|
-
maxRetries?: number | undefined;
|
|
14
|
-
}>;
|
|
15
|
-
export type Config = z.infer<typeof ConfigSchema>;
|
|
16
|
-
//# sourceMappingURL=config.schema.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.schema.d.ts","sourceRoot":"","sources":["../../src/config/config.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,YAAY;;;;;;;;;;;;EAmBvB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
export const ConfigSchema = z.object({
|
|
3
|
-
environmentUrl: z
|
|
4
|
-
.string()
|
|
5
|
-
.url("Must be a valid Dataverse environment URL")
|
|
6
|
-
.refine((url) => url.startsWith("https://"), {
|
|
7
|
-
message: "Dataverse environment URL must use HTTPS",
|
|
8
|
-
})
|
|
9
|
-
.refine((url) => {
|
|
10
|
-
try {
|
|
11
|
-
return new URL(url).hostname.toLowerCase().endsWith(".dynamics.com");
|
|
12
|
-
}
|
|
13
|
-
catch {
|
|
14
|
-
return false;
|
|
15
|
-
}
|
|
16
|
-
}, { message: "environmentUrl must be a *.dynamics.com host" }),
|
|
17
|
-
requestTimeoutMs: z.number().positive().default(30000),
|
|
18
|
-
maxRetries: z.number().min(0).max(10).default(3),
|
|
19
|
-
});
|
|
20
|
-
//# sourceMappingURL=config.schema.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.schema.js","sourceRoot":"","sources":["../../src/config/config.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,cAAc,EAAE,CAAC;SACd,MAAM,EAAE;SACR,GAAG,CAAC,2CAA2C,CAAC;SAChD,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;QAC3C,OAAO,EAAE,0CAA0C;KACpD,CAAC;SACD,MAAM,CACL,CAAC,GAAG,EAAE,EAAE;QACN,IAAI,CAAC;YACH,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QACvE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,EACD,EAAE,OAAO,EAAE,8CAA8C,EAAE,CAC5D;IACH,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACtD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;CACjD,CAAC,CAAC"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { DataverseBatchClient } from "./dataverse-client.batch.js";
|
|
2
|
-
/**
|
|
3
|
-
* Extends DataverseMetadataClient with advanced query capabilities:
|
|
4
|
-
* bound functions, server-side paging, and change tracking (delta queries).
|
|
5
|
-
*/
|
|
6
|
-
export declare class DataverseAdvancedClient extends DataverseBatchClient {
|
|
7
|
-
executeBoundFunction<T = unknown>(entitySetName: string, recordId: string, functionName: string, params?: Record<string, string>): Promise<T>;
|
|
8
|
-
queryWithPaging<T = Record<string, unknown>>(entitySetName: string, options?: {
|
|
9
|
-
select?: string[];
|
|
10
|
-
filter?: string;
|
|
11
|
-
orderby?: string;
|
|
12
|
-
expand?: string;
|
|
13
|
-
maxTotal?: number;
|
|
14
|
-
}): Promise<{
|
|
15
|
-
records: T[];
|
|
16
|
-
totalRetrieved: number;
|
|
17
|
-
pageCount: number;
|
|
18
|
-
}>;
|
|
19
|
-
getChangedRecords<T = Record<string, unknown>>(entitySetName: string, deltaToken: string | null, select?: string[]): Promise<{
|
|
20
|
-
newAndModified: T[];
|
|
21
|
-
deleted: Array<{
|
|
22
|
-
id: string;
|
|
23
|
-
}>;
|
|
24
|
-
nextDeltaToken: string | null;
|
|
25
|
-
}>;
|
|
26
|
-
getSolutionComponents(solutionName: string, componentType?: number, top?: number): Promise<{
|
|
27
|
-
solutionName: string;
|
|
28
|
-
solutionId: string;
|
|
29
|
-
friendlyName: string;
|
|
30
|
-
version: string;
|
|
31
|
-
components: Array<{
|
|
32
|
-
componentType: number;
|
|
33
|
-
componentTypeName: string;
|
|
34
|
-
objectId: string;
|
|
35
|
-
}>;
|
|
36
|
-
count: number;
|
|
37
|
-
}>;
|
|
38
|
-
publishCustomizations(components?: {
|
|
39
|
-
entities?: string[] | undefined;
|
|
40
|
-
webResources?: string[] | undefined;
|
|
41
|
-
optionSets?: string[] | undefined;
|
|
42
|
-
}): Promise<{
|
|
43
|
-
published: boolean;
|
|
44
|
-
message: string;
|
|
45
|
-
}>;
|
|
46
|
-
listDataverseWorkflows(params: {
|
|
47
|
-
category?: number;
|
|
48
|
-
top?: number;
|
|
49
|
-
nameContains?: string;
|
|
50
|
-
}): Promise<Record<string, unknown>[]>;
|
|
51
|
-
getDataverseWorkflow(workflowId: string): Promise<Record<string, unknown>>;
|
|
52
|
-
}
|
|
53
|
-
//# sourceMappingURL=dataverse-client-advanced.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dataverse-client-advanced.d.ts","sourceRoot":"","sources":["../../src/dataverse/dataverse-client-advanced.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AA6BnE;;;GAGG;AACH,qBAAa,uBAAwB,SAAQ,oBAAoB;IAGzD,oBAAoB,CAAC,CAAC,GAAG,OAAO,EACpC,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAClC,OAAO,CAAC,CAAC,CAAC;IAYP,eAAe,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/C,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE;QACP,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACd,GACL,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC,EAAE,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IA8BjE,iBAAiB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjD,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,MAAM,CAAC,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC;QACT,cAAc,EAAE,CAAC,EAAE,CAAC;QACpB,OAAO,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC/B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;KAC/B,CAAC;IAiDI,qBAAqB,CACzB,YAAY,EAAE,MAAM,EACpB,aAAa,CAAC,EAAE,MAAM,EACtB,GAAG,SAAM,GACR,OAAO,CAAC;QACT,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,KAAK,CAAC;YAChB,aAAa,EAAE,MAAM,CAAC;YACtB,iBAAiB,EAAE,MAAM,CAAC;YAC1B,QAAQ,EAAE,MAAM,CAAC;SAClB,CAAC,CAAC;QACH,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IAuCI,qBAAqB,CAAC,UAAU,CAAC,EAAE;QACvC,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;QAChC,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;QACpC,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;KACnC,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAyD9C,sBAAsB,CAAC,MAAM,EAAE;QACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAiBhC,oBAAoB,CACxB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CASpC"}
|
|
@@ -1,199 +0,0 @@
|
|
|
1
|
-
import { DataverseBatchClient } from "./dataverse-client.batch.js";
|
|
2
|
-
import { esc } from "./dataverse-client.utils.js";
|
|
3
|
-
const COMPONENT_TYPE_MAP = {
|
|
4
|
-
1: "Entity",
|
|
5
|
-
2: "Attribute",
|
|
6
|
-
3: "Relationship",
|
|
7
|
-
9: "OptionSet",
|
|
8
|
-
29: "Workflow",
|
|
9
|
-
61: "SystemForm",
|
|
10
|
-
71: "SiteMap",
|
|
11
|
-
90: "PluginAssembly",
|
|
12
|
-
92: "PluginType",
|
|
13
|
-
97: "WebResource",
|
|
14
|
-
95: "ServiceEndpoint",
|
|
15
|
-
79: "ConnectionRole",
|
|
16
|
-
};
|
|
17
|
-
/** Escapes a string for safe embedding inside an XML element value. */
|
|
18
|
-
function xmlEscape(v) {
|
|
19
|
-
return v
|
|
20
|
-
.replace(/&/g, "&")
|
|
21
|
-
.replace(/</g, "<")
|
|
22
|
-
.replace(/>/g, ">")
|
|
23
|
-
.replace(/"/g, """)
|
|
24
|
-
.replace(/'/g, "'");
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Extends DataverseMetadataClient with advanced query capabilities:
|
|
28
|
-
* bound functions, server-side paging, and change tracking (delta queries).
|
|
29
|
-
*/
|
|
30
|
-
export class DataverseAdvancedClient extends DataverseBatchClient {
|
|
31
|
-
// ─── Advanced Actions & Functions ────────────────────────────────────────
|
|
32
|
-
async executeBoundFunction(entitySetName, recordId, functionName, params = {}) {
|
|
33
|
-
const paramStr = Object.entries(params)
|
|
34
|
-
.map(([k, v]) => `${esc(k)}='${esc(v)}'`)
|
|
35
|
-
.join(",");
|
|
36
|
-
const url = `${entitySetName}(${recordId})/${functionName}(${paramStr})`;
|
|
37
|
-
return this.requestWithRetry(() => this.http.get(url).then((r) => r.data));
|
|
38
|
-
}
|
|
39
|
-
// ─── Paging ──────────────────────────────────────────────────────────────
|
|
40
|
-
async queryWithPaging(entitySetName, options = {}) {
|
|
41
|
-
const maxTotal = Math.min(options.maxTotal ?? 5000, 50000);
|
|
42
|
-
const records = [];
|
|
43
|
-
let pageCount = 0;
|
|
44
|
-
const queryOptions = {};
|
|
45
|
-
if (options.select !== undefined)
|
|
46
|
-
queryOptions.select = options.select;
|
|
47
|
-
if (options.filter !== undefined)
|
|
48
|
-
queryOptions.filter = options.filter;
|
|
49
|
-
if (options.orderby !== undefined)
|
|
50
|
-
queryOptions.orderby = options.orderby;
|
|
51
|
-
if (options.expand !== undefined)
|
|
52
|
-
queryOptions.expand = options.expand;
|
|
53
|
-
let response = await this.query(entitySetName, queryOptions);
|
|
54
|
-
records.push(...response.value);
|
|
55
|
-
pageCount++;
|
|
56
|
-
while (response["@odata.nextLink"] && records.length < maxTotal) {
|
|
57
|
-
const nextLink = response["@odata.nextLink"];
|
|
58
|
-
response = await this.requestWithRetry(() => this.http.get(nextLink).then((r) => r.data));
|
|
59
|
-
records.push(...response.value);
|
|
60
|
-
pageCount++;
|
|
61
|
-
}
|
|
62
|
-
const trimmed = records.slice(0, maxTotal);
|
|
63
|
-
return { records: trimmed, totalRetrieved: trimmed.length, pageCount };
|
|
64
|
-
}
|
|
65
|
-
// ─── Change Tracking ─────────────────────────────────────────────────────
|
|
66
|
-
async getChangedRecords(entitySetName, deltaToken, select) {
|
|
67
|
-
let url;
|
|
68
|
-
const extraHeaders = {};
|
|
69
|
-
if (deltaToken === null) {
|
|
70
|
-
const selectStr = select?.length ? `?$select=${select.join(",")}` : "";
|
|
71
|
-
url = `${entitySetName}${selectStr}`;
|
|
72
|
-
extraHeaders["Prefer"] = "odata.track-changes";
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
const selectStr = select?.length ? `&$select=${select.join(",")}` : "";
|
|
76
|
-
url = `${entitySetName}?$deltatoken=${deltaToken}${selectStr}`;
|
|
77
|
-
}
|
|
78
|
-
const response = await this.requestWithRetry(() => this.http
|
|
79
|
-
.get(url, { headers: extraHeaders })
|
|
80
|
-
.then((r) => r.data));
|
|
81
|
-
const value = response.value ?? [];
|
|
82
|
-
const newAndModified = [];
|
|
83
|
-
const deleted = [];
|
|
84
|
-
for (const record of value) {
|
|
85
|
-
if ("@removed" in record) {
|
|
86
|
-
const idUrl = String(record["@id"] ?? "");
|
|
87
|
-
const match = idUrl.match(/\(([^)]+)\)$/);
|
|
88
|
-
deleted.push({ id: match ? match[1] : idUrl });
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
newAndModified.push(record);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
const deltaLink = response["@odata.deltaLink"];
|
|
95
|
-
let nextDeltaToken = null;
|
|
96
|
-
if (deltaLink) {
|
|
97
|
-
const match = deltaLink.match(/\$deltatoken=([^&]+)/);
|
|
98
|
-
nextDeltaToken = match ? decodeURIComponent(match[1]) : null;
|
|
99
|
-
}
|
|
100
|
-
return { newAndModified, deleted, nextDeltaToken };
|
|
101
|
-
}
|
|
102
|
-
// ─── Solution ────────────────────────────────────────────────────────────
|
|
103
|
-
async getSolutionComponents(solutionName, componentType, top = 200) {
|
|
104
|
-
return this.requestWithRetry(async () => {
|
|
105
|
-
const solResp = await this.http.get(`solutions?$filter=uniquename eq '${esc(solutionName)}'&$select=solutionid,uniquename,friendlyname,version&$top=1`);
|
|
106
|
-
const solutions = solResp.data.value;
|
|
107
|
-
if (!solutions.length)
|
|
108
|
-
throw new Error(`Solution '${solutionName}' not found`);
|
|
109
|
-
const sol = solutions[0];
|
|
110
|
-
const solutionId = sol["solutionid"];
|
|
111
|
-
let filter = `_solutionid_value eq ${solutionId}`;
|
|
112
|
-
if (componentType !== undefined)
|
|
113
|
-
filter += ` and componenttype eq ${componentType}`;
|
|
114
|
-
const compResp = await this.http.get(`solutioncomponents?$filter=${filter}&$select=componenttype,objectid&$top=${top}&$orderby=componenttype`);
|
|
115
|
-
const components = compResp.data.value.map((c) => ({
|
|
116
|
-
componentType: c["componenttype"],
|
|
117
|
-
componentTypeName: COMPONENT_TYPE_MAP[c["componenttype"]] ??
|
|
118
|
-
`Type${c["componenttype"]}`,
|
|
119
|
-
objectId: c["objectid"],
|
|
120
|
-
}));
|
|
121
|
-
return {
|
|
122
|
-
solutionName: sol["uniquename"],
|
|
123
|
-
solutionId,
|
|
124
|
-
friendlyName: sol["friendlyname"],
|
|
125
|
-
version: sol["version"],
|
|
126
|
-
components,
|
|
127
|
-
count: components.length,
|
|
128
|
-
};
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
async publishCustomizations(components) {
|
|
132
|
-
return this.requestWithRetry(async () => {
|
|
133
|
-
const hasComponents = components &&
|
|
134
|
-
((components.entities?.length ?? 0) > 0 ||
|
|
135
|
-
(components.webResources?.length ?? 0) > 0 ||
|
|
136
|
-
(components.optionSets?.length ?? 0) > 0);
|
|
137
|
-
if (!hasComponents) {
|
|
138
|
-
await this.http.post("PublishAllXml", {}, { timeoutMs: 120_000 });
|
|
139
|
-
return {
|
|
140
|
-
published: true,
|
|
141
|
-
message: "All customizations published successfully",
|
|
142
|
-
};
|
|
143
|
-
}
|
|
144
|
-
let paramXml = "<importexportxml>";
|
|
145
|
-
if (components.entities?.length) {
|
|
146
|
-
paramXml +=
|
|
147
|
-
"<entities>" +
|
|
148
|
-
components.entities
|
|
149
|
-
.map((e) => `<entity>${xmlEscape(e)}</entity>`)
|
|
150
|
-
.join("") +
|
|
151
|
-
"</entities>";
|
|
152
|
-
}
|
|
153
|
-
if (components.webResources?.length) {
|
|
154
|
-
paramXml +=
|
|
155
|
-
"<webresources>" +
|
|
156
|
-
components.webResources
|
|
157
|
-
.map((r) => `<webresource>${xmlEscape(r)}</webresource>`)
|
|
158
|
-
.join("") +
|
|
159
|
-
"</webresources>";
|
|
160
|
-
}
|
|
161
|
-
if (components.optionSets?.length) {
|
|
162
|
-
paramXml +=
|
|
163
|
-
"<optionsets>" +
|
|
164
|
-
components.optionSets
|
|
165
|
-
.map((o) => `<optionset>${xmlEscape(o)}</optionset>`)
|
|
166
|
-
.join("") +
|
|
167
|
-
"</optionsets>";
|
|
168
|
-
}
|
|
169
|
-
paramXml += "</importexportxml>";
|
|
170
|
-
await this.http.post("PublishXml", { ParameterXml: paramXml }, { timeoutMs: 120_000 });
|
|
171
|
-
return {
|
|
172
|
-
published: true,
|
|
173
|
-
message: "Selected customizations published successfully",
|
|
174
|
-
};
|
|
175
|
-
});
|
|
176
|
-
}
|
|
177
|
-
// ─── Workflows / Processes ───────────────────────────────────────────────
|
|
178
|
-
async listDataverseWorkflows(params) {
|
|
179
|
-
return this.requestWithRetry(async () => {
|
|
180
|
-
const filters = [];
|
|
181
|
-
if (params.category !== undefined)
|
|
182
|
-
filters.push(`category eq ${params.category}`);
|
|
183
|
-
if (params.nameContains)
|
|
184
|
-
filters.push(`contains(name,'${esc(params.nameContains)}')`);
|
|
185
|
-
let url = `workflows?$select=workflowid,name,description,category,statecode,` +
|
|
186
|
-
`statuscode,type,modifiedon&$orderby=name asc&$top=${params.top ?? 50}`;
|
|
187
|
-
if (filters.length > 0)
|
|
188
|
-
url += `&$filter=${filters.join(" and ")}`;
|
|
189
|
-
const result = await this.http.get(url);
|
|
190
|
-
return result.data.value ?? [];
|
|
191
|
-
});
|
|
192
|
-
}
|
|
193
|
-
async getDataverseWorkflow(workflowId) {
|
|
194
|
-
return this.requestWithRetry(() => this.http
|
|
195
|
-
.get(`workflows(${workflowId})?$select=workflowid,name,description,` + `category,statecode,statuscode,type,modifiedon`)
|
|
196
|
-
.then((r) => r.data));
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
//# sourceMappingURL=dataverse-client-advanced.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dataverse-client-advanced.js","sourceRoot":"","sources":["../../src/dataverse/dataverse-client-advanced.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { DataverseClient } from "./dataverse-client.js";
|
|
2
|
-
/**
|
|
3
|
-
* Extends DataverseClient with action/function execution support.
|
|
4
|
-
* Kept in a separate file to stay within the 400-line hard limit.
|
|
5
|
-
*/
|
|
6
|
-
export declare class DataverseActionsClient extends DataverseClient {
|
|
7
|
-
executeAction(actionName: string, parameters?: Record<string, unknown>): Promise<unknown>;
|
|
8
|
-
executeFunction(functionName: string, parameters?: Record<string, string>): Promise<unknown>;
|
|
9
|
-
executeBoundAction(entitySetName: string, id: string, actionName: string, parameters?: Record<string, unknown>): Promise<unknown>;
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=dataverse-client.actions.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dataverse-client.actions.d.ts","sourceRoot":"","sources":["../../src/dataverse/dataverse-client.actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxD;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,eAAe;IAGnD,aAAa,CACjB,UAAU,EAAE,MAAM,EAClB,UAAU,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACvC,OAAO,CAAC,OAAO,CAAC;IAMb,eAAe,CACnB,YAAY,EAAE,MAAM,EACpB,UAAU,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GACtC,OAAO,CAAC,OAAO,CAAC;IAQb,kBAAkB,CACtB,aAAa,EAAE,MAAM,EACrB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,UAAU,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACvC,OAAO,CAAC,OAAO,CAAC;CAUpB"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { DataverseClient } from "./dataverse-client.js";
|
|
2
|
-
import { esc } from "./dataverse-client.utils.js";
|
|
3
|
-
/**
|
|
4
|
-
* Extends DataverseClient with action/function execution support.
|
|
5
|
-
* Kept in a separate file to stay within the 400-line hard limit.
|
|
6
|
-
*/
|
|
7
|
-
export class DataverseActionsClient extends DataverseClient {
|
|
8
|
-
// ─── Actions & Functions ─────────────────────────────────────────────────
|
|
9
|
-
async executeAction(actionName, parameters = {}) {
|
|
10
|
-
return this.requestWithRetry(() => this.http.post(actionName, parameters).then((r) => r.data));
|
|
11
|
-
}
|
|
12
|
-
async executeFunction(functionName, parameters = {}) {
|
|
13
|
-
const paramStr = Object.entries(parameters)
|
|
14
|
-
.map(([k, v]) => `${esc(k)}='${esc(v)}'`)
|
|
15
|
-
.join(",");
|
|
16
|
-
const url = paramStr ? `${functionName}(${paramStr})` : `${functionName}()`;
|
|
17
|
-
return this.requestWithRetry(() => this.http.get(url).then((r) => r.data));
|
|
18
|
-
}
|
|
19
|
-
async executeBoundAction(entitySetName, id, actionName, parameters = {}) {
|
|
20
|
-
return this.requestWithRetry(() => this.http
|
|
21
|
-
.post(`${entitySetName}(${id})/Microsoft.Dynamics.CRM.${actionName}`, parameters)
|
|
22
|
-
.then((r) => r.data));
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=dataverse-client.actions.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dataverse-client.actions.js","sourceRoot":"","sources":["../../src/dataverse/dataverse-client.actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAC;AAElD;;;GAGG;AACH,MAAM,OAAO,sBAAuB,SAAQ,eAAe;IACzD,4EAA4E;IAE5E,KAAK,CAAC,aAAa,CACjB,UAAkB,EAClB,aAAsC,EAAE;QAExC,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAChC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAC3D,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,YAAoB,EACpB,aAAqC,EAAE;QAEvC,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;aACxC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;aACxC,IAAI,CAAC,GAAG,CAAC,CAAC;QACb,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,YAAY,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,YAAY,IAAI,CAAC;QAC5E,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,KAAK,CAAC,kBAAkB,CACtB,aAAqB,EACrB,EAAU,EACV,UAAkB,EAClB,aAAsC,EAAE;QAExC,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAChC,IAAI,CAAC,IAAI;aACN,IAAI,CACH,GAAG,aAAa,IAAI,EAAE,4BAA4B,UAAU,EAAE,EAC9D,UAAU,CACX;aACA,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CACvB,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { DataverseMetadataClient } from "./dataverse-client.metadata.js";
|
|
2
|
-
import type { BatchRequest } from "./types.js";
|
|
3
|
-
/**
|
|
4
|
-
* Extends DataverseMetadataClient with batch execution support.
|
|
5
|
-
* Kept in a separate file to stay within the 400-line hard limit.
|
|
6
|
-
*/
|
|
7
|
-
export declare class DataverseBatchClient extends DataverseMetadataClient {
|
|
8
|
-
batchExecute(requests: BatchRequest[], useChangeset?: boolean): Promise<unknown[]>;
|
|
9
|
-
}
|
|
10
|
-
//# sourceMappingURL=dataverse-client.batch.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dataverse-client.batch.d.ts","sourceRoot":"","sources":["../../src/dataverse/dataverse-client.batch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,uBAAuB;IAGzD,YAAY,CAChB,QAAQ,EAAE,YAAY,EAAE,EACxB,YAAY,UAAQ,GACnB,OAAO,CAAC,OAAO,EAAE,CAAC;CA6EtB"}
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { DataverseMetadataClient } from "./dataverse-client.metadata.js";
|
|
2
|
-
import { parseMultipartResponse } from "./dataverse-client.utils.js";
|
|
3
|
-
/**
|
|
4
|
-
* Extends DataverseMetadataClient with batch execution support.
|
|
5
|
-
* Kept in a separate file to stay within the 400-line hard limit.
|
|
6
|
-
*/
|
|
7
|
-
export class DataverseBatchClient extends DataverseMetadataClient {
|
|
8
|
-
// ─── Batch ───────────────────────────────────────────────────────────────
|
|
9
|
-
async batchExecute(requests, useChangeset = false) {
|
|
10
|
-
const batchId = `batch_${Date.now()}`;
|
|
11
|
-
let body = "";
|
|
12
|
-
if (useChangeset) {
|
|
13
|
-
const changesetId = `changeset_${Date.now() + 1}`;
|
|
14
|
-
const getOps = requests.filter((r) => r.method === "GET");
|
|
15
|
-
const mutatingOps = requests.filter((r) => r.method !== "GET");
|
|
16
|
-
for (const req of getOps) {
|
|
17
|
-
body += `--${batchId}\n`;
|
|
18
|
-
body += `Content-Type: application/http\n`;
|
|
19
|
-
body += `Content-Transfer-Encoding: binary\n\n`;
|
|
20
|
-
body += `${req.method} ${this.http.baseURL}${req.url} HTTP/1.1\n`;
|
|
21
|
-
body += `Accept: application/json\n\n\n`;
|
|
22
|
-
}
|
|
23
|
-
if (mutatingOps.length > 0) {
|
|
24
|
-
body += `--${batchId}\n`;
|
|
25
|
-
body += `Content-Type: multipart/mixed; boundary=${changesetId}\n\n`;
|
|
26
|
-
let contentIdCounter = 1;
|
|
27
|
-
for (const op of mutatingOps) {
|
|
28
|
-
body += `--${changesetId}\n`;
|
|
29
|
-
body += `Content-Type: application/http\n`;
|
|
30
|
-
body += `Content-Transfer-Encoding: binary\n`;
|
|
31
|
-
body += `Content-ID: ${op.contentId ?? contentIdCounter++}\n\n`;
|
|
32
|
-
body += `${op.method} ${this.http.baseURL}${op.url} HTTP/1.1\n`;
|
|
33
|
-
body += `Content-Type: application/json\n\n`;
|
|
34
|
-
if (op.body)
|
|
35
|
-
body += JSON.stringify(op.body);
|
|
36
|
-
body += "\n\n";
|
|
37
|
-
}
|
|
38
|
-
body += `--${changesetId}--\n`;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
requests.forEach((req) => {
|
|
43
|
-
body += `--${batchId}\n`;
|
|
44
|
-
body += `Content-Type: application/http\n`;
|
|
45
|
-
body += `Content-Transfer-Encoding: binary\n\n`;
|
|
46
|
-
body += `${req.method} ${this.http.baseURL}${req.url} HTTP/1.1\n`;
|
|
47
|
-
body += `Content-Type: application/json\n\n`;
|
|
48
|
-
if (req.body)
|
|
49
|
-
body += JSON.stringify(req.body);
|
|
50
|
-
body += "\n";
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
body += `--${batchId}--`;
|
|
54
|
-
const response = await this.requestWithRetry(() => this.http.post("$batch", body, {
|
|
55
|
-
headers: { "Content-Type": `multipart/mixed;boundary=${batchId}` },
|
|
56
|
-
responseType: "text",
|
|
57
|
-
}));
|
|
58
|
-
try {
|
|
59
|
-
const contentType = response.headers["content-type"] ?? "";
|
|
60
|
-
const boundaryMatch = contentType.match(/boundary=(?:"([^"]+)"|([^;"\s]+))/);
|
|
61
|
-
const responseBoundary = boundaryMatch?.[1] ?? boundaryMatch?.[2];
|
|
62
|
-
if (!responseBoundary) {
|
|
63
|
-
process.stderr.write("[batchExecute] No multipart boundary in response Content-Type; returning raw data.\n");
|
|
64
|
-
return [response.data];
|
|
65
|
-
}
|
|
66
|
-
return parseMultipartResponse(response.data, responseBoundary);
|
|
67
|
-
}
|
|
68
|
-
catch (err) {
|
|
69
|
-
process.stderr.write(`[batchExecute] Failed to parse multipart response; returning raw data. ${String(err)}\n`);
|
|
70
|
-
return [response.data];
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
//# sourceMappingURL=dataverse-client.batch.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dataverse-client.batch.js","sourceRoot":"","sources":["../../src/dataverse/dataverse-client.batch.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { HttpClient } from "./http-client.js";
|
|
2
|
-
import type { AuthProvider } from "../auth/auth-provider.interface.js";
|
|
3
|
-
import type { ODataResponse, EntityMetadata, RelationshipMetadata } from "./types.js";
|
|
4
|
-
export declare class DataverseClient {
|
|
5
|
-
protected readonly http: HttpClient;
|
|
6
|
-
private readonly authProvider;
|
|
7
|
-
private readonly maxRetries;
|
|
8
|
-
constructor(authProvider: AuthProvider, maxRetries?: number, timeoutMs?: number);
|
|
9
|
-
protected requestWithRetry<T>(fn: () => Promise<T>, attempt?: number): Promise<T>;
|
|
10
|
-
private formatError;
|
|
11
|
-
whoAmI(): Promise<{
|
|
12
|
-
UserId: string;
|
|
13
|
-
BusinessUnitId: string;
|
|
14
|
-
OrganizationId: string;
|
|
15
|
-
OrganizationName: string;
|
|
16
|
-
EnvironmentUrl: string;
|
|
17
|
-
}>;
|
|
18
|
-
listTables(includeCustomOnly?: boolean): Promise<EntityMetadata[]>;
|
|
19
|
-
getTableMetadata(logicalName: string, includeAttributes?: boolean): Promise<EntityMetadata>;
|
|
20
|
-
getRelationships(logicalName: string): Promise<RelationshipMetadata[]>;
|
|
21
|
-
query<T = Record<string, unknown>>(entitySetName: string, options?: {
|
|
22
|
-
select?: string[];
|
|
23
|
-
filter?: string;
|
|
24
|
-
orderby?: string;
|
|
25
|
-
top?: number;
|
|
26
|
-
expand?: string;
|
|
27
|
-
count?: boolean;
|
|
28
|
-
apply?: string;
|
|
29
|
-
formattedValues?: boolean;
|
|
30
|
-
}): Promise<ODataResponse<T>>;
|
|
31
|
-
executeFetchXml<T = Record<string, unknown>>(entitySetName: string, fetchXml: string, formattedValues?: boolean): Promise<ODataResponse<T>>;
|
|
32
|
-
getRecord(entitySetName: string, id: string, select?: string[], expand?: string): Promise<{
|
|
33
|
-
record: Record<string, unknown>;
|
|
34
|
-
etag: string | null;
|
|
35
|
-
}>;
|
|
36
|
-
createRecord(entitySetName: string, data: Record<string, unknown>): Promise<string>;
|
|
37
|
-
updateRecord(entitySetName: string, id: string, data: Record<string, unknown>, etag?: string): Promise<void>;
|
|
38
|
-
deleteRecord(entitySetName: string, id: string): Promise<void>;
|
|
39
|
-
upsertRecord(entitySetName: string, alternateKey: string, alternateKeyValue: string, data: Record<string, unknown>, mode?: "upsert" | "createOnly" | "updateOnly", keySegment?: string): Promise<{
|
|
40
|
-
operation: "created" | "updated";
|
|
41
|
-
id: string;
|
|
42
|
-
}>;
|
|
43
|
-
associate(entitySetName: string, id: string, relationshipName: string, relatedEntitySetName: string, relatedId: string): Promise<void>;
|
|
44
|
-
disassociate(entitySetName: string, id: string, relationshipName: string, relatedId?: string, relatedEntitySetName?: string): Promise<void>;
|
|
45
|
-
}
|
|
46
|
-
//# sourceMappingURL=dataverse-client.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dataverse-client.d.ts","sourceRoot":"","sources":["../../src/dataverse/dataverse-client.ts"],"names":[],"mappings":"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"}
|