172 Commits

Author SHA1 Message Date
Anton Gilgur
74f6761ff6
docs/clean: formally deprecate rollupCommonJSResolveHack (#367)
* docs/clean: formally deprecate `rollupCommonJSResolveHack`

- this has had no effect since 6fb0e75f5328666dca8ff7b11bc956096351a3eb, released in 0.30.0
  - that changed the code to always return OS native paths via the NodeJS Path API
    - so setting `rollupCommonJSResolveHack` would make no difference either `true` or `false`
      - effectively, it's as if it's always `true` now

- formally state now that this is deprecated in the docs
  - as well as when that occurred and what it means

- also add a warning in `options` similar to the existing one for `objectHashIgnoreUnknownHack`

- remove the `resolve` dependency as well
  - it turns out something in the devDeps still uses it, so it didn't get fully removed in the `package-lock.json`
  - `resolve` was never needed anyway as we could've used NodeJS's native `path.resolve` or `require.resolve` instead
    - `resolve` was created for `browserify` after all, where one can't use NodeJS APIs
      - but we run on NodeJS and can and already do use NodeJS APIs, including both `path.resolve` _and_ `require.resolve`
  - I actually started this commit just to remove the dep, then realized the entire code path is obsolete

* fix lint error -- resolved can now be const
2022-06-24 10:30:32 -06:00
ezolenko
0faf2c0860 - package version 2022-06-06 17:59:45 -06:00
Anton Gilgur
d7cab2dbc0
deps: upgrade @rollup/plugin-commonjs to v22 to fix try/catch requires (#340)
- and build
- v21 broke `graphlib`'s internal usage of `lodash` with its breaking
  change, and v22 has another breaking change to fix that
  - notably, this was breaking rpt2 imports for some users because rpt2
    bundles in `graphlib` etc, meaning the nuances of the bundling got
    leaked to consumers, and, in fact, broke their builds
    - another upside to unbundling
2022-06-06 17:55:34 -06:00
ezolenko
4411604475 - package version 2022-06-01 16:34:48 -06:00
Anton Gilgur
60f3489e87
deps: upgrade tslib to 2.4.0, remove @yarn-tool/resolve-package (#326)
- tslib 2.4.0 is forward and backward-compatible with older and newer
  Node exports mechanisms, so the Node 17 error should no longer be
  present
  - it has the older `./` and the newer `./*` in its package exports,
    which should allow for `package.json` to be read in both older and
    newer implementations

- this allows us to remove the extra dep on `@yarn-tool/resolve-package`
  as well
  - other than less unnecessary deps being good,
    `@yarn-tool/resolve-package` is also a not well-documented package
    with very few users, which does not make for a good security posture
    for rpt2 (which has historically prioritized supply chain security
    in other issues around deps) or, in particular, its consumers, which
    there are very many of (in contrast with `@yarn-tool`)
  - per my issue comment, we could also have avoided the extra dep prior
    to the tslib upgrade by resolving to absolute paths, as Node only
    does a "weak" encapsulation of relative imports

- test: add a small unit test for tslib.ts to ensure that this method
  works and passes on different Node versions in CI
  - more a smoke test that it runs at all, the testing is additional
    and a bit duplicative of the source tbh
2022-05-16 14:45:47 -06:00
Anton Gilgur
56716def97
test: add initial unit test suite (#321)
* some unit tests

modifications made by agilgur5 to brekk's original commit:
- rebase with `master` that is 3 years newer
  - fix conflicts with newer code, esp the `tsModule`/`tsProxy` changes
    in this commit
- move `jest` config to the bottom and don't reformat `package.json`
  with tabs

* more

modifications made by agilgur5 to brekk's original commit:
- fix merge conflicts with code that is 3 years newer

* fix tests for windows

* flip that test

* deps: upgrade Jest to v28

- and ts-jest to v28
- @types/jest doesn't have a v28 yet

- look ma, no more vulns!

* refactor: split jest config to jest.config.js

- and add JSDoc typings to it
  - per https://jestjs.io/docs/configuration

* clean: remove redundant jest config

- most of these options are either unused (like `modulePaths` etc) or
  covered by Jest's defaults (`moduleFileExtensions`, `testMatch`, etc)

- also use `ts-jest` preset per its docs and migration docs
  - https://kulshekhar.github.io/ts-jest/docs/migration

* refactor: move tests into __tests__ dir

- per ezolenko's request, though I also prefer to separate them

- fix all relative imports to use `../src/` now

formatting changes:
- improve ordering of imports in tests -- externals first, newline, then
  internal imports
  - do this **consistently**
- consistently put spaces around braces in destructured imports
  - really need better linting (and update to ESLint)
- consistently add newline after imports and before declarations

- in general, add more newlines for readability in several files

* deps: import from @jest/globals instead of using globals

- no config needed and uses standard imports too
  - also required for future Jest ESM support I believe
  - I created the `jest-without-globals` package before this feature was
    released in Jest core and contributed a PR for it too, so might have
    a bias toward not using globals

* fix(test): update get-options-overrides spec to match latest file

- basically to match the changes I made when fixing declaration map
  sources ~1.5 years ago in ec0568ba2c8e206372f94164e697b1469bf3f33d
- also to add `cwd` to options

- fix: use `toStrictEqual` everywhere, in order to actually check
  `undefined` properties, as this is necessary for some of the checks
  - I believe the original author may have intended to actually check
    `undefined` given that they wrote it in the test, but maybe did not
    know to use `toStrictEqual` instead of `toEqual`

* refactor(test): use obj spread in get-options-overrides

- instead of re-writing the options multiple times, write up some
  defaults and use object spread
  - and refactor `makeDefaultConfig()` to just use
    `{ ...defaultConfig }` instead to match the rest

- re-write normalizePaths to be a `for ... of` loop instead of using
  `Array.map`
  - simpler / more straightforward than a function with side-effects

- feat: add typings in several places
  - that's why we're using TS and ts-jest right??

* fix(test): update host spec to match latest source

- LanguageServiceHost now requires 3rd argument, cwd, so add that to
  all usage
- add afterDecalarations to transformers

- Jest's test.skip can now use async/await, so do that
  - it was also giving a type error, and this is simpler anyway

- change expected to use `__tests__` directory now

- fix: use `expect.arrayContaining` for `host.getDirectories` test as
  there are more temp directories that get added here, such as
  `build-self` and `coverage`
  - in general, might be less fragile if this used a generated directory
    instead of an actual one
    - but save bigger refactors for later

* refactor(test): use async/await, remove truncate func in host spec

- instead of using Promises with `done()`, use async/await for clearer
  code and less indentation too

- remove the `truncateName` function as it's not needed; `local` will
  result in the same name

- remove commented out test code
  - this seemed to just be there for testing the code, and not
    ready-for-production comments

* refactor: use consts in host spec instead of locals

- basically using pre-defined fixture vars instead of ones defined
  inside the test
  - which is more straightforward, easier to read, and less fragile
  - shorter names too

- also use a __temp dir for auto-generated files instead of creating
  them in the same dir and confusing the editor file tree and potential
  watchers
  - change jest config to make sure only spec files are being watched
  - gitignore __tests__/__temp/ dir in case tests crash etc

* fix(test): update rollupcontext spec to match latest source

- use PluginContext and IContext types instead of `any`
  - we're using TypeScript right??
  - add `debug` level logging in a few places where it was missing

- update stubbedContext to have latest PluginContext properties
  - watcher isn't in there anymore and a few new properties were added
- fix type errors with stubbedContext
  - give it an intersection with IContext for `info` and `debug`
    verbosity levels
  - force the logging funcs to `any` as they don't quite match the
    Rollup types
  - force them to `any` when deleting them as well because they're not
    optional properties

- Note: would be good to not force so much `any` if possible, but this
  may be difficult without more advanced internal Rollup mocks
  - couldn't find any testing packages for this :/

- test: add verbosity expect for debug too
- refactor: context2 -> context
  - there wasn't another one, so just use the same name consistently
    - I'm guessing there was another one at some point in the
      development of this and then it was removed but not renamed

* lint: add __tests__ to lint dirs, fix lint errors

- surprisingly only in jest.config.js?

- really need to update to @typescript-eslint ...

* ci: add unit tests to matrix

- run after all the builds for now
  - it can be done in parallel as a separate job, but then have to
    duplicate the NPM install etc, so may not be optimal that way

- refactor: add test:watch and test:coverage scripts
  - shortcut scripts so don't have to `npm test -- --coverage" etc
  - also remove `--verbose` from `test` as that's not necessary

* test: add unit tests for createFilter

- increases coverage of get-options-overrides significantly
- couldn't figure out `rootDirs` -- either the code or my tests are
  wrong, so just skip that one for now

- refactor: move makeStubbedContext etc into a shared fixtures dir so
  that it can be used for both rollupcontext tests _and_
  createFilter tests
  - in my stylistic opinion, I prefer to put nearly _all_ consts like
    these into fixtures dir
  - configure jest to ignore test helpers in coverage reporting such as
    fixture files

- format: '' -> "", add semicolon in some places
  - I use single quotes and no semicolons, so missed that in a few
    places
    - lint didn't check for that and no prettier auto-format :/

* refactor: use consts, async/await, etc in rollingcache spec

- basically using pre-defined fixture vars instead of ones defined
  inside the test
  - which is more straightforward, easier to read, and less fragile
  - shorter names too
  - left a couple of ones as is where they were only used once very
    quickly -- could make them fixture vars too but 🤷

- use async/await instead of Promises with `done()` etc
- also use more `fs-extra` functions that support Promises instead of
  synchronous `fs` functions (e.g. `existsSync` -> `pathExists`)
  - async should be a small optimization for tests too

- fix: use __temp dir for auto-generated files instead of creating
  them in a fixtures dir and breaking actual fixtures

- format: a few multi-line statements were able to be condensed to a
  single line, so do so
  - esp as multi-line was not helping readability since this is just
    irrelevant test data (may have hampered readability actually)

* docs: add a testing section to CONTRIBUTING.md

- goes over the different ways of running the tests (watch + coverage)
- line about unit and integration tests was moved into this section
  - and altered to reflect the current state of the repo now that a good
    amount of unit tests exist

- also move "Linting and Style" into its own section with a list
- move "fix any failed PR checks" to the top as overall guidance on
  making a PR
  - previously it was in the middle of linting and style, which felt a
    bit disjointed (maybe made sense earlier before builds were in CI?)

- name the last section "Building and Self-Build"; leave content as is
  - well mostly, change the first line as "fastest way to test" is not
    necessarily accurate anymore now that there are actual tests

* fix(test): undo tsTypes -> tsModules changes in source code

- original author, brekk, had made these changes, likely because without
  them, the tests would throw in the source lines where `tsModule` was
  used with things like "Cannot read property 'ModuleKind' of undefined"
  - the actual fix for this is to instead use `setTypescriptModule` from
    tsproxy as this is how it is used in the source
    - it's mainly needed for when an alternate TS is substituted
    - brekk probably didn't know the codebase well enough to know that
    - add `setTypescriptModule` to all specs that need it

- 100% test coverage of tsproxy now too!

- this should hopefully fix the build errors we were getting as well

* test: get host spec customTransformers test working

- it seemed incomplete and that's why it was skipped, no comment there
  stating otherwise, so just modified it a bit to get it to work and
  pass properly

* ci: add Node 14, 16, 18, and macOS, Windows to matrix

- drop Node 10 testing
  - Node 10 went EoL a while ago and was causing the latest version of
    Jest to throw an error
- still test Node 12 since it only went EoL recently, but could drop it
  as well if wanted
  - may want to set `package.json#engines` or update min requirements in
    the README if so, though it likely still works on older Node, we
    just can't easily test it

- add macOS and Windows testing to the matrix since TS and Rollup both
  behave differently on different OSes, in particular with regard to the
  filesystem
  - POSIX paths on Windows, case-insensitivity on macOS

- give the job a name that appears in the PR checks and Actions tab

* refactor: use __temp dir in options-overrides spec

- similar to previous commits, don't use the actual fixtures dir, use
  the `__temp` dir and a subfolder within for this spec file
  specifically so as to not interfere with other tests

* test: 100% coverage for host.ts, refactor host.spec.ts

- test: get the skipped `readFile` test to work
  - `ts.sys.readFile` definitely returns stuff, it's used for snapshots
  - it wasn't working because it was testing the wrong extension,
    `.js` instead of `.ts`
    - I thought this was intentional when I first added consts here, but
      turns out that was actually a mistake by the original author
- refactor: merge the `readFile` tests with the main test suite
  - first I merged them together, but as they were just one-liners, I
    merged them with the first set, since it wasn't particularly
    different from those

- refactor: split up the main test suite into a few commented sections
  - core snapshot functionality, fs functionality, misc
  - a lot less random now
- refactor: use `getDirectories` on the testDir instead of project root
  - much less fragile to use the dir generated here, and no hack-ish
    `arrayContaining()` either
- refactor: one-line the case-insensitive test
  - that simplifies it a lot!
- refactor: use fixed consts for the repetitive default config
  - and use a `testOpts` variable for less fragile testing

- test: add tests for version 2 branches of snapshot funcs
  - these weren't tested before so it had only tested the `|| 0` branch
    of the conditional
  - also actually test `reset` instead of calling it at the beginning
- refactor: no more "dirty checking" of instances' private interfaces
  - we're testing it all through the public interfaces instead!

- test: add a simple test for the new `trace` method

- test: coverage for `after` and `afterDeclarations` transformers
- test: coverage for different `undefined` states of transformers
  - refactor the two test suites as one for `undefined` and one for
    all 3 transformers
  - and put the working one first for naming purposes
  - refactor the `setLanguageService` call as a simpler type coercion
  - remove the transformer interactions in the main test suite

- yea, this is a big commit, but I was refactoring everything anyway and
  this is probably gonna be squashed anyway

* refactor: remove remaining "dirty checking of instance as any"

- no need to check private interfaces in these remaining tests, the
  functionality itself is already tested via the public interface

* fix(test): get tests working on Ubuntu and Windows

- host is only case-sensitive on Linux
  - prev was everything except Windows; so flipped the conditional a bit
- host and TS itself use "/" normalized paths, so use those
  - and add a hacky workaround for a TS bug I managed to find

- formatHost will use OS separators, so no "/"
  - make the test more accurate and less fragile by comparing to
    `process.cwd()` as well -- which should normalize on Windows

* refactor: use consts and shrink check-tsconfig

- think it's a bit easier to read this way, it's only 3 tests after all

* refactor: remove normalizePaths func from get-options-overrides spec

- this isn't necessary and added some complexity (and verbosity)
  - only one dir that needs normalization anymore, and that's just the
    cache dir, so just add it to the const/var fixture instead

- shrink the code a bit as a result too
  - and use a bit different code style to shrink it too

- annnd found a Windows bug in get-options-overrides.ts here too...
  - leave a `// TODO: ` comment here to fix the source as this PR is
    solely focused on tests (i.e. no source changes)

Co-authored-by: Brekk <brekk@brekkbockrath.com>
Co-authored-by: bbockrath <bbockrath@goodgamestudios.com>
2022-05-10 18:04:56 -04:00
Anton Gilgur
e5b276b270
deps: remove unneeded @types/colors package (#319)
- it had a deprecation warning on install stating that types were
  built-in now
  - confirmed that my editor picks up the types fine without and that
    builds still work

- auto-alphabetize deps
- update package-lock.json version to match package.json version
  - NPM did both of these automatically when I ran `npm install`
2022-05-04 10:11:03 -06:00
ezolenko
4a69b0dbcb - package version 2022-04-21 11:58:44 -06:00
ezolenko
08d2f5bcad - removing semver dependency (refuses to be rolled up for some reason)
- updating dependencies
2022-04-21 11:58:01 -06:00
ezolenko
5a3e58b277 - dependencies 2022-04-21 11:44:23 -06:00
ezolenko
0df5362d39 - updating dependencies 2022-04-21 11:37:40 -06:00
ezolenko
f84afe983b - updating dependencies 2022-04-21 11:30:01 -06:00
ezolenko
ff8895103c - prefix on errors #300 2022-03-04 22:37:24 -07:00
bluelovers
1008a43abf
chore: should not lock deps version (#293) 2021-12-14 12:40:29 -07:00
ezolenko
21f67e9540 - updating tslib version in dependencies 2021-12-09 10:14:14 -07:00
ezolenko
a9e617a4b0 - package version 2021-11-23 10:23:37 -07:00
ezolenko
b9c2529099 - package version to 31.1 2021-11-23 10:19:10 -07:00
ezolenko
ef4725b5c8 - updating object-hash to 2.2.0 #291 2021-11-23 10:17:44 -07:00
ezolenko
86296a7e7d - package version 2021-11-16 17:49:58 -07:00
ezolenko
c4bfe211eb - removing rollup watch dependency and running npm audit fix 2021-11-16 17:34:59 -07:00
bluelovers
34005979e9 fix(tslib): https://github.com/ezolenko/rollup-plugin-typescript2/issues/286 2021-11-04 02:10:43 +08:00
ezolenko
b76ff690be - updating dependencies 2021-05-19 13:28:15 -06:00
dependabot[bot]
37668fec8b
Bump lodash from 4.17.20 to 4.17.21 (#269)
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.20 to 4.17.21.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.20...4.17.21)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-05-19 13:16:13 -06:00
ezolenko
8fd8595c0f - self-build to 0.30.0 2021-02-18 09:38:03 -07:00
ezolenko
b6b3738163 - package version 2021-02-18 09:36:03 -07:00
ezolenko
c6f6e52933 - updating dependencies, version to 0.30.0 2021-02-18 09:30:07 -07:00
ezolenko
bd2e04317b - updating dependencies 2020-12-17 16:24:08 -07:00
ezolenko
5ce7676ad0 - package version 2020-10-30 13:05:08 -06:00
ezolenko
5ab0e788e1 - package version 2020-10-30 13:01:58 -06:00
ezolenko
35b04d73ab - package version 2020-10-16 14:05:05 -06:00
ezolenko
fc2274d2ea - package version
- syntax
2020-10-02 10:49:00 -06:00
ezolenko
2f51110a8c - package version 2020-09-25 14:03:34 -06:00
ezolenko
2cace3fd80 - updating dependencies 2020-09-25 13:43:38 -06:00
ezolenko
dcf59ac488 - package version 2020-08-07 12:23:51 -06:00
ezolenko
76274d421b - updating dependencies 2020-08-07 12:04:35 -06:00
dependabot[bot]
b33126ba66
Bump lodash from 4.17.15 to 4.17.19 (#233)
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.19.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.19)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-08-07 11:28:04 -06:00
ezolenko
428140bd22 - package version 2020-05-12 13:13:08 -06:00
Alex Lende
b4a25cc48d Update tslb 2020-05-07 11:17:26 -05:00
ezolenko
294d654f34 - package version 2020-03-27 00:08:57 -06:00
ezolenko
69502e151b - updating dependencies 2020-03-26 23:55:01 -06:00
ezolenko
034abe0a83 - updating dependencies 2020-03-26 23:45:45 -06:00
Tiger Oakes
c6c733fcb5 Use imports with @rollup/pluginutils 2020-03-26 11:07:35 -07:00
Eugene Zolenko
ac821249f3 - package version 2020-02-11 17:33:17 -07:00
Eugene Zolenko
417c8e53b8 - package version 2020-02-11 16:21:47 -07:00
Eugene Zolenko
c88688c5b1 - updating dependencies 2020-02-11 16:20:10 -07:00
Anton Gilgur
9afc8df0a1 (fix): upgrade object-hash to support async/await syntax
- object-hash v2.0.2 adds/fixes support for async functions
  - object-hash v2 has no breaking changes, just drops testing of
    Node < 6
    - Node 5 was EOL April 2018, and on top of that Node 6
      was EOL April 2019, and Node 8 was EOL December 2019, so this is
      still more tested support than is necessary

- objectHashIgnoreUnknownHack isn't useful for its original purpose to
  workaround this, but is still useful for other types of
  objects/syntaxes that object-hash may not handle yet
  (e.g. async generator functions), so leave the hack in
  - might be good to add a warning though? so that those who used this
    option for async/await can upgrade and remove it (and have a
    stable cache again)
2020-02-10 21:26:42 -05:00
Eugene Zolenko
531f5f0a1b - package version 2019-12-03 10:28:31 -07:00
Eugene Zolenko
7e9f5c8c9f - package version 2019-11-05 11:02:44 -07:00
Marijn Haverbeke
46c3127db2 Upgrade rollup to fix failure to emit declarations 2019-11-04 14:09:18 +01:00
Eugene Zolenko
f330ba580e - updating build scripts to cleanup before build 2019-10-28 11:09:58 -06:00