UNPKG

minigame-std

Version:

Cross-platform standard library for WeChat minigame and web browsers with unified APIs for crypto, fs, fetch, storage, and more.

1 lines 4.11 kB
{"version":3,"file":"lbs.mjs","names":[],"sources":["../src/macros/env.ts","../src/std/lbs/mina_lbs.ts","../src/std/lbs/web_lbs.ts","../src/std/lbs/mod.ts"],"sourcesContent":["/**\n * @internal\n * 小游戏环境宏模块。\n */\n\n/**\n * 小游戏环境宏。\n *\n * 可通过打包工具在 build 时修改,如 esbuild webpack vite 等。\n */\ndeclare const __MINIGAME_STD_MINA__: boolean;\n\n/**\n * 如果在小游戏环境中返回 true,否则返回 false。\n */\nexport const IS_MINA = __MINIGAME_STD_MINA__;\n","/**\n * @internal\n * 小游戏平台的地理位置服务实现。\n */\n\nimport { type AsyncIOResult } from 'happy-rusty';\nimport { asyncIOResultify } from '../utils/mod.ts';\nimport type { GeoPosition } from './lbs_defines.ts';\n\n/**\n * 获取当前 geo 坐标。\n * @returns 异步的经纬度结果。\n */\nexport async function getCurrentPosition(): AsyncIOResult<GeoPosition> {\n const hasFuzzy = typeof wx.getFuzzyLocation === 'function';\n\n const getLocation = hasFuzzy ? wx.getFuzzyLocation : wx.getLocation;\n const scope = hasFuzzy ? 'scope.userFuzzyLocation' : 'scope.userLocation';\n\n const authRes = await asyncIOResultify(wx.authorize)({\n scope,\n });\n\n if (authRes.isErr()) {\n return authRes.asErr();\n }\n\n const locationRes = await asyncIOResultify(getLocation)({\n type: 'wgs84',\n });\n\n return locationRes.map(pos => ({\n latitude: pos.latitude,\n longitude: pos.longitude,\n }));\n}","/**\n * @internal\n * Web 平台的地理位置服务实现。\n */\n\nimport { Err, Ok, type AsyncIOResult, type IOResult } from 'happy-rusty';\nimport { Future } from 'tiny-future';\nimport type { GeoPosition } from './lbs_defines.ts';\n\n/**\n * 获取当前 geo 坐标。\n * @returns 异步的经纬度结果。\n */\nexport function getCurrentPosition(): AsyncIOResult<GeoPosition> {\n const future = new Future<IOResult<GeoPosition>>();\n\n navigator.geolocation.getCurrentPosition(\n position => {\n future.resolve(Ok({\n latitude: position.coords.latitude,\n longitude: position.coords.longitude,\n }));\n },\n err => {\n future.resolve(Err(new Error(err.message)));\n },\n );\n\n return future.promise;\n}","/**\n * 位置服务模块(Location Based Service),提供获取地理位置坐标的功能。\n * @module lbs\n */\nimport { type AsyncIOResult } from 'happy-rusty';\nimport { IS_MINA } from '../../macros/env.ts';\nimport type { GeoPosition } from './lbs_defines.ts';\nimport { getCurrentPosition as minaGetCurrentPosition } from './mina_lbs.ts';\nimport { getCurrentPosition as webGetCurrentPosition } from './web_lbs.ts';\n\nexport * from './lbs_defines.ts';\n\n/**\n * 获取当前 geo 坐标。\n * @returns 当前经纬度。\n * @since 1.7.0\n * @example\n * ```ts\n * const result = await getCurrentPosition();\n * if (result.isOk()) {\n * const pos = result.unwrap();\n * console.log('纬度:', pos.latitude);\n * console.log('经度:', pos.longitude);\n * } else {\n * console.error('获取位置失败:', result.unwrapErr());\n * }\n * ```\n */\nexport function getCurrentPosition(): AsyncIOResult<GeoPosition> {\n return IS_MINA\n ? minaGetCurrentPosition()\n : webGetCurrentPosition();\n}"],"mappings":";;;;;;;AAeA,MAAa,UAAU;;;;;;;ACFvB,eAAsB,uBAAiD;CACnE,MAAM,WAAW,OAAO,GAAG,qBAAqB;CAEhD,MAAM,cAAc,WAAW,GAAG,mBAAmB,GAAG;CACxD,MAAM,QAAQ,WAAW,4BAA4B;CAErD,MAAM,UAAU,MAAM,iBAAiB,GAAG,SAAS,CAAC,CAAC,EACjD,MACJ,CAAC;CAED,IAAI,QAAQ,MAAM,GACd,OAAO,QAAQ,MAAM;CAOzB,QAAO,MAJmB,iBAAiB,WAAW,CAAC,CAAC,EACpD,MAAM,QACV,CAAC,EAAA,CAEkB,KAAI,SAAQ;EAC3B,UAAU,IAAI;EACd,WAAW,IAAI;CACnB,EAAE;AACN;;;;;;;;;;;ACtBA,SAAgB,uBAAiD;CAC7D,MAAM,SAAS,IAAI,OAA8B;CAEjD,UAAU,YAAY,oBAClB,aAAY;EACR,OAAO,QAAQ,GAAG;GACd,UAAU,SAAS,OAAO;GAC1B,WAAW,SAAS,OAAO;EAC/B,CAAC,CAAC;CACN,IACA,QAAO;EACH,OAAO,QAAQ,IAAI,IAAI,MAAM,IAAI,OAAO,CAAC,CAAC;CAC9C,CACJ;CAEA,OAAO,OAAO;AAClB;;;;;;;;;;;;;;;;;;;ACDA,SAAgB,qBAAiD;CAC7D,OAAO,UACD,qBAAuB,IACvB,qBAAsB;AAChC"}