@microsoft/power-apps 1.0.0 → 1.0.3

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 (225) hide show
  1. package/README.md +6 -32
  2. package/lib/__tests__/DefaultPowerAppsBridge.test.d.ts +5 -0
  3. package/lib/__tests__/DefaultPowerAppsBridge.test.d.ts.map +1 -0
  4. package/lib/__tests__/DefaultPowerAppsBridge.test.js +173 -0
  5. package/lib/__tests__/DefaultPowerAppsBridge.test.js.map +1 -0
  6. package/lib/__tests__/connectorDataOperationExecutor.spec.d.ts +5 -0
  7. package/lib/__tests__/connectorDataOperationExecutor.spec.d.ts.map +1 -0
  8. package/lib/__tests__/{connectorDataOperation.spec.js → connectorDataOperationExecutor.spec.js} +99 -15
  9. package/lib/__tests__/connectorDataOperationExecutor.spec.js.map +1 -0
  10. package/lib/__tests__/dataverseDataOperationExecutor.spec.d.ts +5 -0
  11. package/lib/__tests__/dataverseDataOperationExecutor.spec.d.ts.map +1 -0
  12. package/lib/__tests__/{dataverseDataOperation.spec.js → dataverseDataOperationExecutor.spec.js} +28 -70
  13. package/lib/__tests__/dataverseDataOperationExecutor.spec.js.map +1 -0
  14. package/lib/__tests__/{dataverseDataOperation.spec.d.ts → mockDataOperationExecutor.spec.d.ts} +1 -1
  15. package/lib/__tests__/mockDataOperationExecutor.spec.d.ts.map +1 -0
  16. package/lib/__tests__/mockDataOperationExecutor.spec.js +51 -0
  17. package/lib/__tests__/mockDataOperationExecutor.spec.js.map +1 -0
  18. package/lib/__tests__/powerDataRuntimeInstance.test.js +2 -17
  19. package/lib/__tests__/powerDataRuntimeInstance.test.js.map +1 -1
  20. package/lib/__tests__/runtimeDataClient.spec.js +20 -0
  21. package/lib/__tests__/runtimeDataClient.spec.js.map +1 -1
  22. package/lib/__tests__/runtimeDataOperation.test.js +42 -41
  23. package/lib/__tests__/runtimeDataOperation.test.js.map +1 -1
  24. package/lib/app/App.Types.d.ts +28 -0
  25. package/lib/app/App.Types.d.ts.map +1 -0
  26. package/lib/{__tests__/connectorDataOperation.spec.d.ts → app/App.Types.js} +1 -1
  27. package/lib/app/App.Types.js.map +1 -0
  28. package/lib/app/Config.d.ts +6 -0
  29. package/lib/app/Config.d.ts.map +1 -0
  30. package/lib/app/Config.js +10 -0
  31. package/lib/app/Config.js.map +1 -0
  32. package/lib/app/ContextProvider.d.ts +6 -0
  33. package/lib/app/ContextProvider.d.ts.map +1 -0
  34. package/lib/app/ContextProvider.js +13 -0
  35. package/lib/app/ContextProvider.js.map +1 -0
  36. package/lib/app/index.d.ts +3 -1
  37. package/lib/app/index.d.ts.map +1 -1
  38. package/lib/app/index.js +2 -1
  39. package/lib/app/index.js.map +1 -1
  40. package/lib/data/executors/index.d.ts +6 -0
  41. package/lib/data/executors/index.d.ts.map +1 -0
  42. package/lib/data/executors/index.js +5 -0
  43. package/lib/data/executors/index.js.map +1 -0
  44. package/lib/data/metadata/dataverse/index.d.ts +6 -0
  45. package/lib/data/metadata/dataverse/index.d.ts.map +1 -0
  46. package/lib/data/metadata/dataverse/index.js +5 -0
  47. package/lib/data/metadata/dataverse/index.js.map +1 -0
  48. package/lib/data/powerAppsData.d.ts +3 -1
  49. package/lib/data/powerAppsData.d.ts.map +1 -1
  50. package/lib/data/powerAppsData.js +6 -5
  51. package/lib/data/powerAppsData.js.map +1 -1
  52. package/lib/internal/data/ConnectionUtils.js +1 -1
  53. package/lib/internal/data/ConnectionUtils.js.map +1 -1
  54. package/lib/internal/data/OperationExecutor.js +1 -1
  55. package/lib/internal/data/OperationExecutor.js.map +1 -1
  56. package/lib/internal/data/core/api/createRecord.d.ts.map +1 -1
  57. package/lib/internal/data/core/api/createRecord.js +1 -1
  58. package/lib/internal/data/core/api/createRecord.js.map +1 -1
  59. package/lib/internal/data/core/api/deleteRecord.js +1 -1
  60. package/lib/internal/data/core/api/deleteRecord.js.map +1 -1
  61. package/lib/internal/data/core/api/execute.js +1 -1
  62. package/lib/internal/data/core/api/execute.js.map +1 -1
  63. package/lib/internal/data/core/api/retrieveMultipleRecords.d.ts.map +1 -1
  64. package/lib/internal/data/core/api/retrieveMultipleRecords.js +1 -1
  65. package/lib/internal/data/core/api/retrieveMultipleRecords.js.map +1 -1
  66. package/lib/internal/data/core/api/retrieveRecord.d.ts.map +1 -1
  67. package/lib/internal/data/core/api/retrieveRecord.js +1 -1
  68. package/lib/internal/data/core/api/retrieveRecord.js.map +1 -1
  69. package/lib/internal/data/core/api/updateRecord.d.ts.map +1 -1
  70. package/lib/internal/data/core/api/updateRecord.js +1 -1
  71. package/lib/internal/data/core/api/updateRecord.js.map +1 -1
  72. package/lib/internal/data/core/common/types.d.ts +3 -10
  73. package/lib/internal/data/core/common/types.d.ts.map +1 -1
  74. package/lib/internal/data/core/common/types.js.map +1 -1
  75. package/lib/internal/data/core/data/{runtimeDataOperations.d.ts → defaultOperationOrchestrator.d.ts} +6 -12
  76. package/lib/internal/data/core/data/defaultOperationOrchestrator.d.ts.map +1 -0
  77. package/lib/internal/data/core/data/{runtimeDataOperations.js → defaultOperationOrchestrator.js} +14 -43
  78. package/lib/internal/data/core/data/defaultOperationOrchestrator.js.map +1 -0
  79. package/lib/internal/data/core/data/executors/__tests__/dataverseDataOperationExecutor.test.d.ts +5 -0
  80. package/lib/internal/data/core/data/executors/__tests__/dataverseDataOperationExecutor.test.d.ts.map +1 -0
  81. package/lib/internal/data/core/data/executors/__tests__/dataverseDataOperationExecutor.test.js +116 -0
  82. package/lib/internal/data/core/data/executors/__tests__/dataverseDataOperationExecutor.test.js.map +1 -0
  83. package/lib/internal/data/core/data/{connectorDataOperation.d.ts → executors/connectorDataOperationExecutor.d.ts} +22 -7
  84. package/lib/internal/data/core/data/executors/connectorDataOperationExecutor.d.ts.map +1 -0
  85. package/lib/internal/data/core/data/{connectorDataOperation.js → executors/connectorDataOperationExecutor.js} +66 -30
  86. package/lib/internal/data/core/data/executors/connectorDataOperationExecutor.js.map +1 -0
  87. package/lib/internal/data/core/data/{dataverseDataOperation.d.ts → executors/dataverseDataOperationExecutor.d.ts} +19 -27
  88. package/lib/internal/data/core/data/executors/dataverseDataOperationExecutor.d.ts.map +1 -0
  89. package/lib/internal/data/core/data/executors/dataverseDataOperationExecutor.js +458 -0
  90. package/lib/internal/data/core/data/executors/dataverseDataOperationExecutor.js.map +1 -0
  91. package/lib/internal/data/core/data/executors/index.d.ts +5 -0
  92. package/lib/internal/data/core/data/executors/index.d.ts.map +1 -0
  93. package/lib/internal/data/core/data/executors/index.js +5 -0
  94. package/lib/internal/data/core/data/executors/index.js.map +1 -0
  95. package/lib/internal/data/core/data/executors/mockDataOperationExecutor.d.ts +21 -0
  96. package/lib/internal/data/core/data/executors/mockDataOperationExecutor.d.ts.map +1 -0
  97. package/lib/internal/data/core/data/executors/mockDataOperationExecutor.js +75 -0
  98. package/lib/internal/data/core/data/executors/mockDataOperationExecutor.js.map +1 -0
  99. package/lib/internal/data/core/data/executors/shared/stringQueryOptions.d.ts +11 -0
  100. package/lib/internal/data/core/data/executors/shared/stringQueryOptions.d.ts.map +1 -0
  101. package/lib/internal/data/core/data/executors/shared/stringQueryOptions.js +38 -0
  102. package/lib/internal/data/core/data/executors/shared/stringQueryOptions.js.map +1 -0
  103. package/lib/internal/data/core/metadata/runtimeDataSourceService.d.ts.map +1 -1
  104. package/lib/internal/data/core/metadata/runtimeDataSourceService.js +2 -1
  105. package/lib/internal/data/core/metadata/runtimeDataSourceService.js.map +1 -1
  106. package/lib/internal/data/core/runtime/getRuntimeContext.d.ts +3 -2
  107. package/lib/internal/data/core/runtime/getRuntimeContext.d.ts.map +1 -1
  108. package/lib/internal/data/core/runtime/getRuntimeContext.js +16 -3
  109. package/lib/internal/data/core/runtime/getRuntimeContext.js.map +1 -1
  110. package/lib/internal/data/core/runtime/powerDataRuntime.d.ts +3 -11
  111. package/lib/internal/data/core/runtime/powerDataRuntime.d.ts.map +1 -1
  112. package/lib/internal/data/core/runtime/powerDataRuntime.js +6 -19
  113. package/lib/internal/data/core/runtime/powerDataRuntime.js.map +1 -1
  114. package/lib/internal/data/core/runtime/powerDataRuntimeInstance.d.ts +2 -3
  115. package/lib/internal/data/core/runtime/powerDataRuntimeInstance.d.ts.map +1 -1
  116. package/lib/internal/data/core/runtime/powerDataRuntimeInstance.js +1 -3
  117. package/lib/internal/data/core/runtime/powerDataRuntimeInstance.js.map +1 -1
  118. package/lib/internal/data/core/runtimeClient/runtimeDataClient.d.ts.map +1 -1
  119. package/lib/internal/data/core/runtimeClient/runtimeDataClient.js +1 -0
  120. package/lib/internal/data/core/runtimeClient/runtimeDataClient.js.map +1 -1
  121. package/lib/internal/data/core/telemetry/log.d.ts +7 -0
  122. package/lib/internal/data/core/telemetry/log.d.ts.map +1 -1
  123. package/lib/internal/data/core/telemetry/log.js +38 -1
  124. package/lib/internal/data/core/telemetry/log.js.map +1 -1
  125. package/lib/internal/data/core/types/dataverseMetadata.d.ts +408 -0
  126. package/lib/internal/data/core/types/dataverseMetadata.d.ts.map +1 -0
  127. package/lib/internal/data/core/types/dataverseMetadata.js +118 -0
  128. package/lib/internal/data/core/types/dataverseMetadata.js.map +1 -0
  129. package/lib/internal/data/core/types/index.d.ts +33 -2
  130. package/lib/internal/data/core/types/index.d.ts.map +1 -1
  131. package/lib/internal/data/core/types/index.js.map +1 -1
  132. package/lib/internal/data/index.d.ts +5 -0
  133. package/lib/internal/data/index.d.ts.map +1 -0
  134. package/lib/internal/data/index.js +5 -0
  135. package/lib/internal/data/index.js.map +1 -0
  136. package/lib/internal/plugins/DefaultPowerAppsBridge.d.ts +19 -0
  137. package/lib/internal/plugins/DefaultPowerAppsBridge.d.ts.map +1 -0
  138. package/lib/internal/plugins/DefaultPowerAppsBridge.js +97 -0
  139. package/lib/internal/plugins/DefaultPowerAppsBridge.js.map +1 -0
  140. package/lib/internal/plugins/PluginBridge.d.ts +14 -0
  141. package/lib/internal/plugins/PluginBridge.d.ts.map +1 -0
  142. package/lib/internal/plugins/PluginBridge.js +25 -0
  143. package/lib/internal/plugins/PluginBridge.js.map +1 -0
  144. package/lib/internal/plugins/SendMessage/CompatibleMessageReceiver.d.ts.map +1 -0
  145. package/lib/internal/{communication → plugins/SendMessage}/CompatibleMessageReceiver.js +4 -3
  146. package/lib/internal/plugins/SendMessage/CompatibleMessageReceiver.js.map +1 -0
  147. package/lib/internal/plugins/SendMessage/IncompatibleMessageReceiver.d.ts.map +1 -0
  148. package/lib/internal/plugins/SendMessage/IncompatibleMessageReceiver.js.map +1 -0
  149. package/lib/internal/plugins/SendMessage/MessageReceiver.Types.d.ts.map +1 -0
  150. package/lib/internal/plugins/SendMessage/MessageReceiver.Types.js.map +1 -0
  151. package/lib/internal/{communication → plugins/SendMessage}/SendMessage.d.ts +0 -1
  152. package/lib/internal/plugins/SendMessage/SendMessage.d.ts.map +1 -0
  153. package/lib/internal/{communication → plugins/SendMessage}/SendMessage.js +1 -2
  154. package/lib/internal/plugins/SendMessage/SendMessage.js.map +1 -0
  155. package/lib/internal/plugins/SendMessage/SendMessageOperation.d.ts.map +1 -0
  156. package/lib/internal/plugins/SendMessage/SendMessageOperation.js.map +1 -0
  157. package/lib/internal/plugins/SendMessage/index.d.ts +6 -0
  158. package/lib/internal/plugins/SendMessage/index.d.ts.map +1 -0
  159. package/lib/internal/plugins/SendMessage/index.js +5 -0
  160. package/lib/internal/plugins/SendMessage/index.js.map +1 -0
  161. package/lib/internal/plugins/index.d.ts +5 -0
  162. package/lib/internal/plugins/index.d.ts.map +1 -0
  163. package/lib/internal/plugins/index.js +5 -0
  164. package/lib/internal/plugins/index.js.map +1 -0
  165. package/lib/telemetry/Logger.types.d.ts +1 -1
  166. package/lib/telemetry/Logger.types.d.ts.map +1 -1
  167. package/lib/telemetry/LoggerManager.d.ts +2 -2
  168. package/lib/telemetry/LoggerManager.d.ts.map +1 -1
  169. package/lib/telemetry/LoggerManager.js +2 -2
  170. package/lib/telemetry/LoggerManager.js.map +1 -1
  171. package/lib/telemetry/Metrics.types.d.ts +4 -18
  172. package/lib/telemetry/Metrics.types.d.ts.map +1 -1
  173. package/lib/telemetry/Performance.d.ts +1 -1
  174. package/lib/telemetry/Performance.d.ts.map +1 -1
  175. package/lib/telemetry/Performance.js +1 -1
  176. package/lib/telemetry/Performance.js.map +1 -1
  177. package/lib/telemetry/index.d.ts +3 -1
  178. package/lib/telemetry/index.d.ts.map +1 -1
  179. package/lib/telemetry/index.js +4 -1
  180. package/lib/telemetry/index.js.map +1 -1
  181. package/package.json +14 -1
  182. package/lib/__tests__/connectorDataOperation.spec.d.ts.map +0 -1
  183. package/lib/__tests__/connectorDataOperation.spec.js.map +0 -1
  184. package/lib/__tests__/dataverseDataOperation.spec.d.ts.map +0 -1
  185. package/lib/__tests__/dataverseDataOperation.spec.js.map +0 -1
  186. package/lib/app/Lifecycle.d.ts +0 -9
  187. package/lib/app/Lifecycle.d.ts.map +0 -1
  188. package/lib/app/Lifecycle.js +0 -36
  189. package/lib/app/Lifecycle.js.map +0 -1
  190. package/lib/internal/communication/CompatibleMessageReceiver.d.ts.map +0 -1
  191. package/lib/internal/communication/CompatibleMessageReceiver.js.map +0 -1
  192. package/lib/internal/communication/IncompatibleMessageReceiver.d.ts.map +0 -1
  193. package/lib/internal/communication/IncompatibleMessageReceiver.js.map +0 -1
  194. package/lib/internal/communication/MessageReceiver.Types.d.ts.map +0 -1
  195. package/lib/internal/communication/MessageReceiver.Types.js.map +0 -1
  196. package/lib/internal/communication/SendMessage.d.ts.map +0 -1
  197. package/lib/internal/communication/SendMessage.js.map +0 -1
  198. package/lib/internal/communication/SendMessageOperation.d.ts.map +0 -1
  199. package/lib/internal/communication/SendMessageOperation.js.map +0 -1
  200. package/lib/internal/data/core/data/connectorDataOperation.d.ts.map +0 -1
  201. package/lib/internal/data/core/data/connectorDataOperation.js.map +0 -1
  202. package/lib/internal/data/core/data/dataverseDataOperation.d.ts.map +0 -1
  203. package/lib/internal/data/core/data/dataverseDataOperation.js +0 -508
  204. package/lib/internal/data/core/data/dataverseDataOperation.js.map +0 -1
  205. package/lib/internal/data/core/data/runtimeDataOperations.d.ts.map +0 -1
  206. package/lib/internal/data/core/data/runtimeDataOperations.js.map +0 -1
  207. package/lib/internal/data/core/runtime/initializeRuntime.d.ts +0 -13
  208. package/lib/internal/data/core/runtime/initializeRuntime.d.ts.map +0 -1
  209. package/lib/internal/data/core/runtime/initializeRuntime.js +0 -38
  210. package/lib/internal/data/core/runtime/initializeRuntime.js.map +0 -1
  211. package/lib/internal/plugin/PluginCommon.d.ts +0 -16
  212. package/lib/internal/plugin/PluginCommon.d.ts.map +0 -1
  213. package/lib/internal/plugin/PluginCommon.js +0 -114
  214. package/lib/internal/plugin/PluginCommon.js.map +0 -1
  215. package/lib/internal/plugin/PluginMobile.d.ts +0 -13
  216. package/lib/internal/plugin/PluginMobile.d.ts.map +0 -1
  217. package/lib/internal/plugin/PluginMobile.js +0 -109
  218. package/lib/internal/plugin/PluginMobile.js.map +0 -1
  219. /package/lib/internal/{communication → plugins/SendMessage}/CompatibleMessageReceiver.d.ts +0 -0
  220. /package/lib/internal/{communication → plugins/SendMessage}/IncompatibleMessageReceiver.d.ts +0 -0
  221. /package/lib/internal/{communication → plugins/SendMessage}/IncompatibleMessageReceiver.js +0 -0
  222. /package/lib/internal/{communication → plugins/SendMessage}/MessageReceiver.Types.d.ts +0 -0
  223. /package/lib/internal/{communication → plugins/SendMessage}/MessageReceiver.Types.js +0 -0
  224. /package/lib/internal/{communication → plugins/SendMessage}/SendMessageOperation.d.ts +0 -0
  225. /package/lib/internal/{communication → plugins/SendMessage}/SendMessageOperation.js +0 -0
