@sap/artifact-management 1.49.0 → 1.50.0

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 (22) hide show
  1. package/dist/src/definitions/PluginDefintionProvider.js +2 -0
  2. package/dist/src/definitions/PluginDefintionProvider.js.map +1 -1
  3. package/dist/src/plugins/dataproduct/InfoList.js +43 -0
  4. package/dist/src/plugins/dataproduct/InfoList.js.map +1 -0
  5. package/dist/src/plugins/dataproduct/index.js +36 -0
  6. package/dist/src/plugins/dataproduct/index.js.map +1 -0
  7. package/dist/src/plugins/dataproduct/readers/DataProductItemReader.js +116 -0
  8. package/dist/src/plugins/dataproduct/readers/DataProductItemReader.js.map +1 -0
  9. package/dist/src/plugins/dataproduct/readers/DataProductModuleReader.js +43 -0
  10. package/dist/src/plugins/dataproduct/readers/DataProductModuleReader.js.map +1 -0
  11. package/dist/src/plugins/dataproduct/readers/DataProductProjectReader.js +59 -0
  12. package/dist/src/plugins/dataproduct/readers/DataProductProjectReader.js.map +1 -0
  13. package/dist/src/plugins/dataproduct/types/DataProductDefinition.js +6 -0
  14. package/dist/src/plugins/dataproduct/types/DataProductDefinition.js.map +1 -0
  15. package/dist/tsconfig.tsbuildinfo +82 -11
  16. package/dist/types/src/plugins/dataproduct/InfoList.d.ts +37 -0
  17. package/dist/types/src/plugins/dataproduct/index.d.ts +8 -0
  18. package/dist/types/src/plugins/dataproduct/readers/DataProductItemReader.d.ts +24 -0
  19. package/dist/types/src/plugins/dataproduct/readers/DataProductModuleReader.d.ts +17 -0
  20. package/dist/types/src/plugins/dataproduct/readers/DataProductProjectReader.d.ts +16 -0
  21. package/dist/types/src/plugins/dataproduct/types/DataProductDefinition.d.ts +96 -0
  22. package/package.json +5 -5
@@ -11,6 +11,7 @@ const bas_1 = __importDefault(require("../plugins/bas"));
11
11
  const java_1 = __importDefault(require("../plugins/java"));
12
12
  const artifact_management_mdkplugin_1 = __importDefault(require("@sap/artifact-management-mdkplugin"));
13
13
  const artifact_management_hanaplugin_1 = __importDefault(require("@sap/artifact-management-hanaplugin"));
14
+ const dataproduct_1 = __importDefault(require("../plugins/dataproduct"));
14
15
  const abap_1 = __importDefault(require("../plugins/abap"));
