@doubao-apps/taro-runtime 0.0.18 → 0.0.19

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 (63) hide show
  1. package/dist/api/base/index.d.ts +12 -0
  2. package/dist/api/base/index.js +13 -1
  3. package/dist/api/create-selector-query/index.d.ts +3 -0
  4. package/dist/api/create-selector-query/index.js +577 -0
  5. package/dist/api/index.d.ts +7 -3
  6. package/dist/api/index.js +7 -3
  7. package/dist/api/location/index.d.ts +10 -0
  8. package/dist/api/location/index.js +77 -0
  9. package/dist/api/map/index.js +28 -30
  10. package/dist/api/request/index.js +8 -18
  11. package/dist/api/router/index.d.ts +4 -0
  12. package/dist/api/router/index.js +4 -0
  13. package/dist/api/router/navigate-back.d.ts +5 -0
  14. package/dist/api/router/navigate-back.js +20 -0
  15. package/dist/api/{navigate/index.d.ts → router/navigate-to.d.ts} +2 -2
  16. package/dist/api/{navigate/index.js → router/navigate-to.js} +7 -7
  17. package/dist/api/router/redirect-to.d.ts +5 -0
  18. package/dist/api/router/redirect-to.js +22 -0
  19. package/dist/api/show-toast/index.d.ts +6 -0
  20. package/dist/api/show-toast/index.js +39 -0
  21. package/dist/api/storage/index.d.ts +16 -0
  22. package/dist/api/storage/index.js +55 -0
  23. package/dist/api/system/index.d.ts +12 -0
  24. package/dist/api/system/index.js +40 -10
  25. package/dist/api/utils.d.ts +21 -0
  26. package/dist/api/utils.js +65 -0
  27. package/dist/components/Image/index.d.ts +2 -1
  28. package/dist/components/Image/index.jsx +3 -2
  29. package/dist/components/Input/index.d.ts +3 -5
  30. package/dist/components/Input/index.jsx +50 -3
  31. package/dist/components/Input/map.d.ts +50 -0
  32. package/dist/components/Input/map.js +226 -0
  33. package/dist/components/Map/bridge.d.ts +32 -4
  34. package/dist/components/Map/bridge.js +224 -13
  35. package/dist/components/Map/index.jsx +78 -58
  36. package/dist/components/Map/mapping.d.ts +71 -3
  37. package/dist/components/Map/mapping.js +0 -15
  38. package/dist/components/PickerView/index.d.ts +8 -0
  39. package/dist/components/PickerView/index.jsx +47 -0
  40. package/dist/components/PickerView/map.d.ts +36 -0
  41. package/dist/components/PickerView/map.js +29 -0
  42. package/dist/components/Radio/index.d.ts +5 -0
  43. package/dist/components/Radio/index.jsx +82 -0
  44. package/dist/components/Radio/map.d.ts +38 -0
  45. package/dist/components/Radio/map.js +109 -0
  46. package/dist/components/Radio/shared.d.ts +7 -0
  47. package/dist/components/Radio/shared.js +9 -0
  48. package/dist/components/RadioGroup/context.d.ts +11 -0
  49. package/dist/components/RadioGroup/context.js +3 -0
  50. package/dist/components/RadioGroup/index.d.ts +3 -0
  51. package/dist/components/RadioGroup/index.jsx +80 -0
  52. package/dist/components/RadioGroup/map.d.ts +44 -0
  53. package/dist/components/RadioGroup/map.js +109 -0
  54. package/dist/components/WebView/index.d.ts +3 -0
  55. package/dist/components/WebView/index.jsx +24 -0
  56. package/dist/components/index.d.ts +4 -0
  57. package/dist/components/index.js +4 -0
  58. package/dist/exports/app-core.d.ts +1 -1
  59. package/dist/exports/app-core.js +1 -1
  60. package/dist/exports/view-core.d.ts +1 -1
  61. package/dist/exports/view-core.js +1 -1
  62. package/dist/internal/map-context/index.d.ts +7 -1
  63. package/package.json +1 -1
