1
0
Fork 0
mirror of https://github.com/kou029w/_.git synced 2025-04-02 19:16:23 +00:00

Compare commits

...

139 commits
v0.0.6 ... main

Author SHA1 Message Date
cf2df3404b
create goose 2025-04-02 10:27:26 +09:00
1926a1dbfc
add tasks.md 2025-01-28 10:59:17 +09:00
209623965e
add textarea for bug description in issue template 2025-01-23 15:47:17 +09:00
747beab8f8
add bug report issue template 2025-01-23 15:45:56 +09:00
b395df0932
create serialize-error 2025-01-23 11:14:05 +09:00
8f13edab1e
remove fastify-validation package.json and rename server.mjs to server.ts with updated routes 2025-01-21 11:25:36 +09:00
8b1036e9fb
create xz 2025-01-16 12:07:20 +09:00
f55e325b40
update fastify 2024-12-09 17:19:05 +09:00
428880002c
use FlattenedJWE 2024-12-03 13:40:25 +09:00
3d8c2deba7
create jose 2024-12-03 12:57:03 +09:00
204673694b
add --disable-dev-shm-usage option 2024-11-13 13:16:27 +09:00
7f458326eb
add auto-move-to-in-progress-on-assign.yml workflow 2024-11-07 17:01:16 +09:00
10d7e8f4c7
remove project action 2024-11-07 14:38:03 +09:00
485537101b
remove radicle 2024-11-07 13:25:53 +09:00
c2ea74cf70
create metube 2024-10-29 21:35:54 +09:00
0bda09bafb
remove ytdlp 2024-10-29 21:00:38 +09:00
75ba18676f
create deno-playwright 2024-10-29 14:44:38 +09:00
d314e83b18
create ytdlp-webui 2024-10-28 16:25:04 +09:00
ffe2af2621
create playwright 2024-10-24 21:31:42 +09:00
876d84fb75
add bitnet 2024-10-21 21:51:48 +09:00
3ef34e52e2
create groq 2024-10-17 14:48:26 +09:00
2794034e55
create poppler-rs 2024-09-01 23:12:17 +09:00
84b0494547
remove bolt, node-test, playwright, ts 2024-08-27 10:17:26 +09:00
aa1ba85751
create playwright-rust 2024-08-26 11:11:06 +09:00
785fe1a122
create docmost 2024-07-30 18:16:11 +09:00
772eb9f5d7
create writefreely 2024-07-13 17:04:11 +09:00
d39897e834
update hoarder 2024-07-06 22:32:34 +09:00
fa2e298e62
create hoarder 2024-07-03 21:48:25 +09:00
0fa1ac35b5
create kamal 2024-06-30 13:23:58 +09:00
07f7302115
create kamal 2024-05-29 23:38:07 +09:00
31c822e1c1
bolt 2024-04-25 22:06:47 +09:00
41a5be34b4
use deno 2024-04-22 23:21:12 +09:00
051d8906d5
Delete .github/workflows/_studio.yml 2024-04-22 12:21:40 +09:00
65d2e4a71f
deno 2024-04-22 12:15:30 +09:00
08f797b3f2
update 2024-04-22 00:20:58 +09:00
acabdaec8c
kita 2024-04-20 01:21:32 +09:00
07d437da3d
fixed root 2024-03-23 19:54:27 +09:00
6a43e9ddbe
create astro-fastify-ssg 2024-03-23 19:49:38 +09:00
c5b6327a2e
create astro-fastify 2024-03-23 19:37:55 +09:00
e9b42a86e4 [studio] Add GitHub Action 2024-03-17 06:15:05 +09:00
ef737c75b5
create eslint-plugin-tailwindcss 2024-03-13 14:30:20 +09:00
e834f57b2d
create wxt 2024-03-10 00:27:38 +09:00
6c8a9adcb8
create hono 2024-03-10 00:18:12 +09:00
c0a5e05a32
remove docker-playwright 2024-03-09 23:26:59 +09:00
a31c92a13d
remove histfilesize 2024-03-09 23:22:27 +09:00
f9e48803a5
create sops 2023-12-30 00:40:41 +09:00
c8b2ae0f07
create caddy-md 2023-12-28 23:11:47 +09:00
e353a7db6a
create pocketbase 2023-12-20 00:26:48 +09:00
c2508815d3
create nocodb 2023-12-19 23:58:35 +09:00
4db8537fe4
metadata export 2023-12-19 14:51:46 +09:00
f1780f541b
create makefile 2023-12-19 14:37:53 +09:00
87aeeafd13
update 2023-12-19 14:23:30 +09:00
4993bec7dc
update 2023-12-19 14:05:09 +09:00
106ed8c6ea
add alpine container workflow 2023-11-09 17:20:56 +09:00
82df080bc8
add groups
https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file#groups
2023-11-08 16:35:48 +09:00
638ede3838
remove codeql-analysis workflow 2023-11-08 16:27:19 +09:00
96c5774e6c
add codeql workflow 2023-11-08 16:24:13 +09:00
962b721a24
create update-empty-branch 2023-10-30 17:44:00 +09:00
24ac4ed7b1
create update-latest-release action 2023-10-30 16:40:54 +09:00
5f09fbedc1
fix 2023-10-25 16:49:26 +09:00
574b7a2906
create node-sea 2023-10-25 16:30:49 +09:00
8e62760d69
create postgres migration 2023-09-16 15:41:19 +09:00
966a3a2ec6
create fastify-validation 2023-09-11 17:44:55 +09:00
48406e4de9
create fastify-http-errors-enhanced 2023-09-11 10:30:37 +09:00
a115c1a929
add sendgrid example 2023-08-23 10:46:45 +09:00
8d6c754bbd
create nodemailer 2023-08-23 10:31:52 +09:00
e3843f842a
add project action 2023-08-09 08:24:35 +09:00
304d2aa963
create ts 2023-06-19 15:20:17 +09:00
57301eccd2
test 2023-05-06 00:15:46 +09:00
1502f3b9ba
test 2023-04-25 13:21:09 +09:00
971f14d0e3 remove projects 2023-03-18 22:52:35 +09:00
b8dc3b2e1c update 2023-03-07 16:29:13 +09:00
97dc7bec9a +2MB 2023-01-22 21:47:54 +09:00
fefb3a8287 create lighttpd 2023-01-22 21:47:12 +09:00
35ac9c5c71 create SvelteKit example 2023-01-12 19:13:11 +09:00
bf8dc82ce9 create gluon 2023-01-06 21:33:44 +09:00
33a3683986 create caddy-docker-proxy 2023-01-01 03:59:14 +09:00
78312c01b1 create traefik 2022-12-31 03:30:26 +09:00
e48d0b2c2f remove foo 2022-11-30 22:45:44 +09:00
4eedc1df5d add foo 2022-11-30 22:29:33 +09:00
635c597ec1 create flutter 2022-11-30 22:25:37 +09:00
d50ba51191 update 2022-08-21 14:42:38 +09:00
40397ade0a update 2022-08-20 18:17:34 +09:00
9aec2d3161 note 2022-08-20 00:50:53 +09:00
058cb26626 create histfilesize 2022-08-20 00:30:18 +09:00
542bcbf4dd create node-test 2022-08-19 23:19:48 +09:00
4302d439b9 create turbo 2022-08-17 00:51:48 +09:00
26f8156eb9 create section 2022-08-12 15:30:29 +09:00
e041143d06 create docusaurus 2022-08-12 15:20:32 +09:00
d39e666702 update 2022-08-08 11:12:07 +09:00
15bb94c978 create vitest 2022-07-29 23:56:41 +09:00
ec1ea3704c
Update supervisord.conf 2022-07-13 00:39:50 +09:00
509d81f06d create docker-playwright-jwm 2022-07-12 19:04:45 +09:00
9b46a8b08e add tsx 2022-07-08 18:16:31 +00:00
16a768d64a update depends 2022-07-07 15:03:49 +09:00
b57aed9359 create bun 2022-07-07 14:41:34 +09:00
f4ec67dbc4 create docker-network example 2022-06-17 16:47:50 +09:00
da6116ca73 create vitepress 2022-06-06 13:24:08 +09:00
ff9a69d379 create prometheus 2022-05-29 22:59:28 +09:00
2419504468 create wordpress 2022-05-17 14:38:07 +09:00
2d9879ef95 create vercel-fastify 2022-04-26 17:24:49 +09:00
c306eb6883 create dagger 2022-04-24 19:24:37 +09:00
7c856c889f update 2022-04-16 00:42:25 +00:00
94b9f43c27 create tsm-vs-esno 2022-04-16 09:21:21 +09:00
15a69ddc1e use stdout-stderr 2022-04-15 16:52:45 +09:00
3e29baac96 udpate 2022-04-15 15:57:00 +09:00
d977571425 create oclif 2022-04-15 10:46:49 +09:00
659934fe3d create hedgedoc 2022-04-13 10:15:09 +09:00
8ce7e9229b remvoe 2022-04-12 21:23:34 +09:00
21e9ee7b6e
Create codeql-analysis.yml 2022-04-10 13:16:20 +09:00
5cb145c842 dummy package for dependabot 2022-04-09 15:27:50 +09:00
1cffaa73ab create dependabot.yml 2022-04-08 13:58:51 +09:00
7c47400823 preact → solid 2022-01-22 14:16:50 +00:00
998590ba13 deno lint, deno test 2021-11-26 12:10:09 +09:00
58d3e74c02 update deno example 2021-11-24 17:53:54 +09:00
fb81affdc3 create stitches 2021-10-21 17:46:47 +09:00
d2efeefd9c create tailwindcss 2021-10-21 17:13:15 +09:00
72924aa010 disabled telemetry hasura 2021-10-16 22:20:02 +09:00
b9f0551c86 create hasura-rest 2021-10-16 02:12:59 +09:00
ca63a04f5c create parcel 2021-10-15 23:15:46 +09:00
c824cef177 create supabase 2021-10-14 18:45:42 +09:00
938427a63d create astro-ssg 2021-10-14 11:21:52 +09:00
fbff9b126a create snowpack 2021-10-14 11:06:02 +09:00
22dad8a32a
Delete astro directory 2021-10-13 21:38:49 +09:00
6b7b9c5d10
Delete tsdx directory 2021-10-13 21:37:43 +09:00
7a68d5d755
Delete nexus-with-prisma directory 2021-10-13 21:37:09 +09:00
3a46498a44
Delete nuxt directory 2021-10-13 21:36:48 +09:00
fdedd73cbf
Delete next directory 2021-10-13 21:36:29 +09:00
fcc2731888
Delete moodle directory 2021-10-13 21:35:42 +09:00
e4f12a45c7
Delete ts-openapi directory 2021-10-13 21:34:55 +09:00
db8b7490c7 refactor 2021-10-13 19:50:32 +09:00
254efe47b6 create wmr-ssg 2021-10-13 19:40:13 +09:00
70c68198c3 delete vimeo 2021-10-13 17:43:53 +09:00
d2ab002ec2 delete wmr 2021-10-13 17:43:40 +09:00
e6d2afa11d create vite-ssg-example 2021-10-12 19:21:49 +09:00
a0160e0a3e delete vite 2021-10-12 18:34:10 +09:00
7652dd6fbc create esbuild-fastify 2021-10-12 18:23:14 +09:00
kou029w
5ffa7c9ecd Release 0.0.7 2021-08-29 09:39:19 +00:00
0366cde148 ドキュメントの整理 2021-08-29 18:38:41 +09:00
334 changed files with 31414 additions and 55490 deletions
.github
.gitignore
astro-fastify-ssg
astro-fastify
astro
bitnet
caddy-md
deno-playwright
deno
docker-network
docker-playwright
docmost
esbuild
eslint-plugin-tailwindcss
fastify-http-errors-enhanced
fastify-validation
firefox-send
fluentd
goose
groq
hasura-rest

