some more progress

This commit is contained in:
Adam Matthiesen 2024-01-27 12:06:41 -08:00
parent f8a7e33397
commit 684471a54b
22 changed files with 1251 additions and 68 deletions

View File

@ -15,7 +15,8 @@
"api:test": "pnpm --filter astro-ghostcms test",
"api:test:watch": "pnpm --filter astro-ghostcms test:watch",
"api:test:coverage": "pnpm --filter astro-ghostcms test:coverage",
"api:test:ci": "pnpm --filter astro-ghostcms test:ci"
"api:test:ci": "pnpm --filter astro-ghostcms test:ci",
"create:dry": "pnpm --filter create-astro-ghostcms dryrun"
},
"devDependencies": {
"@biomejs/biome": "1.5.3",

View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2024 Adam Matthiesen
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -0,0 +1,13 @@
# `@matthiesenxyz/create-astro-ghostcms`
Utility to quickly get started with our Integration and astro.
```sh
npx @matthiesenxyz/create-astro-ghostcms <template> <project_directory>
```
## Available templates
| Template | Description |
| -------- | ----------------------------------------------------- |
| `basic` | Basic Setup with astro-ghostcms and theme-default |

View File

@ -0,0 +1,15 @@
#!/usr/bin/env node
// biome-ignore lint/suspicious/noRedundantUseStrict: <explanation>
'use strict';
const currentVersion = process.versions.node;
const requiredMajorVersion = parseInt(currentVersion.split('.')[0], 10);
const minimumMajorVersion = 18;
if (requiredMajorVersion < minimumMajorVersion) {
console.error(`Node.js v${currentVersion} is out of date and unsupported!`);
console.error(`Please use Node.js v${minimumMajorVersion} or higher.`);
process.exit(1);
}
import('./src/main.js').then(({ main }) => main());

View File

@ -0,0 +1,9 @@
export interface Context {
dryRun: boolean;
installDeps: boolean;
initGitRepo: boolean;
pkgManager: "npm" | "yarn" | "pnpm" | null;
args: string[];
}
export type Template = "basic";

View File

@ -0,0 +1,71 @@
{
"name": "@matthiesenxyz/create-astro-ghostcms",
"version": "0.0.1",
"description": "Utility to quickly get started with our Integration and astro",
"type": "module",
"main": "./create-astro-ghostcms.mjs",
"bin": {
"create-astro-ghostcms": "./create-astro-ghostcms.mjs"
},
"exports": {
".": "./create-astro-ghostcms.mjs"
},
"scripts": {
"dryrun": "node ./create-astro-ghostcms.mjs --dry",
"test": "echo \"Error: no test specified\" && exit 1"
},
"sideEffects": false,
"author": {
"email": "adam@matthiesen.xyz",
"name": "Adam Matthiesen - MatthiesenXYZ",
"url": "https://matthiesen.xyz"
},
"homepage": "https://astro-ghostcms.xyz/",
"repository": {
"type": "git",
"url": "git+https://github.com/MatthiesenXYZ/astro-ghostcms.git"
},
"bugs": {
"url": "https://github.com/MatthiesenXYZ/astro-ghostcms/issues",
"email": "issues@astro-ghostcms.xyz"
},
"license": "MIT",
"files": [
"src",
"create-astro-ghostcms",
"index.d.ts",
"types.d.ts",
"README.md",
"LICENSE"
],
"dependencies": {
"@clack/prompts": "^0.7.0",
"picocolors": "^1.0.0",
"arg": "^5.0.2",
"execa": "^7.0.0",
"fs-extra": "^11.1.0"
},
"devDependencies": {
"@types/fs-extra": "^11.0.1",
"@types/gunzip-maybe": "^1.4.0",
"@types/node": "^18.14.1",
"@types/tar-fs": "^2.0.1",
"@typescript-eslint/eslint-plugin": "^6.19.0",
"@typescript-eslint/parser": "^6.19.0",
"eslint": "^8.56.0",
"eslint-config-prettier": "^9.1.0",
"eslint-import-resolver-node": "^0.3.7",
"eslint-import-resolver-typescript": "^3.5.3",
"prettier": "^2.8.4",
"typescript": "^5.3.3",
"vitest": "^1.1.0",
"vite": "^5.0.12",
"vite-tsconfig-paths": "^4.2.2"
},
"publishConfig": {
"access": "public"
},
"engines": {
"node": ">=18.14.1"
}
}

View File

@ -0,0 +1,61 @@
import path from "node:path";
import os from "node:os";
import * as prompts from "@clack/prompts";
import color from "picocolors";
import { fileURLToPath } from "node:url";
/**
* @param {string} url
*/
export function getModulePaths(url) {
const pathname = fileURLToPath(url);
const parts = pathname.split("/");
const basename = parts.pop();
const dirname = parts.join(path.sep);
return { pathname, dirname, basename };
}
/**
* @returns {never}
*/
export function exitPrompt() {
prompts.cancel(color.red("Operation Cancelled"));
process.exit(0);
}
/**
* @param {string} str
*/
export function isPathname(str) {
return str.includes(path.sep);
}
/**
* @param {string} pathname
*/
export function normalizePath(pathname) {
if (os.platform() === "win32") {
return path.win32.normalize(pathname);
}
return path.normalize(pathname);
}
/**
* @param {number} ms
*/
export async function wait(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
/**
*
* @param {string} str
* @returns {str is PackageManager}
*/
export function isPackageManager(str) {
return str === "npm" || str === "yarn" || str === "pnpm";
}
/**
* @typedef {import("../../types").PackageManager} PackageManager
*/

View File

@ -0,0 +1,113 @@
import arg from "arg";
import * as prompts from "@clack/prompts";
import { exitPrompt, isPackageManager } from "./lib/utils.js";
import { createBasic } from "./runners/basic.js";
import color from 'picocolors';
export async function main() {
const exit = () => process.exit(0);
process.on("SIGINT", exit);
process.on("SIGTERM", exit);
console.clear();
const argv = process.argv.slice(2).filter((arg) => arg !== "--");
const flags = arg(
{
"--help": Boolean,
"--install": Boolean,
"--git": Boolean,
"--dry": Boolean,
"--pkg-manager": String,
"-h": "--help",
"-i": "--install",
"-g": "--git",
"-p": "--pkg-manager",
},
{ argv, permissive: true }
);
const {
"--help": help,
"--install": installDeps,
"--git": initGitRepo,
"--dry": dryRun,
"--pkg-manager": pkgManager,
} = flags;
// 0. Show help text and bail
if (help) {
console.log(getHelp());
return;
}
// 1. Say hello!
prompts.intro(color.bgMagenta(color.black(` ${color.bold("Astro-GhostCMS Create Utility - By MatthiesenXYZ")} ${color.italic(dryRun ? "[Dry Run] ":" ")}`)))
// 2. Get template to set up
let [template, ...args] = flags._;
if (template && !isValidTemplate(template)) {
prompts.log.warning(`"${template}" isn't a valid template`);
template = null;
}
if (!template) {
const answer = await prompts.select({
message: "Which template would you like to use?",
options: [
{
value: "basic",
label: "Basic - Integration w/ Default Theme"
},
],
initialValue: "basic",
});
if (prompts.isCancel(answer)) exitPrompt();
template = answer;
}
// 2. Construct context to pass to template functions
/** @type {Context} */
const ctx = {
dryRun,
installDeps,
initGitRepo,
pkgManager: isPackageManager(pkgManager) ? pkgManager : null,
args,
};
// 3. Call template functions
switch (template) {
case "basic":
await createBasic(ctx).catch(console.error).then(success);
break;
default:
throw new Error(`Unknown template: ${template}`);
}
// 4. Huzzah!
prompts.outro(color.reset(`Problems? ${color.underline(color.cyan('https://github.com/MatthiesenXYZ/astro-ghostcms/issues'))}`));
}
function success() {
prompts.note("Dont forget to modify your .env file for YOUR ghost install!");
prompts.outro(color.green("Deployment Complete!"));
}
function getHelp() {
return `Need Help? Check the Docs! ${color.underline(color.cyan('https://astro-ghostcms.xyz/docs'))}`;
}
/**
* @param {string|null|undefined} template
* @returns {template is Template}
*/
function isValidTemplate(template) {
return ["basic"].includes(template);
}
/**
* @typedef {import("../types").Template} Template
* @typedef {import("../types").PackageManager} PackageManager
* @typedef {import("../types").Context} Context
*/

View File

@ -0,0 +1,224 @@
import path from "node:path";
import fse from "fs-extra";
import { execa } from "execa";
import * as prompts from "@clack/prompts";
import { exitPrompt, getModulePaths, isPathname,
normalizePath, wait } from "../lib/utils.js";
/** @param {Context} ctx */
export async function createBasic(ctx) {
let { args, dryRun, initGitRepo, installDeps } = ctx;
const spinner = prompts.spinner();
let cwd = process.cwd();
// 1. Set up project directory
const project = await getProjectDetails(args[0], { cwd });
if (dryRun) {
await wait(1);
} else {
await fse.ensureDir(project.pathname);
}
// 2. Create the damned thing
cwd = project.pathname;
const relativePath = path.relative(process.cwd(), project.pathname);
spinner.start(`Creating a new Astro-GhostCMS project in ${relativePath}`);
if (dryRun) {
await wait(2000);
} else {
await createApp(project.name, project.pathname, {
onError(error) {
spinner.stop("Failed to create new project");
prompts.cancel();
console.error(error);
process.exit(1);
},
});
}
spinner.stop(`New Astro-GhostCMS project '${project.name}' created 🚀`);
const fCheck = await prompts.group({
initGitRepo: () => prompts.confirm({
message: "Initialize a Git repository?",
initialValue: false,
}),
installDeps: () => prompts.confirm({
message: "Install dependencies? (Recommended)",
initialValue: false,
})
});
initGitRepo = fCheck.initGitRepo ?? initGitRepo;
// 3. Initialize git repo
if (initGitRepo) {
if (dryRun) {
await wait(1);
} else {
await exec("git", ["init"], { cwd });
}
prompts.log.success("Initialized Git repository");
} else {
prompts.log.info("Skipped Git initialization");
}
// 4. Install dependencies
installDeps = fCheck.installDeps ?? installDeps;
const pm = ctx.pkgManager ?? "pnpm";
if (installDeps) {
spinner.start(`Installing dependencies with ${pm}`);
if (dryRun) {
await wait(1);
} else {
await installDependencies(pm, { cwd });
}
spinner.stop(`Dependencies installed with ${pm}`);
} else {
prompts.log.info("Skipped dependency installation");
}
}
/**
*
* @param {string} projectName
* @param {string} projectPathname
* @param {{ onError: (err: unknown) => any }} opts
*/
async function createApp(projectName, projectPathname, { onError }) {
const { dirname } = getModulePaths(import.meta.url);
const templatesDir = path.resolve(dirname, "src", "templates");
const sharedTemplateDir = path.join(templatesDir, "_shared");
const basicTemplateDir = path.join(templatesDir, "basic");
await fse.ensureDir(projectPathname);
// TODO: Detect if project directory is empty, otherwise we
// can't create a new project here.
await fse.copy(basicTemplateDir, projectPathname);
// Copy misc files from shared
const filesToCopy = [
{
src: path.join(sharedTemplateDir, ".env"),
dest: path.join(projectPathname, ".env"),
},
];
await Promise.all(
filesToCopy.map(async ({ src, dest }) => await fse.copy(src, dest))
);
/** @type {Array<{ pathname: string; getUpdates: (contents: string) => string }>} */
const filesToUpdate = [
{
pathname: path.join(projectPathname, "package.json"),
getUpdates: updateProjectName,
},
];
await Promise.all(
filesToUpdate.map(async ({ pathname, getUpdates }) => {
const contents = await fse.readFile(pathname, "utf-8");
const updatedContents = getUpdates(contents);
await fse.writeFile(pathname, updatedContents, "utf-8");
})
);
/** @param {string} contents */
function updateProjectName(contents) {
return contents.replace(/{{PROJECT_NAME}}/g, projectName);
}
}
/**
* @param {string|undefined} projectNameInput
* @param {{ cwd: string }} opts
*/
async function getProjectDetails(projectNameInput, opts) {
let projectName = projectNameInput;
if (!projectName) {
const defaultProjectName = "my-astro-ghost";
let answer = await prompts.text({
message: "Where would you like to create your project?",
placeholder: `.${path.sep}${defaultProjectName}`,
});
if (prompts.isCancel(answer)) exitPrompt();
answer = answer?.trim();
projectName = answer || defaultProjectName;
}
/** @type {string} */
let pathname;
if (isPathname(projectName)) {
const dir = path.resolve(opts.cwd, path.dirname(normalizePath(projectName)));
projectName = toValidProjectName(path.basename(projectName));
pathname = path.join(dir, projectName);
} else {
projectName = toValidProjectName(projectName);
pathname = path.resolve(opts.cwd, projectName);
}
return {
name: projectName,
pathname,
};
}
/**
* @param {string} command
* @param {readonly string[]} args
* @param {{ cwd: string }} options
* @returns {Promise<{ code: number | null; signal: NodeJS.Signals | null }>}
*/
async function exec(command, args, options) {
const installExec = execa(command, ["init"], { ...options, stdio: "ignore" });
return new Promise((resolve, reject) => {
installExec.on("error", (error) => reject(error));
installExec.on("close", (code, signal) => resolve({ code, signal }));
});
}
/**
* @param {"npm" | "yarn" | "pnpm"} packageManager
* @param {{ cwd: string }} opts
* @returns
*/
async function installDependencies(packageManager, { cwd }) {
const installExec = execa(packageManager, ["install"], { cwd });
return new Promise((resolve, reject) => {
installExec.on("error", (error) => reject(error));
installExec.on("close", () => resolve());
});
}
/**
* @param {string} projectName
*/
function toValidProjectName(projectName) {
if (isValidProjectName(projectName)) {
return projectName;
}
return projectName
.trim()
.toLowerCase()
.replace(/\s+/g, "-")
.replace(/^[._]/, "")
.replace(/[^a-z\d\-~]+/g, "-")
.replace(/^-+/, "")
.replace(/-+$/, "");
}
/**
* @param {string} projectName
*/
function isValidProjectName(projectName) {
return /^(?:@[a-z\d\-*~][a-z\d\-*._~]*\/)?[a-z\d\-~][a-z\d\-._~]*$/.test(
projectName
);
}
/**
* @typedef {import("../../types.js").Template} Template
* @typedef {import("../../types.js").PackageManager} PackageManager
* @typedef {import("../../types.js").Context} Context
* @typedef {import("../../types.js").Serializable} Serializable
*/

View File

@ -0,0 +1,2 @@
CONTENT_API_KEY=a33da3965a3a9fb2c6b3f63b48
CONTENT_API_URL=https://ghostdemo.matthiesen.xyz

View File

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

View File

@ -0,0 +1,4 @@
{
"recommendations": ["astro-build.astro-vscode"],
"unwantedRecommendations": []
}

View File

@ -0,0 +1,11 @@
{
"version": "0.2.0",
"configurations": [
{
"command": "./node_modules/.bin/astro dev",
"name": "Development server",
"request": "launch",
"type": "node-terminal"
}
]
}

View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2024 Matthiesen XYZ
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -0,0 +1,10 @@
import { defineConfig } from 'astro/config';
import GhostCMS from "@matthiesenxyz/astro-ghostcms";
// https://astro.build/config
export default defineConfig({
site: "https://example.com/",
integrations: [GhostCMS({
ghostURL: 'https://ghostdemo.matthiesen.xyz'
})]
});

View File

@ -0,0 +1,22 @@
{
"name": "{{PROJECT_NAME}}",
"type": "module",
"version": "0.0.1",
"scripts": {
"dev": "astro dev",
"start": "astro dev",
"build": "astro check && astro build",
"preview": "astro preview",
"astro": "astro"
},
"dependencies": {
"astro": "^4.2.4",
"@matthiesenxyz/astro-ghostcms": "^3.1.5",
"@matthiesenxyz/astro-ghostcms-theme-default": "^0.1.5"
},
"devDependencies": {
"@astrojs/check": "^0.4.1",
"typescript": "^5.3.3",
"sass": "^1.70.0"
}
}

View File

@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 128 128">
<path d="M50.4 78.5a75.1 75.1 0 0 0-28.5 6.9l24.2-65.7c.7-2 1.9-3.2 3.4-3.2h29c1.5 0 2.7 1.2 3.4 3.2l24.2 65.7s-11.6-7-28.5-7L67 45.5c-.4-1.7-1.6-2.8-2.9-2.8-1.3 0-2.5 1.1-2.9 2.7L50.4 78.5Zm-1.1 28.2Zm-4.2-20.2c-2 6.6-.6 15.8 4.2 20.2a17.5 17.5 0 0 1 .2-.7 5.5 5.5 0 0 1 5.7-4.5c2.8.1 4.3 1.5 4.7 4.7.2 1.1.2 2.3.2 3.5v.4c0 2.7.7 5.2 2.2 7.4a13 13 0 0 0 5.7 4.9v-.3l-.2-.3c-1.8-5.6-.5-9.5 4.4-12.8l1.5-1a73 73 0 0 0 3.2-2.2 16 16 0 0 0 6.8-11.4c.3-2 .1-4-.6-6l-.8.6-1.6 1a37 37 0 0 1-22.4 2.7c-5-.7-9.7-2-13.2-6.2Z" />
<style>
path { fill: #000; }
@media (prefers-color-scheme: dark) {
path { fill: #FFF; }
}
</style>
</svg>

After

Width:  |  Height:  |  Size: 749 B

View File

@ -0,0 +1,9 @@
/// <reference types="astro/client" />
interface ImportMetaEnv {
readonly CONTENT_API_KEY: string
readonly CONTENT_API_URL: string
}
interface ImportMeta {
readonly env: ImportMetaEnv;
}

View File

@ -0,0 +1,3 @@
{
"extends": "astro/tsconfigs/strict"
}

View File

@ -0,0 +1,26 @@
{
"$schema": "https://json.schemastore.org/tsconfig",
"display": "Default",
"include": ["."],
"exclude": ["node_modules", "templates/react"],
"compilerOptions": {
"allowJs": true,
"allowSyntheticDefaultImports": true,
"checkJs": true,
"lib": ["ES2022", "DOM", "DOM.Iterable"],
"module": "ESNext",
"target": "ES2022",
"noEmit": true,
"declaration": false,
"downlevelIteration": true,
"forceConsistentCasingInFileNames": true,
"esModuleInterop": true,
"inlineSources": false,
"isolatedModules": true,
"moduleResolution": "node",
"skipLibCheck": true,
"strict": true,
// Non-null assertions are a PITA when checking JS files
"strictNullChecks": false
}
}

View File

@ -0,0 +1,3 @@
export * from "./index";
export type PackageManager = "npm" | "yarn" | "pnpm";
export type Serializable = string | object | number | boolean | bigint;

View File

@ -16,7 +16,7 @@ importers:
version: 2.27.1
vitest:
specifier: ^1.1.0
version: 1.2.1(@types/node@20.11.6)
version: 1.2.1(@types/node@18.19.10)
vitest-fetch-mock:
specifier: ^0.2.2
version: 0.2.2(vitest@1.2.1)
@ -24,14 +24,14 @@ importers:
demo:
dependencies:
'@matthiesenxyz/astro-ghostcms':
specifier: 3.1.4
specifier: 3.1.5
version: link:../packages/astro-ghostcms
'@matthiesenxyz/astro-ghostcms-theme-default':
specifier: 0.1.3
version: 0.1.3(astro@4.2.4)(typescript@5.3.3)
specifier: 0.1.5
version: link:../packages/astro-ghostcms-theme-default
astro:
specifier: ^4.2.4
version: 4.2.4(@types/node@20.11.6)(typescript@5.3.3)
version: 4.2.4(typescript@5.3.3)
devDependencies:
'@astrojs/check':
specifier: ^0.4.1
@ -116,7 +116,7 @@ importers:
packages/astro-ghostcms-theme-default:
dependencies:
'@matthiesenxyz/astro-ghostcms':
specifier: ^3.1.3
specifier: ^3.1.5
version: link:../astro-ghostcms
astro:
specifier: ^4.2.1
@ -124,17 +124,81 @@ importers:
astro-font:
specifier: ^0.0.77
version: 0.0.77
sass:
specifier: ^1.70.0
version: 1.70.0
devDependencies:
'@astrojs/check':
specifier: ^0.4.1
version: 0.4.1(prettier-plugin-astro@0.13.0)(prettier@3.2.4)(typescript@5.3.3)
sass:
specifier: ^1.70.0
version: 1.70.0
typescript:
specifier: ^5.3.3
version: 5.3.3
packages/create-astro-ghostcms:
dependencies:
'@clack/prompts':
specifier: ^0.7.0
version: 0.7.0
arg:
specifier: ^5.0.2
version: 5.0.2
execa:
specifier: ^7.0.0
version: 7.2.0
fs-extra:
specifier: ^11.1.0
version: 11.2.0
picocolors:
specifier: ^1.0.0
version: 1.0.0
devDependencies:
'@types/fs-extra':
specifier: ^11.0.1
version: 11.0.4
'@types/gunzip-maybe':
specifier: ^1.4.0
version: 1.4.2
'@types/node':
specifier: ^18.14.1
version: 18.19.10
'@types/tar-fs':
specifier: ^2.0.1
version: 2.0.4
'@typescript-eslint/eslint-plugin':
specifier: ^6.19.0
version: 6.19.1(@typescript-eslint/parser@6.19.1)(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/parser':
specifier: ^6.19.0
version: 6.19.1(eslint@8.56.0)(typescript@5.3.3)
eslint:
specifier: ^8.56.0
version: 8.56.0
eslint-config-prettier:
specifier: ^9.1.0
version: 9.1.0(eslint@8.56.0)
eslint-import-resolver-node:
specifier: ^0.3.7
version: 0.3.9
eslint-import-resolver-typescript:
specifier: ^3.5.3
version: 3.6.1(@typescript-eslint/parser@6.19.1)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0)
prettier:
specifier: ^2.8.4
version: 2.8.8
typescript:
specifier: ^5.3.3
version: 5.3.3
vite:
specifier: ^5.0.12
version: 5.0.12(@types/node@18.19.10)
vite-tsconfig-paths:
specifier: ^4.2.2
version: 4.3.1(typescript@5.3.3)(vite@5.0.12)
vitest:
specifier: ^1.1.0
version: 1.2.1(@types/node@18.19.10)
packages/tsconfig: {}
playground:
@ -147,7 +211,7 @@ importers:
version: link:../packages/astro-ghostcms-theme-default
astro:
specifier: ^4.2.4
version: 4.2.4(@types/node@20.11.6)(typescript@5.3.3)
version: 4.2.4(typescript@5.3.3)
devDependencies:
'@astrojs/check':
specifier: ^0.4.1
@ -868,6 +932,23 @@ packages:
prettier: 2.8.8
dev: true
/@clack/core@0.3.3:
resolution: {integrity: sha512-5ZGyb75BUBjlll6eOa1m/IZBxwk91dooBWhPSL67sWcLS0zt9SnswRL0l26TVdBhb0wnWORRxUn//uH6n4z7+A==}
dependencies:
picocolors: 1.0.0
sisteransi: 1.0.5
dev: false
/@clack/prompts@0.7.0:
resolution: {integrity: sha512-0MhX9/B4iL6Re04jPrttDm+BsP8y6mS7byuv0BvXgdXhbV5PdlsHt55dvNsuBCPZ7xq1oTAOOuotR9NFbQyMSA==}
dependencies:
'@clack/core': 0.3.3
picocolors: 1.0.0
sisteransi: 1.0.5
dev: false
bundledDependencies:
- is-unicode-supported
/@ctrl/tinycolor@3.6.1:
resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==}
engines: {node: '>=10'}
@ -1411,53 +1492,6 @@ packages:
read-yaml-file: 1.1.0
dev: true
/@matthiesenxyz/astro-ghostcms-theme-default@0.1.3(astro@4.2.4)(typescript@5.3.3):
resolution: {integrity: sha512-ZWo5L5ZSYTWYcQjauDEQBiyH2nqnmoBs8F/cCttRzE6ms5LrWQ65nMuWQQomp5j/kMBBn2upVIi6bEUgoCxt6w==}
peerDependencies:
astro: ^4.2.1
dependencies:
'@matthiesenxyz/astro-ghostcms': 3.1.4(astro@4.2.4)(typescript@5.3.3)
astro: 4.2.4(@types/node@20.11.6)(typescript@5.3.3)
astro-font: 0.0.77
transitivePeerDependencies:
- '@types/node'
- less
- lightningcss
- sass
- stylus
- sugarss
- supports-color
- terser
- typescript
dev: false
/@matthiesenxyz/astro-ghostcms@3.1.4(astro@4.2.4)(typescript@5.3.3):
resolution: {integrity: sha512-8jXKKG8IhL1M97+p4rjh8gW+6WM0uzQQEA6SARn68HtB3w7rek3rzfnbf/OsXrP9H8LHgYqAUFvZ1AYMWYVnJw==}
peerDependencies:
astro: ^4.2.3
dependencies:
'@astrojs/rss': 4.0.3
'@astrojs/sitemap': 3.0.5
'@matthiesenxyz/astro-ghostcms-theme-default': 0.1.3(astro@4.2.4)(typescript@5.3.3)
'@ts-ghost/core-api': 5.1.2
astro: 4.2.4(@types/node@20.11.6)(typescript@5.3.3)
astro-robots-txt: 1.0.0
vite: 5.0.12(@types/node@20.11.6)
vite-tsconfig-paths: 4.3.1(typescript@5.3.3)(vite@5.0.12)
zod: 3.22.4
zod-validation-error: 3.0.0(zod@3.22.4)
transitivePeerDependencies:
- '@types/node'
- less
- lightningcss
- sass
- stylus
- sugarss
- supports-color
- terser
- typescript
dev: false
/@mdx-js/mdx@3.0.0:
resolution: {integrity: sha512-Icm0TBKBLYqroYbNW3BPnzMGn+7mwpQOK310aZ7+fkCtiU3aqv2cdcX+nd0Ydo3wI5Rx8bX2Z2QmGb/XcAClCw==}
dependencies:
@ -1707,6 +1741,19 @@ packages:
/@types/estree@1.0.5:
resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
/@types/fs-extra@11.0.4:
resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==}
dependencies:
'@types/jsonfile': 6.1.4
'@types/node': 18.19.10
dev: true
/@types/gunzip-maybe@1.4.2:
resolution: {integrity: sha512-2uqXZg1jTCKE1Pjbab8qb74+f2+i9h/jz8rQ+jRR+zaNJF75zWwrpbX8/TjF4m56m3KFOg9umHdCJ074KwiVxg==}
dependencies:
'@types/node': 18.19.10
dev: true
/@types/hast@2.3.9:
resolution: {integrity: sha512-pTHyNlaMD/oKJmS+ZZUyFUcsZeBZpC0lmGquw98CqRVNgAdJZJeD7GoeLiT6Xbx5rU9VCjSt0RwEvDgzh4obFw==}
dependencies:
@ -1723,6 +1770,16 @@ packages:
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
dev: true
/@types/json5@0.0.29:
resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
dev: true
/@types/jsonfile@6.1.4:
resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==}
dependencies:
'@types/node': 18.19.10
dev: true
/@types/mdast@4.0.3:
resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==}
dependencies:
@ -1755,6 +1812,11 @@ packages:
resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==}
dev: false
/@types/node@18.19.10:
resolution: {integrity: sha512-IZD8kAM02AW1HRDTPOlz3npFava678pr8Ie9Vp8uRhBROXAv8MXT2pCnGZZAKYdromsNQLHQcfWQ6EOatVLtqA==}
dependencies:
undici-types: 5.26.5
/@types/node@20.11.6:
resolution: {integrity: sha512-+EOokTnksGVgip2PbYbr3xnR7kZigh4LbybAfBAw5BpnQ+FqBYUsvCEjYd70IXKlbohQ64mzEYmMtlWUY8q//Q==}
dependencies:
@ -1778,6 +1840,19 @@ packages:
resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==}
dev: true
/@types/tar-fs@2.0.4:
resolution: {integrity: sha512-ipPec0CjTmVDWE+QKr9cTmIIoTl7dFG/yARCM5MqK8i6CNLIG1P8x4kwDsOQY1ChZOZjH0wO9nvfgBvWl4R3kA==}
dependencies:
'@types/node': 18.19.10
'@types/tar-stream': 3.1.3
dev: true
/@types/tar-stream@3.1.3:
resolution: {integrity: sha512-Zbnx4wpkWBMBSu5CytMbrT5ZpMiF55qgM+EpHzR4yIDu7mv52cej8hTkOc6K+LzpkOAbxwn/m7j3iO+/l42YkQ==}
dependencies:
'@types/node': 18.19.10
dev: true
/@types/unist@2.0.10:
resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==}
dev: false
@ -2146,6 +2221,17 @@ packages:
is-array-buffer: 3.0.2
dev: true
/array-includes@3.1.7:
resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==}
engines: {node: '>= 0.4'}
dependencies:
call-bind: 1.0.5
define-properties: 1.2.1
es-abstract: 1.22.3
get-intrinsic: 1.2.2
is-string: 1.0.7
dev: true
/array-iterate@2.0.1:
resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==}
dev: false
@ -2155,6 +2241,17 @@ packages:
engines: {node: '>=8'}
dev: true
/array.prototype.findlastindex@1.2.3:
resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==}
engines: {node: '>= 0.4'}
dependencies:
call-bind: 1.0.5
define-properties: 1.2.1
es-abstract: 1.22.3
es-shim-unscopables: 1.0.2
get-intrinsic: 1.2.2
dev: true
/array.prototype.flat@1.3.2:
resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==}
engines: {node: '>= 0.4'}
@ -2165,6 +2262,16 @@ packages:
es-shim-unscopables: 1.0.2
dev: true
/array.prototype.flatmap@1.3.2:
resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==}
engines: {node: '>= 0.4'}
dependencies:
call-bind: 1.0.5
define-properties: 1.2.1
es-abstract: 1.22.3
es-shim-unscopables: 1.0.2
dev: true
/arraybuffer.prototype.slice@1.0.2:
resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==}
engines: {node: '>= 0.4'}
@ -2475,6 +2582,88 @@ packages:
- typescript
dev: false
/astro@4.2.4(typescript@5.3.3):
resolution: {integrity: sha512-z1f52lXkHf71M5HSLKrd5G1PH5/Zfq4kMp0iUT7Na5VHcPDma/NYFPFPewDxqV6UPmyxupj3xuooFaN3j8zaow==}
engines: {node: '>=18.14.1', npm: '>=6.14.0'}
hasBin: true
dependencies:
'@astrojs/compiler': 2.5.0
'@astrojs/internal-helpers': 0.2.1
'@astrojs/markdown-remark': 4.2.0
'@astrojs/telemetry': 3.0.4
'@babel/core': 7.23.7
'@babel/generator': 7.23.6
'@babel/parser': 7.23.6
'@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.7)
'@babel/traverse': 7.23.7
'@babel/types': 7.23.6
'@types/babel__core': 7.20.5
acorn: 8.11.3
aria-query: 5.3.0
axobject-query: 4.0.0
boxen: 7.1.1
chokidar: 3.5.3
ci-info: 4.0.0
clsx: 2.1.0
common-ancestor-path: 1.0.1
cookie: 0.6.0
debug: 4.3.4
deterministic-object-hash: 2.0.2
devalue: 4.3.2
diff: 5.1.0
dlv: 1.1.3
dset: 3.1.3
es-module-lexer: 1.4.1
esbuild: 0.19.12
estree-walker: 3.0.3
execa: 8.0.1
fast-glob: 3.3.2
flattie: 1.1.0
github-slugger: 2.0.0
gray-matter: 4.0.3
html-escaper: 3.0.3
http-cache-semantics: 4.1.1
js-yaml: 4.1.0
kleur: 4.1.5
magic-string: 0.30.5
mdast-util-to-hast: 13.0.2
mime: 3.0.0
ora: 7.0.1
p-limit: 5.0.0
p-queue: 8.0.1
path-to-regexp: 6.2.1
preferred-pm: 3.1.2
probe-image-size: 7.2.3
prompts: 2.4.2
rehype: 13.0.1
resolve: 1.22.8
semver: 7.5.4
server-destroy: 1.0.1
shikiji: 0.9.19
string-width: 7.1.0
strip-ansi: 7.1.0
tsconfck: 3.0.1(typescript@5.3.3)
unist-util-visit: 5.0.0
vfile: 6.0.1
vite: 5.0.12(@types/node@18.19.10)
vitefu: 0.2.5(vite@5.0.12)
which-pm: 2.1.1
yargs-parser: 21.1.1
zod: 3.22.4
optionalDependencies:
sharp: 0.32.6
transitivePeerDependencies:
- '@types/node'
- less
- lightningcss
- sass
- stylus
- sugarss
- supports-color
- terser
- typescript
dev: false
/astrojs-compiler-sync@0.3.5(@astrojs/compiler@2.5.0):
resolution: {integrity: sha512-y420rhIIJ2HHDkYeqKArBHSdJNIIGMztLH90KGIX3zjcJyt/cr9Z2wYA8CP5J1w6KE7xqMh0DAkhfjhNDpQb2Q==}
engines: {node: ^14.18.0 || >=16.0.0}
@ -2941,7 +3130,6 @@ packages:
optional: true
dependencies:
ms: 2.1.3
dev: false
/debug@4.3.4:
resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
@ -3083,6 +3271,13 @@ packages:
resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
dev: false
/doctrine@2.1.0:
resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
engines: {node: '>=0.10.0'}
dependencies:
esutils: 2.0.3
dev: true
/doctrine@3.0.0:
resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
engines: {node: '>=6.0.0'}
@ -3128,6 +3323,14 @@ packages:
dev: false
optional: true
/enhanced-resolve@5.15.0:
resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==}
engines: {node: '>=10.13.0'}
dependencies:
graceful-fs: 4.2.11
tapable: 2.2.1
dev: true
/enquirer@2.4.1:
resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==}
engines: {node: '>=8.6'}
@ -3286,6 +3489,69 @@ packages:
eslint: 8.56.0
dev: true
/eslint-import-resolver-node@0.3.9:
resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==}
dependencies:
debug: 3.2.7
is-core-module: 2.13.1
resolve: 1.22.8
transitivePeerDependencies:
- supports-color
dev: true
/eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.19.1)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0):
resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==}
engines: {node: ^14.18.0 || >=16.0.0}
peerDependencies:
eslint: '*'
eslint-plugin-import: '*'
dependencies:
debug: 4.3.4
enhanced-resolve: 5.15.0
eslint: 8.56.0
eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.19.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0)
eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.19.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0)
fast-glob: 3.3.2
get-tsconfig: 4.7.2
is-core-module: 2.13.1
is-glob: 4.0.3
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-node
- eslint-import-resolver-webpack
- supports-color
dev: true
/eslint-module-utils@2.8.0(@typescript-eslint/parser@6.19.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0):
resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==}
engines: {node: '>=4'}
peerDependencies:
'@typescript-eslint/parser': '*'
eslint: '*'
eslint-import-resolver-node: '*'
eslint-import-resolver-typescript: '*'
eslint-import-resolver-webpack: '*'
peerDependenciesMeta:
'@typescript-eslint/parser':
optional: true
eslint:
optional: true
eslint-import-resolver-node:
optional: true
eslint-import-resolver-typescript:
optional: true
eslint-import-resolver-webpack:
optional: true
dependencies:
'@typescript-eslint/parser': 6.19.1(eslint@8.56.0)(typescript@5.3.3)
debug: 3.2.7
eslint: 8.56.0
eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.19.1)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0)
transitivePeerDependencies:
- supports-color
dev: true
/eslint-plugin-astro@0.31.3(eslint@8.56.0):
resolution: {integrity: sha512-dxNT4cusvLiWFT0ebTd7HP9GixZbua7QYARD1ilqhJEANCSJA7RIas57vnD1PHNDCdYyTit7JU4NDPLWkcG2HA==}
engines: {node: ^14.18.0 || >=16.0.0}
@ -3304,6 +3570,41 @@ packages:
- supports-color
dev: true
/eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.19.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0):
resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==}
engines: {node: '>=4'}
peerDependencies:
'@typescript-eslint/parser': '*'
eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8
peerDependenciesMeta:
'@typescript-eslint/parser':
optional: true
dependencies:
'@typescript-eslint/parser': 6.19.1(eslint@8.56.0)(typescript@5.3.3)
array-includes: 3.1.7
array.prototype.findlastindex: 1.2.3
array.prototype.flat: 1.3.2
array.prototype.flatmap: 1.3.2
debug: 3.2.7
doctrine: 2.1.0
eslint: 8.56.0
eslint-import-resolver-node: 0.3.9
eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.19.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0)
hasown: 2.0.0
is-core-module: 2.13.1
is-glob: 4.0.3
minimatch: 3.1.2
object.fromentries: 2.0.7
object.groupby: 1.0.1
object.values: 1.1.7
semver: 6.3.1
tsconfig-paths: 3.15.0
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
- supports-color
dev: true
/eslint-scope@7.2.2:
resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@ -3445,6 +3746,21 @@ packages:
resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
dev: false
/execa@7.2.0:
resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==}
engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0}
dependencies:
cross-spawn: 7.0.3
get-stream: 6.0.1
human-signals: 4.3.1
is-stream: 3.0.0
merge-stream: 2.0.0
npm-run-path: 5.2.0
onetime: 6.0.0
signal-exit: 3.0.7
strip-final-newline: 3.0.0
dev: false
/execa@8.0.1:
resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
engines: {node: '>=16.17'}
@ -3607,6 +3923,15 @@ packages:
dev: false
optional: true
/fs-extra@11.2.0:
resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==}
engines: {node: '>=14.14'}
dependencies:
graceful-fs: 4.2.11
jsonfile: 6.1.0
universalify: 2.0.1
dev: false
/fs-extra@7.0.1:
resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==}
engines: {node: '>=6 <7 || >=8'}
@ -3680,6 +4005,11 @@ packages:
hasown: 2.0.0
dev: true
/get-stream@6.0.1:
resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
engines: {node: '>=10'}
dev: false
/get-stream@8.0.1:
resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==}
engines: {node: '>=16'}
@ -3692,6 +4022,12 @@ packages:
get-intrinsic: 1.2.2
dev: true
/get-tsconfig@4.7.2:
resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==}
dependencies:
resolve-pkg-maps: 1.0.0
dev: true
/github-from-package@0.0.0:
resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==}
requiresBuild: true
@ -3759,7 +4095,6 @@ packages:
/globrex@0.1.2:
resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==}
dev: false
/gopd@1.0.1:
resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
@ -4105,6 +4440,11 @@ packages:
resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==}
dev: true
/human-signals@4.3.1:
resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==}
engines: {node: '>=14.18.0'}
dev: false
/human-signals@5.0.0:
resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
engines: {node: '>=16.17.0'}
@ -4126,6 +4466,7 @@ packages:
/immutable@4.3.4:
resolution: {integrity: sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==}
dev: false
/import-fresh@3.3.0:
resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
@ -4453,6 +4794,13 @@ packages:
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
dev: true
/json5@1.0.2:
resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
hasBin: true
dependencies:
minimist: 1.2.8
dev: true
/json5@2.2.3:
resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
engines: {node: '>=6'}
@ -4472,6 +4820,14 @@ packages:
graceful-fs: 4.2.11
dev: true
/jsonfile@6.1.0:
resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
dependencies:
universalify: 2.0.1
optionalDependencies:
graceful-fs: 4.2.11
dev: false
/keyv@4.5.4:
resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
dependencies:
@ -5247,8 +5603,6 @@ packages:
/minimist@1.2.8:
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
requiresBuild: true
dev: false
optional: true
/mixme@0.5.10:
resolution: {integrity: sha512-5H76ANWinB1H3twpJ6JY8uvAtpmFvHNArpilJAjXRKXSDDLPIMoZArw5SH0q9z+lLs8IrMw7Q2VWpWimFKFT1Q==}
@ -5279,7 +5633,6 @@ packages:
/ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
dev: false
/muggle-string@0.3.1:
resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==}
@ -5396,6 +5749,33 @@ packages:
object-keys: 1.1.1
dev: true
/object.fromentries@2.0.7:
resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==}
engines: {node: '>= 0.4'}
dependencies:
call-bind: 1.0.5
define-properties: 1.2.1
es-abstract: 1.22.3
dev: true
/object.groupby@1.0.1:
resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==}
dependencies:
call-bind: 1.0.5
define-properties: 1.2.1
es-abstract: 1.22.3
get-intrinsic: 1.2.2
dev: true
/object.values@1.1.7:
resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==}
engines: {node: '>= 0.4'}
dependencies:
call-bind: 1.0.5
define-properties: 1.2.1
es-abstract: 1.22.3
dev: true
/once@1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
dependencies:
@ -6002,6 +6382,10 @@ packages:
engines: {node: '>=8'}
dev: true
/resolve-pkg-maps@1.0.0:
resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
dev: true
/resolve@1.22.8:
resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
hasBin: true
@ -6133,6 +6517,7 @@ packages:
chokidar: 3.5.3
immutable: 4.3.4
source-map-js: 1.0.2
dev: false
/sax@1.3.0:
resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==}
@ -6154,7 +6539,6 @@ packages:
/semver@6.3.1:
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
hasBin: true
dev: false
/semver@7.5.4:
resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==}
@ -6603,6 +6987,11 @@ packages:
tslib: 2.6.2
dev: true
/tapable@2.2.1:
resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
engines: {node: '>=6'}
dev: true
/tar-fs@2.1.1:
resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==}
requiresBuild: true
@ -6725,7 +7114,15 @@ packages:
optional: true
dependencies:
typescript: 5.3.3
dev: false
/tsconfig-paths@3.15.0:
resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==}
dependencies:
'@types/json5': 0.0.29
json5: 1.0.2
minimist: 1.2.8
strip-bom: 3.0.0
dev: true
/tslib@2.6.2:
resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
@ -6989,6 +7386,11 @@ packages:
engines: {node: '>= 4.0.0'}
dev: true
/universalify@2.0.1:
resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
engines: {node: '>= 10.0.0'}
dev: false
/update-browserslist-db@1.0.13(browserslist@4.22.2):
resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==}
hasBin: true
@ -7068,6 +7470,27 @@ packages:
vfile-message: 4.0.2
dev: false
/vite-node@1.2.1(@types/node@18.19.10):
resolution: {integrity: sha512-fNzHmQUSOY+y30naohBvSW7pPn/xn3Ib/uqm+5wAJQJiqQsU0NBR78XdRJb04l4bOFKjpTWld0XAfkKlrDbySg==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
dependencies:
cac: 6.7.14
debug: 4.3.4
pathe: 1.1.2
picocolors: 1.0.0
vite: 5.0.12(@types/node@18.19.10)
transitivePeerDependencies:
- '@types/node'
- less
- lightningcss
- sass
- stylus
- sugarss
- supports-color
- terser
dev: true
/vite-node@1.2.1(@types/node@20.11.6):
resolution: {integrity: sha512-fNzHmQUSOY+y30naohBvSW7pPn/xn3Ib/uqm+5wAJQJiqQsU0NBR78XdRJb04l4bOFKjpTWld0XAfkKlrDbySg==}
engines: {node: ^18.0.0 || >=20.0.0}
@ -7104,7 +7527,41 @@ packages:
transitivePeerDependencies:
- supports-color
- typescript
dev: false
/vite@5.0.12(@types/node@18.19.10):
resolution: {integrity: sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
peerDependencies:
'@types/node': ^18.0.0 || >=20.0.0
less: '*'
lightningcss: ^1.21.0
sass: '*'
stylus: '*'
sugarss: '*'
terser: ^5.4.0
peerDependenciesMeta:
'@types/node':
optional: true
less:
optional: true
lightningcss:
optional: true
sass:
optional: true
stylus:
optional: true
sugarss:
optional: true
terser:
optional: true
dependencies:
'@types/node': 18.19.10
esbuild: 0.19.12
postcss: 8.4.33
rollup: 4.9.6
optionalDependencies:
fsevents: 2.3.3
/vite@5.0.12(@types/node@20.11.6):
resolution: {integrity: sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==}
@ -7185,7 +7642,7 @@ packages:
vite:
optional: true
dependencies:
vite: 5.0.12(sass@1.70.0)
vite: 5.0.12(@types/node@18.19.10)
dev: false
/vitest-fetch-mock@0.2.2(vitest@1.2.1):
@ -7195,11 +7652,68 @@ packages:
vitest: '>=0.16.0'
dependencies:
cross-fetch: 3.1.8
vitest: 1.2.1(@types/node@20.11.6)
vitest: 1.2.1(@types/node@18.19.10)
transitivePeerDependencies:
- encoding
dev: true
/vitest@1.2.1(@types/node@18.19.10):
resolution: {integrity: sha512-TRph8N8rnSDa5M2wKWJCMnztCZS9cDcgVTQ6tsTFTG/odHJ4l5yNVqvbeDJYJRZ6is3uxaEpFs8LL6QM+YFSdA==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
peerDependencies:
'@edge-runtime/vm': '*'
'@types/node': ^18.0.0 || >=20.0.0
'@vitest/browser': ^1.0.0
'@vitest/ui': ^1.0.0
happy-dom: '*'
jsdom: '*'
peerDependenciesMeta:
'@edge-runtime/vm':
optional: true
'@types/node':
optional: true
'@vitest/browser':
optional: true
'@vitest/ui':
optional: true
happy-dom:
optional: true
jsdom:
optional: true
dependencies:
'@types/node': 18.19.10
'@vitest/expect': 1.2.1
'@vitest/runner': 1.2.1
'@vitest/snapshot': 1.2.1
'@vitest/spy': 1.2.1
'@vitest/utils': 1.2.1
acorn-walk: 8.3.2
cac: 6.7.14
chai: 4.4.1
debug: 4.3.4
execa: 8.0.1
local-pkg: 0.5.0
magic-string: 0.30.5
pathe: 1.1.2
picocolors: 1.0.0
std-env: 3.7.0
strip-literal: 1.3.0
tinybench: 2.6.0
tinypool: 0.8.2
vite: 5.0.12(@types/node@18.19.10)
vite-node: 1.2.1(@types/node@18.19.10)
why-is-node-running: 2.2.2
transitivePeerDependencies:
- less
- lightningcss
- sass
- stylus
- sugarss
- supports-color
- terser
dev: true
/vitest@1.2.1(@types/node@20.11.6):
resolution: {integrity: sha512-TRph8N8rnSDa5M2wKWJCMnztCZS9cDcgVTQ6tsTFTG/odHJ4l5yNVqvbeDJYJRZ6is3uxaEpFs8LL6QM+YFSdA==}
engines: {node: ^18.0.0 || >=20.0.0}