15
16
  /**
16
17
  * Central entrypoint for project and module specific implementations ("plugins").
@@ -30,6 +31,7 @@ class PluginDefintionProvider {
30
31
  this.register(artifact_management_hanaplugin_1.default);
31
32
  this.register(bas_1.default);
32
33
  this.register(abap_1.default);
34
+ this.register(dataproduct_1.default);
33
35
  }
34
36
  register(plugin) {
35
37
  if (this.pluginMap.has(plugin.name)) {
@@ -1 +1 @@
1
- {"version":3,"file":"PluginDefintionProvider.js","sourceRoot":"","sources":["../../../src/definitions/PluginDefintionProvider.ts"],"names":[],"mappings":";;;;;AAAA,yDAAuC;AACvC,6DAAgD;AAChD,mEAAiD;AACjD,2GAA6D;AAC7D,yDAAuC;AACvC,2DAAyC;AACzC,uGAA2D;AAC3D,yGAA6D;AAE7D,2DAAyC;AAEzC;;;;;GAKG;AACH,MAAM,uBAAuB;IAGzB;QAFQ,cAAS,GAAwB,IAAI,GAAG,EAAkB,CAAC;QAG/D,IAAI,CAAC,QAAQ,CAAC,cAAU,CAAC,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,aAAS,CAAC,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,eAAgB,CAAC,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,kBAAc,CAAC,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,yCAAS,CAAC,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,uCAAS,CAAC,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,wCAAU,CAAC,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,aAAS,CAAC,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,cAAU,CAAC,CAAC;IAC9B,CAAC;IAED,QAAQ,CAAC,MAAc;QACnB,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YACjC,MAAM,IAAI,KAAK,CAAC,UAAU,MAAM,CAAC,IAAI,sBAAsB,CAAC,CAAC;SAChE;QAED,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,WAAW;QACX,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,OAAO;QACP,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,SAAS,CAAC,UAAkB;QACxB,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;YAChC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC;SAC1C;QACD,MAAM,IAAI,KAAK,CAAC,UAAU,UAAU,mBAAmB,CAAC,CAAC;IAC7D,CAAC;CACJ;AAED,kBAAe,IAAI,uBAAuB,EAAE,CAAC"}
1
+ {"version":3,"file":"PluginDefintionProvider.js","sourceRoot":"","sources":["../../../src/definitions/PluginDefintionProvider.ts"],"names":[],"mappings":";;;;;AAAA,yDAAuC;AACvC,6DAAgD;AAChD,mEAAiD;AACjD,2GAA6D;AAC7D,yDAAuC;AACvC,2DAAyC;AACzC,uGAA2D;AAC3D,yGAA6D;AAC7D,yEAAuD;AAEvD,2DAAyC;AAEzC;;;;;GAKG;AACH,MAAM,uBAAuB;IAGzB;QAFQ,cAAS,GAAwB,IAAI,GAAG,EAAkB,CAAC;QAG/D,IAAI,CAAC,QAAQ,CAAC,cAAU,CAAC,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,aAAS,CAAC,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,eAAgB,CAAC,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,kBAAc,CAAC,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,yCAAS,CAAC,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,uCAAS,CAAC,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,wCAAU,CAAC,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,aAAS,CAAC,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,cAAU,CAAC,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,qBAAiB,CAAC,CAAC;IACrC,CAAC;IAED,QAAQ,CAAC,MAAc;QACnB,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YACjC,MAAM,IAAI,KAAK,CAAC,UAAU,MAAM,CAAC,IAAI,sBAAsB,CAAC,CAAC;SAChE;QAED,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,WAAW;QACX,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,OAAO;QACP,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,SAAS,CAAC,UAAkB;QACxB,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;YAChC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC;SAC1C;QACD,MAAM,IAAI,KAAK,CAAC,UAAU,UAAU,mBAAmB,CAAC,CAAC;IAC7D,CAAC;CACJ;AAED,kBAAe,IAAI,uBAAuB,EAAE,CAAC"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InfoList = void 0;
4
+ /**
5
+ * Error and warning message definitions for Data Product plugin
6
+ */
7
+ exports.InfoList = Object.freeze({
8
+ // Errors
9
+ ERR_DPD_FILE_INVALID: {
10
+ code: 'ERR_DPD_FILE_INVALID',
11
+ description: 'Invalid .dpd file format',
12
+ },
13
+ ERR_DPD_HEADER_MISSING: {
14
+ code: 'ERR_DPD_HEADER_MISSING',
15
+ description: 'Missing header section in .dpd file',
16
+ },
17
+ ERR_DPD_NAME_UNDEFINED: {
18
+ code: 'ERR_DPD_NAME_UNDEFINED',
19
+ description: 'Data product name is undefined',
20
+ },
21
+ ERR_DPD_NAMESPACE_UNDEFINED: {
22
+ code: 'ERR_DPD_NAMESPACE_UNDEFINED',
23
+ description: 'Data product namespace is undefined',
24
+ },
25
+ ERR_DPD_VERSION_UNDEFINED: {
26
+ code: 'ERR_DPD_VERSION_UNDEFINED',
27
+ description: 'Data product version is undefined',
28
+ },
29
+ ERR_DATAPRODUCTS_FOLDER_EMPTY: {
30
+ code: 'ERR_DATAPRODUCTS_FOLDER_EMPTY',
31
+ description: 'dataProducts folder contains no .dpd files',
32
+ },
33
+ // Warnings
34
+ WARN_DPD_TITLE_UNDEFINED: {
35
+ code: 'WARN_DPD_TITLE_UNDEFINED',
36
+ description: 'Data product title is undefined',
37
+ },
38
+ WARN_DPD_DESCRIPTION_UNDEFINED: {
39
+ code: 'WARN_DPD_DESCRIPTION_UNDEFINED',
40
+ description: 'Data product description is undefined',
41
+ },
42
+ });
43
+ //# sourceMappingURL=InfoList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InfoList.js","sourceRoot":"","sources":["../../../../src/plugins/dataproduct/InfoList.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;IAClC,SAAS;IACT,oBAAoB,EAAE;QAClB,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,0BAA0B;KAC1C;IACD,sBAAsB,EAAE;QACpB,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EAAE,qCAAqC;KACrD;IACD,sBAAsB,EAAE;QACpB,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EAAE,gCAAgC;KAChD;IACD,2BAA2B,EAAE;QACzB,IAAI,EAAE,6BAA6B;QACnC,WAAW,EAAE,qCAAqC;KACrD;IACD,yBAAyB,EAAE;QACvB,IAAI,EAAE,2BAA2B;QACjC,WAAW,EAAE,mCAAmC;KACnD;IACD,6BAA6B,EAAE;QAC3B,IAAI,EAAE,+BAA+B;QACrC,WAAW,EAAE,4CAA4C;KAC5D;IAED,WAAW;IACX,wBAAwB,EAAE;QACtB,IAAI,EAAE,0BAA0B;QAChC,WAAW,EAAE,iCAAiC;KACjD;IACD,8BAA8B,EAAE;QAC5B,IAAI,EAAE,gCAAgC;QACtC,WAAW,EAAE,uCAAuC;KACvD;CACJ,CAAC,CAAC"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.InfoList = void 0;
7
+ const DataProductProjectReader_1 = __importDefault(require("./readers/DataProductProjectReader"));
8
+ const DataProductModuleReader_1 = __importDefault(require("./readers/DataProductModuleReader"));
9
+ /**
10
+ * Data Product Plugin for Artifact Management.
11
+ * Provides support for Data Product projects containing .dpd files.
12
+ */
13
+ const DataProductPlugin = {
14
+ name: '@sap/dataproduct-project-plugin',
15
+ getDependencies() {
16
+ return [];
17
+ },
18
+ getProjectReaders() {
19
+ return [new DataProductProjectReader_1.default()];
20
+ },
21
+ getModuleReaders() {
22
+ return [new DataProductModuleReader_1.default()];
23
+ },
24
+ getProjectManifestGenerators() {
25
+ // No MTA generation support for now
26
+ return [];
27
+ },
28
+ getModuleManifestGenerators() {
29
+ // No MTA generation support for now
30
+ return [];
31
+ },
32
+ };
33
+ exports.default = DataProductPlugin;
34
+ var InfoList_1 = require("./InfoList");
35
+ Object.defineProperty(exports, "InfoList", { enumerable: true, get: function () { return InfoList_1.InfoList; } });
36
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/dataproduct/index.ts"],"names":[],"mappings":";;;;;;AACA,kGAA0E;AAC1E,gGAAwE;AAExE;;;GAGG;AACH,MAAM,iBAAiB,GAAW;IAC9B,IAAI,EAAE,iCAAiC;IAEvC,eAAe;QACX,OAAO,EAAE,CAAC;IACd,CAAC;IAED,iBAAiB;QACb,OAAO,CAAC,IAAI,kCAAwB,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,gBAAgB;QACZ,OAAO,CAAC,IAAI,iCAAuB,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,4BAA4B;QACxB,oCAAoC;QACpC,OAAO,EAAE,CAAC;IACd,CAAC;IAED,2BAA2B;QACvB,oCAAoC;QACpC,OAAO,EAAE,CAAC;IACd,CAAC;CACJ,CAAC;AAEF,kBAAe,iBAAiB,CAAC;AACjC,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA"}
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const artifact_management_base_1 = require("@sap/artifact-management-base");
4
+ const InfoList_1 = require("../InfoList");
5
+ /**
6
+ * Item reader for individual .dpd files.
7
+ * Extracts metadata from each data product definition file.
8
+ */
9
+ class DataProductItemReader {
10
+ constructor() {
11
+ this.matchConditions = {
12
+ filePatterns: ['*.dpd'],
13
+ };
14
+ this.types = [artifact_management_base_1.ItemType.DataProduct];
15
+ this.tags = [artifact_management_base_1.Tag.Item, artifact_management_base_1.Tag.DataProduct, artifact_management_base_1.Tag.DPD];
16
+ }
17
+ /**
18
+ * Read all .dpd files in the current directory and extract their metadata.
19
+ */
20
+ async read({ fs }) {
21
+ const items = [];
22
+ const dpdFiles = await fs.glob('*.dpd', { onlyFiles: true });
23
+ for (const file of dpdFiles) {
24
+ try {
25
+ const content = await fs.readJson(file);
26
+ const item = this.parseDataProductFile(fs.relativeToRoot(file), content);
27
+ if (item) {
28
+ items.push(item);
29
+ }
30
+ }
31
+ catch (error) {
32
+ // If we can't parse the file, create an error item
33
+ items.push(this.createErrorItem(fs.relativeToRoot(file), error));
34
+ }
35
+ }
36
+ return items;
37
+ }
38
+ /**
39
+ * Parse a .dpd file and create an Item from it.
40
+ */
41
+ parseDataProductFile(filePath, content) {
42
+ if (!content || !content.definition) {
43
+ return this.createErrorItem(filePath, new Error('Invalid .dpd file structure'));
44
+ }
45
+ const header = content.definition.header;
46
+ if (!header) {
47
+ return this.createErrorItem(filePath, new Error('Missing header in .dpd file'));
48
+ }
49
+ const info = new artifact_management_base_1.Info();
50
+ const errors = [];
51
+ // Validate required fields
52
+ if (!header.name) {
53
+ info.add(InfoList_1.InfoList.ERR_DPD_NAME_UNDEFINED);
54
+ errors.push(InfoList_1.InfoList.ERR_DPD_NAME_UNDEFINED.code);
55
+ }
56
+ if (!header.namespace) {
57
+ info.add(InfoList_1.InfoList.ERR_DPD_NAMESPACE_UNDEFINED);
58
+ errors.push(InfoList_1.InfoList.ERR_DPD_NAMESPACE_UNDEFINED.code);
59
+ }
60
+ if (!header.version) {
61
+ info.add(InfoList_1.InfoList.ERR_DPD_VERSION_UNDEFINED);
62
+ errors.push(InfoList_1.InfoList.ERR_DPD_VERSION_UNDEFINED.code);
63
+ }
64
+ // Extract version components
65
+ const version = header.version || '0.0.0';
66
+ const majorVersion = version.split('.')[0] || '0';
67
+ // Build the reference (namespace.name)
68
+ const ref = header.namespace && header.name
69
+ ? `${header.namespace}.${header.name}`
70
+ : header.name || filePath;
71
+ // Create the data product info object
72
+ const dataProductInfo = {
73
+ id: header.name || '',
74
+ title: header.title || '',
75
+ namespace: header.namespace || '',
76
+ version: version,
77
+ majorVersion: majorVersion,
78
+ description: header.description,
79
+ };
80
+ const item = {
81
+ type: artifact_management_base_1.ItemType.DataProduct,
82
+ name: header.name || filePath,
83
+ ref: ref,
84
+ path: filePath,
85
+ tags: this.tags,
86
+ info: dataProductInfo,
87
+ };
88
+ // Add errors if any
89
+ if (errors.length > 0) {
90
+ item.info = {
91
+ ...dataProductInfo,
92
+ errors: errors,
93
+ };
94
+ }
95
+ return item;
96
+ }
97
+ /**
98
+ * Create an error item when parsing fails.
99
+ */
100
+ createErrorItem(filePath, error) {
101
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
102
+ return {
103
+ type: artifact_management_base_1.ItemType.DataProduct,
104
+ name: filePath,
105
+ ref: filePath,
106
+ path: filePath,
107
+ tags: this.tags,
108
+ info: {
109
+ errors: [InfoList_1.InfoList.ERR_DPD_FILE_INVALID.code],
110
+ errorMessage: errorMessage,
111
+ },
112
+ };
113
+ }
114
+ }
115
+ exports.default = DataProductItemReader;
116
+ //# sourceMappingURL=DataProductItemReader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataProductItemReader.js","sourceRoot":"","sources":["../../../../../src/plugins/dataproduct/readers/DataProductItemReader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const artifact_management_base_1 = require("@sap/artifact-management-base");
7
+ const DataProductItemReader_1 = __importDefault(require("./DataProductItemReader"));
8
+ /**
9
+ * Module reader for the dataProducts folder.
10
+ * Reads the dataProducts folder and its .dpd files.
11
+ */
12
+ class DataProductModuleReader extends artifact_management_base_1.ModuleReader {
13
+ constructor() {
14
+ super(...arguments);
15
+ this.supportedProjectType = [artifact_management_base_1.ProjectType.DataProduct];
16
+ this.matchConditions = {
17
+ requiredFilePatterns: ['*.dpd'],
18
+ };
19
+ this.itemReaders = [new DataProductItemReader_1.default()];
20
+ this.tags = [artifact_management_base_1.Tag.Module, artifact_management_base_1.Tag.DataProduct];
21
+ }
22
+ getType() {
23
+ return artifact_management_base_1.ModuleType.DataProduct;
24
+ }
25
+ getDetectionMechanism() {
26
+ return artifact_management_base_1.DetectionMechanism.FILE_PATTERN;
27
+ }
28
+ async read({ fs }) {
29
+ // Check if there are any .dpd files in this directory
30
+ const dpdFiles = await fs.glob('*.dpd', { onlyFiles: true });
31
+ if (dpdFiles.length === 0) {
32
+ return undefined;
33
+ }
34
+ return {
35
+ type: artifact_management_base_1.ModuleType.DataProduct,
36
+ name: 'dataProducts',
37
+ path: fs.relativeToRoot(),
38
+ tags: this.tags,
39
+ };
40
+ }
41
+ }
42
+ exports.default = DataProductModuleReader;
43
+ //# sourceMappingURL=DataProductModuleReader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataProductModuleReader.js","sourceRoot":"","sources":["../../../../../src/plugins/dataproduct/readers/DataProductModuleReader.ts"],"names":[],"mappings":";;;;;AAAA,4EASuC;AACvC,oFAA4D;AAE5D;;;GAGG;AACH,MAAqB,uBAAwB,SAAQ,uCAAY;IAAjE;;QACI,yBAAoB,GAAG,CAAC,sCAAW,CAAC,WAAW,CAAC,CAAC;QAUjD,oBAAe,GAAG;YACd,oBAAoB,EAAE,CAAC,OAAO,CAAC;SAClC,CAAC;QAEF,gBAAW,GAAG,CAAC,IAAI,+BAAqB,EAAE,CAAC,CAAC;QAE5C,SAAI,GAAG,CAAC,8BAAG,CAAC,MAAM,EAAE,8BAAG,CAAC,WAAW,CAAC,CAAC;IAgBzC,CAAC;IA9BG,OAAO;QACH,OAAO,qCAAU,CAAC,WAAW,CAAC;IAClC,CAAC;IAED,qBAAqB;QACjB,OAAO,6CAAkB,CAAC,YAAY,CAAC;IAC3C,CAAC;IAUD,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAkC;QAC7C,sDAAsD;QACtD,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YACvB,OAAO,SAAS,CAAC;SACpB;QAED,OAAO;YACH,IAAI,EAAE,qCAAU,CAAC,WAAW;YAC5B,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,EAAE,CAAC,cAAc,EAAE;YACzB,IAAI,EAAE,IAAI,CAAC,IAAI;SAClB,CAAC;IACN,CAAC;CACJ;AAjCD,0CAiCC"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const artifact_management_base_1 = require("@sap/artifact-management-base");
7
+ const DataProductModuleReader_1 = __importDefault(require("./DataProductModuleReader"));
8
+ /**
9
+ * Project reader for Data Product projects.
10
+ * Detects projects that have a 'dataProducts' folder directly under root
11
+ * containing .dpd files.
12
+ */
13
+ class DataProductProjectReader extends artifact_management_base_1.ProjectReader {
14
+ constructor() {
15
+ super({
16
+ requiredFilePatterns: ['dataProducts/*.dpd'],
17
+ });
18
+ this.additionalModuleReaders = [
19
+ [new DataProductModuleReader_1.default()],
20
+ ];
21
+ this.tags = [artifact_management_base_1.Tag.Project, artifact_management_base_1.Tag.DataProduct];
22
+ }
23
+ getType() {
24
+ return artifact_management_base_1.ProjectType.DataProduct;
25
+ }
26
+ getDetectionMechanism() {
27
+ return artifact_management_base_1.DetectionMechanism.UNIQUE_IDENTIFICATION;
28
+ }
29
+ async moduleSearchPattern() {
30
+ // Only search in the dataProducts folder directly under root
31
+ return ['dataProducts'];
32
+ }
33
+ async read({ fs }) {
34
+ // Check for .dpd files in the dataProducts folder
35
+ const dpdFiles = await fs.glob('dataProducts/*.dpd', { onlyFiles: true });
36
+ if (dpdFiles.length === 0) {
37
+ return undefined;
38
+ }
39
+ // Get project name from the folder name
40
+ const pathParts = fs.basePath.replace(/\\/g, '/').split('/');
41
+ const projectName = pathParts[pathParts.length - 1] || 'DataProductProject';
42
+ return {
43
+ type: artifact_management_base_1.ProjectType.DataProduct,
44
+ typeName: artifact_management_base_1.ProjectTypeName.DataProduct,
45
+ path: fs.basePath,
46
+ name: projectName,
47
+ prefix: projectName,
48
+ cloudService: projectName,
49
+ version: '1.0.0',
50
+ ui5version: artifact_management_base_1.ProjectDataDefaults.ui5version,
51
+ ui5theme: artifact_management_base_1.ProjectDataDefaults.ui5theme,
52
+ terminal: artifact_management_base_1.ProjectDataDefaults.terminal,
53
+ tags: this.tags,
54
+ nonDeployable: true,
55
+ };
56
+ }
57
+ }
58
+ exports.default = DataProductProjectReader;
59
+ //# sourceMappingURL=DataProductProjectReader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataProductProjectReader.js","sourceRoot":"","sources":["../../../../../src/plugins/dataproduct/readers/DataProductProjectReader.ts"],"names":[],"mappings":";;;;;AAAA,4EAUuC;AACvC,wFAAgE;AAEhE;;;;GAIG;AACH,MAAqB,wBAAyB,SAAQ,wCAAa;IAC/D;QACI,KAAK,CAAC;YACF,oBAAoB,EAAE,CAAC,oBAAoB,CAAC;SAC/C,CAAC,CAAC;QAWP,4BAAuB,GAAG;YACtB,CAAC,IAAI,iCAAuB,EAAE,CAAC;SAClC,CAAC;QAEF,SAAI,GAAG,CAAC,8BAAG,CAAC,OAAO,EAAE,8BAAG,CAAC,WAAW,CAAC,CAAC;IAdtC,CAAC;IAED,OAAO;QACH,OAAO,sCAAW,CAAC,WAAW,CAAC;IACnC,CAAC;IAED,qBAAqB;QACjB,OAAO,6CAAkB,CAAC,qBAAqB,CAAC;IACpD,CAAC;IAQD,KAAK,CAAC,mBAAmB;QACrB,6DAA6D;QAC7D,OAAO,CAAC,cAAc,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAwB;QACnC,kDAAkD;QAClD,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1E,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YACvB,OAAO,SAAS,CAAC;SACpB;QAED,wCAAwC;QACxC,MAAM,SAAS,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7D,MAAM,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,oBAAoB,CAAC;QAE5E,OAAO;YACH,IAAI,EAAE,sCAAW,CAAC,WAAW;YAC7B,QAAQ,EAAE,0CAAe,CAAC,WAAW;YACrC,IAAI,EAAE,EAAE,CAAC,QAAQ;YACjB,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE,WAAW;YACnB,YAAY,EAAE,WAAW;YACzB,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,8CAAmB,CAAC,UAAU;YAC1C,QAAQ,EAAE,8CAAmB,CAAC,QAAQ;YACtC,QAAQ,EAAE,8CAAmB,CAAC,QAAQ;YACtC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,aAAa,EAAE,IAAI;SACtB,CAAC;IACN,CAAC;CACJ;AApDD,2CAoDC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * TypeScript interfaces for Data Product Definition (.dpd) files
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=DataProductDefinition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataProductDefinition.js","sourceRoot":"","sources":["../../../../../src/plugins/dataproduct/types/DataProductDefinition.ts"],"names":[],"mappings":";AAAA;;GAEG"}
@@ -162,18 +162,18 @@
162
162
  "affectsGlobalScope": true