11
.github/ISSUE_TEMPLATE/bug.yml vendored Normal file
View file

@ -0,0 +1,11 @@
name: Bug Report
description: File a bug report.
title: "[Bug]: "
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this bug report!
- type: textarea
attributes:
label: Describe the bug

10
.github/dependabot.yml vendored Normal file
View file

@ -0,0 +1,10 @@
version: 2
updates:
- package-ecosystem: npm
directory: /
schedule:
interval: monthly
groups:
dependencies:
patterns:
- "*"

11
.github/workflows/alpine.yml vendored Normal file
View file

@ -0,0 +1,11 @@
name: alpine
on:
workflow_dispatch:
jobs:
main:
runs-on: ubuntu-latest
container: alpine
steps:
- uses: actions/checkout@v4
- run: cat /.dockerenv
- run: ls

View file

@ -0,0 +1,20 @@
name: Auto Move to In Progress on Assign
on:
issues:
types:
- assigned
jobs:
move-to-in-progress:
runs-on: ubuntu-latest
steps:
- name: Move Issue to In Progress
run: |
PROJECT_NODE_ID=$(gh project view --owner "${{ github.repository_owner }}" "${PROJECT_ID}" --format json --jq .id)
PROJECT_ITEM_ID=$(ISSUE_NUMBER="${{ github.event.issue.number }}" gh project item-list --owner "${{ github.repository_owner }}" "${PROJECT_ID}" --limit 100000 --format json --jq '.items[] | select(.content.repository == env.GITHUB_REPOSITORY and .content.number == (env.ISSUE_NUMBER | tonumber)) | .id')
gh project item-edit --project-id "${PROJECT_NODE_ID}" --id "${PROJECT_ITEM_ID}" --field-id "${STATUS_FIELD_ID}" --single-select-option-id "${IN_PROGRESS_STATUS_ID}"
env:
# read:org project
GITHUB_TOKEN: "${{ secrets.ADD_TO_PROJECT_PAT }}"
PROJECT_ID: "2"
STATUS_FIELD_ID: PVTSSF_lAHOABpmus0uuM4AAVPr
IN_PROGRESS_STATUS_ID: "98236657"

View file

@ -1,8 +0,0 @@
name: codecov
on: workflow_dispatch
jobs:
main:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: codecov/codecov-action@v1

26
.github/workflows/codeql.yml vendored Normal file
View file

@ -0,0 +1,26 @@
name: codeql
on:
push:
branches:
- main
jobs:
analyze:
runs-on: ubuntu-latest
strategy:
matrix:
language:
- javascript
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
languages: ${{ matrix.language }}
queries: +security-and-quality
- name: Autobuild
uses: github/codeql-action/autobuild@v2
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
with:
category: "/language:${{ matrix.language }}"

View file

@ -1,9 +0,0 @@
name: coveralls
on: workflow_dispatch
jobs:
main:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: coverallsapp/github-action@master
with: { github-token: "${{ secrets.github_token }}" }

View file

@ -0,0 +1,18 @@
name: update-empty-branch
on:
workflow_dispatch:
jobs:
main:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- run: |
git worktree add --track -b empty empty origin/empty
rm -rf empty/*
git config user.name bot
git config user.email '<>'
git -C empty add --all
git -C empty commit --allow-empty --message "based on $(git rev-parse @)"
git -C empty push origin empty

View file

@ -0,0 +1,29 @@
name: update-latest-release
on:
workflow_dispatch:
jobs:
main:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: echo ok > hello.txt
# - uses: actions/github-script@v6
# with:
# script: |
# const { data: release } = await github.rest.repos.getLatestRelease(context.repo);
# const name = "hello.txt";
# const data = await require("node:fs").promises.readFile(name);
# await github.rest.repos.uploadReleaseAsset({
# ...context.repo,
# release_id: release.id,
# name,
# data,
# });
- run: |
latest=$(gh release view --json tagName --jq .tagName)
gh release delete-asset "${latest}" hello.txt || :
gh release upload "${latest}" hello.txt
env:
GH_TOKEN: ${{ github.token }}

4
.gitignore vendored
View file

@ -1,5 +1,5 @@
node_modules/
dist/
test-results/
.next/
/ts-openapi/cypress/videos/
/ts-openapi/cypress/screenshots/
.env

View file

@ -0,0 +1,19 @@
{
"name": "@kou029w/astro-fastify-ssg",
"version": "0.0.0",
"private": true,
"license": "MIT",
"type": "module",
"scripts": {
"dev": "fastify start --log-level=info --debug --watch server.js -- --dev",
"build": "astro build",
"start": "fastify start server.js"
},
"devDependencies": {
"@fastify/http-proxy": "^9.5.0",
"@fastify/static": "^7.0.1",
"astro": "^4.5.9",
"fastify": "^4.26.2",
"fastify-cli": "^6.1.1"
}
}

4440
astro-fastify-ssg/pnpm-lock.yaml generated Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1 @@
public

View file

@ -0,0 +1,25 @@
import fastifyStatic from "@fastify/static";
import { fileURLToPath } from "node:url";
/** @type {import("fastify").FastifyPluginAsync} */
const app = async (fastify, opts) => {
fastify.get("/hello", async () => "hello");
if (opts.dev) {
const astro = await import("astro");
const astroDevServer = await astro.dev({
root: fileURLToPath(import.meta.resolve(".")),
});
await fastify.register(await import("@fastify/http-proxy"), {
upstream: `http://localhost:${astroDevServer.address.port}`,
});
} else {
await fastify.register(fastifyStatic, {
root: fileURLToPath(import.meta.resolve("./dist")),
});
}
fastify.get("/world", async () => "world");
};
export default app;

1
astro-fastify-ssg/src/env.d.ts vendored Normal file
View file

@ -0,0 +1 @@
/// <reference types="astro/client" />

View file

@ -0,0 +1 @@
**Hello, World!**

View file

@ -0,0 +1,9 @@
import { defineConfig } from "astro/config";
import node from "@astrojs/node";
export default defineConfig({
output: "server",
adapter: node({
mode: "middleware",
}),
});

View file

@ -0,0 +1,21 @@
{
"name": "@kou029w/astro-fastify",
"version": "0.0.0",
"private": true,
"license": "MIT",
"type": "module",
"scripts": {
"dev": "fastify start --log-level=info --debug --watch server.js -- --dev",
"build": "astro build",
"start": "fastify start server.js"
},
"devDependencies": {
"@astrojs/node": "^8.2.5",
"@fastify/http-proxy": "^9.5.0",
"@fastify/middie": "^8.3.0",
"@fastify/static": "^7.0.1",
"astro": "^4.5.9",
"fastify": "^4.26.2",
"fastify-cli": "^6.1.1"
}
}

4553
astro-fastify/pnpm-lock.yaml generated Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1 @@
public

29
astro-fastify/server.js Normal file
View file

