@steedos/service-package-registry 3.0.0-beta.108 → 3.0.0-beta.112

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.
@@ -181,7 +181,7 @@ const destroyExistThePackageService = async (packageInfo)=>{
181
181
  });
182
182
  }
183
183
  if (svc) {
184
- console.info(`Destroy previous '${schema.name}' service...`);
184
+ console.info(`Destroy previous '${packageInfo.name}' service...`);
185
185
  await broker.destroyService(svc);
186
186
  }
187
187
  }
@@ -269,33 +269,169 @@ async function installModule(module, version, url, registry_url) {
269
269
  return activePromise;
270
270
  }
271
271
 
272
+
273
+ /**
274
+ * 对比两个 package.json 对象的依赖变化,返回新增和修改的依赖
275
+ * @param {Object} oldPkg 修改前的 package.json 对象
276
+ * @param {Object} newPkg 修改后的 package.json 对象
277
+ * @returns {Array} 包含变化信息的数组,每个元素包含名称、版本号、路径和变化类型
278
+ */
279
+ function comparePackageJsonChanges(oldPkg, newPkg) {
280
+ const changes = [];
281
+
282
+ // 检查 dependencies 变化
283
+ const oldDeps = oldPkg?.dependencies || {};
284
+ const newDeps = newPkg?.dependencies || {};
285
+
286
+ // 检查 devDependencies 变化
287
+ const oldDevDeps = oldPkg?.devDependencies || {};
288
+ const newDevDeps = newPkg?.devDependencies || {};
289
+
290
+ // 对比 dependencies
291
+ for (const [pkg, newVersion] of Object.entries(newDeps)) {
292
+ const oldVersion = oldDeps[pkg];
293
+
294
+ if (oldVersion === undefined) {
295
+ // 新增的依赖
296
+ changes.push({
297
+ name: pkg,
298
+ version: newVersion,
299
+ path: 'dependencies',
300
+ changeType: 'added'
301
+ });
302
+ } else if (oldVersion !== newVersion) {
303
+ // 版本变化的依赖
304
+ changes.push({
305
+ name: pkg,
306
+ version: newVersion,
307
+ oldVersion: oldVersion,
308
+ path: 'dependencies',
309
+ changeType: 'changed'
310
+ });
311
+ }
312
+ }
313
+
314
+ // 对比 devDependencies
315
+ for (const [pkg, newVersion] of Object.entries(newDevDeps)) {
316
+ const oldVersion = oldDevDeps[pkg];
317
+
318
+ if (oldVersion === undefined) {
319
+ // 新增的依赖
320
+ changes.push({
321
+ name: pkg,
322
+ version: newVersion,
323
+ path: 'devDependencies',
324
+ changeType: 'added'
325
+ });
326
+ } else if (oldVersion !== newVersion) {
327
+ // 版本变化的依赖
328
+ changes.push({
329
+ name: pkg,
330
+ version: newVersion,
331
+ oldVersion: oldVersion,
332
+ path: 'devDependencies',
333
+ changeType: 'changed'
334
+ });
335
+ }
336
+ }
337
+
338
+ return changes;
339
+ }
340
+
341
+ function loadJson(filePath){
342
+ const packageData = fs.readFileSync(filePath, 'utf8');
343
+ return JSON.parse(packageData);
344
+ }
345
+
272
346
  async function yarnAddPackage(yarnPackage){
273
347
  var installDir = settings.userDir || ".";
348
+
349
+ // eslint-disable-next-line @typescript-eslint/no-require-imports, no-undef
350
+ const oldPackageInfo = loadJson(path.join(installDir, 'package.json'));
351
+
274
352
  var yarnArgs = ['add', '-E', ...yarnPackage.split(' '), '--json'];
275
353
  const data = await exec.run(yarnCommand, yarnArgs, {cwd: installDir}, true);
354
+
355
+ // eslint-disable-next-line @typescript-eslint/no-require-imports, no-undef
356
+ const newPackageInfo = loadJson(path.join(installDir, 'package.json'));
357
+
358
+ const changes = comparePackageJsonChanges(oldPackageInfo, newPackageInfo);
276
359
  const formatData = JSON.parse(_.last(_.compact(data.stdout.split('\n'))))
360
+ // console.log(`yarnAddPackage:`, yarnPackage, formatData, data)
277
361
  // 解析 yarn add 返回的结果
278
362
  const steedosPackages = [];
279
- _.each(formatData.data.trees, (module)=>{
280
- const parsed = npa(module.name);
281
- const packagePath = path.dirname(require.resolve(`${parsed.name}/package.json`, {
282
- paths: [path.join(installDir, 'node_modules')]
283
- }))
284
- if(fs.existsSync(path.join(packagePath, 'package.service.js'))){
285
- // eslint-disable-next-line @typescript-eslint/no-require-imports, no-undef
286
- const schema = require(path.join(packagePath, 'package.service.js'));
287
- schema.settings.packageInfo = {
288
- ...schema.settings?.packageInfo,
289
- ...(schema.metadata && schema.metadata.$package ? schema.metadata.$package : {}),
363
+ if(formatData.data.trees){
364
+ _.each(formatData.data.trees, (module)=>{
365
+ const parsed = npa(module.name);
366
+ const packagePath = path.dirname(require.resolve(`${parsed.name}/package.json`, {
367
+ paths: [path.join(installDir, 'node_modules')]
368
+ }))
369
+ if(fs.existsSync(path.join(packagePath, 'package.service.js'))){
370
+ // eslint-disable-next-line @typescript-eslint/no-require-imports, no-undef
371
+ const schema = require(path.join(packagePath, 'package.service.js'));
372
+ schema.settings.packageInfo = {
373
+ ...schema.settings?.packageInfo,
374
+ ...(schema.metadata && schema.metadata.$package ? schema.metadata.$package : {}),
375
+ }
376
+ steedosPackages.push({
377
+ name: parsed.name,
378
+ version: parsed.rawSpec,
379
+ path: packagePath,
380
+ isUnmanaged: schema.settings.packageInfo.isUnmanaged
381
+ })
290
382
  }
291
- steedosPackages.push({
292
- name: parsed.name,
293
- version: parsed.rawSpec,
294
- path: packagePath,
295
- isUnmanaged: schema.settings.packageInfo.isUnmanaged
296
- })
383
+ })
384
+ }else{
385
+ // console.log('changes', changes, npa(yarnPackage));
386
+ const module = npa(yarnPackage);
387
+ if(module.name){
388
+ // eslint-disable-next-line no-undef
389
+ const packagePath = path.dirname(require.resolve(`${module.name}/package.json`, {
390
+ paths: [path.join(installDir, 'node_modules')]
391
+ }));
392
+ if(fs.existsSync(path.join(packagePath, 'package.service.js'))){
393
+ // eslint-disable-next-line @typescript-eslint/no-require-imports, no-undef
394
+ const schema = require(path.join(packagePath, 'package.service.js'));
395
+ const packageInfo = loadJson(path.join(packagePath, 'package.json'));
396
+ schema.settings.packageInfo = {
397
+ ...schema.settings?.packageInfo,
398
+ ...(schema.metadata && schema.metadata.$package ? schema.metadata.$package : {}),
399
+ }
400
+ steedosPackages.push({
401
+ name: module.name,
402
+ version: packageInfo.version,
403
+ path: packagePath,
404
+ isUnmanaged: schema.settings.packageInfo.isUnmanaged
405
+ })
406
+ }
407
+
297
408
  }
298
- })
409
+
410
+ for (const change of changes) {
411
+ // eslint-disable-next-line no-undef
412
+ const packagePath = path.dirname(require.resolve(`${change.name}/package.json`, {
413
+ paths: [path.join(installDir, 'node_modules')]
414
+ }))
415
+ if(fs.existsSync(path.join(packagePath, 'package.service.js'))){
416
+ // eslint-disable-next-line @typescript-eslint/no-require-imports, no-undef
417
+ const schema = require(path.join(packagePath, 'package.service.js'));
418
+ schema.settings.packageInfo = {
419
+ ...schema.settings?.packageInfo,
420
+ ...(schema.metadata && schema.metadata.$package ? schema.metadata.$package : {}),
421
+ }
422
+ if(!_.find(steedosPackages, {name: change.name})){
423
+ steedosPackages.push({
424
+ name: change.name,
425
+ version: change.version,
426
+ path: packagePath,
427
+ isUnmanaged: schema.settings.packageInfo.isUnmanaged
428
+ })
429
+ }
430
+
431
+ }
432
+ }
433
+ }
434
+ // console.log('steedosPackages===>', steedosPackages);
299
435
  return steedosPackages;
300
436
  }
301
437
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steedos/service-package-registry",
3
- "version": "3.0.0-beta.108",
3
+ "version": "3.0.0-beta.112",
4
4
  "description": "",
5
5
  "main": "package.service.js",
6
6
  "scripts": {
@@ -9,10 +9,10 @@
9
9
  "author": "",
10
10
  "license": "ISC",
11
11
  "dependencies": {
12
- "@steedos/auth": "3.0.0-beta.108",
13
- "@steedos/metadata-core": "3.0.0-beta.108",
14
- "@steedos/objectql": "3.0.0-beta.108",
15
- "@steedos/service-package-loader": "3.0.0-beta.108",
12
+ "@steedos/auth": "3.0.0-beta.112",
13
+ "@steedos/metadata-core": "3.0.0-beta.112",
14
+ "@steedos/objectql": "3.0.0-beta.112",
15
+ "@steedos/service-package-loader": "3.0.0-beta.112",
16
16
  "clone": "^2.1.2",
17
17
  "fs-extra": "8.1.0",
18
18
  "i18next": "20.3.2",
@@ -27,9 +27,8 @@
27
27
  "radwag-mass": "~1.0.5",
28
28
  "validator": "^13.5.2"
29
29
  },
30
- "private": false,
31
30
  "publishConfig": {
32
31
  "access": "public"
33
32
  },
34
- "gitHead": "e32e7c64ee17d2b2c18e280d28f6869d74747a17"
33
+ "gitHead": "742d399ecaca836729c200044deee3ef0988be14"
35
34
  }