@abtnode/core 1.16.8-beta-186fd5aa → 1.16.8-next-c66e39c7

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.
Files changed (38) hide show
  1. package/lib/api/team.js +42 -62
  2. package/lib/blocklet/manager/disk.js +2 -8
  3. package/lib/blocklet/manager/helper/migrate-application-to-struct-v2.js +5 -5
  4. package/lib/blocklet/storage/backup/blocklet-extras.js +2 -2
  5. package/lib/blocklet/storage/backup/blocklet.js +2 -2
  6. package/lib/index.js +17 -16
  7. package/lib/migrations/1.16.8-component-title.js +1 -1
  8. package/lib/migrations/1.6.9-update-node-info-and-certificate.js +1 -1
  9. package/lib/migrations/index.js +190 -40
  10. package/lib/monitor/node-runtime-monitor.js +2 -29
  11. package/lib/router/helper.js +6 -6
  12. package/lib/router/manager.js +35 -36
  13. package/lib/states/access-key.js +3 -20
  14. package/lib/states/audit-log.js +7 -8
  15. package/lib/states/backup.js +11 -59
  16. package/lib/states/base.js +13 -5
  17. package/lib/states/blocklet-extras.js +11 -8
  18. package/lib/states/blocklet.js +148 -222
  19. package/lib/states/cache.js +3 -21
  20. package/lib/states/connect-account.js +8 -0
  21. package/lib/states/index.js +28 -18
  22. package/lib/states/job.js +8 -0
  23. package/lib/states/migration.js +3 -4
  24. package/lib/states/node.js +104 -145
  25. package/lib/states/notification.js +18 -40
  26. package/lib/states/passport.js +8 -0
  27. package/lib/states/session.js +28 -44
  28. package/lib/states/site.js +32 -39
  29. package/lib/states/user.js +169 -378
  30. package/lib/states/webhook.js +5 -7
  31. package/lib/team/manager.js +108 -116
  32. package/lib/util/blocklet.js +0 -1
  33. package/lib/util/index.js +3 -0
  34. package/lib/util/queue.js +14 -20
  35. package/lib/util/ready.js +1 -1
  36. package/lib/webhook/index.js +6 -4
  37. package/package.json +19 -18
  38. package/lib/states/challenge.js +0 -58
package/lib/api/team.js CHANGED
@@ -25,7 +25,7 @@ const {
25
25
  } = require('@abtnode/auth/lib/passport');
26
26
  const { getPassportStatusEndpoint } = require('@abtnode/auth/lib/auth');
27
27
  const getBlockletInfo = require('@blocklet/meta/lib/info');
28
- const { parseUserAvatar } = require('@abtnode/util/lib/user-avatar');
28
+ const { parseUserAvatar } = require('@abtnode/util/lib/user');
29
29
  const { getChainClient } = require('@abtnode/util/lib/get-chain-client');
30
30
  const { getWalletDid } = require('@blocklet/meta/lib/did-utils');
31
31
 
@@ -85,7 +85,7 @@ const sendPassportVcNotification = ({ userDid, appWallet: wallet, locale, vc })
85
85
  };
86
86
 
