@microsoft/managed-apps-codegen 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +153 -0
- package/README.md +37 -0
- package/dist/CodegenProject.d.ts +26 -0
- package/dist/CodegenProject.d.ts.map +1 -0
- package/dist/CodegenProject.js +140 -0
- package/dist/CodegenProject.js.map +1 -0
- package/dist/Connector/generateConnectorModel.d.ts +13 -0
- package/dist/Connector/generateConnectorModel.d.ts.map +1 -0
- package/dist/Connector/generateConnectorModel.js +163 -0
- package/dist/Connector/generateConnectorModel.js.map +1 -0
- package/dist/Connector/generateConnectorService.d.ts +15 -0
- package/dist/Connector/generateConnectorService.d.ts.map +1 -0
- package/dist/Connector/generateConnectorService.js +331 -0
- package/dist/Connector/generateConnectorService.js.map +1 -0
- package/dist/Connector/index.d.ts +6 -0
- package/dist/Connector/index.d.ts.map +1 -0
- package/dist/Connector/index.js +6 -0
- package/dist/Connector/index.js.map +1 -0
- package/dist/Dataverse/generateDataverseModel.d.ts +18 -0
- package/dist/Dataverse/generateDataverseModel.d.ts.map +1 -0
- package/dist/Dataverse/generateDataverseModel.js +226 -0
- package/dist/Dataverse/generateDataverseModel.js.map +1 -0
- package/dist/Dataverse/generateDataverseService.d.ts +17 -0
- package/dist/Dataverse/generateDataverseService.d.ts.map +1 -0
- package/dist/Dataverse/generateDataverseService.js +323 -0
- package/dist/Dataverse/generateDataverseService.js.map +1 -0
- package/dist/Dataverse/index.d.ts +6 -0
- package/dist/Dataverse/index.d.ts.map +1 -0
- package/dist/Dataverse/index.js +6 -0
- package/dist/Dataverse/index.js.map +1 -0
- package/dist/SharePointTabular/generateSharepointTabularModel.d.ts +16 -0
- package/dist/SharePointTabular/generateSharepointTabularModel.d.ts.map +1 -0
- package/dist/SharePointTabular/generateSharepointTabularModel.js +130 -0
- package/dist/SharePointTabular/generateSharepointTabularModel.js.map +1 -0
- package/dist/SharePointTabular/index.d.ts +5 -0
- package/dist/SharePointTabular/index.d.ts.map +1 -0
- package/dist/SharePointTabular/index.js +5 -0
- package/dist/SharePointTabular/index.js.map +1 -0
- package/dist/SqlStoredProc/generateSqlStoredProcModel.d.ts +16 -0
- package/dist/SqlStoredProc/generateSqlStoredProcModel.d.ts.map +1 -0
- package/dist/SqlStoredProc/generateSqlStoredProcModel.js +38 -0
- package/dist/SqlStoredProc/generateSqlStoredProcModel.js.map +1 -0
- package/dist/SqlStoredProc/generateSqlStoredProcService.d.ts +16 -0
- package/dist/SqlStoredProc/generateSqlStoredProcService.d.ts.map +1 -0
- package/dist/SqlStoredProc/generateSqlStoredProcService.js +89 -0
- package/dist/SqlStoredProc/generateSqlStoredProcService.js.map +1 -0
- package/dist/SqlStoredProc/index.d.ts +6 -0
- package/dist/SqlStoredProc/index.d.ts.map +1 -0
- package/dist/SqlStoredProc/index.js +6 -0
- package/dist/SqlStoredProc/index.js.map +1 -0
- package/dist/Tabular/generateCommonModels.d.ts +11 -0
- package/dist/Tabular/generateCommonModels.d.ts.map +1 -0
- package/dist/Tabular/generateCommonModels.js +27 -0
- package/dist/Tabular/generateCommonModels.js.map +1 -0
- package/dist/Tabular/generateTabularModel.d.ts +15 -0
- package/dist/Tabular/generateTabularModel.d.ts.map +1 -0
- package/dist/Tabular/generateTabularModel.js +31 -0
- package/dist/Tabular/generateTabularModel.js.map +1 -0
- package/dist/Tabular/generateTabularService.d.ts +19 -0
- package/dist/Tabular/generateTabularService.d.ts.map +1 -0
- package/dist/Tabular/generateTabularService.js +165 -0
- package/dist/Tabular/generateTabularService.js.map +1 -0
- package/dist/Tabular/index.d.ts +7 -0
- package/dist/Tabular/index.d.ts.map +1 -0
- package/dist/Tabular/index.js +7 -0
- package/dist/Tabular/index.js.map +1 -0
- package/dist/defaultPrettierConfig.d.ts +6 -0
- package/dist/defaultPrettierConfig.d.ts.map +1 -0
- package/dist/defaultPrettierConfig.js +10 -0
- package/dist/defaultPrettierConfig.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/shared/constants.d.ts +9 -0
- package/dist/shared/constants.d.ts.map +1 -0
- package/dist/shared/constants.js +9 -0
- package/dist/shared/constants.js.map +1 -0
- package/dist/shared/dataverseUtils.d.ts +61 -0
- package/dist/shared/dataverseUtils.d.ts.map +1 -0
- package/dist/shared/dataverseUtils.js +138 -0
- package/dist/shared/dataverseUtils.js.map +1 -0
- package/dist/shared/flowUtils.d.ts +11 -0
- package/dist/shared/flowUtils.d.ts.map +1 -0
- package/dist/shared/flowUtils.js +16 -0
- package/dist/shared/flowUtils.js.map +1 -0
- package/dist/shared/nameUtils.d.ts +33 -0
- package/dist/shared/nameUtils.d.ts.map +1 -0
- package/dist/shared/nameUtils.js +180 -0
- package/dist/shared/nameUtils.js.map +1 -0
- package/dist/shared/project.d.ts +22 -0
- package/dist/shared/project.d.ts.map +1 -0
- package/dist/shared/project.js +5 -0
- package/dist/shared/project.js.map +1 -0
- package/dist/shared/schemaUtils.d.ts +32 -0
- package/dist/shared/schemaUtils.d.ts.map +1 -0
- package/dist/shared/schemaUtils.js +110 -0
- package/dist/shared/schemaUtils.js.map +1 -0
- package/dist/shared/sqlStoredProcUtils.d.ts +11 -0
- package/dist/shared/sqlStoredProcUtils.d.ts.map +1 -0
- package/dist/shared/sqlStoredProcUtils.js +19 -0
- package/dist/shared/sqlStoredProcUtils.js.map +1 -0
- package/dist/shared/swaggerUtils.d.ts +12 -0
- package/dist/shared/swaggerUtils.d.ts.map +1 -0
- package/dist/shared/swaggerUtils.js +12 -0
- package/dist/shared/swaggerUtils.js.map +1 -0
- package/dist/shared/typeUtils.d.ts +22 -0
- package/dist/shared/typeUtils.d.ts.map +1 -0
- package/dist/shared/typeUtils.js +94 -0
- package/dist/shared/typeUtils.js.map +1 -0
- package/dist/shared/types.d.ts +24 -0
- package/dist/shared/types.d.ts.map +1 -0
- package/dist/shared/types.js +5 -0
- package/dist/shared/types.js.map +1 -0
- package/dist/types.d.ts +5 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (C) Microsoft Corporation. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
import { Scope } from 'ts-morph';
|
|
5
|
+
import { formatPropertyName, getServiceName, normalizeGenericTypeName, sanitizeName, } from '../shared/nameUtils.js';
|
|
6
|
+
import { extractReferencedType, isJsonObject, mapJsonTypeToTypeScript, } from '../shared/schemaUtils.js';
|
|
7
|
+
import { hasPaths } from '../shared/swaggerUtils.js';
|
|
8
|
+
// ─── Entry point ──────────────────────────────────────────────────────────────
|
|
9
|
+
export async function generateConnectorService({ parentContext, swaggerObject, serviceFilePath, dataSourcesFilePath, isLogicFlow, }) {
|
|
10
|
+
const { modelName, dataSourceName, project } = parentContext;
|
|
11
|
+
const serviceFile = await project.createFile('service', serviceFilePath, '');
|
|
12
|
+
const operations = buildOperationsFromPaths(swaggerObject, modelName, isLogicFlow);
|
|
13
|
+
const allReferencedTypes = [...new Set(operations.flatMap((op) => op.referencedModelTypes))];
|
|
14
|
+
// External package imports
|
|
15
|
+
serviceFile.addImportDeclaration({
|
|
16
|
+
moduleSpecifier: '@microsoft/managed-apps/data',
|
|
17
|
+
namedImports: ['getClient'],
|
|
18
|
+
});
|
|
19
|
+
serviceFile.addImportDeclaration({
|
|
20
|
+
moduleSpecifier: '@microsoft/managed-apps/data',
|
|
21
|
+
namedImports: ['IOperationResult'],
|
|
22
|
+
isTypeOnly: true,
|
|
23
|
+
});
|
|
24
|
+
serviceFile.addImportDeclaration({
|
|
25
|
+
moduleSpecifier: dataSourcesFilePath,
|
|
26
|
+
defaultImport: 'dataSources',
|
|
27
|
+
});
|
|
28
|
+
// Model type imports — type-only; fixMissingImports cannot mark them as type-only
|
|
29
|
+
if (allReferencedTypes.length > 0) {
|
|
30
|
+
serviceFile.addImportDeclaration({
|
|
31
|
+
moduleSpecifier: serviceFile.getRelativePathAsModuleSpecifierTo(project.getSourceFile('model')),
|
|
32
|
+
namedImports: allReferencedTypes,
|
|
33
|
+
isTypeOnly: true,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
const serviceName = `${modelName}Service`;
|
|
37
|
+
serviceFile.addClass({
|
|
38
|
+
name: serviceName,
|
|
39
|
+
isExported: true,
|
|
40
|
+
properties: [
|
|
41
|
+
{
|
|
42
|
+
name: 'dataSourceName',
|
|
43
|
+
isStatic: true,
|
|
44
|
+
isReadonly: true,
|
|
45
|
+
scope: Scope.Private,
|
|
46
|
+
initializer: `'${dataSourceName.toLowerCase()}'`,
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: 'client',
|
|
50
|
+
isStatic: true,
|
|
51
|
+
isReadonly: true,
|
|
52
|
+
scope: Scope.Private,
|
|
53
|
+
initializer: 'getClient(dataSources)',
|
|
54
|
+
},
|
|
55
|
+
],
|
|
56
|
+
methods: operations.map((op) => buildMethod(op, serviceName)),
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
// ─── Path → operations ────────────────────────────────────────────────────────
|
|
60
|
+
function buildOperationsFromPaths(swaggerObject, modelName, isLogicFlow) {
|
|
61
|
+
const operations = [];
|
|
62
|
+
if (!hasPaths(swaggerObject)) {
|
|
63
|
+
return operations;
|
|
64
|
+
}
|
|
65
|
+
const globalParameters = 'parameters' in swaggerObject && isJsonObject(swaggerObject.parameters)
|
|
66
|
+
? swaggerObject.parameters
|
|
67
|
+
: undefined;
|
|
68
|
+
for (const pathValue of Object.values(swaggerObject.paths)) {
|
|
69
|
+
if (!isJsonObject(pathValue))
|
|
70
|
+
continue;
|
|
71
|
+
for (const operationValue of Object.values(pathValue)) {
|
|
72
|
+
if (!isJsonObject(operationValue) || !('operationId' in operationValue))
|
|
73
|
+
continue;
|
|
74
|
+
const op = buildOperation(operationValue, modelName, isLogicFlow, globalParameters);
|
|
75
|
+
if (op)
|
|
76
|
+
operations.push(op);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return operations;
|
|
80
|
+
}
|
|
81
|
+
function buildOperation(operationObj, modelName, isLogicFlow, globalParameters) {
|
|
82
|
+
if (typeof operationObj.operationId !== 'string')
|
|
83
|
+
return null;
|
|
84
|
+
const operationId = operationObj.operationId;
|
|
85
|
+
const summary = typeof operationObj.summary === 'string' ? operationObj.summary : undefined;
|
|
86
|
+
const description = typeof operationObj.description === 'string' ? operationObj.description : undefined;
|
|
87
|
+
const referencedModelTypes = [];
|
|
88
|
+
const { params, internalDefaults } = collectParams(operationObj, modelName, isLogicFlow, referencedModelTypes, globalParameters);
|
|
89
|
+
const returnType = determineReturnType(operationObj, modelName, referencedModelTypes);
|
|
90
|
+
return {
|
|
91
|
+
operationId,
|
|
92
|
+
functionName: sanitizeOperationId(operationId),
|
|
93
|
+
summary,
|
|
94
|
+
description,
|
|
95
|
+
params,
|
|
96
|
+
internalDefaults,
|
|
97
|
+
returnType,
|
|
98
|
+
referencedModelTypes,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
// ─── Parameter collection ─────────────────────────────────────────────────────
|
|
102
|
+
function collectParams(operationObj, modelName, isLogicFlow, referencedModelTypes, globalParameters) {
|
|
103
|
+
const params = [];
|
|
104
|
+
const internalDefaults = [];
|
|
105
|
+
if (!Array.isArray(operationObj.parameters)) {
|
|
106
|
+
return { params, internalDefaults };
|
|
107
|
+
}
|
|
108
|
+
const rawParams = operationObj.parameters;
|
|
109
|
+
const ordered = sortParamsRequiredFirst(rawParams);
|
|
110
|
+
for (const rawParam of ordered) {
|
|
111
|
+
if (!isJsonObject(rawParam))
|
|
112
|
+
continue;
|
|
113
|
+
// Resolve $ref to global parameters (e.g. #/parameters/groupId__in_path) so inline
|
|
114
|
+
// types are used directly instead of being treated as model type imports.
|
|
115
|
+
const param = resolveGlobalParamRef(rawParam, globalParameters);
|
|
116
|
+
const paramName = getParamName(param).trim();
|
|
117
|
+
if (!paramName || paramName.toLowerCase() === 'connectionid')
|
|
118
|
+
continue;
|
|
119
|
+
// Logic flow: skip internal params that have defaults — hardcode them in the body
|
|
120
|
+
if (isLogicFlow && param['x-ms-visibility'] === 'internal' && 'default' in param) {
|
|
121
|
+
internalDefaults.push({ name: paramName, value: param['default'] });
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
const paramType = getParamType(param, modelName, referencedModelTypes);
|
|
125
|
+
const required = 'required' in param && (param.required === true || param.required === 'true');
|
|
126
|
+
const normalizedName = sanitizeName(paramName);
|
|
127
|
+
params.push({ normalizedName, originalName: paramName, type: paramType, required });
|
|
128
|
+
}
|
|
129
|
+
return { params, internalDefaults };
|
|
130
|
+
}
|
|
131
|
+
function sortParamsRequiredFirst(params) {
|
|
132
|
+
return [...params].sort((a, b) => {
|
|
133
|
+
const aReq = isJsonObject(a) && (a.required === true || a.required === 'true') ? 1 : 0;
|
|
134
|
+
const bReq = isJsonObject(b) && (b.required === true || b.required === 'true') ? 1 : 0;
|
|
135
|
+
return bReq - aReq;
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* If `param` is a `$ref` pointing to `#/parameters/<name>`, resolves it against
|
|
140
|
+
* `globalParameters` and returns the resolved object. Otherwise returns `param` as-is.
|
|
141
|
+
* This prevents global parameter ref names from being mistakenly added to referencedModelTypes.
|
|
142
|
+
*/
|
|
143
|
+
function resolveGlobalParamRef(param, globalParameters) {
|
|
144
|
+
if (typeof param.$ref === 'string' &&
|
|
145
|
+
param.$ref.toLowerCase().startsWith('#/parameters/') &&
|
|
146
|
+
globalParameters) {
|
|
147
|
+
const refName = param.$ref.substring('#/parameters/'.length);
|
|
148
|
+
const resolved = globalParameters[refName];
|
|
149
|
+
if (isJsonObject(resolved))
|
|
150
|
+
return resolved;
|
|
151
|
+
}
|
|
152
|
+
return param;
|
|
153
|
+
}
|
|
154
|
+
function getParamName(param) {
|
|
155
|
+
// $ref parameters: extract name from ref path
|
|
156
|
+
if (typeof param.$ref === 'string' && param.$ref.toLowerCase().startsWith('#/parameters/')) {
|
|
157
|
+
return param.$ref.substring('#/parameters/'.length);
|
|
158
|
+
}
|
|
159
|
+
return typeof param.name === 'string' ? param.name : '';
|
|
160
|
+
}
|
|
161
|
+
function getParamType(param, modelName, referencedModelTypes) {
|
|
162
|
+
// Body param with schema
|
|
163
|
+
if (isJsonObject(param.schema)) {
|
|
164
|
+
return resolveSchemaType(param.schema, modelName, referencedModelTypes);
|
|
165
|
+
}
|
|
166
|
+
// $ref param — only model definition refs are valid types to import.
|
|
167
|
+
// A #/parameters/ ref here means resolveGlobalParamRef couldn't resolve it (no global
|
|
168
|
+
// parameters section), so treat it as unknown rather than polluting referencedModelTypes
|
|
169
|
+
// with a non-existent type name.
|
|
170
|
+
if (typeof param.$ref === 'string') {
|
|
171
|
+
if (param.$ref.toLowerCase().startsWith('#/definitions/')) {
|
|
172
|
+
const refType = normalizeGenericTypeName(extractReferencedType(param.$ref));
|
|
173
|
+
referencedModelTypes.push(refType);
|
|
174
|
+
return refType;
|
|
175
|
+
}
|
|
176
|
+
return 'unknown';
|
|
177
|
+
}
|
|
178
|
+
// Inline type
|
|
179
|
+
if (typeof param.type === 'string') {
|
|
180
|
+
// binary format string → string
|
|
181
|
+
if (param.format === 'binary' && param.type === 'string')
|
|
182
|
+
return 'string';
|
|
183
|
+
return mapJsonTypeToTypeScript(param.type);
|
|
184
|
+
}
|
|
185
|
+
return 'unknown';
|
|
186
|
+
}
|
|
187
|
+
function resolveSchemaType(schema, modelName, referencedModelTypes) {
|
|
188
|
+
if (typeof schema.$ref === 'string') {
|
|
189
|
+
const refType = normalizeGenericTypeName(extractReferencedType(schema.$ref));
|
|
190
|
+
referencedModelTypes.push(refType);
|
|
191
|
+
return refType;
|
|
192
|
+
}
|
|
193
|
+
if (typeof schema.type === 'string') {
|
|
194
|
+
if (schema.format === 'binary' && schema.type === 'string')
|
|
195
|
+
return 'string';
|
|
196
|
+
return mapJsonTypeToTypeScript(schema.type);
|
|
197
|
+
}
|
|
198
|
+
return 'unknown';
|
|
199
|
+
}
|
|
200
|
+
// ─── Return type resolution ───────────────────────────────────────────────────
|
|
201
|
+
function determineReturnType(operationObj, modelName, referencedModelTypes) {
|
|
202
|
+
if (!isJsonObject(operationObj.responses))
|
|
203
|
+
return 'void';
|
|
204
|
+
const response200 = operationObj.responses['200'];
|
|
205
|
+
if (!isJsonObject(response200) || !isJsonObject(response200.schema))
|
|
206
|
+
return 'void';
|
|
207
|
+
return extractOutputType(response200.schema, modelName, referencedModelTypes);
|
|
208
|
+
}
|
|
209
|
+
function extractOutputType(schema, modelName, referencedModelTypes) {
|
|
210
|
+
// { properties: { value: { type: 'array', items: { $ref } } } }
|
|
211
|
+
if (isJsonObject(schema.properties) && isJsonObject(schema.properties.value)) {
|
|
212
|
+
const valueNode = schema.properties.value;
|
|
213
|
+
if (valueNode.type === 'array' && isJsonObject(valueNode.items)) {
|
|
214
|
+
const itemsNode = valueNode.items;
|
|
215
|
+
if (typeof itemsNode.$ref === 'string') {
|
|
216
|
+
const refType = normalizeGenericTypeName(extractReferencedType(itemsNode.$ref));
|
|
217
|
+
referencedModelTypes.push(refType);
|
|
218
|
+
return `{ value: ${refType}[] }`;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
// type === 'array' + items.$ref
|
|
223
|
+
if (schema.type === 'array' && isJsonObject(schema.items)) {
|
|
224
|
+
const itemsNode = schema.items;
|
|
225
|
+
if (typeof itemsNode.$ref === 'string') {
|
|
226
|
+
const refType = normalizeGenericTypeName(extractReferencedType(itemsNode.$ref));
|
|
227
|
+
referencedModelTypes.push(refType);
|
|
228
|
+
return `${refType}[]`;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
// items.$ref (non-array wrapper)
|
|
232
|
+
if (isJsonObject(schema.items) && typeof schema.items.$ref === 'string') {
|
|
233
|
+
const refType = normalizeGenericTypeName(extractReferencedType(schema.items.$ref));
|
|
234
|
+
referencedModelTypes.push(refType);
|
|
235
|
+
return refType;
|
|
236
|
+
}
|
|
237
|
+
// Direct $ref
|
|
238
|
+
if (typeof schema.$ref === 'string') {
|
|
239
|
+
const refType = normalizeGenericTypeName(extractReferencedType(schema.$ref));
|
|
240
|
+
referencedModelTypes.push(refType);
|
|
241
|
+
return refType;
|
|
242
|
+
}
|
|
243
|
+
// Primitive type
|
|
244
|
+
if (typeof schema.type === 'string') {
|
|
245
|
+
return mapJsonTypeToTypeScript(schema.type);
|
|
246
|
+
}
|
|
247
|
+
return 'void';
|
|
248
|
+
}
|
|
249
|
+
// ─── Method body construction ─────────────────────────────────────────────────
|
|
250
|
+
function buildMethod(op, serviceName) {
|
|
251
|
+
const docs = op.summary
|
|
252
|
+
? [
|
|
253
|
+
{
|
|
254
|
+
description: op.description ? `${op.summary}\n${op.description}` : op.summary,
|
|
255
|
+
},
|
|
256
|
+
]
|
|
257
|
+
: undefined;
|
|
258
|
+
return {
|
|
259
|
+
name: op.functionName,
|
|
260
|
+
isStatic: true,
|
|
261
|
+
isAsync: true,
|
|
262
|
+
scope: Scope.Public,
|
|
263
|
+
parameters: op.params.map((p) => ({
|
|
264
|
+
name: p.normalizedName,
|
|
265
|
+
type: p.type,
|
|
266
|
+
hasQuestionToken: !p.required,
|
|
267
|
+
})),
|
|
268
|
+
returnType: `Promise<IOperationResult<${op.returnType}>>`,
|
|
269
|
+
statements: buildStatements(op, serviceName),
|
|
270
|
+
docs,
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
function buildStatements(op, serviceName) {
|
|
274
|
+
const tableNameExpr = getServiceName(serviceName.replace(/Service$/, ''));
|
|
275
|
+
const hasParams = op.params.length > 0;
|
|
276
|
+
const hasInternalDefaults = op.internalDefaults.length > 0;
|
|
277
|
+
if (!hasParams && !hasInternalDefaults) {
|
|
278
|
+
return [
|
|
279
|
+
`const result = await ${serviceName}.client.executeAsync<void, ${op.returnType}>(`,
|
|
280
|
+
` {`,
|
|
281
|
+
` connectorOperation: {`,
|
|
282
|
+
` tableName: ${tableNameExpr},`,
|
|
283
|
+
` operationName: '${op.operationId}',`,
|
|
284
|
+
` },`,
|
|
285
|
+
` });`,
|
|
286
|
+
`return result;`,
|
|
287
|
+
];
|
|
288
|
+
}
|
|
289
|
+
// Build params type from original names (may need quoting)
|
|
290
|
+
const originalParamsType = `{ ${op.params
|
|
291
|
+
.map((p) => `${formatPropertyName(p.originalName)}${p.required ? '' : '?'}: ${p.type}`)
|
|
292
|
+
.join(', ')} }`;
|
|
293
|
+
// Build params object literal: { 'x.y': normalizedXY, plain: plain }
|
|
294
|
+
const paramsObject = op.params
|
|
295
|
+
.map((p) => p.normalizedName !== p.originalName
|
|
296
|
+
? `${formatPropertyName(p.originalName)}: ${p.normalizedName}`
|
|
297
|
+
: p.normalizedName)
|
|
298
|
+
.join(', ');
|
|
299
|
+
const internalDefaultsLiteral = op.internalDefaults
|
|
300
|
+
.map(({ name, value }) => `${formatPropertyName(name)}: ${JSON.stringify(value)}`)
|
|
301
|
+
.join(', ');
|
|
302
|
+
const parametersValue = hasInternalDefaults ? 'allParams' : 'params';
|
|
303
|
+
const statements = [`const params: ${originalParamsType} = { ${paramsObject} };`];
|
|
304
|
+
if (hasInternalDefaults) {
|
|
305
|
+
statements.push(`const allParams = { ...params, ${internalDefaultsLiteral} };`);
|
|
306
|
+
}
|
|
307
|
+
statements.push(...[
|
|
308
|
+
`const result = await ${serviceName}.client.executeAsync<${originalParamsType}, ${op.returnType}>(`,
|
|
309
|
+
` {`,
|
|
310
|
+
` connectorOperation: {`,
|
|
311
|
+
` tableName: ${tableNameExpr},`,
|
|
312
|
+
` operationName: '${op.operationId}',`,
|
|
313
|
+
` parameters: ${parametersValue}`,
|
|
314
|
+
` },`,
|
|
315
|
+
` });`,
|
|
316
|
+
`return result;`,
|
|
317
|
+
]);
|
|
318
|
+
return statements;
|
|
319
|
+
}
|
|
320
|
+
// ─── Utility ──────────────────────────────────────────────────────────────────
|
|
321
|
+
/** Sanitizes an operationId to a valid JS identifier by replacing non-identifier characters with underscores. */
|
|
322
|
+
function sanitizeOperationId(operationId) {
|
|
323
|
+
// Replace any characters that are not valid in JS identifiers
|
|
324
|
+
const sanitized = operationId.replace(/[^a-zA-Z0-9_$]/g, '_');
|
|
325
|
+
if (!sanitized || /^\d/.test(sanitized)) {
|
|
326
|
+
return `_${sanitized}`;
|
|
327
|
+
}
|
|
328
|
+
return sanitized;
|
|
329
|
+
}
|
|
330
|
+
export default generateConnectorService;
|
|
331
|
+
//# sourceMappingURL=generateConnectorService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateConnectorService.js","sourceRoot":"","sources":["../../src/Connector/generateConnectorService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (C) Microsoft Corporation. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
export { default as generateConnectorModel } from './generateConnectorModel.js';
|
|
5
|
+
export { default as generateConnectorService } from './generateConnectorService.js';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Connector/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (C) Microsoft Corporation. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
export { default as generateConnectorModel } from './generateConnectorModel.js';
|
|
5
|
+
export { default as generateConnectorService } from './generateConnectorService.js';
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Connector/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (C) Microsoft Corporation. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
import type { ICodegenContext } from '../shared/types.js';
|
|
5
|
+
import type { JsonObject } from '../types.js';
|
|
6
|
+
interface GenerateModelContext {
|
|
7
|
+
parentContext: ICodegenContext;
|
|
8
|
+
schema: JsonObject;
|
|
9
|
+
fileColumnNames: string[];
|
|
10
|
+
imageColumnNames: string[];
|
|
11
|
+
modelFilePath: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function generateDataverseModel({ parentContext, schema, fileColumnNames, imageColumnNames, modelFilePath, }: GenerateModelContext): Promise<{
|
|
14
|
+
hasLookupColumns: boolean;
|
|
15
|
+
multiSelectPicklistFields: string[];
|
|
16
|
+
}>;
|
|
17
|
+
export default generateDataverseModel;
|
|
18
|
+
//# sourceMappingURL=generateDataverseModel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateDataverseModel.d.ts","sourceRoot":"","sources":["../../src/Dataverse/generateDataverseModel.ts"],"names":[],"mappings":"AAAA;;GAEG;AAqBH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,UAAU,oBAAoB;IAC5B,aAAa,EAAE,eAAe,CAAC;IAC/B,MAAM,EAAE,UAAU,CAAC;IACnB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wBAAsB,sBAAsB,CAAC,EAC3C,aAAa,EACb,MAAM,EACN,eAAe,EACf,gBAAgB,EAChB,aAAa,GACd,EAAE,oBAAoB,GAAG,OAAO,CAAC;IAChC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,yBAAyB,EAAE,MAAM,EAAE,CAAC;CACrC,CAAC,CAsCD;AA6RD,eAAe,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (C) Microsoft Corporation. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
import { VariableDeclarationKind } from 'ts-morph';
|
|
5
|
+
import { generateLookupValuePropertyName, generateODataBindPropertyName, getDataverseLookupColumns, getDataverseMultiSelectPicklistFields, hasOptionsetData, iterateDataverseProperties, } from '../shared/dataverseUtils.js';
|
|
6
|
+
import { convertToValidIdentifier, formatPropertyName, normalizePropertyName, sanitizeName, } from '../shared/nameUtils.js';
|
|
7
|
+
import { formatEnumLabel, generateOptionsetEnumName } from '../shared/schemaUtils.js';
|
|
8
|
+
import { getPropertiesNode, getRequiredFields, isJsonObject } from '../shared/schemaUtils.js';
|
|
9
|
+
import { determineTypeScriptType } from '../shared/typeUtils.js';
|
|
10
|
+
export async function generateDataverseModel({ parentContext, schema, fileColumnNames, imageColumnNames, modelFilePath, }) {
|
|
11
|
+
const { modelName, project, logger } = parentContext;
|
|
12
|
+
const sourceFile = await project.createFile('model', modelFilePath, '');
|
|
13
|
+
const propertiesNode = getPropertiesNode(schema);
|
|
14
|
+
const lookupColumns = getDataverseLookupColumns(propertiesNode);
|
|
15
|
+
const hasLookupColumns = lookupColumns.size > 0;
|
|
16
|
+
const multiSelectPicklistFields = getDataverseMultiSelectPicklistFields(propertiesNode);
|
|
17
|
+
addOptionsetDeclarations(sourceFile, modelName, propertiesNode);
|
|
18
|
+
if (!hasLookupColumns) {
|
|
19
|
+
addFullInterface(sourceFile, modelName, schema, propertiesNode);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
const baseInterfaceName = `${modelName}Base`;
|
|
23
|
+
addBaseInterface(sourceFile, baseInterfaceName, modelName, schema, lookupColumns, propertiesNode, logger);
|
|
24
|
+
addExtendedInterface(sourceFile, modelName, baseInterfaceName, schema, lookupColumns, propertiesNode);
|
|
25
|
+
}
|
|
26
|
+
addUploadColumnNameType(sourceFile, modelName, fileColumnNames, imageColumnNames);
|
|
27
|
+
return { hasLookupColumns, multiSelectPicklistFields };
|
|
28
|
+
}
|
|
29
|
+
// ─── Upload Column Name Type ──────────────────────────────────────────────────
|
|
30
|
+
function addUploadColumnNameType(sourceFile, modelName, fileColumnNames, imageColumnNames) {
|
|
31
|
+
const id = convertToValidIdentifier(modelName);
|
|
32
|
+
if (fileColumnNames.length > 0) {
|
|
33
|
+
sourceFile.addTypeAlias({
|
|
34
|
+
name: `${id}FileColumnName`,
|
|
35
|
+
isExported: true,
|
|
36
|
+
type: fileColumnNames.map((col) => `'${col}'`).join(' | '),
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
if (imageColumnNames.length > 0) {
|
|
40
|
+
sourceFile.addTypeAlias({
|
|
41
|
+
name: `${id}ImageColumnName`,
|
|
42
|
+
isExported: true,
|
|
43
|
+
type: imageColumnNames.map((col) => `'${col}'`).join(' | '),
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
if (fileColumnNames.length === 0 && imageColumnNames.length === 0) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
const uploadType = fileColumnNames.length > 0 && imageColumnNames.length > 0
|
|
50
|
+
? `${id}FileColumnName | ${id}ImageColumnName`
|
|
51
|
+
: fileColumnNames.length > 0
|
|
52
|
+
? `${id}FileColumnName`
|
|
53
|
+
: `${id}ImageColumnName`;
|
|
54
|
+
sourceFile.addTypeAlias({
|
|
55
|
+
name: `${id}UploadColumnName`,
|
|
56
|
+
isExported: true,
|
|
57
|
+
type: uploadType,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
// ─── Optionset Declarations ───────────────────────────────────────────────────
|
|
61
|
+
function addOptionsetDeclarations(sourceFile, modelName, propertiesNode) {
|
|
62
|
+
for (const [propName, propValue] of Object.entries(propertiesNode)) {
|
|
63
|
+
if (!isJsonObject(propValue) || !hasOptionsetData(propValue)) {
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
const enumName = generateOptionsetEnumName(modelName, propName);
|
|
67
|
+
const enumValues = propValue['x-ms-enum-values'];
|
|
68
|
+
const enumLabels = propValue.enum;
|
|
69
|
+
if (!Array.isArray(enumValues)) {
|
|
70
|
+
// No x-ms-enum-values: emit a string union type alias from the enum labels.
|
|
71
|
+
sourceFile.addTypeAlias({
|
|
72
|
+
name: enumName,
|
|
73
|
+
isExported: true,
|
|
74
|
+
type: enumLabels.map(formatEnumLabel).join(' | '),
|
|
75
|
+
});
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
if (!enumValues.every((val) => typeof val === 'number')) {
|
|
79
|
+
throw new Error(`Unsupported Dataverse optionset format: x-ms-enum-values must be an array of numbers. Property: ${propName} in model ${modelName}`);
|
|
80
|
+
}
|
|
81
|
+
// Dataverse format: x-ms-enum-values contains numeric values.
|
|
82
|
+
// Emit a const object mapping numeric keys to display names, plus a keyof type alias.
|
|
83
|
+
const entries = enumLabels.map((label, i) => {
|
|
84
|
+
const sanitizedLabel = !label || (typeof label === 'string' && label.trim() === '')
|
|
85
|
+
? `EmptyOption${i}`
|
|
86
|
+
: sanitizeName(label);
|
|
87
|
+
return ` ${enumValues[i]}: '${sanitizedLabel}'`;
|
|
88
|
+
});
|
|
89
|
+
sourceFile.addVariableStatement({
|
|
90
|
+
declarationKind: VariableDeclarationKind.Const,
|
|
91
|
+
isExported: true,
|
|
92
|
+
declarations: [
|
|
93
|
+
{
|
|
94
|
+
name: enumName,
|
|
95
|
+
initializer: `{\n${entries.join(',\n')}\n} as const`,
|
|
96
|
+
},
|
|
97
|
+
],
|
|
98
|
+
});
|
|
99
|
+
sourceFile.addTypeAlias({
|
|
100
|
+
name: enumName,
|
|
101
|
+
isExported: true,
|
|
102
|
+
type: `keyof typeof ${enumName}`,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Adds a single interface for entities with no lookup columns.
|
|
108
|
+
* All properties (including read-only) are included.
|
|
109
|
+
*/
|
|
110
|
+
function addFullInterface(sourceFile, modelName, schema, propertiesNode) {
|
|
111
|
+
const requiredFields = getRequiredFields(schema);
|
|
112
|
+
const properties = Object.entries(propertiesNode).map(([propName, propValue]) => {
|
|
113
|
+
const propValueAsObject = isJsonObject(propValue) ? propValue : undefined;
|
|
114
|
+
const formattedName = normalizePropertyName(formatPropertyName(convertToValidIdentifier(propName)));
|
|
115
|
+
const description = typeof propValueAsObject?.description === 'string'
|
|
116
|
+
? propValueAsObject.description
|
|
117
|
+
: undefined;
|
|
118
|
+
return {
|
|
119
|
+
name: formattedName,
|
|
120
|
+
type: determineTypeScriptType(modelName, propValueAsObject, '', propName),
|
|
121
|
+
hasQuestionToken: !requiredFields.has(propName),
|
|
122
|
+
docs: description ? [{ description }] : undefined,
|
|
123
|
+
};
|
|
124
|
+
});
|
|
125
|
+
sourceFile.addInterface({
|
|
126
|
+
name: convertToValidIdentifier(modelName),
|
|
127
|
+
isExported: true,
|
|
128
|
+
properties,
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Adds the base interface for PATCH/POST operations on entities with lookup columns.
|
|
133
|
+
* - Skips read-only properties (they belong in the extended GET interface)
|
|
134
|
+
* - Replaces lookup columns with @odata.bind string properties
|
|
135
|
+
* - Skips lookup-related name properties (e.g., owneridname)
|
|
136
|
+
*/
|
|
137
|
+
function addBaseInterface(sourceFile, interfaceName, originalModelName, schema, lookupColumns, propertiesNode, logger) {
|
|
138
|
+
const properties = [];
|
|
139
|
+
const requiredFields = getRequiredFields(schema);
|
|
140
|
+
for (const prop of iterateDataverseProperties(propertiesNode, lookupColumns)) {
|
|
141
|
+
const { type, readOnly, propName, propValue } = prop;
|
|
142
|
+
// lookupRelated properties (e.g., owneridname) should always be read-only.
|
|
143
|
+
// Log a warning if an anomaly is detected, but it will be skipped regardless.
|
|
144
|
+
if (logger && type === 'lookupRelated' && !readOnly) {
|
|
145
|
+
logger.trackActivityEvent('apps-codegen.generateDataverseModel.addBaseInterface.warning', {
|
|
146
|
+
message: 'Anomaly: lookupRelated property is not read-only',
|
|
147
|
+
modelName: originalModelName,
|
|
148
|
+
columnName: propName,
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
// Skip read-only properties and lookup-related properties (e.g., owneridname)
|
|
152
|
+
// They are handled in the extended interface, and cannot be written to.
|
|
153
|
+
if (readOnly || type === 'lookupRelated') {
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
// Replace the lookup columns with an @odata.bind property for write operations.
|
|
157
|
+
if (type === 'lookup') {
|
|
158
|
+
properties.push({
|
|
159
|
+
name: formatPropertyName(generateODataBindPropertyName(prop.schemaName)),
|
|
160
|
+
type: 'string',
|
|
161
|
+
hasQuestionToken: !requiredFields.has(propName),
|
|
162
|
+
});
|
|
163
|
+
continue;
|
|
164
|
+
}
|
|
165
|
+
const formattedName = normalizePropertyName(formatPropertyName(convertToValidIdentifier(propName)));
|
|
166
|
+
const description = typeof propValue.description === 'string' ? propValue.description : undefined;
|
|
167
|
+
properties.push({
|
|
168
|
+
name: formattedName,
|
|
169
|
+
type: determineTypeScriptType(originalModelName, propValue, '', propName),
|
|
170
|
+
hasQuestionToken: !requiredFields.has(propName),
|
|
171
|
+
docs: description ? [{ description }] : undefined,
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
sourceFile.addInterface({
|
|
175
|
+
name: convertToValidIdentifier(interfaceName),
|
|
176
|
+
isExported: true,
|
|
177
|
+
properties,
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Adds the extended interface for GET operations on entities with lookup columns.
|
|
182
|
+
* Extends the base interface and adds:
|
|
183
|
+
* - Read-only properties (excluding lookup columns, which are handled separately)
|
|
184
|
+
* - Lookup object properties (e.g., ownerid?: object)
|
|
185
|
+
* - Lookup value properties (e.g., _ownerid_value?: string)
|
|
186
|
+
*/
|
|
187
|
+
function addExtendedInterface(sourceFile, modelName, baseInterfaceName, schema, lookupColumns, propertiesNode) {
|
|
188
|
+
const requiredFields = getRequiredFields(schema);
|
|
189
|
+
const properties = [];
|
|
190
|
+
for (const { type, readOnly, propName, propValue } of iterateDataverseProperties(propertiesNode, lookupColumns)) {
|
|
191
|
+
// Exclude non-readonly properties (they are handled in the base interface)
|
|
192
|
+
// Exclude lookup properties, they are handled separately below
|
|
193
|
+
if (!readOnly || type === 'lookup') {
|
|
194
|
+
continue;
|
|
195
|
+
}
|
|
196
|
+
const formattedName = normalizePropertyName(formatPropertyName(convertToValidIdentifier(propName)));
|
|
197
|
+
const description = typeof propValue.description === 'string' ? propValue.description : undefined;
|
|
198
|
+
properties.push({
|
|
199
|
+
name: formattedName,
|
|
200
|
+
type: determineTypeScriptType(modelName, propValue, '', propName),
|
|
201
|
+
hasQuestionToken: !requiredFields.has(propName),
|
|
202
|
+
docs: description ? [{ description }] : undefined,
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
// Lookup-specific properties: the lookup object and its extracted GUID value.
|
|
206
|
+
for (const lookupPropName of lookupColumns.keys()) {
|
|
207
|
+
properties.push({
|
|
208
|
+
name: formatPropertyName(convertToValidIdentifier(lookupPropName)),
|
|
209
|
+
type: 'object',
|
|
210
|
+
hasQuestionToken: true,
|
|
211
|
+
});
|
|
212
|
+
properties.push({
|
|
213
|
+
name: formatPropertyName(generateLookupValuePropertyName(lookupPropName)),
|
|
214
|
+
type: 'string',
|
|
215
|
+
hasQuestionToken: true,
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
sourceFile.addInterface({
|
|
219
|
+
name: convertToValidIdentifier(modelName),
|
|
220
|
+
isExported: true,
|
|
221
|
+
extends: [convertToValidIdentifier(baseInterfaceName)],
|
|
222
|
+
properties,
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
export default generateDataverseModel;
|
|
226
|
+
//# sourceMappingURL=generateDataverseModel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateDataverseModel.js","sourceRoot":"","sources":["../../src/Dataverse/generateDataverseModel.ts"],"names":[],"mappings":"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"}
|