@nemigo/configs 0.1.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/eslint.d.ts CHANGED
@@ -13,11 +13,11 @@ export interface EslintConfigOptions {
13
13
  */
14
14
  strict?: boolean;
15
15
  /**
16
- * Обычно `import.meta.dirname`. Для более сложного линтинга типов (TypeChecked)
16
+ * Путь к проекту (`import.meta.dirname`) для более сложного линтинга типов (TypeChecked)
17
17
  */
18
18
  service?: string;
19
19
  /**
20
- * Путь к своему .eslint.ignore
20
+ * Путь к иному .eslint.ignore
21
21
  */
22
22
  ignore?: string;
23
23
  }
@@ -1,4 +1,2 @@
1
- /*
2
- Взято из @eslint/config-helpers/types (0.3.1), т.к. этот файл не экспортируется пакетом
3
- */
1
+ // Взято из @eslint/config-helpers/types (0.3.1), т.к. нужный тип (ConfigWithExtendsArray) не экспортируется пакетом
4
2
  export {};
@@ -8,6 +8,6 @@ export declare const defineConfig: (tailwindStylesheet?: string) => Config;
8
8
  *
9
9
  * @param content - содержимое
10
10
  * @param parser - какой парсер
11
- * @param tailwindStylesheet - путь к конфигу Tailwind V4 (`./src/tailwind.css`)
11
+ * @param tailwindStylesheet - путь к конфигу Tailwind V4 (ex. `./src/tailwind.css`)
12
12
  */
13
13
  export declare const pretty: (content: string, parser: Options["parser"], tailwindStylesheet?: string) => Promise<string>;
package/dist/prettier.js CHANGED
@@ -37,6 +37,6 @@ const config = defineConfig();
37
37
  *
38
38
  * @param content - содержимое
39
39
  * @param parser - какой парсер
40
- * @param tailwindStylesheet - путь к конфигу Tailwind V4 (`./src/tailwind.css`)
40
+ * @param tailwindStylesheet - путь к конфигу Tailwind V4 (ex. `./src/tailwind.css`)
41
41
  */
42
42
  export const pretty = (content, parser, tailwindStylesheet) => format(content, { ...config, parser, tailwindStylesheet });
