@dsivd/prestations-ng 19.1.0 → 19.2.0-beta.1
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 +21 -0
- package/GOOD_PRACTICES.md +150 -102
- package/UPGRADING_V18.md +1 -0
- package/UPGRADING_V19.md +43 -2
- package/dsivd-prestations-ng-19.2.0-beta.1.tgz +0 -0
- package/eslint/signal-names.mjs +66 -35
- package/fesm2022/dsivd-prestations-ng.mjs +3885 -3436
- package/fesm2022/dsivd-prestations-ng.mjs.map +1 -1
- package/package.json +1 -1
- package/schematics/utility/add-allow-synthetic-default-imports.js +2 -2
- package/schematics/utility/add-allowed-common-js-dependencies.js +2 -2
- package/schematics/utility/foehn2-bootstrap5-migration.js +20 -20
- package/schematics/utility/migrate-to-karma-coverage.js +2 -2
- package/schematics/utility/remove-emit-decorator-metadata.js +2 -2
- package/src/eslint/__tests__/signal-names.test.mjs +129 -0
- package/src/eslint/signal-names.mjs +66 -35
- package/types/dsivd-prestations-ng.d.ts +942 -913
- package/dsivd-prestations-ng-19.1.0.tgz +0 -0
package/package.json
CHANGED
|
@@ -9,11 +9,11 @@ const addAllowSyntheticDefaultImports = (tree) => {
|
|
|
9
9
|
}
|
|
10
10
|
const json = JSON.parse(file.toString());
|
|
11
11
|
const compilerOptions = json.compilerOptions;
|
|
12
|
-
if (!Object.
|
|
12
|
+
if (!Object.hasOwn(compilerOptions, 'allowSyntheticDefaultImports') ||
|
|
13
13
|
!json.compilerOptions.allowSyntheticDefaultImports) {
|
|
14
14
|
json.compilerOptions.allowSyntheticDefaultImports = true;
|
|
15
15
|
tree.overwrite(tsConfig, JSON.stringify(json, null, 2));
|
|
16
16
|
}
|
|
17
17
|
};
|
|
18
18
|
exports.addAllowSyntheticDefaultImports = addAllowSyntheticDefaultImports;
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWFsbG93LXN5bnRoZXRpYy1kZWZhdWx0LWltcG9ydHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zY2hlbWF0aWNzL3V0aWxpdHkvYWRkLWFsbG93LXN5bnRoZXRpYy1kZWZhdWx0LWltcG9ydHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRU8sTUFBTSwrQkFBK0IsR0FBRyxDQUFDLElBQVUsRUFBUSxFQUFFO0lBQ2hFLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQztJQUNqQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNSLE9BQU87SUFDWCxDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUN6QyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzdDLElBQ0ksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSw4QkFBOEIsQ0FBQztRQUMvRCxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsNEJBQTRCLEVBQ3BELENBQUM7UUFDQyxJQUFJLENBQUMsZUFBZSxDQUFDLDRCQUE0QixHQUFHLElBQUksQ0FBQztRQUV6RCxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBakJXLFFBQUEsK0JBQStCLG1DQWlCMUMifQ==
|
|
@@ -24,7 +24,7 @@ const addAllowedCommonJsDependencies = (tree) => {
|
|
|
24
24
|
'iban',
|
|
25
25
|
'zone.js/dist/zone-error',
|
|
26
26
|
];
|
|
27
|
-
if (Object.
|
|
27
|
+
if (Object.hasOwn(buildOptions, 'allowedCommonJsDependencies')) {
|
|
28
28
|
// Do not add dependency if already exist
|
|
29
29
|
const existingDeps = [...buildOptions.allowedCommonJsDependencies];
|
|
30
30
|
arrayOfDependenciesToAdd.forEach((dep) => {
|
|
@@ -39,4 +39,4 @@ const addAllowedCommonJsDependencies = (tree) => {
|
|
|
39
39
|
tree.overwrite(pathToAngularJson, JSON.stringify(json, null, 2));
|
|
40
40
|
};
|
|
41
41
|
exports.addAllowedCommonJsDependencies = addAllowedCommonJsDependencies;
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWFsbG93ZWQtY29tbW9uLWpzLWRlcGVuZGVuY2llcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NjaGVtYXRpY3MvdXRpbGl0eS9hZGQtYWxsb3dlZC1jb21tb24tanMtZGVwZW5kZW5jaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJEQUF1RTtBQUVoRSxNQUFNLDhCQUE4QixHQUFHLENBQUMsSUFBVSxFQUFRLEVBQUU7SUFDL0QsTUFBTSxpQkFBaUIsR0FBRyxjQUFjLENBQUM7SUFDekMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNSLG9EQUFvRDtRQUNwRCxPQUFPO0lBQ1gsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDekMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUN4QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDZixNQUFNLElBQUksZ0NBQW1CLENBQ3pCLGtGQUFrRixDQUNyRixDQUFDO0lBQ04sQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDM0MsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ1gsTUFBTSxJQUFJLGdDQUFtQixDQUN6Qix3Q0FBd0MsV0FBVyw4QkFBOEIsQ0FDcEYsQ0FBQztJQUNOLENBQUM7SUFFRCxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7SUFDckQsTUFBTSx3QkFBd0IsR0FBRztRQUM3QixtQ0FBbUM7UUFDbkMsTUFBTTtRQUNOLHlCQUF5QjtLQUM1QixDQUFDO0lBRUYsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSw2QkFBNkIsQ0FBQyxFQUFFLENBQUM7UUFDN0QseUNBQXlDO1FBQ3pDLE1BQU0sWUFBWSxHQUFHLENBQUMsR0FBRyxZQUFZLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUNuRSx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFXLEVBQUUsRUFBRTtZQUM3QyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUM5QixZQUFZLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZELENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7U0FBTSxDQUFDO1FBQ0osWUFBWSxDQUFDLDJCQUEyQixHQUFHLHdCQUF3QixDQUFDO0lBQ3hFLENBQUM7SUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JFLENBQUMsQ0FBQztBQTNDVyxRQUFBLDhCQUE4QixrQ0EyQ3pDIn0=
|
|
@@ -164,23 +164,23 @@ exports.foehn2ClassNamesToMigrate = [
|
|
|
164
164
|
];
|
|
165
165
|
const fixWrongReplacementsForCss = (migrationResult, classNameToMigrate) => {
|
|
166
166
|
if (classNameToMigrate.className === 'vd-highlight') {
|
|
167
|
-
migrationResult.fileContent = migrationResult.fileContent.
|
|
167
|
+
migrationResult.fileContent = migrationResult.fileContent.replaceAll(/\.vd-highlight\.highlight-dark\.highlight-dark/g, () => {
|
|
168
168
|
migrationResult.nbCssClassChanged--;
|
|
169
169
|
return '.vd-highlight.highlight-dark';
|
|
170
170
|
});
|
|
171
171
|
}
|
|
172
172
|
if (classNameToMigrate.className === 'form-group') {
|
|
173
|
-
migrationResult.fileContent = migrationResult.fileContent.
|
|
173
|
+
migrationResult.fileContent = migrationResult.fileContent.replaceAll(/\.form-group\.mb-3\.mb-3/g, () => {
|
|
174
174
|
migrationResult.nbCssClassChanged--;
|
|
175
175
|
return '.form-group.mb-3';
|
|
176
176
|
});
|
|
177
177
|
}
|
|
178
178
|
if (classNameToMigrate.className === 'btn-link') {
|
|
179
|
-
migrationResult.fileContent = migrationResult.fileContent.
|
|
179
|
+
migrationResult.fileContent = migrationResult.fileContent.replaceAll(/\.btn\.btn\.btn-link/g, () => {
|
|
180
180
|
migrationResult.nbCssClassChanged--;
|
|
181
181
|
return '.btn.btn-link';
|
|
182
182
|
});
|
|
183
|
-
migrationResult.fileContent = migrationResult.fileContent.
|
|
183
|
+
migrationResult.fileContent = migrationResult.fileContent.replaceAll(/\.btn \.btn\.btn-link/g, () => {
|
|
184
184
|
migrationResult.nbCssClassChanged--;
|
|
185
185
|
return '.btn .btn-link';
|
|
186
186
|
});
|
|
@@ -188,55 +188,55 @@ const fixWrongReplacementsForCss = (migrationResult, classNameToMigrate) => {
|
|
|
188
188
|
};
|
|
189
189
|
const fixWrongReplacementsForHtmlOrTs = (migrationResult, classNameToMigrate) => {
|
|
190
190
|
if (classNameToMigrate.className === 'form-group') {
|
|
191
|
-
migrationResult.fileContent = migrationResult.fileContent.
|
|
191
|
+
migrationResult.fileContent = migrationResult.fileContent.replaceAll(/autocomplete-mb-3/g, () => {
|
|
192
192
|
migrationResult.nbCssClassChanged--;
|
|
193
193
|
return 'autocomplete-form-group';
|
|
194
194
|
});
|
|
195
|
-
migrationResult.fileContent = migrationResult.fileContent.
|
|
195
|
+
migrationResult.fileContent = migrationResult.fileContent.replaceAll(/autocomplete-form-group mb-3/g, () => {
|
|
196
196
|
migrationResult.nbCssClassChanged--;
|
|
197
197
|
return 'autocomplete-form-group';
|
|
198
198
|
});
|
|
199
|
-
migrationResult.fileContent = migrationResult.fileContent.
|
|
199
|
+
migrationResult.fileContent = migrationResult.fileContent.replaceAll(/clearable-input-mb-3/g, () => {
|
|
200
200
|
migrationResult.nbCssClassChanged--;
|
|
201
201
|
return 'clearable-input-form-group';
|
|
202
202
|
});
|
|
203
|
-
migrationResult.fileContent = migrationResult.fileContent.
|
|
203
|
+
migrationResult.fileContent = migrationResult.fileContent.replaceAll(/clearable-input-form-group mb-3/g, () => {
|
|
204
204
|
migrationResult.nbCssClassChanged--;
|
|
205
205
|
return 'clearable-input-form-group';
|
|
206
206
|
});
|
|
207
|
-
migrationResult.fileContent = migrationResult.fileContent.
|
|
207
|
+
migrationResult.fileContent = migrationResult.fileContent.replaceAll(/form-group mb-3 mb-3/g, () => {
|
|
208
208
|
migrationResult.nbCssClassChanged--;
|
|
209
209
|
return 'form-group mb-3';
|
|
210
210
|
});
|
|
211
211
|
}
|
|
212
212
|
if (classNameToMigrate.className === 'close') {
|
|
213
|
-
migrationResult.fileContent = migrationResult.fileContent.
|
|
213
|
+
migrationResult.fileContent = migrationResult.fileContent.replaceAll(/btn-btn-close/g, () => {
|
|
214
214
|
migrationResult.nbCssClassChanged--;
|
|
215
215
|
return 'btn-close';
|
|
216
216
|
});
|
|
217
217
|
}
|
|
218
218
|
if (classNameToMigrate.className === 'vd-highlight') {
|
|
219
|
-
migrationResult.fileContent = migrationResult.fileContent.
|
|
219
|
+
migrationResult.fileContent = migrationResult.fileContent.replaceAll(/vd-highlight highlight-dark highlight-dark/g, () => {
|
|
220
220
|
migrationResult.nbCssClassChanged--;
|
|
221
221
|
return 'vd-highlight highlight-dark';
|
|
222
222
|
});
|
|
223
223
|
}
|
|
224
224
|
if (classNameToMigrate.className === 'btn-link') {
|
|
225
|
-
migrationResult.fileContent = migrationResult.fileContent.
|
|
225
|
+
migrationResult.fileContent = migrationResult.fileContent.replaceAll(/btn btn btn-link/g, () => {
|
|
226
226
|
migrationResult.nbCssClassChanged--;
|
|
227
227
|
return 'btn btn-link';
|
|
228
228
|
});
|
|
229
229
|
}
|
|
230
230
|
};
|
|
231
231
|
const manageHtmlSpecialCases = (migrationResult) => {
|
|
232
|
-
migrationResult.fileContent = migrationResult.fileContent.
|
|
232
|
+
migrationResult.fileContent = migrationResult.fileContent.replaceAll(/(<select[^>]*(class|\[ngClass])\s*=[-"'\s\w?:{]*)\bform-control\b([^'"]*'?['"])/g,
|
|
233
233
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
234
234
|
// @ts-ignore
|
|
235
235
|
(match, p1, p2, p3) => {
|
|
236
236
|
migrationResult.nbCssClassChanged++;
|
|
237
237
|
return `${p1}form-select${p3}`;
|
|
238
238
|
});
|
|
239
|
-
migrationResult.fileContent = migrationResult.fileContent.
|
|
239
|
+
migrationResult.fileContent = migrationResult.fileContent.replaceAll(/(<select[^>]*\[class\.\s*)\bform-control\b([-\w]*]=\s*['"]'?[^'"]*[^'"]*'?['"])/g,
|
|
240
240
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
241
241
|
// @ts-ignore
|
|
242
242
|
(match, p1, p2) => {
|
|
@@ -255,7 +255,7 @@ const renameInCssFile = (migrationResult, classNameToMigrate) => {
|
|
|
255
255
|
const regex = new RegExp(classNameToMigrate.isTag
|
|
256
256
|
? classNameToMigrate.className
|
|
257
257
|
: `.${classNameToMigrate.className}`.replaceAll('.', '\\.'), 'g');
|
|
258
|
-
migrationResult.fileContent = migrationResult.fileContent.
|
|
258
|
+
migrationResult.fileContent = migrationResult.fileContent.replaceAll(regex, () => {
|
|
259
259
|
migrationResult.nbCssClassChanged++;
|
|
260
260
|
return classNameToMigrate.isTag ? replacement : `.${replacement}`;
|
|
261
261
|
});
|
|
@@ -265,7 +265,7 @@ const renameInHtmlOrTsFile = (migrationResult, classNameToMigrate) => {
|
|
|
265
265
|
return;
|
|
266
266
|
}
|
|
267
267
|
const classRegex = new RegExp(`(<[^>]*class\\s*=\\s*['"][^'"]*)\\b${classNameToMigrate.className}\\b([^'"]*['"])`, 'g');
|
|
268
|
-
migrationResult.fileContent = migrationResult.fileContent.
|
|
268
|
+
migrationResult.fileContent = migrationResult.fileContent.replaceAll(classRegex,
|
|
269
269
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
270
270
|
// @ts-ignore
|
|
271
271
|
(match, p1, p2) => {
|
|
@@ -273,7 +273,7 @@ const renameInHtmlOrTsFile = (migrationResult, classNameToMigrate) => {
|
|
|
273
273
|
return `${p1}${classNameToMigrate.replacement}${p2}`;
|
|
274
274
|
});
|
|
275
275
|
const ngClassRegex = new RegExp(`(<[^>]*ngClass]\\s*=\\s*[-"'\\s\\w?:{]*)\\b${classNameToMigrate.className}\\b([^'"]*'?['"])`, 'g');
|
|
276
|
-
migrationResult.fileContent = migrationResult.fileContent.
|
|
276
|
+
migrationResult.fileContent = migrationResult.fileContent.replaceAll(ngClassRegex,
|
|
277
277
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
278
278
|
// @ts-ignore
|
|
279
279
|
(match, p1, p2) => {
|
|
@@ -281,7 +281,7 @@ const renameInHtmlOrTsFile = (migrationResult, classNameToMigrate) => {
|
|
|
281
281
|
return `${p1}${classNameToMigrate.replacement}${p2}`;
|
|
282
282
|
});
|
|
283
283
|
const classDotRegex = new RegExp(`(<[^>]*\\[class\\.\\s*)\\b${classNameToMigrate.className}\\b([-\\w]*])`, 'g');
|
|
284
|
-
migrationResult.fileContent = migrationResult.fileContent.
|
|
284
|
+
migrationResult.fileContent = migrationResult.fileContent.replaceAll(classDotRegex,
|
|
285
285
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
286
286
|
// @ts-ignore
|
|
287
287
|
(match, p1, p2) => {
|
|
@@ -344,7 +344,7 @@ const migrateToFoehn2 = (migrationResult, fileExtension) => {
|
|
|
344
344
|
const getFilesPath = (tree, dir, filesPath, fileExtension) => {
|
|
345
345
|
var _a;
|
|
346
346
|
const subdirs = dir.subdirs;
|
|
347
|
-
if (
|
|
347
|
+
if (subdirs === null || subdirs === void 0 ? void 0 : subdirs.length) {
|
|
348
348
|
subdirs.forEach((subDir) => {
|
|
349
349
|
const subDirValue = tree.getDir(`${dir.path}/${subDir}`);
|
|
350
350
|
getFilesPath(tree, subDirValue, filesPath, fileExtension);
|
|
@@ -387,4 +387,4 @@ const migrateToFoehn2Bootstrap5 = (tree, fileExtension, migrationResult, sourceR
|
|
|
387
387
|
});
|
|
388
388
|
};
|
|
389
389
|
exports.migrateToFoehn2Bootstrap5 = migrateToFoehn2Bootstrap5;
|
|
390
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4yLWJvb3RzdHJhcDUtbWlncmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc2NoZW1hdGljcy91dGlsaXR5L2ZvZWhuMi1ib290c3RyYXA1LW1pZ3JhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFJQSxJQUFZLGFBSVg7QUFKRCxXQUFZLGFBQWE7SUFDckIsNEJBQVcsQ0FBQTtJQUNYLDhCQUFhLENBQUE7SUFDYiwwQkFBUyxDQUFBO0FBQ2IsQ0FBQyxFQUpXLGFBQWEsNkJBQWIsYUFBYSxRQUl4QjtBQUVELE1BQWEsa0JBQWtCO0NBTTlCO0FBTkQsZ0RBTUM7QUFFRCxNQUFhLGVBQWU7SUFBNUI7UUFFSSxzQkFBaUIsR0FBRyxDQUFDLENBQUM7SUFDMUIsQ0FBQztDQUFBO0FBSEQsMENBR0M7QUFFWSxRQUFBLDhCQUE4QixHQUF5QjtJQUNoRSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRTtJQUN2RCxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRTtJQUNuRCxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRTtJQUNuRCxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRTtJQUNyRCxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRTtJQUN4RCxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRTtJQUN6RCxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFO0lBQzdELEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFO0lBQ3pELEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsWUFBWSxF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
|
|
390
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4yLWJvb3RzdHJhcDUtbWlncmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc2NoZW1hdGljcy91dGlsaXR5L2ZvZWhuMi1ib290c3RyYXA1LW1pZ3JhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFJQSxJQUFZLGFBSVg7QUFKRCxXQUFZLGFBQWE7SUFDckIsNEJBQVcsQ0FBQTtJQUNYLDhCQUFhLENBQUE7SUFDYiwwQkFBUyxDQUFBO0FBQ2IsQ0FBQyxFQUpXLGFBQWEsNkJBQWIsYUFBYSxRQUl4QjtBQUVELE1BQWEsa0JBQWtCO0NBTTlCO0FBTkQsZ0RBTUM7QUFFRCxNQUFhLGVBQWU7SUFBNUI7UUFFSSxzQkFBaUIsR0FBRyxDQUFDLENBQUM7SUFDMUIsQ0FBQztDQUFBO0FBSEQsMENBR0M7QUFFWSxRQUFBLDhCQUE4QixHQUF5QjtJQUNoRSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRTtJQUN2RCxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRTtJQUNuRCxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRTtJQUNuRCxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRTtJQUNyRCxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRTtJQUN4RCxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRTtJQUN6RCxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFO0lBQzdELEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFO0lBQ3pELEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsWUFBWSxF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
|
|
@@ -15,7 +15,7 @@ const modifyPackageJson = (tree) => {
|
|
|
15
15
|
return;
|
|
16
16
|
}
|
|
17
17
|
const karmaCoverageIstanbulReporter = 'karma-coverage-istanbul-reporter';
|
|
18
|
-
if (!Object.
|
|
18
|
+
if (!Object.hasOwn(devDependencies, karmaCoverageIstanbulReporter)) {
|
|
19
19
|
// nothing to do
|
|
20
20
|
return;
|
|
21
21
|
}
|
|
@@ -48,4 +48,4 @@ const migrateToKarmaCoverage = (tree) => {
|
|
|
48
48
|
return true;
|
|
49
49
|
};
|
|
50
50
|
exports.migrateToKarmaCoverage = migrateToKarmaCoverage;
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlncmF0ZS10by1rYXJtYS1jb3ZlcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NjaGVtYXRpY3MvdXRpbGl0eS9taWdyYXRlLXRvLWthcm1hLWNvdmVyYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVPLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxJQUFVLEVBQVEsRUFBRTtJQUNsRCxNQUFNLGlCQUFpQixHQUFHLGNBQWMsQ0FBQztJQUN6QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDMUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1IsZ0JBQWdCO1FBQ2hCLE9BQU87SUFDWCxDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUN6QyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzdDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNuQixnQkFBZ0I7UUFDaEIsT0FBTztJQUNYLENBQUM7SUFFRCxNQUFNLDZCQUE2QixHQUFHLGtDQUFrQyxDQUFDO0lBQ3pFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSw2QkFBNkIsQ0FBQyxFQUFFLENBQUM7UUFDakUsZ0JBQWdCO1FBQ2hCLE9BQU87SUFDWCxDQUFDO0lBRUQsT0FBTyxlQUFlLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUV0RCxxQkFBcUI7SUFDckIsZUFBZSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsUUFBUSxDQUFDO0lBRTdDLElBQUksQ0FBQyxTQUFTLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckUsQ0FBQyxDQUFDO0FBM0JXLFFBQUEsaUJBQWlCLHFCQTJCNUI7QUFFSyxNQUFNLGlCQUFpQixHQUFHLENBQUMsSUFBVSxFQUFRLEVBQUU7SUFDbEQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUMvQiw2RUFBNkUsQ0FDaEYsQ0FBQztJQUNGLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3JCLE9BQU87SUFDWCxDQUFDO0lBRUQsTUFBTSxpQkFBaUIsR0FBRyxlQUFlLENBQUM7SUFDMUMsTUFBTSxrQkFBa0IsR0FBRyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN4RCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsaUJBQWlCLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUMxRCxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBYlcsUUFBQSxpQkFBaUIscUJBYTVCO0FBRUssTUFBTSxzQkFBc0IsR0FBRyxDQUFDLElBQVUsRUFBVyxFQUFFO0lBQzFELE1BQU0saUJBQWlCLEdBQUcsZUFBZSxDQUFDO0lBQzFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztRQUNsQyx5REFBeUQ7UUFDekQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUNELElBQUEseUJBQWlCLEVBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEIsSUFBQSx5QkFBaUIsRUFBQyxJQUFJLENBQUMsQ0FBQztJQUV4QixPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDLENBQUM7QUFWVyxRQUFBLHNCQUFzQiwwQkFVakMifQ==
|
|
@@ -9,10 +9,10 @@ const removeEmitDecoratorMetadata = (tree) => {
|
|
|
9
9
|
}
|
|
10
10
|
const json = JSON.parse(file.toString());
|
|
11
11
|
const compilerOptions = json.compilerOptions;
|
|
12
|
-
if (Object.
|
|
12
|
+
if (Object.hasOwn(compilerOptions, 'emitDecoratorMetadata')) {
|
|
13
13
|
delete json.compilerOptions.emitDecoratorMetadata;
|
|
14
14
|
tree.overwrite(tsConfig, JSON.stringify(json, null, 2));
|
|
15
15
|
}
|
|
16
16
|
};
|
|
17
17
|
exports.removeEmitDecoratorMetadata = removeEmitDecoratorMetadata;
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlLWVtaXQtZGVjb3JhdG9yLW1ldGFkYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc2NoZW1hdGljcy91dGlsaXR5L3JlbW92ZS1lbWl0LWRlY29yYXRvci1tZXRhZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFTyxNQUFNLDJCQUEyQixHQUFHLENBQUMsSUFBVSxFQUFRLEVBQUU7SUFDNUQsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDO0lBQ2pDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDakMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1IsT0FBTztJQUNYLENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDN0MsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxFQUFFLENBQUM7UUFDMUQsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLHFCQUFxQixDQUFDO1FBRWxELElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUM7QUFDTCxDQUFDLENBQUM7QUFkVyxRQUFBLDJCQUEyQiwrQkFjdEMifQ==
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { mkdirSync, mkdtempSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { tmpdir } from 'node:os';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { beforeAll, describe, expect, it } from 'vitest';
|
|
5
|
+
|
|
6
|
+
import {
|
|
7
|
+
AMBIGUOUS,
|
|
8
|
+
COMPUTED,
|
|
9
|
+
FROM_OBSERVABLE,
|
|
10
|
+
INPUT,
|
|
11
|
+
VIEW_QUERY,
|
|
12
|
+
WRITABLE,
|
|
13
|
+
} from '../signal-kinds.mjs';
|
|
14
|
+
import { collectSignalKinds, collectSignalNames } from '../signal-names.mjs';
|
|
15
|
+
|
|
16
|
+
describe('signal-names', () => {
|
|
17
|
+
let componentPath;
|
|
18
|
+
let missingPath;
|
|
19
|
+
|
|
20
|
+
const write = (path, content) => {
|
|
21
|
+
mkdirSync(join(path, '..'), { recursive: true });
|
|
22
|
+
writeFileSync(path, content, 'utf8');
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
beforeAll(() => {
|
|
26
|
+
const root = mkdtempSync(join(tmpdir(), 'signal-names-'));
|
|
27
|
+
|
|
28
|
+
write(
|
|
29
|
+
join(root, 'node_modules', '@fake', 'barrel', 'package.json'),
|
|
30
|
+
JSON.stringify({ name: '@fake/barrel', types: 'index.d.ts' }),
|
|
31
|
+
);
|
|
32
|
+
write(
|
|
33
|
+
join(root, 'node_modules', '@fake', 'barrel', 'index.d.ts'),
|
|
34
|
+
`export { ReExportedBase } from './external-base';`,
|
|
35
|
+
);
|
|
36
|
+
write(
|
|
37
|
+
join(root, 'node_modules', '@fake', 'barrel', 'external-base.d.ts'),
|
|
38
|
+
`import * as _angular_core from '@angular/core';
|
|
39
|
+
declare class ReExportedBase {
|
|
40
|
+
readonly fromPackageInput: _angular_core.InputSignal<string>;
|
|
41
|
+
readonly fromPackageAmbiguous: _angular_core.Signal<string>;
|
|
42
|
+
readonly overridable: _angular_core.InputSignal<string>;
|
|
43
|
+
}
|
|
44
|
+
export { ReExportedBase };`,
|
|
45
|
+
);
|
|
46
|
+
|
|
47
|
+
write(
|
|
48
|
+
join(root, 'src', 'local-base.ts'),
|
|
49
|
+
`import { input, signal, viewChild } from '@angular/core';
|
|
50
|
+
import { ReExportedBase as PackageBase } from '@fake/barrel';
|
|
51
|
+
|
|
52
|
+
export class LocalBase extends PackageBase {
|
|
53
|
+
readonly fromLocal = signal(1);
|
|
54
|
+
readonly fromLocalInput = input.required<string>();
|
|
55
|
+
readonly requiredQuery = viewChild.required('panel');
|
|
56
|
+
readonly overridable = signal('child-wins');
|
|
57
|
+
|
|
58
|
+
get fromLocalType(): Signal<number> {
|
|
59
|
+
return this.fromLocal;
|
|
60
|
+
}
|
|
61
|
+
}`,
|
|
62
|
+
);
|
|
63
|
+
|
|
64
|
+
componentPath = join(root, 'src', 'sample.component.ts');
|
|
65
|
+
write(
|
|
66
|
+
componentPath,
|
|
67
|
+
`import { computed, contentChildren, input, model, signal, viewChild } from '@angular/core';
|
|
68
|
+
import { toSignal } from '@angular/core/rxjs-interop';
|
|
69
|
+
import { LocalBase } from './local-base';
|
|
70
|
+
|
|
71
|
+
export class SampleComponent extends LocalBase {
|
|
72
|
+
readonly fromChild = signal(0);
|
|
73
|
+
readonly fromChildModel = model('');
|
|
74
|
+
readonly fromChildComputed = computed(() => this.fromChild());
|
|
75
|
+
readonly fromChildInput = input('');
|
|
76
|
+
readonly fromChildQuery = viewChild('panel');
|
|
77
|
+
readonly fromChildChildren = contentChildren('item');
|
|
78
|
+
readonly fromChildStream = toSignal(this.source$);
|
|
79
|
+
plainField = 1;
|
|
80
|
+
|
|
81
|
+
helper() {
|
|
82
|
+
return this.fromChild();
|
|
83
|
+
}
|
|
84
|
+
}`,
|
|
85
|
+
);
|
|
86
|
+
|
|
87
|
+
missingPath = join(root, 'src', 'missing.component.ts');
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
it('returns undefined when the component cannot be read', () => {
|
|
91
|
+
expect(collectSignalKinds(missingPath)).toBeUndefined();
|
|
92
|
+
expect(collectSignalNames(missingPath)).toEqual(new Set());
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
it('collects kinds through local inheritance and barrel re-exports', () => {
|
|
96
|
+
const kinds = collectSignalKinds(componentPath);
|
|
97
|
+
|
|
98
|
+
expect(kinds).toBeDefined();
|
|
99
|
+
expect(kinds.get('fromChild')).toBe(WRITABLE);
|
|
100
|
+
expect(kinds.get('fromChildModel')).toBe(WRITABLE);
|
|
101
|
+
expect(kinds.get('fromChildComputed')).toBe(COMPUTED);
|
|
102
|
+
expect(kinds.get('fromChildInput')).toBe(INPUT);
|
|
103
|
+
expect(kinds.get('fromChildQuery')).toBe(VIEW_QUERY);
|
|
104
|
+
expect(kinds.get('fromChildChildren')).toBe(VIEW_QUERY);
|
|
105
|
+
expect(kinds.get('fromChildStream')).toBe(FROM_OBSERVABLE);
|
|
106
|
+
|
|
107
|
+
expect(kinds.get('fromLocal')).toBe(WRITABLE);
|
|
108
|
+
expect(kinds.get('fromLocalInput')).toBe(INPUT);
|
|
109
|
+
expect(kinds.get('requiredQuery')).toBe(VIEW_QUERY);
|
|
110
|
+
expect(kinds.get('fromLocalType')).toBe(AMBIGUOUS);
|
|
111
|
+
|
|
112
|
+
expect(kinds.get('fromPackageInput')).toBe(INPUT);
|
|
113
|
+
expect(kinds.get('fromPackageAmbiguous')).toBe(AMBIGUOUS);
|
|
114
|
+
expect(kinds.get('overridable')).toBe(WRITABLE);
|
|
115
|
+
|
|
116
|
+
expect(kinds.has('plainField')).toBe(false);
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
it('collects only signal member names', () => {
|
|
120
|
+
const names = collectSignalNames(componentPath);
|
|
121
|
+
|
|
122
|
+
expect(names.has('fromChild')).toBe(true);
|
|
123
|
+
expect(names.has('fromLocal')).toBe(true);
|
|
124
|
+
expect(names.has('fromPackageInput')).toBe(true);
|
|
125
|
+
expect(names.has('plainField')).toBe(false);
|
|
126
|
+
expect(names.has('helper')).toBe(false);
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
|
|
@@ -153,6 +153,67 @@ const reExportedModulesOf = (sourceFile) =>
|
|
|
153
153
|
.filter((statement) => ts.isExportDeclaration(statement) && statement.moduleSpecifier)
|
|
154
154
|
.map((statement) => statement.moduleSpecifier.text);
|
|
155
155
|
|
|
156
|
+
const classDeclarationsOf = (sourceFile, className) =>
|
|
157
|
+
className
|
|
158
|
+
? [findClass(sourceFile, className)].filter(Boolean)
|
|
159
|
+
: sourceFile.statements.filter(ts.isClassDeclaration);
|
|
160
|
+
|
|
161
|
+
const isBarrelMiss = (className, classDeclarations) =>
|
|
162
|
+
Boolean(className) && classDeclarations.length === 0;
|
|
163
|
+
|
|
164
|
+
const collectFromReExports = (sourceFile, path, className, kinds, visited) => {
|
|
165
|
+
for (const specifier of reExportedModulesOf(sourceFile)) {
|
|
166
|
+
const target = resolveModule(specifier, path);
|
|
167
|
+
if (target) {
|
|
168
|
+
collect(target, className, kinds, visited);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
const addMemberKindIfEligible = (member, kinds) => {
|
|
174
|
+
if (!member.name || !ts.isIdentifier(member.name)) {
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
const kind = kindOfMember(member);
|
|
178
|
+
// A subclass overriding a member wins: it is collected first.
|
|
179
|
+
if (kind && !kinds.has(member.name.text)) {
|
|
180
|
+
kinds.set(member.name.text, kind);
|
|
181
|
+
}
|
|
182
|
+
};
|
|
183
|
+
|
|
184
|
+
const collectMemberKinds = (classDeclaration, kinds) => {
|
|
185
|
+
for (const member of classDeclaration.members) {
|
|
186
|
+
addMemberKindIfEligible(member, kinds);
|
|
187
|
+
}
|
|
188
|
+
};
|
|
189
|
+
|
|
190
|
+
const baseTargetOf = (sourceFile, path, classDeclaration) => {
|
|
191
|
+
const baseName = extendedClassNameOf(classDeclaration);
|
|
192
|
+
if (!baseName) {
|
|
193
|
+
return undefined;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
// Declaration bundles are flattened: the base class often sits in the same file.
|
|
197
|
+
if (findClass(sourceFile, baseName)) {
|
|
198
|
+
return { path, className: baseName };
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
const imported = importOf(sourceFile, baseName);
|
|
202
|
+
if (!imported) {
|
|
203
|
+
return undefined;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
const target = resolveModule(imported.specifier, path);
|
|
207
|
+
return target ? { path: target, className: imported.exportedName } : undefined;
|
|
208
|
+
};
|
|
209
|
+
|
|
210
|
+
const collectBase = (sourceFile, path, classDeclaration, kinds, visited) => {
|
|
211
|
+
const target = baseTargetOf(sourceFile, path, classDeclaration);
|
|
212
|
+
if (target) {
|
|
213
|
+
collect(target.path, target.className, kinds, visited);
|
|
214
|
+
}
|
|
215
|
+
};
|
|
216
|
+
|
|
156
217
|
const collect = (path, className, kinds, visited) => {
|
|
157
218
|
const key = `${path}::${className ?? "*"}`;
|
|
158
219
|
if (visited.has(key)) {
|
|
@@ -165,47 +226,17 @@ const collect = (path, className, kinds, visited) => {
|
|
|
165
226
|
return;
|
|
166
227
|
}
|
|
167
228
|
|
|
168
|
-
const classDeclarations = className
|
|
169
|
-
? [findClass(sourceFile, className)].filter(Boolean)
|
|
170
|
-
: sourceFile.statements.filter(ts.isClassDeclaration);
|
|
229
|
+
const classDeclarations = classDeclarationsOf(sourceFile, className);
|
|
171
230
|
|
|
172
231
|
// A barrel: the class is only re-exported from here.
|
|
173
|
-
if (className
|
|
174
|
-
|
|
175
|
-
const target = resolveModule(specifier, path);
|
|
176
|
-
if (target) {
|
|
177
|
-
collect(target, className, kinds, visited);
|
|
178
|
-
}
|
|
179
|
-
}
|
|
232
|
+
if (isBarrelMiss(className, classDeclarations)) {
|
|
233
|
+
collectFromReExports(sourceFile, path, className, kinds, visited);
|
|
180
234
|
return;
|
|
181
235
|
}
|
|
182
236
|
|
|
183
237
|
for (const classDeclaration of classDeclarations) {
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
continue;
|
|
187
|
-
}
|
|
188
|
-
const kind = kindOfMember(member);
|
|
189
|
-
// A subclass overriding a member wins: it is collected first.
|
|
190
|
-
if (kind && !kinds.has(member.name.text)) {
|
|
191
|
-
kinds.set(member.name.text, kind);
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
const baseName = extendedClassNameOf(classDeclaration);
|
|
196
|
-
if (!baseName) {
|
|
197
|
-
continue;
|
|
198
|
-
}
|
|
199
|
-
// Declaration bundles are flattened: the base class often sits in the same file.
|
|
200
|
-
if (findClass(sourceFile, baseName)) {
|
|
201
|
-
collect(path, baseName, kinds, visited);
|
|
202
|
-
continue;
|
|
203
|
-
}
|
|
204
|
-
const imported = importOf(sourceFile, baseName);
|
|
205
|
-
const target = imported && resolveModule(imported.specifier, path);
|
|
206
|
-
if (target) {
|
|
207
|
-
collect(target, imported.exportedName, kinds, visited);
|
|
208
|
-
}
|
|
238
|
+
collectMemberKinds(classDeclaration, kinds);
|
|
239
|
+
collectBase(sourceFile, path, classDeclaration, kinds, visited);
|
|
209
240
|
}
|
|
210
241
|
};
|
|
211
242
|
|