@camera.ui/server 0.0.94 → 0.0.95
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/dist/interface/assets/{404-BvpgHGlA.js → 404-Clo6qjGo.js} +1 -1
- package/dist/interface/assets/{About-BCNMNyg8.js → About-Bfjj72u5.js} +1 -1
- package/dist/interface/assets/{Adminpanel-B0OTwlea.js → Adminpanel-B_SQSHyD.js} +1 -1
- package/dist/interface/assets/{Automation-BTp9IgO9.js → Automation-CQm0ZHfh.js} +2 -2
- package/dist/interface/assets/{Automations-DYnpW6sZ.js → Automations-Dbs6NMx-.js} +1 -1
- package/dist/interface/assets/{Camera-BaYP1YDU.js → Camera-CTIUE1PX.js} +2 -2
- package/dist/interface/assets/{CameraConsole-BdmOe5_y.js → CameraConsole-BQVlxqb1.js} +1 -1
- package/dist/interface/assets/{Cameras-BX1vYQf1.js → Cameras-CyZMjvQu.js} +1 -1
- package/dist/interface/assets/{Camview-WKrFnWE_.js → Camview-BnpJaGfI.js} +1 -1
- package/dist/interface/assets/{Config-MiH-DMPP.js → Config-Dc7jeUIy.js} +1 -1
- package/dist/interface/assets/{ConfigActionCameraControl-DY9lfyb-.js → ConfigActionCameraControl-aMa-699v.js} +1 -1
- package/dist/interface/assets/{ConfigActionNotification-BzoTjUZt.js → ConfigActionNotification-D_4Y919Q.js} +1 -1
- package/dist/interface/assets/{ConfigActionPlugin-DdXWHgcG.js → ConfigActionPlugin-DMAUig6Q.js} +1 -1
- package/dist/interface/assets/{ConfigActionSensor-D8_z1S-I.js → ConfigActionSensor-DuHOX22J.js} +1 -1
- package/dist/interface/assets/{ConfigActionSnapshot-BImtQaNm.js → ConfigActionSnapshot-Dtde_3hQ.js} +1 -1
- package/dist/interface/assets/{ConfigConditionSensorState-BiZJOBjM.js → ConfigConditionSensorState-CyPhwS7K.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerDetection-Cd7sZk8S.js → ConfigTriggerDetection-C7RtR75f.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerGeofence-qhLKaH1I.js → ConfigTriggerGeofence-CDU2jx7z.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSensor-fn74bD5T.js → ConfigTriggerSensor-t0MTHl1T.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSystem-C6tHuU5p.js → ConfigTriggerSystem-DXCusYWo.js} +1 -1
- package/dist/interface/assets/{Console-CouprsTc.js → Console-D32_FF2q.js} +1 -1
- package/dist/interface/assets/{CuiAvatar-4mQ1VfCP.js → CuiAvatar-DQfgB_0j.js} +1 -1
- package/dist/interface/assets/{CuiBottomSheet-k8Zb5XD1.js → CuiBottomSheet-Cgbt7aQP.js} +1 -1
- package/dist/interface/assets/CuiBottomSheet-HO59nDTz.js +1 -0
- package/dist/interface/assets/{CuiCameraCard-CGhZ-FYr.js → CuiCameraCard-BJpi9GYb.js} +1 -1
- package/dist/interface/assets/{CuiCameraPipCard-BzzOZlKR.js → CuiCameraPipCard-CLa09t5W.js} +1 -1
- package/dist/interface/assets/{CuiCameraRecordings-vljiYHz7.js → CuiCameraRecordings-DbPr4N27.js} +1 -1
- package/dist/interface/assets/{CuiCameraShares-kPpvCTUH.js → CuiCameraShares-BCTN3Ie-.js} +1 -1
- package/dist/interface/assets/{CuiCameraSnapshot-BWDbpVN7.js → CuiCameraSnapshot-fX1tTzWs.js} +1 -1
- package/dist/interface/assets/{CuiCameraTable-C8X20w8S.js → CuiCameraTable-DMKLoisE.js} +1 -1
- package/dist/interface/assets/{CuiImage-CJBGhAfQ.js → CuiImage-Ab94PYIg.js} +1 -1
- package/dist/interface/assets/{CuiMenu-DhzA8fK1.js → CuiMenu-CX2XxBmg.js} +1 -1
- package/dist/interface/assets/{CuiPluginCard-cbmwOjLF.js → CuiPluginCard-DQXny68Q.js} +2 -2
- package/dist/interface/assets/{CuiPluginOAuthButton-Dn87Ix6E.js → CuiPluginOAuthButton-BvRVOPAt.js} +2 -2
- package/dist/interface/assets/{CuiQRCode-CMROqC15.js → CuiQRCode-DOVuTNfQ.js} +1 -1
- package/dist/interface/assets/{CuiRecordingsGrid-BkA9YcHq.js → CuiRecordingsGrid-CS01gjpz.js} +1 -1
- package/dist/interface/assets/{CuiSchema-BeMqdQ_W.js → CuiSchema-L35JTZ5Y.js} +1 -1
- package/dist/interface/assets/{Faces-CNRBtzW7.js → Faces-DLdVxTYg.js} +1 -1
- package/dist/interface/assets/{FirstSteps-CNuVbY5-.js → FirstSteps-c4m_l-s9.js} +1 -1
- package/dist/interface/assets/{Instances-CrUVwyDT.js → Instances-BE8EkRQ4.js} +1 -1
- package/dist/interface/assets/{Menu-DMCqoiJX.js → Menu-BK9rk_sp.js} +1 -1
- package/dist/interface/assets/{OAuthDeviceFlow-DVHqJJ0-.js → OAuthDeviceFlow-DwoyMn6e.js} +1 -1
- package/dist/interface/assets/{Plugin-4QhPU2z5.js → Plugin-B4UvyHA4.js} +1 -1
- package/dist/interface/assets/{PluginConsole-BGcYTBBP.js → PluginConsole-00dw-HUB.js} +1 -1
- package/dist/interface/assets/{PluginSchema-BsQbR0zX.js → PluginSchema-7qwKEn6c.js} +1 -1
- package/dist/interface/assets/{Plugins-B5g1RJAK.js → Plugins-CFXvg0P-.js} +2 -2
- package/dist/interface/assets/{Recordings-KHQAIrEW.js → Recordings-MSRod46b.js} +1 -1
- package/dist/interface/assets/{Settings-DRsnud_Q.js → Settings-CnGCN9cC.js} +1 -1
- package/dist/interface/assets/SettingsAccount-DoFSZhI5.js +1 -0
- package/dist/interface/assets/{SettingsAccount-DySpU4el.js → SettingsAccount-lIy74Kjh.js} +1 -1
- package/dist/interface/assets/SettingsAppearance-DA8ON3Ts.js +1 -0
- package/dist/interface/assets/{SettingsAppearance-CGdPmMkM.js → SettingsAppearance-DLnlx8bM.js} +1 -1
- package/dist/interface/assets/{SettingsBackup-BmGR_7CF.js → SettingsBackup-CpBqig7H.js} +1 -1
- package/dist/interface/assets/{SettingsNotifications-BVKeFwwT.js → SettingsNotifications-di325j-b.js} +1 -1
- package/dist/interface/assets/{SettingsRecordings-Dr9-c7f7.js → SettingsRecordings-DvNlji2N.js} +1 -1
- package/dist/interface/assets/{SettingsRemote-ht_onhMJ.js → SettingsRemote-Kb-ichM0.js} +1 -1
- package/dist/interface/assets/{SettingsSystem-B0UMgWbE.js → SettingsSystem-C0OHXycw.js} +2 -2
- package/dist/interface/assets/{SettingsUsers-Bb1juUy8.js → SettingsUsers-Dx8Fm2QE.js} +1 -1
- package/dist/interface/assets/{Terminal-DvvXgMu-.js → Terminal-BR9InMiL.js} +1 -1
- package/dist/interface/assets/VersionsHandler-J7N_cZBS.js +7 -0
- package/dist/interface/assets/{Workers-D_wZn8hC.js → Workers-BINNsLDU.js} +1 -1
- package/dist/interface/assets/{api-DbOpzNbt.js → api-D23Y8GEd.js} +1 -1
- package/dist/interface/assets/api-DjhIYzsF.js +2 -0
- package/dist/interface/assets/{auth-C14L3iEn.js → auth-CeN6oTgU.js} +1 -1
- package/dist/interface/assets/{automations-BwTCZACp.js → automations-G3fWqK-C.js} +1 -1
- package/dist/interface/assets/{backup-I44o7LfB.js → backup-KFYNv85J.js} +1 -1
- package/dist/interface/assets/{cameras-CJU6PhVu.js → cameras-DeAGPYqb.js} +1 -1
- package/dist/interface/assets/cloudHandoff-Di9OHN7W.js +1 -0
- package/dist/interface/assets/copy-16-filled-DUaht4LK.js +1 -0
- package/dist/interface/assets/{deviceId-3kTQbnbi.js → deviceId-CgRNCVsl.js} +1 -1
- package/dist/interface/assets/{hasPermission-CuUcJNef.js → hasPermission-nr9uI1sh.js} +1 -1
- package/dist/interface/assets/{instances-fJJkMjZZ.js → instances-Cz4DJwNc.js} +1 -1
- package/dist/interface/assets/{locale-JdE3H3At.js → locale-fNpCK2bH.js} +1 -1
- package/dist/interface/assets/{main-smWr0ZCq.js → main-sGc9j7q_.js} +2 -2
- package/dist/interface/assets/{notifications-BHvHIRSM.js → notifications-euShmBTH.js} +1 -1
- package/dist/interface/assets/{plugins-C6jbSDXS.js → plugins-DsiC2cVL.js} +1 -1
- package/dist/interface/assets/{round-restart-alt-CNkzBawa.js → round-restart-alt-AXgxJgvx.js} +1 -1
- package/dist/interface/assets/{router-BZ7fTrv9.js → router-BLvVFGz9.js} +2 -2
- package/dist/interface/assets/{server-BBHyrnAu.js → server-CfW4FWmD.js} +1 -1
- package/dist/interface/assets/{shares-DQJerWK4.js → shares-CifP6qUz.js} +1 -1
- package/dist/interface/assets/{theme-B2nITMtK.js → theme-3K07RHLA.js} +1 -1
- package/dist/interface/assets/{useBiometricCredentials-wKhzGV-q.js → useBiometricCredentials-DS-lOPkp.js} +1 -1
- package/dist/interface/assets/{useCameraOptions-CtBJS7bp.js → useCameraOptions-CO9VqYVT.js} +1 -1
- package/dist/interface/assets/{useCuiDialog-Bp7p3zLy.js → useCuiDialog-BlhSS0jk.js} +1 -1
- package/dist/interface/assets/{useFileDownload-CBx3wVDu.js → useFileDownload-DEM9UhjP.js} +1 -1
- package/dist/interface/assets/{useLogsSocket-BTa94fXn.js → useLogsSocket-CNAQ1g8I.js} +1 -1
- package/dist/interface/assets/{useStreamStatus-Dj6ybIhF.js → useStreamStatus-Bn6gxutk.js} +1 -1
- package/dist/interface/assets/{view-grid-CstDugYR.js → view-grid-Cg2Wk0qw.js} +1 -1
- package/dist/interface/index.html +26 -26
- package/dist/interface/sw.js +1 -1
- package/dist/server/package.json +9 -5
- package/dist/server/src/api/controllers/plugins.controller.d.ts +0 -1
- package/dist/server/src/api/controllers/plugins.controller.js +22 -108
- package/dist/server/src/api/controllers/plugins.controller.js.map +1 -1
- package/dist/server/src/api/controllers/server.controller.js +2 -13
- package/dist/server/src/api/controllers/server.controller.js.map +1 -1
- package/dist/server/src/api/services/backup.service.js.map +1 -1
- package/dist/server/src/api/services/instances.service.js.map +1 -1
- package/dist/server/src/api/services/plugins.service.d.ts +0 -2
- package/dist/server/src/api/services/plugins.service.js +10 -111
- package/dist/server/src/api/services/plugins.service.js.map +1 -1
- package/dist/server/src/api/websocket/nsp/server.d.ts +0 -2
- package/dist/server/src/api/websocket/nsp/server.js +17 -90
- package/dist/server/src/api/websocket/nsp/server.js.map +1 -1
- package/dist/server/src/utils/npm/auth.d.ts +2 -0
- package/dist/server/src/utils/npm/auth.js +54 -0
- package/dist/server/src/utils/npm/auth.js.map +1 -0
- package/dist/server/src/utils/npm/index.d.ts +44 -0
- package/dist/server/src/utils/npm/index.js +115 -0
- package/dist/server/src/utils/npm/index.js.map +1 -0
- package/package.json +9 -5
- package/dist/interface/assets/CuiBottomSheet-FXwjLm5t.js +0 -1
- package/dist/interface/assets/SettingsAccount-Cny3sanY.js +0 -1
- package/dist/interface/assets/SettingsAppearance-DvKlfkfH.js +0 -1
- package/dist/interface/assets/VersionsHandler-BkjcICiT.js +0 -7
- package/dist/interface/assets/api-Tan5u5QZ.js +0 -2
- package/dist/interface/assets/cloudHandoff-AW0MqbxU.js +0 -1
- package/dist/interface/assets/copy-16-filled-CG924HKI.js +0 -1
- /package/dist/interface/assets/{logo-512-DLKVOU2S.png → error-256-DLKVOU2S.png} +0 -0
|
@@ -7,17 +7,14 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
9
|
};
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import { createHash } from 'node:crypto';
|
|
14
|
-
import { platform, tmpdir, userInfo } from 'node:os';
|
|
15
|
-
import { basename, dirname, join } from 'node:path';
|
|
16
|
-
import { extract } from 'tar';
|
|
10
|
+
import { move, pathExists, readJson, remove } from 'fs-extra/esm';
|
|
11
|
+
import { tmpdir, userInfo } from 'node:os';
|
|
12
|
+
import { join } from 'node:path';
|
|
17
13
|
import { container, delay, registry } from 'tsyringe';
|
|
18
14
|
import { v4 as uuidv4 } from 'uuid';
|
|
19
15
|
import { PluginManager } from '../../plugins/index.js';
|
|
20
16
|
import { Plugin } from '../../plugins/plugin.js';
|
|
17
|
+
import { extractPackage, installDependencies } from '../../utils/npm/index.js';
|
|
21
18
|
import { Database } from '../database/index.js';
|
|
22
19
|
import { CamerasService } from './cameras.service.js';
|
|
23
20
|
import { elidePath, getTerminalCols, InstallLogger } from '../utils/install-logger.js';
|
|
@@ -175,47 +172,18 @@ let PluginsService = class PluginsService {
|
|
|
175
172
|
const backupTempDir = join(tmpdir(), `${pluginName}_backup`);
|
|
176
173
|
let backedUp = false;
|
|
177
174
|
try {
|
|
178
|
-
const npmRegistry = 'https://registry.npmjs.org';
|
|
179
|
-
const packageUrl = `${npmRegistry}/${pluginName}/${version}`;
|
|
180
|
-
log.step('Fetching package information');
|
|
181
|
-
const response = await fetch(packageUrl);
|
|
182
|
-
if (!response.ok) {
|
|
183
|
-
const message = (await response.text()) ?? `${response.statusText} (${response.status})`;
|
|
184
|
-
throw new Error(`HTTP error! Message: ${message}`);
|
|
185
|
-
}
|
|
186
|
-
const packageInfo = await response.json();
|
|
187
|
-
const tarballUrl = packageInfo.dist.tarball;
|
|
188
|
-
const expectedShasum = packageInfo.dist.shasum;
|
|
189
|
-
log.done();
|
|
190
|
-
const tarballData = await this.downloadWithProgress(log, tarballUrl);
|
|
191
|
-
log.step('Verifying integrity');
|
|
192
|
-
const computedShasum = createHash('sha1').update(Buffer.from(tarballData)).digest('hex');
|
|
193
|
-
if (computedShasum !== expectedShasum) {
|
|
194
|
-
throw new Error(`SHA checksum mismatch. Expected: ${expectedShasum}, Got: ${computedShasum}`);
|
|
195
|
-
}
|
|
196
|
-
log.done();
|
|
197
175
|
if (await pathExists(targetDir)) {
|
|
198
176
|
log.step('Backing up existing installation');
|
|
199
177
|
await move(targetDir, backupTempDir);
|
|
200
178
|
backedUp = true;
|
|
201
179
|
log.done();
|
|
202
180
|
}
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
});
|
|
210
|
-
extractStream.on('error', reject);
|
|
211
|
-
extractStream.on('end', () => {
|
|
212
|
-
log.done();
|
|
213
|
-
resolve();
|
|
214
|
-
});
|
|
215
|
-
extractStream.write(Buffer.from(tarballData));
|
|
216
|
-
extractStream.end();
|
|
217
|
-
});
|
|
218
|
-
await this.installProductionDependencies(log, targetDir);
|
|
181
|
+
log.step('Downloading and extracting package');
|
|
182
|
+
await extractPackage(`${pluginName}@${version}`, targetDir);
|
|
183
|
+
log.done();
|
|
184
|
+
log.block('Installing dependencies');
|
|
185
|
+
await installDependencies(targetDir, (chunk) => log.feed(chunk));
|
|
186
|
+
log.flush();
|
|
219
187
|
await this.extrackBundeledPlugin(log, targetDir);
|
|
220
188
|
log.step('Cleaning up');
|
|
221
189
|
await remove(backupTempDir);
|
|
@@ -270,75 +238,6 @@ let PluginsService = class PluginsService {
|
|
|
270
238
|
throw error;
|
|
271
239
|
}
|
|
272
240
|
}
|
|
273
|
-
async downloadWithProgress(log, url) {
|
|
274
|
-
const response = await fetch(url);
|
|
275
|
-
if (!response.ok) {
|
|
276
|
-
const message = (await response.text()) ?? `${response.statusText} (${response.status})`;
|
|
277
|
-
throw new Error(`HTTP error! Message: ${message}`);
|
|
278
|
-
}
|
|
279
|
-
const contentLength = Number(response.headers.get('Content-Length'));
|
|
280
|
-
let receivedLength = 0;
|
|
281
|
-
const chunks = [];
|
|
282
|
-
const reader = response.body.getReader();
|
|
283
|
-
log.step('Downloading');
|
|
284
|
-
while (true) {
|
|
285
|
-
const { done, value } = await reader.read();
|
|
286
|
-
if (done) {
|
|
287
|
-
break;
|
|
288
|
-
}
|
|
289
|
-
chunks.push(value);
|
|
290
|
-
receivedLength += value.length;
|
|
291
|
-
log.progress(Math.round((receivedLength / contentLength) * 100));
|
|
292
|
-
}
|
|
293
|
-
log.done();
|
|
294
|
-
return await new Blob(chunks).arrayBuffer();
|
|
295
|
-
}
|
|
296
|
-
async installProductionDependencies(log, packageDir) {
|
|
297
|
-
return new Promise((resolve, reject) => {
|
|
298
|
-
log.block('Installing dependencies');
|
|
299
|
-
const npmCmd = getNpmPath()[0];
|
|
300
|
-
const args = ['install', '--omit=dev', '--include=prod', '--no-progress'];
|
|
301
|
-
const env = { ...process.env };
|
|
302
|
-
Object.assign(env, {
|
|
303
|
-
NODE_ENV: 'production',
|
|
304
|
-
npm_config_update_notifier: 'false',
|
|
305
|
-
npm_config_prefer_online: 'true',
|
|
306
|
-
npm_config_progress: 'false',
|
|
307
|
-
npm_config_prefix: packageDir,
|
|
308
|
-
npm_config_color: 'always',
|
|
309
|
-
FORCE_COLOR: '1',
|
|
310
|
-
});
|
|
311
|
-
if (platform() !== 'win32' && basename(packageDir) === 'lib') {
|
|
312
|
-
env.npm_config_prefix = dirname(packageDir);
|
|
313
|
-
}
|
|
314
|
-
const childProcess = spawn(npmCmd, args, {
|
|
315
|
-
cwd: packageDir,
|
|
316
|
-
env,
|
|
317
|
-
stdio: ['ignore', 'pipe', 'pipe'],
|
|
318
|
-
});
|
|
319
|
-
const handleChunk = (data) => log.feed(data.toString());
|
|
320
|
-
childProcess.stdout.on('data', handleChunk);
|
|
321
|
-
childProcess.stderr.on('data', handleChunk);
|
|
322
|
-
const timeoutTimer = setTimeout(() => {
|
|
323
|
-
childProcess.kill('SIGTERM');
|
|
324
|
-
reject(new Error('Operation timed out after 5 minutes'));
|
|
325
|
-
}, 300000);
|
|
326
|
-
childProcess.on('close', (code) => {
|
|
327
|
-
clearTimeout(timeoutTimer);
|
|
328
|
-
log.flush();
|
|
329
|
-
if (code === 0) {
|
|
330
|
-
resolve();
|
|
331
|
-
}
|
|
332
|
-
else {
|
|
333
|
-
reject(new Error(`Operation failed with exit code ${code}. Please review log for details.`));
|
|
334
|
-
}
|
|
335
|
-
});
|
|
336
|
-
childProcess.on('error', (err) => {
|
|
337
|
-
clearTimeout(timeoutTimer);
|
|
338
|
-
reject(new Error(`Failed to start process: ${err.message}`));
|
|
339
|
-
});
|
|
340
|
-
});
|
|
341
|
-
}
|
|
342
241
|
async extrackBundeledPlugin(log, packageDir) {
|
|
343
242
|
log.step('Checking for bundled plugin');
|
|
344
243
|
const bundlePath = await PluginManager.checkBundeledPlugin(packageDir);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugins.service.js","sourceRoot":"","sources":["../../../../../src/api/services/plugins.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAoBhF,IAAM,cAAc,GAApB,MAAM,cAAc;IACjB,GAAG,CAAW;IACd,EAAE,CAAS;IACX,MAAM,CAAgB;IACtB,aAAa,CAAgB;IAC7B,aAAa,CAAgB;IAC7B,aAAa,CAAgB;IAE7B,kBAAkB,GAAG,IAAI,GAAG,EAA2B,CAAC;IAEhE;QACE,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC,OAAO,CAAW,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,OAAO,CAAgB,QAAQ,CAAC,CAAC;QACzD,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,OAAO,CAAgB,eAAe,CAAC,CAAC;QACvE,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,OAAO,CAAgB,eAAe,CAAC,CAAC;QACvE,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,OAAO,CAAgB,eAAe,CAAC,CAAC;QAEvE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;IAClC,CAAC;IAEM,WAAW;QAChB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IAC5E,CAAC;IAEM,mBAAmB;QACxB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACnF,CAAC;IAEM,qBAAqB;QAC1B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC1D,CAAC;IAEM,eAAe,CAAC,UAAkB;QACvC,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,KAAK,UAAU,CAAC,CAAC;QACnF,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,aAAa,CAAC,EAAU;QAC7B,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACnE,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,sBAAsB,CAAC,UAAkB;QAC9C,MAAM,yBAAyB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC7D,MAAM,MAAM,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,KAAK,UAAU,CAAC,CAAC;QACjH,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,oBAAoB,CAAC,EAAU;QACpC,MAAM,yBAAyB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC7D,MAAM,MAAM,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACjG,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,YAAY;QACjB,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;IACtE,CAAC;IAEM,iBAAiB,CAAC,UAAkB;QACzC,KAAK,MAAM,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC;YACtD,IAAI,KAAK,CAAC,UAAU,KAAK,UAAU;gBAAE,OAAO,KAAK,CAAC;QACpD,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEM,eAAe,CAAC,EAAU;QAC/B,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,UAAkB,EAAE,KAAc;QAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAE9B,MAAM,UAAU,GAAa;YAC3B,GAAG,EAAE,KAAK,IAAI,MAAM,EAAE;YACtB,UAAU;SACX,CAAC;QAEF,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QACzD,OAAO,UAAU,CAAC;IACpB,CAAC;IAEM,KAAK,CAAC,oBAAoB,CAAC,UAAkB;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;QAC5C,MAAM,cAAc,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAEpD,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAAC,EAAU;QACxC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;YAAE,OAAO;QAEtC,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;QAC5C,MAAM,cAAc,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAE1C,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACtC,CAAC;IAEM,KAAK,CAAC,kBAAkB;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACpC,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;QAE5C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,cAAc,CAAC,kBAAkB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;IACxC,CAAC;IAEM,KAAK,CAAC,qBAAqB;QAChC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;QAC1D,MAAM,aAAa,GAAa,EAAE,CAAC;QAEnC,KAAK,MAAM,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC;YACtD,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;gBAClF,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClF,CAAC;IAEM,KAAK,CAAC,qBAAqB;QAChC,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACnC,MAAM,eAAe,GAAa,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAEjH,KAAK,MAAM,UAAU,IAAI,eAAe,EAAE,CAAC;YACzC,MAAM,cAAc,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,UAAkB,EAAE,MAA0C,EAAE,OAAgB,EAAE,QAAiB;QACrH,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC;QAC5E,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAE1C,MAAM,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,UAAU,GAAG,MAAM,KAAK,WAAW,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC7I,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAE/E,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC/D,IAAI,cAAc,EAAE,CAAC;YACnB,GAAG,CAAC,KAAK,CAAC,UAAU,MAAM,WAAW,UAAU,UAAU,cAAc,CAAC,MAAM,kBAAkB,CAAC,CAAC;YAClG,MAAM,IAAI,KAAK,CAAC,UAAU,MAAM,WAAW,UAAU,UAAU,cAAc,CAAC,MAAM,kBAAkB,CAAC,CAAC;QAC1G,CAAC;QAED,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,CAAC,CAAC;QAE9F,IAAI,CAAC;YACH,QAAQ,MAAM,EAAE,CAAC;gBACf,KAAK,SAAS;oBACZ,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,IAAI,QAAQ,EAAE,SAAS,CAAC,CAAC;oBAC1E,MAAM;gBACR,KAAK,QAAQ;oBACX,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,IAAI,QAAQ,EAAE,SAAS,CAAC,CAAC;oBACzE,MAAM;gBACR,KAAK,WAAW;oBACd,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;oBAEvD,IAAI,QAAQ,EAAE,CAAC;wBACb,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;wBAC5C,MAAM,cAAc,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;oBAClD,CAAC;oBACD,MAAM;YACV,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC7C,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEM,iBAAiB;QACtB,MAAM,iBAAiB,GAAsB,EAAE,CAAC;QAChD,KAAK,MAAM,CAAC,EAAE,YAAY,CAAC,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACvD,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,GAAkB,EAAE,UAAkB,EAAE,OAAe,EAAE,SAAiB,EAAE,MAAgB;QACtH,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,UAAU,SAAS,CAAC,CAAC;QAC7D,IAAI,QAAQ,GAAG,KAAK,CAAC;QAErB,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,4BAA4B,CAAC;YACjD,MAAM,UAAU,GAAG,GAAG,WAAW,IAAI,UAAU,IAAI,OAAO,EAAE,CAAC;YAE7D,GAAG,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;YAEzC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,CAAC;YACzC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,OAAO,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,QAAQ,CAAC,UAAU,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC;gBACzF,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC;YACrD,CAAC;YAED,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC1C,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;YAC5C,MAAM,cAAc,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;YAE/C,GAAG,CAAC,IAAI,EAAE,CAAC;YAEX,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;YAErE,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YAChC,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACzF,IAAI,cAAc,KAAK,cAAc,EAAE,CAAC;gBACtC,MAAM,IAAI,KAAK,CAAC,oCAAoC,cAAc,UAAU,cAAc,EAAE,CAAC,CAAC;YAChG,CAAC;YACD,GAAG,CAAC,IAAI,EAAE,CAAC;YAEX,IAAI,MAAM,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAChC,GAAG,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;gBAC7C,MAAM,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;gBACrC,QAAQ,GAAG,IAAI,CAAC;gBAChB,GAAG,CAAC,IAAI,EAAE,CAAC;YACb,CAAC;YAED,MAAM,SAAS,CAAC,SAAS,CAAC,CAAC;YAE3B,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YAE/B,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC1C,MAAM,aAAa,GAAG,OAAO,CAAC;oBAC5B,GAAG,EAAE,SAAS;oBACd,KAAK,EAAE,CAAC;iBACT,CAAC,CAAC;gBACH,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAClC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;oBAC3B,GAAG,CAAC,IAAI,EAAE,CAAC;oBACX,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC,CAAC;gBACH,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;gBAC9C,aAAa,CAAC,GAAG,EAAE,CAAC;YACtB,CAAC,CAAC,CAAC;YAEH,MAAM,IAAI,CAAC,6BAA6B,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAEzD,MAAM,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAEjD,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACxB,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;YAC5B,GAAG,CAAC,IAAI,EAAE,CAAC;YAEX,GAAG,CAAC,OAAO,CAAC,GAAG,UAAU,IAAI,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,qBAAqB,CAAC,CAAC;QACjG,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,OAAO,UAAU,IAAI,OAAO,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAExG,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,CAAC;oBACH,GAAG,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;oBACvC,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;oBACxB,MAAM,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;oBACrC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACvB,CAAC;gBAAC,OAAO,YAAiB,EAAE,CAAC;oBAC3B,GAAG,CAAC,KAAK,CAAC,uCAAuC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC3E,CAAC;YACH,CAAC;YAED,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,GAAkB,EAAE,UAAkB,EAAE,OAAe,EAAE,SAAiB;QACnG,IAAI,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAE7B,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;YACxD,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC,CAAC;YACpD,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC;YAE3C,IAAI,cAAc,KAAK,OAAO,EAAE,CAAC;gBAC/B,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACvB,GAAG,CAAC,OAAO,CAAC,GAAG,UAAU,IAAI,OAAO,wBAAwB,CAAC,CAAC;gBAC9D,OAAO;YACT,CAAC;YAED,GAAG,CAAC,IAAI,EAAE,CAAC;QACb,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,GAAG,CAAC,KAAK,CAAC,qCAAqC,UAAU,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/E,MAAM,KAAK,CAAC;QACd,CAAC;QAED,yFAAyF;QACzF,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IACtE,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,GAAkB,EAAE,UAAkB,EAAE,SAAiB;QACrF,IAAI,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC5B,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;YACxB,GAAG,CAAC,IAAI,EAAE,CAAC;YAEX,GAAG,CAAC,OAAO,CAAC,GAAG,UAAU,cAAc,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,GAAG,CAAC,KAAK,CAAC,qBAAqB,UAAU,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACtE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,GAAkB,EAAE,GAAW;QAChE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QAElC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,OAAO,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,QAAQ,CAAC,UAAU,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC;YACzF,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACrE,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,MAAM,MAAM,GAAiB,EAAE,CAAC;QAEhC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAK,CAAC,SAAS,EAAE,CAAC;QAE1C,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAExB,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAE5C,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM;YACR,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,cAAc,IAAI,KAAK,CAAC,MAAM,CAAC;YAE/B,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,GAAG,aAAa,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACnE,CAAC;QAED,GAAG,CAAC,IAAI,EAAE,CAAC;QAEX,OAAO,MAAM,IAAI,IAAI,CAAC,MAAa,CAAC,CAAC,WAAW,EAAE,CAAC;IACrD,CAAC;IAEO,KAAK,CAAC,6BAA6B,CAAC,GAAkB,EAAE,UAAkB;QAChF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,GAAG,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAErC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,IAAI,GAAG,CAAC,SAAS,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC;YAE1E,MAAM,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;gBACjB,QAAQ,EAAE,YAAY;gBACtB,0BAA0B,EAAE,OAAO;gBACnC,wBAAwB,EAAE,MAAM;gBAChC,mBAAmB,EAAE,OAAO;gBAC5B,iBAAiB,EAAE,UAAU;gBAC7B,gBAAgB,EAAE,QAAQ;gBAC1B,WAAW,EAAE,GAAG;aACjB,CAAC,CAAC;YAEH,IAAI,QAAQ,EAAE,KAAK,OAAO,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK,KAAK,EAAE,CAAC;gBAC7D,GAAG,CAAC,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;YAC9C,CAAC;YAED,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE;gBACvC,GAAG,EAAE,UAAU;gBACf,GAAG;gBACH,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;aAClC,CAAC,CAAC;YAEH,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAEhE,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAC5C,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAE5C,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE;gBACnC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC7B,MAAM,CAAC,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC,CAAC;YAC3D,CAAC,EAAE,MAAM,CAAC,CAAC;YAEX,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBAChC,YAAY,CAAC,YAAY,CAAC,CAAC;gBAE3B,GAAG,CAAC,KAAK,EAAE,CAAC;gBAEZ,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACf,OAAO,EAAE,CAAC;gBACZ,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,KAAK,CAAC,mCAAmC,IAAI,kCAAkC,CAAC,CAAC,CAAC;gBAC/F,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC/B,YAAY,CAAC,YAAY,CAAC,CAAC;gBAC3B,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAAC,GAAkB,EAAE,UAAkB;QACxE,GAAG,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAExC,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QACvE,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACjB,OAAO;QACT,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAElB,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACtC,MAAM,aAAa,CAAC,qBAAqB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAClE,GAAG,CAAC,IAAI,EAAE,CAAC;IACb,CAAC;IAEO,YAAY,CAAC,UAAkB;QACrC,OAAO,IAAI,aAAa,CACtB,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,UAAU,EAAE,EAAE,OAAO,CAAC,EACtE,GAAG,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,CAClC,CAAC;IACJ,CAAC;CACF,CAAA;AAjaY,cAAc;IAV1B,QAAQ,CAAC;QACR;YACE,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC;SAChC;QACD;YACE,KAAK,EAAE,eAAe;YACtB,QAAQ,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC;SACrC;KACF,CAAC;;GACW,cAAc,CAia1B"}
|
|
1
|
+
{"version":3,"file":"plugins.service.js","sourceRoot":"","sources":["../../../../../src/api/services/plugins.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,10 @@
|
|
|
1
|
-
import { getNpmPath } from '@camera.ui/common/node';
|
|
2
1
|
import { APP_SERVER_NAME, IS_ELECTRON } from '@camera.ui/common/utils';
|
|
3
2
|
import { Severity } from '@camera.ui/sdk';
|
|
4
|
-
import { exec } from 'node:child_process';
|
|
5
|
-
import { promisify } from 'node:util';
|
|
6
|
-
import semver, { gt, parse } from 'semver';
|
|
7
3
|
import { container } from 'tsyringe';
|
|
8
4
|
import { SystemNotificationTypeId } from '../../../manager/types.js';
|
|
9
5
|
import { ConfigService } from '../../../services/config/index.js';
|
|
6
|
+
import { checkForUpdate } from '../../../utils/npm/index.js';
|
|
10
7
|
import { PluginsService } from '../../services/plugins.service.js';
|
|
11
|
-
import { fetchWithTimeout } from '../../utils/fetch.js';
|
|
12
|
-
const execAsync = promisify(exec);
|
|
13
8
|
export class ServerNamespace {
|
|
14
9
|
nsp;
|
|
15
10
|
nspName = '/server';
|
|
@@ -69,10 +64,11 @@ export class ServerNamespace {
|
|
|
69
64
|
}
|
|
70
65
|
}
|
|
71
66
|
async checkServer(interval) {
|
|
72
|
-
const
|
|
67
|
+
const hadUpdate = this.serverUpdate.updateAvailable || this.serverUpdate.betaUpdateAvailable;
|
|
73
68
|
await this.checkServerUpdate();
|
|
74
|
-
|
|
75
|
-
|
|
69
|
+
const hasUpdate = this.serverUpdate.updateAvailable || this.serverUpdate.betaUpdateAvailable;
|
|
70
|
+
if (hasUpdate) {
|
|
71
|
+
if (!hadUpdate || interval) {
|
|
76
72
|
this.nsp.emit('server-updates', this.serverUpdate);
|
|
77
73
|
this.proxyServer.notificationManager.notify({
|
|
78
74
|
source: { kind: 'system', id: SystemNotificationTypeId.UpdateAvailable },
|
|
@@ -106,96 +102,27 @@ export class ServerNamespace {
|
|
|
106
102
|
}
|
|
107
103
|
async checkServerUpdate() {
|
|
108
104
|
try {
|
|
109
|
-
|
|
110
|
-
const npmPath = getNpmPath().join(' ');
|
|
111
|
-
const { stdout, stderr } = await execAsync(`${npmPath} view ${APP_SERVER_NAME} versions dist-tags --json`);
|
|
112
|
-
if (stderr) {
|
|
113
|
-
return;
|
|
114
|
-
}
|
|
115
|
-
const data = JSON.parse(stdout);
|
|
116
|
-
const currentVersion = ConfigService.VERSION;
|
|
117
|
-
const latestVersion = data['dist-tags'].latest;
|
|
118
|
-
const latestAlpha = data['dist-tags'].alpha;
|
|
119
|
-
const updateAvailableLatest = semver.gt(latestVersion, currentVersion);
|
|
120
|
-
const updateAvailableAlpha = semver.gt(latestAlpha, currentVersion);
|
|
121
|
-
const updateAvailable = updateAvailableLatest ? latestVersion : updateAvailableAlpha ? latestAlpha : undefined;
|
|
122
|
-
this.serverUpdate = {
|
|
123
|
-
updateAvailable: updateAvailableLatest,
|
|
124
|
-
betaUpdateAvailable: updateAvailableAlpha,
|
|
125
|
-
latestVersion: updateAvailable,
|
|
126
|
-
};
|
|
105
|
+
this.serverUpdate = await checkForUpdate(APP_SERVER_NAME, ConfigService.VERSION);
|
|
127
106
|
}
|
|
128
107
|
catch {
|
|
129
|
-
// ignore
|
|
108
|
+
// ignore — keep the last known state
|
|
130
109
|
}
|
|
131
110
|
}
|
|
132
111
|
async checkPluginUpdates() {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
const
|
|
138
|
-
if (
|
|
139
|
-
pluginStates.push(
|
|
112
|
+
const plugins = this.pluginsService.listPlugins();
|
|
113
|
+
const pluginStates = [];
|
|
114
|
+
for (const plugin of plugins) {
|
|
115
|
+
try {
|
|
116
|
+
const state = await checkForUpdate(plugin.info.pluginName, plugin.info.installedVersion ?? '0.0.0');
|
|
117
|
+
if (state.updateAvailable || state.betaUpdateAvailable) {
|
|
118
|
+
pluginStates.push(state);
|
|
140
119
|
}
|
|
141
120
|
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
catch {
|
|
145
|
-
// ignore
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
async getPluginFromNpm(plugin) {
|
|
149
|
-
const pluginState = {
|
|
150
|
-
updateAvailable: false,
|
|
151
|
-
betaUpdateAvailable: false,
|
|
152
|
-
};
|
|
153
|
-
try {
|
|
154
|
-
const response = await fetchWithTimeout(`https://registry.npmjs.org/${encodeURIComponent(plugin.pluginName).replace(/%40/g, '@')}/latest`, {
|
|
155
|
-
method: 'GET',
|
|
156
|
-
});
|
|
157
|
-
if (!response.ok) {
|
|
158
|
-
const message = (await response.text()) ?? `${response.statusText} (${response.status})`;
|
|
159
|
-
throw new Error(`Failed to fetch plugin: ${message}`);
|
|
160
|
-
}
|
|
161
|
-
const pkg = (await response.json());
|
|
162
|
-
pluginState.latestVersion = pkg.version;
|
|
163
|
-
pluginState.updateAvailable = gt(pkg.version, plugin.installedVersion);
|
|
164
|
-
// check for beta updates, if no latest version is available
|
|
165
|
-
if (!pluginState.updateAvailable) {
|
|
166
|
-
const pluginVersion = parse(plugin.installedVersion);
|
|
167
|
-
if (pluginVersion?.prerelease[0] === 'beta' && gt(plugin.installedVersion, pluginState.latestVersion || '0.0.1')) {
|
|
168
|
-
const versions = await this.getAvailablePluginVersions(plugin.pluginName);
|
|
169
|
-
if (versions.tags.beta && gt(versions.tags.beta, plugin.installedVersion)) {
|
|
170
|
-
pluginState.betaUpdateAvailable = true;
|
|
171
|
-
pluginState.latestVersion = versions.tags.beta;
|
|
172
|
-
}
|
|
173
|
-
}
|
|
121
|
+
catch {
|
|
122
|
+
// skip this plugin
|
|
174
123
|
}
|
|
175
124
|
}
|
|
176
|
-
|
|
177
|
-
pluginState.latestVersion = undefined;
|
|
178
|
-
pluginState.updateAvailable = false;
|
|
179
|
-
pluginState.betaUpdateAvailable = false;
|
|
180
|
-
}
|
|
181
|
-
return pluginState;
|
|
182
|
-
}
|
|
183
|
-
async getAvailablePluginVersions(pluginName) {
|
|
184
|
-
const response = await fetchWithTimeout(`https://registry.npmjs.org/${encodeURIComponent(pluginName).replace(/%40/g, '@')}`, {
|
|
185
|
-
method: 'GET',
|
|
186
|
-
headers: {
|
|
187
|
-
accept: 'application/vnd.npm.install-v1+json', // only return minimal information
|
|
188
|
-
},
|
|
189
|
-
});
|
|
190
|
-
if (!response.ok) {
|
|
191
|
-
const message = (await response.text()) ?? `${response.statusText} (${response.status})`;
|
|
192
|
-
throw new Error(`Failed to fetch plugin: ${message}`);
|
|
193
|
-
}
|
|
194
|
-
const pkg = (await response.json());
|
|
195
|
-
return {
|
|
196
|
-
tags: pkg['dist-tags'],
|
|
197
|
-
versions: Object.keys(pkg.versions).reverse(),
|
|
198
|
-
};
|
|
125
|
+
this.pluginUpdates = pluginStates;
|
|
199
126
|
}
|
|
200
127
|
}
|
|
201
128
|
//# sourceMappingURL=server.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../../../../src/api/websocket/nsp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../../../../src/api/websocket/nsp/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
2
|
+
import { homedir } from 'node:os';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
const DEFAULT_REGISTRY = 'https://registry.npmjs.org/';
|
|
5
|
+
function interpolateEnv(value) {
|
|
6
|
+
return value.replace(/\$\{([^}]+)\}/g, (_match, name) => process.env[name] ?? '');
|
|
7
|
+
}
|
|
8
|
+
function parseNpmrc(file) {
|
|
9
|
+
if (!existsSync(file)) {
|
|
10
|
+
return {};
|
|
11
|
+
}
|
|
12
|
+
const config = {};
|
|
13
|
+
for (const rawLine of readFileSync(file, 'utf8').split(/\r?\n/)) {
|
|
14
|
+
const line = rawLine.trim();
|
|
15
|
+
if (!line || line.startsWith('#') || line.startsWith(';')) {
|
|
16
|
+
continue;
|
|
17
|
+
}
|
|
18
|
+
const eq = line.indexOf('=');
|
|
19
|
+
if (eq === -1) {
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
const key = line.slice(0, eq).trim();
|
|
23
|
+
const value = interpolateEnv(line
|
|
24
|
+
.slice(eq + 1)
|
|
25
|
+
.trim()
|
|
26
|
+
.replace(/^["']|["']$/g, ''));
|
|
27
|
+
if (key) {
|
|
28
|
+
config[key] = value;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return config;
|
|
32
|
+
}
|
|
33
|
+
function nerfDart(registry) {
|
|
34
|
+
try {
|
|
35
|
+
const url = new URL(registry);
|
|
36
|
+
return `//${url.host}${url.pathname}`;
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return '//registry.npmjs.org/';
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export function resolveNpmOptions() {
|
|
43
|
+
const merged = {
|
|
44
|
+
...parseNpmrc(join(homedir(), '.npmrc')),
|
|
45
|
+
...parseNpmrc(join(process.cwd(), '.npmrc')),
|
|
46
|
+
};
|
|
47
|
+
const registry = merged.registry || DEFAULT_REGISTRY;
|
|
48
|
+
const envToken = [process.env.CAMERAUI_NPM_TOKEN, process.env.NPM_TOKEN].find(Boolean);
|
|
49
|
+
if (envToken) {
|
|
50
|
+
merged[`${nerfDart(registry)}:_authToken`] = envToken;
|
|
51
|
+
}
|
|
52
|
+
return { ...merged, registry };
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../../src/utils/npm/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,MAAM,gBAAgB,GAAG,6BAA6B,CAAC;AAEvD,SAAS,cAAc,CAAC,KAAa;IACnC,OAAO,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,MAAM,EAAE,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC5F,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,MAAM,GAA2B,EAAE,CAAC;IAE1C,KAAK,MAAM,OAAO,IAAI,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1D,SAAS;QACX,CAAC;QAED,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;YACd,SAAS;QACX,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,cAAc,CAC1B,IAAI;aACD,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;aACb,IAAI,EAAE;aACN,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAC/B,CAAC;QAEF,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,QAAQ,CAAC,QAAgB;IAChC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9B,OAAO,KAAK,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,uBAAuB,CAAC;IACjC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,MAAM,MAAM,GAA2B;QACrC,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;QACxC,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;KAC7C,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,gBAAgB,CAAC;IAErD,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvF,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC;IACxD,CAAC;IAED,OAAO,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC;AACjC,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { AbbreviatedManifest, AbbreviatedPackument, ManifestResult, Packument, PackumentResult } from 'pacote';
|
|
2
|
+
type FullPackument = Packument & PackumentResult & {
|
|
3
|
+
description?: string;
|
|
4
|
+
};
|
|
5
|
+
type AbbrPackument = AbbreviatedPackument & PackumentResult;
|
|
6
|
+
export interface UpdateCheckResult {
|
|
7
|
+
updateAvailable: boolean;
|
|
8
|
+
betaUpdateAvailable: boolean;
|
|
9
|
+
latestVersion?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface NpmSearchObject {
|
|
12
|
+
name: string;
|
|
13
|
+
version: string;
|
|
14
|
+
description?: string;
|
|
15
|
+
keywords?: string[];
|
|
16
|
+
links?: Record<string, string>;
|
|
17
|
+
author?: {
|
|
18
|
+
name?: string;
|
|
19
|
+
};
|
|
20
|
+
publisher?: {
|
|
21
|
+
username?: string;
|
|
22
|
+
};
|
|
23
|
+
date?: string;
|
|
24
|
+
}
|
|
25
|
+
interface PackumentOptions {
|
|
26
|
+
full?: boolean;
|
|
27
|
+
refresh?: boolean;
|
|
28
|
+
}
|
|
29
|
+
export declare function getPackument(name: string, options: PackumentOptions & {
|
|
30
|
+
full: true;
|
|
31
|
+
}): Promise<FullPackument>;
|
|
32
|
+
export declare function getPackument(name: string, options?: PackumentOptions): Promise<AbbrPackument>;
|
|
33
|
+
export declare function invalidatePackage(name?: string): void;
|
|
34
|
+
export declare function getDistTags(name: string): Promise<Record<string, string>>;
|
|
35
|
+
export declare function getManifest(spec: string): Promise<AbbreviatedManifest & ManifestResult>;
|
|
36
|
+
export declare function getVersionsAndDistTags(name: string): Promise<{
|
|
37
|
+
versions: string[];
|
|
38
|
+
'dist-tags': Record<string, string>;
|
|
39
|
+
}>;
|
|
40
|
+
export declare function checkForUpdate(name: string, currentVersion: string, prereleaseTag?: string): Promise<UpdateCheckResult>;
|
|
41
|
+
export declare function searchPackages(query: string, size?: number): Promise<NpmSearchObject[]>;
|
|
42
|
+
export declare function extractPackage(spec: string, dest: string): Promise<void>;
|
|
43
|
+
export declare function installDependencies(packageDir: string, onOutput?: (chunk: string) => void): Promise<void>;
|
|
44
|
+
export {};
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { getNpmPath } from '@camera.ui/common/node';
|
|
2
|
+
import { TTLCache } from '@isaacs/ttlcache';
|
|
3
|
+
import { spawn } from 'node:child_process';
|
|
4
|
+
import { basename, dirname } from 'node:path';
|
|
5
|
+
import { platform } from 'node:os';
|
|
6
|
+
import npmFetch from 'npm-registry-fetch';
|
|
7
|
+
import pacote from 'pacote';
|
|
8
|
+
import { gt, parse } from 'semver';
|
|
9
|
+
import { resolveNpmOptions } from './auth.js';
|
|
10
|
+
const DEP_INSTALL_TIMEOUT_MS = 5 * 60 * 1000;
|
|
11
|
+
const PACKUMENT_TTL_MS = 60 * 1000;
|
|
12
|
+
const packumentCache = new TTLCache({ ttl: PACKUMENT_TTL_MS, max: 200 });
|
|
13
|
+
function npmOptions(extra) {
|
|
14
|
+
return { ...resolveNpmOptions(), ...extra };
|
|
15
|
+
}
|
|
16
|
+
export async function getPackument(name, options) {
|
|
17
|
+
const full = options?.full ?? false;
|
|
18
|
+
const key = `${full ? 'full' : 'abbr'}:${name}`;
|
|
19
|
+
if (!options?.refresh) {
|
|
20
|
+
const cached = packumentCache.get(key);
|
|
21
|
+
if (cached) {
|
|
22
|
+
return cached;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
const packument = full
|
|
26
|
+
? await pacote.packument(name, { ...npmOptions(), fullMetadata: true })
|
|
27
|
+
: await pacote.packument(name, npmOptions());
|
|
28
|
+
packumentCache.set(key, packument);
|
|
29
|
+
return packument;
|
|
30
|
+
}
|
|
31
|
+
export function invalidatePackage(name) {
|
|
32
|
+
if (!name) {
|
|
33
|
+
packumentCache.clear();
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
packumentCache.delete(`abbr:${name}`);
|
|
37
|
+
packumentCache.delete(`full:${name}`);
|
|
38
|
+
}
|
|
39
|
+
export async function getDistTags(name) {
|
|
40
|
+
const packument = await getPackument(name);
|
|
41
|
+
return packument['dist-tags'] ?? {};
|
|
42
|
+
}
|
|
43
|
+
export async function getManifest(spec) {
|
|
44
|
+
return pacote.manifest(spec, npmOptions());
|
|
45
|
+
}
|
|
46
|
+
export async function getVersionsAndDistTags(name) {
|
|
47
|
+
const packument = await getPackument(name);
|
|
48
|
+
return {
|
|
49
|
+
versions: Object.keys(packument.versions ?? {}).reverse(),
|
|
50
|
+
'dist-tags': packument['dist-tags'] ?? {},
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
export async function checkForUpdate(name, currentVersion, prereleaseTag = 'beta') {
|
|
54
|
+
const tags = await getDistTags(name);
|
|
55
|
+
const latest = tags.latest;
|
|
56
|
+
const prerelease = tags[prereleaseTag];
|
|
57
|
+
const updateAvailable = latest ? gt(latest, currentVersion) : false;
|
|
58
|
+
let betaUpdateAvailable = false;
|
|
59
|
+
if (!updateAvailable && prerelease) {
|
|
60
|
+
const parsed = parse(currentVersion);
|
|
61
|
+
if (parsed?.prerelease[0] === prereleaseTag && gt(prerelease, currentVersion)) {
|
|
62
|
+
betaUpdateAvailable = true;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
const latestVersion = betaUpdateAvailable ? prerelease : latest;
|
|
66
|
+
return { updateAvailable, betaUpdateAvailable, latestVersion };
|
|
67
|
+
}
|
|
68
|
+
export async function searchPackages(query, size = 250) {
|
|
69
|
+
const result = (await npmFetch.json(`/-/v1/search?text=${encodeURIComponent(query)}&size=${size}`, npmOptions()));
|
|
70
|
+
return (result.objects ?? []).map((entry) => entry.package);
|
|
71
|
+
}
|
|
72
|
+
export async function extractPackage(spec, dest) {
|
|
73
|
+
await pacote.extract(spec, dest, npmOptions());
|
|
74
|
+
}
|
|
75
|
+
export function installDependencies(packageDir, onOutput) {
|
|
76
|
+
return new Promise((resolve, reject) => {
|
|
77
|
+
const npmCmd = getNpmPath()[0];
|
|
78
|
+
const args = ['install', '--omit=dev', '--include=prod', '--no-progress'];
|
|
79
|
+
const env = {
|
|
80
|
+
...process.env,
|
|
81
|
+
NODE_ENV: 'production',
|
|
82
|
+
npm_config_update_notifier: 'false',
|
|
83
|
+
npm_config_prefer_online: 'true',
|
|
84
|
+
npm_config_progress: 'false',
|
|
85
|
+
npm_config_prefix: packageDir,
|
|
86
|
+
npm_config_color: 'always',
|
|
87
|
+
FORCE_COLOR: '1',
|
|
88
|
+
};
|
|
89
|
+
if (platform() !== 'win32' && basename(packageDir) === 'lib') {
|
|
90
|
+
env.npm_config_prefix = dirname(packageDir);
|
|
91
|
+
}
|
|
92
|
+
const child = spawn(npmCmd, args, { cwd: packageDir, env, stdio: ['ignore', 'pipe', 'pipe'] });
|
|
93
|
+
const handleChunk = (data) => onOutput?.(data.toString());
|
|
94
|
+
child.stdout.on('data', handleChunk);
|
|
95
|
+
child.stderr.on('data', handleChunk);
|
|
96
|
+
const timeoutTimer = setTimeout(() => {
|
|
97
|
+
child.kill('SIGTERM');
|
|
98
|
+
reject(new Error('Operation timed out after 5 minutes'));
|
|
99
|
+
}, DEP_INSTALL_TIMEOUT_MS);
|
|
100
|
+
child.on('close', (code) => {
|
|
101
|
+
clearTimeout(timeoutTimer);
|
|
102
|
+
if (code === 0) {
|
|
103
|
+
resolve();
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
reject(new Error(`Operation failed with exit code ${code}. Please review log for details.`));
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
child.on('error', (err) => {
|
|
110
|
+
clearTimeout(timeoutTimer);
|
|
111
|
+
reject(new Error(`Failed to start process: ${err.message}`));
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/utils/npm/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,QAAQ,MAAM,oBAAoB,CAAC;AAC1C,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAEnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAwB9C,MAAM,sBAAsB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAC7C,MAAM,gBAAgB,GAAG,EAAE,GAAG,IAAI,CAAC;AAEnC,MAAM,cAAc,GAAG,IAAI,QAAQ,CAAwC,EAAE,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AAOhH,SAAS,UAAU,CAAC,KAAe;IACjC,OAAO,EAAE,GAAG,iBAAiB,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC;AAC9C,CAAC;AAID,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAY,EAAE,OAA0B;IACzE,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,KAAK,CAAC;IACpC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;IAEhD,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAkC,IAAI;QACnD,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,GAAG,UAAU,EAAE,EAAE,YAAY,EAAE,IAAa,EAAE,CAAC;QAChF,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;IAE/C,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACnC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAa;IAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,cAAc,CAAC,KAAK,EAAE,CAAC;QACvB,OAAO;IACT,CAAC;IAED,cAAc,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IACtC,cAAc,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAY;IAC5C,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;IAC3C,OAAO,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;AACtC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAY;IAC5C,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,IAAY;IACvD,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;IAC3C,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE;QACzD,WAAW,EAAE,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE;KAC1C,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAY,EAAE,cAAsB,EAAE,aAAa,GAAG,MAAM;IAC/F,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;IAEvC,MAAM,eAAe,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAEpE,IAAI,mBAAmB,GAAG,KAAK,CAAC;IAEhC,IAAI,CAAC,eAAe,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC;QACrC,IAAI,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,aAAa,IAAI,EAAE,CAAC,UAAU,EAAE,cAAc,CAAC,EAAE,CAAC;YAC9E,mBAAmB,GAAG,IAAI,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAG,mBAAmB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;IAEhE,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,aAAa,EAAE,CAAC;AACjE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAa,EAAE,IAAI,GAAG,GAAG;IAC5D,MAAM,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,qBAAqB,kBAAkB,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,CAE/G,CAAC;IAEF,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAY,EAAE,IAAY;IAC7D,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,UAAkB,EAAE,QAAkC;IACxF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,IAAI,GAAG,CAAC,SAAS,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC;QAE1E,MAAM,GAAG,GAAsB;YAC7B,GAAG,OAAO,CAAC,GAAG;YACd,QAAQ,EAAE,YAAY;YACtB,0BAA0B,EAAE,OAAO;YACnC,wBAAwB,EAAE,MAAM;YAChC,mBAAmB,EAAE,OAAO;YAC5B,iBAAiB,EAAE,UAAU;YAC7B,gBAAgB,EAAE,QAAQ;YAC1B,WAAW,EAAE,GAAG;SACjB,CAAC;QAEF,IAAI,QAAQ,EAAE,KAAK,OAAO,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK,KAAK,EAAE,CAAC;YAC7D,GAAG,CAAC,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QAE/F,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAClE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACrC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAErC,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE;YACnC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtB,MAAM,CAAC,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAC3D,CAAC,EAAE,sBAAsB,CAAC,CAAC;QAE3B,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,YAAY,CAAC,YAAY,CAAC,CAAC;YAC3B,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,EAAE,CAAC;YACZ,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,KAAK,CAAC,mCAAmC,IAAI,kCAAkC,CAAC,CAAC,CAAC;YAC/F,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACxB,YAAY,CAAC,YAAY,CAAC,CAAC;YAC3B,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|