···11+---
22+name: 'RFC'
33+about: Propose an enhancement / feature and start a discussion
44+title: 'RFC: Your Proposal'
55+labels: "future \U0001F52E"
66+---
77+88+<!--
99+ 🚨 RFCs are for proposed changes (not bugs or questions)
1010+ Specifically they are whenever you'd like to see new features
1111+ being added, or enable new use-cases.
1212+1313+ Please open a Bug Report for issues/bugs, and use GitHub Discussions
1414+ or the Discord channel for questions instead.
1515+-->
1616+1717+## Summary
1818+1919+<!--
2020+ Describe in a couple of words *what* you're proposing.
2121+ If relevant, include *why* this should be addressed now.
2222+ The problem should be clearly stated and the solution
2323+ should be summarised.
2424+-->
2525+2626+## Proposed Solution
2727+2828+<!--
2929+ Explain the solution you're proposing in detail.
3030+ *How* will this change be implemented, and how does it work?
3131+-->
3232+3333+## Requirements
3434+3535+<!--
3636+ This section is *optional*.
3737+ But if your proposed solution has multiple ways
3838+ of being implemented, you don't want to state how
3939+ it may be implemented, or you don't know yet how
4040+ it will be implemented, then:
4141+ *List* what the implementation needs to achieve to fulfil this RFC;
4242+-->
+46
.github/ISSUE_TEMPLATE/bug_report.yaml
···11+name: "\U0001F41E Bug report"
22+description: Report an issue with graphql.web
33+labels: []
44+body:
55+ - type: markdown
66+ attributes:
77+ value: |
88+ Thanks for taking the time to fill out this bug report!
99+ - type: markdown
1010+ attributes:
1111+ value: |
1212+ Thanks for taking the time to fill out this bug report!
1313+ - type: textarea
1414+ id: bug-description
1515+ attributes:
1616+ label: Describe the bug
1717+ description: Please describe your bug clearly and concisely.
1818+ placeholder: Bug description
1919+ validations:
2020+ required: true
2121+ - type: input
2222+ id: reproduction
2323+ attributes:
2424+ label: Reproduction
2525+ description: Please provide a reproduction link, e.g. to a sandbox
2626+ placeholder: Reproduction
2727+ validations:
2828+ required: true
2929+ - type: textarea
3030+ id: version
3131+ attributes:
3232+ label: Package version
3333+ description: The versions of the relevant urql packages you are using
3434+ placeholder: "wonka@6.2.5"
3535+ validations:
3636+ required: true
3737+ - type: checkboxes
3838+ id: checkboxes
3939+ attributes:
4040+ label: Validations
4141+ description: Before submitting the issue, please make sure you do the following
4242+ options:
4343+ - label: I can confirm that this is a bug report, and not a feature request, RFC, question, or discussion, for which GitHub Discussions should be used
4444+ required: true
4545+ - label: Follow our [Code of Conduct](https://github.com/0no-co/graphql.web/blob/main/CODE_OF_CONDUCT.md)
4646+ required: true
+3
.github/ISSUE_TEMPLATE/config.yml
···11blank_issues_enabled: true
22contact_links:
33+ - name: Ask a question
44+ url: https://github.com/@0no-co/wonka/discussions
55+ about: Ask questions and discuss with other community members
36 - name: Join the Discord
47 url: https://discord.gg/3EYgqrYJFS
58 about: Chat with maintainers and other community members
+22
.github/PULL_REQUEST_TEMPLATE.md
···11+<!--
22+ Thanks for opening a pull request! We appreciate your dedication and help!
33+ Before submitting your pull request, please make sure to read our CONTRIBUTING guide.
44+55+ The best contribution is always a PR, but please make sure to open an issue or discuss
66+ your changes first, if you’re looking to submit a larger PR.
77+88+ If this PR is already related to an issue, please reference it like so:
99+ Resolves #123
1010+-->
1111+1212+## Summary
1313+1414+<!-- What's the motivation of this change? What does it solve? -->
1515+1616+## Set of changes
1717+1818+<!--
1919+ Roughly list the changes you've made and which packages are affected.
2020+ Leave some notes on what may be noteworthy files you've changed.
2121+ And lastly, please let us know if you think this is a breaking change.
2222+-->
+163
CONTRIBUTING.md
···11+# Development
22+33+Thanks for contributing! We want to ensure that `wonka` evolves
44+and fulfills its idea of being a tiny & capable push & pull stream library!
55+66+## How to contribute?
77+88+We follow fairly standard but lenient rules around pull requests and issues.
99+Please pick a title that describes your change briefly, optionally in the imperative
1010+mood if possible.
1111+1212+If you have an idea for a feature or want to fix a bug, consider opening an issue
1313+first. We're also happy to discuss and help you open a PR and get your changes
1414+in!
1515+1616+- If you have a question, try [creating a GitHub Discussions thread.](https://github.com/0no-co/wonka/discussions/new/choose)
1717+- If you think you've found a bug, [open a new issue.](https://github.com/0no-co/wonka/issues/new)
1818+- or, if you found a bug you'd like to fix, [open a PR.](https://github.com/0no-co/wonka/compare)
1919+- If you'd like to propose a change [open an RFC issue.](https://github.com/0no-co/wonka/issues/new?labels=future+%F0%9F%94%AE&template=RFC.md&title=RFC%3A+Your+Proposal) You can read more about the RFC process [below](#how-do-i-propose-changes).
2020+2121+### What are the issue conventions?
2222+2323+There are **no strict conventions**, but we do have two templates in place that will fit most
2424+issues, since questions and other discussion start on GitHub Discussions. The bug template is fairly
2525+standard and the rule of thumb is to try to explain **what you expected** and **what you got
2626+instead.** Following this makes it very clear whether it's a known behavior, an unexpected issue,
2727+or an undocumented quirk.
2828+2929+### How do I propose changes?
3030+3131+We follow an **RFC proposal process**. This allows anyone to propose a new feature or a change, and
3232+allows us to communicate our current planned features or changes, so any technical discussion,
3333+progress, or upcoming changes are always **documented transparently.** You can [find the RFC
3434+template](https://github.com/0no-co/wonka/issues/new/choose) in our issue creator.
3535+3636+### What are the PR conventions?
3737+3838+This also comes with **no strict conventions**. We only ask you to follow the PR template we have
3939+in place more strictly here than the templates for issues, since it asks you to list a summary
4040+(maybe even with a short explanation) and a list of technical changes.
4141+4242+If you're **resolving** an issue please don't forget to add `Resolve #123` to the description so that
4343+it's automatically linked, so that there's no ambiguity and which issue is being addressed (if any)
4444+4545+You'll find that a comment by the "Changeset" bot may pop up. If you don't know what a **changeset**
4646+is and why it's asking you to document your changes, read on at ["How do I document a change for the
4747+changelog"](#how-do-i-document-a-change-for-the-changelog)
4848+4949+We also typically **name** our PRs with a slightly descriptive title, e.g. `feat: Title`.
5050+5151+## How do I set up the project?
5252+5353+Luckily it's not hard to get started. You can install dependencie
5454+[using `pnpm`](https://pnpm.io/installation#using-corepack).
5555+Please don't use `npm` or `yarn` to respect the lockfile.
5656+5757+```sh
5858+pnpm install
5959+```
6060+6161+There are multiple commands you can run in the root folder to test your changes:
6262+6363+```sh
6464+# TypeScript checks:
6565+pnpm run check
6666+6767+# Linting (prettier & eslint):
6868+pnpm run lint
6969+7070+# Unit Tests:
7171+pnpm run test
7272+7373+# Builds:
7474+pnpm run build
7575+```
7676+7777+## How do I test my changes?
7878+7979+It's always good practice to run the tests when making changes. If you're unsure which packages
8080+may be affected by your new tests or changes you may run `pnpm test` in the root of
8181+the repository.
8282+8383+If your editor is not set up with type checks you may also want to run `pnpm run check` on your
8484+changes.
8585+8686+Additionally you can head to any example in the `examples/` folder
8787+and run them. There you'll also need to install their dependencies as they're isolated projects,
8888+without a lockfile and without linking to packages in the monorepos.
8989+All examples are started using the `package.json`'s `start` script.
9090+9191+## How do I lint my code?
9292+9393+We ensure consistency in this codebase using `eslint` and `prettier`.
9494+They are run on a `precommit` hook, so if something's off they'll try
9595+to automatically fix up your code, or display an error.
9696+9797+If you have them set up in your editor, even better!
9898+9999+## How do I document a change for the changelog?
100100+101101+This project uses [changesets](https://github.com/atlassian/changesets). This means that for
102102+every PR there must be documentation for what has been changed and which package is affected.
103103+104104+You can document a change by running `changeset`, which will ask you which packages
105105+have changed and whether the change is major/minor/patch. It will then ask you to write
106106+a change entry as markdown.
107107+108108+```sh
109109+# In the root of the urql repository call:
110110+pnpm changeset
111111+```
112112+113113+This will create a new "changeset file" in the `.changeset` folder, which you should commit and
114114+push, so that it's added to your PR.
115115+This will eventually end up in the package's `CHANGELOG.md` file when we do a release.
116116+117117+You won't need to add a changeset if you're simply making "non-visible" changes to the docs or other
118118+files that aren't published to the npm registry.
119119+120120+[Read more about adding a `changeset` here.](https://github.com/atlassian/changesets/blob/master/docs/adding-a-changeset.md#i-am-in-a-multi-package-repository-a-mono-repo)
121121+122122+## How do I release new versions of our packages?
123123+124124+Hold up, that's **automated**! Since we use `changeset` to document our changes, which determines what
125125+goes into the changelog and what kind of version bump a change should make, you can also use the
126126+tool to check what's currently posed to change after a release batch using: `pnpm changeset status`.
127127+128128+We have a [GitHub Actions workflow](./.github/workflow/release.yml) which is triggered whenever new
129129+changes are merged. It will always open a **"Version Packages" PR** which is kept up-to-date. This PR
130130+documents all changes that are made and will show in its description what all new changelogs are
131131+going to contain for their new entries.
132132+133133+Once a "Version Packages" PR is approved by a contributor and merged, the action will automatically
134134+take care of creating the release, publishing all updated packages to the npm registry, and creating
135135+appropriate tags on GitHub too.
136136+137137+This process is automated, but the changelog should be checked for errors.
138138+139139+As to **when** to merge the automated PR and publish? Maybe not after every change. Typically there
140140+are two release batches: hotfixes and release batches. We expect that a hotfix for a single package
141141+should go out as quickly as possible if it negatively affects users. For **release batches**
142142+however, it's common to assume that if one change is made to a package that more will follow in the
143143+same week. So waiting for **a day or two** when other changes are expected will make sense to keep the
144144+fatigue as low as possible for downstream maintainers.
145145+146146+## How do I upgrade all dependencies?
147147+148148+It may be a good idea to keep all dependencies on this repository **up-to-date** every now and
149149+then. Typically we do this by running `pnpm update --interactive --latest` and checking one-by-one
150150+which dependencies will need to be bumped. In case of any security issues it may make sense to
151151+just run `pnpm update [package]`.
152152+153153+While this is rare with `pnpm`, upgrading some transitive dependencies may accidentally duplicate
154154+them if two packages depend on different compatible version ranges. This can be fixed by running:
155155+156156+```sh
157157+pnpm dedupe
158158+pnpm install
159159+```
160160+161161+It's common to then **create a PR** (with a changeset documenting the packages that need to reflect
162162+new changes if any `dependencies` have changed) with the name of
163163+"(chore) - Upgrade direct and transitive dependencies" or something similar.
+1-1
LICENSE.md
···11MIT License
2233-Copyright (c) 2018–2022 0no.co
33+Copyright (c) 0no.co
4455Permission is hereby granted, free of charge, to any person obtaining a copy
66of this software and associated documentation files (the "Software"), to deal