mcp-dataverse 0.3.7 → 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.
Files changed (208) hide show
  1. package/CAPABILITIES.md +1039 -1039
  2. package/LICENSE +21 -21
  3. package/README.md +114 -113
  4. package/dist/auth-provider.factory-MSMLSOX3.js +1 -0
  5. package/dist/chunk-24RDOMG4.js +29 -0
  6. package/dist/chunk-OXKMMPM3.js +37 -0
  7. package/dist/chunk-PAX4NW5B.js +1 -0
  8. package/dist/chunk-SUDI4JM6.js +3 -0
  9. package/dist/config.loader-VTIKUDN7.js +1 -0
  10. package/dist/dataverse-client-advanced-T5ZJMRLK.js +1 -0
  11. package/dist/doctor.js +2 -102
  12. package/dist/http-server.js +3 -61
  13. package/dist/install.js +8 -233
  14. package/dist/server.js +43 -202
  15. package/dist/setup-auth.js +18 -41
  16. package/package.json +95 -94
  17. package/server.json +51 -50
  18. package/dist/auth/auth-provider.factory.d.ts +0 -4
  19. package/dist/auth/auth-provider.factory.d.ts.map +0 -1
  20. package/dist/auth/auth-provider.factory.js +0 -5
  21. package/dist/auth/auth-provider.factory.js.map +0 -1
  22. package/dist/auth/auth-provider.interface.d.ts +0 -21
  23. package/dist/auth/auth-provider.interface.d.ts.map +0 -1
  24. package/dist/auth/auth-provider.interface.js +0 -2
  25. package/dist/auth/auth-provider.interface.js.map +0 -1
  26. package/dist/auth/device-code-auth-provider.d.ts +0 -18
  27. package/dist/auth/device-code-auth-provider.d.ts.map +0 -1
  28. package/dist/auth/device-code-auth-provider.js +0 -167
  29. package/dist/auth/device-code-auth-provider.js.map +0 -1
  30. package/dist/config/config.loader.d.ts +0 -3
  31. package/dist/config/config.loader.d.ts.map +0 -1
  32. package/dist/config/config.loader.js +0 -39
  33. package/dist/config/config.loader.js.map +0 -1
  34. package/dist/config/config.schema.d.ts +0 -16
  35. package/dist/config/config.schema.d.ts.map +0 -1
  36. package/dist/config/config.schema.js +0 -20
  37. package/dist/config/config.schema.js.map +0 -1
  38. package/dist/dataverse/dataverse-client-advanced.d.ts +0 -53
  39. package/dist/dataverse/dataverse-client-advanced.d.ts.map +0 -1
  40. package/dist/dataverse/dataverse-client-advanced.js +0 -199
  41. package/dist/dataverse/dataverse-client-advanced.js.map +0 -1
  42. package/dist/dataverse/dataverse-client.actions.d.ts +0 -11
  43. package/dist/dataverse/dataverse-client.actions.d.ts.map +0 -1
  44. package/dist/dataverse/dataverse-client.actions.js +0 -25
  45. package/dist/dataverse/dataverse-client.actions.js.map +0 -1
  46. package/dist/dataverse/dataverse-client.batch.d.ts +0 -10
  47. package/dist/dataverse/dataverse-client.batch.d.ts.map +0 -1
  48. package/dist/dataverse/dataverse-client.batch.js +0 -74
  49. package/dist/dataverse/dataverse-client.batch.js.map +0 -1
  50. package/dist/dataverse/dataverse-client.d.ts +0 -46
  51. package/dist/dataverse/dataverse-client.d.ts.map +0 -1
  52. package/dist/dataverse/dataverse-client.js +0 -275
  53. package/dist/dataverse/dataverse-client.js.map +0 -1
  54. package/dist/dataverse/dataverse-client.metadata.d.ts +0 -41
  55. package/dist/dataverse/dataverse-client.metadata.d.ts.map +0 -1
  56. package/dist/dataverse/dataverse-client.metadata.js +0 -124
  57. package/dist/dataverse/dataverse-client.metadata.js.map +0 -1
  58. package/dist/dataverse/dataverse-client.utils.d.ts +0 -14
  59. package/dist/dataverse/dataverse-client.utils.d.ts.map +0 -1
  60. package/dist/dataverse/dataverse-client.utils.js +0 -65
  61. package/dist/dataverse/dataverse-client.utils.js.map +0 -1
  62. package/dist/dataverse/http-client.d.ts +0 -38
  63. package/dist/dataverse/http-client.d.ts.map +0 -1
  64. package/dist/dataverse/http-client.js +0 -111
  65. package/dist/dataverse/http-client.js.map +0 -1
  66. package/dist/dataverse/types.d.ts +0 -68
  67. package/dist/dataverse/types.d.ts.map +0 -1
  68. package/dist/dataverse/types.js +0 -2
  69. package/dist/dataverse/types.js.map +0 -1
  70. package/dist/doctor.d.ts +0 -7
  71. package/dist/doctor.d.ts.map +0 -1
  72. package/dist/doctor.js.map +0 -1
  73. package/dist/http-server.d.ts +0 -3
  74. package/dist/http-server.d.ts.map +0 -1
  75. package/dist/http-server.js.map +0 -1
  76. package/dist/install.d.ts +0 -3
  77. package/dist/install.d.ts.map +0 -1
  78. package/dist/install.js.map +0 -1
  79. package/dist/resources/resource-provider.d.ts +0 -11
  80. package/dist/resources/resource-provider.d.ts.map +0 -1
  81. package/dist/resources/resource-provider.js +0 -79
  82. package/dist/resources/resource-provider.js.map +0 -1
  83. package/dist/server.d.ts +0 -3
  84. package/dist/server.d.ts.map +0 -1
  85. package/dist/server.js.map +0 -1
  86. package/dist/setup-auth.d.ts +0 -3
  87. package/dist/setup-auth.d.ts.map +0 -1
  88. package/dist/setup-auth.js.map +0 -1
  89. package/dist/tools/actions.tools.d.ts +0 -206
  90. package/dist/tools/actions.tools.d.ts.map +0 -1
  91. package/dist/tools/actions.tools.js +0 -256
  92. package/dist/tools/actions.tools.js.map +0 -1
  93. package/dist/tools/annotations.tools.d.ts +0 -94
  94. package/dist/tools/annotations.tools.d.ts.map +0 -1
  95. package/dist/tools/annotations.tools.js +0 -225
  96. package/dist/tools/annotations.tools.js.map +0 -1
  97. package/dist/tools/audit.tools.d.ts +0 -51
  98. package/dist/tools/audit.tools.d.ts.map +0 -1
  99. package/dist/tools/audit.tools.js +0 -170
  100. package/dist/tools/audit.tools.js.map +0 -1
  101. package/dist/tools/auth.tools.d.ts +0 -23
  102. package/dist/tools/auth.tools.d.ts.map +0 -1
  103. package/dist/tools/auth.tools.js +0 -36
  104. package/dist/tools/auth.tools.js.map +0 -1
  105. package/dist/tools/batch.tools.d.ts +0 -52
  106. package/dist/tools/batch.tools.d.ts.map +0 -1
  107. package/dist/tools/batch.tools.js +0 -89
  108. package/dist/tools/batch.tools.js.map +0 -1
  109. package/dist/tools/crud.tools.d.ts +0 -260
  110. package/dist/tools/crud.tools.d.ts.map +0 -1
  111. package/dist/tools/crud.tools.js +0 -290
  112. package/dist/tools/crud.tools.js.map +0 -1
  113. package/dist/tools/customization.tools.d.ts +0 -127
  114. package/dist/tools/customization.tools.d.ts.map +0 -1
  115. package/dist/tools/customization.tools.js +0 -285
  116. package/dist/tools/customization.tools.js.map +0 -1
  117. package/dist/tools/environment.tools.d.ts +0 -106
  118. package/dist/tools/environment.tools.d.ts.map +0 -1
  119. package/dist/tools/environment.tools.js +0 -274
  120. package/dist/tools/environment.tools.js.map +0 -1
  121. package/dist/tools/file.tools.d.ts +0 -73
  122. package/dist/tools/file.tools.d.ts.map +0 -1
  123. package/dist/tools/file.tools.js +0 -160
  124. package/dist/tools/file.tools.js.map +0 -1
  125. package/dist/tools/guardrails.d.ts +0 -22
  126. package/dist/tools/guardrails.d.ts.map +0 -1
  127. package/dist/tools/guardrails.js +0 -56
  128. package/dist/tools/guardrails.js.map +0 -1
  129. package/dist/tools/impersonate.tools.d.ts +0 -44
  130. package/dist/tools/impersonate.tools.d.ts.map +0 -1
  131. package/dist/tools/impersonate.tools.js +0 -87
  132. package/dist/tools/impersonate.tools.js.map +0 -1
  133. package/dist/tools/metadata.tools.d.ts +0 -279
  134. package/dist/tools/metadata.tools.d.ts.map +0 -1
  135. package/dist/tools/metadata.tools.js +0 -400
  136. package/dist/tools/metadata.tools.js.map +0 -1
  137. package/dist/tools/org.tools.d.ts +0 -32
  138. package/dist/tools/org.tools.d.ts.map +0 -1
  139. package/dist/tools/org.tools.js +0 -65
  140. package/dist/tools/org.tools.js.map +0 -1
  141. package/dist/tools/output.utils.d.ts +0 -63
  142. package/dist/tools/output.utils.d.ts.map +0 -1
  143. package/dist/tools/output.utils.js +0 -78
  144. package/dist/tools/output.utils.js.map +0 -1
  145. package/dist/tools/progress.d.ts +0 -15
  146. package/dist/tools/progress.d.ts.map +0 -1
  147. package/dist/tools/progress.js +0 -29
  148. package/dist/tools/progress.js.map +0 -1
  149. package/dist/tools/quality.tools.d.ts +0 -36
  150. package/dist/tools/quality.tools.d.ts.map +0 -1
  151. package/dist/tools/quality.tools.js +0 -97
  152. package/dist/tools/quality.tools.js.map +0 -1
  153. package/dist/tools/query.tools.d.ts +0 -151
  154. package/dist/tools/query.tools.d.ts.map +0 -1
  155. package/dist/tools/query.tools.js +0 -293
  156. package/dist/tools/query.tools.js.map +0 -1
  157. package/dist/tools/relations.tools.d.ts +0 -77
  158. package/dist/tools/relations.tools.d.ts.map +0 -1
  159. package/dist/tools/relations.tools.js +0 -96
  160. package/dist/tools/relations.tools.js.map +0 -1
  161. package/dist/tools/router.tools.d.ts +0 -5
  162. package/dist/tools/router.tools.d.ts.map +0 -1
  163. package/dist/tools/router.tools.js +0 -247
  164. package/dist/tools/router.tools.js.map +0 -1
  165. package/dist/tools/search.tools.d.ts +0 -74
  166. package/dist/tools/search.tools.d.ts.map +0 -1
  167. package/dist/tools/search.tools.js +0 -142
  168. package/dist/tools/search.tools.js.map +0 -1
  169. package/dist/tools/solution.tools.d.ts +0 -113
  170. package/dist/tools/solution.tools.d.ts.map +0 -1
  171. package/dist/tools/solution.tools.js +0 -176
  172. package/dist/tools/solution.tools.js.map +0 -1
  173. package/dist/tools/teams.tools.d.ts +0 -65
  174. package/dist/tools/teams.tools.d.ts.map +0 -1
  175. package/dist/tools/teams.tools.js +0 -127
  176. package/dist/tools/teams.tools.js.map +0 -1
  177. package/dist/tools/tool-registry.d.ts +0 -35
  178. package/dist/tools/tool-registry.d.ts.map +0 -1
  179. package/dist/tools/tool-registry.js +0 -31
  180. package/dist/tools/tool-registry.js.map +0 -1
  181. package/dist/tools/trace.tools.d.ts +0 -75
  182. package/dist/tools/trace.tools.d.ts.map +0 -1
  183. package/dist/tools/trace.tools.js +0 -233
  184. package/dist/tools/trace.tools.js.map +0 -1
  185. package/dist/tools/tracking.tools.d.ts +0 -41
  186. package/dist/tools/tracking.tools.d.ts.map +0 -1
  187. package/dist/tools/tracking.tools.js +0 -76
  188. package/dist/tools/tracking.tools.js.map +0 -1
  189. package/dist/tools/users.tools.d.ts +0 -141
  190. package/dist/tools/users.tools.d.ts.map +0 -1
  191. package/dist/tools/users.tools.js +0 -321
  192. package/dist/tools/users.tools.js.map +0 -1
  193. package/dist/tools/validation.utils.d.ts +0 -6
  194. package/dist/tools/validation.utils.d.ts.map +0 -1
  195. package/dist/tools/validation.utils.js +0 -14
  196. package/dist/tools/validation.utils.js.map +0 -1
  197. package/dist/tools/views.tools.d.ts +0 -36
  198. package/dist/tools/views.tools.d.ts.map +0 -1
  199. package/dist/tools/views.tools.js +0 -92
  200. package/dist/tools/views.tools.js.map +0 -1
  201. package/dist/tools/workflow.tools.d.ts +0 -111
  202. package/dist/tools/workflow.tools.d.ts.map +0 -1
  203. package/dist/tools/workflow.tools.js +0 -449
  204. package/dist/tools/workflow.tools.js.map +0 -1
  205. package/dist/transport.d.ts +0 -6
  206. package/dist/transport.d.ts.map +0 -1
  207. package/dist/transport.js +0 -21
  208. package/dist/transport.js.map +0 -1
