@sap-ux/odata-service-writer 0.9.8 → 0.11.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.
@@ -0,0 +1,11 @@
1
+ import { NamespaceAlias, OdataService } from '../types';
2
+ /**
3
+ * Returns the namespaces parsed from the specified metadata and annotations.
4
+ *
5
+ * @param {Partial<OdataService>} service - an odata service where at least metadata and annotations properties are defined
6
+ * @param {string} service.metadata - OData service metadata xml
7
+ * @param {string} service.annotations - OData service annotations xml
8
+ * @returns A reference to the namspaces array
9
+ */
10
+ export declare function getAnnotationNamespaces({ metadata, annotations }: Partial<OdataService>): NamespaceAlias[];
11
+ //# sourceMappingURL=annotations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotations.d.ts","sourceRoot":"","sources":["../../src/data/annotations.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExD;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,cAAc,EAAE,CAmB1G"}
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAnnotationNamespaces = void 0;
4
+ const fast_xml_parser_1 = require("fast-xml-parser");
5
+ const i18n_1 = require("../i18n");
6
+ /**
7
+ * Returns the namespaces parsed from the specified metadata and annotations.
8
+ *
9
+ * @param {Partial<OdataService>} service - an odata service where at least metadata and annotations properties are defined
10
+ * @param {string} service.metadata - OData service metadata xml
11
+ * @param {string} service.annotations - OData service annotations xml
12
+ * @returns A reference to the namspaces array
13
+ */
14
+ function getAnnotationNamespaces({ metadata, annotations }) {
15
+ // Enhance service with annotations namespaces
16
+ const schemaNamespaces = metadata ? getNamespaces(metadata) : [];
17
+ if (annotations === null || annotations === void 0 ? void 0 : annotations.xml) {
18
+ // Parse once
19
+ const annotationsJson = xmlToJson(annotations.xml);
20
+ return schemaNamespaces.map((schema) => {
21
+ // Check if alias exists in backend annotation file, if so use it
22
+ const annotationAlias = annotations.xml && schema.namespace ? getAliasFromAnnotation(annotationsJson, schema.namespace) : '';
23
+ if (annotationAlias) {
24
+ schema.alias = annotationAlias;
25
+ }
26
+ return schema;
27
+ });
28
+ }
29
+ return schemaNamespaces;
30
+ }
31
+ exports.getAnnotationNamespaces = getAnnotationNamespaces;
32
+ /**
33
+ * Convert specified xml string to JSON.
34
+ *
35
+ * @param xml - the schema to parse
36
+ * @returns parsed object representation of passed XML
37
+ */
38
+ function xmlToJson(xml) {
39
+ const options = {
40
+ attributeNamePrefix: '',
41
+ ignoreAttributes: false,
42
+ ignoreNameSpace: true,
43
+ parseAttributeValue: true
44
+ };
45
+ try {
46
+ const parser = new fast_xml_parser_1.XMLParser(options);
47
+ return parser.parse(xml, true);
48
+ }
49
+ catch (error) {
50
+ throw new Error((0, i18n_1.t)('error.unparseableXML', { error }));
51
+ }
52
+ }
53
+ /**
54
+ * Gets all the schema namespaces and their aliases from the provided metadata.
55
+ *
56
+ * @param metadata - odata service metadata
57
+ * @returns Array of namespaces and their aliases
58
+ */
59
+ function getNamespaces(metadata) {
60
+ var _a, _b;
61
+ const jsonMetadata = xmlToJson(metadata);
62
+ let schema = (_b = (_a = jsonMetadata['edmx:Edmx']) === null || _a === void 0 ? void 0 : _a['edmx:DataServices']) === null || _b === void 0 ? void 0 : _b['Schema'];
63
+ if (!schema) {
64
+ return [];
65
+ }
66
+ // Can be array or single item
67
+ if (!Array.isArray(schema)) {
68
+ schema = [schema];
69
+ }
70
+ return schema.map((item) => {
71
+ return {
72
+ namespace: item.Namespace,
73
+ alias: item.Alias || ''
74
+ };
75
+ });
76
+ }
77
+ /**
78
+ * Gets namespace aliases from the specified annotations xml.
79
+ *
80
+ * @param annotations - annotations definition as json
81
+ * @param namespace - the namespace to search
82
+ * @returns An alias for the specified namespace or empty string
83
+ */
84
+ function getAliasFromAnnotation(annotations, namespace) {
85
+ var _a, _b;
86
+ let references = (_a = annotations['edmx:Edmx']) === null || _a === void 0 ? void 0 : _a['edmx:Reference'];
87
+ // Can be array or single item
88
+ if (!Array.isArray(references)) {
89
+ references = [references];
90
+ }
91
+ const annoNamespace = references.find((ref) => { var _a, _b; return ((_a = ref['edmx:Include']) === null || _a === void 0 ? void 0 : _a['Namespace']) === namespace && ((_b = ref['edmx:Include']) === null || _b === void 0 ? void 0 : _b['Alias']); });
92
+ return annoNamespace ? (_b = annoNamespace['edmx:Include']) === null || _b === void 0 ? void 0 : _b['Alias'] : '';
93
+ }
94
+ //# sourceMappingURL=annotations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotations.js","sourceRoot":"","sources":["../../src/data/annotations.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import { OdataService } from '../types';
3
3
  * Enhances the provided OData service object with path, name and model information.