@@ -1,5 +1,17 @@
1
1
  export declare function getEnv(): TaroGeneral.ENV_TYPE | 'DOUBAO';
2
2
  export declare const ENV_TYPE: {
3
3
  DOUBAO: string;
4
+ WEAPP: string;
5
+ SWAN: string;
6
+ ALIPAY: string;
7
+ TT: string;
8
+ QQ: string;
9
+ JD: string;
10
+ WEB: string;
11
+ RN: string;
12
+ HARMONY: string;
13
+ QUICKAPP: string;
14
+ HARMONYHYBRID: string;
15
+ ASCF: string;
4
16
  };
5
17
  //# sourceMappingURL=index.d.ts.map
@@ -2,6 +2,18 @@ export function getEnv() {
2
2
  return 'DOUBAO';
3
3
  }
4
4
  export const ENV_TYPE = {
5
- DOUBAO: 'DOUBAO'
5
+ DOUBAO: 'DOUBAO',
6
+ WEAPP: 'WEAPP',
7
+ SWAN: 'SWAN',
8
+ ALIPAY: 'ALIPAY',
9
+ TT: 'TT',
10
+ QQ: 'QQ',
11
+ JD: 'JD',
12
+ WEB: 'WEB',
13
+ RN: 'RN',
14
+ HARMONY: 'HARMONY',
15
+ QUICKAPP: 'QUICKAPP',
16
+ HARMONYHYBRID: 'HARMONYHYBRID',
17
+ ASCF: 'ASCF'
6
18
  };