@@ -1,275 +0,0 @@
1
- import { HttpClient, HttpError } from "./http-client.js";
2
- import { esc } from "./dataverse-client.utils.js";
3
- const API_VERSION = "9.2";
4
- /**
5
- * Maps entity set names with irregular pluralization to their primary key field names.
6
- * Used as a fallback when OData-EntityId and @odata.id are absent from the response.
7
- */
8
- const ENTITY_SET_TO_PK = {
9
- opportunities: "opportunityid",
10
- territories: "territoryid",
11
- categories: "categoryid",
12
- activityparties: "activitypartyid",
13
- activitymimeattachments: "activitymimeattachmentid",
14
- queues: "queueid",
15
- queueitems: "queueitemid",
16
- };
17
- export class DataverseClient {
18
- http;
19
- authProvider;
20
- maxRetries;
21
- constructor(authProvider, maxRetries = 3, timeoutMs = 30_000) {
22
- this.authProvider = authProvider;
23
- this.maxRetries = maxRetries;
24
- this.http = new HttpClient({
25
- baseURL: `${authProvider.environmentUrl}/api/data/v${API_VERSION}/`,
26
- timeout: timeoutMs,
27
- headers: {
28
- "OData-MaxVersion": "4.0",
29
- "OData-Version": "4.0",
30
- Accept: "application/json",
31
- "Content-Type": "application/json; charset=utf-8",
32
- },
33
- tokenProvider: () => authProvider.getToken(),
34
- });
35
- }
36
- async requestWithRetry(fn, attempt = 0) {
37
- try {
38
- return await fn();
39
- }
40
- catch (error) {
41
- if (error instanceof HttpError) {
42
- // On 401: invalidate cached token and retry once with a fresh token
43
- if (error.status === 401 && attempt === 0) {
44
- this.authProvider.invalidateToken();
45
- return this.requestWithRetry(fn, attempt + 1);
46
- }
47
- // On transient errors (429, 503): retry with Retry-After-aware backoff
48
- const isTransient = [429, 503, 504].includes(error.status);
49
- if (isTransient && attempt < this.maxRetries) {
50
- const retryAfterSec = error.responseHeaders["retry-after"];
51
- const delay = retryAfterSec
52
- ? parseInt(retryAfterSec, 10) * 1000
53
- : Math.pow(2, attempt) * 1000;
54
- await new Promise((resolve) => setTimeout(resolve, delay));
55
- return this.requestWithRetry(fn, attempt + 1);
56
- }
57
- }
58
- throw this.formatError(error);
59
- }
60
- }
61
- formatError(error) {
62
- if (error instanceof HttpError) {
63
- const dvError = error.data?.error;
64
- if (dvError) {
65
- return new Error(`Dataverse error ${dvError.code ?? ""}: ${dvError.message ?? "Unknown error"}`);
66
- }
67
- if (error.code === "ECONNABORTED") {
68
- return new Error("Request timed out. Check your Dataverse environment URL.");
69
- }
70
- return error;
71
- }
72
- return error instanceof Error ? error : new Error(String(error));
73
- }
74
- // ─── Auth ────────────────────────────────────────────────────────────────
75
- async whoAmI() {
76
- return this.requestWithRetry(async () => {
77
- const whoAmIResp = await this.http.get("WhoAmI");
78
- const { UserId, BusinessUnitId, OrganizationId } = whoAmIResp.data;
79
- let OrganizationName = "";
80
- try {
81
- const orgResp = await this.http.get(`organizations(${OrganizationId})?$select=name`);
82
- OrganizationName = orgResp.data.name ?? "";
83
- }
84
- catch {
85
- OrganizationName = "";
86
- }
87
- const EnvironmentUrl = this.authProvider.environmentUrl;
88
- return {
89
- UserId,
90
- BusinessUnitId,
91
- OrganizationId,
92
- OrganizationName,
93
- EnvironmentUrl,
94
- };
95
- });
96
- }
97
- // ─── Metadata ────────────────────────────────────────────────────────────
98
- async listTables(includeCustomOnly = false) {
99
- const filter = includeCustomOnly ? "$filter=IsCustomEntity eq true" : "";
100
- const select = "$select=LogicalName,SchemaName,DisplayName,EntitySetName,PrimaryIdAttribute,PrimaryNameAttribute,IsCustomEntity";
101
- const query = [select, filter].filter(Boolean).join("&");
102
- return this.requestWithRetry(() => this.http
103
- .get(`EntityDefinitions?${query}`)
104
- .then((r) => r.data.value));
105
- }
106
- async getTableMetadata(logicalName, includeAttributes = true) {
107
- const expand = includeAttributes ? "$expand=Attributes" : "";
108
- const url = `EntityDefinitions(LogicalName='${esc(logicalName)}')${expand ? "?" + expand : ""}`;
109
- return this.requestWithRetry(() => this.http.get(url).then((r) => r.data));
110
- }
111
- async getRelationships(logicalName) {
112
- const escaped = esc(logicalName);
113
- const [oneToMany, manyToOne, manyToMany] = await Promise.all([
114
- this.requestWithRetry(() => this.http
115
- .get(`EntityDefinitions(LogicalName='${escaped}')/OneToManyRelationships`)
116
- .then((r) => r.data.value)),
117
- this.requestWithRetry(() => this.http
118
- .get(`EntityDefinitions(LogicalName='${escaped}')/ManyToOneRelationships`)
119
- .then((r) => r.data.value)),
120
- this.requestWithRetry(() => this.http
121
- .get(`EntityDefinitions(LogicalName='${escaped}')/ManyToManyRelationships`)
122
- .then((r) => r.data.value)),
123
- ]);
124
- return [...oneToMany, ...manyToOne, ...manyToMany];
125
- }
126
- // ─── Query ───────────────────────────────────────────────────────────────
127
- async query(entitySetName, options = {}) {
128
- // Encode filter/orderby/apply values to handle spaces and OData special chars.
129
- // $select and $expand are left unencoded (commas/parens are OData delimiters).
130
- const enc = (v) => encodeURIComponent(v)
131
- .replace(/%28/g, "(")
132
- .replace(/%29/g, ")")
133
- .replace(/%2C/g, ",")
134
- .replace(/%27/g, "'")
135
- .replace(/%40/g, "@");
136
- const params = [];
137
- if (options.select?.length)
138
- params.push(`$select=${options.select.join(",")}`);
139
- if (options.filter)
140
- params.push(`$filter=${enc(options.filter)}`);
141
- if (options.orderby)
142
- params.push(`$orderby=${enc(options.orderby)}`);
143
- if (options.top)
144
- params.push(`$top=${options.top}`);
145
- if (options.expand)
146
- params.push(`$expand=${options.expand}`);
147
- if (options.count)
148
- params.push("$count=true");
149
- if (options.apply)
150
- params.push(`$apply=${enc(options.apply)}`);
151
- const url = `${entitySetName}${params.length ? "?" + params.join("&") : ""}`;
152
- const fmtHeaders = options.formattedValues
153
- ? {
154
- headers: {
155
- Prefer: 'odata.include-annotations="OData.Community.Display.V1.FormattedValue"',
156
- },
157
- }
158
- : undefined;
159
- return this.requestWithRetry(() => this.http.get(url, fmtHeaders).then((r) => r.data));
160
- }
161
- async executeFetchXml(entitySetName, fetchXml, formattedValues) {
162
- const encoded = encodeURIComponent(fetchXml);
163
- const fmtHeaders = formattedValues
164
- ? {
165
- headers: {
166
- Prefer: 'odata.include-annotations="OData.Community.Display.V1.FormattedValue"',
167
- },
168
- }
169
- : undefined;
170
- return this.requestWithRetry(() => this.http
171
- .get(`${entitySetName}?fetchXml=${encoded}`, fmtHeaders)
172
- .then((r) => r.data));
173
- }
174
- // ─── CRUD ────────────────────────────────────────────────────────────────
175
- async getRecord(entitySetName, id, select, expand) {
176
- const qParts = [];
177
- if (select?.length)
178
- qParts.push(`$select=${select.join(",")}`);
179
- if (expand)
180
- qParts.push(`$expand=${expand}`);
181
- const qs = qParts.length ? `?${qParts.join("&")}` : "";
182
- return this.requestWithRetry(async () => {
183
- const response = await this.http.get(`${entitySetName}(${id})${qs}`, {
184
- headers: { Prefer: 'odata.include-annotations="*"' },
185
- });
186
- const etag = response.headers["odata-etag"] ??
187
- response.data["@odata.etag"] ??
188
- null;
189
- return { record: response.data, etag };
190
- });
191
- }
192
- async createRecord(entitySetName, data) {
193
- return this.requestWithRetry(async () => {
194
- const response = await this.http.post(entitySetName, data, {
195
- headers: { Prefer: "return=representation" },
196
- });
197
- // 1. OData-EntityId header (standard, most reliable)
198
- const locationHeader = response.headers["odata-entityid"];
199
- const fromHeader = locationHeader?.match(/\(([^)]+)\)/)?.[1];
200
- if (fromHeader)
201
- return fromHeader;
202
- // 2. @odata.id in body (collection response shape)
203
- const body = response.data;
204
- const fromOdataId = body["@odata.id"]?.match(/\(([^)]+)\)/)?.[1];
205
- if (fromOdataId)
206
- return fromOdataId;
207
- // 3. Primary key field in body (when return=representation and no OData-EntityId header)
208
- // Use known irregular pluralizations; fall back to simple s-strip convention.
209
- const pkGuess = ENTITY_SET_TO_PK[entitySetName] ??
210
- entitySetName.replace(/s$/, "") + "id";
211
- const fromPk = body[pkGuess];
212
- if (fromPk)
213
- return fromPk;
214
- // 4. Location header fallback
215
- const location = response.headers["location"];
216
- return location?.match(/\(([^)]+)\)/)?.[1] ?? "";
217
- });
218
- }
219
- async updateRecord(entitySetName, id, data, etag) {
220
- await this.requestWithRetry(() => this.http.patch(`${entitySetName}(${id})`, data, {
221
- headers: { "If-Match": etag ?? "*" },
222
- }));
223
- }
224
- async deleteRecord(entitySetName, id) {
225
- await this.requestWithRetry(() => this.http.delete(`${entitySetName}(${id})`));
226
- }
227
- async upsertRecord(entitySetName, alternateKey, alternateKeyValue, data, mode = "upsert", keySegment) {
228
- return this.requestWithRetry(async () => {
229
- const url = keySegment
230
- ? `${entitySetName}(${keySegment})`
231
- : `${entitySetName}(${esc(alternateKey)}='${esc(alternateKeyValue)}')`;
232
- const headers = {
233
- Prefer: "return=representation",
234
- };
235
- if (mode === "createOnly")
236
- headers["If-None-Match"] = "*";
237
- if (mode === "updateOnly")
238
- headers["If-Match"] = "*";
239
- try {
240
- const response = await this.http.put(url, data, { headers });
241
- const operation = response.status === 201 ? "created" : "updated";
242
- const locationHeader = response.headers["odata-entityid"];
243
- const fromHeader = locationHeader?.match(/\(([^)]+)\)/)?.[1];
244
- const body = response.data;
245
- const pkGuess = ENTITY_SET_TO_PK[entitySetName] ??
246
- entitySetName.replace(/s$/, "") + "id";
247
- const id = fromHeader ?? body?.[pkGuess] ?? alternateKeyValue;
248
- return { operation, id };
249
- }
250
- catch (err) {
251
- if (err instanceof HttpError && err.status === 412) {
252
- if (mode === "createOnly")
253
- throw new Error("Record already exists");
254
- if (mode === "updateOnly")
255
- throw new Error("Record not found");
256
- }
257
- throw err;
258
- }
259
- });
260
- }
261
- // ─── Relations ───────────────────────────────────────────────────────────
262
- async associate(entitySetName, id, relationshipName, relatedEntitySetName, relatedId) {
263
- const relatedUrl = `${this.authProvider.environmentUrl}/api/data/v${API_VERSION}/${relatedEntitySetName}(${relatedId})`;
264
- await this.requestWithRetry(() => this.http.post(`${entitySetName}(${id})/${relationshipName}/$ref`, {
265
- "@odata.id": relatedUrl,
266
- }));
267
- }
268
- async disassociate(entitySetName, id, relationshipName, relatedId, relatedEntitySetName) {
269
- const suffix = relatedId
270
- ? `?$id=${this.authProvider.environmentUrl}/api/data/v${API_VERSION}/${relatedEntitySetName ?? entitySetName}(${relatedId})`
271
- : "";
272
- await this.requestWithRetry(() => this.http.delete(`${entitySetName}(${id})/${relationshipName}/$ref${suffix}`));
273
- }
274
- }
275
- //# sourceMappingURL=dataverse-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dataverse-client.js","sourceRoot":"","sources":["../../src/dataverse/dataverse-client.ts"],"names":[],"mappings":"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"}
@@ -1,41 +0,0 @@
1
- import { DataverseActionsClient } from "./dataverse-client.actions.js";
2
- /**
3
- * Extends DataverseActionsClient with dependency and option-set query methods.
4
- * Kept in a separate file to stay within the 400-line hard limit.
5
- */
6
- export declare class DataverseMetadataClient extends DataverseActionsClient {
7
- listDependencies(componentType: number, objectId: string): Promise<unknown[]>;
8
- listTableDependencies(tableName: string, types?: string[]): Promise<{
9
- tableName: string;
10
- dependencies: Array<{
11
- componentType: string;
12
- name: string;
13
- id: string;
14
- state: string;
15
- triggerEvent: string | null;
16
- solutionName: string | null;
17
- }>;
18
- count: number;
19
- warning: string | null;
20
- }>;
21
- listGlobalOptionSets(): Promise<unknown[]>;
22
- getOptionSet(name: string): Promise<unknown>;
23
- getAttributeOptionSet(entityLogicalName: string, attributeLogicalName: string): Promise<{
24
- entityLogicalName: string;
25
- attributeLogicalName: string;
26
- attributeType: string;
27
- options: Array<{
28
- label: string;
29
- value: number;
30
- }>;
31
- }>;
32
- getEntityKeys(tableName: string): Promise<Array<{
33
- schemaName: string;
34
- logicalName: string;
35
- keyAttributes: string[];
36
- isCustomizable: boolean;
37
- indexStatus: string;
38
- }>>;
39
- updateEntityDefinition(logicalName: string, body: Record<string, unknown>): Promise<void>;
40
- }
41
- //# sourceMappingURL=dataverse-client.metadata.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dataverse-client.metadata.d.ts","sourceRoot":"","sources":["../../src/dataverse/dataverse-client.metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAIvE;;;GAGG;AACH,qBAAa,uBAAwB,SAAQ,sBAAsB;IAG3D,gBAAgB,CACpB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,EAAE,CAAC;IAUf,qBAAqB,CACzB,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM,EAAE,GACf,OAAO,CAAC;QACT,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,KAAK,CAAC;YAClB,aAAa,EAAE,MAAM,CAAC;YACtB,IAAI,EAAE,MAAM,CAAC;YACb,EAAE,EAAE,MAAM,CAAC;YACX,KAAK,EAAE,MAAM,CAAC;YACd,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;YAC5B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;SAC7B,CAAC,CAAC;QACH,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;KACxB,CAAC;IAkEI,oBAAoB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAQ1C,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQ5C,qBAAqB,CACzB,iBAAiB,EAAE,MAAM,EACzB,oBAAoB,EAAE,MAAM,GAC3B,OAAO,CAAC;QACT,iBAAiB,EAAE,MAAM,CAAC;QAC1B,oBAAoB,EAAE,MAAM,CAAC;QAC7B,aAAa,EAAE,MAAM,CAAC;QACtB,OAAO,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAClD,CAAC;IA+CI,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAC7C,KAAK,CAAC;QACJ,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,cAAc,EAAE,OAAO,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC,CACH;IAmBK,sBAAsB,CAC1B,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,IAAI,CAAC;CASjB"}
@@ -1,124 +0,0 @@
1
- import { DataverseActionsClient } from "./dataverse-client.actions.js";
2
- import { esc } from "./dataverse-client.utils.js";
3
- /**
4
- * Extends DataverseActionsClient with dependency and option-set query methods.
5
- * Kept in a separate file to stay within the 400-line hard limit.
6
- */
7
- export class DataverseMetadataClient extends DataverseActionsClient {
8
- // ─── Dependencies & Option Sets ─────────────────────────────────────────
9
- async listDependencies(componentType, objectId) {
10
- return this.requestWithRetry(() => this.http
11
- .get(`RetrieveDependenciesForDelete(ComponentType=${componentType},ObjectId=${objectId})`)
12
- .then((r) => r.data.value));
13
- }
14
- async listTableDependencies(tableName, types) {
15
- const CATEGORY_MAP = {
16
- 0: "Workflow",
17
- 1: "Dialog",
18
- 2: "BusinessRule",
19
- 3: "Action",
20
- 4: "BusinessProcessFlow",
21
- 5: "Flow",
22
- };
23
- const STATE_MAP = {
24
- 0: "Draft",
25
- 1: "Active",
26
- 2: "Inactive",
27
- };
28
- const response = await this.requestWithRetry(() => this.http
29
- .get(`workflows?$filter=primaryentity eq '${esc(tableName)}' and statecode ne 2` + `&$select=name,workflowid,statecode,category,triggeroncreate,triggerondelete,triggeronupdateattributelist`)
30
- .then((r) => r.data));
31
- const all = response.value.map((w) => {
32
- const events = [];
33
- if (w.triggeroncreate)
34
- events.push("Create");
35
- if (w.triggerondelete)
36
- events.push("Delete");
37
- if (w.triggeronupdateattributelist)
38
- events.push("Update");
39
- return {
40
- componentType: CATEGORY_MAP[w.category] ?? `Category${w.category}`,
41
- name: w.name,
42
- id: w.workflowid,
43
- state: STATE_MAP[w.statecode] ?? `State${w.statecode}`,
44
- triggerEvent: events.length ? events.join(",") : null,
45
- solutionName: null,
46
- };
47
- });
48
- const dependencies = types?.length
49
- ? all.filter((d) => types.includes(d.componentType))
50
- : all;
51
- const hasPluginOrCustomApi = types?.some((t) => t === "Plugin" || t === "CustomAPI");
52
- const warning = hasPluginOrCustomApi
53
- ? "Plugin and CustomAPI types require additional SDK message queries and are not yet implemented. Results show Workflow/BusinessRule/Flow/Action dependencies only."
54
- : null;
55
- return {
56
- tableName,
57
- dependencies,
58
- count: dependencies.length,
59
- warning,
60
- };
61
- }
62
- async listGlobalOptionSets() {
63
- return this.requestWithRetry(() => this.http
64
- .get("GlobalOptionSetDefinitions")
65
- .then((r) => r.data.value));
66
- }
67
- async getOptionSet(name) {
68
- return this.requestWithRetry(() => this.http
69
- .get(`GlobalOptionSetDefinitions(Name='${esc(name)}')`)
70
- .then((r) => r.data));
71
- }
72
- async getAttributeOptionSet(entityLogicalName, attributeLogicalName) {
73
- const metadataTypes = [
74
- "PicklistAttributeMetadata",
75
- "StatusAttributeMetadata",
76
- "StateAttributeMetadata",
77
- ];
78
- for (const typeName of metadataTypes) {
79
- try {
80
- const url = `EntityDefinitions(LogicalName='${esc(entityLogicalName)}')/` +
81
- `Attributes(LogicalName='${esc(attributeLogicalName)}')/` +
82
- `Microsoft.Dynamics.CRM.${typeName}?$select=LogicalName,DisplayName&$expand=OptionSet`;
83
- const response = await this.requestWithRetry(() => this.http.get(url).then((r) => r.data));
84
- const optionSet = response["OptionSet"];
85
- const rawOptions = optionSet?.["Options"] ?? [];
86
- const options = rawOptions.map((o) => {
87
- const lblObj = o["Label"];
88
- const locLabel = lblObj?.["UserLocalizedLabel"];
89
- return {
90
- label: locLabel?.["Label"] ?? "",
91
- value: o["Value"],
92
- };
93
- });
94
- return {
95
- entityLogicalName,
96
- attributeLogicalName,
97
- attributeType: typeName.replace("AttributeMetadata", ""),
98
- options,
99
- };
100
- }
101
- catch {
102
- continue;
103
- }
104
- }
105
- throw new Error(`Attribute '${attributeLogicalName}' on entity '${entityLogicalName}' is not a Picklist, Status, or State attribute, or does not exist.`);
106
- }
107
- async getEntityKeys(tableName) {
108
- return this.requestWithRetry(async () => {
109
- const response = await this.http.get(`EntityDefinitions(LogicalName='${esc(tableName)}')/Keys?$select=SchemaName,LogicalName,KeyAttributes,IsCustomizable,EntityKeyIndexStatus`);
110
- return response.data.value.map((k) => ({
111
- schemaName: k["SchemaName"],
112
- logicalName: k["LogicalName"],
113
- keyAttributes: k["KeyAttributes"],
114
- isCustomizable: k["IsCustomizable"]?.Value ??
115
- false,
116
- indexStatus: k["EntityKeyIndexStatus"],
117
- }));
118
- });
119
- }
120
- async updateEntityDefinition(logicalName, body) {
121
- await this.requestWithRetry(() => this.http.patch(`EntityDefinitions(LogicalName='${esc(logicalName)}')`, body, { headers: { "If-Match": "*" } }));
122
- }
123
- }
124
- //# sourceMappingURL=dataverse-client.metadata.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dataverse-client.metadata.js","sourceRoot":"","sources":["../../src/dataverse/dataverse-client.metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAC;AAElD;;;GAGG;AACH,MAAM,OAAO,uBAAwB,SAAQ,sBAAsB;IACjE,2EAA2E;IAE3E,KAAK,CAAC,gBAAgB,CACpB,aAAqB,EACrB,QAAgB;QAEhB,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAChC,IAAI,CAAC,IAAI;aACN,GAAG,CAEF,+CAA+C,aAAa,aAAa,QAAQ,GAAG,CAAC;aACtF,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAC7B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,qBAAqB,CACzB,SAAiB,EACjB,KAAgB;QAchB,MAAM,YAAY,GAA2B;YAC3C,CAAC,EAAE,UAAU;YACb,CAAC,EAAE,QAAQ;YACX,CAAC,EAAE,cAAc;YACjB,CAAC,EAAE,QAAQ;YACX,CAAC,EAAE,qBAAqB;YACxB,CAAC,EAAE,MAAM;SACV,CAAC;QACF,MAAM,SAAS,GAA2B;YACxC,CAAC,EAAE,OAAO;YACV,CAAC,EAAE,QAAQ;YACX,CAAC,EAAE,UAAU;SACd,CAAC;QAYF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAChD,IAAI,CAAC,IAAI;aACN,GAAG,CAEF,uCAAuC,GAAG,CAAC,SAAS,CAAC,sBAAsB,GAAG,0GAA0G,CAAC;aAC1L,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CACvB,CAAC;QAEF,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACnC,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,IAAI,CAAC,CAAC,eAAe;gBAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7C,IAAI,CAAC,CAAC,eAAe;gBAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7C,IAAI,CAAC,CAAC,4BAA4B;gBAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC1D,OAAO;gBACL,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,WAAW,CAAC,CAAC,QAAQ,EAAE;gBAClE,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,EAAE,EAAE,CAAC,CAAC,UAAU;gBAChB,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,CAAC,SAAS,EAAE;gBACtD,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI;gBACrD,YAAY,EAAE,IAAqB;aACpC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,KAAK,EAAE,MAAM;YAChC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;YACpD,CAAC,CAAC,GAAG,CAAC;QAER,MAAM,oBAAoB,GAAG,KAAK,EAAE,IAAI,CACtC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,WAAW,CAC3C,CAAC;QACF,MAAM,OAAO,GAAG,oBAAoB;YAClC,CAAC,CAAC,kKAAkK;YACpK,CAAC,CAAC,IAAI,CAAC;QACT,OAAO;YACL,SAAS;YACT,YAAY;YACZ,KAAK,EAAE,YAAY,CAAC,MAAM;YAC1B,OAAO;SACR,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,oBAAoB;QACxB,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAChC,IAAI,CAAC,IAAI;aACN,GAAG,CAAyB,4BAA4B,CAAC;aACzD,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAC7B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,IAAY;QAC7B,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAChC,IAAI,CAAC,IAAI;aACN,GAAG,CAAC,oCAAoC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;aACtD,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CACvB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,qBAAqB,CACzB,iBAAyB,EACzB,oBAA4B;QAO5B,MAAM,aAAa,GAAG;YACpB,2BAA2B;YAC3B,yBAAyB;YACzB,wBAAwB;SACzB,CAAC;QAEF,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;YACrC,IAAI,CAAC;gBACH,MAAM,GAAG,GACP,kCAAkC,GAAG,CAAC,iBAAiB,CAAC,KAAK;oBAC7D,2BAA2B,GAAG,CAAC,oBAAoB,CAAC,KAAK;oBACzD,0BAA0B,QAAQ,oDAAoD,CAAC;gBACzF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAChD,IAAI,CAAC,IAAI,CAAC,GAAG,CAA0B,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAChE,CAAC;gBACF,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,CAEzB,CAAC;gBACd,MAAM,UAAU,GACb,SAAS,EAAE,CAAC,SAAS,CAAoC,IAAI,EAAE,CAAC;gBACnE,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBACnC,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAwC,CAAC;oBACjE,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,oBAAoB,CAEjC,CAAC;oBACd,OAAO;wBACL,KAAK,EAAG,QAAQ,EAAE,CAAC,OAAO,CAAY,IAAI,EAAE;wBAC5C,KAAK,EAAE,CAAC,CAAC,OAAO,CAAW;qBAC5B,CAAC;gBACJ,CAAC,CAAC,CAAC;gBACH,OAAO;oBACL,iBAAiB;oBACjB,oBAAoB;oBACpB,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;oBACxD,OAAO;iBACR,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC;QAED,MAAM,IAAI,KAAK,CACb,cAAc,oBAAoB,gBAAgB,iBAAiB,qEAAqE,CACzI,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,SAAiB;QASnC,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE;YACtC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAGlC,kCAAkC,GAAG,CAAC,SAAS,CAAC,0FAA0F,CAC3I,CAAC;YACF,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACrC,UAAU,EAAE,CAAC,CAAC,YAAY,CAAW;gBACrC,WAAW,EAAE,CAAC,CAAC,aAAa,CAAW;gBACvC,aAAa,EAAE,CAAC,CAAC,eAAe,CAAa;gBAC7C,cAAc,EACX,CAAC,CAAC,gBAAgB,CAAoC,EAAE,KAAK;oBAC9D,KAAK;gBACP,WAAW,EAAE,CAAC,CAAC,sBAAsB,CAAW;aACjD,CAAC,CAAC,CAAC;QACN,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,sBAAsB,CAC1B,WAAmB,EACnB,IAA6B;QAE7B,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAC/B,IAAI,CAAC,IAAI,CAAC,KAAK,CACb,kCAAkC,GAAG,CAAC,WAAW,CAAC,IAAI,EACtD,IAAI,EACJ,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,CACjC,CACF,CAAC;IACJ,CAAC;CACF"}
@@ -1,14 +0,0 @@
1
- /**
2
- * Parse a Dataverse batch multipart/mixed response body.
3
- * Each MIME part wraps an inner HTTP response; this function extracts the JSON
4
- * body and status from each sub-request and returns an array of results.
5
- * Successful responses (2xx) are returned as parsed objects; error responses
6
- * are wrapped in `{ error, status }`.
7
- */
8
- export declare function parseMultipartResponse(body: string, boundary: string): unknown[];
9
- /**
10
- * Escape single quotes in OData string literals by doubling them.
11
- * Prevents OData injection in URL path segments like LogicalName='...'.
12
- */
13
- export declare function esc(value: string): string;
14
- //# sourceMappingURL=dataverse-client.utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dataverse-client.utils.d.ts","sourceRoot":"","sources":["../../src/dataverse/dataverse-client.utils.ts"],"names":[],"mappings":"AAcA;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,OAAO,EAAE,CA0CX;AAED;;;GAGG;AACH,wBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEzC"}
@@ -1,65 +0,0 @@
1
- // ─── Multipart Response Parsing ──────────────────────────────────────────
2
- /**
3
- * Returns the index just after the first double-newline (\r\n\r\n or \n\n).
4
- * Returns -1 if not found.
5
- */
6
- function findDoubleNewline(text) {
7
- const crlfIdx = text.indexOf("\r\n\r\n");
8
- const lfIdx = text.indexOf("\n\n");
9
- if (crlfIdx !== -1 && (lfIdx === -1 || crlfIdx <= lfIdx))
10
- return crlfIdx + 4;
11
- if (lfIdx !== -1)
12
- return lfIdx + 2;
13
- return -1;
14
- }
15
- /**
16
- * Parse a Dataverse batch multipart/mixed response body.
17
- * Each MIME part wraps an inner HTTP response; this function extracts the JSON
18
- * body and status from each sub-request and returns an array of results.
19
- * Successful responses (2xx) are returned as parsed objects; error responses
20
- * are wrapped in `{ error, status }`.
21
- */
22
- export function parseMultipartResponse(body, boundary) {
23
- const results = [];
24
- const parts = body.split(`--${boundary}`);
25
- for (const part of parts) {
26
- const trimmed = part.trim();
27
- // Skip preamble (empty) and epilogue (--)
28
- if (!trimmed || trimmed === "--")
29
- continue;
30
- // Part layout: MIME-headers \r\n\r\n inner-HTTP-response
31
- const mimeEnd = findDoubleNewline(part);
32
- if (mimeEnd === -1)
33
- continue;
34
- const innerHttp = part.slice(mimeEnd);
35
- // Inner HTTP layout: status-line \r\n response-headers \r\n\r\n body
36
- const httpHeadersEnd = findDoubleNewline(innerHttp);
37
- if (httpHeadersEnd === -1)
38
- continue;
39
- const statusLine = innerHttp.trimStart().split(/\r?\n/)[0] ?? "";
40
- const statusMatch = statusLine.match(/^HTTP\/\d+\.\d+\s+(\d{3})/);
41
- const statusCode = statusMatch ? parseInt(statusMatch[1], 10) : 0;
42
- const isSuccess = statusCode >= 200 && statusCode < 300;
43
- const jsonBody = innerHttp.slice(httpHeadersEnd).trim();
44
- if (!jsonBody) {
45
- results.push(isSuccess ? null : { error: "Empty response body", status: statusCode });
46
- continue;
47
- }
48
- try {
49
- const parsed = JSON.parse(jsonBody);
50
- results.push(isSuccess ? parsed : { error: parsed, status: statusCode });
51
- }
52
- catch {
53
- results.push({ error: jsonBody, status: statusCode });
54
- }
55
- }
56
- return results;
57
- }
58
- /**
59
- * Escape single quotes in OData string literals by doubling them.
60
- * Prevents OData injection in URL path segments like LogicalName='...'.
61
- */
62
- export function esc(value) {
63
- return value.replace(/'/g, "''");
64
- }
65
- //# sourceMappingURL=dataverse-client.utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dataverse-client.utils.js","sourceRoot":"","sources":["../../src/dataverse/dataverse-client.utils.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAE5E;;;GAGG;AACH,SAAS,iBAAiB,CAAC,IAAY;IACrC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnC,IAAI,OAAO,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,IAAI,OAAO,IAAI,KAAK,CAAC;QAAE,OAAO,OAAO,GAAG,CAAC,CAAC;IAC7E,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,OAAO,KAAK,GAAG,CAAC,CAAC;IACnC,OAAO,CAAC,CAAC,CAAC;AACZ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAAY,EACZ,QAAgB;IAEhB,MAAM,OAAO,GAAc,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;IAE1C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,0CAA0C;QAC1C,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,IAAI;YAAE,SAAS;QAE3C,2DAA2D;QAC3D,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,OAAO,KAAK,CAAC,CAAC;YAAE,SAAS;QAE7B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEtC,yEAAyE;QACzE,MAAM,cAAc,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,cAAc,KAAK,CAAC,CAAC;YAAE,SAAS;QAEpC,MAAM,UAAU,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACjE,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAClE,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,MAAM,SAAS,GAAG,UAAU,IAAI,GAAG,IAAI,UAAU,GAAG,GAAG,CAAC;QAExD,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,IAAI,EAAE,CAAC;QAExD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,CACV,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE,MAAM,EAAE,UAAU,EAAE,CACxE,CAAC;YACF,SAAS;QACX,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACpC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QAC3E,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,GAAG,CAAC,KAAa;IAC/B,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACnC,CAAC"}
@@ -1,38 +0,0 @@
1
- export declare class HttpError extends Error {
2
- readonly status: number;
3
- readonly data: unknown;
4
- readonly code?: string | undefined;
5
- readonly responseHeaders: Record<string, string>;
6
- constructor(message: string, status: number, data: unknown, code?: string | undefined, responseHeaders?: Record<string, string>);
7
- }
8
- export interface HttpRequestOptions {
9
- headers?: Record<string, string>;
10
- responseType?: "text";
11
- /** Override the client-level timeout for this specific request (milliseconds). */
12
- timeoutMs?: number;
13
- }
14
- export interface HttpResponse<T = unknown> {
15
- data: T;
16
- status: number;
17
- headers: Record<string, string>;
18
- }
19
- export declare class HttpClient {
20
- readonly baseURL: string;
21
- private readonly timeoutMs;
22
- readonly defaultHeaders: Record<string, string>;
23
- private readonly tokenProvider;
24
- constructor(config: {
25
- baseURL: string;
26
- timeout?: number;
27
- headers?: Record<string, string>;
28
- tokenProvider?: () => Promise<string>;
29
- });
30
- get<T = unknown>(url: string, options?: HttpRequestOptions): Promise<HttpResponse<T>>;
31
- post<T = unknown>(url: string, body?: unknown, options?: HttpRequestOptions): Promise<HttpResponse<T>>;
32
- patch<T = unknown>(url: string, body?: unknown, options?: HttpRequestOptions): Promise<HttpResponse<T>>;
33
- put<T = unknown>(url: string, body?: unknown, options?: HttpRequestOptions): Promise<HttpResponse<T>>;
34
- delete<T = unknown>(url: string, options?: HttpRequestOptions): Promise<HttpResponse<T>>;
35
- private resolveUrl;
36
- private request;
37
- }
38
- //# sourceMappingURL=http-client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/dataverse/http-client.ts"],"names":[],"mappings":"AAAA,qBAAa,SAAU,SAAQ,KAAK;aAGhB,MAAM,EAAE,MAAM;aACd,IAAI,EAAE,OAAO;aACb,IAAI,CAAC,EAAE,MAAM;aACb,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;gBAJvD,OAAO,EAAE,MAAM,EACC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,OAAO,EACb,IAAI,CAAC,EAAE,MAAM,YAAA,EACb,eAAe,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM;CAK/D;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,OAAO;IACvC,IAAI,EAAE,CAAC,CAAC;IACR,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,qBAAa,UAAU;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAsC;gBAExD,MAAM,EAAE;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;KACvC;IASK,GAAG,CAAC,CAAC,GAAG,OAAO,EACnB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAIrB,IAAI,CAAC,CAAC,GAAG,OAAO,EACpB,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAIrB,KAAK,CAAC,CAAC,GAAG,OAAO,EACrB,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAIrB,GAAG,CAAC,CAAC,GAAG,OAAO,EACnB,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAIrB,MAAM,CAAC,CAAC,GAAG,OAAO,EACtB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAI3B,OAAO,CAAC,UAAU;YAkBJ,OAAO;CAqEtB"}