@steedos/service-package-registry 3.0.0-beta.99 → 3.0.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.
@@ -173,7 +173,7 @@ const destroyExistThePackageService = async (packageInfo)=>{
173
173
  let schema = objectql.getSteedosSchema();
174
174
  let broker = schema.broker;
175
175
  let svc = broker.getLocalService({
176
- name: `~packages-${packageInfo.name}`
176
+ name: `${packageInfo.name}`
177
177
  });
178
178
  if(!svc){
179
179
  svc = broker.getLocalService({
@@ -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
  }
@@ -280,7 +280,7 @@ const disablePackage = async (packageName)=>{
280
280
  let schema = objectql.getSteedosSchema();
281
281
  let broker = schema.broker;
282
282
  const serviceList = broker.registry.getServiceList({ withActions: true });
283
- const service = _.find(serviceList, (_service)=>{return _service.name == `~packages-${packageName}` || _service.name == packageName;})
283
+ const service = _.find(serviceList, (_service)=>{return _service.name == `${packageName}` || _service.name == packageName;})
284
284
  if(service){
285
285
  await broker.destroyService(service);
286
286
  }
@@ -301,7 +301,7 @@ const removePackage = async (packageName)=>{
301
301
  let schema = objectql.getSteedosSchema();
302
302
  let broker = schema.broker;
303
303
  const serviceList = broker.registry.getServiceList({ withActions: true });
304
- const service = _.find(serviceList, (_service)=>{return _service.name == `~packages-${packageName}` || _service.name == packageName;})
304
+ const service = _.find(serviceList, (_service)=>{return _service.name == `${packageName}` || _service.name == packageName;})
305
305
  if(service){
306
306
  await broker.destroyService(service);
307
307
  }
@@ -68,7 +68,7 @@ const packageJson = async (packageName, options) => {
68
68
  try {
69
69
  data = await got(packageUrl, gotOptions).json();
70
70
  } catch (error) {
71
- if (error.response.statusCode === 404) {
71
+ if (error?.response?.statusCode === 404) {
72
72
  throw new PackageNotFoundError(packageName);
73
73
  }
74
74
 
@@ -62,7 +62,7 @@ const getAllPackages = async ()=>{
62
62
  }
63
63
  })
64
64
  _.map(_.map(onlinePackages, 'metadata'), (packageInfo)=>{
65
- const packageName = packageInfo.name.replace(`~packages-`, '');
65
+ const packageName = packageInfo.name.replace(``, '');
66
66
  const _package = _.find(packages, (_p)=>{return _p.name == packageName})
67
67
  if(_package){
68
68
  _package.status = 'enable'
@@ -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
 
@@ -126,7 +126,7 @@ actions:
126
126
  upgradePackage:
127
127
  label: Upgrade Package
128
128
  edit_npmrc:
129
- label: Verification information
129
+ label: NPM Settings
130
130
  CustomLabels:
131
131
  steedos_packages_tab_introduce_title: Introduction
132
132
  steedos_packages_tab_components_title: Package Components
@@ -136,7 +136,7 @@ CustomLabels:
136
136
  steedos_packages_button_enable_dialog_confirm_text_suffix: "\"?"
137
137
  steedos_packages_button_enable_dialog_button_ok: Enable
138
138
  steedos_packages_button_enable_dialog_message_success: Enabled Successfully
139
- steedos_packages_button_edit_npmrc_dialog_describe: "##### Verification Information Description (.npmrc):\r- `; Set a new registry for scoped packages`\r- `@myscope:registry=https://mycustomregistry.example.org`\r- `; Configure authentication information for the new registry (optional)`\r- `//mycustomregistry.example.org:_authToken=\"Authentication Token\"`"
139
+ steedos_packages_button_edit_npmrc_dialog_describe: "##### NPM Settings (.npmrc):\r- `; Set a new registry for scoped packages`\r- `@myscope:registry=https://mycustomregistry.example.org`\r- `; Configure authentication information for the new registry (optional)`\r- `//mycustomregistry.example.org:_authToken=\"Authentication Token\"`"
140
140
  steedos_packages_button_installPackageFromUrl_dialog_field_registry: Registry
141
141
  steedos_packages_button_installPackageFromUrl_dialog_field_registry_option_taobao: taobao
142
142
  steedos_packages_button_installPackageFromUrl_dialog_field_registry_option_cnpm: cnpm
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steedos/service-package-registry",
3
- "version": "3.0.0-beta.99",
3
+ "version": "3.0.0",
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.99",
13
- "@steedos/metadata-core": "3.0.0-beta.99",
14
- "@steedos/objectql": "3.0.0-beta.99",
15
- "@steedos/service-package-loader": "3.0.0-beta.99",
12
+ "@steedos/auth": "3.0.0",
13
+ "@steedos/metadata-core": "3.0.0",
14
+ "@steedos/objectql": "3.0.0",
15
+ "@steedos/service-package-loader": "3.0.0",
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": "a0e9d5ee78766e54048a385b7677f6916aa287c4"
33
+ "gitHead": "20ea485d800dd4ad0a99c82b26000879c2f85741"
35
34
  }
@@ -91,7 +91,7 @@ module.exports = {
91
91
  }
92
92
  })
93
93
  if(packageConfig?.isUnmanaged){
94
- await ctx.broker.call(`~packages-@steedos/metadata-api.remove`, {
94
+ await ctx.broker.call(`@steedos/metadata-api.remove`, {
95
95
  name: module
96
96
  }, {
97
97
  timeout: 0,