@@ -0,0 +1,458 @@
1
+ /*!
2
+ * Copyright (C) Microsoft Corporation. All rights reserved.
3
+ */
4
+ import { DataSources, HttpMethod, } from '../../common/types';
5
+ import { createErrorResponse, DataOperationErrorMessages, ErrorCodes, PowerDataRuntimeError, } from '../../error/error';
6
+ import { Log } from '../../telemetry/log';
7
+ import { DataverseOperationName } from '../../error/constants';
8
+ import { convertOptionsToQueryString } from './shared/stringQueryOptions';
9
+ // OData annotation constants
10
+ export const ODATA_CONTEXT = '@odata.context';
11
+ export const ODATA_NEXT_LINK = '@odata.nextLink';
12
+ export const CRM_TOTAL_RECORD_COUNT = '@Microsoft.Dynamics.CRM.totalrecordcount';
13
+ export const CRM_TOTAL_RECORD_COUNT_LIMIT_EXCEEDED = '@Microsoft.Dynamics.CRM.totalrecordcountlimitexceeded';
14
+ export const CRM_GLOBAL_METADATA_VERSION = '@Microsoft.Dynamics.CRM.globalmetadataversion';
15
+ /**
16
+ * DataverseDataOperation provides functionality for performing CRUD operations
17
+ * against the Dataverse data source using the XRM WebApi or runtime metadata client.
18
+ */
19
+ export class DataverseDataOperationExecutor {
20
+ // Static identifiers for services and actions
21
+ // Used to identify specific services and actions within the PowerApps environment
22
+ _clientProvider;
23
+ _databaseReferences;
24
+ constructor(clientProvider) {
25
+ this._clientProvider = clientProvider;
26
+ }
27
+ /**
28
+ * Creates a new record in Dataverse
29
+ * @param tableName - The name of the table
30
+ * @param data - The record data to create
31
+ * @returns Promise resolving to operation result
32
+ */
33
+ async createRecordAsync(tableName, data) {
34
+ return this._executeNativeDataverseOperation(tableName, (dataSourceInfo, tblName) => this._getDataverseRequestUrl(dataSourceInfo, tblName), async (dataClient, requestUrl, dataSourceInfo) => {
35
+ const dataverseResponse = await dataClient.createDataAsync(requestUrl, DataSources.Dataverse, // Use environment name for Dataverse authentication
36
+ tableName, data, {
37
+ operationName: DataverseOperationName.CreateRecord,
38
+ datasetName: dataSourceInfo.datasetName,
39
+ isDataVerseOperation: true,
40
+ });
41
+ const returnValue = {
42
+ success: dataverseResponse.success,
43
+ data: dataverseResponse.data,
44
+ error: dataverseResponse.error,
45
+ };
46
+ return returnValue;
47
+ }, DataOperationErrorMessages.CreateFailed);
48
+ }
49
+ /**
50
+ * Updates an existing record in Dataverse
51
+ * @param tableName - The name of the table
52
+ * @param id - The record identifier
53
+ * @param data - The updated record data
54
+ * @returns Promise resolving to operation result
55
+ */
56
+ async updateRecordAsync(tableName, id, data) {
57
+ return this._executeNativeDataverseOperation(tableName, (dataSourceInfo, tblName) => this._getDataverseRequestUrl(dataSourceInfo, tblName, `(${id})`), async (dataClient, requestUrl, dataSourceInfo) => {
58
+ const dataverseResponse = await dataClient.updateDataAsync(requestUrl, DataSources.Dataverse, tableName, data, {
59
+ operationName: DataverseOperationName.UpdateRecord,
60
+ datasetName: dataSourceInfo.datasetName,
61
+ isDataVerseOperation: true,
62
+ });
63
+ const returnValue = {
64
+ success: dataverseResponse.success,
65
+ data: dataverseResponse.data,
66
+ error: dataverseResponse.error,
67
+ };
68
+ return returnValue;
69
+ }, DataOperationErrorMessages.UpdateFailed);
70
+ }
71
+ /**
72
+ * Deletes a record from Dataverse
73
+ * @param tableName - The name of the table
74
+ * @param id - The record identifier
75
+ * @returns Promise resolving to operation result
76
+ */
77
+ async deleteRecordAsync(tableName, id) {
78
+ return this._executeNativeDataverseOperation(tableName, (dataSourceInfo, tblName) => this._getDataverseRequestUrl(dataSourceInfo, tblName, `(${id})`), async (dataClient, requestUrl, dataSourceInfo) => {
79
+ const dataverseResponse = await dataClient.deleteDataAsync(requestUrl, DataSources.Dataverse, tableName, {
80
+ operationName: DataverseOperationName.DeleteRecord,
81
+ datasetName: dataSourceInfo.datasetName,
82
+ isDataVerseOperation: true,
83
+ });
84
+ const returnValue = {
85
+ success: dataverseResponse.success,
86
+ data: dataverseResponse.data,
87
+ error: dataverseResponse.error,
88
+ };
89
+ return returnValue;
90
+ }, DataOperationErrorMessages.DeleteFailed);
91
+ }
92
+ /**
93
+ * Retrieves a single record from Dataverse
94
+ * @param tableName - The name of the table
95
+ * @param id - The record identifier
96
+ * @param options - The retrieval options
97
+ * @returns Promise resolving to operation result
98
+ */
99
+ async retrieveRecordAsync(tableName, id, options) {
100
+ const { maxPageSize = 500, ...rest } = options || {};
101
+ const optionsString = convertOptionsToQueryString(rest);
102
+ // Build Prefer header with updated maxPageSize
103
+ const headers = { Prefer: `odata.maxpagesize=${maxPageSize},odata.include-annotations=*` };
104
+ return this._executeNativeDataverseOperation(tableName, (dataSourceInfo, tblName) => this._getDataverseRequestUrl(dataSourceInfo, tblName, `(${id})${optionsString}`), async (dataClient, requestUrl, dataSourceInfo) => {
105
+ const dataverseResponse = await dataClient.retrieveDataAsync(requestUrl, DataSources.Dataverse, tableName, HttpMethod.GET, headers, undefined, // No body for GET requests
106
+ {
107
+ operationName: DataverseOperationName.RetrieveRecord,
108
+ datasetName: dataSourceInfo.datasetName,
109
+ isDataVerseOperation: true,
110
+ });
111
+ const returnValue = {
112
+ success: dataverseResponse.success,
113
+ data: dataverseResponse.data,
114
+ error: dataverseResponse.error,
115
+ };
116
+ return returnValue;
117
+ }, DataOperationErrorMessages.RetrieveFailed);
118
+ }
119
+ /**
120
+ * Retrieves multiple records from Dataverse
121
+ * @param tableName - The name of the table
122
+ * @param options - The retrieval options
123
+ * @param maxPageSize - Optional maximum page size
124
+ * @returns Promise resolving to operation result
125
+ */
126
+ async retrieveMultipleRecordsAsync(tableName, options) {
127
+ const { maxPageSize = 500, ...rest } = options || {};
128
+ const optionsString = convertOptionsToQueryString(rest);
129
+ // Build Prefer header with updated maxPageSize
130
+ const headers = { Prefer: `odata.maxpagesize=${maxPageSize},odata.include-annotations=*` };
131
+ return this._executeNativeDataverseOperation(tableName, (dataSourceInfo, tblName) => this._getDataverseRequestUrl(dataSourceInfo, tblName, optionsString), async (dataClient, requestUrl, dataSourceInfo) => {
132
+ const dataverseResponse = await dataClient.retrieveDataAsync(requestUrl, DataSources.Dataverse, tableName, HttpMethod.GET, headers, undefined, // No body for GET requests
133
+ {
134
+ operationName: DataverseOperationName.RetrieveMultipleRecords,
135
+ datasetName: dataSourceInfo.datasetName,
136
+ isDataVerseOperation: true,
137
+ });
138
+ const returnValue = {
139
+ success: dataverseResponse.success,
140
+ data: dataverseResponse?.data?.value || [],
141
+ skipToken: extractSkipToken(dataverseResponse?.data?.[ODATA_NEXT_LINK]),
142
+ error: dataverseResponse.error,
143
+ };
144
+ return returnValue;
145
+ }, DataOperationErrorMessages.RetrieveMultipleFailed);
146
+ }
147
+ /**
148
+ * Executes a custom Dataverse operation
149
+ * @param operation - The operation to execute
150
+ * @returns Promise resolving to operation result
151
+ */
152
+ async executeAsync(operation) {
153
+ const { dataverseRequest } = operation;
154
+ if (!dataverseRequest) {
155
+ return {
156
+ success: false,
157
+ data: null,
158
+ error: { message: 'Dataverse request details are required for Dataverse operations.' },
159
+ };
160
+ }
161
+ const { action, parameters } = dataverseRequest;
162
+ switch (action) {
163
+ // Future custom actions can be handled here
164
+ case 'getEntityMetadata':
165
+ const { tableName, options } = parameters;
166
+ if (!tableName) {
167
+ return {
168
+ success: false,
169
+ data: null,
170
+ error: { message: 'Table name is required for getEntityMetadata action.' },
171
+ };
172
+ }
173
+ return this._getEntityMetadata(tableName, options ?? {});
174
+ default:
175
+ Log.trackEvent('DataverseDataOperation.UnsupportedAction', {
176
+ message: `Unsupported Dataverse action: ${action}`,
177
+ });
178
+ return {
179
+ success: false,
180
+ data: null,
181
+ error: { message: `Unsupported Dataverse action: "${action}"` },
182
+ };
183
+ }
184
+ }
185
+ async _getEntityMetadata(tableName, options) {
186
+ const client = await this._getDataClient();
187
+ const dataSourceInfo = await this._getDataverseDataSourceInfo(tableName);
188
+ const url = this._generateMetadataRequestUrl(dataSourceInfo, options);
189
+ return client.retrieveDataAsync(url, DataSources.Dataverse, 'EntityDefinitions', HttpMethod.GET, {
190
+ Consistency: 'Strong', // Force CDS to return latest metadata
191
+ }, undefined, {
192
+ operationName: DataverseOperationName.RetrieveRecord,
193
+ datasetName: dataSourceInfo.datasetName,
194
+ isDataVerseOperation: true,
195
+ });
196
+ }
197
+ /**
198
+ * Returns the database references for Dataverse, grouped by environment/database.
199
+ * These come from the launch app response via runtime metadata client.
200
+ */
201
+ async getDatabaseReferences() {
202
+ if (this._databaseReferences) {
203
+ return this._databaseReferences;
204
+ }
205
+ // Get database references from runtime metadata (launch app response)
206
+ // This is the authoritative source containing the complete linkedEnvironmentMetadata
207
+ const runtimeDatabaseReferences = await this._loadDatabaseReferencesFromRuntime();
208
+ if (runtimeDatabaseReferences && Object.keys(runtimeDatabaseReferences).length > 0) {
209
+ this._databaseReferences = runtimeDatabaseReferences;
210
+ return this._databaseReferences;
211
+ }
212
+ throw new PowerDataRuntimeError(ErrorCodes.DataSourceNotFound, 'Failed to load Dataverse database references from runtime.');
213
+ }
214
+ /**
215
+ * Loads database references from runtime metadata client (launch app response).
216
+ */
217
+ async _loadDatabaseReferencesFromRuntime() {
218
+ try {
219
+ const metadataClient = await this._getMetadataClient();
220
+ // Get CDS data source configs from runtime metadata
221
+ const response = await metadataClient.getAppDataSourceConfigsAsync();
222
+ if (!response.success || !response.data) {
223
+ return undefined;
224
+ }
225
+ const cdsDataSources = Object.values(response.data);
226
+ if (cdsDataSources.length === 0) {
227
+ return undefined;
228
+ }
229
+ // Build database references from runtime CDS data source configs
230
+ const databaseReferences = {};
231
+ for (const cdsDataSource of cdsDataSources) {
232
+ // Type assertion for CDS data source config
233
+ const cdsConfig = cdsDataSource;
234
+ // Extract instance URL and other metadata from runtime URL
235
+ const instanceUrl = this._extractInstanceUrlFromRuntimeUrl(cdsConfig.runtimeUrl);
236
+ // Use a standard environment name for CDS
237
+ const envName = 'default.cds';
238
+ if (!databaseReferences[envName]) {
239
+ databaseReferences[envName] = {
240
+ databaseDetails: {
241
+ referenceType: 'Environmental',
242
+ environmentName: envName,
243
+ overrideValues: {
244
+ status: 'NotSpecified',
245
+ environmentVariableName: '',
246
+ },
247
+ linkedEnvironmentMetadata: {
248
+ resourceId: '',
249
+ friendlyName: '',
250
+ uniqueName: '',
251
+ domainName: '',
252
+ version: cdsConfig.version || '9.2',
253
+ instanceUrl,
254
+ instanceApiUrl: cdsConfig.runtimeUrl,
255
+ baseLanguage: 1033,
256
+ instanceState: 'Ready',
257
+ createdTime: '',
258
+ platformSku: '',
259
+ },
260
+ },
261
+ dataSources: {},
262
+ };
263
+ }
264
+ // Add the data source
265
+ const dataSourceName = cdsConfig.entitySetName || cdsConfig.logicalName;
266
+ databaseReferences[envName].dataSources[dataSourceName] = {
267
+ entitySetName: cdsConfig.entitySetName,
268
+ logicalName: cdsConfig.logicalName,
269
+ isHidden: false,
270
+ };
271
+ }
272
+ return databaseReferences;
273
+ }
274
+ catch (error) {
275
+ // Info-level logging for tracing errors loading from runtime
276
+ Log.trackEvent('DataverseDataOperation.FailedToLoadDatabaseReferences', {
277
+ message: '[DataverseDataOperation] Failed to load database references from runtime',
278
+ error,
279
+ });
280
+ // Silently fail and return undefined if there's any error loading from runtime
281
+ return undefined;
282
+ }
283
+ }
284
+ _extractInstanceUrlFromRuntimeUrl(runtimeUrl) {
285
+ try {
286
+ // Runtime URL format: https://org.crm.dynamics.com/api/data/v9.2/
287
+ // Extract: https://org.crm.dynamics.com
288
+ // Using a simpler approach to avoid URL import issues
289
+ const matches = runtimeUrl.match(/^(https?:\/\/[^\/]+)/);
290
+ return matches ? matches[1] : runtimeUrl;
291
+ }
292
+ catch (error) {
293
+ Log.trackEvent('DataverseDataOperation.FailedToExtractInstanceUrl', {
294
+ message: '[DataverseDataOperation] Failed to extract instance URL from runtime URL',
295
+ error,
296
+ });
297
+ // Fallback to original URL on error
298
+ return runtimeUrl;
299
+ }
300
+ }
301
+ /**
302
+ * Helper to get a native data client and database reference
303
+ */
304
+ async _getDataClient() {
305
+ const dataClient = await this._clientProvider.getDataClientAsync();
306
+ if (!dataClient) {
307
+ Log.trackEvent('DataverseDataOperation.DataClientNotAvailable', {
308
+ message: '[DataverseDataOperation] Data client is not available',
309
+ });
310
+ throw new PowerDataRuntimeError(ErrorCodes.DataClientNotAvailable, 'Data client is not available.');
311
+ }
312
+ return dataClient;
313
+ }
314
+ /**
315
+ * Gets the metadata client instance
316
+ */
317
+ async _getMetadataClient() {
318
+ const metadataClient = await this._clientProvider.getMetadataClientAsync();
319
+ if (!metadataClient) {
320
+ Log.trackEvent('DataverseDataOperation.MetadataClientNotAvailable', {
321
+ message: '[DataverseDataOperation] Metadata client is not available',
322
+ });
323
+ throw new PowerDataRuntimeError(ErrorCodes.MetadataClientNotAvailable);
324
+ }
325
+ return metadataClient;
326
+ }
327
+ /**
328
+ * Template method for connector-style CRUD operations to reduce duplication.
329
+ * Handles client, dataSourceInfo, requestUrl, and error handling.
330
+ */
331
+ async _executeNativeDataverseOperation(tableName, buildUrl, operation, errorMessage) {
332
+ try {
333
+ const dataClient = await this._getDataClient();
334
+ const dataSourceInfo = await this._getDataverseDataSourceInfo(tableName);
335
+ const requestUrl = buildUrl(dataSourceInfo, tableName);
336
+ return operation(dataClient, requestUrl, dataSourceInfo);
337
+ }
338
+ catch (error) {
339
+ return createErrorResponse(error, errorMessage);
340
+ }
341
+ }
342
+ /**
343
+ * Helper to get the Dataverse datasourceinfo from databaseReferences
344
+ */
345
+ async _getDataverseDataSourceInfo(tableName) {
346
+ let dbRefs;
347
+ // Separate try-catch for getting database references
348
+ try {
349
+ dbRefs = await this.getDatabaseReferences();
350
+ }
351
+ catch (error) {
352
+ Log.trackEvent('DataverseDataOperation.GetDataSourceInfoFailed', {
353
+ message: '[DataverseDataOperation] Failed to get database references',
354
+ tableName,
355
+ error,
356
+ });
357
+ const errorMessage = error instanceof Error ? error.message : String(error);
358
+ throw new PowerDataRuntimeError(ErrorCodes.DataSourceNotFound, `Failed to get Dataverse data source info for table '${tableName}': ${errorMessage}`);
359
+ }
360
+ // Find the environment/database that contains this table
361
+ for (const dbKey of Object.keys(dbRefs)) {
362
+ const db = dbRefs[dbKey];
363
+ if (db.dataSources[tableName]) {
364
+ const ds = db.dataSources[tableName];
365
+ return {
366
+ datasetName: db.databaseDetails?.environmentName,
367
+ referenceType: db.databaseDetails?.referenceType,
368
+ linkedEnvironmentMetadata: db.databaseDetails?.linkedEnvironmentMetadata,
369
+ entitySetName: ds?.entitySetName,
370
+ logicalName: ds?.logicalName,
371
+ isHidden: ds?.isHidden,
372
+ tableId: ds?.logicalName,
373
+ apis: {},
374
+ };
375
+ }
376
+ }
377
+ // Table not found - this will now throw without being caught
378
+ const notFoundMsg = `No Dataverse data source found for table: ${tableName}`;
379
+ Log.trackEvent('DataverseDataOperation.DataSourceNotFound', {
380
+ message: notFoundMsg,
381
+ tableName,
382
+ });
383
+ throw new PowerDataRuntimeError(ErrorCodes.DataSourceNotFound, notFoundMsg);
384
+ }
385
+ /**
386
+ * Helper to construct the Dataverse API URL using instanceUrl if available, otherwise fallback to runtimeUrl.
387
+ */
388
+ _getInstanceUrl(dataSourceInfo) {
389
+ const instanceUrl = dataSourceInfo.linkedEnvironmentMetadata?.instanceUrl;
390
+ if (!instanceUrl) {
391
+ throw new PowerDataRuntimeError(ErrorCodes.DataClientInitFailed, 'No instanceUrl found for Dataverse table.');
392
+ }
393
+ // Ensure instanceUrl ends with a slash and construct proper URL
394
+ const baseUrl = instanceUrl.endsWith('/') ? instanceUrl : `${instanceUrl}/`;
395
+ return baseUrl;
396
+ }
397
+ /**
398
+ * Helper to construct the Dataverse API URL using instanceUrl if available, otherwise fallback to runtimeUrl.
399
+ */
400
+ _getDataverseRequestUrl(dataSourceInfo, tableName, urlPath = '') {
401
+ const baseUrl = this._getInstanceUrl(dataSourceInfo);
402
+ return `${baseUrl}api/data/v9.0/${tableName}${urlPath}`;
403
+ }
404
+ /**
405
+ * Constructs GET request URL for fetching metadata using options object.
406
+ * @param dataSourceInfo - The data source information for the Dataverse table.
407
+ * @param options - The options for the metadata request.
408
+ * @returns The constructed metadata request URL.
409
+ */
410
+ _generateMetadataRequestUrl(dataSourceInfo, options) {
411
+ const { logicalName } = dataSourceInfo;
412
+ if (!logicalName) {
413
+ throw new PowerDataRuntimeError(ErrorCodes.DataClientInitFailed, 'No logicalName found for Dataverse table.');
414
+ }
415
+ const url = new URL(`${this._getInstanceUrl(dataSourceInfo)}api/data/v9.0/EntityDefinitions(LogicalName='${logicalName}')`);
416
+ const { metadata, schema } = options;
417
+ const selects = new Set(Array.isArray(metadata) ? metadata : []);
418
+ selects.add('LogicalName');
419
+ const expands = [];
420
+ if (schema?.manyToOne) {
421
+ expands.push('ManyToOneRelationships');
422
+ }
423
+ if (schema?.oneToMany) {
424
+ expands.push('OneToManyRelationships');
425
+ }
426
+ if (schema?.manyToMany) {
427
+ expands.push('ManyToManyRelationships');
428
+ }
429
+ if (schema?.columns === 'all') {
430
+ // request all attributes
431
+ expands.push('Attributes');
432
+ }
433
+ else if (schema && Array.isArray(schema.columns) && schema.columns.length > 0) {
434
+ // If specific columns are requested, include only those
435
+ const attributesCollection = schema.columns.map((a) => `'${a}'`).join(',');
436
+ expands.push(`Attributes($filter=Microsoft.Dynamics.CRM.In(PropertyName='LogicalName',PropertyValues=[${attributesCollection}]))`);
437
+ }
438
+ // otherwise don't include any attributes
439
+ url.search = new URLSearchParams({
440
+ $select: [...selects].join(','),
441
+ $expand: expands.join(','),
442
+ }).toString();
443
+ return url.toString();
444
+ }
445
+ }
446
+ /**
447
+ * Extracts the skip token from the next link URL.
448
+ * @param nextLink - The @odata.nextLink URL containing the skip token
449
+ * @returns The extracted skip token or undefined if not found.
450
+ */
451
+ export function extractSkipToken(nextLink) {
452
+ if (!nextLink?.trim()) {
453
+ return undefined;
454
+ }
455
+ const match = nextLink.match(/[\?&]\$?skiptoken=([^&#]+)/i);
456
+ return match ? decodeURIComponent(match[1]) : undefined;
457
+ }
458
+ //# sourceMappingURL=dataverseDataOperationExecutor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataverseDataOperationExecutor.js","sourceRoot":"","sources":["../../../../../../src/internal/data/core/data/executors/dataverseDataOperationExecutor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /*!
2
+ * Copyright (C) Microsoft Corporation. All rights reserved.
3
+ */
4
+ export { createMockDataExecutor, type MockDataStore } from './mockDataOperationExecutor';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/internal/data/core/data/executors/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,sBAAsB,EAAE,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC"}
@@ -0,0 +1,5 @@
1
+ /*!
2
+ * Copyright (C) Microsoft Corporation. All rights reserved.
3
+ */
4
+ export { createMockDataExecutor } from './mockDataOperationExecutor';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/internal/data/core/data/executors/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,sBAAsB,EAAsB,MAAM,6BAA6B,CAAC"}
@@ -0,0 +1,21 @@
1
+ /*!
2
+ * Copyright (C) Microsoft Corporation. All rights reserved.
3
+ */
4
+ import type { IDataOperation, IDataOperationExecutor, IOperationOptions, IOperationResult } from '../../types';
5
+ export type MockDataStore<TRecord = unknown> = {
6
+ [tableName: string]: {
7
+ [id: string]: TRecord;
8
+ };
9
+ };
10
+ export declare class MockDataOperationExecutor implements IDataOperationExecutor {
11
+ private _dataStore;
12
+ constructor(data: MockDataStore);
13
+ createRecordAsync<TRequest, TResponse>(tableName: string, data: TRequest): Promise<IOperationResult<TResponse>>;
14
+ updateRecordAsync<TRequest, TResponse>(tableName: string, id: string, data: TRequest): Promise<IOperationResult<TResponse>>;
15
+ deleteRecordAsync(tableName: string, id: string): Promise<IOperationResult<void>>;
16
+ retrieveRecordAsync<TResponse>(tableName: string, id: string, options?: IOperationOptions): Promise<IOperationResult<TResponse>>;
17
+ retrieveMultipleRecordsAsync<TResponse>(tableName: string, options?: IOperationOptions): Promise<IOperationResult<TResponse[]>>;
18
+ executeAsync<TRequest, TResponse>(operation: IDataOperation<TRequest>): Promise<IOperationResult<TResponse>>;
19
+ }
20
+ export declare function createMockDataExecutor(data: MockDataStore): MockDataOperationExecutor;
21
+ //# sourceMappingURL=mockDataOperationExecutor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockDataOperationExecutor.d.ts","sourceRoot":"","sources":["../../../../../../src/internal/data/core/data/executors/mockDataOperationExecutor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,aAAa,CAAC,OAAO,GAAG,OAAO,IAAI;IAC7C,CAAC,SAAS,EAAE,MAAM,GAAG;QACnB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;KACvB,CAAC;CACH,CAAC;AAEF,qBAAa,yBAA0B,YAAW,sBAAsB;IACtE,OAAO,CAAC,UAAU,CAAgB;gBAEtB,IAAI,EAAE,aAAa;IAIlB,iBAAiB,CAAC,QAAQ,EAAE,SAAS,EAChD,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,QAAQ,GACb,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAO1B,iBAAiB,CAAC,QAAQ,EAAE,SAAS,EAChD,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,QAAQ,GACb,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAO1B,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAOjF,mBAAmB,CAAC,SAAS,EACxC,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAqB1B,4BAA4B,CAAC,SAAS,EACjD,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAC;IAa5B,YAAY,CAAC,QAAQ,EAAE,SAAS,EAC3C,SAAS,EAAE,cAAc,CAAC,QAAQ,CAAC,GAClC,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;CAOxC;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,aAAa,GAAG,yBAAyB,CAErF"}
@@ -0,0 +1,75 @@
1
+ /*!
2
+ * Copyright (C) Microsoft Corporation. All rights reserved.
3
+ */
4
+ export class MockDataOperationExecutor {
5
+ _dataStore;
6
+ constructor(data) {
7
+ this._dataStore = data;
8
+ }
9
+ async createRecordAsync(tableName, data) {
10
+ return {
11
+ success: false,
12
+ error: { message: 'createRecordAsync is not supported by MockDataOperationExecutor' },
13
+ data: null,
14
+ };
15
+ }
16
+ async updateRecordAsync(tableName, id, data) {
17
+ return {
18
+ success: false,
19
+ error: { message: 'updateRecordAsync is not supported by MockDataOperationExecutor' },
20
+ data: null,
21
+ };
22
+ }
23
+ async deleteRecordAsync(tableName, id) {
24
+ return {
25
+ success: false,
26
+ error: { message: 'deleteRecordAsync is not supported by MockDataOperationExecutor' },
27
+ data: undefined,
28
+ };
29
+ }
30
+ async retrieveRecordAsync(tableName, id, options) {
31
+ if (!this._dataStore[tableName]) {
32
+ return {
33
+ success: false,
34
+ error: { message: `table <${tableName}> not found` },
35
+ data: null,
36
+ };
37
+ }
38
+ const record = this._dataStore[tableName][id];
39
+ if (!record) {
40
+ return {
41
+ success: false,
42
+ error: { message: `record with id "${id}" not found in table <${tableName}>` },
43
+ data: null,
44
+ };
45
+ }
46
+ return {
47
+ success: true,
48
+ data: record,
49
+ };
50
+ }
51
+ async retrieveMultipleRecordsAsync(tableName, options) {
52
+ if (!this._dataStore[tableName]) {
53
+ return {
54
+ success: false,
55
+ error: { message: `table <${tableName}> not found` },
56
+ data: [],
57
+ };
58
+ }
59
+ return {
60
+ success: true,
61
+ data: Object.values(this._dataStore[tableName]),
62
+ };
63
+ }
64
+ async executeAsync(operation) {
65
+ return {
66
+ success: false,
67
+ error: { message: 'executeAsync is not supported by MockDataOperationExecutor' },
68
+ data: null,
69
+ };
70
+ }
71
+ }
72
+ export function createMockDataExecutor(data) {
73
+ return new MockDataOperationExecutor(data);
74
+ }
75
+ //# sourceMappingURL=mockDataOperationExecutor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockDataOperationExecutor.js","sourceRoot":"","sources":["../../../../../../src/internal/data/core/data/executors/mockDataOperationExecutor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAeH,MAAM,OAAO,yBAAyB;IAC5B,UAAU,CAAgB;IAElC,YAAY,IAAmB;QAC7B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAC5B,SAAiB,EACjB,IAAc;QAEd,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,EAAE,OAAO,EAAE,iEAAiE,EAAE;YACrF,IAAI,EAAE,IAAiB;SACxB,CAAC;IACJ,CAAC;IACM,KAAK,CAAC,iBAAiB,CAC5B,SAAiB,EACjB,EAAU,EACV,IAAc;QAEd,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,EAAE,OAAO,EAAE,iEAAiE,EAAE;YACrF,IAAI,EAAE,IAAiB;SACxB,CAAC;IACJ,CAAC;IACM,KAAK,CAAC,iBAAiB,CAAC,SAAiB,EAAE,EAAU;QAC1D,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,EAAE,OAAO,EAAE,iEAAiE,EAAE;YACrF,IAAI,EAAE,SAAS;SAChB,CAAC;IACJ,CAAC;IACM,KAAK,CAAC,mBAAmB,CAC9B,SAAiB,EACjB,EAAU,EACV,OAA2B;QAE3B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;YAC/B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,SAAS,aAAa,EAAE;gBACpD,IAAI,EAAE,IAAiB;aACxB,CAAC;SACH;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,EAAE;YACX,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,SAAS,GAAG,EAAE;gBAC9E,IAAI,EAAE,IAAiB;aACxB,CAAC;SACH;QACD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,MAAmB;SAC1B,CAAC;IACJ,CAAC;IACM,KAAK,CAAC,4BAA4B,CACvC,SAAiB,EACjB,OAA2B;QAE3B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;YAC/B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,SAAS,aAAa,EAAE;gBACpD,IAAI,EAAE,EAAE;aACT,CAAC;SACH;QACD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAgB;SAC/D,CAAC;IACJ,CAAC;IACM,KAAK,CAAC,YAAY,CACvB,SAAmC;QAEnC,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,EAAE,OAAO,EAAE,4DAA4D,EAAE;YAChF,IAAI,EAAE,IAAiB;SACxB,CAAC;IACJ,CAAC;CACF;AAED,MAAM,UAAU,sBAAsB,CAAC,IAAmB;IACxD,OAAO,IAAI,yBAAyB,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,11 @@
1
+ /*!
2
+ * Copyright (C) Microsoft Corporation. All rights reserved.
3
+ */
4
+ import { IOperationOptions } from '../../../types';
5
+ /**
6
+ * Converts operation options to a query string format.
7
+ * @param options - The operation options to convert.
8
+ * @returns The formatted query string.
9
+ */
10
+ export declare function convertOptionsToQueryString(options?: IOperationOptions): string;
11
+ //# sourceMappingURL=stringQueryOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stringQueryOptions.d.ts","sourceRoot":"","sources":["../../../../../../../src/internal/data/core/data/executors/shared/stringQueryOptions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,MAAM,CA4C/E"}