{"_id":"@1campus/gadget-sdk","name":"@1campus/gadget-sdk","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@1campus/gadget-sdk","version":"0.1.0","description":"1Campus Gadget SDK — TypeScript type definitions and utilities","types":"index.d.ts","publishConfig":{"access":"public"},"keywords":["1campus","gadget","types","typescript"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/1campus/web.git","directory":"gadget-sdk"},"_id":"@1campus/gadget-sdk@0.1.0","gitHead":"37500561d798bb0732b7d85297155b04d44db009","bugs":{"url":"https://github.com/1campus/web/issues"},"homepage":"https://github.com/1campus/web#readme","_nodeVersion":"24.2.0","_npmVersion":"11.3.0","dist":{"integrity":"sha512-s+5e+eSgNXq5sdOe5nOiwtBapvVl5oevii0EEGR1OvlsA166q2MDH7yhWWFwA1OWvG27KUM9dmdcp+fHkbYggg==","shasum":"276293a128d9cff1c655f56a00cc62c1871acb92","tarball":"https://registry.npmjs.org/@1campus/gadget-sdk/-/gadget-sdk-0.1.0.tgz","fileCount":3,"unpackedSize":8430,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCAoMZklcc9dPqQnNdisUtjZNYu/2rj9BX2qkANrsZ21AIgBa7/gIfl1rKzAVBMpQqpWkZmw6ymDZJ3JlElEpHxZc4="}]},"_npmUser":{"name":"yaoming","email":"yaoming.huang@ischool.com.tw"},"directories":{},"maintainers":[{"name":"yaoming","email":"yaoming.huang@ischool.com.tw"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/gadget-sdk_0.1.0_1775447748844_0.08176914897427423"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-06T03:55:48.676Z","0.1.0":"2026-04-06T03:55:48.990Z","modified":"2026-04-06T03:55:49.309Z"},"maintainers":[{"name":"yaoming","email":"yaoming.huang@ischool.com.tw"}],"description":"1Campus Gadget SDK — TypeScript type definitions and utilities","homepage":"https://github.com/1campus/web#readme","keywords":["1campus","gadget","types","typescript"],"repository":{"type":"git","url":"git+https://github.com/1campus/web.git","directory":"gadget-sdk"},"bugs":{"url":"https://github.com/1campus/web/issues"},"license":"MIT","readme":"# @1campus/gadget-sdk\n\nTypeScript type definitions for the **1Campus Gadget API**.\n\n提供全域 `gadget` 變數的完整型別定義，讓 gadget 開發者在 IDE 中享有 intellisense、型別檢查與 JSDoc 文件提示。\n\n## 安裝\n\n```bash\n# pnpm\npnpm add -D @1campus/gadget-sdk\n\n# npm\nnpm install -D @1campus/gadget-sdk\n\n# yarn\nyarn add -D @1campus/gadget-sdk\n```\n\n## 設定\n\n在 `tsconfig.json` 的 `types` 加入 `@1campus/gadget-sdk`：\n\n```json\n{\n  \"compilerOptions\": {\n    \"types\": [\"@1campus/gadget-sdk\"]\n  }\n}\n```\n\n或在程式碼中加入 triple-slash directive：\n\n```ts\n/// <reference types=\"@1campus/gadget-sdk\" />\n```\n\n## 使用範例\n\n### 取得當前角色\n\n```ts\nconst role = gadget.getRole();\nconsole.log(`Current role: ${role}`); // teacher / student / parent / admin\n```\n\n### 呼叫 DSA Service\n\n```ts\nconst contract = gadget.getContract('1campus.mobile.v2.teacher');\n\ncontract.send({\n  service: 'classroom.GetStudents',\n  body: '<Request><Type>Class</Type><UID>1446</UID></Request>',\n  result: (response, error) => {\n    if (error) {\n      console.error('呼叫失敗', error);\n      return;\n    }\n    console.log('學生資料', response);\n  }\n});\n```\n\n### 取得 Application 資訊\n\n```ts\nconst app = gadget.getApplication();\nconsole.log(`accessPoint: ${app.accessPoint}`); // 例如 dev.sh_d\n```\n\n### 讀取自訂 params\n\n```ts\n// gadget 設定中的 params JSON\nconst myConfig = gadget.params['myConfigKey'];\n```\n\n## 已支援 API\n\n| API | 說明 |\n|-----|------|\n| `getContract(name)` | 取得指定 contract 的 DSA connection |\n| `connect(ap, acc, pwd)` | 直接連線到指定 accesspoint |\n| `getApplication()` | 取得 `{ accessPoint }` |\n| `getRole()` | 取得當前角色 |\n| `params` | 開發者自訂參數 |\n\n其他 API（如 `getUserInfo`、`getPreference` 等）在型別定義中標註為 **Not supported in current version**，呼叫時會顯示 console.warn。\n\n## 發佈到 npm\n\n```bash\n# 1. 更新 package.json 的 version\n\n# 2. 預覽發佈內容\ncd gadget-sdk\nnpm pack --dry-run\n\n# 3. 產生 Granular Access Token（因為 @1campus org 強制要求 2FA）\n#    去 https://www.npmjs.com/settings/<username>/tokens\n#    → Generate New Token → Granular Access Token\n#    → Packages: Read and write\n#    → 勾選 \"Allow publishing with this token without 2FA\"\n\n# 4. 發佈\nnpm publish --access public --registry https://registry.npmjs.org/ --//registry.npmjs.org/:_authToken=<你的token>\n\n# 5. 發佈完成後去 npmjs 網頁刪掉該 token（一次性使用）\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-5f41cbb7ee49fd61b84d3badcc03acca"}