@nitra/cursor 1.8.80 → 1.8.81
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/mdc/abie.mdc +4 -2
- package/package.json +1 -1
- package/scripts/check-abie.mjs +16 -7
package/mdc/abie.mdc
CHANGED
|
@@ -36,7 +36,7 @@ spec:
|
|
|
36
36
|
|
|
37
37
|
## k8s: overlay **HTTPRoute** (**ua** / **ru**)
|
|
38
38
|
|
|
39
|
-
За наявності **Deployment** під **k8s** і наявності **Vite** (**`vite.config.js`**, **`vite.config.mjs`** або **`vite.config.ts`** у каталозі пакета) у **`ua/kustomization.yaml`** та **`ru/kustomization.yaml`** цього пакета потрібні **inline JSON6902** у **`patches`**: **target** **`kind: HTTPRoute`**, **непорожній `name`** (як у маніфесті маршруту). Мають бути зміни **`/spec/hostnames`** (домени abie — у скрипті) та **`/spec/parentRefs/0/namespace`** (**`ua`** / **`ru`**). Для **ru** — анотація **`gwin.yandex.cloud/rules.http.upgradeTypes: websocket
|
|
39
|
+
За наявності **Deployment** під **k8s** і наявності **Vite** (**`vite.config.js`**, **`vite.config.mjs`** або **`vite.config.ts`** у каталозі пакета) у **`ua/kustomization.yaml`** та **`ru/kustomization.yaml`** цього пакета потрібні **inline JSON6902** у **`patches`**: **target** **`kind: HTTPRoute`**, **непорожній `name`** (як у маніфесті маршруту). Мають бути зміни **`/spec/hostnames`** (домени abie — у скрипті) та **`/spec/parentRefs/0/namespace`** (**`ua`** / **`ru`**). Для **ru** — анотація **`gwin.yandex.cloud/rules.http.upgradeTypes: websocket`** лише якщо в **тому ж** **`ru/kustomization.yaml`** є згадка **`HASURA_GRAPHQL_JWT_SECRET`** (типово patch на **ConfigMap** Hasura). Як обирати **`op`** (**add** / **replace** тощо) у patch — **k8s.mdc** (розділ про JSON patch у kustomization).
|
|
40
40
|
|
|
41
41
|
```yaml title="…/ua/kustomization.yaml (фрагмент)"
|
|
42
42
|
- target:
|
|
@@ -66,7 +66,9 @@ spec:
|
|
|
66
66
|
value: ru
|
|
67
67
|
```
|
|
68
68
|
|
|
69
|
-
|
|
69
|
+
Якщо в цьому ж файлі є **`HASURA_GRAPHQL_JWT_SECRET`** (Hasura з JWT), додай окремий patch на **HTTPRoute** з анотацією для WebSocket:
|
|
70
|
+
|
|
71
|
+
```yaml title="…/ru/kustomization.yaml (фрагмент, після patch на ConfigMap з HASURA_GRAPHQL_JWT_SECRET)"
|
|
70
72
|
- target:
|
|
71
73
|
kind: HTTPRoute
|
|
72
74
|
name: my-httproute
|
package/package.json
CHANGED
package/scripts/check-abie.mjs
CHANGED
|
@@ -23,7 +23,8 @@
|
|
|
23
23
|
*
|
|
24
24
|
* **HTTPRoute (overlay):** лише якщо в каталозі пакета (батько **`k8s`**) є **`vite.config.js`**, **`vite.config.mjs`** або **`vite.config.ts`**
|
|
25
25
|
* — тоді в **`ua`/`ru` kustomization** потрібен patch на **`kind: HTTPRoute`**, **непорожній `target.name`**: **`/spec/hostnames`**
|
|
26
|
-
* (домени abie.mdc), **`/spec/parentRefs/0/namespace`** (**ua** / **ru**); для **ru** — **`gwin.yandex.cloud/rules.http.upgradeTypes: websocket
|
|
26
|
+
* (домени abie.mdc), **`/spec/parentRefs/0/namespace`** (**ua** / **ru**); для **ru** — **`gwin.yandex.cloud/rules.http.upgradeTypes: websocket`**,
|
|
27
|
+
* якщо в тому ж **`kustomization.yaml`** згадується **`HASURA_GRAPHQL_JWT_SECRET`** (Hasura + JWT).
|
|
27
28
|
* Вибір **`op`** — **k8s.mdc**.
|
|
28
29
|
*/
|
|
29
30
|
import { existsSync } from 'node:fs'
|
|
@@ -39,6 +40,9 @@ import { walkDir } from './utils/walkDir.mjs'
|
|
|
39
40
|
|
|
40
41
|
const CONFIG_FILE = '.n-cursor.json'
|
|
41
42
|
|
|
43
|
+
/** Маркер у kustomization.yaml: якщо зустрічається у файлі — для overlay ru у patch HTTPRoute потрібна анотація gwin…websocket. */
|
|
44
|
+
const HASURA_JWT_SECRET_IN_KUSTOMIZATION = 'HASURA_GRAPHQL_JWT_SECRET'
|
|
45
|
+
|
|
42
46
|
/** Очікуваний URL **`$schema`** для **hc.yaml** (abie.mdc). */
|
|
43
47
|
export const ABIE_HC_SCHEMA_URL = 'https://datreeio.github.io/CRDs-catalog/networking.gke.io/healthcheckpolicy_v1.json'
|
|
44
48
|
|
|
@@ -602,11 +606,12 @@ export function getCombinedNginxRunPatchTextFromKustomization(raw) {
|
|
|
602
606
|
* Перевіряє сукупний текст patch(ів) **HTTPRoute** (будь-яке **target.name**) на відповідність abie.mdc.
|
|
603
607
|
* @param {string} combined текст одного або кількох inline **patch**, розділених символом нового рядка
|
|
604
608
|
* @param {'ua' | 'ru'} mode **ua** або **ru**
|
|
609
|
+
* @param {string} [fullKustomizationRaw] повний текст **kustomization.yaml** — для **ru** визначає, чи потрібна анотація **gwin…websocket** (лише якщо є **`HASURA_GRAPHQL_JWT_SECRET`**)
|
|
605
610
|
* @returns {string | null} повідомлення про помилку або **null**
|
|
606
611
|
*/
|
|
607
|
-
export function validateAbieNginxRunHttpRoutePatches(combined, mode) {
|
|
612
|
+
export function validateAbieNginxRunHttpRoutePatches(combined, mode, fullKustomizationRaw) {
|
|
608
613
|
if (typeof combined !== 'string' || combined.trim() === '') {
|
|
609
|
-
return `очікується patch target kind HTTPRoute з непорожнім target.name (hostnames, parentRefs namespace ${mode}; для ru —
|
|
614
|
+
return `очікується patch target kind HTTPRoute з непорожнім target.name (hostnames, parentRefs namespace ${mode}; для ru — gwin… websocket лише за наявності HASURA_GRAPHQL_JWT_SECRET у файлі) — abie.mdc`
|
|
610
615
|
}
|
|
611
616
|
if (!/path:\s*\/spec\/hostnames\b/m.test(combined)) {
|
|
612
617
|
return 'HTTPRoute: потрібен path /spec/hostnames у patch (abie.mdc)'
|
|
@@ -622,8 +627,12 @@ export function validateAbieNginxRunHttpRoutePatches(combined, mode) {
|
|
|
622
627
|
if (!namespaceOk) {
|
|
623
628
|
return `HTTPRoute: потрібен path /spec/parentRefs/0/namespace з value ${mode} (abie.mdc)`
|
|
624
629
|
}
|
|
625
|
-
|
|
626
|
-
|
|
630
|
+
const ruNeedsWebsocket =
|
|
631
|
+
mode === 'ru' &&
|
|
632
|
+
typeof fullKustomizationRaw === 'string' &&
|
|
633
|
+
fullKustomizationRaw.includes(HASURA_JWT_SECRET_IN_KUSTOMIZATION)
|
|
634
|
+
if (ruNeedsWebsocket && !/gwin\.yandex\.cloud\/rules\.http\.upgradeTypes:\s*['"]?websocket['"]?/m.test(combined)) {
|
|
635
|
+
return 'HTTPRoute (ru): за наявності HASURA_GRAPHQL_JWT_SECRET у kustomization потрібна анотація gwin.yandex.cloud/rules.http.upgradeTypes: websocket (abie.mdc)'
|
|
627
636
|
}
|
|
628
637
|
return null
|
|
629
638
|
}
|
|
@@ -636,7 +645,7 @@ export function validateAbieNginxRunHttpRoutePatches(combined, mode) {
|
|
|
636
645
|
*/
|
|
637
646
|
export function kustomizationHasAbieNginxRunHttpRoutePatch(raw, mode) {
|
|
638
647
|
const combined = getCombinedNginxRunPatchTextFromKustomization(raw)
|
|
639
|
-
return validateAbieNginxRunHttpRoutePatches(combined, mode) === null
|
|
648
|
+
return validateAbieNginxRunHttpRoutePatches(combined, mode, raw) === null
|
|
640
649
|
}
|
|
641
650
|
|
|
642
651
|
/**
|
|
@@ -947,7 +956,7 @@ async function ensureUaRuAbieHttpRoutePatches(root, yamlFilesAbs, fail, passFn)
|
|
|
947
956
|
return
|
|
948
957
|
}
|
|
949
958
|
const combined = getCombinedNginxRunPatchTextFromKustomization(raw)
|
|
950
|
-
const v = validateAbieNginxRunHttpRoutePatches(combined, 'ru')
|
|
959
|
+
const v = validateAbieNginxRunHttpRoutePatches(combined, 'ru', raw)
|
|
951
960
|
if (v !== null) {
|
|
952
961
|
fail(`${rel}: ${v}`)
|
|
953
962
|
return
|