@idem.agency/idem-ui 0.1.0 → 0.3.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/README.md ADDED
@@ -0,0 +1,86 @@
1
+ # @idem.agency/idem-ui
2
+
3
+ Раздатчик готовых фронтенд-решений: CLI копирует исходники компонента из общего хранилища прямо в твой проект. Это не дизайн-система и не библиотека-зависимость — скопированный код становится твоим.
4
+
5
+ ## Быстрый старт
6
+
7
+ ```bash
8
+ npx -y @idem.agency/idem-ui web # визуальная витрина в браузере
9
+ npx -y @idem.agency/idem-ui get checkbox # забрать компонент по имени
10
+ ```
11
+
12
+ Нужны Node 22.16+ и доступ к `gitlab.idem.agency` (подними VPN — без него любая команда упадёт на «не удалось подключиться к хранилищу»).
13
+
14
+ Пользуешься часто — поставь глобально, дальше без `npx`:
15
+
16
+ ```bash
17
+ npm i -g @idem.agency/idem-ui
18
+ idem-ui web
19
+ ```
20
+
21
+ ## Что важно понимать
22
+
23
+ - **Компонент** — папка, решающая одну повторяющуюся задачу. Зовётся **слагом** — именем своей папки: `checkbox`, `burger`, `form`.
24
+ - **Вариант** — конкретная реализация внутри компонента (`next`). Вариант один — берётся молча, несколько — CLI спросит какой.
25
+ - **Copy-and-own.** После копирования файлы принадлежат проекту: правь как хочешь, связи с хранилищем не остаётся.
26
+ - **Зависимости ставишь сам.** CLI кладёт файлы и не трогает твой `package.json`. Что нужно доустановить — смотри в коде компонента и в его P.S.
27
+ - **Обновления нет.** «Обновить» = скопировать заново поверх с `--force`, потеряв свои правки в этой папке.
28
+
29
+ ## Команды
30
+
31
+ ### get — забрать компонент по имени
32
+
33
+ ```bash
34
+ idem-ui get <slug> [--variant <label>] [--path <dir>] [--force]
35
+ ```
36
+
37
+ | Флаг | Что делает |
38
+ | --- | --- |
39
+ | `--variant <label>` | взять конкретный вариант |
40
+ | `--path <dir>` | куда класть (по умолчанию — текущая папка) |
41
+ | `--force` | перезаписать существующую папку |
42
+
43
+ `--path` задаёт **родителя**: имя компонента дописывается всегда.
44
+
45
+ ```bash
46
+ idem-ui get checkbox --path src/shared/ui # → src/shared/ui/checkbox
47
+ ```
48
+
49
+ Папка уже занята — CLI спросит, перезаписывать ли (по умолчанию «нет»). Согласие или `--force` заменяет папку **целиком**: она сносится и пишется заново, твоих правок в ней не останется.
50
+
51
+ Из пайпа или CI спрашивать некого — там сразу передавай `--variant` (если вариантов несколько) и `--force` (если папка может быть занята), иначе команда упадёт.
52
+
53
+ После копирования CLI печатает описание компонента и, если автор его оставил, постскриптум под заголовком «P.S.» — читай, там бывает важное.
54
+
55
+ ### list — витрина в терминале
56
+
57
+ ```bash
58
+ idem-ui list
59
+ ```
60
+
61
+ Аргументов нет. В терминале с человеком — интерактивный список: набираешь часть слага или названия, список сужается; выбрал компонент — дальше тот же путь, что у `get` (спросит вариант, спросит папку, скопирует).
62
+
63
+ В пайпе или CI (`idem-ui list | grep form`) просто печатает перечень компонентов и выходит.
64
+
65
+ ### web — витрина в браузере
66
+
67
+ ```bash
68
+ idem-ui web
69
+ ```
70
+
71
+ Аргументов нет. Поднимает локальный сервер на `http://127.0.0.1:4321` (или ближайшем свободном порту) и сам открывает браузер. Там компоненты видны карточками с обложками, папку назначения выбираешь деревом своего проекта, копирование — кнопкой. `Ctrl+C` останавливает сервер.
72
+
73
+ Самый удобный вход, когда не знаешь, что вообще лежит в хранилище.
74
+
75
+ ### help — справка
76
+
77
+ ```bash
78
+ idem-ui # список команд
79
+ idem-ui help
80
+ idem-ui get --help # по конкретной команде
81
+ idem-ui help get
82
+ ```
83
+
84
+ ---
85
+
86
+ Актуальный список команд и флагов всегда отдаёт сам CLI: `idem-ui help`.
package/dist/bin.js CHANGED
@@ -1,18 +1,40 @@
1
1
  #!/usr/bin/env node