@ -0,0 +1,29 @@
import fastifyMiddie from "@fastify/middie";
import fastifyStatic from "@fastify/static";
import { fileURLToPath } from "node:url";
/** @type {import("fastify").FastifyPluginAsync} */
const app = async (fastify, opts) => {
fastify.get("/hello", async () => "hello");
if (opts.dev) {
const astro = await import("astro");
const astroDevServer = await astro.dev({
root: fileURLToPath(import.meta.resolve(".")),
});
await fastify.register(await import("@fastify/http-proxy"), {
upstream: `http://localhost:${astroDevServer.address.port}`,
});
} else {
await fastify.register(fastifyStatic, {
root: fileURLToPath(import.meta.resolve("./dist/client")),
});
await fastify.register(fastifyMiddie);
const astroServer = await import("./dist/server/entry.mjs");
fastify.use(astroServer.handler);
}
fastify.get("/world", async () => "world");
};
export default app;

1
astro-fastify/src/env.d.ts vendored Normal file
View file

@ -0,0 +1 @@
/// <reference types="astro/client" />

View file

@ -0,0 +1,9 @@
import type { APIRoute } from "astro";
export const GET: APIRoute = () => {
return new Response(
JSON.stringify({
number: Math.random(),
}),
);
};

18
astro/.gitignore vendored
View file

@ -1,18 +0,0 @@
# build output
dist
# dependencies
node_modules/
.snowpack/
# logs
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# environment variables
.env
.env.production
# macOS-specific files
.DS_Store

View file

@ -1,40 +0,0 @@
# Welcome to [Astro](https://astro.build)
> 🧑‍🚀 **Seasoned astronaut?** Delete this file. Have fun!
## 🚀 Project Structure
Inside of your Astro project, you'll see the following folders and files:
```
/
├── public/
│ ├── robots.txt
│ └── favicon.ico
├── src/
│ ├── components/
│ │ └── Tour.astro
│ └── pages/
│ └── index.astro
└── package.json
```
Astro looks for `.astro` or `.md` files in the `src/pages/` directory. Each page is exposed as a route based on its file name.
There's nothing special about `src/components/`, but that's where we like to put any Astro/React/Vue/Svelte/Preact components.
Any static assets, like images, can be placed in the `public/` directory.
## 🧞 Commands
All commands are run from the root of the project, from a terminal:
| Command | Action |
|:----------------|:--------------------------------------------|
| `npm install` | Installs dependencies |
| `npm run start` | Starts local dev server at `localhost:3000` |
| `npm run build` | Build your production site to `./dist/` |
## 👀 Want to learn more?
Feel free to check [our documentation](https://github.com/snowpackjs/astro) or jump into our [Discord server](https://astro.build/chat).

View file

@ -1,14 +0,0 @@
export default {
// projectRoot: '.', // Where to resolve all URLs relative to. Useful if you have a monorepo project.
// pages: './src/pages', // Path to Astro components, pages, and data
// dist: './dist', // When running `astro build`, path to final static output
// public: './public', // A folder of static files Astro will copy to the root. Useful for favicons, images, and other files that dont need processing.
buildOptions: {
// site: 'http://example.com', // Your public domain, e.g.: https://my-site.dev/. Used to generate sitemaps and canonical URLs.
// sitemap: true, // Generate sitemap (set to "false" to disable)
},
devOptions: {
// port: 3000, // The port to run the dev server on.
// tailwindConfig: '', // Path to tailwind.config.js if used, e.g. './tailwind.config.js'
},
};

View file

@ -1,5 +0,0 @@
{
"title": "Getting Started",
"description": "a friendly starting point for new astronauts",
"rank": 999
}

View file

@ -1,12 +0,0 @@
{
"name": "@astrojs/starter-kit",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "astro dev",
"build": "astro build"
},
"devDependencies": {
"astro": "^0.12.9"
}
}

View file

@ -1,12 +0,0 @@
<svg width="193" height="256" fill="none" xmlns="http://www.w3.org/2000/svg">
<style>
#flame { fill: #FF5D01; }
#a { fill: #000014; }
@media (prefers-color-scheme: dark) {
#a { fill: #fff; }
}
</style>
<path id="a" fill-rule="evenodd" clip-rule="evenodd" d="M131.496 18.929c1.943 2.413 2.935 5.67 4.917 12.181l43.309 142.27a180.277 180.277 0 00-51.778-17.53L99.746 60.56a3.67 3.67 0 00-7.042.01l-27.857 95.232a180.224 180.224 0 00-52.01 17.557l43.52-142.281c1.989-6.502 2.983-9.752 4.927-12.16a15.999 15.999 0 016.484-4.798c2.872-1.154 6.271-1.154 13.07-1.154h31.085c6.807 0 10.211 0 13.085 1.157a16 16 0 016.488 4.806z" fill="url(#paint0_linear)"/>
<path id="flame" fill-rule="evenodd" clip-rule="evenodd" d="M136.678 180.151c-7.14 6.105-21.39 10.268-37.804 10.268-20.147 0-37.033-6.272-41.513-14.707-1.602 4.835-1.962 10.367-1.962 13.902 0 0-1.055 17.355 11.016 29.426 0-6.268 5.081-11.349 11.349-11.349 10.743 0 10.731 9.373 10.721 16.977v.679c0 11.542 7.054 21.436 17.086 25.606a23.27 23.27 0 01-2.339-10.2c0-11.008 6.463-15.107 13.973-19.87 5.977-3.79 12.616-8.001 17.192-16.449a31.013 31.013 0 003.744-14.82c0-3.299-.513-6.479-1.463-9.463z" />
</svg>

Before

(image error) Size: 1.2 KiB

View file

@ -1,11 +0,0 @@
<svg width="256" height="256" fill="none" xmlns="http://www.w3.org/2000/svg">
<style>
#flame { fill: #FF5D01; }
#a { fill: #000014; }
@media (prefers-color-scheme: dark) {
#a { fill: #fff; }
}
</style>
<path id="a" fill-rule="evenodd" clip-rule="evenodd" d="M163.008 18.929c1.944 2.413 2.935 5.67 4.917 12.181l43.309 142.27a180.277 180.277 0 00-51.778-17.53l-28.198-95.29a3.67 3.67 0 00-7.042.01l-27.857 95.232a180.225 180.225 0 00-52.01 17.557l43.52-142.281c1.99-6.502 2.983-9.752 4.927-12.16a15.999 15.999 0 016.484-4.798c2.872-1.154 6.271-1.154 13.07-1.154h31.085c6.807 0 10.211 0 13.086 1.157a16.004 16.004 0 016.487 4.806z" />
<path id="flame" fill-rule="evenodd" clip-rule="evenodd" d="M168.19 180.151c-7.139 6.105-21.39 10.268-37.804 10.268-20.147 0-37.033-6.272-41.513-14.707-1.602 4.835-1.961 10.367-1.961 13.902 0 0-1.056 17.355 11.015 29.426 0-6.268 5.081-11.349 11.349-11.349 10.743 0 10.731 9.373 10.721 16.977v.679c0 11.542 7.054 21.436 17.086 25.606a23.27 23.27 0 01-2.339-10.2c0-11.008 6.463-15.107 13.974-19.87 5.976-3.79 12.616-8.001 17.192-16.449a31.024 31.024 0 003.743-14.82c0-3.299-.513-6.479-1.463-9.463z" />
</svg>

Before

(image error) Size: 1.2 KiB

View file

@ -1,2 +0,0 @@
User-agent: *
Disallow: /

View file

@ -1,28 +0,0 @@
* {
box-sizing: border-box;
margin: 0;
}
:root {
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji;
font-size: 1rem;
--user-font-scale: 1rem - 16px;
font-size: clamp(0.875rem, 0.4626rem + 1.0309vw + var(--user-font-scale), 1.125rem);
}
body {
padding: 4rem 2rem;
width: 100vw;
min-height: 100vh;
display: grid;
justify-content: center;
background: #f9fafb;
color: #111827;
}
@media (prefers-color-scheme: dark) {
body {
background: #111827;
color: #fff;
}
}

View file

@ -1,38 +0,0 @@
:root {
--font-mono: Consolas, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", Monaco, "Courier New", Courier, monospace;
--color-light: #F3F4F6;
}
@media (prefers-color-scheme: dark) {
:root {
--color-light: #1F2937;
}
}
a {
color: inherit;
}
header > div {
font-size: clamp(2rem, -0.4742rem + 6.1856vw, 2.75rem);
}
header > div {
display: flex;
flex-direction: column;
align-items: center;
}
header h1 {
font-size: 1em;
font-weight: 500;
}
header img {
width: 2em;
height: 2.667em;
}
h2 {
font-weight: 500;
font-size: clamp(1.5rem, 1rem + 1.25vw, 2rem);
}

View file