@@ -0,0 +1,65 @@
1
+ import type { Adapter, Config } from "@sveltejs/kit";
2
+ export interface SvelteConfigOptions {
3
+ /**
4
+ * Адаптер серверной платформы
5
+ *
6
+ * @see https://svelte.dev/docs/kit/adapters
7
+ */
8
+ adapter: Adapter;
9
+ /**
10
+ * Только руны
11
+ *
12
+ * @see https://svelte.dev/docs/svelte/what-are-runes
13
+ *
14
+ * @default true
15
+ */
16
+ runes?: boolean;
17
+ /**
18
+ * Проверка источника запроса (CSRF-защита)
19
+ *
20
+ * Отключить, если нужна возможность обращения с локалки на прод-приложения
21
+ *
22
+ * @see https://svelte.dev/docs/kit/configuration#csrf
23
+ * @see https://developer.mozilla.org/en-US/docs/Web/Security/Types_of_attacks#cross-site_request_forgery_csrf
24
+ *
25
+ * @default `true`
26
+ */
27
+ csrfCheckOrigin?: boolean;
28
+ /**
29
+ * Алиасы путей
30
+ *
31
+ * @default {}
32
+ */
33
+ alias?: Record<string, string>;
34
+ /**
35
+ * Переопледеление путей кита
36
+ */
37
+ files?: {
38
+ /**
39
+ * @default "./static"
40
+ */
41
+ assets?: string;
42
+ /**
43
+ * @default "./src/app.html"
44
+ */
45
+ app_html?: string;
46
+ /**
47
+ * @default "./src/error.html"
48
+ */
49
+ error_html?: string;
50
+ };
51
+ /**
52
+ * Глобусы исключений из tsconfig-а
53
+ */
54
+ exclude?: string[];
55
+ /**
56
+ * Глобусы включений из tsconfig-а
57
+ */
58
+ include?: string[];
59
+ }
60
+ /**
61
+ * Конфиг для приложений на `@sveltejs/kit`
62
+ *
63
+ * @see https://svelte.dev/docs/kit/introduction
64
+ */
65
+ export declare const defineConfig: (options: SvelteConfigOptions) => Config;
@@ -0,0 +1,86 @@
1
+ import { vitePreprocess } from "@sveltejs/vite-plugin-svelte";
2
+ //...
3
+ const isObject = (value) => typeof value === "object" && value !== null;
4
+ const getOptionalObject = (value) => (isObject(value) ? value : {});
5
+ const getOptionalArray = (value) => (Array.isArray(value) ? value : []);
6
+ const setifyArray = (array) => Array.from(new Set(array));
7
+ /**
8
+ * Конфиг для приложений на `@sveltejs/kit`
9
+ *
10
+ * @see https://svelte.dev/docs/kit/introduction
11
+ */
12
+ export const defineConfig = (options) => ({
13
+ /**
14
+ * Настройки поведения svelte-компилятора
15
+ *
16
+ * @see https://svelte.dev/docs/svelte/svelte-compiler#CompileOptions
17
+ */
18
+ compilerOptions: {
19
+ runes: options.runes ?? true,
20
+ /**
21
+ * Использование современного AST (не знаю, на что влияет)
22
+ */
23
+ modernAst: true,
24
+ },
25
+ /**
26
+ * Расширение поддержки всякого в svelte (в т.ч. и полной для typescript)
27
+ *
28
+ * @see https://svelte.dev/docs/kit/integrations
29
+ */
30
+ preprocess: vitePreprocess({ script: true }),
31
+ kit: {
32
+ adapter: options.adapter,
33
+ csrf: {
34
+ checkOrigin: options.csrfCheckOrigin,
35
+ },
36
+ alias: options.alias,
37
+ files: {
38
+ assets: options?.files?.assets,
39
+ appTemplate: options?.files?.app_html,
40
+ errorTemplate: options?.files?.error_html,
41
+ },
42
+ /**
43
+ * Переопределение и дополнения к `tsconfig.json`
44
+ *
45
+ * @see https://svelte.dev/docs/kit/configuration#typescript
46
+ */
47
+ typescript: {
48
+ config: (config) => {
49
+ config["compilerOptions"] = {
50
+ ...getOptionalObject(config["compilerOptions"]),
51
+ allowJs: true,
52
+ checkJs: true,
53
+ target: "ES2023", // override
54
+ module: "NodeNext", // override
55
+ moduleResolution: "NodeNext", // override
56
+ // noEmit: true,
57
+ strict: true,
58
+ noImplicitAny: false,
59
+ // isolatedModules: true,
60
+ esModuleInterop: true,
61
+ allowSyntheticDefaultImports: true,
62
+ // verbatimModuleSyntax: true,
63
+ resolveJsonModule: true,
64
+ skipLibCheck: true,
65
+ disableSizeLimit: true,
66
+ erasableSyntaxOnly: true,
67
+ };
68
+ config["exclude"] = setifyArray([
69
+ ...getOptionalArray(config["exclude"]),
70
+ "../**/trash/**",
71
+ "../**/drafts/**",
72
+ ...(options.exclude ?? []),
73
+ ]);
74
+ config["include"] = setifyArray([
75
+ ...getOptionalArray(config["include"]),
76
+ "../scripts",
77
+ "../types",
78
+ "../*.ts",
79
+ "../*.js",
80
+ ...(options.include ?? []),
81
+ ]);
82
+ return config;
83
+ },
84
+ },
85
+ },
86
+ });
@@ -1,6 +1,10 @@
1
1
  import type { Config } from "@sveltejs/kit";
