|
| 1 | +# HUMAN.md for Bot Framework Web Chat |
| 2 | + |
| 3 | +## Coding |
| 4 | + |
| 5 | +### Package management |
| 6 | + |
| 7 | +- When adding dependencies, use `npm install` |
| 8 | + - Do not add it to workspace root |
| 9 | + - If it is an existing package, must use consistent version: either use existing version for the package or consider bumping every dependents to latest |
| 10 | +- Unless stated otherwise, avoid Node.js packages or polyfills |
| 11 | + - Use `ReadableStream`, `WritableStream`, `TransformStream`, instead of Node.js `buffer` |
| 12 | + - Use Web Cryptography instead of Node.js `crypto` |
| 13 | + - Do not use `fs`-like or `net`-like packages |
| 14 | + - Do not use any Browserify-like packages |
| 15 | +- Unless stated otherwise, verify newly added packages and transient packages must be either platform-neutral, browser-specific, or React-specific |
| 16 | +- Do not add external/publishing packages unless explicitly requested |
| 17 | +- Always prefix internal/non-publishing packages with `@msinternal/` to prevent package squatting |
| 18 | + |
| 19 | +### Platform level |
| 20 | + |
| 21 | +| Package family | Level | Platform-neutral | React Native | Full Browser | React | Node.js | |
| 22 | +| ------------------------ | ------------ | ---------------- | ------------ | ------------ | ----- | ------- | |
| 23 | +| `base` | Neutral | Yes | No | No | No | No | |
| 24 | +| `core` | Neutral | Yes | No | No | No | No | |
| 25 | +| `api` | React Native | Yes | Yes | No | No | No | |
| 26 | +| `react-*` | React Native | Yes | Yes | No | No | No | |
| 27 | +| `redux-*` | React Native | Yes | Yes | No | No | No | |
| 28 | +| `component` | React (HTML) | Yes | Yes | Yes | Yes | No | |
| 29 | +| `bundle` | React (HTML) | Yes | Yes | Yes | Yes | No | |
| 30 | +| `fluent-theme`/`*-theme` | React (HTML) | Yes | Yes | Yes | Yes | No | |
| 31 | +| `support` | Neutral | Yes | No | Yes | No | No | |
| 32 | + |
| 33 | +In the order of platform support: |
| 34 | + |
| 35 | +1. Neutral: JavaScript engine only, logic only, UI-agnostic, minimal |
| 36 | +2. React Native: browser-like but not full browser, mobile app or web app |
| 37 | +3. React (HTML): full browser, web app |
0 commit comments