@ -1,85 +0,0 @@
---
import { Markdown } from 'astro/components';
---
<article>
<div class="banner">
<p><strong>🧑‍🚀 Seasoned astronaut?</strong> Delete this file. Have fun!</p>
</div>
<section>
<Markdown>
## 🚀 Project Structure
Inside of your Astro project, you'll see the following folders and files:
```
/
├── public/
│ ├── robots.txt
│ └── favicon.ico
├── src/
│ ├── components/
│ │ └── Tour.astro
│ └── pages/
│ └── index.astro
└── package.json
```
Astro looks for `.astro` or `.md` files in the `src/pages/` directory.
Each page is exposed as a route based on its file name.
There's nothing special about `src/components/`, but that's where we like to put any Astro/React/Vue/Svelte/Preact components.
Any static assets, like images, can be placed in the `public/` directory.
</Markdown>
</section>
<section>
<h2>👀 Want to learn more?</h2>
<p>Feel free to check <a href="https://github.com/snowpackjs/astro">our documentation</a> or jump into our <a href="https://astro.build/chat">Discord server</a>.</p>
</section>
</article>
<style>
article {
padding-top: 2em;
line-height: 1.5;
}
section {
margin-top: 2em;
display: flex;
flex-direction: column;
gap: 1em;
max-width: 70ch;
}
.banner {
text-align: center;
font-size: 1.2rem;
background: var(--color-light);
padding: 1em 1.5em;
padding-left: 0.75em;
border-radius: 4px;
}
pre,
code {
font-family: var(--font-mono);
background: var(--color-light);
border-radius: 4px;
}
pre {
padding: 1em 1.5em;
}
.tree {
line-height: 1.2;
}
code:not(.tree) {
padding: 0.125em;
margin: 0 -0.125em;
}
</style>

View file

@ -1,38 +0,0 @@
---
import Tour from '../components/Tour.astro';
---
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Astro</title>
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<link rel="stylesheet" href="/style/global.css">
<link rel="stylesheet" href="/style/home.css">
<style>
header {
display: flex;
flex-direction: column;
gap: 1em;
max-width: min(100%, 68ch);
}
</style>
</head>
<body>
<main>
<header>
<div>
<img width="60" height="80" src="/assets/logo.svg" alt="Astro logo">
<h1>Welcome to <a href="https://astro.build/">Astro</a></h1>
</div>
</header>
<Tour />
</main>
</body>
</html>

File diff suppressed because it is too large Load diff

14
bitnet/Dockerfile Normal file
View file

@ -0,0 +1,14 @@
FROM python:3.9-alpine
RUN apk add --no-cache build-base cmake clang git && \
rm -rf /var/cache/apk/*
RUN git clone --recursive --depth 1 https://github.com/microsoft/BitNet.git && \
rm -rf BitNet/.git
WORKDIR /BitNet
RUN pip install -r requirements.txt && \
pip cache purge
RUN python3 utils/codegen_tl2.py --model Llama3-8B-1.58-100B-tokens --BM 256,128,256,128 --BK 96,96,96,96 --bm 32,32,32,32
RUN cmake -B build -DBITNET_X86_TL2=ON -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
RUN cmake --build build --target llama-cli --config Release
ADD https://huggingface.co/brunopio/Llama3-8B-1.58-100B-tokens-GGUF/resolve/main/Llama3-8B-1.58-100B-tokens-TQ2_0.gguf .
RUN echo "2565559c82a1d03ecd1101f536c5e99418d07e55a88bd5e391ed734f6b3989ac Llama3-8B-1.58-100B-tokens-TQ2_0.gguf" | sha256sum -c
CMD ["python3", "run_inference.py", "-m", "Llama3-8B-1.58-100B-tokens-TQ2_0.gguf", "-p", "The sky is blue due to a phenomenon called"]

5
caddy-md/Caddyfile Normal file
View file

@ -0,0 +1,5 @@
:8080 {
file_server
templates
try_files {path} /
}

8
caddy-md/compose.yml Normal file
View file

@ -0,0 +1,8 @@
services:
caddy:
image: caddy
ports:
- 8080:8080
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- ./srv:/srv

1
caddy-md/srv/a.md Normal file
View file

@ -0,0 +1 @@
# あ

15
caddy-md/srv/index.html Normal file
View file

@ -0,0 +1,15 @@
<!DOCTYPE html>
{{- $path := .OriginalReq.URL.Path}}
{{- if hasSuffix "/" $path}}{{$path = print $path "index"}}{{end}}
{{- $path = print $path ".md"}}
{{- if not (fileExists $path)}}{{httpError 404}}{{end}}
{{- $markdown := (include $path | splitFrontMatter)}}
{{- $title := default (trimSuffix ".md" (base $path)) $markdown.Meta.title}}
<html lang="ja">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<title>{{$title}}</title>
{{markdown $markdown.Body | trim}}
</html>

9
caddy-md/srv/index.md Normal file
View file

@ -0,0 +1,9 @@
---
title: トップ
---
# トップページ
こんにちは、世界
- [a](a)

View file

@ -0,0 +1,4 @@
```
$ deno -A npm:playwright install
$ deno -A main.ts
```

View file

@ -0,0 +1,5 @@
{
"imports": {
"playwright": "npm:playwright@^1.48.2"
}
}

27
deno-playwright/deno.lock generated Normal file
View file

@ -0,0 +1,27 @@
{
"version": "4",
"specifiers": {
"npm:playwright@*": "1.48.2",
"npm:playwright@^1.48.2": "1.48.2"
},
"npm": {
"fsevents@2.3.2": {
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA=="
},
"playwright-core@1.48.2": {
"integrity": "sha512-sjjw+qrLFlriJo64du+EK0kJgZzoQPsabGF4lBvsid+3CNIZIYLgnMj9V6JY5VhM2Peh20DJWIVpVljLLnlawA=="
},
"playwright@1.48.2": {
"integrity": "sha512-NjYvYgp4BPmiwfe31j4gHLa3J7bD2WiBz8Lk2RoSsmX38SVIARZ18VYjxLjAcDsAhA+F4iSEXTSGgjua0rrlgQ==",
"dependencies": [
"fsevents",
"playwright-core"
]
}
},
"workspace": {
"dependencies": [
"npm:playwright@^1.48.2"
]
}
}

8
deno-playwright/main.ts Normal file
View file

@ -0,0 +1,8 @@
import { chromium } from "npm:playwright";
const browser = await chromium.launch({ headless: false });
const page = await browser.newPage();
await page.goto("https://example.com");
await new Promise((r) => setTimeout(r, 10_000));
await browser.close();

13
deno/deno.json Normal file
View file

@ -0,0 +1,13 @@
{
"tasks": {
"dev": "deno run --watch main.ts"
},
"deploy": {
"project": "d7ff4021-31bb-4663-b015-12a9e7b9bb64",
"exclude": [
"**/node_modules"
],
"include": [],
"entrypoint": "main.ts"
}
}

8
deno/main.ts Normal file
View file

@ -0,0 +1,8 @@
const now = new Date();
if (import.meta.main) {
Deno.serve(() => new Response(`${now}: Hello World!`));
}
// $ curl https://great-crow-36.deno.dev/
// Mon Apr 22 2024 03:13:21 GMT+0000 (Coordinated Universal Time): Hello World!

File diff suppressed because it is too large Load diff

View file

@ -1,10 +0,0 @@
import { serve } from "https://deno.land/std@0.56.0/http/server.ts";
async function main() {
const port = 8000;
console.log(`http://localhost:${port}/`);
for await (const req of serve({ port })) {
req.respond({ body: "Hello World\n" });
}
}
main();

15
docker-network/README.md Normal file
View file

@ -0,0 +1,15 @@
やりたいこと: 複数の NIC がある環境でそれぞれ Docker コンテナに割り当てたい
メモ:
```sh
docker compose create
sudo apt install -y bridge-utils
sudo brctl addif br-nic-a <NIC名>
docker compose start
# brctl show
```
インターネットにつながることは確認できなかった。
NIC を割り当てることはできた。
あとは IP アドレスを振れば問題無いか。

View file

@ -0,0 +1,18 @@
services:
a:
image: alpine
network_mode: none
networks:
a:
ipv4_address: "10.10.1.10"
command: ping 8.8.8.8
networks:
a:
driver: bridge
internal: true
driver_opts:
com.docker.network.bridge.name: br-nic-a
ipam:
config:
- subnet: "10.10.1.0/24"
gateway: "10.10.1.1"

View file

@ -1,26 +0,0 @@
# デスクトップ環境で Docker イメージを使って Playwright のブラウザーを起動してみる
WebKit の環境が必要だったので構築してみた。
Ubuntu ならば Playwright が公式にサポートしているためホントは不要だが、環境を汚さないので便利かもしれないと思った。
## 前提
- Docker
- X11 の UNIX ドメインソケットが/tmp/.X11-unix に存在すること
## やり方
```sh
docker run --rm -it -u $(id -u):$(id -g) -e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix mcr.microsoft.com/playwright npx playwright wk example.com
```
Digest: `sha256:310e3ca5bb884f4b9a4a8452dbabda4a35ac62a0d6f46eee953558e8d7d4cfb0`
### Docker Compose の場合
```bash
echo UID=$(id -u) >> .env
echo GID=$(id -g) >> .env
docker-compose up
```

View file

@ -1,8 +0,0 @@
version: "3"
services:
playwright:
image: mcr.microsoft.com/playwright
user: "${UID}:${GID}"
environment: [DISPLAY]
volumes: ["/tmp/.X11-unix:/tmp/.X11-unix"]
command: npx playwright wk example.com

29
docmost/compose.yml Normal file
View file

