Commit 976dadb
authored
fix: hardcode declaration extension check (#456)
* fix: preemptively `filter` type-only files to workaround Rollup bug
- basically, right now, the addition of `this.load` on all `references` is causing Rollup to error out on JSON files
- specifically, this is impacting `configPlugin` usage (i.e. `rollup.config.ts`), where previously one didn't need `@rollup/plugin-json`, but now it is erroring out without it
- I tracked this down to be because of `this.load` specifically
- to avoid this and similar such issues, we can preemptively `filter` out files before calling `this.resolve` / `this.load`, which should end up `exclude`ing JSON files and any other non-rpt2 files
- this should also make it a bit more efficient to skip some recursion
- and non-rpt2 files shouldn't include any type-only files
- confirmed that this change fixes the error
- and that the type-only tests still pass
* refactor: use a common function for resolution checks
- since the same logic is used in `resolveId` and these _should_ be equivalent
- in the future, we might want to add more common logic to this function, e.g. `getAllReferences` removes `undefined` and uses `moduleNameResolver` as well, similar to `resolveId`
- may not be so easy, so TBD
- for instance, even moving the `undefined` check into the func required adding a type guard, as the compiler wasn't quite able to infer that passing the func meant it was not `undefined`
* feat: also ignore `.d.cts` and `.d.mts` file extensions
- support newer TS extensions
- rpt2 should _always_ ignore declarations
- regardless of the `exclude`; as in, if a user accidentally removes declarations in an override, rpt2 should still not directly read declarations
- as they are normally read ambiently by TS and not _directly_ by Rollup or TS
* fix comment -- there's more reasons why we shouldn't resolve all references
- we don't `return false` in `resolveId`, so any new file that wasn't previously in Rollup's pipeline _must_ be resolved
- `return` just defers to the next plugin, so, for a declaration, it eventually causes Rollup to try and fail to resolve on its own, giving an `Unexptected token` error message
- but we _don't_ want to `return false` in `resolveId` if they _intentionally_ imported a declaration for some reason (e.g. if they're going to transform it in some way)
- if we did `return false`, no other plugin could process either
- so as a result, we should just never call `this.resolve()` on anything we don't expect to be able to resolve
- i.e. don't add anything new to the pipeline that we don't resolve ourselves1 parent 61c7392 commit 976dadb
1 file changed
+14
-5
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
80 | 80 | | |
81 | 81 | | |
82 | 82 | | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
83 | 94 | | |
84 | 95 | | |
85 | 96 | | |
| |||
207 | 218 | | |
208 | 219 | | |
209 | 220 | | |
210 | | - | |
211 | | - | |
212 | | - | |
213 | | - | |
| 221 | + | |
214 | 222 | | |
215 | 223 | | |
216 | 224 | | |
| |||
277 | 285 | | |
278 | 286 | | |
279 | 287 | | |
280 | | - | |
| 288 | + | |
| 289 | + | |
281 | 290 | | |
282 | 291 | | |
283 | 292 | | |
| |||
0 commit comments