···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: "graphql-web-lite@16.6.0-1"
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-lite/blob/main/CODE_OF_CONDUCT.md)
4646+ required: true
+8
.github/ISSUE_TEMPLATE/config.yml
···11+blank_issues_enabled: true
22+contact_links:
33+ - name: Ask a question
44+ url: https://github.com/0no-co/graphql-web-lite/discussions
55+ about: Ask questions and discuss with other community members
66+ - name: Join the Discord
77+ url: https://discord.gg/Hw8FR8qKfC
88+ 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+-->
+164
CONTRIBUTING.md
···11+# Development
22+33+Thanks for contributing! We want to ensure that `graphql-web-lite` evolves
44+and fulfills its idea of being a drop-in alias replacement to make your
55+client-side GraphQL smaller and faster!
66+77+## How to contribute?
88+99+We follow fairly standard but lenient rules around pull requests and issues.
1010+Please pick a title that describes your change briefly, optionally in the imperative
1111+mood if possible.
1212+1313+If you have an idea for a feature or want to fix a bug, consider opening an issue
1414+first. We're also happy to discuss and help you open a PR and get your changes
1515+in!
1616+1717+- If you have a question, try [creating a GitHub Discussions thread.](https://github.com/0no-co/graphql-web-lite/discussions/new/choose)
1818+- If you think you've found a bug, [open a new issue.](https://github.com/0no-co/graphql-web-lite/issues/new)
1919+- or, if you found a bug you'd like to fix, [open a PR.](https://github.com/0no-co/graphql-web-lite/compare)
2020+- If you'd like to propose a change [open an RFC issue.](https://github.com/0no-co/graphql-web-lite/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).
2121+2222+### What are the issue conventions?
2323+2424+There are **no strict conventions**, but we do have two templates in place that will fit most
2525+issues, since questions and other discussion start on GitHub Discussions. The bug template is fairly
2626+standard and the rule of thumb is to try to explain **what you expected** and **what you got
2727+instead.** Following this makes it very clear whether it's a known behavior, an unexpected issue,
2828+or an undocumented quirk.
2929+3030+### How do I propose changes?
3131+3232+We follow an **RFC proposal process**. This allows anyone to propose a new feature or a change, and
3333+allows us to communicate our current planned features or changes, so any technical discussion,
3434+progress, or upcoming changes are always **documented transparently.** You can [find the RFC
3535+template](https://github.com/0no-co/graphql-web-lite/issues/new/choose) in our issue creator.
3636+3737+### What are the PR conventions?
3838+3939+This also comes with **no strict conventions**. We only ask you to follow the PR template we have
4040+in place more strictly here than the templates for issues, since it asks you to list a summary
4141+(maybe even with a short explanation) and a list of technical changes.
4242+4343+If you're **resolving** an issue please don't forget to add `Resolve #123` to the description so that
4444+it's automatically linked, so that there's no ambiguity and which issue is being addressed (if any)
4545+4646+You'll find that a comment by the "Changeset" bot may pop up. If you don't know what a **changeset**
4747+is and why it's asking you to document your changes, read on at ["How do I document a change for the
4848+changelog"](#how-do-i-document-a-change-for-the-changelog)
4949+5050+We also typically **name** our PRs with a slightly descriptive title, e.g. `feat: Title`.
5151+5252+## How do I set up the project?
5353+5454+Luckily it's not hard to get started. You can install dependencie
5555+[using `pnpm`](https://pnpm.io/installation#using-corepack).
5656+Please don't use `npm` or `yarn` to respect the lockfile.
5757+5858+```sh
5959+pnpm install
6060+```
6161+6262+There are multiple commands you can run in the root folder to test your changes:
6363+6464+```sh
6565+# TypeScript checks:
6666+pnpm run check
6767+6868+# Linting (prettier & eslint):
6969+pnpm run lint
7070+7171+# Unit Tests:
7272+pnpm run test
7373+7474+# Builds:
7575+pnpm run build
7676+```
7777+7878+## How do I test my changes?
7979+8080+It's always good practice to run the tests when making changes. If you're unsure which packages
8181+may be affected by your new tests or changes you may run `pnpm test` in the root of
8282+the repository.
8383+8484+If your editor is not set up with type checks you may also want to run `pnpm run check` on your
8585+changes.
8686+8787+Additionally you can head to any example in the `examples/` folder
8888+and run them. There you'll also need to install their dependencies as they're isolated projects,
8989+without a lockfile and without linking to packages in the monorepos.
9090+All examples are started using the `package.json`'s `start` script.
9191+9292+## How do I lint my code?
9393+9494+We ensure consistency in this codebase using `eslint` and `prettier`.
9595+They are run on a `precommit` hook, so if something's off they'll try
9696+to automatically fix up your code, or display an error.
9797+9898+If you have them set up in your editor, even better!
9999+100100+## How do I document a change for the changelog?
101101+102102+This project uses [changesets](https://github.com/atlassian/changesets). This means that for
103103+every PR there must be documentation for what has been changed and which package is affected.
104104+105105+You can document a change by running `changeset`, which will ask you which packages
106106+have changed and whether the change is major/minor/patch. It will then ask you to write
107107+a change entry as markdown.
108108+109109+```sh
110110+# In the root of the urql repository call:
111111+pnpm changeset
112112+```
113113+114114+This will create a new "changeset file" in the `.changeset` folder, which you should commit and
115115+push, so that it's added to your PR.
116116+This will eventually end up in the package's `CHANGELOG.md` file when we do a release.
117117+118118+You won't need to add a changeset if you're simply making "non-visible" changes to the docs or other
119119+files that aren't published to the npm registry.
120120+121121+[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)
122122+123123+## How do I release new versions of our packages?
124124+125125+Hold up, that's **automated**! Since we use `changeset` to document our changes, which determines what
126126+goes into the changelog and what kind of version bump a change should make, you can also use the
127127+tool to check what's currently posed to change after a release batch using: `pnpm changeset status`.
128128+129129+We have a [GitHub Actions workflow](./.github/workflow/release.yml) which is triggered whenever new
130130+changes are merged. It will always open a **"Version Packages" PR** which is kept up-to-date. This PR
131131+documents all changes that are made and will show in its description what all new changelogs are
132132+going to contain for their new entries.
133133+134134+Once a "Version Packages" PR is approved by a contributor and merged, the action will automatically
135135+take care of creating the release, publishing all updated packages to the npm registry, and creating
136136+appropriate tags on GitHub too.
137137+138138+This process is automated, but the changelog should be checked for errors.
139139+140140+As to **when** to merge the automated PR and publish? Maybe not after every change. Typically there
141141+are two release batches: hotfixes and release batches. We expect that a hotfix for a single package
142142+should go out as quickly as possible if it negatively affects users. For **release batches**
143143+however, it's common to assume that if one change is made to a package that more will follow in the
144144+same week. So waiting for **a day or two** when other changes are expected will make sense to keep the
145145+fatigue as low as possible for downstream maintainers.
146146+147147+## How do I upgrade all dependencies?
148148+149149+It may be a good idea to keep all dependencies on this repository **up-to-date** every now and
150150+then. Typically we do this by running `pnpm update --interactive --latest` and checking one-by-one
151151+which dependencies will need to be bumped. In case of any security issues it may make sense to
152152+just run `pnpm update [package]`.
153153+154154+While this is rare with `pnpm`, upgrading some transitive dependencies may accidentally duplicate
155155+them if two packages depend on different compatible version ranges. This can be fixed by running:
156156+157157+```sh
158158+pnpm dedupe
159159+pnpm install
160160+```
161161+162162+It's common to then **create a PR** (with a changeset documenting the packages that need to reflect
163163+new changes if any `dependencies` have changed) with the name of
164164+"(chore) - Upgrade direct and transitive dependencies" or something similar.
+2-1
LICENSE
LICENSE.md
···11MIT License
2233-Copyright (c) GraphQL Contributors
33+Copyright (c) GraphQL maintainers,
44+Copyright (c) 0no.co
4556Permission is hereby granted, free of charge, to any person obtaining a copy
67of this software and associated documentation files (the "Software"), to deal