163
163
  },
164
164
  "../../artifact-management-base/dist/types/src/definitions/ProjectType.d.ts": {
165
- "version": "42eb7cce0a9f0f94b9af17df1ddc7cd35e69746660b838b21403c6537a0847f4",
166
- "signature": "42eb7cce0a9f0f94b9af17df1ddc7cd35e69746660b838b21403c6537a0847f4",
165
+ "version": "97d609d154cfc0086a2dbe6aa8fe09c63a1f40f9e11bc54c84e5a2c1b82206eb",
166
+ "signature": "97d609d154cfc0086a2dbe6aa8fe09c63a1f40f9e11bc54c84e5a2c1b82206eb",
167
167
  "affectsGlobalScope": false
168
168
  },
169
169
  "../../artifact-management-base/dist/types/src/definitions/ModuleType.d.ts": {
170
- "version": "c4e272dcfe7457bb97574b4adba00675fe54c2025456a76d6ea73ed5cdca7059",
171
- "signature": "c4e272dcfe7457bb97574b4adba00675fe54c2025456a76d6ea73ed5cdca7059",
170
+ "version": "b247d957e8b6f1f750363a0890413ce639baf65ff6d836fbd339f4e288aff7da",
171
+ "signature": "b247d957e8b6f1f750363a0890413ce639baf65ff6d836fbd339f4e288aff7da",
172
172
  "affectsGlobalScope": false
173
173
  },
