Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
18f65ca
config: create devcontainer.json file
nberlette Sep 10, 2024
ae0c515
config: create Dockerfile
nberlette Sep 10, 2024
0e066be
chore: move homebrew from devcontainer to dockerfile
nberlette Sep 10, 2024
157d03b
fix: use absolute paths in Dockerfile
nberlette Sep 10, 2024
b4fde15
refactor: remove useless env directive from dockerfile
nberlette Sep 10, 2024
16b3cf7
fix: path and perms issues in dockerfile and devcontainer.json
nberlette Sep 10, 2024
150ce7f
fix: correct permissions on deno binary
nberlette Sep 10, 2024
e71d8c7
fix(internal): fix bad internal types, improve docs
nberlette Sep 10, 2024
941182e
Merge pull request #14 from nberlette/fix/internal-types
nberlette Sep 10, 2024
ae85251
fix: lets try this again, Dockerfile
nberlette Sep 10, 2024
8ea6362
really getting tired of dockerfiles
nberlette Sep 10, 2024
140fda5
and devcontainers too
nberlette Sep 10, 2024
82bbcd5
refactor(devcontainer): remove Dockerfile entirely
nberlette Sep 19, 2024
f476523
fix: update `workspaces` field to `workspace` in root deno.json
nberlette Mar 7, 2025
41aa953
chore: add tasks and publish config to deno.json
nberlette Mar 7, 2025
2db7945
Merge pull request #24 from nberlette/fix/workspace-config
nberlette Mar 7, 2025
7c599ca
chore: add packages/lru to root deno.json
nberlette Mar 7, 2025
59dad11
feat(lru): add @decorators/lru package
nberlette Mar 7, 2025
65d7a5b
chore: remove .DS_Store -_-
nberlette Mar 7, 2025
2479371
Merge pull request #25 from nberlette/feat/lru
nberlette Mar 7, 2025
deb0245
chore(docs): update root README.md with new lru package
nberlette Mar 7, 2025
6515d22
docs: add contributor code of conduct
nberlette Mar 7, 2025
e102e7d
docs: add contribution guidelines file
nberlette Mar 7, 2025
913ce23
Merge pull request #26 from nberlette/chore/update-readme
nberlette Mar 7, 2025
1e36de3
docs(lru): update and improve readme
nberlette Mar 7, 2025
6f8b6ab
fix(lru): add missing overrides entrypoint
nberlette Mar 7, 2025
00d4e47
docs(lru): add module doc to main entrypoint
nberlette Mar 7, 2025
a658973
fix(lru): add missing exports to root module
nberlette Mar 7, 2025
1d3182f
docs(lru): add all missing module docs
nberlette Mar 7, 2025
aed8ca5
Merge pull request #27 from nberlette/fix/lru/missing-exports
nberlette Mar 7, 2025
7f16e8b
chore: bump @decorators/lru to 0.1.1
nberlette Mar 7, 2025
1851337
fix(lru): fix typo in JSR links in README.md
nberlette Mar 7, 2025
e22294a
Merge pull request #28 from nberlette/fix/lru/readme-typo
nberlette Mar 7, 2025
fb7a14e
chore: bump @decorators/lru to 0.1.2
nberlette Mar 7, 2025
51748f8
fix(internal): remove @type/is dependency and restructure
nberlette Mar 7, 2025
d135fac
fix(internal): remove leftover piece of stupidity :D
nberlette Mar 7, 2025
b2a6239
chore(internal): update license to 2025
nberlette Mar 7, 2025
fe4671e
chore(internal): update deno.json + bump version
nberlette Mar 7, 2025
4a6014c
Merge pull request #29 from nberlette/fix/internal-stuff
nberlette Mar 7, 2025
1864408
Merge pull request #22 from nberlette/config/devcontainer
nberlette Mar 9, 2025
2505d12
config(devcontainer): add Dockerfile
nberlette Mar 9, 2025
8d641dc
refactor(devcontainer): update devcontainer.json config
nberlette Mar 9, 2025
b5a0f94
Merge pull request #30 from nberlette/config/dockerfile
nberlette Mar 9, 2025
ccd4e82
fix(devcontainer): maybe this time it will actually work
nberlette Mar 10, 2025
429e2f7
chore(*): bump copyright year in all licenses
nberlette Mar 10, 2025
18a3a5c
Merge pull request #31 from nberlette/happy-new-year
nberlette Mar 10, 2025
9e88590
fix(bind): remove hard-coded jsr specifier
nberlette Mar 10, 2025
8bf1d21
chore(bind): fmt
nberlette Mar 10, 2025
568f3a6
chore(bind): fmt readme, update deno.json
nberlette Mar 10, 2025
98c370e
Merge pull request #32 from nberlette/fix/bind/deps
nberlette Mar 10, 2025
249f137
chore(bind): bump version to 0.2.0
nberlette Mar 10, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
ARG VARIANT=bullseye
FROM --platform=linux/amd64 mcr.microsoft.com/vscode/devcontainers/base:0-${VARIANT}

