@abtnode/core 1.16.25-beta-822a748c → 1.16.25-beta-85e265d1
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/lib/blocklet/downloader/resolve-download.js +2 -2
- package/lib/blocklet/project/create-pack-release.js +12 -10
- package/lib/blocklet/project/index.js +15 -7
- package/lib/states/project.js +3 -1
- package/lib/util/blocklet.js +3 -0
- package/lib/util/install-external-dependencies.js +40 -17
- package/package.json +21 -21
|
@@ -78,7 +78,7 @@ const resolveDownload = async (tarFile, dist, { removeTarFile = true, logger = d
|
|
|
78
78
|
|
|
79
79
|
await fs.move(downloadDir, installDir, { overwrite: true });
|
|
80
80
|
|
|
81
|
-
installExternalDependencies(installDir);
|
|
81
|
+
await installExternalDependencies({ appDir: installDir, forceInstall: true });
|
|
82
82
|
} catch (error) {
|
|
83
83
|
fs.removeSync(downloadDir);
|
|
84
84
|
fs.removeSync(tmp);
|
|
@@ -145,7 +145,7 @@ const resolveDiffDownload = async (
|
|
|
145
145
|
logger.info('Move downloadDir to installDir', { downloadDir, bundleDir });
|
|
146
146
|
await fs.move(downloadDir, bundleDir, { overwrite: true });
|
|
147
147
|
|
|
148
|
-
installExternalDependencies(bundleDir);
|
|
148
|
+
await installExternalDependencies({ appDir: bundleDir, forceInstall: true });
|
|
149
149
|
|
|
150
150
|
return { meta, installDir: bundleDir };
|
|
151
151
|
} catch (error) {
|
|
@@ -62,10 +62,6 @@ const createPackRelease = async ({
|
|
|
62
62
|
throw new Error('project not found');
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
if (project0.type !== PROJECT.TYPES.pack) {
|
|
66
|
-
throw new Error('project type is not pack');
|
|
67
|
-
}
|
|
68
|
-
|
|
69
65
|
const action = releaseId ? 'update' : 'create';
|
|
70
66
|
|
|
71
67
|
if (action === 'update') {
|
|
@@ -99,10 +95,8 @@ const createPackRelease = async ({
|
|
|
99
95
|
releaseId,
|
|
100
96
|
status,
|
|
101
97
|
});
|
|
102
|
-
const project = await projectState.updateProject(projectId, params);
|
|
103
98
|
|
|
104
99
|
const _releaseId = release.id;
|
|
105
|
-
|
|
106
100
|
const releaseDir = path.join(projectDir, PROJECT.RELEASE_DIR, `${_releaseId}`);
|
|
107
101
|
const resourceDir = path.join(releaseDir, PROJECT.RESOURCE_DIR);
|
|
108
102
|
const tmpResourceDir = path.join(projectDir, PROJECT.RESOURCE_DIR);
|
|
@@ -118,10 +112,6 @@ const createPackRelease = async ({
|
|
|
118
112
|
await fs.ensureDir(tmpResourceDir);
|
|
119
113
|
}
|
|
120
114
|
|
|
121
|
-
if (status === PROJECT.RELEASE_STATUS.draft) {
|
|
122
|
-
return release;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
115
|
const releaseExportDir = path.join(releaseDir, '.blocklet');
|
|
126
116
|
const releaseBundleDir = path.join(releaseExportDir, 'bundle');
|
|
127
117
|
const releaseReleaseDir = path.join(releaseExportDir, 'release');
|
|
@@ -129,6 +119,18 @@ const createPackRelease = async ({
|
|
|
129
119
|
const moniker = (urlPathFriendly(slugify(release.blockletTitle)) || 'blocklet').toLowerCase();
|
|
130
120
|
const releaseFileName = `${moniker}-${release.blockletVersion}.zip`;
|
|
131
121
|
const releaseFile = path.join(releaseDir, releaseFileName);
|
|
122
|
+
|
|
123
|
+
if (status !== PROJECT.RELEASE_STATUS.draft) {
|
|
124
|
+
params.lastReleaseId = _releaseId;
|
|
125
|
+
params.lastReleaseFiles = [releaseFileName];
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
const project = await projectState.updateProject(projectId, params);
|
|
129
|
+
|
|
130
|
+
if (status === PROJECT.RELEASE_STATUS.draft) {
|
|
131
|
+
return release;
|
|
132
|
+
}
|
|
133
|
+
|
|
132
134
|
if (fs.existsSync(releaseFile)) {
|
|
133
135
|
logger.error('release file already exists, remove it', releaseFile);
|
|
134
136
|
await fs.remove(releaseFile);
|
|
@@ -150,7 +150,9 @@ const createRelease = async ({
|
|
|
150
150
|
throw new Error('project not found');
|
|
151
151
|
}
|
|
152
152
|
|
|
153
|
-
|
|
153
|
+
const isPack = blockletComponents?.length > 0;
|
|
154
|
+
|
|
155
|
+
if (isPack) {
|
|
154
156
|
return createPackRelease({
|
|
155
157
|
did,
|
|
156
158
|
projectId,
|
|
@@ -201,10 +203,8 @@ const createRelease = async ({
|
|
|
201
203
|
releaseId,
|
|
202
204
|
status,
|
|
203
205
|
});
|
|
204
|
-
const project = await projectState.updateProject(projectId, params);
|
|
205
206
|
|
|
206
207
|
const _releaseId = release.id;
|
|
207
|
-
|
|
208
208
|
const releaseDir = path.join(projectDir, PROJECT.RELEASE_DIR, `${_releaseId}`);
|
|
209
209
|
const resourceDir = path.join(releaseDir, PROJECT.RESOURCE_DIR);
|
|
210
210
|
const tmpResourceDir = path.join(projectDir, PROJECT.RESOURCE_DIR);
|
|
@@ -220,10 +220,6 @@ const createRelease = async ({
|
|
|
220
220
|
await fs.ensureDir(tmpResourceDir);
|
|
221
221
|
}
|
|
222
222
|
|
|
223
|
-
if (status === PROJECT.RELEASE_STATUS.draft) {
|
|
224
|
-
return release;
|
|
225
|
-
}
|
|
226
|
-
|
|
227
223
|
const releaseExportDir = path.join(releaseDir, '.blocklet');
|
|
228
224
|
const releaseBundleDir = path.join(releaseExportDir, 'bundle');
|
|
229
225
|
const releaseReleaseDir = path.join(releaseExportDir, 'release');
|
|
@@ -231,6 +227,18 @@ const createRelease = async ({
|
|
|
231
227
|
const moniker = (urlPathFriendly(slugify(release.blockletTitle)) || 'blocklet').toLowerCase();
|
|
232
228
|
const releaseFileName = `${moniker}-${release.blockletVersion}.zip`;
|
|
233
229
|
const releaseFile = path.join(releaseDir, releaseFileName);
|
|
230
|
+
|
|
231
|
+
if (status !== PROJECT.RELEASE_STATUS.draft) {
|
|
232
|
+
params.lastReleaseId = _releaseId;
|
|
233
|
+
params.lastReleaseFiles = [releaseFileName];
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
const project = await projectState.updateProject(projectId, params);
|
|
237
|
+
|
|
238
|
+
if (status === PROJECT.RELEASE_STATUS.draft) {
|
|
239
|
+
return release;
|
|
240
|
+
}
|
|
241
|
+
|
|
234
242
|
if (fs.existsSync(releaseFile)) {
|
|
235
243
|
logger.error('release file already exists, remove it', releaseFile);
|
|
236
244
|
await fs.remove(releaseFile);
|
package/lib/states/project.js
CHANGED
|
@@ -42,10 +42,12 @@ class Project extends BaseState {
|
|
|
42
42
|
'blockletDescription',
|
|
43
43
|
'blockletDid',
|
|
44
44
|
'blockletScreenshots',
|
|
45
|
+
'lastReleaseId',
|
|
46
|
+
'lastReleaseFiles',
|
|
45
47
|
]),
|
|
46
48
|
(x) => !isUndefinedOrNull(x)
|
|
47
49
|
);
|
|
48
|
-
|
|
50
|
+
_params.type = params.blockletComponents?.length ? 'pack' : 'resource';
|
|
49
51
|
const [, [updated]] = await this.update({ id }, { $set: _params });
|
|
50
52
|
return updated;
|
|
51
53
|
}
|
package/lib/util/blocklet.js
CHANGED
|
@@ -106,6 +106,7 @@ const { validate: validateEngine, get: getEngine } = require('../blocklet/manage
|
|
|
106
106
|
const isRequirementsSatisfied = require('./requirement');
|
|
107
107
|
const { getDidDomainForBlocklet } = require('./get-domain-for-blocklet');
|
|
108
108
|
const { expandBundle, findInterfacePortByName, prettyURL, templateReplace, getServerDidDomain } = require('./index');
|
|
109
|
+
const { installExternalDependencies } = require('./install-external-dependencies');
|
|
109
110
|
|
|
110
111
|
/**
|
|
111
112
|
* get blocklet engine info, default is node
|
|
@@ -564,6 +565,8 @@ const startBlockletProcess = async (
|
|
|
564
565
|
const env = getRuntimeEnvironments(b, nodeEnvironments, ancestors);
|
|
565
566
|
const startedAt = Date.now();
|
|
566
567
|
|
|
568
|
+
await installExternalDependencies({ appDir: env?.BLOCKLET_APP_DIR });
|
|
569
|
+
|
|
567
570
|
// run hook
|
|
568
571
|
await preFlight(b, { env });
|
|
569
572
|
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
const {
|
|
1
|
+
const { spawn } = require('child_process');
|
|
2
2
|
const fs = require('fs-extra');
|
|
3
3
|
const path = require('path');
|
|
4
4
|
|
|
5
|
-
function
|
|
5
|
+
function isDependencyInstalled(appDir, dependency) {
|
|
6
|
+
return fs.existsSync(path.resolve(appDir, 'node_modules', dependency));
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
function installExternalDependencies({ appDir, forceInstall = false } = {}) {
|
|
6
10
|
if (!appDir) {
|
|
7
11
|
throw new Error('appDir is required');
|
|
8
12
|
}
|
|
@@ -22,25 +26,44 @@ function installExternalDependencies(appDir) {
|
|
|
22
26
|
// FIXME: 梁柱, 等未来所有的 blocklet 使用了正式版, 废弃 singleExternals
|
|
23
27
|
const { singleExternals, blockletExternalDependencies } = packageJson;
|
|
24
28
|
const externals = singleExternals || blockletExternalDependencies;
|
|
25
|
-
if (!externals || !externals
|
|
29
|
+
if (!Array.isArray(externals) || !externals.length) {
|
|
26
30
|
return;
|
|
27
31
|
}
|
|
28
32
|
|
|
29
|
-
const
|
|
30
|
-
cwd: appDir,
|
|
31
|
-
stdio: 'pipe',
|
|
32
|
-
shell: true,
|
|
33
|
-
env: {
|
|
34
|
-
...process.env,
|
|
35
|
-
NODE_ENV: 'production',
|
|
36
|
-
},
|
|
37
|
-
});
|
|
33
|
+
const isNeedInstall = forceInstall || externals.some((dependency) => !isDependencyInstalled(appDir, dependency));
|
|
38
34
|
|
|
39
|
-
if (
|
|
40
|
-
|
|
41
|
-
}
|
|
42
|
-
if (result.error) {
|
|
43
|
-
throw result.error;
|
|
35
|
+
if (!isNeedInstall) {
|
|
36
|
+
return;
|
|
44
37
|
}
|
|
38
|
+
|
|
39
|
+
// eslint-disable-next-line consistent-return
|
|
40
|
+
return new Promise((resolve, reject) => {
|
|
41
|
+
const child = spawn('npm', ['install'], {
|
|
42
|
+
cwd: appDir,
|
|
43
|
+
stdio: 'pipe',
|
|
44
|
+
shell: true,
|
|
45
|
+
env: {
|
|
46
|
+
...process.env,
|
|
47
|
+
NODE_ENV: 'production',
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
let errorOutput = '';
|
|
52
|
+
child.stderr.on('data', (data) => {
|
|
53
|
+
errorOutput += data.toString();
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
child.on('close', (code) => {
|
|
57
|
+
if (code !== 0 && errorOutput.trim()) {
|
|
58
|
+
reject(new Error(errorOutput));
|
|
59
|
+
} else {
|
|
60
|
+
resolve();
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
child.on('error', (err) => {
|
|
65
|
+
reject(err);
|
|
66
|
+
});
|
|
67
|
+
});
|
|
45
68
|
}
|
|
46
69
|
module.exports = { installExternalDependencies };
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "1.16.25-beta-
|
|
6
|
+
"version": "1.16.25-beta-85e265d1",
|
|
7
7
|
"description": "",
|
|
8
8
|
"main": "lib/index.js",
|
|
9
9
|
"files": [
|
|
@@ -19,19 +19,19 @@
|
|
|
19
19
|
"author": "wangshijun <wangshijun2010@gmail.com> (http://github.com/wangshijun)",
|
|
20
20
|
"license": "Apache-2.0",
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@abtnode/analytics": "1.16.25-beta-
|
|
23
|
-
"@abtnode/auth": "1.16.25-beta-
|
|
24
|
-
"@abtnode/certificate-manager": "1.16.25-beta-
|
|
25
|
-
"@abtnode/constant": "1.16.25-beta-
|
|
26
|
-
"@abtnode/cron": "1.16.25-beta-
|
|
27
|
-
"@abtnode/logger": "1.16.25-beta-
|
|
28
|
-
"@abtnode/models": "1.16.25-beta-
|
|
29
|
-
"@abtnode/queue": "1.16.25-beta-
|
|
30
|
-
"@abtnode/rbac": "1.16.25-beta-
|
|
31
|
-
"@abtnode/router-provider": "1.16.25-beta-
|
|
32
|
-
"@abtnode/static-server": "1.16.25-beta-
|
|
33
|
-
"@abtnode/timemachine": "1.16.25-beta-
|
|
34
|
-
"@abtnode/util": "1.16.25-beta-
|
|
22
|
+
"@abtnode/analytics": "1.16.25-beta-85e265d1",
|
|
23
|
+
"@abtnode/auth": "1.16.25-beta-85e265d1",
|
|
24
|
+
"@abtnode/certificate-manager": "1.16.25-beta-85e265d1",
|
|
25
|
+
"@abtnode/constant": "1.16.25-beta-85e265d1",
|
|
26
|
+
"@abtnode/cron": "1.16.25-beta-85e265d1",
|
|
27
|
+
"@abtnode/logger": "1.16.25-beta-85e265d1",
|
|
28
|
+
"@abtnode/models": "1.16.25-beta-85e265d1",
|
|
29
|
+
"@abtnode/queue": "1.16.25-beta-85e265d1",
|
|
30
|
+
"@abtnode/rbac": "1.16.25-beta-85e265d1",
|
|
31
|
+
"@abtnode/router-provider": "1.16.25-beta-85e265d1",
|
|
32
|
+
"@abtnode/static-server": "1.16.25-beta-85e265d1",
|
|
33
|
+
"@abtnode/timemachine": "1.16.25-beta-85e265d1",
|
|
34
|
+
"@abtnode/util": "1.16.25-beta-85e265d1",
|
|
35
35
|
"@arcblock/did": "1.18.113",
|
|
36
36
|
"@arcblock/did-auth": "1.18.113",
|
|
37
37
|
"@arcblock/did-ext": "^1.18.113",
|
|
@@ -42,12 +42,12 @@
|
|
|
42
42
|
"@arcblock/pm2-events": "^0.0.5",
|
|
43
43
|
"@arcblock/validator": "^1.18.113",
|
|
44
44
|
"@arcblock/vc": "1.18.113",
|
|
45
|
-
"@blocklet/constant": "1.16.25-beta-
|
|
46
|
-
"@blocklet/env": "1.16.25-beta-
|
|
47
|
-
"@blocklet/meta": "1.16.25-beta-
|
|
48
|
-
"@blocklet/resolver": "1.16.25-beta-
|
|
49
|
-
"@blocklet/sdk": "1.16.25-beta-
|
|
50
|
-
"@did-space/client": "^0.3.
|
|
45
|
+
"@blocklet/constant": "1.16.25-beta-85e265d1",
|
|
46
|
+
"@blocklet/env": "1.16.25-beta-85e265d1",
|
|
47
|
+
"@blocklet/meta": "1.16.25-beta-85e265d1",
|
|
48
|
+
"@blocklet/resolver": "1.16.25-beta-85e265d1",
|
|
49
|
+
"@blocklet/sdk": "1.16.25-beta-85e265d1",
|
|
50
|
+
"@did-space/client": "^0.3.73",
|
|
51
51
|
"@fidm/x509": "^1.2.1",
|
|
52
52
|
"@ocap/mcrypto": "1.18.113",
|
|
53
53
|
"@ocap/util": "1.18.113",
|
|
@@ -102,5 +102,5 @@
|
|
|
102
102
|
"jest": "^29.7.0",
|
|
103
103
|
"unzipper": "^0.10.11"
|
|
104
104
|
},
|
|
105
|
-
"gitHead": "
|
|
105
|
+
"gitHead": "ea2dbf135591636c3d1899374b99d66eee61c7d2"
|
|
106
106
|
}
|