174
174
  "../../artifact-management-base/dist/types/src/definitions/Tag.d.ts": {
175
- "version": "f14179d83fb0869bf3cb7d96317808fdfb58c746381211ada8b722ea85f301c0",
176
- "signature": "f14179d83fb0869bf3cb7d96317808fdfb58c746381211ada8b722ea85f301c0",
175
+ "version": "6886971c03cb396c3afad2f214a9837ef04e1a410ed599471432e42f71df6422",
176
+ "signature": "6886971c03cb396c3afad2f214a9837ef04e1a410ed599471432e42f71df6422",
177
177
  "affectsGlobalScope": false
178
178
  },
179
179
  "../../artifact-management-base/dist/types/src/definitions/PluginError.d.ts": {
@@ -182,8 +182,8 @@
182
182
  "affectsGlobalScope": false
183
183
  },
184
184
  "../../artifact-management-base/dist/types/src/definitions/ItemType.d.ts": {
185
- "version": "e3c9bd702704e6ced2d10d8d1b23dde60c440ff5d9e7283b7fb798afa786243e",
186
- "signature": "e3c9bd702704e6ced2d10d8d1b23dde60c440ff5d9e7283b7fb798afa786243e",
185
+ "version": "502a40fb459ed3fc93c2a56f4225db5c9df19bd56f8ac077977b15d982c8901b",
186
+ "signature": "502a40fb459ed3fc93c2a56f4225db5c9df19bd56f8ac077977b15d982c8901b",
187
187
  "affectsGlobalScope": false
188
188
  },