4
4
  * Directly modifies the passed object reference.
5
5
  *
6
- * @param {OdataService} data - the OData service object
6
+ * @param {OdataService} service - the OData service object
7
7
  */
8
- export declare function enhanceData(data: OdataService): void;
8
+ export declare function enhanceData(service: OdataService): void;
9
9
  //# sourceMappingURL=defaults.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/data/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGxC;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CA4BpD"}
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/data/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGxC;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CA6BvD"}
@@ -6,35 +6,35 @@ const constants_1 = require("./constants");
6
6
  * Enhances the provided OData service object with path, name and model information.
7
7
  * Directly modifies the passed object reference.
8
8
  *
9
- * @param {OdataService} data - the OData service object
9
+ * @param {OdataService} service - the OData service object
10
10
  */
11
- function enhanceData(data) {
11
+ function enhanceData(service) {
12
12
  var _a;
13
13
  // Set default path
14
- if (data.path === undefined) {
15
- data.path = '/';
14
+ if (service.path === undefined) {
15
+ service.path = '/';
16
16
  }
17
- else if (data.path.substring(data.path.length - 1) !== '/') {
18
- data.path = data.path + '/';
17
+ else if (service.path.substring(service.path.length - 1) !== '/') {
18
+ service.path = service.path + '/';
19
19
  }
20
- if (data.name === undefined) {
21
- data.name = constants_1.DEFAULT_DATASOURCE_NAME;
20
+ if (service.name === undefined) {
21
+ service.name = constants_1.DEFAULT_DATASOURCE_NAME;
22
22
  }
23
- if (data.model === undefined) {
24
- data.model = ''; // Default UI5 model
23
+ if (service.model === undefined) {
24
+ service.model = ''; // Default UI5 model
25
25
  }
26
26
  // enhance preview settings with service configuration
27
- data.previewSettings = data.previewSettings || {};
28
- data.previewSettings.path =
29
- data.previewSettings.path || `/${((_a = data.path) === null || _a === void 0 ? void 0 : _a.split('/').filter((s) => s !== '')[0]) || ''}`;
30
- data.previewSettings.url = data.previewSettings.url || data.url || 'http://localhost';
31
- if (data.client && !data.previewSettings.client) {
32
- data.previewSettings.client = data.client;
27
+ service.previewSettings = service.previewSettings || {};
28
+ service.previewSettings.path =
29
+ service.previewSettings.path || `/${((_a = service.path) === null || _a === void 0 ? void 0 : _a.split('/').filter((s) => s !== '')[0]) || ''}`;
30
+ service.previewSettings.url = service.previewSettings.url || service.url || 'http://localhost';
31
+ if (service.client && !service.previewSettings.client) {
32
+ service.previewSettings.client = service.client;
33
33
  }
34
- if (data.destination && !data.previewSettings.destination) {
35
- data.previewSettings.destination = data.destination.name;
36
- if (data.destination.instance) {
37
- data.previewSettings.destinationInstance = data.destination.instance;
34
+ if (service.destination && !service.previewSettings.destination) {
35
+ service.previewSettings.destination = service.destination.name;
36
+ if (service.destination.instance) {
37
+ service.previewSettings.destinationInstance = service.destination.instance;
38
38
  }
39
39
  }
40
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/data/defaults.ts"],"names":[],"mappings":";;;AACA,2CAAsD;AAEtD;;;;;GAKG;AACH,SAAgB,WAAW,CAAC,IAAkB;;IAC1C,mBAAmB;IACnB,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;QACzB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;KACnB;SAAM,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;QAC1D,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;KAC/B;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;QACzB,IAAI,CAAC,IAAI,GAAG,mCAAuB,CAAC;KACvC;IACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;QAC1B,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,oBAAoB;KACxC;IACD,sDAAsD;IACtD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC;IAClD,IAAI,CAAC,eAAe,CAAC,IAAI;QACrB,IAAI,CAAC,eAAe,CAAC,IAAI,IAAI,IAAI,CAAA,MAAA,IAAI,CAAC,IAAI,0CAAE,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAI,EAAE,EAAE,CAAC;IACtG,IAAI,CAAC,eAAe,CAAC,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,kBAAkB,CAAC;IACtF,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;QAC7C,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;KAC7C;IACD,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;QACvD,IAAI,CAAC,eAAe,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QACzD,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;YAC3B,IAAI,CAAC,eAAe,CAAC,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;SACxE;KACJ;AACL,CAAC;AA5BD,kCA4BC"}
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/data/defaults.ts"],"names":[],"mappings":";;;AACA,2CAAsD;AAEtD;;;;;GAKG;AACH,SAAgB,WAAW,CAAC,OAAqB;;IAC7C,mBAAmB;IACnB,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE;QAC5B,OAAO,CAAC,IAAI,GAAG,GAAG,CAAC;KACtB;SAAM,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;QAChE,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,GAAG,GAAG,CAAC;KACrC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE;QAC5B,OAAO,CAAC,IAAI,GAAG,mCAAuB,CAAC;KAC1C;IACD,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE;QAC7B,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,oBAAoB;KAC3C;IAED,sDAAsD;IACtD,OAAO,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC;IACxD,OAAO,CAAC,eAAe,CAAC,IAAI;QACxB,OAAO,CAAC,eAAe,CAAC,IAAI,IAAI,IAAI,CAAA,MAAA,OAAO,CAAC,IAAI,0CAAE,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAI,EAAE,EAAE,CAAC;IAC5G,OAAO,CAAC,eAAe,CAAC,GAAG,GAAG,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,IAAI,kBAAkB,CAAC;IAC/F,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE;QACnD,OAAO,CAAC,eAAe,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;KACnD;IACD,IAAI,OAAO,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,WAAW,EAAE;QAC7D,OAAO,CAAC,eAAe,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;QAC/D,IAAI,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE;YAC9B,OAAO,CAAC,eAAe,CAAC,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC;SAC9E;KACJ;AACL,CAAC;AA7BD,kCA6BC"}
@@ -1,2 +1,3 @@
1
1
  export * from './defaults';
2
+ export * from './annotations';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/data/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/data/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC"}
@@ -11,4 +11,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
11
11
  };
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
13
  __exportStar(require("./defaults"), exports);
14
+ __exportStar(require("./annotations"), exports);
14
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/data/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA2B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/data/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA2B;AAC3B,gDAA8B"}
package/dist/i18n.d.ts CHANGED
@@ -1,9 +1,14 @@
1
1
  import { TOptions } from 'i18next';
2
+ /**
3
+ * Initialize i18next with the translations for this module.
4
+ */
2
5
  export declare function initI18n(): Promise<void>;
3
6
  /**
4
- * @param key
5
- * @param options
6
- * @returns {string}
7
+ * Helper function facading the call call to i18next.
8
+ *
9
+ * @param key i18n key
10
+ * @param options additional options
11
+ * @returns {string} localized string stored for the given key
7
12
  */
8
13
  export declare function t(key: string, options?: TOptions): string;
9
14
  //# sourceMappingURL=i18n.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAK5C,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAY9C;AAED;;;;GAIG;AACH,wBAAgB,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,GAAG,MAAM,CAEzD"}
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAK5C;;GAEG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAY9C;AAED;;;;;;GAMG;AACH,wBAAgB,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,GAAG,MAAM,CAEzD"}
package/dist/i18n.js CHANGED
@@ -16,6 +16,9 @@ exports.t = exports.initI18n = void 0;
16
16
  const i18next_1 = __importDefault(require("i18next"));
17
17
  const odata_service_writer_i18n_json_1 = __importDefault(require("./translations/odata-service-writer.i18n.json"));
18
18
  const NS = 'odata-service-writer';
19
+ /**
20
+ * Initialize i18next with the translations for this module.
21
+ */
19
22
  function initI18n() {
20
23
  return __awaiter(this, void 0, void 0, function* () {
21
24
  yield i18next_1.default.init({
@@ -33,9 +36,11 @@ function initI18n() {
33
36
  }
34
37
  exports.initI18n = initI18n;
35
38
  /**
36
- * @param key
37
- * @param options
38
- * @returns {string}
39
+ * Helper function facading the call call to i18next.
40
+ *
41
+ * @param key i18n key
42
+ * @param options additional options
43
+ * @returns {string} localized string stored for the given key
39
44
  */
40
45
  function t(key, options) {
41
46
  return i18next_1.default.t(key, options);
package/dist/i18n.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,sDAA4C;AAC5C,mHAAyE;AAEzE,MAAM,EAAE,GAAG,sBAAsB,CAAC;AAElC,SAAsB,QAAQ;;QAC1B,MAAM,iBAAO,CAAC,IAAI,CAAC;YACf,SAAS,EAAE;gBACP,EAAE,EAAE;oBACA,CAAC,EAAE,CAAC,EAAE,wCAAY;iBACrB;aACJ;YACD,GAAG,EAAE,IAAI;YACT,WAAW,EAAE,IAAI;YACjB,SAAS,EAAE,EAAE;YACb,EAAE,EAAE,CAAC,EAAE,CAAC;SACX,CAAC,CAAC;IACP,CAAC;CAAA;AAZD,4BAYC;AAED;;;;GAIG;AACH,SAAgB,CAAC,CAAC,GAAW,EAAE,OAAkB;IAC7C,OAAO,iBAAO,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AACnC,CAAC;AAFD,cAEC;AAED,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,sDAA4C;AAC5C,mHAAyE;AAEzE,MAAM,EAAE,GAAG,sBAAsB,CAAC;AAElC;;GAEG;AACH,SAAsB,QAAQ;;QAC1B,MAAM,iBAAO,CAAC,IAAI,CAAC;YACf,SAAS,EAAE;gBACP,EAAE,EAAE;oBACA,CAAC,EAAE,CAAC,EAAE,wCAAY;iBACrB;aACJ;YACD,GAAG,EAAE,IAAI;YACT,WAAW,EAAE,IAAI;YACjB,SAAS,EAAE,EAAE;YACb,EAAE,EAAE,CAAC,EAAE,CAAC;SACX,CAAC,CAAC;IACP,CAAC;CAAA;AAZD,4BAYC;AAED;;;;;;GAMG;AACH,SAAgB,CAAC,CAAC,GAAW,EAAE,OAAkB;IAC7C,OAAO,iBAAO,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AACnC,CAAC;AAFD,cAEC;AAED,QAAQ,EAAE,CAAC"}
package/dist/index.d.ts CHANGED
@@ -5,11 +5,11 @@ import { OdataService, OdataVersion } from './types';
5
5
  *
6
6
  *
7
7
  * @param {string} basePath - the root path of an existing UI5 application
8
- * @param {OdataService} data - the OData service instance
8
+ * @param {OdataService} service - the OData service instance
9
9
  * @param {Editor} [fs] - the memfs editor instance
10
10
  * @throws {Error} - if required UI5 project files are not found
11
11
  * @returns {Promise<Editor>} the updated memfs editor instance
12
12
  */
13
- declare function generate(basePath: string, data: OdataService, fs?: Editor): Promise<Editor>;
13
+ declare function generate(basePath: string, service: OdataService, fs?: Editor): Promise<Editor>;
14
14
  export { generate, OdataVersion, OdataService };
15
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAU,MAAM,EAAE,MAAM,eAAe,CAAC;AAO/C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAiBrD;;;;;;;;;GASG;AACH,iBAAe,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAsF1F;AAED,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAU,MAAM,EAAE,MAAM,eAAe,CAAC;AAM/C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAiBrD;;;;;;;;;GASG;AACH,iBAAe,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA0F7F;AAED,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC"}
package/dist/index.js CHANGED
@@ -41,19 +41,19 @@ function validateBasePath(basePath, fs) {
41
41
  *
42
42
  *
43
43
  * @param {string} basePath - the root path of an existing UI5 application
44
- * @param {OdataService} data - the OData service instance
44
+ * @param {OdataService} service - the OData service instance
45
45
  * @param {Editor} [fs] - the memfs editor instance
46
46
  * @throws {Error} - if required UI5 project files are not found
47
47
  * @returns {Promise<Editor>} the updated memfs editor instance
48
48
  */
49
- function generate(basePath, data, fs) {
49
+ function generate(basePath, service, fs) {
50
50
  var _a, _b;
51
51
  return __awaiter(this, void 0, void 0, function* () {
52
52
  if (!fs) {
53
53
  fs = (0, mem_fs_editor_1.create)((0, mem_fs_1.create)());
54
54
  }
55
55
  validateBasePath(basePath, fs);
56
- (0, data_1.enhanceData)(data);
56
+ (0, data_1.enhanceData)(service);
57
57
  // merge content into existing files
58
58
  const templateRoot = (0, path_1.join)(__dirname, '..', 'templates');
59
59
  const extRoot = (0, path_1.join)(templateRoot, 'extend');
@@ -68,18 +68,17 @@ function generate(basePath, data, fs) {
68
68
  throw new Error((0, i18n_1.t)('error.requiredProjectPropertyNotFound', { property: `'${appProp}'.id`, path: manifestPath }));
69
69
  }
70
70
  const manifestJsonExt = fs.read((0, path_1.join)(extRoot, `manifest.json`));
71
- fs.extendJSON(manifestPath, JSON.parse((0, ejs_1.render)(manifestJsonExt, data)));
71
+ fs.extendJSON(manifestPath, JSON.parse((0, ejs_1.render)(manifestJsonExt, service)));
72
72
  // ui5.yaml
73
73
  const ui5ConfigPath = (0, path_1.join)(basePath, 'ui5.yaml');
74
74
  const ui5Config = yield ui5_config_1.UI5Config.newInstance(fs.read(ui5ConfigPath));
75
- ui5Config.addFioriToolsProxydMiddleware({ backend: [data.previewSettings], ui5: {} });
76
- ui5Config.addFioriToolsAppReloadMiddleware();
75
+ ui5Config.addBackendToFioriToolsProxydMiddleware(service.previewSettings);
77
76
  // ui5-local.yaml
78
77
  const ui5LocalConfigPath = (0, path_1.join)(basePath, 'ui5-local.yaml');
79
78
  const ui5LocalConfig = yield ui5_config_1.UI5Config.newInstance(fs.read(ui5LocalConfigPath));
80
- ui5LocalConfig.addFioriToolsProxydMiddleware({ backend: [data.previewSettings] });
79
+ ui5LocalConfig.addFioriToolsProxydMiddleware({ backend: [service.previewSettings] });
81
80
  // Add mockserver entries
82
- if (data.metadata) {
81
+ if (service.metadata) {
83
82
  // package.json updates
84
83
  const mockDevDeps = {
85
84
  devDependencies: {
@@ -92,26 +91,25 @@ function generate(basePath, data, fs) {
92
91
  const packageJson = JSON.parse(fs.read(packagePath));
93
92
  packageJson.ui5.dependencies.push('@sap/ux-ui5-fe-mockserver-middleware');
94
93
  fs.writeJSON(packagePath, packageJson);
95
- // ui5-mock.yaml
96
- fs.copyTpl((0, path_1.join)(templateRoot, 'add', 'ui5-mock.yaml'), (0, path_1.join)(basePath, 'ui5-mock.yaml'), Object.assign(data, { appid }));
97
- const ui5MockConfigPath = (0, path_1.join)(basePath, 'ui5-mock.yaml');
98
- const ui5MockConfig = yield ui5_config_1.UI5Config.newInstance(fs.read(ui5MockConfigPath));
99
- ui5MockConfig.addFioriToolsProxydMiddleware({ backend: [data.previewSettings], ui5: {} });
100
- ui5MockConfig.addMockServerMiddleware(data.path);
101
- ui5MockConfig.addFioriToolsAppReloadMiddleware();
94
+ // copy existing `ui5.yaml` as starting point for ui5-mock.yaml
95
+ const ui5MockConfig = yield ui5_config_1.UI5Config.newInstance(ui5Config.toString());
96
+ ui5MockConfig.addMockServerMiddleware(service.path);
102
97
  fs.write((0, path_1.join)(basePath, 'ui5-mock.yaml'), ui5MockConfig.toString());
103
98
  // also add mockserver middleware to ui5-local.yaml
104
- ui5LocalConfig.addMockServerMiddleware(data.path);
99
+ ui5LocalConfig.addMockServerMiddleware(service.path);
105
100
  // create local copy of metadata and annotations
106
- fs.write((0, path_1.join)(basePath, 'webapp', 'localService', 'metadata.xml'), (0, prettify_xml_1.default)(data.metadata, { indent: 4 }));
101
+ fs.write((0, path_1.join)(basePath, 'webapp', 'localService', 'metadata.xml'), (0, prettify_xml_1.default)(service.metadata, { indent: 4 }));
102
+ // Adds local annotations to datasources section of manifest.json and writes the annotations file
103
+ if (service.localAnnotationsName) {
104
+ const namespaces = (0, data_1.getAnnotationNamespaces)(service);
105
+ fs.copyTpl((0, path_1.join)(templateRoot, 'add', 'annotation.xml'), (0, path_1.join)(basePath, 'webapp', 'annotations', `${service.localAnnotationsName}.xml`), Object.assign(Object.assign({}, service), { namespaces }));
106
+ }
107
107
  }
108
- // also add the reload middleware
109
- ui5LocalConfig.addFioriToolsAppReloadMiddleware();
110
108
  // write yamls to disk
111
109
  fs.write(ui5ConfigPath, ui5Config.toString());
112
110
  fs.write(ui5LocalConfigPath, ui5LocalConfig.toString());
113
- if ((_b = data.annotations) === null || _b === void 0 ? void 0 : _b.xml) {
114
- fs.write((0, path_1.join)(basePath, 'webapp', 'localService', `${data.annotations.technicalName}.xml`), (0, prettify_xml_1.default)(data.annotations.xml, { indent: 4 }));
111
+ if ((_b = service.annotations) === null || _b === void 0 ? void 0 : _b.xml) {
112
+ fs.write((0, path_1.join)(basePath, 'webapp', 'localService', `${service.annotations.technicalName}.xml`), (0, prettify_xml_1.default)(service.annotations.xml, { indent: 4 }));
115
113
  }
116
114
  return fs;
117
115
  });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "error": {
3
3
  "requiredProjectFileNotFound": "Invalid project structure. Cannot find required file {{-path}}",
4
- "requiredProjectPropertyNotFound": "Required project property: {{-property}} was not found in file: {{-path}}"
4
+ "requiredProjectPropertyNotFound": "Required project property: {{-property}} was not found in file: {{-path}}",
5
+ "unparseableXML": "Unparseable XML was specified: {{-error}}"
5
6
  }
6
7
  }
package/dist/types.d.ts CHANGED
@@ -3,6 +3,10 @@ export declare enum OdataVersion {
3
3
  v2 = "2",
4
4
  v4 = "4"
5
5
  }
6
+ export interface NamespaceAlias {
7
+ namespace: string;
8
+ alias: string;
9
+ }
6
10
  export interface OdataService {
7
11
  url?: string;
8
12
  client?: string;
@@ -19,6 +23,7 @@ export interface OdataService {
19
23
  technicalName: string;
20
24
  xml: string;
21
25
  };
26
+ localAnnotationsName?: string;
22
27
  previewSettings?: Partial<ProxyBackend>;
23
28
  }
24
29
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,oBAAY,YAAY;IACpB,EAAE,MAAM;IACR,EAAE,MAAM;CACX;AACD,MAAM,WAAW,YAAY;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE;QACV,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,YAAY,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE;QACV,aAAa,EAAE,MAAM,CAAC;QACtB,GAAG,EAAE,MAAM,CAAC;KACf,CAAC;IACF,eAAe,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;CAC3C"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,oBAAY,YAAY;IACpB,EAAE,MAAM;IACR,EAAE,MAAM;CACX;AAED,MAAM,WAAW,cAAc;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE;QACV,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,YAAY,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE;QACV,aAAa,EAAE,MAAM,CAAC;QACtB,GAAG,EAAE,MAAM,CAAC;KACf,CAAC;IACF,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,eAAe,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;CAC3C"}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AACA,IAAY,YAGX;AAHD,WAAY,YAAY;IACpB,wBAAQ,CAAA;IACR,wBAAQ,CAAA;AACZ,CAAC,EAHW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAGvB"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAEA,IAAY,YAGX;AAHD,WAAY,YAAY;IACpB,wBAAQ,CAAA;IACR,wBAAQ,CAAA;AACZ,CAAC,EAHW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAGvB"}
package/package.json CHANGED
@@ -1,43 +1,45 @@
1
1
  {
2
- "name": "@sap-ux/odata-service-writer",
3
- "version": "0.9.8",
4
- "license": "Apache-2.0",
5
- "main": "dist/index.js",
6
- "files": [
7
- "LICENSE",
8
- "dist",
9
- "templates"
10
- ],
11
- "dependencies": {
12
- "ejs": "3.1.6",
13
- "i18next": "20.3.2",
14
- "mem-fs": "2.1.0",
15
- "mem-fs-editor": "9.0.0",
16
- "@sap-ux/ui5-config": "0.10.3",
17
- "prettify-xml": "1.2.0"
18
- },
19
- "devDependencies": {
20
- "@types/ejs": "3.1.0",
21
- "@types/fs-extra": "9.0.13",
22
- "@types/mem-fs-editor": "7.0.0",
23
- "fs-extra": "10.0.0",
24
- "lodash": "4.17.21"
25
- },
26
- "engines": {
27
- "pnpm": ">=6.0.2",
28
- "node": ">=12.22.5 < 13.0.0 || >= 14.16.0 < 15.0.0 || >=16.1.0 < 17.0.0"
29
- },
30
- "scripts": {
31
- "build": "pnpm clean && tsc",
32
- "clean": "rimraf dist test/test-output coverage",
33
- "format": "prettier --write '**/*.{js,json,ts,yaml,yml}' --ignore-path ../../.prettierignore",
34
- "lint": "eslint . --ext .ts",
35
- "lint:fix": "eslint . --ext .ts --fix",
36
- "test": "jest --ci --forceExit --detectOpenHandles --colors",
37
- "test-u": "jest --ci --forceExit --detectOpenHandles --colors -u",
38
- "test:local": "node -r ts-node/register test/index.ts",
39
- "watch": "tsc --watch",
40
- "link": "pnpm link --global",
41
- "unlink": "pnpm unlink --global"
42
- }
43
- }
2
+ "name": "@sap-ux/odata-service-writer",
3
+ "version": "0.11.0",
4
+ "license": "Apache-2.0",
5
+ "main": "dist/index.js",
6
+ "files": [
7
+ "LICENSE",
8
+ "dist",
9
+ "templates"
10
+ ],
11
+ "dependencies": {
12
+ "ejs": "3.1.6",
13
+ "i18next": "20.3.2",
14
+ "mem-fs": "2.1.0",
15
+ "mem-fs-editor": "9.0.0",
16
+ "@sap-ux/ui5-config": "0.11.1",
17
+ "prettify-xml": "1.2.0",
18
+ "fast-xml-parser": "4.0.1"
19
+ },
20
+ "devDependencies": {
21
+ "@types/ejs": "3.1.0",
22
+ "@types/fs-extra": "9.0.13",
23
+ "@types/mem-fs-editor": "7.0.0",
24
+ "fs-extra": "10.0.0",
25
+ "lodash": "4.17.21"
26
+ },
27
+ "engines": {
28
+ "pnpm": ">=6.26.1",
29
+ "node": ">=12.22.5 < 13.0.0 || >= 14.16.0 < 15.0.0 || >=16.1.0 < 17.0.0"
30
+ },
31
+ "scripts": {
32
+ "build": "pnpm clean && tsc",
33
+ "clean": "rimraf dist test/test-output coverage",
34
+ "format": "prettier --write '**/*.{js,json,ts,yaml,yml}' --ignore-path ../../.prettierignore",
35
+ "lint": "eslint . --ext .ts",
36
+ "lint:fix": "eslint . --ext .ts --fix",
37
+ "test": "jest --ci --forceExit --detectOpenHandles --colors",
38
+ "test-u": "jest --ci --forceExit --detectOpenHandles --colors -u",
39
+ "test:local": "node -r ts-node/register test/index.ts",
40
+ "watch": "tsc --watch",
41
+ "link": "pnpm link --global",
42
+ "unlink": "pnpm unlink --global"
43
+ },
44
+ "readme": "# @sap-ux/odata-service-writer\n\nWrites the odata service related file updates to an existing UI5 project specified by the base path.\n\n\n## Installation\nNpm\n`npm install --save @sap-ux/odata-service-writer`\n\nYarn\n`yarn add @sap-ux/odata-service-writer`\n\nPnpm\n`pnpm add @sap-ux/odata-service-writer`\n\n## Usage\n\n```Typescript\nimport { OdataVersion, OdataService, generate } from '@sap-ux/odata-service-writer';\nimport { create, Editor } from 'mem-fs-editor';\nimport { create as createStorage } from 'mem-fs';\n\n...\n\nfs = create(createStorage()); // Or use fs from Yeoman\n\n const config: OdataService = {\n url: 'http://localhost',\n path: '/sap/odata/testme',\n version: OdataVersion.v4,\n destination: {\n name: 'test'\n }\n };\nconst testDir = '/tmp';\n\nawait generate(testDir, config, fs);\n \n```\n\n## Keywords\nSAP Fiori Freestyle\n"
45
+ }
@@ -0,0 +1,18 @@
1
+ <edmx:Edmx xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Version="<%= (version === '2') ? '1.0' : '4.0'%>">
2
+ <edmx:Reference Uri="https://sap.github.io/odata-vocabularies/vocabularies/Common.xml">
3
+ <edmx:Include Namespace="com.sap.vocabularies.Common.v1" Alias="Common"/>
4
+ </edmx:Reference>
5
+ <edmx:Reference Uri="https://sap.github.io/odata-vocabularies/vocabularies/UI.xml">
6
+ <edmx:Include Namespace="com.sap.vocabularies.UI.v1" Alias="UI"/>
7
+ </edmx:Reference>
8
+ <edmx:Reference Uri="https://sap.github.io/odata-vocabularies/vocabularies/Communication.xml">
9
+ <edmx:Include Namespace="com.sap.vocabularies.Communication.v1" Alias="Communication"/>
10
+ </edmx:Reference>
11
+ <edmx:Reference Uri="<%- path %>$metadata"><% namespaces.forEach(function(namespace){ %>
12
+ <edmx:Include Namespace="<%- namespace.namespace %>"<% if (namespace.alias) { %> Alias="<%- namespace.alias %>"<% } %>/><% }); %>
13
+ </edmx:Reference>
14
+ <edmx:DataServices>
15
+ <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="local">
16
+ </Schema>
17
+ </edmx:DataServices>
18
+ </edmx:Edmx>
@@ -6,7 +6,8 @@
6
6
  "type": "OData",
7
7
  "settings": {
8
8
  "annotations": [<%if (locals.annotations && annotations.technicalName) {%>
9
- "<%- annotations.technicalName %>"<% } %>
9
+ "<%- annotations.technicalName %>"<% if (locals.localAnnotationsName) {%>,<%}%><% } %><% if (locals.localAnnotationsName) { %>
10
+ "<%- localAnnotationsName %>"<% } %>
10
11
  ],
11
12
  "localUri": "localService/metadata.xml"<%if (version === '4') {%>,
12
13
  "odataVersion": "4.0"<% } %><%if (version === '2') {%>,
@@ -19,7 +20,14 @@
19
20
  "settings": {
20
21
  "localUri": "localService/<%- annotations.technicalName %>.xml"
21
22
  }
22
- }<% } %>
23
+ }<% } %><% if (locals.localAnnotationsName) { %>,
24
+ "<%- localAnnotationsName %>": {
25
+ "type": "ODataAnnotation",
26
+ "uri": "annotations/<%- localAnnotationsName %>.xml",
27
+ "settings": {
28
+ "localUri": "annotations/<%- localAnnotationsName %>.xml"
29
+ }
30
+ } <% } %>
23
31
  }
24
32
  },
25
33
  "sap.ui5": {
package/CHANGELOG.md DELETED
@@ -1,74 +0,0 @@
1
- # @sap-ux/odata-service-writer
2
-
3
- ## 0.9.8
4
-
5
- ### Patch Changes
6
-
7
- - ccff534: Add inline schema in ui5\*.yaml files for yaml-language-server
8
-
9
- ## 0.9.7
10
-
11
- ### Patch Changes
12
-
13
- - b7ee596: port tool-suite change - add delay to appreload middleware
14
- - Updated dependencies [b7ee596]
15
- - @sap-ux/ui5-config@0.10.3
16
-
17
- ## 0.9.6
18
-
19
- ### Patch Changes
20
-
21
- - 8de261b: Update npm dep and devDeps
22
- - Updated dependencies [8de261b]
23
- - @sap-ux/ui5-config@0.10.2
24
-
25
- ## 0.9.5
26
-
27
- ### Patch Changes
28
-
29
- - a7670a0: Update ui5 verison handling for ui5.yaml. Allow setting view name in basic template, enhancements to yaml lib.
30
- - Updated dependencies [a7670a0]
31
- - @sap-ux/ui5-config@0.10.1
32
-
33
- ## 0.9.4
34
-
35
- ### Patch Changes
36
-
37
- - d37c8bd: Added support for selecting a custom view name for Fiori freestyle - Basic template
38
- - Updated dependencies [d37c8bd]
39
- - @sap-ux/ui5-config@0.10.0
40
-
41
- ## 0.9.3
42
-
43
- ### Patch Changes
44
-
45
- - 6888c5b: Add Readme for modules, add deploy script FF template, engines.node update to lts and small clean-up
46
- - Updated dependencies [6888c5b]
47
- - @sap-ux/ui5-config@0.9.3
48
-
49
- ## 0.9.2
50
-
51
- ### Patch Changes
52
-
53
- - a16d4e7: fix versions in modules for patch instead of minor
54
- - Updated dependencies [a16d4e7]
55
- - @sap-ux/ui5-config@0.9.2
56
-
57
- ## 0.10.0
58
-
59
- ### Minor Changes
60
-
61
- - cd119ea: Fix missing client in fiori proxy config #138
62
-
63
- ### Patch Changes
64
-
65
- - Updated dependencies [cd119ea]
66
- - @sap-ux/ui5-config@0.10.0
67
-
68
- ## 0.9.1
69
-
70
- ### Patch Changes
71
-
72
- - f6e1223: Dummy update to test changesets and pipeline
73
- - Updated dependencies [f6e1223]
74
- - @sap-ux/ui5-config@0.9.1