2
- import{access as _e,mkdir as B,readdir as Ae,rm as Oe,writeFile as xe}from"fs/promises";import{dirname as Ne,join as $e}from"path";var s={UnknownCommand:"ERR_UNKNOWN_COMMAND",SlugRequired:"ERR_SLUG_REQUIRED",TooManySlugs:"ERR_TOO_MANY_SLUGS",UnknownOption:"ERR_UNKNOWN_OPTION",VariantNotFound:"ERR_VARIANT_NOT_FOUND",VariantRequired:"ERR_VARIANT_REQUIRED",StorageUnreachable:"ERR_STORAGE_UNREACHABLE",StorageTimeout:"ERR_STORAGE_TIMEOUT",StorageHttp:"ERR_STORAGE_HTTP",StorageEmptyArchive:"ERR_STORAGE_EMPTY_ARCHIVE",StorageNotFound:"ERR_STORAGE_NOT_FOUND",ComponentNotFound:"ERR_COMPONENT_NOT_FOUND",MetaInvalid:"ERR_META_INVALID",ComponentHasNoVariants:"ERR_COMPONENT_HAS_NO_VARIANTS",TargetExists:"ERR_TARGET_EXISTS",WriteFailed:"ERR_WRITE_FAILED",NoFreePort:"ERR_NO_FREE_PORT",Cancelled:"ERR_CANCELLED"},C=class extends Error{constructor(t){super(t.code);this.details=t;this.name=new.target.name,this.code=t.code}code},d=class extends C{exitCode=2},g=class extends C{exitCode=1},S=class extends C{exitCode=1},P=class extends C{exitCode=1},j=class extends C{exitCode=1},h=class extends C{exitCode=130;constructor(){super({code:s.Cancelled})}};function W(){return{exists:async e=>{try{return await _e(e),!0}catch{return!1}},writeFiles:async(e,r)=>{try{await Oe(e,{recursive:!0,force:!0}),await B(e,{recursive:!0});for(let t of r){let o=$e(e,t.path);await B(Ne(o),{recursive:!0}),await xe(o,t.data)}}catch(t){throw new P({code:s.WriteFailed,target:e,reason:t instanceof Error?t.message:String(t)})}},readSubdirs:async(e,r)=>(await Ae(e,{withFileTypes:!0})).filter(o=>o.isDirectory()).map(o=>o.name).filter(o=>!r(o)).toSorted()}}function k(e){return`components/${e}`}function Q(e){return`${k(e)}/meta.json`}function Ie(e,r){return`${k(e)}/${r}`}function K(e,r,t){if(t.thumbnail!==void 0)return e.fileUrl(`${k(r)}/${t.thumbnail}`)}function Y(e){return{async loadComponent(r){let t=await Me(e,r),o=await X(e,r);if(o.length===0)throw new S({code:s.ComponentHasNoVariants,slug:r,name:t.name});let i=o.toSorted().map(n=>({label:n}));return{slug:r,meta:t,variants:i,thumbnailUrl:K(e,r,t)}},async loadVariantFiles(r,t){return e.fetchArchive(Ie(r,t))},async listComponents(){let r=await J(e),t=await Promise.all(r.map(n=>z(e,n))),o=[],i=[];for(let n of t)n.kind==="component"?o.push({slug:n.slug,meta:n.meta}):i.push(n.skipped);return{components:o.toSorted(T),skipped:i.toSorted(T)}},async listAll(){let r=await J(e),t=await Promise.all(r.map(n=>Le(e,n))),o=[],i=[];for(let n of t)n.kind==="component"?o.push(n.component):i.push(n.skipped);return{components:o.toSorted(T),skipped:i.toSorted(T)}}}}async function Me(e,r){let t=await Ue(e,r);return Z(t,r)}function Z(e,r){let t;try{t=JSON.parse(e)}catch{throw new S({code:s.MetaInvalid,slug:r})}if(typeof t!="object"||t===null||Array.isArray(t))throw new S({code:s.MetaInvalid,slug:r});return t}async function J(e){try{return await e.fetchFolders("components")}catch(r){if(r instanceof g&&r.code===s.StorageNotFound)return[];throw r}}async function z(e,r){let t;try{t=await e.fetchFile(Q(r))}catch(o){if(o instanceof g&&o.code===s.StorageNotFound)return{kind:"skipped",skipped:{slug:r,reason:"missing"}};throw o}try{let o=Z(t,r);return{kind:"component",slug:r,meta:o}}catch(o){if(o instanceof S&&o.code===s.MetaInvalid)return{kind:"skipped",skipped:{slug:r,reason:"invalid"}};throw o}}async function Le(e,r){let[t,o]=await Promise.all([z(e,r),X(e,r)]);if(t.kind==="skipped")return t;if(o.length===0)return{kind:"skipped",skipped:{slug:r,reason:"no-variants"}};let i=o.toSorted().map(n=>({label:n}));return{kind:"component",component:{slug:r,meta:t.meta,variants:i,thumbnailUrl:K(e,r,t.meta)}}}function T(e,r){return e.slug.localeCompare(r.slug)}async function Ue(e,r){try{return await e.fetchFile(Q(r))}catch(t){throw t instanceof g&&t.code===s.StorageNotFound?new S({code:s.ComponentNotFound,slug:r}):t}}async function X(e,r){try{return await e.fetchFolders(k(r))}catch(t){if(t instanceof g&&t.code===s.StorageNotFound)return[];throw t}}var I={host:"gitlab.idem.agency",projectId:556,ref:"main"};function ee(e=process.env){return{host:e.IDEM_STORAGE_HOST||I.host,projectId:e.IDEM_STORAGE_PROJECT||I.projectId,ref:e.IDEM_STORAGE_REF||I.ref}}import{gunzipSync as Qe}from"zlib";var Ve={offset:0,length:100},De={offset:124,length:12},He={offset:156,length:1},Ge={offset:345,length:155},qe=["0","\0"];function re(e){let r=[],t=0;for(;t+512<=e.length;){let o=e.subarray(t,t+512);if(Je(o))break;let i=We(o),n=_(o,He),a=t+512;qe.includes(n)&&r.push({name:Be(o),data:e.slice(a,a+i)}),t=a+Math.ceil(i/512)*512}return r}function Be(e){let r=_(e,Ve),t=_(e,Ge);return t===""?r:`${t}/${r}`}function We(e){return parseInt(_(e,De),8)||0}function _(e,r){let t=e.subarray(r.offset,r.offset+r.length),o=t.indexOf(0);return new TextDecoder().decode(o===-1?t:t.subarray(0,o)).trim()}function Je(e){return e.every(r=>r===0)}var te=1e4;function ne(e,r=globalThis.fetch){let t=`https://${e.host}/api/v4/projects/${e.projectId}/repository`;function o(n){return`${t}/files/${encodeURIComponent(n)}/raw?ref=${e.ref}`}return{fileUrl:o,async fetchFile(n){let a=o(n),c=await i(a);if(!c.ok)throw M(c.status,n);return c.text()},async fetchArchive(n){let a=`${t}/archive.tar.gz?sha=${e.ref}&path=${n}`,c=await i(a,{mode:"same-origin"});if(!c.ok)throw M(c.status,n);let m=new Uint8Array(await c.arrayBuffer());if(m.length===0)throw oe(n);let l=[];for(let R of re(Qe(m))){let b=Ke(n,R.name);b!==void 0&&l.push({path:b,data:R.data})}if(l.length===0)throw oe(n);return l},async fetchFolders(n){let a=`${t}/tree?path=${encodeURIComponent(n)}&ref=${e.ref}&per_page=100`,c=await i(a);if(!c.ok)throw M(c.status,n);return(await c.json()).filter(l=>l.type==="tree").map(l=>l.name)}};async function i(n,a={}){try{return await r(n,{...a,signal:AbortSignal.timeout(te)})}catch(c){throw c instanceof Error&&c.name==="TimeoutError"?new g({code:s.StorageTimeout,host:e.host,ms:te}):new g({code:s.StorageUnreachable,host:e.host})}}}function Ke(e,r){let t=`${e}/`,o=r.lastIndexOf(t);if(o!==-1)return r.slice(o+t.length)}function M(e,r){return e===404?new g({code:s.StorageNotFound,path:r}):new g({code:s.StorageHttp,status:e})}function oe(e){return new g({code:s.StorageEmptyArchive,path:e})}function ie(e){return{command:e[0],rest:e.slice(1)}}function v(e){return e.includes("--help")||e.includes("-h")}async function A(e,r,t){if(r!==void 0){let o=e.variants.find(i=>i.label===r);if(!o)throw new d({code:s.VariantNotFound,slug:e.slug,name:e.meta.name,requested:r,available:e.variants.map(i=>i.label)});return o}return e.variants.length===1?e.variants[0]:t.pick(e.slug,e.meta.name,e.variants)}import se from"path";function L(e,r,t){let o=se.resolve(e,r??".");return se.join(o,t)}async function O(e,r,t,o,i,n){let a=L(o,r,e);return await i.exists(a)&&!t&&await n.confirm(a),a}import{parseArgs as Ye}from"util";function ae(e){let r,t;try{({values:r,positionals:t}=Ye({args:e,allowPositionals:!0,options:{variant:{type:"string"},path:{type:"string"},force:{type:"boolean",default:!1}}}))}catch(o){let i=o instanceof Error?o.message:String(o);throw new d({code:s.UnknownOption,detail:i,command:"get"})}if(t.length===0)throw new d({code:s.SlugRequired,command:"get"});if(t.length>1)throw new d({code:s.TooManySlugs,got:t,command:"get"});return{slug:t[0],variant:r.variant,path:r.path,force:r.force}}var U={get:{summary:"\u0441\u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442",usage:"idem-ui get <name> [--variant <label>] [--path <dir>] [--force]",flags:[{flag:"--variant <label>",describes:"\u0432\u044B\u0431\u0440\u0430\u0442\u044C \u0432\u0430\u0440\u0438\u0430\u043D\u0442 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430"},{flag:"--path <dir>",describes:"\u043A\u0443\u0434\u0430 \u0441\u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C (\u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u2014 \u043F\u043E \u0438\u043C\u0435\u043D\u0438)"},{flag:"--force",describes:"\u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0438\u0441\u0430\u0442\u044C \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044E\u0449\u0443\u044E \u043F\u0430\u043F\u043A\u0443"}]},list:{summary:"\u043F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043F\u0435\u0440\u0435\u0447\u0435\u043D\u044C \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u043E\u0432",usage:"idem-ui list",flags:[]},web:{summary:"\u043F\u043E\u0434\u043D\u044F\u0442\u044C \u043B\u043E\u043A\u0430\u043B\u044C\u043D\u0443\u044E \u0432\u0435\u0431-\u0432\u0438\u0442\u0440\u0438\u043D\u0443",usage:"idem-ui web",flags:[]},help:{summary:"\u043F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0441\u043F\u0440\u0430\u0432\u043A\u0443",usage:"idem-ui help [command]",flags:[]}},w={general:()=>`idem-ui \u2014 \u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u043B\u044C\u0449\u0438\u043A \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u043E\u0432.
2
+ import{access as $e,mkdir as W,readdir as Oe,rm as Ae,writeFile as xe}from"fs/promises";import{dirname as Ne,join as Me}from"path";var s={UnknownCommand:"ERR_UNKNOWN_COMMAND",SlugRequired:"ERR_SLUG_REQUIRED",TooManySlugs:"ERR_TOO_MANY_SLUGS",UnknownOption:"ERR_UNKNOWN_OPTION",VariantNotFound:"ERR_VARIANT_NOT_FOUND",VariantRequired:"ERR_VARIANT_REQUIRED",StorageUnreachable:"ERR_STORAGE_UNREACHABLE",StorageTimeout:"ERR_STORAGE_TIMEOUT",StorageHttp:"ERR_STORAGE_HTTP",StorageEmptyArchive:"ERR_STORAGE_EMPTY_ARCHIVE",StorageNotFound:"ERR_STORAGE_NOT_FOUND",StorageQueryRejected:"ERR_STORAGE_QUERY_REJECTED",ComponentNotFound:"ERR_COMPONENT_NOT_FOUND",MetaInvalid:"ERR_META_INVALID",ComponentHasNoVariants:"ERR_COMPONENT_HAS_NO_VARIANTS",TargetExists:"ERR_TARGET_EXISTS",WriteFailed:"ERR_WRITE_FAILED",NoFreePort:"ERR_NO_FREE_PORT",Cancelled:"ERR_CANCELLED"},E=class extends Error{constructor(t){super(t.code);this.details=t;this.name=new.target.name,this.code=t.code}code},f=class extends E{exitCode=2},u=class extends E{exitCode=1},j=class extends E{exitCode=1},O=class extends E{exitCode=1},A=class extends E{exitCode=1},y=class extends E{exitCode=130;constructor(){super({code:s.Cancelled})}};function J(){return{exists:async e=>{try{return await $e(e),!0}catch{return!1}},writeFiles:async(e,r)=>{try{await Ae(e,{recursive:!0,force:!0}),await W(e,{recursive:!0});for(let t of r){let o=Me(e,t.path);await W(Ne(o),{recursive:!0}),await xe(o,t.data)}}catch(t){throw new O({code:s.WriteFailed,target:e,reason:t instanceof Error?t.message:String(t)})}},readSubdirs:async(e,r)=>(await Oe(e,{withFileTypes:!0})).filter(o=>o.isDirectory()).map(o=>o.name).filter(o=>!r(o)).toSorted()}}function F(e){return`components/${e}`}function N(e){return`${F(e)}/meta.json`}function Ie(e,r){return`${F(e)}/${r}`}function Z(e,r,t){if(t.thumbnail!==void 0)return e.fileUrl(`${F(r)}/${t.thumbnail}`)}function z(e){return{async loadComponent(r){let t=await Ue(e,r),o=await De(e,r);if(o.length===0)throw new j({code:s.ComponentHasNoVariants,slug:r,name:t.name});let n=o.toSorted().map(c=>({label:c}));return{slug:r,meta:t,variants:n,thumbnailUrl:Z(e,r,t)}},async loadVariantFiles(r,t){return e.fetchArchive(Ie(r,t))},async listComponents(){let r=await Y(e),t=await K(e,r),o=r.map(i=>ee(i,t.get(N(i)))),n=[],c=[];for(let i of o)i.kind==="component"?n.push({slug:i.slug,meta:i.meta}):c.push(i.skipped);return{components:n.toSorted(x),skipped:c.toSorted(x)}},async listAll(){let r=await Y(e),[t,o]=await Promise.all([K(e,r),e.fetchFoldersBatch(r.map(a=>F(a)))]),n=r.map(a=>Le(e,a,t.get(N(a)),o.get(F(a))??[])),c=[],i=[];for(let a of n)a.kind==="component"?c.push(a.component):i.push(a.skipped);return{components:c.toSorted(x),skipped:i.toSorted(x)}}}}async function Ue(e,r){let t=await Ve(e,r);return X(t,r)}function X(e,r){let t;try{t=JSON.parse(e)}catch{throw new j({code:s.MetaInvalid,slug:r})}if(typeof t!="object"||t===null||Array.isArray(t))throw new j({code:s.MetaInvalid,slug:r});return t}async function Y(e){try{return await e.fetchFolders("components")}catch(r){if(r instanceof u&&r.code===s.StorageNotFound)return[];throw r}}async function K(e,r){return e.fetchFilesBatch(r.map(t=>N(t)))}function ee(e,r){if(r===void 0)return{kind:"skipped",skipped:{slug:e,reason:"missing"}};try{let t=X(r,e);return{kind:"component",slug:e,meta:t}}catch(t){if(t instanceof j&&t.code===s.MetaInvalid)return{kind:"skipped",skipped:{slug:e,reason:"invalid"}};throw t}}function Le(e,r,t,o){let n=ee(r,t);if(n.kind==="skipped")return n;if(o.length===0)return{kind:"skipped",skipped:{slug:r,reason:"no-variants"}};let c=o.toSorted().map(i=>({label:i}));return{kind:"component",component:{slug:r,meta:n.meta,variants:c,thumbnailUrl:Z(e,r,n.meta)}}}function x(e,r){return e.slug.localeCompare(r.slug)}async function Ve(e,r){try{return await e.fetchFile(N(r))}catch(t){throw t instanceof u&&t.code===s.StorageNotFound?new j({code:s.ComponentNotFound,slug:r}):t}}async function De(e,r){try{return await e.fetchFolders(F(r))}catch(t){if(t instanceof u&&t.code===s.StorageNotFound)return[];throw t}}var V={host:"gitlab.idem.agency",projectPath:"barabel/component-storage",ref:"main"};function re(e=process.env){return{host:e.IDEM_STORAGE_HOST||V.host,projectPath:e.IDEM_STORAGE_PROJECT_PATH||V.projectPath,ref:e.IDEM_STORAGE_REF||V.ref}}import{gunzipSync as Ke}from"zlib";var He={offset:0,length:100},Be={offset:124,length:12},Ge={offset:156,length:1},qe={offset:345,length:155},Qe=["0","\0"];function te(e){let r=[],t=0;for(;t+512<=e.length;){let o=e.subarray(t,t+512);if(Ye(o))break;let n=Je(o),c=M(o,Ge),i=t+512;Qe.includes(c)&&r.push({name:We(o),data:e.slice(i,i+n)}),t=i+Math.ceil(n/512)*512}return r}function We(e){let r=M(e,He),t=M(e,qe);return t===""?r:`${t}/${r}`}function Je(e){return parseInt(M(e,Be),8)||0}function M(e,r){let t=e.subarray(r.offset,r.offset+r.length),o=t.indexOf(0);return new TextDecoder().decode(o===-1?t:t.subarray(0,o)).trim()}function Ye(e){return e.every(r=>r===0)}var oe=1e4,Ze=70,ze=25,Xe=`
3
+ query($project: ID!, $ref: String!, $paths: [String!]!) {
4
+ project(fullPath: $project) {
5
+ repository {
6
+ blobs(paths: $paths, ref: $ref) {
7
+ nodes {
8
+ path
9
+ rawTextBlob
10
+ }
11
+ }
12
+ }
13
+ }
14
+ }
15
+ `;function er(e){let r=Array.from({length:e},(n,c)=>c),t=r.map(n=>`$p${n}: String!`),o=r.map(n=>`t${n}: paginatedTree(path: $p${n}, ref: $ref) { nodes { trees { nodes { name } } } }`);return`
16
+ query($project: ID!, $ref: String!, ${t.join(", ")}) {
17
+ project(fullPath: $project) {
18
+ repository {
19
+ ${o.join(`
20
+ `)}
21
+ }
22
+ }
23
+ }
24
+ `}function ie(e,r=globalThis.fetch){let t=encodeURIComponent(e.projectPath),o=`https://${e.host}/api/v4/projects/${t}/repository`;function n(a){return`${o}/files/${encodeURIComponent(a)}/raw?ref=${e.ref}`}return{fileUrl:n,async fetchFile(a){let m=n(a),p=await i(m);if(!p.ok)throw D(p.status,a);return p.text()},async fetchArchive(a){let m=`${o}/archive.tar.gz?sha=${e.ref}&path=${a}`,p=await i(m,{mode:"same-origin"});if(!p.ok)throw D(p.status,a);let g=new Uint8Array(await p.arrayBuffer());if(g.length===0)throw se(a);let d=[];for(let b of te(Ke(g))){let w=rr(a,b.name);w!==void 0&&d.push({path:w,data:b.data})}if(d.length===0)throw se(a);return d},async fetchFolders(a){let m=`${o}/tree?path=${encodeURIComponent(a)}&ref=${e.ref}&per_page=100`,p=[],g="";do{let d=await i(g===""?m:`${m}&page=${encodeURIComponent(g)}`);if(!d.ok)throw D(d.status,a);g=d.headers.get("x-next-page")??"";let b=await d.json();p.push(...b.filter(w=>w.type==="tree").map(w=>w.name))}while(g!=="");return p},async fetchFilesBatch(a){let m=await Promise.all(ne(a,Ze).map(g=>c(Xe,{paths:g}))),p=new Map;for(let g of m)for(let d of g.project.repository.blobs.nodes)p.set(d.path,d.rawTextBlob);return p},async fetchFoldersBatch(a){let m=await Promise.all(ne(a,ze).map(async g=>{let d=await c(er(g.length),tr(g));return{batch:g,data:d}})),p=new Map;for(let{batch:g,data:d}of m)g.forEach((b,w)=>{let $=d.project.repository[`t${w}`];p.set(b,($?.nodes??[]).flatMap(_=>_.trees.nodes.map(k=>k.name)))});return p}};async function c(a,m){let p=await i(`https://${e.host}/api/graphql`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({query:a,variables:{...m,project:e.projectPath,ref:e.ref}})});if(!p.ok)throw new u({code:s.StorageHttp,status:p.status});let g=await p.json(),[d]=g.errors??[];if(d!==void 0)throw new u({code:s.StorageQueryRejected,reason:d.message});return g.data}async function i(a,m={}){try{return await r(a,{...m,signal:AbortSignal.timeout(oe)})}catch(p){throw p instanceof Error&&p.name==="TimeoutError"?new u({code:s.StorageTimeout,host:e.host,ms:oe}):new u({code:s.StorageUnreachable,host:e.host})}}}function rr(e,r){let t=`${e}/`,o=r.lastIndexOf(t);if(o!==-1)return r.slice(o+t.length)}function tr(e){return Object.fromEntries(e.map((r,t)=>[`p${t}`,r]))}function ne(e,r){let t=[];for(let o=0;o<e.length;o+=r)t.push(e.slice(o,o+r));return t}function D(e,r){return e===404?new u({code:s.StorageNotFound,path:r}):new u({code:s.StorageHttp,status:e})}function se(e){return new u({code:s.StorageEmptyArchive,path:e})}function ae(e){return{command:e[0],rest:e.slice(1)}}function v(e){return e.includes("--help")||e.includes("-h")}async function I(e,r,t){if(r!==void 0){let o=e.variants.find(n=>n.label===r);if(!o)throw new f({code:s.VariantNotFound,slug:e.slug,name:e.meta.name,requested:r,available:e.variants.map(n=>n.label)});return o}return e.variants.length===1?e.variants[0]:t.pick(e.slug,e.meta.name,e.variants)}import ce from"path";function H(e,r,t){let o=ce.resolve(e,r??".");return ce.join(o,t)}async function U(e,r,t,o,n,c){let i=H(o,r,e);return await n.exists(i)&&!t&&await c.confirm(i),i}import{parseArgs as or}from"util";function pe(e){let r,t;try{({values:r,positionals:t}=or({args:e,allowPositionals:!0,options:{variant:{type:"string"},path:{type:"string"},force:{type:"boolean",default:!1}}}))}catch(o){let n=o instanceof Error?o.message:String(o);throw new f({code:s.UnknownOption,detail:n,command:"get"})}if(t.length===0)throw new f({code:s.SlugRequired,command:"get"});if(t.length>1)throw new f({code:s.TooManySlugs,got:t,command:"get"});return{slug:t[0],variant:r.variant,path:r.path,force:r.force}}var B={get:{summary:"\u0441\u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442",usage:"idem-ui get <name> [--variant <label>] [--path <dir>] [--force]",flags:[{flag:"--variant <label>",describes:"\u0432\u044B\u0431\u0440\u0430\u0442\u044C \u0432\u0430\u0440\u0438\u0430\u043D\u0442 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430"},{flag:"--path <dir>",describes:"\u043A\u0443\u0434\u0430 \u0441\u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C (\u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u2014 \u043F\u043E \u0438\u043C\u0435\u043D\u0438)"},{flag:"--force",describes:"\u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0438\u0441\u0430\u0442\u044C \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044E\u0449\u0443\u044E \u043F\u0430\u043F\u043A\u0443"}]},list:{summary:"\u043F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043F\u0435\u0440\u0435\u0447\u0435\u043D\u044C \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u043E\u0432",usage:"idem-ui list",flags:[]},web:{summary:"\u043F\u043E\u0434\u043D\u044F\u0442\u044C \u043B\u043E\u043A\u0430\u043B\u044C\u043D\u0443\u044E \u0432\u0435\u0431-\u0432\u0438\u0442\u0440\u0438\u043D\u0443",usage:"idem-ui web",flags:[]},help:{summary:"\u043F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0441\u043F\u0440\u0430\u0432\u043A\u0443",usage:"idem-ui help [command]",flags:[]}},R={general:()=>`idem-ui \u2014 \u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u043B\u044C\u0449\u0438\u043A \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u043E\u0432.
3
25
 
4
26
  \u041A\u043E\u043C\u0430\u043D\u0434\u044B:
5
- ${Object.entries(U).map(([r,{summary:t}])=>` ${r.padEnd(6)} ${t}`).join(`
6
- `)}`,forCommand:e=>{let{summary:r,usage:t,flags:o}=U[e];if(o.length===0)return`\u0414\u043B\u044F \u0447\u0435\u0433\u043E: ${r}
27
+ ${Object.entries(B).map(([r,{summary:t}])=>` ${r.padEnd(6)} ${t}`).join(`
28
+ `)}`,forCommand:e=>{let{summary:r,usage:t,flags:o}=B[e];if(o.length===0)return`\u0414\u043B\u044F \u0447\u0435\u0433\u043E: ${r}
7
29
 
8
- \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0435: ${t}`;let i=o.map(({flag:n,describes:a})=>` ${n.padEnd(20)} ${a}`);return`\u0414\u043B\u044F \u0447\u0435\u0433\u043E: ${r}
30
+ \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0435: ${t}`;let n=o.map(({flag:c,describes:i})=>` ${c.padEnd(20)} ${i}`);return`\u0414\u043B\u044F \u0447\u0435\u0433\u043E: ${r}
9
31
 
10
32
  \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0435: ${t}
11
33
 
12
34
  \u0424\u043B\u0430\u0433\u0438:
13
- ${i.join(`
14
- `)}`},isCommand:e=>e in U};var x=(e,r)=>`${r} (${e})`,p={error:e=>{switch(e.code){case s.UnknownCommand:return`\u041D\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043D\u0430\u044F \u043A\u043E\u043C\u0430\u043D\u0434\u0430 ${e.got}. \u0421\u043F\u0438\u0441\u043E\u043A \u043A\u043E\u043C\u0430\u043D\u0434 \u2014 idem-ui help.`;case s.SlugRequired:return"\u041D\u0435 \u0443\u043A\u0430\u0437\u0430\u043D\u043E \u0438\u043C\u044F \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430.";case s.TooManySlugs:return`\u041E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C \u043E\u0434\u043D\u043E \u0438\u043C\u044F \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430, \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u043E: ${e.got.join(", ")}`;case s.UnknownOption:return`\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0435 \u0430\u0440\u0433\u0443\u043C\u0435\u043D\u0442\u044B: ${e.detail}`;case s.VariantNotFound:return`\u0423 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430 ${x(e.slug,e.name)} \u043D\u0435\u0442 \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u0430 ${e.requested}. \u0414\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0435: ${e.available.join(", ")}`;case s.VariantRequired:return`\u0423 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430 ${x(e.slug,e.name)} \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u043E\u0432: ${e.available.join(", ")}. \u0423\u043A\u0430\u0436\u0438 --variant <label>.`;case s.StorageUnreachable:return`\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0438\u0442\u044C\u0441\u044F \u043A \u0445\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0443 ${e.host}. \u041F\u0440\u043E\u0432\u0435\u0440\u044C, \u043F\u043E\u0434\u043D\u044F\u0442 \u043B\u0438 VPN.`;case s.StorageTimeout:return`\u0425\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0435 ${e.host} \u043D\u0435 \u043E\u0442\u0432\u0435\u0442\u0438\u043B\u043E \u0437\u0430 ${e.ms/1e3} \u0441. \u041F\u0440\u043E\u0432\u0435\u0440\u044C VPN; \u0435\u0441\u043B\u0438 \u043E\u043D \u043F\u043E\u0434\u043D\u044F\u0442 \u2014 \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E, GitLab \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u0435\u043D.`;case s.StorageHttp:return`\u0425\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0435 \u043E\u0442\u0432\u0435\u0442\u0438\u043B\u043E \u043E\u0448\u0438\u0431\u043A\u043E\u0439 ${e.status}. \u041F\u043E\u0434\u043E\u0436\u0434\u0438 \u0438 \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439 \u0441\u043D\u043E\u0432\u0430; \u0435\u0441\u043B\u0438 \u043F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0441\u044F \u2014 \u0441\u043E\u043E\u0431\u0449\u0438 \u043C\u0435\u0439\u043D\u0442\u0435\u0439\u043D\u0435\u0440\u0443.`;case s.StorageEmptyArchive:return`\u0425\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0435 \u043E\u0442\u0434\u0430\u043B\u043E \u043F\u0443\u0441\u0442\u043E\u0439 \u0430\u0440\u0445\u0438\u0432 \u0434\u043B\u044F ${e.path}. \u041F\u043E\u0434\u043E\u0436\u0434\u0438 \u0438 \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439 \u0441\u043D\u043E\u0432\u0430; \u0435\u0441\u043B\u0438 \u043F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0441\u044F \u2014 \u0441\u043E\u043E\u0431\u0449\u0438 \u043C\u0435\u0439\u043D\u0442\u0435\u0439\u043D\u0435\u0440\u0443.`;case s.StorageNotFound:return`\u0412 \u0445\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0435 \u043D\u0435\u0442 \u043F\u0443\u0442\u0438 ${e.path}. \u041F\u0440\u043E\u0432\u0435\u0440\u044C \u0438\u043C\u044F.`;case s.ComponentNotFound:return`\u0412 \u0445\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0435 \u043D\u0435\u0442 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430 ${e.slug}. \u041F\u0440\u043E\u0432\u0435\u0440\u044C \u0438\u043C\u044F.`;case s.MetaInvalid:return`\u041C\u0435\u0442\u0430 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430 ${e.slug} \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u044B\u043C JSON-\u043E\u0431\u044A\u0435\u043A\u0442\u043E\u043C. \u0421\u043E\u043E\u0431\u0449\u0438 \u043C\u0435\u0439\u043D\u0442\u0435\u0439\u043D\u0435\u0440\u0443.`;case s.ComponentHasNoVariants:return`\u0423 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430 ${x(e.slug,e.name)} \u043D\u0435\u0442 \u043D\u0438 \u043E\u0434\u043D\u043E\u0439 \u043F\u0430\u043F\u043A\u0438-\u0432\u0430\u0440\u0438\u0430\u043D\u0442\u0430. \u0421\u043E\u043E\u0431\u0449\u0438 \u043C\u0435\u0439\u043D\u0442\u0435\u0439\u043D\u0435\u0440\u0443 \u0445\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0430.`;case s.TargetExists:return`\u041F\u0430\u043F\u043A\u0430 ${e.target} \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442. \u041F\u0435\u0440\u0435\u0437\u0430\u043F\u0438\u0441\u044C \u0442\u0440\u0435\u0431\u0443\u0435\u0442 --force.`;case s.WriteFailed:return`\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0437\u0430\u043F\u0438\u0441\u0430\u0442\u044C \u0432 ${e.target}: ${e.reason}`;case s.NoFreePort:return`\u041D\u0435 \u043D\u0430\u0448\u043B\u043E\u0441\u044C \u0441\u0432\u043E\u0431\u043E\u0434\u043D\u043E\u0433\u043E \u043F\u043E\u0440\u0442\u0430: ${e.tried} \u043F\u043E\u0434\u0440\u044F\u0434 \u0437\u0430\u043D\u044F\u0442\u044B, \u043D\u0430\u0447\u0438\u043D\u0430\u044F \u0441 ${e.start}. \u041E\u0441\u0432\u043E\u0431\u043E\u0434\u0438 \u043F\u043E\u0440\u0442 \u0438\u043B\u0438 \u0437\u0430\u043A\u0440\u043E\u0439 \u043B\u0438\u0448\u043D\u0438\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u044B.`;case s.Cancelled:return"\u041E\u0442\u043C\u0435\u043D\u0435\u043D\u043E"}},tryHelp:e=>`\u041F\u043E\u0434\u0440\u043E\u0431\u043D\u0435\u0435: idem-ui ${e} --help`,variantQuestion:(e,r)=>`\u0412\u044B\u0431\u0435\u0440\u0438 \u0432\u0430\u0440\u0438\u0430\u043D\u0442 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430 ${x(e,r)}`,componentDescription:e=>{let r=[`\u041A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442: ${e.name}`];return e.description&&r.push(`\u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435: ${e.description}`),e.tags&&r.push(`\u0422\u0435\u0433\u0438: ${e.tags.join(", ")}`),r.join(`
35
+ ${n.join(`
36
+ `)}`},isCommand:e=>e in B};var L=(e,r)=>`${r} (${e})`,l={error:e=>{switch(e.code){case s.UnknownCommand:return`\u041D\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043D\u0430\u044F \u043A\u043E\u043C\u0430\u043D\u0434\u0430 ${e.got}. \u0421\u043F\u0438\u0441\u043E\u043A \u043A\u043E\u043C\u0430\u043D\u0434 \u2014 idem-ui help.`;case s.SlugRequired:return"\u041D\u0435 \u0443\u043A\u0430\u0437\u0430\u043D\u043E \u0438\u043C\u044F \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430.";case s.TooManySlugs:return`\u041E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C \u043E\u0434\u043D\u043E \u0438\u043C\u044F \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430, \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u043E: ${e.got.join(", ")}`;case s.UnknownOption:return`\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0435 \u0430\u0440\u0433\u0443\u043C\u0435\u043D\u0442\u044B: ${e.detail}`;case s.VariantNotFound:return`\u0423 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430 ${L(e.slug,e.name)} \u043D\u0435\u0442 \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u0430 ${e.requested}. \u0414\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0435: ${e.available.join(", ")}`;case s.VariantRequired:return`\u0423 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430 ${L(e.slug,e.name)} \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u043E\u0432: ${e.available.join(", ")}. \u0423\u043A\u0430\u0436\u0438 --variant <label>.`;case s.StorageUnreachable:return`\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0438\u0442\u044C\u0441\u044F \u043A \u0445\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0443 ${e.host}. \u041F\u0440\u043E\u0432\u0435\u0440\u044C, \u043F\u043E\u0434\u043D\u044F\u0442 \u043B\u0438 VPN.`;case s.StorageTimeout:return`\u0425\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0435 ${e.host} \u043D\u0435 \u043E\u0442\u0432\u0435\u0442\u0438\u043B\u043E \u0437\u0430 ${e.ms/1e3} \u0441. \u041F\u0440\u043E\u0432\u0435\u0440\u044C VPN; \u0435\u0441\u043B\u0438 \u043E\u043D \u043F\u043E\u0434\u043D\u044F\u0442 \u2014 \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E, GitLab \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u0435\u043D.`;case s.StorageHttp:return`\u0425\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0435 \u043E\u0442\u0432\u0435\u0442\u0438\u043B\u043E \u043E\u0448\u0438\u0431\u043A\u043E\u0439 ${e.status}. \u041F\u043E\u0434\u043E\u0436\u0434\u0438 \u0438 \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439 \u0441\u043D\u043E\u0432\u0430; \u0435\u0441\u043B\u0438 \u043F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0441\u044F \u2014 \u0441\u043E\u043E\u0431\u0449\u0438 \u043C\u0435\u0439\u043D\u0442\u0435\u0439\u043D\u0435\u0440\u0443.`;case s.StorageEmptyArchive:return`\u0425\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0435 \u043E\u0442\u0434\u0430\u043B\u043E \u043F\u0443\u0441\u0442\u043E\u0439 \u0430\u0440\u0445\u0438\u0432 \u0434\u043B\u044F ${e.path}. \u041F\u043E\u0434\u043E\u0436\u0434\u0438 \u0438 \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439 \u0441\u043D\u043E\u0432\u0430; \u0435\u0441\u043B\u0438 \u043F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0441\u044F \u2014 \u0441\u043E\u043E\u0431\u0449\u0438 \u043C\u0435\u0439\u043D\u0442\u0435\u0439\u043D\u0435\u0440\u0443.`;case s.StorageNotFound:return`\u0412 \u0445\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0435 \u043D\u0435\u0442 \u043F\u0443\u0442\u0438 ${e.path}. \u041F\u0440\u043E\u0432\u0435\u0440\u044C \u0438\u043C\u044F.`;case s.StorageQueryRejected:return`\u0425\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0435 \u043E\u0442\u0432\u0435\u0440\u0433\u043B\u043E \u0437\u0430\u043F\u0440\u043E\u0441, \u0441\u0435\u0442\u044C \u043F\u0440\u0438 \u044D\u0442\u043E\u043C \u0446\u0435\u043B\u0430 \u2014 \u0441\u043E\u043E\u0431\u0449\u0438 \u043C\u0435\u0439\u043D\u0442\u0435\u0439\u043D\u0435\u0440\u0443. \u041E\u0442\u0432\u0435\u0442 GitLab: ${e.reason}`;case s.ComponentNotFound:return`\u0412 \u0445\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0435 \u043D\u0435\u0442 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430 ${e.slug}. \u041F\u0440\u043E\u0432\u0435\u0440\u044C \u0438\u043C\u044F.`;case s.MetaInvalid:return`\u041C\u0435\u0442\u0430 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430 ${e.slug} \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u044B\u043C JSON-\u043E\u0431\u044A\u0435\u043A\u0442\u043E\u043C. \u0421\u043E\u043E\u0431\u0449\u0438 \u043C\u0435\u0439\u043D\u0442\u0435\u0439\u043D\u0435\u0440\u0443.`;case s.ComponentHasNoVariants:return`\u0423 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430 ${L(e.slug,e.name)} \u043D\u0435\u0442 \u043D\u0438 \u043E\u0434\u043D\u043E\u0439 \u043F\u0430\u043F\u043A\u0438-\u0432\u0430\u0440\u0438\u0430\u043D\u0442\u0430. \u0421\u043E\u043E\u0431\u0449\u0438 \u043C\u0435\u0439\u043D\u0442\u0435\u0439\u043D\u0435\u0440\u0443 \u0445\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0430.`;case s.TargetExists:return`\u041F\u0430\u043F\u043A\u0430 ${e.target} \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442. \u041F\u0435\u0440\u0435\u0437\u0430\u043F\u0438\u0441\u044C \u0442\u0440\u0435\u0431\u0443\u0435\u0442 --force.`;case s.WriteFailed:return`\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0437\u0430\u043F\u0438\u0441\u0430\u0442\u044C \u0432 ${e.target}: ${e.reason}`;case s.NoFreePort:return`\u041D\u0435 \u043D\u0430\u0448\u043B\u043E\u0441\u044C \u0441\u0432\u043E\u0431\u043E\u0434\u043D\u043E\u0433\u043E \u043F\u043E\u0440\u0442\u0430: ${e.tried} \u043F\u043E\u0434\u0440\u044F\u0434 \u0437\u0430\u043D\u044F\u0442\u044B, \u043D\u0430\u0447\u0438\u043D\u0430\u044F \u0441 ${e.start}. \u041E\u0441\u0432\u043E\u0431\u043E\u0434\u0438 \u043F\u043E\u0440\u0442 \u0438\u043B\u0438 \u0437\u0430\u043A\u0440\u043E\u0439 \u043B\u0438\u0448\u043D\u0438\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u044B.`;case s.Cancelled:return"\u041E\u0442\u043C\u0435\u043D\u0435\u043D\u043E"}},tryHelp:e=>`\u041F\u043E\u0434\u0440\u043E\u0431\u043D\u0435\u0435: idem-ui ${e} --help`,variantQuestion:(e,r)=>`\u0412\u044B\u0431\u0435\u0440\u0438 \u0432\u0430\u0440\u0438\u0430\u043D\u0442 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430 ${L(e,r)}`,componentDescription:e=>{let r=[`\u041A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442: ${e.name}`];return e.description&&r.push(`\u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435: ${e.description}`),e.tags&&r.push(`\u0422\u0435\u0433\u0438: ${e.tags.join(", ")}`),r.join(`
15
37
  `)},overwriteQuestion:e=>`\u041F\u0430\u043F\u043A\u0430 ${e} \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442. \u041F\u0435\u0440\u0435\u0437\u0430\u043F\u0438\u0441\u0430\u0442\u044C?`,pathQuestion:()=>"\u0412 \u043A\u0430\u043A\u0443\u044E \u043F\u0430\u043F\u043A\u0443 \u043F\u043E\u043B\u043E\u0436\u0438\u0442\u044C? (Enter \u2014 \u0442\u0435\u043A\u0443\u0449\u0430\u044F)",chosenVariant:e=>`\u0412\u0430\u0440\u0438\u0430\u043D\u0442: ${e}`,downloading:(e,r)=>`\u0421\u043A\u0430\u0447\u0438\u0432\u0430\u044E ${e}/${r}\u2026`,copied:e=>`\u0421\u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u043D\u043E \u0432 ${e}`,note:e=>`
16
38
  P.S.
17
39
  ${e}`,catalogHeader:()=>"\u041A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u044B:",catalogLine:(e,r)=>{let t=`- (${e}) ${r.name}`;return r.description&&(t+=` \u2014 ${r.description}`),r.tags?.length&&(t+=` [${r.tags.join(", ")}]`),t},componentQuestion:()=>"\u0412\u044B\u0431\u0435\u0440\u0438 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442",catalogChoiceLabel:(e,r)=>`(${e}) ${r.name}`,catalogChoiceHint:e=>{let r=[];return e.description&&r.push(e.description),e.tags?.length&&r.push(`\u0422\u0435\u0433\u0438: ${e.tags.join(", ")}`),r.length>0?r.join(`
18
- `):void 0},emptyCatalog:()=>"\u0412 \u0445\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0435 \u043D\u0435\u0442 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u043E\u0432",skippedHeader:()=>"\u041F\u0440\u043E\u043F\u0443\u0449\u0435\u043D\u044B \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u044B:",skippedComponent:(e,r)=>{switch(r){case"missing":return`- ${e}: \u043D\u0435\u0442 meta.json.`;case"invalid":return`- ${e}: \u0431\u0438\u0442\u044B\u0439 meta.json.`;case"no-variants":return`- ${e}: \u043D\u0435\u0442 \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u043E\u0432.`}},cliError:(e,r)=>`error [${e}]: ${r}`,internalError:()=>"\u0412\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u044F\u044F \u043E\u0448\u0438\u0431\u043A\u0430:"};function ce(e){let{catalog:r,picker:t,projectFiles:o,confirmer:i}=e;return async n=>{if(v(n)){console.log(w.forCommand("get"));return}let a=ae(n),c=await r.loadComponent(a.slug);console.log(p.componentDescription(c.meta));let m=await A(c,a.variant,t);console.log(p.chosenVariant(m.label));let l=await O(a.slug,a.path,a.force,process.cwd(),o,i);console.log(p.downloading(a.slug,m.label));let R=await r.loadVariantFiles(a.slug,m.label);await o.writeFiles(l,R),console.log(p.copied(l));let b=c.meta.note?.trim();b&&console.log(p.note(b))}}import{parseArgs as Ze}from"util";function pe(e){try{Ze({args:e,options:{},allowPositionals:!1})}catch(r){let t=r instanceof Error?r.message:String(r);throw new d({code:s.UnknownOption,detail:t,command:"list"})}}import ze from"@inquirer/search";var F=e=>e instanceof Error&&e.name==="ExitPromptError";function Xe(e,r){let t=(r??"").trim().toLowerCase();return e.filter(({slug:o,meta:i})=>`${o} ${i.name}`.toLowerCase().includes(t))}async function me(e){try{return await ze({message:p.componentQuestion(),pageSize:10,source:r=>Xe(e,r).map(({slug:t,meta:o})=>({name:p.catalogChoiceLabel(t,o),value:t,description:p.catalogChoiceHint(o)}))})}catch(r){throw F(r)?new h:r}}import er from"@inquirer/input";async function le(e){try{return await er({message:p.pathQuestion(),default:e})}catch(r){throw F(r)?new h:r}}function de(e){let{catalog:r,picker:t,projectFiles:o,confirmer:i}=e;return async n=>{if(v(n)){console.log(w.forCommand("list"));return}pe(n);let{components:a,skipped:c}=await r.listComponents();if(c.length>0&&(console.error(p.skippedHeader()),c.forEach(({slug:N,reason:$})=>{console.error(p.skippedComponent(N,$))}),console.error("")),!process.stdout.isTTY){a.length>0&&(console.log(p.catalogHeader()),a.forEach(({slug:N,meta:$})=>{console.log(p.catalogLine(N,$))}));return}if(a.length===0){console.log(p.emptyCatalog());return}let m=await me(a),l=await r.loadComponent(m),R=await A(l,void 0,t);console.log(p.chosenVariant(R.label));let b=await le(process.cwd()),G=await O(m,b,!1,process.cwd(),o,i);console.log(p.downloading(m,R.label));let ke=await r.loadVariantFiles(m,R.label);await o.writeFiles(G,ke),console.log(p.copied(G));let q=l.meta.note?.trim();q&&console.log(p.note(q))}}function ge(){return e=>{let r=e[0];if(r!==void 0&&w.isCommand(r)){console.log(w.forCommand(r));return}console.log(w.general())}}import{createServer as sr}from"http";import{fileURLToPath as ar}from"url";import cr from"open";import{createServer as rr}from"net";var tr=e=>new Promise((r,t)=>{let o=rr();o.once("error",i=>{if(i.code==="EADDRINUSE"){r(!1);return}t(i)}),o.listen(e,"127.0.0.1",()=>{o.close(()=>r(!0))})});async function fe(e,r){for(let t=0;t<r;t++){let o=e+t;if(await tr(o))return o}throw new j({code:s.NoFreePort,start:e,tried:r})}var E={BadRequest:"ERR_BAD_REQUEST",NotFound:"ERR_NOT_FOUND",MethodNotAllowed:"ERR_METHOD_NOT_ALLOWED",Internal:"ERR_INTERNAL"},y=class extends Error{constructor(t,o){super(o);this.code=t;this.name="WebRequestError"}};function V(e){switch(e){case"ERR_STORAGE_UNREACHABLE":case"ERR_STORAGE_TIMEOUT":case"ERR_STORAGE_HTTP":case"ERR_STORAGE_EMPTY_ARCHIVE":return 502;case"ERR_COMPONENT_NOT_FOUND":return 404;case"ERR_BAD_REQUEST":return 400;case"ERR_WRITE_FAILED":return 500;default:return 500}}var f={listeningOn:e=>`\u0421\u0435\u0440\u0432\u0435\u0440 \u043D\u0430 ${e}`,error:e=>{switch(e.code){case"ERR_STORAGE_UNREACHABLE":return"\u0425\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0435 \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u043D\u043E. \u041F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 VPN.";case"ERR_STORAGE_TIMEOUT":return"\u0425\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0435 \u043D\u0435 \u043E\u0442\u0432\u0435\u0442\u0438\u043B\u043E \u0432\u043E\u0432\u0440\u0435\u043C\u044F.";case"ERR_STORAGE_HTTP":return"\u0425\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0435 \u043E\u0442\u0432\u0435\u0442\u0438\u043B\u043E \u043E\u0448\u0438\u0431\u043A\u043E\u0439.";case"ERR_STORAGE_EMPTY_ARCHIVE":return"\u0425\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0435 \u043E\u0442\u0434\u0430\u043B\u043E \u043F\u0443\u0441\u0442\u043E\u0439 \u0430\u0440\u0445\u0438\u0432.";case"ERR_COMPONENT_NOT_FOUND":return"\u041D\u0435\u0442 \u0442\u0430\u043A\u043E\u0433\u043E \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430.";case"ERR_WRITE_FAILED":return"\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0437\u0430\u043F\u0438\u0441\u0430\u0442\u044C \u0444\u0430\u0439\u043B\u044B \u043D\u0430 \u0434\u0438\u0441\u043A.";default:return"\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0432\u044B\u043F\u043E\u043B\u043D\u0438\u0442\u044C \u0437\u0430\u043F\u0440\u043E\u0441."}},internalError:()=>"\u0412\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u044F\u044F \u043E\u0448\u0438\u0431\u043A\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430.",badRequest:()=>"\u041D\u0435\u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u044B\u0439 \u0437\u0430\u043F\u0440\u043E\u0441.",notFound:()=>"\u041D\u0435\u0442 \u0442\u0430\u043A\u043E\u0433\u043E \u0440\u043E\u0443\u0442\u0430.",methodNotAllowed:()=>"\u041C\u0435\u0442\u043E\u0434 \u043D\u0435 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u044D\u0442\u0438\u043C \u0440\u043E\u0443\u0442\u043E\u043C."};async function ue(e){let r=[];for await(let o of e)r.push(o);let t=Buffer.concat(r).toString("utf8");try{return JSON.parse(t)}catch{throw new y(E.BadRequest,f.badRequest())}}function u(e,r,t){e.writeHead(r,{"Content-Type":"application/json; charset=utf-8"}),e.end(JSON.stringify(t))}function D(e){return typeof e=="string"&&e.length>0}function Ce(e){return async(r,t)=>{let o=await ue(r);if(o===null||typeof o!="object")throw new y(E.BadRequest,f.badRequest());let{slug:i,label:n,path:a}=o;if(!D(i)||!D(n)||!D(a))throw new y(E.BadRequest,f.badRequest());let c=L(process.cwd(),a,i),m=await e.catalog.loadVariantFiles(i,n);await e.projectFiles.writeFiles(c,m),u(t,200,{ok:!0,target:c})}}import H from"path";function he(e){return e==="node_modules"||e.startsWith(".")}function we(e){return async(r,t)=>{let o=process.cwd(),i=new URL(r.url??"/","http://localhost").searchParams.get("path")??"",n=H.resolve(o,i),c=(await e.projectFiles.readSubdirs(n,he)).map(m=>({name:m,path:H.relative(o,H.join(n,m))}));u(t,200,{dirs:c})}}var or=6e4;function Ee(e){let r;return async(t,o)=>{(r===void 0||Date.now()-r.at>=or||nr(t))&&(r={at:Date.now(),listing:e.catalog.listAll()});let i;try{i=await r.listing}catch(n){throw r=void 0,n}u(o,200,i)}}function nr(e){let r=e.headers["cache-control"];return typeof r=="string"&&r.includes("no-cache")}function ye(e,r){if(r instanceof C){u(e,V(r.code),{code:r.code,message:f.error(r.details)});return}if(r instanceof y){u(e,V(r.code),{code:r.code,message:r.message});return}console.error(r),u(e,500,{code:E.Internal,message:f.internalError()})}function Re(e){let r=Ee({catalog:e.catalog}),t=Ce({catalog:e.catalog,projectFiles:e.projectFiles}),o=we({projectFiles:e.projectFiles}),i={"/api/components":{GET:r},"/api/copy":{POST:t},"/api/dirs":{GET:o}};return async(n,a)=>{let c=new URL(n.url??"/","http://localhost").pathname;if(!c.startsWith("/api"))return!1;try{let m=i[c];if(m===void 0)return u(a,404,{code:E.NotFound,message:f.notFound()}),!0;let l=m[n.method??""];if(l===void 0)return u(a,405,{code:E.MethodNotAllowed,message:f.methodNotAllowed()}),!0;await l(n,a)}catch(m){ye(a,m)}return!0}}import ir from"sirv";var Se=e=>ir(e,{single:!0});var pr=4321,mr=3,Fe="127.0.0.1",lr=ar(new URL("./webapp",import.meta.url)),dr=e=>{cr(e).catch(()=>{})};async function be(e){let r=await fe(pr,mr),t=Re(e),o=Se(lr),i=sr((a,c)=>{(async()=>await t(a,c)||o(a,c))()});await new Promise(a=>{i.listen(r,Fe,()=>a())});let n=`http://${Fe}:${r}`;return console.log(f.listeningOn(n)),dr(n),{port:r}}import{parseArgs as gr}from"util";function ve(e){try{gr({args:e,options:{},allowPositionals:!1})}catch(r){let t=r instanceof Error?r.message:String(r);throw new d({code:s.UnknownOption,detail:t,command:"web"})}}function Pe(e){return async r=>{if(v(r)){console.log(w.forCommand("web"));return}ve(r),await be(e)}}import fr from"@inquirer/confirm";function je(e=process.stdin.isTTY===!0){return{confirm:async r=>{if(!e)throw new d({code:s.TargetExists,target:r});let t;try{t=await fr({message:p.overwriteQuestion(r),default:!1})}catch(o){throw F(o)?new h:o}if(!t)throw new h}}}import ur from"@inquirer/select";function Te(e=process.stdin.isTTY===!0){return{pick:async(r,t,o)=>{if(!e)throw new d({code:s.VariantRequired,slug:r,name:t,available:o.map(i=>i.label)});try{return await ur({message:p.variantQuestion(r,t),choices:o.map(i=>{let{label:n}=i;return{name:n,value:i}})})}catch(i){throw F(i)?new h:i}}}}try{let e=Y(ne(ee())),r=Te(),t=W(),o=je(),i=ce({catalog:e,picker:r,projectFiles:t,confirmer:o}),n=de({catalog:e,picker:r,projectFiles:t,confirmer:o}),a=ge(),c=Pe({catalog:e,projectFiles:t}),{command:m,rest:l}=ie(process.argv.slice(2));switch(m){case void 0:case"help":case"--help":case"-h":a(l);break;case"get":await i(l);break;case"list":await n(l);break;case"web":await c(l);break;default:throw new d({code:s.UnknownCommand,got:m})}}catch(e){e instanceof C&&(console.error(p.cliError(e.code,p.error(e.details))),"command"in e.details&&console.error(p.tryHelp(e.details.command)),process.exit(e.exitCode)),console.error(p.internalError()),console.error(e),process.exit(1)}
40
+ `):void 0},emptyCatalog:()=>"\u0412 \u0445\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0435 \u043D\u0435\u0442 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u043E\u0432",skippedHeader:()=>"\u041F\u0440\u043E\u043F\u0443\u0449\u0435\u043D\u044B \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u044B:",skippedComponent:(e,r)=>{switch(r){case"missing":return`- ${e}: \u043D\u0435\u0442 meta.json.`;case"invalid":return`- ${e}: \u0431\u0438\u0442\u044B\u0439 meta.json.`;case"no-variants":return`- ${e}: \u043D\u0435\u0442 \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u043E\u0432.`}},cliError:(e,r)=>`error [${e}]: ${r}`,internalError:()=>"\u0412\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u044F\u044F \u043E\u0448\u0438\u0431\u043A\u0430:"};function me(e){let{catalog:r,picker:t,projectFiles:o,confirmer:n}=e;return async c=>{if(v(c)){console.log(R.forCommand("get"));return}let i=pe(c),a=await r.loadComponent(i.slug);console.log(l.componentDescription(a.meta));let m=await I(a,i.variant,t);console.log(l.chosenVariant(m.label));let p=await U(i.slug,i.path,i.force,process.cwd(),o,n);console.log(l.downloading(i.slug,m.label));let g=await r.loadVariantFiles(i.slug,m.label);await o.writeFiles(p,g),console.log(l.copied(p));let d=a.meta.note?.trim();d&&console.log(l.note(d))}}import{parseArgs as nr}from"util";function le(e){try{nr({args:e,options:{},allowPositionals:!1})}catch(r){let t=r instanceof Error?r.message:String(r);throw new f({code:s.UnknownOption,detail:t,command:"list"})}}import sr from"@inquirer/search";var T=e=>e instanceof Error&&e.name==="ExitPromptError";function ir(e,r){let t=(r??"").trim().toLowerCase();return e.filter(({slug:o,meta:n})=>`${o} ${n.name}`.toLowerCase().includes(t))}async function ge(e){try{return await sr({message:l.componentQuestion(),pageSize:10,source:r=>ir(e,r).map(({slug:t,meta:o})=>({name:l.catalogChoiceLabel(t,o),value:t,description:l.catalogChoiceHint(o)}))})}catch(r){throw T(r)?new y:r}}import ar from"@inquirer/input";async function de(e){try{return await ar({message:l.pathQuestion(),default:e})}catch(r){throw T(r)?new y:r}}function fe(e){let{catalog:r,picker:t,projectFiles:o,confirmer:n}=e;return async c=>{if(v(c)){console.log(R.forCommand("list"));return}le(c);let{components:i,skipped:a}=await r.listComponents();if(a.length>0&&(console.error(l.skippedHeader()),a.forEach(({slug:_,reason:k})=>{console.error(l.skippedComponent(_,k))}),console.error("")),!process.stdout.isTTY){i.length>0&&(console.log(l.catalogHeader()),i.forEach(({slug:_,meta:k})=>{console.log(l.catalogLine(_,k))}));return}if(i.length===0){console.log(l.emptyCatalog());return}let m=await ge(i),p=await r.loadComponent(m),g=await I(p,void 0,t);console.log(l.chosenVariant(g.label));let d=await de(process.cwd()),b=await U(m,d,!1,process.cwd(),o,n);console.log(l.downloading(m,g.label));let w=await r.loadVariantFiles(m,g.label);await o.writeFiles(b,w),console.log(l.copied(b));let $=p.meta.note?.trim();$&&console.log(l.note($))}}function ue(){return e=>{let r=e[0];if(r!==void 0&&R.isCommand(r)){console.log(R.forCommand(r));return}console.log(R.general())}}import{createServer as dr}from"http";import{fileURLToPath as fr}from"url";import ur from"open";import{createServer as cr}from"net";var pr=e=>new Promise((r,t)=>{let o=cr();o.once("error",n=>{if(n.code==="EADDRINUSE"){r(!1);return}t(n)}),o.listen(e,"127.0.0.1",()=>{o.close(()=>r(!0))})});async function he(e,r){for(let t=0;t<r;t++){let o=e+t;if(await pr(o))return o}throw new A({code:s.NoFreePort,start:e,tried:r})}var S={BadRequest:"ERR_BAD_REQUEST",NotFound:"ERR_NOT_FOUND",MethodNotAllowed:"ERR_METHOD_NOT_ALLOWED",Internal:"ERR_INTERNAL"},P=class extends Error{constructor(t,o){super(o);this.code=t;this.name="WebRequestError"}};function G(e){switch(e){case"ERR_STORAGE_UNREACHABLE":case"ERR_STORAGE_TIMEOUT":case"ERR_STORAGE_HTTP":case"ERR_STORAGE_EMPTY_ARCHIVE":return 502;case"ERR_COMPONENT_NOT_FOUND":return 404;case"ERR_BAD_REQUEST":return 400;case"ERR_WRITE_FAILED":return 500;default:return 500}}var h={listeningOn:e=>`\u0421\u0435\u0440\u0432\u0435\u0440 \u043D\u0430 ${e}`,error:e=>{switch(e.code){case"ERR_STORAGE_UNREACHABLE":return"\u0425\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0435 \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u043D\u043E. \u041F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 VPN.";case"ERR_STORAGE_TIMEOUT":return"\u0425\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0435 \u043D\u0435 \u043E\u0442\u0432\u0435\u0442\u0438\u043B\u043E \u0432\u043E\u0432\u0440\u0435\u043C\u044F.";case"ERR_STORAGE_HTTP":return"\u0425\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0435 \u043E\u0442\u0432\u0435\u0442\u0438\u043B\u043E \u043E\u0448\u0438\u0431\u043A\u043E\u0439.";case"ERR_STORAGE_EMPTY_ARCHIVE":return"\u0425\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0435 \u043E\u0442\u0434\u0430\u043B\u043E \u043F\u0443\u0441\u0442\u043E\u0439 \u0430\u0440\u0445\u0438\u0432.";case"ERR_COMPONENT_NOT_FOUND":return"\u041D\u0435\u0442 \u0442\u0430\u043A\u043E\u0433\u043E \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430.";case"ERR_WRITE_FAILED":return"\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0437\u0430\u043F\u0438\u0441\u0430\u0442\u044C \u0444\u0430\u0439\u043B\u044B \u043D\u0430 \u0434\u0438\u0441\u043A.";default:return"\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0432\u044B\u043F\u043E\u043B\u043D\u0438\u0442\u044C \u0437\u0430\u043F\u0440\u043E\u0441."}},internalError:()=>"\u0412\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u044F\u044F \u043E\u0448\u0438\u0431\u043A\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430.",badRequest:()=>"\u041D\u0435\u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u044B\u0439 \u0437\u0430\u043F\u0440\u043E\u0441.",notFound:()=>"\u041D\u0435\u0442 \u0442\u0430\u043A\u043E\u0433\u043E \u0440\u043E\u0443\u0442\u0430.",methodNotAllowed:()=>"\u041C\u0435\u0442\u043E\u0434 \u043D\u0435 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u044D\u0442\u0438\u043C \u0440\u043E\u0443\u0442\u043E\u043C."};async function Ce(e){let r=[];for await(let o of e)r.push(o);let t=Buffer.concat(r).toString("utf8");try{return JSON.parse(t)}catch{throw new P(S.BadRequest,h.badRequest())}}function C(e,r,t){e.writeHead(r,{"Content-Type":"application/json; charset=utf-8"}),e.end(JSON.stringify(t))}function q(e){return typeof e=="string"&&e.length>0}function Ee(e){return async(r,t)=>{let o=await Ce(r);if(o===null||typeof o!="object")throw new P(S.BadRequest,h.badRequest());let{slug:n,label:c,path:i}=o;if(!q(n)||!q(c)||!q(i))throw new P(S.BadRequest,h.badRequest());let a=H(process.cwd(),i,n),m=await e.catalog.loadVariantFiles(n,c);await e.projectFiles.writeFiles(a,m),C(t,200,{ok:!0,target:a})}}import Q from"path";function ye(e){return e==="node_modules"||e.startsWith(".")}function we(e){return async(r,t)=>{let o=process.cwd(),n=new URL(r.url??"/","http://localhost").searchParams.get("path")??"",c=Q.resolve(o,n),a=(await e.projectFiles.readSubdirs(c,ye)).map(m=>({name:m,path:Q.relative(o,Q.join(c,m))}));C(t,200,{dirs:a})}}var mr=6e4;function Re(e){let r;return async(t,o)=>{(r===void 0||Date.now()-r.at>=mr||lr(t))&&(r={at:Date.now(),listing:e.catalog.listAll()});let n;try{n=await r.listing}catch(c){throw r=void 0,c}C(o,200,n)}}function lr(e){let r=e.headers["cache-control"];return typeof r=="string"&&r.includes("no-cache")}function Se(e,r){if(r instanceof E){C(e,G(r.code),{code:r.code,message:h.error(r.details)});return}if(r instanceof P){C(e,G(r.code),{code:r.code,message:r.message});return}console.error(r),C(e,500,{code:S.Internal,message:h.internalError()})}function be(e){let r=Re({catalog:e.catalog}),t=Ee({catalog:e.catalog,projectFiles:e.projectFiles}),o=we({projectFiles:e.projectFiles}),n={"/api/components":{GET:r},"/api/copy":{POST:t},"/api/dirs":{GET:o}};return async(c,i)=>{let a=new URL(c.url??"/","http://localhost").pathname;if(!a.startsWith("/api"))return!1;try{let m=n[a];if(m===void 0)return C(i,404,{code:S.NotFound,message:h.notFound()}),!0;let p=m[c.method??""];if(p===void 0)return C(i,405,{code:S.MethodNotAllowed,message:h.methodNotAllowed()}),!0;await p(c,i)}catch(m){Se(i,m)}return!0}}import gr from"sirv";var Pe=e=>gr(e,{single:!0});var hr=4321,Cr=3,je="127.0.0.1",Er=fr(new URL("./webapp",import.meta.url)),yr=e=>{ur(e).catch(()=>{})};async function Te(e){let r=await he(hr,Cr),t=be(e),o=Pe(Er),n=dr((i,a)=>{(async()=>await t(i,a)||o(i,a))()});await new Promise(i=>{n.listen(r,je,()=>i())});let c=`http://${je}:${r}`;return console.log(h.listeningOn(c)),yr(c),{port:r}}import{parseArgs as wr}from"util";function Fe(e){try{wr({args:e,options:{},allowPositionals:!1})}catch(r){let t=r instanceof Error?r.message:String(r);throw new f({code:s.UnknownOption,detail:t,command:"web"})}}function ve(e){return async r=>{if(v(r)){console.log(R.forCommand("web"));return}Fe(r),await Te(e)}}import Rr from"@inquirer/confirm";function _e(e=process.stdin.isTTY===!0){return{confirm:async r=>{if(!e)throw new f({code:s.TargetExists,target:r});let t;try{t=await Rr({message:l.overwriteQuestion(r),default:!1})}catch(o){throw T(o)?new y:o}if(!t)throw new y}}}import Sr from"@inquirer/select";function ke(e=process.stdin.isTTY===!0){return{pick:async(r,t,o)=>{if(!e)throw new f({code:s.VariantRequired,slug:r,name:t,available:o.map(n=>n.label)});try{return await Sr({message:l.variantQuestion(r,t),choices:o.map(n=>{let{label:c}=n;return{name:c,value:n}})})}catch(n){throw T(n)?new y:n}}}}try{let e=z(ie(re())),r=ke(),t=J(),o=_e(),n=me({catalog:e,picker:r,projectFiles:t,confirmer:o}),c=fe({catalog:e,picker:r,projectFiles:t,confirmer:o}),i=ue(),a=ve({catalog:e,projectFiles:t}),{command:m,rest:p}=ae(process.argv.slice(2));switch(m){case void 0:case"help":case"--help":case"-h":i(p);break;case"get":await n(p);break;case"list":await c(p);break;case"web":await a(p);break;default:throw new f({code:s.UnknownCommand,got:m})}}catch(e){e instanceof E&&(console.error(l.cliError(e.code,l.error(e.details))),"command"in e.details&&console.error(l.tryHelp(e.details.command)),process.exit(e.exitCode)),console.error(l.internalError()),console.error(e),process.exit(1)}