@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.
Files changed (119) hide show
  1. package/LICENSE +153 -0
  2. package/README.md +37 -0
  3. package/dist/CodegenProject.d.ts +26 -0
  4. package/dist/CodegenProject.d.ts.map +1 -0
  5. package/dist/CodegenProject.js +140 -0
  6. package/dist/CodegenProject.js.map +1 -0
  7. package/dist/Connector/generateConnectorModel.d.ts +13 -0
  8. package/dist/Connector/generateConnectorModel.d.ts.map +1 -0
  9. package/dist/Connector/generateConnectorModel.js +163 -0
  10. package/dist/Connector/generateConnectorModel.js.map +1 -0
  11. package/dist/Connector/generateConnectorService.d.ts +15 -0
  12. package/dist/Connector/generateConnectorService.d.ts.map +1 -0
  13. package/dist/Connector/generateConnectorService.js +331 -0
  14. package/dist/Connector/generateConnectorService.js.map +1 -0
  15. package/dist/Connector/index.d.ts +6 -0
  16. package/dist/Connector/index.d.ts.map +1 -0
  17. package/dist/Connector/index.js +6 -0
  18. package/dist/Connector/index.js.map +1 -0
  19. package/dist/Dataverse/generateDataverseModel.d.ts +18 -0
  20. package/dist/Dataverse/generateDataverseModel.d.ts.map +1 -0
  21. package/dist/Dataverse/generateDataverseModel.js +226 -0
  22. package/dist/Dataverse/generateDataverseModel.js.map +1 -0
  23. package/dist/Dataverse/generateDataverseService.d.ts +17 -0
  24. package/dist/Dataverse/generateDataverseService.d.ts.map +1 -0
  25. package/dist/Dataverse/generateDataverseService.js +323 -0
  26. package/dist/Dataverse/generateDataverseService.js.map +1 -0
  27. package/dist/Dataverse/index.d.ts +6 -0
  28. package/dist/Dataverse/index.d.ts.map +1 -0
  29. package/dist/Dataverse/index.js +6 -0
  30. package/dist/Dataverse/index.js.map +1 -0
  31. package/dist/SharePointTabular/generateSharepointTabularModel.d.ts +16 -0
  32. package/dist/SharePointTabular/generateSharepointTabularModel.d.ts.map +1 -0
  33. package/dist/SharePointTabular/generateSharepointTabularModel.js +130 -0
  34. package/dist/SharePointTabular/generateSharepointTabularModel.js.map +1 -0
  35. package/dist/SharePointTabular/index.d.ts +5 -0
  36. package/dist/SharePointTabular/index.d.ts.map +1 -0
  37. package/dist/SharePointTabular/index.js +5 -0
  38. package/dist/SharePointTabular/index.js.map +1 -0
  39. package/dist/SqlStoredProc/generateSqlStoredProcModel.d.ts +16 -0
  40. package/dist/SqlStoredProc/generateSqlStoredProcModel.d.ts.map +1 -0
  41. package/dist/SqlStoredProc/generateSqlStoredProcModel.js +38 -0
  42. package/dist/SqlStoredProc/generateSqlStoredProcModel.js.map +1 -0
  43. package/dist/SqlStoredProc/generateSqlStoredProcService.d.ts +16 -0
  44. package/dist/SqlStoredProc/generateSqlStoredProcService.d.ts.map +1 -0
  45. package/dist/SqlStoredProc/generateSqlStoredProcService.js +89 -0
  46. package/dist/SqlStoredProc/generateSqlStoredProcService.js.map +1 -0
  47. package/dist/SqlStoredProc/index.d.ts +6 -0
  48. package/dist/SqlStoredProc/index.d.ts.map +1 -0
  49. package/dist/SqlStoredProc/index.js +6 -0
  50. package/dist/SqlStoredProc/index.js.map +1 -0
  51. package/dist/Tabular/generateCommonModels.d.ts +11 -0
  52. package/dist/Tabular/generateCommonModels.d.ts.map +1 -0
  53. package/dist/Tabular/generateCommonModels.js +27 -0
  54. package/dist/Tabular/generateCommonModels.js.map +1 -0
  55. package/dist/Tabular/generateTabularModel.d.ts +15 -0
  56. package/dist/Tabular/generateTabularModel.d.ts.map +1 -0
  57. package/dist/Tabular/generateTabularModel.js +31 -0
  58. package/dist/Tabular/generateTabularModel.js.map +1 -0
  59. package/dist/Tabular/generateTabularService.d.ts +19 -0
  60. package/dist/Tabular/generateTabularService.d.ts.map +1 -0
  61. package/dist/Tabular/generateTabularService.js +165 -0
  62. package/dist/Tabular/generateTabularService.js.map +1 -0
  63. package/dist/Tabular/index.d.ts +7 -0
  64. package/dist/Tabular/index.d.ts.map +1 -0
  65. package/dist/Tabular/index.js +7 -0
  66. package/dist/Tabular/index.js.map +1 -0
  67. package/dist/defaultPrettierConfig.d.ts +6 -0
  68. package/dist/defaultPrettierConfig.d.ts.map +1 -0
  69. package/dist/defaultPrettierConfig.js +10 -0
  70. package/dist/defaultPrettierConfig.js.map +1 -0
  71. package/dist/index.d.ts +13 -0
  72. package/dist/index.d.ts.map +1 -0
  73. package/dist/index.js +11 -0
  74. package/dist/index.js.map +1 -0
  75. package/dist/shared/constants.d.ts +9 -0
  76. package/dist/shared/constants.d.ts.map +1 -0
  77. package/dist/shared/constants.js +9 -0
  78. package/dist/shared/constants.js.map +1 -0
  79. package/dist/shared/dataverseUtils.d.ts +61 -0
  80. package/dist/shared/dataverseUtils.d.ts.map +1 -0
  81. package/dist/shared/dataverseUtils.js +138 -0
  82. package/dist/shared/dataverseUtils.js.map +1 -0
  83. package/dist/shared/flowUtils.d.ts +11 -0
  84. package/dist/shared/flowUtils.d.ts.map +1 -0
  85. package/dist/shared/flowUtils.js +16 -0
  86. package/dist/shared/flowUtils.js.map +1 -0
  87. package/dist/shared/nameUtils.d.ts +33 -0
  88. package/dist/shared/nameUtils.d.ts.map +1 -0
  89. package/dist/shared/nameUtils.js +180 -0
  90. package/dist/shared/nameUtils.js.map +1 -0
  91. package/dist/shared/project.d.ts +22 -0
  92. package/dist/shared/project.d.ts.map +1 -0
  93. package/dist/shared/project.js +5 -0
  94. package/dist/shared/project.js.map +1 -0
  95. package/dist/shared/schemaUtils.d.ts +32 -0
  96. package/dist/shared/schemaUtils.d.ts.map +1 -0
  97. package/dist/shared/schemaUtils.js +110 -0
  98. package/dist/shared/schemaUtils.js.map +1 -0
  99. package/dist/shared/sqlStoredProcUtils.d.ts +11 -0
  100. package/dist/shared/sqlStoredProcUtils.d.ts.map +1 -0
  101. package/dist/shared/sqlStoredProcUtils.js +19 -0
  102. package/dist/shared/sqlStoredProcUtils.js.map +1 -0
  103. package/dist/shared/swaggerUtils.d.ts +12 -0
  104. package/dist/shared/swaggerUtils.d.ts.map +1 -0
  105. package/dist/shared/swaggerUtils.js +12 -0
  106. package/dist/shared/swaggerUtils.js.map +1 -0
  107. package/dist/shared/typeUtils.d.ts +22 -0
  108. package/dist/shared/typeUtils.d.ts.map +1 -0
  109. package/dist/shared/typeUtils.js +94 -0
  110. package/dist/shared/typeUtils.js.map +1 -0
  111. package/dist/shared/types.d.ts +24 -0
  112. package/dist/shared/types.d.ts.map +1 -0
  113. package/dist/shared/types.js +5 -0
  114. package/dist/shared/types.js.map +1 -0
  115. package/dist/types.d.ts +5 -0
  116. package/dist/types.d.ts.map +1 -0
  117. package/dist/types.js +5 -0
  118. package/dist/types.js.map +1 -0
  119. package/package.json +61 -0