ARG DEBIAN_FRONTEND=noninteractive

# install deno
ENV DENO_INSTALL=/usr/local
RUN /bin/bash -c "$(curl -fsSL https://deno.land/install.sh)" \
&& chown ${USER:-vscode} /usr/local/bin/deno

# update system packages, install gcc and git-extras, cleanup cache
RUN sudo apt-get -y update \
&& sudo apt-get -y install --no-install-recommends gcc git-extras \
&& sudo apt-get -y upgrade && sudo rm -rf /var/lib/apt/lists/*

RUN echo 'PATH="$HOMEBREW_PREFIX/bin:$PATH"; eval "$(brew shellenv 2>/dev/null)"; if command -v starship &>/dev/null || brew install starship 2>/dev/null; then eval "$(starship init bash)"; fi;' >> /home/${USER:-vscode}/.bashrc
46 changes: 46 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
{
"name": "@decorators",
"dockerFile": "Dockerfile",
"remoteUser": "vscode",
"features": {
"git": "latest",
"sshd": "latest",
"node": "latest",
"ghcr.io/devcontainers/features/github-cli:1": {},
"ghcr.io/meaningful-ooo/devcontainer-features/homebrew:2": {},
"ghcr.io/devcontainers-contrib/features/act:1": {},
"ghcr.io/devcontainers-contrib/features/actionlint:1": {}
},
// settings for the vscode editor
"customizations": {
"vscode": {
"settings": {
"deno.enable": true,
"deno.lint": true,
"deno.codeLens.test": true,
"deno.cacheOnSave": true,
"editor.tabSize": 2,
"editor.stickyTabStops": true,
"editor.linkedEditing": true,
"editor.minimap.enabled": false,
"editor.defaultFormatter": "denoland.vscode-deno",
"editor.formatOnPaste": false,
"editor.formatOnSave": true
},
"extensions": [
"github.theme",
"github.vscode-github-actions",
"github.copilot",
"denoland.vscode-deno",
"editorconfig.editorconfig",
"vsls-contrib.gistfs",
"redhat.vscode-yaml",
"antfu.browse-lite",
"bierner.markdown-preview-github-styles",
"mutantdino.resourcemonitor"
]
}
},
"postCreateCommand": "if command -v deno &>/dev/null; then\ndeno upgrade --canary;\ndeno completions bash > /etc/bash_completion.d/deno.bash; fi;",
"postAttachCommand": ". /home/vscode/.bashrc"
}
131 changes: 131 additions & 0 deletions .github/CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
# 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 email 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 [INSERT CONTACT
METHOD]. 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
145 changes: 145 additions & 0 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
# Contributing Guide

Thank you for your interest in contributing to the @decorators monorepo. Your
contributions make this project better for everyone!

## How to Contribute

### Reporting Issues

- Check the [issue tracker](https://github.com/nberlette/decorators/issues) to
see if the issue already exists.
- When reporting a new issue, provide a descriptive title and clear steps to
reproduce the problem.

### Proposing Changes

1. [Open an Issue] to discuss your proposed changes.
- This helps us understand the context and purpose of your changes.
- If your change is a bug fix, please include the issue number in your
description (e.g., `Fixes #123`).

2. Fork the repository and clone it to your local machine.

```bash
gh repo fork --clone nberlette/decorators
```

3. Create a feature branch for your specific change. Keep it focused.

```bash
git checkout -b feature/your-feature
```

4. Commit your changes following the [conventional commit format].

````bash
git add . # or `git add <specific-file>`
git commit -m "feat: your-feature"

```bash
git add . # or `git add <specific-file>`
git commit -m "Add feature: your-feature"
````

5. Push your branch and open a pull request.

```bash
git push origin feature/your-feature
```

6. In your pull request, provide a clear description of the changes and why they
are necessary. Include any relevant issue numbers and links to related
discussions or documentation.

7. Request a review from the maintainers.

[conventional commit format]: https://www.conventionalcommits.org/en/v1.0.0/#specification "Conventional Commits Specification"

Please ensure:

- Each pull request addresses a single issue.
- Your changes include appropriate tests and documentation if applicable.
- Your code adheres to the repository’s [style guidelines].
- Your commit messages follow the [conventional commit format].
- Your code is well-documented and easy to understand.
- Each new feature is accompanied by a corresponding test.
- A good rule of thumb is: 1 new `.ts` file = 1 new `.test.ts` file.
- You have run the tests and they all pass.

## Style Guidelines

We follow the same code style as the [Deno project](https://deno.land), and use
the [Deno CLI](https://docs.deno.com/go/cli) for linting, formatting, testing,
benchmarking, documentation, and more.

### Code Style and Formatting

- Lines are limited to 80 characters.
- Use 2 spaces for indentation, no tabs.
- Use double quotes for strings.
- Use semicolons at the end of statements.
- Arrow functions should have parentheses around the parameters.
- Always include explicit return types and parameter types on public functions
and methods. Use `as const` on literals when possible.
- Avoid using `any` type. Use specific types, generics, or `unknown` instead.

### Other Guidelines and Best Practices

- Use `const` and `let` instead of `var`.

### Documentation

We use the `deno doc` tool for generating documentation, as does [JSR], our main
distribution channel for packages in the `@decorators/*` namespace.

Deno's documentation tool requires JSDoc comments and type annotations to be on
all public APIs. Some of the rules we follow are:

- Wrap JSDoc comments to 80 characters as well.
- Use `@param` and `@returns` in JSDoc comments.
- Use `@example` in JSDoc comments for examples.
- Use `@see` in JSDoc comments for references.
- Use `@category` and `@tags` in JSDoc comments for categorization.
- Each module file must begin with a `@module` doc comment.
- Internal modules and features can be commented with `@internal`.

### Code of Conduct

All contributors are expected to follow the guidelines outlined in our
[Code of Conduct](./CODE_OF_CONDUCT.md). Please report any unacceptable
behavior.

### Testing

Before submitting your pull request, make sure all tests pass:

```bash
npm install
npm run test
```

## License

By contributing to this project, you agree that your contributions will be
licensed under the [MIT License](https://nick.mit-license.org/2024).

---

We appreciate your support and look forward to your contributions!

<div align="center">

**[MIT]** © **[Nicholas Berlette]**. All rights reserved.

<small>[GitHub] · [Issues] · [JSR]</small>

</div>

[MIT]: https://nick.mit-license.org "MIT © 2024+ Nicholas Berlette. All rights reserved."
[Nicholas Berlette]: https://github.com/nberlette "Nicholas Berlette on GitHub"
[GitHub]: https://github.com/nberlette/decorators#readme "Check out all the '@decorators/*' packages over at the GitHub monorepo!"
[Issues]: https://github.com/nberlette/decorators/issues "GitHub Issue Tracker for '@decorators/*' packages"
[Open an Issue]: https://github.com/nberlette/decorators/issues/new "Open an Issue on nberlette/decorators"
[JSR]: https://jsr.io/@decorators "View @decorators/* packages on JSR"
[Code of Conduct]: ./CODE_OF_CONDUCT.md "Code of Conduct"
17 changes: 17 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -130,3 +130,20 @@ dist
.pnp.*
*.lock*
*-lock.*

# Windows system files
Thumbs.db
ehthumbs.db
Icon?
Desktop.ini
$RECYCLE.BIN/
# macOS system files
.AppleDouble
.LSOverride
.DS_Store
# Thumbnails
._*
# Files that might appear on external disk
.Spotlight-V100
.Trashes
.VolumeIcon.icns
27 changes: 13 additions & 14 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -1,21 +1,20 @@
MIT License
The MIT License (MIT)

Copyright (c) 2024 Nicholas Berlette (https://github.com/nberlette)
Copyright (c) 2024-2025 Nicholas Berlette (https://github.com/nberlette)

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:
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.
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.
Loading