7
19
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,3 @@
1
+ import type Taro from '@tarojs/taro';
2
+ export declare function createSelectorQuery(): Taro.SelectorQuery;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,577 @@
1
+ import { getWindowInfo } from '../system/index.js';
2
+ import { warnUnsupported } from '../../utils/warn-unsupported.js';
3
+ const UNSUPPORTED_IN = 'createSelectorQuery.in(component)';
4
+ const UNSUPPORTED_CONTEXT = 'createSelectorQuery.context()';
5
+ const UNSUPPORTED_NODE = 'createSelectorQuery.node()';
6
+ const UNSUPPORTED_FIELDS_COMPUTED_STYLE = 'createSelectorQuery.fields.computedStyle';
7
+ const UNSUPPORTED_FIELDS_PROPERTIES = 'createSelectorQuery.fields.properties';
8
+ const UNSUPPORTED_FIELDS_MARK = 'createSelectorQuery.fields.mark';
9
+ const UNSUPPORTED_FIELDS_CONTEXT = 'createSelectorQuery.fields.context';
10
+ const UNSUPPORTED_FIELDS_NODE = 'createSelectorQuery.fields.node';
11
+ const UNSUPPORTED_VIEWPORT_SCROLL_OFFSET = 'createSelectorQuery.selectViewport().scrollOffset';
12
+ const UNSUPPORTED_SCROLL_OFFSET = 'createSelectorQuery.scrollOffset (node is not a supported scroll container)';
13
+ class SelectorQueryAdapter {
14
+ constructor() {
15
+ this.tasks = [];
16
+ }
17
+ select(selector) {
18
+ return new NodesRefAdapter(this, { kind: 'single', selector });
19
+ }
20
+ selectAll(selector) {
21
+ return new NodesRefAdapter(this, { kind: 'multi', selector });
22
+ }
23
+ selectViewport() {
24
+ return new NodesRefAdapter(this, { kind: 'viewport' });
25
+ }
26
+ in(_component) {
27
+ warnUnsupported(UNSUPPORTED_IN);
28
+ return this;
29
+ }
30
+ pushTask(task) {
31
+ this.tasks.push(task);
32
+ }
33
+ exec(callback) {
34
+ const pending = this.tasks.splice(0, this.tasks.length);
35
+ void (async () => {
36
+ const results = [];
37
+ for (const task of pending) {
38
+ const result = await task.run();
39
+ task.callback?.(result);
40
+ results.push(result);
41
+ }
42
+ callback?.(results);
43
+ })();
44
+ // Taro typings declare a NodesRef return value, but exec semantics are fire-and-forget.
45
+ return undefined;
46
+ }
47
+ }
48
+ class NodesRefAdapter {
49
+ constructor(query, target) {
50
+ this.query = query;
51
+ this.target = target;
52
+ }
53
+ boundingClientRect(callback) {
54
+ console.log('boundingClientRect', this.target);
55
+ this.query.pushTask({
56
+ run: () => resolveBoundingClientRect(this.target),
57
+ callback: callback
58
+ });
59
+ return this.query;
60
+ }
61
+ fields(fields, callback) {
62
+ this.query.pushTask({
63
+ run: () => resolveFields(this.target, fields ?? {}),
64
+ callback: callback
65
+ });
66
+ return this.query;
67
+ }
68
+ scrollOffset(callback) {
69
+ this.query.pushTask({
70
+ run: () => resolveScrollOffset(this.target),
71
+ callback: callback
72
+ });
73
+ return this.query;
74
+ }
75
+ context(callback) {
76
+ this.query.pushTask({
77
+ run: async () => resolveUnsupportedOperation(this.target, UNSUPPORTED_CONTEXT),
78
+ callback: callback
79
+ });
80
+ return this.query;
81
+ }
82
+ node(callback) {
83
+ this.query.pushTask({
84
+ run: async () => resolveUnsupportedOperation(this.target, UNSUPPORTED_NODE),
85
+ callback: callback
86
+ });
87
+ return this.query;
88
+ }
89
+ }
90
+ function getLynxRoot() {
91
+ return lynx;
92
+ }
93
+ async function resolveBoundingClientRect(target) {
94
+ if (target.kind === 'viewport') {
95
+ const rect = getViewportRect();
96
+ return createRectPayload(rect, '', {});
97
+ }
98
+ if (target.kind === 'single') {
99
+ const invokeResult = await runSingleInvoke(target.selector, 'boundingClientRect');
100
+ console.log('invokeResult', invokeResult);
101
+ if (invokeResult.selectorUnsupported) {
102
+ warnUnsupported(`createSelectorQuery selector unsupported: ${target.selector}`);
103
+ return null;
104
+ }
105
+ if (!invokeResult.data) {
106
+ return null;
107
+ }
108
+ const fieldsResult = await runSingleFields(target.selector, { id: true, dataset: true });
109
+ if (fieldsResult.selectorUnsupported) {
110
+ warnUnsupported(`createSelectorQuery selector unsupported: ${target.selector}`);
111
+ }
112
+ const id = fieldsResult.selectorUnsupported ? '' : toStringOrEmpty(fieldsResult.data?.id);
113
+ const dataset = fieldsResult.selectorUnsupported ? {} : toRecord(fieldsResult.data?.dataset);
114
+ return createRectPayload(invokeResult.data, id, dataset);
115
+ }
116
+ const fieldsResult = await runMultiFields(target.selector, { id: true, dataset: true, query: true });
117
+ if (fieldsResult.selectorUnsupported) {
118
+ warnUnsupported(`createSelectorQuery selector unsupported: ${target.selector}`);
119
+ return [];
120
+ }
121
+ if (fieldsResult.data.length === 0) {
122
+ return [];
123
+ }
124
+ const rectResults = await Promise.all(fieldsResult.data.map(async (item) => {
125
+ const query = item.query;
126
+ const invokeResult = await runInvokeFromQueryRoot(query, 'boundingClientRect');
127
+ if (!invokeResult.data) {
128
+ return null;
129
+ }
130
+ return createRectPayload(invokeResult.data, toStringOrEmpty(item.id), toRecord(item.dataset));
131
+ }));
132
+ return rectResults.filter((item) => item !== null);
133
+ }
134
+ async function resolveFields(target, fields) {
135
+ const hasUnsupportedFields = markUnsupportedFields(fields);
136
+ const wantsId = fields.id === true;
137
+ const wantsDataset = fields.dataset === true;
138
+ const wantsRect = fields.rect === true;
139
+ const wantsSize = fields.size === true;
140
+ const wantsScrollOffset = fields.scrollOffset === true;
141
+ const hasSupportedFields = wantsId || wantsDataset || wantsRect || wantsSize || wantsScrollOffset;
142
+ if (!hasSupportedFields) {
143
+ if (hasUnsupportedFields) {
144
+ return getEmptyResult(target);
145
+ }
146
+ return getEmptyResult(target);
147
+ }
148
+ if (target.kind === 'viewport') {
149
+ return resolveViewportFields(fields);
150
+ }
151
+ if (target.kind === 'single') {
152
+ const output = {};
153
+ const [baseResult, rectResult, scrollResult] = await Promise.all([
154
+ wantsId || wantsDataset
155
+ ? runSingleFields(target.selector, { id: true, dataset: true })
156
+ : Promise.resolve(null),
157
+ wantsRect || wantsSize ? runSingleInvoke(target.selector, 'boundingClientRect') : Promise.resolve(null),
158
+ wantsScrollOffset ? runSingleInvoke(target.selector, 'getScrollInfo') : Promise.resolve(null)
159
+ ]);
160
+ if (baseResult?.selectorUnsupported ||
161
+ rectResult?.selectorUnsupported ||
162
+ scrollResult?.selectorUnsupported) {
163
+ warnUnsupported(`createSelectorQuery selector unsupported: ${target.selector}`);
164
+ return null;
165
+ }
166
+ if (wantsId) {
167
+ output.id = toStringOrEmpty(baseResult?.data?.id);
168
+ }
169
+ if (wantsDataset) {
170
+ output.dataset = toRecord(baseResult?.data?.dataset);
171
+ }
172
+ if ((wantsRect || wantsSize) && rectResult?.data) {
173
+ const rect = createRectPayload(rectResult.data, toStringOrEmpty(baseResult?.data?.id), toRecord(baseResult?.data?.dataset));
174
+ if (wantsRect) {
175
+ output.left = rect.left;
176
+ output.right = rect.right;
177
+ output.top = rect.top;
178
+ output.bottom = rect.bottom;
179
+ }
180
+ if (wantsSize) {
181
+ output.width = rect.width;
182
+ output.height = rect.height;
183
+ }
184
+ }
185
+ if (wantsScrollOffset) {
186
+ if (scrollResult?.data) {
187
+ output.scrollLeft = toNumber(scrollResult.data.scrollLeft);
188
+ output.scrollTop = toNumber(scrollResult.data.scrollTop);
189
+ }
190
+ else {
191
+ warnUnsupported(UNSUPPORTED_SCROLL_OFFSET);
192
+ }
193
+ }
194
+ return Object.keys(output).length > 0 ? output : null;
195
+ }
196
+ const needsQuery = wantsRect || wantsSize || wantsScrollOffset;
197
+ const baseResult = await runMultiFields(target.selector, {
198
+ id: wantsId || wantsDataset || needsQuery,
199
+ dataset: wantsId || wantsDataset || needsQuery,
200
+ query: needsQuery
201
+ });
202
+ if (baseResult.selectorUnsupported) {
203
+ warnUnsupported(`createSelectorQuery selector unsupported: ${target.selector}`);
204
+ return [];
205
+ }
206
+ if (baseResult.data.length === 0) {
207
+ return [];
208
+ }
209
+ let hasScrollOffsetMiss = false;
210
+ const mapped = await Promise.all(baseResult.data.map(async (item) => {
211
+ const output = {};
212
+ if (wantsId) {
213
+ output.id = toStringOrEmpty(item.id);
214
+ }
215
+ if (wantsDataset) {
216
+ output.dataset = toRecord(item.dataset);
217
+ }
218
+ if (wantsRect || wantsSize) {
219
+ const rectResult = await runInvokeFromQueryRoot(item.query, 'boundingClientRect');
220
+ if (rectResult.data) {
221
+ const rect = createRectPayload(rectResult.data, toStringOrEmpty(item.id), toRecord(item.dataset));
222
+ if (wantsRect) {
223
+ output.left = rect.left;
224
+ output.right = rect.right;
225
+ output.top = rect.top;
226
+ output.bottom = rect.bottom;
227
+ }
228
+ if (wantsSize) {
229
+ output.width = rect.width;
230
+ output.height = rect.height;
231
+ }
232
+ }
233
+ }
234
+ if (wantsScrollOffset) {
235
+ const scrollResult = await runInvokeFromQueryRoot(item.query, 'getScrollInfo');
236
+ if (scrollResult.data) {
237
+ output.scrollLeft = toNumber(scrollResult.data.scrollLeft);
238
+ output.scrollTop = toNumber(scrollResult.data.scrollTop);
239
+ }
240
+ else {
241
+ hasScrollOffsetMiss = true;
242
+ }
243
+ }
244
+ return output;
245
+ }));
246
+ if (wantsScrollOffset && hasScrollOffsetMiss) {
247
+ warnUnsupported(UNSUPPORTED_SCROLL_OFFSET);
248
+ }
249
+ return mapped;
250
+ }
251
+ async function resolveScrollOffset(target) {
252
+ if (target.kind === 'viewport') {
253
+ warnUnsupported(UNSUPPORTED_VIEWPORT_SCROLL_OFFSET);
254
+ return {
255
+ id: '',
256
+ dataset: {},
257
+ scrollLeft: 0,
258
+ scrollTop: 0
259
+ };
260
+ }
261
+ if (target.kind === 'single') {
262
+ const [fieldsResult, invokeResult] = await Promise.all([
263
+ runSingleFields(target.selector, { id: true, dataset: true }),
264
+ runSingleInvoke(target.selector, 'getScrollInfo')
265
+ ]);
266
+ if (fieldsResult.selectorUnsupported || invokeResult.selectorUnsupported) {
267
+ warnUnsupported(`createSelectorQuery selector unsupported: ${target.selector}`);
268
+ return null;
269
+ }
270
+ if (!invokeResult.data) {
271
+ warnUnsupported(UNSUPPORTED_SCROLL_OFFSET);
272
+ return null;
273
+ }
274
+ return {
275
+ id: toStringOrEmpty(fieldsResult.data?.id),
276
+ dataset: toRecord(fieldsResult.data?.dataset),
277
+ scrollLeft: toNumber(invokeResult.data.scrollLeft),
278
+ scrollTop: toNumber(invokeResult.data.scrollTop)
279
+ };
280
+ }
281
+ const fieldsResult = await runMultiFields(target.selector, { id: true, dataset: true, query: true });
282
+ if (fieldsResult.selectorUnsupported) {
283
+ warnUnsupported(`createSelectorQuery selector unsupported: ${target.selector}`);
284
+ return [];
285
+ }
286
+ if (fieldsResult.data.length === 0) {
287
+ return [];
288
+ }
289
+ let hasMiss = false;
290
+ const results = await Promise.all(fieldsResult.data.map(async (item) => {
291
+ const invokeResult = await runInvokeFromQueryRoot(item.query, 'getScrollInfo');
292
+ if (!invokeResult.data) {
293
+ hasMiss = true;
294
+ return null;
295
+ }
296
+ return {
297
+ id: toStringOrEmpty(item.id),
298
+ dataset: toRecord(item.dataset),
299
+ scrollLeft: toNumber(invokeResult.data.scrollLeft),
300
+ scrollTop: toNumber(invokeResult.data.scrollTop)
301
+ };
302
+ }));
303
+ if (hasMiss) {
304
+ warnUnsupported(UNSUPPORTED_SCROLL_OFFSET);
305
+ }
306
+ return results.filter((item) => item !== null);
307
+ }
308
+ function resolveUnsupportedOperation(target, feature) {
309
+ warnUnsupported(feature);
310
+ return getEmptyResult(target);
311
+ }
312
+ function resolveViewportFields(fields) {
313
+ const output = {};
314
+ const rect = getViewportRect();
315
+ if (fields.id === true) {
316
+ output.id = '';
317
+ }
318
+ if (fields.dataset === true) {
319
+ output.dataset = {};
320
+ }
321
+ if (fields.rect === true) {
322
+ output.left = rect.left;
323
+ output.right = rect.right;
324
+ output.top = rect.top;
325
+ output.bottom = rect.bottom;
326
+ }
327
+ if (fields.size === true) {
328
+ output.width = rect.width;
329
+ output.height = rect.height;
330
+ }
331
+ if (fields.scrollOffset === true) {
332
+ warnUnsupported(UNSUPPORTED_VIEWPORT_SCROLL_OFFSET);
333
+ output.scrollLeft = 0;
334
+ output.scrollTop = 0;
335
+ if (fields.id !== true) {
336
+ output.id = '';
337
+ }
338
+ if (fields.dataset !== true) {
339
+ output.dataset = {};
340
+ }
341
+ }
342
+ return Object.keys(output).length > 0 ? output : null;
343
+ }
344
+ function markUnsupportedFields(fields) {
345
+ let hasUnsupported = false;
346
+ if (Array.isArray(fields.computedStyle) && fields.computedStyle.length > 0) {
347
+ hasUnsupported = true;
348
+ warnUnsupported(UNSUPPORTED_FIELDS_COMPUTED_STYLE);
349
+ }
350
+ if (Array.isArray(fields.properties) && fields.properties.length > 0) {
351
+ hasUnsupported = true;
352
+ warnUnsupported(UNSUPPORTED_FIELDS_PROPERTIES);
353
+ }
354
+ if (fields.mark === true) {
355
+ hasUnsupported = true;
356
+ warnUnsupported(UNSUPPORTED_FIELDS_MARK);
357
+ }
358
+ if (fields.context === true) {
359
+ hasUnsupported = true;
360
+ warnUnsupported(UNSUPPORTED_FIELDS_CONTEXT);
361
+ }
362
+ if (fields.node === true) {
363
+ hasUnsupported = true;
364
+ warnUnsupported(UNSUPPORTED_FIELDS_NODE);
365
+ }
366
+ return hasUnsupported;
367
+ }
368
+ function getViewportRect() {
369
+ const info = getWindowInfo();
370
+ const width = toNumber(info.windowWidth, toNumber(info.screenWidth));
371
+ const height = toNumber(info.windowHeight, toNumber(info.screenHeight));
372
+ return {
373
+ left: 0,
374
+ top: 0,
375
+ right: width,
376
+ bottom: height,
377
+ width,
378
+ height
379
+ };
380
+ }
381
+ function createRectPayload(rectLike, id, dataset) {
382
+ const left = toNumber(rectLike.left);
383
+ const top = toNumber(rectLike.top);
384
+ const width = toNumber(rectLike.width);
385
+ const height = toNumber(rectLike.height);
386
+ const right = toNumber(rectLike.right, left + width);
387
+ const bottom = toNumber(rectLike.bottom, top + height);
388
+ return {
389
+ id,
390
+ dataset,
391
+ left,
392
+ right,
393
+ top,
394
+ bottom,
395
+ width,
396
+ height
397
+ };
398
+ }
399
+ function getEmptyResult(target) {
400
+ return target.kind === 'multi' ? [] : null;
401
+ }
402
+ async function runSingleFields(selector, fields) {
403
+ const lynx = getLynxRoot();
404
+ if (!lynx) {
405
+ return { data: null, selectorUnsupported: false };
406
+ }
407
+ return new Promise((resolve) => {
408
+ try {
409
+ lynx
410
+ .createSelectorQuery()
411
+ .select(selector)
412
+ .fields(fields, (data, status) => {
413
+ resolve({
414
+ data: data ?? null,
415
+ selectorUnsupported: isSelectorUnsupported(status)
416
+ });
417
+ })
418
+ .exec();
419
+ }
420
+ catch (error) {
421
+ resolve({
422
+ data: null,
423
+ selectorUnsupported: isSelectorUnsupported(error)
424
+ });
425
+ }
426
+ });
427
+ }
428
+ async function runMultiFields(selector, fields) {
429
+ const lynx = getLynxRoot();
430
+ if (!lynx) {
431
+ return { data: [], selectorUnsupported: false };
432
+ }
433
+ return new Promise((resolve) => {
434
+ try {
435
+ lynx
436
+ .createSelectorQuery()
437
+ .selectAll(selector)
438
+ .fields(fields, (data, status) => {
439
+ resolve({
440
+ data: Array.isArray(data) ? data : [],
441
+ selectorUnsupported: isSelectorUnsupported(status)
442
+ });
443
+ })
444
+ .exec();
445
+ }
446
+ catch (error) {
447
+ resolve({
448
+ data: [],
449
+ selectorUnsupported: isSelectorUnsupported(error)
450
+ });
451
+ }
452
+ });
453
+ }
454
+ async function runSingleInvoke(selector, method, params) {
455
+ const lynx = getLynxRoot();
456
+ if (!lynx) {
457
+ return { data: null, selectorUnsupported: false };
458
+ }
459
+ return new Promise((resolve) => {
460
+ try {
461
+ lynx
462
+ .createSelectorQuery()
463
+ .select(selector)
464
+ .invoke({
465
+ method,
466
+ params,
467
+ success: (res) => {
468
+ resolve({
469
+ data: toRecordOrNull(res),
470
+ selectorUnsupported: false
471
+ });
472
+ },
473
+ fail: (error) => {
474
+ resolve({
475
+ data: null,
476
+ selectorUnsupported: isSelectorUnsupported(error)
477
+ });
478
+ }
479
+ })
480
+ .exec();
481
+ }
482
+ catch (error) {
483
+ resolve({
484
+ data: null,
485
+ selectorUnsupported: isSelectorUnsupported(error)
486
+ });
487
+ }
488
+ });
489
+ }
490
+ async function runInvokeFromQueryRoot(query, method, params) {
491
+ if (!query) {
492
+ return { data: null, selectorUnsupported: false };
493
+ }
494
+ return new Promise((resolve) => {
495
+ try {
496
+ query
497
+ .selectRoot()
498
+ .invoke({
499
+ method,
500
+ params,
501
+ success: (res) => {
502
+ resolve({
503
+ data: toRecordOrNull(res),
504
+ selectorUnsupported: false
505
+ });
506
+ },
507
+ fail: (error) => {
508
+ resolve({
509
+ data: null,
510
+ selectorUnsupported: isSelectorUnsupported(error)
511
+ });
512
+ }
513
+ })
514
+ .exec();
515
+ }
516
+ catch (error) {
517
+ resolve({
518
+ data: null,
519
+ selectorUnsupported: isSelectorUnsupported(error)
520
+ });
521
+ }
522
+ });
523
+ }
524
+ function isSelectorUnsupported(source) {
525
+ const code = extractCode(source);
526
+ if (code === 5) {
527
+ return true;
528
+ }
529
+ const text = extractMessage(source);
530
+ if (!text) {
531
+ return false;
532
+ }
533
+ return /selector/i.test(text) && /(not\s+support|unsupported)/i.test(text);
534
+ }
535
+ function extractCode(source) {
536
+ if (!source || typeof source !== 'object') {
537
+ return null;
538
+ }
539
+ const code = source.code;
540
+ if (typeof code === 'number' && Number.isFinite(code)) {
541
+ return code;
542
+ }
543
+ return null;
544
+ }
545
+ function extractMessage(source) {
546
+ if (typeof source === 'string') {
547
+ return source;
548
+ }
549
+ if (!source || typeof source !== 'object') {
550
+ return '';
551
+ }
552
+ const data = source.data;
553
+ if (typeof data === 'string') {
554
+ return data;
555
+ }
556
+ const message = source.message;
557
+ if (typeof message === 'string') {
558
+ return message;
559
+ }
560
+ return '';
561
+ }
562
+ function toNumber(value, fallback = 0) {
563
+ return typeof value === 'number' && Number.isFinite(value) ? value : fallback;
564
+ }
565
+ function toStringOrEmpty(value) {
566
+ return typeof value === 'string' ? value : '';
567
+ }
568
+ function toRecord(value) {
569
+ return value && typeof value === 'object' ? value : {};
570
+ }
571
+ function toRecordOrNull(value) {
572
+ return value && typeof value === 'object' ? value : null;
573
+ }
574
+ export function createSelectorQuery() {
575
+ return new SelectorQueryAdapter();
576
+ }
577
+ //# sourceMappingURL=index.js.map
@@ -1,6 +1,10 @@
1
- export { getEnv } from './base/index.js';
1
+ export { getEnv, ENV_TYPE } from './base/index.js';
2
2
  export { request } from './request/index.js';