@@ -0,0 +1,19 @@
1
+ /*!
2
+ * Copyright (C) Microsoft Corporation. All rights reserved.
3
+ */
4
+ import { isJsonObject } from './schemaUtils.js';
5
+ /** Returns true if the schema represents a SQL stored procedure (has a `procedureresultschema` object). */
6
+ export function isSqlStoredProcedure(root) {
7
+ return (isJsonObject(root) &&
8
+ isJsonObject(root.schema) &&
9
+ isJsonObject(root.schema.procedureresultschema));
10
+ }
11
+ /**
12
+ * Returns the API key used to identify a stored procedure in datasourcesinfo.
13
+ * Strips brackets and the schema prefix: `[dbo].[testProc]` → `testProc`.
14
+ */
15
+ export function getSqlStoredProcApiKey(name) {
16
+ const withoutBrackets = name.replace(/\[|\]/g, '');
17
+ return ('/' + withoutBrackets).replace(/^\/.+\./, '');
18
+ }
19
+ //# sourceMappingURL=sqlStoredProcUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlStoredProcUtils.js","sourceRoot":"","sources":["../../src/shared/sqlStoredProcUtils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,2GAA2G;AAC3G,MAAM,UAAU,oBAAoB,CAAC,IAAa;IAChD,OAAO,CACL,YAAY,CAAC,IAAI,CAAC;QAClB,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;QACzB,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAChD,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAY;IACjD,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,GAAG,eAAe,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AACxD,CAAC"}
@@ -0,0 +1,12 @@
1
+ /*!
2
+ * Copyright (C) Microsoft Corporation. All rights reserved.
3
+ */
4
+ import type { JsonObject } from '../types.js';
5
+ /**
6
+ * Returns true if the Swagger object contains a valid `paths` node.
7
+ * Connectors without defined paths will have a model generated but no service methods.
8
+ */
9
+ export declare function hasPaths(swagger: JsonObject): swagger is JsonObject & {
10
+ paths: JsonObject;
11
+ };
12
+ //# sourceMappingURL=swaggerUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swaggerUtils.d.ts","sourceRoot":"","sources":["../../src/shared/swaggerUtils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAG3C;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,IAAI,UAAU,GAAG;IAAE,KAAK,EAAE,UAAU,CAAA;CAAE,CAE3F"}
@@ -0,0 +1,12 @@
1
+ /*!
2
+ * Copyright (C) Microsoft Corporation. All rights reserved.
3
+ */
4
+ import { isJsonObject } from './schemaUtils.js';
5
+ /**
6
+ * Returns true if the Swagger object contains a valid `paths` node.
7
+ * Connectors without defined paths will have a model generated but no service methods.
8
+ */
9
+ export function hasPaths(swagger) {
10
+ return 'paths' in swagger && isJsonObject(swagger.paths);
11
+ }
12
+ //# sourceMappingURL=swaggerUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swaggerUtils.js","sourceRoot":"","sources":["../../src/shared/swaggerUtils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAmB;IAC1C,OAAO,OAAO,IAAI,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,22 @@
1
+ /*!
2
+ * Copyright (C) Microsoft Corporation. All rights reserved.
3
+ */
4
+ import type { JsonObject } from '../types.js';
5
+ /** Builds ts-morph PropertySignatureStructure entries from a schema properties node. */
6
+ export declare function buildInterfaceProperties(propertiesNode: JsonObject, requiredFields: Set<string>, modelName: string): Array<{
7
+ name: string;
8
+ type: string;
9
+ hasQuestionToken: boolean;
10
+ docs?: {
11
+ description: string;
12
+ }[];
13
+ }>;
14
+ /**
15
+ * Generates an inline TypeScript object type string for a schema node that has nested `properties`.
16
+ * Returns a type expression like `{ street?: string; city?: string; }` suitable for use as a
17
+ * property type in both string output and ts-morph `type` fields.
18
+ */
19
+ export declare function generateInlineObjectTypeString(modelName: string, definition: JsonObject, padding: string): string;
20
+ /** Resolves the TypeScript type for a schema property, dispatching across optionsets, arrays, nested objects, refs, and primitives. */
21
+ export declare function determineTypeScriptType(modelName: string, propValue: JsonObject | undefined, padding: string, propName?: string): string;
22
+ //# sourceMappingURL=typeUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typeUtils.d.ts","sourceRoot":"","sources":["../../src/shared/typeUtils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAiB3C,wFAAwF;AACxF,wBAAgB,wBAAwB,CACtC,cAAc,EAAE,UAAU,EAC1B,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,EAC3B,SAAS,EAAE,MAAM,GAChB,KAAK,CAAC;IACP,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,OAAO,CAAC;IAC1B,IAAI,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAClC,CAAC,CAYD;AAcD;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,MAAM,GACd,MAAM,CAiBR;AAED,uIAAuI;AACvI,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,UAAU,GAAG,SAAS,EACjC,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,CA6BR"}
@@ -0,0 +1,94 @@
1
+ /*!
2
+ * Copyright (C) Microsoft Corporation. All rights reserved.
3
+ */
4
+ import { hasOptionsetData, isDataverseBooleanProperty, isDataverseMultiSelectPicklistProperty, isDataverseNumericProperty, } from './dataverseUtils.js';
5
+ import { convertToValidIdentifier, formatPropertyName, normalizePropertyName } from './nameUtils.js';
6
+ import { extractReferencedType, generateOptionsetEnumName, getPropertiesNode, getRequiredFields, isJsonObject, mapJsonTypeToTypeScript, } from './schemaUtils.js';
7
+ /** Builds ts-morph PropertySignatureStructure entries from a schema properties node. */
8
+ export function buildInterfaceProperties(propertiesNode, requiredFields, modelName) {
9
+ return Object.entries(propertiesNode).map(([propName, propValue]) => {
10
+ const propObj = isJsonObject(propValue) ? propValue : undefined;
11
+ const formattedName = normalizePropertyName(formatPropertyName(propName));
12
+ const description = typeof propObj?.description === 'string' ? propObj.description : undefined;
13
+ return {
14
+ name: formattedName,
15
+ type: determineTypeScriptType(modelName, propObj, '', propName),
16
+ hasQuestionToken: !requiredFields.has(propName),
17
+ ...(description ? { docs: [{ description }] } : {}),
18
+ };
19
+ });
20
+ }
21
+ function addPropertyComment(lines, propValue, padding) {
22
+ if (propValue?.description && typeof propValue.description === 'string') {
23
+ for (const line of propValue.description.split(/\r?\n/)) {
24
+ lines.push(`${padding} // ${line}`);
25
+ }
26
+ }
27
+ }
28
+ /**
29
+ * Generates an inline TypeScript object type string for a schema node that has nested `properties`.
30
+ * Returns a type expression like `{ street?: string; city?: string; }` suitable for use as a
31
+ * property type in both string output and ts-morph `type` fields.
32
+ */
33
+ export function generateInlineObjectTypeString(modelName, definition, padding) {
34
+ const requiredFields = getRequiredFields(definition);
35
+ const propertiesNode = getPropertiesNode(definition);
36
+ const lines = ['{'];
37
+ for (const [propName, propValue] of Object.entries(propertiesNode)) {
38
+ let formattedPropName = formatPropertyName(convertToValidIdentifier(propName));
39
+ formattedPropName = normalizePropertyName(formattedPropName);
40
+ const propValueAsObject = isJsonObject(propValue) ? propValue : undefined;
41
+ const tsType = determineTypeScriptType(modelName, propValueAsObject, padding, propName);
42
+ const optionalMark = requiredFields.has(propName) ? '' : '?';
43
+ addPropertyComment(lines, propValueAsObject, padding);
44
+ lines.push(`${padding} ${formattedPropName}${optionalMark}: ${tsType};`);
45
+ }
46
+ lines.push(`${padding}}`);
47
+ return lines.join('\n');
48
+ }
49
+ /** Resolves the TypeScript type for a schema property, dispatching across optionsets, arrays, nested objects, refs, and primitives. */
50
+ export function determineTypeScriptType(modelName, propValue, padding, propName) {
51
+ // Dataverse boolean (yes/no) fields must be typed as `boolean`, not as a numeric optionset.
52
+ // The Dataverse Web API expects true/false, not 0/1.
53
+ if (propValue && isDataverseBooleanProperty(propValue)) {
54
+ return 'boolean';
55
+ }
56
+ // Dataverse numeric fields (integer, decimal, double, money, bigint) have `"type": "string"`
57
+ // in the schema but the Dataverse Web API sends/receives them as JSON numbers.
58
+ if (propValue && isDataverseNumericProperty(propValue)) {
59
+ return 'number';
60
+ }
61
+ // Check if this property has optionset data first
62
+ if (propValue && propName && hasOptionsetData(propValue)) {
63
+ const enumName = generateOptionsetEnumName(modelName, propName);
64
+ // Multi-select picklists allow multiple selections, so they are typed as arrays.
65
+ return isDataverseMultiSelectPicklistProperty(propValue) ? `${enumName}[]` : enumName;
66
+ }
67
+ if (propValue?.type === 'array' && isJsonObject(propValue.items)) {
68
+ return determineArrayType(modelName, propValue.items, padding);
69
+ }
70
+ else if (propValue?.properties && typeof propValue.properties === 'object') {
71
+ return generateInlineObjectTypeString(modelName, propValue, padding + ' ');
72
+ }
73
+ else if (typeof propValue?.$ref === 'string') {
74
+ return extractReferencedType(propValue.$ref);
75
+ }
76
+ else {
77
+ return mapJsonTypeToTypeScript(propValue?.type);
78
+ }
79
+ }
80
+ /** Resolves the TypeScript element type for an array property. */
81
+ function determineArrayType(modelName, itemsNode, padding) {
82
+ if ('properties' in itemsNode && typeof itemsNode.properties === 'object') {
83
+ const inline = generateInlineObjectTypeString(modelName, itemsNode, padding + ' ');
84
+ return `${inline}[]`;
85
+ }
86
+ else if ('$ref' in itemsNode && typeof itemsNode.$ref === 'string') {
87
+ return `${extractReferencedType(itemsNode.$ref)}[]`;
88
+ }
89
+ else {
90
+ const itemType = ('type' in itemsNode ? itemsNode.type : 'unknown');
91
+ return mapJsonTypeToTypeScript(itemType) + '[]';
92
+ }
93
+ }
94
+ //# sourceMappingURL=typeUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typeUtils.js","sourceRoot":"","sources":["../../src/shared/typeUtils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /*!
2
+ * Copyright (C) Microsoft Corporation. All rights reserved.
3
+ */
4
+ import type { ILogger } from '@microsoft/managed-apps-common/telemetry';
5
+ import type { CodegenProject } from '../CodegenProject.js';
6
+ export interface ICodegenContext {
7
+ /** The folder containing the schema file being processed */
8
+ schemaFolder: string;
9
+ /** The path to the specific schema file being processed */
10
+ schemaFile: string;
11
+ /** The output folder where generated TypeScript files will be written */
12
+ outputFolder: string;
13
+ /** Logger for diagnostic messages */
14
+ logger: ILogger;
15
+ /** Parsed JSON schema node */
16
+ schema: unknown;
17
+ /** The model name extracted from the schema (e.g., 'Account', 'Contact') */
18
+ modelName: string;
19
+ /** The data source name (e.g., 'Dataverse', 'Sharepoint', 'SqlServer') */
20
+ dataSourceName: string;
21
+ /** Codegen project for managing files */
22
+ project: CodegenProject;
23
+ }
24
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0CAA0C,CAAC;AAExE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,WAAW,eAAe;IAC9B,4DAA4D;IAC5D,YAAY,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,YAAY,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,MAAM,EAAE,OAAO,CAAC;IAChB,8BAA8B;IAC9B,MAAM,EAAE,OAAO,CAAC;IAChB,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,cAAc,EAAE,MAAM,CAAC;IACvB,yCAAyC;IACzC,OAAO,EAAE,cAAc,CAAC;CACzB"}
@@ -0,0 +1,5 @@
1
+ /*!
2
+ * Copyright (C) Microsoft Corporation. All rights reserved.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,5 @@
1
+ /*!
2
+ * Copyright (C) Microsoft Corporation. All rights reserved.
3
+ */
4
+ export type JsonObject = Record<string, unknown>;
5
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC"}
package/dist/types.js ADDED
@@ -0,0 +1,5 @@
1
+ /*!
2
+ * Copyright (C) Microsoft Corporation. All rights reserved.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
package/package.json ADDED
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "@microsoft/managed-apps-codegen",
3
+ "version": "0.2.1",
4
+ "description": "V2 ts-morph based code generation for Power Apps code apps",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "default": "./dist/index.js"
12
+ },
13
+ "./dataverse": {
14
+ "types": "./dist/Dataverse/index.d.ts",
15
+ "default": "./dist/Dataverse/index.js"
16
+ },
17
+ "./connector": {
18
+ "types": "./dist/Connector/index.d.ts",
19
+ "default": "./dist/Connector/index.js"
20
+ },
21
+ "./tabular": {
22
+ "types": "./dist/Tabular/index.d.ts",
23
+ "default": "./dist/Tabular/index.js"
24
+ },
25
+ "./sharepoint-tabular": {
26
+ "types": "./dist/SharePointTabular/index.d.ts",
27
+ "default": "./dist/SharePointTabular/index.js"
28
+ },
29
+ "./sql-stored-procedures": {
30
+ "types": "./dist/SqlStoredProc/index.d.ts",
31
+ "default": "./dist/SqlStoredProc/index.js"
32
+ }
33
+ },
34
+ "files": [
35
+ "dist",
36
+ "LICENSE",
37
+ "README.md"
38
+ ],
39
+ "scripts": {
40
+ "build": "tsc -p tsconfig.build.json && tsc-esm-fix --target dist",
41
+ "dev": "tsc -p tsconfig.json --watch",
42
+ "check-types": "tsc --noEmit",
43
+ "lint": "eslint src/",
44
+ "test": "bun test --isolate src/",
45
+ "clean": "bun ../../scripts/clean.ts dist .turbo tsconfig.tsbuildinfo tsconfig.build.tsbuildinfo"
46
+ },
47
+ "dependencies": {
48
+ "@microsoft/managed-apps-common": "0.5.0",
49
+ "prettier": "3.8.1",
50
+ "ts-morph": "27.0.2"
51
+ },
52
+ "engines": {
53
+ "node": ">=22"
54
+ },
55
+ "devDependencies": {
56
+ "@repo/repo-config": "0.0.0",
57
+ "@types/bun": "1.3.13",
58
+ "tsc-esm-fix": "3.1.2",
59
+ "typescript": "5.9.3"
60
+ }
61
+ }