@ -0,0 +1,29 @@
services:
docmost:
image: docmost/docmost:latest
depends_on:
- db
- redis
environment:
APP_URL: http://localhost:3000
APP_SECRET: "${APP_SECRET}"
DATABASE_URL: postgresql://docmost:${POSTGRES_PASSWORD}@db:5432/docmost?schema=public
REDIS_URL: redis://redis:6379
ports:
- "3000:3000"
volumes:
- ./docmost:/app/data/storage
db:
image: postgres:16-alpine
environment:
POSTGRES_DB: docmost
POSTGRES_USER: docmost
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
restart: unless-stopped
volumes:
- ./db_data:/var/lib/postgresql/data
redis:
image: redis:7.2-alpine
restart: unless-stopped
volumes:
- ./redis_data:/data

View file

@ -1,10 +0,0 @@
import { readFile } from "fs/promises";
import esbuild from "esbuild";
const { build } = esbuild;
const entryPoint = "src/index.ts";
const { main: cjs, module: esm } = JSON.parse(
await readFile(new URL("./package.json", import.meta.url))
);
const base = { entryPoints: [entryPoint], sourcemap: true, bundle: true };
build({ ...base, outfile: esm, format: "esm" });
build({ ...base, outfile: cjs, format: "cjs" });

View file

@ -1,18 +0,0 @@
{
"name": "@kou029w/esbuild",
"version": "1.0.0",
"main": "dist/kou029w-esbuild.cjs.js",
"module": "dist/kou029w-esbuild.esm.js",
"sideEffects": false,
"author": "Kohei Watanabe <kou029w@gmail.com>",
"license": "MIT",
"devDependencies": {
"esbuild": "^0.8.23"
},
"scripts": {
"build": "node --experimental-json-modules build.mjs"
},
"engines": {
"node": ">=14.x"
}
}

View file

@ -1 +0,0 @@
export default "Hello! esbuild";

View file

@ -1,8 +0,0 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
esbuild@^0.8.23:
version "0.8.23"
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.8.23.tgz#8c4ccd3abb5f7b4ae9f31c571971517be4ae60d2"
integrity sha512-LkgCmotGnhVgRGxjDkTBBYrnJ5stcxK+40cEJGtXUS16hcAWy90cn1qjxKCogzLPJ75gW/L6ejly7VKrMstVGQ==

View file

@ -0,0 +1,28 @@
module.exports = {
root: true,
env: { browser: true, es2020: true },
extends: [
"eslint:recommended",
"plugin:react/recommended",
"plugin:react/jsx-runtime",
"plugin:react-hooks/recommended",
"plugin:tailwindcss/recommended",
],
ignorePatterns: ["dist", ".eslintrc.cjs"],
parserOptions: { ecmaVersion: "latest", sourceType: "module" },
settings: { react: { version: "18.2" } },
plugins: ["react-refresh"],
rules: {
"react/jsx-no-target-blank": "off",
"react-refresh/only-export-components": [
"warn",
{ allowConstantExport: true },
],
},
overrides: [
{
files: ["*.ts", "*.tsx", "*.js"],
parser: "@typescript-eslint/parser",
},
],
};

24
eslint-plugin-tailwindcss/.gitignore vendored Normal file
View file

@ -0,0 +1,24 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
dist
dist-ssr
*.local
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

View file

@ -0,0 +1,8 @@
# React + Vite
This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
Currently, two official plugins are available:
- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh
- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh

View file

@ -1,13 +1,13 @@
<!DOCTYPE html>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="src/favicon.svg" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite App</title>
<title>Vite + React</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
<script type="module" src="/src/main.jsx"></script>
</body>
</html>

5498
eslint-plugin-tailwindcss/package-lock.json generated Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,28 @@
{
"name": "my-project",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "vite build",
"lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0",
"preview": "vite preview"
},
"dependencies": {
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
"devDependencies": {
"@types/react": "^18.2.64",
"@types/react-dom": "^18.2.21",
"@typescript-eslint/parser": "^7.2.0",
"@vitejs/plugin-react": "^4.2.1",
"eslint": "^8.57.0",
"eslint-plugin-react": "^7.34.0",
"eslint-plugin-react-hooks": "^4.6.0",
"eslint-plugin-react-refresh": "^0.4.5",
"eslint-plugin-tailwindcss": "^3.15.1",
"vite": "^5.1.6"
}
}

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>

After

(image error) Size: 1.5 KiB

View file

