Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rewrite Codercord in TypeScript #10

Merged
merged 62 commits into from
Dec 9, 2024
Merged
Show file tree
Hide file tree
Changes from 61 commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
fef6f05
feat: push base projet with linting/formatting/etc and my current ide…
phorcys420 Jun 22, 2024
24646d1
chore: add devcontainer configuration for Node.js & TypeScript
matifali Jun 22, 2024
cee9af5
chnage node version to 20 in devcontainer
matifali Jun 22, 2024
672663d
move to bun and biomejs
matifali Jun 22, 2024
2dbdd73
chore: Remove unused configuration files and format/lint with biomejs
matifali Jun 22, 2024
47e25d3
more fixes
matifali Jun 22, 2024
554874d
chore: Update devDependencies and scripts in package.json
matifali Jun 22, 2024
35131ec
use fixed versions
matifali Jun 22, 2024
cc89208
bump versions
matifali Jun 22, 2024
3ededbc
chore: Update README.md with Typescript information and remove outdat…
matifali Jun 22, 2024
d660a60
use 2 spaces for indent
matifali Jun 22, 2024
2d1afa3
use 4 spaces for indentation
matifali Jun 22, 2024
4a3f193
chore: Update .dockerignore to include dist/ and .node_modules/
matifali Jun 22, 2024
93729c1
update ci
matifali Jun 22, 2024
b5023b2
chore: Update devDependencies and scripts in package.json
matifali Jun 23, 2024
c132468
fixup!
matifali Jun 23, 2024
bdbf728
chore: Update ci.yaml to use frozen lockfile during installation
matifali Jun 23, 2024
03765c2
format
matifali Jun 23, 2024
ede2b3a
use 2 spaces indent for json
matifali Jun 23, 2024
067bb6e
chore: Update package.json devDependencies and add dependabot
matifali Jun 23, 2024
ab32fac
chnage indent to 2 spaces
matifali Jun 23, 2024
dc833e1
Update README.md
matifali Jul 25, 2024
eee61c1
fix: do not use `bunx` for package.json scripts
phorcys420 Aug 10, 2024
203a087
feat: make biomejs use gitignore
phorcys420 Aug 10, 2024
373d348
feat: add `start` script
phorcys420 Aug 10, 2024
3c6a72f
feat: add old prettier ignores back
phorcys420 Aug 10, 2024
17e4238
chore: use bun and biomejs (#12)
phorcys420 Aug 10, 2024
4242085
chore: update dependencies
phorcys420 Aug 10, 2024
7d7ce80
feat: make config values mandatory and add example config
phorcys420 Aug 10, 2024
1bd067c
fix package entrypoint & update deps
phorcys420 Sep 10, 2024
6cad400
see description
phorcys420 Sep 15, 2024
98410cb
refactor: change the way that events are registered
phorcys420 Oct 9, 2024
d12c8c6
feat: (wip) add questions and remove duplicate data in component code
phorcys420 Oct 9, 2024
fe54074
chore: add import aliases
phorcys420 Oct 9, 2024
6f052fb
chore(commands): remove unused imports
phorcys420 Oct 9, 2024
19697d6
chore: add `bun watch` script
phorcys420 Oct 9, 2024
a647353
feat: add `/close` command
phorcys420 Oct 9, 2024
5a72c1d
feat: send walkthrough on thread create
phorcys420 Oct 9, 2024
f1cedb7
feat: add presence shuffle
phorcys420 Oct 9, 2024
931a3d5
chore: remove deprecated dependency
phorcys420 Oct 10, 2024
1ea5189
refactor: reorganize imports
phorcys420 Oct 10, 2024
44b67a4
fix: revert `caseInsensitive = true`
phorcys420 Oct 10, 2024
ea7b573
chore: fix type error in deploy-commands
phorcys420 Oct 10, 2024
e06270e
feat: add `reopen` command
phorcys420 Oct 10, 2024
d5d7235
chore: remove dead imports in walkthrough
phorcys420 Oct 10, 2024
98db1b5
chore: fix biome complaints
phorcys420 Oct 10, 2024
45d6040
chore: remove pnpm-lock
phorcys420 Oct 10, 2024
8970fe1
chore: disable noUselessElse
phorcys420 Oct 10, 2024
2694f21
chore: bump dependencies
phorcys420 Oct 10, 2024
65d073e
chore: lint & format
phorcys420 Oct 10, 2024
2e4d68f
fix: check if user is allowed to use `/reopen` and `/close`
phorcys420 Nov 6, 2024
f5728fa
chore: update readme
phorcys420 Nov 6, 2024
348acf6
fix: check if walkthrough message has been sent before sending a new one
phorcys420 Nov 6, 2024
2583096
chore: format
phorcys420 Nov 6, 2024
3ed0ad6
fix: show human-readable label instead of value in walkthrough
phorcys420 Nov 6, 2024
14659cd
chore: edit presence list
phorcys420 Nov 6, 2024
a6c1c29
fix: pin message properly in walkthrough
phorcys420 Nov 6, 2024
1ae93fd
feat: delete system message when bot pins a message
phorcys420 Nov 6, 2024
2072cd5
chore: format
phorcys420 Nov 6, 2024
4bf2759
feat: add dockerfile
phorcys420 Dec 8, 2024
a9e528f
feat: add docker publish action
phorcys420 Dec 8, 2024
1e41d59
chore: merge with main
phorcys420 Dec 9, 2024
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
20 changes: 20 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"name": "Codercord",
"image": "oven/bun:debian",
"features": {
"ghcr.io/devcontainers/features/git:1": {},
"ghcr.io/devcontainers/features/github-cli:1": {},
"ghcr.io/devcontainers/features/common-utils:2": {}
},
"customizations": {
"vscode": {
"extensions": ["oven.bun-vscode", "biomejs.biome"],
"settings": {
"editor.defaultFormatter": "biomejs.biome",
"editor.formatOnSave": true
}
}
},
"postCreateCommand": "bun install",
"remoteUser": "codercord"
}
16 changes: 9 additions & 7 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
# Files and directories created by pub.
.dart_tool/
.packages
# Dependencies
node_modules/

