@sap-ux/preview-middleware 0.12.11 → 0.12.12

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 (38) hide show
  1. package/README.md +22 -0
  2. package/dist/base/flp.d.ts +10 -1
  3. package/dist/base/flp.js +67 -4
  4. package/dist/base/test.d.ts +24 -0
  5. package/dist/base/test.js +59 -0
  6. package/dist/client/adp/api-handler.js +141 -141
  7. package/dist/client/adp/command-executor.js +54 -54
  8. package/dist/client/adp/control-utils.js +44 -44
  9. package/dist/client/adp/controllers/AddFragment.controller.js +206 -206
  10. package/dist/client/adp/controllers/BaseDialog.controller.js +57 -57
  11. package/dist/client/adp/controllers/ControllerExtension.controller.js +174 -174
  12. package/dist/client/adp/controllers/ExtensionPoint.controller.js +100 -100
  13. package/dist/client/adp/init-dialogs.js +74 -74
  14. package/dist/client/adp/ui5-version-utils.js +63 -63
  15. package/dist/client/adp/utils.js +33 -33
  16. package/dist/client/cpe/changes/flex-change.js +51 -51
  17. package/dist/client/cpe/changes/index.js +10 -10
  18. package/dist/client/cpe/changes/validator.js +35 -35
  19. package/dist/client/cpe/documentation.js +164 -164
  20. package/dist/client/cpe/logger.js +30 -30
  21. package/dist/client/cpe/outline/nodes.js +84 -84
  22. package/dist/client/cpe/outline/utils.js +37 -37
  23. package/dist/client/cpe/types.js +4 -4
  24. package/dist/client/cpe/ui5-utils.js +49 -49
  25. package/dist/client/cpe/utils.js +48 -48
  26. package/dist/client/flp/WorkspaceConnector.js +69 -69
  27. package/dist/client/flp/common.js +28 -28
  28. package/dist/client/flp/enableFakeConnector.js +77 -77
  29. package/dist/client/flp/init.js +220 -212
  30. package/dist/client/flp/init.ts +17 -2
  31. package/dist/client/flp/initConnectors.js +33 -33
  32. package/dist/client/flp/initRta.js +178 -178
  33. package/dist/index.d.ts +1 -1
  34. package/dist/types/index.d.ts +23 -0
  35. package/package.json +3 -3
  36. package/templates/flp/sandbox.html +5 -4
  37. package/templates/test/qunit.html +25 -0
  38. package/templates/test/qunit.js +6 -0