@ -0,0 +1,42 @@
#root {
max-width: 1280px;
margin: 0 auto;
padding: 2rem;
text-align: center;
}
.logo {
height: 6em;
padding: 1.5em;
will-change: filter;
transition: filter 300ms;
}
.logo:hover {
filter: drop-shadow(0 0 2em #646cffaa);
}
.logo.react:hover {
filter: drop-shadow(0 0 2em #61dafbaa);
}
@keyframes logo-spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
@media (prefers-reduced-motion: no-preference) {
a:nth-of-type(2) .logo {
animation: logo-spin infinite 20s linear;
}
}
.card {
padding: 2em;
}
.read-the-docs {
color: #888;
}

View file

@ -0,0 +1,19 @@
import "./App.css";
function Text(props) {
// eslint-disable-next-line react/prop-types
return <div className={`w-1 ${props.className}`}>red text</div>;
}
function App() {
return (
<>
{/* eslint-disable-next-line tailwindcss/no-contradicting-classname */}
<Text className="container w-2 w-3" />
{/* これはパス */}
<Text className="container w-2" />
</>
);
}
export default App;

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="35.93" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 228"><path fill="#00D8FF" d="M210.483 73.824a171.49 171.49 0 0 0-8.24-2.597c.465-1.9.893-3.777 1.273-5.621c6.238-30.281 2.16-54.676-11.769-62.708c-13.355-7.7-35.196.329-57.254 19.526a171.23 171.23 0 0 0-6.375 5.848a155.866 155.866 0 0 0-4.241-3.917C100.759 3.829 77.587-4.822 63.673 3.233C50.33 10.957 46.379 33.89 51.995 62.588a170.974 170.974 0 0 0 1.892 8.48c-3.28.932-6.445 1.924-9.474 2.98C17.309 83.498 0 98.307 0 113.668c0 15.865 18.582 31.778 46.812 41.427a145.52 145.52 0 0 0 6.921 2.165a167.467 167.467 0 0 0-2.01 9.138c-5.354 28.2-1.173 50.591 12.134 58.266c13.744 7.926 36.812-.22 59.273-19.855a145.567 145.567 0 0 0 5.342-4.923a168.064 168.064 0 0 0 6.92 6.314c21.758 18.722 43.246 26.282 56.54 18.586c13.731-7.949 18.194-32.003 12.4-61.268a145.016 145.016 0 0 0-1.535-6.842c1.62-.48 3.21-.974 4.76-1.488c29.348-9.723 48.443-25.443 48.443-41.52c0-15.417-17.868-30.326-45.517-39.844Zm-6.365 70.984c-1.4.463-2.836.91-4.3 1.345c-3.24-10.257-7.612-21.163-12.963-32.432c5.106-11 9.31-21.767 12.459-31.957c2.619.758 5.16 1.557 7.61 2.4c23.69 8.156 38.14 20.213 38.14 29.504c0 9.896-15.606 22.743-40.946 31.14Zm-10.514 20.834c2.562 12.94 2.927 24.64 1.23 33.787c-1.524 8.219-4.59 13.698-8.382 15.893c-8.067 4.67-25.32-1.4-43.927-17.412a156.726 156.726 0 0 1-6.437-5.87c7.214-7.889 14.423-17.06 21.459-27.246c12.376-1.098 24.068-2.894 34.671-5.345a134.17 134.17 0 0 1 1.386 6.193ZM87.276 214.515c-7.882 2.783-14.16 2.863-17.955.675c-8.075-4.657-11.432-22.636-6.853-46.752a156.923 156.923 0 0 1 1.869-8.499c10.486 2.32 22.093 3.988 34.498 4.994c7.084 9.967 14.501 19.128 21.976 27.15a134.668 134.668 0 0 1-4.877 4.492c-9.933 8.682-19.886 14.842-28.658 17.94ZM50.35 144.747c-12.483-4.267-22.792-9.812-29.858-15.863c-6.35-5.437-9.555-10.836-9.555-15.216c0-9.322 13.897-21.212 37.076-29.293c2.813-.98 5.757-1.905 8.812-2.773c3.204 10.42 7.406 21.315 12.477 32.332c-5.137 11.18-9.399 22.249-12.634 32.792a134.718 134.718 0 0 1-6.318-1.979Zm12.378-84.26c-4.811-24.587-1.616-43.134 6.425-47.789c8.564-4.958 27.502 2.111 47.463 19.835a144.318 144.318 0 0 1 3.841 3.545c-7.438 7.987-14.787 17.08-21.808 26.988c-12.04 1.116-23.565 2.908-34.161 5.309a160.342 160.342 0 0 1-1.76-7.887Zm110.427 27.268a347.8 347.8 0 0 0-7.785-12.803c8.168 1.033 15.994 2.404 23.343 4.08c-2.206 7.072-4.956 14.465-8.193 22.045a381.151 381.151 0 0 0-7.365-13.322Zm-45.032-43.861c5.044 5.465 10.096 11.566 15.065 18.186a322.04 322.04 0 0 0-30.257-.006c4.974-6.559 10.069-12.652 15.192-18.18ZM82.802 87.83a323.167 323.167 0 0 0-7.227 13.238c-3.184-7.553-5.909-14.98-8.134-22.152c7.304-1.634 15.093-2.97 23.209-3.984a321.524 321.524 0 0 0-7.848 12.897Zm8.081 65.352c-8.385-.936-16.291-2.203-23.593-3.793c2.26-7.3 5.045-14.885 8.298-22.6a321.187 321.187 0 0 0 7.257 13.246c2.594 4.48 5.28 8.868 8.038 13.147Zm37.542 31.03c-5.184-5.592-10.354-11.779-15.403-18.433c4.902.192 9.899.29 14.978.29c5.218 0 10.376-.117 15.453-.343c-4.985 6.774-10.018 12.97-15.028 18.486Zm52.198-57.817c3.422 7.8 6.306 15.345 8.596 22.52c-7.422 1.694-15.436 3.058-23.88 4.071a382.417 382.417 0 0 0 7.859-13.026a347.403 347.403 0 0 0 7.425-13.565Zm-16.898 8.101a358.557 358.557 0 0 1-12.281 19.815a329.4 329.4 0 0 1-23.444.823c-7.967 0-15.716-.248-23.178-.732a310.202 310.202 0 0 1-12.513-19.846h.001a307.41 307.41 0 0 1-10.923-20.627a310.278 310.278 0 0 1 10.89-20.637l-.001.001a307.318 307.318 0 0 1 12.413-19.761c7.613-.576 15.42-.876 23.31-.876H128c7.926 0 15.743.303 23.354.883a329.357 329.357 0 0 1 12.335 19.695a358.489 358.489 0 0 1 11.036 20.54a329.472 329.472 0 0 1-11 20.722Zm22.56-122.124c8.572 4.944 11.906 24.881 6.52 51.026c-.344 1.668-.73 3.367-1.15 5.09c-10.622-2.452-22.155-4.275-34.23-5.408c-7.034-10.017-14.323-19.124-21.64-27.008a160.789 160.789 0 0 1 5.888-5.4c18.9-16.447 36.564-22.941 44.612-18.3ZM128 90.808c12.625 0 22.86 10.235 22.86 22.86s-10.235 22.86-22.86 22.86s-22.86-10.235-22.86-22.86s10.235-22.86 22.86-22.86Z"></path></svg>

After

(image error) Size: 4 KiB

View file

@ -0,0 +1,68 @@
:root {
font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;
line-height: 1.5;
font-weight: 400;
color-scheme: light dark;
color: rgba(255, 255, 255, 0.87);
background-color: #242424;
font-synthesis: none;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
a {
font-weight: 500;
color: #646cff;
text-decoration: inherit;
}
a:hover {
color: #535bf2;
}
body {
margin: 0;
display: flex;
place-items: center;
min-width: 320px;
min-height: 100vh;
}
h1 {
font-size: 3.2em;
line-height: 1.1;
}
button {
border-radius: 8px;
border: 1px solid transparent;
padding: 0.6em 1.2em;
font-size: 1em;
font-weight: 500;
font-family: inherit;
background-color: #1a1a1a;
cursor: pointer;
transition: border-color 0.25s;
}
button:hover {
border-color: #646cff;
}
button:focus,
button:focus-visible {
outline: 4px auto -webkit-focus-ring-color;
}
@media (prefers-color-scheme: light) {
:root {
color: #213547;
background-color: #ffffff;
}
a:hover {
color: #747bff;
}
button {
background-color: #f9f9f9;
}
}

View file

@ -0,0 +1,10 @@
import React from 'react'
import ReactDOM from 'react-dom/client'
import App from './App.jsx'
import './index.css'
ReactDOM.createRoot(document.getElementById('root')).render(
<React.StrictMode>
<App />
</React.StrictMode>,
)

View file

@ -0,0 +1,8 @@
/** @type {import('tailwindcss').Config} */
export default {
content: [],
theme: {
extend: {},
},
plugins: [],
};

View file

@ -0,0 +1,7 @@
import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";
// https://vitejs.dev/config/
export default defineConfig({
plugins: [react()],
});

View file

@ -0,0 +1,7 @@
{
"devDependencies": {
"fastify": "^4.22.2",
"fastify-http-errors-enhanced": "^4.1.0",
"http-errors-enhanced": "^1.0.13"
}
}

View file

@ -0,0 +1,417 @@
lockfileVersion: '6.0'
devDependencies:
fastify:
specifier: ^4.22.2
version: 4.22.2
fastify-http-errors-enhanced:
specifier: ^4.1.0
version: 4.1.0
http-errors-enhanced:
specifier: ^1.0.13
version: 1.0.13
packages:
/@fastify/ajv-compiler@3.5.0:
resolution: {integrity: sha512-ebbEtlI7dxXF5ziNdr05mOY8NnDiPB1XvAlLHctRt/Rc+C3LCOVW5imUVX+mhvUhnNzmPBHewUkOFgGlCxgdAA==}
dependencies:
ajv: 8.12.0
ajv-formats: 2.1.1(ajv@8.12.0)
fast-uri: 2.2.0
dev: true
/@fastify/deepmerge@1.3.0:
resolution: {integrity: sha512-J8TOSBq3SoZbDhM9+R/u77hP93gz/rajSA+K2kGyijPpORPWUXHUpTaleoj+92As0S9uPRP7Oi8IqMf0u+ro6A==}
dev: true
/@fastify/error@3.3.0:
resolution: {integrity: sha512-dj7vjIn1Ar8sVXj2yAXiMNCJDmS9MQ9XMlIecX2dIzzhjSHCyKo4DdXjXMs7wKW2kj6yvVRSpuQjOZ3YLrh56w==}
dev: true
/@fastify/fast-json-stringify-compiler@4.3.0:
resolution: {integrity: sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA==}
dependencies:
fast-json-stringify: 5.8.0
dev: true
/abort-controller@3.0.0:
resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==}
engines: {node: '>=6.5'}
dependencies:
event-target-shim: 5.0.1
dev: true
/abstract-logging@2.0.1:
resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==}
dev: true
/ajv-formats@2.1.1(ajv@8.12.0):
resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==}
peerDependencies:
ajv: ^8.0.0
peerDependenciesMeta:
ajv:
optional: true
dependencies:
ajv: 8.12.0
dev: true
/ajv@8.12.0:
resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==}
dependencies:
fast-deep-equal: 3.1.3
json-schema-traverse: 1.0.0
require-from-string: 2.0.2
uri-js: 4.4.1
dev: true
/archy@1.0.0:
resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==}
dev: true
/atomic-sleep@1.0.0:
resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==}
engines: {node: '>=8.0.0'}
dev: true
/avvio@8.2.1:
resolution: {integrity: sha512-TAlMYvOuwGyLK3PfBb5WKBXZmXz2fVCgv23d6zZFdle/q3gPjmxBaeuC0pY0Dzs5PWMSgfqqEZkrye19GlDTgw==}
dependencies:
archy: 1.0.0
debug: 4.3.4
fastq: 1.15.0
transitivePeerDependencies:
- supports-color
dev: true
/base64-js@1.5.1:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
dev: true
/buffer@6.0.3:
resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
dependencies:
base64-js: 1.5.1
ieee754: 1.2.1
dev: true
/cookie@0.5.0:
resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==}
engines: {node: '>= 0.6'}
dev: true
/debug@4.3.4:
resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
engines: {node: '>=6.0'}
peerDependencies:
supports-color: '*'
peerDependenciesMeta:
supports-color:
optional: true
dependencies:
ms: 2.1.2
dev: true
/event-target-shim@5.0.1:
resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==}
engines: {node: '>=6'}
dev: true
/events@3.3.0:
resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
engines: {node: '>=0.8.x'}
dev: true
/fast-content-type-parse@1.0.0:
resolution: {integrity: sha512-Xbc4XcysUXcsP5aHUU7Nq3OwvHq97C+WnbkeIefpeYLX+ryzFJlU6OStFJhs6Ol0LkUGpcK+wL0JwfM+FCU5IA==}
dev: true
/fast-decode-uri-component@1.0.1:
resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==}
dev: true
/fast-deep-equal@3.1.3:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
dev: true
/fast-json-stringify@5.8.0:
resolution: {integrity: sha512-VVwK8CFMSALIvt14U8AvrSzQAwN/0vaVRiFFUVlpnXSnDGrSkOAO5MtzyN8oQNjLd5AqTW5OZRgyjoNuAuR3jQ==}
dependencies:
'@fastify/deepmerge': 1.3.0
ajv: 8.12.0
ajv-formats: 2.1.1(ajv@8.12.0)
fast-deep-equal: 3.1.3
fast-uri: 2.2.0
rfdc: 1.3.0
dev: true
/fast-querystring@1.1.2:
resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==}
dependencies:
fast-decode-uri-component: 1.0.1
dev: true
/fast-redact@3.3.0:
resolution: {integrity: sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==}
engines: {node: '>=6'}
dev: true
/fast-uri@2.2.0:
resolution: {integrity: sha512-cIusKBIt/R/oI6z/1nyfe2FvGKVTohVRfvkOhvx0nCEW+xf5NoCXjAHcWp93uOUBchzYcsvPlrapAdX1uW+YGg==}
dev: true
/fastify-http-errors-enhanced@4.1.0:
resolution: {integrity: sha512-4hlaDS2Nt0nDh+/bIEU/TnnQAJyitSbuGLn/zgvdCvA5KjnJHdzncRK9Fn2diH+yHhRjjpd0RgUanKDSS4O2/g==}
engines: {node: '>=14.15.0'}
dependencies:
ajv: 8.12.0
fastify-plugin: 4.5.1
http-errors-enhanced: 1.0.13
dev: true
/fastify-plugin@4.5.1:
resolution: {integrity: sha512-stRHYGeuqpEZTL1Ef0Ovr2ltazUT9g844X5z/zEBFLG8RYlpDiOCIG+ATvYEp+/zmc7sN29mcIMp8gvYplYPIQ==}
dev: true
/fastify@4.22.2:
resolution: {integrity: sha512-rK8mF/1mZJHH6H/L22OhmilTgrp5XMkk3RHcSy03LC+TJ6+wLhbq+4U62bjns15VzIbBNgxTqAForBqtGAa0NQ==}
dependencies:
'@fastify/ajv-compiler': 3.5.0
'@fastify/error': 3.3.0
'@fastify/fast-json-stringify-compiler': 4.3.0
abstract-logging: 2.0.1
avvio: 8.2.1
fast-content-type-parse: 1.0.0
fast-json-stringify: 5.8.0
find-my-way: 7.6.2
light-my-request: 5.10.0
pino: 8.15.1
process-warning: 2.2.0
proxy-addr: 2.0.7
rfdc: 1.3.0
secure-json-parse: 2.7.0
semver: 7.5.4
tiny-lru: 11.0.1
transitivePeerDependencies:
- supports-color
dev: true
/fastq@1.15.0:
resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==}
dependencies:
reusify: 1.0.4
dev: true
/find-my-way@7.6.2:
resolution: {integrity: sha512-0OjHn1b1nCX3eVbm9ByeEHiscPYiHLfhei1wOUU9qffQkk98wE0Lo8VrVYfSGMgnSnDh86DxedduAnBf4nwUEw==}
engines: {node: '>=14'}
dependencies:
fast-deep-equal: 3.1.3
fast-querystring: 1.1.2
safe-regex2: 2.0.0
dev: true
/forwarded@0.2.0:
resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
engines: {node: '>= 0.6'}
dev: true
/http-errors-enhanced@1.0.13:
resolution: {integrity: sha512-yc9Ev4El+/HdoBJuU1pFzzV+7IicLmcTr3MXSDF6IyoB5kBPlPB1bDxRKDEcbWDgneB2z62E/zqFf0Gq/a57EA==}
engines: {node: '>=14.15.0'}
dev: true
/ieee754@1.2.1:
resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
dev: true
/ipaddr.js@1.9.1:
resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
engines: {node: '>= 0.10'}
dev: true
/json-schema-traverse@1.0.0:
resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
dev: true
/light-my-request@5.10.0:
resolution: {integrity: sha512-ZU2D9GmAcOUculTTdH9/zryej6n8TzT+fNGdNtm6SDp5MMMpHrJJkvAdE3c6d8d2chE9i+a//dS9CWZtisknqA==}
dependencies:
cookie: 0.5.0
process-warning: 2.2.0
set-cookie-parser: 2.6.0
dev: true
/lru-cache@6.0.0:
resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
engines: {node: '>=10'}
dependencies:
yallist: 4.0.0
dev: true
/ms@2.1.2:
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
dev: true
/on-exit-leak-free@2.1.0:
resolution: {integrity: sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==}
dev: true
/pino-abstract-transport@1.1.0:
resolution: {integrity: sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==}
dependencies:
readable-stream: 4.4.2
split2: 4.2.0
dev: true
/pino-std-serializers@6.2.2:
resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==}
dev: true
/pino@8.15.1:
resolution: {integrity: sha512-Cp4QzUQrvWCRJaQ8Lzv0mJzXVk4z2jlq8JNKMGaixC2Pz5L4l2p95TkuRvYbrEbe85NQsDKrAd4zalf7Ml6WiA==}
hasBin: true
dependencies:
atomic-sleep: 1.0.0
fast-redact: 3.3.0
on-exit-leak-free: 2.1.0
pino-abstract-transport: 1.1.0
pino-std-serializers: 6.2.2
process-warning: 2.2.0
quick-format-unescaped: 4.0.4
real-require: 0.2.0
safe-stable-stringify: 2.4.3
sonic-boom: 3.3.0
thread-stream: 2.4.0
dev: true
/process-warning@2.2.0:
resolution: {integrity: sha512-/1WZ8+VQjR6avWOgHeEPd7SDQmFQ1B5mC1eRXsCm5TarlNmx/wCsa5GEaxGm05BORRtyG/Ex/3xq3TuRvq57qg==}
dev: true
/process@0.11.10:
resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
engines: {node: '>= 0.6.0'}
dev: true
/proxy-addr@2.0.7:
resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
engines: {node: '>= 0.10'}
dependencies:
forwarded: 0.2.0
ipaddr.js: 1.9.1
dev: true
/punycode@2.3.0:
resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==}
engines: {node: '>=6'}
dev: true
/quick-format-unescaped@4.0.4:
resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==}
dev: true
/readable-stream@4.4.2:
resolution: {integrity: sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
abort-controller: 3.0.0
buffer: 6.0.3
events: 3.3.0
process: 0.11.10
string_decoder: 1.3.0
dev: true
/real-require@0.2.0:
resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==}
engines: {node: '>= 12.13.0'}
dev: true
/require-from-string@2.0.2:
resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
engines: {node: '>=0.10.0'}
dev: true
/ret@0.2.2:
resolution: {integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==}
engines: {node: '>=4'}
dev: true
/reusify@1.0.4:
resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
dev: true
/rfdc@1.3.0:
resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==}
dev: true
/safe-buffer@5.2.1:
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
dev: true
/safe-regex2@2.0.0:
resolution: {integrity: sha512-PaUSFsUaNNuKwkBijoAPHAK6/eM6VirvyPWlZ7BAQy4D+hCvh4B6lIG+nPdhbFfIbP+gTGBcrdsOaUs0F+ZBOQ==}
dependencies:
ret: 0.2.2
dev: true
/safe-stable-stringify@2.4.3:
resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==}
engines: {node: '>=10'}
dev: true
/secure-json-parse@2.7.0:
resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==}
dev: true
/semver@7.5.4:
resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==}
engines: {node: '>=10'}
hasBin: true
dependencies:
lru-cache: 6.0.0
dev: true
/set-cookie-parser@2.6.0:
resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==}
dev: true
/sonic-boom@3.3.0:
resolution: {integrity: sha512-LYxp34KlZ1a2Jb8ZQgFCK3niIHzibdwtwNUWKg0qQRzsDoJ3Gfgkf8KdBTFU3SkejDEIlWwnSnpVdOZIhFMl/g==}
dependencies:
atomic-sleep: 1.0.0
dev: true
/split2@4.2.0:
resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==}
engines: {node: '>= 10.x'}
dev: true
/string_decoder@1.3.0:
resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
dependencies:
safe-buffer: 5.2.1
dev: true
/thread-stream@2.4.0:
resolution: {integrity: sha512-xZYtOtmnA63zj04Q+F9bdEay5r47bvpo1CaNqsKi7TpoJHcotUez8Fkfo2RJWpW91lnnaApdpRbVwCWsy+ifcw==}
dependencies:
real-require: 0.2.0
dev: true
/tiny-lru@11.0.1:
resolution: {integrity: sha512-iNgFugVuQgBKrqeO/mpiTTgmBsTP0WL6yeuLfLs/Ctf0pI/ixGqIRm8sDCwMcXGe9WWvt2sGXI5mNqZbValmJg==}
engines: {node: '>=12'}
dev: true
/uri-js@4.4.1:
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
dependencies:
punycode: 2.3.0
dev: true
/yallist@4.0.0:
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
dev: true

View file

@ -0,0 +1,49 @@
import fastify from "fastify";
import fastifyHttpErrorsEnhanced from "fastify-http-errors-enhanced";
import { ForbiddenError } from "http-errors-enhanced";
const server = fastify();
await server.register(fastifyHttpErrorsEnhanced);
// code プロパティが失われる
server.get("/error", () => new ForbiddenError());
// これらは同じで、エラーの引数のメッセージだったものが、スタックトレースが取れるようになる
// また、NODE_ENV=production のとき "An error occurred trying to process your request." にすべて置き換わる
server.get("/return", {
handler() {
return new Error("return.");
},
});
server.get("/throw", {
handler() {
throw new Error("throw.");
},
});
server.get("/async", {
async handler() {
throw new Error("async.");
},
});
server.get("/async-return", {
async handler() {
return new Error("async return.");
},
});
server.get("/validation", {
schema: {
// 400 エラーの構造が変わり failedValidations.query.a プロパティが生える
querystring: {
type: "object",
properties: { a: { type: "string" } },
required: ["a"],
},
},
async handler() {
return "ok";
},
});
await server.listen({ port: 3000 });

106
fastify-validation/server.ts Executable file
View file

@ -0,0 +1,106 @@
#!/usr/bin/env -S deno run -A
import fastify from "npm:fastify";
// import { parse as jsonParse } from "npm:secure-json-parse";
const server = fastify({ logger: true });
server.get("/anyOf", {
schema: {
querystring: {
type: "object",
properties: {
array: {
anyOf: [
{ type: "array", items: { type: "string" } },
{ type: "string" },
],
},
},
required: ["array"],
},
},
handler({ query }) {
console.log({ ...query });
return "ok";
},
});
server.get("/oneOf", {
schema: {
querystring: {
type: "object",
properties: {
array: {
oneOf: [
{ type: "array", items: { type: "string" } },
{ type: "string" },
],
},
},
required: ["array"],
},
},
handler({ query }) {
console.log({ ...query });
return "ok";
},
});
// valid
await server.inject(`/anyOf?array=a`);
// invalid: querystring/array must match exactly one schema in oneOf
await server.inject(`/oneOf?array=a`);
/*
server.get("/array", {
schema: {
querystring: {
type: "object",
properties: { array: { type: "array", items: { type: "string" } } },
required: ["array"],
},
},
async preValidation(req) {
req.query.array = [req.query.array].flat().flatMap((s) => {
try {
const parsed = jsonParse(s);
return Array.isArray(parsed) ? parsed : [s];
} catch {
return [s];
}
});
},
handler({ query }) {
console.log({ ...query });
return "ok";
},
});
// valid
await server.inject(`/array?array=["123",4]`);
*/
/*
server.get("/dateTime", {
schema: {
querystring: {
type: "object",
properties: { dateTime: { type: "string", format: "date-time" } },
required: ["dateTime"],
},
},
handler() {
return "ok";
},
});
// valid
await server.inject("/dateTime?dateTime=2021-09-10T15:30:00Z");
// valid: fasitfy@4.22.2, invalid fastify@5.1.0: querystring/dateTime must match format "date-time"
await server.inject("/dateTime?dateTime=2021-09-10T15:30:00");
// invalid: querystring/dateTime must match format "date-time"
await server.inject("/dateTime?dateTime=2021-09-10");
*/

View file

@ -1,12 +0,0 @@
version: "3"
services:
web:
image: mozilla/send
links:
- redis
ports:
- "1443:1443"
environment:
- REDIS_HOST=redis
redis:
image: redis:alpine

View file

@ -1,8 +0,0 @@
version: "3"
services:
fluentd:
image: fluent/fluentd:edge
ports: ["24224:24224"]
volumes:
- "./log:/fluentd/log"
- "./fluent.conf:/fluentd/etc/fluent.conf"

View file

@ -1,37 +0,0 @@
<system>
enable_msgpack_time_support true
</system>
<source>
@type forward
@id input1
@label @mainstream
port 24224
</source>
<filter **>
@type stdout
</filter>
<label @mainstream>
<match docker.**>
@type file
@id output_docker1
path /fluentd/log/docker.*.log
symlink_path /fluentd/log/docker.log
append true
time_slice_format %Y%m%d
time_slice_wait 1m
time_format %Y%m%dT%H%M%S%z
</match>
<match **>
@type file
@id output1
path /fluentd/log/data.*.log
symlink_path /fluentd/log/data.log
append true
time_slice_format %Y%m%d
time_slice_wait 10m
time_format %Y%m%dT%H%M%S%z
</match>
</label>

View file

@ -1,25 +0,0 @@
import msgpack from "msgpack-lite";
import fetch from "node-fetch";
const body = msgpack.encode({
int: 1,
float: 0.5,
// date: new Date(),
// error: new Error(),
// num: new Number(0),
buff: Buffer.from([1, 2]),
// arrbuff: Uint32Array.from([3, 4]),
// dataView: new ArrayBuffer([1]),
array: [2, 3],
object: { key: "val" },
str: new String("hello"),
// bool: new Boolean(true),
// intArray: new Int8Array(),
// bigInt: 1n,
});
const res = await fetch("http://localhost:24224/", {
method: "POST",
headers: { "Content-type": "application/msgpack" },
body,
});
console.log(res);

View file

@ -1,12 +0,0 @@
{
"name": "fluentd",
"version": "1.0.0",
"main": "index.js",
"type": "module",
"author": "Kohei Watanabe <kou029w@gmail.com>",
"license": "MIT",
"dependencies": {
"msgpack-lite": "^0.1.26",
"node-fetch": "^2.6.1"
}
}

View file

@ -1,38 +0,0 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
event-lite@^0.1.1:
version "0.1.2"
resolved "https://registry.yarnpkg.com/event-lite/-/event-lite-0.1.2.tgz#838a3e0fdddef8cc90f128006c8e55a4e4e4c11b"
integrity sha512-HnSYx1BsJ87/p6swwzv+2v6B4X+uxUteoDfRxsAb1S1BePzQqOLevVmkdA15GHJVd9A9Ok6wygUR18Hu0YeV9g==
ieee754@^1.1.8:
version "1.2.1"
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
int64-buffer@^0.1.9:
version "0.1.10"
resolved "https://registry.yarnpkg.com/int64-buffer/-/int64-buffer-0.1.10.tgz#277b228a87d95ad777d07c13832022406a473423"
integrity sha1-J3siiofZWtd30HwTgyAiQGpHNCM=
isarray@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
msgpack-lite@^0.1.26:
version "0.1.26"
resolved "https://registry.yarnpkg.com/msgpack-lite/-/msgpack-lite-0.1.26.tgz#dd3c50b26f059f25e7edee3644418358e2a9ad89"
integrity sha1-3TxQsm8FnyXn7e42REGDWOKprYk=
dependencies:
event-lite "^0.1.1"
ieee754 "^1.1.8"
int64-buffer "^0.1.9"
isarray "^1.0.0"
node-fetch@^2.6.1:
version "2.6.1"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052"
integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==

5
goose/README.md Normal file
View file

@ -0,0 +1,5 @@
https://block.github.io/goose/docs/quickstart/
```
$ goose/hello.goose
```

3
goose/hello.goose Executable file
View file

@ -0,0 +1,3 @@
#!/usr/bin/env -S goose run -i
ファイルtest.txtに「こんにちは」と書き込んでください

3
groq/README.md Normal file
View file

@ -0,0 +1,3 @@
```
$ uv run main.py
```

30
groq/main.py Normal file
View file

@ -0,0 +1,30 @@
# /// script
# requires-python = ">=3.12"
# dependencies = [
# "groq",
# ]
# ///
from groq import Groq
IMAGE_DATA_URL = "..."
client = Groq()
completion = client.chat.completions.create(
model="llama-3.2-90b-vision-preview",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "これは何?"},
{"type": "image_url", "image_url": {"url": IMAGE_DATA_URL}},
],
}
],
temperature=1,
max_tokens=1024,
top_p=1,
stream=False,
stop=None,
)
print(completion.choices[0].message)

7
hasura-rest/Makefile Normal file
View file

@ -0,0 +1,7 @@
.env:
touch .env
chmod 600 .env
echo POSTGRES_PASSWORD=$(shell openssl rand -hex 32) >> .env
echo HASURA_GRAPHQL_ADMIN_SECRET=$(shell openssl rand -hex 32) >> .env
echo HASURA_GRAPHQL_JWT_SECRET='{"type":"HS256","key":"$(shell openssl rand -hex 32)"}' >> .env
echo JWT_SECRET=$(shell openssl rand -hex 32) >> .env

34
hasura-rest/compose.yml Normal file
View file

@ -0,0 +1,34 @@
services:
db:
image: postgres:16-alpine
environment:
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- db_data:/var/lib/postgresql/data
hasura:
image: hasura/graphql-engine:v2.36.1-ce.cli-migrations-v3.ubi
depends_on: [db]
environment:
HASURA_GRAPHQL_DATABASE_URL: postgres://postgres:${POSTGRES_PASSWORD}@db:5432/postgres
HASURA_GRAPHQL_ENABLE_TELEMETRY: "false"
HASURA_GRAPHQL_ENABLE_CONSOLE: "true"
HASURA_GRAPHQL_UNAUTHORIZED_ROLE: anonymous
HASURA_GRAPHQL_ADMIN_SECRET: ${HASURA_GRAPHQL_ADMIN_SECRET}
HASURA_GRAPHQL_JWT_SECRET: ${HASURA_GRAPHQL_JWT_SECRET}
volumes:
- ./metadata:/hasura-metadata
- ./migrations:/hasura-migrations
ports:
- "8080:8080"
postgrest:
image: postgrest/postgrest:v12.0.1
depends_on: [db]
environment:
PGRST_DB_URI: postgres://postgres:${POSTGRES_PASSWORD}@db:5432/postgres
PGRST_DB_SCHEMA: public
PGRST_DB_ANON_ROLE: anonymous
PGRST_JWT_SECRET: ${JWT_SECRET}
ports:
- "3000:3000"
volumes:
db_data:

6
hasura-rest/config.yaml Normal file
View file

@ -0,0 +1,6 @@
version: 3
endpoint: http://localhost:8080
metadata_directory: metadata
actions:
kind: synchronous
handler_webhook_baseurl: http://localhost:3000

View file

@ -0,0 +1,6 @@
actions: []
custom_types:
enums: []
input_objects: []
objects: []
scalars: []

View file

@ -0,0 +1 @@
[]

View file

@ -0,0 +1 @@
{}

View file

@ -0,0 +1 @@
{}

View file

@ -0,0 +1 @@
[]

View file

@ -0,0 +1,9 @@
- name: default
kind: postgres
configuration:
connection_info:
database_url:
from_env: HASURA_GRAPHQL_DATABASE_URL
isolation_level: read-committed
use_prepared_statements: false
tables: "!include default/tables/tables.yaml"

View file

@ -0,0 +1,9 @@
table:
name: users
schema: public
insert_permissions:
- role: anonymous
permission:
check: {}
columns:
- name

View file

@ -0,0 +1 @@
- "!include public_users.yaml"

View file

@ -0,0 +1 @@
disabled_for_roles: []

Some files were not shown because too many files have changed in this diff Show more