@heybox/hb-sdk-protocol 0.8.0-alpha.3 → 0.8.0

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/dist/index.esm.js CHANGED
@@ -40,135 +40,249 @@ const CLOUD_LEADERBOARD_GET_CURRENT_USER_ENTRY_METHOD = 'cloud.leaderboard.getCu
40
40
  const CLOUD_LEADERBOARD_DELETE_CURRENT_USER_ENTRY_METHOD = 'cloud.leaderboard.deleteCurrentUserEntry';
41
41
  const CLOUD_LEADERBOARD_GET_INFO_METHOD = 'cloud.leaderboard.getInfo';
42
42
  const MINI_PROGRAM_PROTOCOL_CAPABILITIES = [
43
- { method: AUTH_LOGIN_METHOD, module: 'auth', capability: AUTH_LOGIN_METHOD, permission: 'auth.login', risk: 'medium' },
44
- { method: USER_GET_INFO_METHOD, module: 'user', capability: USER_GET_INFO_METHOD, permission: 'user.getInfo', risk: 'medium' },
43
+ {
44
+ method: AUTH_LOGIN_METHOD,
45
+ module: 'auth',
46
+ capability: AUTH_LOGIN_METHOD,
47
+ requirement: { kind: 'all', permissions: ['userInfo'] },
48
+ risk: 'medium',
49
+ },
50
+ {
51
+ method: USER_GET_INFO_METHOD,
52
+ module: 'user',
53
+ capability: USER_GET_INFO_METHOD,
54
+ requirement: { kind: 'all', permissions: ['userInfo'] },
55
+ risk: 'medium',
56
+ },
45
57
  {
46
58
  method: USER_REVOKE_AUTHORIZATION_METHOD,
47
59
  module: 'user',
48
60
  capability: USER_REVOKE_AUTHORIZATION_METHOD,
49
- permission: 'user.revokeAuthorization',
61
+ requirement: { kind: 'none' },
50
62
  risk: 'high',
51
63
  },
52
64
  {
53
65
  method: USER_GET_STEAM_GAME_LIST_METHOD,
54
66
  module: 'user',
55
67
  capability: USER_GET_STEAM_GAME_LIST_METHOD,
56
- permission: 'user.platformAccount.steam',
68
+ requirement: { kind: 'all', permissions: ['steamLibrary'] },
57
69
  risk: 'high',
58
70
  },
59
- { method: SHARE_COPY_LINK_METHOD, module: 'share', capability: SHARE_COPY_LINK_METHOD, permission: 'share.copyLink', risk: 'medium' },
60
- { method: SHARE_SHOW_SHARE_MENU_METHOD, module: 'share', capability: SHARE_SHOW_SHARE_MENU_METHOD, permission: 'share.basic', risk: 'low' },
61
- { method: SHARE_SCREENSHOT_METHOD, module: 'share', capability: SHARE_SCREENSHOT_METHOD, permission: 'share.screenshot', risk: 'medium' },
71
+ {
72
+ method: SHARE_COPY_LINK_METHOD,
73
+ module: 'share',
74
+ capability: SHARE_COPY_LINK_METHOD,
75
+ requirement: { kind: 'all', permissions: ['share'] },
76
+ risk: 'medium',
77
+ },
78
+ {
79
+ method: SHARE_SHOW_SHARE_MENU_METHOD,
80
+ module: 'share',
81
+ capability: SHARE_SHOW_SHARE_MENU_METHOD,
82
+ requirement: { kind: 'all', permissions: ['share'] },
83
+ risk: 'low',
84
+ },
85
+ {
86
+ method: SHARE_SCREENSHOT_METHOD,
87
+ module: 'share',
88
+ capability: SHARE_SCREENSHOT_METHOD,
89
+ requirement: { kind: 'all', permissions: ['share'] },
90
+ risk: 'medium',
91
+ },
62
92
  {
63
93
  method: VIEWPORT_GET_WINDOW_INFO_METHOD,
64
94
  module: 'viewport',
65
95
  capability: VIEWPORT_GET_WINDOW_INFO_METHOD,
66
- permission: 'viewport.windowInfo',
96
+ requirement: { kind: 'none' },
67
97
  risk: 'low',
68
98
  },
69
99
  {
70
100
  method: VIEWPORT_SET_NAVIGATION_BAR_STYLE_METHOD,
71
101
  module: 'viewport',
72
102
  capability: VIEWPORT_SET_NAVIGATION_BAR_STYLE_METHOD,
73
- permission: 'viewport.navigationBarStyle',
103
+ requirement: { kind: 'none' },
104
+ risk: 'low',
105
+ },
106
+ {
107
+ method: STORAGE_GET_STORAGE_METHOD,
108
+ module: 'storage',
109
+ capability: STORAGE_GET_STORAGE_METHOD,
110
+ requirement: { kind: 'all', permissions: ['storage'] },
74
111
  risk: 'low',
75
112
  },
76
- { method: STORAGE_GET_STORAGE_METHOD, module: 'storage', capability: STORAGE_GET_STORAGE_METHOD, permission: 'storage.read', risk: 'low' },
77
- { method: STORAGE_SET_STORAGE_METHOD, module: 'storage', capability: STORAGE_SET_STORAGE_METHOD, permission: 'storage.write', risk: 'medium' },
78
- { method: NETWORK_REQUEST_METHOD, module: 'network', capability: NETWORK_REQUEST_METHOD, permission: 'network.request', risk: 'high' },
79
- { method: NETWORK_DOWNLOAD_METHOD, module: 'network', capability: NETWORK_DOWNLOAD_METHOD, permission: 'network.request', risk: 'high' },
80
- { method: FILES_PICK_FILES_METHOD, module: 'files', capability: FILES_PICK_FILES_METHOD, permission: 'files.external', risk: 'high' },
113
+ {
114
+ method: STORAGE_SET_STORAGE_METHOD,
115
+ module: 'storage',
116
+ capability: STORAGE_SET_STORAGE_METHOD,
117
+ requirement: { kind: 'all', permissions: ['storage'] },
118
+ risk: 'medium',
119
+ },
120
+ {
121
+ method: NETWORK_REQUEST_METHOD,
122
+ module: 'network',
123
+ capability: NETWORK_REQUEST_METHOD,
124
+ requirement: { kind: 'all', permissions: ['network'] },
125
+ risk: 'high',
126
+ },
127
+ {
128
+ method: NETWORK_DOWNLOAD_METHOD,
129
+ module: 'network',
130
+ capability: NETWORK_DOWNLOAD_METHOD,
131
+ requirement: { kind: 'all', permissions: ['network', 'filesystem'] },
132
+ risk: 'high',
133
+ },
134
+ {
135
+ method: FILES_PICK_FILES_METHOD,
136
+ module: 'files',
137
+ capability: FILES_PICK_FILES_METHOD,
138
+ requirement: { kind: 'all', permissions: ['filesystem'] },
139
+ risk: 'high',
140
+ },
81
141
  {
82
142
  method: FILES_PICK_DIRECTORY_METHOD,
83
143
  module: 'files',
84
144
  capability: FILES_PICK_DIRECTORY_METHOD,
85
- permission: 'files.external',
145
+ requirement: { kind: 'all', permissions: ['filesystem'] },
146
+ risk: 'high',
147
+ },
148
+ {
149
+ method: FILES_SAVE_FILE_METHOD,
150
+ module: 'files',
151
+ capability: FILES_SAVE_FILE_METHOD,
152
+ requirement: { kind: 'all', permissions: ['filesystem'] },
86
153
  risk: 'high',
87
154
  },
88
- { method: FILES_SAVE_FILE_METHOD, module: 'files', capability: FILES_SAVE_FILE_METHOD, permission: 'files.external', risk: 'high' },
89
- { method: FILE_CREATE_METHOD, module: 'file', capability: FILE_CREATE_METHOD, permission: 'files.access', risk: 'high' },
90
- { method: FILE_REMOVE_METHOD, module: 'file', capability: FILE_REMOVE_METHOD, permission: 'files.access', risk: 'high' },
91
- { method: FILE_EXISTS_METHOD, module: 'file', capability: FILE_EXISTS_METHOD, permission: 'files.access', risk: 'high' },
92
- { method: FILE_READ_TEXT_METHOD, module: 'file', capability: FILE_READ_TEXT_METHOD, permission: 'files.access', risk: 'high' },
93
- { method: FILE_WRITE_TEXT_METHOD, module: 'file', capability: FILE_WRITE_TEXT_METHOD, permission: 'files.access', risk: 'high' },
94
- { method: FILE_READ_BYTES_METHOD, module: 'file', capability: FILE_READ_BYTES_METHOD, permission: 'files.access', risk: 'high' },
95
- { method: FILE_WRITE_BYTES_METHOD, module: 'file', capability: FILE_WRITE_BYTES_METHOD, permission: 'files.access', risk: 'high' },
96
- { method: FILE_STAT_METHOD, module: 'file', capability: FILE_STAT_METHOD, permission: 'files.access', risk: 'high' },
155
+ {
156
+ method: FILE_CREATE_METHOD,
157
+ module: 'file',
158
+ capability: FILE_CREATE_METHOD,
159
+ requirement: { kind: 'all', permissions: ['filesystem'] },
160
+ risk: 'high',
161
+ },
162
+ {
163
+ method: FILE_REMOVE_METHOD,
164
+ module: 'file',
165
+ capability: FILE_REMOVE_METHOD,
166
+ requirement: { kind: 'all', permissions: ['filesystem'] },
167
+ risk: 'high',
168
+ },
169
+ {
170
+ method: FILE_EXISTS_METHOD,
171
+ module: 'file',
172
+ capability: FILE_EXISTS_METHOD,
173
+ requirement: { kind: 'all', permissions: ['filesystem'] },
174
+ risk: 'high',
175
+ },
176
+ {
177
+ method: FILE_READ_TEXT_METHOD,
178
+ module: 'file',
179
+ capability: FILE_READ_TEXT_METHOD,
180
+ requirement: { kind: 'all', permissions: ['filesystem'] },
181
+ risk: 'high',
182
+ },
183
+ {
184
+ method: FILE_WRITE_TEXT_METHOD,
185
+ module: 'file',
186
+ capability: FILE_WRITE_TEXT_METHOD,
187
+ requirement: { kind: 'all', permissions: ['filesystem'] },
188
+ risk: 'high',
189
+ },
190
+ {
191
+ method: FILE_READ_BYTES_METHOD,
192
+ module: 'file',
193
+ capability: FILE_READ_BYTES_METHOD,
194
+ requirement: { kind: 'all', permissions: ['filesystem'] },
195
+ risk: 'high',
196
+ },
197
+ {
198
+ method: FILE_WRITE_BYTES_METHOD,
199
+ module: 'file',
200
+ capability: FILE_WRITE_BYTES_METHOD,
201
+ requirement: { kind: 'all', permissions: ['filesystem'] },
202
+ risk: 'high',
203
+ },
204
+ { method: FILE_STAT_METHOD, module: 'file', capability: FILE_STAT_METHOD, requirement: { kind: 'all', permissions: ['filesystem'] }, risk: 'high' },
97
205
  {
98
206
  method: DIRECTORY_CREATE_METHOD,
99
207
  module: 'directory',
100
208
  capability: DIRECTORY_CREATE_METHOD,
101
- permission: 'files.access',
209
+ requirement: { kind: 'all', permissions: ['filesystem'] },
102
210
  risk: 'high',
103
211
  },
104
212
  {
105
213
  method: DIRECTORY_REMOVE_METHOD,
106
214
  module: 'directory',
107
215
  capability: DIRECTORY_REMOVE_METHOD,
108
- permission: 'files.access',
216
+ requirement: { kind: 'all', permissions: ['filesystem'] },
109
217
  risk: 'high',
110
218
  },
111
219
  {
112
220
  method: DIRECTORY_EXISTS_METHOD,
113
221
  module: 'directory',
114
222
  capability: DIRECTORY_EXISTS_METHOD,
115
- permission: 'files.access',
223
+ requirement: { kind: 'all', permissions: ['filesystem'] },
116
224
  risk: 'high',
117
225
  },
118
- { method: DIRECTORY_LIST_METHOD, module: 'directory', capability: DIRECTORY_LIST_METHOD, permission: 'files.access', risk: 'high' },
119
- { method: UI_SHOW_TOAST_METHOD, module: 'ui', capability: UI_SHOW_TOAST_METHOD, permission: 'ui.toast', risk: 'low' },
120
- { method: UI_SHOW_LOADING_METHOD, module: 'ui', capability: UI_SHOW_LOADING_METHOD, permission: 'ui.loading', risk: 'low' },
121
- { method: UI_HIDE_LOADING_METHOD, module: 'ui', capability: UI_HIDE_LOADING_METHOD, permission: 'ui.loading', risk: 'low' },
122
- { method: DEVICE_VIBRATE_METHOD, module: 'device', capability: DEVICE_VIBRATE_METHOD, permission: 'device.vibrate', risk: 'low' },
226
+ {
227
+ method: DIRECTORY_LIST_METHOD,
228
+ module: 'directory',
229
+ capability: DIRECTORY_LIST_METHOD,
230
+ requirement: { kind: 'all', permissions: ['filesystem'] },
231
+ risk: 'high',
232
+ },
233
+ { method: UI_SHOW_TOAST_METHOD, module: 'ui', capability: UI_SHOW_TOAST_METHOD, requirement: { kind: 'none' }, risk: 'low' },
234
+ { method: UI_SHOW_LOADING_METHOD, module: 'ui', capability: UI_SHOW_LOADING_METHOD, requirement: { kind: 'none' }, risk: 'low' },
235
+ { method: UI_HIDE_LOADING_METHOD, module: 'ui', capability: UI_HIDE_LOADING_METHOD, requirement: { kind: 'none' }, risk: 'low' },
236
+ { method: DEVICE_VIBRATE_METHOD, module: 'device', capability: DEVICE_VIBRATE_METHOD, requirement: { kind: 'none' }, risk: 'low' },
123
237
  {
124
238
  method: DEVICE_SET_CLIPBOARD_METHOD,
125
239
  module: 'device',
126
240
  capability: DEVICE_SET_CLIPBOARD_METHOD,
127
- permission: 'device.clipboard.write',
241
+ requirement: { kind: 'all', permissions: ['clipboard'] },
128
242
  risk: 'medium',
129
243
  },
130
- { method: NAVIGATION_CLOSE_METHOD, module: 'navigation', capability: NAVIGATION_CLOSE_METHOD, permission: 'navigation.close', risk: 'medium' },
131
- { method: NAVIGATION_RELOAD_METHOD, module: 'navigation', capability: NAVIGATION_RELOAD_METHOD, permission: 'navigation.reload', risk: 'medium' },
244
+ { method: NAVIGATION_CLOSE_METHOD, module: 'navigation', capability: NAVIGATION_CLOSE_METHOD, requirement: { kind: 'none' }, risk: 'medium' },
245
+ { method: NAVIGATION_RELOAD_METHOD, module: 'navigation', capability: NAVIGATION_RELOAD_METHOD, requirement: { kind: 'none' }, risk: 'medium' },
132
246
  {
133
247
  method: NAVIGATION_OPEN_APP_PAGE_METHOD,
134
248
  module: 'navigation',
135
249
  capability: NAVIGATION_OPEN_APP_PAGE_METHOD,
136
- permission: 'navigation.openAppPage',
250
+ requirement: { kind: 'none' },
137
251
  risk: 'medium',
138
252
  },
139
253
  {
140
254
  method: CLOUD_LEADERBOARD_SUBMIT_METHOD,
141
255
  module: 'cloud',
142
256
  capability: CLOUD_LEADERBOARD_SUBMIT_METHOD,
143
- permission: 'cloud.leaderboard.write',
257
+ requirement: { kind: 'all', permissions: ['leaderboard'] },
144
258
  risk: 'medium',
145
259
  },
146
260
  {
147
261
  method: CLOUD_LEADERBOARD_GET_LIST_METHOD,
148
262
  module: 'cloud',
149
263
  capability: CLOUD_LEADERBOARD_GET_LIST_METHOD,
150
- permission: 'cloud.leaderboard.read',
264
+ requirement: { kind: 'all', permissions: ['leaderboard'] },
151
265
  risk: 'low',
152
266
  },
153
267
  {
154
268
  method: CLOUD_LEADERBOARD_GET_CURRENT_USER_ENTRY_METHOD,
155
269
  module: 'cloud',
156
270
  capability: CLOUD_LEADERBOARD_GET_CURRENT_USER_ENTRY_METHOD,
157
- permission: 'cloud.leaderboard.currentUserEntry.read',
271
+ requirement: { kind: 'all', permissions: ['leaderboard'] },
158
272
  risk: 'medium',
159
273
  },
160
274
  {
161
275
  method: CLOUD_LEADERBOARD_DELETE_CURRENT_USER_ENTRY_METHOD,
162
276
  module: 'cloud',
163
277
  capability: CLOUD_LEADERBOARD_DELETE_CURRENT_USER_ENTRY_METHOD,
164
- permission: 'cloud.leaderboard.currentUserEntry.delete',
278
+ requirement: { kind: 'all', permissions: ['leaderboard'] },
165
279
  risk: 'medium',
166
280
  },
167
281
  {
168
282
  method: CLOUD_LEADERBOARD_GET_INFO_METHOD,
169
283
  module: 'cloud',
170
284
  capability: CLOUD_LEADERBOARD_GET_INFO_METHOD,
171
- permission: 'cloud.leaderboard.info.read',
285
+ requirement: { kind: 'all', permissions: ['leaderboard'] },
172
286
  risk: 'low',
173
287
  },
174
288
  ];