# Conventional directory for build output.
build/
# Configuration files
config.json
*.env

# Config
*.toml
# Other
.devcontainer/
.github/
.vscode/
9 changes: 9 additions & 0 deletions .github/dependabot.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
commit-message:
prefix: "chore:"
20 changes: 20 additions & 0 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: CI

on:
push:
branches: ["main"]
pull_request:

jobs:
check:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v1
- name: Format and Lint
run: |
bun install --frozen-lockfile
bun format:ci
bun lint:ci
58 changes: 58 additions & 0 deletions .github/workflows/deploy-docker.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
name: Publish Docker image

on:
push:
branches: ['main']

# Defines two custom environment variables for the workflow. These are used for the Container registry domain, and a name for the Docker image that this workflow builds.
env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}

# There is a single job in this workflow. It's configured to run on the latest available version of Ubuntu.
jobs:
build-and-push-image:
runs-on: ubuntu-latest
# Sets the permissions granted to the `GITHUB_TOKEN` for the actions in this job.
permissions:
contents: read
packages: write
attestations: write
id-token: write
#
steps:
- name: Checkout repository
uses: actions/checkout@v4
# Uses the `docker/login-action` action to log in to the Container registry registry using the account and password that will publish the packages. Once published, the packages are scoped to the account defined here.
- name: Log in to the Container registry
uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
# This step uses [docker/metadata-action](https://github.com/docker/metadata-action#about) to extract tags and labels that will be applied to the specified image. The `id` "meta" allows the output of this step to be referenced in a subsequent step. The `images` value provides the base name for the tags and labels.
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
# This step uses the `docker/build-push-action` action to build the image, based on your repository's `Dockerfile`. If the build succeeds, it pushes the image to GitHub Packages.
# It uses the `context` parameter to define the build's context as the set of files located in the specified path. For more information, see "[Usage](https://github.com/docker/build-push-action#usage)" in the README of the `docker/build-push-action` repository.
# It uses the `tags` and `labels` parameters to tag and label the image with the output from the "meta" step.
- name: Build and push Docker image
id: push
uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4
with:
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}

# This step generates an artifact attestation for the image, which is an unforgeable statement about where and how it was built. It increases supply chain security for people who consume the image. For more information, see "[AUTOTITLE](/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds)."
- name: Generate artifact attestation
uses: actions/attest-build-provenance@v1
with:
subject-name: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME}}
subject-digest: ${{ steps.push.outputs.digest }}
push-to-registry: true

94 changes: 0 additions & 94 deletions .github/workflows/docker-publish.yml

This file was deleted.

13 changes: 5 additions & 8 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
# Files and directories created by pub.
.dart_tool/
.packages
# Dependencies
node_modules/

# Conventional directory for build output.
build/

# Config
*.toml
# Configuration files
config.json
*.env
3 changes: 0 additions & 3 deletions .markdownlint.json

This file was deleted.

3 changes: 3 additions & 0 deletions .vscode/extensions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"recommendations": ["oven.bun-vscode", "biomejs.biome"]
}
3 changes: 3 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"editor.defaultFormatter": "biomejs.biome"
}
31 changes: 8 additions & 23 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,26 +1,11 @@
FROM dart:3.0.7 as builder
FROM oven/bun:1 AS base

ADD . /src
WORKDIR /src
WORKDIR /usr/src/app
COPY . .

RUN dart pub get
ENV NODE_ENV=production
RUN bun install --frozen-lockfile --production

# AOT Compilation allows to reduce overhead, rather than using dart run on each startup
RUN dart compile aot-snapshot -o /tmp/codercord.aot bin/codercord.dart

FROM alpine:3.18 as runner

RUN adduser --disabled-password -u 1337 codercord codercord

# We copy the dart runtime manually because it is smaller than using the official dart images
# https://github.com/dart-lang/dart-docker/issues/71
COPY --from=builder /runtime/ /
COPY --from=builder /usr/lib/dart/bin/dart /usr/bin/
COPY --from=builder /usr/lib/dart/bin/dartaotruntime /usr/bin/

WORKDIR /opt
COPY --from=builder --chown=codercord:codercord /tmp/codercord.aot codercord.aot
COPY --from=builder --chown=codercord:codercord /src/tags.json tags.json

USER codercord
ENTRYPOINT [ "dartaotruntime", "codercord.aot" ]
# run the app
USER bun
ENTRYPOINT [ "bun", "start" ]
Loading