diff --git a/.changeset/stale-gorillas-cross.md b/.changeset/stale-gorillas-cross.md
new file mode 100644
index 0000000..367de1c
--- /dev/null
+++ b/.changeset/stale-gorillas-cross.md
@@ -0,0 +1,6 @@
+---
+"@lunariajs/core": patch
+"create-lunaria": patch
+---
+
+Reworked core configuration system
diff --git a/build.preset.ts b/build.preset.ts
index 04f59f9..e7b4272 100644
--- a/build.preset.ts
+++ b/build.preset.ts
@@ -7,7 +7,6 @@ export default definePreset({
rollup: {
esbuild: {
target: 'es2022',
- minify: true,
},
},
});
diff --git a/examples/vitepress/lunaria.config.json b/examples/vitepress/lunaria.config.json
new file mode 100644
index 0000000..4046be5
--- /dev/null
+++ b/examples/vitepress/lunaria.config.json
@@ -0,0 +1,51 @@
+{
+ "repository": "https://github.com/Yan-Thomas/lunaria",
+ "rootDir": "./examples/vitepress",
+ "dashboard": {
+ "url": "https://localhost:3000/"
+ },
+ "defaultLocale": {
+ "label": "English",
+ "lang": "en",
+ "content": {
+ "location": "**/*.md",
+ "ignore": ["pt/*.md", "es/*.md"]
+ },
+ "dictionaries": {
+ "location": "ui/en/*.{js,cjs,mjs,ts,yml,json}",
+ "optionalKeys": {
+ "ui/nav.json": ["today"],
+ "ui/ui.cjs": ["type"],
+ "ui/ui.js": ["type"],
+ "ui/ui.mjs": ["type"],
+ "ui/ui.mts": ["type"],
+ "ui/ui.ts": ["type"],
+ "ui/ui.yml": ["here"]
+ }
+ }
+ },
+ "locales": [
+ {
+ "label": "Português",
+ "lang": "pt",
+ "content": {
+ "location": "pt/**/*.md"
+ },
+ "dictionaries": {
+ "location": "ui/pt/*.{js,cjs,mjs,ts,yml,json}"
+ }
+ },
+ {
+ "label": "Spanish",
+ "lang": "es",
+ "content": {
+ "location": "es/**/*.md"
+ },
+ "dictionaries": {
+ "location": "ui/es/*.{js,cjs,mjs,ts,yml,json}"
+ }
+ }
+ ],
+ "translatableProperty": "i18nReady",
+ "renderer": "./renderer.config.js"
+}
diff --git a/examples/vitepress/lunaria.config.ts b/examples/vitepress/lunaria.config.ts
deleted file mode 100644
index 71afc0f..0000000
--- a/examples/vitepress/lunaria.config.ts
+++ /dev/null
@@ -1,66 +0,0 @@
-import { defineConfig } from '@lunariajs/core';
-
-export default defineConfig({
- repository: 'https://github.com/Yan-Thomas/lunaria',
- rootDir: './examples/vitepress',
- dashboard: {
- //title: "Estado da Tradução",
- url: 'https://localhost:3000/',
- /* ui: {
- lang: 'pt-BR',
- "heading.progressByLanguage": "Progresso da tradução por língua",
- "heading.statusByContent": "Estado da tradução por conteúdo",
- "status.done": "completo",
- "status.missing": "faltando",
- "status.outdated": "desatualizado",
- "status.emojiDone": "⭕",
- "statusByContent.tableRowPage": "Página",
- "statusByLanguage.outdatedTranslationLink": "tradução desatualizada",
- "statusByLanguage.sourceChangeHistoryLink": "histórico de mudanças do original"
-
- }, */
- },
- defaultLocale: {
- label: 'English',
- lang: 'en',
- content: {
- location: '**/*.md',
- ignore: ['pt/*.md', 'es/*.md'],
- },
- dictionaries: {
- location: 'ui/en/*.{js,cjs,mjs,ts,yml,json}',
- optionalKeys: {
- 'ui/nav.json': ['today'],
- 'ui/ui.cjs': ['type'],
- 'ui/ui.js': ['type'],
- 'ui/ui.mjs': ['type'],
- 'ui/ui.mts': ['type'],
- 'ui/ui.ts': ['type'],
- 'ui/ui.yml': ['here'],
- },
- },
- },
- locales: [
- {
- label: 'Português',
- lang: 'pt',
- content: {
- location: 'pt/**/*.md',
- },
- dictionaries: {
- location: 'ui/pt/*.{js,cjs,mjs,ts,yml,json}',
- },
- },
- {
- label: 'Spanish',
- lang: 'es',
- content: {
- location: 'es/**/*.md',
- },
- dictionaries: {
- location: 'ui/es/*.{js,cjs,mjs,ts,yml,json}',
- },
- },
- ],
- translatableProperty: 'i18nReady',
-});
diff --git a/examples/vitepress/renderer.config.ts b/examples/vitepress/renderer.config.ts
new file mode 100644
index 0000000..0b7f2e4
--- /dev/null
+++ b/examples/vitepress/renderer.config.ts
@@ -0,0 +1,7 @@
+import { defineRendererConfig, html } from '@lunariajs/core';
+
+export default defineRendererConfig({
+ slots: {
+ afterTitle: () => html`
This is an example slotted component!
`,
+ },
+});
diff --git a/packages/core/README.md b/packages/core/README.md
index c763167..92b09dc 100644
--- a/packages/core/README.md
+++ b/packages/core/README.md
@@ -23,51 +23,40 @@ yarn add @lunariajs/core
## Basic Usage
-Start using `@lunariajs/core` by setting up your own `lunaria.config` file and adding a script to your `package.json` file.
+Start using `@lunariajs/core` by setting up your own `lunaria.config.json` file and adding a script to your `package.json` file.
The example below contains all of the **required** options to generate a dashboard tracking the status of both the Portuguese and Spanish translations of a site:
-```js
-// lunaria.config.ts
-import { defineConfig } from '@lunariajs/core';
-
-export default defineConfig({
- // Current repository of your content
- repository: 'https://github.com/me/cool-docs',
- dashboard: {
- // Generated dashboard URL used in meta tags
- url: 'https://tracker.cool-docs.com',
+```json
+// lunaria.config.json
+{
+ "repository": "https://github.com/me/cool-docs",
+ "dashboard": {
+ "url": "https://tracker.cool-docs.com"
},
- // Information about the source locale of your content
- defaultLocale: {
- // User-friendly label/name of the language
- label: 'English',
- // BCP-47 tag of the language
- lang: 'en',
- content: {
- // Glob pattern of where your content is
- location: 'content/en/**/*.md',
- },
+ "defaultLocale": {
+ "label": "English",
+ "lang": "en",
+ "content": {
+ "location": "content/en/**/*.md"
+ }
},
- // Array of objects of your translated locales.
- locales: [
+ "locales": [
{
- label: 'Português',
- lang: 'pt',
- content: {
- location: 'content/pt/**/*.md',
- },
+ "label": "Português",
+ "lang": "pt",
+ "content": {
+ "location": "content/pt/**/*.md"
+ }
},
{
- label: 'Spanish',
- lang: 'es',
- content: {
- location: 'content/es/**/*.md',
- },
- },
- ],
- // Property to find in valid frontmatter files marking if a page should be translated or not
- translatableProperty: 'i18nReady',
+ "label": "Spanish",
+ "lang": "es",
+ "content": {
+ "location": "content/es/**/*.md"
+ }
+ }
+ ]
});
```
diff --git a/packages/core/package.json b/packages/core/package.json
index 9c5db64..bac8992 100644
--- a/packages/core/package.json
+++ b/packages/core/package.json
@@ -48,7 +48,7 @@
"typescript": "^5.2.2"
},
"dependencies": {
- "c12": "^1.5.1",
+ "destr": "^2.0.2",
"fast-glob": "^3.3.1",
"jiti": "^1.21.0",
"lit-html": "^3.0.0",
diff --git a/packages/core/src/cli.ts b/packages/core/src/cli.ts
index 146bb34..6b45131 100644
--- a/packages/core/src/cli.ts
+++ b/packages/core/src/cli.ts
@@ -1,21 +1,22 @@
#!/usr/bin/env node
-import { loadConfig } from 'c12';
-import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
+import { destr } from 'destr';
+import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
import { dirname, resolve } from 'node:path';
-import { LunariaConfigSchema } from './schemas/config.js';
+import { LunariaConfigSchema, LunariaRendererConfigSchema } from './schemas/config.js';
import { generateDashboardHtml, getContentIndex, getTranslationStatus } from './tracker.js';
import { handleShallowRepo } from './utils/git.js';
+import { loadFile } from './utils/misc.js';
-const { config } = await loadConfig({
- name: 'lunaria',
-});
+const configPath = './lunaria.config.json';
-if (config === null) {
- console.error(new Error('Could not find a `lunaria.config.*` file, does it exist?'));
- process.exit(1);
+if (!existsSync(configPath)) {
+ console.error(
+ new Error(`Could not find a \`lunaria.config.json\` file in ${process.cwd()}, does it exist?`)
+ );
}
-const parsedConfig = LunariaConfigSchema.safeParse(config);
+const configContents = destr(readFileSync(configPath, 'utf-8'));
+const parsedConfig = LunariaConfigSchema.safeParse(configContents);
if (!parsedConfig.success) {
console.error(
@@ -28,6 +29,31 @@ if (!parsedConfig.success) {
}
const userConfig = parsedConfig.data;
+
+if (userConfig.renderer && !existsSync(userConfig.renderer)) {
+ console.error(
+ new Error(
+ `Could not find your specified renderer file at \`${userConfig.renderer}\`, does it exist?`
+ )
+ );
+ process.exit(1);
+}
+
+const rendererConfigContents = userConfig.renderer ? loadFile(userConfig.renderer) : {};
+const parsedRendererConfig = LunariaRendererConfigSchema.safeParse(rendererConfigContents);
+
+if (!parsedRendererConfig.success) {
+ console.error(
+ new Error(
+ 'Invalid renderer configuration options passed to `@lunariajs/core`\n' +
+ parsedRendererConfig.error.issues.map((i) => i).join('\n')
+ )
+ );
+ process.exit(1);
+}
+
+const userRendererConfig = parsedRendererConfig.data;
+
const isShallowRepo = await handleShallowRepo(userConfig);
console.time('⌛ Building translation dashboard');
@@ -35,7 +61,7 @@ console.log(`➡️ Dashboard output path: ${resolve(userConfig.outDir)}`);
const contentIndex = await getContentIndex(userConfig, isShallowRepo);
const translationStatus = await getTranslationStatus(userConfig, contentIndex);
-const html = await generateDashboardHtml(userConfig, translationStatus);
+const html = await generateDashboardHtml(userConfig, userRendererConfig, translationStatus);
const outputDir = dirname(userConfig.outDir);
diff --git a/packages/core/src/dashboard/components.ts b/packages/core/src/dashboard/components.ts
index 5504fdf..836daa5 100644
--- a/packages/core/src/dashboard/components.ts
+++ b/packages/core/src/dashboard/components.ts
@@ -4,27 +4,34 @@ import type {
FileTranslationStatus,
Locale,
LunariaConfig,
+ LunariaRendererConfig,
TranslationStatus,
} from '../types.js';
import { getTextFromFormat } from '../utils/misc.js';
import { Styles } from './styles.js';
-export const Page = (opts: LunariaConfig, translationStatus: FileTranslationStatus[]) => {
+export const Page = (
+ opts: LunariaConfig,
+ rendererOpts: LunariaRendererConfig,
+ translationStatus: FileTranslationStatus[]
+) => {
const { dashboard } = opts;
+ const { slots, overrides } = rendererOpts;
+
return html`
- ${dashboard.overrides.meta?.(opts) ?? Meta(dashboard)}
+ ${overrides.meta?.(opts) ?? Meta(dashboard)}
- ${dashboard.slots.head?.(opts) ?? ''}
+ ${slots.head?.(opts) ?? ''}
- ${dashboard.overrides.styles?.(opts) ?? Styles}
+ ${overrides.styles?.(opts) ?? Styles}
- ${dashboard.overrides.body?.(opts, translationStatus) ?? Body(opts, translationStatus)}
+ ${overrides.body?.(opts, translationStatus) ?? Body(opts, rendererOpts, translationStatus)}
`;
@@ -42,18 +49,24 @@ export const Meta = (dashboard: Dashboard) => html`
`;
-export const Body = (opts: LunariaConfig, translationStatus: FileTranslationStatus[]) => {
+export const Body = (
+ opts: LunariaConfig,
+ rendererOpts: LunariaRendererConfig,
+ translationStatus: FileTranslationStatus[]
+) => {
const { dashboard } = opts;
+ const { slots, overrides } = rendererOpts;
+
return html`
- ${dashboard.slots.beforeTitle?.(opts) ?? ''}
+ ${slots.beforeTitle?.(opts) ?? ''}
${dashboard.title}
- ${dashboard.slots.afterTitle?.(opts) ?? ''}
- ${dashboard.overrides.statusByLocale?.(opts, translationStatus) ??
+ ${slots.afterTitle?.(opts) ?? ''}
+ ${overrides.statusByLocale?.(opts, translationStatus) ??
StatusByLocale(opts, translationStatus)}
- ${dashboard.overrides.statusByContent?.(opts, translationStatus) ??
+ ${overrides.statusByContent?.(opts, translationStatus) ??
StatusByContent(opts, translationStatus)}
`;
diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts
index 094854b..63e512a 100644
--- a/packages/core/src/index.ts
+++ b/packages/core/src/index.ts
@@ -1,8 +1,8 @@
-import type { LunariaUserConfig } from './types.js';
+import type { LunariaUserRendererConfig } from './types.js';
export { html } from 'lit-html';
export type * from './types.js';
-export function defineConfig(opts: LunariaUserConfig) {
+export function defineRendererConfig(opts: LunariaUserRendererConfig) {
return opts;
}
diff --git a/packages/core/src/schemas/config.ts b/packages/core/src/schemas/config.ts
index 96e4b70..03e35e6 100644
--- a/packages/core/src/schemas/config.ts
+++ b/packages/core/src/schemas/config.ts
@@ -3,6 +3,16 @@ import { z } from 'zod';
import { DashboardSchema } from '../schemas/dashboard.js';
import { LocaleSchema } from '../schemas/locale.js';
import { LocalePathConstructorSchema, SharedPathResolverSchema } from '../schemas/misc.js';
+import type { CustomComponent, CustomStatusComponent } from '../types.js';
+
+function createComponentSchema() {
+ return z.custom((val) => {
+ if (typeof val === 'function' && typeof val() === 'object') {
+ return val()['_$litType$'] ? true : false;
+ }
+ return false;
+ }, 'Custom components need to be a function returning a valid `lit-html` template.');
+}
export const LunariaConfigSchema = z.object({
/** Options about your generated dashboard. */
@@ -77,7 +87,35 @@ export const LunariaConfigSchema = z.object({
.describe(
'The relative directory path of your git history clone, exclusively made when running on a shallow repository, e.g. `"./dist/history"`'
),
+ /** The relative path to a valid `.(c/m)js` or `.(c/m)ts` file containing your dashboard renderer configuration. */
+ renderer: z
+ .string()
+ .optional()
+ .describe(
+ 'The relative path to a valid `.(c/m)js` or `.(c/m)ts` file containing your dashboard renderer configuration.'
+ ),
+});
+
+export const LunariaRendererConfigSchema = z.object({
+ slots: z
+ .object({
+ head: createComponentSchema().optional(),
+ beforeTitle: createComponentSchema().optional(),
+ afterTitle: createComponentSchema().optional(),
+ })
+ .default({}),
+ overrides: z
+ .object({
+ meta: createComponentSchema().optional(),
+ styles: createComponentSchema().optional(),
+ body: createComponentSchema().optional(),
+ statusByLocale: createComponentSchema().optional(),
+ statusByContent: createComponentSchema().optional(),
+ })
+ .default({}),
});
export type LunariaConfig = z.infer;
export type LunariaUserConfig = z.input;
+export type LunariaRendererConfig = z.infer;
+export type LunariaUserRendererConfig = z.input;
diff --git a/packages/core/src/schemas/dashboard.ts b/packages/core/src/schemas/dashboard.ts
index 05083c4..df97bbe 100644
--- a/packages/core/src/schemas/dashboard.ts
+++ b/packages/core/src/schemas/dashboard.ts
@@ -1,14 +1,4 @@
import { z } from 'zod';
-import type { CustomComponent, CustomStatusComponent } from '../types.js';
-
-function createComponentSchema() {
- return z.custom((val) => {
- if (typeof val === 'function' && typeof val() === 'object') {
- return val()['_$litType$'] ? true : false;
- }
- return false;
- }, 'Custom components need to be a function returning a valid `lit-html` template.');
-}
const DashboardUiSchema = z
.object({
@@ -146,22 +136,6 @@ export const DashboardSchema = z.object({
.describe('The deployed URL of your translation dashboard, used in the meta tags of the page.'),
/** UI dictionary of the dashboard, including the desired `lang` and `dir` attributes of the page. */
ui: DashboardUiSchema,
- slots: z
- .object({
- head: createComponentSchema().optional(),
- beforeTitle: createComponentSchema().optional(),
- afterTitle: createComponentSchema().optional(),
- })
- .default({}),
- overrides: z
- .object({
- meta: createComponentSchema().optional(),
- styles: createComponentSchema().optional(),
- body: createComponentSchema().optional(),
- statusByLocale: createComponentSchema().optional(),
- statusByContent: createComponentSchema().optional(),
- })
- .default({}),
});
export type Dashboard = z.output;
diff --git a/packages/core/src/tracker.ts b/packages/core/src/tracker.ts
index 1f68d27..eff6565 100644
--- a/packages/core/src/tracker.ts
+++ b/packages/core/src/tracker.ts
@@ -1,3 +1,4 @@
+import destr from 'destr';
import glob from 'fast-glob';
import micromatch from 'micromatch';
import { readFileSync } from 'node:fs';
@@ -17,6 +18,7 @@ import type {
FileTranslationStatus,
IndexData,
LunariaConfig,
+ LunariaRendererConfig,
OptionalKeys,
RegExpGroups,
} from './types.js';
@@ -210,11 +212,12 @@ export async function getContentIndex(opts: LunariaConfig, isShallowRepo: boolea
export async function generateDashboardHtml(
opts: LunariaConfig,
+ rendererOpts: LunariaRendererConfig,
translationStatus: FileTranslationStatus[]
) {
const html = await rehype()
.use(rehypeFormat)
- .process(renderToString(Page(opts, translationStatus)));
+ .process(renderToString(Page(opts, rendererOpts, translationStatus)));
return String(html);
}
@@ -391,9 +394,9 @@ async function getDictionaryFilesData(
const sourceDictionaryFile = readFileSync(resolve(sourceFilePath), 'utf-8');
const translationDictionaryFile = readFileSync(resolve(translationFilePath), 'utf-8');
- const sourceDictionaryData = parseDictionary(JSON.parse(sourceDictionaryFile), sourceFilePath);
+ const sourceDictionaryData = parseDictionary(destr(sourceDictionaryFile), sourceFilePath);
const translationDictionaryData = parseDictionary(
- JSON.parse(translationDictionaryFile),
+ destr(translationDictionaryFile),
translationFilePath
);
diff --git a/packages/create-lunaria/package.json b/packages/create-lunaria/package.json
index 272277f..5e3d2a4 100644
--- a/packages/create-lunaria/package.json
+++ b/packages/create-lunaria/package.json
@@ -23,8 +23,7 @@
"scripts": {
"dev": "node ./dist/create-lunaria.mjs",
"build": "unbuild",
- "lint": "tsc",
- "lunaria": "lunaria"
+ "lint": "tsc"
},
"devDependencies": {
"@types/node": "^20.8.9",
diff --git a/packages/create-lunaria/src/create-lunaria.ts b/packages/create-lunaria/src/create-lunaria.ts
index 3239075..1999201 100644
--- a/packages/create-lunaria/src/create-lunaria.ts
+++ b/packages/create-lunaria/src/create-lunaria.ts
@@ -6,10 +6,8 @@ import { join, resolve } from 'node:path';
import { addDependency, detectPackageManager, installDependencies } from 'nypm';
import color from 'picocolors';
-const cleanConfigContent = (pkg: string) =>
- `import { defineConfig } from "${pkg}";
-
-export default defineConfig({});`;
+// TODO: Add JSON Schema here!
+const cleanConfigContent = '{\n \n}';
async function main() {
console.clear();
@@ -18,12 +16,6 @@ async function main() {
const project = await p.group(
{
- package: () =>
- p.select({
- message: `Which ${color.bold('@lunariajs')} package would you like to set up?`,
- initialValue: '@lunariajs/core',
- options: [{ value: '@lunariajs/core', label: '@lunariajs/core' }],
- }),
path: () =>
p.text({
message: 'Where should we set up Lunaria?',
@@ -32,14 +24,9 @@ async function main() {
if (value[0] !== '.') return 'Please enter a relative path.';
},
}),
- typed: () =>
- p.confirm({
- message: 'Does your project use TypeScript?',
- initialValue: false,
- }),
install: ({ results }) =>
p.confirm({
- message: `Do you wish to install ${color.bold(results.package)} and its dependencies?`,
+ message: 'Install dependencies?',
initialValue: false,
}),
},
@@ -65,15 +52,15 @@ async function main() {
const spinner = p.spinner();
- spinner.start(`Adding ${color.bold(project.package)}`);
+ spinner.start(`Adding packages`);
- await addDependency(project.package, {
+ await addDependency('@lunariajs/core', {
cwd: projectPath,
packageManager: packageManager,
silent: true,
});
- spinner.stop(`Added ${color.bold(project.package)}.`);
+ spinner.stop(`Added packages.`);
if (existsSync(packageJsonPath)) {
spinner.start(`Adding ${color.bold('lunaria')} script`);
@@ -114,11 +101,11 @@ async function main() {
);
}
- const configFilename = `lunaria.config.${project.typed ? 'ts' : 'js'}`;
+ const configFilename = `lunaria.config.json`;
const configFilePath = join(projectPath, configFilename);
if (!existsSync(configFilePath)) {
- writeFileSync(configFilePath, cleanConfigContent(project.package));
+ writeFileSync(configFilePath, cleanConfigContent);
p.log.message(`${color.bold(configFilename)} created at ${color.italic(configFilePath)}`);
} else {
p.log.warn(
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index d470b3c..acb21c1 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -51,9 +51,9 @@ importers:
packages/core:
dependencies:
- c12:
- specifier: ^1.5.1
- version: 1.5.1
+ destr:
+ specifier: ^2.0.2
+ version: 2.0.2
fast-glob:
specifier: ^3.3.1
version: 3.3.1
@@ -2132,6 +2132,7 @@ packages:
resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==}
engines: {node: '>=0.4.0'}
hasBin: true
+ dev: true
/acorn@8.11.2:
resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==}
@@ -2139,15 +2140,6 @@ packages:
hasBin: true
dev: false
- /agent-base@7.1.0:
- resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==}
- engines: {node: '>= 14'}
- dependencies:
- debug: 4.3.4
- transitivePeerDependencies:
- - supports-color
- dev: false
-
/algoliasearch@4.20.0:
resolution: {integrity: sha512-y+UHEjnOItoNy0bYO+WWmLWBlPwDjKHW6mNHrPi0NkuhpQOOEbrkwQH/wgKFDLh7qlKjzoKeiRtlpewDPDG23g==}
dependencies:
@@ -2486,24 +2478,6 @@ packages:
engines: {node: '>=6'}
dev: true
- /c12@1.5.1:
- resolution: {integrity: sha512-BWZRJgDEveT8uI+cliCwvYSSSSvb4xKoiiu5S0jaDbKBopQLQF7E+bq9xKk1pTcG+mUa3yXuFO7bD9d8Lr9Xxg==}
- dependencies:
- chokidar: 3.5.3
- defu: 6.1.3
- dotenv: 16.3.1
- giget: 1.1.3
- jiti: 1.21.0
- mlly: 1.4.2
- ohash: 1.1.3
- pathe: 1.1.1
- perfect-debounce: 1.0.0
- pkg-types: 1.0.3
- rc9: 2.1.1
- transitivePeerDependencies:
- - supports-color
- dev: false
-
/call-bind@1.0.5:
resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==}
dependencies:
@@ -2597,11 +2571,6 @@ packages:
resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==}
dev: false
- /chownr@2.0.0:
- resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==}
- engines: {node: '>=10'}
- dev: false
-
/ci-info@3.8.0:
resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==}
engines: {node: '>=8'}
@@ -2693,10 +2662,6 @@ packages:
color-string: 1.9.1
dev: false
- /colorette@2.0.20:
- resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
- dev: false
-
/comma-separated-tokens@2.0.3:
resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
dev: false
@@ -2867,6 +2832,7 @@ packages:
/defu@6.1.3:
resolution: {integrity: sha512-Vy2wmG3NTkmHNg/kzpuvHhkqeIx3ODWqasgCRbKtbXEN0G+HpEEv9BtJLp7ZG1CZloFaC41Ah3ZFbq7aqCqMeQ==}
+ dev: true
/dequal@2.0.3:
resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
@@ -2927,11 +2893,6 @@ packages:
resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
dev: false
- /dotenv@16.3.1:
- resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==}
- engines: {node: '>=12'}
- dev: false
-
/dset@3.1.3:
resolution: {integrity: sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ==}
engines: {node: '>=4'}
@@ -3307,11 +3268,6 @@ packages:
micromatch: 4.0.5
pkg-dir: 4.2.0
- /flat@5.0.2:
- resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==}
- hasBin: true
- dev: false
-
/focus-trap@7.5.3:
resolution: {integrity: sha512-7UsT/eSJcTPF0aZp73u7hBRTABz26knRRTJfoTGFCQD5mUImLIIOwWWCrtoQdmWa7dykBi6H+Cp5i3S/kvsMeA==}
dependencies:
@@ -3355,13 +3311,6 @@ packages:
universalify: 0.1.2
dev: true
- /fs-minipass@2.1.0:
- resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==}
- engines: {node: '>= 8'}
- dependencies:
- minipass: 3.3.6
- dev: false
-
/fs.realpath@1.0.0:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
dev: true
@@ -3421,21 +3370,6 @@ packages:
get-intrinsic: 1.2.2
dev: true
- /giget@1.1.3:
- resolution: {integrity: sha512-zHuCeqtfgqgDwvXlR84UNgnJDuUHQcNI5OqWqFxxuk2BshuKbYhJWdxBsEo4PvKqoGh23lUAIvBNpChMLv7/9Q==}
- hasBin: true
- dependencies:
- colorette: 2.0.20
- defu: 6.1.3
- https-proxy-agent: 7.0.2
- mri: 1.2.0
- node-fetch-native: 1.4.1
- pathe: 1.1.1
- tar: 6.2.0
- transitivePeerDependencies:
- - supports-color
- dev: false
-
/github-from-package@0.0.0:
resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==}
dev: false
@@ -3853,16 +3787,6 @@ packages:
resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==}
dev: false
- /https-proxy-agent@7.0.2:
- resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==}
- engines: {node: '>= 14'}
- dependencies:
- agent-base: 7.1.0
- debug: 4.3.4
- transitivePeerDependencies:
- - supports-color
- dev: false
-
/human-id@1.0.2:
resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==}
dev: true
@@ -4217,6 +4141,7 @@ packages:
/jsonc-parser@3.2.0:
resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==}
+ dev: true
/jsonfile@4.0.0:
resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==}
@@ -5027,30 +4952,10 @@ packages:
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
dev: false
- /minipass@3.3.6:
- resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==}
- engines: {node: '>=8'}
- dependencies:
- yallist: 4.0.0
- dev: false
-
- /minipass@5.0.0:
- resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==}
- engines: {node: '>=8'}
- dev: false
-
/minisearch@6.1.0:
resolution: {integrity: sha512-PNxA/X8pWk+TiqPbsoIYH0GQ5Di7m6326/lwU/S4mlo4wGQddIcf/V//1f9TB0V4j59b57b+HZxt8h3iMROGvg==}
dev: true
- /minizlib@2.1.2:
- resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==}
- engines: {node: '>= 8'}
- dependencies:
- minipass: 3.3.6
- yallist: 4.0.0
- dev: false
-
/mixme@0.5.9:
resolution: {integrity: sha512-VC5fg6ySUscaWUpI4gxCBTQMH2RdUpNrk+MsbpCYtIvf9SBJdiUey4qE7BXviJsJR4nDQxCZ+3yaYNW3guz/Pw==}
engines: {node: '>= 8.0.0'}
@@ -5060,12 +4965,6 @@ packages:
resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==}
dev: false
- /mkdirp@1.0.4:
- resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
- engines: {node: '>=10'}
- hasBin: true
- dev: false
-
/mkdist@1.3.0(typescript@5.2.2):
resolution: {integrity: sha512-ZQrUvcL7LkRdzMREpDyg9AT18N9Tl5jc2qeKAUeEw0KGsgykbHbuRvysGAzTuGtwuSg0WQyNit5jh/k+Er3JEg==}
hasBin: true
@@ -5097,6 +4996,7 @@ packages:
pathe: 1.1.1
pkg-types: 1.0.3
ufo: 1.3.1
+ dev: true
/mri@1.2.0:
resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
@@ -5151,10 +5051,6 @@ packages:
resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==}
dev: false
- /node-fetch-native@1.4.1:
- resolution: {integrity: sha512-NsXBU0UgBxo2rQLOeWNZqS3fvflWePMECr8CoSWoSTqCqGbVVsvl9vZu1HfQicYN0g5piV9Gh8RTEvo/uP752w==}
- dev: false
-
/node-releases@2.0.13:
resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==}
@@ -5219,10 +5115,6 @@ packages:
object-keys: 1.1.1
dev: true
- /ohash@1.1.3:
- resolution: {integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==}
- dev: false
-
/once@1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
dependencies:
@@ -5407,10 +5299,6 @@ packages:
/pathe@1.1.1:
resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==}
- /perfect-debounce@1.0.0:
- resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==}
- dev: false
-
/periscopic@3.1.0:
resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==}
dependencies:
@@ -5442,6 +5330,7 @@ packages:
jsonc-parser: 3.2.0
mlly: 1.4.2
pathe: 1.1.1
+ dev: true
/postcss@8.4.31:
resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
@@ -5580,14 +5469,6 @@ packages:
engines: {node: '>=8'}
dev: true
- /rc9@2.1.1:
- resolution: {integrity: sha512-lNeOl38Ws0eNxpO3+wD1I9rkHGQyj1NU1jlzv4go2CtEnEQEUfqnIvZG7W+bC/aXdJ27n5x/yUjb6RoT9tko+Q==}
- dependencies:
- defu: 6.1.3
- destr: 2.0.2
- flat: 5.0.2
- dev: false
-
/rc@1.2.8:
resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==}
hasBin: true
@@ -6396,18 +6277,6 @@ packages:
streamx: 2.15.1
dev: false
- /tar@6.2.0:
- resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==}
- engines: {node: '>=10'}
- dependencies:
- chownr: 2.0.0
- fs-minipass: 2.1.0
- minipass: 5.0.0
- minizlib: 2.1.2
- mkdirp: 1.0.4
- yallist: 4.0.0
- dev: false
-
/term-size@2.2.1:
resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==}
engines: {node: '>=8'}