@steedos/service-package-registry 2.2.54-beta.8 → 2.2.55-beta.10
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.
|
@@ -7,7 +7,8 @@ const objectql = require('@steedos/objectql');
|
|
|
7
7
|
const registry = require('./registry');
|
|
8
8
|
const userDir = path.join(process.cwd(), '.steedos');
|
|
9
9
|
const packagesFilePath = path.join(userDir, 'steedos-packages.yml');
|
|
10
|
-
|
|
10
|
+
const metadataApi = require('@steedos/metadata-api');
|
|
11
|
+
const util = require('./util');
|
|
11
12
|
const loadPackagesConfig = ()=>{
|
|
12
13
|
return yaml.load(fs.readFileSync(packagesFilePath, 'utf8')) || {};
|
|
13
14
|
}
|
|
@@ -111,6 +112,51 @@ const destroyExistThePackageService = async (packageInfo)=>{
|
|
|
111
112
|
}
|
|
112
113
|
}
|
|
113
114
|
|
|
115
|
+
const isPackage = (name)=>{
|
|
116
|
+
try {
|
|
117
|
+
const packagePath = path.dirname(require.resolve(`${name}/package.json`, {
|
|
118
|
+
paths: [path.join(userDir, 'node_modules')]
|
|
119
|
+
}))
|
|
120
|
+
return fs.existsSync(path.join(packagePath, 'package.service.js'));
|
|
121
|
+
} catch (error) {
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
const loadDependency = async (dependencyName, dependencyVersion)=>{
|
|
127
|
+
let schema = objectql.getSteedosSchema();
|
|
128
|
+
let broker = schema.broker;
|
|
129
|
+
let packageInfo = null;
|
|
130
|
+
const packageConfig = getPackageConfig(dependencyName);
|
|
131
|
+
if(packageConfig){
|
|
132
|
+
if(packageConfig.enable){
|
|
133
|
+
return ;
|
|
134
|
+
}else{
|
|
135
|
+
await enablePackage(dependencyName)
|
|
136
|
+
}
|
|
137
|
+
}else{
|
|
138
|
+
try {
|
|
139
|
+
const packagePath = path.dirname(require.resolve(`${dependencyName}/package.json`, {
|
|
140
|
+
paths: [path.join(userDir, 'node_modules')]
|
|
141
|
+
}))
|
|
142
|
+
packageInfo = require(path.join(packagePath, 'package.json'));
|
|
143
|
+
} catch (error) {
|
|
144
|
+
// console.log(`loadDependency`, error.message)
|
|
145
|
+
}
|
|
146
|
+
if(packageInfo && isPackage(dependencyName)){
|
|
147
|
+
await enablePackage(dependencyName)
|
|
148
|
+
}else{
|
|
149
|
+
try {
|
|
150
|
+
await installPackage(broker, {module: dependencyName, version: dependencyVersion, enable: true})
|
|
151
|
+
} catch (error) {
|
|
152
|
+
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
// 如果steedos package yml 中没有该依赖,则直接安装
|
|
156
|
+
// await installPackage(broker, {module: dependencyName, version: dependencyVersion, enable: true})
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
114
160
|
const loadPackage = async (packageName, packagePath)=>{
|
|
115
161
|
try {
|
|
116
162
|
if(!packagePath){
|
|
@@ -120,7 +166,14 @@ const loadPackage = async (packageName, packagePath)=>{
|
|
|
120
166
|
}
|
|
121
167
|
const packageInfo = require(path.join(packagePath, 'package.json'));
|
|
122
168
|
await destroyExistThePackageService(packageInfo);
|
|
123
|
-
await steedos.loadPackage(packagePath)
|
|
169
|
+
await steedos.loadPackage(packagePath);
|
|
170
|
+
|
|
171
|
+
if(packageInfo.dependencies){
|
|
172
|
+
for (const dependencyName in packageInfo.dependencies) {
|
|
173
|
+
const dependencyVersion = packageInfo.dependencies[dependencyName];
|
|
174
|
+
await loadDependency(dependencyName, dependencyVersion);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
124
177
|
return Object.assign({packagePath: packagePath}, packageInfo);
|
|
125
178
|
} catch (error) {
|
|
126
179
|
console.error(error)
|
|
@@ -162,13 +215,17 @@ const removePackage = async (packageName)=>{
|
|
|
162
215
|
fs.writeFileSync(packagesFilePath, data);
|
|
163
216
|
}
|
|
164
217
|
|
|
165
|
-
const
|
|
218
|
+
const getPackageConfig = (packageName)=>{
|
|
166
219
|
const packages = loadPackagesConfig();
|
|
167
|
-
|
|
168
|
-
const package = _.find(packages, (info, name)=>{
|
|
220
|
+
return _.find(packages, (info, name)=>{
|
|
169
221
|
return packageName == name
|
|
170
|
-
})
|
|
171
|
-
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
const enablePackage = async (packageName)=>{
|
|
226
|
+
let packagePath = null;
|
|
227
|
+
let package = getPackageConfig(packageName);
|
|
228
|
+
if(package && package.local){
|
|
172
229
|
if(path.isAbsolute(package.path)){
|
|
173
230
|
packagePath = package.path
|
|
174
231
|
}else{
|
|
@@ -179,19 +236,86 @@ const enablePackage = async (packageName)=>{
|
|
|
179
236
|
paths: [path.join(userDir, 'node_modules')]
|
|
180
237
|
}))
|
|
181
238
|
}
|
|
182
|
-
await
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
239
|
+
await loadPackage(packageName, packagePath)
|
|
240
|
+
|
|
241
|
+
if(package){
|
|
242
|
+
package.enable = true;
|
|
243
|
+
}else{
|
|
244
|
+
const packageJSON = require(path.join(packagePath, 'package.json'));
|
|
245
|
+
package = {
|
|
246
|
+
label: '',
|
|
247
|
+
version: packageJSON.version,
|
|
248
|
+
description: packageJSON.description || '',
|
|
249
|
+
local: false,
|
|
250
|
+
enable: true,
|
|
251
|
+
path: util.getPackageRelativePath(process.cwd(), packagePath)
|
|
188
252
|
}
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
|
|
253
|
+
}
|
|
254
|
+
appendToPackagesConfig(packageName, package);
|
|
255
|
+
let packageInfo = Object.assign({}, package, {name: packageName});
|
|
192
256
|
return packageInfo;
|
|
193
257
|
}
|
|
258
|
+
const installPackage = async (broker, options)=>{
|
|
259
|
+
let {module, version, label, description, enable} = options;
|
|
260
|
+
const packagePath = await registry.installModule(module, version);
|
|
261
|
+
if(enable){
|
|
262
|
+
await loadPackage(module, packagePath);
|
|
263
|
+
}else{
|
|
264
|
+
enable = false;
|
|
265
|
+
}
|
|
266
|
+
const packageConfig = {
|
|
267
|
+
label: label || '',
|
|
268
|
+
version: version,
|
|
269
|
+
description: description || '',
|
|
270
|
+
local: false,
|
|
271
|
+
enable: enable,
|
|
272
|
+
path: util.getPackageRelativePath(process.cwd(), packagePath)
|
|
273
|
+
}
|
|
274
|
+
appendToPackagesConfig(module, packageConfig);
|
|
275
|
+
const metadata = await getPackageMetadata(util.getPackageRelativePath(process.cwd(), packagePath));
|
|
276
|
+
await broker.call(`@steedos/service-packages.install`, {
|
|
277
|
+
serviceInfo: Object.assign({}, packageConfig, {
|
|
278
|
+
name: module,
|
|
279
|
+
enable: enable,
|
|
280
|
+
nodeID: broker.nodeID,
|
|
281
|
+
instanceID: broker.instanceID,
|
|
282
|
+
metadata: metadata
|
|
283
|
+
})
|
|
284
|
+
})
|
|
285
|
+
return packageConfig;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
const getPackageMetadata = async (packagePath)=>{
|
|
289
|
+
const packageMetadata = [];
|
|
290
|
+
const result = await metadataApi.loadFileToJson(packagePath, {
|
|
291
|
+
CustomApplication: '*',
|
|
292
|
+
CustomPermissionset: '*',
|
|
293
|
+
CustomProfile: '*',
|
|
294
|
+
CustomObject: '*',
|
|
295
|
+
Layout: '*',
|
|
296
|
+
CustomReport: '*',
|
|
297
|
+
Workflow: '*',
|
|
298
|
+
Flow: '*',
|
|
299
|
+
ApprovalProcess: '*',
|
|
300
|
+
Role: '*',
|
|
301
|
+
FlowRole: '*',
|
|
302
|
+
Query: '*',
|
|
303
|
+
Chart: '*',
|
|
304
|
+
Page: '*',
|
|
305
|
+
Tab: '*',
|
|
306
|
+
});
|
|
194
307
|
|
|
308
|
+
_.each(result, (metadataItems, metadataType)=>{
|
|
309
|
+
_.each(metadataItems, (metadata, apiName)=>{
|
|
310
|
+
packageMetadata.push({
|
|
311
|
+
label: metadata.label || metadata.name,
|
|
312
|
+
type: metadataType,
|
|
313
|
+
api_name: apiName
|
|
314
|
+
})
|
|
315
|
+
})
|
|
316
|
+
})
|
|
317
|
+
return packageMetadata;
|
|
318
|
+
}
|
|
195
319
|
|
|
196
320
|
module.exports = {
|
|
197
321
|
loadPackages,
|
|
@@ -201,5 +325,7 @@ module.exports = {
|
|
|
201
325
|
disablePackage,
|
|
202
326
|
enablePackage,
|
|
203
327
|
removePackage,
|
|
204
|
-
getPackageInfo
|
|
328
|
+
getPackageInfo,
|
|
329
|
+
getPackageMetadata,
|
|
330
|
+
installPackage
|
|
205
331
|
}
|
|
@@ -6,7 +6,7 @@ const objectql = require('@steedos/objectql');
|
|
|
6
6
|
const packageJson = require('./package-json');
|
|
7
7
|
const _ = require('lodash');
|
|
8
8
|
const login = require('./login');
|
|
9
|
-
|
|
9
|
+
const metadataApi = require('@steedos/metadata-api');
|
|
10
10
|
function registryUrl(scope) {
|
|
11
11
|
try {
|
|
12
12
|
const result = login.getYarnrcScopes();
|
|
@@ -213,7 +213,6 @@ async function installModule(module, version, url, registry_url) {
|
|
|
213
213
|
activePromise = Promise.resolve(packagePath);
|
|
214
214
|
return activePromise;
|
|
215
215
|
} catch (error) {
|
|
216
|
-
console.log(`error`, error)
|
|
217
216
|
throw new Error(`${module} is not steedos package`)
|
|
218
217
|
}
|
|
219
218
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@steedos/service-package-registry",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.55-beta.10",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "package.service.js",
|
|
6
6
|
"scripts": {
|
|
@@ -9,12 +9,12 @@
|
|
|
9
9
|
"author": "",
|
|
10
10
|
"license": "ISC",
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@steedos/auth": "2.2.
|
|
13
|
-
"@steedos/core": "2.2.
|
|
14
|
-
"@steedos/metadata-core": "2.2.
|
|
15
|
-
"@steedos/objectql": "2.2.
|
|
16
|
-
"@steedos/service-package-license": "2.2.
|
|
17
|
-
"@steedos/service-package-loader": "2.2.
|
|
12
|
+
"@steedos/auth": "2.2.55-beta.10",
|
|
13
|
+
"@steedos/core": "2.2.55-beta.10",
|
|
14
|
+
"@steedos/metadata-core": "2.2.55-beta.10",
|
|
15
|
+
"@steedos/objectql": "2.2.55-beta.10",
|
|
16
|
+
"@steedos/service-package-license": "2.2.55-beta.10",
|
|
17
|
+
"@steedos/service-package-loader": "2.2.55-beta.10",
|
|
18
18
|
"fs-extra": "8.1.0",
|
|
19
19
|
"i18next": "20.3.2",
|
|
20
20
|
"json-stringify-safe": "5.0.1",
|
|
@@ -32,5 +32,5 @@
|
|
|
32
32
|
"publishConfig": {
|
|
33
33
|
"access": "public"
|
|
34
34
|
},
|
|
35
|
-
"gitHead": "
|
|
35
|
+
"gitHead": "8332c1b7386041d49e191183011c96210ffa97d8"
|
|
36
36
|
}
|