@idem.agency/idem-ui 0.4.0 → 0.5.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.
Files changed (3) hide show
  1. package/README.md +50 -6
  2. package/dist/bin.js +26 -15
  3. package/package.json +3 -2
package/README.md CHANGED
@@ -28,17 +28,18 @@ idem-ui web
28
28
 
29
29
  ## Команды
30
30
 
31
- ### get — забрать компонент по имени
31
+ ### get — забрать компоненты по имени
32
32
 
33
33
  ```bash
34
- idem-ui get <slug> [--variant <label>] [--path <dir>] [--force]
34
+ idem-ui get <slug[@label]>... [--path <dir>] [--force]
35
35
  ```
36
36
 
37
37
  | Флаг | Что делает |
38
38
  | --- | --- |
39
- | `--variant <label>` | взять конкретный вариант |
40
39
  | `--path <dir>` | куда класть (по умолчанию — текущая папка) |
41
- | `--force` | перезаписать существующую папку |
40
+ | `--force` | перезаписать существующие папки |
41
+
42
+ Вариант задаётся у слага: `idem-ui get two-variants@vite` берёт вариант `vite` без вопроса. Без `@label` и при нескольких вариантах CLI спросит, какой взять.
42
43
 
43
44
  `--path` задаёт **родителя**: имя компонента дописывается всегда.
44
45
 
@@ -46,11 +47,43 @@ idem-ui get <slug> [--variant <label>] [--path <dir>] [--force]
46
47
  idem-ui get checkbox --path src/shared/ui # → src/shared/ui/checkbox
47
48
  ```
48
49
 
50
+ Слагов можно передать несколько — у каждого свой `@label`, `--path` и `--force` общие на всех:
51
+
52
+ ```bash
53
+ idem-ui get carousel@next tags-inline --path src/ui # → src/ui/carousel, src/ui/tags-inline
54
+ ```
55
+
49
56
  Папка уже занята — CLI спросит, перезаписывать ли (по умолчанию «нет»). Согласие или `--force` заменяет папку **целиком**: она сносится и пишется заново, твоих правок в ней не останется.
50
57
 
51
- Из пайпа или CI спрашивать некого — там сразу передавай `--variant` (если вариантов несколько) и `--force` (если папка может быть занята), иначе команда упадёт.
58
+ Из пайпа или CI спрашивать некого — там сразу передавай `slug@label` (если вариантов несколько) и `--force` (если папка может быть занята), иначе команда упадёт.
59
+
60
+ После копирования CLI печатает описание компонента и, если автор его оставил, постскриптум под заголовком `P.S. (<slug>)` — читай, там бывает важное.
52
61
 
53
- После копирования CLI печатает описание компонента и, если автор его оставил, постскриптум под заголовком «P.S.» — читай, там бывает важное.
62
+ ### info — подробности о компонентах без скачивания
63
+
64
+ ```bash
65
+ idem-ui info <slug[@label]>... [--json]
66
+ idem-ui info --all [--json]
67
+ ```
68
+
69
+ | Флаг | Что делает |
70
+ | --- | --- |
71
+ | `--all` | все компоненты хранилища |
72
+ | `--json` | вывод в JSON — для скриптов и AI-агентов |
73
+
74
+ Помогает решить, брать ли компонент: показывает описание, теги, варианты, картинку и P.S., ничего не записывая на диск и ничего не спрашивая.
75
+
76
+ ```bash
77
+ idem-ui info carousel # описание, теги, варианты, картинка
78
+ idem-ui info page-scrollbar@next-lenis # то же плюс readme варианта next-lenis
79
+ idem-ui info --all --json # всё хранилище одним JSON
80
+ ```
81
+
82
+ Readme варианта показывается, только если вариант назван через `@`. Слагов можно передать несколько, в том числе два варианта одного компонента — чтобы сравнить их readme: `idem-ui info icon@next icon@generate-sprite`.
83
+
84
+ Хоть один слаг не найден — команда падает целиком и ничего не печатает в stdout, ошибка уходит в stderr.
85
+
86
+ `--json` — для скриптов и AI-агентов: один объект `{ "components": [...], "skipped": [...] }`, ошибки только в stderr, сигнал — код выхода. Агенту `info` удобна тем, что только читает: её можно разрешить заранее, в отличие от `get`, который пишет на диск.
54
87
 
55
88
  ### list — витрина в терминале
56
89
 
@@ -81,6 +114,17 @@ idem-ui get --help # по конкретной команде
81
114
  idem-ui help get
82
115
  ```
83
116
 
117
+ Без аргументов печатает перечень команд:
118
+
119
+ ```
120
+ Команды:
121
+ get скопировать компоненты
122
+ list показать перечень компонентов
123
+ info показать инфо о компонентах без скачивания
124
+ web поднять локальную веб-витрину
125
+ help показать справку
126
+ ```
127
+
84
128
  ---
85
129
 
86
130
  Актуальный список команд и флагов всегда отдаёт сам CLI: `idem-ui help`.