189
189
  "../../artifact-management-base/dist/types/src/util/Types.d.ts": {
@@ -697,8 +697,8 @@
697
697
  "affectsGlobalScope": false
698
698
  },
699
699
  "../../artifact-management-base/dist/types/src/cp/UIManifest.d.ts": {
700
- "version": "9582b5c8f0760196a6056d7f25ceb73ebe643dc4c22c44149ba00229d498c65c",
701
- "signature": "9582b5c8f0760196a6056d7f25ceb73ebe643dc4c22c44149ba00229d498c65c",
700
+ "version": "611ea00e2ae82a0acb22de61d65338b2235bcb08b9d72155254414e21a802c94",
701
+ "signature": "611ea00e2ae82a0acb22de61d65338b2235bcb08b9d72155254414e21a802c94",
702
702
  "affectsGlobalScope": false
703
703
  },
704
704
  "../../artifact-management-base/dist/types/src/cp/UI5ManifestHelper.d.ts": {
@@ -1361,6 +1361,36 @@
1361
1361
  "signature": "7d29e493727fddaaf60cda3edd2de3fecdec0ef3e6a22e53ad98960216d21e1e",
1362
1362
  "affectsGlobalScope": false
1363
1363
  },
1364
+ "../src/plugins/dataproduct/types/DataProductDefinition.ts": {
1365
+ "version": "8171a3085387ee3732db78c45925abc0abf1c98ad0cd9106c5851b2d8dae9aae",
1366
+ "signature": "5c963f5e88047a9b5d9850bd31ad1b98578cdd5a5b68708b6168c8183207afc7",
1367
+ "affectsGlobalScope": false
1368
+ },
1369
+ "../src/plugins/dataproduct/InfoList.ts": {
1370
+ "version": "db9b263ea8aab6908d4095de59b414eb5a60deffd9c27024d36a2605a0cf54d1",
1371
+ "signature": "3a718331873ef59b67145c2eed5367b2423080578ba78553679becff878482af",
1372
+ "affectsGlobalScope": false
1373
+ },
1374
+ "../src/plugins/dataproduct/readers/DataProductItemReader.ts": {
1375
+ "version": "a3a67cbd72f51d555fde7d265376a1a5db441abfec8012247ee41113bfcfe46b",
1376
+ "signature": "2a121c9f41b4733200193757ffc1645db6d61c2592a643a838a507bd65b43f44",
1377
+ "affectsGlobalScope": false
1378
+ },
1379
+ "../src/plugins/dataproduct/readers/DataProductModuleReader.ts": {
1380
+ "version": "7618f054462267e20620142731fa7a09f902e439a0790d541a23afd2f19f8fe0",
1381
+ "signature": "6d94c3cc15727d08a6d4e4eb03e3d8b71b256379de9e223e0819733c5bb1fa15",
1382
+ "affectsGlobalScope": false
1383
+ },
1384
+ "../src/plugins/dataproduct/readers/DataProductProjectReader.ts": {
1385
+ "version": "afb4b359d07d8bd59ac45f74b218dd4a0af93c560d0d962001104c98547ab6e4",
1386
+ "signature": "ac8f3f7b22f414aa34f91870e6af6b42c5f6f617ae13a05034954e5b9d548db6",
1387
+ "affectsGlobalScope": false
1388
+ },
1389
+ "../src/plugins/dataproduct/index.ts": {
1390
+ "version": "9b830f46a66f6471e8735091a83e42416910f5833d9928286e8e0efc45485b74",
1391
+ "signature": "f39dc33507f7b8a9d3deb5672b7cab39f231803de8ea3659d08e70d4c95d0447",
1392
+ "affectsGlobalScope": false
1393
+ },
1364
1394
  "../src/plugins/abap/readers/AbapProjectReader.ts": {
1365
1395
  "version": "5a70a643fb8191d3051f37c43851ea793d15c1e0013da0b1f834ec5308040c42",
1366
1396
  "signature": "bfc8b6c2ebd7a5f8342a6d977cc849fe7e51c289cd3d8c7babed006408942b57",
@@ -1567,7 +1597,7 @@
1567
1597
  "affectsGlobalScope": false
1568
1598
  },
