@inquir/compute-cli 0.2.2 → 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 +133 -35
- package/dist/commands/apps.d.ts +42 -5
- package/dist/commands/apps.d.ts.map +1 -1
- package/dist/commands/apps.js +878 -42
- package/dist/commands/apps.js.map +1 -1
- package/dist/commands/deploy.d.ts +38 -0
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +165 -12
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/doctor.js +2 -2
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +3 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +44 -13
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/projects.d.ts +2 -0
- package/dist/commands/projects.d.ts.map +1 -0
- package/dist/commands/projects.js +98 -0
- package/dist/commands/projects.js.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/utils/api.d.ts +45 -4
- package/dist/utils/api.d.ts.map +1 -1
- package/dist/utils/api.js +66 -5
- package/dist/utils/api.js.map +1 -1
- package/dist/utils/apps-presentation.d.ts +10 -0
- package/dist/utils/apps-presentation.d.ts.map +1 -1
- package/dist/utils/apps-presentation.js +27 -0
- package/dist/utils/apps-presentation.js.map +1 -1
- package/dist/utils/args.d.ts.map +1 -1
- package/dist/utils/args.js +8 -1
- package/dist/utils/args.js.map +1 -1
- package/dist/utils/assets.d.ts +48 -1
- package/dist/utils/assets.d.ts.map +1 -1
- package/dist/utils/assets.js +185 -7
- package/dist/utils/assets.js.map +1 -1
- package/dist/utils/auth.d.ts +9 -2
- package/dist/utils/auth.d.ts.map +1 -1
- package/dist/utils/auth.js +51 -11
- package/dist/utils/auth.js.map +1 -1
- package/dist/utils/context.d.ts.map +1 -1
- package/dist/utils/context.js +2 -0
- package/dist/utils/context.js.map +1 -1
- package/dist/utils/deploy-follow.d.ts +4 -3
- package/dist/utils/deploy-follow.d.ts.map +1 -1
- package/dist/utils/deploy-follow.js +76 -17
- package/dist/utils/deploy-follow.js.map +1 -1
- package/dist/utils/detect.d.ts +49 -1
- package/dist/utils/detect.d.ts.map +1 -1
- package/dist/utils/detect.js +153 -12
- package/dist/utils/detect.js.map +1 -1
- package/dist/utils/ensure-auth.d.ts.map +1 -1
- package/dist/utils/ensure-auth.js +6 -2
- package/dist/utils/ensure-auth.js.map +1 -1
- package/dist/utils/package-metadata.js +1 -1
- package/dist/utils/project-context.d.ts +17 -0
- package/dist/utils/project-context.d.ts.map +1 -0
- package/dist/utils/project-context.js +94 -0
- package/dist/utils/project-context.js.map +1 -0
- package/package.json +10 -7
- package/skill/SKILL.md +7 -0
package/dist/utils/detect.js
CHANGED
|
@@ -80,16 +80,125 @@ function listByExtension(dir, extensions) {
|
|
|
80
80
|
.map((e) => e.name)
|
|
81
81
|
.sort();
|
|
82
82
|
}
|
|
83
|
-
/**
|
|
83
|
+
/**
|
|
84
|
+
* Sanitize an arbitrary string into a deployable function name.
|
|
85
|
+
*
|
|
86
|
+
* The output alphabet is the server's, `[a-zA-Z0-9_-]` (createFunctionSchema in
|
|
87
|
+
* src/validation/schemas.ts). Case and `_` survive it because the API keeps a
|
|
88
|
+
* name exactly as sent — `@@unique([tenantId, name])` on LambdaFunction
|
|
89
|
+
* (prisma/schema.prisma) is a Postgres unique index over the raw string, so
|
|
90
|
+
* `my_api`, `my-api` and `MyAPI` are three functions, not one. A scoped npm
|
|
91
|
+
* name keeps its scope as a leading segment (`@acme/api` → `acme-api`) because
|
|
92
|
+
* the scope is the only thing that tells it apart from `@billing/api`.
|
|
93
|
+
*
|
|
94
|
+
* A collision here is not cosmetic: the derived name IS the deploy target.
|
|
95
|
+
* `inquir deploy` updates whichever remote function already carries it
|
|
96
|
+
* (pushAndFollow in commands/deploy.ts), so two sources landing on one string
|
|
97
|
+
* take turns overwriting each other's code, env vars and URL.
|
|
98
|
+
*
|
|
99
|
+
* The mapping is still not injective. One collapse is forced by the alphabet;
|
|
100
|
+
* the other three are choices made here, and `--name` is the way out of all
|
|
101
|
+
* four:
|
|
102
|
+
* - Forced: `.`, ` `, `/` and every other rejected character must land
|
|
103
|
+
* somewhere inside the alphabet, and they all become `-`, so `my.api`,
|
|
104
|
+
* `my api` and `my/api` all reach `my-api`.
|
|
105
|
+
* - Chosen: runs of `-` collapse and leading/trailing `-` are trimmed, so
|
|
106
|
+
* `my--api` → `my-api` and `-api` → `api` even though the API accepts
|
|
107
|
+
* both inputs verbatim. Readability over injectivity.
|
|
108
|
+
* - Chosen, and a consequence of that trim: a scoped name collides with the
|
|
109
|
+
* unscoped name that spells its flattened form — `@acme/api` and `acme-api`
|
|
110
|
+
* both derive `acme-api`. `_` and a leading `-` were free (`acme_api`,
|
|
111
|
+
* `-acme-api` would have stayed distinct); the readable form won.
|
|
112
|
+
* - Chosen: a string with no `[a-zA-Z0-9_-]` character at all derives the
|
|
113
|
+
* shared literal `app`, so `касса` and `биллинг` — ordinary names in a
|
|
114
|
+
* product with a ru locale — both derive `app`, and the second deploys over
|
|
115
|
+
* the first. detectApp reports that class in `reasons` (derivesFallbackName)
|
|
116
|
+
* instead of letting it read like a chosen name, the same treatment
|
|
117
|
+
* derivesFallbackApplicationName gives it in src/utils/application-name.ts.
|
|
118
|
+
*
|
|
119
|
+
* The result is not length-capped either. The API's 128-character limit is
|
|
120
|
+
* enforced server-side (a 400 naming the `name` field); truncating here would
|
|
121
|
+
* manufacture exactly the collisions above out of two long, distinct names.
|
|
122
|
+
*
|
|
123
|
+
* One server path does re-fold the wider alphabet: app-sync labels the
|
|
124
|
+
* application with applicationNameForWorkspace (src/utils/application-name.ts —
|
|
125
|
+
* lowercase, `[^a-z0-9-]` → `-`), so `my_api` and `my-api` ask for one
|
|
126
|
+
* application. That path verifies ownership and refuses a foreign hit
|
|
127
|
+
* (workspace-sync.service resolveOwnedApplication), so the cost there is a
|
|
128
|
+
* refused sync that names the application, not lost code.
|
|
129
|
+
*/
|
|
84
130
|
export function sanitizeName(raw) {
|
|
131
|
+
const cleaned = raw
|
|
132
|
+
.replace(/[^a-zA-Z0-9_-]+/g, '-') // drops the `@` and turns `/` into `-`, keeping the scope
|
|
133
|
+
.replace(/-{2,}/g, '-')
|
|
134
|
+
.replace(/^-+|-+$/g, '');
|
|
135
|
+
return cleaned || 'app';
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* True when nothing in `raw` survives the API's alphabet, so sanitizeName
|
|
139
|
+
* returns the shared literal `app` rather than anything derived from `raw`.
|
|
140
|
+
*/
|
|
141
|
+
function derivesFallbackName(raw) {
|
|
142
|
+
return !/[a-zA-Z0-9_-]/.test(raw);
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* What sanitizeName derived up to CLI 0.2.2: lowercased, npm scope dropped.
|
|
146
|
+
*
|
|
147
|
+
* Kept only to warn. A function deployed by an older CLI still carries this
|
|
148
|
+
* name, and a deploy never renames a remote function — commands/deploy.ts picks
|
|
149
|
+
* its target by name — so once the two spellings differ the next deploy creates
|
|
150
|
+
* a second function beside the live one instead of updating it. Whether that
|
|
151
|
+
* older function exists is a question only the API can answer, so detectApp
|
|
152
|
+
* reports the derivation change rather than the outcome.
|
|
153
|
+
*/
|
|
154
|
+
function legacyName(raw) {
|
|
85
155
|
const cleaned = raw
|
|
86
156
|
.toLowerCase()
|
|
87
|
-
.replace(/^@[^/]+\//, '')
|
|
157
|
+
.replace(/^@[^/]+\//, '')
|
|
88
158
|
.replace(/[^a-z0-9-]+/g, '-')
|
|
89
159
|
.replace(/-{2,}/g, '-')
|
|
90
160
|
.replace(/^-+|-+$/g, '');
|
|
91
161
|
return cleaned || 'app';
|
|
92
162
|
}
|
|
163
|
+
/**
|
|
164
|
+
* The directory's basename as the filesystem spells it, not as the caller typed
|
|
165
|
+
* it.
|
|
166
|
+
*
|
|
167
|
+
* `path.resolve` normalises separators, `.` and `..`, but never case, and on
|
|
168
|
+
* Windows and macOS every spelling opens the same directory: `inquir deploy
|
|
169
|
+
* ./api` and `inquir deploy ./API` are one source tree that would otherwise
|
|
170
|
+
* derive `api` and `API` — two functions and two URLs, the second spelling
|
|
171
|
+
* creating rather than updating (deploy.ts passes the typed path through
|
|
172
|
+
* untouched). Listing the parent gives the spelling the disk holds, so both
|
|
173
|
+
* spellings derive one name.
|
|
174
|
+
*
|
|
175
|
+
* Deliberately not `fs.realpathSync.native`, which also resolves symlinks: a
|
|
176
|
+
* release layout deploying `./current` (a symlink retargeted per release) would
|
|
177
|
+
* then derive a new name per release — the same one-tree-many-functions split,
|
|
178
|
+
* entered from the other side.
|
|
179
|
+
*
|
|
180
|
+
* Falls back to the caller's spelling when the parent cannot be listed or holds
|
|
181
|
+
* no case-insensitive match — a filesystem root, an unreadable parent, a Windows
|
|
182
|
+
* 8.3 short name, a rename racing the read. That fallback is exactly what the
|
|
183
|
+
* basename alone would have produced, so it loses nothing.
|
|
184
|
+
*/
|
|
185
|
+
function basenameOnDisk(resolved) {
|
|
186
|
+
const base = path.basename(resolved);
|
|
187
|
+
const parent = path.dirname(resolved);
|
|
188
|
+
if (!base || parent === resolved)
|
|
189
|
+
return base;
|
|
190
|
+
let entries;
|
|
191
|
+
try {
|
|
192
|
+
entries = fs.readdirSync(parent);
|
|
193
|
+
}
|
|
194
|
+
catch {
|
|
195
|
+
return base;
|
|
196
|
+
}
|
|
197
|
+
if (entries.includes(base))
|
|
198
|
+
return base; // already spelled the way the disk spells it
|
|
199
|
+
const lowered = base.toLowerCase();
|
|
200
|
+
return entries.find((entry) => entry.toLowerCase() === lowered) ?? base;
|
|
201
|
+
}
|
|
93
202
|
/** Find the first existing entry file among conventional Node names. */
|
|
94
203
|
function findNodeEntry(dir, pkg) {
|
|
95
204
|
// package.json "main" wins when it exists on disk — unless it points into a
|
|
@@ -243,20 +352,42 @@ export function detectApp(dir, overrides = {}) {
|
|
|
243
352
|
if (overrides.runtime)
|
|
244
353
|
reasons.push(`runtime: ${runtime} (--runtime)`);
|
|
245
354
|
const pkg = runtime === 'nodejs22' ? readPackageJson(resolved) : null;
|
|
246
|
-
// Name resolution: flag > manifest name > directory basename
|
|
247
|
-
|
|
355
|
+
// Name resolution: flag > manifest name > directory basename (as the disk
|
|
356
|
+
// spells it, not as the caller typed it — see basenameOnDisk).
|
|
357
|
+
let nameSource;
|
|
358
|
+
let nameOrigin;
|
|
248
359
|
if (overrides.name) {
|
|
249
|
-
|
|
250
|
-
|
|
360
|
+
nameSource = overrides.name;
|
|
361
|
+
nameOrigin = '--name';
|
|
251
362
|
}
|
|
252
363
|
else if (pkg?.name) {
|
|
253
|
-
|
|
254
|
-
|
|
364
|
+
nameSource = pkg.name;
|
|
365
|
+
nameOrigin = 'package.json name';
|
|
255
366
|
}
|
|
256
367
|
else {
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
368
|
+
const typed = path.basename(resolved);
|
|
369
|
+
nameSource = basenameOnDisk(resolved);
|
|
370
|
+
nameOrigin = nameSource === typed
|
|
371
|
+
? 'directory name'
|
|
372
|
+
: `directory name — the disk spells it "${nameSource}", the path said "${typed}"`;
|
|
373
|
+
}
|
|
374
|
+
const name = sanitizeName(nameSource);
|
|
375
|
+
reasons.push(`name: ${name} (${nameOrigin})`);
|
|
376
|
+
// Two ways the derived name is not the one the user expects. Both are
|
|
377
|
+
// reported here because `reasons` is the deploy plan (commands/deploy.ts
|
|
378
|
+
// prints every line), and neither is visible in the name itself.
|
|
379
|
+
if (derivesFallbackName(nameSource)) {
|
|
380
|
+
reasons.push(`name: "${nameSource}" has no [a-zA-Z0-9_-] character, so it derives the shared fallback ` +
|
|
381
|
+
`"${name}" — every such name derives it, and deploying two of them means the second ` +
|
|
382
|
+
'overwrites the first. Pass --name to keep them apart.');
|
|
383
|
+
}
|
|
384
|
+
const previousName = legacyName(nameSource);
|
|
385
|
+
if (previousName !== name) {
|
|
386
|
+
reasons.push(`name: CLI 0.2.2 and older derived "${previousName}" from the same source. If this app was ` +
|
|
387
|
+
`deployed by one of those, that function keeps its name and this deploy will not update ` +
|
|
388
|
+
`it — pass --name ${previousName} to keep deploying into it.`);
|
|
389
|
+
}
|
|
390
|
+
const legacyDerivedName = !overrides.name && previousName !== name ? previousName : undefined;
|
|
260
391
|
// Entry file.
|
|
261
392
|
let entryFile = null;
|
|
262
393
|
if (runtime === 'nodejs22')
|
|
@@ -271,6 +402,7 @@ export function detectApp(dir, overrides = {}) {
|
|
|
271
402
|
reasons.push(`handler: ${overrides.handler} (--handler)`);
|
|
272
403
|
return {
|
|
273
404
|
name,
|
|
405
|
+
...(legacyDerivedName ? { legacyName: legacyDerivedName } : {}),
|
|
274
406
|
runtime,
|
|
275
407
|
mode: 'handler',
|
|
276
408
|
handler: overrides.handler,
|
|
@@ -330,7 +462,15 @@ export function detectApp(dir, overrides = {}) {
|
|
|
330
462
|
startCommand = pythonStartCommand(resolved, entryPosix, reasons);
|
|
331
463
|
}
|
|
332
464
|
reasons.push('mode: web (server app — the platform will run it with PORT and proxy requests)');
|
|
333
|
-
return {
|
|
465
|
+
return {
|
|
466
|
+
name,
|
|
467
|
+
...(legacyDerivedName ? { legacyName: legacyDerivedName } : {}),
|
|
468
|
+
runtime,
|
|
469
|
+
mode: 'web',
|
|
470
|
+
entryFile: entryPosix,
|
|
471
|
+
startCommand,
|
|
472
|
+
reasons,
|
|
473
|
+
};
|
|
334
474
|
}
|
|
335
475
|
if (!hasHandlerExport) {
|
|
336
476
|
if (runtime === 'go122') {
|
|
@@ -348,6 +488,7 @@ export function detectApp(dir, overrides = {}) {
|
|
|
348
488
|
reasons.push('mode: handler');
|
|
349
489
|
return {
|
|
350
490
|
name,
|
|
491
|
+
...(legacyDerivedName ? { legacyName: legacyDerivedName } : {}),
|
|
351
492
|
runtime,
|
|
352
493
|
mode: 'handler',
|
|
353
494
|
handler: `${stripExtension(entryPosix)}.handler`,
|
package/dist/utils/detect.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/utils/detect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AA2B7B,MAAM,OAAO,cAAe,SAAQ,KAAK;IACD;IAAtC,YAAY,OAAe,EAAW,QAAkB,EAAE;QACxD,KAAK,CAAC,OAAO,CAAC,CAAC;QADqB,UAAK,GAAL,KAAK,CAAe;QAExD,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAYD,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACvE,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC3E,MAAM,kBAAkB,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;AAE1G,kDAAkD;AAClD,MAAM,oBAAoB,GACxB,uKAAuK,CAAC;AAC1K,MAAM,sBAAsB,GAAG,yCAAyC,CAAC;AACzE,MAAM,kBAAkB,GAAG,qBAAqB,CAAC;AAEjD,wEAAwE;AACxE,MAAM,mBAAmB,GACvB,yKAAyK,CAAC;AAE5K,sEAAsE;AACtE,MAAM,uBAAuB,GAAG;IAC9B,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS;IAC5D,MAAM,EAAE,cAAc,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM;CAC5D,CAAC;AAEF,kEAAkE;AAClE,MAAM,uBAAuB,GAAG,+EAA+E,CAAC;AAChH,MAAM,yBAAyB,GAAG,iEAAiE,CAAC;AAEpG;gEACgE;AAChE,MAAM,uBAAuB,GAAG,yCAAyC,CAAC;AAE1E,SAAS,MAAM,CAAC,GAAW,EAAE,GAAW;IACtC,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW,EAAE,GAAW;IACxC,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,GAAW;IAClC,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAC1C,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAgB,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,qFAAqF;AACrF,SAAS,eAAe,CAAC,GAAW,EAAE,UAAoB;IACxD,IAAI,OAAoB,CAAC;IACzB,IAAI,CAAC;QACH,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,OAAO;SACX,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;SACtE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SAClB,IAAI,EAAE,CAAC;AACZ,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,MAAM,OAAO,GAAG,GAAG;SAChB,WAAW,EAAE;SACb,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,kCAAkC;SAC3D,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC;SAC5B,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;SACtB,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC3B,OAAO,OAAO,IAAI,KAAK,CAAC;AAC1B,CAAC;AAED,wEAAwE;AACxE,SAAS,aAAa,CAAC,GAAW,EAAE,GAAuB;IACzD,4EAA4E;IAC5E,8EAA8E;IAC9E,IAAI,GAAG,EAAE,IAAI,EAAE,CAAC;QACd,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC1C,IAAI,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;IAC5E,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC;QAClC,KAAK,MAAM,IAAI,IAAI,oBAAoB,EAAE,CAAC;YACxC,KAAK,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;gBAClC,MAAM,SAAS,GAAG,GAAG,MAAM,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC;gBAC3C,IAAI,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC;oBAAE,OAAO,SAAS,CAAC;YAC/C,CAAC;QACH,CAAC;IACH,CAAC;IACD,mDAAmD;IACnD,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IACpD,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,CAAC;AAED,SAAS,eAAe,CAAC,GAAW;IAClC,KAAK,MAAM,MAAM,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC;QAClC,KAAK,MAAM,IAAI,IAAI,kBAAkB,EAAE,CAAC;YACtC,MAAM,SAAS,GAAG,GAAG,MAAM,GAAG,IAAI,EAAE,CAAC;YACrC,IAAI,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC;gBAAE,OAAO,SAAS,CAAC;QAC/C,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5C,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,CAAC;AAED,4DAA4D;AAC5D,SAAS,cAAc,CAAC,GAAW;IACjC,OAAO,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,aAAa,CAAC,GAAW,EAAE,OAAiB;IACnD,IAAI,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAChD,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,WAAW,GACf,MAAM,CAAC,GAAG,EAAE,kBAAkB,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,gBAAgB,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC7F,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,WAAW,IAAI,CAAC,GAAG,EAAE,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;QAC7E,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,IAAI,GAAG,EAAE,CAAC;QACR,OAAO,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QACzD,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,4CAA4C;IAC5C,IAAI,eAAe,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QACrD,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,eAAe,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QACzD,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,IAAI,eAAe,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;QAC1D,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,MAAM,IAAI,cAAc,CAAC,iCAAiC,GAAG,EAAE,EAAE;QAC/D,0FAA0F;QAC1F,mDAAmD;KACpD,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,SAAiB,EAAE,GAAuB,EAAE,OAAiB;IACrF,MAAM,KAAK,GAAG,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC1C,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1F,OAAO,CAAC,IAAI,CAAC,WAAW,KAAK,yCAAyC,CAAC,CAAC;QACxE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACxC,kEAAkE;QAClE,MAAM,IAAI,cAAc,CAAC,aAAa,SAAS,uDAAuD,EAAE;YACtG,6EAA6E;YAC7E,0FAA0F;SAC3F,CAAC,CAAC;IACL,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,gBAAgB,SAAS,gBAAgB,CAAC,CAAC;IACxD,OAAO,QAAQ,SAAS,EAAE,CAAC;AAC7B,CAAC;AAED,wDAAwD;AACxD,SAAS,kBAAkB,CAAC,GAAW,EAAE,SAAiB,EAAE,OAAiB;IAC3E,MAAM,YAAY,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC7E,MAAM,SAAS,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACxE,MAAM,IAAI,GAAG,YAAY,GAAG,IAAI,GAAG,SAAS,CAAC;IAC7C,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC7D,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC;IAEnD,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,qBAAqB,MAAM,qCAAqC,CAAC;QAC7E,OAAO,CAAC,IAAI,CAAC,WAAW,GAAG,sBAAsB,CAAC,CAAC;QACnD,OAAO,GAAG,CAAC;IACb,CAAC;IACD,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,0CAA0C,MAAM,MAAM,CAAC;YACnE,OAAO,CAAC,IAAI,CAAC,WAAW,GAAG,+BAA+B,CAAC,CAAC;YAC5D,OAAO,GAAG,CAAC;QACb,CAAC;QACD,IAAI,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACtE,uEAAuE;YACvE,sEAAsE;YACtE,OAAO,CAAC,IAAI,CAAC,kBAAkB,SAAS,qCAAqC,CAAC,CAAC;YAC/E,OAAO,UAAU,SAAS,EAAE,CAAC;QAC/B,CAAC;QACD,MAAM,GAAG,GAAG,yBAAyB,MAAM,qCAAqC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,WAAW,GAAG,oBAAoB,CAAC,CAAC;QACjD,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,kBAAkB,SAAS,gBAAgB,CAAC,CAAC;IAC1D,OAAO,UAAU,SAAS,EAAE,CAAC;AAC/B,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAa;IAC1C,IAAI,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IACrF,MAAM,IAAI,cAAc,CAAC,sBAAsB,KAAK,GAAG,EAAE;QACvD,iDAAiD;KAClD,CAAC,CAAC;AACL,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa;IACvC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IACzD,MAAM,IAAI,cAAc,CAAC,mBAAmB,KAAK,GAAG,EAAE,CAAC,gCAAgC,CAAC,CAAC,CAAC;AAC5F,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW,EAAE,YAA6B,EAAE;IACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QACrE,MAAM,IAAI,cAAc,CAAC,oBAAoB,GAAG,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,IAAI,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACzD,OAAO,CAAC,IAAI,CAAC,yFAAyF,CAAC,CAAC;IAC1G,CAAC;IAED,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO;QAC/B,CAAC,CAAC,qBAAqB,CAAC,SAAS,CAAC,OAAO,CAAC;QAC1C,CAAC,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACrC,IAAI,SAAS,CAAC,OAAO;QAAE,OAAO,CAAC,IAAI,CAAC,YAAY,OAAO,cAAc,CAAC,CAAC;IAEvE,MAAM,GAAG,GAAG,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEtE,8DAA8D;IAC9D,IAAI,IAAY,CAAC;IACjB,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;QACnB,IAAI,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,WAAW,CAAC,CAAC;IACzC,CAAC;SAAM,IAAI,GAAG,EAAE,IAAI,EAAE,CAAC;QACrB,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC9B,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,sBAAsB,CAAC,CAAC;IACpD,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,mBAAmB,CAAC,CAAC;IACjD,CAAC;IAED,cAAc;IACd,IAAI,SAAS,GAAkB,IAAI,CAAC;IACpC,IAAI,OAAO,KAAK,UAAU;QAAE,SAAS,GAAG,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;SAChE,IAAI,OAAO,KAAK,WAAW;QAAE,SAAS,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;;QACnE,SAAS,GAAG,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAEzG,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;QACtB,0EAA0E;QAC1E,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,YAAY,SAAS,CAAC,OAAO,cAAc,CAAC,CAAC;QAC1D,OAAO;YACL,IAAI;YACJ,OAAO;YACP,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,SAAS,EAAE,SAAS,IAAI,GAAG,UAAU,IAAI;YACzC,OAAO;SACR,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,cAAc,CAAC,mCAAmC,GAAG,aAAa,OAAO,GAAG,EAAE;YACtF,OAAO,KAAK,UAAU;gBACpB,CAAC,CAAC,4FAA4F;gBAC9F,CAAC,CAAC,OAAO,KAAK,WAAW;oBACvB,CAAC,CAAC,0DAA0D;oBAC5D,CAAC,CAAC,mBAAmB;YACzB,mEAAmE;SACpE,CAAC,CAAC;IACL,CAAC;IACD,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACjD,OAAO,CAAC,IAAI,CAAC,UAAU,UAAU,EAAE,CAAC,CAAC;IAErC,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC;IACzD,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE9E,gCAAgC;IAChC,MAAM,gBAAgB,GACpB,OAAO,KAAK,UAAU;QACpB,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC;QACxC,CAAC,CAAC,OAAO,KAAK,WAAW;YACvB,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,WAAW,CAAC;YAC1C,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAE7C,4EAA4E;IAC5E,uEAAuE;IACvE,MAAM,QAAQ,GAAG,EAAE,GAAG,GAAG,EAAE,YAAY,EAAE,GAAG,GAAG,EAAE,eAAe,EAAE,CAAC;IACnE,MAAM,UAAU,GAAG,OAAO,KAAK,WAAW;QACxC,CAAC,CAAC,GAAG,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC,IAAI,EAAE,KAAK,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,EAAE;QAChH,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,cAAc,GAClB,OAAO,KAAK,UAAU;QACpB,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,QAAQ,CAAC;QAC7F,CAAC,CAAC,OAAO,KAAK,WAAW;YACvB,CAAC,CAAC,uBAAuB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,yBAAyB,CAAC,IAAI,CAAC,WAAW,CAAC;YACzF,CAAC,CAAC,KAAK,CAAC;IACd,MAAM,QAAQ,GACZ,UAAU,KAAK,KAAK;QACpB,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC;QACxB,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,gBAAgB,IAAI,cAAc,CAAC,CAAC;IAEpE,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;YACxB,MAAM,IAAI,cAAc,CAAC,sCAAsC,EAAE;gBAC/D,6FAA6F;aAC9F,CAAC,CAAC;QACL,CAAC;QACD,IAAI,YAAoB,CAAC;QACzB,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;YACpB,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC,WAAW,YAAY,aAAa,CAAC,CAAC;QACrD,CAAC;aAAM,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;YAClC,YAAY,GAAG,gBAAgB,CAAC,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACN,YAAY,GAAG,kBAAkB,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QACnE,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,gFAAgF,CAAC,CAAC;QAC/F,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;IACtF,CAAC;IAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;YACxB,MAAM,IAAI,cAAc,CAAC,gCAAgC,UAAU,EAAE,EAAE;gBACrE,wFAAwF;aACzF,CAAC,CAAC;QACL,CAAC;QACD,+EAA+E;QAC/E,kEAAkE;QAClE,OAAO,CAAC,IAAI,CAAC,YAAY,cAAc,CAAC,UAAU,CAAC,yDAAyD,CAAC,CAAC;IAChH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,YAAY,cAAc,CAAC,UAAU,CAAC,iCAAiC,CAAC,CAAC;IACxF,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAE9B,OAAO;QACL,IAAI;QACJ,OAAO;QACP,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,GAAG,cAAc,CAAC,UAAU,CAAC,UAAU;QAChD,SAAS,EAAE,UAAU;QACrB,OAAO;KACR,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/utils/detect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AA6B7B,MAAM,OAAO,cAAe,SAAQ,KAAK;IACD;IAAtC,YAAY,OAAe,EAAW,QAAkB,EAAE;QACxD,KAAK,CAAC,OAAO,CAAC,CAAC;QADqB,UAAK,GAAL,KAAK,CAAe;QAExD,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAYD,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACvE,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC3E,MAAM,kBAAkB,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;AAE1G,kDAAkD;AAClD,MAAM,oBAAoB,GACxB,uKAAuK,CAAC;AAC1K,MAAM,sBAAsB,GAAG,yCAAyC,CAAC;AACzE,MAAM,kBAAkB,GAAG,qBAAqB,CAAC;AAEjD,wEAAwE;AACxE,MAAM,mBAAmB,GACvB,yKAAyK,CAAC;AAE5K,sEAAsE;AACtE,MAAM,uBAAuB,GAAG;IAC9B,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS;IAC5D,MAAM,EAAE,cAAc,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM;CAC5D,CAAC;AAEF,kEAAkE;AAClE,MAAM,uBAAuB,GAAG,+EAA+E,CAAC;AAChH,MAAM,yBAAyB,GAAG,iEAAiE,CAAC;AAEpG;gEACgE;AAChE,MAAM,uBAAuB,GAAG,yCAAyC,CAAC;AAE1E,SAAS,MAAM,CAAC,GAAW,EAAE,GAAW;IACtC,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW,EAAE,GAAW;IACxC,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,GAAW;IAClC,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAC1C,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAgB,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,qFAAqF;AACrF,SAAS,eAAe,CAAC,GAAW,EAAE,UAAoB;IACxD,IAAI,OAAoB,CAAC;IACzB,IAAI,CAAC;QACH,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,OAAO;SACX,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;SACtE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SAClB,IAAI,EAAE,CAAC;AACZ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,MAAM,OAAO,GAAG,GAAG;SAChB,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,0DAA0D;SAC3F,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;SACtB,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC3B,OAAO,OAAO,IAAI,KAAK,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAAC,GAAW;IACtC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpC,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,UAAU,CAAC,GAAW;IAC7B,MAAM,OAAO,GAAG,GAAG;SAChB,WAAW,EAAE;SACb,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;SACxB,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC;SAC5B,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;SACtB,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC3B,OAAO,OAAO,IAAI,KAAK,CAAC;AAC1B,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,SAAS,cAAc,CAAC,QAAgB;IACtC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtC,IAAI,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC9C,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,6CAA6C;IACtF,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACnC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,IAAI,IAAI,CAAC;AAC1E,CAAC;AAED,wEAAwE;AACxE,SAAS,aAAa,CAAC,GAAW,EAAE,GAAuB;IACzD,4EAA4E;IAC5E,8EAA8E;IAC9E,IAAI,GAAG,EAAE,IAAI,EAAE,CAAC;QACd,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC1C,IAAI,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;IAC5E,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC;QAClC,KAAK,MAAM,IAAI,IAAI,oBAAoB,EAAE,CAAC;YACxC,KAAK,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;gBAClC,MAAM,SAAS,GAAG,GAAG,MAAM,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC;gBAC3C,IAAI,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC;oBAAE,OAAO,SAAS,CAAC;YAC/C,CAAC;QACH,CAAC;IACH,CAAC;IACD,mDAAmD;IACnD,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IACpD,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,CAAC;AAED,SAAS,eAAe,CAAC,GAAW;IAClC,KAAK,MAAM,MAAM,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC;QAClC,KAAK,MAAM,IAAI,IAAI,kBAAkB,EAAE,CAAC;YACtC,MAAM,SAAS,GAAG,GAAG,MAAM,GAAG,IAAI,EAAE,CAAC;YACrC,IAAI,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC;gBAAE,OAAO,SAAS,CAAC;QAC/C,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5C,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,CAAC;AAED,4DAA4D;AAC5D,SAAS,cAAc,CAAC,GAAW;IACjC,OAAO,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,aAAa,CAAC,GAAW,EAAE,OAAiB;IACnD,IAAI,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAChD,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,WAAW,GACf,MAAM,CAAC,GAAG,EAAE,kBAAkB,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,gBAAgB,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC7F,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,WAAW,IAAI,CAAC,GAAG,EAAE,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;QAC7E,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,IAAI,GAAG,EAAE,CAAC;QACR,OAAO,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QACzD,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,4CAA4C;IAC5C,IAAI,eAAe,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QACrD,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,eAAe,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QACzD,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,IAAI,eAAe,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;QAC1D,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,MAAM,IAAI,cAAc,CAAC,iCAAiC,GAAG,EAAE,EAAE;QAC/D,0FAA0F;QAC1F,mDAAmD;KACpD,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,SAAiB,EAAE,GAAuB,EAAE,OAAiB;IACrF,MAAM,KAAK,GAAG,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC1C,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1F,OAAO,CAAC,IAAI,CAAC,WAAW,KAAK,yCAAyC,CAAC,CAAC;QACxE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACxC,kEAAkE;QAClE,MAAM,IAAI,cAAc,CAAC,aAAa,SAAS,uDAAuD,EAAE;YACtG,6EAA6E;YAC7E,0FAA0F;SAC3F,CAAC,CAAC;IACL,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,gBAAgB,SAAS,gBAAgB,CAAC,CAAC;IACxD,OAAO,QAAQ,SAAS,EAAE,CAAC;AAC7B,CAAC;AAED,wDAAwD;AACxD,SAAS,kBAAkB,CAAC,GAAW,EAAE,SAAiB,EAAE,OAAiB;IAC3E,MAAM,YAAY,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC7E,MAAM,SAAS,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACxE,MAAM,IAAI,GAAG,YAAY,GAAG,IAAI,GAAG,SAAS,CAAC;IAC7C,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC7D,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC;IAEnD,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,qBAAqB,MAAM,qCAAqC,CAAC;QAC7E,OAAO,CAAC,IAAI,CAAC,WAAW,GAAG,sBAAsB,CAAC,CAAC;QACnD,OAAO,GAAG,CAAC;IACb,CAAC;IACD,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,0CAA0C,MAAM,MAAM,CAAC;YACnE,OAAO,CAAC,IAAI,CAAC,WAAW,GAAG,+BAA+B,CAAC,CAAC;YAC5D,OAAO,GAAG,CAAC;QACb,CAAC;QACD,IAAI,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACtE,uEAAuE;YACvE,sEAAsE;YACtE,OAAO,CAAC,IAAI,CAAC,kBAAkB,SAAS,qCAAqC,CAAC,CAAC;YAC/E,OAAO,UAAU,SAAS,EAAE,CAAC;QAC/B,CAAC;QACD,MAAM,GAAG,GAAG,yBAAyB,MAAM,qCAAqC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,WAAW,GAAG,oBAAoB,CAAC,CAAC;QACjD,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,kBAAkB,SAAS,gBAAgB,CAAC,CAAC;IAC1D,OAAO,UAAU,SAAS,EAAE,CAAC;AAC/B,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAa;IAC1C,IAAI,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IACrF,MAAM,IAAI,cAAc,CAAC,sBAAsB,KAAK,GAAG,EAAE;QACvD,iDAAiD;KAClD,CAAC,CAAC;AACL,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa;IACvC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IACzD,MAAM,IAAI,cAAc,CAAC,mBAAmB,KAAK,GAAG,EAAE,CAAC,gCAAgC,CAAC,CAAC,CAAC;AAC5F,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW,EAAE,YAA6B,EAAE;IACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QACrE,MAAM,IAAI,cAAc,CAAC,oBAAoB,GAAG,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,IAAI,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACzD,OAAO,CAAC,IAAI,CAAC,yFAAyF,CAAC,CAAC;IAC1G,CAAC;IAED,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO;QAC/B,CAAC,CAAC,qBAAqB,CAAC,SAAS,CAAC,OAAO,CAAC;QAC1C,CAAC,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACrC,IAAI,SAAS,CAAC,OAAO;QAAE,OAAO,CAAC,IAAI,CAAC,YAAY,OAAO,cAAc,CAAC,CAAC;IAEvE,MAAM,GAAG,GAAG,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEtE,0EAA0E;IAC1E,+DAA+D;IAC/D,IAAI,UAAkB,CAAC;IACvB,IAAI,UAAkB,CAAC;IACvB,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;QACnB,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC;QAC5B,UAAU,GAAG,QAAQ,CAAC;IACxB,CAAC;SAAM,IAAI,GAAG,EAAE,IAAI,EAAE,CAAC;QACrB,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC;QACtB,UAAU,GAAG,mBAAmB,CAAC;IACnC,CAAC;SAAM,CAAC;QACN,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACtC,UAAU,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;QACtC,UAAU,GAAG,UAAU,KAAK,KAAK;YAC/B,CAAC,CAAC,gBAAgB;YAClB,CAAC,CAAC,wCAAwC,UAAU,qBAAqB,KAAK,GAAG,CAAC;IACtF,CAAC;IACD,MAAM,IAAI,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,KAAK,UAAU,GAAG,CAAC,CAAC;IAC9C,sEAAsE;IACtE,yEAAyE;IACzE,iEAAiE;IACjE,IAAI,mBAAmB,CAAC,UAAU,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,IAAI,CACV,UAAU,UAAU,sEAAsE;YACxF,IAAI,IAAI,6EAA6E;YACrF,uDAAuD,CAC1D,CAAC;IACJ,CAAC;IACD,MAAM,YAAY,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAC5C,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;QAC1B,OAAO,CAAC,IAAI,CACV,sCAAsC,YAAY,0CAA0C;YAC1F,yFAAyF;YACzF,oBAAoB,YAAY,6BAA6B,CAChE,CAAC;IACJ,CAAC;IACD,MAAM,iBAAiB,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IAE9F,cAAc;IACd,IAAI,SAAS,GAAkB,IAAI,CAAC;IACpC,IAAI,OAAO,KAAK,UAAU;QAAE,SAAS,GAAG,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;SAChE,IAAI,OAAO,KAAK,WAAW;QAAE,SAAS,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;;QACnE,SAAS,GAAG,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAEzG,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;QACtB,0EAA0E;QAC1E,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,YAAY,SAAS,CAAC,OAAO,cAAc,CAAC,CAAC;QAC1D,OAAO;YACL,IAAI;YACJ,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,OAAO;YACP,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,SAAS,EAAE,SAAS,IAAI,GAAG,UAAU,IAAI;YACzC,OAAO;SACR,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,cAAc,CAAC,mCAAmC,GAAG,aAAa,OAAO,GAAG,EAAE;YACtF,OAAO,KAAK,UAAU;gBACpB,CAAC,CAAC,4FAA4F;gBAC9F,CAAC,CAAC,OAAO,KAAK,WAAW;oBACvB,CAAC,CAAC,0DAA0D;oBAC5D,CAAC,CAAC,mBAAmB;YACzB,mEAAmE;SACpE,CAAC,CAAC;IACL,CAAC;IACD,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACjD,OAAO,CAAC,IAAI,CAAC,UAAU,UAAU,EAAE,CAAC,CAAC;IAErC,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC;IACzD,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE9E,gCAAgC;IAChC,MAAM,gBAAgB,GACpB,OAAO,KAAK,UAAU;QACpB,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC;QACxC,CAAC,CAAC,OAAO,KAAK,WAAW;YACvB,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,WAAW,CAAC;YAC1C,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAE7C,4EAA4E;IAC5E,uEAAuE;IACvE,MAAM,QAAQ,GAAG,EAAE,GAAG,GAAG,EAAE,YAAY,EAAE,GAAG,GAAG,EAAE,eAAe,EAAE,CAAC;IACnE,MAAM,UAAU,GAAG,OAAO,KAAK,WAAW;QACxC,CAAC,CAAC,GAAG,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC,IAAI,EAAE,KAAK,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,EAAE;QAChH,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,cAAc,GAClB,OAAO,KAAK,UAAU;QACpB,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,QAAQ,CAAC;QAC7F,CAAC,CAAC,OAAO,KAAK,WAAW;YACvB,CAAC,CAAC,uBAAuB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,yBAAyB,CAAC,IAAI,CAAC,WAAW,CAAC;YACzF,CAAC,CAAC,KAAK,CAAC;IACd,MAAM,QAAQ,GACZ,UAAU,KAAK,KAAK;QACpB,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC;QACxB,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,gBAAgB,IAAI,cAAc,CAAC,CAAC;IAEpE,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;YACxB,MAAM,IAAI,cAAc,CAAC,sCAAsC,EAAE;gBAC/D,6FAA6F;aAC9F,CAAC,CAAC;QACL,CAAC;QACD,IAAI,YAAoB,CAAC;QACzB,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;YACpB,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC,WAAW,YAAY,aAAa,CAAC,CAAC;QACrD,CAAC;aAAM,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;YAClC,YAAY,GAAG,gBAAgB,CAAC,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACN,YAAY,GAAG,kBAAkB,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QACnE,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,gFAAgF,CAAC,CAAC;QAC/F,OAAO;YACL,IAAI;YACJ,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,OAAO;YACP,IAAI,EAAE,KAAK;YACX,SAAS,EAAE,UAAU;YACrB,YAAY;YACZ,OAAO;SACR,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;YACxB,MAAM,IAAI,cAAc,CAAC,gCAAgC,UAAU,EAAE,EAAE;gBACrE,wFAAwF;aACzF,CAAC,CAAC;QACL,CAAC;QACD,+EAA+E;QAC/E,kEAAkE;QAClE,OAAO,CAAC,IAAI,CAAC,YAAY,cAAc,CAAC,UAAU,CAAC,yDAAyD,CAAC,CAAC;IAChH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,YAAY,cAAc,CAAC,UAAU,CAAC,iCAAiC,CAAC,CAAC;IACxF,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAE9B,OAAO;QACL,IAAI;QACJ,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,OAAO;QACP,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,GAAG,cAAc,CAAC,UAAU,CAAC,UAAU;QAChD,SAAS,EAAE,UAAU;QACrB,OAAO;KACR,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ensure-auth.d.ts","sourceRoot":"","sources":["../../src/utils/ensure-auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAK/D;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,UAAU,GAAE,iBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"ensure-auth.d.ts","sourceRoot":"","sources":["../../src/utils/ensure-auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAK/D;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,UAAU,GAAE,iBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBlF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { requireAuth } from './api.js';
|
|
2
|
-
import { authRequiredError } from './errors.js';
|
|
2
|
+
import { authRequiredError, CliError } from './errors.js';
|
|
3
3
|
import { canPrompt, confirm } from './prompt.js';
|
|
4
4
|
import { printLine } from './output.js';
|
|
5
5
|
/**
|
|
@@ -12,7 +12,11 @@ export async function ensureAuth(apiOptions = {}) {
|
|
|
12
12
|
await requireAuth(apiOptions);
|
|
13
13
|
return;
|
|
14
14
|
}
|
|
15
|
-
catch {
|
|
15
|
+
catch (error) {
|
|
16
|
+
// Invalid environment/configuration is not a missing login. Preserve it
|
|
17
|
+
// instead of offering to create credentials in an accidentally named scope.
|
|
18
|
+
if (!(error instanceof CliError) || error.code !== 'AUTH_REQUIRED')
|
|
19
|
+
throw error;
|
|
16
20
|
if (canPrompt() && (await confirm('You are not logged in. Log in now?', true))) {
|
|
17
21
|
printLine('');
|
|
18
22
|
const { loginCommand } = await import('../commands/login.js');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ensure-auth.js","sourceRoot":"","sources":["../../src/utils/ensure-auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA0B,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"ensure-auth.js","sourceRoot":"","sources":["../../src/utils/ensure-auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA0B,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,aAAgC,EAAE;IACjE,IAAI,CAAC;QACH,MAAM,WAAW,CAAC,UAAU,CAAC,CAAC;QAC9B,OAAO;IACT,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,wEAAwE;QACxE,4EAA4E;QAC5E,IAAI,CAAC,CAAC,KAAK,YAAY,QAAQ,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe;YAAE,MAAM,KAAK,CAAC;QAChF,IAAI,SAAS,EAAE,IAAI,CAAC,MAAM,OAAO,CAAC,oCAAoC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;YAC/E,SAAS,CAAC,EAAE,CAAC,CAAC;YACd,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;YAC9D,0EAA0E;YAC1E,wEAAwE;YACxE,oDAAoD;YACpD,MAAM,YAAY,CAAC;gBACjB,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9D,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aACrE,CAAC,CAAC;YACH,SAAS,CAAC,EAAE,CAAC,CAAC;YACd,MAAM,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,0CAA0C;YACzE,OAAO;QACT,CAAC;QACD,MAAM,iBAAiB,EAAE,CAAC;IAC5B,CAAC;AACH,CAAC"}
|
|
@@ -17,6 +17,6 @@ export function getCliVersion() {
|
|
|
17
17
|
return readCliPackageJson().version ?? '0.1.0';
|
|
18
18
|
}
|
|
19
19
|
export function getSdkDependencyRange() {
|
|
20
|
-
return readCliPackageJson().dependencies?.['@inquir/compute'] ?? '^0.
|
|
20
|
+
return readCliPackageJson().dependencies?.['@inquir/compute'] ?? '^0.3.0';
|
|
21
21
|
}
|
|
22
22
|
//# sourceMappingURL=package-metadata.js.map
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type ApiRequestOptions } from './api.js';
|
|
2
|
+
export interface ProjectContext {
|
|
3
|
+
file: string;
|
|
4
|
+
/** Pin subsequent reads/writes to the workspace that /v1/me actually selected. */
|
|
5
|
+
apiOptions: ApiRequestOptions;
|
|
6
|
+
workspaceId: string;
|
|
7
|
+
}
|
|
8
|
+
/** Never infer identity/workspace from cached login data or a selector slug. */
|
|
9
|
+
export declare function resolveProjectContext(args: string[], apiOptions: ApiRequestOptions): Promise<ProjectContext>;
|
|
10
|
+
export declare function readProjectSelection(context: ProjectContext): Promise<string | undefined>;
|
|
11
|
+
export declare function writeProjectSelection(context: ProjectContext, projectId?: string): Promise<void>;
|
|
12
|
+
/** Explicit flag > selection for this directory/API/workspace/identity > server default. */
|
|
13
|
+
export declare function resolveCreateProject(args: string[], apiOptions: ApiRequestOptions): Promise<{
|
|
14
|
+
projectId?: string;
|
|
15
|
+
apiOptions: ApiRequestOptions;
|
|
16
|
+
}>;
|
|
17
|
+
//# sourceMappingURL=project-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-context.d.ts","sourceRoot":"","sources":["../../src/utils/project-context.ts"],"names":[],"mappings":"AAKA,OAAO,EAAS,KAAK,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAKzD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,kFAAkF;IAClF,UAAU,EAAE,iBAAiB,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;CACrB;AAiBD,gFAAgF;AAChF,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,EAAE,EACd,UAAU,EAAE,iBAAiB,GAC5B,OAAO,CAAC,cAAc,CAAC,CAWzB;AAED,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAiB/F;AAED,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAatG;AAED,4FAA4F;AAC5F,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EAAE,EACd,UAAU,EAAE,iBAAiB,GAC5B,OAAO,CAAC;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,iBAAiB,CAAA;CAAE,CAAC,CAqBhE"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { createHash, randomUUID } from 'node:crypto';
|
|
2
|
+
import fs from 'node:fs/promises';
|
|
3
|
+
import os from 'node:os';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import { loadConfig } from '../sdk.js';
|
|
6
|
+
import { getMe } from './api.js';
|
|
7
|
+
import { readFlagValue, readWorkspaceDir } from './args.js';
|
|
8
|
+
import { resolveAuthConfig } from './auth.js';
|
|
9
|
+
import { CliError, ExitCode, usageError } from './errors.js';
|
|
10
|
+
function digest(value) {
|
|
11
|
+
return createHash('sha256').update(JSON.stringify(value)).digest('hex');
|
|
12
|
+
}
|
|
13
|
+
async function contextDirectory(args, apiOptions) {
|
|
14
|
+
const auth = await resolveAuthConfig(apiOptions);
|
|
15
|
+
const api = new URL(auth.apiUrl);
|
|
16
|
+
api.pathname = api.pathname.replace(/\/+$/, '');
|
|
17
|
+
const root = await fs.realpath(loadConfig(readWorkspaceDir(args)).rootDir);
|
|
18
|
+
const directory = process.platform === 'win32' ? root.toLowerCase() : root;
|
|
19
|
+
return path.join(os.homedir(), '.inquir', 'project-contexts', digest([api.href, directory]));
|
|
20
|
+
}
|
|
21
|
+
/** Never infer identity/workspace from cached login data or a selector slug. */
|
|
22
|
+
export async function resolveProjectContext(args, apiOptions) {
|
|
23
|
+
const directory = await contextDirectory(args, apiOptions);
|
|
24
|
+
const auth = await resolveAuthConfig(apiOptions);
|
|
25
|
+
const me = await getMe(apiOptions);
|
|
26
|
+
const workspaceId = me.activeWorkspace.id;
|
|
27
|
+
const identity = me.user?.id ? `user:${me.user.id}` : `key:${digest(auth.token ?? auth.apiKey ?? '')}`;
|
|
28
|
+
return {
|
|
29
|
+
file: path.join(directory, `${digest([workspaceId, identity])}.json`),
|
|
30
|
+
workspaceId,
|
|
31
|
+
apiOptions: { ...apiOptions, workspaceId },
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
export async function readProjectSelection(context) {
|
|
35
|
+
let raw;
|
|
36
|
+
try {
|
|
37
|
+
raw = await fs.readFile(context.file, 'utf8');
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
if (error.code === 'ENOENT')
|
|
41
|
+
return undefined;
|
|
42
|
+
throw error;
|
|
43
|
+
}
|
|
44
|
+
const selection = JSON.parse(raw);
|
|
45
|
+
if (typeof selection.projectId !== 'string' || !selection.projectId.trim()) {
|
|
46
|
+
throw new CliError('Stored project selection is invalid', {
|
|
47
|
+
code: 'INVALID_PROJECT_CONTEXT',
|
|
48
|
+
exitCode: ExitCode.ERROR,
|
|
49
|
+
fix: 'Run `inquir projects use --clear` to return to automatic project creation.',
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
return selection.projectId;
|
|
53
|
+
}
|
|
54
|
+
export async function writeProjectSelection(context, projectId) {
|
|
55
|
+
if (!projectId) {
|
|
56
|
+
await fs.rm(context.file, { force: true });
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
await fs.mkdir(path.dirname(context.file), { recursive: true, mode: 0o700 });
|
|
60
|
+
const temporary = `${context.file}.${randomUUID()}.tmp`;
|
|
61
|
+
try {
|
|
62
|
+
await fs.writeFile(temporary, `${JSON.stringify({ projectId })}\n`, { mode: 0o600 });
|
|
63
|
+
await fs.rename(temporary, context.file);
|
|
64
|
+
}
|
|
65
|
+
finally {
|
|
66
|
+
await fs.rm(temporary, { force: true });
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/** Explicit flag > selection for this directory/API/workspace/identity > server default. */
|
|
70
|
+
export async function resolveCreateProject(args, apiOptions) {
|
|
71
|
+
const terminator = args.indexOf('--');
|
|
72
|
+
const flags = terminator === -1 ? args : args.slice(0, terminator);
|
|
73
|
+
const hasProject = flags.some((arg) => arg === '--project' || arg.startsWith('--project='));
|
|
74
|
+
if (hasProject) {
|
|
75
|
+
const projectId = readFlagValue(args, '--project')?.trim();
|
|
76
|
+
if (!projectId)
|
|
77
|
+
throw usageError('Missing project selector', 'inquir apps create <name> --project <id|slug>');
|
|
78
|
+
// The create endpoint validates the project together with the application write.
|
|
79
|
+
return { projectId, apiOptions };
|
|
80
|
+
}
|
|
81
|
+
// Fresh CLI installations need no identity request merely to use the server default.
|
|
82
|
+
const directory = await contextDirectory(args, apiOptions);
|
|
83
|
+
try {
|
|
84
|
+
await fs.access(directory);
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
if (error.code === 'ENOENT')
|
|
88
|
+
return { apiOptions };
|
|
89
|
+
throw error;
|
|
90
|
+
}
|
|
91
|
+
const context = await resolveProjectContext(args, apiOptions);
|
|
92
|
+
return { projectId: await readProjectSelection(context), apiOptions: context.apiOptions };
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=project-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-context.js","sourceRoot":"","sources":["../../src/utils/project-context.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@inquir/compute-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Workspace-first CLI for Inquir Compute.",
|
|
6
6
|
"bin": {
|
|
@@ -12,16 +12,19 @@
|
|
|
12
12
|
],
|
|
13
13
|
"scripts": {
|
|
14
14
|
"clean": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"",
|
|
15
|
-
"build": "npm --prefix ../.. run build --workspace @inquir/compute && tsc -p tsconfig.json",
|
|
15
|
+
"build": "npm run clean && npm --prefix ../.. run build --workspace @inquir/compute && tsc -p tsconfig.json",
|
|
16
16
|
"build:self": "tsc -p tsconfig.json",
|
|
17
|
-
"
|
|
17
|
+
"prepack": "npm run build",
|
|
18
18
|
"test": "npx vitest run -c vitest.config.ts"
|
|
19
19
|
},
|
|
20
|
-
"publishConfig": {
|
|
21
|
-
"access": "public"
|
|
22
|
-
},
|
|
20
|
+
"publishConfig": {
|
|
21
|
+
"access": "public"
|
|
22
|
+
},
|
|
23
|
+
"engines": {
|
|
24
|
+
"node": ">=22"
|
|
25
|
+
},
|
|
23
26
|
"dependencies": {
|
|
24
|
-
"@inquir/compute": "^0.
|
|
27
|
+
"@inquir/compute": "^0.3.0",
|
|
25
28
|
"tsx": "^4.19.2"
|
|
26
29
|
},
|
|
27
30
|
"devDependencies": {
|
package/skill/SKILL.md
CHANGED
|
@@ -35,6 +35,13 @@ Detection rules:
|
|
|
35
35
|
|
|
36
36
|
Overrides when detection guesses wrong: `--runtime`, `--handler <module.export>`, `--mode handler|web`, `--start "<cmd>"`.
|
|
37
37
|
|
|
38
|
+
## Databases (Postgres / Redis)
|
|
39
|
+
|
|
40
|
+
- `inquir apps create mydb --template postgres|redis` — one command from nothing to a running database: image, persistent volume, pinned public TCP port, generated password, first release.
|
|
41
|
+
- `inquir apps connect mydb web` — writes the connection URL into another app's env as `DATABASE_URL` / `REDIS_URL`; applies on that app's next release. Prefer this: the password never passes through you.
|
|
42
|
+
- `inquir apps connection-url mydb` — prints the live URL with credentials in it (and into shell history); use only when the consumer is not an app on the platform.
|
|
43
|
+
- `inquir apps backups mydb [list|create|restore <id>|delete <id>]` — volume snapshots. `restore` **overwrites the volume** and stops the app while it runs; it asks for confirmation, so non-interactively it needs `--yes`.
|
|
44
|
+
|
|
38
45
|
## MCP tools (preferred for agents)
|
|
39
46
|
|
|
40
47
|
Register once: `claude mcp add inquir -- inquir mcp`
|