<!-- thumbnail: https://example.com/some-image.png --> <!-- version: 1.4.0 --> <!-- tag: library --> <!-- excerpt: Stack Exchange global types adds or augments type definitions for global objects exposed by Stack Exchange to aid userscript authors --> ## Screenshot / Code Snippet [![animated usage example][1]][1] ## About Stack Exchange global types is a type declaration package adding or augmenting type definitions for global objects exposed by Stack Exchange for client-side consumption on pages of network sites. Currently, the package includes the following: | Since | Feature | Definitions/augmentations | Known Limitations | | - | - | - | - | | 1.0.0 |augments `Stacks` exposed by the [@stackoverflow/stacks][2] package | Adds missing classes and helper methods like `showModal`/`hideModal` (see [example usage][3] in official Stacks docs) | | | 1.1.0 | adds type definitions for `StackExchange` object (exposed on all pages on the network sites) | Full definition (for example, `StackExchange.options.user.isRegistered`) - as most of the Stack Exchange codebase is not open-source, so there are no type definitions available to augment | v1.1.1 only includes some of the exposed helper methods as each needs to be tested | | 1.2.0 | adds type definitions for `CHAT` global object | Full definition (for example, `CHAT.user.canModerate()`) | | 1.2.1 | adds `question` nested object to `StackExchange` global object | Three new method definitions:<br>`getQuestionId()`, `canViewVoteCounts()`, `scrollToPost(postId)` | `getQuestionId` throws an error on non-post pages, but that's not expressable via declarations | | 1.2.2 | type docs & improvements | Courtesy of [double-beep][4]: documentation for types and stricter `AllPlacements` | | [1.3.0][5] | adds `settings` object for `StackExchange` object | Partial definition - adds account, flagging, markdown, and site-wide settings definitions | | | [1.4.0][6] | more type definitions for the `CHAT` global object courtesy of [double-beep][4] | Full definition for `UserInformation`, `RoomUsersInfo`, and several methods | ### License The script is licensed under the [GPL-3.0-or-later][7] license. ### Download The package is published as both an [NPM package][8] and a [GitHub package][9]. Can be installed via a package manager like NPM as usual: ```shell npm install --save-dev @userscripters/stackexchange-global-types ``` If you opt to install it from the GitHub registry, please note that it only supports scoped packages, you will need a simple .npmrc file at your project root: ```npmrc @userscripters:registry=https://npm.pkg.github.com ``` You will also need to be logged in to GitHub. An easy way to do so is to have a global `.npmrc` with your PAT ([personal access token][7]) set as an access token: ```npmrc //npm.pkg.github.com/:_authToken=<your token here> ``` ### Platform The type declarations are intended to be used with TypeScript/JavaScript projects targeting browsers. ## Contact Author: [Oleg Valter][10]<br> Organization: [UserScripters][11] Contributors (core):<br> [double-beep][4] (with special thanks for initial definitions and docs) Please, submit bug reports on the [source repository][12]. Before adding a new one, please check if it hasn't been raised before. You can also [drop by to chat][13], we are a friendly bunch. ## Code [Source code][14] is written TypeScript (`d.ts` declaration files). The project is using `dtslint` (see [repo][15]) for unit-testing types. Contributions are welcome, you can always submit a [PR here][16]. [1]: https://i.sstatic.net/v21na.gif [2]: https://www.npmjs.com/package/@stackoverflow/stacks [3]: https://stackoverflow.design/product/components/modals/#helpers [4]: https://stackoverflow.com/users/10607772/double-beep [5]: https://github.com/userscripters/stackexchange-global-types/releases/tag/v1.3.0 [6]: https://github.com/userscripters/stackexchange-global-types/releases/tag/v1.4.0 [7]: https://spdx.org/licenses/GPL-3.0-or-later [8]: https://www.npmjs.com/package/@userscripters/stackexchange-global-types [9]: https://github.com/userscripters/stackexchange-global-types/packages/922352 [10]: https://stackoverflow.com/users/11407695/oleg-valter [11]: https://github.com/userscripters [12]: https://github.com/userscripters/stackexchange-global-types/issues [13]: https://chat.stackoverflow.com/rooms/214345/userscript-newbies-and-friends [14]: https://github.com/userscripters/stackexchange-global-types/blob/master/index.d.ts [15]: https://github.com/microsoft/dtslint [16]: https://github.com/userscripters/stackexchange-global-types/pulls