1569
1599
  "../src/definitions/PluginDefintionProvider.ts": {
1570
- "version": "44aacb743b35fc735addb440558f83e21db003efd1f4d409b82df61374aea2d5",
1600
+ "version": "356f102e870940332b43f1eab806a1a05fd51498c0f10f9081263fb7b6aed1c4",
1571
1601
  "signature": "3b80780aa4e01664a1fc9bdf74521c4a189530c83b74ad63ed526310d1452010",
1572
1602
  "affectsGlobalScope": false
1573
1603
  },
@@ -3079,6 +3109,7 @@
3079
3109
  "../src/plugins/abap/index.ts",
3080
3110
  "../src/plugins/bas/index.ts",
3081
3111
  "../src/plugins/cap/index.ts",
3112
+ "../src/plugins/dataproduct/index.ts",
3082
3113
  "../src/plugins/java/index.ts",
3083
3114
  "../src/plugins/workflow/index.ts",
3084
3115
  "../src/plugins/xsuaa/index.ts"
@@ -3268,6 +3299,25 @@
3268
3299
  "../../artifact-management-base/dist/types/src/index.d.ts",
3269
3300
  "../node_modules/@types/node/path.d.ts"
3270
3301
  ],
3302
+ "../src/plugins/dataproduct/index.ts": [
3303
+ "../../artifact-management-base/dist/types/src/index.d.ts",
3304
+ "../src/plugins/dataproduct/InfoList.ts",
3305
+ "../src/plugins/dataproduct/readers/DataProductModuleReader.ts",
3306
+ "../src/plugins/dataproduct/readers/DataProductProjectReader.ts"
3307
+ ],
3308
+ "../src/plugins/dataproduct/readers/DataProductItemReader.ts": [
3309
+ "../../artifact-management-base/dist/types/src/index.d.ts",
3310
+ "../src/plugins/dataproduct/InfoList.ts",
3311
+ "../src/plugins/dataproduct/types/DataProductDefinition.ts"
3312
+ ],
3313
+ "../src/plugins/dataproduct/readers/DataProductModuleReader.ts": [
3314
+ "../../artifact-management-base/dist/types/src/index.d.ts",
3315
+ "../src/plugins/dataproduct/readers/DataProductItemReader.ts"
3316
+ ],
3317
+ "../src/plugins/dataproduct/readers/DataProductProjectReader.ts": [
3318
+ "../../artifact-management-base/dist/types/src/index.d.ts",
3319
+ "../src/plugins/dataproduct/readers/DataProductModuleReader.ts"
3320
+ ],
3271
3321
  "../src/plugins/java/index.ts": [
3272
3322
  "../../artifact-management-base/dist/types/src/index.d.ts",
3273
3323
  "../src/plugins/cap/CapRun.ts",
@@ -4682,6 +4732,21 @@
4682
4732
  "../src/plugins/cap/util/PathUtil.ts": [
4683
4733
  "../../artifact-management-base/dist/types/src/index.d.ts"
4684
4734
  ],
4735
+ "../src/plugins/dataproduct/index.ts": [
4736
+ "../../artifact-management-base/dist/types/src/index.d.ts",
4737
+ "../src/plugins/dataproduct/InfoList.ts"
4738
+ ],
4739
+ "../src/plugins/dataproduct/readers/DataProductItemReader.ts": [
4740
+ "../../artifact-management-base/dist/types/src/index.d.ts"
4741
+ ],
4742
+ "../src/plugins/dataproduct/readers/DataProductModuleReader.ts": [
4743
+ "../../artifact-management-base/dist/types/src/index.d.ts",
4744
+ "../src/plugins/dataproduct/readers/DataProductItemReader.ts"
4745
+ ],
4746
+ "../src/plugins/dataproduct/readers/DataProductProjectReader.ts": [
4747
+ "../../artifact-management-base/dist/types/src/index.d.ts",
4748
+ "../src/plugins/dataproduct/readers/DataProductModuleReader.ts"
4749
+ ],
4685
4750
  "../src/plugins/java/index.ts": [
4686
4751
  "../../artifact-management-base/dist/types/src/index.d.ts"
4687
4752
  ],
@@ -5151,6 +5216,12 @@
5151
5216
  "../src/plugins/cap/util/CdsUtil.ts",
5152
5217
  "../src/plugins/cap/util/ItemUtil.ts",
5153
5218
  "../src/plugins/cap/util/PathUtil.ts",
5219
+ "../src/plugins/dataproduct/InfoList.ts",
5220
+ "../src/plugins/dataproduct/index.ts",
5221
+ "../src/plugins/dataproduct/readers/DataProductItemReader.ts",
5222
+ "../src/plugins/dataproduct/readers/DataProductModuleReader.ts",
5223
+ "../src/plugins/dataproduct/readers/DataProductProjectReader.ts",
5224
+ "../src/plugins/dataproduct/types/DataProductDefinition.ts",
5154
5225
  "../src/plugins/java/index.ts",
5155
5226
  "../src/plugins/java/readers/JavaModuleReader.ts",
5156
5227
  "../src/plugins/java/readers/JavaProjectReader.ts",
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Error and warning message definitions for Data Product plugin
3
+ */
4
+ export declare const InfoList: Readonly<{
5
+ ERR_DPD_FILE_INVALID: {
6
+ code: string;
7
+ description: string;
8
+ };
9
+ ERR_DPD_HEADER_MISSING: {
10
+ code: string;
11
+ description: string;
12
+ };
13
+ ERR_DPD_NAME_UNDEFINED: {
14
+ code: string;
15
+ description: string;
16
+ };
17
+ ERR_DPD_NAMESPACE_UNDEFINED: {
18
+ code: string;
19
+ description: string;
20
+ };
21
+ ERR_DPD_VERSION_UNDEFINED: {
22
+ code: string;
23
+ description: string;
24
+ };
25
+ ERR_DATAPRODUCTS_FOLDER_EMPTY: {
26
+ code: string;
27
+ description: string;
28
+ };
29
+ WARN_DPD_TITLE_UNDEFINED: {
30
+ code: string;
31
+ description: string;
32
+ };
33
+ WARN_DPD_DESCRIPTION_UNDEFINED: {
34
+ code: string;
35
+ description: string;
36
+ };
37
+ }>;
@@ -0,0 +1,8 @@
1
+ import { Plugin } from '@sap/artifact-management-base';
2
+ /**
3
+ * Data Product Plugin for Artifact Management.
4
+ * Provides support for Data Product projects containing .dpd files.
5
+ */
6
+ declare const DataProductPlugin: Plugin;
7
+ export default DataProductPlugin;
8
+ export { InfoList } from './InfoList';
@@ -0,0 +1,24 @@
1
+ import { Item, ProjectEntityReaderReadOptions } from '@sap/artifact-management-base';
2
+ /**
3
+ * Item reader for individual .dpd files.
4
+ * Extracts metadata from each data product definition file.
5
+ */
6
+ export default class DataProductItemReader {
7
+ matchConditions: {
8
+ filePatterns: string[];
9
+ };
10
+ types: string[];
11
+ tags: string[];
12
+ /**
13
+ * Read all .dpd files in the current directory and extract their metadata.
14
+ */
15
+ read({ fs }: ProjectEntityReaderReadOptions): Promise<Item[]>;
16
+ /**
17
+ * Parse a .dpd file and create an Item from it.
18
+ */
19
+ private parseDataProductFile;
20
+ /**
21
+ * Create an error item when parsing fails.
22
+ */
23
+ private createErrorItem;
24
+ }
@@ -0,0 +1,17 @@
1
+ import { DetectionMechanism, KeyIn, ModuleData, ModuleReader, ModuleType, ProjectEntityReaderReadOptions } from '@sap/artifact-management-base';
2
+ import DataProductItemReader from './DataProductItemReader';
3
+ /**
4
+ * Module reader for the dataProducts folder.
5
+ * Reads the dataProducts folder and its .dpd files.
6
+ */
7
+ export default class DataProductModuleReader extends ModuleReader {
8
+ supportedProjectType: string[];
9
+ getType(): KeyIn<typeof ModuleType>;
10
+ getDetectionMechanism(): DetectionMechanism;
11
+ matchConditions: {
12
+ requiredFilePatterns: string[];
13
+ };
14
+ itemReaders: DataProductItemReader[];
15
+ tags: string[];
16
+ read({ fs }: ProjectEntityReaderReadOptions): Promise<ModuleData | undefined>;
17
+ }
@@ -0,0 +1,16 @@
1
+ import { DetectionMechanism, KeyIn, ProjectData, ProjectReader, ProjectReaderOptions, ProjectType } from '@sap/artifact-management-base';
2
+ import DataProductModuleReader from './DataProductModuleReader';
3
+ /**
4
+ * Project reader for Data Product projects.
5
+ * Detects projects that have a 'dataProducts' folder directly under root
6
+ * containing .dpd files.
7
+ */
8
+ export default class DataProductProjectReader extends ProjectReader {
9
+ constructor();
10
+ getType(): KeyIn<typeof ProjectType>;
11
+ getDetectionMechanism(): DetectionMechanism;
12
+ additionalModuleReaders: DataProductModuleReader[][];
13
+ tags: string[];
14
+ moduleSearchPattern(): Promise<string[]>;
15
+ read({ fs }: ProjectReaderOptions): Promise<ProjectData | undefined>;
16
+ }
@@ -0,0 +1,96 @@
1
+ /**
2
+ * TypeScript interfaces for Data Product Definition (.dpd) files
3
+ */
4
+ /**
5
+ * Header section of the data product definition
6
+ */
7
+ export interface DataProductHeader {
8
+ name: string;
9
+ namespace: string;
10
+ version: string;
11
+ title?: string;
12
+ description?: string;
13
+ shortDescription?: string;
14
+ type?: string;
15
+ category?: string;
16
+ }
17
+ /**
18
+ * Output port configuration
19
+ */
20
+ export interface DataProductOutputPort {
21
+ name: string;
22
+ protocol: string;
23
+ }
24
+ /**
25
+ * Input port configuration
26
+ */
27
+ export interface DataProductInputPort {
28
+ name?: string;
29
+ protocol?: string;
30
+ }
31
+ /**
32
+ * Meta information
33
+ */
34
+ export interface DataProductMeta {
35
+ creator?: string;
36
+ }
37
+ /**
38
+ * Data source definition
39
+ */
40
+ export interface DataProductDataSource {
41
+ name: string;
42
+ definition?: Record<string, unknown>;
43
+ }
44
+ /**
45
+ * Source configuration
46
+ */
47
+ export interface DataProductSource {
48
+ systemTypes?: string[];
49
+ systemId?: string;
50
+ dataSourceType?: string;
51
+ dataSources?: DataProductDataSource[];
52
+ }
53
+ /**
54
+ * Target configuration
55
+ */
56
+ export interface DataProductTarget {
57
+ definition?: {
58
+ definitions?: Record<string, unknown>;
59
+ };
60
+ }
61
+ /**
62
+ * Transformation configuration
63
+ */
64
+ export interface DataProductTransformation {
65
+ transformers?: Record<string, unknown>;
66
+ }
67
+ /**
68
+ * Main definition structure
69
+ */
70
+ export interface DataProductDefinitionContent {
71
+ header: DataProductHeader;
72
+ dataProductDefinitionInterop?: string;
73
+ inputPorts?: DataProductInputPort[];
74
+ outputPorts?: DataProductOutputPort[];
75
+ meta?: DataProductMeta;
76
+ source?: DataProductSource;
77
+ target?: DataProductTarget;
78
+ transformation?: DataProductTransformation;
79
+ }
80
+ /**
81
+ * Root structure of a .dpd file
82
+ */
83
+ export interface DataProductFile {
84
+ definition: DataProductDefinitionContent;
85
+ }
86
+ /**
87
+ * Extracted information from a data product for Project API
88
+ */
89
+ export interface DataProductInfo {
90
+ id: string;
91
+ title: string;
92
+ namespace: string;
93
+ version: string;
94
+ majorVersion: string;
95
+ description?: string;
96
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sap/artifact-management",
3
- "version": "1.49.0",
3
+ "version": "1.50.0",
4
4
  "main": "dist/src/index.js",
5
5
  "types": "dist/types/src/index.d.ts",
6
6
  "files": [
@@ -31,10 +31,10 @@
31
31
  "@babel/parser": "^7.26.10",
32
32
  "@babel/traverse": "^7.26.10",
33
33
  "@babel/types": "^7.24.0",
34
- "@sap/artifact-management-base": "^1.49.0",
35
- "@sap/artifact-management-fioriplugin": "^1.49.0",
36
- "@sap/artifact-management-hanaplugin": "^1.49.0",
37
- "@sap/artifact-management-mdkplugin": "^1.49.0",
34
+ "@sap/artifact-management-base": "^1.50.0",
35
+ "@sap/artifact-management-fioriplugin": "^1.50.0",
36
+ "@sap/artifact-management-hanaplugin": "^1.50.0",
37
+ "@sap/artifact-management-mdkplugin": "^1.50.0",
38
38
  "ajv": "8.17.1",
39
39
  "chokidar": "3.6.0",
40
40
  "js-yaml": "4.1.0",