HedgeDoc - Ideas grow better together
Find a file
Tilman Vatteroth 8e2d59ff3c fix(commons): replace microbundle with bash based compile script
The commons package ships wrong types because it is refering to the same files for the ESM and the CJS build.
See https://arethetypeswrong.github.io/?p=%40mrdrogdrog%2Foptional%401.1.0

This happens because microbundle can handle the generation of `.mjs` and `.cjs` from files itself but delegates the generation of types entirely to typescript by running it once. Microbundle uses the "type" field from the package.json to know if a `.js` file is meant to be mjs or cjs and generates the other type by using the specific file extension `.cjs` and `.mjs` (so if your package is a `type: module`, then `.js` file are interpreted as ECMAModule and if you have a commonjs file you need to name it `.cjs`).  But this causes a problem with typescript. If you use typescript with the newer module resolver then it expects the type declarations to be named exactly like the file you wanna import. So if you have a `.js` file it will try to look up types in a `.d.ts` file. If it is resolving a `.mjs` file it is looking for a `.d.mts` file.

This clashes with the types generated by microbundle because you can't use a `.mjs` file with a `.d.ts` file.

Running typescript multiple times can also be complicated.
When generating type declaration files, typescript takes a look at the source file extension. So a `.mts` file will generate a `.mjs` and a `.d.mts` file. A `.ts` will generate a `.js` and `.d.ts` file. It doesn't matter if you run microbundle on `.ts`, `.mts` or `.cjs` files, it will only generate the type declarations once.

How do you get the other type declaration? To solve this problem you either have to run typescript multiple times and manipulate the input or output data to have correct `.d.mts` / `.d.cts` files AND imports... or do what this PR changes.

It runs typescript multiple times but places the complied files in different directories. It then places a package.json in both directories which declares if `.js` is commonjs or ESM.
This way the resolver is happy because it can import `.js` files according to the package.json content and typescript is happy because it can find type declarations. And because package.json files are inheriting properties from other package.json files no necessary file is missing.

Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de>
2023-07-30 14:56:29 +02:00
.github chore(deps): update github/codeql-action action to v2.21.2 2023-07-29 13:35:01 +00:00
.idea/copyright fix: add license file for hedgedoc.xml 2023-06-21 15:31:10 +02:00
.reuse fix: add yarn license files 2023-06-21 15:31:10 +02:00
.yarn chore(deps): adjust license for yarn 2023-07-01 22:13:54 +02:00
backend fix(deps): update dependency @mrdrogdrog/optional to v1.2.1 2023-07-30 11:51:05 +02:00
commons fix(commons): replace microbundle with bash based compile script 2023-07-30 14:56:29 +02:00
dev-reverse-proxy feat: add turbo task for "start" 2023-07-06 10:44:48 +02:00
docker fix(docker): remove docker image hashes from example docker-compose.yml 2023-03-28 09:13:29 +02:00
docs chore(deps): update dependency mkdocs to v1.5.1 2023-07-30 10:04:30 +02:00
frontend fix(commons): replace microbundle with bash based compile script 2023-07-30 14:56:29 +02:00
LICENSES feat(frontend): replace forkawesome with bootstrap icons 2023-02-24 14:31:17 +01:00
.dockerignore misc: add turbo monorepo util 2023-02-07 21:38:40 +01:00
.env.example refactor: move .env file to repo root 2023-03-26 15:53:49 +02:00
.env.example.license refactor: move .env file to repo root 2023-03-26 15:53:49 +02:00
.gitattributes fix(repo): fix gitattributes 2022-12-01 23:51:51 +01:00
.gitignore fix: add .env to gitignore 2023-02-12 22:10:31 +01:00
.mailmap Update mailmap and AUTHORS 2022-01-23 22:13:54 +01:00
.mailmap.license
.nvmrc chore(deps): update dependency node to v20.5.0 2023-07-22 11:44:17 +02:00
.nvmrc.license fix: move nvmrc into root directory 2023-02-12 22:10:31 +01:00
.yarnrc.yml chore(deps): update yarn to v3.6.1 2023-07-01 22:13:54 +02:00
AUTHORS fix(repository): merge authors file 2022-11-20 21:49:56 +01:00
CODE_OF_CONDUCT.md
codecov.yml fix(ci): move codecov config to top-level 2022-11-20 23:02:13 +01:00
CONTRIBUTING.md docs: added sign-off guide to CONTRIBUTING.md 2021-12-18 15:47:12 +01:00
eslint-local-rules.js build: add eslint rule forbidding TypeORM Equal constructor 2023-03-25 16:29:14 +01:00
LICENSE fix: add new slogan 2023-07-11 21:17:19 +02:00
package.json chore(deps): update dependency @types/react to v18.2.17 2023-07-26 18:28:07 +00:00
package.json.license feat(package): adjust packages to workspaces 2022-12-04 20:59:46 +01:00
README.md fix(docs): adjust frontend and reverse proxy docs 2022-11-20 21:49:56 +01:00
renovate.json fix: configure renovate to pin yjs patch 2023-06-17 07:51:07 +02:00
renovate.json.license
SECURITY.md docs(SECURITY): Shift vulnerability reporting directly to GitHub 2023-01-24 20:07:39 +01:00
turbo.json ci: add workflow to lint documentation 2023-07-09 20:07:07 +02:00
turbo.json.license misc: add turbo monorepo util 2023-02-07 21:38:40 +01:00
yarn.lock fix(commons): replace microbundle with bash based compile script 2023-07-30 14:56:29 +02:00
yarn.lock.license feat(package): adjust packages to workspaces 2022-12-04 20:59:46 +01:00

HedgeDoc Logo

#HedgeDoc on matrix.org version POEditor Mastodon Twitter REUSE Compliance Check Nest.JS CI codecov

HedgeDoc lets you create real-time collaborative markdown notes.

Getting Started

State of the project

HedgeDoc 1.x is stable and used around the world, but the codebase has grown over time, making it hard to add new features.
We are currently working on HedgeDoc 2, a complete rewrite of HedgeDoc. Please note the following:

  • This branch contains the latest development code and does not implement all features yet. If you are looking for the 1.x source code, have a look at the master branch.
  • The 1.x release is maintenance-only. We do not accept feature requests or PRs for this release anymore and may choose to close non-critical bug reports, if the bug will be non-existent in 2.0.
  • HedgeDoc 2 will be split in two components. The backend and the frontend. Both are present in this repository.

Development

Information for setting up a local development environment can be found in the developer documentation

HedgeDoc 2 UI Test

Curious about the new look and feel of HedgeDoc 2? We provide a demo of the new UI on hedgedoc.dev. This version uses mocked data and has no data persistence.

The UI test is hosted by netlify. Please check their privacy policy as well as ours.

Contributions

We welcome contributions!
Have a look at our contribution docs to find out how you can help. If you want to contribute to HedgeDoc 2, please join our development chat.

License

Licensed under AGPLv3. For our list of contributors, see AUTHORS.

The license does not include the HedgeDoc logo, whose terms of usage can be found in the github repository.