Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
82 changes: 0 additions & 82 deletions .circleci/config.yml

This file was deleted.

2 changes: 1 addition & 1 deletion .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@ tests/
CLAUDE.md
README.md
.gitignore
.circleci/
.github/
LICENSE
95 changes: 95 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
name: CI

on:
push:
branches:
- main
- "release/**"
tags:
- "v*"
pull_request:

permissions:
contents: read

concurrency:
group: ci-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
test:
name: Test
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v5
with:
fetch-depth: 0
- name: Set up Deno
uses: denoland/setup-deno@v2
with:
deno-version: 2.7.6
- name: Build executable
run: |
touch persist.dat
deno compile \
--allow-read \
--allow-write=./persist.dat \
--allow-net=0.0.0.0:3000 \
--allow-env=HOST,PORT,PERSIST,QUEUE_API_TOKEN \
main.ts
- name: Run tests
run: deno test --allow-read --allow-write --allow-net --allow-env --allow-run

mutation-mutasaurus:
name: Mutation testing (Mutasaurus)
needs: test
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v5
with:
fetch-depth: 0
- name: Set up Deno
uses: denoland/setup-deno@v2
with:
deno-version: 2.7.6
- name: Run Mutasaurus
run: |
touch persist.dat
deno run \
--allow-read \
--allow-write \
--allow-net \
--allow-env \
--allow-run \
--allow-sys \
--allow-ffi \
--node-modules-dir=auto \
mutation/mutasaurus_ci.ts

mutation-stryker:
name: Mutation testing (Stryker)
needs: mutation-mutasaurus
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Check out repository
uses: actions/checkout@v5
with:
fetch-depth: 0
- name: Set up Node.js
uses: actions/setup-node@v5
with:
node-version: 22
- name: Set up Deno
uses: denoland/setup-deno@v2
with:
deno-version: 2.7.6
- name: Install StrykerJS
run: npm install --no-save --no-package-lock @stryker-mutator/core
- name: Run StrykerJS
run: |
touch persist.dat
npx --no-install stryker run mutation/stryker.config.json
node mutation/stryker_check.js
4 changes: 2 additions & 2 deletions .serena/memories/project/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
Fast, lightweight, persistence-optional FIFO queue service written in TypeScript for Deno. Provides HTTP API for enqueue, dequeue, length, peek, queues list, and health check endpoints.

## Tech Stack
- **Runtime**: Deno 2.7.6 (critical - must match CI image)
- **Runtime**: Deno 2.7.6 (critical - must match the GitHub Actions workflow)
- **Language**: TypeScript
- **Imports**: JSR format (e.g. `jsr:@std/cli@1.0/parse-args`)
- **CI**: CircleCI (image: `denoland/deno:2.7.6`)
- **CI**: GitHub Actions (`.github/workflows/ci.yml`)

## Commands
- **Test**: `deno test --allow-all` (permission flags required for file I/O tests)
Expand Down
77 changes: 42 additions & 35 deletions .serena/project.yml
Original file line number Diff line number Diff line change
@@ -1,41 +1,6 @@
# the name by which the project can be referenced within Serena/when chatting with the LLM.
project_name: "queue"

# list of languages for which language servers are started (LSP backend only); choose from:
# ada al angular ansible bash
# bsl clojure cpp cpp_ccls crystal
# csharp csharp_omnisharp cue dart elixir
# elm erlang fortran fsharp gdscript
# go groovy haskell haxe hlsl
# html java json julia kotlin
# latex lean4 lua luau markdown
# matlab msl nix ocaml pascal
# perl php php_phpactor php_phpantom powershell
# python python_jedi python_pyrefly python_ty r
# rego ruby ruby_solargraph rust scala
# scss solidity svelte swift systemverilog
# terraform toml typescript typescript_vts vue
# yaml zig
# (This list may be outdated; generated with scripts/print_language_list.py;
# For the current list, see values of Language enum here:
# https://github.com/oraios/serena/blob/main/src/solidlsp/ls_config.py)
# For some languages, there are alternative language servers, e.g. csharp_omnisharp, ruby_solargraph.)
# Note:
# - For C, use cpp
# - For JavaScript, use typescript
# - For Angular projects, use angular (subsumes typescript+html; requires `npm install` in the project root)
# - For Svelte projects, use svelte (subsumes typescript/javascript for .svelte projects; requires npm)
# - For SCSS / Sass / plain CSS, use scss (some-sass-language-server handles all three)
# - For Free Pascal/Lazarus, use pascal
# Special requirements:
# Some languages require additional setup/installations.
# See here for details: https://oraios.github.io/serena/01-about/020_programming-languages.html#language-servers
# When using multiple languages, the first language server that supports a given file will be used for that file.
# The first language is the default language and the respective language server will be used as a fallback.
# Note that when using the JetBrains backend, language servers are not used and this list is correspondingly ignored.
languages:
- typescript