@@ -313,7 +427,146 @@ function isRecord$1(value) {
313
427
  /** 当前用户信息与登录能力支持的完整 scope 目录。 */
314
428
  const USER_INFO_AUTHORIZATION_SCOPES = ['identity', 'profile'];
315
429
 
316
- const MANAGED_RUNTIME_PERMISSION_KEYS = new Set(['network.request']);
430
+ const MINI_PROGRAM_PERMISSION_KEYS = [
431
+ 'userInfo',
432
+ 'steamLibrary',
433
+ 'share',
434
+ 'storage',
435
+ 'filesystem',
436
+ 'clipboard',
437
+ 'leaderboard',
438
+ 'network',
439
+ ];
440
+ const MINI_PROGRAM_PERMISSION_CATALOG = [
441
+ {
442
+ key: 'userInfo',
443
+ name: '用户信息',
444
+ description: '登录小程序并读取当前用户的授权信息。',
445
+ access: 'declaration',
446
+ risk: 'medium',
447
+ config: {},
448
+ methods: ['auth.login', 'user.getInfo'],
449
+ conditions: ['继续执行黑盒登录、用户授权和可信手势规则。'],
450
+ },
451
+ {
452
+ key: 'steamLibrary',
453
+ name: 'Steam 游戏库',
454
+ description: '读取当前用户授权的 Steam 游戏库。',
455
+ access: 'declaration',
456
+ risk: 'high',
457
+ config: {},
458
+ methods: ['user.getSteamGameList'],
459
+ conditions: ['继续执行账号绑定和数据可用性规则。'],
460
+ },
461
+ {
462
+ key: 'share',
463
+ name: '分享',
464
+ description: '使用小程序分享、分享菜单和截图能力。',
465
+ access: 'declaration',
466
+ risk: 'medium',
467
+ config: {},
468
+ methods: ['share.copyLink', 'share.showShareMenu', 'share.screenshot'],
469
+ conditions: ['继续执行分享参数校验和 Host 支持检查。'],
470
+ },
471
+ {
472
+ key: 'storage',
473
+ name: '键值存储',
474
+ description: '读写按小程序隔离的简单键值数据。',
475
+ access: 'declaration',
476
+ risk: 'medium',
477
+ config: {},
478
+ methods: ['storage.getStorage', 'storage.setStorage'],
479
+ conditions: ['仅用于简单键值存储,不包含文件系统。'],
480
+ },
481
+ {
482
+ key: 'filesystem',
483
+ name: '文件系统',
484
+ description: '访问小程序沙盒文件和用户选择的外部文件。',
485
+ access: 'declaration',
486
+ risk: 'high',
487
+ config: {},
488
+ methods: [
489
+ 'network.download',
490
+ 'files.pickFiles',
491
+ 'files.pickDirectory',
492
+ 'files.saveFile',
493
+ 'file.create',
494
+ 'file.remove',
495
+ 'file.exists',
496
+ 'file.readText',
497
+ 'file.writeText',
498
+ 'file.readBytes',
499
+ 'file.writeBytes',
500
+ 'file.stat',
501
+ 'directory.create',
502
+ 'directory.remove',
503
+ 'directory.exists',
504
+ 'directory.list',
505
+ ],
506
+ conditions: ['外部文件继续要求有效的用户选择、会话句柄和匹配的读写模式。'],
507
+ },
508
+ {
509
+ key: 'clipboard',
510
+ name: '剪贴板',
511
+ description: '向系统剪贴板写入文本。',
512
+ access: 'declaration',
513
+ risk: 'medium',
514
+ config: {},
515
+ methods: ['device.setClipboard'],
516
+ conditions: ['继续执行文本长度和 Host 支持限制。'],
517
+ },
518
+ {
519
+ key: 'leaderboard',
520
+ name: '排行榜',
521
+ description: '读写小程序云排行榜。',
522
+ access: 'declaration',
523
+ risk: 'medium',
524
+ config: {},
525
+ methods: [
526
+ 'cloud.leaderboard.submit',
527
+ 'cloud.leaderboard.getList',
528
+ 'cloud.leaderboard.getCurrentUserEntry',
529
+ 'cloud.leaderboard.deleteCurrentUserEntry',
530
+ 'cloud.leaderboard.getInfo',
531
+ ],
532
+ conditions: ['排行榜必须已创建,用户和资源规则保持不变。'],
533
+ },
534
+ {
535
+ key: 'network',
536
+ name: '网络',
537
+ description: '通过 network 模块请求或下载外部资源。',
538
+ access: 'platform-approval',
539
+ risk: 'high',
540
+ config: {
541
+ useOfficialDomain: {
542
+ type: 'boolean',
543
+ required: false,
544
+ default: false,
545
+ description: '是否申请访问小黑盒官方域名。',
546
+ },
547
+ },
548
+ methods: ['network.request', 'network.download'],
549
+ conditions: ['声明后仍需平台批准,并继续执行网络安全策略。'],
550
+ },
551
+ ];
552
+ const MINI_PROGRAM_NO_DECLARATION_METHODS = [
553
+ 'user.revokeAuthorization',
554
+ 'ui.showToast',
555
+ 'ui.showLoading',
556
+ 'ui.hideLoading',
557
+ 'viewport.getWindowInfo',
558
+ 'viewport.setNavigationBarStyle',
559
+ 'device.vibrate',
560
+ 'navigation.close',
561
+ 'navigation.reload',
562
+ 'navigation.openAppPage',
563
+ ];
564
+ const PERMISSION_KEY_SET = new Set(MINI_PROGRAM_PERMISSION_KEYS);
565
+ function isMiniProgramPermissionKey(key) {
566
+ return PERMISSION_KEY_SET.has(key);
567
+ }
568
+
569
+ const MANAGED_RUNTIME_PERMISSION_KEYS = new Set(MINI_PROGRAM_PERMISSION_KEYS);
317
570
  function isManagedMiniProgramRuntimePermissionKey(key) {
318
571
  return MANAGED_RUNTIME_PERMISSION_KEYS.has(key);
319
572
  }
@@ -330,20 +583,36 @@ function parseMiniProgramRuntimePermissions(snapshot) {
330
583
  if (!isRecord(rawEntry) || typeof rawEntry.key !== 'string' || !rawEntry.key.trim()) {
331
584
  return { valid: false, permissions: {} };
332
585
  }
333
- const key = rawEntry.key.trim();
334
- if (seenKeys.has(key) || (rawEntry.status !== 'enabled' && rawEntry.status !== 'disabled') || !isRecord(rawEntry.config)) {
586
+ const inputKey = rawEntry.key.trim();
587
+ const key = inputKey === 'network.request' ? 'network' : inputKey;
588
+ if (seenKeys.has(key) || (rawEntry.status !== 'enabled' && rawEntry.status !== 'disabled')) {
335
589
  return { valid: false, permissions: {} };
336
590
  }
337
591
  seenKeys.add(key);
338
- if (!isManagedMiniProgramRuntimePermissionKey(key))
592
+ if (!isManagedMiniProgramRuntimePermissionKey(key)) {
593
+ if (!isRecord(rawEntry.config))
594
+ return { valid: false, permissions: {} };
339
595
  continue;
340
- if (key === 'network.request' && typeof rawEntry.config.useOfficialDomain !== 'boolean') {
596
+ }
597
+ if (key === 'network') {
598
+ const config = rawEntry.config;
599
+ if (!isRecord(config) || typeof config.useOfficialDomain !== 'boolean') {
600
+ return { valid: false, permissions: {} };
601
+ }
602
+ permissions[key] = {
603
+ key,
604
+ status: rawEntry.status,
605
+ config: { useOfficialDomain: config.useOfficialDomain },
606
+ };
607
+ continue;
608
+ }
609
+ if (rawEntry.config !== null && rawEntry.config !== undefined && (!isRecord(rawEntry.config) || Object.keys(rawEntry.config).length > 0)) {
341
610
  return { valid: false, permissions: {} };
342
611
  }
343
612
  permissions[key] = {
344
613
  key,
345
614
  status: rawEntry.status,
346
- config: { useOfficialDomain: rawEntry.config.useOfficialDomain },
615
+ config: {},
347
616
  };
348
617
  }
349
618
  return { valid: true, permissions };
@@ -352,4 +621,4 @@ function isRecord(value) {
352
621
  return typeof value === 'object' && value !== null && !Array.isArray(value);
353
622
  }
354
623
 
355
- export { AUTH_LOGIN_METHOD, CLOUD_LEADERBOARD_DELETE_CURRENT_USER_ENTRY_METHOD, CLOUD_LEADERBOARD_GET_CURRENT_USER_ENTRY_METHOD, CLOUD_LEADERBOARD_GET_INFO_METHOD, CLOUD_LEADERBOARD_GET_LIST_METHOD, CLOUD_LEADERBOARD_SUBMIT_METHOD, DEVICE_SET_CLIPBOARD_METHOD, DEVICE_VIBRATE_METHOD, DIRECTORY_CREATE_METHOD, DIRECTORY_EXISTS_METHOD, DIRECTORY_LIST_METHOD, DIRECTORY_REMOVE_METHOD, FILES_PICK_DIRECTORY_METHOD, FILES_PICK_FILES_METHOD, FILES_SAVE_FILE_METHOD, FILE_CREATE_METHOD, FILE_EXISTS_METHOD, FILE_READ_BYTES_METHOD, FILE_READ_TEXT_METHOD, FILE_REMOVE_METHOD, FILE_STAT_METHOD, FILE_WRITE_BYTES_METHOD, FILE_WRITE_TEXT_METHOD, MINI_PROGRAM_BRIDGE_NONCE_PARAM, MINI_PROGRAM_MESSAGE_NAMESPACE, MINI_PROGRAM_MESSAGE_VERSION, MINI_PROGRAM_OPERATION_PROGRESS_METHOD, MINI_PROGRAM_PROTOCOL_CAPABILITIES, NAVIGATION_CLOSE_METHOD, NAVIGATION_OPEN_APP_PAGE_METHOD, NAVIGATION_RELOAD_METHOD, NETWORK_DOWNLOAD_METHOD, NETWORK_REQUEST_METHOD, RUNTIME_LOCATION_PROBE_METHOD, SDK_CSP_VIOLATION_METHOD, SDK_HANDSHAKE_METHOD, SDK_LOCATION_REPORT_METHOD, SHARE_COPY_LINK_METHOD, SHARE_SCREENSHOT_METHOD, SHARE_SHOW_SHARE_MENU_METHOD, STORAGE_GET_STORAGE_METHOD, STORAGE_SET_STORAGE_METHOD, UI_HIDE_LOADING_METHOD, UI_SHOW_LOADING_METHOD, UI_SHOW_TOAST_METHOD, USER_GET_INFO_METHOD, USER_GET_STEAM_GAME_LIST_METHOD, USER_INFO_AUTHORIZATION_SCOPES, USER_REVOKE_AUTHORIZATION_METHOD, VIEWPORT_GET_WINDOW_INFO_METHOD, VIEWPORT_SET_NAVIGATION_BAR_STYLE_METHOD, isManagedMiniProgramRuntimePermissionKey, isMiniProgramBridgeMessage, isMiniProgramByteArray, isMiniProgramDirectoryDescriptor, isMiniProgramDirectoryRef, isMiniProgramDownloadProgressPayload, isMiniProgramFileDescriptor, isMiniProgramFileRef, isMiniProgramFileStat, isMiniProgramFileSystemEntityDescriptor, isMiniProgramPathRootRef, isMiniProgramRelativePath, parseMiniProgramRuntimePermissions };
624
+ export { AUTH_LOGIN_METHOD, CLOUD_LEADERBOARD_DELETE_CURRENT_USER_ENTRY_METHOD, CLOUD_LEADERBOARD_GET_CURRENT_USER_ENTRY_METHOD, CLOUD_LEADERBOARD_GET_INFO_METHOD, CLOUD_LEADERBOARD_GET_LIST_METHOD, CLOUD_LEADERBOARD_SUBMIT_METHOD, DEVICE_SET_CLIPBOARD_METHOD, DEVICE_VIBRATE_METHOD, DIRECTORY_CREATE_METHOD, DIRECTORY_EXISTS_METHOD, DIRECTORY_LIST_METHOD, DIRECTORY_REMOVE_METHOD, FILES_PICK_DIRECTORY_METHOD, FILES_PICK_FILES_METHOD, FILES_SAVE_FILE_METHOD, FILE_CREATE_METHOD, FILE_EXISTS_METHOD, FILE_READ_BYTES_METHOD, FILE_READ_TEXT_METHOD, FILE_REMOVE_METHOD, FILE_STAT_METHOD, FILE_WRITE_BYTES_METHOD, FILE_WRITE_TEXT_METHOD, MINI_PROGRAM_BRIDGE_NONCE_PARAM, MINI_PROGRAM_MESSAGE_NAMESPACE, MINI_PROGRAM_MESSAGE_VERSION, MINI_PROGRAM_NO_DECLARATION_METHODS, MINI_PROGRAM_OPERATION_PROGRESS_METHOD, MINI_PROGRAM_PERMISSION_CATALOG, MINI_PROGRAM_PERMISSION_KEYS, MINI_PROGRAM_PROTOCOL_CAPABILITIES, NAVIGATION_CLOSE_METHOD, NAVIGATION_OPEN_APP_PAGE_METHOD, NAVIGATION_RELOAD_METHOD, NETWORK_DOWNLOAD_METHOD, NETWORK_REQUEST_METHOD, RUNTIME_LOCATION_PROBE_METHOD, SDK_CSP_VIOLATION_METHOD, SDK_HANDSHAKE_METHOD, SDK_LOCATION_REPORT_METHOD, SHARE_COPY_LINK_METHOD, SHARE_SCREENSHOT_METHOD, SHARE_SHOW_SHARE_MENU_METHOD, STORAGE_GET_STORAGE_METHOD, STORAGE_SET_STORAGE_METHOD, UI_HIDE_LOADING_METHOD, UI_SHOW_LOADING_METHOD, UI_SHOW_TOAST_METHOD, USER_GET_INFO_METHOD, USER_GET_STEAM_GAME_LIST_METHOD, USER_INFO_AUTHORIZATION_SCOPES, USER_REVOKE_AUTHORIZATION_METHOD, VIEWPORT_GET_WINDOW_INFO_METHOD, VIEWPORT_SET_NAVIGATION_BAR_STYLE_METHOD, isManagedMiniProgramRuntimePermissionKey, isMiniProgramBridgeMessage, isMiniProgramByteArray, isMiniProgramDirectoryDescriptor, isMiniProgramDirectoryRef, isMiniProgramDownloadProgressPayload, isMiniProgramFileDescriptor, isMiniProgramFileRef, isMiniProgramFileStat, isMiniProgramFileSystemEntityDescriptor, isMiniProgramPathRootRef, isMiniProgramPermissionKey, isMiniProgramRelativePath, parseMiniProgramRuntimePermissions };
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@heybox/hb-sdk-protocol",
3
- "version": "0.8.0-alpha.3",
3
+ "version": "0.8.0",
4
4
  "description": "Heybox mini-program iframe bridge wire contracts.",
5
5
  "sideEffects": false,
6
6
  "exports": {
7
7
  ".": {
8
- "types": "./types/index.d.ts",
9
8
  "heybox": "./src/index.ts",
9
+ "types": "./types/index.d.ts",
10
10
  "import": "./dist/index.esm.js",
11
11
  "require": "./dist/index.cjs.js",
12
12
  "default": "./dist/index.esm.js"
@@ -40,6 +40,8 @@
40
40
  "test:types": "tsc -p tsconfig.dts.json --noEmit --pretty false",
41
41
  "clean": "rimraf ./dist && rimraf ./types",
42
42
  "check:boundary": "node scripts/check-boundary.cjs",
43
+ "gen:permission-catalog": "pnpm run build:lib && node scripts/generate-permission-catalog.mjs",
44
+ "check:permission-catalog": "pnpm run build:lib && node scripts/generate-permission-catalog.mjs --check",
43
45
  "pretest:unit": "pnpm run build:types",
44
46
  "test:unit": "NODE_OPTIONS='--conditions=heybox' vitest run",
45
47
  "test:watch": "NODE_OPTIONS='--conditions=heybox' vitest"