@7n/rules 1.27.0 → 1.28.0
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/CHANGELOG.md +6 -0
- package/package.json +1 -5
- package/scripts/auto-rules.mjs +2 -3
- package/scripts/docs/auto-rules.md +1 -1
- package/scripts/lib/docs/glob-to-regex.md +31 -0
- package/scripts/lib/docs/index.md +2 -0
- package/scripts/lib/docs/js-source-signals.md +32 -0
- package/scripts/lib/glob-to-regex.mjs +79 -0
- package/scripts/lib/js-source-signals.mjs +50 -0
- package/scripts/utils/ast-scan-utils.mjs +2 -2
- package/scripts/utils/docs/ast-scan-utils.md +1 -1
- package/rules/bun/bunfig/bunfig.mdc +0 -17
- package/rules/bun/bunfig/bunfig.rego +0 -29
- package/rules/bun/bunfig/concern.json +0 -9
- package/rules/bun/bunfig/template/bunfig.toml.snippet.toml +0 -2
- package/rules/bun/docs/index.md +0 -11
- package/rules/bun/layout/concern.json +0 -16
- package/rules/bun/layout/docs/fix-layout.md +0 -29
- package/rules/bun/layout/docs/main.md +0 -34
- package/rules/bun/layout/fix-layout.mjs +0 -63
- package/rules/bun/layout/layout.mdc +0 -60
- package/rules/bun/layout/main.mjs +0 -53
- package/rules/bun/licensee/concern.json +0 -7
- package/rules/bun/licensee/docs/fix-licensee.md +0 -27
- package/rules/bun/licensee/docs/index.md +0 -12
- package/rules/bun/licensee/docs/main.md +0 -30
- package/rules/bun/licensee/fix-licensee.mjs +0 -31
- package/rules/bun/licensee/main.mjs +0 -68
- package/rules/bun/lint-surface/concern.json +0 -3
- package/rules/bun/lint-surface/lint-surface.mdc +0 -13
- package/rules/bun/main.json +0 -1
- package/rules/bun/main.mdc +0 -11
- package/rules/bun/package_json/concern.json +0 -9
- package/rules/bun/package_json/docs/fix-package_json.md +0 -28
- package/rules/bun/package_json/docs/index.md +0 -9
- package/rules/bun/package_json/fix-package_json.mjs +0 -311
- package/rules/bun/package_json/package_json.mdc +0 -14
- package/rules/bun/package_json/package_json.rego +0 -64
- package/rules/bun/package_json/template/package.json.deny.json +0 -4
- package/rules/js/check/check.mdc +0 -26
- package/rules/js/check/concern.json +0 -19
- package/rules/js/check/docs/eslint-config.md +0 -56
- package/rules/js/check/docs/fix-check.md +0 -48
- package/rules/js/check/docs/index.md +0 -13
- package/rules/js/check/docs/main.md +0 -48
- package/rules/js/check/eslint-config.mjs +0 -262
- package/rules/js/check/fix-check.mjs +0 -82
- package/rules/js/check/main.mjs +0 -310
- package/rules/js/dep-policy/concern.json +0 -4
- package/rules/js/dep-policy/dep-policy.mdc +0 -36
- package/rules/js/dep-policy/docs/main.md +0 -35
- package/rules/js/dep-policy/main.mjs +0 -99
- package/rules/js/docs/index.md +0 -11
- package/rules/js/eslint/concern.json +0 -8
- package/rules/js/eslint/docs/fix-eslint.md +0 -50
- package/rules/js/eslint/docs/fix-worker.md +0 -31
- package/rules/js/eslint/docs/index.md +0 -11
- package/rules/js/eslint/docs/main.md +0 -35
- package/rules/js/eslint/fix-eslint.mjs +0 -160
- package/rules/js/eslint/fix-worker.mjs +0 -139
- package/rules/js/eslint/main.mjs +0 -115
- package/rules/js/file-extensions/concern.json +0 -3
- package/rules/js/file-extensions/file-extensions.mdc +0 -12
- package/rules/js/jscpd_config/concern.json +0 -11
- package/rules/js/jscpd_config/docs/fix-jscpd_config.md +0 -26
- package/rules/js/jscpd_config/docs/index.md +0 -9
- package/rules/js/jscpd_config/fix-jscpd_config.mjs +0 -3
- package/rules/js/jscpd_config/jscpd_config.mdc +0 -42
- package/rules/js/jscpd_config/jscpd_config.rego +0 -44
- package/rules/js/jscpd_config/template/.jscpd.json.snippet.json +0 -7
- package/rules/js/jscpd_duplicates/concern.json +0 -7
- package/rules/js/jscpd_duplicates/docs/main.md +0 -29
- package/rules/js/jscpd_duplicates/main.mjs +0 -69
- package/rules/js/knip/concern.json +0 -7
- package/rules/js/knip/docs/main.md +0 -32
- package/rules/js/knip/knip.mdc +0 -15
- package/rules/js/knip/main.mjs +0 -68
- package/rules/js/lint-findings/concern.json +0 -3
- package/rules/js/lint-findings/docs/main.md +0 -41
- package/rules/js/lint-findings/main.mjs +0 -125
- package/rules/js/main.json +0 -1
- package/rules/js/main.mdc +0 -18
- package/rules/js/package_json/concern.json +0 -9
- package/rules/js/package_json/docs/fix-package_json.md +0 -26
- package/rules/js/package_json/docs/index.md +0 -9
- package/rules/js/package_json/fix-package_json.mjs +0 -3
- package/rules/js/package_json/package_json.mdc +0 -15
- package/rules/js/package_json/package_json.rego +0 -142
- package/rules/js/package_json/template/package.json.snippet.json +0 -6
- package/rules/js/tooling/concern.json +0 -3
- package/rules/js/tooling/data/tooling/knip-canonical.json +0 -30
- package/rules/js/tooling/data/tooling/oxlint-canonical.json +0 -400
- package/rules/js/tooling/docs/main.md +0 -53
- package/rules/js/tooling/main.mjs +0 -183
- package/rules/js/utils_imports/concern.json +0 -4
- package/rules/js/utils_imports/docs/main.md +0 -50
- package/rules/js/utils_imports/main.mjs +0 -185
- package/rules/js/utils_imports/utils_imports.mdc +0 -15
- package/rules/js/vscode_extensions/concern.json +0 -11
- package/rules/js/vscode_extensions/docs/fix-vscode_extensions.md +0 -25
- package/rules/js/vscode_extensions/docs/index.md +0 -11
- package/rules/js/vscode_extensions/fix-vscode_extensions.mjs +0 -1
- package/rules/js/vscode_extensions/template/extensions.json.snippet.json +0 -6
- package/rules/js/vscode_extensions/vscode_extensions.mdc +0 -11
- package/rules/js/vscode_extensions/vscode_extensions.rego +0 -12
- package/rules/js-bun-db/connection/concern.json +0 -3
- package/rules/js-bun-db/connection/connection.mdc +0 -42
- package/rules/js-bun-db/docs/index.md +0 -11
- package/rules/js-bun-db/lib/bun-sql-scan.mjs +0 -1055
- package/rules/js-bun-db/lib/docs/bun-sql-scan.md +0 -63
- package/rules/js-bun-db/lib/docs/index.md +0 -11
- package/rules/js-bun-db/main.json +0 -1
- package/rules/js-bun-db/main.mdc +0 -8
- package/rules/js-bun-db/package_json/concern.json +0 -9
- package/rules/js-bun-db/package_json/package_json.mdc +0 -31
- package/rules/js-bun-db/package_json/package_json.rego +0 -15
- package/rules/js-bun-db/package_json/template/package.json.deny.json +0 -6
- package/rules/js-bun-db/pg_format_identifiers/concern.json +0 -3
- package/rules/js-bun-db/pg_format_identifiers/pg_format_identifiers.mdc +0 -104
- package/rules/js-bun-db/safety/concern.json +0 -4
- package/rules/js-bun-db/safety/docs/main.md +0 -34
- package/rules/js-bun-db/safety/main.mjs +0 -430
- package/rules/js-bun-db/safety/safety.mdc +0 -458
- package/rules/js-bun-redis/docs/index.md +0 -11
- package/rules/js-bun-redis/imports/concern.json +0 -4
- package/rules/js-bun-redis/imports/docs/main.md +0 -36
- package/rules/js-bun-redis/imports/imports.mdc +0 -47
- package/rules/js-bun-redis/imports/main.mjs +0 -88
- package/rules/js-bun-redis/lib/docs/index.md +0 -11
- package/rules/js-bun-redis/lib/docs/redis-imports.md +0 -227
- package/rules/js-bun-redis/lib/redis-imports.mjs +0 -130
- package/rules/js-bun-redis/main.json +0 -1
- package/rules/js-bun-redis/main.mdc +0 -8
- package/rules/js-bun-redis/package_json/concern.json +0 -9
- package/rules/js-bun-redis/package_json/package_json.mdc +0 -11
- package/rules/js-bun-redis/package_json/package_json.rego +0 -15
- package/rules/js-bun-redis/package_json/template/package.json.deny.json +0 -12
- package/rules/js-mssql/deps/concern.json +0 -4
- package/rules/js-mssql/deps/docs/main.md +0 -33
- package/rules/js-mssql/deps/main.mjs +0 -297
- package/rules/js-mssql/docs/index.md +0 -11
- package/rules/js-mssql/lib/docs/index.md +0 -11
- package/rules/js-mssql/lib/docs/mssql-pool-scan.md +0 -380
- package/rules/js-mssql/lib/mssql-pool-scan.mjs +0 -610
- package/rules/js-mssql/main.json +0 -1
- package/rules/js-mssql/main.mdc +0 -144
- package/rules/js-mssql/mssql-tvp/concern.json +0 -3
- package/rules/js-mssql/mssql-tvp/mssql-tvp.mdc +0 -77
- package/rules/js-mssql/package_json/concern.json +0 -9
- package/rules/js-mssql/package_json/package_json.mdc +0 -9
- package/rules/js-mssql/package_json/package_json.rego +0 -57
- package/rules/js-run/configmap/concern.json +0 -9
- package/rules/js-run/configmap/configmap.mdc +0 -37
- package/rules/js-run/configmap/configmap.rego +0 -21
- package/rules/js-run/configmap/template/configmap.yaml.contains.yml +0 -4
- package/rules/js-run/docs/index.md +0 -11
- package/rules/js-run/jsconfig/concern.json +0 -9
- package/rules/js-run/jsconfig/docs/fix-jsconfig.md +0 -29
- package/rules/js-run/jsconfig/docs/index.md +0 -9
- package/rules/js-run/jsconfig/fix-jsconfig.mjs +0 -119
- package/rules/js-run/jsconfig/jsconfig.mdc +0 -48
- package/rules/js-run/jsconfig/jsconfig.rego +0 -59
- package/rules/js-run/jsconfig/template/jsconfig.json.snippet.json +0 -10
- package/rules/js-run/lib/bunyan-imports.mjs +0 -98
- package/rules/js-run/lib/check-env-scan.mjs +0 -338
- package/rules/js-run/lib/conn-file-rules.mjs +0 -214
- package/rules/js-run/lib/conn-imports-scan.mjs +0 -154
- package/rules/js-run/lib/docs/bunyan-imports.md +0 -121
- package/rules/js-run/lib/docs/check-env-scan.md +0 -438
- package/rules/js-run/lib/docs/conn-file-rules.md +0 -304
- package/rules/js-run/lib/docs/conn-imports-scan.md +0 -208
- package/rules/js-run/lib/docs/index.md +0 -16
- package/rules/js-run/lib/docs/promise-settimeout-scan.md +0 -334
- package/rules/js-run/lib/docs/temporal-scan.md +0 -29
- package/rules/js-run/lib/promise-settimeout-scan.mjs +0 -128
- package/rules/js-run/lib/temporal-scan.mjs +0 -52
- package/rules/js-run/main.json +0 -1
- package/rules/js-run/main.mdc +0 -16
- package/rules/js-run/package_json/concern.json +0 -9
- package/rules/js-run/package_json/package_json.mdc +0 -44
- package/rules/js-run/package_json/package_json.rego +0 -37
- package/rules/js-run/package_json/template/package.json.deny.json +0 -22
- package/rules/js-run/project-structure/concern.json +0 -3
- package/rules/js-run/project-structure/project-structure.mdc +0 -11
- package/rules/js-run/runtime/concern.json +0 -12
- package/rules/js-run/runtime/docs/fix-runtime.md +0 -27
- package/rules/js-run/runtime/docs/main.md +0 -35
- package/rules/js-run/runtime/fix-runtime.mjs +0 -46
- package/rules/js-run/runtime/main.mjs +0 -494
- package/rules/js-run/runtime/runtime.mdc +0 -184
- package/rules/js-run/scope/concern.json +0 -3
- package/rules/js-run/scope/scope.mdc +0 -11
- package/rules/npm-module/docs/index.md +0 -11
- package/rules/npm-module/emit_types_config/concern.json +0 -9
- package/rules/npm-module/emit_types_config/docs/fix-emit_types_config.md +0 -25
- package/rules/npm-module/emit_types_config/docs/index.md +0 -9
- package/rules/npm-module/emit_types_config/emit_types_config.mdc +0 -43
- package/rules/npm-module/emit_types_config/emit_types_config.rego +0 -28
- package/rules/npm-module/emit_types_config/fix-emit_types_config.mjs +0 -5
- package/rules/npm-module/emit_types_config/template/tsconfig.emit-types.json.snippet.json +0 -9
- package/rules/npm-module/header_doc_pointer/concern.json +0 -5
- package/rules/npm-module/header_doc_pointer/docs/main.md +0 -40
- package/rules/npm-module/header_doc_pointer/header_doc_pointer.mdc +0 -18
- package/rules/npm-module/header_doc_pointer/main.mjs +0 -131
- package/rules/npm-module/main.json +0 -1
- package/rules/npm-module/main.mdc +0 -36
- package/rules/npm-module/npm_package_json/concern.json +0 -9
- package/rules/npm-module/npm_package_json/docs/fix-npm_package_json.md +0 -27
- package/rules/npm-module/npm_package_json/docs/index.md +0 -9
- package/rules/npm-module/npm_package_json/fix-npm_package_json.mjs +0 -5
- package/rules/npm-module/npm_package_json/npm_package_json.mdc +0 -57
- package/rules/npm-module/npm_package_json/npm_package_json.rego +0 -73
- package/rules/npm-module/npm_package_json/template/package.json.snippet.json +0 -1
- package/rules/npm-module/package_structure/concern.json +0 -5
- package/rules/npm-module/package_structure/docs/main.md +0 -37
- package/rules/npm-module/package_structure/main.mjs +0 -515
- package/rules/npm-module/package_structure/package_structure.mdc +0 -63
- package/rules/npm-module/root_package_json/concern.json +0 -9
- package/rules/npm-module/root_package_json/docs/fix-root_package_json.md +0 -26
- package/rules/npm-module/root_package_json/docs/index.md +0 -9
- package/rules/npm-module/root_package_json/fix-root_package_json.mjs +0 -5
- package/rules/npm-module/root_package_json/root_package_json.mdc +0 -41
- package/rules/npm-module/root_package_json/root_package_json.rego +0 -28
- package/rules/npm-module/root_package_json/template/package.json.snippet.json +0 -1
- package/rules/npm-module/rule_meta/concern.json +0 -8
- package/rules/npm-module/rule_meta/docs/main.md +0 -35
- package/rules/npm-module/rule_meta/main.mjs +0 -119
- package/rules/npm-module/rule_meta/rule_meta.mdc +0 -11
- package/rules/npm-module/skill_meta/concern.json +0 -5
- package/rules/npm-module/skill_meta/docs/main.md +0 -149
- package/rules/npm-module/skill_meta/main.mjs +0 -91
- package/rules/npm-module/skill_meta/skill_meta.mdc +0 -11
- package/rules/tool-surface/docs/index.md +0 -11
- package/rules/tool-surface/main.json +0 -6
- package/rules/tool-surface/main.mdc +0 -72
- package/rules/vue/composition-api/composition-api.mdc +0 -82
- package/rules/vue/composition-api/concern.json +0 -3
- package/rules/vue/docs/index.md +0 -11
- package/rules/vue/lib/docs/index.md +0 -11
- package/rules/vue/lib/docs/vue-forbidden-imports.md +0 -265
- package/rules/vue/lib/vue-forbidden-imports.mjs +0 -264
- package/rules/vue/main.json +0 -1
- package/rules/vue/main.mdc +0 -18
- package/rules/vue/nheader-layout/concern.json +0 -3
- package/rules/vue/nheader-layout/nheader-layout.mdc +0 -171
- package/rules/vue/package_json/concern.json +0 -9
- package/rules/vue/package_json/package_json.mdc +0 -30
- package/rules/vue/package_json/package_json.rego +0 -140
- package/rules/vue/packages/concern.json +0 -6
- package/rules/vue/packages/docs/index.md +0 -11
- package/rules/vue/packages/docs/main.md +0 -35
- package/rules/vue/packages/main.mjs +0 -575
- package/rules/vue/packages/packages.mdc +0 -56
- package/rules/vue/quasar-ui/concern.json +0 -3
- package/rules/vue/quasar-ui/quasar-ui.mdc +0 -32
- package/rules/vue/structure/concern.json +0 -3
- package/rules/vue/structure/structure.mdc +0 -101
- package/rules/vue/testing/concern.json +0 -3
- package/rules/vue/testing/testing.mdc +0 -40
- package/rules/vue/tfm-translations/concern.json +0 -7
- package/rules/vue/tfm-translations/docs/main.md +0 -29
- package/rules/vue/tfm-translations/main.mjs +0 -55
- package/rules/vue/tfm-translations/tfm-translations.mdc +0 -32
- package/rules/vue/vite-config/concern.json +0 -3
- package/rules/vue/vite-config/vite-config.mdc +0 -153
- package/rules/vue/vite-env/concern.json +0 -3
- package/rules/vue/vite-env/vite-env.mdc +0 -61
package/rules/vue/main.mdc
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Vue
|
|
3
|
-
version: '2.3'
|
|
4
|
-
globs: "**/*.vue"
|
|
5
|
-
alwaysApply: false
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Vue 3 Composition API — правила для .cursorrules
|
|
9
|
-
|
|
10
|
-
Правило охоплює стандарти написання Vue 3 SFC з Composition API, конфігурацію Vite-проєкту, UI-бібліотеки, заборонені патерни та вимоги до тестування.
|
|
11
|
-
|
|
12
|
-
## Швидкий gate через conftest
|
|
13
|
-
|
|
14
|
-
Rego-перевірки (запускаються через `npx @7n/rules fix vue`):
|
|
15
|
-
|
|
16
|
-
## Перевірка
|
|
17
|
-
|
|
18
|
-
`npx @7n/rules fix vue` — перевіряє залежності, `vite.config`, наявність **`src/vite-env.d.ts`** з `/// <reference types="vite/client" />` та **`jsconfig.json`** у корені Vue-пакета; обходить джерела Vue-пакета (`.vue`, `.ts`, `.js` тощо) на заборонені value-імпорти з модуля `vue` (дозволені лише type-only та side-effect `import 'vue'`) і додатково сканує `.vue` SFC на імпорти Node-нативних модулів (`node:*` префікс або bare-ім'я вбудованого модуля Node — `fs`, `path`, `timers/promises` тощо). Імпорти аналізуються через **oxc-parser** (`module.staticImports`); для `.vue` вміст `<script>` витягується з SFC, далі той самий парсер (логіка в `npm/rules/vue/lib/vue-forbidden-imports.mjs`).
|
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
## NHeader — телепорт-слоти на сторінках
|
|
2
|
-
|
|
3
|
-
У проектах з `NHeader` використовуй `<teleport>` для вбудовування контенту сторінки в шапку:
|
|
4
|
-
|
|
5
|
-
| Слот | Призначення |
|
|
6
|
-
| --- | --- |
|
|
7
|
-
| `#header-subtitle` | Заголовок сторінки (якщо потрібно перевизначити subtitle) |
|
|
8
|
-
| `#header-center` | Важливі повідомлення та елементи управління |
|
|
9
|
-
| `#header-filters` | Фільтри, кнопки та інші елементи управління сторінки |
|
|
10
|
-
|
|
11
|
-
Оскільки `NHeader` за замовчуванням темний, додавай до полів і селектів у телепортах: `dark`, `standout="bg-white text-primary"`, `:options-dark="false"`.
|
|
12
|
-
|
|
13
|
-
Завжди обгортай `<teleport>` в `v-if="mounted"` (де `mounted` — `$ref(false)`, що встановлюється в `onMounted`), щоб уникнути помилки відсутності target-елемента при SSR / першому рендері.
|
|
14
|
-
|
|
15
|
-
```vue
|
|
16
|
-
<template>
|
|
17
|
-
<q-page>
|
|
18
|
-
<!-- ФІЛЬТРИ В ШАПЦІ -->
|
|
19
|
-
<teleport v-if="mounted" to="#header-filters">
|
|
20
|
-
<div class="col row items-center n-gap-sm q-pa-sm">
|
|
21
|
-
<q-input
|
|
22
|
-
v-model="pageStore.filterName"
|
|
23
|
-
:label="t`Поиск по названию`"
|
|
24
|
-
debounce="200"
|
|
25
|
-
standout="bg-white text-primary"
|
|
26
|
-
clearable
|
|
27
|
-
dense
|
|
28
|
-
dark
|
|
29
|
-
class="col"
|
|
30
|
-
style="min-width: 120px">
|
|
31
|
-
<template #prepend>
|
|
32
|
-
<q-icon name="search" />
|
|
33
|
-
</template>
|
|
34
|
-
</q-input>
|
|
35
|
-
|
|
36
|
-
<n-select-multi
|
|
37
|
-
v-model="pageStore.filterRequestTypes"
|
|
38
|
-
:options="requestTypeOptions"
|
|
39
|
-
:label="t`Тип запроса`"
|
|
40
|
-
dark
|
|
41
|
-
standout="bg-white text-primary"
|
|
42
|
-
:options-dark="false"
|
|
43
|
-
style="min-width: 180px; max-width: 400px"
|
|
44
|
-
dense
|
|
45
|
-
emit-value
|
|
46
|
-
map-options
|
|
47
|
-
clearable
|
|
48
|
-
searchable
|
|
49
|
-
:stack-label="false" />
|
|
50
|
-
|
|
51
|
-
<q-btn
|
|
52
|
-
@click="addItem"
|
|
53
|
-
icon="add"
|
|
54
|
-
:label="t`Добавить`"
|
|
55
|
-
color="primary"
|
|
56
|
-
no-caps
|
|
57
|
-
padding="8px 12px"
|
|
58
|
-
unelevated />
|
|
59
|
-
</div>
|
|
60
|
-
</teleport>
|
|
61
|
-
|
|
62
|
-
<!-- ОСНОВНИЙ КОНТЕНТ -->
|
|
63
|
-
...
|
|
64
|
-
</q-page>
|
|
65
|
-
</template>
|
|
66
|
-
<script setup>
|
|
67
|
-
const mounted = $ref(false)
|
|
68
|
-
onMounted(() => { mounted = true })
|
|
69
|
-
</script>
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
## Layout з NHeader
|
|
73
|
-
|
|
74
|
-
Для нових layout-ів використовуй `NHeader` з вбудованими `NLang` і `NMenu`.
|
|
75
|
-
|
|
76
|
-
```vue
|
|
77
|
-
<template>
|
|
78
|
-
<q-layout view="hHh Lpr lFf">
|
|
79
|
-
<n-header
|
|
80
|
-
v-model="leftSideOpened"
|
|
81
|
-
:logo="baseUrl + 'logo.png'"
|
|
82
|
-
:logo-url="homeUrl"
|
|
83
|
-
title="My App"
|
|
84
|
-
:subtitle="subtitle"
|
|
85
|
-
:username="userName"
|
|
86
|
-
toolbar-dark>
|
|
87
|
-
<template #top-toolbar>
|
|
88
|
-
<div class="platform-ios-only q-py-lg" />
|
|
89
|
-
</template>
|
|
90
|
-
<div>default slot content</div>
|
|
91
|
-
</n-header>
|
|
92
|
-
|
|
93
|
-
<!-- ЛЕВАЯ КОЛОНКА -->
|
|
94
|
-
<q-drawer v-model="leftSideOpened" :breakpoint="700" :width="300" overlay class="col column shadow-5 bg-grey-1">
|
|
95
|
-
<div class="platform-ios-only q-py-lg" />
|
|
96
|
-
<div v-if="!$q.screen.gt.xs" class="q-pa-sm row items-center">
|
|
97
|
-
<q-icon name="account_circle" color="primary" size="32px" class="q-mr-sm" />
|
|
98
|
-
<div class="text-subtitle1">{{ user.name }}</div>
|
|
99
|
-
</div>
|
|
100
|
-
<n-menu v-model="activeMenu" :menu="menu" />
|
|
101
|
-
<q-space />
|
|
102
|
-
<n-menu :menu="homeMenu" />
|
|
103
|
-
<div class="platform-ios-only q-py-md" />
|
|
104
|
-
</q-drawer>
|
|
105
|
-
|
|
106
|
-
<q-page-container>
|
|
107
|
-
<router-view />
|
|
108
|
-
</q-page-container>
|
|
109
|
-
</q-layout>
|
|
110
|
-
</template>
|
|
111
|
-
<script setup>
|
|
112
|
-
import { lang, tf as tfm } from '@nitra/tfm'
|
|
113
|
-
const t = tfm.bind({ tr: getTr() })
|
|
114
|
-
|
|
115
|
-
const baseUrl = import.meta.env.BASE_URL
|
|
116
|
-
const homeUrl = String.raw`https:\\` + import.meta.env.VITE_DOMAIN
|
|
117
|
-
|
|
118
|
-
// Ліва колонка
|
|
119
|
-
const leftSideOpened = $ref(false)
|
|
120
|
-
const activeMenu = $ref(null)
|
|
121
|
-
|
|
122
|
-
// Заголовок у шапці з поточного пункту меню
|
|
123
|
-
const subtitle = computed(() => (activeMenu ? getTr()[activeMenu.labelKey]?.[lang.value] || activeMenu?.labelKey : ''))
|
|
124
|
-
|
|
125
|
-
// Меню
|
|
126
|
-
const menu = computed(() =>
|
|
127
|
-
[
|
|
128
|
-
{
|
|
129
|
-
icon: 'sym_o_store',
|
|
130
|
-
label: t`Клиенты`,
|
|
131
|
-
labelKey: t`Клиенты`,
|
|
132
|
-
routeName: 'customer'
|
|
133
|
-
},
|
|
134
|
-
{
|
|
135
|
-
icon: 'sym_o_route',
|
|
136
|
-
label: t`Маршруты и визиты`,
|
|
137
|
-
items: [
|
|
138
|
-
{
|
|
139
|
-
icon: 'sym_o_route',
|
|
140
|
-
label: t`Маршруты`,
|
|
141
|
-
labelKey: t`Маршруты`,
|
|
142
|
-
routeName: 'route'
|
|
143
|
-
},
|
|
144
|
-
{
|
|
145
|
-
icon: 'sym_o_event_upcoming',
|
|
146
|
-
label: t`Переносы маршрутов`,
|
|
147
|
-
labelKey: t`Переносы маршрутов`,
|
|
148
|
-
routeName: 'route_postpone'
|
|
149
|
-
}
|
|
150
|
-
]
|
|
151
|
-
}
|
|
152
|
-
].filter(item => {
|
|
153
|
-
if (item.items?.length) {
|
|
154
|
-
item.items = item.items.filter(i => can[i.permissionRoute || i.routeName])
|
|
155
|
-
return item.items.length > 0
|
|
156
|
-
}
|
|
157
|
-
return can[item.routeName]
|
|
158
|
-
})
|
|
159
|
-
)
|
|
160
|
-
|
|
161
|
-
/**
|
|
162
|
-
* LOCALIZATION
|
|
163
|
-
* @returns {object} translations
|
|
164
|
-
*/
|
|
165
|
-
function getTr() {
|
|
166
|
-
return {
|
|
167
|
-
Клиенты: { en: 'Customers', ro: 'Clienți', tr: 'Müşteriler' }
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
</script>
|
|
171
|
-
```
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
## Залежності Vue+Vite пакета — канонічний набір і заборони
|
|
2
|
-
|
|
3
|
-
Rego-пакет: `vue.package_json`
|
|
4
|
-
|
|
5
|
-
Цільові файли: `**/package.json`
|
|
6
|
-
|
|
7
|
-
Перевірка активна лише якщо у `dependencies` присутній `vue`.
|
|
8
|
-
|
|
9
|
-
**Обов'язкові залежності:**
|
|
10
|
-
|
|
11
|
-
- `devDependencies.vite` — мажорна версія ≥ 8
|
|
12
|
-
- `devDependencies.@vitejs/plugin-vue`
|
|
13
|
-
- `vue-macros` (dependencies або devDependencies)
|
|
14
|
-
- `unplugin-auto-import` (dependencies або devDependencies)
|
|
15
|
-
- `vite-plugin-vue-layouts-next` (dependencies або devDependencies)
|
|
16
|
-
|
|
17
|
-
**Заборонені залежності (у будь-якій групі):**
|
|
18
|
-
|
|
19
|
-
- `esbuild` — замінено на rolldown
|
|
20
|
-
- `vitest` — замінено на Bun Test Runner (`bun test`)
|
|
21
|
-
- `jsdom` — замінено на happy-dom
|
|
22
|
-
|
|
23
|
-
Приклади:
|
|
24
|
-
|
|
25
|
-
```
|
|
26
|
-
✓ "devDependencies": { "vite": "^8.0.0", "@vitejs/plugin-vue": "^6.0.0", "vue-macros": "^3.0.0", "unplugin-auto-import": "^20.0.0", "vite-plugin-vue-layouts-next": "^1.0.0" }
|
|
27
|
-
✗ "devDependencies": { "vite": "^7.0.0", "esbuild": "^0.25.0", "vitest": "^3.0.0", "jsdom": "^25.0.0" }
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
Пакети без `vue` у `dependencies` — ігноруються повністю.
|
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
# Порт перевірки версій з `package.json` для Vue+Vite пакетів з
|
|
2
|
-
# `npm/scripts/rules/vue/fix.mjs` (vue.mdc).
|
|
3
|
-
#
|
|
4
|
-
# Запуск (локально, у Vue+Vite-пакеті):
|
|
5
|
-
# conftest test path/to/package.json -p npm/policy/vue \
|
|
6
|
-
# --namespace vue.package_json
|
|
7
|
-
#
|
|
8
|
-
# Перевіряє: якщо в `dependencies` є `vue`, то потрібні канонічні Vue/Vite
|
|
9
|
-
# залежності, `devDependencies.vite` має бути мажорної версії ≥ 8, а `esbuild`
|
|
10
|
-
# (міграція на rolldown), `vitest` (заміна на Bun Test Runner) і `jsdom`
|
|
11
|
-
# (заміна на happy-dom) у dependencies/devDependencies заборонені.
|
|
12
|
-
#
|
|
13
|
-
# AST-сканування коду (заборона явних value-імпортів `from 'vue'`, заборона
|
|
14
|
-
# Node-нативних модулів у `.vue` SFC, перевірка `vite.config` на
|
|
15
|
-
# `process.env.npm_lifecycle_event`, vue-macros, auto-import тощо), а також
|
|
16
|
-
# FS-перевірки (`src/vite-env.d.ts`, `jsconfig.json` у корені пакета) — у JS.
|
|
17
|
-
#
|
|
18
|
-
# Структура каталогу збігається зі шляхом пакету (regal: directory-package-mismatch).
|
|
19
|
-
# Конвенція проєкту — `import rego.v1` + multi-value `deny contains msg if { … }`
|
|
20
|
-
# (.cursor/rules/conftest.mdc). Лінт — `bun run lint-rego` (regal).
|
|
21
|
-
package vue.package_json
|
|
22
|
-
|
|
23
|
-
import rego.v1
|
|
24
|
-
|
|
25
|
-
deny contains msg if {
|
|
26
|
-
uses_vue
|
|
27
|
-
not vite_in_dev_dependencies
|
|
28
|
-
msg := "Vue-пакет: відсутня залежність `vite` у devDependencies (vue.mdc)"
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
deny contains msg if {
|
|
32
|
-
uses_vue
|
|
33
|
-
vite_in_dev_dependencies
|
|
34
|
-
not vite_major_at_least_8
|
|
35
|
-
vite_range := input.devDependencies.vite
|
|
36
|
-
msg := sprintf("Vue-пакет: vite має бути >= 8 (зараз %q) (vue.mdc)", [vite_range])
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
deny contains msg if {
|
|
40
|
-
uses_vue
|
|
41
|
-
vite_in_dev_dependencies
|
|
42
|
-
vite_major_at_least_8
|
|
43
|
-
not vite_at_least_8_1
|
|
44
|
-
vite_range := input.devDependencies.vite
|
|
45
|
-
msg := sprintf("Vue-пакет: vite має бути >= 8.1 (зараз %q) (vue.mdc)", [vite_range])
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
deny contains msg if {
|
|
49
|
-
uses_vue
|
|
50
|
-
not "@vitejs/plugin-vue" in dev_dependency_names
|
|
51
|
-
msg := "Vue-пакет: @vitejs/plugin-vue відсутній у devDependencies (vue.mdc)"
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
deny contains msg if {
|
|
55
|
-
uses_vue
|
|
56
|
-
not "vue-macros" in all_dependency_names
|
|
57
|
-
msg := "Vue-пакет: vue-macros відсутній (vue.mdc)"
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
deny contains msg if {
|
|
61
|
-
uses_vue
|
|
62
|
-
not "unplugin-auto-import" in all_dependency_names
|
|
63
|
-
msg := "Vue-пакет: unplugin-auto-import відсутній (vue.mdc)"
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
deny contains msg if {
|
|
67
|
-
uses_vue
|
|
68
|
-
not "vite-plugin-vue-layouts-next" in all_dependency_names
|
|
69
|
-
msg := "Vue-пакет: vite-plugin-vue-layouts-next відсутній (vue.mdc)"
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
deny contains msg if {
|
|
73
|
-
uses_vue
|
|
74
|
-
"esbuild" in all_dependency_names
|
|
75
|
-
msg := "Vue-пакет: esbuild заборонено — заміни на rolldown і прибери залежність (vue.mdc)"
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
deny contains msg if {
|
|
79
|
-
uses_vue
|
|
80
|
-
"vitest" in all_dependency_names
|
|
81
|
-
msg := "Vue-пакет: vitest заборонено — використовуй Bun Test Runner (`bun test`) і прибери залежність (vue.mdc)"
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
deny contains msg if {
|
|
85
|
-
uses_vue
|
|
86
|
-
"jsdom" in all_dependency_names
|
|
87
|
-
msg := "Vue-пакет: jsdom заборонено — використовуй happy-dom і прибери залежність (vue.mdc)"
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
# ── helpers ────────────────────────────────────────────────────────────────
|
|
91
|
-
|
|
92
|
-
uses_vue if {
|
|
93
|
-
"vue" in object.keys(object.get(input, "dependencies", {}))
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
dependency_names := {n | some n in object.keys(object.get(input, "dependencies", {}))}
|
|
97
|
-
|
|
98
|
-
dev_dependency_names := {n | some n in object.keys(object.get(input, "devDependencies", {}))}
|
|
99
|
-
|
|
100
|
-
all_dependency_names contains n if {
|
|
101
|
-
some n in dependency_names
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
all_dependency_names contains n if {
|
|
105
|
-
some n in dev_dependency_names
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
vite_in_dev_dependencies if {
|
|
109
|
-
"vite" in object.keys(object.get(input, "devDependencies", {}))
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
vite_major_at_least_8 if {
|
|
113
|
-
range := input.devDependencies.vite
|
|
114
|
-
|
|
115
|
-
# Перша мажорна цифра з рядка: `^8`, `>=8.0.0`, `8.x` → 8.
|
|
116
|
-
match := regex.find_n(`\d+`, range, 1)
|
|
117
|
-
count(match) > 0
|
|
118
|
-
to_number(match[0]) >= 8
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
vite_at_least_8_1 if {
|
|
122
|
-
range := input.devDependencies.vite
|
|
123
|
-
|
|
124
|
-
# Витягуємо першу пару цифр (мажор.мінор) із semver-рядка.
|
|
125
|
-
# Якщо мажор > 8 — завжди true; якщо мажор = 8 — мінор має бути >= 1.
|
|
126
|
-
parts := regex.find_n(`\d+`, range, 2)
|
|
127
|
-
count(parts) >= 1
|
|
128
|
-
major := to_number(parts[0])
|
|
129
|
-
major > 8
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
vite_at_least_8_1 if {
|
|
133
|
-
range := input.devDependencies.vite
|
|
134
|
-
|
|
135
|
-
parts := regex.find_n(`\d+`, range, 2)
|
|
136
|
-
count(parts) >= 2
|
|
137
|
-
major := to_number(parts[0])
|
|
138
|
-
major == 8
|
|
139
|
-
to_number(parts[1]) >= 1
|
|
140
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: JS Module
|
|
3
|
-
title: main.mjs
|
|
4
|
-
resource: npm/rules/vue/packages/main.mjs
|
|
5
|
-
docgen:
|
|
6
|
-
crc: 65e272f3
|
|
7
|
-
model: omlx/gemma-4-e4b-it-OptiQ-4bit
|
|
8
|
-
score: 100
|
|
9
|
-
issues: judge:inaccurate:0.98
|
|
10
|
-
judgeModel: openai-codex/gpt-5.4-mini
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
## Огляд
|
|
14
|
-
|
|
15
|
-
Модуль визначає, чи є поточний пакет бібліотекою компонентів Vue, та проводить валідацію проєкту на відповідність стандартам, визначеним у `vue.mdc`, враховуючи конфігураційні файли `package-lock.json`, `jsconfig.json`, `package.json`, `extensions.json`.
|
|
16
|
-
|
|
17
|
-
isVueComponentLibraryPkg визначає, чи є пакет бібліотекою компонентів Vue, аналізуючи його залежності.
|
|
18
|
-
main перевіряє відповідність проєкту правилам vue.mdc для пакетів з Vue, включаючи перевірки конфігурації Vite, імпортів, `esbuild` та рекомендації IDE. Логіка роботи не викликає винятків назовні (fail-safe), ігноруючи каталоги `.git` та `node_modules`. (vue.mdc)
|
|
19
|
-
|
|
20
|
-
## Поведінка
|
|
21
|
-
|
|
22
|
-
Поведінка
|
|
23
|
-
isVueComponentLibraryPkg визначає, чи є пакет бібліотекою компонентів Vue, аналізуючи його залежності.
|
|
24
|
-
main перевіряє відповідність проєкту правилам vue.mdc для пакетів з Vue, включаючи перевірки конфігурації Vite, імпортів, `esbuild` та рекомендації IDE. При цьому ігноруються каталоги `.git` та `node_modules`, а також файли локів `package-lock.json`, `bun.lock` тощо.
|
|
25
|
-
|
|
26
|
-
## Публічний API
|
|
27
|
-
|
|
28
|
-
isVueComponentLibraryPkg — визначає, чи повинен проект розглядатися як бібліотека компонентів Vue, що впливає на правила імпорту в IDE.
|
|
29
|
-
main — гарантує, що всі компоненти у робочому просторі коректно декларують залежність від Vue відповідно до стандартів.
|
|
30
|
-
|
|
31
|
-
## Гарантії поведінки
|
|
32
|
-
|
|
33
|
-
- Read-only: не виконує операцій запису (ФС/БД).
|
|
34
|
-
- Перехоплює помилки і не пропускає винятків назовні (fail-safe).
|
|
35
|
-
- Свідомо пропускає шляхи: `.git`, `node_modules`.
|