87
87
  const formatTransferData = (data) => ({
88
- transferId: data._id,
88
+ transferId: data.id,
89
89
  remark: data.remark || '',
90
90
  expireDate: new Date(data.expireDate).toString(),
91
91
  appDid: data.appDid,
@@ -119,13 +119,12 @@ class TeamAPI extends EventEmitter {
119
119
  if (teamDid !== nodeInfo.did) {
120
120
  throw new Error('Cannot add user of owner role');
121
121
  }
122
-
123
122
  if (await state.count({ role: ROLES.OWNER })) {
124
123
  throw new Error('The owner already exists');
125
124
  }
126
125
  }
127
126
 
128
- const { _action, ...doc } = await state.login(user);
127
+ const { _action, ...doc } = await state.loginUser(user);
129
128
  if (_action === 'update') {
130
129
  logger.info('user updated successfully', { teamDid, userDid: user.did });
131
130
  this.emit(EVENTS.USER_UPDATED, { teamDid, user: doc });
@@ -162,7 +161,7 @@ class TeamAPI extends EventEmitter {
162
161
  }
163
162
  }
164
163
 
165
- const doc = await state.add(user);
164
+ const doc = await state.addUser(user);
166
165
 
167
166
  logger.info('user added successfully', { teamDid, userDid: user.did, userPk: user.pk, userName: user.fullName });
168
167
 
@@ -183,7 +182,7 @@ class TeamAPI extends EventEmitter {
183
182
  return doc;
184
183
  }
185
184
 
186
- async getUsers({ teamDid, query, paging: inputPaging, sort, dids, sourceIds }) {
185
+ async getUsers({ teamDid, query, paging: inputPaging, sort, dids }) {
187
186
  const state = await this.getUserState(teamDid);
188
187
 
189
188
  if (inputPaging?.pageSize > MAX_USER_PAGE_SIZE) {
@@ -205,14 +204,6 @@ class TeamAPI extends EventEmitter {
205
204
  pageCount: 1,
206
205
  page: 1,
207
206
  };
208
- } else if (sourceIds) {
209
- list = await state.getUsersBySourceIds({ query, sourceIds });
210
- paging = {
211
- total: list.length,
212
- pageSize: sourceIds.length,
213
- pageCount: 1,
214
- page: 1,
215
- };
216
207
  } else {
217
208
  const doc = await state.getUsers({ query, sort, paging: { pageSize: 20, ...inputPaging } });
218
209
  list = doc.list;
@@ -239,8 +230,8 @@ class TeamAPI extends EventEmitter {
239
230
  'avatar',
240
231
  'locale',
241
232
  // oauth relate fields
242
- 'source',
243
- 'extraConfigs',
233
+ 'sourceProvider',
234
+ 'connectedAccounts',
244
235
  ])
245
236
  // eslint-disable-next-line function-paren-newline
246
237
  ),
@@ -250,36 +241,44 @@ class TeamAPI extends EventEmitter {
250
241
 
251
242
  async getUsersCount({ teamDid }) {
252
243
  const state = await this.getUserState(teamDid);
253
-
254
244
  return state.count();
255
245
  }
256
246
 
257
247
  async getUsersCountPerRole({ teamDid }) {
258
248
  const roles = await this.getRoles({ teamDid });
259
-
260
249
  const state = await this.getUserState(teamDid);
250
+ const names = ['$all', ...roles.map((x) => x.name), '$none'];
251
+ return Promise.all(
252
+ names.map(async (name) => {
253
+ const count = await state.countByPassport({ name, status: PASSPORT_STATUS.VALID });
254
+ return { key: name, value: count };
255
+ })
256
+ );
257
+ }
261
258
 
262
- const res = [];
263
-
264
- const all = await state.count();
265
- res.push({ key: '$all', value: all });
266
-
267
- for (const { name } of roles) {
268
- // eslint-disable-next-line no-await-in-loop
269
- const count = await state.count({ passports: { $elemMatch: { name, status: PASSPORT_STATUS.VALID } } });
270
- res.push({ key: name, value: count });
271
- }
259
+ async getUser({ teamDid, user, options = {} }) {
260
+ const state = await this.getUserState(teamDid);
261
+ return state.getUser(user.did, options);
262
+ }
272
263
 
273
- const none = await state.count({ passports: { $size: 0 } });
274
- res.push({ key: '$none', value: none });
264
+ async getUserByDid({ teamDid, userDid }) {
265
+ const state = await this.getUserState(teamDid);
266
+ return state.getUserByDid(userDid);
267
+ }
275
268
 
276
- return res;
269
+ async isUserValid({ teamDid, userDid }) {
270
+ const state = await this.getUserState(teamDid);
271
+ return state.isUserValid(userDid);
277
272
  }
278
273
 
279
- async getUser({ teamDid, user, options = {} }) {
274
+ async isPassportValid({ teamDid, passportId }) {
280
275
  const state = await this.getUserState(teamDid);
276
+ return state.isPassportValid(passportId);
277
+ }
281
278
 
282
- return state.getUser(user.did, options);
279
+ async isConnectedAccount({ teamDid, did }) {
280
+ const state = await this.getUserState(teamDid);
281
+ return state.isConnectedAccount(did);
283
282
  }
284
283
 
285
284
  async getOwner({ teamDid }) {
@@ -298,12 +297,9 @@ class TeamAPI extends EventEmitter {
298
297
 
299
298
  async updateUser({ teamDid, user }) {
300
299
  const state = await this.getUserState(teamDid);
301
-
302
- const doc = await state.update(user);
303
-
300
+ const doc = await state.updateUser(user.did, user);
304
301
  logger.info('user updated successfully', { teamDid, userDid: user.did });
305
302
  this.emit(EVENTS.USER_UPDATED, { teamDid, user: doc });
306
-
307
303
  return doc;
308
304
  }
309
305
 
@@ -321,9 +317,7 @@ class TeamAPI extends EventEmitter {
321
317
  const state = await this.getUserState(teamDid);
322
318
 
323
319
  await state.remove({ did });
324
-
325
320
  logger.info('user removed successfully', { teamDid, userDid: did });
326
-
327
321
  this.emit(EVENTS.USER_REMOVED, { teamDid, user: { did } });
328
322
 
329
323
  return { did };
@@ -545,15 +539,14 @@ class TeamAPI extends EventEmitter {
545
539
  }
546
540
 
547
541
  const state = await this.getSessionState(teamDid);
548
-
549
- const invitation = await state.findOne({ _id: inviteId, type: 'invite' });
542
+ const invitation = await state.read(inviteId);
550
543
  if (!invitation) {
551
544
  return null;
552
545
  }
553
546
 
554
547
  return {
555
548
  // eslint-disable-next-line no-underscore-dangle
556
- inviteId: invitation._id,
549
+ inviteId: invitation.id,
557
550
  role: invitation.role,
558
551
  remark: invitation.remark,
559
552
  expireDate: new Date(invitation.expireDate).toString(),
@@ -571,7 +564,7 @@ class TeamAPI extends EventEmitter {
571
564
 
572
565
  return invitations.filter(filter || ((x) => x.status !== 'success')).map((d) => ({
573
566
  // eslint-disable-next-line no-underscore-dangle
574
- inviteId: d._id,
567
+ inviteId: d.id,
575
568
  role: d.role,
576
569
  remark: d.remark,
577
570
  expireDate: new Date(d.expireDate).toString(),
@@ -695,7 +688,7 @@ class TeamAPI extends EventEmitter {
695
688
 
696
689
  const state = await this.getSessionState(appDid);
697
690
 
698
- const transfer = await state.findOne({ _id: transferId, type: 'transfer-app-owner' });
691
+ const transfer = await state.read(transferId);
699
692
  if (!transfer) {
700
693
  return null;
701
694
  }
@@ -826,6 +819,7 @@ class TeamAPI extends EventEmitter {
826
819
  }
827
820
  const { id } = await state.start({
828
821
  type: 'passport-issuance',
822
+ key: userDid,
829
823
  expireDate, // session expireDate
830
824
  name: role.name,
831
825
  title: role.title,
@@ -851,14 +845,14 @@ class TeamAPI extends EventEmitter {
851
845
  const query = { type: 'passport-issuance' };
852
846
 
853
847
  if (ownerDid) {
854
- query.ownerDid = ownerDid;
848
+ query.key = ownerDid;
855
849
  }
856
850
 
857
851
  const list = await state.find(query);
858
852
 
859
853
  return list.map((d) => ({
860
854
  // eslint-disable-next-line no-underscore-dangle
861
- id: d._id,
855
+ id: d.id,
862
856
  name: d.name,
863
857
  title: d.title,
864
858
  expireDate: new Date(d.expireDate).toString(),
@@ -869,13 +863,7 @@ class TeamAPI extends EventEmitter {
869
863
 
870
864
  async getPassportIssuance({ teamDid, sessionId }) {
871
865
  const state = await this.getSessionState(teamDid);
872
-
873
- const doc = await state.findOne({ _id: sessionId });
874
-
875
- if (doc) {
876
- doc.id = doc._id;
877
- }
878
-
866
+ const doc = await state.read(sessionId);
879
867
  return doc;
880
868
  }
881
869
 
@@ -1007,11 +995,9 @@ class TeamAPI extends EventEmitter {
1007
995
 
1008
996
  async getPermissions({ teamDid }) {
1009
997
  const rbac = await this.getRBAC(teamDid);
1010
-
1011
998
  const permissions = await rbac.getPermissions();
1012
-
1013
999
  return permissions.map((d) => {
1014
- d.isProtected = d.extra && d.extra.isProtected;
1000
+ d.isProtected = !!(d.extra && d.extra.isProtected);
1015
1001
  return pick(d, ['name', 'description', 'isProtected']);
1016
1002
  });
1017
1003
  }
@@ -1022,7 +1008,6 @@ class TeamAPI extends EventEmitter {
1022
1008
  await validateCreatePermission({ name, description });
1023
1009
 
1024
1010
  const rbac = await this.getRBAC(teamDid);
1025
-
1026
1011
  const added = await rbac.createPermission({ name, description });
1027
1012
 
1028
1013
  return pick(added, ['name', 'description']);
@@ -1034,7 +1019,6 @@ class TeamAPI extends EventEmitter {
1034
1019
  await validateUpdatePermission({ name, description });
1035
1020
 
1036
1021
  const rbac = await this.getRBAC(teamDid);
1037
-
1038
1022
  const state = await rbac.updatePermission({ name, description });
1039
1023
 
1040
1024
  return pick(state, ['name', 'description']);
@@ -1044,7 +1028,6 @@ class TeamAPI extends EventEmitter {
1044
1028
  logger.info('grant', { teamDid, roleName, grantName });
1045
1029
 
1046
1030
  const rbac = await this.getRBAC(teamDid);
1047
-
1048
1031
  await rbac.grant(roleName, grantName);
1049
1032
 
1050
1033
  return true;
@@ -1054,7 +1037,6 @@ class TeamAPI extends EventEmitter {
1054
1037
  logger.info('revoke', { teamDid, roleName, grantName });
1055
1038
 
1056
1039
  const rbac = await this.getRBAC(teamDid);
1057
-
1058
1040
  await rbac.revoke(roleName, grantName);
1059
1041
 
1060
1042
  return true;
@@ -1064,7 +1046,6 @@ class TeamAPI extends EventEmitter {
1064
1046
  logger.info('update grants', { teamDid, roleName, grantNames });
1065
1047
 
1066
1048
  const rbac = await this.getRBAC(teamDid);
1067
-
1068
1049
  const role = await rbac.updateGrants(roleName, grantNames);
1069
1050
 
1070
1051
  return pick(role, ['name', 'grants', 'title', 'description']);
@@ -1076,7 +1057,6 @@ class TeamAPI extends EventEmitter {
1076
1057
  validateReservedRole(name);
1077
1058
 
1078
1059
  const rbac = await this.getRBAC(teamDid);
1079
-
1080
1060
  await rbac.removeRole(name);
1081
1061
 
1082
1062
  return true;
@@ -636,7 +636,6 @@ class BlockletManager extends BaseBlockletManager {
636
636
 
637
637
  /**
638
638
  * FIXME: @linchen support cancel
639
- * FIXME: @wangshijun create audit log for this
640
639
  * @param {import('@abtnode/client').RequestRestoreBlockletInput} input
641
640
  * @memberof BlockletManager
642
641
  */
@@ -1883,7 +1882,6 @@ class BlockletManager extends BaseBlockletManager {
1883
1882
  }
1884
1883
 
1885
1884
  /**
1886
- * FIXME: @wangshijun create audit log for this
1887
1885
  * @param {{
1888
1886
  * blocklet: import('@abtnode/client').BlockletState,
1889
1887
  * context: {
@@ -1916,7 +1914,7 @@ class BlockletManager extends BaseBlockletManager {
1916
1914
  });
1917
1915
  await spacesBackup.backup();
1918
1916
 
1919
- await states.backup.success(backup._id, {
1917
+ await states.backup.success(backup.id, {
1920
1918
  targetUrl: getBackupFilesUrlFromEndpoint(getBackupEndpoint(blocklet?.environments)),
1921
1919
  });
1922
1920
 
@@ -1930,7 +1928,7 @@ class BlockletManager extends BaseBlockletManager {
1930
1928
  blocklet,
1931
1929
  });
1932
1930
  } catch (error) {
1933
- await states.backup.fail(backup._id, {
1931
+ await states.backup.fail(backup.id, {
1934
1932
  message: error?.message,
1935
1933
  });
1936
1934
  this.emit(BlockletEvents.backupProgress, {
@@ -1947,8 +1945,6 @@ class BlockletManager extends BaseBlockletManager {
1947
1945
  }
1948
1946
 
1949
1947
  /**
1950
- * FIXME: @linchen support cancel
1951
- * FIXME: @wangshijun create audit log for this
1952
1948
  * @param {{
1953
1949
  * input: import('@abtnode/client').RequestRestoreBlockletInput,
1954
1950
  * context: Record<string, string>,
@@ -2937,7 +2933,6 @@ class BlockletManager extends BaseBlockletManager {
2937
2933
  }
2938
2934
 
2939
2935
  /**
2940
- * FIXME: @wangshijun create audit log for this
2941
2936
  * @param {{
2942
2937
  * blocklet: import('@abtnode/client').BlockletState,
2943
2938
  * context: {
@@ -2992,7 +2987,6 @@ class BlockletManager extends BaseBlockletManager {
2992
2987
 
2993
2988
  /**
2994
2989
  * FIXME: @linchen support cancel
2995
- * FIXME: @wangshijun create audit log for this
2996
2990
  * @param {import('@abtnode/client').RequestRestoreBlockletInput} input
2997
2991
  * @memberof BlockletManager
2998
2992
  */
@@ -216,7 +216,7 @@ const migrateApplicationToStructV2 = async ({ did, appSk: newAppSk, context = {}
216
216
 
217
217
  const backupBlocklet = await states.blocklet.findOne({ 'meta.did': oldBlocklet.meta.did });
218
218
  const backupExtra = cloneDeep(extraData);
219
- const backupSite = await states.site.findOne({ _id: siteData.id });
219
+ const backupSite = await states.site.findOne({ id: siteData.id });
220
220
 
221
221
  const { appPid } = oldBlocklet;
222
222
 
@@ -447,7 +447,7 @@ const migrateApplicationToStructV2 = async ({ did, appSk: newAppSk, context = {}
447
447
 
448
448
  // update routing
449
449
  await states.site.update(
450
- { _id: siteData.id },
450
+ { id: siteData.id },
451
451
  { $set: { domain: siteData.domain, domainAliases: siteData.domainAliases, rules: siteData.rules } }
452
452
  );
453
453
 
@@ -473,12 +473,12 @@ const migrateApplicationToStructV2 = async ({ did, appSk: newAppSk, context = {}
473
473
  logger.error('Migrate application state failed: ', { did, error });
474
474
 
475
475
  try {
476
- await states.blocklet.remove({ _id: backupBlocklet._id });
476
+ await states.blocklet.remove({ id: backupBlocklet.id });
477
477
  await states.blocklet.remove({ 'meta.did': blockletData.meta.did });
478
478
  await states.blocklet.insert(backupBlocklet);
479
- await states.blockletExtras.remove({ _id: backupExtra._id });
479
+ await states.blockletExtras.remove({ id: backupExtra.id });
480
480
  await states.blockletExtras.insert(backupExtra);
481
- await states.site.remove({ _id: backupSite._id });
481
+ await states.site.remove({ id: backupSite.id });
482
482
  await states.site.insert(backupSite);
483
483
 
484
484
  logger.info('Rollback application state');
@@ -50,8 +50,8 @@ class BlockletExtrasBackup extends BaseBackup {
50
50
  const current = queue.pop();
51
51
 
52
52
  // 删除父 blocklet 的某些数据
53
- if (current._id) {
54
- delete current._id;
53
+ if (current.id) {
54
+ delete current.id;
55
55
  delete current.createdAt;
56
56
  delete current.updatedAt;
57
57
  }
@@ -39,8 +39,8 @@ class BlockletBackup extends BaseBackup {
39
39
  const current = queue.pop();
40
40
 
41
41
  // 父组件才需要删除的属性
42
- if (current._id) {
43
- delete current._id;
42
+ if (current.id) {
43
+ delete current.id;
44
44
  delete current.createdAt;
45
45
  delete current.startedAt;
46
46
  delete current.installedAt;
package/lib/index.js CHANGED
@@ -66,17 +66,21 @@ function ABTNode(options) {
66
66
  options.daemon = false;
67
67
  }
68
68
 
69
+ // 0. ensure data dirs
69
70
  const dataDirs = ensureDataDirs(options.dataDir);
70
71
 
71
- const concurrency = getQueueConcurrencyByMem();
72
+ // 1. initialize storage
73
+ states.init(dataDirs, options);
72
74
 
75
+ // 2. initialize queues
76
+ const concurrency = getQueueConcurrencyByMem();
73
77
  logger.info('startup and installation queue currency', { concurrency });
74
78
 
75
- // Initialize the start queue
79
+ // 2.1 initialize the start queue
76
80
  const startQueue = createQueue({
77
81
  daemon: options.daemon,
82
+ model: states.job,
78
83
  name: 'jobs',
79
- dataDir: dataDirs.core,
80
84
  onJob: async (job) => {
81
85
  if (typeof blockletManager.onJob === 'function') {
82
86
  await blockletManager.onJob(job);
@@ -88,11 +92,11 @@ function ABTNode(options) {
88
92
  },
89
93
  });
90
94
 
91
- // Initialize the install queue
95
+ // 2.2 initialize the install queue
92
96
  const installQueue = createQueue({
93
97
  daemon: options.daemon,
98
+ model: states.job,
94
99
  name: 'install_queue',
95
- dataDir: dataDirs.core,
96
100
  onJob: async (job) => {
97
101
  if (typeof blockletManager.onJob === 'function') {
98
102
  await blockletManager.onJob(job);
@@ -109,8 +113,8 @@ function ABTNode(options) {
109
113
 
110
114
  const backupQueue = createQueue({
111
115
  daemon: options.daemon,
116
+ model: states.job,
112
117
  name: 'backup_queue',
113
- dataDir: dataDirs.core,
114
118
  onJob: async (job) => {
115
119
  if (typeof blockletManager.onJob === 'function') {
116
120
  await blockletManager.onJob(job);
@@ -129,7 +133,7 @@ function ABTNode(options) {
129
133
  const restoreQueue = createQueue({
130
134
  daemon: options.daemon,
131
135
  name: 'restore_queue',
132
- dataDir: dataDirs.core,
136
+ model: states.job,
133
137
  onJob: async (job) => {
134
138
  if (typeof blockletManager.onJob === 'function') {
135
139
  await blockletManager.onJob(job);
@@ -145,27 +149,26 @@ function ABTNode(options) {
145
149
  },
146
150
  });
147
151
 
148
- // Initialize storage
149
- states.init(dataDirs, options);
150
-
151
152
  const certManager = new Cert({
152
153
  maintainerEmail: DEFAULT_CERTIFICATE_EMAIL,
153
154
  dataDir: dataDirs.certManagerModule,
154
155
  states,
155
156
  });
156
157
 
158
+ // 3. init routing manager
157
159
  const routerManager = new RouterManager({ certManager });
158
160
  const routingSnapshot = new RoutingSnapshot({
159
161
  baseDir: dataDirs.core,
160
162
  getRoutingData: async () => {
161
163
  const sites = await states.site.getSites();
162
-
163
164
  return { sites };
164
165
  },
165
166
  });
166
167
 
168
+ // 4. init team manager
167
169
  const teamManager = new TeamManager({ nodeDid: options.nodeDid, dataDirs, states });
168
170
 
171
+ // 5. init blocklet manager
169
172
  const blockletManager = new BlockletManager({
170
173
  dataDirs,
171
174
  startQueue,
@@ -339,6 +342,9 @@ function ABTNode(options) {
339
342
  updateUser: teamAPI.updateUser.bind(teamAPI),
340
343
  updateUserApproval: teamAPI.updateUserApproval.bind(teamAPI),
341
344
  updateUserRole: teamAPI.updateUserRole.bind(teamAPI),
345
+ getUserByDid: teamAPI.getUserByDid.bind(teamAPI),
346
+ isPassportValid: teamAPI.isPassportValid.bind(teamAPI),
347
+ isConnectedAccount: teamAPI.isConnectedAccount.bind(teamAPI),
342
348
 
343
349
  // Access Control
344
350
  getRBAC: (did = options.nodeDid) => teamManager.getRBAC(did),
@@ -377,10 +383,6 @@ function ABTNode(options) {
377
383
  addBlockletStore: teamAPI.addStore.bind(teamAPI),
378
384
  deleteBlockletStore: teamAPI.deleteStore.bind(teamAPI),
379
385
 
380
- // Challenge
381
- generateChallenge: states.challenge.generate.bind(states.challenge),
382
- verifyChallenge: states.challenge.verify.bind(states.challenge),
383
-
384
386
  // Notifications
385
387
  getNotifications: states.notification.findPaginated.bind(states.notification),
386
388
  readNotifications: states.notification.read.bind(states.notification),
@@ -425,7 +427,6 @@ function ABTNode(options) {
425
427
  // Access Key
426
428
  getAccessKeys: states.accessKey.list.bind(states.accessKey),
427
429
  getAccessKey: states.accessKey.detail.bind(states.accessKey),
428
- getAccessKeyByTag: states.accessKey.getAccessKeyByTag.bind(states.accessKey),
429
430
  createAccessKey: states.accessKey.create.bind(states.accessKey),
430
431
  updateAccessKey: states.accessKey.update.bind(states.accessKey),
431
432
  deleteAccessKey: states.accessKey.remove.bind(states.accessKey),
@@ -59,7 +59,7 @@ module.exports = async ({ states, printInfo }) => {
59
59
  }
60
60
 
61
61
  if (shouldUpdate) {
62
- await states.blocklet.update({ _id: app._id }, { $set: { children: app.children } });
62
+ await states.blocklet.update({ id: app.id }, { $set: { children: app.children } });
63
63
  printInfo(`Blocklet in blocklet.db updated: ${app.meta?.title}`);
64
64
  }
65
65
  }
@@ -16,7 +16,7 @@ const updateNodeInfo = async ({ printInfo, states }) => {
16
16
  }
17
17
 
18
18
  if (!isEmpty(data)) {
19
- await states.node.update({ _id: info._id }, { $set: data });
19
+ await states.node.update({ did: info.did }, { $set: data });
20
20
  }
21
21
 
22
22
  printInfo('update did registry and did domain successfully');