{"_id":"@drmrkj/postmessage-gateway-sdk","name":"@drmrkj/postmessage-gateway-sdk","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@drmrkj/postmessage-gateway-sdk","version":"0.1.0","description":"Opinionated TypeScript template for rapidly building modular npm packages.","type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./vue":{"types":"./dist/vue/index.d.ts","import":"./dist/vue/index.js"},"./browser":{"default":"./dist/browser/gateway.iife.global.js"}},"keywords":["typescript","library","template","npm","tsup"],"lint-staged":{"*.{ts,tsx,js,json,md}":"prettier --write","src/**/*.{ts,tsx}":"eslint --cache --fix"},"engines":{"node":">=18.18"},"packageManager":"pnpm@8.15.7","author":{"name":"Your Name","email":"you@example.com"},"license":"MIT","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"devDependencies":{"@changesets/cli":"^2.27.9","@typescript-eslint/eslint-plugin":"^8.8.1","@typescript-eslint/parser":"^8.8.1","typescript-eslint":"^8.8.1","@vitest/coverage-v8":"^2.1.5","eslint":"^9.12.0","eslint-config-prettier":"^9.1.0","husky":"^9.1.6","lint-staged":"^15.2.10","prettier":"^3.3.3","rimraf":"^6.0.1","tsup":"^8.2.4","tsx":"^4.19.2","typedoc":"^0.26.11","typescript":"^5.6.3","vitest":"^2.1.5","vue":"^3.3.0"},"dependencies":{"deepmerge":"^4.3.1"},"peerDependencies":{"vue":"^3.3.0"},"scripts":{"clean":"rimraf dist .turbo","lint":"eslint \"src/**/*.{ts,tsx}\" \"tests/**/*.ts\"","lint:fix":"pnpm run lint -- --fix","format":"prettier --write .","format:check":"prettier --check .","typecheck":"tsc -p tsconfig.build.json --noEmit","build":"pnpm run clean && tsup","dev":"tsup --watch","test":"vitest run","test:watch":"vitest","coverage":"vitest run --coverage","docs":"typedoc","changeset":"changeset","release":"changeset version && pnpm install --ignore-scripts && pnpm run build && changeset publish","example":"tsx examples/basic-usage.ts"},"_id":"@drmrkj/postmessage-gateway-sdk@0.1.0","_integrity":"sha512-3Q27k8o1+W5uZAh8RY01591iyW7zftXFSpYpslTBWcJyesp3T+PxgYQGw73mzLmqxUxxOrehzgOxvNmjjFV23g==","_resolved":"C:\\Users\\ease\\AppData\\Local\\Temp\\b0ee268c9e44b25d8d4723f6aa3947e7\\drmrkj-postmessage-gateway-sdk-0.1.0.tgz","_from":"file:drmrkj-postmessage-gateway-sdk-0.1.0.tgz","_nodeVersion":"23.11.1","_npmVersion":"10.9.2","dist":{"integrity":"sha512-3Q27k8o1+W5uZAh8RY01591iyW7zftXFSpYpslTBWcJyesp3T+PxgYQGw73mzLmqxUxxOrehzgOxvNmjjFV23g==","shasum":"50b1142d1e81a3b3e762db650ead9af9ae8766b3","tarball":"https://registry.npmjs.org/@drmrkj/postmessage-gateway-sdk/-/postmessage-gateway-sdk-0.1.0.tgz","fileCount":21,"unpackedSize":99999,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIA72yFm/BoXu7JQSgPlliILiWUlZgsLZS/0qeQlJa82KAiA3wU7YVv0k64mbo4DjjEsXXsKd5bZweeEigKcBMZ4hjw=="}]},"_npmUser":{"name":"drmrkj","email":"2721183250@qq.com"},"directories":{},"maintainers":[{"name":"drmrkj","email":"2721183250@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/postmessage-gateway-sdk_0.1.0_1772087475532_0.7411591882394395"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-26T06:31:15.357Z","0.1.0":"2026-02-26T06:31:15.681Z","modified":"2026-02-26T06:31:15.943Z"},"maintainers":[{"name":"drmrkj","email":"2721183250@qq.com"}],"description":"Opinionated TypeScript template for rapidly building modular npm packages.","keywords":["typescript","library","template","npm","tsup"],"author":{"name":"Your Name","email":"you@example.com"},"license":"MIT","readme":"# @drmrkj/postmessage-gateway-sdk\n\nPostMessage 网关 SDK，用于在子页面中定义可调用的 API 与事件广播，通过 window.postMessage 与父页面通信。\n\n## 安装\n- pnpm add @drmrkj/postmessage-gateway-sdk\n\n## 快速使用（子页面）\n```ts\nimport { ChildInterfaceGateway } from '@drmrkj/postmessage-gateway-sdk';\n\nconst gateway = new ChildInterfaceGateway({\n  defaultEnabled: { ping: true, greet: true, onHello: true }\n});\n\ngateway.define('ping', () => 'pong', 'API', true);\ngateway.define('greet', (data: { name: string }) => `Hello, ${data.name}!`, 'API', true);\ngateway.define('onHello', null, 'EVENT', true);\n\ngateway.broadcast('onHello', { msg: 'hello' });\n```\n\n## 服务管理\n- enable(name) / disable(name)\n- getServiceStatus()\n- setHandler(name, handler) / setHandlers(map)\n\n## 配置辅助\n- createDefaultEnabled(input, defaultValue?)\n- mergeDefaultEnabled(base, overrides)\n- createEnabledResolver(map, fallbackDefault?)\n- readDefaultEnabledFromGlobal(globalKey?)\n\n## Vue 集成\n```ts\nimport { createGatewayStore } from '@drmrkj/postmessage-gateway-sdk/vue';\n\nconst store = createGatewayStore({ defaultEnabled: { ping: true } });\nconst gw = store.initGateway();\nstore.triggerEvent('onHello', { msg: 'hello' });\nstore.destroyGateway();\n```\n\n## 浏览器 IIFE\n- 构建产物：dist/browser/gateway.iife.global.js\n- 全局对象：GatewaySDK.ChildInterfaceGateway\n```html\n<script src=\"/node_modules/@drmrkj/postmessage-gateway-sdk/dist/browser/gateway.iife.global.js\"></script>\n<script>\n  const gw = new GatewaySDK.ChildInterfaceGateway();\n  gw.define('ping', () => 'pong', 'API', true);\n  gw.broadcast('onHello', { msg: 'hello' });\n</script>\n```\n\n## 导出子路径\n- 主入口：@drmrkj/postmessage-gateway-sdk\n- Vue 入口：@drmrkj/postmessage-gateway-sdk/vue\n- 浏览器入口：@drmrkj/postmessage-gateway-sdk/browser\n","readmeFilename":"README.md","_rev":"1-1c5293fe3cdacb7051c29e2475faf520"}