# the encoding used by text files in the project
# For a list of possible encodings, see https://docs.python.org/3.11/library/codecs.html#standard-encodings
encoding: "utf-8"
Expand Down Expand Up @@ -63,6 +28,13 @@ ls_specific_settings: {}

# list of additional paths to ignore in this project.
# Same syntax as gitignore, so you can use * and **.
# Important: quote patterns that start with `*`, otherwise YAML treats them as aliases.
# Example:
# ignored_paths:
# - "examples/**"
# - ".worktrees/**"
# - "**/bin/**"
# - "**/obj/**"
# Note: global ignored_paths from serena_config.yml are also applied additively.
ignored_paths: []

Expand Down Expand Up @@ -158,3 +130,38 @@ ls_additional_workspace_folders: []
# - "./subproject2"
ls_workspace_folders:
- .

# list of language servers to start when using the LSP backend; choose from:
# ada al angular ansible bash
# bsl clojure cpp cpp_ccls crystal
# csharp csharp_omnisharp cue dart elixir
# elm erlang fortran fsharp gdscript
# go groovy haskell haxe hlsl
# html java json julia kotlin
# latex lean4 lua luau markdown
# matlab msl nix ocaml pascal
# perl php php_phpactor php_phpantom powershell
# python python_jedi python_pyrefly python_ty r
# rego ruby ruby_solargraph rust scala
# scss solidity svelte swift systemverilog
# terraform toml typescript typescript_vts vue
# yaml zig
# (This list may be outdated; generated with scripts/print_language_list.py;
# For the current list, see values of Language enum here:
# https://github.com/oraios/serena/blob/main/src/solidlsp/ls_config.py)
# For some languages, there are several alternative language servers, e.g. csharp_omnisharp, ruby_solargraph.)
# Note:
# - For C, use cpp
# - For JavaScript, use typescript
# - For Angular projects, use angular (subsumes typescript+html; requires `npm install` in the project root)
# - For Svelte projects, use svelte (subsumes typescript/javascript for .svelte projects; requires npm)
# - For SCSS / Sass / plain CSS, use scss (some-sass-language-server handles all three)
# - For Free Pascal/Lazarus, use pascal
# Special requirements:
# Some language servers require additional setup/installations.
# See here for details: https://oraios.github.io/serena/01-about/020_programming-languages.html#language-servers
# When using multiple language servers, the first language server that supports a given file will be used for that file.
# The first language server is the default language and the respective language server will be used as a fallback.
# Note that when using the JetBrains backend, language servers are not used and this list is correspondingly ignored.
language_servers:
- typescript
13 changes: 7 additions & 6 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,16 @@ and respect .serena as integral project tooling

**Main branch requires Deno 2.7.6**

### CircleCI Configuration
### GitHub Actions Configuration

The `.circleci/config.yml` must match the Deno version:
The `.github/workflows/ci.yml` must match the Deno version:
```yaml
docker:
- image: denoland/deno:2.7.6
uses: denoland/setup-deno@v2
with:
deno-version: 2.7.6
```

**If you upgrade Deno, ALWAYS update this image or CI will fail.**
**If you upgrade Deno, ALWAYS update this workflow or CI will fail.**

### Standard Library Imports

Expand Down Expand Up @@ -57,7 +58,7 @@ Test HTTP handler behaviour with real requests, not internal implementation deta

## Common Diagnostics

**CircleCI fails?** Check: (1) CircleCI Deno version matches code (2) Import format (jsr: vs deno.land) (3) Using Deno 2.x-only APIs
**GitHub Actions fails?** Check: (1) workflow Deno version matches code (2) Import format (jsr: vs deno.land) (3) Using Deno 2.x-only APIs

**Merge blocked?** `gh api repos/jonbaldie/queue/branches/main/protection --jq '.enforce_admins.enabled'` — if true, disable with DELETE before merging with --admin

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Fast, portable queue server written in Typescript and built with Deno.

[![CircleCI](https://circleci.com/gh/jonbaldie/queue/tree/main.svg?style=shield)](https://circleci.com/gh/jonbaldie/queue/tree/main)
[![CI](https://github.com/jonbaldie/queue/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/jonbaldie/queue/actions/workflows/ci.yml)

## Introduction

Expand Down