@abtnode/core 1.16.25-next-b726d470 → 1.16.25
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
|
@@ -104,6 +104,7 @@ const { validate: validateEngine, get: getEngine } = require('../blocklet/manage
|
|
|
104
104
|
const isRequirementsSatisfied = require('./requirement');
|
|
105
105
|
const { getDidDomainForBlocklet } = require('./get-domain-for-blocklet');
|
|
106
106
|
const { expandBundle, findInterfacePortByName, prettyURL, templateReplace, getServerDidDomain } = require('./index');
|
|
107
|
+
const { installExternalDependencies } = require('./install-external-dependencies');
|
|
107
108
|
|
|
108
109
|
/**
|
|
109
110
|
* get blocklet engine info, default is node
|
|
@@ -562,6 +563,8 @@ const startBlockletProcess = async (
|
|
|
562
563
|
const env = getRuntimeEnvironments(b, nodeEnvironments, ancestors);
|
|
563
564
|
const startedAt = Date.now();
|
|
564
565
|
|
|
566
|
+
await installExternalDependencies({ appDir: env?.BLOCKLET_APP_DIR });
|
|
567
|
+
|
|
565
568
|
// run hook
|
|
566
569
|
await preFlight(b, { env });
|
|
567
570
|
|
|
@@ -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
|
|
6
|
+
"version": "1.16.25",
|
|
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
|
|
23
|
-
"@abtnode/auth": "1.16.25
|
|
24
|
-
"@abtnode/certificate-manager": "1.16.25
|
|
25
|
-
"@abtnode/constant": "1.16.25
|
|
26
|
-
"@abtnode/cron": "1.16.25
|
|
27
|
-
"@abtnode/logger": "1.16.25
|
|
28
|
-
"@abtnode/models": "1.16.25
|
|
29
|
-
"@abtnode/queue": "1.16.25
|
|
30
|
-
"@abtnode/rbac": "1.16.25
|
|
31
|
-
"@abtnode/router-provider": "1.16.25
|
|
32
|
-
"@abtnode/static-server": "1.16.25
|
|
33
|
-
"@abtnode/timemachine": "1.16.25
|
|
34
|
-
"@abtnode/util": "1.16.25
|
|
22
|
+
"@abtnode/analytics": "1.16.25",
|
|
23
|
+
"@abtnode/auth": "1.16.25",
|
|
24
|
+
"@abtnode/certificate-manager": "1.16.25",
|
|
25
|
+
"@abtnode/constant": "1.16.25",
|
|
26
|
+
"@abtnode/cron": "1.16.25",
|
|
27
|
+
"@abtnode/logger": "1.16.25",
|
|
28
|
+
"@abtnode/models": "1.16.25",
|
|
29
|
+
"@abtnode/queue": "1.16.25",
|
|
30
|
+
"@abtnode/rbac": "1.16.25",
|
|
31
|
+
"@abtnode/router-provider": "1.16.25",
|
|
32
|
+
"@abtnode/static-server": "1.16.25",
|
|
33
|
+
"@abtnode/timemachine": "1.16.25",
|
|
34
|
+
"@abtnode/util": "1.16.25",
|
|
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
|
|
46
|
-
"@blocklet/env": "1.16.25
|
|
47
|
-
"@blocklet/meta": "1.16.25
|
|
48
|
-
"@blocklet/resolver": "1.16.25
|
|
49
|
-
"@blocklet/sdk": "1.16.25
|
|
50
|
-
"@did-space/client": "^0.3.
|
|
45
|
+
"@blocklet/constant": "1.16.25",
|
|
46
|
+
"@blocklet/env": "1.16.25",
|
|
47
|
+
"@blocklet/meta": "1.16.25",
|
|
48
|
+
"@blocklet/resolver": "1.16.25",
|
|
49
|
+
"@blocklet/sdk": "1.16.25",
|
|
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": "8752b9a0caa8745e16e1de8db4ef696b713ffb4d"
|
|
106
106
|
}
|