@abtnode/core 1.16.41 → 1.16.42-beta-20250402-131159-7647e64d

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/api/team.js CHANGED
@@ -3,7 +3,7 @@ const axios = require('@abtnode/util/lib/axios');
3
3
  const pick = require('lodash/pick');
4
4
  const defaults = require('lodash/defaults');
5
5
  const isEmpty = require('lodash/isEmpty');
6
- const cloneDeep = require('lodash/cloneDeep');
6
+ const cloneDeep = require('@abtnode/util/lib/deep-clone');
7
7
  const { joinURL, withoutTrailingSlash } = require('ufo');
8
8
 
9
9
  const logger = require('@abtnode/logger')('@abtnode/core:api:team');
@@ -3,7 +3,7 @@ const fs = require('fs-extra');
3
3
  const { fileURLToPath } = require('url');
4
4
  const path = require('path');
5
5
  const pick = require('lodash/pick');
6
- const cloneDeep = require('lodash/cloneDeep');
6
+ const cloneDeep = require('@abtnode/util/lib/deep-clone');
7
7
  const { toBase58 } = require('@ocap/util');
8
8
 
9
9
  const defaultLogger = require('@abtnode/logger')('@abtnode/core:bundle-downloader');
@@ -1,5 +1,5 @@
1
1
  const uniqBy = require('lodash/uniqBy');
2
- const cloneDeep = require('lodash/cloneDeep');
2
+ const cloneDeep = require('@abtnode/util/lib/deep-clone');
3
3
  const security = require('@abtnode/util/lib/security');
4
4
  const { BLOCKLET_CONFIGURABLE_KEY } = require('@blocklet/constant');
5
5
 
@@ -12,7 +12,7 @@ const merge = require('lodash/merge');
12
12
  const pick = require('lodash/pick');
13
13
  const uniqBy = require('lodash/uniqBy');
14
14
  const isEmpty = require('lodash/isEmpty');
15
- const cloneDeep = require('lodash/cloneDeep');
15
+ const cloneDeep = require('@abtnode/util/lib/deep-clone');
16
16
  const defaultsDeep = require('lodash/defaultsDeep');
17
17
  const isNil = require('lodash/isNil');
18
18
  const isFunction = require('lodash/isFunction');
