Save current BZZZ config-ui state before CHORUS branding update
🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
21
install/config-ui/node_modules/sucrase/LICENSE
generated
vendored
Normal file
21
install/config-ui/node_modules/sucrase/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2012-2018 various contributors (see AUTHORS)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
295
install/config-ui/node_modules/sucrase/README.md
generated
vendored
Normal file
295
install/config-ui/node_modules/sucrase/README.md
generated
vendored
Normal file
@@ -0,0 +1,295 @@
|
||||
# Sucrase
|
||||
|
||||
[](https://github.com/alangpierce/sucrase/actions)
|
||||
[](https://www.npmjs.com/package/sucrase)
|
||||
[](https://packagephobia.now.sh/result?p=sucrase)
|
||||
[](LICENSE)
|
||||
[](https://gitter.im/sucrasejs/Lobby)
|
||||
|
||||
## [Try it out](https://sucrase.io)
|
||||
|
||||
## Quick usage
|
||||
|
||||
```bash
|
||||
yarn add --dev sucrase # Or npm install --save-dev sucrase
|
||||
node -r sucrase/register main.ts
|
||||
```
|
||||
|
||||
Using the [ts-node](https://github.com/TypeStrong/ts-node) integration:
|
||||
|
||||
```bash
|
||||
yarn add --dev sucrase ts-node typescript
|
||||
./node_modules/.bin/ts-node --transpiler sucrase/ts-node-plugin main.ts
|
||||
```
|
||||
|
||||
## Project overview
|
||||
|
||||
Sucrase is an alternative to Babel that allows super-fast development builds.
|
||||
Instead of compiling a large range of JS features to be able to work in Internet
|
||||
Explorer, Sucrase assumes that you're developing with a recent browser or recent
|
||||
Node.js version, so it focuses on compiling non-standard language extensions:
|
||||
JSX, TypeScript, and Flow. Because of this smaller scope, Sucrase can get away
|
||||
with an architecture that is much more performant but less extensible and
|
||||
maintainable. Sucrase's parser is forked from Babel's parser (so Sucrase is
|
||||
indebted to Babel and wouldn't be possible without it) and trims it down to a
|
||||
focused subset of what Babel solves. If it fits your use case, hopefully Sucrase
|
||||
can speed up your development experience!
|
||||
|
||||
**Sucrase has been extensively tested.** It can successfully build
|
||||
the [Benchling](https://benchling.com/) frontend code,
|
||||
[Babel](https://github.com/babel/babel),
|
||||
[React](https://github.com/facebook/react),
|
||||
[TSLint](https://github.com/palantir/tslint),
|
||||
[Apollo client](https://github.com/apollographql/apollo-client), and
|
||||
[decaffeinate](https://github.com/decaffeinate/decaffeinate)
|
||||
with all tests passing, about 1 million lines of code total.
|
||||
|
||||
**Sucrase is about 20x faster than Babel.** Here's one measurement of how
|
||||
Sucrase compares with other tools when compiling the Jest codebase 3 times,
|
||||
about 360k lines of code total:
|
||||
|
||||
```text
|
||||
Time Speed
|
||||
Sucrase 0.57 seconds 636975 lines per second
|
||||
swc 1.19 seconds 304526 lines per second
|
||||
esbuild 1.45 seconds 248692 lines per second
|
||||
TypeScript 8.98 seconds 40240 lines per second
|
||||
Babel 9.18 seconds 39366 lines per second
|
||||
```
|
||||
|
||||
Details: Measured on July 2022. Tools run in single-threaded mode without warm-up. See the
|
||||
[benchmark code](https://github.com/alangpierce/sucrase/blob/main/benchmark/benchmark.ts)
|
||||
for methodology and caveats.
|
||||
|
||||
## Transforms
|
||||
|
||||
The main configuration option in Sucrase is an array of transform names. These
|
||||
transforms are available:
|
||||
|
||||
* **jsx**: Enables JSX syntax. By default, JSX is transformed to `React.createClass`,
|
||||
but may be preserved or transformed to `_jsx()` by setting the `jsxRuntime` option.
|
||||
Also adds `createReactClass` display names and JSX context information.
|
||||
* **typescript**: Compiles TypeScript code to JavaScript, removing type
|
||||
annotations and handling features like enums. Does not check types. Sucrase
|
||||
transforms each file independently, so you should enable the `isolatedModules`
|
||||
TypeScript flag so that the typechecker will disallow the few features like
|
||||
`const enum`s that need cross-file compilation. The Sucrase option `keepUnusedImports`
|
||||
can be used to disable all automatic removal of imports and exports, analogous to TS
|
||||
`verbatimModuleSyntax`.
|
||||
* **flow**: Removes Flow type annotations. Does not check types.
|
||||
* **imports**: Transforms ES Modules (`import`/`export`) to CommonJS
|
||||
(`require`/`module.exports`) using the same approach as Babel and TypeScript
|
||||
with `--esModuleInterop`. If `preserveDynamicImport` is specified in the Sucrase
|
||||
options, then dynamic `import` expressions are left alone, which is particularly
|
||||
useful in Node to load ESM-only libraries. If `preserveDynamicImport` is not
|
||||
specified, `import` expressions are transformed into a promise-wrapped call to
|
||||
`require`.
|
||||
* **react-hot-loader**: Performs the equivalent of the `react-hot-loader/babel`
|
||||
transform in the [react-hot-loader](https://github.com/gaearon/react-hot-loader)
|
||||
project. This enables advanced hot reloading use cases such as editing of
|
||||
bound methods.
|
||||
* **jest**: Hoist desired [jest](https://jestjs.io/) method calls above imports in
|
||||
the same way as [babel-plugin-jest-hoist](https://github.com/facebook/jest/tree/master/packages/babel-plugin-jest-hoist).
|
||||
Does not validate the arguments passed to `jest.mock`, but the same rules still apply.
|
||||
|
||||
When the `imports` transform is *not* specified (i.e. when targeting ESM), the
|
||||
`injectCreateRequireForImportRequire` option can be specified to transform TS
|
||||
`import foo = require("foo");` in a way that matches the
|
||||
[TypeScript 4.7 behavior](https://devblogs.microsoft.com/typescript/announcing-typescript-4-7/#commonjs-interoperability)
|
||||
with `module: nodenext`.
|
||||
|
||||
These newer JS features are transformed by default:
|
||||
|
||||
* [Optional chaining](https://github.com/tc39/proposal-optional-chaining): `a?.b`
|
||||
* [Nullish coalescing](https://github.com/tc39/proposal-nullish-coalescing): `a ?? b`
|
||||
* [Class fields](https://github.com/tc39/proposal-class-fields): `class C { x = 1; }`.
|
||||
This includes static fields but not the `#x` private field syntax.
|
||||
* [Numeric separators](https://github.com/tc39/proposal-numeric-separator):
|
||||
`const n = 1_234;`
|
||||
* [Optional catch binding](https://github.com/tc39/proposal-optional-catch-binding):
|
||||
`try { doThing(); } catch { }`.
|
||||
|
||||
If your target runtime supports these features, you can specify
|
||||
`disableESTransforms: true` so that Sucrase preserves the syntax rather than
|
||||
trying to transform it. Note that transpiled and standard class fields behave
|
||||
slightly differently; see the
|
||||
[TypeScript 3.7 release notes](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#the-usedefineforclassfields-flag-and-the-declare-property-modifier)
|
||||
for details. If you use TypeScript, you can enable the TypeScript option
|
||||
`useDefineForClassFields` to enable error checking related to these differences.
|
||||
|
||||
### Unsupported syntax
|
||||
|
||||
All JS syntax not mentioned above will "pass through" and needs to be supported
|
||||
by your JS runtime. For example:
|
||||
|
||||
* Decorators, private fields, `throw` expressions, generator arrow functions,
|
||||
and `do` expressions are all unsupported in browsers and Node (as of this
|
||||
writing), and Sucrase doesn't make an attempt to transpile them.
|
||||
* Object rest/spread, async functions, and async iterators are all recent
|
||||
features that should work fine, but might cause issues if you use older
|
||||
versions of tools like webpack. BigInt and newer regex features may or may not
|
||||
work, based on your tooling.
|
||||
|
||||
### JSX Options
|
||||
|
||||
By default, JSX is compiled to React functions in development mode. This can be
|
||||
configured with a few options:
|
||||
|
||||
* **jsxRuntime**: A string specifying the transform mode, which can be one of three values:
|
||||
* `"classic"` (default): The original JSX transform that calls `React.createElement` by default.
|
||||
To configure for non-React use cases, specify:
|
||||
* **jsxPragma**: Element creation function, defaults to `React.createElement`.
|
||||
* **jsxFragmentPragma**: Fragment component, defaults to `React.Fragment`.
|
||||
* `"automatic"`: The [new JSX transform](https://reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html)
|
||||
introduced with React 17, which calls `jsx` functions and auto-adds import statements.
|
||||
To configure for non-React use cases, specify:
|
||||
* **jsxImportSource**: Package name for auto-generated import statements, defaults to `react`.
|
||||
* `"preserve"`: Don't transform JSX, and instead emit it as-is in the output code.
|
||||
* **production**: If `true`, use production version of functions and don't include debugging
|
||||
information. When using React in production mode with the automatic transform, this *must* be
|
||||
set to true to avoid an error about `jsxDEV` being missing.
|
||||
|
||||
### Legacy CommonJS interop
|
||||
|
||||
Two legacy modes can be used with the `imports` transform:
|
||||
|
||||
* **enableLegacyTypeScriptModuleInterop**: Use the default TypeScript approach
|
||||
to CommonJS interop instead of assuming that TypeScript's `--esModuleInterop`
|
||||
flag is enabled. For example, if a CJS module exports a function, legacy
|
||||
TypeScript interop requires you to write `import * as add from './add';`,
|
||||
while Babel, Webpack, Node.js, and TypeScript with `--esModuleInterop` require
|
||||
you to write `import add from './add';`. As mentioned in the
|
||||
[docs](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-7.html#support-for-import-d-from-cjs-form-commonjs-modules-with---esmoduleinterop),
|
||||
the TypeScript team recommends you always use `--esModuleInterop`.
|
||||
* **enableLegacyBabel5ModuleInterop**: Use the Babel 5 approach to CommonJS
|
||||
interop, so that you can run `require('./MyModule')` instead of
|
||||
`require('./MyModule').default`. Analogous to
|
||||
[babel-plugin-add-module-exports](https://github.com/59naga/babel-plugin-add-module-exports).
|
||||
|
||||
## Usage
|
||||
|
||||
### Tool integrations
|
||||
|
||||
* [Webpack](https://github.com/alangpierce/sucrase/tree/main/integrations/webpack-loader)
|
||||
* [Gulp](https://github.com/alangpierce/sucrase/tree/main/integrations/gulp-plugin)
|
||||
* [Jest](https://github.com/alangpierce/sucrase/tree/main/integrations/jest-plugin)
|
||||
* [Rollup](https://github.com/rollup/plugins/tree/master/packages/sucrase)
|
||||
* [Broccoli](https://github.com/stefanpenner/broccoli-sucrase)
|
||||
|
||||
### Usage in Node
|
||||
|
||||
The most robust way is to use the Sucrase plugin for [ts-node](https://github.com/TypeStrong/ts-node),
|
||||
which has various Node integrations and configures Sucrase via `tsconfig.json`:
|
||||
```bash
|
||||
ts-node --transpiler sucrase/ts-node-plugin
|
||||
```
|
||||
|
||||
For projects that don't target ESM, Sucrase also has a require hook with some
|
||||
reasonable defaults that can be accessed in a few ways:
|
||||
|
||||
* From code: `require("sucrase/register");`
|
||||
* When invoking Node: `node -r sucrase/register main.ts`
|
||||
* As a separate binary: `sucrase-node main.ts`
|
||||
|
||||
Options can be passed to the require hook via a `SUCRASE_OPTIONS` environment
|
||||
variable holding a JSON string of options.
|
||||
|
||||
### Compiling a project to JS
|
||||
|
||||
For simple use cases, Sucrase comes with a `sucrase` CLI that mirrors your
|
||||
directory structure to an output directory:
|
||||
```bash
|
||||
sucrase ./srcDir -d ./outDir --transforms typescript,imports
|
||||
```
|
||||
|
||||
### Usage from code
|
||||
|
||||
For any advanced use cases, Sucrase can be called from JS directly:
|
||||
|
||||
```js
|
||||
import {transform} from "sucrase";
|
||||
const compiledCode = transform(code, {transforms: ["typescript", "imports"]}).code;
|
||||
```
|
||||
|
||||
## What Sucrase is not
|
||||
|
||||
Sucrase is intended to be useful for the most common cases, but it does not aim
|
||||
to have nearly the scope and versatility of Babel. Some specific examples:
|
||||
|
||||
* Sucrase does not check your code for errors. Sucrase's contract is that if you
|
||||
give it valid code, it will produce valid JS code. If you give it invalid
|
||||
code, it might produce invalid code, it might produce valid code, or it might
|
||||
give an error. Always use Sucrase with a linter or typechecker, which is more
|
||||
suited for error-checking.
|
||||
* Sucrase is not pluginizable. With the current architecture, transforms need to
|
||||
be explicitly written to cooperate with each other, so each additional
|
||||
transform takes significant extra work.
|
||||
* Sucrase is not good for prototyping language extensions and upcoming language
|
||||
features. Its faster architecture makes new transforms more difficult to write
|
||||
and more fragile.
|
||||
* Sucrase will never produce code for old browsers like IE. Compiling code down
|
||||
to ES5 is much more complicated than any transformation that Sucrase needs to
|
||||
do.
|
||||
* Sucrase is hesitant to implement upcoming JS features, although some of them
|
||||
make sense to implement for pragmatic reasons. Its main focus is on language
|
||||
extensions (JSX, TypeScript, Flow) that will never be supported by JS
|
||||
runtimes.
|
||||
* Like Babel, Sucrase is not a typechecker, and must process each file in
|
||||
isolation. For example, TypeScript `const enum`s are treated as regular
|
||||
`enum`s rather than inlining across files.
|
||||
* You should think carefully before using Sucrase in production. Sucrase is
|
||||
mostly beneficial in development, and in many cases, Babel or tsc will be more
|
||||
suitable for production builds.
|
||||
|
||||
See the [Project Vision](./docs/PROJECT_VISION.md) document for more details on
|
||||
the philosophy behind Sucrase.
|
||||
|
||||
## Motivation
|
||||
|
||||
As JavaScript implementations mature, it becomes more and more reasonable to
|
||||
disable Babel transforms, especially in development when you know that you're
|
||||
targeting a modern runtime. You might hope that you could simplify and speed up
|
||||
the build step by eventually disabling Babel entirely, but this isn't possible
|
||||
if you're using a non-standard language extension like JSX, TypeScript, or Flow.
|
||||
Unfortunately, disabling most transforms in Babel doesn't speed it up as much as
|
||||
you might expect. To understand, let's take a look at how Babel works:
|
||||
|
||||
1. Tokenize the input source code into a token stream.
|
||||
2. Parse the token stream into an AST.
|
||||
3. Walk the AST to compute the scope information for each variable.
|
||||
4. Apply all transform plugins in a single traversal, resulting in a new AST.
|
||||
5. Print the resulting AST.
|
||||
|
||||
Only step 4 gets faster when disabling plugins, so there's always a fixed cost
|
||||
to running Babel regardless of how many transforms are enabled.
|
||||
|
||||
Sucrase bypasses most of these steps, and works like this:
|
||||
|
||||
1. Tokenize the input source code into a token stream using a trimmed-down fork
|
||||
of the Babel parser. This fork does not produce a full AST, but still
|
||||
produces meaningful token metadata specifically designed for the later
|
||||
transforms.
|
||||
2. Scan through the tokens, computing preliminary information like all
|
||||
imported/exported names.
|
||||
3. Run the transform by doing a pass through the tokens and performing a number
|
||||
of careful find-and-replace operations, like replacing `<Foo` with
|
||||
`React.createElement(Foo`.
|
||||
|
||||
Because Sucrase works on a lower level and uses a custom parser for its use
|
||||
case, it is much faster than Babel.
|
||||
|
||||
## Contributing
|
||||
|
||||
Contributions are welcome, whether they be bug reports, PRs, docs, tests, or
|
||||
anything else! Please take a look through the [Contributing Guide](./CONTRIBUTING.md)
|
||||
to learn how to get started.
|
||||
|
||||
## License and attribution
|
||||
|
||||
Sucrase is MIT-licensed. A large part of Sucrase is based on a fork of the
|
||||
[Babel parser](https://github.com/babel/babel/tree/main/packages/babel-parser),
|
||||
which is also MIT-licensed.
|
||||
|
||||
## Why the name?
|
||||
|
||||
Sucrase is an enzyme that processes sugar. Get it?
|
||||
3
install/config-ui/node_modules/sucrase/bin/sucrase
generated
vendored
Executable file
3
install/config-ui/node_modules/sucrase/bin/sucrase
generated
vendored
Executable file
@@ -0,0 +1,3 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
require("../dist/cli").default();
|
||||
18
install/config-ui/node_modules/sucrase/bin/sucrase-node
generated
vendored
Executable file
18
install/config-ui/node_modules/sucrase/bin/sucrase-node
generated
vendored
Executable file
@@ -0,0 +1,18 @@
|
||||
#!/usr/bin/env node
|
||||
const Module = require("module");
|
||||
const {resolve} = require("path");
|
||||
|
||||
/*
|
||||
* Simple wrapper around node that first registers Sucrase with default settings.
|
||||
*
|
||||
* This is meant for simple use cases, and doesn't support custom Node/V8 args,
|
||||
* executing a code snippet, a REPL, or other things that you might find in
|
||||
* node, babel-node, or ts-node. For more advanced use cases, you can use
|
||||
* `node -r sucrase/register` or register a require hook programmatically from
|
||||
* your own code.
|
||||
*/
|
||||
require("../register");
|
||||
|
||||
process.argv.splice(1, 1);
|
||||
process.argv[1] = resolve(process.argv[1]);
|
||||
Module.runMain();
|
||||
1
install/config-ui/node_modules/sucrase/node_modules/.bin/glob
generated
vendored
Symbolic link
1
install/config-ui/node_modules/sucrase/node_modules/.bin/glob
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../glob/dist/esm/bin.mjs
|
||||
2
install/config-ui/node_modules/sucrase/node_modules/brace-expansion/.github/FUNDING.yml
generated
vendored
Normal file
2
install/config-ui/node_modules/sucrase/node_modules/brace-expansion/.github/FUNDING.yml
generated
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
tidelift: "npm/brace-expansion"
|
||||
patreon: juliangruber
|
||||
21
install/config-ui/node_modules/sucrase/node_modules/brace-expansion/LICENSE
generated
vendored
Normal file
21
install/config-ui/node_modules/sucrase/node_modules/brace-expansion/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2013 Julian Gruber <julian@juliangruber.com>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
135
install/config-ui/node_modules/sucrase/node_modules/brace-expansion/README.md
generated
vendored
Normal file
135
install/config-ui/node_modules/sucrase/node_modules/brace-expansion/README.md
generated
vendored
Normal file
@@ -0,0 +1,135 @@
|
||||
# brace-expansion
|
||||
|
||||
[Brace expansion](https://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html),
|
||||
as known from sh/bash, in JavaScript.
|
||||
|
||||
[](http://travis-ci.org/juliangruber/brace-expansion)
|
||||
[](https://www.npmjs.org/package/brace-expansion)
|
||||
[](https://greenkeeper.io/)
|
||||
|
||||
[](https://ci.testling.com/juliangruber/brace-expansion)
|
||||
|
||||
## Example
|
||||
|
||||
```js
|
||||
var expand = require('brace-expansion');
|
||||
|
||||
expand('file-{a,b,c}.jpg')
|
||||
// => ['file-a.jpg', 'file-b.jpg', 'file-c.jpg']
|
||||
|
||||
expand('-v{,,}')
|
||||
// => ['-v', '-v', '-v']
|
||||
|
||||
expand('file{0..2}.jpg')
|
||||
// => ['file0.jpg', 'file1.jpg', 'file2.jpg']
|
||||
|
||||
expand('file-{a..c}.jpg')
|
||||
// => ['file-a.jpg', 'file-b.jpg', 'file-c.jpg']
|
||||
|
||||
expand('file{2..0}.jpg')
|
||||
// => ['file2.jpg', 'file1.jpg', 'file0.jpg']
|
||||
|
||||
expand('file{0..4..2}.jpg')
|
||||
// => ['file0.jpg', 'file2.jpg', 'file4.jpg']
|
||||
|
||||
expand('file-{a..e..2}.jpg')
|
||||
// => ['file-a.jpg', 'file-c.jpg', 'file-e.jpg']
|
||||
|
||||
expand('file{00..10..5}.jpg')
|
||||
// => ['file00.jpg', 'file05.jpg', 'file10.jpg']
|
||||
|
||||
expand('{{A..C},{a..c}}')
|
||||
// => ['A', 'B', 'C', 'a', 'b', 'c']
|
||||
|
||||
expand('ppp{,config,oe{,conf}}')
|
||||
// => ['ppp', 'pppconfig', 'pppoe', 'pppoeconf']
|
||||
```
|
||||
|
||||
## API
|
||||
|
||||
```js
|
||||
var expand = require('brace-expansion');
|
||||
```
|
||||
|
||||
### var expanded = expand(str)
|
||||
|
||||
Return an array of all possible and valid expansions of `str`. If none are
|
||||
found, `[str]` is returned.
|
||||
|
||||
Valid expansions are:
|
||||
|
||||
```js
|
||||
/^(.*,)+(.+)?$/
|
||||
// {a,b,...}
|
||||
```
|
||||
|
||||
A comma separated list of options, like `{a,b}` or `{a,{b,c}}` or `{,a,}`.
|
||||
|
||||
```js
|
||||
/^-?\d+\.\.-?\d+(\.\.-?\d+)?$/
|
||||
// {x..y[..incr]}
|
||||
```
|
||||
|
||||
A numeric sequence from `x` to `y` inclusive, with optional increment.
|
||||
If `x` or `y` start with a leading `0`, all the numbers will be padded
|
||||
to have equal length. Negative numbers and backwards iteration work too.
|
||||
|
||||
```js
|
||||
/^-?\d+\.\.-?\d+(\.\.-?\d+)?$/
|
||||
// {x..y[..incr]}
|
||||
```
|
||||
|
||||
An alphabetic sequence from `x` to `y` inclusive, with optional increment.
|
||||
`x` and `y` must be exactly one character, and if given, `incr` must be a
|
||||
number.
|
||||
|
||||
For compatibility reasons, the string `${` is not eligible for brace expansion.
|
||||
|
||||
## Installation
|
||||
|
||||
With [npm](https://npmjs.org) do:
|
||||
|
||||
```bash
|
||||
npm install brace-expansion
|
||||
```
|
||||
|
||||
## Contributors
|
||||
|
||||
- [Julian Gruber](https://github.com/juliangruber)
|
||||
- [Isaac Z. Schlueter](https://github.com/isaacs)
|
||||
|
||||
## Sponsors
|
||||
|
||||
This module is proudly supported by my [Sponsors](https://github.com/juliangruber/sponsors)!
|
||||
|
||||
Do you want to support modules like this to improve their quality, stability and weigh in on new features? Then please consider donating to my [Patreon](https://www.patreon.com/juliangruber). Not sure how much of my modules you're using? Try [feross/thanks](https://github.com/feross/thanks)!
|
||||
|
||||
## Security contact information
|
||||
|
||||
To report a security vulnerability, please use the
|
||||
[Tidelift security contact](https://tidelift.com/security).
|
||||
Tidelift will coordinate the fix and disclosure.
|
||||
|
||||
## License
|
||||
|
||||
(MIT)
|
||||
|
||||
Copyright (c) 2013 Julian Gruber <julian@juliangruber.com>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||
of the Software, and to permit persons to whom the Software is furnished to do
|
||||
so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
203
install/config-ui/node_modules/sucrase/node_modules/brace-expansion/index.js
generated
vendored
Normal file
203
install/config-ui/node_modules/sucrase/node_modules/brace-expansion/index.js
generated
vendored
Normal file
@@ -0,0 +1,203 @@
|
||||
var balanced = require('balanced-match');
|
||||
|
||||
module.exports = expandTop;
|
||||
|
||||
var escSlash = '\0SLASH'+Math.random()+'\0';
|
||||
var escOpen = '\0OPEN'+Math.random()+'\0';
|
||||
var escClose = '\0CLOSE'+Math.random()+'\0';
|
||||
var escComma = '\0COMMA'+Math.random()+'\0';
|
||||
var escPeriod = '\0PERIOD'+Math.random()+'\0';
|
||||
|
||||
function numeric(str) {
|
||||
return parseInt(str, 10) == str
|
||||
? parseInt(str, 10)
|
||||
: str.charCodeAt(0);
|
||||
}
|
||||
|
||||
function escapeBraces(str) {
|
||||
return str.split('\\\\').join(escSlash)
|
||||
.split('\\{').join(escOpen)
|
||||
.split('\\}').join(escClose)
|
||||
.split('\\,').join(escComma)
|
||||
.split('\\.').join(escPeriod);
|
||||
}
|
||||
|
||||
function unescapeBraces(str) {
|
||||
return str.split(escSlash).join('\\')
|
||||
.split(escOpen).join('{')
|
||||
.split(escClose).join('}')
|
||||
.split(escComma).join(',')
|
||||
.split(escPeriod).join('.');
|
||||
}
|
||||
|
||||
|
||||
// Basically just str.split(","), but handling cases
|
||||
// where we have nested braced sections, which should be
|
||||
// treated as individual members, like {a,{b,c},d}
|
||||
function parseCommaParts(str) {
|
||||
if (!str)
|
||||
return [''];
|
||||
|
||||
var parts = [];
|
||||
var m = balanced('{', '}', str);
|
||||
|
||||
if (!m)
|
||||
return str.split(',');
|
||||
|
||||
var pre = m.pre;
|
||||
var body = m.body;
|
||||
var post = m.post;
|
||||
var p = pre.split(',');
|
||||
|
||||
p[p.length-1] += '{' + body + '}';
|
||||
var postParts = parseCommaParts(post);
|
||||
if (post.length) {
|
||||
p[p.length-1] += postParts.shift();
|
||||
p.push.apply(p, postParts);
|
||||
}
|
||||
|
||||
parts.push.apply(parts, p);
|
||||
|
||||
return parts;
|
||||
}
|
||||
|
||||
function expandTop(str) {
|
||||
if (!str)
|
||||
return [];
|
||||
|
||||
// I don't know why Bash 4.3 does this, but it does.
|
||||
// Anything starting with {} will have the first two bytes preserved
|
||||
// but *only* at the top level, so {},a}b will not expand to anything,
|
||||
// but a{},b}c will be expanded to [a}c,abc].
|
||||
// One could argue that this is a bug in Bash, but since the goal of
|
||||
// this module is to match Bash's rules, we escape a leading {}
|
||||
if (str.substr(0, 2) === '{}') {
|
||||
str = '\\{\\}' + str.substr(2);
|
||||
}
|
||||
|
||||
return expand(escapeBraces(str), true).map(unescapeBraces);
|
||||
}
|
||||
|
||||
function embrace(str) {
|
||||
return '{' + str + '}';
|
||||
}
|
||||
function isPadded(el) {
|
||||
return /^-?0\d/.test(el);
|
||||
}
|
||||
|
||||
function lte(i, y) {
|
||||
return i <= y;
|
||||
}
|
||||
function gte(i, y) {
|
||||
return i >= y;
|
||||
}
|
||||
|
||||
function expand(str, isTop) {
|
||||
var expansions = [];
|
||||
|
||||
var m = balanced('{', '}', str);
|
||||
if (!m) return [str];
|
||||
|
||||
// no need to expand pre, since it is guaranteed to be free of brace-sets
|
||||
var pre = m.pre;
|
||||
var post = m.post.length
|
||||
? expand(m.post, false)
|
||||
: [''];
|
||||
|
||||
if (/\$$/.test(m.pre)) {
|
||||
for (var k = 0; k < post.length; k++) {
|
||||
var expansion = pre+ '{' + m.body + '}' + post[k];
|
||||
expansions.push(expansion);
|
||||
}
|
||||
} else {
|
||||
var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body);
|
||||
var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body);
|
||||
var isSequence = isNumericSequence || isAlphaSequence;
|
||||
var isOptions = m.body.indexOf(',') >= 0;
|
||||
if (!isSequence && !isOptions) {
|
||||
// {a},b}
|
||||
if (m.post.match(/,(?!,).*\}/)) {
|
||||
str = m.pre + '{' + m.body + escClose + m.post;
|
||||
return expand(str);
|
||||
}
|
||||
return [str];
|
||||
}
|
||||
|
||||
var n;
|
||||
if (isSequence) {
|
||||
n = m.body.split(/\.\./);
|
||||
} else {
|
||||
n = parseCommaParts(m.body);
|
||||
if (n.length === 1) {
|
||||
// x{{a,b}}y ==> x{a}y x{b}y
|
||||
n = expand(n[0], false).map(embrace);
|
||||
if (n.length === 1) {
|
||||
return post.map(function(p) {
|
||||
return m.pre + n[0] + p;
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// at this point, n is the parts, and we know it's not a comma set
|
||||
// with a single entry.
|
||||
var N;
|
||||
|
||||
if (isSequence) {
|
||||
var x = numeric(n[0]);
|
||||
var y = numeric(n[1]);
|
||||
var width = Math.max(n[0].length, n[1].length)
|
||||
var incr = n.length == 3
|
||||
? Math.abs(numeric(n[2]))
|
||||
: 1;
|
||||
var test = lte;
|
||||
var reverse = y < x;
|
||||
if (reverse) {
|
||||
incr *= -1;
|
||||
test = gte;
|
||||
}
|
||||
var pad = n.some(isPadded);
|
||||
|
||||
N = [];
|
||||
|
||||
for (var i = x; test(i, y); i += incr) {
|
||||
var c;
|
||||
if (isAlphaSequence) {
|
||||
c = String.fromCharCode(i);
|
||||
if (c === '\\')
|
||||
c = '';
|
||||
} else {
|
||||
c = String(i);
|
||||
if (pad) {
|
||||
var need = width - c.length;
|
||||
if (need > 0) {
|
||||
var z = new Array(need + 1).join('0');
|
||||
if (i < 0)
|
||||
c = '-' + z + c.slice(1);
|
||||
else
|
||||
c = z + c;
|
||||
}
|
||||
}
|
||||
}
|
||||
N.push(c);
|
||||
}
|
||||
} else {
|
||||
N = [];
|
||||
|
||||
for (var j = 0; j < n.length; j++) {
|
||||
N.push.apply(N, expand(n[j], false));
|
||||
}
|
||||
}
|
||||
|
||||
for (var j = 0; j < N.length; j++) {
|
||||
for (var k = 0; k < post.length; k++) {
|
||||
var expansion = pre + N[j] + post[k];
|
||||
if (!isTop || isSequence || expansion)
|
||||
expansions.push(expansion);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return expansions;
|
||||
}
|
||||
|
||||
49
install/config-ui/node_modules/sucrase/node_modules/brace-expansion/package.json
generated
vendored
Normal file
49
install/config-ui/node_modules/sucrase/node_modules/brace-expansion/package.json
generated
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
{
|
||||
"name": "brace-expansion",
|
||||
"description": "Brace expansion as known from sh/bash",
|
||||
"version": "2.0.2",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/juliangruber/brace-expansion.git"
|
||||
},
|
||||
"homepage": "https://github.com/juliangruber/brace-expansion",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "tape test/*.js",
|
||||
"gentest": "bash test/generate.sh",
|
||||
"bench": "matcha test/perf/bench.js"
|
||||
},
|
||||
"dependencies": {
|
||||
"balanced-match": "^1.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@c4312/matcha": "^1.3.1",
|
||||
"tape": "^4.6.0"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": {
|
||||
"name": "Julian Gruber",
|
||||
"email": "mail@juliangruber.com",
|
||||
"url": "http://juliangruber.com"
|
||||
},
|
||||
"license": "MIT",
|
||||
"testling": {
|
||||
"files": "test/*.js",
|
||||
"browsers": [
|
||||
"ie/8..latest",
|
||||
"firefox/20..latest",
|
||||
"firefox/nightly",
|
||||
"chrome/25..latest",
|
||||
"chrome/canary",
|
||||
"opera/12..latest",
|
||||
"opera/next",
|
||||
"safari/5.1..latest",
|
||||
"ipad/6.0..latest",
|
||||
"iphone/6.0..latest",
|
||||
"android-browser/4.2..latest"
|
||||
]
|
||||
},
|
||||
"publishConfig": {
|
||||
"tag": "2.x"
|
||||
}
|
||||
}
|
||||
15
install/config-ui/node_modules/sucrase/node_modules/glob/LICENSE
generated
vendored
Normal file
15
install/config-ui/node_modules/sucrase/node_modules/glob/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
The ISC License
|
||||
|
||||
Copyright (c) 2009-2023 Isaac Z. Schlueter and Contributors
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any
|
||||
purpose with or without fee is hereby granted, provided that the above
|
||||
copyright notice and this permission notice appear in all copies.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
|
||||
IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
1265
install/config-ui/node_modules/sucrase/node_modules/glob/README.md
generated
vendored
Normal file
1265
install/config-ui/node_modules/sucrase/node_modules/glob/README.md
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
99
install/config-ui/node_modules/sucrase/node_modules/glob/package.json
generated
vendored
Normal file
99
install/config-ui/node_modules/sucrase/node_modules/glob/package.json
generated
vendored
Normal file
@@ -0,0 +1,99 @@
|
||||
{
|
||||
"author": "Isaac Z. Schlueter <i@izs.me> (https://blog.izs.me/)",
|
||||
"publishConfig": {
|
||||
"tag": "legacy-v10"
|
||||
},
|
||||
"name": "glob",
|
||||
"description": "the most correct and second fastest glob implementation in JavaScript",
|
||||
"version": "10.4.5",
|
||||
"type": "module",
|
||||
"tshy": {
|
||||
"main": true,
|
||||
"exports": {
|
||||
"./package.json": "./package.json",
|
||||
".": "./src/index.ts"
|
||||
}
|
||||
},
|
||||
"bin": "./dist/esm/bin.mjs",
|
||||
"main": "./dist/commonjs/index.js",
|
||||
"types": "./dist/commonjs/index.d.ts",
|
||||
"exports": {
|
||||
"./package.json": "./package.json",
|
||||
".": {
|
||||
"import": {
|
||||
"types": "./dist/esm/index.d.ts",
|
||||
"default": "./dist/esm/index.js"
|
||||
},
|
||||
"require": {
|
||||
"types": "./dist/commonjs/index.d.ts",
|
||||
"default": "./dist/commonjs/index.js"
|
||||
}
|
||||
}
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/isaacs/node-glob.git"
|
||||
},
|
||||
"files": [
|
||||
"dist"
|
||||
],
|
||||
"scripts": {
|
||||
"preversion": "npm test",
|
||||
"postversion": "npm publish",
|
||||
"prepublishOnly": "git push origin --follow-tags",
|
||||
"prepare": "tshy",
|
||||
"pretest": "npm run prepare",
|
||||
"presnap": "npm run prepare",
|
||||
"test": "tap",
|
||||
"snap": "tap",
|
||||
"format": "prettier --write . --log-level warn",
|
||||
"typedoc": "typedoc --tsconfig .tshy/esm.json ./src/*.ts",
|
||||
"prepublish": "npm run benchclean",
|
||||
"profclean": "rm -f v8.log profile.txt",
|
||||
"test-regen": "npm run profclean && TEST_REGEN=1 node --no-warnings --loader ts-node/esm test/00-setup.ts",
|
||||
"prebench": "npm run prepare",
|
||||
"bench": "bash benchmark.sh",
|
||||
"preprof": "npm run prepare",
|
||||
"prof": "bash prof.sh",
|
||||
"benchclean": "node benchclean.cjs"
|
||||
},
|
||||
"prettier": {
|
||||
"experimentalTernaries": true,
|
||||
"semi": false,
|
||||
"printWidth": 75,
|
||||
"tabWidth": 2,
|
||||
"useTabs": false,
|
||||
"singleQuote": true,
|
||||
"jsxSingleQuote": false,
|
||||
"bracketSameLine": true,
|
||||
"arrowParens": "avoid",
|
||||
"endOfLine": "lf"
|
||||
},
|
||||
"dependencies": {
|
||||
"foreground-child": "^3.1.0",
|
||||
"jackspeak": "^3.1.2",
|
||||
"minimatch": "^9.0.4",
|
||||
"minipass": "^7.1.2",
|
||||
"package-json-from-dist": "^1.0.0",
|
||||
"path-scurry": "^1.11.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^20.11.30",
|
||||
"memfs": "^3.4.13",
|
||||
"mkdirp": "^3.0.1",
|
||||
"prettier": "^3.2.5",
|
||||
"rimraf": "^5.0.7",
|
||||
"sync-content": "^1.0.2",
|
||||
"tap": "^19.0.0",
|
||||
"tshy": "^1.14.0",
|
||||
"typedoc": "^0.25.12"
|
||||
},
|
||||
"tap": {
|
||||
"before": "test/00-setup.ts"
|
||||
},
|
||||
"license": "ISC",
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/isaacs"
|
||||
},
|
||||
"module": "./dist/esm/index.js"
|
||||
}
|
||||
15
install/config-ui/node_modules/sucrase/node_modules/minimatch/LICENSE
generated
vendored
Normal file
15
install/config-ui/node_modules/sucrase/node_modules/minimatch/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
The ISC License
|
||||
|
||||
Copyright (c) 2011-2023 Isaac Z. Schlueter and Contributors
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any
|
||||
purpose with or without fee is hereby granted, provided that the above
|
||||
copyright notice and this permission notice appear in all copies.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
|
||||
IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
454
install/config-ui/node_modules/sucrase/node_modules/minimatch/README.md
generated
vendored
Normal file
454
install/config-ui/node_modules/sucrase/node_modules/minimatch/README.md
generated
vendored
Normal file
@@ -0,0 +1,454 @@
|
||||
# minimatch
|
||||
|
||||
A minimal matching utility.
|
||||
|
||||
This is the matching library used internally by npm.
|
||||
|
||||
It works by converting glob expressions into JavaScript `RegExp`
|
||||
objects.
|
||||
|
||||
## Usage
|
||||
|
||||
```js
|
||||
// hybrid module, load with require() or import
|
||||
import { minimatch } from 'minimatch'
|
||||
// or:
|
||||
const { minimatch } = require('minimatch')
|
||||
|
||||
minimatch('bar.foo', '*.foo') // true!
|
||||
minimatch('bar.foo', '*.bar') // false!
|
||||
minimatch('bar.foo', '*.+(bar|foo)', { debug: true }) // true, and noisy!
|
||||
```
|
||||
|
||||
## Features
|
||||
|
||||
Supports these glob features:
|
||||
|
||||
- Brace Expansion
|
||||
- Extended glob matching
|
||||
- "Globstar" `**` matching
|
||||
- [Posix character
|
||||
classes](https://www.gnu.org/software/bash/manual/html_node/Pattern-Matching.html),
|
||||
like `[[:alpha:]]`, supporting the full range of Unicode
|
||||
characters. For example, `[[:alpha:]]` will match against
|
||||
`'é'`, though `[a-zA-Z]` will not. Collating symbol and set
|
||||
matching is not supported, so `[[=e=]]` will _not_ match `'é'`
|
||||
and `[[.ch.]]` will not match `'ch'` in locales where `ch` is
|
||||
considered a single character.
|
||||
|
||||
See:
|
||||
|
||||
- `man sh`
|
||||
- `man bash` [Pattern
|
||||
Matching](https://www.gnu.org/software/bash/manual/html_node/Pattern-Matching.html)
|
||||
- `man 3 fnmatch`
|
||||
- `man 5 gitignore`
|
||||
|
||||
## Windows
|
||||
|
||||
**Please only use forward-slashes in glob expressions.**
|
||||
|
||||
Though windows uses either `/` or `\` as its path separator, only `/`
|
||||
characters are used by this glob implementation. You must use
|
||||
forward-slashes **only** in glob expressions. Back-slashes in patterns
|
||||
will always be interpreted as escape characters, not path separators.
|
||||
|
||||
Note that `\` or `/` _will_ be interpreted as path separators in paths on
|
||||
Windows, and will match against `/` in glob expressions.
|
||||
|
||||
So just always use `/` in patterns.
|
||||
|
||||
### UNC Paths
|
||||
|
||||
On Windows, UNC paths like `//?/c:/...` or
|
||||
`//ComputerName/Share/...` are handled specially.
|
||||
|
||||
- Patterns starting with a double-slash followed by some
|
||||
non-slash characters will preserve their double-slash. As a
|
||||
result, a pattern like `//*` will match `//x`, but not `/x`.
|
||||
- Patterns staring with `//?/<drive letter>:` will _not_ treat
|
||||
the `?` as a wildcard character. Instead, it will be treated
|
||||
as a normal string.
|
||||
- Patterns starting with `//?/<drive letter>:/...` will match
|
||||
file paths starting with `<drive letter>:/...`, and vice versa,
|
||||
as if the `//?/` was not present. This behavior only is
|
||||
present when the drive letters are a case-insensitive match to
|
||||
one another. The remaining portions of the path/pattern are
|
||||
compared case sensitively, unless `nocase:true` is set.
|
||||
|
||||
Note that specifying a UNC path using `\` characters as path
|
||||
separators is always allowed in the file path argument, but only
|
||||
allowed in the pattern argument when `windowsPathsNoEscape: true`
|
||||
is set in the options.
|
||||
|
||||
## Minimatch Class
|
||||
|
||||
Create a minimatch object by instantiating the `minimatch.Minimatch` class.
|
||||
|
||||
```javascript
|
||||
var Minimatch = require('minimatch').Minimatch
|
||||
var mm = new Minimatch(pattern, options)
|
||||
```
|
||||
|
||||
### Properties
|
||||
|
||||
- `pattern` The original pattern the minimatch object represents.
|
||||
- `options` The options supplied to the constructor.
|
||||
- `set` A 2-dimensional array of regexp or string expressions.
|
||||
Each row in the
|
||||
array corresponds to a brace-expanded pattern. Each item in the row
|
||||
corresponds to a single path-part. For example, the pattern
|
||||
`{a,b/c}/d` would expand to a set of patterns like:
|
||||
|
||||
[ [ a, d ]
|
||||
, [ b, c, d ] ]
|
||||
|
||||
If a portion of the pattern doesn't have any "magic" in it
|
||||
(that is, it's something like `"foo"` rather than `fo*o?`), then it
|
||||
will be left as a string rather than converted to a regular
|
||||
expression.
|
||||
|
||||
- `regexp` Created by the `makeRe` method. A single regular expression
|
||||
expressing the entire pattern. This is useful in cases where you wish
|
||||
to use the pattern somewhat like `fnmatch(3)` with `FNM_PATH` enabled.
|
||||
- `negate` True if the pattern is negated.
|
||||
- `comment` True if the pattern is a comment.
|
||||
- `empty` True if the pattern is `""`.
|
||||
|
||||
### Methods
|
||||
|
||||
- `makeRe()` Generate the `regexp` member if necessary, and return it.
|
||||
Will return `false` if the pattern is invalid.
|
||||
- `match(fname)` Return true if the filename matches the pattern, or
|
||||
false otherwise.
|
||||
- `matchOne(fileArray, patternArray, partial)` Take a `/`-split
|
||||
filename, and match it against a single row in the `regExpSet`. This
|
||||
method is mainly for internal use, but is exposed so that it can be
|
||||
used by a glob-walker that needs to avoid excessive filesystem calls.
|
||||
- `hasMagic()` Returns true if the parsed pattern contains any
|
||||
magic characters. Returns false if all comparator parts are
|
||||
string literals. If the `magicalBraces` option is set on the
|
||||
constructor, then it will consider brace expansions which are
|
||||
not otherwise magical to be magic. If not set, then a pattern
|
||||
like `a{b,c}d` will return `false`, because neither `abd` nor
|
||||
`acd` contain any special glob characters.
|
||||
|
||||
This does **not** mean that the pattern string can be used as a
|
||||
literal filename, as it may contain magic glob characters that
|
||||
are escaped. For example, the pattern `\\*` or `[*]` would not
|
||||
be considered to have magic, as the matching portion parses to
|
||||
the literal string `'*'` and would match a path named `'*'`,
|
||||
not `'\\*'` or `'[*]'`. The `minimatch.unescape()` method may
|
||||
be used to remove escape characters.
|
||||
|
||||
All other methods are internal, and will be called as necessary.
|
||||
|
||||
### minimatch(path, pattern, options)
|
||||
|
||||
Main export. Tests a path against the pattern using the options.
|
||||
|
||||
```javascript
|
||||
var isJS = minimatch(file, '*.js', { matchBase: true })
|
||||
```
|
||||
|
||||
### minimatch.filter(pattern, options)
|
||||
|
||||
Returns a function that tests its
|
||||
supplied argument, suitable for use with `Array.filter`. Example:
|
||||
|
||||
```javascript
|
||||
var javascripts = fileList.filter(minimatch.filter('*.js', { matchBase: true }))
|
||||
```
|
||||
|
||||
### minimatch.escape(pattern, options = {})
|
||||
|
||||
Escape all magic characters in a glob pattern, so that it will
|
||||
only ever match literal strings
|
||||
|
||||
If the `windowsPathsNoEscape` option is used, then characters are
|
||||
escaped by wrapping in `[]`, because a magic character wrapped in
|
||||
a character class can only be satisfied by that exact character.
|
||||
|
||||
Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot
|
||||
be escaped or unescaped.
|
||||
|
||||
### minimatch.unescape(pattern, options = {})
|
||||
|
||||
Un-escape a glob string that may contain some escaped characters.
|
||||
|
||||
If the `windowsPathsNoEscape` option is used, then square-brace
|
||||
escapes are removed, but not backslash escapes. For example, it
|
||||
will turn the string `'[*]'` into `*`, but it will not turn
|
||||
`'\\*'` into `'*'`, because `\` is a path separator in
|
||||
`windowsPathsNoEscape` mode.
|
||||
|
||||
When `windowsPathsNoEscape` is not set, then both brace escapes
|
||||
and backslash escapes are removed.
|
||||
|
||||
Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot
|
||||
be escaped or unescaped.
|
||||
|
||||
### minimatch.match(list, pattern, options)
|
||||
|
||||
Match against the list of
|
||||
files, in the style of fnmatch or glob. If nothing is matched, and
|
||||
options.nonull is set, then return a list containing the pattern itself.
|
||||
|
||||
```javascript
|
||||
var javascripts = minimatch.match(fileList, '*.js', { matchBase: true })
|
||||
```
|
||||
|
||||
### minimatch.makeRe(pattern, options)
|
||||
|
||||
Make a regular expression object from the pattern.
|
||||
|
||||
## Options
|
||||
|
||||
All options are `false` by default.
|
||||
|
||||
### debug
|
||||
|
||||
Dump a ton of stuff to stderr.
|
||||
|
||||
### nobrace
|
||||
|
||||
Do not expand `{a,b}` and `{1..3}` brace sets.
|
||||
|
||||
### noglobstar
|
||||
|
||||
Disable `**` matching against multiple folder names.
|
||||
|
||||
### dot
|
||||
|
||||
Allow patterns to match filenames starting with a period, even if
|
||||
the pattern does not explicitly have a period in that spot.
|
||||
|
||||
Note that by default, `a/**/b` will **not** match `a/.d/b`, unless `dot`
|
||||
is set.
|
||||
|
||||
### noext
|
||||
|
||||
Disable "extglob" style patterns like `+(a|b)`.
|
||||
|
||||
### nocase
|
||||
|
||||
Perform a case-insensitive match.
|
||||
|
||||
### nocaseMagicOnly
|
||||
|
||||
When used with `{nocase: true}`, create regular expressions that
|
||||
are case-insensitive, but leave string match portions untouched.
|
||||
Has no effect when used without `{nocase: true}`
|
||||
|
||||
Useful when some other form of case-insensitive matching is used,
|
||||
or if the original string representation is useful in some other
|
||||
way.
|
||||
|
||||
### nonull
|
||||
|
||||
When a match is not found by `minimatch.match`, return a list containing
|
||||
the pattern itself if this option is set. When not set, an empty list
|
||||
is returned if there are no matches.
|
||||
|
||||
### magicalBraces
|
||||
|
||||
This only affects the results of the `Minimatch.hasMagic` method.
|
||||
|
||||
If the pattern contains brace expansions, such as `a{b,c}d`, but
|
||||
no other magic characters, then the `Minimatch.hasMagic()` method
|
||||
will return `false` by default. When this option set, it will
|
||||
return `true` for brace expansion as well as other magic glob
|
||||
characters.
|
||||
|
||||
### matchBase
|
||||
|
||||
If set, then patterns without slashes will be matched
|
||||
against the basename of the path if it contains slashes. For example,
|
||||
`a?b` would match the path `/xyz/123/acb`, but not `/xyz/acb/123`.
|
||||
|
||||
### nocomment
|
||||
|
||||
Suppress the behavior of treating `#` at the start of a pattern as a
|
||||
comment.
|
||||
|
||||
### nonegate
|
||||
|
||||
Suppress the behavior of treating a leading `!` character as negation.
|
||||
|
||||
### flipNegate
|
||||
|
||||
Returns from negate expressions the same as if they were not negated.
|
||||
(Ie, true on a hit, false on a miss.)
|
||||
|
||||
### partial
|
||||
|
||||
Compare a partial path to a pattern. As long as the parts of the path that
|
||||
are present are not contradicted by the pattern, it will be treated as a
|
||||
match. This is useful in applications where you're walking through a
|
||||
folder structure, and don't yet have the full path, but want to ensure that
|
||||
you do not walk down paths that can never be a match.
|
||||
|
||||
For example,
|
||||
|
||||
```js
|
||||
minimatch('/a/b', '/a/*/c/d', { partial: true }) // true, might be /a/b/c/d
|
||||
minimatch('/a/b', '/**/d', { partial: true }) // true, might be /a/b/.../d
|
||||
minimatch('/x/y/z', '/a/**/z', { partial: true }) // false, because x !== a
|
||||
```
|
||||
|
||||
### windowsPathsNoEscape
|
||||
|
||||
Use `\\` as a path separator _only_, and _never_ as an escape
|
||||
character. If set, all `\\` characters are replaced with `/` in
|
||||
the pattern. Note that this makes it **impossible** to match
|
||||
against paths containing literal glob pattern characters, but
|
||||
allows matching with patterns constructed using `path.join()` and
|
||||
`path.resolve()` on Windows platforms, mimicking the (buggy!)
|
||||
behavior of earlier versions on Windows. Please use with
|
||||
caution, and be mindful of [the caveat about Windows
|
||||
paths](#windows).
|
||||
|
||||
For legacy reasons, this is also set if
|
||||
`options.allowWindowsEscape` is set to the exact value `false`.
|
||||
|
||||
### windowsNoMagicRoot
|
||||
|
||||
When a pattern starts with a UNC path or drive letter, and in
|
||||
`nocase:true` mode, do not convert the root portions of the
|
||||
pattern into a case-insensitive regular expression, and instead
|
||||
leave them as strings.
|
||||
|
||||
This is the default when the platform is `win32` and
|
||||
`nocase:true` is set.
|
||||
|
||||
### preserveMultipleSlashes
|
||||
|
||||
By default, multiple `/` characters (other than the leading `//`
|
||||
in a UNC path, see "UNC Paths" above) are treated as a single
|
||||
`/`.
|
||||
|
||||
That is, a pattern like `a///b` will match the file path `a/b`.
|
||||
|
||||
Set `preserveMultipleSlashes: true` to suppress this behavior.
|
||||
|
||||
### optimizationLevel
|
||||
|
||||
A number indicating the level of optimization that should be done
|
||||
to the pattern prior to parsing and using it for matches.
|
||||
|
||||
Globstar parts `**` are always converted to `*` when `noglobstar`
|
||||
is set, and multiple adjacent `**` parts are converted into a
|
||||
single `**` (ie, `a/**/**/b` will be treated as `a/**/b`, as this
|
||||
is equivalent in all cases).
|
||||
|
||||
- `0` - Make no further changes. In this mode, `.` and `..` are
|
||||
maintained in the pattern, meaning that they must also appear
|
||||
in the same position in the test path string. Eg, a pattern
|
||||
like `a/*/../c` will match the string `a/b/../c` but not the
|
||||
string `a/c`.
|
||||
- `1` - (default) Remove cases where a double-dot `..` follows a
|
||||
pattern portion that is not `**`, `.`, `..`, or empty `''`. For
|
||||
example, the pattern `./a/b/../*` is converted to `./a/*`, and
|
||||
so it will match the path string `./a/c`, but not the path
|
||||
string `./a/b/../c`. Dots and empty path portions in the
|
||||
pattern are preserved.
|
||||
- `2` (or higher) - Much more aggressive optimizations, suitable
|
||||
for use with file-walking cases:
|
||||
|
||||
- Remove cases where a double-dot `..` follows a pattern
|
||||
portion that is not `**`, `.`, or empty `''`. Remove empty
|
||||
and `.` portions of the pattern, where safe to do so (ie,
|
||||
anywhere other than the last position, the first position, or
|
||||
the second position in a pattern starting with `/`, as this
|
||||
may indicate a UNC path on Windows).
|
||||
- Convert patterns containing `<pre>/**/../<p>/<rest>` into the
|
||||
equivalent `<pre>/{..,**}/<p>/<rest>`, where `<p>` is a
|
||||
a pattern portion other than `.`, `..`, `**`, or empty
|
||||
`''`.
|
||||
- Dedupe patterns where a `**` portion is present in one and
|
||||
omitted in another, and it is not the final path portion, and
|
||||
they are otherwise equivalent. So `{a/**/b,a/b}` becomes
|
||||
`a/**/b`, because `**` matches against an empty path portion.
|
||||
- Dedupe patterns where a `*` portion is present in one, and a
|
||||
non-dot pattern other than `**`, `.`, `..`, or `''` is in the
|
||||
same position in the other. So `a/{*,x}/b` becomes `a/*/b`,
|
||||
because `*` can match against `x`.
|
||||
|
||||
While these optimizations improve the performance of
|
||||
file-walking use cases such as [glob](http://npm.im/glob) (ie,
|
||||
the reason this module exists), there are cases where it will
|
||||
fail to match a literal string that would have been matched in
|
||||
optimization level 1 or 0.
|
||||
|
||||
Specifically, while the `Minimatch.match()` method will
|
||||
optimize the file path string in the same ways, resulting in
|
||||
the same matches, it will fail when tested with the regular
|
||||
expression provided by `Minimatch.makeRe()`, unless the path
|
||||
string is first processed with
|
||||
`minimatch.levelTwoFileOptimize()` or similar.
|
||||
|
||||
### platform
|
||||
|
||||
When set to `win32`, this will trigger all windows-specific
|
||||
behaviors (special handling for UNC paths, and treating `\` as
|
||||
separators in file paths for comparison.)
|
||||
|
||||
Defaults to the value of `process.platform`.
|
||||
|
||||
## Comparisons to other fnmatch/glob implementations
|
||||
|
||||
While strict compliance with the existing standards is a
|
||||
worthwhile goal, some discrepancies exist between minimatch and
|
||||
other implementations. Some are intentional, and some are
|
||||
unavoidable.
|
||||
|
||||
If the pattern starts with a `!` character, then it is negated. Set the
|
||||
`nonegate` flag to suppress this behavior, and treat leading `!`
|
||||
characters normally. This is perhaps relevant if you wish to start the
|
||||
pattern with a negative extglob pattern like `!(a|B)`. Multiple `!`
|
||||
characters at the start of a pattern will negate the pattern multiple
|
||||
times.
|
||||
|
||||
If a pattern starts with `#`, then it is treated as a comment, and
|
||||
will not match anything. Use `\#` to match a literal `#` at the
|
||||
start of a line, or set the `nocomment` flag to suppress this behavior.
|
||||
|
||||
The double-star character `**` is supported by default, unless the
|
||||
`noglobstar` flag is set. This is supported in the manner of bsdglob
|
||||
and bash 4.1, where `**` only has special significance if it is the only
|
||||
thing in a path part. That is, `a/**/b` will match `a/x/y/b`, but
|
||||
`a/**b` will not.
|
||||
|
||||
If an escaped pattern has no matches, and the `nonull` flag is set,
|
||||
then minimatch.match returns the pattern as-provided, rather than
|
||||
interpreting the character escapes. For example,
|
||||
`minimatch.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than
|
||||
`"*a?"`. This is akin to setting the `nullglob` option in bash, except
|
||||
that it does not resolve escaped pattern characters.
|
||||
|
||||
If brace expansion is not disabled, then it is performed before any
|
||||
other interpretation of the glob pattern. Thus, a pattern like
|
||||
`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded
|
||||
**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are
|
||||
checked for validity. Since those two are valid, matching proceeds.
|
||||
|
||||
Negated extglob patterns are handled as closely as possible to
|
||||
Bash semantics, but there are some cases with negative extglobs
|
||||
which are exceedingly difficult to express in a JavaScript
|
||||
regular expression. In particular the negated pattern
|
||||
`<start>!(<pattern>*|)*` will in bash match anything that does
|
||||
not start with `<start><pattern>`. However,
|
||||
`<start>!(<pattern>*)*` _will_ match paths starting with
|
||||
`<start><pattern>`, because the empty string can match against
|
||||
the negated portion. In this library, `<start>!(<pattern>*|)*`
|
||||
will _not_ match any pattern starting with `<start>`, due to a
|
||||
difference in precisely which patterns are considered "greedy" in
|
||||
Regular Expressions vs bash path expansion. This may be fixable,
|
||||
but not without incurring some complexity and performance costs,
|
||||
and the trade-off seems to not be worth pursuing.
|
||||
|
||||
Note that `fnmatch(3)` in libc is an extremely naive string comparison
|
||||
matcher, which does not do anything special for slashes. This library is
|
||||
designed to be used in glob searching and file walkers, and so it does do
|
||||
special things with `/`. Thus, `foo*` will not match `foo/bar` in this
|
||||
library, even though it would in `fnmatch(3)`.
|
||||
82
install/config-ui/node_modules/sucrase/node_modules/minimatch/package.json
generated
vendored
Normal file
82
install/config-ui/node_modules/sucrase/node_modules/minimatch/package.json
generated
vendored
Normal file
@@ -0,0 +1,82 @@
|
||||
{
|
||||
"author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me)",
|
||||
"name": "minimatch",
|
||||
"description": "a glob matcher in javascript",
|
||||
"version": "9.0.5",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/isaacs/minimatch.git"
|
||||
},
|
||||
"main": "./dist/commonjs/index.js",
|
||||
"types": "./dist/commonjs/index.d.ts",
|
||||
"exports": {
|
||||
"./package.json": "./package.json",
|
||||
".": {
|
||||
"import": {
|
||||
"types": "./dist/esm/index.d.ts",
|
||||
"default": "./dist/esm/index.js"
|
||||
},
|
||||
"require": {
|
||||
"types": "./dist/commonjs/index.d.ts",
|
||||
"default": "./dist/commonjs/index.js"
|
||||
}
|
||||
}
|
||||
},
|
||||
"files": [
|
||||
"dist"
|
||||
],
|
||||
"scripts": {
|
||||
"preversion": "npm test",
|
||||
"postversion": "npm publish",
|
||||
"prepublishOnly": "git push origin --follow-tags",
|
||||
"prepare": "tshy",
|
||||
"pretest": "npm run prepare",
|
||||
"presnap": "npm run prepare",
|
||||
"test": "tap",
|
||||
"snap": "tap",
|
||||
"format": "prettier --write . --loglevel warn",
|
||||
"benchmark": "node benchmark/index.js",
|
||||
"typedoc": "typedoc --tsconfig tsconfig-esm.json ./src/*.ts"
|
||||
},
|
||||
"prettier": {
|
||||
"semi": false,
|
||||
"printWidth": 80,
|
||||
"tabWidth": 2,
|
||||
"useTabs": false,
|
||||
"singleQuote": true,
|
||||
"jsxSingleQuote": false,
|
||||
"bracketSameLine": true,
|
||||
"arrowParens": "avoid",
|
||||
"endOfLine": "lf"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16 || 14 >=14.17"
|
||||
},
|
||||
"dependencies": {
|
||||
"brace-expansion": "^2.0.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/brace-expansion": "^1.1.0",
|
||||
"@types/node": "^18.15.11",
|
||||
"@types/tap": "^15.0.8",
|
||||
"eslint-config-prettier": "^8.6.0",
|
||||
"mkdirp": "1",
|
||||
"prettier": "^2.8.2",
|
||||
"tap": "^18.7.2",
|
||||
"ts-node": "^10.9.1",
|
||||
"tshy": "^1.12.0",
|
||||
"typedoc": "^0.23.21",
|
||||
"typescript": "^4.9.3"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/isaacs"
|
||||
},
|
||||
"license": "ISC",
|
||||
"tshy": {
|
||||
"exports": {
|
||||
"./package.json": "./package.json",
|
||||
".": "./src/index.ts"
|
||||
}
|
||||
},
|
||||
"type": "module"
|
||||
}
|
||||
88
install/config-ui/node_modules/sucrase/package.json
generated
vendored
Normal file
88
install/config-ui/node_modules/sucrase/package.json
generated
vendored
Normal file
@@ -0,0 +1,88 @@
|
||||
{
|
||||
"name": "sucrase",
|
||||
"version": "3.35.0",
|
||||
"description": "Super-fast alternative to Babel for when you can target modern JS runtimes",
|
||||
"author": "Alan Pierce <alangpierce@gmail.com>",
|
||||
"license": "MIT",
|
||||
"main": "dist/index.js",
|
||||
"module": "dist/esm/index.js",
|
||||
"types": "dist/types/index.d.ts",
|
||||
"bin": {
|
||||
"sucrase": "./bin/sucrase",
|
||||
"sucrase-node": "./bin/sucrase-node"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "sucrase-node script/build.ts",
|
||||
"fast-build": "sucrase-node script/build.ts --fast",
|
||||
"clean": "rm -rf ./build ./dist ./dist-self-build ./dist-types ./example-runner/example-repos ./spec-compliance-tests/test262/test262-checkout ./spec-compliance-tests/babel-tests/babel-tests-checkout",
|
||||
"generate": "sucrase-node generator/generate.ts",
|
||||
"benchmark": "cd benchmark && yarn && sucrase-node ./benchmark.ts",
|
||||
"benchmark-compare": "sucrase-node ./benchmark/compare-performance.ts",
|
||||
"microbenchmark": "sucrase-node benchmark/microbenchmark.ts",
|
||||
"lint": "sucrase-node script/lint.ts",
|
||||
"lint-fix": "sucrase-node script/lint.ts --fix",
|
||||
"profile": "node --inspect-brk ./node_modules/.bin/sucrase-node ./benchmark/profile",
|
||||
"profile-project": "node --inspect-brk ./node_modules/.bin/sucrase-node ./benchmark/benchmark-project.ts --profile",
|
||||
"prepublishOnly": "yarn clean && yarn build",
|
||||
"release": "sucrase-node script/release.ts",
|
||||
"run-examples": "sucrase-node example-runner/example-runner.ts",
|
||||
"test": "yarn lint && yarn test-only",
|
||||
"test-only": "mocha './test/**/*.ts'",
|
||||
"integration-test": "cd integration-test && yarn && yarn link @sucrase/jest-plugin && mocha --timeout 10000 ./integration-tests.ts",
|
||||
"test262": "sucrase-node spec-compliance-tests/test262/run-test262.ts",
|
||||
"check-babel-tests": "sucrase-node spec-compliance-tests/babel-tests/check-babel-tests.ts",
|
||||
"test-with-coverage": "nyc mocha './test/**/*.ts'",
|
||||
"report-coverage": "nyc report --reporter=text-lcov > coverage.lcov && codecov"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/alangpierce/sucrase.git"
|
||||
},
|
||||
"keywords": [
|
||||
"babel",
|
||||
"jsx",
|
||||
"typescript",
|
||||
"flow"
|
||||
],
|
||||
"bugs": {
|
||||
"url": "https://github.com/alangpierce/sucrase/issues"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.22.5",
|
||||
"@jridgewell/trace-mapping": "^0.3.18",
|
||||
"@types/mocha": "^9.1.1",
|
||||
"@types/mz": "^2.7.4",
|
||||
"@types/node": "^20.3.2",
|
||||
"@typescript-eslint/eslint-plugin": "^5.60.1",
|
||||
"@typescript-eslint/parser": "^5.60.1",
|
||||
"chalk": "^4",
|
||||
"codecov": "^3.8.3",
|
||||
"eslint": "^8.43.0",
|
||||
"eslint-config-airbnb-base": "^15.0.0",
|
||||
"eslint-config-prettier": "^8.8.0",
|
||||
"eslint-plugin-import": "~2.26",
|
||||
"eslint-plugin-prettier": "^4.2.1",
|
||||
"mocha": "^10.2.0",
|
||||
"nyc": "^15.1.0",
|
||||
"prettier": "^2.8.8",
|
||||
"sucrase": "^3.34.0",
|
||||
"test262-harness": "^10.0.0",
|
||||
"ts-interface-builder": "^0.3.3",
|
||||
"typescript": "~5.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@jridgewell/gen-mapping": "^0.3.2",
|
||||
"commander": "^4.0.0",
|
||||
"glob": "^10.3.10",
|
||||
"lines-and-columns": "^1.1.6",
|
||||
"mz": "^2.7.0",
|
||||
"pirates": "^4.0.1",
|
||||
"ts-interface-checker": "^0.1.9"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16 || 14 >=14.17"
|
||||
},
|
||||
"resolutions": {
|
||||
"**/eshost/socket.io": "4.7.0"
|
||||
}
|
||||
}
|
||||
1
install/config-ui/node_modules/sucrase/register/index.js
generated
vendored
Normal file
1
install/config-ui/node_modules/sucrase/register/index.js
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
require("../dist/register").registerAll();
|
||||
1
install/config-ui/node_modules/sucrase/register/js.js
generated
vendored
Normal file
1
install/config-ui/node_modules/sucrase/register/js.js
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
require("../dist/register").registerJS();
|
||||
1
install/config-ui/node_modules/sucrase/register/jsx.js
generated
vendored
Normal file
1
install/config-ui/node_modules/sucrase/register/jsx.js
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
require("../dist/register").registerJSX();
|
||||
1
install/config-ui/node_modules/sucrase/register/ts-legacy-module-interop.js
generated
vendored
Normal file
1
install/config-ui/node_modules/sucrase/register/ts-legacy-module-interop.js
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
require("../dist/register").registerTSLegacyModuleInterop();
|
||||
1
install/config-ui/node_modules/sucrase/register/ts.js
generated
vendored
Normal file
1
install/config-ui/node_modules/sucrase/register/ts.js
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
require("../dist/register").registerTS();
|
||||
1
install/config-ui/node_modules/sucrase/register/tsx-legacy-module-interop.js
generated
vendored
Normal file
1
install/config-ui/node_modules/sucrase/register/tsx-legacy-module-interop.js
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
require("../dist/register").registerTSXLegacyModuleInterop();
|
||||
1
install/config-ui/node_modules/sucrase/register/tsx.js
generated
vendored
Normal file
1
install/config-ui/node_modules/sucrase/register/tsx.js
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
require("../dist/register").registerTSX();
|
||||
83
install/config-ui/node_modules/sucrase/ts-node-plugin/index.js
generated
vendored
Normal file
83
install/config-ui/node_modules/sucrase/ts-node-plugin/index.js
generated
vendored
Normal file
@@ -0,0 +1,83 @@
|
||||
const {transform} = require("../dist");
|
||||
|
||||
// Enum constants taken from the TypeScript codebase.
|
||||
const ModuleKindCommonJS = 1;
|
||||
|
||||
const JsxEmitReactJSX = 4;
|
||||
const JsxEmitReactJSXDev = 5;
|
||||
|
||||
/**
|
||||
* ts-node transpiler plugin
|
||||
*
|
||||
* This plugin hooks into ts-node so that Sucrase can handle all TS-to-JS
|
||||
* conversion while ts-node handles the ESM loader, require hook, REPL
|
||||
* integration, etc. ts-node automatically discovers the relevant tsconfig file,
|
||||
* so the main logic in this integration is translating tsconfig options to the
|
||||
* corresponding Sucrase options.
|
||||
*
|
||||
* Any tsconfig options relevant to Sucrase are translated, but some config
|
||||
* options outside the scope of Sucrase are ignored. For example, we assume the
|
||||
* isolatedModules option, and we ignore target because Sucrase doesn't provide
|
||||
* JS syntax downleveling (at least not in a way that is useful for Node).
|
||||
*
|
||||
* One notable caveat is that importsNotUsedAsValues and preserveValueImports
|
||||
* are ignored right now, since they are deprecated and don't have exact Sucrase
|
||||
* equivalents. To preserve imports and exports, use verbatimModuleSyntax.
|
||||
*/
|
||||
function create(createOptions) {
|
||||
const {nodeModuleEmitKind} = createOptions;
|
||||
const {
|
||||
module,
|
||||
jsx,
|
||||
jsxFactory,
|
||||
jsxFragmentFactory,
|
||||
jsxImportSource,
|
||||
esModuleInterop,
|
||||
verbatimModuleSyntax,
|
||||
} = createOptions.service.config.options;
|
||||
|
||||
return {
|
||||
transpile(input, transpileOptions) {
|
||||
const {fileName} = transpileOptions;
|
||||
const transforms = [];
|
||||
// Detect JS rather than TS so we bias toward including the typescript
|
||||
// transform, since almost always it doesn't hurt to include.
|
||||
const isJS =
|
||||
fileName.endsWith(".js") ||
|
||||
fileName.endsWith(".jsx") ||
|
||||
fileName.endsWith(".mjs") ||
|
||||
fileName.endsWith(".cjs");
|
||||
if (!isJS) {
|
||||
transforms.push("typescript");
|
||||
}
|
||||
if (module === ModuleKindCommonJS || nodeModuleEmitKind === "nodecjs") {
|
||||
transforms.push("imports");
|
||||
}
|
||||
if (fileName.endsWith(".tsx") || fileName.endsWith(".jsx")) {
|
||||
transforms.push("jsx");
|
||||
}
|
||||
|
||||
const {code, sourceMap} = transform(input, {
|
||||
transforms,
|
||||
disableESTransforms: true,
|
||||
jsxRuntime: jsx === JsxEmitReactJSX || jsx === JsxEmitReactJSXDev ? "automatic" : "classic",
|
||||
production: jsx === JsxEmitReactJSX,
|
||||
jsxImportSource,
|
||||
jsxPragma: jsxFactory,
|
||||
jsxFragmentPragma: jsxFragmentFactory,
|
||||
keepUnusedImports: verbatimModuleSyntax,
|
||||
preserveDynamicImport: nodeModuleEmitKind === "nodecjs",
|
||||
injectCreateRequireForImportRequire: nodeModuleEmitKind === "nodeesm",
|
||||
enableLegacyTypeScriptModuleInterop: !esModuleInterop,
|
||||
sourceMapOptions: {compiledFilename: fileName},
|
||||
filePath: fileName,
|
||||
});
|
||||
return {
|
||||
outputText: code,
|
||||
sourceMapText: JSON.stringify(sourceMap),
|
||||
};
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
exports.create = create;
|
||||
Reference in New Issue
Block a user