first commit

This commit is contained in:
2026-09-08 20:28:54 +08:00
commit 2ada8d3d5a
37380 changed files with 4886169 additions and 0 deletions
+21
View File
@@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2017-present, Yuxi (Evan) You
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.
+27
View File
@@ -0,0 +1,27 @@
# launch-editor-middleware
An express/connect/webpack-dev-server compatible middleware for opening files in your editor from the browser, powered by [`launch-editor`](https://github.com/vitejs/launch-editor#readme).
## Usage
```js
const launchMiddleware = require('launch-editor-middleware')
app.use('/__open-in-editor', launchMiddleware())
```
To launch files, send requests to the server like the following:
```text
/__open-in-editor?file=src/main.js:13:24
```
Both the line and column numbers are optional. `file://` URIs are also supported.
## API
See [`index.d.ts`](./index.d.ts) for the full type definitions and the available arguments.
## Custom editor support
This package infers the editor from currently running processes. You can override that behavior with the `LAUNCH_EDITOR` environment variable to force a specific editor or run a custom launch script. See the [`launch-editor` README](https://github.com/vitejs/launch-editor#custom-editor-support) for details.
+45
View File
@@ -0,0 +1,45 @@
import http from 'http'
type Middleware = (req: http.IncomingMessage, res: http.ServerResponse) => void
type ErrorCallback = (fileName: string, errorMessage: string | null) => void
/**
* A middleware to launch an editor to open a file at a specific line and column.
* The request url should have a `file` query parameter with the file path and
* optional line and column numbers (e.g. "?file=/path/to/file.js:10:2").
*
* @param onErrorCallback Optional callback for handling errors.
*/
declare function launchEditorMiddleware(onErrorCallback?: ErrorCallback): Middleware
/**
* A middleware to launch an editor to open a file at a specific line and column.
* The request url should have a `file` query parameter with the file path and
* optional line and column numbers (e.g. "?file=/path/to/file.js:10:2").
*
* @param specifiedEditor Optional editor command or path to use. Will be
* parsed using `shell-quote`.
* @param onErrorCallback Optional callback for handling errors.
*/
declare function launchEditorMiddleware(
specifiedEditor?: string,
onErrorCallback?: ErrorCallback,
): Middleware
/**
* A middleware to launch an editor to open a file at a specific line and column.
* The request url should have a `file` query parameter with the file path and
* optional line and column numbers (e.g. "?file=/path/to/file.js:10:2").
*
* @param specifiedEditor Optional editor command or path to use. Will be
* parsed using `shell-quote`.
* @param srcRoot Optional source root directory to resolve relative file paths.
* @param onErrorCallback Optional callback for handling errors.
*/
declare function launchEditorMiddleware(
specifiedEditor?: string,
srcRoot?: string,
onErrorCallback?: ErrorCallback,
): Middleware
export = launchEditorMiddleware
+40
View File
@@ -0,0 +1,40 @@
const path = require('path')
const launch = require('launch-editor')
module.exports = (specifiedEditor, srcRoot, onErrorCallback) => {
if (typeof specifiedEditor === 'function') {
onErrorCallback = specifiedEditor
specifiedEditor = undefined
}
if (typeof srcRoot === 'function') {
onErrorCallback = srcRoot
srcRoot = undefined
}
srcRoot = srcRoot || process.cwd()
return function launchEditorMiddleware(req, res) {
let url
try {
const fullUrl = req.url.startsWith('http') ? req.url : `http://localhost${req.url}`
url = new URL(fullUrl)
// eslint-disable-next-line no-unused-vars
} catch (_err) {
res.statusCode = 500
res.end(`launch-editor-middleware: invalid URL.`)
return
}
const file = url.searchParams.get('file')
if (!file) {
res.statusCode = 500
res.end(`launch-editor-middleware: required query param "file" is missing.`)
} else {
const resolved = file.startsWith('file://') ? file : path.resolve(srcRoot, file)
launch(resolved, specifiedEditor, onErrorCallback)
res.end()
}
}
}
+31
View File
@@ -0,0 +1,31 @@
{
"name": "launch-editor-middleware",
"version": "2.14.1",
"description": "express middleware for launching editor",
"keywords": [
"editor",
"express",
"middleware"
],
"homepage": "https://github.com/vitejs/launch-editor#readme",
"bugs": {
"url": "https://github.com/vitejs/launch-editor/issues"
},
"license": "MIT",
"author": "Evan You",
"repository": {
"type": "git",
"url": "git+https://github.com/vitejs/launch-editor.git"
},
"files": [
"index.js",
"index.d.ts"
],
"main": "index.js",
"dependencies": {
"launch-editor": "^2.14.1"
},
"scripts": {
"test": "node --test --experimental-test-module-mocks"
}
}