3
- export { navigateTo } from './navigate/index.js';
4
- export { getSystemSetting, getAppAuthorizeSetting, getDeviceInfo, getAppBaseInfo, getWindowInfo } from './system/index.js';
3
+ export { navigateBack, navigateTo, redirectTo } from './router/index.js';
4
+ export { setStorage, setStorageSync, getStorage, getStorageSync, removeStorage, removeStorageSync, clearStorage, clearStorageSync, getStorageInfo, getStorageInfoSync } from './storage/index.js';
5
+ export { getSystemSetting, getAppAuthorizeSetting, getDeviceInfo, getAppBaseInfo, getWindowInfo, makePhoneCall, getNetworkType } from './system/index.js';
6
+ export { getLocation } from './location/index.js';
7
+ export { showToast } from './show-toast/index.js';
5
8
  export { createMapContext } from './map/index.js';
9
+ export { createSelectorQuery } from './create-selector-query/index.js';
6
10
  //# sourceMappingURL=index.d.ts.map
package/dist/api/index.js CHANGED
@@ -1,6 +1,10 @@
1
- export { getEnv } from './base/index.js';
1
+ export { getEnv, ENV_TYPE } from './base/index.js';
2
2
  export { request } from './request/index.js';
3
- export { navigateTo } from './navigate/index.js';
4
- export { getSystemSetting, getAppAuthorizeSetting, getDeviceInfo, getAppBaseInfo, getWindowInfo } from './system/index.js';
3
+ export { navigateBack, navigateTo, redirectTo } from './router/index.js';
4
+ export { setStorage, setStorageSync, getStorage, getStorageSync, removeStorage, removeStorageSync, clearStorage, clearStorageSync, getStorageInfo, getStorageInfoSync } from './storage/index.js';
5
+ export { getSystemSetting, getAppAuthorizeSetting, getDeviceInfo, getAppBaseInfo, getWindowInfo, makePhoneCall, getNetworkType } from './system/index.js';
6
+ export { getLocation } from './location/index.js';
7
+ export { showToast } from './show-toast/index.js';
5
8
  export { createMapContext } from './map/index.js';
9
+ export { createSelectorQuery } from './create-selector-query/index.js';
6
10
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,10 @@
1
+ import type { GetLocationParams } from '@byted-doubao-apps/framework/api';
2
+ import type { getLocation as taroGetLocation } from '@tarojs/taro';
3
+ type TaroGetLocationOption = Parameters<typeof taroGetLocation>[0];
4
+ type TaroGetLocationResult = Awaited<ReturnType<typeof taroGetLocation>>;
5
+ type RuntimeGetLocationOption = TaroGetLocationOption & Partial<Pick<GetLocationParams, 'source' | 'mode' | 'timeoutMs' | 'maxCacheMs'>> & {
6
+ cacheTimeout?: number;
7
+ };
8
+ export declare function getLocation(option?: RuntimeGetLocationOption): Promise<TaroGetLocationResult>;
9
+ export {};
10
+ //# sourceMappingURL=index.d.ts.map