@steedos/service-package-registry 3.0.0-beta.15 → 3.0.0-beta.151
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/main/default/manager/loader.js +7 -7
- package/main/default/manager/package-json.js +1 -1
- package/main/default/manager/packages.js +5 -3
- package/main/default/manager/registry.js +155 -12
- package/main/default/objectTranslations/steedos_packages.en/steedos_packages.en.objectTranslation.yml +19 -1
- package/main/default/objectTranslations/steedos_packages.zh-CN/steedos_packages.zh-CN.objectTranslation.yml +23 -0
- package/main/default/objects/steedos_packages/buttons/disable.button.js +51 -0
- package/main/default/objects/steedos_packages/buttons/disable.button.yml +4 -0
- package/main/default/objects/steedos_packages/buttons/edit_npmrc.button.js +8 -0
- package/main/default/objects/steedos_packages/buttons/edit_npmrc.button.yml +86 -0
- package/main/default/objects/steedos_packages/buttons/enable.button.js +58 -0
- package/main/default/objects/steedos_packages/buttons/enable.button.yml +4 -0
- package/main/default/objects/steedos_packages/buttons/installPackageFromUrl.button.js +8 -0
- package/main/default/objects/steedos_packages/buttons/installPackageFromUrl.button.yml +138 -0
- package/main/default/objects/steedos_packages/buttons/reload.button.js +34 -0
- package/main/default/objects/steedos_packages/buttons/reload.button.yml +4 -0
- package/main/default/objects/steedos_packages/buttons/uninstall.button.js +63 -0
- package/main/default/objects/steedos_packages/buttons/uninstall.button.yml +4 -0
- package/main/default/objects/steedos_packages/buttons/upgradePackage.button.js +22 -0
- package/main/default/objects/steedos_packages/buttons/upgradePackage.button.yml +147 -0
- package/main/default/objects/steedos_packages/fields/isUnmanaged.field.yml +4 -0
- package/main/default/objects/steedos_packages/listviews/all.listview.yml +1 -0
- package/main/default/pages/steedos_package_detail.page.amis.json +4 -33
- package/main/default/pages/steedos_packages_list.page.amis.json +3 -9
- package/main/default/routes/nodes.router.js +292 -0
- package/main/default/routes/registry.router.js +21 -0
- package/main/default/triggers/steedos_packages.trigger.js +7 -13
- package/package.json +6 -7
- package/project.package.service.js +35 -12
|
@@ -114,7 +114,7 @@ const loadPackages = async ()=>{
|
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
116
|
} catch (error) {
|
|
117
|
-
console.error(`start package ${packageName} error: ${error.message}`)
|
|
117
|
+
console.error(`start package ${packageName} error[117]: ${error.message}`)
|
|
118
118
|
}
|
|
119
119
|
|
|
120
120
|
}else if(package.local !== true){
|
|
@@ -132,7 +132,7 @@ const loadPackages = async ()=>{
|
|
|
132
132
|
const packageInfo = await loadPackage(packageName);
|
|
133
133
|
appendToPackagesConfig(packageInfo.name, {version: packageInfo.version, description: packageInfo.description, local: false});
|
|
134
134
|
} catch (error) {
|
|
135
|
-
console.error(`start package ${packageName} error: ${error.message}`)
|
|
135
|
+
console.error(`start package ${packageName} error[135]: ${error.message}`)
|
|
136
136
|
}
|
|
137
137
|
}
|
|
138
138
|
}else if(package.local === true && package.static != true){
|
|
@@ -147,7 +147,7 @@ const loadPackages = async ()=>{
|
|
|
147
147
|
appendToPackagesConfig(packageInfo.name, {version: packageInfo.version, description: packageInfo.description, local: true});
|
|
148
148
|
}
|
|
149
149
|
} catch (error) {
|
|
150
|
-
console.error(`start package ${packageName} error: ${error.message}`)
|
|
150
|
+
console.error(`start package ${packageName} error[150]: ${error.message}`)
|
|
151
151
|
}
|
|
152
152
|
}
|
|
153
153
|
}
|
|
@@ -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:
|
|
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 '${
|
|
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 ==
|
|
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 ==
|
|
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
|
|
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(
|
|
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'
|
|
@@ -71,6 +71,7 @@ const getAllPackages = async ()=>{
|
|
|
71
71
|
_package.instance_id = packageInfo.instanceID
|
|
72
72
|
_package.version = packageInfo.version
|
|
73
73
|
_package.homepage = packageInfo.homepage
|
|
74
|
+
_package.isUnmanaged = packageInfo.isUnmanaged
|
|
74
75
|
}else{
|
|
75
76
|
packages.push({
|
|
76
77
|
label: packageInfo.label || packageName,
|
|
@@ -84,7 +85,8 @@ const getAllPackages = async ()=>{
|
|
|
84
85
|
instance_id: packageInfo.instanceID,
|
|
85
86
|
status : 'enable',
|
|
86
87
|
version : packageInfo.version,
|
|
87
|
-
local: false
|
|
88
|
+
local: false,
|
|
89
|
+
isUnmanaged: packageInfo.isUnmanaged
|
|
88
90
|
})
|
|
89
91
|
}
|
|
90
92
|
})
|
|
@@ -129,7 +131,7 @@ const maintainSystemFiles = ()=>{
|
|
|
129
131
|
const getPackageVersions = async (packageName, options)=>{
|
|
130
132
|
//TODO 处理 registry_url
|
|
131
133
|
|
|
132
|
-
let registry_url = registryUrl(packageName.toLowerCase().split('/')[0]);
|
|
134
|
+
let registry_url = process.env.NPM_REGISTRY_URL || registryUrl(packageName.toLowerCase().split('/')[0]);
|
|
133
135
|
|
|
134
136
|
const result = await packageJson(packageName.toLowerCase(), {
|
|
135
137
|
allVersions: true,
|
|
@@ -269,26 +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
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
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
|
+
})
|
|
382
|
+
}
|
|
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
|
+
|
|
290
408
|
}
|
|
291
|
-
|
|
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);
|
|
292
435
|
return steedosPackages;
|
|
293
436
|
}
|
|
294
437
|
|
|
@@ -124,4 +124,22 @@ actions:
|
|
|
124
124
|
uninstall:
|
|
125
125
|
label: Uninstall
|
|
126
126
|
upgradePackage:
|
|
127
|
-
label: Upgrade Package
|
|
127
|
+
label: Upgrade Package
|
|
128
|
+
edit_npmrc:
|
|
129
|
+
label: NPM Settings
|
|
130
|
+
CustomLabels:
|
|
131
|
+
steedos_packages_tab_introduce_title: Introduction
|
|
132
|
+
steedos_packages_tab_components_title: Package Components
|
|
133
|
+
steedos_packages_tab_details_title: Details
|
|
134
|
+
steedos_packages_button_enable_dialog_title: Enable
|
|
135
|
+
steedos_packages_button_enable_dialog_confirm_text_prefix: "Make sure to enable \""
|
|
136
|
+
steedos_packages_button_enable_dialog_confirm_text_suffix: "\"?"
|
|
137
|
+
steedos_packages_button_enable_dialog_button_ok: Enable
|
|
138
|
+
steedos_packages_button_enable_dialog_message_success: Enabled Successfully
|
|
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
|
+
steedos_packages_button_installPackageFromUrl_dialog_field_registry: Registry
|
|
141
|
+
steedos_packages_button_installPackageFromUrl_dialog_field_registry_option_taobao: taobao
|
|
142
|
+
steedos_packages_button_installPackageFromUrl_dialog_field_registry_option_cnpm: cnpm
|
|
143
|
+
steedos_packages_button_installPackageFromUrl_dialog_field_registry_option_npmjs: npmjs
|
|
144
|
+
steedos_packages_button_installPackageFromUrl_dialog_describe1: "##### You can specify a version using one of the following options:\r- `package-name` Install the 'latest' version of the package.\r- `package-name@1.2.3` Install a specific version of the package from the registry.\r- `package-name@tag` Install a specific 'tag', such as beta, next, or latest."
|
|
145
|
+
steedos_packages_button_installPackageFromUrl_dialog_describe2: "##### You can also specify packages from different locations:\r- `package-name` Install the package from the npm registry.\r- `file:/path/to/local/folder` Install a package located on your local filesystem. This is useful for testing packages you haven’t published to the registry yet.\r- `file:/path/to/local/tarball.tgz` Install from a gzipped tarball, which can be used to share packages before publishing.\r- `link:/path/to/local/folder` Install a symbolic link to a package on your local filesystem. Useful in monorepo environments.\r- `<git remote url>` Install a package from a remote Git repository.\r- `<git remote url>#<branch/commit/tag>` Install a package from a specific git branch, commit, or tag in the remote Git repository.\r- `https://my-project.org/package.tgz` Install from a remote gzipped tarball."
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
name: steedos_packages
|
|
2
|
+
label: 软件包
|
|
3
|
+
description:
|
|
4
|
+
actions:
|
|
5
|
+
edit_npmrc:
|
|
6
|
+
label: 验证信息
|
|
7
|
+
CustomLabels:
|
|
8
|
+
steedos_packages_tab_introduce_title: 简介
|
|
9
|
+
steedos_packages_tab_components_title: 软件包组件
|
|
10
|
+
steedos_packages_tab_details_title: 详细信息
|
|
11
|
+
steedos_packages_button_enable_dialog_title: 启用
|
|
12
|
+
steedos_packages_button_enable_dialog_confirm_text_prefix: 确定要启用「
|
|
13
|
+
steedos_packages_button_enable_dialog_confirm_text_suffix: 」?
|
|
14
|
+
steedos_packages_button_enable_dialog_button_ok: 启用
|
|
15
|
+
steedos_packages_button_enable_dialog_message_success: 已启用
|
|
16
|
+
steedos_packages_button_edit_npmrc_dialog_describe: "##### 验证信息说明(.npmrc):\r- `; 为范围包设置新的注册表`\r- `@myscope:registry=https://mycustomregistry.example.org`\r- `; 配置新注册表的认证信息(可选)`\r- `//mycustomregistry.example.org:_authToken=\"认证信息\"`"
|
|
17
|
+
steedos_packages_button_installPackageFromUrl_dialog_field_registry: 镜像源
|
|
18
|
+
steedos_packages_button_installPackageFromUrl_dialog_field_registry_option_taobao: 淘宝源
|
|
19
|
+
steedos_packages_button_installPackageFromUrl_dialog_field_registry_option_cnpm: cnpm
|
|
20
|
+
steedos_packages_button_installPackageFromUrl_dialog_field_registry_option_npmjs: 官方源
|
|
21
|
+
steedos_packages_button_installPackageFromUrl_dialog_describe1: "##### 您可以使用以下选项之一指定版本: \r- `package-name`安装包的“最新”版本。 \r- `package-name@1.2.3`从以下位置安装包的特定版本 注册表。 \r- `package-name@tag`安装特定的“标签”。(例如)beta、next、latest"
|
|
22
|
+
steedos_packages_button_installPackageFromUrl_dialog_describe2: "##### 您还可以指定来自不同位置的包:\r- `package-name` 从 npm 注册表安装包 \r- `file:/path/to/local/folder`安装一个位于本地文件系统的包。这对于测试您尚未发布到注册表的软件包很有用。 \r- `file:/path/to/local/tarball.tgz`从 gzip 压缩的 tarball,可用于在发布包之前共享包。 \r- `link:/path/to/local/folder`安装指向软件包的符号链接:在本地文件系统上。适用于monorepo环境。 \r- `<git remote url>`从远程 Git 存储库安装包。 \r- `<git remote url>#<branch/commit/tag>`从远程安装软件包特定 git 分支、git commit 或 git 标签处的 git 存储库。 \r- `https://my-project.org/package.tgz` 从远程gzip压缩压缩包。"
|
|
23
|
+
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
disable: function (object_name, record_id) {
|
|
3
|
+
Steedos.sobject(object_name).retrieve(record_id).then((record)=>{
|
|
4
|
+
if(!record){
|
|
5
|
+
return SteedosUI.notification.error({message: '未找到软件包'})
|
|
6
|
+
}
|
|
7
|
+
SteedosUI.Modal.confirm({
|
|
8
|
+
title: t('steedos_packages.disable.title'),
|
|
9
|
+
content: t('steedos_packages.disable.text') + ` ${record.name}?`,
|
|
10
|
+
okText: t('steedos_packages.disable.title'),
|
|
11
|
+
cancelText: t('Cancel'),
|
|
12
|
+
onOk: function(){
|
|
13
|
+
Steedos.authRequest(Steedos.absoluteUrl('/api/nodes/disable'), {type: 'post', async: false, data: JSON.stringify({
|
|
14
|
+
module: record.name,
|
|
15
|
+
nodeID: window.$("#steedos_package_main_node").val()
|
|
16
|
+
}),
|
|
17
|
+
success: function(data){
|
|
18
|
+
if(data.status == 1){
|
|
19
|
+
SteedosUI.notification.error({message: data.msg});
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
setTimeout(function(){
|
|
23
|
+
SteedosUI.notification.success({
|
|
24
|
+
message: t('steedos_packages.disable.toastr_success')
|
|
25
|
+
});
|
|
26
|
+
window.location.reload()
|
|
27
|
+
}, 1000 * 2)
|
|
28
|
+
},
|
|
29
|
+
error: function(XMLHttpRequest){
|
|
30
|
+
SteedosUI.notification.error({message: XMLHttpRequest.responseJSON.msg});
|
|
31
|
+
}
|
|
32
|
+
})
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
},
|
|
38
|
+
disableVisible: function (object_name, record_id, permission, data) {
|
|
39
|
+
if(Steedos.settings.public.enable_saas){
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
const record = data?.record || {};
|
|
43
|
+
if(record.isUnmanaged){
|
|
44
|
+
return false
|
|
45
|
+
}
|
|
46
|
+
if (record.status === 'enable') {
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
return false
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
name: edit_npmrc
|
|
2
|
+
amis_schema: |-
|
|
3
|
+
{
|
|
4
|
+
"type": "service",
|
|
5
|
+
"body": [
|
|
6
|
+
{
|
|
7
|
+
"type": "button",
|
|
8
|
+
"label": "${'CustomAction.steedos_packages.edit_npmrc' | t}",
|
|
9
|
+
"id": "u:edit_npmrc",
|
|
10
|
+
"editorState": "default",
|
|
11
|
+
"onEvent": {
|
|
12
|
+
"click": {
|
|
13
|
+
"weight": 0,
|
|
14
|
+
"actions": [
|
|
15
|
+
{
|
|
16
|
+
"actionType": "dialog",
|
|
17
|
+
"dialog": {
|
|
18
|
+
"type": "dialog",
|
|
19
|
+
"title": "${'CustomAction.steedos_packages.edit_npmrc' | t}",
|
|
20
|
+
"body": [
|
|
21
|
+
{
|
|
22
|
+
"type": "form",
|
|
23
|
+
"title": "表单",
|
|
24
|
+
"body": [
|
|
25
|
+
{
|
|
26
|
+
"type": "editor",
|
|
27
|
+
"label": false,
|
|
28
|
+
"name": "npmrc",
|
|
29
|
+
"id": "u:71b44f532def",
|
|
30
|
+
"language": "bat"
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
"id": "u:c9b0e17d4ebd",
|
|
34
|
+
"initApi": {
|
|
35
|
+
"url": "/api/nodes/npmrc",
|
|
36
|
+
"method": "get"
|
|
37
|
+
},
|
|
38
|
+
"api": {
|
|
39
|
+
"url": "/api/nodes/npmrc",
|
|
40
|
+
"method": "post",
|
|
41
|
+
"requestAdaptor": "",
|
|
42
|
+
"adaptor": "",
|
|
43
|
+
"messages": {}
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"type": "tpl",
|
|
48
|
+
"tpl": "<br/>"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"type": "markdown",
|
|
52
|
+
"value": "${'steedos_packages_button_edit_npmrc_dialog_describe' | t}"
|
|
53
|
+
}
|
|
54
|
+
],
|
|
55
|
+
"showCloseButton": true,
|
|
56
|
+
"showErrorMsg": true,
|
|
57
|
+
"showLoading": true,
|
|
58
|
+
"className": "app-popover",
|
|
59
|
+
"id": "u:00682dd0eb74",
|
|
60
|
+
"closeOnEsc": false,
|
|
61
|
+
"size": "lg"
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
]
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
],
|
|
69
|
+
"regions": [
|
|
70
|
+
"body"
|
|
71
|
+
],
|
|
72
|
+
"data": {
|
|
73
|
+
"context": {},
|
|
74
|
+
"dataComponentId": "",
|
|
75
|
+
"record_id": "",
|
|
76
|
+
"record": {},
|
|
77
|
+
"permissions": {}
|
|
78
|
+
},
|
|
79
|
+
"bodyClassName": "p-0",
|
|
80
|
+
"id": "u:743d34f49376"
|
|
81
|
+
}
|
|
82
|
+
is_enable: true
|
|
83
|
+
label: 验证信息
|
|
84
|
+
'on': list
|
|
85
|
+
type: amis_button
|
|
86
|
+
visible: true
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* @Author: 殷亮辉 yinlianghui@hotoa.com
|
|
3
|
+
* @Date: 2025-07-07 16:57:38
|
|
4
|
+
* @LastEditors: 殷亮辉 yinlianghui@hotoa.com
|
|
5
|
+
* @LastEditTime: 2025-09-01 17:04:07
|
|
6
|
+
*/
|
|
7
|
+
module.exports = {
|
|
8
|
+
enable: function (object_name, record_id) {
|
|
9
|
+
Steedos.sobject(object_name).retrieve(record_id).then((record)=>{
|
|
10
|
+
if(!record){
|
|
11
|
+
return SteedosUI.notification.error({message: '未找到软件包'})
|
|
12
|
+
}
|
|
13
|
+
console.log('record.....',record)
|
|
14
|
+
|
|
15
|
+
SteedosUI.Modal.confirm({
|
|
16
|
+
title: t('steedos_packages.enable.title'),
|
|
17
|
+
content: t('steedos_packages.enable.text') + ` ${record.name}?`,
|
|
18
|
+
okText: t('steedos_packages.enable.title'),
|
|
19
|
+
cancelText: t('Cancel'),
|
|
20
|
+
onOk: function(){
|
|
21
|
+
Steedos.authRequest(Steedos.absoluteUrl('/api/nodes/enable'), {type: 'post', async: false, data: JSON.stringify({
|
|
22
|
+
module: record.name,
|
|
23
|
+
nodeID: window.$("#steedos_package_main_node").val()
|
|
24
|
+
}),
|
|
25
|
+
success: function(data){
|
|
26
|
+
if(data.status == 1){
|
|
27
|
+
SteedosUI.notification.error({message: data.msg});
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
setTimeout(function(){
|
|
31
|
+
SteedosUI.notification.success({
|
|
32
|
+
message: t('steedos_packages.enable.toastr_success')
|
|
33
|
+
});
|
|
34
|
+
window.location.reload()
|
|
35
|
+
}, 1000 * 2)
|
|
36
|
+
},
|
|
37
|
+
error: function(XMLHttpRequest){
|
|
38
|
+
SteedosUI.notification.error({message: XMLHttpRequest.responseJSON.msg});
|
|
39
|
+
}
|
|
40
|
+
})
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
})
|
|
44
|
+
},
|
|
45
|
+
enableVisible: function (object_name,record_id, permission, data) {
|
|
46
|
+
if(Steedos.settings.public.enable_saas){
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
const record = data?.record || {};
|
|
50
|
+
if(record.isUnmanaged){
|
|
51
|
+
return false
|
|
52
|
+
}
|
|
53
|
+
if(record.status !== 'enable'){
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
return false
|
|
57
|
+
}
|
|
58
|
+
}
|