Skip to content

Q: Is there interest in adding more assertion libraries? #22

Open

Description

@wooorm

Background

I’m using assertions in micromark. It’s a complex parser using state machines. It’s also extendable with plugins. So assertions makes it much easier to reason about.

I’m using an export map to differentiate between code that does have assertions, and code that doesn’t: https://github.com/micromark/micromark/blob/a03a08ce677b91a2960be2f4fcaacd64b3b8ec18/packages/micromark/package.json#L55-L58. Most people will get unasserted files. With node --conditions development, code with assertions is loaded. This is very useful when making plugins.

Problem

  • However, some browser bundlers (Vite, webpack), don’t load assert normally. While users can configure their bundlers, micromark is often used through many other packages, and I’d rather have everything just work by default
  • power-assert contains tons of code and also doesn’t bundle well in at least webpack.

Solution

  • I could either create a new, small, typed assert library, or perhaps use something like uvu/assert
  • Is unassert interested in adding support for more libraries, and if so, what are the requirements?

I can do the work on adding one.

/cc @twada

Related-to: micromark/micromark#87, micromark/micromark#95.

Activity

  1. falsandtru commented on Oct 8, 2021

    @falsandtru

    Have you tried to change the options?

    https://github.com/unassert-js/unassert#options

  2. wooorm commented on Oct 8, 2021

    @wooorm
    Author

    Ah. Thanks and sorry.

    My question is most specifically about https://github.com/unassert-js/babel-plugin-unassert/blob/210a5c6e45c0c3d6d963f6f21efcf9d0094f177e/index.js#L29, because I’m using that, and I don’t think it has such an option. I posted it here as this was more a question for the whole unassert org

  3. wooorm commented on Oct 8, 2021

    @wooorm
    Author

    But if there’s an option here already, then there could perhaps also be an option there to allow other values than ['assert', 'node:assert', 'power-assert']?

  4. twada commented on Oct 8, 2021

    @twada
    Member

    Hello @wooorm, and thanks to @falsandtru. That's a nice suggestion and relatively easy add some import/require options to babel-plugin-unassert. I'll work on it.

  5. falsandtru commented on Oct 8, 2021

    @falsandtru

    Can you support options also with gulp-unassert?

  6. twada commented on Oct 8, 2021

    @twada
    Member

    @falsandtru Yes. I'll support it. (maybe after #21 or before it since #21 is a little difficult one)

  7. falsandtru commented on Oct 8, 2021

    @falsandtru

    Thanks.

  8. wooorm commented on Oct 8, 2021

    @wooorm
    Author

    This is a very pressing issue for me btw, so I can do the work to support it in the babel plugin if that means it can then be released soonish?

  9. twada commented on Oct 8, 2021

    @twada
    Member

    @wooorm I mean adding options to babel-plugin-unassert is reatively easy, so it will be released soon. Adding options to gulp-unassert is slightly difficult (due to the blocking issue).

  10. wooorm commented on Oct 8, 2021

    @wooorm
    Author

    ah okay, thanks <3

  11. twada commented on Oct 8, 2021

    @twada
    Member

    @wooorm babel-plugin-unassert v3.2.0 is out. Thank you for your suggestion!

    Release v3.2.0: customization options (2021-10-09)

  12. wooorm commented on Oct 8, 2021

    @wooorm
    Author

    That's awesome! Thank you! 🌸

  13. added a commit that references this issue on Oct 9, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions