chore: try Adonis Tuyau
This commit is contained in:
parent
791551a4e8
commit
4add77856e
4
.github/workflows/ci.yml
vendored
4
.github/workflows/ci.yml
vendored
@ -31,12 +31,12 @@ jobs:
|
|||||||
# - name: "Install Playwright"
|
# - name: "Install Playwright"
|
||||||
# run: "pnpm exec playwright install --with-deps"
|
# run: "pnpm exec playwright install --with-deps"
|
||||||
|
|
||||||
|
- run: "node --run build"
|
||||||
|
- run: "node --run test"
|
||||||
- run: "node --run lint:editorconfig"
|
- run: "node --run lint:editorconfig"
|
||||||
- run: "node --run lint:prettier"
|
- run: "node --run lint:prettier"
|
||||||
- run: "node --run lint:eslint"
|
- run: "node --run lint:eslint"
|
||||||
- run: "node --run lint:typescript"
|
- run: "node --run lint:typescript"
|
||||||
- run: "node --run test"
|
|
||||||
- run: "node --run build"
|
|
||||||
|
|
||||||
commitlint:
|
commitlint:
|
||||||
runs-on: "ubuntu-latest"
|
runs-on: "ubuntu-latest"
|
||||||
|
3
.gitignore
vendored
3
.gitignore
vendored
@ -21,6 +21,7 @@ build/
|
|||||||
*.pem
|
*.pem
|
||||||
.turbo
|
.turbo
|
||||||
tmp/
|
tmp/
|
||||||
|
.adonisjs/
|
||||||
|
|
||||||
# data
|
# data
|
||||||
data/dump
|
data/dump
|
||||||
@ -57,4 +58,4 @@ storybook-static
|
|||||||
|
|
||||||
# typescript
|
# typescript
|
||||||
*.tsbuildinfo
|
*.tsbuildinfo
|
||||||
# next-env.d.ts
|
next-env.d.ts
|
||||||
|
@ -1,10 +1,4 @@
|
|||||||
{
|
{
|
||||||
"reporter": ["text", "html", "json"],
|
"reporter": ["text", "html", "json"],
|
||||||
"exclude": [
|
"exclude": ["adonisrc.ts", "tests/**", "database/**", "config/**", "bin/**"]
|
||||||
"src/adonisrc.ts",
|
|
||||||
"src/tests/**",
|
|
||||||
"src/database/**",
|
|
||||||
"src/config/**",
|
|
||||||
"src/bin/**"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
TZ=UTC
|
TZ=UTC
|
||||||
PORT=5500
|
PORT=5500
|
||||||
HOST=0.0.0.0
|
HOST=0.0.0.0
|
||||||
|
API_URL=http://127.0.0.1:5500
|
||||||
LOG_LEVEL=info
|
LOG_LEVEL=info
|
||||||
APP_KEY=LFGmw8iGkYF7vfS18ZB9-1Gn-6LfmoAk
|
APP_KEY=LFGmw8iGkYF7vfS18ZB9-1Gn-6LfmoAk
|
||||||
NODE_ENV=development
|
NODE_ENV=development
|
||||||
|
@ -9,6 +9,13 @@
|
|||||||
"parserOptions": {
|
"parserOptions": {
|
||||||
"project": true
|
"project": true
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"files": ["app/controllers/**/*.ts", "app/middleware/**/*.ts"],
|
||||||
|
"rules": {
|
||||||
|
"@typescript-eslint/explicit-function-return-type": "off",
|
||||||
|
"@typescript-eslint/naming-convention": "off"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@ RUN corepack enable
|
|||||||
WORKDIR /usr/src/app
|
WORKDIR /usr/src/app
|
||||||
|
|
||||||
FROM node-pnpm AS builder
|
FROM node-pnpm AS builder
|
||||||
RUN pnpm install --global turbo@2.0.13
|
RUN pnpm install --global turbo@2.0.14
|
||||||
COPY ./ ./
|
COPY ./ ./
|
||||||
RUN turbo prune @repo/api --docker
|
RUN turbo prune @repo/api --docker
|
||||||
|
|
||||||
@ -26,4 +26,4 @@ RUN addgroup --system --gid 1001 nodejs && adduser --system --uid 1001 applicati
|
|||||||
USER applicationrunner
|
USER applicationrunner
|
||||||
COPY --from=installer --chown=applicationrunner:nodejs /usr/src/app ./
|
COPY --from=installer --chown=applicationrunner:nodejs /usr/src/app ./
|
||||||
WORKDIR /usr/src/app/apps/api
|
WORKDIR /usr/src/app/apps/api
|
||||||
CMD ["node", "--import=tsx", "./src/bin/server.ts"]
|
CMD ["node", "--import=tsx", "./bin/server.ts"]
|
||||||
|
@ -8,6 +8,12 @@ export default defineConfig({
|
|||||||
async () => {
|
async () => {
|
||||||
return await import("@adonisjs/lucid/commands")
|
return await import("@adonisjs/lucid/commands")
|
||||||
},
|
},
|
||||||
|
async () => {
|
||||||
|
return await import("@tuyau/core/commands")
|
||||||
|
},
|
||||||
|
async () => {
|
||||||
|
return await import("@tuyau/openapi/commands")
|
||||||
|
},
|
||||||
],
|
],
|
||||||
providers: [
|
providers: [
|
||||||
async () => {
|
async () => {
|
||||||
@ -37,6 +43,12 @@ export default defineConfig({
|
|||||||
async () => {
|
async () => {
|
||||||
return await import("@adonisjs/limiter/limiter_provider")
|
return await import("@adonisjs/limiter/limiter_provider")
|
||||||
},
|
},
|
||||||
|
async () => {
|
||||||
|
return await import("@tuyau/core/tuyau_provider")
|
||||||
|
},
|
||||||
|
async () => {
|
||||||
|
return await import("@tuyau/openapi/openapi_provider")
|
||||||
|
},
|
||||||
],
|
],
|
||||||
preloads: [
|
preloads: [
|
||||||
async () => {
|
async () => {
|
@ -3,8 +3,8 @@ import { middleware } from "#start/kernel.ts"
|
|||||||
import type { HttpContext } from "@adonisjs/core/http"
|
import type { HttpContext } from "@adonisjs/core/http"
|
||||||
import router from "@adonisjs/core/services/router"
|
import router from "@adonisjs/core/services/router"
|
||||||
|
|
||||||
class Controller {
|
export default class get_health_controller {
|
||||||
public async handle(context: HttpContext): Promise<void> {
|
public async handle(context: HttpContext) {
|
||||||
const report = await healthChecks.run()
|
const report = await healthChecks.run()
|
||||||
if (report.isHealthy) {
|
if (report.isHealthy) {
|
||||||
return context.response.ok(report)
|
return context.response.ok(report)
|
||||||
@ -13,4 +13,4 @@ class Controller {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
router.get("/health", [Controller]).use(middleware.appKeySecurity())
|
router.get("/health", [get_health_controller]).use(middleware.appKeySecurity())
|
@ -0,0 +1,32 @@
|
|||||||
|
import Page, { type PageWithInternalLinksRaw } from "#app/models/page.ts"
|
||||||
|
import { throttle } from "#start/limiter.ts"
|
||||||
|
import type { HttpContext } from "@adonisjs/core/http"
|
||||||
|
import router from "@adonisjs/core/services/router"
|
||||||
|
import vine from "@vinejs/vine"
|
||||||
|
|
||||||
|
export const get_wikipedia_page_by_id_validator = vine.compile(
|
||||||
|
vine.object({
|
||||||
|
params: vine.object({
|
||||||
|
id: vine.number().withoutDecimals().positive(),
|
||||||
|
}),
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
|
||||||
|
export default class get_wikipedia_page_by_id {
|
||||||
|
public async handle(context: HttpContext): Promise<PageWithInternalLinksRaw> {
|
||||||
|
const payload = await context.request.validateUsing(
|
||||||
|
get_wikipedia_page_by_id_validator,
|
||||||
|
)
|
||||||
|
const page = await Page.findOrFail(payload.params.id)
|
||||||
|
await page.load("internalLinks")
|
||||||
|
return page
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
router
|
||||||
|
.get("/wikipedia/pages/:id", [get_wikipedia_page_by_id])
|
||||||
|
.use(throttle)
|
||||||
|
.openapi({
|
||||||
|
description: "Get a Wikipedia page by ID.",
|
||||||
|
tags: ["wikipedia"],
|
||||||
|
})
|
@ -34,7 +34,7 @@ test.group("GET /wikipedia/pages", (group) => {
|
|||||||
const limit = 4
|
const limit = 4
|
||||||
const title = "No"
|
const title = "No"
|
||||||
const pagesMatching = await Page.createMany([
|
const pagesMatching = await Page.createMany([
|
||||||
{ title: "Node.ts" },
|
{ title: "Node.js" },
|
||||||
{ title: "North_America" },
|
{ title: "North_America" },
|
||||||
{ title: "NoSQL" },
|
{ title: "NoSQL" },
|
||||||
{ title: "No" },
|
{ title: "No" },
|
@ -1,11 +1,11 @@
|
|||||||
import Page from "#app/models/page.ts"
|
import Page, { type PageRaw } from "#app/models/page.ts"
|
||||||
import { throttle } from "#start/limiter.ts"
|
import { throttle } from "#start/limiter.ts"
|
||||||
import type { HttpContext } from "@adonisjs/core/http"
|
import type { HttpContext } from "@adonisjs/core/http"
|
||||||
import router from "@adonisjs/core/services/router"
|
import router from "@adonisjs/core/services/router"
|
||||||
import { sanitizePageTitle } from "@repo/wikipedia-game-solver/wikipedia-utils"
|
import { sanitizePageTitle } from "@repo/wikipedia"
|
||||||
import vine from "@vinejs/vine"
|
import vine from "@vinejs/vine"
|
||||||
|
|
||||||
const requestValidator = vine.compile(
|
export const get_wikipedia_pages_validator = vine.compile(
|
||||||
vine.object({
|
vine.object({
|
||||||
title: vine
|
title: vine
|
||||||
.string()
|
.string()
|
||||||
@ -24,9 +24,11 @@ const requestValidator = vine.compile(
|
|||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
|
|
||||||
class Controller {
|
export default class get_wikipedia_pages {
|
||||||
public async handle(context: HttpContext): Promise<Page[]> {
|
public async handle(context: HttpContext): Promise<PageRaw[]> {
|
||||||
const payload = await context.request.validateUsing(requestValidator)
|
const payload = await context.request.validateUsing(
|
||||||
|
get_wikipedia_pages_validator,
|
||||||
|
)
|
||||||
const pages = await Page.query()
|
const pages = await Page.query()
|
||||||
.whereLike("title", `${payload.title}%`)
|
.whereLike("title", `${payload.title}%`)
|
||||||
.limit(payload.limit)
|
.limit(payload.limit)
|
||||||
@ -34,4 +36,10 @@ class Controller {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
router.get("/wikipedia/pages", [Controller]).use(throttle)
|
router
|
||||||
|
.get("/wikipedia/pages", [get_wikipedia_pages])
|
||||||
|
.use(throttle)
|
||||||
|
.openapi({
|
||||||
|
description: "Search Wikipedia pages by title.",
|
||||||
|
tags: ["wikipedia"],
|
||||||
|
})
|
@ -3,7 +3,7 @@ import type { HttpContext } from "@adonisjs/core/http"
|
|||||||
import type { NextFn } from "@adonisjs/core/types/http"
|
import type { NextFn } from "@adonisjs/core/types/http"
|
||||||
|
|
||||||
export default class AppKeySecurityMiddleware {
|
export default class AppKeySecurityMiddleware {
|
||||||
public async handle(context: HttpContext, next: NextFn): Promise<void> {
|
public async handle(context: HttpContext, next: NextFn) {
|
||||||
if (context.request.header(APP_KEY_HEADER_NAME) === APP_KEY) {
|
if (context.request.header(APP_KEY_HEADER_NAME) === APP_KEY) {
|
||||||
return next()
|
return next()
|
||||||
}
|
}
|
@ -17,7 +17,7 @@ export default class AuthMiddleware {
|
|||||||
options: {
|
options: {
|
||||||
guards?: Array<keyof Authenticators>
|
guards?: Array<keyof Authenticators>
|
||||||
} = {},
|
} = {},
|
||||||
): Promise<void> {
|
) {
|
||||||
await context.auth.authenticateUsing(options.guards, {
|
await context.auth.authenticateUsing(options.guards, {
|
||||||
loginRoute: this.redirectTo,
|
loginRoute: this.redirectTo,
|
||||||
})
|
})
|
@ -9,7 +9,7 @@ import type { NextFn } from "@adonisjs/core/types/http"
|
|||||||
* - And bind "Logger" class to the "context.logger" object.
|
* - And bind "Logger" class to the "context.logger" object.
|
||||||
*/
|
*/
|
||||||
export default class ContainerBindingsMiddleware {
|
export default class ContainerBindingsMiddleware {
|
||||||
public async handle(context: HttpContext, next: NextFn): Promise<void> {
|
public async handle(context: HttpContext, next: NextFn) {
|
||||||
context.containerResolver.bindValue(HttpContext, context)
|
context.containerResolver.bindValue(HttpContext, context)
|
||||||
context.containerResolver.bindValue(Logger, context.logger)
|
context.containerResolver.bindValue(Logger, context.logger)
|
||||||
|
|
@ -5,7 +5,7 @@ import type { NextFn } from "@adonisjs/core/types/http"
|
|||||||
* Updating the "Accept" header to always accept "application/json" response from the server. This will force the internals of the framework like validator errors or auth errors to return a JSON response.
|
* Updating the "Accept" header to always accept "application/json" response from the server. This will force the internals of the framework like validator errors or auth errors to return a JSON response.
|
||||||
*/
|
*/
|
||||||
export default class ForceJsonResponseMiddleware {
|
export default class ForceJsonResponseMiddleware {
|
||||||
public async handle({ request }: HttpContext, next: NextFn): Promise<void> {
|
public async handle({ request }: HttpContext, next: NextFn) {
|
||||||
const headers = request.headers()
|
const headers = request.headers()
|
||||||
headers.accept = "application/json"
|
headers.accept = "application/json"
|
||||||
|
|
@ -4,9 +4,16 @@ import type { ManyToMany } from "@adonisjs/lucid/types/relations"
|
|||||||
export default class Page extends BaseModel {
|
export default class Page extends BaseModel {
|
||||||
protected tableName = "pages"
|
protected tableName = "pages"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Page id is unique for each page on Wikipedia, can be used to link to the page.
|
||||||
|
* @example `https://${locale}.wikipedia.org/?curid=${pageId}`
|
||||||
|
*/
|
||||||
@column({ columnName: "id", serializeAs: "id", isPrimary: true })
|
@column({ columnName: "id", serializeAs: "id", isPrimary: true })
|
||||||
declare id: number
|
declare id: number
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Title of the Wikipedia page.
|
||||||
|
*/
|
||||||
@column({
|
@column({
|
||||||
columnName: "title",
|
columnName: "title",
|
||||||
serializeAs: "title",
|
serializeAs: "title",
|
||||||
@ -28,3 +35,8 @@ export default class Page extends BaseModel {
|
|||||||
)
|
)
|
||||||
declare internalLinks: ManyToMany<typeof Page>
|
declare internalLinks: ManyToMany<typeof Page>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type PageRaw = Pick<Page, "id" | "title">
|
||||||
|
export type PageWithInternalLinksRaw = PageRaw & {
|
||||||
|
internalLinks: PageRaw[]
|
||||||
|
}
|
21
apps/api/config/tuyau.ts
Normal file
21
apps/api/config/tuyau.ts
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
import env from "#start/env.ts"
|
||||||
|
import { VERSION } from "@repo/utils/constants"
|
||||||
|
import { defineConfig } from "@tuyau/core"
|
||||||
|
|
||||||
|
const tuyauConfig = defineConfig({
|
||||||
|
codegen: {},
|
||||||
|
openapi: {
|
||||||
|
provider: "scalar",
|
||||||
|
buildSpecPath: ".adonisjs/openapi.yaml",
|
||||||
|
documentation: {
|
||||||
|
info: {
|
||||||
|
title: "Wikipedia Game Solver API",
|
||||||
|
version: VERSION,
|
||||||
|
},
|
||||||
|
tags: [{ name: "users" }, { name: "wikipedia" }],
|
||||||
|
servers: [{ url: env.get("API_URL") }],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
export default tuyauConfig
|
@ -1,6 +1,6 @@
|
|||||||
import Page from "#app/models/page.ts"
|
import Page from "#app/models/page.ts"
|
||||||
import factory from "@adonisjs/lucid/factories"
|
import factory from "@adonisjs/lucid/factories"
|
||||||
import { sanitizePageTitle } from "@repo/wikipedia-game-solver/wikipedia-utils"
|
import { sanitizePageTitle } from "@repo/wikipedia"
|
||||||
|
|
||||||
export const PageFactory = factory
|
export const PageFactory = factory
|
||||||
.define(Page, async ({ faker }) => {
|
.define(Page, async ({ faker }) => {
|
@ -4,14 +4,19 @@
|
|||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"imports": {
|
"imports": {
|
||||||
"#*": "./src/*"
|
"#*": "./*"
|
||||||
|
},
|
||||||
|
"exports": {
|
||||||
|
".": "./.adonisjs/api.ts"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "node --import=tsx ./src/bin/server.ts",
|
"start": "node --import=tsx ./bin/server.ts",
|
||||||
"dev": "node --import=tsx --watch --watch-preserve-output ./src/bin/server.ts",
|
"dev": "node --import=tsx --watch --watch-preserve-output ./bin/server.ts",
|
||||||
"ace": "node --import=tsx ./src/bin/console.ts",
|
"ace": "node --import=tsx ./bin/console.ts",
|
||||||
"test": "c8 node --import=tsx ./src/bin/test.ts",
|
"tuyau": "node --run ace -- tuyau:generate && node --run ace -- tuyau:generate:openapi --destination=\".adonisjs/openapi.yaml\"",
|
||||||
"lint:eslint": "eslint src --max-warnings 0 --report-unused-disable-directives",
|
"build": "node --run tuyau",
|
||||||
|
"test": "c8 node --import=tsx ./bin/test.ts",
|
||||||
|
"lint:eslint": "eslint . --max-warnings 0 --report-unused-disable-directives",
|
||||||
"lint:typescript": "tsc --noEmit"
|
"lint:typescript": "tsc --noEmit"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@ -21,7 +26,10 @@
|
|||||||
"@adonisjs/lucid": "catalog:",
|
"@adonisjs/lucid": "catalog:",
|
||||||
"@adonisjs/limiter": "catalog:",
|
"@adonisjs/limiter": "catalog:",
|
||||||
"@repo/utils": "workspace:*",
|
"@repo/utils": "workspace:*",
|
||||||
"@repo/wikipedia-game-solver": "workspace:*",
|
"@repo/wikipedia": "workspace:*",
|
||||||
|
"@tuyau/core": "catalog:",
|
||||||
|
"@tuyau/utils": "catalog:",
|
||||||
|
"@tuyau/openapi": "catalog:",
|
||||||
"@vinejs/vine": "catalog:",
|
"@vinejs/vine": "catalog:",
|
||||||
"luxon": "catalog:",
|
"luxon": "catalog:",
|
||||||
"pg": "catalog:",
|
"pg": "catalog:",
|
||||||
|
@ -1,16 +0,0 @@
|
|||||||
import { test } from "@japa/runner"
|
|
||||||
|
|
||||||
test.group("GET /", () => {
|
|
||||||
test("should succeeds and get hello world", async ({ client }) => {
|
|
||||||
// Arrange - Given
|
|
||||||
|
|
||||||
// Act - When
|
|
||||||
const response = await client.get("/")
|
|
||||||
|
|
||||||
// Assert - Then
|
|
||||||
response.assertStatus(200)
|
|
||||||
response.assertBody({
|
|
||||||
hello: "world",
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
@ -1,7 +0,0 @@
|
|||||||
import router from "@adonisjs/core/services/router"
|
|
||||||
|
|
||||||
router.get("/", async () => {
|
|
||||||
return {
|
|
||||||
hello: "world",
|
|
||||||
}
|
|
||||||
})
|
|
@ -1,4 +0,0 @@
|
|||||||
import "#app/routes/get.ts"
|
|
||||||
import "#app/routes/health/get.ts"
|
|
||||||
import "#app/routes/wikipedia/pages/[id]/get.ts"
|
|
||||||
import "#app/routes/wikipedia/pages/get.ts"
|
|
@ -1,24 +0,0 @@
|
|||||||
import Page from "#app/models/page.ts"
|
|
||||||
import { throttle } from "#start/limiter.ts"
|
|
||||||
import type { HttpContext } from "@adonisjs/core/http"
|
|
||||||
import router from "@adonisjs/core/services/router"
|
|
||||||
import vine from "@vinejs/vine"
|
|
||||||
|
|
||||||
const requestValidator = vine.compile(
|
|
||||||
vine.object({
|
|
||||||
params: vine.object({
|
|
||||||
id: vine.number().withoutDecimals().positive(),
|
|
||||||
}),
|
|
||||||
}),
|
|
||||||
)
|
|
||||||
|
|
||||||
class Controller {
|
|
||||||
public async handle(context: HttpContext): Promise<Page> {
|
|
||||||
const payload = await context.request.validateUsing(requestValidator)
|
|
||||||
const page = await Page.findOrFail(payload.params.id)
|
|
||||||
await page.load("internalLinks")
|
|
||||||
return page
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
router.get("/wikipedia/pages/:id", [Controller]).use(throttle)
|
|
@ -1,7 +0,0 @@
|
|||||||
/**
|
|
||||||
* Routes file
|
|
||||||
*
|
|
||||||
* The routes file is used for defining the HTTP routes.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import "#app/routes/index.ts"
|
|
@ -4,11 +4,11 @@
|
|||||||
|
|
||||||
import { Env } from "@adonisjs/core/env"
|
import { Env } from "@adonisjs/core/env"
|
||||||
|
|
||||||
export default await Env.create(new URL("../..", import.meta.url), {
|
export default await Env.create(new URL("..", import.meta.url), {
|
||||||
NODE_ENV: Env.schema.enum(["development", "production", "test"] as const),
|
TZ: Env.schema.string(),
|
||||||
PORT: Env.schema.number(),
|
PORT: Env.schema.number(),
|
||||||
APP_KEY: Env.schema.string(),
|
|
||||||
HOST: Env.schema.string({ format: "host" }),
|
HOST: Env.schema.string({ format: "host" }),
|
||||||
|
API_URL: Env.schema.string({ format: "url" }),
|
||||||
LOG_LEVEL: Env.schema.enum([
|
LOG_LEVEL: Env.schema.enum([
|
||||||
"fatal",
|
"fatal",
|
||||||
"error",
|
"error",
|
||||||
@ -17,6 +17,8 @@ export default await Env.create(new URL("../..", import.meta.url), {
|
|||||||
"debug",
|
"debug",
|
||||||
"trace",
|
"trace",
|
||||||
] as const),
|
] as const),
|
||||||
|
APP_KEY: Env.schema.string(),
|
||||||
|
NODE_ENV: Env.schema.enum(["development", "production", "test"] as const),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Variables for configuring database connection.
|
* Variables for configuring database connection.
|
@ -6,11 +6,12 @@
|
|||||||
|
|
||||||
import { APP_KEY, APP_KEY_HEADER_NAME } from "#config/app.ts"
|
import { APP_KEY, APP_KEY_HEADER_NAME } from "#config/app.ts"
|
||||||
import app from "@adonisjs/core/services/app"
|
import app from "@adonisjs/core/services/app"
|
||||||
|
import type { HttpLimiter } from "@adonisjs/limiter"
|
||||||
import limiter from "@adonisjs/limiter/services/main"
|
import limiter from "@adonisjs/limiter/services/main"
|
||||||
|
|
||||||
export const throttle = limiter.define("global", (context) => {
|
export const throttle = limiter.define("global", (context) => {
|
||||||
if (app.inTest || context.request.header(APP_KEY_HEADER_NAME) === APP_KEY) {
|
if (app.inTest || context.request.header(APP_KEY_HEADER_NAME) === APP_KEY) {
|
||||||
return limiter.noLimit()
|
return limiter.noLimit()
|
||||||
}
|
}
|
||||||
return limiter.allowRequests(120).every("1 minute")
|
return limiter.allowRequests(120).every("1 minute") as HttpLimiter<any>
|
||||||
})
|
})
|
9
apps/api/start/routes.ts
Normal file
9
apps/api/start/routes.ts
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
/**
|
||||||
|
* Routes file
|
||||||
|
*
|
||||||
|
* The routes file is used for defining the HTTP routes.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import "#app/controllers/health/get_health_controller.ts"
|
||||||
|
import "#app/controllers/wikipedia/pages/[id]/get_wikipedia_page_by_id.ts"
|
||||||
|
import "#app/controllers/wikipedia/pages/get_wikipedia_pages.ts"
|
@ -2,8 +2,6 @@
|
|||||||
"extends": "@repo/config-typescript/tsconfig.json",
|
"extends": "@repo/config-typescript/tsconfig.json",
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"lib": ["ESNext"],
|
"lib": ["ESNext"],
|
||||||
"types": ["@total-typescript/ts-reset", "@types/node"],
|
"types": ["@total-typescript/ts-reset", "@types/node"]
|
||||||
"experimentalDecorators": true,
|
|
||||||
"emitDecoratorMetadata": true
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
HOSTNAME=0.0.0.0
|
HOSTNAME=0.0.0.0
|
||||||
PORT=5000
|
PORT=5000
|
||||||
NEXT_TELEMETRY_DISABLED=1
|
NEXT_TELEMETRY_DISABLED=1
|
||||||
|
NEXT_PUBLIC_API_URL=http://127.0.0.1:5500
|
||||||
|
@ -5,7 +5,7 @@ RUN corepack enable
|
|||||||
WORKDIR /usr/src/app
|
WORKDIR /usr/src/app
|
||||||
|
|
||||||
FROM node-pnpm AS builder
|
FROM node-pnpm AS builder
|
||||||
RUN pnpm install --global turbo@2.0.13
|
RUN pnpm install --global turbo@2.0.14
|
||||||
COPY ./ ./
|
COPY ./ ./
|
||||||
RUN turbo prune @repo/website --docker
|
RUN turbo prune @repo/website --docker
|
||||||
|
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
import "@repo/config-tailwind/styles.css"
|
import "@repo/config-tailwind/styles.css"
|
||||||
import type { Locale, LocaleProps } from "@repo/i18n/config"
|
import type { LocaleProps } from "@repo/i18n/config"
|
||||||
import { LOCALES } from "@repo/i18n/config"
|
|
||||||
import { Footer } from "@repo/ui/Layout/Footer"
|
import { Footer } from "@repo/ui/Layout/Footer"
|
||||||
import { Header } from "@repo/ui/Layout/Header"
|
import { Header } from "@repo/ui/Layout/Header"
|
||||||
import { ThemeProvider } from "@repo/ui/Layout/Header/SwitchTheme"
|
import { ThemeProvider } from "@repo/ui/Layout/Header/SwitchTheme"
|
||||||
import { VERSION } from "@repo/utils/constants"
|
import type { Locale } from "@repo/utils/constants"
|
||||||
|
import { LOCALES, VERSION } from "@repo/utils/constants"
|
||||||
import type { Metadata } from "next"
|
import type { Metadata } from "next"
|
||||||
import { NextIntlClientProvider } from "next-intl"
|
import { NextIntlClientProvider } from "next-intl"
|
||||||
import {
|
import {
|
||||||
|
@ -2,10 +2,7 @@ import type { LocaleProps } from "@repo/i18n/config"
|
|||||||
import { Link } from "@repo/ui/Design/Link"
|
import { Link } from "@repo/ui/Design/Link"
|
||||||
import { Typography } from "@repo/ui/Design/Typography"
|
import { Typography } from "@repo/ui/Design/Typography"
|
||||||
import { MainLayout } from "@repo/ui/Layout/MainLayout"
|
import { MainLayout } from "@repo/ui/Layout/MainLayout"
|
||||||
import {
|
import { fromLocaleToWikipediaLocale, getWikipediaLink } from "@repo/wikipedia"
|
||||||
fromLocaleToWikipediaLocale,
|
|
||||||
getWikipediaLink,
|
|
||||||
} from "@repo/wikipedia-game-solver/wikipedia-utils"
|
|
||||||
import { WikipediaClient } from "@repo/wikipedia-game-solver/WikipediaClient"
|
import { WikipediaClient } from "@repo/wikipedia-game-solver/WikipediaClient"
|
||||||
import { useTranslations } from "next-intl"
|
import { useTranslations } from "next-intl"
|
||||||
import { unstable_setRequestLocale } from "next-intl/server"
|
import { unstable_setRequestLocale } from "next-intl/server"
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { LOCALES, LOCALE_DEFAULT, LOCALE_PREFIX } from "@repo/i18n/config"
|
import { LOCALES, LOCALE_DEFAULT, LOCALE_PREFIX } from "@repo/utils/constants"
|
||||||
import createMiddleware from "next-intl/middleware"
|
import createMiddleware from "next-intl/middleware"
|
||||||
|
|
||||||
export default createMiddleware({
|
export default createMiddleware({
|
||||||
|
5
apps/website/next-env.d.ts
vendored
5
apps/website/next-env.d.ts
vendored
@ -1,5 +0,0 @@
|
|||||||
/// <reference types="next" />
|
|
||||||
/// <reference types="next/image-types/global" />
|
|
||||||
|
|
||||||
// NOTE: This file should not be edited
|
|
||||||
// see https://nextjs.org/docs/basic-features/typescript for more information.
|
|
@ -19,6 +19,7 @@
|
|||||||
"@repo/i18n": "workspace:*",
|
"@repo/i18n": "workspace:*",
|
||||||
"@repo/ui": "workspace:*",
|
"@repo/ui": "workspace:*",
|
||||||
"@repo/wikipedia-game-solver": "workspace:*",
|
"@repo/wikipedia-game-solver": "workspace:*",
|
||||||
|
"@repo/wikipedia": "workspace:*",
|
||||||
"next": "catalog:",
|
"next": "catalog:",
|
||||||
"next-intl": "catalog:",
|
"next-intl": "catalog:",
|
||||||
"react": "catalog:",
|
"react": "catalog:",
|
||||||
|
@ -9,9 +9,9 @@
|
|||||||
"pnpm": ">=9.5.0"
|
"pnpm": ">=9.5.0"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "turbo run build",
|
|
||||||
"dev": "turbo run dev --parallel",
|
"dev": "turbo run dev --parallel",
|
||||||
"start": "turbo run start --parallel",
|
"start": "turbo run start --parallel",
|
||||||
|
"build": "turbo run build",
|
||||||
"test": "turbo run test",
|
"test": "turbo run test",
|
||||||
"lint:editorconfig": "editorconfig-checker",
|
"lint:editorconfig": "editorconfig-checker",
|
||||||
"lint:prettier": "prettier . --check",
|
"lint:prettier": "prettier . --check",
|
||||||
@ -29,7 +29,12 @@
|
|||||||
"prettier-plugin-tailwindcss": "0.6.6",
|
"prettier-plugin-tailwindcss": "0.6.6",
|
||||||
"replace-in-files-cli": "3.0.0",
|
"replace-in-files-cli": "3.0.0",
|
||||||
"semantic-release": "23.1.1",
|
"semantic-release": "23.1.1",
|
||||||
"turbo": "2.0.13",
|
"turbo": "2.0.14",
|
||||||
"typescript": "catalog:"
|
"typescript": "catalog:"
|
||||||
|
},
|
||||||
|
"pnpm": {
|
||||||
|
"patchedDependencies": {
|
||||||
|
"@tuyau/core@0.1.4": "patches/@tuyau__core@0.1.4.patch"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
14
packages/api-client/.eslintrc.json
Normal file
14
packages/api-client/.eslintrc.json
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"root": true,
|
||||||
|
"extends": ["@repo/eslint-config"],
|
||||||
|
"overrides": [
|
||||||
|
{
|
||||||
|
"files": ["*.ts", "*.tsx"],
|
||||||
|
"plugins": ["@typescript-eslint"],
|
||||||
|
"parser": "@typescript-eslint/parser",
|
||||||
|
"parserOptions": {
|
||||||
|
"project": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
25
packages/api-client/package.json
Normal file
25
packages/api-client/package.json
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
"name": "@repo/api-client",
|
||||||
|
"version": "1.0.0-staging.3",
|
||||||
|
"private": true,
|
||||||
|
"type": "module",
|
||||||
|
"exports": {
|
||||||
|
".": "./src/api.ts"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"lint:eslint": "eslint src --max-warnings 0 --report-unused-disable-directives",
|
||||||
|
"lint:typescript": "tsc --noEmit"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@tuyau/client": "catalog:"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@repo/eslint-config": "workspace:*",
|
||||||
|
"@repo/config-typescript": "workspace:*",
|
||||||
|
"@repo/api": "workspace:",
|
||||||
|
"@types/node": "catalog:",
|
||||||
|
"@total-typescript/ts-reset": "catalog:",
|
||||||
|
"eslint": "catalog:",
|
||||||
|
"typescript": "catalog:"
|
||||||
|
}
|
||||||
|
}
|
11
packages/api-client/src/api.ts
Normal file
11
packages/api-client/src/api.ts
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
/// <reference path="../../../apps/api/adonisrc.ts" />
|
||||||
|
|
||||||
|
import type { ApiDefinition } from "@repo/api"
|
||||||
|
import { createTuyau } from "@tuyau/client"
|
||||||
|
|
||||||
|
export const api = createTuyau<{ definition: ApiDefinition }>({
|
||||||
|
baseUrl:
|
||||||
|
process.env["API_URL"] ??
|
||||||
|
process.env["NEXT_PUBLIC_API_URL"] ??
|
||||||
|
"http://127.0.0.1:5500",
|
||||||
|
})
|
7
packages/api-client/tsconfig.json
Normal file
7
packages/api-client/tsconfig.json
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"extends": "@repo/config-typescript/tsconfig.json",
|
||||||
|
"compilerOptions": {
|
||||||
|
"lib": ["ESNext"],
|
||||||
|
"types": ["@types/node", "@total-typescript/ts-reset"]
|
||||||
|
}
|
||||||
|
}
|
@ -16,7 +16,9 @@
|
|||||||
"ignorePackages",
|
"ignorePackages",
|
||||||
{
|
{
|
||||||
"ts": "always",
|
"ts": "always",
|
||||||
"tsx": "always"
|
"tsx": "always",
|
||||||
|
"js": "never",
|
||||||
|
"jsx": "never"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,9 @@
|
|||||||
"target": "ESNext",
|
"target": "ESNext",
|
||||||
"module": "ESNext",
|
"module": "ESNext",
|
||||||
"moduleResolution": "Bundler",
|
"moduleResolution": "Bundler",
|
||||||
"resolveJsonModule": true
|
"resolveJsonModule": true,
|
||||||
|
|
||||||
|
"experimentalDecorators": true,
|
||||||
|
"emitDecoratorMetadata": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
"lint:typescript": "tsc --noEmit"
|
"lint:typescript": "tsc --noEmit"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@repo/utils": "workspace:*",
|
||||||
"deepmerge": "catalog:",
|
"deepmerge": "catalog:",
|
||||||
"next": "catalog:",
|
"next": "catalog:",
|
||||||
"next-intl": "catalog:",
|
"next-intl": "catalog:",
|
||||||
|
@ -1,10 +1,6 @@
|
|||||||
|
import type { Locale } from "@repo/utils/constants"
|
||||||
import type { RichTranslationValues } from "next-intl"
|
import type { RichTranslationValues } from "next-intl"
|
||||||
|
|
||||||
export const LOCALES = ["en-US", "fr-FR"] as const
|
|
||||||
export type Locale = (typeof LOCALES)[number]
|
|
||||||
export const LOCALE_DEFAULT = "en-US" satisfies Locale
|
|
||||||
export const LOCALE_PREFIX = "never"
|
|
||||||
|
|
||||||
export interface LocaleProps {
|
export interface LocaleProps {
|
||||||
params: {
|
params: {
|
||||||
locale: Locale
|
locale: Locale
|
||||||
|
@ -3,8 +3,9 @@ import type { AbstractIntlMessages } from "next-intl"
|
|||||||
import { getRequestConfig } from "next-intl/server"
|
import { getRequestConfig } from "next-intl/server"
|
||||||
import { notFound } from "next/navigation"
|
import { notFound } from "next/navigation"
|
||||||
|
|
||||||
import type { Locale } from "./config"
|
import type { Locale } from "@repo/utils/constants"
|
||||||
import { defaultTranslationValues, LOCALE_DEFAULT, LOCALES } from "./config.tsx"
|
import { LOCALE_DEFAULT, LOCALES } from "@repo/utils/constants"
|
||||||
|
import { defaultTranslationValues } from "./config.tsx"
|
||||||
|
|
||||||
export default getRequestConfig(async ({ locale }) => {
|
export default getRequestConfig(async ({ locale }) => {
|
||||||
if (!LOCALES.includes(locale as Locale)) {
|
if (!LOCALES.includes(locale as Locale)) {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { createSharedPathnamesNavigation } from "next-intl/navigation"
|
import { createSharedPathnamesNavigation } from "next-intl/navigation"
|
||||||
|
|
||||||
import { LOCALES, LOCALE_PREFIX } from "./config.tsx"
|
import { LOCALES, LOCALE_PREFIX } from "@repo/utils/constants"
|
||||||
|
|
||||||
export const { Link, redirect, usePathname, useRouter, permanentRedirect } =
|
export const { Link, redirect, usePathname, useRouter, permanentRedirect } =
|
||||||
createSharedPathnamesNavigation({
|
createSharedPathnamesNavigation({
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
"use client"
|
"use client"
|
||||||
|
|
||||||
import { classNames } from "@repo/config-tailwind/classNames"
|
import { classNames } from "@repo/config-tailwind/classNames"
|
||||||
import type { Locale } from "@repo/i18n/config"
|
|
||||||
import { LOCALES } from "@repo/i18n/config"
|
|
||||||
import { usePathname, useRouter } from "@repo/i18n/navigation"
|
import { usePathname, useRouter } from "@repo/i18n/navigation"
|
||||||
|
import type { Locale } from "@repo/utils/constants"
|
||||||
|
import { LOCALES } from "@repo/utils/constants"
|
||||||
import { useLocale, useTranslations } from "next-intl"
|
import { useLocale, useTranslations } from "next-intl"
|
||||||
|
|
||||||
export const Locales: React.FC = () => {
|
export const Locales: React.FC = () => {
|
||||||
|
@ -2,15 +2,13 @@
|
|||||||
|
|
||||||
import { classNames } from "@repo/config-tailwind/classNames"
|
import { classNames } from "@repo/config-tailwind/classNames"
|
||||||
import { useIsMounted } from "@repo/react-hooks/useIsMounted"
|
import { useIsMounted } from "@repo/react-hooks/useIsMounted"
|
||||||
|
import type { Theme } from "@repo/utils/constants"
|
||||||
|
import { THEME_DEFAULT } from "@repo/utils/constants"
|
||||||
import {
|
import {
|
||||||
ThemeProvider as NextThemeProvider,
|
ThemeProvider as NextThemeProvider,
|
||||||
useTheme as useNextTheme,
|
useTheme as useNextTheme,
|
||||||
} from "next-themes"
|
} from "next-themes"
|
||||||
|
|
||||||
export const THEMES = ["light", "dark"] as const
|
|
||||||
export type Theme = (typeof THEMES)[number]
|
|
||||||
export const THEME_DEFAULT = "light" as Theme
|
|
||||||
|
|
||||||
export interface ThemeProviderProps extends React.PropsWithChildren {}
|
export interface ThemeProviderProps extends React.PropsWithChildren {}
|
||||||
|
|
||||||
export const ThemeProvider: React.FC<ThemeProviderProps> = (props) => {
|
export const ThemeProvider: React.FC<ThemeProviderProps> = (props) => {
|
||||||
|
@ -7,3 +7,12 @@ export const VERSION =
|
|||||||
|
|
||||||
export const GIT_REPO_LINK =
|
export const GIT_REPO_LINK =
|
||||||
"https://git.theoludwig.fr/theoludwig/wikipedia-game-solver"
|
"https://git.theoludwig.fr/theoludwig/wikipedia-game-solver"
|
||||||
|
|
||||||
|
export const LOCALES = ["en-US", "fr-FR"] as const
|
||||||
|
export type Locale = (typeof LOCALES)[number]
|
||||||
|
export const LOCALE_DEFAULT = "en-US" satisfies Locale
|
||||||
|
export const LOCALE_PREFIX = "never"
|
||||||
|
|
||||||
|
export const THEMES = ["light", "dark"] as const
|
||||||
|
export type Theme = (typeof THEMES)[number]
|
||||||
|
export const THEME_DEFAULT = "light" as Theme
|
||||||
|
@ -5,20 +5,19 @@
|
|||||||
"type": "module",
|
"type": "module",
|
||||||
"exports": {
|
"exports": {
|
||||||
"./WikipediaClient": "./src/WikipediaClient.tsx",
|
"./WikipediaClient": "./src/WikipediaClient.tsx",
|
||||||
"./wikipedia-api": "./src/wikipedia-api.ts",
|
"./wikipedia-api": "./src/wikipedia-api.ts"
|
||||||
"./wikipedia-utils": "./src/wikipedia-utils.ts"
|
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"lint:eslint": "eslint src --max-warnings 0 --report-unused-disable-directives",
|
"lint:eslint": "eslint src --max-warnings 0 --report-unused-disable-directives",
|
||||||
"lint:typescript": "tsc --noEmit",
|
"lint:typescript": "tsc --noEmit"
|
||||||
"test": "vitest run",
|
|
||||||
"test:ui": "vitest --ui --no-open"
|
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@repo/config-tailwind": "workspace:*",
|
"@repo/config-tailwind": "workspace:*",
|
||||||
"@repo/i18n": "workspace:*",
|
"@repo/i18n": "workspace:*",
|
||||||
"@repo/ui": "workspace:*",
|
"@repo/ui": "workspace:*",
|
||||||
"@repo/utils": "workspace:*",
|
"@repo/utils": "workspace:*",
|
||||||
|
"@repo/api-client": "workspace:*",
|
||||||
|
"@repo/wikipedia": "workspace:*",
|
||||||
"ky": "catalog:",
|
"ky": "catalog:",
|
||||||
"next": "catalog:",
|
"next": "catalog:",
|
||||||
"next-intl": "catalog:",
|
"next-intl": "catalog:",
|
||||||
@ -35,12 +34,9 @@
|
|||||||
"@storybook/blocks": "catalog:",
|
"@storybook/blocks": "catalog:",
|
||||||
"@storybook/react": "catalog:",
|
"@storybook/react": "catalog:",
|
||||||
"@storybook/test": "catalog:",
|
"@storybook/test": "catalog:",
|
||||||
"@vitest/coverage-istanbul": "catalog:",
|
|
||||||
"@vitest/ui": "catalog:",
|
|
||||||
"eslint": "catalog:",
|
"eslint": "catalog:",
|
||||||
"postcss": "catalog:",
|
"postcss": "catalog:",
|
||||||
"tailwindcss": "catalog:",
|
"tailwindcss": "catalog:",
|
||||||
"typescript": "catalog:",
|
"typescript": "catalog:"
|
||||||
"vitest": "catalog:"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,14 +1,12 @@
|
|||||||
"use client"
|
"use client"
|
||||||
|
|
||||||
|
import { api } from "@repo/api-client"
|
||||||
import { Button } from "@repo/ui/Design/Button"
|
import { Button } from "@repo/ui/Design/Button"
|
||||||
import { Link } from "@repo/ui/Design/Link"
|
import { Link } from "@repo/ui/Design/Link"
|
||||||
import { Typography } from "@repo/ui/Design/Typography"
|
import { Typography } from "@repo/ui/Design/Typography"
|
||||||
|
import { fromLocaleToWikipediaLocale, getWikipediaLink } from "@repo/wikipedia"
|
||||||
import { useState } from "react"
|
import { useState } from "react"
|
||||||
import { getWikipediaPageInternalLinks } from "./wikipedia-api.ts"
|
import { getWikipediaPageInternalLinks } from "./wikipedia-api.ts"
|
||||||
import {
|
|
||||||
fromLocaleToWikipediaLocale,
|
|
||||||
getWikipediaLink,
|
|
||||||
} from "./wikipedia-utils.ts"
|
|
||||||
|
|
||||||
export const WikipediaClient: React.FC = () => {
|
export const WikipediaClient: React.FC = () => {
|
||||||
const [isLoading, setIsLoading] = useState(false)
|
const [isLoading, setIsLoading] = useState(false)
|
||||||
@ -38,6 +36,13 @@ export const WikipediaClient: React.FC = () => {
|
|||||||
fromPageWikipediaLinks,
|
fromPageWikipediaLinks,
|
||||||
toPageWikipediaLinks,
|
toPageWikipediaLinks,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const data = await api.wikipedia
|
||||||
|
.pages({ id: fromPageWikipediaLinks.pageId })
|
||||||
|
// TODO: any
|
||||||
|
.$get({} as any)
|
||||||
|
.unwrap()
|
||||||
|
console.log(data)
|
||||||
// const deepInternalLinks = await getDeepWikipediaPageInternalLinks({
|
// const deepInternalLinks = await getDeepWikipediaPageInternalLinks({
|
||||||
// locale: localeWikipedia,
|
// locale: localeWikipedia,
|
||||||
// data: {
|
// data: {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
import { getWikipediaLink, type WikipediaLocale } from "@repo/wikipedia"
|
||||||
import ky from "ky"
|
import ky from "ky"
|
||||||
import { getWikipediaLink, type WikipediaLocale } from "./wikipedia-utils.ts"
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see https://www.mediawiki.org/wiki/Wikimedia_REST_API#Terms_and_conditions
|
* @see https://www.mediawiki.org/wiki/Wikimedia_REST_API#Terms_and_conditions
|
||||||
|
14
packages/wikipedia/.eslintrc.json
Normal file
14
packages/wikipedia/.eslintrc.json
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"root": true,
|
||||||
|
"extends": ["@repo/eslint-config"],
|
||||||
|
"overrides": [
|
||||||
|
{
|
||||||
|
"files": ["*.ts", "*.tsx"],
|
||||||
|
"plugins": ["@typescript-eslint"],
|
||||||
|
"parser": "@typescript-eslint/parser",
|
||||||
|
"parserOptions": {
|
||||||
|
"project": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
29
packages/wikipedia/package.json
Normal file
29
packages/wikipedia/package.json
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"name": "@repo/wikipedia",
|
||||||
|
"version": "1.0.0-staging.3",
|
||||||
|
"private": true,
|
||||||
|
"type": "module",
|
||||||
|
"exports": {
|
||||||
|
".": "./src/wikipedia-utils.ts"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"lint:eslint": "eslint src --max-warnings 0 --report-unused-disable-directives",
|
||||||
|
"lint:typescript": "tsc --noEmit",
|
||||||
|
"test": "vitest run",
|
||||||
|
"test:ui": "vitest --ui --no-open"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@repo/utils": "workspace:*"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@repo/eslint-config": "workspace:*",
|
||||||
|
"@repo/config-typescript": "workspace:*",
|
||||||
|
"@types/node": "catalog:",
|
||||||
|
"@total-typescript/ts-reset": "catalog:",
|
||||||
|
"@vitest/coverage-istanbul": "catalog:",
|
||||||
|
"@vitest/ui": "catalog:",
|
||||||
|
"eslint": "catalog:",
|
||||||
|
"typescript": "catalog:",
|
||||||
|
"vitest": "catalog:"
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
import type { Locale } from "@repo/i18n/config"
|
import type { Locale } from "@repo/utils/constants"
|
||||||
import {
|
import {
|
||||||
capitalize,
|
capitalize,
|
||||||
reduceConsecutiveCharacters,
|
reduceConsecutiveCharacters,
|
7
packages/wikipedia/tsconfig.json
Normal file
7
packages/wikipedia/tsconfig.json
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"extends": "@repo/config-typescript/tsconfig.json",
|
||||||
|
"compilerOptions": {
|
||||||
|
"lib": ["ESNext"],
|
||||||
|
"types": ["@types/node", "@total-typescript/ts-reset"]
|
||||||
|
}
|
||||||
|
}
|
@ -5,7 +5,6 @@ export default defineConfig({
|
|||||||
coverage: {
|
coverage: {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
provider: "istanbul",
|
provider: "istanbul",
|
||||||
all: false,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
})
|
})
|
24
patches/@tuyau__core@0.1.4.patch
Normal file
24
patches/@tuyau__core@0.1.4.patch
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
diff --git a/build/commands/generate.js b/build/commands/generate.js
|
||||||
|
index 4e785ef7cc45430eade6bed6fb84749640c0f9a8..9c8d907023c61d7d7d6fe47628423337813c1e81 100644
|
||||||
|
--- a/build/commands/generate.js
|
||||||
|
+++ b/build/commands/generate.js
|
||||||
|
@@ -107,7 +107,7 @@ var ApiTypesGenerator = class {
|
||||||
|
return;
|
||||||
|
const definition = schema.getDefinitions().at(0);
|
||||||
|
const importType = this.#getIdentifierImportType(schema);
|
||||||
|
- if (!definition || !importType) {
|
||||||
|
+ if (!definition) {
|
||||||
|
this.#logger.warning(`Unable to find the schema file for ${schema.getText()}`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
@@ -214,10 +214,6 @@ var ApiTypesGenerator = class {
|
||||||
|
}
|
||||||
|
writer.writeLine(`] as const;`);
|
||||||
|
writer.writeLine(`export const api = {`).writeLine(` routes,`).writeLine(` definition: {} as ApiDefinition`).writeLine(`}`);
|
||||||
|
- writer.writeLine(`declare module '@tuyau/inertia/types' {`);
|
||||||
|
- writer.writeLine(` type ApiDefinition = typeof api`);
|
||||||
|
- writer.writeLine(` export interface Api extends ApiDefinition {}`);
|
||||||
|
- writer.writeLine(`}`);
|
||||||
|
});
|
||||||
|
await file.save();
|
||||||
|
}
|
352
pnpm-lock.yaml
generated
352
pnpm-lock.yaml
generated
@ -84,6 +84,18 @@ catalogs:
|
|||||||
'@total-typescript/ts-reset':
|
'@total-typescript/ts-reset':
|
||||||
specifier: 0.5.1
|
specifier: 0.5.1
|
||||||
version: 0.5.1
|
version: 0.5.1
|
||||||
|
'@tuyau/client':
|
||||||
|
specifier: 0.1.2
|
||||||
|
version: 0.1.2
|
||||||
|
'@tuyau/core':
|
||||||
|
specifier: 0.1.4
|
||||||
|
version: 0.1.4
|
||||||
|
'@tuyau/openapi':
|
||||||
|
specifier: 0.2.0
|
||||||
|
version: 0.2.0
|
||||||
|
'@tuyau/utils':
|
||||||
|
specifier: 0.0.4
|
||||||
|
version: 0.0.4
|
||||||
'@types/luxon':
|
'@types/luxon':
|
||||||
specifier: 3.4.2
|
specifier: 3.4.2
|
||||||
version: 3.4.2
|
version: 3.4.2
|
||||||
@ -232,6 +244,11 @@ catalogs:
|
|||||||
specifier: 2.0.5
|
specifier: 2.0.5
|
||||||
version: 2.0.5
|
version: 2.0.5
|
||||||
|
|
||||||
|
patchedDependencies:
|
||||||
|
'@tuyau/core@0.1.4':
|
||||||
|
hash: zzabo2h6qjt52qr7ntgx4dwdpa
|
||||||
|
path: patches/@tuyau__core@0.1.4.patch
|
||||||
|
|
||||||
importers:
|
importers:
|
||||||
|
|
||||||
.:
|
.:
|
||||||
@ -264,8 +281,8 @@ importers:
|
|||||||
specifier: 23.1.1
|
specifier: 23.1.1
|
||||||
version: 23.1.1(typescript@5.5.4)
|
version: 23.1.1(typescript@5.5.4)
|
||||||
turbo:
|
turbo:
|
||||||
specifier: 2.0.13
|
specifier: 2.0.14
|
||||||
version: 2.0.13
|
version: 2.0.14
|
||||||
typescript:
|
typescript:
|
||||||
specifier: 'catalog:'
|
specifier: 'catalog:'
|
||||||
version: 5.5.4
|
version: 5.5.4
|
||||||
@ -290,9 +307,18 @@ importers:
|
|||||||
'@repo/utils':
|
'@repo/utils':
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:../../packages/utils
|
version: link:../../packages/utils
|
||||||
'@repo/wikipedia-game-solver':
|
'@repo/wikipedia':
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:../../packages/wikipedia-game-solver
|
version: link:../../packages/wikipedia
|
||||||
|
'@tuyau/core':
|
||||||
|
specifier: 'catalog:'
|
||||||
|
version: 0.1.4(patch_hash=zzabo2h6qjt52qr7ntgx4dwdpa)(@adonisjs/core@6.12.1(@adonisjs/assembler@7.7.0(typescript@5.5.4))(@vinejs/vine@2.1.0))
|
||||||
|
'@tuyau/openapi':
|
||||||
|
specifier: 'catalog:'
|
||||||
|
version: 0.2.0(@tuyau/core@0.1.4(patch_hash=zzabo2h6qjt52qr7ntgx4dwdpa)(@adonisjs/core@6.12.1(@adonisjs/assembler@7.7.0(typescript@5.5.4))(@vinejs/vine@2.1.0)))
|
||||||
|
'@tuyau/utils':
|
||||||
|
specifier: 'catalog:'
|
||||||
|
version: 0.0.4
|
||||||
'@vinejs/vine':
|
'@vinejs/vine':
|
||||||
specifier: 'catalog:'
|
specifier: 'catalog:'
|
||||||
version: 2.1.0
|
version: 2.1.0
|
||||||
@ -457,7 +483,7 @@ importers:
|
|||||||
version: 8.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.2.9(@babel/preset-env@7.25.3(@babel/core@7.25.2)))(typescript@5.5.4)
|
version: 8.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.2.9(@babel/preset-env@7.25.3(@babel/core@7.25.2)))(typescript@5.5.4)
|
||||||
'@storybook/test':
|
'@storybook/test':
|
||||||
specifier: 'catalog:'
|
specifier: 'catalog:'
|
||||||
version: 8.2.9(@jest/globals@29.7.0)(jest@29.7.0(@types/node@22.3.0))(storybook@8.2.9(@babel/preset-env@7.25.3(@babel/core@7.25.2)))(vitest@2.0.5(@types/node@22.3.0)(@vitest/browser@2.0.5)(@vitest/ui@2.0.5)(terser@5.31.6))
|
version: 8.2.9(@jest/globals@29.7.0)(jest@29.7.0)(storybook@8.2.9(@babel/preset-env@7.25.3(@babel/core@7.25.2)))(vitest@2.0.5)
|
||||||
'@storybook/test-runner':
|
'@storybook/test-runner':
|
||||||
specifier: 'catalog:'
|
specifier: 'catalog:'
|
||||||
version: 0.19.1(@swc/helpers@0.5.5)(@types/node@22.3.0)(storybook@8.2.9(@babel/preset-env@7.25.3(@babel/core@7.25.2)))
|
version: 0.19.1(@swc/helpers@0.5.5)(@types/node@22.3.0)(storybook@8.2.9(@babel/preset-env@7.25.3(@babel/core@7.25.2)))
|
||||||
@ -515,6 +541,9 @@ importers:
|
|||||||
'@repo/utils':
|
'@repo/utils':
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:../../packages/utils
|
version: link:../../packages/utils
|
||||||
|
'@repo/wikipedia':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../packages/wikipedia
|
||||||
'@repo/wikipedia-game-solver':
|
'@repo/wikipedia-game-solver':
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:../../packages/wikipedia-game-solver
|
version: link:../../packages/wikipedia-game-solver
|
||||||
@ -565,6 +594,34 @@ importers:
|
|||||||
specifier: 'catalog:'
|
specifier: 'catalog:'
|
||||||
version: 5.5.4
|
version: 5.5.4
|
||||||
|
|
||||||
|
packages/api-client:
|
||||||
|
dependencies:
|
||||||
|
'@tuyau/client':
|
||||||
|
specifier: 'catalog:'
|
||||||
|
version: 0.1.2
|
||||||
|
devDependencies:
|
||||||
|
'@repo/api':
|
||||||
|
specifier: 'workspace:'
|
||||||
|
version: link:../../apps/api
|
||||||
|
'@repo/config-typescript':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../config-typescript
|
||||||
|
'@repo/eslint-config':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../config-eslint
|
||||||
|
'@total-typescript/ts-reset':
|
||||||
|
specifier: 'catalog:'
|
||||||
|
version: 0.5.1
|
||||||
|
'@types/node':
|
||||||
|
specifier: 'catalog:'
|
||||||
|
version: 22.3.0
|
||||||
|
eslint:
|
||||||
|
specifier: 'catalog:'
|
||||||
|
version: 8.57.0
|
||||||
|
typescript:
|
||||||
|
specifier: 'catalog:'
|
||||||
|
version: 5.5.4
|
||||||
|
|
||||||
packages/config-eslint:
|
packages/config-eslint:
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@typescript-eslint/eslint-plugin':
|
'@typescript-eslint/eslint-plugin':
|
||||||
@ -633,6 +690,9 @@ importers:
|
|||||||
|
|
||||||
packages/i18n:
|
packages/i18n:
|
||||||
dependencies:
|
dependencies:
|
||||||
|
'@repo/utils':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../utils
|
||||||
deepmerge:
|
deepmerge:
|
||||||
specifier: 'catalog:'
|
specifier: 'catalog:'
|
||||||
version: 4.3.1
|
version: 4.3.1
|
||||||
@ -823,8 +883,45 @@ importers:
|
|||||||
specifier: 'catalog:'
|
specifier: 'catalog:'
|
||||||
version: 2.0.5(@types/node@22.3.0)(@vitest/browser@2.0.5)(@vitest/ui@2.0.5)(terser@5.31.6)
|
version: 2.0.5(@types/node@22.3.0)(@vitest/browser@2.0.5)(@vitest/ui@2.0.5)(terser@5.31.6)
|
||||||
|
|
||||||
|
packages/wikipedia:
|
||||||
|
dependencies:
|
||||||
|
'@repo/utils':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../utils
|
||||||
|
devDependencies:
|
||||||
|
'@repo/config-typescript':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../config-typescript
|
||||||
|
'@repo/eslint-config':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../config-eslint
|
||||||
|
'@total-typescript/ts-reset':
|
||||||
|
specifier: 'catalog:'
|
||||||
|
version: 0.5.1
|
||||||
|
'@types/node':
|
||||||
|
specifier: 'catalog:'
|
||||||
|
version: 22.3.0
|
||||||
|
'@vitest/coverage-istanbul':
|
||||||
|
specifier: 'catalog:'
|
||||||
|
version: 2.0.5(vitest@2.0.5(@types/node@22.3.0)(@vitest/browser@2.0.5)(@vitest/ui@2.0.5)(terser@5.31.6))
|
||||||
|
'@vitest/ui':
|
||||||
|
specifier: 'catalog:'
|
||||||
|
version: 2.0.5(vitest@2.0.5)
|
||||||
|
eslint:
|
||||||
|
specifier: 'catalog:'
|
||||||
|
version: 8.57.0
|
||||||
|
typescript:
|
||||||
|
specifier: 'catalog:'
|
||||||
|
version: 5.5.4
|
||||||
|
vitest:
|
||||||
|
specifier: 'catalog:'
|
||||||
|
version: 2.0.5(@types/node@22.3.0)(@vitest/browser@2.0.5)(@vitest/ui@2.0.5)(terser@5.31.6)
|
||||||
|
|
||||||
packages/wikipedia-game-solver:
|
packages/wikipedia-game-solver:
|
||||||
dependencies:
|
dependencies:
|
||||||
|
'@repo/api-client':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../api-client
|
||||||
'@repo/config-tailwind':
|
'@repo/config-tailwind':
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:../config-tailwind
|
version: link:../config-tailwind
|
||||||
@ -837,6 +934,9 @@ importers:
|
|||||||
'@repo/utils':
|
'@repo/utils':
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:../utils
|
version: link:../utils
|
||||||
|
'@repo/wikipedia':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../wikipedia
|
||||||
ky:
|
ky:
|
||||||
specifier: 'catalog:'
|
specifier: 'catalog:'
|
||||||
version: 1.6.0
|
version: 1.6.0
|
||||||
@ -870,7 +970,7 @@ importers:
|
|||||||
version: 8.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.2.9(@babel/preset-env@7.25.3(@babel/core@7.25.2)))(typescript@5.5.4)
|
version: 8.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.2.9(@babel/preset-env@7.25.3(@babel/core@7.25.2)))(typescript@5.5.4)
|
||||||
'@storybook/test':
|
'@storybook/test':
|
||||||
specifier: 'catalog:'
|
specifier: 'catalog:'
|
||||||
version: 8.2.9(@jest/globals@29.7.0)(jest@29.7.0(@types/node@22.3.0))(storybook@8.2.9(@babel/preset-env@7.25.3(@babel/core@7.25.2)))(vitest@2.0.5(@types/node@22.3.0)(@vitest/browser@2.0.5)(@vitest/ui@2.0.5)(terser@5.31.6))
|
version: 8.2.9(@jest/globals@29.7.0)(jest@29.7.0)(storybook@8.2.9(@babel/preset-env@7.25.3(@babel/core@7.25.2)))(vitest@2.0.5)
|
||||||
'@total-typescript/ts-reset':
|
'@total-typescript/ts-reset':
|
||||||
specifier: 'catalog:'
|
specifier: 'catalog:'
|
||||||
version: 0.5.1
|
version: 0.5.1
|
||||||
@ -880,12 +980,6 @@ importers:
|
|||||||
'@types/react-dom':
|
'@types/react-dom':
|
||||||
specifier: 'catalog:'
|
specifier: 'catalog:'
|
||||||
version: 18.3.0
|
version: 18.3.0
|
||||||
'@vitest/coverage-istanbul':
|
|
||||||
specifier: 'catalog:'
|
|
||||||
version: 2.0.5(vitest@2.0.5(@types/node@22.3.0)(@vitest/browser@2.0.5)(@vitest/ui@2.0.5)(terser@5.31.6))
|
|
||||||
'@vitest/ui':
|
|
||||||
specifier: 'catalog:'
|
|
||||||
version: 2.0.5(vitest@2.0.5)
|
|
||||||
eslint:
|
eslint:
|
||||||
specifier: 'catalog:'
|
specifier: 'catalog:'
|
||||||
version: 8.57.0
|
version: 8.57.0
|
||||||
@ -898,9 +992,6 @@ importers:
|
|||||||
typescript:
|
typescript:
|
||||||
specifier: 'catalog:'
|
specifier: 'catalog:'
|
||||||
version: 5.5.4
|
version: 5.5.4
|
||||||
vitest:
|
|
||||||
specifier: 'catalog:'
|
|
||||||
version: 2.0.5(@types/node@22.3.0)(@vitest/browser@2.0.5)(@vitest/ui@2.0.5)(terser@5.31.6)
|
|
||||||
|
|
||||||
packages:
|
packages:
|
||||||
|
|
||||||
@ -1079,8 +1170,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
|
resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
|
||||||
engines: {node: '>=6.0.0'}
|
engines: {node: '>=6.0.0'}
|
||||||
|
|
||||||
'@antfu/install-pkg@0.3.4':
|
'@antfu/install-pkg@0.3.5':
|
||||||
resolution: {integrity: sha512-xmYFuDsaS5hlqVSJYVIzBGnUBhZR6NpwelQx/qr9wHTenqMF14YhsexWADcFyMCKwf/vApnvLTfEEnaOBvo5SA==}
|
resolution: {integrity: sha512-HwIACY0IzrM7FGafMbWZOqEDBSfCwPcylu+GacaRcxJm4Yvvuh3Dy2vZwqdJAzXponc6aLO9FaH4l75pq8/ZSA==}
|
||||||
|
|
||||||
'@apidevtools/json-schema-ref-parser@9.1.2':
|
'@apidevtools/json-schema-ref-parser@9.1.2':
|
||||||
resolution: {integrity: sha512-r1w81DpR+KyRWd3f+rk6TNqMgedmAxZP5v5KWlXQWlgMUUtyEJch0DKEci1SorPMiSeM8XPl7MZ3miJ60JIpQg==}
|
resolution: {integrity: sha512-r1w81DpR+KyRWd3f+rk6TNqMgedmAxZP5v5KWlXQWlgMUUtyEJch0DKEci1SorPMiSeM8XPl7MZ3miJ60JIpQg==}
|
||||||
@ -2413,6 +2504,10 @@ packages:
|
|||||||
'@jridgewell/trace-mapping@0.3.25':
|
'@jridgewell/trace-mapping@0.3.25':
|
||||||
resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
|
resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
|
||||||
|
|
||||||
|
'@jsdevtools/ez-spawn@3.0.4':
|
||||||
|
resolution: {integrity: sha512-f5DRIOZf7wxogefH03RjMPMdBF7ADTWUMoOs9kaJo06EfwF+aFhMZMDZxHg/Xe12hptN9xoZjGso2fdjapBRIA==}
|
||||||
|
engines: {node: '>=10'}
|
||||||
|
|
||||||
'@jsdevtools/ono@7.1.3':
|
'@jsdevtools/ono@7.1.3':
|
||||||
resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==}
|
resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==}
|
||||||
|
|
||||||
@ -2832,8 +2927,8 @@ packages:
|
|||||||
peerDependencies:
|
peerDependencies:
|
||||||
semantic-release: '>=18.0.0'
|
semantic-release: '>=18.0.0'
|
||||||
|
|
||||||
'@semantic-release/github@10.1.5':
|
'@semantic-release/github@10.1.6':
|
||||||
resolution: {integrity: sha512-S68D1r3gxWxk8jh2nINjEX/HYFb/i6X7ooxyvrv5CWLFuyEJQpN/zFw4zr8ti0YFXtKaccfpVQuVOgF0w+VacA==}
|
resolution: {integrity: sha512-UTW7hNp6nDeJJWrHcNx8dki95d12WVh++PH98rIr7PQxrZrnjtL0ys/rsAt9tOBTWBaCZdj6797RMLkY9tU+ug==}
|
||||||
engines: {node: '>=20.8.1'}
|
engines: {node: '>=20.8.1'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
semantic-release: '>=20.1.0'
|
semantic-release: '>=20.1.0'
|
||||||
@ -3285,6 +3380,24 @@ packages:
|
|||||||
'@ts-morph/common@0.23.0':
|
'@ts-morph/common@0.23.0':
|
||||||
resolution: {integrity: sha512-m7Lllj9n/S6sOkCkRftpM7L24uvmfXQFedlW/4hENcuJH1HHm9u5EgxZb9uVjQSCGrbBWBkOGgcTxNg36r6ywA==}
|
resolution: {integrity: sha512-m7Lllj9n/S6sOkCkRftpM7L24uvmfXQFedlW/4hENcuJH1HHm9u5EgxZb9uVjQSCGrbBWBkOGgcTxNg36r6ywA==}
|
||||||
|
|
||||||
|
'@tuyau/client@0.1.2':
|
||||||
|
resolution: {integrity: sha512-DpQTpWEDMrrGEneSKSbK21n3p5yHbvfR3UJ7058GZfda9IY7yiS8YC3xLdQOFwHF/pn9Y/GSCujUF7cymSspTg==}
|
||||||
|
|
||||||
|
'@tuyau/core@0.1.4':
|
||||||
|
resolution: {integrity: sha512-fHhTeq/O38csBvENcAuxLZpsLMS/4DlmtGxqi+yNW90ucJxSNpD8SNAGCsQehI3cCKjyLFzC0pn7dFu6CUKTPQ==}
|
||||||
|
engines: {node: '>=20.6.0'}
|
||||||
|
peerDependencies:
|
||||||
|
'@adonisjs/core': ^6.2.0
|
||||||
|
|
||||||
|
'@tuyau/openapi@0.2.0':
|
||||||
|
resolution: {integrity: sha512-6c+jDOL4lw0JNx4ChZaXQZOoa39/k+aW9w7RzZEP77IU4HTRxkGloEyZZB8UDQyZ00zpx/1+LOG6PAPXoRbRZA==}
|
||||||
|
engines: {node: '>=20.6.0'}
|
||||||
|
peerDependencies:
|
||||||
|
'@tuyau/core': ^0.1.4
|
||||||
|
|
||||||
|
'@tuyau/utils@0.0.4':
|
||||||
|
resolution: {integrity: sha512-ex6CAJNLiTuOvx7nUrgs8FwNG/t88Mi8QTLSO3muHbB6vBSpYimZ6iSUkk4cjEFd4XDy0y+24GDgXKoBfGf4ag==}
|
||||||
|
|
||||||
'@types/aria-query@5.0.4':
|
'@types/aria-query@5.0.4':
|
||||||
resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==}
|
resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==}
|
||||||
|
|
||||||
@ -6514,6 +6627,10 @@ packages:
|
|||||||
json-stringify-safe@5.0.1:
|
json-stringify-safe@5.0.1:
|
||||||
resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==}
|
resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==}
|
||||||
|
|
||||||
|
json-to-pretty-yaml@1.2.2:
|
||||||
|
resolution: {integrity: sha512-rvm6hunfCcqegwYaG5T4yKJWxc9FXFgBVrcTZ4XfSVRwa5HA/Xs+vB/Eo9treYYHCeNM0nrSUr82V/M31Urc7A==}
|
||||||
|
engines: {node: '>= 0.2.0'}
|
||||||
|
|
||||||
json5@1.0.2:
|
json5@1.0.2:
|
||||||
resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
|
resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
@ -7210,6 +7327,9 @@ packages:
|
|||||||
resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
|
resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
|
|
||||||
|
object-to-formdata@4.5.1:
|
||||||
|
resolution: {integrity: sha512-QiM9D0NiU5jV6J6tjE1g7b4Z2tcUnKs1OPUi4iMb2zH+7jwlcUrASghgkFk9GtzqNNq8rTQJtT8AzjBAvLoNMw==}
|
||||||
|
|
||||||
object.assign@4.1.5:
|
object.assign@4.1.5:
|
||||||
resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==}
|
resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
@ -8100,6 +8220,12 @@ packages:
|
|||||||
resolution: {integrity: sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==}
|
resolution: {integrity: sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==}
|
||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
|
|
||||||
|
remedial@1.0.8:
|
||||||
|
resolution: {integrity: sha512-/62tYiOe6DzS5BqVsNpH/nkGlX45C/Sp6V+NtiN6JQNS1Viay7cWkazmRkrQrdFj2eshDe96SIQNIoMxqhzBOg==}
|
||||||
|
|
||||||
|
remove-trailing-spaces@1.0.8:
|
||||||
|
resolution: {integrity: sha512-O3vsMYfWighyFbTd8hk8VaSj9UAGENxAtX+//ugIst2RMk5e03h6RoIS+0ylsFxY1gvmPuAY/PO4It+gPEeySA==}
|
||||||
|
|
||||||
renderkid@3.0.0:
|
renderkid@3.0.0:
|
||||||
resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==}
|
resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==}
|
||||||
|
|
||||||
@ -8529,6 +8655,10 @@ packages:
|
|||||||
strict-event-emitter@0.5.1:
|
strict-event-emitter@0.5.1:
|
||||||
resolution: {integrity: sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==}
|
resolution: {integrity: sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==}
|
||||||
|
|
||||||
|
string-argv@0.3.2:
|
||||||
|
resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==}
|
||||||
|
engines: {node: '>=0.6.19'}
|
||||||
|
|
||||||
string-length@4.0.2:
|
string-length@4.0.2:
|
||||||
resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==}
|
resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
@ -8808,9 +8938,6 @@ packages:
|
|||||||
tinybench@2.9.0:
|
tinybench@2.9.0:
|
||||||
resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==}
|
resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==}
|
||||||
|
|
||||||
tinyexec@0.1.4:
|
|
||||||
resolution: {integrity: sha512-Ba2ELcNnnWkgqnAJBouhcsDsYitbD9LIAVNSz3746u50f+tlF3wO0uB3uqyz8NHFSTpv23qtT47XGDw8pXW5DA==}
|
|
||||||
|
|
||||||
tinypool@1.0.0:
|
tinypool@1.0.0:
|
||||||
resolution: {integrity: sha512-KIKExllK7jp3uvrNtvRBYBWBOAXSX8ZvoaD8T+7KB/QHIuoJW3Pmr60zucywjAlMb5TeXUkcs/MWeWLu0qvuAQ==}
|
resolution: {integrity: sha512-KIKExllK7jp3uvrNtvRBYBWBOAXSX8ZvoaD8T+7KB/QHIuoJW3Pmr60zucywjAlMb5TeXUkcs/MWeWLu0qvuAQ==}
|
||||||
engines: {node: ^18.0.0 || >=20.0.0}
|
engines: {node: ^18.0.0 || >=20.0.0}
|
||||||
@ -8932,38 +9059,38 @@ packages:
|
|||||||
tunnel-agent@0.6.0:
|
tunnel-agent@0.6.0:
|
||||||
resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==}
|
resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==}
|
||||||
|
|
||||||
turbo-darwin-64@2.0.13:
|
turbo-darwin-64@2.0.14:
|
||||||
resolution: {integrity: sha512-1qoFGvSE/kG1Njl1a1b35+AlJyCBE/+cb7GcglxuUM0Fh0JNR6FIWGhiubUhFLoIdFkdRbPpTH5smhPpRk757w==}
|
resolution: {integrity: sha512-kwfDmjNwlNfvtrvT29+ZBg5n1Wvxl891bFHchMJyzMoR0HOE9N1NSNdSZb9wG3e7sYNIu4uDkNk+VBEqJW0HzQ==}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
turbo-darwin-arm64@2.0.13:
|
turbo-darwin-arm64@2.0.14:
|
||||||
resolution: {integrity: sha512-3fgbjKeRjvZTKJhn6eOyA6SaFXlRHx/z7qAWYcTbq7iu2zd+n0OHRyah9Voy2ZihiGAI0Bw4QfVWo3d1qTabgA==}
|
resolution: {integrity: sha512-m3LXYEshCx3wc4ZClM6gb01KYpFmtjQ9IBF3A7ofjb6ahux3xlYZJZ3uFCLAGHuvGLuJ3htfiPbwlDPTdknqqw==}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
turbo-linux-64@2.0.13:
|
turbo-linux-64@2.0.14:
|
||||||
resolution: {integrity: sha512-1nMO5NWHWs4jI5SV8SMlGtR3/jBlud1ld/ltayYwOXm6zdznj0/mTNNE9AjfOs/aAei2wZE1HWUHXe46q/nZtw==}
|
resolution: {integrity: sha512-7vBzCPdoTtR92SNn2JMgj1FlMmyonGmpMaQdgAB1OVYtuQ6NVGoh7/lODfaILqXjpvmFSVbpBIDrKOT6EvcprQ==}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
turbo-linux-arm64@2.0.13:
|
turbo-linux-arm64@2.0.14:
|
||||||
resolution: {integrity: sha512-JkQYAAMbEW3jkzhbtY4hi0Q61tlSd46qLEVBQqnur9VymC4TfD6kllVMpRtbmXv8jdfGPu+rEIeYrzjHpyqMfg==}
|
resolution: {integrity: sha512-jwH+c0bfjpBf26K/tdEFatmnYyXwGROjbr6bZmNcL8R+IkGAc/cglL+OToqJnQZTgZvH7uDGbeSyUo7IsHyjuA==}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
turbo-windows-64@2.0.13:
|
turbo-windows-64@2.0.14:
|
||||||
resolution: {integrity: sha512-QYJfYPnmb3j16CR4mucYicC+tlY1fsFws6fkqZe2b8jBpRyOslxkEk4XJWCsvUizPSYpOdAnTL9baunLH7hWrA==}
|
resolution: {integrity: sha512-w9/XwkHSzvLjmioo6cl3S1yRfI6swxsV1j1eJwtl66JM4/pn0H2rBa855R0n7hZnmI6H5ywLt/nLt6Ae8RTDmw==}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
|
|
||||||
turbo-windows-arm64@2.0.13:
|
turbo-windows-arm64@2.0.14:
|
||||||
resolution: {integrity: sha512-dnVN19dq7jszcKVBy4+T1IMmMY1ergigJZdl76Bbc99QOwaXsTR7ci4sle89HvJb+F1z/MXSq8ePvRTcy6dKRw==}
|
resolution: {integrity: sha512-XaQlyYk+Rf4xS5XWCo8XCMIpssgGGy8blzLfolN6YBp4baElIWMlkLZHDbGyiFmCbNf9I9gJI64XGRG+LVyyjA==}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
|
|
||||||
turbo@2.0.13:
|
turbo@2.0.14:
|
||||||
resolution: {integrity: sha512-xZYCpvy+Q5X05HQLVbup/nUva/EPd8QKX/WLfztz8Yhh7yH+VN9t+P9ACG2U0ThlrqX4uFS0tuE0jaCLvL1Imw==}
|
resolution: {integrity: sha512-00JjdCMD/cpsjP0Izkjcm8Oaor5yUCfDwODtaLb+WyblyadkaDEisGhy3Dbd5az9n+5iLSPiUgf+WjPbns6MRg==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
tween-functions@1.2.0:
|
tween-functions@1.2.0:
|
||||||
@ -9125,8 +9252,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
|
resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
|
||||||
engines: {node: '>= 0.8'}
|
engines: {node: '>= 0.8'}
|
||||||
|
|
||||||
unplugin@1.12.1:
|
unplugin@1.12.2:
|
||||||
resolution: {integrity: sha512-aXEH9c5qi3uYZHo0niUtxDlT9ylG/luMW/dZslSCkbtC31wCyFkmM0kyoBBh+Grhn7CL+/kvKLfN61/EdxPxMQ==}
|
resolution: {integrity: sha512-bEqQxeC7rxtxPZ3M5V4Djcc4lQqKPgGe3mAWZvxcSmX5jhGxll19NliaRzQSQPrk4xJZSGniK3puLWpRuZN7VQ==}
|
||||||
engines: {node: '>=14.0.0'}
|
engines: {node: '>=14.0.0'}
|
||||||
|
|
||||||
update-browserslist-db@1.1.0:
|
update-browserslist-db@1.1.0:
|
||||||
@ -9201,8 +9328,8 @@ packages:
|
|||||||
engines: {node: ^18.0.0 || >=20.0.0}
|
engines: {node: ^18.0.0 || >=20.0.0}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
vite@5.4.0:
|
vite@5.4.1:
|
||||||
resolution: {integrity: sha512-5xokfMX0PIiwCMCMb9ZJcMyh5wbBun0zUzKib+L65vAZ8GY9ePZMXxFrHbr/Kyll2+LSCY7xtERPpxkBDKngwg==}
|
resolution: {integrity: sha512-1oE6yuNXssjrZdblI9AfBbHCC41nnyoVoEZxQnID6yvQZAFBzxxkqoFLtHUMkYunL8hwOLEjgTuxpkRxvba3kA==}
|
||||||
engines: {node: ^18.0.0 || >=20.0.0}
|
engines: {node: ^18.0.0 || >=20.0.0}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@ -9515,7 +9642,7 @@ snapshots:
|
|||||||
'@adonisjs/assembler@7.7.0(typescript@5.5.4)':
|
'@adonisjs/assembler@7.7.0(typescript@5.5.4)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@adonisjs/env': 6.1.0
|
'@adonisjs/env': 6.1.0
|
||||||
'@antfu/install-pkg': 0.3.4
|
'@antfu/install-pkg': 0.3.5
|
||||||
'@poppinss/chokidar-ts': 4.1.4(typescript@5.5.4)
|
'@poppinss/chokidar-ts': 4.1.4(typescript@5.5.4)
|
||||||
'@poppinss/cliui': 6.4.1
|
'@poppinss/cliui': 6.4.1
|
||||||
'@poppinss/hooks': 7.2.3
|
'@poppinss/hooks': 7.2.3
|
||||||
@ -9580,7 +9707,7 @@ snapshots:
|
|||||||
'@adonisjs/http-server': 7.2.3(@adonisjs/application@8.3.1(@adonisjs/config@5.0.2)(@adonisjs/fold@10.1.2))(@adonisjs/encryption@6.0.2)(@adonisjs/events@9.0.2(@adonisjs/application@8.3.1(@adonisjs/config@5.0.2)(@adonisjs/fold@10.1.2))(@adonisjs/fold@10.1.2))(@adonisjs/fold@10.1.2)(@adonisjs/logger@6.0.3)
|
'@adonisjs/http-server': 7.2.3(@adonisjs/application@8.3.1(@adonisjs/config@5.0.2)(@adonisjs/fold@10.1.2))(@adonisjs/encryption@6.0.2)(@adonisjs/events@9.0.2(@adonisjs/application@8.3.1(@adonisjs/config@5.0.2)(@adonisjs/fold@10.1.2))(@adonisjs/fold@10.1.2))(@adonisjs/fold@10.1.2)(@adonisjs/logger@6.0.3)
|
||||||
'@adonisjs/logger': 6.0.3
|
'@adonisjs/logger': 6.0.3
|
||||||
'@adonisjs/repl': 4.0.1
|
'@adonisjs/repl': 4.0.1
|
||||||
'@antfu/install-pkg': 0.3.4
|
'@antfu/install-pkg': 0.3.5
|
||||||
'@paralleldrive/cuid2': 2.2.2
|
'@paralleldrive/cuid2': 2.2.2
|
||||||
'@poppinss/macroable': 1.0.2
|
'@poppinss/macroable': 1.0.2
|
||||||
'@poppinss/utils': 6.7.3
|
'@poppinss/utils': 6.7.3
|
||||||
@ -9724,9 +9851,9 @@ snapshots:
|
|||||||
'@jridgewell/gen-mapping': 0.3.5
|
'@jridgewell/gen-mapping': 0.3.5
|
||||||
'@jridgewell/trace-mapping': 0.3.25
|
'@jridgewell/trace-mapping': 0.3.25
|
||||||
|
|
||||||
'@antfu/install-pkg@0.3.4':
|
'@antfu/install-pkg@0.3.5':
|
||||||
dependencies:
|
dependencies:
|
||||||
tinyexec: 0.1.4
|
'@jsdevtools/ez-spawn': 3.0.4
|
||||||
|
|
||||||
'@apidevtools/json-schema-ref-parser@9.1.2':
|
'@apidevtools/json-schema-ref-parser@9.1.2':
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -11260,6 +11387,13 @@ snapshots:
|
|||||||
'@jridgewell/resolve-uri': 3.1.2
|
'@jridgewell/resolve-uri': 3.1.2
|
||||||
'@jridgewell/sourcemap-codec': 1.5.0
|
'@jridgewell/sourcemap-codec': 1.5.0
|
||||||
|
|
||||||
|
'@jsdevtools/ez-spawn@3.0.4':
|
||||||
|
dependencies:
|
||||||
|
call-me-maybe: 1.0.2
|
||||||
|
cross-spawn: 7.0.3
|
||||||
|
string-argv: 0.3.2
|
||||||
|
type-detect: 4.1.0
|
||||||
|
|
||||||
'@jsdevtools/ono@7.1.3': {}
|
'@jsdevtools/ono@7.1.3': {}
|
||||||
|
|
||||||
'@lukeed/ms@2.0.2': {}
|
'@lukeed/ms@2.0.2': {}
|
||||||
@ -11682,7 +11816,7 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@semantic-release/github@10.1.5(semantic-release@23.1.1(typescript@5.5.4))':
|
'@semantic-release/github@10.1.6(semantic-release@23.1.1(typescript@5.5.4))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@octokit/core': 6.1.2
|
'@octokit/core': 6.1.2
|
||||||
'@octokit/plugin-paginate-rest': 11.3.3(@octokit/core@6.1.2)
|
'@octokit/plugin-paginate-rest': 11.3.3(@octokit/core@6.1.2)
|
||||||
@ -11891,7 +12025,7 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@storybook/global': 5.0.0
|
'@storybook/global': 5.0.0
|
||||||
'@storybook/instrumenter': 8.2.9(storybook@8.2.9(@babel/preset-env@7.25.3(@babel/core@7.25.2)))
|
'@storybook/instrumenter': 8.2.9(storybook@8.2.9(@babel/preset-env@7.25.3(@babel/core@7.25.2)))
|
||||||
'@storybook/test': 8.2.9(@jest/globals@29.7.0)(jest@29.7.0(@types/node@22.3.0))(storybook@8.2.9(@babel/preset-env@7.25.3(@babel/core@7.25.2)))(vitest@2.0.5(@types/node@22.3.0))
|
'@storybook/test': 8.2.9(@jest/globals@29.7.0)(jest@29.7.0)(storybook@8.2.9(@babel/preset-env@7.25.3(@babel/core@7.25.2)))(vitest@2.0.5)
|
||||||
polished: 4.3.1
|
polished: 4.3.1
|
||||||
storybook: 8.2.9(@babel/preset-env@7.25.3(@babel/core@7.25.2))
|
storybook: 8.2.9(@babel/preset-env@7.25.3(@babel/core@7.25.2))
|
||||||
ts-dedent: 2.2.0
|
ts-dedent: 2.2.0
|
||||||
@ -12064,7 +12198,7 @@ snapshots:
|
|||||||
'@storybook/csf-plugin@8.2.9(storybook@8.2.9(@babel/preset-env@7.25.3(@babel/core@7.25.2)))':
|
'@storybook/csf-plugin@8.2.9(storybook@8.2.9(@babel/preset-env@7.25.3(@babel/core@7.25.2)))':
|
||||||
dependencies:
|
dependencies:
|
||||||
storybook: 8.2.9(@babel/preset-env@7.25.3(@babel/core@7.25.2))
|
storybook: 8.2.9(@babel/preset-env@7.25.3(@babel/core@7.25.2))
|
||||||
unplugin: 1.12.1
|
unplugin: 1.12.2
|
||||||
|
|
||||||
'@storybook/csf-tools@8.2.9(storybook@8.2.9(@babel/preset-env@7.25.3(@babel/core@7.25.2)))':
|
'@storybook/csf-tools@8.2.9(storybook@8.2.9(@babel/preset-env@7.25.3(@babel/core@7.25.2)))':
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -12115,7 +12249,7 @@ snapshots:
|
|||||||
'@storybook/builder-webpack5': 8.2.9(@swc/core@1.7.11(@swc/helpers@0.5.5))(esbuild@0.21.5)(storybook@8.2.9(@babel/preset-env@7.25.3(@babel/core@7.25.2)))(typescript@5.5.4)
|
'@storybook/builder-webpack5': 8.2.9(@swc/core@1.7.11(@swc/helpers@0.5.5))(esbuild@0.21.5)(storybook@8.2.9(@babel/preset-env@7.25.3(@babel/core@7.25.2)))(typescript@5.5.4)
|
||||||
'@storybook/preset-react-webpack': 8.2.9(@swc/core@1.7.11(@swc/helpers@0.5.5))(esbuild@0.21.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.2.9(@babel/preset-env@7.25.3(@babel/core@7.25.2)))(typescript@5.5.4)
|
'@storybook/preset-react-webpack': 8.2.9(@swc/core@1.7.11(@swc/helpers@0.5.5))(esbuild@0.21.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.2.9(@babel/preset-env@7.25.3(@babel/core@7.25.2)))(typescript@5.5.4)
|
||||||
'@storybook/react': 8.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.2.9(@babel/preset-env@7.25.3(@babel/core@7.25.2)))(typescript@5.5.4)
|
'@storybook/react': 8.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.2.9(@babel/preset-env@7.25.3(@babel/core@7.25.2)))(typescript@5.5.4)
|
||||||
'@storybook/test': 8.2.9(@jest/globals@29.7.0)(jest@29.7.0(@types/node@22.3.0))(storybook@8.2.9(@babel/preset-env@7.25.3(@babel/core@7.25.2)))(vitest@2.0.5(@types/node@22.3.0))
|
'@storybook/test': 8.2.9(@jest/globals@29.7.0)(jest@29.7.0)(storybook@8.2.9(@babel/preset-env@7.25.3(@babel/core@7.25.2)))(vitest@2.0.5)
|
||||||
'@types/node': 18.19.44
|
'@types/node': 18.19.44
|
||||||
'@types/semver': 7.5.8
|
'@types/semver': 7.5.8
|
||||||
babel-loader: 9.1.3(@babel/core@7.25.2)(webpack@5.93.0(@swc/core@1.7.11(@swc/helpers@0.5.5))(esbuild@0.21.5))
|
babel-loader: 9.1.3(@babel/core@7.25.2)(webpack@5.93.0(@swc/core@1.7.11(@swc/helpers@0.5.5))(esbuild@0.21.5))
|
||||||
@ -12291,42 +12425,6 @@ snapshots:
|
|||||||
- supports-color
|
- supports-color
|
||||||
- ts-node
|
- ts-node
|
||||||
|
|
||||||
'@storybook/test@8.2.9(@jest/globals@29.7.0)(jest@29.7.0(@types/node@22.3.0))(storybook@8.2.9(@babel/preset-env@7.25.3(@babel/core@7.25.2)))(vitest@2.0.5(@types/node@22.3.0)(@vitest/browser@2.0.5)(@vitest/ui@2.0.5)(terser@5.31.6))':
|
|
||||||
dependencies:
|
|
||||||
'@storybook/csf': 0.1.11
|
|
||||||
'@storybook/instrumenter': 8.2.9(storybook@8.2.9(@babel/preset-env@7.25.3(@babel/core@7.25.2)))
|
|
||||||
'@testing-library/dom': 10.1.0
|
|
||||||
'@testing-library/jest-dom': 6.4.5(@jest/globals@29.7.0)(jest@29.7.0(@types/node@22.3.0))(vitest@2.0.5(@types/node@22.3.0)(@vitest/browser@2.0.5)(@vitest/ui@2.0.5)(terser@5.31.6))
|
|
||||||
'@testing-library/user-event': 14.5.2(@testing-library/dom@10.1.0)
|
|
||||||
'@vitest/expect': 1.6.0
|
|
||||||
'@vitest/spy': 1.6.0
|
|
||||||
storybook: 8.2.9(@babel/preset-env@7.25.3(@babel/core@7.25.2))
|
|
||||||
util: 0.12.5
|
|
||||||
transitivePeerDependencies:
|
|
||||||
- '@jest/globals'
|
|
||||||
- '@types/bun'
|
|
||||||
- '@types/jest'
|
|
||||||
- jest
|
|
||||||
- vitest
|
|
||||||
|
|
||||||
'@storybook/test@8.2.9(@jest/globals@29.7.0)(jest@29.7.0(@types/node@22.3.0))(storybook@8.2.9(@babel/preset-env@7.25.3(@babel/core@7.25.2)))(vitest@2.0.5(@types/node@22.3.0))':
|
|
||||||
dependencies:
|
|
||||||
'@storybook/csf': 0.1.11
|
|
||||||
'@storybook/instrumenter': 8.2.9(storybook@8.2.9(@babel/preset-env@7.25.3(@babel/core@7.25.2)))
|
|
||||||
'@testing-library/dom': 10.1.0
|
|
||||||
'@testing-library/jest-dom': 6.4.5(@jest/globals@29.7.0)(jest@29.7.0(@types/node@22.3.0))(vitest@2.0.5(@types/node@22.3.0)(@vitest/browser@2.0.5)(@vitest/ui@2.0.5)(terser@5.31.6))
|
|
||||||
'@testing-library/user-event': 14.5.2(@testing-library/dom@10.1.0)
|
|
||||||
'@vitest/expect': 1.6.0
|
|
||||||
'@vitest/spy': 1.6.0
|
|
||||||
storybook: 8.2.9(@babel/preset-env@7.25.3(@babel/core@7.25.2))
|
|
||||||
util: 0.12.5
|
|
||||||
transitivePeerDependencies:
|
|
||||||
- '@jest/globals'
|
|
||||||
- '@types/bun'
|
|
||||||
- '@types/jest'
|
|
||||||
- jest
|
|
||||||
- vitest
|
|
||||||
|
|
||||||
'@storybook/test@8.2.9(@jest/globals@29.7.0)(jest@29.7.0)(storybook@8.2.9(@babel/preset-env@7.25.3(@babel/core@7.25.2)))(vitest@2.0.5)':
|
'@storybook/test@8.2.9(@jest/globals@29.7.0)(jest@29.7.0)(storybook@8.2.9(@babel/preset-env@7.25.3(@babel/core@7.25.2)))(vitest@2.0.5)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@storybook/csf': 0.1.11
|
'@storybook/csf': 0.1.11
|
||||||
@ -12436,21 +12534,6 @@ snapshots:
|
|||||||
lz-string: 1.5.0
|
lz-string: 1.5.0
|
||||||
pretty-format: 27.5.1
|
pretty-format: 27.5.1
|
||||||
|
|
||||||
'@testing-library/jest-dom@6.4.5(@jest/globals@29.7.0)(jest@29.7.0(@types/node@22.3.0))(vitest@2.0.5(@types/node@22.3.0)(@vitest/browser@2.0.5)(@vitest/ui@2.0.5)(terser@5.31.6))':
|
|
||||||
dependencies:
|
|
||||||
'@adobe/css-tools': 4.4.0
|
|
||||||
'@babel/runtime': 7.25.0
|
|
||||||
aria-query: 5.3.0
|
|
||||||
chalk: 3.0.0
|
|
||||||
css.escape: 1.5.1
|
|
||||||
dom-accessibility-api: 0.6.3
|
|
||||||
lodash: 4.17.21
|
|
||||||
redent: 3.0.0
|
|
||||||
optionalDependencies:
|
|
||||||
'@jest/globals': 29.7.0
|
|
||||||
jest: 29.7.0(@types/node@22.3.0)
|
|
||||||
vitest: 2.0.5(@types/node@22.3.0)(@vitest/browser@2.0.5)(@vitest/ui@2.0.5)(terser@5.31.6)
|
|
||||||
|
|
||||||
'@testing-library/jest-dom@6.4.5(@jest/globals@29.7.0)(jest@29.7.0)(vitest@2.0.5)':
|
'@testing-library/jest-dom@6.4.5(@jest/globals@29.7.0)(jest@29.7.0)(vitest@2.0.5)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@adobe/css-tools': 4.4.0
|
'@adobe/css-tools': 4.4.0
|
||||||
@ -12495,6 +12578,26 @@ snapshots:
|
|||||||
mkdirp: 3.0.1
|
mkdirp: 3.0.1
|
||||||
path-browserify: 1.0.1
|
path-browserify: 1.0.1
|
||||||
|
|
||||||
|
'@tuyau/client@0.1.2':
|
||||||
|
dependencies:
|
||||||
|
'@poppinss/matchit': 3.1.2
|
||||||
|
ky: 1.6.0
|
||||||
|
object-to-formdata: 4.5.1
|
||||||
|
|
||||||
|
'@tuyau/core@0.1.4(patch_hash=zzabo2h6qjt52qr7ntgx4dwdpa)(@adonisjs/core@6.12.1(@adonisjs/assembler@7.7.0(typescript@5.5.4))(@vinejs/vine@2.1.0))':
|
||||||
|
dependencies:
|
||||||
|
'@adonisjs/core': 6.12.1(@adonisjs/assembler@7.7.0(typescript@5.5.4))(@vinejs/vine@2.1.0)
|
||||||
|
ts-morph: 22.0.0
|
||||||
|
|
||||||
|
'@tuyau/openapi@0.2.0(@tuyau/core@0.1.4(patch_hash=zzabo2h6qjt52qr7ntgx4dwdpa)(@adonisjs/core@6.12.1(@adonisjs/assembler@7.7.0(typescript@5.5.4))(@vinejs/vine@2.1.0)))':
|
||||||
|
dependencies:
|
||||||
|
'@tuyau/core': 0.1.4(patch_hash=zzabo2h6qjt52qr7ntgx4dwdpa)(@adonisjs/core@6.12.1(@adonisjs/assembler@7.7.0(typescript@5.5.4))(@vinejs/vine@2.1.0))
|
||||||
|
defu: 6.1.4
|
||||||
|
json-to-pretty-yaml: 1.2.2
|
||||||
|
openapi-types: 12.1.3
|
||||||
|
|
||||||
|
'@tuyau/utils@0.0.4': {}
|
||||||
|
|
||||||
'@types/aria-query@5.0.4': {}
|
'@types/aria-query@5.0.4': {}
|
||||||
|
|
||||||
'@types/babel__core@7.20.5':
|
'@types/babel__core@7.20.5':
|
||||||
@ -16503,6 +16606,11 @@ snapshots:
|
|||||||
|
|
||||||
json-stringify-safe@5.0.1: {}
|
json-stringify-safe@5.0.1: {}
|
||||||
|
|
||||||
|
json-to-pretty-yaml@1.2.2:
|
||||||
|
dependencies:
|
||||||
|
remedial: 1.0.8
|
||||||
|
remove-trailing-spaces: 1.0.8
|
||||||
|
|
||||||
json5@1.0.2:
|
json5@1.0.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
minimist: 1.2.8
|
minimist: 1.2.8
|
||||||
@ -17132,6 +17240,8 @@ snapshots:
|
|||||||
|
|
||||||
object-keys@1.1.1: {}
|
object-keys@1.1.1: {}
|
||||||
|
|
||||||
|
object-to-formdata@4.5.1: {}
|
||||||
|
|
||||||
object.assign@4.1.5:
|
object.assign@4.1.5:
|
||||||
dependencies:
|
dependencies:
|
||||||
call-bind: 1.0.7
|
call-bind: 1.0.7
|
||||||
@ -18029,6 +18139,10 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
es6-error: 4.1.1
|
es6-error: 4.1.1
|
||||||
|
|
||||||
|
remedial@1.0.8: {}
|
||||||
|
|
||||||
|
remove-trailing-spaces@1.0.8: {}
|
||||||
|
|
||||||
renderkid@3.0.0:
|
renderkid@3.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
css-select: 4.3.0
|
css-select: 4.3.0
|
||||||
@ -18236,7 +18350,7 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@semantic-release/commit-analyzer': 12.0.0(semantic-release@23.1.1(typescript@5.5.4))
|
'@semantic-release/commit-analyzer': 12.0.0(semantic-release@23.1.1(typescript@5.5.4))
|
||||||
'@semantic-release/error': 4.0.0
|
'@semantic-release/error': 4.0.0
|
||||||
'@semantic-release/github': 10.1.5(semantic-release@23.1.1(typescript@5.5.4))
|
'@semantic-release/github': 10.1.6(semantic-release@23.1.1(typescript@5.5.4))
|
||||||
'@semantic-release/npm': 12.0.1(semantic-release@23.1.1(typescript@5.5.4))
|
'@semantic-release/npm': 12.0.1(semantic-release@23.1.1(typescript@5.5.4))
|
||||||
'@semantic-release/release-notes-generator': 13.0.0(semantic-release@23.1.1(typescript@5.5.4))
|
'@semantic-release/release-notes-generator': 13.0.0(semantic-release@23.1.1(typescript@5.5.4))
|
||||||
aggregate-error: 5.0.0
|
aggregate-error: 5.0.0
|
||||||
@ -18626,6 +18740,8 @@ snapshots:
|
|||||||
|
|
||||||
strict-event-emitter@0.5.1: {}
|
strict-event-emitter@0.5.1: {}
|
||||||
|
|
||||||
|
string-argv@0.3.2: {}
|
||||||
|
|
||||||
string-length@4.0.2:
|
string-length@4.0.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
char-regex: 1.0.2
|
char-regex: 1.0.2
|
||||||
@ -18957,8 +19073,6 @@ snapshots:
|
|||||||
|
|
||||||
tinybench@2.9.0: {}
|
tinybench@2.9.0: {}
|
||||||
|
|
||||||
tinyexec@0.1.4: {}
|
|
||||||
|
|
||||||
tinypool@1.0.0: {}
|
tinypool@1.0.0: {}
|
||||||
|
|
||||||
tinyrainbow@1.2.0: {}
|
tinyrainbow@1.2.0: {}
|
||||||
@ -19063,32 +19177,32 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
safe-buffer: 5.2.1
|
safe-buffer: 5.2.1
|
||||||
|
|
||||||
turbo-darwin-64@2.0.13:
|
turbo-darwin-64@2.0.14:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
turbo-darwin-arm64@2.0.13:
|
turbo-darwin-arm64@2.0.14:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
turbo-linux-64@2.0.13:
|
turbo-linux-64@2.0.14:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
turbo-linux-arm64@2.0.13:
|
turbo-linux-arm64@2.0.14:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
turbo-windows-64@2.0.13:
|
turbo-windows-64@2.0.14:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
turbo-windows-arm64@2.0.13:
|
turbo-windows-arm64@2.0.14:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
turbo@2.0.13:
|
turbo@2.0.14:
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
turbo-darwin-64: 2.0.13
|
turbo-darwin-64: 2.0.14
|
||||||
turbo-darwin-arm64: 2.0.13
|
turbo-darwin-arm64: 2.0.14
|
||||||
turbo-linux-64: 2.0.13
|
turbo-linux-64: 2.0.14
|
||||||
turbo-linux-arm64: 2.0.13
|
turbo-linux-arm64: 2.0.14
|
||||||
turbo-windows-64: 2.0.13
|
turbo-windows-64: 2.0.14
|
||||||
turbo-windows-arm64: 2.0.13
|
turbo-windows-arm64: 2.0.14
|
||||||
|
|
||||||
tween-functions@1.2.0: {}
|
tween-functions@1.2.0: {}
|
||||||
|
|
||||||
@ -19236,7 +19350,7 @@ snapshots:
|
|||||||
|
|
||||||
unpipe@1.0.0: {}
|
unpipe@1.0.0: {}
|
||||||
|
|
||||||
unplugin@1.12.1:
|
unplugin@1.12.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
acorn: 8.12.1
|
acorn: 8.12.1
|
||||||
chokidar: 3.6.0
|
chokidar: 3.6.0
|
||||||
@ -19314,7 +19428,7 @@ snapshots:
|
|||||||
debug: 4.3.6
|
debug: 4.3.6
|
||||||
pathe: 1.1.2
|
pathe: 1.1.2
|
||||||
tinyrainbow: 1.2.0
|
tinyrainbow: 1.2.0
|
||||||
vite: 5.4.0(@types/node@22.3.0)(terser@5.31.6)
|
vite: 5.4.1(@types/node@22.3.0)(terser@5.31.6)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@types/node'
|
- '@types/node'
|
||||||
- less
|
- less
|
||||||
@ -19326,7 +19440,7 @@ snapshots:
|
|||||||
- supports-color
|
- supports-color
|
||||||
- terser
|
- terser
|
||||||
|
|
||||||
vite@5.4.0(@types/node@22.3.0)(terser@5.31.6):
|
vite@5.4.1(@types/node@22.3.0)(terser@5.31.6):
|
||||||
dependencies:
|
dependencies:
|
||||||
esbuild: 0.21.5
|
esbuild: 0.21.5
|
||||||
postcss: 8.4.41
|
postcss: 8.4.41
|
||||||
@ -19354,7 +19468,7 @@ snapshots:
|
|||||||
tinybench: 2.9.0
|
tinybench: 2.9.0
|
||||||
tinypool: 1.0.0
|
tinypool: 1.0.0
|
||||||
tinyrainbow: 1.2.0
|
tinyrainbow: 1.2.0
|
||||||
vite: 5.4.0(@types/node@22.3.0)(terser@5.31.6)
|
vite: 5.4.1(@types/node@22.3.0)(terser@5.31.6)
|
||||||
vite-node: 2.0.5(@types/node@22.3.0)(terser@5.31.6)
|
vite-node: 2.0.5(@types/node@22.3.0)(terser@5.31.6)
|
||||||
why-is-node-running: 2.3.0
|
why-is-node-running: 2.3.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
|
@ -39,6 +39,10 @@ catalog:
|
|||||||
"reflect-metadata": "0.2.2"
|
"reflect-metadata": "0.2.2"
|
||||||
"openapi-types": "12.1.3"
|
"openapi-types": "12.1.3"
|
||||||
"pino-pretty": "11.2.2"
|
"pino-pretty": "11.2.2"
|
||||||
|
"@tuyau/core": "0.1.4"
|
||||||
|
"@tuyau/utils": "0.0.4"
|
||||||
|
"@tuyau/client": "0.1.2"
|
||||||
|
"@tuyau/openapi": "0.2.0"
|
||||||
|
|
||||||
# Japa (AdonisJS Testing)
|
# Japa (AdonisJS Testing)
|
||||||
"@japa/api-client": "2.0.3"
|
"@japa/api-client": "2.0.3"
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
"dependsOn": ["^build"],
|
"dependsOn": ["^build"],
|
||||||
"outputs": [
|
"outputs": [
|
||||||
"build/**",
|
"build/**",
|
||||||
|
".adonisjs/**",
|
||||||
"storybook-static/**",
|
"storybook-static/**",
|
||||||
".next/**",
|
".next/**",
|
||||||
"!.next/cache/**"
|
"!.next/cache/**"
|
||||||
@ -18,10 +19,10 @@
|
|||||||
"outputs": ["coverage/**"]
|
"outputs": ["coverage/**"]
|
||||||
},
|
},
|
||||||
"lint:eslint": {
|
"lint:eslint": {
|
||||||
"dependsOn": ["^lint:eslint"]
|
"dependsOn": ["build", "^lint:eslint"]
|
||||||
},
|
},
|
||||||
"lint:typescript": {
|
"lint:typescript": {
|
||||||
"dependsOn": ["^lint:typescript"]
|
"dependsOn": ["build", "^lint:typescript"]
|
||||||
},
|
},
|
||||||
"dev": {
|
"dev": {
|
||||||
"cache": false,
|
"cache": false,
|
||||||
|
Reference in New Issue
Block a user