{"version":3,"file":"lbs.cjs","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,OAAA,GAAA,qBAAA,iBAAA,CAAuB,GAAG,SAAS,CAAC,CAAC,EACjD,MACJ,CAAC;CAED,IAAI,QAAQ,MAAM,GACd,OAAO,QAAQ,MAAM;CAOzB,QAAO,OAAA,GAAA,qBAAA,iBAAA,CAJoC,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,YAAA,OAA8B;CAEjD,UAAU,YAAY,oBAClB,aAAY;EACR,OAAO,SAAA,GAAA,YAAA,GAAA,CAAW;GACd,UAAU,SAAS,OAAO;GAC1B,WAAW,SAAS,OAAO;EAC/B,CAAC,CAAC;CACN,IACA,QAAO;EACH,OAAO,SAAA,GAAA,YAAA,IAAA,CAAY,IAAI,MAAM,IAAI,OAAO,CAAC,CAAC;CAC9C,CACJ;CAEA,OAAO,OAAO;AAClB;;;;;;;;;;;;;;;;;;;;;;;ACDA,SAAgB,qBAAiD;CAC7D,OAAO,UACD,qBAAuB,IACvB,qBAAsB;AAChC"}