I noticed that:
- The web and electron versions of our `uuid` module both looked exactly
the same…
- …and deferred to the `uuid` package…
- …and the async version just called the sync API.
So now we will just use the `uuid` package directly everywhere.
This significantly speeds up `yarn lint` for me. It also ensures we’re
listing all source files in the project, including the `.eslintrc` files
and any other files that may be present.
This PR converts everything (aside from electron) from CommonJS to ESM.
It is needed to reduce the changes that will happen during the migration
to Typescript (as TS does not play nice with CJS).
Basically:
- rewrite `require()` to `import`
- rewrite `module.exports` to `exports`
- introduce `ts-node` to run importers so we can convert them to TS too
Lastly, sorry for this larg-ish PR, not my preference but when I tried
to reduce its scope, I would end up with mixed commons/esm that was even
more tricky to handle.
* Make it easier to build the bundle.api.js for the API
* Remove budgetId parameter, move config to top level of API
* that’s a breaking change
* Add support for signing into the server in init()
* Add api.downloadBudget(syncId, { password }) method
* Fix lint errors
* Refactor: extract out getSyncError
* api/download-budget: sync if possible instead of downloading
* Don’t bother with fetching remote files and installing key if the file is local
* *groupId
* FIx lint issues
* Remove extra close+reopen
* Refactor out duplicate load-budget logic
* Trailing commas