package/dist/bin.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
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=`
2
+ import{access as Ve,mkdir as Y,readdir as He,rm as De,writeFile as Be}from"fs/promises";import{dirname as Ge,join as qe}from"path";var c={UnknownCommand:"ERR_UNKNOWN_COMMAND",SlugRequired:"ERR_SLUG_REQUIRED",AllWithSlugs:"ERR_ALL_WITH_SLUGS",UnknownOption:"ERR_UNKNOWN_OPTION",MalformedSlug:"ERR_MALFORMED_SLUG",SlugConflict:"ERR_SLUG_CONFLICT",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"},S=class extends Error{constructor(r){super(r.code);this.details=r;this.name=new.target.name,this.code=r.code}code},h=class extends S{constructor(r,o){super(r);this.hint=o}exitCode=2},w=class extends S{exitCode=1},T=class extends S{exitCode=1},$=class extends S{exitCode=1},N=class extends S{exitCode=1},j=class extends S{exitCode=130;constructor(){super({code:c.Cancelled})}};function K(){return{exists:async e=>{try{return await Ve(e),!0}catch{return!1}},writeFiles:async(e,t)=>{try{await De(e,{recursive:!0,force:!0}),await Y(e,{recursive:!0});for(let r of t){let o=qe(e,r.path);await Y(Ge(o),{recursive:!0}),await Be(o,r.data)}}catch(r){throw new $({code:c.WriteFailed,target:e,reason:r instanceof Error?r.message:String(r)})}},readSubdirs:async(e,t)=>(await He(e,{withFileTypes:!0})).filter(o=>o.isDirectory()).map(o=>o.name).filter(o=>!t(o)).toSorted()}}function _(e){return`components/${e}`}function M(e){return`${_(e)}/meta.json`}function Z(e,t){return`${_(e)}/${t}`}function ee(e,t,r){if(r.thumbnail!==void 0)return e.fileUrl(`${_(t)}/${r.thumbnail}`)}function te(e){return{async loadComponent(t){let r=await We(e,t),o=await Ye(e,t);if(o.length===0)throw new T({code:c.ComponentHasNoVariants,slug:t,name:r.name});let n=o.toSorted().map(i=>({label:i}));return{slug:t,meta:r,variants:n,thumbnailUrl:ee(e,t,r)}},async loadVariantFiles(t,r){return e.fetchArchive(Z(t,r))},async loadReadme(t,r){let o=Z(t,r),i=(await e.fetchFileNames(o)).toSorted().find(s=>s.toLowerCase()==="readme.md");return i===void 0?null:e.fetchFile(`${o}/${i}`)},async listComponents(){let t=await z(e),r=await X(e,t),o=t.map(s=>oe(s,r.get(M(s)))),n=[],i=[];for(let s of o)s.kind==="component"?n.push({slug:s.slug,meta:s.meta}):i.push(s.skipped);return{components:n.toSorted(I),skipped:i.toSorted(I)}},async listAll(){let t=await z(e),[r,o]=await Promise.all([X(e,t),e.fetchFoldersBatch(t.map(p=>_(p)))]),n=t.map(p=>Qe(e,p,r.get(M(p)),o.get(_(p))??[])),i=[],s=[];for(let p of n)p.kind==="component"?i.push(p.component):s.push(p.skipped);return{components:i.toSorted(I),skipped:s.toSorted(I)}}}}async function We(e,t){let r=await Je(e,t);return re(r,t)}function re(e,t){let r;try{r=JSON.parse(e)}catch{throw new T({code:c.MetaInvalid,slug:t})}if(typeof r!="object"||r===null||Array.isArray(r))throw new T({code:c.MetaInvalid,slug:t});return r}async function z(e){try{return await e.fetchFolders("components")}catch(t){if(t instanceof w&&t.code===c.StorageNotFound)return[];throw t}}async function X(e,t){return e.fetchFilesBatch(t.map(r=>M(r)))}function oe(e,t){if(t===void 0)return{kind:"skipped",skipped:{slug:e,reason:"missing"}};try{let r=re(t,e);return{kind:"component",slug:e,meta:r}}catch(r){if(r instanceof T&&r.code===c.MetaInvalid)return{kind:"skipped",skipped:{slug:e,reason:"invalid"}};throw r}}function Qe(e,t,r,o){let n=oe(t,r);if(n.kind==="skipped")return n;if(o.length===0)return{kind:"skipped",skipped:{slug:t,reason:"no-variants"}};let i=o.toSorted().map(s=>({label:s}));return{kind:"component",component:{slug:t,meta:n.meta,variants:i,thumbnailUrl:ee(e,t,n.meta)}}}function I(e,t){return e.slug.localeCompare(t.slug)}async function Je(e,t){try{return await e.fetchFile(M(t))}catch(r){throw r instanceof w&&r.code===c.StorageNotFound?new T({code:c.ComponentNotFound,slug:t}):r}}async function Ye(e,t){try{return await e.fetchFolders(_(t))}catch(r){if(r instanceof w&&r.code===c.StorageNotFound)return[];throw r}}var H={host:"gitlab.idem.agency",projectPath:"barabel/component-storage",ref:"main"};function ne(e=process.env){return{host:e.IDEM_STORAGE_HOST||H.host,projectPath:e.IDEM_STORAGE_PROJECT_PATH||H.projectPath,ref:e.IDEM_STORAGE_REF||H.ref}}import{gunzipSync as nt}from"zlib";var Ke={offset:0,length:100},Ze={offset:124,length:12},ze={offset:156,length:1},Xe={offset:345,length:155},et=["0","\0"];function se(e){let t=[],r=0;for(;r+512<=e.length;){let o=e.subarray(r,r+512);if(ot(o))break;let n=rt(o),i=U(o,ze),s=r+512;et.includes(i)&&t.push({name:tt(o),data:e.slice(s,s+n)}),r=s+Math.ceil(n/512)*512}return t}function tt(e){let t=U(e,Ke),r=U(e,Xe);return r===""?t:`${r}/${t}`}function rt(e){return parseInt(U(e,Ze),8)||0}function U(e,t){let r=e.subarray(t.offset,t.offset+t.length),o=r.indexOf(0);return new TextDecoder().decode(o===-1?r:r.subarray(0,o)).trim()}function ot(e){return e.every(t=>t===0)}var ie=1e4,st=70,it=25,at=`
3
3
  query($project: ID!, $ref: String!, $paths: [String!]!) {
4
4
  project(fullPath: $project) {
5
5
  repository {
@@ -12,8 +12,8 @@ import{access as $e,mkdir as W,readdir as Oe,rm as Ae,writeFile as xe}from"fs/pr
12
12
  }
13
13
  }
14
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(", ")}) {
15
+ `;function ct(e){let t=Array.from({length:e},(n,i)=>i),r=t.map(n=>`$p${n}: String!`),o=t.map(n=>`t${n}: paginatedTree(path: $p${n}, ref: $ref) { nodes { trees { nodes { name } } } }`);return`
16
+ query($project: ID!, $ref: String!, ${r.join(", ")}) {
17
17
  project(fullPath: $project) {
18
18
  repository {
19
19
  ${o.join(`
@@ -21,20 +21,31 @@ import{access as $e,mkdir as W,readdir as Oe,rm as Ae,writeFile as xe}from"fs/pr
21
21
  }
22
22
  }
23
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.
24
+ `}function pe(e,t=globalThis.fetch){let r=encodeURIComponent(e.projectPath),o=`https://${e.host}/api/v4/projects/${r}/repository`;function n(a){return`${o}/files/${encodeURIComponent(a)}/raw?ref=${e.ref}`}return{fileUrl:n,async fetchFile(a){let g=n(a),m=await p(g);if(!m.ok)throw D(m.status,a);return m.text()},async fetchArchive(a){let g=`${o}/archive.tar.gz?sha=${e.ref}&path=${a}`,m=await p(g,{mode:"same-origin"});if(!m.ok)throw D(m.status,a);let d=new Uint8Array(await m.arrayBuffer());if(d.length===0)throw ce(a);let l=[];for(let u of se(nt(d))){let C=pt(a,u.name);C!==void 0&&l.push({path:C,data:u.data})}if(l.length===0)throw ce(a);return l},async fetchFolders(a){return(await i(a)).filter(m=>m.type==="tree").map(m=>m.name)},async fetchFileNames(a){return(await i(a)).filter(m=>m.type==="blob").map(m=>m.name)},async fetchFilesBatch(a){let g=await Promise.all(ae(a,st).map(d=>s(at,{paths:d}))),m=new Map;for(let d of g)for(let l of d.project.repository.blobs.nodes)m.set(l.path,l.rawTextBlob);return m},async fetchFoldersBatch(a){let g=await Promise.all(ae(a,it).map(async d=>{let l=await s(ct(d.length),mt(d));return{batch:d,data:l}})),m=new Map;for(let{batch:d,data:l}of g)d.forEach((u,C)=>{let R=l.project.repository[`t${C}`];m.set(u,(R?.nodes??[]).flatMap(x=>x.trees.nodes.map(Le=>Le.name)))});return m}};async function i(a){let g=`${o}/tree?path=${encodeURIComponent(a)}&ref=${e.ref}&per_page=100`,m=[],d="";do{let l=await p(d===""?g:`${g}&page=${encodeURIComponent(d)}`);if(!l.ok)throw D(l.status,a);d=l.headers.get("x-next-page")??"",m.push(...await l.json())}while(d!=="");return m}async function s(a,g){let m=await p(`https://${e.host}/api/graphql`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({query:a,variables:{...g,project:e.projectPath,ref:e.ref}})});if(!m.ok)throw new w({code:c.StorageHttp,status:m.status});let d=await m.json(),[l]=d.errors??[];if(l!==void 0)throw new w({code:c.StorageQueryRejected,reason:l.message});return d.data}async function p(a,g={}){try{return await t(a,{...g,signal:AbortSignal.timeout(ie)})}catch(m){throw m instanceof Error&&m.name==="TimeoutError"?new w({code:c.StorageTimeout,host:e.host,ms:ie}):new w({code:c.StorageUnreachable,host:e.host})}}}function pt(e,t){let r=`${e}/`,o=t.lastIndexOf(r);if(o!==-1)return t.slice(o+r.length)}function mt(e){return Object.fromEntries(e.map((t,r)=>[`p${r}`,t]))}function ae(e,t){let r=[];for(let o=0;o<e.length;o+=t)r.push(e.slice(o,o+t));return r}function D(e,t){return e===404?new w({code:c.StorageNotFound,path:t}):new w({code:c.StorageHttp,status:e})}function ce(e){return new w({code:c.StorageEmptyArchive,path:e})}function me(e){return{command:e[0],rest:e.slice(1)}}function v(e){return e.includes("--help")||e.includes("-h")}function L(e,t){let r=e.indexOf("@");if(r===-1)return{slug:e};let o=e.slice(0,r),n=e.slice(r+1);if(!o||!n)throw new h({code:c.MalformedSlug,arg:e,command:t});return{slug:o,label:n}}function B(e,t){let r=e.variants.find(o=>o.label===t);if(!r)throw new h({code:c.VariantNotFound,slug:e.slug,name:e.meta.name,requested:t,available:e.variants.map(o=>o.label)});return r}async function A(e,t,r){return t!==void 0?B(e,t):e.variants.length===1?e.variants[0]:r.pick(e.slug,e.meta.name,e.variants)}import le from"path";function G(e,t,r){let o=le.resolve(e,t??".");return le.join(o,r)}async function V(e,t,r,o,n,i){let s=e.map(a=>G(o,t,a)),p=[];for(let a of s)await n.exists(a)&&p.push(a);return p.length>0&&!r&&await i.confirm(p),s}import{parseArgs as lt}from"util";function ge(e){let t,r;try{({values:t,positionals:r}=lt({args:e,allowPositionals:!0,options:{path:{type:"string"},force:{type:"boolean",default:!1}}}))}catch(s){let p=s instanceof Error?s.message:String(s);throw new h({code:c.UnknownOption,detail:p,command:"get"})}if(r.length===0)throw new h({code:c.SlugRequired,command:"get"});let o=[...new Set(r)],n=o.map(s=>L(s,"get")),i=new Map;for(let[s,{slug:p}]of n.entries()){let a=i.get(p)??[];a.push(o[s]),i.set(p,a)}for(let[s,p]of i)if(p.length>1)throw new h({code:c.SlugConflict,slug:s,forms:p,command:"get"});return{refs:n,path:t.path,force:t.force}}var q={get:{summary:"\u0441\u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u044B",usage:"idem-ui get <slug[@label]>... [--path <dir>] [--force]",args:[{name:"<slug>",describes:"\u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442; \u0435\u0441\u043B\u0438 \u0443 \u043D\u0435\u0433\u043E \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u043E\u0432, CLI \u0441\u043F\u0440\u043E\u0441\u0438\u0442, \u043A\u0430\u043A\u043E\u0439 \u0432\u0437\u044F\u0442\u044C, \u0430 \u0431\u0435\u0437 \u0442\u0435\u0440\u043C\u0438\u043D\u0430\u043B\u0430 \u0432\u044B\u0434\u0430\u0441\u0442 \u043E\u0448\u0438\u0431\u043A\u0443 \u0441\u043E \u0441\u043F\u0438\u0441\u043A\u043E\u043C \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u043E\u0432"},{name:"<slug>@<label>",describes:"\u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442 \u0432 \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u0435 <label>"}],flags:[{name:"--path <dir>",describes:"\u043A\u0443\u0434\u0430 \u043F\u043E\u043B\u043E\u0436\u0438\u0442\u044C \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u044B (\u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u2014 \u0442\u0435\u043A\u0443\u0449\u0430\u044F \u043F\u0430\u043F\u043A\u0430)"},{name:"--force",describes:"\u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0438\u0441\u0430\u0442\u044C \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0435 \u043F\u0430\u043F\u043A\u0438"}]},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:[]},info:{summary:"\u043F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0438\u043D\u0444\u043E \u043E \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430\u0445 \u0431\u0435\u0437 \u0441\u043A\u0430\u0447\u0438\u0432\u0430\u043D\u0438\u044F",usage:`idem-ui info <slug[@label]>... [--json]
25
+ idem-ui info --all [--json]`,args:[{name:"<slug>",describes:"\u043E\u043F\u0438\u0441\u0430\u043D\u0438\u0435, \u0442\u0435\u0433\u0438, \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u044B \u0438 \u043A\u0430\u0440\u0442\u0438\u043D\u043A\u0430 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430"},{name:"<slug>@<label>",describes:"\u0442\u043E \u0436\u0435 \u043F\u043B\u044E\u0441 readme \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u0430 <label>"}],flags:[{name:"--all",describes:"\u0432\u0441\u0435 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u044B \u0445\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0430"},{name:"--json",describes:"\u0432\u044B\u0432\u043E\u0434 \u0432 JSON \u2014 \u0434\u043B\u044F \u0441\u043A\u0440\u0438\u043F\u0442\u043E\u0432 \u0438 AI-\u0430\u0433\u0435\u043D\u0442\u043E\u0432"}]},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:[]}},fe=e=>e.map(({name:r,describes:o})=>` ${r.padEnd(20)} ${o}`).join(`
26
+ `),b={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.
25
27
 
26
28
  \u041A\u043E\u043C\u0430\u043D\u0434\u044B:
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}
29
+ ${Object.entries(q).map(([t,{summary:r}])=>` ${t.padEnd(6)} ${r}`).join(`
30
+ `)}`,forCommand:e=>{let{summary:t,usage:r,args:o=[],flags:n}=q[e],i=[`\u0414\u043B\u044F \u0447\u0435\u0433\u043E: ${t}`,`\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0435: ${r}`];return o.length>0&&i.push(`\u0410\u0440\u0433\u0443\u043C\u0435\u043D\u0442\u044B:
31
+ ${fe(o)}`),n.length>0&&i.push(`\u0424\u043B\u0430\u0433\u0438:
32
+ ${fe(n)}`),i.join(`
29
33
 
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}
34
+ `)},isCommand:e=>e in q};var O=(e,t)=>`${t} (${e})`,de=e=>{let t=Math.max(40,e.length+2);return e.padEnd(t,"\u2500")},f={error:e=>{switch(e.code){case c.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 c.SlugRequired:return e.command==="info"?"\u041D\u0435 \u0443\u043A\u0430\u0437\u0430\u043D\u043E \u0438\u043C\u044F \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430. \u0423\u043A\u0430\u0436\u0438 \u0441\u043B\u0430\u0433 \u0438\u043B\u0438 --all.":"\u041D\u0435 \u0443\u043A\u0430\u0437\u0430\u043D\u043E \u0438\u043C\u044F \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430.";case c.AllWithSlugs:return`--all \u043D\u0435 \u0441\u043E\u0447\u0435\u0442\u0430\u0435\u0442\u0441\u044F \u0441\u043E \u0441\u043B\u0430\u0433\u0430\u043C\u0438: ${e.slugs.join(", ")}. \u0423\u043A\u0430\u0436\u0438 \u043B\u0438\u0431\u043E \u0441\u043B\u0430\u0433\u0438, \u043B\u0438\u0431\u043E --all.`;case c.UnknownOption:return`\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0435 \u0430\u0440\u0433\u0443\u043C\u0435\u043D\u0442\u044B: ${e.detail}`;case c.MalformedSlug:return`\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0437\u0430\u043F\u0438\u0441\u044C ${e.arg}: \u043E\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044F <slug> \u0438\u043B\u0438 <slug>@<label>.`;case c.SlugConflict:{let{slug:t,forms:r}=e;return[`\u041A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442 ${t} \u0443\u043A\u0430\u0437\u0430\u043D \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0440\u0430\u0437: ${r.join(", ")}.`,`\u0412\u0441\u0435 \u043E\u043D\u0438 \u0441\u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u043B\u0438\u0441\u044C \u0431\u044B \u0432 \u043E\u0434\u043D\u0443 \u043F\u0430\u043F\u043A\u0443 ${t}, \u043F\u043E\u0442\u043E\u043C\u0443 \u0447\u0442\u043E --path \u043E\u0431\u0449\u0438\u0439 \u0434\u043B\u044F \u0432\u0441\u0435\u0445 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u043E\u0432.`,"\u0427\u0442\u043E\u0431\u044B \u0432\u0437\u044F\u0442\u044C \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u043E\u0432, \u0437\u0430\u043F\u0443\u0441\u0442\u0438 get \u043E\u0442\u0434\u0435\u043B\u044C\u043D\u043E \u0434\u043B\u044F \u043A\u0430\u0436\u0434\u043E\u0433\u043E \u0441 \u0440\u0430\u0437\u043D\u044B\u043C\u0438 --path."].join(" ")}case c.VariantNotFound:return`\u0423 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430 ${O(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 c.VariantRequired:return`\u0423 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430 ${O(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 \u044F\u0440\u043B\u044B\u043A: ${e.slug}@<label>.`;case c.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 c.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 c.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 c.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 c.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 c.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 c.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 c.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 c.ComponentHasNoVariants:return`\u0423 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430 ${O(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 c.TargetExists:return e.targets.length===1?`\u041F\u0430\u043F\u043A\u0430 ${e.targets[0]} \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.`:["\u041F\u0430\u043F\u043A\u0438 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044E\u0442, \u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0438\u0441\u044C \u0442\u0440\u0435\u0431\u0443\u0435\u0442 --force:",...e.targets.map(r=>`- ${r}`)].join(`
35
+ `);case c.WriteFailed:{let t=[`\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0437\u0430\u043F\u0438\u0441\u0430\u0442\u044C \u0432 ${e.target}: ${e.reason}`];return e.written?.length&&t.push(`\u0417\u0430\u043F\u0438\u0441\u0430\u043D\u044B: ${e.written.join(", ")}`),e.pending?.length&&t.push(`\u041D\u0435 \u0437\u0430\u043F\u0438\u0441\u0430\u043D\u044B: ${e.pending.join(", ")}`),t.join(`
36
+ `)}case c.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 c.Cancelled:return"\u041E\u0442\u043C\u0435\u043D\u0435\u043D\u043E"}},usageHint:e=>{switch(e.kind){case"help":return`\u041F\u043E\u0434\u0440\u043E\u0431\u043D\u0435\u0435: idem-ui ${e.command} --help`;case"info":return`\u041F\u043E\u0434\u0440\u043E\u0431\u043D\u0435\u0435 \u043E \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0435: idem-ui info ${e.args.join(" ")}`}},variantQuestion:(e,t)=>`\u0412\u044B\u0431\u0435\u0440\u0438 \u0432\u0430\u0440\u0438\u0430\u043D\u0442 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430 ${O(e,t)}`,componentDescription:(e,t)=>{let r=[`\u041A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442: ${O(e,t.name)}`];return t.description&&r.push(`\u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435: ${t.description}`),t.tags?.length&&r.push(`\u0422\u0435\u0433\u0438: ${t.tags.join(", ")}`),r.join(`
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,t)=>`\u0421\u043A\u0430\u0447\u0438\u0432\u0430\u044E ${e}/${t}\u2026`,copied:e=>`\u0421\u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u043D\u043E \u0432 ${e}`,note:(e,t)=>`
38
+ P.S. (${e})
39
+ ${t}`,infoVariants:e=>`\u0412\u0430\u0440\u0438\u0430\u043D\u0442\u044B: ${e.join(", ")}`,infoThumbnail:e=>`\u041E\u0431\u043B\u043E\u0436\u043A\u0430: ${e}`,infoNote:e=>["P.S.",...e.split(`
40
+ `).map(r=>` ${r}`)].join(`
41
+ `),catalogHeader:()=>"\u041A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u044B:",catalogLine:(e,t)=>{let r=`- (${e}) ${t.name}`;return t.description&&(r+=` \u2014 ${t.description}`),t.tags?.length&&(r+=` [${t.tags.join(", ")}]`),r},componentQuestion:()=>"\u0412\u044B\u0431\u0435\u0440\u0438 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442",catalogChoiceLabel:(e,t)=>`(${e}) ${t.name}`,catalogChoiceHint:e=>{let t=[];return e.description&&t.push(e.description),e.tags?.length&&t.push(`\u0422\u0435\u0433\u0438: ${e.tags.join(", ")}`),t.length>0?t.join(`
42
+ `):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,t)=>{switch(t){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.`}},readmeSection:(e,t)=>{if(t===null)return de(`\u2500\u2500 \u0420\u0438\u0434\u043C\u0438: ${e} \u2014 \u043D\u0435\u0442 `);let r=de(`\u2500\u2500 \u0420\u0438\u0434\u043C\u0438: ${e} `),o=t.replace(/\r\n/g,`
43
+ `).split(`
44
+ `),n=a=>a.trim()==="",i=o.findIndex(a=>!n(a)),s=o.findLastIndex(a=>!n(a));if(i===-1)return r;let p=o.slice(i,s+1).map(a=>n(a)?"":` ${a}`);return[r,...p].join(`
45
+ `)},cliError:(e,t)=>`error [${e}]: ${t}`,internalError:()=>"\u0412\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u044F\u044F \u043E\u0448\u0438\u0431\u043A\u0430:"};function ue(e){let{catalog:t,picker:r,projectFiles:o,confirmer:n}=e;return async i=>{if(v(i)){console.log(b.forCommand("get"));return}let s=ge(i),p=[];for(let{slug:l,label:u}of s.refs){let C=await t.loadComponent(l),R=u===void 0?void 0:await A(C,u,r);p.push({component:C,requested:R})}let a=[];for(let[l,{component:u,requested:C}]of p.entries()){l>0&&console.log(""),console.log(f.componentDescription(u.slug,u.meta));let R=C??await A(u,void 0,r);console.log(f.chosenVariant(R.label)),a.push({component:u,variant:R})}let g=a.map(({component:l})=>l.slug),m=await V(g,s.path,s.force,process.cwd(),o,n),d=[];for(let{component:l,variant:u}of a)console.log(f.downloading(l.slug,u.label)),d.push(await t.loadVariantFiles(l.slug,u.label));for(let[l,u]of m.entries()){try{await o.writeFiles(u,d[l])}catch(C){let R=C instanceof $&&C.details.code===c.WriteFailed;throw a.length===1||!R?C:new $({...C.details,written:g.slice(0,l),pending:g.slice(l)})}console.log(f.copied(u))}for(let{component:l}of a){let u=l.meta.note?.trim();u&&console.log(f.note(l.slug,u))}}}import{parseArgs as gt}from"util";function he(e){try{gt({args:e,options:{},allowPositionals:!1})}catch(t){let r=t instanceof Error?t.message:String(t),n=e.some(i=>i.startsWith("-"))?void 0:{kind:"info",args:e};throw new h({code:c.UnknownOption,detail:r,command:"list"},n)}}import ft from"@inquirer/search";var k=e=>e instanceof Error&&e.name==="ExitPromptError";function dt(e,t){let r=(t??"").trim().toLowerCase();return e.filter(({slug:o,meta:n})=>`${o} ${n.name}`.toLowerCase().includes(r))}async function Ce(e){try{return await ft({message:f.componentQuestion(),pageSize:10,source:t=>dt(e,t).map(({slug:r,meta:o})=>({name:f.catalogChoiceLabel(r,o),value:r,description:f.catalogChoiceHint(o)}))})}catch(t){throw k(t)?new j:t}}import ut from"@inquirer/input";async function we(e){try{return await ut({message:f.pathQuestion(),default:e})}catch(t){throw k(t)?new j:t}}function ye(e){let{catalog:t,picker:r,projectFiles:o,confirmer:n}=e;return async i=>{if(v(i)){console.log(b.forCommand("list"));return}he(i);let{components:s,skipped:p}=await t.listComponents();if(p.length>0&&(console.error(f.skippedHeader()),p.forEach(({slug:R,reason:x})=>{console.error(f.skippedComponent(R,x))}),console.error("")),!process.stdout.isTTY){s.length>0&&(console.log(f.catalogHeader()),s.forEach(({slug:R,meta:x})=>{console.log(f.catalogLine(R,x))}));return}if(s.length===0){console.log(f.emptyCatalog());return}let a=await Ce(s),g=await t.loadComponent(a),m=await A(g,void 0,r);console.log(f.chosenVariant(m.label));let d=await we(process.cwd()),[l]=await V([a],d,!1,process.cwd(),o,n);console.log(f.downloading(a,m.label));let u=await t.loadVariantFiles(a,m.label);await o.writeFiles(l,u),console.log(f.copied(l));let C=g.meta.note?.trim();C&&console.log(f.note(a,C))}}function Ee(){return e=>{let t=e[0];if(t!==void 0&&b.isCommand(t)){console.log(b.forCommand(t));return}console.log(b.general())}}import{parseArgs as ht}from"util";function Re(e){let t,r;try{({values:t,positionals:r}=ht({args:e,allowPositionals:!0,options:{all:{type:"boolean",default:!1},json:{type:"boolean",default:!1}}}))}catch(n){let i=n instanceof Error?n.message:String(n);throw new h({code:c.UnknownOption,detail:i,command:"info"})}if(t.all&&r.length>0)throw new h({code:c.AllWithSlugs,slugs:r,command:"info"});if(t.all)return{all:!0,entries:[],json:t.json};if(r.length===0)throw new h({code:c.SlugRequired,command:"info"});let o=new Map;for(let n of r){let{slug:i,label:s}=L(n,"info"),p=o.get(i)??{slug:i,labels:[]};s!==void 0&&!p.labels.includes(s)&&p.labels.push(s),o.set(i,p)}return{all:!1,entries:[...o.values()],json:t.json}}var Se=e=>{let{slug:t,meta:r,variants:o,thumbnailUrl:n}=e,i=o.map(({label:a})=>a),s=[f.componentDescription(t,r),f.infoVariants(i)];n&&s.push(f.infoThumbnail(n));let p=r.note?.trim();return p&&s.push(f.infoNote(p)),s.join(`
46
+ `)},Ct=(e,t)=>{let r=e.variants.map(o=>{let n=t.get(o.label);return n===void 0?o:{...o,readme:n}});return{...e,variants:r}};function be(e){let{catalog:t}=e;return async r=>{if(v(r)){console.log(b.forCommand("info"));return}let{all:o,entries:n,json:i}=Re(r);if(o){let g=await t.listAll();if(i){console.log(JSON.stringify(g,null,2));return}let{components:m,skipped:d}=g;if(m.length===0&&console.error(f.emptyCatalog()),d.length>0&&(console.error(f.skippedHeader()),d.forEach(({slug:l,reason:u})=>{console.error(f.skippedComponent(l,u))}),console.error("")),m.length>0){let l=m.map(u=>Se(u));console.log(l.join(`
31
47
 
32
- \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0435: ${t}
48
+ `))}return}let s=[];for(let{slug:g,labels:m}of n){let d=await t.loadComponent(g);for(let l of m)B(d,l);s.push({component:d,labels:m})}let p=[];for(let{component:g,labels:m}of s){let d=new Map;for(let l of m)d.set(l,await t.loadReadme(g.slug,l));p.push({component:g,readmes:d})}if(i){let g=p.map(({component:m,readmes:d})=>Ct(m,d));console.log(JSON.stringify({components:g,skipped:[]},null,2));return}let a=p.map(({component:g,readmes:m})=>{let d=[Se(g)];for(let[l,u]of m)d.push(f.readmeSection(l,u));return d.join(`
49
+ `)});console.log(a.join(`
33
50
 
34
- \u0424\u043B\u0430\u0433\u0438:
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(`
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=>`
38
- P.S.
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(`
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)}
51
+ `))}}import{createServer as bt}from"http";import{fileURLToPath as jt}from"url";import Pt from"open";import{createServer as wt}from"net";var yt=e=>new Promise((t,r)=>{let o=wt();o.once("error",n=>{if(n.code==="EADDRINUSE"){t(!1);return}r(n)}),o.listen(e,"127.0.0.1",()=>{o.close(()=>t(!0))})});async function je(e,t){for(let r=0;r<t;r++){let o=e+r;if(await yt(o))return o}throw new N({code:c.NoFreePort,start:e,tried:t})}var P={BadRequest:"ERR_BAD_REQUEST",NotFound:"ERR_NOT_FOUND",MethodNotAllowed:"ERR_METHOD_NOT_ALLOWED",Internal:"ERR_INTERNAL"},F=class extends Error{constructor(r,o){super(o);this.code=r;this.name="WebRequestError"}};function W(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 y={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 Pe(e){let t=[];for await(let o of e)t.push(o);let r=Buffer.concat(t).toString("utf8");try{return JSON.parse(r)}catch{throw new F(P.BadRequest,y.badRequest())}}function E(e,t,r){e.writeHead(t,{"Content-Type":"application/json; charset=utf-8"}),e.end(JSON.stringify(r))}function Q(e){return typeof e=="string"&&e.length>0}function Fe(e){return async(t,r)=>{let o=await Pe(t);if(o===null||typeof o!="object")throw new F(P.BadRequest,y.badRequest());let{slug:n,label:i,path:s}=o;if(!Q(n)||!Q(i)||!Q(s))throw new F(P.BadRequest,y.badRequest());let p=G(process.cwd(),s,n),a=await e.catalog.loadVariantFiles(n,i);await e.projectFiles.writeFiles(p,a),E(r,200,{ok:!0,target:p})}}import J from"path";function Te(e){return e==="node_modules"||e.startsWith(".")}function ve(e){return async(t,r)=>{let o=process.cwd(),n=new URL(t.url??"/","http://localhost").searchParams.get("path")??"",i=J.resolve(o,n),p=(await e.projectFiles.readSubdirs(i,Te)).map(a=>({name:a,path:J.relative(o,J.join(i,a))}));E(r,200,{dirs:p})}}var Et=6e4;function ke(e){let t;return async(r,o)=>{(t===void 0||Date.now()-t.at>=Et||Rt(r))&&(t={at:Date.now(),listing:e.catalog.listAll()});let n;try{n=await t.listing}catch(i){throw t=void 0,i}E(o,200,n)}}function Rt(e){let t=e.headers["cache-control"];return typeof t=="string"&&t.includes("no-cache")}function $e(e,t){if(t instanceof S){E(e,W(t.code),{code:t.code,message:y.error(t.details)});return}if(t instanceof F){E(e,W(t.code),{code:t.code,message:t.message});return}console.error(t),E(e,500,{code:P.Internal,message:y.internalError()})}function _e(e){let t=ke({catalog:e.catalog}),r=Fe({catalog:e.catalog,projectFiles:e.projectFiles}),o=ve({projectFiles:e.projectFiles}),n={"/api/components":{GET:t},"/api/copy":{POST:r},"/api/dirs":{GET:o}};return async(i,s)=>{let p=new URL(i.url??"/","http://localhost").pathname;if(!p.startsWith("/api"))return!1;try{let a=n[p];if(a===void 0)return E(s,404,{code:P.NotFound,message:y.notFound()}),!0;let g=a[i.method??""];if(g===void 0)return E(s,405,{code:P.MethodNotAllowed,message:y.methodNotAllowed()}),!0;await g(i,s)}catch(a){$e(s,a)}return!0}}import St from"sirv";var xe=e=>St(e,{single:!0});var Ft=4321,Tt=3,Ae="127.0.0.1",vt=jt(new URL("./webapp",import.meta.url)),kt=e=>{Pt(e).catch(()=>{})};async function Oe(e){let t=await je(Ft,Tt),r=_e(e),o=xe(vt),n=bt((s,p)=>{(async()=>await r(s,p)||o(s,p))()});await new Promise(s=>{n.listen(t,Ae,()=>s())});let i=`http://${Ae}:${t}`;return console.log(y.listeningOn(i)),kt(i),{port:t}}import{parseArgs as $t}from"util";function Ne(e){try{$t({args:e,options:{},allowPositionals:!1})}catch(t){let r=t instanceof Error?t.message:String(t);throw new h({code:c.UnknownOption,detail:r,command:"web"})}}function Ie(e){return async t=>{if(v(t)){console.log(b.forCommand("web"));return}Ne(t),await Oe(e)}}import _t from"@inquirer/confirm";function Me(e=process.stdin.isTTY===!0){return{confirm:async t=>{if(!e)throw new h({code:c.TargetExists,targets:t});for(let r of t){let o;try{o=await _t({message:f.overwriteQuestion(r),default:!1})}catch(n){throw k(n)?new j:n}if(!o)throw new j}}}}import xt from"@inquirer/select";function Ue(e=process.stdin.isTTY===!0){return{pick:async(t,r,o)=>{if(!e)throw new h({code:c.VariantRequired,slug:t,name:r,available:o.map(n=>n.label)});try{return await xt({message:f.variantQuestion(t,r),choices:o.map(n=>{let{label:i}=n;return{name:i,value:n}})})}catch(n){throw k(n)?new j:n}}}}try{let e=te(pe(ne())),t=Ue(),r=K(),o=Me(),n=ue({catalog:e,picker:t,projectFiles:r,confirmer:o}),i=ye({catalog:e,picker:t,projectFiles:r,confirmer:o}),s=Ee(),p=be({catalog:e}),a=Ie({catalog:e,projectFiles:r}),{command:g,rest:m}=me(process.argv.slice(2));switch(g){case void 0:case"help":case"--help":case"-h":s(m);break;case"get":await n(m);break;case"list":await i(m);break;case"info":await p(m);break;case"web":await a(m);break;default:throw new h({code:c.UnknownCommand,got:g})}}catch(e){if(e instanceof S){console.error(f.cliError(e.code,f.error(e.details)));let t=e instanceof h?e.hint:void 0;!t&&"command"in e.details&&(t={kind:"help",command:e.details.command}),t&&console.error(f.usageHint(t)),process.exit(e.exitCode)}console.error(f.internalError()),console.error(e),process.exit(1)}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@idem.agency/idem-ui",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "description": "CLI-копировальщик компонентов из хранилища idem",
5
5
  "type": "module",
6
6
  "author": "idem.agency",
@@ -51,5 +51,6 @@
51
51
  "typescript": "5.9.3",
52
52
  "vite": "^7.3.1",
53
53
  "vitest": "4.0.17"
54
- }
54
+ },
55
+ "gitHead": "668851f73ddabfec81c9c3d2cba50dae1fb3de45"
55
56
  }