Skip to content

Commit 869a913

Browse files
committed
🐛 Use cloneDeep to keep reference linked
in serializeTypeReferenceNode, by using `cloneDeep` instead of `clone`, the cloned references are all affected by future transformations like renames.
1 parent e48c3f5 commit 869a913

File tree

6 files changed

+2129
-1584
lines changed

6 files changed

+2129
-1584
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
"@babel/core": "^7.6.4",
5757
"@babel/plugin-proposal-class-properties": "^7.5.5",
5858
"@babel/plugin-proposal-decorators": "^7.6.0",
59+
"@babel/plugin-transform-modules-commonjs": "^7.10.4",
5960
"@babel/preset-env": "^7.6.3",
6061
"@babel/preset-typescript": "^7.6.0",
6162
"@babel/template": "^7.6.0",

src/metadata/serializeType.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ function serializeTypeReferenceNode(
8080
t.stringLiteral('undefined')
8181
),
8282
t.identifier('Object'),
83-
t.clone(reference)
83+
t.cloneDeep(reference)
8484
);
8585
}
8686

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import AWS from 'aws-sdk';
2+
3+
@Injectable()
4+
export class SomeService {
5+
constructor(
6+
@Inject('aws.s3') private s3client: AWS.S3,
7+
) {}
8+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
"use strict";
2+
3+
Object.defineProperty(exports, "__esModule", {
4+
value: true
5+
});
6+
exports.SomeService = void 0;
7+
8+
var _awsSdk = _interopRequireDefault(require("aws-sdk"));
9+
10+
var _dec, _dec2, _dec3, _dec4, _class;
11+
12+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13+
14+
let SomeService = (_dec = Injectable(), _dec2 = function (target, key) {
15+
return Inject('aws.s3')(target, undefined, 0);
16+
}, _dec3 = Reflect.metadata("design:type", Function), _dec4 = Reflect.metadata("design:paramtypes", [typeof _awsSdk.default.S3 === "undefined" ? Object : _awsSdk.default.S3]), _dec(_class = _dec2(_class = _dec3(_class = _dec4(_class = class SomeService {
17+
constructor(s3client) {
18+
this.s3client = s3client;
19+
}
20+
21+
}) || _class) || _class) || _class) || _class);
22+
exports.SomeService = SomeService;

test/module.spec.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import path from 'path';
2+
import { create } from 'babel-test';
3+
4+
import { toMatchFile } from 'jest-file-snapshot';
5+
expect.extend({ toMatchFile });
6+
7+
const { fixtures } = create({
8+
presets: [['@babel/preset-typescript', { allExtensions: true }]],
9+
plugins: [
10+
require.resolve('../src/plugin'),
11+
['@babel/plugin-proposal-decorators', { legacy: true }],
12+
['@babel/plugin-proposal-class-properties', { loose: true }],
13+
'@babel/plugin-transform-modules-commonjs'
14+
]
15+
});
16+
17+
fixtures('emit metadata', path.join(__dirname, '__modules__'));

0 commit comments

Comments
 (0)