# TypeScript for tslab

## Changes from TypeScript

Base version: `v5.1.3`

- Exports `findPrecedingToken` and `findNextToken` from `services/utilities.ts`.
- Exports `Completions.getCompletionsAtPosition` from `services/completions.ts`
  with exportable arguments (`getCompletionsAtPositionForTslab`).
- Exports `getDefaultTypeRoots` from `compiler/moduleNameResolver.ts`
- Exports `locals` from `SourceFile`.
- Exports `getDefaultTypeRoots` from `compiler/moduleNameResolver.ts`.
- Defines `ts.getQuickInfoAtPosition`.
- Defines `ts.getPreEmitDiagnosticsOfFiles`.
- Remove `"bin"` from `package.json`.
- Remove `"should be acknowledged when they change"` from `unittests/publicApi.ts` to skip the compatibility validation.
- Add `disableTopLevelAwait` to the compiler options to support TLA properly in tslab.
- Add `getNullTransformationContext` to export `nullTransformationContext`.

## Merge with a newer version of TypeScript

- Fetch a new release: `git fetch upstream`
- Back to "Updates for tslab" commit: `git reset --hard HEAD@{2}`
- Rebase the commit to the new tag: `git rebase -i --onto v3.7.3 v3.7.2 master`

## Release

**Build**

```
npm ci && npm run gulp lint && npm run gulp runtests && npm run gulp LKG && npm run gulp clean
```

**publish**

Set the new version in package.json

```
yarn semver "3.6.4-tslab" -i prerelease --preid tslab
```

Then, build the compiler and run:

```
npm publish --access=public
```

Note that `--access=public` is necessary because
[*Scoped packages are private by default*](https://docs.npmjs.com/about-scopes).

## Notes for TypeScript codebase

- Files included in `typescript.js` are defined in `src/typescript.ts` with `import * as ts from "./_namespaces/ts";`.
  For example, when we want to add a new file in `src/services`, add a reference to the new file in
  `src/services/_namespaces/ts.ts`.

# TypeScript

[![GitHub Actions CI](https://github.com/microsoft/TypeScript/workflows/CI/badge.svg)](https://github.com/microsoft/TypeScript/actions?query=workflow%3ACI)
[![Devops Build Status](https://dev.azure.com/typescript/TypeScript/_apis/build/status/Typescript/node10)](https://dev.azure.com/typescript/TypeScript/_build?definitionId=7)
[![npm version](https://badge.fury.io/js/typescript.svg)](https://www.npmjs.com/package/typescript)
[![Downloads](https://img.shields.io/npm/dm/typescript.svg)](https://www.npmjs.com/package/typescript)
[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/microsoft/TypeScript/badge)](https://api.securityscorecards.dev/projects/github.com/microsoft/TypeScript)


[TypeScript](https://www.typescriptlang.org/) is a language for application-scale JavaScript. TypeScript adds optional types to JavaScript that support tools for large-scale JavaScript applications for any browser, for any host, on any OS. TypeScript compiles to readable, standards-based JavaScript. Try it out at the [playground](https://www.typescriptlang.org/play/), and stay up to date via [our blog](https://blogs.msdn.microsoft.com/typescript) and [Twitter account](https://twitter.com/typescript).

Find others who are using TypeScript at [our community page](https://www.typescriptlang.org/community/).

## Installing

For the latest stable version:

```bash
npm install -D typescript
```

For our nightly builds:

```bash
npm install -D typescript@next
```

## Contribute

There are many ways to [contribute](https://github.com/microsoft/TypeScript/blob/main/CONTRIBUTING.md) to TypeScript.
* [Submit bugs](https://github.com/microsoft/TypeScript/issues) and help us verify fixes as they are checked in.
* Review the [source code changes](https://github.com/microsoft/TypeScript/pulls).
* Engage with other TypeScript users and developers on [StackOverflow](https://stackoverflow.com/questions/tagged/typescript).
* Help each other in the [TypeScript Community Discord](https://discord.gg/typescript).
* Join the [#typescript](https://twitter.com/search?q=%23TypeScript) discussion on Twitter.
* [Contribute bug fixes](https://github.com/microsoft/TypeScript/blob/main/CONTRIBUTING.md).

This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see
the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com)
with any additional questions or comments.

## Documentation

*  [TypeScript in 5 minutes](https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html)
*  [Programming handbook](https://www.typescriptlang.org/docs/handbook/intro.html)
*  [Homepage](https://www.typescriptlang.org/)

## Roadmap

For details on our planned features and future direction please refer to our [roadmap](https://github.com/microsoft/TypeScript/wiki/Roadmap).
