diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..9d08a1a --- /dev/null +++ b/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..6f28e15 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +* text=auto +*.lockb binary diff=lockb diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..68282da --- /dev/null +++ b/.github/CODE_OF_CONDUCT.md @@ -0,0 +1,83 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, or sexual identity and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience +* Focusing on what is best not just for us as individuals, but for the overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at chris@stacksjs.org. All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series of actions. + +**Consequence**: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.1, available at [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder][Mozilla CoC]. + +For answers to common questions about this code of conduct, see the FAQ at [https://www.contributor-covenant.org/faq][FAQ]. Translations are available at [https://www.contributor-covenant.org/translations][translations]. + +[homepage]: https://www.contributor-covenant.org +[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html +[Mozilla CoC]: https://github.com/mozilla/diversity +[FAQ]: https://www.contributor-covenant.org/faq +[translations]: https://www.contributor-covenant.org/translations diff --git a/.github/SECURITY.md b/.github/SECURITY.md new file mode 100644 index 0000000..1139343 --- /dev/null +++ b/.github/SECURITY.md @@ -0,0 +1,70 @@ +# Security Policy + +**PLEASE DON'T DISCLOSE SECURITY-RELATED ISSUES PUBLICLY, [SEE BELOW](#reporting-a-vulnerability).** + +## Supported Versions + +Only the latest major version receives security fixes. + +## Reporting a Vulnerability + +If you discover a security vulnerability within this package, please send an email to Chris Breuer at chris@stacksjs.org. All security vulnerabilities will be promptly addressed. + +### Public PGP Key + +``` +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: OpenPGP v2.0.8 +Comment: https://sela.io/pgp/ + +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 +HF/6SiI= +=le/X +-----END PGP PUBLIC KEY BLOCK----- +``` diff --git a/.github/art/cover.png b/.github/art/cover.png new file mode 100644 index 0000000..3989237 Binary files /dev/null and b/.github/art/cover.png differ diff --git a/.github/renovate.json b/.github/renovate.json new file mode 100644 index 0000000..66937d2 --- /dev/null +++ b/.github/renovate.json @@ -0,0 +1,3 @@ +{ + "extends": ["@ow3"] +} diff --git a/.github/stale.yml b/.github/stale.yml new file mode 100644 index 0000000..ece9846 --- /dev/null +++ b/.github/stale.yml @@ -0,0 +1,14 @@ +daysUntilStale: 60 +daysUntilClose: 7 +exemptLabels: + - pinned + - security + - no-stale + - no stale + - pr welcome +staleLabel: stale +markComment: > + This issue has been automatically marked as stale because it has not had + recent activity. It will be closed if no further activity occurs. + Thank you for your contributions. +closeComment: false diff --git a/.github/workflows/README.md b/.github/workflows/README.md new file mode 100644 index 0000000..79d40a0 --- /dev/null +++ b/.github/workflows/README.md @@ -0,0 +1,13 @@ +# GitHub Actions + +This folder contains the following GitHub Actions: + +- [CI][CI] - all CI jobs for the project + - lints the code + - `typecheck`s the code + - runs test suite + - runs on `ubuntu-latest` +- [Release][Release] - automates the release process & changelog generation + +[CI]: ./workflows/ci.yml +[Release]: ./workflows/release.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..d0ab6fe --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,84 @@ +name: CI + +on: + push: + branches: + - main + + pull_request: + branches: + - main + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + lint: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Install Bun + uses: oven-sh/setup-bun@v2 + + - name: Use cached node_modules + uses: actions/cache@v4 + with: + path: node_modules + key: node-modules-${{ hashFiles('**/bun.lockb') }} + restore-keys: | + node-modules- + + - name: Install Dependencies + run: bun install + + - name: Lint + run: bun run lint + + typecheck: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Install Bun + uses: oven-sh/setup-bun@v2 + + - name: Use cached node_modules + uses: actions/cache@v4 + with: + path: node_modules + key: node-modules-${{ hashFiles('**/bun.lockb') }} + restore-keys: | + node-modules- + + - name: Install Dependencies + run: bun install + + - name: Typecheck + run: bun --bun run typecheck + + test: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Install Bun + uses: oven-sh/setup-bun@v2 + + - name: Use cached node_modules + uses: actions/cache@v4 + with: + path: node_modules + key: node-modules-${{ hashFiles('**/bun.lockb') }} + restore-keys: | + node-modules- + + - name: Install Dependencies + run: bun install + + - name: Unit Test + run: bun test diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..e808da4 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,43 @@ +name: CI + +on: + push: + tags: + - 'v*' + +jobs: + release: + name: release + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Install Bun + uses: oven-sh/setup-bun@v2 + + - name: Use cached node_modules + uses: actions/cache@v4 + with: + path: node_modules + key: node-modules-${{ hashFiles('**/bun.lockb') }} + restore-keys: | + node-modules- + + - name: Install Dependencies + run: bun install + + - name: Build the release + run: bun run build + + - name: Publish to npm + run: bun publish --access public + env: + BUN_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} + + - name: Create GitHub release + run: bunx changelogithub + env: + GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a572eb1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,14 @@ +.cache +.DS_Store +.idea +*.log +*.tgz +*.pem +coverage +dist +lib-cov +logs +node_modules +temp +docs/.vitepress/cache +storage diff --git a/.vscode/dictionary.txt b/.vscode/dictionary.txt new file mode 100644 index 0000000..5973a3a --- /dev/null +++ b/.vscode/dictionary.txt @@ -0,0 +1,41 @@ +antfu +biomejs +booleanish +bumpp +bunx +changelogen +changelogithub +codecov +commitlint +commitlintrc +composables +davidanson +degit +deps +destructurable +entrypoints +heroicons +lockb +mkcert +openweb +outdir +outfile +pausable +pkgx +Postcardware +postcompile +prefetch +preinstall +socio +Solana +stacksjs +typecheck +unplugin +unref +upath +vite +vitebook +vitejs +vitepress +vue-demi +vueus diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..a4d6a99 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,9 @@ +{ + // See https://go.microsoft.com/fwlink/?LinkId=827846 + // for the documentation about the extensions.json format + "recommendations": [ + "biomejs.biome", + "streetsidesoftware.code-spell-checker", + "davidanson.vscode-markdownlint" + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..bf5d2c9 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,145 @@ +{ + // Disable the default formatter, use eslint instead + "prettier.enable": false, + "biome.enabled": false, + "editor.formatOnSave": false, + + // Auto fix + "editor.codeActionsOnSave": { + "source.fixAll.eslint": "explicit", + "source.organizeImports": "never" + }, + + // Silent the stylistic rules in you IDE, but still auto fix them + "eslint.rules.customizations": [ + { "rule": "style/*", "severity": "off", "fixable": true }, + { "rule": "format/*", "severity": "off", "fixable": true }, + { "rule": "*-indent", "severity": "off", "fixable": true }, + { "rule": "*-spacing", "severity": "off", "fixable": true }, + { "rule": "*-spaces", "severity": "off", "fixable": true }, + { "rule": "*-order", "severity": "off", "fixable": true }, + { "rule": "*-dangle", "severity": "off", "fixable": true }, + { "rule": "*-newline", "severity": "off", "fixable": true }, + { "rule": "*quotes", "severity": "off", "fixable": true }, + { "rule": "*semi", "severity": "off", "fixable": true } + ], + + // Enable eslint for all supported languages + "eslint.validate": [ + "javascript", + "javascriptreact", + "typescript", + "typescriptreact", + "vue", + "html", + "markdown", + "json", + "jsonc", + "yaml", + "toml", + "xml", + "gql", + "graphql", + "astro", + "svelte", + "css", + "less", + "scss", + "pcss", + "postcss" + ], + + "[stx]": { + "editor.defaultFormatter": "dbaeumer.vscode-eslint" + }, + + // TypeScript + "typescript.tsdk": "${workspaceFolder}/node_modules/typescript/lib", + "unocss.root": "${workspaceFolder}/storage/framework/core/ui/src/uno.config.ts", + // Shell + "[shellscript]": { + "editor.defaultFormatter": "foxundermoon.shell-format" + }, + + // Markdown + "[markdown]": { + "editor.defaultFormatter": "DavidAnson.vscode-markdownlint", + "editor.formatOnSave": true + }, + + "[dockerfile]": { + "editor.defaultFormatter": "foxundermoon.shell-format" + }, + + "markdownlint.config": { + "default": true, + "MD033": { + "allowed_elements": [ + "details", + "summary", + "VPTeamPage", + "VPTeamPageTitle", + "VPTeamMembers", + "script" + ] + }, + "MD041": false + }, + + // Stacks + "vue.inlayHints.missingProps": true, + "typescript.preferGoToSourceDefinition": true, + "files.associations": { + "buddy": "typescript", + "*.stx": "vue" + }, + "editor.quickSuggestions": { + "strings": true + }, + "vsicons.associations.files": [ + { + "icon": "${workspaceFolder}/public/favicon.svg", + "extensions": ["stx"], + "format": "svg" + } + ], + "git.enableSmartCommit": true, + "npm.enableRunFromFolder": true, + "npm.packageManager": "bun", + "editor.gotoLocation.multipleDefinitions": "goto", + "search.exclude": { + "**/node_modules": true, + "**/cdk.out": true, + "**/dist": true, + "**/storage/public": true, + "CHANGELOG.md": true + }, + "explorer.confirmDragAndDrop": false, + "todo-tree.highlights.enabled": true, + "cSpell.ignorePaths": [ + "node_modules", + "lang/de.yml" + ], + "cSpell.dictionaries": [ + "custom-dictionary" + ], + "cSpell.diagnosticLevel": "Hint", + "cSpell.customDictionaries": { + "stacks": { + "name": "custom-dictionary", + "path": "./.vscode/dictionary.txt", + "scope": "user", + "addWords": true + }, + "custom": true // enable the `custom` dictionary + }, + "terminal.integrated.scrollback": 10000, + "grammarly.files.include": [ + "**/README.md", + "**/readme.md", + "**/*.txt" + ], + "grammarly.files.exclude": [ + "**/dictionary.txt" + ], +} diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..ec90a7a --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,68 @@ +# Changelog + + +## v0.0.1...main + +[compare changes](https://github.com/stacksjs/reverse-proxy/compare/v0.0.1...main) + +### 🏡 Chore + +- Wip ([c5e31d5](https://github.com/stacksjs/reverse-proxy/commit/c5e31d5)) +- Wip ([6020df1](https://github.com/stacksjs/reverse-proxy/commit/6020df1)) +- Wip ([be3dde1](https://github.com/stacksjs/reverse-proxy/commit/be3dde1)) +- Wip ([e9e0feb](https://github.com/stacksjs/reverse-proxy/commit/e9e0feb)) +- Wip ([383854c](https://github.com/stacksjs/reverse-proxy/commit/383854c)) +- Wip ([363445b](https://github.com/stacksjs/reverse-proxy/commit/363445b)) +- Add `rp` ([beced3c](https://github.com/stacksjs/reverse-proxy/commit/beced3c)) +- Wip ([99cf0df](https://github.com/stacksjs/reverse-proxy/commit/99cf0df)) +- Wip ([c9341a4](https://github.com/stacksjs/reverse-proxy/commit/c9341a4)) +- Use `bun publish` ([6f6ae9d](https://github.com/stacksjs/reverse-proxy/commit/6f6ae9d)) +- Add tests ([da19c51](https://github.com/stacksjs/reverse-proxy/commit/da19c51)) +- Ignore docs cache ([81f2296](https://github.com/stacksjs/reverse-proxy/commit/81f2296)) +- Use bunx ([ec65717](https://github.com/stacksjs/reverse-proxy/commit/ec65717)) +- Adjust examples ([d4745fc](https://github.com/stacksjs/reverse-proxy/commit/d4745fc)) +- Adjust build process ([1e5c63c](https://github.com/stacksjs/reverse-proxy/commit/1e5c63c)) +- Remove postcompile ([52a9bc6](https://github.com/stacksjs/reverse-proxy/commit/52a9bc6)) +- Remove lint:fix-unsafe ([91ad947](https://github.com/stacksjs/reverse-proxy/commit/91ad947)) + +### ❤️ Contributors + +- Chris + +## ...main + + +### 🏡 Chore + +- Initial commit ([beb4d96](https://github.com/stacksjs/reverse-proxy/commit/beb4d96)) +- Wip ([8e3fce6](https://github.com/stacksjs/reverse-proxy/commit/8e3fce6)) +- Wip ([bbb6783](https://github.com/stacksjs/reverse-proxy/commit/bbb6783)) +- Wip ([2cfb363](https://github.com/stacksjs/reverse-proxy/commit/2cfb363)) +- Wip ([6bb85ac](https://github.com/stacksjs/reverse-proxy/commit/6bb85ac)) +- Wip ([602c9e1](https://github.com/stacksjs/reverse-proxy/commit/602c9e1)) +- Wip ([5986105](https://github.com/stacksjs/reverse-proxy/commit/5986105)) +- Wip ([c2bfec6](https://github.com/stacksjs/reverse-proxy/commit/c2bfec6)) +- Wip ([454dd58](https://github.com/stacksjs/reverse-proxy/commit/454dd58)) +- Wip ([b55ae41](https://github.com/stacksjs/reverse-proxy/commit/b55ae41)) +- Wip ([e2f1350](https://github.com/stacksjs/reverse-proxy/commit/e2f1350)) +- Wip ([61b2aa5](https://github.com/stacksjs/reverse-proxy/commit/61b2aa5)) +- Wip ([a80283b](https://github.com/stacksjs/reverse-proxy/commit/a80283b)) +- Wip ([97b9b16](https://github.com/stacksjs/reverse-proxy/commit/97b9b16)) +- Wip ([fc8d633](https://github.com/stacksjs/reverse-proxy/commit/fc8d633)) +- Wip ([e924f9c](https://github.com/stacksjs/reverse-proxy/commit/e924f9c)) +- Wip ([249e8fa](https://github.com/stacksjs/reverse-proxy/commit/249e8fa)) +- Wip ([1045bb1](https://github.com/stacksjs/reverse-proxy/commit/1045bb1)) +- Wip ([c0a8bad](https://github.com/stacksjs/reverse-proxy/commit/c0a8bad)) +- Wip ([f28b118](https://github.com/stacksjs/reverse-proxy/commit/f28b118)) +- Wip ([712a5bf](https://github.com/stacksjs/reverse-proxy/commit/712a5bf)) +- Wip ([2786e8d](https://github.com/stacksjs/reverse-proxy/commit/2786e8d)) +- Wip ([1290366](https://github.com/stacksjs/reverse-proxy/commit/1290366)) +- Wip ([030a8b7](https://github.com/stacksjs/reverse-proxy/commit/030a8b7)) +- Wip ([2116f75](https://github.com/stacksjs/reverse-proxy/commit/2116f75)) +- Wip ([5352f7a](https://github.com/stacksjs/reverse-proxy/commit/5352f7a)) +- Wip ([1b99dd0](https://github.com/stacksjs/reverse-proxy/commit/1b99dd0)) + +### ❤️ Contributors + +- Chris + diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..1aef080 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,21 @@ +# MIT License + +Copyright (c) 2024 Open Web Foundation + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..7def904 --- /dev/null +++ b/README.md @@ -0,0 +1,128 @@ +

Social Card of this repo

+ +[![npm version][npm-version-src]][npm-version-href] +[![GitHub Actions][github-actions-src]][github-actions-href] +[![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/) + + + +# A Faster Developer Experience + +> ... + +## Features + +- Fast .d.ts generation +- Configurable +- +- Ships with binary +- Bun-powered + +## Install + +```bash +bun install -d dts-generation +``` + + + +## Get Started + +There are two ways of using this dts generation tool: _as a library or as a CLI._ + +### Library + +Given the npm package is installed: + +```js +import { generate } from 'dts-generation' + +generate() +``` + +### CLI + +```bash +dts-generation ... +dts-generation --help +dts-generation --version +``` + +## Configuration + +The Reverse Proxy can be configured using a `dts.config.ts` _(or `dts.config.js`)_ file and it will be automatically loaded when running the `dts-generation` command. + +```ts +// dts.config.ts (or dts.config.js) +export default {} +``` + +_Then run:_ + +```bash +dts-generation generate +``` + +To learn more, head over to the [documentation](https://dts-generation.sh/). + +## Testing + +```bash +bun test +``` + +## Changelog + +Please see our [releases](https://github.com/stacksjs/stacks/releases) page for more information on what has changed recently. + +## Contributing + +Please review the [Contributing Guide](https://github.com/stacksjs/contributing) for details. + +## Community + +For help, discussion about best practices, or any other conversation that would benefit from being searchable: + +[Discussions on GitHub](https://github.com/stacksjs/stacks/discussions) + +For casual chit-chat with others using this package: + +[Join the Stacks Discord Server](https://discord.gg/stacksjs) + +## Postcardware + +Two things are true: Stacks OSS will always stay open-source, and we do love to receive postcards from wherever Stacks is used! 🌍 _We also publish them on our website. And thank you, Spatie_ + +Our address: Stacks.js, 12665 Village Ln #2306, Playa Vista, CA 90094 + +## Sponsors + +We would like to extend our thanks to the following sponsors for funding Stacks development. If you are interested in becoming a sponsor, please reach out to us. + +- [JetBrains](https://www.jetbrains.com/) +- [The Solana Foundation](https://solana.com/) + +## Credits + +- [Chris Breuer](https://github.com/chrisbbreuer) +- [All Contributors](../../contributors) + +## License + +The MIT License (MIT). Please see [LICENSE](https://github.com/stacksjs/stacks/tree/main/LICENSE.md) for more information. + +Made with 💙 + + +[npm-version-src]: https://img.shields.io/npm/v/@stacksjs/reverse-proxy?style=flat-square +[npm-version-href]: https://npmjs.com/package/@stacksjs/reverse-proxy +[github-actions-src]: https://img.shields.io/github/actions/workflow/status/stacksjs/reverse-proxy/ci.yml?style=flat-square&branch=main +[github-actions-href]: https://github.com/stacksjs/reverse-proxy/actions?query=workflow%3Aci + + diff --git a/bin/cli.ts b/bin/cli.ts new file mode 100644 index 0000000..a03cbe7 --- /dev/null +++ b/bin/cli.ts @@ -0,0 +1,33 @@ +import { log, CAC } from '@stacksjs/cli' +import { version } from '../package.json' +import { config } from '../src/config' +import { generate } from '../src/generate' +import type { DtsGenerationOption } from '../src/types' + +const cli = new CAC('dts-generation') + +cli + .command('start', 'Start the Reverse Proxy Server') + .option('--from ', 'The URL to proxy from') + .option('--to ', 'The URL to proxy to') + .option('--keyPath ', 'Absolute path to the SSL key') + .option('--certPath ', 'Absolute path to the SSL certificate') + .option('--verbose', 'Enable verbose logging', { default: false }) + .example('reverse-proxy start --from localhost:3000 --to my-project.localhost') + .example('reverse-proxy start --from localhost:3001 --to my-project.localhost/api') + .example('reverse-proxy start --from localhost:3000 --to localhost:3001') + .example( + 'reverse-proxy start --from localhost:3000 --to my-project.test --keyPath /absolute/path/to/key --certPath /absolute/path/to/cert', + ) + .action(async (options?: DtsGenerationOption) => { + // + }) + +cli.command('version', 'Show the version of the Reverse Proxy CLI').action(() => { + // eslint-disable-next-line no-console + console.log(version) +}) + +cli.version(version) +cli.help() +cli.parse() diff --git a/build.ts b/build.ts new file mode 100644 index 0000000..890452f --- /dev/null +++ b/build.ts @@ -0,0 +1,23 @@ +import { log } from '@stacksjs/cli' +import { $ } from 'bun' +import dts from 'bun-plugin-dts-auto' + +log.info('Building...') + +await Bun.build({ + entrypoints: ['./src/index.ts', './bin/cli.ts'], + outdir: './dist', + format: 'esm', + target: 'bun', + external: ['rollup', 'fsevents'], + plugins: [dts()], +}) + +await $`cp ./dist/src/index.js ./dist/index.js` +await $`rm -rf ./dist/src` +await $`cp ./dist/bin/cli.js ./dist/cli.js` +await $`rm -rf ./dist/bin` +await $`cp ./bin/cli.d.ts ./dist/cli.d.ts` +await $`rm ./bin/cli.d.ts` + +log.success('Built') diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000..7140ca6 Binary files /dev/null and b/bun.lockb differ diff --git a/bunfig.toml b/bunfig.toml new file mode 100644 index 0000000..bbfe9c4 --- /dev/null +++ b/bunfig.toml @@ -0,0 +1,2 @@ +[install] +registry = { url = "https://registry.npmjs.org/", token = "$BUN_AUTH_TOKEN" } diff --git a/commitlint.config.js b/commitlint.config.js new file mode 100644 index 0000000..56e966c --- /dev/null +++ b/commitlint.config.js @@ -0,0 +1,77 @@ +const scopes = ['', 'ci', 'deps', 'dx', 'example', 'release', 'readme', 'build'] + +const config = { + rules: { + 'scope-enum': [2, 'always', scopes], + }, + prompt: { + messages: { + type: "Select the type of change that you're committing:", + scope: 'Select the SCOPE of this change (optional):', + customScope: 'Select the SCOPE of this change:', + subject: 'Write a SHORT, IMPERATIVE tense description of the change:\n', + body: 'Provide a LONGER description of the change (optional). Use "|" to break new line:\n', + breaking: 'List any BREAKING CHANGES (optional). Use "|" to break new line:\n', + footerPrefixesSelect: 'Select the ISSUES type of changeList by this change (optional):', + customFooterPrefixes: 'Input ISSUES prefix:', + footer: 'List any ISSUES by this change. E.g.: #31, #34:\n', + confirmCommit: 'Are you sure you want to proceed with the commit above?', + }, + types: [ + { value: 'feat', name: 'feat: ✨ A new feature', emoji: ':sparkles:' }, + { value: 'fix', name: 'fix: 🐛 A bug fix', emoji: ':bug:' }, + { value: 'docs', name: 'docs: 📝 Documentation only changes', emoji: ':memo:' }, + { value: 'style', name: 'style: 💄 Changes that do not affect the meaning of the code', emoji: ':lipstick:' }, + { + value: 'refactor', + name: 'refactor: ♻️ A code change that neither fixes a bug nor adds a feature', + emoji: ':recycle:', + }, + { value: 'perf', name: 'perf: ⚡️ A code change that improves performance', emoji: ':zap:' }, + { + value: 'test', + name: 'test: ✅ Adding missing tests or adjusting existing tests', + emoji: ':white_check_mark:', + }, + { + value: 'build', + name: 'build: 📦️ Changes that affect the build system or external dependencies', + emoji: ':package:', + }, + { value: 'ci', name: 'ci: 🎡 Changes to our CI configuration files and scripts', emoji: ':ferris_wheel:' }, + { value: 'chore', name: "chore: 🔨 Other changes that don't modify src or test files", emoji: ':hammer:' }, + { value: 'revert', name: 'revert: ⏪️ Reverts a previous commit', emoji: ':rewind:' }, + ], + useEmoji: false, + themeColorCode: '', + scopes, + allowCustomScopes: true, + allowEmptyScopes: true, + customScopesAlign: 'bottom', + customScopesAlias: 'custom', + emptyScopesAlias: 'empty', + upperCaseSubject: false, + allowBreakingChanges: ['feat', 'fix'], + breaklineNumber: 100, + breaklineChar: '|', + skipQuestions: [], + issuePrefixes: [{ value: 'closed', name: 'closed: ISSUES has been processed' }], + customIssuePrefixesAlign: 'top', + emptyIssuePrefixesAlias: 'skip', + customIssuePrefixesAlias: 'custom', + allowCustomIssuePrefixes: true, + allowEmptyIssuePrefixes: true, + confirmColorize: true, + maxHeaderLength: Number.POSITIVE_INFINITY, + maxSubjectLength: Number.POSITIVE_INFINITY, + minSubjectLength: 0, + scopeOverrides: undefined, + defaultBody: '', + defaultIssues: '', + defaultScope: '', + defaultSubject: '', + }, +} + +/** @type {import('cz-git').UserConfig} */ +export default config diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts new file mode 100644 index 0000000..5047942 --- /dev/null +++ b/docs/.vitepress/config.ts @@ -0,0 +1,26 @@ +import { defineConfig } from 'vitepress' + +// https://vitepress.dev/reference/site-config +export default defineConfig({ + title: 'Reverse Proxy', + description: 'A better developer environment.', + themeConfig: { + // https://vitepress.dev/reference/default-theme-config + nav: [ + { text: 'Home', link: '/' }, + { text: 'Examples', link: '/markdown-examples' }, + ], + + sidebar: [ + { + text: 'Examples', + items: [ + { text: 'Markdown Examples', link: '/markdown-examples' }, + { text: 'Runtime API Examples', link: '/api-examples' }, + ], + }, + ], + + socialLinks: [{ icon: 'github', link: 'https://github.com/vuejs/vitepress' }], + }, +}) diff --git a/docs/api-examples.md b/docs/api-examples.md new file mode 100644 index 0000000..6bd8bb5 --- /dev/null +++ b/docs/api-examples.md @@ -0,0 +1,49 @@ +--- +outline: deep +--- + +# Runtime API Examples + +This page demonstrates usage of some of the runtime APIs provided by VitePress. + +The main `useData()` API can be used to access site, theme, and page data for the current page. It works in both `.md` and `.vue` files: + +```md + + +## Results + +### Theme Data +
{{ theme }}
+ +### Page Data +
{{ page }}
+ +### Page Frontmatter +
{{ frontmatter }}
+``` + + + +## Results + +### Theme Data +
{{ theme }}
+ +### Page Data +
{{ page }}
+ +### Page Frontmatter +
{{ frontmatter }}
+ +## More + +Check out the documentation for the [full list of runtime APIs](https://vitepress.dev/reference/runtime-api#usedata). diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..c7a7353 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,24 @@ +--- +# https://vitepress.dev/reference/default-theme-home-page +layout: home + +hero: + name: "Reverse Proxy" + text: "A better developer environment." + tagline: My great project tagline + actions: + - theme: brand + text: Markdown Examples + link: /markdown-examples + - theme: alt + text: API Examples + link: /api-examples + +features: + - title: Feature A + details: Lorem ipsum dolor sit amet, consectetur adipiscing elit + - title: Feature B + details: Lorem ipsum dolor sit amet, consectetur adipiscing elit + - title: Feature C + details: Lorem ipsum dolor sit amet, consectetur adipiscing elit +--- diff --git a/docs/markdown-examples.md b/docs/markdown-examples.md new file mode 100644 index 0000000..f9258a5 --- /dev/null +++ b/docs/markdown-examples.md @@ -0,0 +1,85 @@ +# Markdown Extension Examples + +This page demonstrates some of the built-in markdown extensions provided by VitePress. + +## Syntax Highlighting + +VitePress provides Syntax Highlighting powered by [Shiki](https://github.com/shikijs/shiki), with additional features like line-highlighting: + +**Input** + +````md +```js{4} +export default { + data () { + return { + msg: 'Highlighted!' + } + } +} +``` +```` + +**Output** + +```js{4} +export default { + data () { + return { + msg: 'Highlighted!' + } + } +} +``` + +## Custom Containers + +**Input** + +```md +::: info +This is an info box. +::: + +::: tip +This is a tip. +::: + +::: warning +This is a warning. +::: + +::: danger +This is a dangerous warning. +::: + +::: details +This is a details block. +::: +``` + +**Output** + +::: info +This is an info box. +::: + +::: tip +This is a tip. +::: + +::: warning +This is a warning. +::: + +::: danger +This is a dangerous warning. +::: + +::: details +This is a details block. +::: + +## More + +Check out the documentation for the [full list of markdown extensions](https://vitepress.dev/guide/markdown). diff --git a/dts b/dts new file mode 100755 index 0000000..c3d8286 --- /dev/null +++ b/dts @@ -0,0 +1,2 @@ +#!/usr/bin/env bun +import('./bin/cli') diff --git a/dts.config.ts b/dts.config.ts new file mode 100644 index 0000000..efba7fa --- /dev/null +++ b/dts.config.ts @@ -0,0 +1,2 @@ +export default { +} diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..44b7d05 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,12 @@ +import stacks from '@stacksjs/eslint-config' + +export default stacks({ + stylistic: { + indent: 2, + quotes: 'single', + }, + + typescript: true, + jsonc: true, + yaml: true, +}) diff --git a/package.json b/package.json new file mode 100644 index 0000000..5ce11f5 --- /dev/null +++ b/package.json @@ -0,0 +1,80 @@ +{ + "name": "dts-generation", + "type": "module", + "version": "0.1.0", + "description": "A modern, fast .d.ts generation tool, powered by Bun.", + "author": "Chris Breuer ", + "license": "MIT", + "homepage": "https://github.com/stacksjs/dts-generation#readme", + "repository": { + "type": "git", + "url": "git+https://github.com/stacksjs/dts-generation.git" + }, + "bugs": { + "url": "https://github.com/stacksjs/dts-generation/issues" + }, + "keywords": [ + "dts", + "generation", + "development", + "environment", + "bun", + "stacks", + "typescript", + "javascript" + ], + "exports": { + ".": { + "import": "./dist/index.js" + }, + "./*": { + "import": "./dist/*" + } + }, + "module": "./dist/index.js", + "types": "./dist/index.d.ts", + "bin": { + "dts-generation": "./dist/cli.js" + }, + "files": [ + "dist", + ], + "scripts": { + "build": "bun build.ts && bun run compile", + "compile": "bun build ./bin/cli.ts --compile --minify --outfile dist/dts-generation", + "lint": "bunx eslint .", + "lint:fix": "bunx eslint . --fix", + "fresh": "bunx rimraf node_modules/ bun.lock && bun i", + "commit": "git cz", + "changelog": "bunx changelogen --output CHANGELOG.md", + "prepublishOnly": "bun --bun run build", + "release": "bun run changelog && bunx bumpp package.json --all", + "test": "bun test", + "typecheck": "bunx tsc --noEmit", + "docs:dev": "vitepress dev docs", + "docs:build": "vitepress build docs", + "docs:preview": "vitepress preview docs" + }, + "devDependencies": { + "@stacksjs/cli": "^0.65.0", + "@stacksjs/eslint-config": "^3.7.3-stacks-1.11", + "@stacksjs/development": "^0.65.0", + "@stacksjs/storage": "^0.65.0", + "@types/bun": "^1.1.10", + "bun-plugin-dts-auto": "^0.20.5", + "c12": "^2.0.1", + "vitepress": "^1.4.0" + }, + "simple-git-hooks": { + "pre-commit": "bunx lint-staged", + "commit-msg": "bunx --no -- commitlint --edit $1" + }, + "lint-staged": { + "*.{js,jsx,ts,tsx,vue}": "bunx eslint . --fix" + }, + "config": { + "commitizen": { + "path": "node_modules/cz-git" + } + } +} diff --git a/pkgx.yaml b/pkgx.yaml new file mode 100644 index 0000000..9b325ec --- /dev/null +++ b/pkgx.yaml @@ -0,0 +1,2 @@ +dependencies: + bun.sh: ^1.0.30 diff --git a/scripts/generate-keys.ts b/scripts/generate-keys.ts new file mode 100644 index 0000000..03870cb --- /dev/null +++ b/scripts/generate-keys.ts @@ -0,0 +1,10 @@ +// todo - need to import from tlsx +// import { generateAndSaveCertificates, generateRootCA } from '../src/keys' + +// Generate a root key and certificate (self-signed) +// await generateRootCA() + +// Generate a keypair and create an X.509v3 certificate for the domain +// await generateAndSaveCertificates() + +// await addRootCAToSystemTrust() diff --git a/src/config.ts b/src/config.ts new file mode 100644 index 0000000..e7e5ffa --- /dev/null +++ b/src/config.ts @@ -0,0 +1,8 @@ +import { loadConfig } from 'c12' + +// Get loaded config +const { config } = await loadConfig({ + name: "dts", +}) + +export { config } diff --git a/src/generate.ts b/src/generate.ts new file mode 100644 index 0000000..6d1d898 --- /dev/null +++ b/src/generate.ts @@ -0,0 +1,18 @@ +import { readFileSync } from 'node:fs'; + +export function generate(): string { + return '' +} + +export function isIsolatedDeclarations(): boolean { + try { + const tsconfigPath = './tsconfig.json'; + const tsconfigContent = readFileSync(tsconfigPath, 'utf-8'); + const tsconfig = JSON.parse(tsconfigContent); + + return tsconfig.compilerOptions?.isolatedDeclarations === true; + } catch (error) { + console.error('Error reading tsconfig.json:', error); + return false; + } +} diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..6d3e6fb --- /dev/null +++ b/src/index.ts @@ -0,0 +1,3 @@ +export { config } from './config' +export * from './generate' +export * from './types' diff --git a/src/types.ts b/src/types.ts new file mode 100644 index 0000000..8332ec1 --- /dev/null +++ b/src/types.ts @@ -0,0 +1,5 @@ +export interface DtsGenerationOption { + // ... +} + +export type DtsGenerationOptions = DtsGenerationOption | DtsGenerationOption[] diff --git a/test/dts.test.ts b/test/dts.test.ts new file mode 100644 index 0000000..1877a42 --- /dev/null +++ b/test/dts.test.ts @@ -0,0 +1,11 @@ +import { afterEach, beforeAll, beforeEach, describe, expect, it, mock } from 'bun:test' +import { generate } from '../src/generate' +import type { DtsGenerationOption } from '../src/types' + +describe('@stacksjs/reverse-proxy', () => { + beforeAll(() => { + process.env.APP_ENV = 'test' + }) + + // describe... +}) diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..853ce1d --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "target": "esnext", + "lib": [ + "esnext" + ], + "moduleDetection": "force", + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "allowImportingTsExtensions": true, + "strict": true, + "strictNullChecks": true, + "noFallthroughCasesInSwitch": true, + "declaration": true, + "isolatedDeclarations": true, + "noEmit": true, + "outDir": "./dist", + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "verbatimModuleSyntax": true, + "skipDefaultLibCheck": true, + "skipLibCheck": true + } +}