{"version":3,"sources":["../../src/astro/index.ts","../../src/astro/integration.ts"],"sourcesContent":["export { umami, oddmisc } from './integration';\r\nexport type { UmamiIntegrationOptions, OddmiscIntegrationOptions } from './integration';","import { readFileSync } from 'fs';\r\nimport { fileURLToPath } from 'url';\r\nimport { dirname, join } from 'path';\r\nimport type { AstroIntegration, HookParameters } from 'astro';\r\n\r\nexport interface UmamiIntegrationOptions {\r\n  shareUrl: string | false;\r\n}\r\n\r\nexport interface OddmiscIntegrationOptions {\r\n  umami?: UmamiIntegrationOptions;\r\n}\r\n\r\ntype AstroConfigSetupParams = HookParameters<'astro:config:setup'>;\r\n\r\nfunction injectUmamiRuntime(shareUrl: string | false): string | undefined {\r\n  if (!shareUrl) return;\r\n\r\n  let runtimeCode = '';\r\n  try {\r\n    const __dirname = dirname(fileURLToPath(import.meta.url));\r\n    // dist/astro/ → dist/runtime/client.global.js\r\n    const runtimePath = join(__dirname, '../runtime/client.global.js');\r\n    runtimeCode = readFileSync(runtimePath, 'utf-8');\r\n  } catch {\r\n    console.warn('[oddmisc] 无法读取运行时文件，已跳过客户端注入');\r\n    return;\r\n  }\r\n\r\n  return `\r\n// oddmisc Umami Runtime\r\n${runtimeCode}\r\n\r\nif (typeof window !== 'undefined' && typeof __oddmiscRuntime !== 'undefined') {\r\n  __oddmiscRuntime.initUmamiRuntime(${JSON.stringify({ shareUrl })});\r\n}\r\n`;\r\n}\r\n\r\nexport function umami(options: UmamiIntegrationOptions): AstroIntegration {\r\n  return {\r\n    name: 'oddmisc-umami-integration',\r\n    hooks: {\r\n      'astro:config:setup': ({ injectScript }: AstroConfigSetupParams) => {\r\n        const code = injectUmamiRuntime(options.shareUrl);\r\n        if (code) injectScript('page', code);\r\n      }\r\n    }\r\n  };\r\n}\r\n\r\nexport function oddmisc(options: OddmiscIntegrationOptions = {}): AstroIntegration {\r\n  return {\r\n    name: 'oddmisc-integration',\r\n    hooks: {\r\n      'astro:config:setup': ({ injectScript }: AstroConfigSetupParams) => {\r\n        if (options.umami) {\r\n          const code = injectUmamiRuntime(options.umami.shareUrl);\r\n          if (code) injectScript('page', code);\r\n        }\r\n      }\r\n    }\r\n  };\r\n}\r\n"],"mappings":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,UAAAC,IAAA,eAAAC,EAAAJ,GCAA,IAAAK,EAA6B,cAC7BC,EAA8B,eAC9BC,EAA8B,gBAF9BC,EAAA,GAeA,SAASC,EAAmBC,EAA8C,CACxE,GAAI,CAACA,EAAU,OAEf,IAAIC,EAAc,GAClB,GAAI,CACF,IAAMC,KAAY,cAAQ,iBAAcJ,EAAY,GAAG,CAAC,EAElDK,KAAc,QAAKD,EAAW,6BAA6B,EACjED,KAAc,gBAAaE,EAAa,OAAO,CACjD,MAAQ,CACN,QAAQ,KAAK,wHAA8B,EAC3C,MACF,CAEA,MAAO;AAAA;AAAA,EAEPF,CAAW;AAAA;AAAA;AAAA,sCAGyB,KAAK,UAAU,CAAE,SAAAD,CAAS,CAAC,CAAC;AAAA;AAAA,CAGlE,CAEO,SAASI,EAAMC,EAAoD,CACxE,MAAO,CACL,KAAM,4BACN,MAAO,CACL,qBAAsB,CAAC,CAAE,aAAAC,CAAa,IAA8B,CAClE,IAAMC,EAAOR,EAAmBM,EAAQ,QAAQ,EAC5CE,GAAMD,EAAa,OAAQC,CAAI,CACrC,CACF,CACF,CACF,CAEO,SAASC,EAAQH,EAAqC,CAAC,EAAqB,CACjF,MAAO,CACL,KAAM,sBACN,MAAO,CACL,qBAAsB,CAAC,CAAE,aAAAC,CAAa,IAA8B,CAClE,GAAID,EAAQ,MAAO,CACjB,IAAME,EAAOR,EAAmBM,EAAQ,MAAM,QAAQ,EAClDE,GAAMD,EAAa,OAAQC,CAAI,CACrC,CACF,CACF,CACF,CACF","names":["astro_exports","__export","oddmisc","umami","__toCommonJS","import_fs","import_url","import_path","import_meta","injectUmamiRuntime","shareUrl","runtimeCode","__dirname","runtimePath","umami","options","injectScript","code","oddmisc"]}