2
- export interface SveltePackageOptions {
2
+ export interface SveltePackageConfigOptions {
3
3
  /**
4
+ * Только руны
5
+ *
6
+ * @see https://svelte.dev/docs/svelte/what-are-runes
7
+ *
4
8
  * @default true
5
9
  */
6
10
  runes?: boolean;
@@ -11,8 +15,10 @@ export interface SveltePackageOptions {
11
15
  */
12
16
  isolate?: boolean;
13
17
  /**
18
+ * Алиасы путей
19
+ *
14
20
  * @default {}
15
21
  */
16
22
  alias?: Record<string, string>;
17
23
  }
18
- export declare const definePackageConfig: ({ runes, isolate, alias }?: SveltePackageOptions) => Config;
24
+ export declare const definePackageConfig: ({ runes, isolate, alias }?: SveltePackageConfigOptions) => Config;
@@ -6,11 +6,6 @@ export const definePackageConfig = ({ runes = true, isolate = true, alias = {} }
6
6
  * @see https://svelte.dev/docs/svelte/svelte-compiler#CompileOptions
7
7
  */
8
8
  compilerOptions: {
9
- /**
10
- * Только руны
11
- *
12
- * @see https://svelte.dev/docs/svelte/what-are-runes
13
- */
14
9
  runes,
15
10
  /**
16
11
  * Использование современного AST
@@ -23,11 +18,11 @@ export const definePackageConfig = ({ runes = true, isolate = true, alias = {} }
23
18
  * @see https://svelte.dev/docs/kit/integrations
24
19
  */
25
20
  preprocess: vitePreprocess({ script: true }),
26
- /**
27
- * Алиас корня пакета и его путь (+ алиасы от проекта)
28
- */
29
21
  kit: {
30
22
  files: {
23
+ /**
24
+ * Путь к библиотеке
25
+ */
31
26
  lib: "src",
32
27
  },
33
28
  alias: {
@@ -0,0 +1,50 @@
1
+ import type { BuildOptions, PluginOption, ServerOptions } from "vite";
2
+ import type { ViteUserConfig } from "vitest/config";
3
+ /**
4
+ * Настройка конфигурации для {@link defineConfig}
5
+ */
6
+ export interface ViteConfigOptions {
7
+ /**
8
+ * Порт приложения
9
+ *
10
+ * @see https://vite.dev/config/server-options.html#server-port
11
+ */
12
+ port?: ServerOptions["port"];
13
+ /**
14
+ * Отключение использования фиксированного порта
15
+ *
16
+ * @see https://vite.dev/config/server-options.html#server-strictport
17
+ */
18
+ offStrictPort?: boolean;
19
+ /**
20
+ * Конфигурация минификации при сборке
21
+ *
22
+ * @see https://vite.dev/config/build-options.html#build-minify
23
+ */
24
+ minify?: BuildOptions["minify"];
25
+ /**
26
+ * Проксирование запросов
27
+ *
28
+ * @see https://vite.dev/config/server-options.html#server-proxy
29
+ */
30
+ proxy?: ServerOptions["proxy"];
31
+ /**
32
+ * Разрешение доступа к общим папкам
33
+ *
34
+ * @see https://vite.dev/config/server-options.html#server-fs-allow
35
+ */
36
+ allow?: string[];
37
+ /**
38
+ * Различные плагины
39
+ *
40
+ * @see https://vite.dev/config/shared-options.html#plugins
41
+ */
42
+ plugins?: PluginOption[];
43
+ }
44
+ /**
45
+ * Реструктурированная конфигурация `vite` через `vitest`
46
+ *
47
+ * @see https://vite.dev/ Документация Vite
48
+ * @see https://vitest.dev/ Документация Vitest
49
+ */
50
+ export declare const defineConfig: (options?: ViteConfigOptions, test?: ViteUserConfig["test"]) => ViteUserConfig;
@@ -0,0 +1,61 @@
1
+ import { defineConfig as defineVitestConfig } from "vitest/config";
2
+ /**
3
+ * Реструктурированная конфигурация `vite` через `vitest`
4
+ *
5
+ * @see https://vite.dev/ Документация Vite
6
+ * @see https://vitest.dev/ Документация Vitest
7
+ */
8
+ export const defineConfig = (options = {}, test) => defineVitestConfig({
9
+ /**
10
+ * Где смотрит .env-файлы. Отключено, т.к. файлы читаются через dotenv
11
+ *
12
+ * @see https://vite.dev/config/shared-options.html#envdir
13
+ */
14
+ envDir: false,
15
+ /**
16
+ * Префикс публичных env-переменных (чтобы совпадало с svelte-kit)
17
+ *
18
+ * @see https://vite.dev/config/shared-options.html#envprefix
19
+ */
20
+ envPrefix: "PUBLIC_",
21
+ /**
22
+ * Конфигурация сервера
23
+ *
24
+ * @see https://vite.dev/config/server-options.html
25
+ */
26
+ server: {
27
+ port: options.port,
28
+ /**
29
+ * Выдаёт ошибку, если порт занят
30
+ *
31
+ * @see https://vite.dev/config/server-options.html#server-strictport
32
+ */
33
+ strictPort: !options.offStrictPort,
34
+ proxy: options.proxy,
35
+ fs: {
36
+ allow: options.allow,
37
+ },
38
+ },
39
+ /**
40
+ * Конфигурация сборки
41
+ *
42
+ * @see https://vite.dev/config/build-options.html
43
+ */
44
+ build: {
45
+ minify: options.minify,
46
+ },
47
+ plugins: options.plugins,
48
+ /**
49
+ * Конфигурация `vitest`
50
+ *
51
+ * @see https://vitest.dev/config
52
+ */
53
+ test: test ?? {
54
+ /**
55
+ * glob-путь к файлам тестов
56
+ *
57
+ * @see https://vitest.dev/config/#include
58
+ */
59
+ include: ["src/**/*.{test,spec}.{ts,js}"],
60
+ },
61
+ });
@@ -0,0 +1,30 @@
1
+ import type { ServerOptions } from "vite";
2
+ /**
3
+ * Настройка конфигурации для {@link defineProxyConfig}
4
+ */
5
+ export interface ViteProxyConfigOptions {
6
+ /**
7
+ * URL-адрес сервера, на который будет направляться прокси
8
+ *
9
+ * @example `http://localhost:3000`
10
+ */
11
+ domain: string;
12
+ /**
13
+ * Префикс маршрута, который будет перенаправляться.
14
+ *
15
+ * @example `/api/`
16
+ */
17
+ prefix: string;
18
+ /**
19
+ * Определяет, должен ли изменяться заголовок `Origin` при проксировании
20
+ *
21
+ * @default true
22
+ */
23
+ changeOrigin?: boolean;
24
+ }
25
+ /**
26
+ * Создания прокси-конфига для Vite
27
+ *
28
+ * Используется для проксирования запросов на основной сервер у приложений
29
+ */
30
+ export declare const defineProxyConfig: ({ domain: target, prefix, changeOrigin }: ViteProxyConfigOptions) => ServerOptions["proxy"];
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Создания прокси-конфига для Vite
3
+ *
4
+ * Используется для проксирования запросов на основной сервер у приложений
5
+ */
6
+ export const defineProxyConfig = ({ domain: target, prefix, changeOrigin = true }) => {
7
+ const pad = (v) => v.toString().padStart(2, "0");
8
+ const now = new Date();
9
+ const hours = pad(now.getHours());
10
+ const mins = pad(now.getMinutes());
11
+ const secs = pad(now.getSeconds());
12
+ const PROXY = "\x1b[1m\x1b[96m[PROXY]\x1b[0m\x1b[22m";
13
+ console.log(`${hours}:${mins}:${secs} ${PROXY} ${target} \n`);
14
+ return { [prefix]: { target, changeOrigin } };
15
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nemigo/configs",
3
- "version": "0.1.0",
3
+ "version": "0.2.1",
4
4
  "private": false,
5
5
  "author": {
6
6
  "name": "Vlad Logvin",
@@ -32,12 +32,24 @@
32
32
  "types": "./dist/prettier.d.ts",
33
33
  "default": "./dist/prettier.js"
34
34
  },
35
+ "./svelte": {
36
+ "types": "./dist/svelte/index.d.ts",
37
+ "default": "./dist/svelte/index.js"
38
+ },
35
39
  "./svelte/package": {
36
40
  "types": "./dist/svelte/package.d.ts",
37
41
  "default": "./dist/svelte/package.js"
38
42
  },
39
43
  "./typescript.json": {
40
44
  "default": "./typescript.json"
45
+ },
46
+ "./vite": {
47
+ "types": "./dist/vite/index.d.ts",
48
+ "default": "./dist/vite/index.js"
49
+ },
50
+ "./vite/proxy": {
51
+ "types": "./dist/vite/proxy.d.ts",
52
+ "default": "./dist/vite/proxy.js"
41
53
  }
42
54
  },
43
55
  "peerDependencies": {