@@ -1,59 +1,59 @@
1
- "use strict";
2
-
3
- sap.ui.define(["sap/ui/core/library", "sap/ui/core/mvc/Controller"], function (sap_ui_core_library, Controller) {
4
- "use strict";
5
-
6
- const ValueState = sap_ui_core_library["ValueState"];
7
- /**
8
- * @namespace open.ux.preview.client.adp.controllers
9
- */
10
- const BaseDialog = Controller.extend("open.ux.preview.client.adp.controllers.BaseDialog", {
11
- onFragmentNameInputChange: function _onFragmentNameInputChange(event) {
12
- const input = event.getSource();
13
- const beginBtn = this.dialog.getBeginButton();
14
- const fragmentName = input.getValue();
15
- const fragmentList = this.model.getProperty('/fragmentList');
16
- const updateDialogState = function (valueState) {
17
- let valueStateText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
18
- input.setValueState(valueState).setValueStateText(valueStateText);
19
- beginBtn.setEnabled(valueState === ValueState.Success);
20
- };
21
- if (fragmentName.length <= 0) {
22
- updateDialogState(ValueState.None);
23
- this.model.setProperty('/newFragmentName', null);
24
- return;
25
- }
26
- const fileExists = fragmentList.some(f => f.fragmentName === `${fragmentName}.fragment.xml`);
27
- if (fileExists) {
28
- updateDialogState(ValueState.Error, 'Enter a different name. The fragment name that you entered already exists in your project.');
29
- return;
30
- }
31
- const isValidName = /^[a-zA-Z_][a-zA-Z0-9_-]*$/.test(fragmentName);
32
- if (!isValidName) {
33
- updateDialogState(ValueState.Error, 'The fragment name cannot contain white spaces or special characters.');
34
- return;
35
- }
36
- if (fragmentName.length > 64) {
37
- updateDialogState(ValueState.Error, 'A fragment file name cannot contain more than 64 characters.');
38
- return;
39
- }
40
- updateDialogState(ValueState.Success);
41
- this.model.setProperty('/newFragmentName', fragmentName);
42
- },
43
- setEscapeHandler: function _setEscapeHandler() {
44
- this.dialog.setEscapeHandler(_ref => {
45
- let {
46
- resolve
47
- } = _ref;
48
- this.handleDialogClose();
49
- resolve();
50
- });
51
- },
52
- handleDialogClose: function _handleDialogClose() {
53
- this.dialog.close();
54
- this.dialog.destroy();
55
- }
56
- });
57
- return BaseDialog;
1
+ "use strict";
2
+
3
+ sap.ui.define(["sap/ui/core/library", "sap/ui/core/mvc/Controller"], function (sap_ui_core_library, Controller) {
4
+ "use strict";
5
+
6
+ const ValueState = sap_ui_core_library["ValueState"];
7
+ /**
8
+ * @namespace open.ux.preview.client.adp.controllers
9
+ */
10
+ const BaseDialog = Controller.extend("open.ux.preview.client.adp.controllers.BaseDialog", {
11
+ onFragmentNameInputChange: function _onFragmentNameInputChange(event) {
12
+ const input = event.getSource();
13
+ const beginBtn = this.dialog.getBeginButton();
14
+ const fragmentName = input.getValue();
15
+ const fragmentList = this.model.getProperty('/fragmentList');
16
+ const updateDialogState = function (valueState) {
17
+ let valueStateText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
18
+ input.setValueState(valueState).setValueStateText(valueStateText);
19
+ beginBtn.setEnabled(valueState === ValueState.Success);
20
+ };
21
+ if (fragmentName.length <= 0) {
22
+ updateDialogState(ValueState.None);
23
+ this.model.setProperty('/newFragmentName', null);
24
+ return;
25
+ }
26
+ const fileExists = fragmentList.some(f => f.fragmentName === `${fragmentName}.fragment.xml`);
27
+ if (fileExists) {
28
+ updateDialogState(ValueState.Error, 'Enter a different name. The fragment name that you entered already exists in your project.');
29
+ return;
30
+ }
31
+ const isValidName = /^[a-zA-Z_][a-zA-Z0-9_-]*$/.test(fragmentName);
32
+ if (!isValidName) {
33
+ updateDialogState(ValueState.Error, 'The fragment name cannot contain white spaces or special characters.');
34
+ return;
35
+ }
36
+ if (fragmentName.length > 64) {
37
+ updateDialogState(ValueState.Error, 'A fragment file name cannot contain more than 64 characters.');
38
+ return;
39
+ }
40
+ updateDialogState(ValueState.Success);
41
+ this.model.setProperty('/newFragmentName', fragmentName);
42
+ },
43
+ setEscapeHandler: function _setEscapeHandler() {
44
+ this.dialog.setEscapeHandler(_ref => {
45
+ let {
46
+ resolve
47
+ } = _ref;
48
+ this.handleDialogClose();
49
+ resolve();
50
+ });
51
+ },
52
+ handleDialogClose: function _handleDialogClose() {
53
+ this.dialog.close();
54
+ this.dialog.destroy();
55
+ }
56
+ });
57
+ return BaseDialog;
58
58
  });
59
59
  //# sourceMappingURL=BaseDialog.controller.js.map
@@ -1,176 +1,176 @@
1
- "use strict";
2
-
3
- sap.ui.define(["sap/m/MessageToast", "sap/ui/core/library", "sap/ui/model/json/JSONModel", "sap/ui/fl/Utils", "../api-handler", "./BaseDialog.controller"], function (MessageToast, sap_ui_core_library, JSONModel, Utils, ___api_handler, __BaseDialog) {
4
- "use strict";
5
-
6
- function _interopRequireDefault(obj) {
7
- return obj && obj.__esModule && typeof obj.default !== "undefined" ? obj.default : obj;
8
- }
9
- /** sap.ui.core */
10
- const ValueState = sap_ui_core_library["ValueState"];
11
- /** sap.ui.base */
12
- const getExistingController = ___api_handler["getExistingController"];
13
- const getManifestAppdescr = ___api_handler["getManifestAppdescr"];
14
- const readControllers = ___api_handler["readControllers"];
15
- const writeChange = ___api_handler["writeChange"];
16
- const writeController = ___api_handler["writeController"];
17
- const BaseDialog = _interopRequireDefault(__BaseDialog);
18
- /**
19
- * @namespace open.ux.preview.client.adp.controllers
20
- */
21
- const ControllerExtension = BaseDialog.extend("open.ux.preview.client.adp.controllers.ControllerExtension", {
22
- constructor: function _constructor(name, overlays, rta) {
23
- BaseDialog.prototype.constructor.call(this, name);
24
- this.rta = rta;
25
- this.overlays = overlays;
26
- this.model = new JSONModel();
27
- },
28
- setup: async function _setup(dialog) {
29
- this.dialog = dialog;
30
- this.setEscapeHandler();
31
- await this.buildDialogData();
32
- this.dialog.setModel(this.model);
33
- this.dialog.open();
34
- },
35
- onControllerNameInputChange: function _onControllerNameInputChange(event) {
36
- const input = event.getSource();
37
- const beginBtn = this.dialog.getBeginButton();
38
- const controllerName = input.getValue();
39
- const controllerList = this.model.getProperty('/controllersList');
40
- const updateDialogState = function (valueState) {
41
- let valueStateText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
42
- input.setValueState(valueState).setValueStateText(valueStateText);
43
- beginBtn.setEnabled(valueState === ValueState.Success);
44
- };
45
- if (controllerName.length <= 0) {
46
- updateDialogState(ValueState.None);
47
- this.model.setProperty('/newControllerName', null);
48
- return;
49
- }
50
- const fileExists = controllerList.some(f => f.controllerName === `${controllerName}.js`);
51
- if (fileExists) {
52
- updateDialogState(ValueState.Error, 'Enter a different name. The controller name that you entered already exists in your project.');
53
- return;
54
- }
55
- const isValidName = /^[a-zA-Z_][a-zA-Z0-9_-]*$/.test(controllerName);
56
- if (!isValidName) {
57
- updateDialogState(ValueState.Error, 'The controller name cannot contain white spaces or special characters.');
58
- return;
59
- }
60
- if (controllerName.length > 64) {
61
- updateDialogState(ValueState.Error, 'A controller file name cannot contain more than 64 characters.');
62
- return;
63
- }
64
- updateDialogState(ValueState.Success);
65
- this.model.setProperty('/newControllerName', controllerName);
66
- },
67
- onCreateBtnPress: async function _onCreateBtnPress(event) {
68
- const source = event.getSource();
69
- const controllerExists = this.model.getProperty('/controllerExists');
70
- if (!controllerExists) {
71
- source.setEnabled(false);
72
- const controllerName = this.model.getProperty('/newControllerName');
73
- const viewId = this.model.getProperty('/viewId');
74
- await this.createNewController(controllerName, viewId);
75
- } else {
76
- const controllerPath = this.model.getProperty('/controllerPath');
77
- window.open(`vscode://file${controllerPath}`);
78
- }
79
- this.handleDialogClose();
80
- },
81
- buildDialogData: async function _buildDialogData() {
82
- const selectorId = this.overlays.getId();
83
- const overlayControl = sap.ui.getCore().byId(selectorId);
84
- const {
85
- controllerName,
86
- viewId
87
- } = this.getControllerInfo(overlayControl);
88
- const {
89
- controllerExists,
90
- controllerPath,
91
- controllerPathFromRoot
92
- } = await this.getExistingController(controllerName);
93
- if (controllerExists) {
94
- this.updateModelForExistingController(controllerExists, controllerPath, controllerPathFromRoot);
95
- } else {
96
- this.updateModelForNewController(viewId);
97
- await this.getControllers();
98
- }
99
- },
100
- getControllerInfo: function _getControllerInfo(overlayControl) {
101
- const control = overlayControl.getElement();
102
- const view = Utils.getViewForControl(control);
103
- const controllerName = view.getController().getMetadata().getName();
104
- const viewId = view.getId();
105
- return {
106
- controllerName,
107
- viewId
108
- };
109
- },
110
- updateModelForExistingController: function _updateModelForExistingController(controllerExists, controllerPath, controllerPathFromRoot) {
111
- this.model.setProperty('/controllerExists', controllerExists);
112
- this.model.setProperty('/controllerPath', controllerPath);
113
- this.model.setProperty('/controllerPathFromRoot', controllerPathFromRoot);
114
- const content = this.dialog.getContent();
115
- const form = content[0];
116
- form.setVisible(false);
117
- const messageForm = content[1];
118
- messageForm.setVisible(true);
119
- this.dialog.getBeginButton().setText('Open in VS Code').setEnabled(true);
120
- this.dialog.getEndButton().setText('Close');
121
- },
122
- updateModelForNewController: function _updateModelForNewController(viewId) {
123
- this.model.setProperty('/viewId', viewId);
124
- },
125
- getExistingController: async function _getExistingController(controllerName) {
126
- try {
127
- const data = await getExistingController(controllerName);
128
- return data;
129
- } catch (e) {
130
- MessageToast.show(e.message, {
131
- duration: 5000
132
- });
133
- throw new Error(e.message);
134
- }
135
- },
136
- getControllers: async function _getControllers() {
137
- try {
138
- const {
139
- controllers
140
- } = await readControllers();
141
- this.model.setProperty('/controllersList', controllers);
142
- } catch (e) {
143
- MessageToast.show(e.message, {
144
- duration: 5000
145
- });
146
- throw new Error(e.message);
147
- }
148
- },
149
- createNewController: async function _createNewController(controllerName, viewId) {
150
- try {
151
- const manifest = await getManifestAppdescr();
152
- await writeController({
153
- controllerName,
154
- projectId: manifest.id
155
- });
156
- const controllerRef = {
157
- codeRef: `coding/${controllerName}.js`,
158
- viewId
159
- };
160
- const service = await this.rta.getService('controllerExtension');
161
- const change = await service.add(controllerRef.codeRef, controllerRef.viewId);
162
- change.creation = new Date().toISOString();
163
- await writeChange(change);
164
- MessageToast.show(`Controller extension with name '${controllerName}' was created.`);
165
- } catch (e) {
166
- // We want to update the model incase we have already created a controller file but failed when creating a change file,
167
- // so when the user types the same controller name again he does not get 409 from the server, instead an error is shown in the UI
168
- await this.getControllers();
169
- MessageToast.show(e.message);
170
- throw new Error(e.message);
171
- }
172
- }
173
- });
174
- return ControllerExtension;
1
+ "use strict";
2
+
3
+ sap.ui.define(["sap/m/MessageToast", "sap/ui/core/library", "sap/ui/model/json/JSONModel", "sap/ui/fl/Utils", "../api-handler", "./BaseDialog.controller"], function (MessageToast, sap_ui_core_library, JSONModel, Utils, ___api_handler, __BaseDialog) {
4
+ "use strict";
5
+
6
+ function _interopRequireDefault(obj) {
7
+ return obj && obj.__esModule && typeof obj.default !== "undefined" ? obj.default : obj;
8
+ }
9
+ /** sap.ui.core */
10
+ const ValueState = sap_ui_core_library["ValueState"];
11
+ /** sap.ui.base */
12
+ const getExistingController = ___api_handler["getExistingController"];
13
+ const getManifestAppdescr = ___api_handler["getManifestAppdescr"];
14
+ const readControllers = ___api_handler["readControllers"];
15
+ const writeChange = ___api_handler["writeChange"];
16
+ const writeController = ___api_handler["writeController"];
17
+ const BaseDialog = _interopRequireDefault(__BaseDialog);
18
+ /**
19
+ * @namespace open.ux.preview.client.adp.controllers
20
+ */
21
+ const ControllerExtension = BaseDialog.extend("open.ux.preview.client.adp.controllers.ControllerExtension", {
22
+ constructor: function _constructor(name, overlays, rta) {
23
+ BaseDialog.prototype.constructor.call(this, name);
24
+ this.rta = rta;
25
+ this.overlays = overlays;
26
+ this.model = new JSONModel();
27
+ },
28
+ setup: async function _setup(dialog) {
29
+ this.dialog = dialog;
30
+ this.setEscapeHandler();
31
+ await this.buildDialogData();
32
+ this.dialog.setModel(this.model);
33
+ this.dialog.open();
34
+ },
35
+ onControllerNameInputChange: function _onControllerNameInputChange(event) {
36
+ const input = event.getSource();
37
+ const beginBtn = this.dialog.getBeginButton();
38
+ const controllerName = input.getValue();
39
+ const controllerList = this.model.getProperty('/controllersList');
40
+ const updateDialogState = function (valueState) {
41
+ let valueStateText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
42
+ input.setValueState(valueState).setValueStateText(valueStateText);
43
+ beginBtn.setEnabled(valueState === ValueState.Success);
44
+ };
45
+ if (controllerName.length <= 0) {
46
+ updateDialogState(ValueState.None);
47
+ this.model.setProperty('/newControllerName', null);
48
+ return;
49
+ }
50
+ const fileExists = controllerList.some(f => f.controllerName === `${controllerName}.js`);
51
+ if (fileExists) {
52
+ updateDialogState(ValueState.Error, 'Enter a different name. The controller name that you entered already exists in your project.');
53
+ return;
54
+ }
55
+ const isValidName = /^[a-zA-Z_][a-zA-Z0-9_-]*$/.test(controllerName);
56
+ if (!isValidName) {
57
+ updateDialogState(ValueState.Error, 'The controller name cannot contain white spaces or special characters.');
58
+ return;
59
+ }
60
+ if (controllerName.length > 64) {
61
+ updateDialogState(ValueState.Error, 'A controller file name cannot contain more than 64 characters.');
62
+ return;
63
+ }
64
+ updateDialogState(ValueState.Success);
65
+ this.model.setProperty('/newControllerName', controllerName);
66
+ },
67
+ onCreateBtnPress: async function _onCreateBtnPress(event) {
68
+ const source = event.getSource();
69
+ const controllerExists = this.model.getProperty('/controllerExists');
70
+ if (!controllerExists) {
71
+ source.setEnabled(false);
72
+ const controllerName = this.model.getProperty('/newControllerName');
73
+ const viewId = this.model.getProperty('/viewId');
74
+ await this.createNewController(controllerName, viewId);
75
+ } else {
76
+ const controllerPath = this.model.getProperty('/controllerPath');
77
+ window.open(`vscode://file${controllerPath}`);
78
+ }
79
+ this.handleDialogClose();
80
+ },
81
+ buildDialogData: async function _buildDialogData() {
82
+ const selectorId = this.overlays.getId();
83
+ const overlayControl = sap.ui.getCore().byId(selectorId);
84
+ const {
85
+ controllerName,
86
+ viewId
87
+ } = this.getControllerInfo(overlayControl);
88
+ const {
89
+ controllerExists,
90
+ controllerPath,
91
+ controllerPathFromRoot
92
+ } = await this.getExistingController(controllerName);
93
+ if (controllerExists) {
94
+ this.updateModelForExistingController(controllerExists, controllerPath, controllerPathFromRoot);
95
+ } else {
96
+ this.updateModelForNewController(viewId);
97
+ await this.getControllers();
98
+ }
99
+ },
100
+ getControllerInfo: function _getControllerInfo(overlayControl) {
101
+ const control = overlayControl.getElement();
102
+ const view = Utils.getViewForControl(control);
103
+ const controllerName = view.getController().getMetadata().getName();
104
+ const viewId = view.getId();
105
+ return {
106
+ controllerName,
107
+ viewId
108
+ };
109
+ },
110
+ updateModelForExistingController: function _updateModelForExistingController(controllerExists, controllerPath, controllerPathFromRoot) {
111
+ this.model.setProperty('/controllerExists', controllerExists);
112
+ this.model.setProperty('/controllerPath', controllerPath);
113
+ this.model.setProperty('/controllerPathFromRoot', controllerPathFromRoot);
114
+ const content = this.dialog.getContent();
115
+ const form = content[0];
116
+ form.setVisible(false);
117
+ const messageForm = content[1];
118
+ messageForm.setVisible(true);
119
+ this.dialog.getBeginButton().setText('Open in VS Code').setEnabled(true);
120
+ this.dialog.getEndButton().setText('Close');
121
+ },
122
+ updateModelForNewController: function _updateModelForNewController(viewId) {
123
+ this.model.setProperty('/viewId', viewId);
124
+ },
125
+ getExistingController: async function _getExistingController(controllerName) {
126
+ try {
127
+ const data = await getExistingController(controllerName);
128
+ return data;
129
+ } catch (e) {
130
+ MessageToast.show(e.message, {
131
+ duration: 5000
132
+ });
133
+ throw new Error(e.message);
134
+ }
135
+ },
136
+ getControllers: async function _getControllers() {
137
+ try {
138
+ const {
139
+ controllers
140
+ } = await readControllers();
141
+ this.model.setProperty('/controllersList', controllers);
142
+ } catch (e) {
143
+ MessageToast.show(e.message, {
144
+ duration: 5000
145
+ });
146
+ throw new Error(e.message);
147
+ }
148
+ },
149
+ createNewController: async function _createNewController(controllerName, viewId) {
150
+ try {
151
+ const manifest = await getManifestAppdescr();
152
+ await writeController({
153
+ controllerName,
154
+ projectId: manifest.id
155
+ });
156
+ const controllerRef = {
157
+ codeRef: `coding/${controllerName}.js`,
158
+ viewId
159
+ };
160
+ const service = await this.rta.getService('controllerExtension');
161
+ const change = await service.add(controllerRef.codeRef, controllerRef.viewId);
162
+ change.creation = new Date().toISOString();
163
+ await writeChange(change);
164
+ MessageToast.show(`Controller extension with name '${controllerName}' was created.`);
165
+ } catch (e) {
166
+ // We want to update the model incase we have already created a controller file but failed when creating a change file,
167
+ // so when the user types the same controller name again he does not get 409 from the server, instead an error is shown in the UI
168
+ await this.getControllers();
169
+ MessageToast.show(e.message);
170
+ throw new Error(e.message);
171
+ }
172
+ }
173
+ });
174
+ return ControllerExtension;
175
175
  });
176
176
  //# sourceMappingURL=ControllerExtension.controller.js.map