@@ -867,7 +867,7 @@ class DiskBlockletManager extends BaseBlockletManager {
867
867
  if (checkDockerRunHistory(nodeInfo)) {
868
868
  const needChownDirs = [];
869
869
  await forEachBlocklet(blocklet, (b, { ancestors }) => {
870
- if (!b.meta?.docker?.image) {
870
+ if (!b.meta?.docker?.image || b.meta?.docker?.runBaseScript) {
871
871
  return;
872
872
  }
873
873
  const env = getRuntimeEnvironments(b, nodeEnvironments, ancestors);
@@ -4027,15 +4027,20 @@ class DiskBlockletManager extends BaseBlockletManager {
4027
4027
  const nodeEnvironments = await states.node.getEnvironments();
4028
4028
 
4029
4029
  const runMigration = async (b) => {
4030
+ if (!componentDids.includes(b.meta.did)) {
4031
+ return;
4032
+ }
4030
4033
  const nextEnv = getRuntimeEnvironments(b, nodeEnvironments, [blocklet]);
4031
4034
  const subNeedRunDocker = await checkNeedRunDocker(b.meta, nextEnv, nodeInfo);
4032
4035
  const hookArgs = getHookArgs(b);
4033
4036
 
4037
+ const scriptsDir = path.join(b.env.appDir, 'migration');
4038
+ const scripts = await getMigrationScripts(scriptsDir, oldVersions[b.meta.did]);
4039
+ if (!scripts.length) {
4040
+ return;
4041
+ }
4034
4042
  try {
4035
4043
  if (subNeedRunDocker) {
4036
- const scriptsDir = path.join(b.env.appDir, 'migration');
4037
- const scripts = await getMigrationScripts(scriptsDir);
4038
-
4039
4044
  if (scripts.length) {
4040
4045
  await dockerExec({
4041
4046
  blocklet,
@@ -19,8 +19,6 @@ const {
19
19
  getBlockletStatus,
20
20
  } = require('../../../util/blocklet');
21
21
  const { resolveDownload, resolveDiffDownload, downloadFromUpload } = require('../../downloader/resolve-download');
22
- const checkDockerRunHistory = require('../../../util/docker/check-docker-run-history');
23
- const { dockerExecChown } = require('../../../util/docker/docker-exec-chown');
24
22
 
25
23
  const installComponentFromUpload = async ({
26
24
  rootDid,
@@ -174,12 +172,6 @@ const diff = async ({ did, hashFiles: clientFiles, rootDid: inputRootDid, states
174
172
  const { version } = state.meta;
175
173
  const bundleDir = getBundleDir(manager.installDir, state.meta);
176
174
 
177
- // TODO,reduce chmod 这个需要在所有需要部署的机器都升级并且运行了一段时间后才可以移除
178
- const nodeInfo = await states.node.read();
179
- if (checkDockerRunHistory(nodeInfo)) {
180
- await dockerExecChown({ name: `${rootDid}-${did}-deploy`, dirs: [bundleDir] });
181
- }
182
-
183
175
  const { addSet, changeSet, deleteSet } = await getDiffFiles(clientFiles, bundleDir);
184
176
 
185
177
  logger.info('Diff files', {
@@ -33,7 +33,7 @@ const {
33
33
  } = require('@blocklet/constant');
34
34
  const { update: updateMetaFile } = require('@blocklet/meta/lib/file');
35
35
  const getBlockletWallet = require('@blocklet/meta/lib/wallet');
36
- const cloneDeep = require('lodash/cloneDeep');
36
+ const cloneDeep = require('@abtnode/util/lib/deep-clone');
37
37
 
38
38
  const { getBlockletDomainGroupName } = require('../../../util/router');
39
39
  const { getBundleDir } = require('../../../util/blocklet');
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable no-await-in-loop */
2
- const cloneDeep = require('lodash/cloneDeep');
2
+ const cloneDeep = require('@abtnode/util/lib/deep-clone');
3
3
 
4
4
  const logger = require('@abtnode/logger')('@abtnode/core:upgrade-component');
5
5
 
@@ -1338,10 +1338,11 @@ const fs = __nccwpck_require__(9896);
1338
1338
  const semver = __nccwpck_require__(2088);
1339
1339
  const uniqBy = __nccwpck_require__(813);
1340
1340
 
1341
- const getMigrationScripts = (scriptsDir) => {
1341
+ const getMigrationScripts = (scriptsDir, version) => {
1342
1342
  if (!fs.existsSync(scriptsDir)) {
1343
1343
  return [];
1344
1344
  }
1345
+
1345
1346
  const files = fs.readdirSync(scriptsDir);
1346
1347
  const scripts = files
1347
1348
  .filter((x) => semver.coerce(x))
@@ -1350,23 +1351,18 @@ const getMigrationScripts = (scriptsDir) => {
1350
1351
  version: semver.coerce(x).version,
1351
1352
  }));
1352
1353
 
1353
- const sorted = scripts.sort((a, b) => {
1354
- if (semver.gt(a.version, b.version)) {
1355
- return 1;
1356
- }
1357
- if (semver.lt(a.version, b.version)) {
1358
- return -1;
1359
- }
1360
-
1361
- return 0;
1362
- });
1354
+ const sorted = scripts.sort((a, b) => semver.compare(a.version, b.version));
1363
1355
 
1364
1356
  const uniq = uniqBy(sorted, (x) => x.version);
1365
1357
  if (uniq.length !== sorted.length) {
1366
1358
  throw new Error('Migration scripts with same version is not allowed');
1367
1359
  }
1368
1360
 
1369
- return sorted;
1361
+ if (version && typeof version === 'string') {
1362
+ return uniq.filter((x) => semver.gte(x.version, version));
1363
+ }
1364
+
1365
+ return uniq;
1370
1366
  };
1371
1367
 
1372
1368
  module.exports = getMigrationScripts;
@@ -38719,7 +38715,7 @@ module.exports = require("zlib");
38719
38715
  /***/ ((module) => {
38720
38716
 
38721
38717
  "use strict";
38722
- module.exports = /*#__PURE__*/JSON.parse('{"name":"@abtnode/core","publishConfig":{"access":"public"},"version":"1.16.40","description":"","main":"lib/index.js","files":["lib"],"scripts":{"lint":"eslint tests lib --ignore-pattern \'tests/assets/*\'","lint:fix":"eslint --fix tests lib","test":"node tools/jest.js","coverage":"npm run test -- --coverage"},"keywords":[],"author":"wangshijun <wangshijun2010@gmail.com> (http://github.com/wangshijun)","license":"Apache-2.0","dependencies":{"@abtnode/analytics":"1.16.40","@abtnode/auth":"1.16.40","@abtnode/certificate-manager":"1.16.40","@abtnode/constant":"1.16.40","@abtnode/cron":"1.16.40","@abtnode/docker-utils":"1.16.40","@abtnode/logger":"1.16.40","@abtnode/models":"1.16.40","@abtnode/queue":"1.16.40","@abtnode/rbac":"1.16.40","@abtnode/router-provider":"1.16.40","@abtnode/static-server":"1.16.40","@abtnode/timemachine":"1.16.40","@abtnode/util":"1.16.40","@arcblock/did":"1.19.15","@arcblock/did-auth":"1.19.15","@arcblock/did-ext":"^1.19.15","@arcblock/did-motif":"^1.1.13","@arcblock/did-util":"1.19.15","@arcblock/event-hub":"1.19.15","@arcblock/jwt":"^1.19.15","@arcblock/pm2-events":"^0.0.5","@arcblock/validator":"^1.19.15","@arcblock/vc":"1.19.15","@blocklet/constant":"1.16.40","@blocklet/did-space-js":"^1.0.37","@blocklet/env":"1.16.40","@blocklet/meta":"1.16.40","@blocklet/resolver":"1.16.40","@blocklet/sdk":"1.16.40","@blocklet/store":"1.16.40","@fidm/x509":"^1.2.1","@ocap/mcrypto":"1.19.15","@ocap/util":"1.19.15","@ocap/wallet":"1.19.15","@slack/webhook":"^5.0.4","archiver":"^7.0.1","axios":"^1.7.9","axon":"^2.0.3","chalk":"^4.1.2","cross-spawn":"^7.0.3","dayjs":"^1.11.13","deep-diff":"^1.0.2","detect-port":"^1.5.1","envfile":"^7.1.0","escape-string-regexp":"^4.0.0","fast-glob":"^3.3.2","filesize":"^10.1.1","flat":"^5.0.2","fs-extra":"^11.2.0","get-port":"^5.1.1","hasha":"^5.2.2","is-base64":"^1.1.0","is-cidr":"4","is-ip":"3","is-url":"^1.2.4","joi":"17.12.2","joi-extension-semver":"^5.0.0","js-yaml":"^4.1.0","kill-port":"^2.0.1","lodash":"^4.17.21","lru-cache":"^11.0.2","node-stream-zip":"^1.15.0","p-all":"^3.0.0","p-limit":"^3.1.0","p-map":"^4.0.0","p-retry":"^4.6.2","rate-limiter-flexible":"^5.0.5","read-last-lines":"^1.8.0","semver":"^7.6.3","sequelize":"^6.35.0","shelljs":"^0.8.5","ssri":"^8.0.1","stream-throttle":"^0.1.3","stream-to-promise":"^3.0.0","systeminformation":"^5.23.3","tail":"^2.2.4","tar":"^6.1.11","transliteration":"^2.3.5","ua-parser-js":"^1.0.2","ufo":"^1.5.3","uuid":"^9.0.1","valid-url":"^1.0.9","which":"^2.0.2","xbytes":"^1.8.0"},"devDependencies":{"expand-tilde":"^2.0.2","express":"^4.18.2","jest":"^29.7.0","unzipper":"^0.10.11"},"gitHead":"e5764f753181ed6a7c615cd4fc6682aacf0cb7cd"}');
38718
+ module.exports = /*#__PURE__*/JSON.parse('{"name":"@abtnode/core","publishConfig":{"access":"public"},"version":"1.16.41","description":"","main":"lib/index.js","files":["lib"],"scripts":{"lint":"eslint tests lib --ignore-pattern \'tests/assets/*\'","lint:fix":"eslint --fix tests lib","test":"node tools/jest.js","coverage":"npm run test -- --coverage"},"keywords":[],"author":"wangshijun <wangshijun2010@gmail.com> (http://github.com/wangshijun)","license":"Apache-2.0","dependencies":{"@abtnode/analytics":"1.16.41","@abtnode/auth":"1.16.41","@abtnode/certificate-manager":"1.16.41","@abtnode/constant":"1.16.41","@abtnode/cron":"1.16.41","@abtnode/docker-utils":"1.16.41","@abtnode/logger":"1.16.41","@abtnode/models":"1.16.41","@abtnode/queue":"1.16.41","@abtnode/rbac":"1.16.41","@abtnode/router-provider":"1.16.41","@abtnode/static-server":"1.16.41","@abtnode/timemachine":"1.16.41","@abtnode/util":"1.16.41","@arcblock/did":"1.19.15","@arcblock/did-auth":"1.19.15","@arcblock/did-ext":"^1.19.16","@arcblock/did-motif":"^1.1.13","@arcblock/did-util":"1.19.15","@arcblock/event-hub":"1.19.15","@arcblock/jwt":"^1.19.16","@arcblock/pm2-events":"^0.0.5","@arcblock/validator":"^1.19.16","@arcblock/vc":"1.19.15","@blocklet/constant":"1.16.41","@blocklet/did-space-js":"^1.0.38","@blocklet/env":"1.16.41","@blocklet/meta":"1.16.41","@blocklet/resolver":"1.16.41","@blocklet/sdk":"1.16.41","@blocklet/store":"1.16.41","@fidm/x509":"^1.2.1","@ocap/mcrypto":"1.19.15","@ocap/util":"1.19.15","@ocap/wallet":"1.19.15","@slack/webhook":"^5.0.4","archiver":"^7.0.1","axios":"^1.7.9","axon":"^2.0.3","chalk":"^4.1.2","cross-spawn":"^7.0.3","dayjs":"^1.11.13","deep-diff":"^1.0.2","detect-port":"^1.5.1","envfile":"^7.1.0","escape-string-regexp":"^4.0.0","fast-glob":"^3.3.2","filesize":"^10.1.1","flat":"^5.0.2","fs-extra":"^11.2.0","get-port":"^5.1.1","hasha":"^5.2.2","is-base64":"^1.1.0","is-cidr":"4","is-ip":"3","is-url":"^1.2.4","joi":"17.12.2","joi-extension-semver":"^5.0.0","js-yaml":"^4.1.0","kill-port":"^2.0.1","lodash":"^4.17.21","lru-cache":"^11.0.2","node-stream-zip":"^1.15.0","p-all":"^3.0.0","p-limit":"^3.1.0","p-map":"^4.0.0","p-retry":"^4.6.2","rate-limiter-flexible":"^5.0.5","read-last-lines":"^1.8.0","semver":"^7.6.3","sequelize":"^6.35.0","shelljs":"^0.8.5","ssri":"^8.0.1","stream-throttle":"^0.1.3","stream-to-promise":"^3.0.0","systeminformation":"^5.23.3","tail":"^2.2.4","tar":"^6.1.11","transliteration":"^2.3.5","ua-parser-js":"^1.0.2","ufo":"^1.5.3","uuid":"^9.0.1","valid-url":"^1.0.9","which":"^2.0.2","xbytes":"^1.8.0"},"devDependencies":{"expand-tilde":"^2.0.2","express":"^4.18.2","jest":"^29.7.0","unzipper":"^0.10.11"},"gitHead":"e5764f753181ed6a7c615cd4fc6682aacf0cb7cd"}');
38723
38719
 
38724
38720
  /***/ }),
38725
38721
 
@@ -1,4 +1,4 @@
1
- const cloneDeep = require('lodash/cloneDeep');
1
+ const cloneDeep = require('@abtnode/util/lib/deep-clone');
2
2
 
3
3
  const _formatResponseHeaderPolicy = (data) => {
4
4
  const result = cloneDeep(data);
@@ -1,4 +1,4 @@
1
- const cloneDeep = require('lodash/cloneDeep');
1
+ const cloneDeep = require('@abtnode/util/lib/deep-clone');
2
2
  const isEmpty = require('lodash/isEmpty');
3
3
  const last = require('lodash/last');
4
4
  const { schemas } = require('@arcblock/validator');
@@ -1,6 +1,6 @@
1
1
  const { readFileSync, outputJson } = require('fs-extra');
2
2
  const isEmpty = require('lodash/isEmpty');
3
- const cloneDeep = require('lodash/cloneDeep');
3
+ const cloneDeep = require('@abtnode/util/lib/deep-clone');
4
4
  const { join } = require('path');
5
5
  const security = require('@abtnode/util/lib/security');
6
6
 
@@ -1,5 +1,5 @@
1
1
  const { outputJson, createWriteStream, createReadStream, ensureDir } = require('fs-extra');
2
- const cloneDeep = require('lodash/cloneDeep');
2
+ const cloneDeep = require('@abtnode/util/lib/deep-clone');
3
3
  const { join, basename, dirname } = require('path');
4
4
  const { BLOCKLET_CONFIGURABLE_KEY } = require('@blocklet/constant');
5
5
  const isEmpty = require('lodash/isEmpty');
@@ -1,6 +1,6 @@
1
1
  const { removeSync, outputJsonSync, readJSONSync } = require('fs-extra');
2
2
  const isEmpty = require('lodash/isEmpty');
3
- const cloneDeep = require('lodash/cloneDeep');
3
+ const cloneDeep = require('@abtnode/util/lib/deep-clone');
4
4
  const { join } = require('path');
5
5
  const security = require('@abtnode/util/lib/security');
6
6
  const { BLOCKLET_CONFIGURABLE_KEY } = require('@blocklet/constant');
@@ -1,5 +1,4 @@
1
1
  const get = require('lodash/get');
2
- const cloneDeep = require('lodash/cloneDeep');
3
2
  const { EventEmitter } = require('events');
4
3
  const { wipeSensitiveData, getDisplayName } = require('@blocklet/meta/lib/util');
5
4
  const logger = require('@abtnode/logger')('@abtnode/core:event');
@@ -119,11 +118,11 @@ module.exports = ({
119
118
  const onEvent = (name, data, disabledNodeListener = false) => {
120
119
  let safeData = data;
121
120
  if (get(data, 'meta.did', '')) {
122
- safeData = wipeSensitiveData(cloneDeep(data));
121
+ safeData = wipeSensitiveData(data);
123
122
  }
124
123
 
125
124
  if (get(safeData, 'blocklet.meta.did', '')) {
126
- safeData.blocklet = wipeSensitiveData(cloneDeep(safeData.blocklet));
125
+ safeData.blocklet = wipeSensitiveData(safeData.blocklet);
127
126
  }
128
127
 
129
128
  logger.debug('proxy event to event hub', { name });
@@ -3,7 +3,7 @@ const fs = require('fs');
3
3
  const path = require('path');
4
4
  const crypto = require('crypto');
5
5
  const yaml = require('js-yaml');
6
- const cloneDeep = require('lodash/cloneDeep');
6
+ const cloneDeep = require('@abtnode/util/lib/deep-clone');
7
7
  const security = require('@abtnode/util/lib/security');
8
8
 
9
9
  module.exports = async ({ states, configFile, dataDir }) => {
@@ -2,7 +2,7 @@
2
2
  const fs = require('fs');
3
3
  const path = require('path');
4
4
  const uniq = require('lodash/uniq');
5
- const cloneDeep = require('lodash/cloneDeep');
5
+ const cloneDeep = require('@abtnode/util/lib/deep-clone');
6
6
  const security = require('@abtnode/util/lib/security');
7
7
  const { forEachBlocklet } = require('@blocklet/meta/lib/util');
8
8
 
@@ -1,6 +1,6 @@
1
1
  const { EventEmitter } = require('events');
2
2
 
3
- const cloneDeep = require('lodash/cloneDeep');
3
+ const cloneDeep = require('@abtnode/util/lib/deep-clone');
4
4
  const pLimit = require('p-limit');
5
5
  const dayjs = require('@abtnode/util/lib/dayjs');
6
6
  const { forEachBlocklet, isGatewayBlocklet, hasStartEngine } = require('@blocklet/meta/lib/util');
@@ -1,7 +1,7 @@
1
1
  const { EventEmitter } = require('events');
2
2
  const dayjs = require('@abtnode/util/lib/dayjs');
3
3
  const pick = require('lodash/pick');
4
- const cloneDeep = require('lodash/cloneDeep');
4
+ const cloneDeep = require('@abtnode/util/lib/deep-clone');
5
5
 
6
6
  const { PROCESS_NAME_DAEMON, PROCESS_NAME_SERVICE, EVENTS } = require('@abtnode/constant');
7
7
  const defaultLogger = require('@abtnode/logger')('@abtnode/util:node-runtime-info');
@@ -7,7 +7,7 @@ const UUID = require('uuid');
7
7
  const dayjs = require('@abtnode/util/lib/dayjs');
8
8
  const isUrl = require('is-url');
9
9
  const get = require('lodash/get');
10
- const cloneDeep = require('lodash/cloneDeep');
10
+ const cloneDeep = require('@abtnode/util/lib/deep-clone');
11
11
  const groupBy = require('lodash/groupBy');
12
12
  const uniq = require('lodash/uniq');
13
13
  const isEqual = require('lodash/isEqual');
@@ -3,7 +3,7 @@ const uniq = require('lodash/uniq');
3
3
  const throttle = require('lodash/throttle');
4
4
  const pick = require('lodash/pick');
5
5
  const isEqual = require('lodash/isEqual');
6
- const cloneDeep = require('lodash/cloneDeep');
6
+ const cloneDeep = require('@abtnode/util/lib/deep-clone');
7
7
  const {
8
8
  DOMAIN_FOR_DEFAULT_SITE,
9
9
  DOMAIN_FOR_IP_SITE_REGEXP,
@@ -15,7 +15,7 @@ const { EventEmitter } = require('events');
15
15
  const uuid = require('uuid');
16
16
  const isUrl = require('is-url');
17
17
  const { joinURL } = require('ufo');
18
- const cloneDeep = require('lodash/cloneDeep');
18
+ const cloneDeep = require('@abtnode/util/lib/deep-clone');
19
19
  const normalizePathPrefix = require('@abtnode/util/lib/normalize-path-prefix');
20
20
  const logger = require('@abtnode/logger')('@abtnode/core:router:manager');
21
21
  const { getProvider } = require('@abtnode/router-provider');
@@ -5,7 +5,7 @@
5
5
  const pick = require('lodash/pick');
6
6
  const omit = require('lodash/omit');
7
7
  const uniq = require('lodash/uniq');
8
- const cloneDeep = require('lodash/cloneDeep');
8
+ const cloneDeep = require('@abtnode/util/lib/deep-clone');
9
9
  const detectPort = require('detect-port');
10
10
  const Lock = require('@abtnode/util/lib/lock');
11
11
  const security = require('@abtnode/util/lib/security');
@@ -1,4 +1,4 @@
1
- const cloneDeep = require('lodash/cloneDeep');
1
+ const cloneDeep = require('@abtnode/util/lib/deep-clone');
2
2
  const pickBy = require('lodash/pickBy');
3
3
  const get = require('lodash/get');
4
4
  const pick = require('lodash/pick');
@@ -125,7 +125,21 @@ class User extends ExtendBase {
125
125
  await Promise.all(
126
126
  (get(cloneData, 'passports') || [])
127
127
  .filter((x) => x.id)
128
- .map((x) => this.passport.upsert({ id: x.id }, { ...x, userDid: did }))
128
+ .map(({ id, ...x }) => {
129
+ // HACK: 原来是直接使用 upsert 方法,但会出现 validation error,暂时先改成有查询到旧的值,使用 update 方法
130
+ return this.passport
131
+ .findOne({ id })
132
+ .then((passport) => {
133
+ if (passport) {
134
+ return this.passport.update({ id }, { ...x, userDid: did });
135
+ }
136
+ return this.passport.upsert({ id }, { ...x, userDid: did });
137
+ })
138
+ .catch((err) => {
139
+ console.error(`Failed to process passport ${id}:`, err);
140
+ throw err;
141
+ });
142
+ })
129
143
  );
130
144
  await Promise.all(
131
145
  (get(cloneData, 'connectedAccounts') || [])
@@ -2,10 +2,11 @@ const fs = require('fs');
2
2
  const semver = require('semver');
3
3
  const uniqBy = require('lodash/uniqBy');
4
4
 
5
- const getMigrationScripts = (scriptsDir) => {
5
+ const getMigrationScripts = (scriptsDir, version) => {
6
6
  if (!fs.existsSync(scriptsDir)) {
7
7
  return [];
8
8
  }
9
+
9
10
  const files = fs.readdirSync(scriptsDir);
10
11
  const scripts = files
11
12
  .filter((x) => semver.coerce(x))
@@ -14,23 +15,18 @@ const getMigrationScripts = (scriptsDir) => {
14
15
  version: semver.coerce(x).version,
15
16
  }));
16
17
 
17
- const sorted = scripts.sort((a, b) => {
18
- if (semver.gt(a.version, b.version)) {
19
- return 1;
20
- }
21
- if (semver.lt(a.version, b.version)) {
22
- return -1;
23
- }
24
-
25
- return 0;
26
- });
18
+ const sorted = scripts.sort((a, b) => semver.compare(a.version, b.version));
27
19
 
28
20
  const uniq = uniqBy(sorted, (x) => x.version);
29
21
  if (uniq.length !== sorted.length) {
30
22
  throw new Error('Migration scripts with same version is not allowed');
31
23
  }
32
24
 
33
- return sorted;
25
+ if (version && typeof version === 'string') {
26
+ return uniq.filter((x) => semver.gte(x.version, version));
27
+ }
28
+
29
+ return uniq;
34
30
  };
35
31
 
36
32
  module.exports = getMigrationScripts;
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "1.16.41",
6
+ "version": "1.16.42-beta-20250402-131159-7647e64d",
7
7
  "description": "",
8
8
  "main": "lib/index.js",
9
9
  "files": [
@@ -19,37 +19,37 @@
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.41",
23
- "@abtnode/auth": "1.16.41",
24
- "@abtnode/certificate-manager": "1.16.41",
25
- "@abtnode/constant": "1.16.41",
26
- "@abtnode/cron": "1.16.41",
27
- "@abtnode/docker-utils": "1.16.41",
28
- "@abtnode/logger": "1.16.41",
29
- "@abtnode/models": "1.16.41",
30
- "@abtnode/queue": "1.16.41",
31
- "@abtnode/rbac": "1.16.41",
32
- "@abtnode/router-provider": "1.16.41",
33
- "@abtnode/static-server": "1.16.41",
34
- "@abtnode/timemachine": "1.16.41",
35
- "@abtnode/util": "1.16.41",
22
+ "@abtnode/analytics": "1.16.42-beta-20250402-131159-7647e64d",
23
+ "@abtnode/auth": "1.16.42-beta-20250402-131159-7647e64d",
24
+ "@abtnode/certificate-manager": "1.16.42-beta-20250402-131159-7647e64d",
25
+ "@abtnode/constant": "1.16.42-beta-20250402-131159-7647e64d",
26
+ "@abtnode/cron": "1.16.42-beta-20250402-131159-7647e64d",
27
+ "@abtnode/docker-utils": "1.16.42-beta-20250402-131159-7647e64d",
28
+ "@abtnode/logger": "1.16.42-beta-20250402-131159-7647e64d",
29
+ "@abtnode/models": "1.16.42-beta-20250402-131159-7647e64d",
30
+ "@abtnode/queue": "1.16.42-beta-20250402-131159-7647e64d",
31
+ "@abtnode/rbac": "1.16.42-beta-20250402-131159-7647e64d",
32
+ "@abtnode/router-provider": "1.16.42-beta-20250402-131159-7647e64d",
33
+ "@abtnode/static-server": "1.16.42-beta-20250402-131159-7647e64d",
34
+ "@abtnode/timemachine": "1.16.42-beta-20250402-131159-7647e64d",
35
+ "@abtnode/util": "1.16.42-beta-20250402-131159-7647e64d",
36
36
  "@arcblock/did": "1.19.15",
37
37
  "@arcblock/did-auth": "1.19.15",
38
- "@arcblock/did-ext": "^1.19.15",
38
+ "@arcblock/did-ext": "^1.19.16",
39
39
  "@arcblock/did-motif": "^1.1.13",
40
40
  "@arcblock/did-util": "1.19.15",
41
41
  "@arcblock/event-hub": "1.19.15",
42
- "@arcblock/jwt": "^1.19.15",
42
+ "@arcblock/jwt": "^1.19.16",
43
43
  "@arcblock/pm2-events": "^0.0.5",
44
- "@arcblock/validator": "^1.19.15",
44
+ "@arcblock/validator": "^1.19.16",
45
45
  "@arcblock/vc": "1.19.15",
46
- "@blocklet/constant": "1.16.41",
47
- "@blocklet/did-space-js": "^1.0.37",
48
- "@blocklet/env": "1.16.41",
49
- "@blocklet/meta": "1.16.41",
50
- "@blocklet/resolver": "1.16.41",
51
- "@blocklet/sdk": "1.16.41",
52
- "@blocklet/store": "1.16.41",
46
+ "@blocklet/constant": "1.16.42-beta-20250402-131159-7647e64d",
47
+ "@blocklet/did-space-js": "^1.0.38",
48
+ "@blocklet/env": "1.16.42-beta-20250402-131159-7647e64d",
49
+ "@blocklet/meta": "1.16.42-beta-20250402-131159-7647e64d",
50
+ "@blocklet/resolver": "1.16.42-beta-20250402-131159-7647e64d",
51
+ "@blocklet/sdk": "1.16.42-beta-20250402-131159-7647e64d",
52
+ "@blocklet/store": "1.16.42-beta-20250402-131159-7647e64d",
53
53
  "@fidm/x509": "^1.2.1",
54
54
  "@ocap/mcrypto": "1.19.15",
55
55
  "@ocap/util": "1.19.15",
@@ -111,5 +111,5 @@
111
111
  "jest": "^29.7.0",
112
112
  "unzipper": "^0.10.11"
113
113
  },
114
- "gitHead": "54be9488459ae9a3544648d495e6204f9fad493a"
114
+ "gitHead": "f90e7dc430b14d99a8861d972967fb4b4c83c8ea"
115
115
  }