babel-plugin-transform-modules-ui5 7.2.5 → 7.3.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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,33 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [7.3.0](https://github.com/ui5-community/babel-plugin-transform-modules-ui5/compare/v7.2.6...v7.3.0) (2024-01-18)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * sanitize variable names for re-exports ([#122](https://github.com/ui5-community/babel-plugin-transform-modules-ui5/issues/122)) ([f475dbc](https://github.com/ui5-community/babel-plugin-transform-modules-ui5/commit/f475dbcb4f8b767a5680a974903e7f97df8dacc7))
12
+
13
+
14
+ ### Features
15
+
16
+ * support using predefined controller extensions ([#120](https://github.com/ui5-community/babel-plugin-transform-modules-ui5/issues/120)) ([d7cb66c](https://github.com/ui5-community/babel-plugin-transform-modules-ui5/commit/d7cb66cd5af422529bb00658669e595af2477615))
17
+
18
+
19
+
20
+
21
+
22
+ ## [7.2.6](https://github.com/ui5-community/babel-plugin-transform-modules-ui5/compare/v7.2.5...v7.2.6) (2023-11-23)
23
+
24
+
25
+ ### Bug Fixes
26
+
27
+ * preserve comments for class members ([#117](https://github.com/ui5-community/babel-plugin-transform-modules-ui5/issues/117)) ([b5329cb](https://github.com/ui5-community/babel-plugin-transform-modules-ui5/commit/b5329cb80ea0cade6b85fd1d802befa0bc36fe52))
28
+
29
+
30
+
31
+
32
+
6
33
  ## [7.2.5](https://github.com/ui5-community/babel-plugin-transform-modules-ui5/compare/v7.2.4...v7.2.5) (2023-08-28)
7
34
 
8
35
 
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.convertClassToUI5Extend = convertClassToUI5Extend;
7
7
  exports.getClassInfo = getClassInfo;
8
+ exports.getTypeName = void 0;
8
9
  var _core = require("@babel/core");
9
10
  var _path = _interopRequireDefault(require("path"));
10
11
  var _objectAssignDefined = _interopRequireDefault(require("object-assign-defined"));
@@ -12,11 +13,12 @@ var th = _interopRequireWildcard(require("../../utils/templates"));
12
13
  var ast = _interopRequireWildcard(require("../../utils/ast"));
13
14
  var _jsdoc = require("./jsdoc");
14
15
  var _decorators = require("./decorators");
15
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
16
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
16
+ var _imports = require("./imports");
17
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
18
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
17
19
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
19
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
20
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
21
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
20
22
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
21
23
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
22
24
  function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
@@ -25,10 +27,11 @@ function _toPrimitive(input, hint) { if (typeof input !== "object" || input ===
25
27
  * Any static methods or properties will be moved outside the class body.
26
28
  * The path will be updated with the new AST.
27
29
  */
28
- function convertClassToUI5Extend(path, node, classInfo, extraStaticProps, opts) {
30
+ function convertClassToUI5Extend(path, node, classInfo, extraStaticProps, importDeclarationPaths, opts) {
29
31
  if (!(_core.types.isClassDeclaration(node) || _core.types.isClassExpression(node))) {
30
32
  return node;
31
33
  }
34
+ const CONTROLLER_EXTENSION_TAG = "transformControllerExtension";
32
35
  const staticMembers = [];
33
36
  const classNameIdentifier = node.id;
34
37
  const className = classNameIdentifier.name;
@@ -51,7 +54,8 @@ function convertClassToUI5Extend(path, node, classInfo, extraStaticProps, opts)
51
54
  extendProps.push(_core.types.objectProperty(_core.types.identifier(propName), extraStaticProps[propName]));
52
55
  }
53
56
  }
54
- for (const member of node.body.body) {
57
+ for (const memberPath of path.get("body.body")) {
58
+ const member = memberPath.node;
55
59
  const memberName = member.key.name;
56
60
  if (_core.types.isClassMethod(member)) {
57
61
  var _member$params;
@@ -104,7 +108,47 @@ function convertClassToUI5Extend(path, node, classInfo, extraStaticProps, opts)
104
108
  }
105
109
  }
106
110
  } else if (_core.types.isClassProperty(member)) {
107
- if (!member.value) continue; // un-initialized static class prop (typescript)
111
+ var _member$leadingCommen, _member$decorators;
112
+ // For class properties annotated to represent controller extensions, replace the pure declaration with an assignment (that's what the runtime expects)
113
+ // and keep them at the initialization object as properties (don't move into constructor).
114
+ if ((_member$leadingCommen = member.leadingComments) !== null && _member$leadingCommen !== void 0 && _member$leadingCommen.some(comment => {
115
+ return comment.value.includes("@" + CONTROLLER_EXTENSION_TAG);
116
+ }) || (_member$decorators = member.decorators) !== null && _member$decorators !== void 0 && _member$decorators.some(decorator => {
117
+ var _decorator$expression;
118
+ return ((_decorator$expression = decorator.expression) === null || _decorator$expression === void 0 ? void 0 : _decorator$expression.name) === CONTROLLER_EXTENSION_TAG;
119
+ })) {
120
+ var _member$typeAnnotatio;
121
+ const typeAnnotation = (_member$typeAnnotatio = member.typeAnnotation) === null || _member$typeAnnotatio === void 0 ? void 0 : _member$typeAnnotatio.typeAnnotation;
122
+ // double-check that it is a valid node for a controller extension
123
+ if (_core.types.isTSTypeReference(typeAnnotation) || _core.types.isTSQualifiedName(typeAnnotation)) {
124
+ const typeName = getTypeName(typeAnnotation);
125
+
126
+ // 1. transform the property from being typed as instance and un-initialized to a property where the controller extension *class* is assigned as value
127
+ const valueIdentifier = _core.types.identifier(typeName);
128
+ member.value = valueIdentifier;
129
+ member.typeAnnotation = null;
130
+ extendProps.unshift(buildObjectProperty(member)); // add it to the properties of the extend() config object
131
+
132
+ // 2. add a binding reference to the value, so in case the TS transpiler runs later it recognizes that the import is still needed
133
+ const typeNameFirstPart = typeName.split(".")[0]; // e.g. when "myExtension: someBundle.MyExtension"
134
+ if (memberPath.scope.hasBinding(typeNameFirstPart)) {
135
+ const binding = path.scope.getBinding(typeNameFirstPart);
136
+ binding.referencePaths.push(memberPath.get("value"));
137
+ }
138
+
139
+ // 3. restore the import in case it was run already and removed the import
140
+ const neededImportDeclaration = (0, _imports.getImportDeclaration)(memberPath.hub.file.opts.filename, typeName);
141
+ if (!importDeclarationPaths.some(path => path.node === neededImportDeclaration)) {
142
+ // TODO: import might be there but with the specifier removed; we can clone, but then other specifiers are duplicate
143
+ // if import is no longer there, re-add it
144
+ importDeclarationPaths[importDeclarationPaths.length - 1].insertAfter(neededImportDeclaration);
145
+ }
146
+
147
+ // 4. prevent the member from also being added to the constructor (member does have a value now and initializer would be added below)
148
+ continue;
149
+ }
150
+ }
151
+ if (!member.value) continue; // remove all other un-initialized static class props (typescript)
108
152
 
109
153
  // Special handling for TypeScript limitation where metadata, renderer and overrides must be properties.
110
154
  if (["metadata", "renderer", "overrides"].includes(memberName)) {
@@ -238,6 +282,41 @@ function getFileBaseNamespace(path, pluginOpts) {
238
282
  return undefined;
239
283
  }
240
284
  }
241
- const buildObjectProperty = member => _core.types.objectProperty(member.key, member.value, member.computed);
242
- const buildMemberAssignmentStatement = (objectIdentifier, member) => _core.types.expressionStatement(_core.types.assignmentExpression("=", _core.types.memberExpression(objectIdentifier, member.key, member.computed), member.value));
285
+ const getQualifiedName = node => {
286
+ let {
287
+ left,
288
+ right
289
+ } = node;
290
+
291
+ // if left is TSQualifiedName, recursive call to get full namespace
292
+ if (_core.types.isTSQualifiedName(left)) {
293
+ left = getQualifiedName(left);
294
+ } else {
295
+ // if left is an Identifier
296
+ left = left.name;
297
+ }
298
+ return `${left}.${right.name}`;
299
+ };
300
+ const getTypeName = typeAnnotation => {
301
+ if (_core.types.isTSTypeReference(typeAnnotation)) {
302
+ // for TSTypeReference, typeName can be an Identifier or a TSQualifiedName
303
+ return typeAnnotation.typeName.name || getQualifiedName(typeAnnotation.typeName);
304
+ }
305
+ if (_core.types.isTSQualifiedName(typeAnnotation)) {
306
+ // for TSQualifiedName
307
+ return getQualifiedName(typeAnnotation);
308
+ }
309
+ return null;
310
+ };
311
+ exports.getTypeName = getTypeName;
312
+ const buildObjectProperty = member => {
313
+ const newObjectProperty = _core.types.objectProperty(member.key, member.value, member.computed);
314
+ newObjectProperty.leadingComments = member.leadingComments;
315
+ return newObjectProperty;
316
+ };
317
+ const buildMemberAssignmentStatement = (objectIdentifier, member) => {
318
+ const newMember = _core.types.expressionStatement(_core.types.assignmentExpression("=", _core.types.memberExpression(objectIdentifier, member.key, member.computed), member.value));
319
+ newMember.leadingComments = member.leadingComments;
320
+ return newMember;
321
+ };
243
322
  const buildThisMemberAssignmentStatement = buildMemberAssignmentStatement.bind(null, _core.types.thisExpression());
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getImportDeclaration = getImportDeclaration;
7
+ exports.saveImports = void 0;
8
+ var _core = require("@babel/core");
9
+ let importDeclarations = {};
10
+ const saveImports = file => {
11
+ // save all import declarations before "unneeded" ones are removed by the TypeScript plugin
12
+ importDeclarations[file.opts.filename] = file.ast.program.body.filter(_core.types.isImportDeclaration); // right now even the removed import still exists later and can be re-added. Otherwise do: .map(decl => t.cloneNode(decl));
13
+ };
14
+
15
+ // can be called from visitor to access previously present declarations
16
+ exports.saveImports = saveImports;
17
+ function getImportDeclaration(filename, typeName) {
18
+ const typeNameParts = typeName.split(".");
19
+
20
+ // find the declaration importing the typeName among the collected import declarations in this file
21
+ const filteredDeclarations = importDeclarations[filename].filter(importDeclaration => {
22
+ // each import declaration can import several entities, so let's check all of them
23
+ for (let specifier of importDeclaration.specifiers) {
24
+ if ((_core.types.isImportDefaultSpecifier(specifier) || _core.types.isImportNamespaceSpecifier(specifier)) && specifier.local.name === typeNameParts[0]) {
25
+ // if the import is default, then the typeName should only have one part (the import name)
26
+ return true;
27
+ } else if (_core.types.isImportSpecifier(specifier) && specifier.imported.name === typeNameParts[typeNameParts.length - 1]) {
28
+ // If the import is named, then the last part of the typeName should match the imported name
29
+ return true;
30
+ }
31
+ }
32
+ });
33
+ return filteredDeclarations[0]; // should be exactly one
34
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ClassPre = void 0;
7
+ var _imports = require("./helpers/imports");
8
+ const ClassPre = file => {
9
+ // save all import declarations before "unneeded" ones are removed by the TypeScript plugin
10
+ (0, _imports.saveImports)(file);
11
+ };
12
+ exports.ClassPre = ClassPre;
@@ -8,10 +8,13 @@ var _core = require("@babel/core");
8
8
  var th = _interopRequireWildcard(require("../utils/templates"));
9
9
  var ast = _interopRequireWildcard(require("../utils/ast"));
10
10
  var classes = _interopRequireWildcard(require("./helpers/classes"));
11
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
12
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
11
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
12
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
13
13
  const CONSTRUCTOR = "constructor";
14
- const ClassTransformVisitor = {
14
+ const ClassTransformVisitor = exports.ClassTransformVisitor = {
15
+ ImportDeclaration(path) {
16
+ this.importDeclarationPaths.push(path);
17
+ },
15
18
  ImportDefaultSpecifier(path) {
16
19
  this.importNames.push(path.node.local.name);
17
20
  },
@@ -82,7 +85,7 @@ const ClassTransformVisitor = {
82
85
  const staticProps = ast.groupPropertiesByName(ast.getOtherPropertiesOfIdentifier(blockParent, className));
83
86
 
84
87
  // TODO: flag metadata and renderer for removal if applicable
85
- const ui5ExtendClass = classes.convertClassToUI5Extend(path, node, classInfo, staticProps, opts);
88
+ const ui5ExtendClass = classes.convertClassToUI5Extend(path, node, classInfo, staticProps, this.importDeclarationPaths, opts);
86
89
  if (path.isClassDeclaration()) {
87
90
  if (_core.types.isExportDefaultDeclaration(parent)) {
88
91
  path.parentPath.replaceWithMultiple([...ui5ExtendClass, th.buildExportDefault({
@@ -145,7 +148,6 @@ const ClassTransformVisitor = {
145
148
  }
146
149
  }
147
150
  };
148
- exports.ClassTransformVisitor = ClassTransformVisitor;
149
151
  function isSuperApply(callee) {
150
152
  return _core.types.isIdentifier(callee.property, {
151
153
  name: "apply"
package/dist/index.js CHANGED
@@ -1,10 +1,11 @@
1
1
  "use strict";
2
2
 
3
3
  var _visitor = require("./classes/visitor");
4
+ var _pre = require("./classes/pre");
4
5
  var _visitor2 = require("./modules/visitor");
5
6
  var _wrapper = require("./modules/helpers/wrapper");
6
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
7
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
7
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
8
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
8
9
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
9
10
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
10
11
  function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
@@ -50,6 +51,7 @@ module.exports = () => {
50
51
 
51
52
  // Properties for Class Transform
52
53
  this.importNames = [];
54
+ this.importDeclarationPaths = [];
53
55
 
54
56
  // The classes must be converted right away before any other class transforms get a chance to run.
55
57
  path.traverse(_visitor.ClassTransformVisitor, this);
@@ -62,6 +64,7 @@ module.exports = () => {
62
64
  }
63
65
  }, _visitor2.ModuleTransformVisitor);
64
66
  return {
67
+ pre: _pre.ClassPre,
65
68
  visitor: UI5Visitor
66
69
  };
67
70
  };
@@ -8,8 +8,8 @@ exports.getDefaultExportName = getDefaultExportName;
8
8
  var _core = require("@babel/core");
9
9
  var th = _interopRequireWildcard(require("../../utils/templates"));
10
10
  var ast = _interopRequireWildcard(require("../../utils/ast"));
11
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
12
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
11
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
12
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
13
13
  /**
14
14
  * Collapse named exports onto the default export so that the default export can be returned directly,
15
15
  * so that exports can be easily used by code that does not include an import interop.
@@ -8,8 +8,8 @@ var _core = require("@babel/core");
8
8
  var eh = _interopRequireWildcard(require("./exports"));
9
9
  var th = _interopRequireWildcard(require("../../utils/templates"));
10
10
  var ast = _interopRequireWildcard(require("../../utils/ast"));
11
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
12
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
11
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
12
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
13
13
  function wrap(visitor, programNode, opts) {
14
14
  var _body;
15
15
  let {
@@ -9,17 +9,17 @@ var th = _interopRequireWildcard(require("../utils/templates"));
9
9
  var ast = _interopRequireWildcard(require("../utils/ast"));
10
10
  var _jsdoc = require("../classes/helpers/jsdoc");
11
11
  const _excluded = ["opts"];
12
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
14
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
15
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
12
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
13
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
14
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
15
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
16
16
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
17
17
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
18
18
  function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
19
19
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
20
20
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
21
- const tempModuleName = name => `__${name}`;
22
21
  const cleanImportSource = src => src.replace(/(\/)|(-)|(@)/g, "_").replace(/\./g, "");
22
+ const tempModuleName = name => `__${name}`;
23
23
  const hasGlobalExportFlag = node => (0, _jsdoc.hasJsdocGlobalExportFlag)(node);
24
24
  const addModuleImport = (imports, name) => {
25
25
  const existingImport = imports.find(imp => imp.src === name);
@@ -31,7 +31,7 @@ const addModuleImport = (imports, name) => {
31
31
  });
32
32
  }
33
33
  };
34
- const ModuleTransformVisitor = {
34
+ const ModuleTransformVisitor = exports.ModuleTransformVisitor = {
35
35
  /*!
36
36
  * Removes the ES6 import and adds the details to the import array in our state.
37
37
  */
@@ -269,7 +269,7 @@ const ModuleTransformVisitor = {
269
269
  },
270
270
  ExportAllDeclaration(path) {
271
271
  const src = path.node.source.value;
272
- const name = src.replace(/\//g, "_").replace(/\./g, "");
272
+ const name = cleanImportSource(src);
273
273
  const tmpName = tempModuleName(name);
274
274
  this.imports.push({
275
275
  src,
@@ -319,5 +319,4 @@ const ModuleTransformVisitor = {
319
319
  }
320
320
  }
321
321
  }
322
- };
323
- exports.ModuleTransformVisitor = ModuleTransformVisitor;
322
+ };
@@ -8,46 +8,38 @@ exports.buildNamedExport = buildNamedExport;
8
8
  exports.exportsIdentifier = exports.buildTempExport = exports.buildReturnExports = exports.buildReturn = exports.buildNamedImportDestructor = void 0;
9
9
  var _core = require("@babel/core");
10
10
  const exportName = "__exports";
11
- const exportsIdentifier = _core.types.identifier(exportName);
12
- exports.exportsIdentifier = exportsIdentifier;
13
- const buildAssign = (0, _core.template)(`
11
+ const exportsIdentifier = exports.exportsIdentifier = _core.types.identifier(exportName);
12
+ const buildAssign = exports.buildAssign = (0, _core.template)(`
14
13
  OBJECT.NAME = VALUE;
15
14
  `);
16
- exports.buildAssign = buildAssign;
17
- const buildDefine = (0, _core.template)(`
15
+ const buildDefine = exports.buildDefine = (0, _core.template)(`
18
16
  sap.ui.define(SOURCES, function (PARAMS) {
19
17
  BODY;
20
18
  });
21
19
  `);
22
- exports.buildDefine = buildDefine;
23
- const buildDefineGlobal = (0, _core.template)(`
20
+ const buildDefineGlobal = exports.buildDefineGlobal = (0, _core.template)(`
24
21
  sap.ui.define(SOURCES, function (PARAMS) {
25
22
  BODY;
26
23
  }, true);
27
24
  `);
28
25
 
29
26
  // Uses 'var' since it gets added during wrap
30
- exports.buildDefineGlobal = buildDefineGlobal;
31
- const buildDeclareExports = (0, _core.template)(`
27
+ const buildDeclareExports = exports.buildDeclareExports = (0, _core.template)(`
32
28
  var ${exportName} = {
33
29
  __esModule: true
34
30
  };
35
31
  `);
36
32
 
37
33
  // Uses 'var' since it gets added during wrap
38
- exports.buildDeclareExports = buildDeclareExports;
39
- const buildTempExport = (0, _core.template)(`
34
+ const buildTempExport = exports.buildTempExport = (0, _core.template)(`
40
35
  var ${exportName} = VALUE;
41
36
  `);
42
- exports.buildTempExport = buildTempExport;
43
- const buildExportDefault = (0, _core.template)(`
37
+ const buildExportDefault = exports.buildExportDefault = (0, _core.template)(`
44
38
  export default VALUE;
45
39
  `);
46
- exports.buildExportDefault = buildExportDefault;
47
- const buildReturnExports = (0, _core.template)(`
40
+ const buildReturnExports = exports.buildReturnExports = (0, _core.template)(`
48
41
  return ${exportName};
49
42
  `);
50
- exports.buildReturnExports = buildReturnExports;
51
43
  function buildNamedExport(obj) {
52
44
  return buildAssign({
53
45
  OBJECT: exportsIdentifier,
@@ -55,7 +47,7 @@ function buildNamedExport(obj) {
55
47
  VALUE: obj.value
56
48
  });
57
49
  }
58
- const buildAllExportHelper = (0, _core.template)(`
50
+ const buildAllExportHelper = exports.buildAllExportHelper = (0, _core.template)(`
59
51
  function extendExports(exports, obj) {
60
52
  Object.keys(obj).forEach(function (key) {
61
53
  if (key === "default" || key === "__esModule") return;
@@ -68,20 +60,16 @@ const buildAllExportHelper = (0, _core.template)(`
68
60
  });
69
61
  }
70
62
  `);
71
- exports.buildAllExportHelper = buildAllExportHelper;
72
- const buildAllExport = (0, _core.template)(`
63
+ const buildAllExport = exports.buildAllExport = (0, _core.template)(`
73
64
  extendExports(${exportName}, LOCAL);
74
65
  `);
75
- exports.buildAllExport = buildAllExport;
76
- const buildReturn = (0, _core.template)(`
66
+ const buildReturn = exports.buildReturn = (0, _core.template)(`
77
67
  return ID;
78
68
  `);
79
- exports.buildReturn = buildReturn;
80
- const buildDefaultImportInterop = (0, _core.template)(`
69
+ const buildDefaultImportInterop = exports.buildDefaultImportInterop = (0, _core.template)(`
81
70
  function _interopRequireDefault(obj) { return (obj && obj.__esModule && typeof obj.default !== "undefined") ? obj.default : obj; }
82
71
  `);
83
- exports.buildDefaultImportInterop = buildDefaultImportInterop;
84
- const buildDefaultImportDeconstructor = (0, _core.template)(`
72
+ const buildDefaultImportDeconstructor = exports.buildDefaultImportDeconstructor = (0, _core.template)(`
85
73
  const LOCAL = _interopRequireDefault(MODULE);
86
74
  `);
87
75
 
@@ -152,8 +140,7 @@ const buildDefaultImportDeconstructor = (0, _core.template)(`
152
140
  * and must not be processed in our dynamic import to require handler.
153
141
  */
154
142
  // TODO: inject __extends instead of Object.assign unless useBuiltIns in set
155
- exports.buildDefaultImportDeconstructor = buildDefaultImportDeconstructor;
156
- const buildDynamicImportHelper = (0, _core.template)(`
143
+ const buildDynamicImportHelper = exports.buildDynamicImportHelper = (0, _core.template)(`
157
144
  function __ui5_require_async(path) {
158
145
  return new Promise(function(resolve, reject) {
159
146
  sap.ui.require([path], function(module) {
@@ -168,22 +155,18 @@ const buildDynamicImportHelper = (0, _core.template)(`
168
155
  });
169
156
  }
170
157
  `);
171
- exports.buildDynamicImportHelper = buildDynamicImportHelper;
172
- const buildConstDeclaration = (0, _core.template)(`
158
+ const buildConstDeclaration = exports.buildConstDeclaration = (0, _core.template)(`
173
159
  const NAME = VALUE;
174
160
  `);
175
- exports.buildConstDeclaration = buildConstDeclaration;
176
- const buildNamedImportDestructor = (0, _core.template)(`
161
+ const buildNamedImportDestructor = exports.buildNamedImportDestructor = (0, _core.template)(`
177
162
  const LOCAL = MODULE[IMPORTED];
178
163
  `);
179
- exports.buildNamedImportDestructor = buildNamedImportDestructor;
180
- const buildExtendAssign = (0, _core.template)(`
164
+ const buildExtendAssign = exports.buildExtendAssign = (0, _core.template)(`
181
165
  const NAME = SUPER.extend(FQN, OBJECT);
182
166
  `);
183
167
 
184
168
  // This is use when there is not already the function, so always propagate arguments.
185
- exports.buildExtendAssign = buildExtendAssign;
186
- const buildInheritingFunction = (0, _core.template)(`
169
+ const buildInheritingFunction = exports.buildInheritingFunction = (0, _core.template)(`
187
170
  function NAME() {
188
171
  if (typeof SUPER.prototype.NAME === 'function') {
189
172
  SUPER.prototype.NAME.apply(this, arguments);
@@ -192,10 +175,8 @@ const buildInheritingFunction = (0, _core.template)(`
192
175
  `);
193
176
 
194
177
  // This is use when there is not already the function, so always propagate arguments.
195
- exports.buildInheritingFunction = buildInheritingFunction;
196
- const buildInheritingConstructor = (0, _core.template)(`
178
+ const buildInheritingConstructor = exports.buildInheritingConstructor = (0, _core.template)(`
197
179
  function constructor() {
198
180
  SUPER.prototype.constructor.apply(this, arguments);
199
181
  }
200
- `);
201
- exports.buildInheritingConstructor = buildInheritingConstructor;
182
+ `);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "babel-plugin-transform-modules-ui5",
3
- "version": "7.2.5",
3
+ "version": "7.3.0",
4
4
  "description": "An unofficial babel plugin for SAP UI5.",
5
5
  "main": "dist/index.js",
6
6
  "repository": {
@@ -63,36 +63,36 @@
63
63
  "object-assign-defined": "^1.0.2"
64
64
  },
65
65
  "devDependencies": {
66
- "@babel/cli": "^7.22.9",
67
- "@babel/core": "^7.22.9",
68
- "@babel/eslint-parser": "^7.22.9",
69
- "@babel/plugin-proposal-decorators": "^7.22.7",
66
+ "@babel/cli": "^7.23.4",
67
+ "@babel/core": "^7.23.3",
68
+ "@babel/eslint-parser": "^7.23.3",
69
+ "@babel/plugin-proposal-decorators": "^7.23.3",
70
70
  "@babel/plugin-proposal-object-rest-spread": "^7.20.7",
71
71
  "@babel/plugin-syntax-class-properties": "^7.12.13",
72
- "@babel/plugin-syntax-decorators": "^7.22.5",
72
+ "@babel/plugin-syntax-decorators": "^7.23.3",
73
73
  "@babel/plugin-syntax-dynamic-import": "^7.8.3",
74
74
  "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
75
- "@babel/plugin-transform-property-mutators": "^7.22.5",
76
- "@babel/plugin-transform-typescript": "^7.22.9",
77
- "@babel/preset-env": "^7.22.9",
78
- "@babel/preset-flow": "^7.22.5",
79
- "@babel/preset-typescript": "^7.22.5",
75
+ "@babel/plugin-transform-property-mutators": "^7.23.3",
76
+ "@babel/plugin-transform-typescript": "^7.23.4",
77
+ "@babel/preset-env": "^7.23.3",
78
+ "@babel/preset-flow": "^7.23.3",
79
+ "@babel/preset-typescript": "^7.23.3",
80
80
  "babel-eslint": "^10.0.3",
81
- "babel-jest": "^29.6.1",
82
- "core-js": "^3.31.1",
83
- "eslint": "^8.45.0",
81
+ "babel-jest": "^29.7.0",
82
+ "core-js": "^3.33.3",
83
+ "eslint": "^8.54.0",
84
84
  "eslint-config-standard": "^17.1.0",
85
- "eslint-plugin-import": "^2.27.5",
85
+ "eslint-plugin-import": "^2.29.0",
86
86
  "eslint-plugin-node": "^11.1.0",
87
- "eslint-plugin-prettier": "^5.0.0",
87
+ "eslint-plugin-prettier": "^5.0.1",
88
88
  "eslint-plugin-promise": "^6.1.1",
89
89
  "eslint-plugin-standard": "^4.1.0",
90
90
  "fs-extra": "^11.1.1",
91
91
  "husky": "^8.0.3",
92
- "jest": "^29.6.1",
93
- "lint-staged": "^13.2.3",
94
- "prettier": "^3.0.0",
95
- "rimraf": "^5.0.1"
92
+ "jest": "^29.7.0",
93
+ "lint-staged": "^15.1.0",
94
+ "prettier": "^3.1.0",
95
+ "rimraf": "^5.0.5"
96
96
  },
97
- "gitHead": "82b76e320c93f90c03a746cab604ddd8e43a2d54"
97
+ "gitHead": "cf41a67c81c9321ba93ce4299cbb33a908da4e1a"
98
98
  }