Screenshot / Code Snippet
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 StackExchange
, StackOverflow
, CHAT
, Svg
, and Stacks
global object definitions.
Change log
Please note that the major version 2 starts from the patch version 2.0.2 due to the technical difficulties we encountered when bumping the major version.
Since | Feature | Definitions/augmentations | Known Limitations |
---|---|---|---|
1.0.0 | augments Stacks exposed by the @stackoverflow/stacks package |
Adds missing classes and helper methods like showModal /hideModal (see example usage 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 the CHAT object |
Full definition (for example, CHAT.user.canModerate() ) |
|
1.2.1 | adds question nested object to StackExchange global object |
Three new method definitions: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: documentation for types and stricter AllPlacements |
|
1.3.0 | adds settings object for StackExchange object |
Partial definition - adds account, flagging, markdown, and site-wide settings definitions | |
1.4.0 | more type definitions for the CHAT global object courtesy of double-beep |
Full definition for UserInformation , RoomUsersInfo , and several methods |
|
1.5.0 | methods on StackExchange global object |
adds ready and gaReady defer methods |
|
2.0.2 | Stacks namespace declaration merging; package splitting |
Merges Stacks declaration with official TypeScript source; splits the declarations into 3 submodules: chat , stackexchange , and stacks (can be imported directly as @userscripters/stackexchange-global-types/lib/<module> if you only need some of the global types or as a bundle if you import the package with @userscripters/stackexchange-global-types ) |
|
2.1.0 | adds type definitions for the Svg object |
Full definition of all 228 icon helpers courtesy of double-beep | |
2.1.1 | improved Stacks definitions |
ModalController defintion & tests |
|
2.2.0 | new testing framework | switched to tsd for testing - please upgrade if you see a "Patch file found for package definitelytyped-header-parser" error when installing the package | |
2.3.0 | adds type definitions for the StackOverflow object |
Full definition of all enums | |
2.4.0 | adds realtime property and corresponding Realtime interface on the global StackExchange object |
Full definition of all properties and methods | |
2.4.1 | adds Stimulus application singleton and controller utilities to the Stacks namespace |
Courtesy of Martijn Pieters: ControllerDefinition interface, createController and addController utilities, application singleton |
|
2.4.2 | adds missing StackExchange.helpers defintions |
added addLightbox , bindMovablePopups , showBannerMessage , showErrorMessage , showInfoMessage , and showSuccessMessage helpers |
|
2.5.2 | adds missing StackExchange.vote definitions; updates SVG types; adds missing helpers |
Full definition of all properties and methods; htmlEncode helper and useRawHtml option |
|
2.6.0 | adds all remaining StackExchange.helpers definitions; updates SVG types |
Full definition of every helper | |
2.7.0 | adds more properties of the StackExchange global object |
Courtesy of Martijn Pieters: Stacks declarations now use official typings. interfaces: CommentsSettings , ElectionsSettings , IntercomSettings , LegalSettings , MentionsSettings , PathsSettings , QuestionsSettings , SnippetsSettings , SubscriptionsSettings , TopBarSettings , VoteBountyInitOptions .more settings properties.properties: sidebar , snippets , vote_bounty , vote_closingAndFlagging . |
License
The script is licensed under the GPL-3.0-or-later license.
Download
The package is published as both an NPM package and a GitHub package. Can be installed via a package manager like NPM as usual:
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:
@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) set as an access token:
//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
Organization: UserScripters
Contributors (core):
double-beep (with special thanks for initial definitions and docs)
Contributors:
Martijn Pieters
Please, submit bug reports on the source repository. Before adding a new one, please check if it hasn't been raised before.
You can also drop by to chat, we are a friendly bunch.
Code
Source code is written TypeScript (d.ts
declaration files).
The project is using tsd
(see repo) for unit-testing types.
Contributions are welcome, you can always submit a PR here.