This commit is contained in:
onvia 2023-09-14 17:07:28 +08:00
commit f4a7801d33
441 changed files with 255551 additions and 263062 deletions

View File

@ -1,12 +1,12 @@
{ {
"name": "ccc-tnt-psd2ui", "name": "ccc-tnt-psd2ui",
"version": "0.0.1", "version": "1.0.0",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "ccc-tnt-psd2ui", "name": "ccc-tnt-psd2ui",
"version": "0.0.1", "version": "1.0.0",
"dependencies": { "dependencies": {
"ag-psd": "^15.0.0", "ag-psd": "^15.0.0",
"canvas": "^2.10.2", "canvas": "^2.10.2",

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{ {
"name": "ccc-tnt-psd2ui", "name": "ccc-tnt-psd2ui",
"version": "0.0.1", "version": "1.0.0",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
@ -388,8 +388,9 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/node-fetch": { "node_modules/node-fetch": {
"version": "2.6.7", "version": "2.7.0",
"license": "MIT", "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.7.0.tgz",
"integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
"dependencies": { "dependencies": {
"whatwg-url": "^5.0.0" "whatwg-url": "^5.0.0"
}, },
@ -455,8 +456,7 @@
}, },
"node_modules/pinyin-pro": { "node_modules/pinyin-pro": {
"version": "3.16.0", "version": "3.16.0",
"resolved": "https://registry.npmmirror.com/pinyin-pro/-/pinyin-pro-3.16.0.tgz", "license": "MIT"
"integrity": "sha512-U4pMQ/KSMM5JmSb+ZcReCIbgzGl/JaglaHqWjCli0hpA0rDdjRbAO67e6fOa3ZFcJzbqfe6bJkaMMmpiWmkXgQ=="
}, },
"node_modules/readable-stream": { "node_modules/readable-stream": {
"version": "3.6.0", "version": "3.6.0",

View File

@ -332,7 +332,7 @@ endif
quiet_cmd_regen_makefile = ACTION Regenerating $@ quiet_cmd_regen_makefile = ACTION Regenerating $@
cmd_regen_makefile = cd $(srcdir); /Users/wsl/.nvm/versions/node/v16.14.0/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py -fmake --ignore-environment "-Dlibrary=shared_library" "-Dvisibility=default" "-Dnode_root_dir=/Users/wsl/Library/Caches/node-gyp/16.14.0" "-Dnode_gyp_dir=/Users/wsl/.nvm/versions/node/v16.14.0/lib/node_modules/npm/node_modules/node-gyp" "-Dnode_lib_file=/Users/wsl/Library/Caches/node-gyp/16.14.0/<(target_arch)/node.lib" "-Dmodule_root_dir=/Users/wsl/Documents/Git/ccc-tnt-psd2ui/ccc-tnt-psd2ui-v2.4.x/node_modules/canvas" "-Dnode_engine=v8" "--depth=." "-Goutput_dir=." "--generator-output=build" -I/Users/wsl/Documents/Git/ccc-tnt-psd2ui/ccc-tnt-psd2ui-v2.4.x/node_modules/canvas/build/config.gypi -I/Users/wsl/.nvm/versions/node/v16.14.0/lib/node_modules/npm/node_modules/node-gyp/addon.gypi -I/Users/wsl/Library/Caches/node-gyp/16.14.0/include/node/common.gypi "--toplevel-dir=." binding.gyp cmd_regen_makefile = cd $(srcdir); /Users/wsl/.nvm/versions/node/v16.14.0/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py -fmake --ignore-environment "-Dlibrary=shared_library" "-Dvisibility=default" "-Dnode_root_dir=/Users/wsl/Library/Caches/node-gyp/16.14.0" "-Dnode_gyp_dir=/Users/wsl/.nvm/versions/node/v16.14.0/lib/node_modules/npm/node_modules/node-gyp" "-Dnode_lib_file=/Users/wsl/Library/Caches/node-gyp/16.14.0/<(target_arch)/node.lib" "-Dmodule_root_dir=/Users/wsl/Documents/Git/ccc-tnt-psd2ui/ccc-tnt-psd2ui-v2.4.x/node_modules/canvas" "-Dnode_engine=v8" "--depth=." "-Goutput_dir=." "--generator-output=build" -I/Users/wsl/Documents/Git/ccc-tnt-psd2ui/ccc-tnt-psd2ui-v2.4.x/node_modules/canvas/build/config.gypi -I/Users/wsl/.nvm/versions/node/v16.14.0/lib/node_modules/npm/node_modules/node-gyp/addon.gypi -I/Users/wsl/Library/Caches/node-gyp/16.14.0/include/node/common.gypi "--toplevel-dir=." binding.gyp
Makefile: $(srcdir)/binding.gyp $(srcdir)/../../../../../../Library/Caches/node-gyp/16.14.0/include/node/common.gypi $(srcdir)/build/config.gypi $(srcdir)/../../../../../../.nvm/versions/node/v16.14.0/lib/node_modules/npm/node_modules/node-gyp/addon.gypi Makefile: $(srcdir)/build/config.gypi $(srcdir)/binding.gyp $(srcdir)/../../../../../../Library/Caches/node-gyp/16.14.0/include/node/common.gypi $(srcdir)/../../../../../../.nvm/versions/node/v16.14.0/lib/node_modules/npm/node_modules/node-gyp/addon.gypi
$(call do_cmd,regen_makefile) $(call do_cmd,regen_makefile)
# "all" is a concatenation of the "all" targets from all the included # "all" is a concatenation of the "all" targets from all the included

View File

@ -188,6 +188,49 @@ fetch('https://assets-cdn.github.com/images/modules/logos_page/Octocat.png')
}); });
``` ```
In Node.js 14 you can also use async iterators to read `body`; however, be careful to catch
errors -- the longer a response runs, the more likely it is to encounter an error.
```js
const fetch = require('node-fetch');
const response = await fetch('https://httpbin.org/stream/3');
try {
for await (const chunk of response.body) {
console.dir(JSON.parse(chunk.toString()));
}
} catch (err) {
console.error(err.stack);
}
```
In Node.js 12 you can also use async iterators to read `body`; however, async iterators with streams
did not mature until Node.js 14, so you need to do some extra work to ensure you handle errors
directly from the stream and wait on it response to fully close.
```js
const fetch = require('node-fetch');
const read = async body => {
let error;
body.on('error', err => {
error = err;
});
for await (const chunk of body) {
console.dir(JSON.parse(chunk.toString()));
}
return new Promise((resolve, reject) => {
body.on('close', () => {
error ? reject(error) : resolve();
});
});
};
try {
const response = await fetch('https://httpbin.org/stream/3');
await read(response.body);
} catch (err) {
console.error(err.stack);
}
```
#### Buffer #### Buffer
If you prefer to cache binary data in full, use buffer(). (NOTE: `buffer()` is a `node-fetch`-only API) If you prefer to cache binary data in full, use buffer(). (NOTE: `buffer()` is a `node-fetch`-only API)
@ -344,7 +387,6 @@ Header | Value
------------------- | -------------------------------------------------------- ------------------- | --------------------------------------------------------
`Accept-Encoding` | `gzip,deflate` _(when `options.compress === true`)_ `Accept-Encoding` | `gzip,deflate` _(when `options.compress === true`)_
`Accept` | `*/*` `Accept` | `*/*`
`Connection` | `close` _(when no `options.agent` is present)_
`Content-Length` | _(automatically calculated, if possible)_ `Content-Length` | _(automatically calculated, if possible)_
`Transfer-Encoding` | `chunked` _(when `req.body` is a stream)_ `Transfer-Encoding` | `chunked` _(when `req.body` is a stream)_
`User-Agent` | `node-fetch/1.0 (+https://github.com/bitinn/node-fetch)` `User-Agent` | `node-fetch/1.0 (+https://github.com/bitinn/node-fetch)`
@ -361,6 +403,8 @@ The `agent` option allows you to specify networking related options which are ou
See [`http.Agent`](https://nodejs.org/api/http.html#http_new_agent_options) for more information. See [`http.Agent`](https://nodejs.org/api/http.html#http_new_agent_options) for more information.
If no agent is specified, the default agent provided by Node.js is used. Note that [this changed in Node.js 19](https://github.com/nodejs/node/blob/4267b92604ad78584244488e7f7508a690cb80d0/lib/_http_agent.js#L564) to have `keepalive` true by default. If you wish to enable `keepalive` in an earlier version of Node.js, you can override the agent as per the following code sample.
In addition, the `agent` option accepts a function that returns `http`(s)`.Agent` instance given current [URL](https://nodejs.org/api/url.html), this is useful during a redirection chain across HTTP and HTTPS protocol. In addition, the `agent` option accepts a function that returns `http`(s)`.Agent` instance given current [URL](https://nodejs.org/api/url.html), this is useful during a redirection chain across HTTP and HTTPS protocol.
```js ```js

View File

@ -11,15 +11,15 @@ var getGlobal = function () {
throw new Error('unable to locate global object'); throw new Error('unable to locate global object');
} }
var global = getGlobal(); var globalObject = getGlobal();
module.exports = exports = global.fetch; module.exports = exports = globalObject.fetch;
// Needed for TypeScript and Webpack. // Needed for TypeScript and Webpack.
if (global.fetch) { if (globalObject.fetch) {
exports.default = global.fetch.bind(global); exports.default = globalObject.fetch.bind(globalObject);
} }
exports.Headers = global.Headers; exports.Headers = globalObject.Headers;
exports.Request = global.Request; exports.Request = globalObject.Request;
exports.Response = global.Response; exports.Response = globalObject.Response;

View File

@ -1361,10 +1361,6 @@ function getNodeRequestOptions(request) {
agent = agent(parsedURL); agent = agent(parsedURL);
} }
if (!headers.has('Connection') && !agent) {
headers.set('Connection', 'close');
}
// HTTP-network fetch step 4.2 // HTTP-network fetch step 4.2
// chunked encoding is handled by Node.js // chunked encoding is handled by Node.js
@ -1413,6 +1409,20 @@ const isDomainOrSubdomain = function isDomainOrSubdomain(destination, original)
return orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest); return orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest);
}; };
/**
* isSameProtocol reports whether the two provided URLs use the same protocol.
*
* Both domains must already be in canonical form.
* @param {string|URL} original
* @param {string|URL} destination
*/
const isSameProtocol = function isSameProtocol(destination, original) {
const orig = new URL$1(original).protocol;
const dest = new URL$1(destination).protocol;
return orig === dest;
};
/** /**
* Fetch function * Fetch function
* *
@ -1444,7 +1454,7 @@ function fetch(url, opts) {
let error = new AbortError('The user aborted a request.'); let error = new AbortError('The user aborted a request.');
reject(error); reject(error);
if (request.body && request.body instanceof Stream.Readable) { if (request.body && request.body instanceof Stream.Readable) {
request.body.destroy(error); destroyStream(request.body, error);
} }
if (!response || !response.body) return; if (!response || !response.body) return;
response.body.emit('error', error); response.body.emit('error', error);
@ -1485,9 +1495,43 @@ function fetch(url, opts) {
req.on('error', function (err) { req.on('error', function (err) {
reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err)); reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));
if (response && response.body) {
destroyStream(response.body, err);
}
finalize(); finalize();
}); });
fixResponseChunkedTransferBadEnding(req, function (err) {
if (signal && signal.aborted) {
return;
}
if (response && response.body) {
destroyStream(response.body, err);
}
});
/* c8 ignore next 18 */
if (parseInt(process.version.substring(1)) < 14) {
// Before Node.js 14, pipeline() does not fully support async iterators and does not always
// properly handle when the socket close/end events are out of order.
req.on('socket', function (s) {
s.addListener('close', function (hadError) {
// if a data listener is still present we didn't end cleanly
const hasDataListener = s.listenerCount('data') > 0;
// if end happened before close but the socket didn't emit an error, do it now
if (response && hasDataListener && !hadError && !(signal && signal.aborted)) {
const err = new Error('Premature close');
err.code = 'ERR_STREAM_PREMATURE_CLOSE';
response.body.emit('error', err);
}
});
});
}
req.on('response', function (res) { req.on('response', function (res) {
clearTimeout(reqTimeout); clearTimeout(reqTimeout);
@ -1559,7 +1603,7 @@ function fetch(url, opts) {
size: request.size size: request.size
}; };
if (!isDomainOrSubdomain(request.url, locationURL)) { if (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) {
for (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) { for (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {
requestOpts.headers.delete(name); requestOpts.headers.delete(name);
} }
@ -1652,6 +1696,13 @@ function fetch(url, opts) {
response = new Response(body, response_options); response = new Response(body, response_options);
resolve(response); resolve(response);
}); });
raw.on('end', function () {
// some old IIS servers return zero-length OK deflate responses, so 'data' is never emitted.
if (!response) {
response = new Response(body, response_options);
resolve(response);
}
});
return; return;
} }
@ -1671,6 +1722,44 @@ function fetch(url, opts) {
writeToStream(req, request); writeToStream(req, request);
}); });
} }
function fixResponseChunkedTransferBadEnding(request, errorCallback) {
let socket;
request.on('socket', function (s) {
socket = s;
});
request.on('response', function (response) {
const headers = response.headers;
if (headers['transfer-encoding'] === 'chunked' && !headers['content-length']) {
response.once('close', function (hadError) {
// tests for socket presence, as in some situations the
// the 'socket' event is not triggered for the request
// (happens in deno), avoids `TypeError`
// if a data listener is still present we didn't end cleanly
const hasDataListener = socket && socket.listenerCount('data') > 0;
if (hasDataListener && !hadError) {
const err = new Error('Premature close');
err.code = 'ERR_STREAM_PREMATURE_CLOSE';
errorCallback(err);
}
});
}
});
}
function destroyStream(stream, err) {
if (stream.destroy) {
stream.destroy(err);
} else {
// node < 8
stream.emit('error', err);
stream.end();
}
}
/** /**
* Redirect code matching * Redirect code matching
* *
@ -1685,4 +1774,4 @@ fetch.isRedirect = function (code) {
fetch.Promise = global.Promise; fetch.Promise = global.Promise;
export default fetch; export default fetch;
export { Headers, Request, Response, FetchError }; export { Headers, Request, Response, FetchError, AbortError };

View File

@ -1365,10 +1365,6 @@ function getNodeRequestOptions(request) {
agent = agent(parsedURL); agent = agent(parsedURL);
} }
if (!headers.has('Connection') && !agent) {
headers.set('Connection', 'close');
}
// HTTP-network fetch step 4.2 // HTTP-network fetch step 4.2
// chunked encoding is handled by Node.js // chunked encoding is handled by Node.js
@ -1417,6 +1413,20 @@ const isDomainOrSubdomain = function isDomainOrSubdomain(destination, original)
return orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest); return orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest);
}; };
/**
* isSameProtocol reports whether the two provided URLs use the same protocol.
*
* Both domains must already be in canonical form.
* @param {string|URL} original
* @param {string|URL} destination
*/
const isSameProtocol = function isSameProtocol(destination, original) {
const orig = new URL$1(original).protocol;
const dest = new URL$1(destination).protocol;
return orig === dest;
};
/** /**
* Fetch function * Fetch function
* *
@ -1448,7 +1458,7 @@ function fetch(url, opts) {
let error = new AbortError('The user aborted a request.'); let error = new AbortError('The user aborted a request.');
reject(error); reject(error);
if (request.body && request.body instanceof Stream.Readable) { if (request.body && request.body instanceof Stream.Readable) {
request.body.destroy(error); destroyStream(request.body, error);
} }
if (!response || !response.body) return; if (!response || !response.body) return;
response.body.emit('error', error); response.body.emit('error', error);
@ -1489,9 +1499,43 @@ function fetch(url, opts) {
req.on('error', function (err) { req.on('error', function (err) {
reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err)); reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));
if (response && response.body) {
destroyStream(response.body, err);
}
finalize(); finalize();
}); });
fixResponseChunkedTransferBadEnding(req, function (err) {
if (signal && signal.aborted) {
return;
}
if (response && response.body) {
destroyStream(response.body, err);
}
});
/* c8 ignore next 18 */
if (parseInt(process.version.substring(1)) < 14) {
// Before Node.js 14, pipeline() does not fully support async iterators and does not always
// properly handle when the socket close/end events are out of order.
req.on('socket', function (s) {
s.addListener('close', function (hadError) {
// if a data listener is still present we didn't end cleanly
const hasDataListener = s.listenerCount('data') > 0;
// if end happened before close but the socket didn't emit an error, do it now
if (response && hasDataListener && !hadError && !(signal && signal.aborted)) {
const err = new Error('Premature close');
err.code = 'ERR_STREAM_PREMATURE_CLOSE';
response.body.emit('error', err);
}
});
});
}
req.on('response', function (res) { req.on('response', function (res) {
clearTimeout(reqTimeout); clearTimeout(reqTimeout);
@ -1563,7 +1607,7 @@ function fetch(url, opts) {
size: request.size size: request.size
}; };
if (!isDomainOrSubdomain(request.url, locationURL)) { if (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) {
for (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) { for (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {
requestOpts.headers.delete(name); requestOpts.headers.delete(name);
} }
@ -1656,6 +1700,13 @@ function fetch(url, opts) {
response = new Response(body, response_options); response = new Response(body, response_options);
resolve(response); resolve(response);
}); });
raw.on('end', function () {
// some old IIS servers return zero-length OK deflate responses, so 'data' is never emitted.
if (!response) {
response = new Response(body, response_options);
resolve(response);
}
});
return; return;
} }
@ -1675,6 +1726,44 @@ function fetch(url, opts) {
writeToStream(req, request); writeToStream(req, request);
}); });
} }
function fixResponseChunkedTransferBadEnding(request, errorCallback) {
let socket;
request.on('socket', function (s) {
socket = s;
});
request.on('response', function (response) {
const headers = response.headers;
if (headers['transfer-encoding'] === 'chunked' && !headers['content-length']) {
response.once('close', function (hadError) {
// tests for socket presence, as in some situations the
// the 'socket' event is not triggered for the request
// (happens in deno), avoids `TypeError`
// if a data listener is still present we didn't end cleanly
const hasDataListener = socket && socket.listenerCount('data') > 0;
if (hasDataListener && !hadError) {
const err = new Error('Premature close');
err.code = 'ERR_STREAM_PREMATURE_CLOSE';
errorCallback(err);
}
});
}
});
}
function destroyStream(stream, err) {
if (stream.destroy) {
stream.destroy(err);
} else {
// node < 8
stream.emit('error', err);
stream.end();
}
}
/** /**
* Redirect code matching * Redirect code matching
* *
@ -1695,3 +1784,4 @@ exports.Headers = Headers;
exports.Request = Request; exports.Request = Request;
exports.Response = Response; exports.Response = Response;
exports.FetchError = FetchError; exports.FetchError = FetchError;
exports.AbortError = AbortError;

View File

@ -1359,10 +1359,6 @@ function getNodeRequestOptions(request) {
agent = agent(parsedURL); agent = agent(parsedURL);
} }
if (!headers.has('Connection') && !agent) {
headers.set('Connection', 'close');
}
// HTTP-network fetch step 4.2 // HTTP-network fetch step 4.2
// chunked encoding is handled by Node.js // chunked encoding is handled by Node.js
@ -1411,6 +1407,20 @@ const isDomainOrSubdomain = function isDomainOrSubdomain(destination, original)
return orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest); return orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest);
}; };
/**
* isSameProtocol reports whether the two provided URLs use the same protocol.
*
* Both domains must already be in canonical form.
* @param {string|URL} original
* @param {string|URL} destination
*/
const isSameProtocol = function isSameProtocol(destination, original) {
const orig = new URL$1(original).protocol;
const dest = new URL$1(destination).protocol;
return orig === dest;
};
/** /**
* Fetch function * Fetch function
* *
@ -1442,7 +1452,7 @@ function fetch(url, opts) {
let error = new AbortError('The user aborted a request.'); let error = new AbortError('The user aborted a request.');
reject(error); reject(error);
if (request.body && request.body instanceof Stream.Readable) { if (request.body && request.body instanceof Stream.Readable) {
request.body.destroy(error); destroyStream(request.body, error);
} }
if (!response || !response.body) return; if (!response || !response.body) return;
response.body.emit('error', error); response.body.emit('error', error);
@ -1483,9 +1493,43 @@ function fetch(url, opts) {
req.on('error', function (err) { req.on('error', function (err) {
reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err)); reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));
if (response && response.body) {
destroyStream(response.body, err);
}
finalize(); finalize();
}); });
fixResponseChunkedTransferBadEnding(req, function (err) {
if (signal && signal.aborted) {
return;
}
if (response && response.body) {
destroyStream(response.body, err);
}
});
/* c8 ignore next 18 */
if (parseInt(process.version.substring(1)) < 14) {
// Before Node.js 14, pipeline() does not fully support async iterators and does not always
// properly handle when the socket close/end events are out of order.
req.on('socket', function (s) {
s.addListener('close', function (hadError) {
// if a data listener is still present we didn't end cleanly
const hasDataListener = s.listenerCount('data') > 0;
// if end happened before close but the socket didn't emit an error, do it now
if (response && hasDataListener && !hadError && !(signal && signal.aborted)) {
const err = new Error('Premature close');
err.code = 'ERR_STREAM_PREMATURE_CLOSE';
response.body.emit('error', err);
}
});
});
}
req.on('response', function (res) { req.on('response', function (res) {
clearTimeout(reqTimeout); clearTimeout(reqTimeout);
@ -1557,7 +1601,7 @@ function fetch(url, opts) {
size: request.size size: request.size
}; };
if (!isDomainOrSubdomain(request.url, locationURL)) { if (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) {
for (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) { for (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {
requestOpts.headers.delete(name); requestOpts.headers.delete(name);
} }
@ -1650,6 +1694,13 @@ function fetch(url, opts) {
response = new Response(body, response_options); response = new Response(body, response_options);
resolve(response); resolve(response);
}); });
raw.on('end', function () {
// some old IIS servers return zero-length OK deflate responses, so 'data' is never emitted.
if (!response) {
response = new Response(body, response_options);
resolve(response);
}
});
return; return;
} }
@ -1669,6 +1720,44 @@ function fetch(url, opts) {
writeToStream(req, request); writeToStream(req, request);
}); });
} }
function fixResponseChunkedTransferBadEnding(request, errorCallback) {
let socket;
request.on('socket', function (s) {
socket = s;
});
request.on('response', function (response) {
const headers = response.headers;
if (headers['transfer-encoding'] === 'chunked' && !headers['content-length']) {
response.once('close', function (hadError) {
// tests for socket presence, as in some situations the
// the 'socket' event is not triggered for the request
// (happens in deno), avoids `TypeError`
// if a data listener is still present we didn't end cleanly
const hasDataListener = socket && socket.listenerCount('data') > 0;
if (hasDataListener && !hadError) {
const err = new Error('Premature close');
err.code = 'ERR_STREAM_PREMATURE_CLOSE';
errorCallback(err);
}
});
}
});
}
function destroyStream(stream, err) {
if (stream.destroy) {
stream.destroy(err);
} else {
// node < 8
stream.emit('error', err);
stream.end();
}
}
/** /**
* Redirect code matching * Redirect code matching
* *
@ -1683,4 +1772,4 @@ fetch.isRedirect = function (code) {
fetch.Promise = global.Promise; fetch.Promise = global.Promise;
export default fetch; export default fetch;
export { Headers, Request, Response, FetchError }; export { Headers, Request, Response, FetchError, AbortError };

View File

@ -1,6 +1,6 @@
{ {
"name": "node-fetch", "name": "node-fetch",
"version": "2.6.7", "version": "2.7.0",
"description": "A light-weight module that brings window.fetch to node.js", "description": "A light-weight module that brings window.fetch to node.js",
"main": "lib/index.js", "main": "lib/index.js",
"browser": "./browser.js", "browser": "./browser.js",
@ -39,7 +39,7 @@
"dependencies": { "dependencies": {
"whatwg-url": "^5.0.0" "whatwg-url": "^5.0.0"
}, },
"peerDependencies": { "peerDependencies": {
"encoding": "^0.1.0" "encoding": "^0.1.0"
}, },
"peerDependenciesMeta": { "peerDependenciesMeta": {
@ -53,7 +53,9 @@
"abortcontroller-polyfill": "^1.3.0", "abortcontroller-polyfill": "^1.3.0",
"babel-core": "^6.26.3", "babel-core": "^6.26.3",
"babel-plugin-istanbul": "^4.1.6", "babel-plugin-istanbul": "^4.1.6",
"babel-preset-env": "^1.6.1", "babel-plugin-transform-async-generator-functions": "^6.24.1",
"babel-polyfill": "^6.26.0",
"babel-preset-env": "1.4.0",
"babel-register": "^6.16.3", "babel-register": "^6.16.3",
"chai": "^3.5.0", "chai": "^3.5.0",
"chai-as-promised": "^7.1.1", "chai-as-promised": "^7.1.1",
@ -72,5 +74,16 @@
"rollup-plugin-babel": "^3.0.7", "rollup-plugin-babel": "^3.0.7",
"string-to-arraybuffer": "^1.0.2", "string-to-arraybuffer": "^1.0.2",
"teeny-request": "3.7.0" "teeny-request": "3.7.0"
},
"release": {
"branches": [
"+([0-9]).x",
"main",
"next",
{
"name": "beta",
"prerelease": true
}
]
} }
} }

View File

@ -1 +0,0 @@
../typescript/bin/tsc

View File

@ -1 +0,0 @@
../typescript/bin/tsserver

View File

@ -5,9 +5,9 @@
"requires": true, "requires": true,
"packages": { "packages": {
"node_modules/@babel/parser": { "node_modules/@babel/parser": {
"version": "7.20.7", "version": "7.22.15",
"resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.20.7.tgz", "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.22.15.tgz",
"integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==", "integrity": "sha512-RWmQ/sklUN9BvGGpCDgSubhHWfAx24XDTDObup4ffvxaYsptOg2P3KG0j+1eWKLxpkX0j0uHxmpq2Z1SP/VhxA==",
"bin": { "bin": {
"parser": "bin/babel-parser.js" "parser": "bin/babel-parser.js"
}, },
@ -15,10 +15,15 @@
"node": ">=6.0.0" "node": ">=6.0.0"
} }
}, },
"node_modules/@jridgewell/sourcemap-codec": {
"version": "1.4.15",
"resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
"integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
},
"node_modules/@mapbox/node-pre-gyp": { "node_modules/@mapbox/node-pre-gyp": {
"version": "1.0.10", "version": "1.0.11",
"resolved": "https://registry.npmmirror.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz", "resolved": "https://registry.npmmirror.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz",
"integrity": "sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==", "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==",
"dependencies": { "dependencies": {
"detect-libc": "^2.0.0", "detect-libc": "^2.0.0",
"https-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.0",
@ -45,106 +50,106 @@
"integrity": "sha512-10+iaz93qR5WYxTo+PMifD5TSxiOtdRaxBf7INGGXMQgTCu8Z/7GYWYFUOS3q/G0nE5boj1r4FEB+WSy7s5gbA==" "integrity": "sha512-10+iaz93qR5WYxTo+PMifD5TSxiOtdRaxBf7INGGXMQgTCu8Z/7GYWYFUOS3q/G0nE5boj1r4FEB+WSy7s5gbA=="
}, },
"node_modules/@vue/compiler-core": { "node_modules/@vue/compiler-core": {
"version": "3.2.45", "version": "3.3.4",
"resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.45.tgz", "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.3.4.tgz",
"integrity": "sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==", "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==",
"dependencies": { "dependencies": {
"@babel/parser": "^7.16.4", "@babel/parser": "^7.21.3",
"@vue/shared": "3.2.45", "@vue/shared": "3.3.4",
"estree-walker": "^2.0.2", "estree-walker": "^2.0.2",
"source-map": "^0.6.1" "source-map-js": "^1.0.2"
} }
}, },
"node_modules/@vue/compiler-dom": { "node_modules/@vue/compiler-dom": {
"version": "3.2.45", "version": "3.3.4",
"resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz", "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz",
"integrity": "sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==", "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==",
"dependencies": { "dependencies": {
"@vue/compiler-core": "3.2.45", "@vue/compiler-core": "3.3.4",
"@vue/shared": "3.2.45" "@vue/shared": "3.3.4"
} }
}, },
"node_modules/@vue/compiler-sfc": { "node_modules/@vue/compiler-sfc": {
"version": "3.2.45", "version": "3.3.4",
"resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz", "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz",
"integrity": "sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==", "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==",
"dependencies": { "dependencies": {
"@babel/parser": "^7.16.4", "@babel/parser": "^7.20.15",
"@vue/compiler-core": "3.2.45", "@vue/compiler-core": "3.3.4",
"@vue/compiler-dom": "3.2.45", "@vue/compiler-dom": "3.3.4",
"@vue/compiler-ssr": "3.2.45", "@vue/compiler-ssr": "3.3.4",
"@vue/reactivity-transform": "3.2.45", "@vue/reactivity-transform": "3.3.4",
"@vue/shared": "3.2.45", "@vue/shared": "3.3.4",
"estree-walker": "^2.0.2", "estree-walker": "^2.0.2",
"magic-string": "^0.25.7", "magic-string": "^0.30.0",
"postcss": "^8.1.10", "postcss": "^8.1.10",
"source-map": "^0.6.1" "source-map-js": "^1.0.2"
} }
}, },
"node_modules/@vue/compiler-ssr": { "node_modules/@vue/compiler-ssr": {
"version": "3.2.45", "version": "3.3.4",
"resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz", "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz",
"integrity": "sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==", "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==",
"dependencies": { "dependencies": {
"@vue/compiler-dom": "3.2.45", "@vue/compiler-dom": "3.3.4",
"@vue/shared": "3.2.45" "@vue/shared": "3.3.4"
} }
}, },
"node_modules/@vue/reactivity": { "node_modules/@vue/reactivity": {
"version": "3.2.45", "version": "3.3.4",
"resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.45.tgz", "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.3.4.tgz",
"integrity": "sha512-PRvhCcQcyEVohW0P8iQ7HDcIOXRjZfAsOds3N99X/Dzewy8TVhTCT4uXpAHfoKjVTJRA0O0K+6QNkDIZAxNi3A==", "integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==",
"dependencies": { "dependencies": {
"@vue/shared": "3.2.45" "@vue/shared": "3.3.4"
} }
}, },
"node_modules/@vue/reactivity-transform": { "node_modules/@vue/reactivity-transform": {
"version": "3.2.45", "version": "3.3.4",
"resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz", "resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz",
"integrity": "sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==", "integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==",
"dependencies": { "dependencies": {
"@babel/parser": "^7.16.4", "@babel/parser": "^7.20.15",
"@vue/compiler-core": "3.2.45", "@vue/compiler-core": "3.3.4",
"@vue/shared": "3.2.45", "@vue/shared": "3.3.4",
"estree-walker": "^2.0.2", "estree-walker": "^2.0.2",
"magic-string": "^0.25.7" "magic-string": "^0.30.0"
} }
}, },
"node_modules/@vue/runtime-core": { "node_modules/@vue/runtime-core": {
"version": "3.2.45", "version": "3.3.4",
"resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.45.tgz", "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.3.4.tgz",
"integrity": "sha512-gzJiTA3f74cgARptqzYswmoQx0fIA+gGYBfokYVhF8YSXjWTUA2SngRzZRku2HbGbjzB6LBYSbKGIaK8IW+s0A==", "integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==",
"dependencies": { "dependencies": {
"@vue/reactivity": "3.2.45", "@vue/reactivity": "3.3.4",
"@vue/shared": "3.2.45" "@vue/shared": "3.3.4"
} }
}, },
"node_modules/@vue/runtime-dom": { "node_modules/@vue/runtime-dom": {
"version": "3.2.45", "version": "3.3.4",
"resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.45.tgz", "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz",
"integrity": "sha512-cy88YpfP5Ue2bDBbj75Cb4bIEZUMM/mAkDMfqDTpUYVgTf/kuQ2VQ8LebuZ8k6EudgH8pYhsGWHlY0lcxlvTwA==", "integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==",
"dependencies": { "dependencies": {
"@vue/runtime-core": "3.2.45", "@vue/runtime-core": "3.3.4",
"@vue/shared": "3.2.45", "@vue/shared": "3.3.4",
"csstype": "^2.6.8" "csstype": "^3.1.1"
} }
}, },
"node_modules/@vue/server-renderer": { "node_modules/@vue/server-renderer": {
"version": "3.2.45", "version": "3.3.4",
"resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.45.tgz", "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.3.4.tgz",
"integrity": "sha512-ebiMq7q24WBU1D6uhPK//2OTR1iRIyxjF5iVq/1a5I1SDMDyDu4Ts6fJaMnjrvD3MqnaiFkKQj+LKAgz5WIK3g==", "integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==",
"dependencies": { "dependencies": {
"@vue/compiler-ssr": "3.2.45", "@vue/compiler-ssr": "3.3.4",
"@vue/shared": "3.2.45" "@vue/shared": "3.3.4"
}, },
"peerDependencies": { "peerDependencies": {
"vue": "3.2.45" "vue": "3.3.4"
} }
}, },
"node_modules/@vue/shared": { "node_modules/@vue/shared": {
"version": "3.2.45", "version": "3.3.4",
"resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.45.tgz", "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.3.4.tgz",
"integrity": "sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==" "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ=="
}, },
"node_modules/abbrev": { "node_modules/abbrev": {
"version": "1.1.1", "version": "1.1.1",
@ -152,14 +157,14 @@
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
}, },
"node_modules/ag-psd": { "node_modules/ag-psd": {
"version": "15.0.1", "version": "15.3.1",
"resolved": "https://registry.npmmirror.com/ag-psd/-/ag-psd-15.0.1.tgz", "resolved": "https://registry.npmmirror.com/ag-psd/-/ag-psd-15.3.1.tgz",
"integrity": "sha512-uKogYrQz6Tv/9mfSUlJPIZFySWU/KuCdmM6VAUpOdLmM98yQPkEtLz5R4W7aq/DHbumxASrkznJwrX2Tp+KMrA==", "integrity": "sha512-woH/Yb5OduYCvwH2OPLeqSPaWTmgT3n8WYU1/csuUX/BAUSphqH0B/QdRnBvlW7C+53VIH8c3Mm4GErjQx+L3A==",
"dependencies": { "dependencies": {
"@types/base64-js": "^1.3.0", "@types/base64-js": "^1.3.0",
"@types/pako": "^2.0.0", "@types/pako": "^2.0.0",
"base64-js": "^1.5.1", "base64-js": "^1.5.1",
"pako": "^2.0.4" "pako": "^2.1.0"
} }
}, },
"node_modules/agent-base": { "node_modules/agent-base": {
@ -218,9 +223,9 @@
} }
}, },
"node_modules/canvas": { "node_modules/canvas": {
"version": "2.11.0", "version": "2.11.2",
"resolved": "https://registry.npmmirror.com/canvas/-/canvas-2.11.0.tgz", "resolved": "https://registry.npmmirror.com/canvas/-/canvas-2.11.2.tgz",
"integrity": "sha512-bdTjFexjKJEwtIo0oRx8eD4G2yWoUOXP9lj279jmQ2zMnTQhT8C3512OKz3s+ZOaQlLbE7TuVvRDYDB3Llyy5g==", "integrity": "sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==",
"hasInstallScript": true, "hasInstallScript": true,
"dependencies": { "dependencies": {
"@mapbox/node-pre-gyp": "^1.0.0", "@mapbox/node-pre-gyp": "^1.0.0",
@ -258,9 +263,9 @@
"integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ=="
}, },
"node_modules/csstype": { "node_modules/csstype": {
"version": "2.6.21", "version": "3.1.2",
"resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz", "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.2.tgz",
"integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==" "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
}, },
"node_modules/debug": { "node_modules/debug": {
"version": "4.3.4", "version": "4.3.4",
@ -295,9 +300,9 @@
"integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ=="
}, },
"node_modules/detect-libc": { "node_modules/detect-libc": {
"version": "2.0.1", "version": "2.0.2",
"resolved": "https://registry.npmmirror.com/detect-libc/-/detect-libc-2.0.1.tgz", "resolved": "https://registry.npmmirror.com/detect-libc/-/detect-libc-2.0.2.tgz",
"integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==",
"engines": { "engines": {
"node": ">=8" "node": ">=8"
} }
@ -388,9 +393,9 @@
} }
}, },
"node_modules/graceful-fs": { "node_modules/graceful-fs": {
"version": "4.2.10", "version": "4.2.11",
"resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz", "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz",
"integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
}, },
"node_modules/has-unicode": { "node_modules/has-unicode": {
"version": "2.0.1", "version": "2.0.1",
@ -454,11 +459,14 @@
} }
}, },
"node_modules/magic-string": { "node_modules/magic-string": {
"version": "0.25.9", "version": "0.30.3",
"resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz", "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.3.tgz",
"integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", "integrity": "sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==",
"dependencies": { "dependencies": {
"sourcemap-codec": "^1.4.8" "@jridgewell/sourcemap-codec": "^1.4.15"
},
"engines": {
"node": ">=12"
} }
}, },
"node_modules/make-dir": { "node_modules/make-dir": {
@ -473,9 +481,9 @@
} }
}, },
"node_modules/make-dir/node_modules/semver": { "node_modules/make-dir/node_modules/semver": {
"version": "6.3.0", "version": "6.3.1",
"resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"bin": { "bin": {
"semver": "bin/semver.js" "semver": "bin/semver.js"
} }
@ -500,17 +508,14 @@
} }
}, },
"node_modules/minimist": { "node_modules/minimist": {
"version": "1.2.7", "version": "1.2.8",
"resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.7.tgz", "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz",
"integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="
}, },
"node_modules/minipass": { "node_modules/minipass": {
"version": "4.0.0", "version": "5.0.0",
"resolved": "https://registry.npmmirror.com/minipass/-/minipass-4.0.0.tgz", "resolved": "https://registry.npmmirror.com/minipass/-/minipass-5.0.0.tgz",
"integrity": "sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==", "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
"dependencies": {
"yallist": "^4.0.0"
},
"engines": { "engines": {
"node": ">=8" "node": ">=8"
} }
@ -560,9 +565,9 @@
"integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==" "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ=="
}, },
"node_modules/nanoid": { "node_modules/nanoid": {
"version": "3.3.4", "version": "3.3.6",
"resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.4.tgz", "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.6.tgz",
"integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
"bin": { "bin": {
"nanoid": "bin/nanoid.cjs" "nanoid": "bin/nanoid.cjs"
}, },
@ -571,9 +576,9 @@
} }
}, },
"node_modules/node-fetch": { "node_modules/node-fetch": {
"version": "2.6.7", "version": "2.7.0",
"resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.6.7.tgz", "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.7.0.tgz",
"integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
"dependencies": { "dependencies": {
"whatwg-url": "^5.0.0" "whatwg-url": "^5.0.0"
}, },
@ -649,16 +654,16 @@
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
}, },
"node_modules/pinyin-pro": { "node_modules/pinyin-pro": {
"version": "3.16.0", "version": "3.16.4",
"resolved": "https://registry.npmmirror.com/pinyin-pro/-/pinyin-pro-3.16.0.tgz", "resolved": "https://registry.npmmirror.com/pinyin-pro/-/pinyin-pro-3.16.4.tgz",
"integrity": "sha512-U4pMQ/KSMM5JmSb+ZcReCIbgzGl/JaglaHqWjCli0hpA0rDdjRbAO67e6fOa3ZFcJzbqfe6bJkaMMmpiWmkXgQ==" "integrity": "sha512-NP1x+Z9OajEIjJzIs5gzp3DHiUln8SLIytoYspPFQ8Xd6NMBO2HHZuki1XgYzGS7qat4oRZlwnZ+hvCZwuldbg=="
}, },
"node_modules/postcss": { "node_modules/postcss": {
"version": "8.4.20", "version": "8.4.29",
"resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.20.tgz", "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.29.tgz",
"integrity": "sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==", "integrity": "sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==",
"dependencies": { "dependencies": {
"nanoid": "^3.3.4", "nanoid": "^3.3.6",
"picocolors": "^1.0.0", "picocolors": "^1.0.0",
"source-map-js": "^1.0.2" "source-map-js": "^1.0.2"
}, },
@ -667,9 +672,9 @@
} }
}, },
"node_modules/readable-stream": { "node_modules/readable-stream": {
"version": "3.6.0", "version": "3.6.2",
"resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz",
"integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
"dependencies": { "dependencies": {
"inherits": "^2.0.3", "inherits": "^2.0.3",
"string_decoder": "^1.1.1", "string_decoder": "^1.1.1",
@ -696,9 +701,9 @@
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
}, },
"node_modules/semver": { "node_modules/semver": {
"version": "7.3.8", "version": "7.5.4",
"resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.8.tgz", "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz",
"integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"dependencies": { "dependencies": {
"lru-cache": "^6.0.0" "lru-cache": "^6.0.0"
}, },
@ -734,14 +739,6 @@
"simple-concat": "^1.0.0" "simple-concat": "^1.0.0"
} }
}, },
"node_modules/source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/source-map-js": { "node_modules/source-map-js": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz", "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz",
@ -750,12 +747,6 @@
"node": ">=0.10.0" "node": ">=0.10.0"
} }
}, },
"node_modules/sourcemap-codec": {
"version": "1.4.8",
"resolved": "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
"integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
"deprecated": "Please use @jridgewell/sourcemap-codec instead"
},
"node_modules/string_decoder": { "node_modules/string_decoder": {
"version": "1.3.0", "version": "1.3.0",
"resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz", "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz",
@ -789,13 +780,13 @@
} }
}, },
"node_modules/tar": { "node_modules/tar": {
"version": "6.1.13", "version": "6.2.0",
"resolved": "https://registry.npmmirror.com/tar/-/tar-6.1.13.tgz", "resolved": "https://registry.npmmirror.com/tar/-/tar-6.2.0.tgz",
"integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==",
"dependencies": { "dependencies": {
"chownr": "^2.0.0", "chownr": "^2.0.0",
"fs-minipass": "^2.0.0", "fs-minipass": "^2.0.0",
"minipass": "^4.0.0", "minipass": "^5.0.0",
"minizlib": "^2.1.1", "minizlib": "^2.1.1",
"mkdirp": "^1.0.3", "mkdirp": "^1.0.3",
"yallist": "^4.0.0" "yallist": "^4.0.0"
@ -823,15 +814,15 @@
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
}, },
"node_modules/vue": { "node_modules/vue": {
"version": "3.2.45", "version": "3.3.4",
"resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.45.tgz", "resolved": "https://registry.npmmirror.com/vue/-/vue-3.3.4.tgz",
"integrity": "sha512-9Nx/Mg2b2xWlXykmCwiTUCWHbWIj53bnkizBxKai1g61f2Xit700A1ljowpTIM11e3uipOeiPcSqnmBg6gyiaA==", "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==",
"dependencies": { "dependencies": {
"@vue/compiler-dom": "3.2.45", "@vue/compiler-dom": "3.3.4",
"@vue/compiler-sfc": "3.2.45", "@vue/compiler-sfc": "3.3.4",
"@vue/runtime-dom": "3.2.45", "@vue/runtime-dom": "3.3.4",
"@vue/server-renderer": "3.2.45", "@vue/server-renderer": "3.3.4",
"@vue/shared": "3.2.45" "@vue/shared": "3.3.4"
} }
}, },
"node_modules/webidl-conversions": { "node_modules/webidl-conversions": {

View File

@ -2,7 +2,7 @@
> A JavaScript parser > A JavaScript parser
See our website [@babel/parser](https://babeljs.io/docs/en/babel-parser) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20parser%20(babylon)%22+is%3Aopen) associated with this package. See our website [@babel/parser](https://babeljs.io/docs/babel-parser) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20parser%22+is%3Aopen) associated with this package.
## Install ## Install

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
{ {
"name": "@babel/parser", "name": "@babel/parser",
"version": "7.20.7", "version": "7.22.15",
"description": "A JavaScript parser", "description": "A JavaScript parser",
"author": "The Babel Team (https://babel.dev/team)", "author": "The Babel Team (https://babel.dev/team)",
"homepage": "https://babel.dev/docs/en/next/babel-parser", "homepage": "https://babel.dev/docs/en/next/babel-parser",
@ -34,11 +34,11 @@
"node": ">=6.0.0" "node": ">=6.0.0"
}, },
"devDependencies": { "devDependencies": {
"@babel/code-frame": "^7.18.6", "@babel/code-frame": "^7.22.13",
"@babel/helper-check-duplicate-nodes": "^7.18.6", "@babel/helper-check-duplicate-nodes": "^7.22.5",
"@babel/helper-fixtures": "^7.19.4", "@babel/helper-fixtures": "^7.22.13",
"@babel/helper-string-parser": "^7.19.4", "@babel/helper-string-parser": "^7.22.5",
"@babel/helper-validator-identifier": "^7.19.1", "@babel/helper-validator-identifier": "^7.22.15",
"charcodes": "^0.2.0" "charcodes": "^0.2.0"
}, },
"bin": "./bin/babel-parser.js", "bin": "./bin/babel-parser.js",

View File

@ -26,7 +26,8 @@ type Plugin =
| "importMeta" | "importMeta"
| "jsx" | "jsx"
| "logicalAssignment" | "logicalAssignment"
| "importAssertions" | "importAssertions" // deprecated
| "importAttributes"
| "importReflection" | "importReflection"
| "moduleBlocks" | "moduleBlocks"
| "moduleStringNames" | "moduleStringNames"
@ -38,7 +39,7 @@ type Plugin =
| "partialApplication" | "partialApplication"
| "placeholders" | "placeholders"
| "privateIn" // Enabled by default | "privateIn" // Enabled by default
| "regexpUnicodeSets" | "regexpUnicodeSets" // Enabled by default
| "throwExpressions" | "throwExpressions"
| "topLevelAwait" | "topLevelAwait"
| "v8intrinsic" | "v8intrinsic"
@ -47,6 +48,7 @@ type Plugin =
type ParserPluginWithOptions = type ParserPluginWithOptions =
| ["decorators", DecoratorsPluginOptions] | ["decorators", DecoratorsPluginOptions]
| ["estree", { classFeatures?: boolean }] | ["estree", { classFeatures?: boolean }]
| ["importAttributes", { deprecatedAssertSyntax: boolean }]
// @deprecated // @deprecated
| ["moduleAttributes", { version: "may-2020" }] | ["moduleAttributes", { version: "may-2020" }]
| ["pipelineOperator", PipelineOperatorPluginOptions] | ["pipelineOperator", PipelineOperatorPluginOptions]
@ -122,6 +124,12 @@ interface ParserOptions {
*/ */
allowReturnOutsideFunction?: boolean; allowReturnOutsideFunction?: boolean;
/**
* By default, new.target use is not allowed outside of a function or class.
* Set this to true to accept such code.
*/
allowNewTargetOutsideFunction?: boolean;
allowSuperOutsideMethod?: boolean; allowSuperOutsideMethod?: boolean;
/** /**
@ -130,6 +138,12 @@ interface ParserOptions {
*/ */
allowUndeclaredExports?: boolean; allowUndeclaredExports?: boolean;
/**
* By default, Babel parser JavaScript code according to Annex B syntax.
* Set this to `false` to disable such behavior.
*/
annexB?: boolean;
/** /**
* By default, Babel attaches comments to adjacent AST nodes. * By default, Babel attaches comments to adjacent AST nodes.
* When this option is set to false, comments are not attached. * When this option is set to false, comments are not attached.

View File

@ -0,0 +1,200 @@
# @jridgewell/sourcemap-codec
Encode/decode the `mappings` property of a [sourcemap](https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit).
## Why?
Sourcemaps are difficult to generate and manipulate, because the `mappings` property the part that actually links the generated code back to the original source is encoded using an obscure method called [Variable-length quantity](https://en.wikipedia.org/wiki/Variable-length_quantity). On top of that, each segment in the mapping contains offsets rather than absolute indices, which means that you can't look at a segment in isolation you have to understand the whole sourcemap.
This package makes the process slightly easier.
## Installation
```bash
npm install @jridgewell/sourcemap-codec
```
## Usage
```js
import { encode, decode } from '@jridgewell/sourcemap-codec';
var decoded = decode( ';EAEEA,EAAE,EAAC,CAAE;ECQY,UACC' );
assert.deepEqual( decoded, [
// the first line (of the generated code) has no mappings,
// as shown by the starting semi-colon (which separates lines)
[],
// the second line contains four (comma-separated) segments
[
// segments are encoded as you'd expect:
// [ generatedCodeColumn, sourceIndex, sourceCodeLine, sourceCodeColumn, nameIndex ]
// i.e. the first segment begins at column 2, and maps back to the second column
// of the second line (both zero-based) of the 0th source, and uses the 0th
// name in the `map.names` array
[ 2, 0, 2, 2, 0 ],
// the remaining segments are 4-length rather than 5-length,
// because they don't map a name
[ 4, 0, 2, 4 ],
[ 6, 0, 2, 5 ],
[ 7, 0, 2, 7 ]
],
// the final line contains two segments
[
[ 2, 1, 10, 19 ],
[ 12, 1, 11, 20 ]
]
]);
var encoded = encode( decoded );
assert.equal( encoded, ';EAEEA,EAAE,EAAC,CAAE;ECQY,UACC' );
```
## Benchmarks
```
node v18.0.0
amp.js.map - 45120 segments
Decode Memory Usage:
@jridgewell/sourcemap-codec 5479160 bytes
sourcemap-codec 5659336 bytes
source-map-0.6.1 17144440 bytes
source-map-0.8.0 6867424 bytes
Smallest memory usage is @jridgewell/sourcemap-codec
Decode speed:
decode: @jridgewell/sourcemap-codec x 502 ops/sec ±1.03% (90 runs sampled)
decode: sourcemap-codec x 445 ops/sec ±0.97% (92 runs sampled)
decode: source-map-0.6.1 x 36.01 ops/sec ±1.64% (49 runs sampled)
decode: source-map-0.8.0 x 367 ops/sec ±0.04% (95 runs sampled)
Fastest is decode: @jridgewell/sourcemap-codec
Encode Memory Usage:
@jridgewell/sourcemap-codec 1261620 bytes
sourcemap-codec 9119248 bytes
source-map-0.6.1 8968560 bytes
source-map-0.8.0 8952952 bytes
Smallest memory usage is @jridgewell/sourcemap-codec
Encode speed:
encode: @jridgewell/sourcemap-codec x 738 ops/sec ±0.42% (98 runs sampled)
encode: sourcemap-codec x 238 ops/sec ±0.73% (88 runs sampled)
encode: source-map-0.6.1 x 162 ops/sec ±0.43% (84 runs sampled)
encode: source-map-0.8.0 x 191 ops/sec ±0.34% (90 runs sampled)
Fastest is encode: @jridgewell/sourcemap-codec
***
babel.min.js.map - 347793 segments
Decode Memory Usage:
@jridgewell/sourcemap-codec 35338184 bytes
sourcemap-codec 35922736 bytes
source-map-0.6.1 62366360 bytes
source-map-0.8.0 44337416 bytes
Smallest memory usage is @jridgewell/sourcemap-codec
Decode speed:
decode: @jridgewell/sourcemap-codec x 40.35 ops/sec ±4.47% (54 runs sampled)
decode: sourcemap-codec x 36.76 ops/sec ±3.67% (51 runs sampled)
decode: source-map-0.6.1 x 4.44 ops/sec ±2.15% (16 runs sampled)
decode: source-map-0.8.0 x 59.35 ops/sec ±0.05% (78 runs sampled)
Fastest is decode: source-map-0.8.0
Encode Memory Usage:
@jridgewell/sourcemap-codec 7212604 bytes
sourcemap-codec 21421456 bytes
source-map-0.6.1 25286888 bytes
source-map-0.8.0 25498744 bytes
Smallest memory usage is @jridgewell/sourcemap-codec
Encode speed:
encode: @jridgewell/sourcemap-codec x 112 ops/sec ±0.13% (84 runs sampled)
encode: sourcemap-codec x 30.23 ops/sec ±2.76% (53 runs sampled)
encode: source-map-0.6.1 x 19.43 ops/sec ±3.70% (37 runs sampled)
encode: source-map-0.8.0 x 19.40 ops/sec ±3.26% (37 runs sampled)
Fastest is encode: @jridgewell/sourcemap-codec
***
preact.js.map - 1992 segments
Decode Memory Usage:
@jridgewell/sourcemap-codec 500272 bytes
sourcemap-codec 516864 bytes
source-map-0.6.1 1596672 bytes
source-map-0.8.0 517272 bytes
Smallest memory usage is @jridgewell/sourcemap-codec
Decode speed:
decode: @jridgewell/sourcemap-codec x 16,137 ops/sec ±0.17% (99 runs sampled)
decode: sourcemap-codec x 12,139 ops/sec ±0.13% (99 runs sampled)
decode: source-map-0.6.1 x 1,264 ops/sec ±0.12% (100 runs sampled)
decode: source-map-0.8.0 x 9,894 ops/sec ±0.08% (101 runs sampled)
Fastest is decode: @jridgewell/sourcemap-codec
Encode Memory Usage:
@jridgewell/sourcemap-codec 321026 bytes
sourcemap-codec 830832 bytes
source-map-0.6.1 586608 bytes
source-map-0.8.0 586680 bytes
Smallest memory usage is @jridgewell/sourcemap-codec
Encode speed:
encode: @jridgewell/sourcemap-codec x 19,876 ops/sec ±0.78% (95 runs sampled)
encode: sourcemap-codec x 6,983 ops/sec ±0.15% (100 runs sampled)
encode: source-map-0.6.1 x 5,070 ops/sec ±0.12% (102 runs sampled)
encode: source-map-0.8.0 x 5,641 ops/sec ±0.17% (100 runs sampled)
Fastest is encode: @jridgewell/sourcemap-codec
***
react.js.map - 5726 segments
Decode Memory Usage:
@jridgewell/sourcemap-codec 734848 bytes
sourcemap-codec 954200 bytes
source-map-0.6.1 2276432 bytes
source-map-0.8.0 955488 bytes
Smallest memory usage is @jridgewell/sourcemap-codec
Decode speed:
decode: @jridgewell/sourcemap-codec x 5,723 ops/sec ±0.12% (98 runs sampled)
decode: sourcemap-codec x 4,555 ops/sec ±0.09% (101 runs sampled)
decode: source-map-0.6.1 x 437 ops/sec ±0.11% (93 runs sampled)
decode: source-map-0.8.0 x 3,441 ops/sec ±0.15% (100 runs sampled)
Fastest is decode: @jridgewell/sourcemap-codec
Encode Memory Usage:
@jridgewell/sourcemap-codec 638672 bytes
sourcemap-codec 1109840 bytes
source-map-0.6.1 1321224 bytes
source-map-0.8.0 1324448 bytes
Smallest memory usage is @jridgewell/sourcemap-codec
Encode speed:
encode: @jridgewell/sourcemap-codec x 6,801 ops/sec ±0.48% (98 runs sampled)
encode: sourcemap-codec x 2,533 ops/sec ±0.13% (101 runs sampled)
encode: source-map-0.6.1 x 2,248 ops/sec ±0.08% (100 runs sampled)
encode: source-map-0.8.0 x 2,303 ops/sec ±0.15% (100 runs sampled)
Fastest is encode: @jridgewell/sourcemap-codec
```
# License
MIT

View File

@ -0,0 +1,164 @@
const comma = ','.charCodeAt(0);
const semicolon = ';'.charCodeAt(0);
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
const intToChar = new Uint8Array(64); // 64 possible chars.
const charToInt = new Uint8Array(128); // z is 122 in ASCII
for (let i = 0; i < chars.length; i++) {
const c = chars.charCodeAt(i);
intToChar[i] = c;
charToInt[c] = i;
}
// Provide a fallback for older environments.
const td = typeof TextDecoder !== 'undefined'
? /* #__PURE__ */ new TextDecoder()
: typeof Buffer !== 'undefined'
? {
decode(buf) {
const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength);
return out.toString();
},
}
: {
decode(buf) {
let out = '';
for (let i = 0; i < buf.length; i++) {
out += String.fromCharCode(buf[i]);
}
return out;
},
};
function decode(mappings) {
const state = new Int32Array(5);
const decoded = [];
let index = 0;
do {
const semi = indexOf(mappings, index);
const line = [];
let sorted = true;
let lastCol = 0;
state[0] = 0;
for (let i = index; i < semi; i++) {
let seg;
i = decodeInteger(mappings, i, state, 0); // genColumn
const col = state[0];
if (col < lastCol)
sorted = false;
lastCol = col;
if (hasMoreVlq(mappings, i, semi)) {
i = decodeInteger(mappings, i, state, 1); // sourcesIndex
i = decodeInteger(mappings, i, state, 2); // sourceLine
i = decodeInteger(mappings, i, state, 3); // sourceColumn
if (hasMoreVlq(mappings, i, semi)) {
i = decodeInteger(mappings, i, state, 4); // namesIndex
seg = [col, state[1], state[2], state[3], state[4]];
}
else {
seg = [col, state[1], state[2], state[3]];
}
}
else {
seg = [col];
}
line.push(seg);
}
if (!sorted)
sort(line);
decoded.push(line);
index = semi + 1;
} while (index <= mappings.length);
return decoded;
}
function indexOf(mappings, index) {
const idx = mappings.indexOf(';', index);
return idx === -1 ? mappings.length : idx;
}
function decodeInteger(mappings, pos, state, j) {
let value = 0;
let shift = 0;
let integer = 0;
do {
const c = mappings.charCodeAt(pos++);
integer = charToInt[c];
value |= (integer & 31) << shift;
shift += 5;
} while (integer & 32);
const shouldNegate = value & 1;
value >>>= 1;
if (shouldNegate) {
value = -0x80000000 | -value;
}
state[j] += value;
return pos;
}
function hasMoreVlq(mappings, i, length) {
if (i >= length)
return false;
return mappings.charCodeAt(i) !== comma;
}
function sort(line) {
line.sort(sortComparator);
}
function sortComparator(a, b) {
return a[0] - b[0];
}
function encode(decoded) {
const state = new Int32Array(5);
const bufLength = 1024 * 16;
const subLength = bufLength - 36;
const buf = new Uint8Array(bufLength);
const sub = buf.subarray(0, subLength);
let pos = 0;
let out = '';
for (let i = 0; i < decoded.length; i++) {
const line = decoded[i];
if (i > 0) {
if (pos === bufLength) {
out += td.decode(buf);
pos = 0;
}
buf[pos++] = semicolon;
}
if (line.length === 0)
continue;
state[0] = 0;
for (let j = 0; j < line.length; j++) {
const segment = line[j];
// We can push up to 5 ints, each int can take at most 7 chars, and we
// may push a comma.
if (pos > subLength) {
out += td.decode(sub);
buf.copyWithin(0, subLength, pos);
pos -= subLength;
}
if (j > 0)
buf[pos++] = comma;
pos = encodeInteger(buf, pos, state, segment, 0); // genColumn
if (segment.length === 1)
continue;
pos = encodeInteger(buf, pos, state, segment, 1); // sourcesIndex
pos = encodeInteger(buf, pos, state, segment, 2); // sourceLine
pos = encodeInteger(buf, pos, state, segment, 3); // sourceColumn
if (segment.length === 4)
continue;
pos = encodeInteger(buf, pos, state, segment, 4); // namesIndex
}
}
return out + td.decode(buf.subarray(0, pos));
}
function encodeInteger(buf, pos, state, segment, j) {
const next = segment[j];
let num = next - state[j];
state[j] = next;
num = num < 0 ? (-num << 1) | 1 : num << 1;
do {
let clamped = num & 0b011111;
num >>>= 5;
if (num > 0)
clamped |= 0b100000;
buf[pos++] = intToChar[clamped];
} while (num > 0);
return pos;
}
export { decode, encode };
//# sourceMappingURL=sourcemap-codec.mjs.map

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,175 @@
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.sourcemapCodec = {}));
})(this, (function (exports) { 'use strict';
const comma = ','.charCodeAt(0);
const semicolon = ';'.charCodeAt(0);
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
const intToChar = new Uint8Array(64); // 64 possible chars.
const charToInt = new Uint8Array(128); // z is 122 in ASCII
for (let i = 0; i < chars.length; i++) {
const c = chars.charCodeAt(i);
intToChar[i] = c;
charToInt[c] = i;
}
// Provide a fallback for older environments.
const td = typeof TextDecoder !== 'undefined'
? /* #__PURE__ */ new TextDecoder()
: typeof Buffer !== 'undefined'
? {
decode(buf) {
const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength);
return out.toString();
},
}
: {
decode(buf) {
let out = '';
for (let i = 0; i < buf.length; i++) {
out += String.fromCharCode(buf[i]);
}
return out;
},
};
function decode(mappings) {
const state = new Int32Array(5);
const decoded = [];
let index = 0;
do {
const semi = indexOf(mappings, index);
const line = [];
let sorted = true;
let lastCol = 0;
state[0] = 0;
for (let i = index; i < semi; i++) {
let seg;
i = decodeInteger(mappings, i, state, 0); // genColumn
const col = state[0];
if (col < lastCol)
sorted = false;
lastCol = col;
if (hasMoreVlq(mappings, i, semi)) {
i = decodeInteger(mappings, i, state, 1); // sourcesIndex
i = decodeInteger(mappings, i, state, 2); // sourceLine
i = decodeInteger(mappings, i, state, 3); // sourceColumn
if (hasMoreVlq(mappings, i, semi)) {
i = decodeInteger(mappings, i, state, 4); // namesIndex
seg = [col, state[1], state[2], state[3], state[4]];
}
else {
seg = [col, state[1], state[2], state[3]];
}
}
else {
seg = [col];
}
line.push(seg);
}
if (!sorted)
sort(line);
decoded.push(line);
index = semi + 1;
} while (index <= mappings.length);
return decoded;
}
function indexOf(mappings, index) {
const idx = mappings.indexOf(';', index);
return idx === -1 ? mappings.length : idx;
}
function decodeInteger(mappings, pos, state, j) {
let value = 0;
let shift = 0;
let integer = 0;
do {
const c = mappings.charCodeAt(pos++);
integer = charToInt[c];
value |= (integer & 31) << shift;
shift += 5;
} while (integer & 32);
const shouldNegate = value & 1;
value >>>= 1;
if (shouldNegate) {
value = -0x80000000 | -value;
}
state[j] += value;
return pos;
}
function hasMoreVlq(mappings, i, length) {
if (i >= length)
return false;
return mappings.charCodeAt(i) !== comma;
}
function sort(line) {
line.sort(sortComparator);
}
function sortComparator(a, b) {
return a[0] - b[0];
}
function encode(decoded) {
const state = new Int32Array(5);
const bufLength = 1024 * 16;
const subLength = bufLength - 36;
const buf = new Uint8Array(bufLength);
const sub = buf.subarray(0, subLength);
let pos = 0;
let out = '';
for (let i = 0; i < decoded.length; i++) {
const line = decoded[i];
if (i > 0) {
if (pos === bufLength) {
out += td.decode(buf);
pos = 0;
}
buf[pos++] = semicolon;
}
if (line.length === 0)
continue;
state[0] = 0;
for (let j = 0; j < line.length; j++) {
const segment = line[j];
// We can push up to 5 ints, each int can take at most 7 chars, and we
// may push a comma.
if (pos > subLength) {
out += td.decode(sub);
buf.copyWithin(0, subLength, pos);
pos -= subLength;
}
if (j > 0)
buf[pos++] = comma;
pos = encodeInteger(buf, pos, state, segment, 0); // genColumn
if (segment.length === 1)
continue;
pos = encodeInteger(buf, pos, state, segment, 1); // sourcesIndex
pos = encodeInteger(buf, pos, state, segment, 2); // sourceLine
pos = encodeInteger(buf, pos, state, segment, 3); // sourceColumn
if (segment.length === 4)
continue;
pos = encodeInteger(buf, pos, state, segment, 4); // namesIndex
}
}
return out + td.decode(buf.subarray(0, pos));
}
function encodeInteger(buf, pos, state, segment, j) {
const next = segment[j];
let num = next - state[j];
state[j] = next;
num = num < 0 ? (-num << 1) | 1 : num << 1;
do {
let clamped = num & 0b011111;
num >>>= 5;
if (num > 0)
clamped |= 0b100000;
buf[pos++] = intToChar[clamped];
} while (num > 0);
return pos;
}
exports.decode = decode;
exports.encode = encode;
Object.defineProperty(exports, '__esModule', { value: true });
}));
//# sourceMappingURL=sourcemap-codec.umd.js.map

File diff suppressed because one or more lines are too long

View File

@ -3,3 +3,4 @@ export declare type SourceMapLine = SourceMapSegment[];
export declare type SourceMapMappings = SourceMapLine[]; export declare type SourceMapMappings = SourceMapLine[];
export declare function decode(mappings: string): SourceMapMappings; export declare function decode(mappings: string): SourceMapMappings;
export declare function encode(decoded: SourceMapMappings): string; export declare function encode(decoded: SourceMapMappings): string;
export declare function encode(decoded: Readonly<SourceMapMappings>): string;

View File

@ -0,0 +1,74 @@
{
"name": "@jridgewell/sourcemap-codec",
"version": "1.4.15",
"description": "Encode/decode sourcemap mappings",
"keywords": [
"sourcemap",
"vlq"
],
"main": "dist/sourcemap-codec.umd.js",
"module": "dist/sourcemap-codec.mjs",
"types": "dist/types/sourcemap-codec.d.ts",
"files": [
"dist"
],
"exports": {
".": [
{
"types": "./dist/types/sourcemap-codec.d.ts",
"browser": "./dist/sourcemap-codec.umd.js",
"require": "./dist/sourcemap-codec.umd.js",
"import": "./dist/sourcemap-codec.mjs"
},
"./dist/sourcemap-codec.umd.js"
],
"./package.json": "./package.json"
},
"scripts": {
"benchmark": "run-s build:rollup benchmark:*",
"benchmark:install": "cd benchmark && npm install",
"benchmark:only": "node --expose-gc benchmark/index.js",
"build": "run-s -n build:*",
"build:rollup": "rollup -c rollup.config.js",
"build:ts": "tsc --project tsconfig.build.json",
"lint": "run-s -n lint:*",
"lint:prettier": "npm run test:lint:prettier -- --write",
"lint:ts": "npm run test:lint:ts -- --fix",
"prebuild": "rm -rf dist",
"prepublishOnly": "npm run preversion",
"preversion": "run-s test build",
"pretest": "run-s build:rollup",
"test": "run-s -n test:lint test:only",
"test:debug": "mocha --inspect-brk",
"test:lint": "run-s -n test:lint:*",
"test:lint:prettier": "prettier --check '{src,test}/**/*.ts'",
"test:lint:ts": "eslint '{src,test}/**/*.ts'",
"test:only": "mocha",
"test:coverage": "c8 mocha",
"test:watch": "mocha --watch"
},
"repository": {
"type": "git",
"url": "git+https://github.com/jridgewell/sourcemap-codec.git"
},
"author": "Rich Harris",
"license": "MIT",
"devDependencies": {
"@rollup/plugin-typescript": "8.3.0",
"@types/node": "17.0.15",
"@typescript-eslint/eslint-plugin": "5.10.0",
"@typescript-eslint/parser": "5.10.0",
"benchmark": "2.1.4",
"c8": "7.11.2",
"eslint": "8.7.0",
"eslint-config-prettier": "8.3.0",
"mocha": "9.2.0",
"npm-run-all": "4.1.5",
"prettier": "2.5.1",
"rollup": "2.64.0",
"source-map": "0.6.1",
"source-map-js": "1.0.2",
"sourcemap-codec": "1.4.8",
"typescript": "4.5.4"
}
}

View File

@ -0,0 +1,74 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"
on:
push:
branches: [ "master" ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ "master" ]
schedule:
- cron: '24 5 * * 4'
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [ 'javascript' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
steps:
- name: Checkout repository
uses: actions/checkout@v3
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
# queries: security-extended,security-and-quality
# Autobuild attempts to build any compiled languages (C/C++, C#, Go, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v2
# Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
# If the Autobuild fails above, remove it and uncomment the following three lines.
# modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance.
# - run: |
# echo "Run, Build Application using script"
# ./location_of_script_within_repo/buildscript.sh
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
with:
category: "/language:${{matrix.language}}"

View File

@ -1,5 +1,8 @@
# node-pre-gyp changelog # node-pre-gyp changelog
## 1.0.11
- Fixes dependabot alert [CVE-2021-44906](https://nvd.nist.gov/vuln/detail/CVE-2021-44906)
## 1.0.10 ## 1.0.10
- Upgraded minimist to 1.2.6 to address dependabot alert [CVE-2021-44906](https://nvd.nist.gov/vuln/detail/CVE-2021-44906) - Upgraded minimist to 1.2.6 to address dependabot alert [CVE-2021-44906](https://nvd.nist.gov/vuln/detail/CVE-2021-44906)

View File

@ -1,7 +1,7 @@
{ {
"name": "@mapbox/node-pre-gyp", "name": "@mapbox/node-pre-gyp",
"description": "Node.js native addon binary install tool", "description": "Node.js native addon binary install tool",
"version": "1.0.10", "version": "1.0.11",
"keywords": [ "keywords": [
"native", "native",
"addon", "addon",

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{ {
"name": "@vue/compiler-core", "name": "@vue/compiler-core",
"version": "3.2.45", "version": "3.3.4",
"description": "@vue/compiler-core", "description": "@vue/compiler-core",
"main": "index.js", "main": "index.js",
"module": "dist/compiler-core.esm-bundler.js", "module": "dist/compiler-core.esm-bundler.js",
@ -32,12 +32,12 @@
}, },
"homepage": "https://github.com/vuejs/core/tree/main/packages/compiler-core#readme", "homepage": "https://github.com/vuejs/core/tree/main/packages/compiler-core#readme",
"dependencies": { "dependencies": {
"@vue/shared": "3.2.45", "@babel/parser": "^7.21.3",
"@babel/parser": "^7.16.4", "@vue/shared": "3.3.4",
"estree-walker": "^2.0.2", "estree-walker": "^2.0.2",
"source-map": "^0.6.1" "source-map-js": "^1.0.2"
}, },
"devDependencies": { "devDependencies": {
"@babel/types": "^7.16.0" "@babel/types": "^7.21.3"
} }
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,66 +1,42 @@
import { CodegenResult } from '@vue/compiler-core'; import { ParserOptions, NodeTransform, SourceLocation, CompilerError, DirectiveTransform, CompilerOptions, CodegenResult, RootNode } from '@vue/compiler-core';
import { CompilerError } from '@vue/compiler-core'; export * from '@vue/compiler-core';
import { CompilerOptions } from '@vue/compiler-core';
import { DirectiveTransform } from '@vue/compiler-core'; export declare const parserOptions: ParserOptions;
import { NodeTransform } from '@vue/compiler-core';
import { ParserOptions } from '@vue/compiler-core'; export declare const V_MODEL_RADIO: unique symbol;
import { RootNode } from '@vue/compiler-core'; export declare const V_MODEL_CHECKBOX: unique symbol;
import { SourceLocation } from '@vue/compiler-core'; export declare const V_MODEL_TEXT: unique symbol;
export declare const V_MODEL_SELECT: unique symbol;
export declare function compile(template: string, options?: CompilerOptions): CodegenResult; export declare const V_MODEL_DYNAMIC: unique symbol;
export declare const V_ON_WITH_MODIFIERS: unique symbol;
export declare function createDOMCompilerError(code: DOMErrorCodes, loc?: SourceLocation): DOMCompilerError; export declare const V_ON_WITH_KEYS: unique symbol;
export declare const V_SHOW: unique symbol;
declare interface DOMCompilerError extends CompilerError { export declare const TRANSITION: unique symbol;
code: DOMErrorCodes; export declare const TRANSITION_GROUP: unique symbol;
}
export declare const transformStyle: NodeTransform;
export declare const DOMDirectiveTransforms: Record<string, DirectiveTransform>;
interface DOMCompilerError extends CompilerError {
export declare const enum DOMErrorCodes { code: DOMErrorCodes;
X_V_HTML_NO_EXPRESSION = 51, }
X_V_HTML_WITH_CHILDREN = 52, export declare function createDOMCompilerError(code: DOMErrorCodes, loc?: SourceLocation): DOMCompilerError;
X_V_TEXT_NO_EXPRESSION = 53, export declare const enum DOMErrorCodes {
X_V_TEXT_WITH_CHILDREN = 54, X_V_HTML_NO_EXPRESSION = 53,
X_V_MODEL_ON_INVALID_ELEMENT = 55, X_V_HTML_WITH_CHILDREN = 54,
X_V_MODEL_ARG_ON_ELEMENT = 56, X_V_TEXT_NO_EXPRESSION = 55,
X_V_MODEL_ON_FILE_INPUT_ELEMENT = 57, X_V_TEXT_WITH_CHILDREN = 56,
X_V_MODEL_UNNECESSARY_VALUE = 58, X_V_MODEL_ON_INVALID_ELEMENT = 57,
X_V_SHOW_NO_EXPRESSION = 59, X_V_MODEL_ARG_ON_ELEMENT = 58,
X_TRANSITION_INVALID_CHILDREN = 60, X_V_MODEL_ON_FILE_INPUT_ELEMENT = 59,
X_IGNORED_SIDE_EFFECT_TAG = 61, X_V_MODEL_UNNECESSARY_VALUE = 60,
__EXTEND_POINT__ = 62 X_V_SHOW_NO_EXPRESSION = 61,
} X_TRANSITION_INVALID_CHILDREN = 62,
X_IGNORED_SIDE_EFFECT_TAG = 63,
export declare const DOMNodeTransforms: NodeTransform[]; __EXTEND_POINT__ = 64
}
export declare function parse(template: string, options?: ParserOptions): RootNode;
export declare const DOMNodeTransforms: NodeTransform[];
export declare const parserOptions: ParserOptions; export declare const DOMDirectiveTransforms: Record<string, DirectiveTransform>;
export declare function compile(template: string, options?: CompilerOptions): CodegenResult;
export declare const transformStyle: NodeTransform; export declare function parse(template: string, options?: ParserOptions): RootNode;
export declare const TRANSITION: unique symbol;
export declare const TRANSITION_GROUP: unique symbol;
export declare const V_MODEL_CHECKBOX: unique symbol;
export declare const V_MODEL_DYNAMIC: unique symbol;
export declare const V_MODEL_RADIO: unique symbol;
export declare const V_MODEL_SELECT: unique symbol;
export declare const V_MODEL_TEXT: unique symbol;
export declare const V_ON_WITH_KEYS: unique symbol;
export declare const V_ON_WITH_MODIFIERS: unique symbol;
export declare const V_SHOW: unique symbol;
export * from "@vue/compiler-core";
export { }

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -1,483 +1,489 @@
import { registerRuntimeHelpers, isBuiltInType, createSimpleExpression, createCompilerError, createObjectProperty, getConstantType, createCallExpression, TO_DISPLAY_STRING, transformModel as transformModel$1, findProp, hasDynamicKeyVBind, transformOn as transformOn$1, createCompoundExpression, isStaticExp, checkCompatEnabled, noopDirectiveTransform, baseCompile, baseParse } from '@vue/compiler-core'; import { registerRuntimeHelpers, isBuiltInType, createSimpleExpression, createCompilerError, createObjectProperty, getConstantType, createCallExpression, TO_DISPLAY_STRING, transformModel as transformModel$1, findProp, hasDynamicKeyVBind, transformOn as transformOn$1, isStaticExp, createCompoundExpression, checkCompatEnabled, noopDirectiveTransform, baseCompile, baseParse } from '@vue/compiler-core';
export * from '@vue/compiler-core'; export * from '@vue/compiler-core';
import { isVoidTag, isHTMLTag, isSVGTag, makeMap, parseStringStyle, capitalize, extend } from '@vue/shared'; import { isVoidTag, isHTMLTag, isSVGTag, makeMap, parseStringStyle, capitalize, extend } from '@vue/shared';
const V_MODEL_RADIO = Symbol((process.env.NODE_ENV !== 'production') ? `vModelRadio` : ``); const V_MODEL_RADIO = Symbol(!!(process.env.NODE_ENV !== "production") ? `vModelRadio` : ``);
const V_MODEL_CHECKBOX = Symbol((process.env.NODE_ENV !== 'production') ? `vModelCheckbox` : ``); const V_MODEL_CHECKBOX = Symbol(!!(process.env.NODE_ENV !== "production") ? `vModelCheckbox` : ``);
const V_MODEL_TEXT = Symbol((process.env.NODE_ENV !== 'production') ? `vModelText` : ``); const V_MODEL_TEXT = Symbol(!!(process.env.NODE_ENV !== "production") ? `vModelText` : ``);
const V_MODEL_SELECT = Symbol((process.env.NODE_ENV !== 'production') ? `vModelSelect` : ``); const V_MODEL_SELECT = Symbol(!!(process.env.NODE_ENV !== "production") ? `vModelSelect` : ``);
const V_MODEL_DYNAMIC = Symbol((process.env.NODE_ENV !== 'production') ? `vModelDynamic` : ``); const V_MODEL_DYNAMIC = Symbol(!!(process.env.NODE_ENV !== "production") ? `vModelDynamic` : ``);
const V_ON_WITH_MODIFIERS = Symbol((process.env.NODE_ENV !== 'production') ? `vOnModifiersGuard` : ``); const V_ON_WITH_MODIFIERS = Symbol(!!(process.env.NODE_ENV !== "production") ? `vOnModifiersGuard` : ``);
const V_ON_WITH_KEYS = Symbol((process.env.NODE_ENV !== 'production') ? `vOnKeysGuard` : ``); const V_ON_WITH_KEYS = Symbol(!!(process.env.NODE_ENV !== "production") ? `vOnKeysGuard` : ``);
const V_SHOW = Symbol((process.env.NODE_ENV !== 'production') ? `vShow` : ``); const V_SHOW = Symbol(!!(process.env.NODE_ENV !== "production") ? `vShow` : ``);
const TRANSITION = Symbol((process.env.NODE_ENV !== 'production') ? `Transition` : ``); const TRANSITION = Symbol(!!(process.env.NODE_ENV !== "production") ? `Transition` : ``);
const TRANSITION_GROUP = Symbol((process.env.NODE_ENV !== 'production') ? `TransitionGroup` : ``); const TRANSITION_GROUP = Symbol(!!(process.env.NODE_ENV !== "production") ? `TransitionGroup` : ``);
registerRuntimeHelpers({ registerRuntimeHelpers({
[V_MODEL_RADIO]: `vModelRadio`, [V_MODEL_RADIO]: `vModelRadio`,
[V_MODEL_CHECKBOX]: `vModelCheckbox`, [V_MODEL_CHECKBOX]: `vModelCheckbox`,
[V_MODEL_TEXT]: `vModelText`, [V_MODEL_TEXT]: `vModelText`,
[V_MODEL_SELECT]: `vModelSelect`, [V_MODEL_SELECT]: `vModelSelect`,
[V_MODEL_DYNAMIC]: `vModelDynamic`, [V_MODEL_DYNAMIC]: `vModelDynamic`,
[V_ON_WITH_MODIFIERS]: `withModifiers`, [V_ON_WITH_MODIFIERS]: `withModifiers`,
[V_ON_WITH_KEYS]: `withKeys`, [V_ON_WITH_KEYS]: `withKeys`,
[V_SHOW]: `vShow`, [V_SHOW]: `vShow`,
[TRANSITION]: `Transition`, [TRANSITION]: `Transition`,
[TRANSITION_GROUP]: `TransitionGroup` [TRANSITION_GROUP]: `TransitionGroup`
}); });
/* eslint-disable no-restricted-globals */
let decoder; let decoder;
function decodeHtmlBrowser(raw, asAttr = false) { function decodeHtmlBrowser(raw, asAttr = false) {
if (!decoder) { if (!decoder) {
decoder = document.createElement('div'); decoder = document.createElement("div");
} }
if (asAttr) { if (asAttr) {
decoder.innerHTML = `<div foo="${raw.replace(/"/g, '&quot;')}">`; decoder.innerHTML = `<div foo="${raw.replace(/"/g, "&quot;")}">`;
return decoder.children[0].getAttribute('foo'); return decoder.children[0].getAttribute("foo");
} } else {
else { decoder.innerHTML = raw;
decoder.innerHTML = raw; return decoder.textContent;
return decoder.textContent; }
}
} }
const isRawTextContainer = /*#__PURE__*/ makeMap('style,iframe,script,noscript', true); const isRawTextContainer = /* @__PURE__ */ makeMap(
"style,iframe,script,noscript",
true
);
const parserOptions = { const parserOptions = {
isVoidTag, isVoidTag,
isNativeTag: tag => isHTMLTag(tag) || isSVGTag(tag), isNativeTag: (tag) => isHTMLTag(tag) || isSVGTag(tag),
isPreTag: tag => tag === 'pre', isPreTag: (tag) => tag === "pre",
decodeEntities: decodeHtmlBrowser , decodeEntities: decodeHtmlBrowser ,
isBuiltInComponent: (tag) => { isBuiltInComponent: (tag) => {
if (isBuiltInType(tag, `Transition`)) { if (isBuiltInType(tag, `Transition`)) {
return TRANSITION; return TRANSITION;
} } else if (isBuiltInType(tag, `TransitionGroup`)) {
else if (isBuiltInType(tag, `TransitionGroup`)) { return TRANSITION_GROUP;
return TRANSITION_GROUP;
}
},
// https://html.spec.whatwg.org/multipage/parsing.html#tree-construction-dispatcher
getNamespace(tag, parent) {
let ns = parent ? parent.ns : 0 /* DOMNamespaces.HTML */;
if (parent && ns === 2 /* DOMNamespaces.MATH_ML */) {
if (parent.tag === 'annotation-xml') {
if (tag === 'svg') {
return 1 /* DOMNamespaces.SVG */;
}
if (parent.props.some(a => a.type === 6 /* NodeTypes.ATTRIBUTE */ &&
a.name === 'encoding' &&
a.value != null &&
(a.value.content === 'text/html' ||
a.value.content === 'application/xhtml+xml'))) {
ns = 0 /* DOMNamespaces.HTML */;
}
}
else if (/^m(?:[ions]|text)$/.test(parent.tag) &&
tag !== 'mglyph' &&
tag !== 'malignmark') {
ns = 0 /* DOMNamespaces.HTML */;
}
}
else if (parent && ns === 1 /* DOMNamespaces.SVG */) {
if (parent.tag === 'foreignObject' ||
parent.tag === 'desc' ||
parent.tag === 'title') {
ns = 0 /* DOMNamespaces.HTML */;
}
}
if (ns === 0 /* DOMNamespaces.HTML */) {
if (tag === 'svg') {
return 1 /* DOMNamespaces.SVG */;
}
if (tag === 'math') {
return 2 /* DOMNamespaces.MATH_ML */;
}
}
return ns;
},
// https://html.spec.whatwg.org/multipage/parsing.html#parsing-html-fragments
getTextMode({ tag, ns }) {
if (ns === 0 /* DOMNamespaces.HTML */) {
if (tag === 'textarea' || tag === 'title') {
return 1 /* TextModes.RCDATA */;
}
if (isRawTextContainer(tag)) {
return 2 /* TextModes.RAWTEXT */;
}
}
return 0 /* TextModes.DATA */;
} }
},
// https://html.spec.whatwg.org/multipage/parsing.html#tree-construction-dispatcher
getNamespace(tag, parent) {
let ns = parent ? parent.ns : 0;
if (parent && ns === 2) {
if (parent.tag === "annotation-xml") {
if (tag === "svg") {
return 1;
}
if (parent.props.some(
(a) => a.type === 6 && a.name === "encoding" && a.value != null && (a.value.content === "text/html" || a.value.content === "application/xhtml+xml")
)) {
ns = 0;
}
} else if (/^m(?:[ions]|text)$/.test(parent.tag) && tag !== "mglyph" && tag !== "malignmark") {
ns = 0;
}
} else if (parent && ns === 1) {
if (parent.tag === "foreignObject" || parent.tag === "desc" || parent.tag === "title") {
ns = 0;
}
}
if (ns === 0) {
if (tag === "svg") {
return 1;
}
if (tag === "math") {
return 2;
}
}
return ns;
},
// https://html.spec.whatwg.org/multipage/parsing.html#parsing-html-fragments
getTextMode({ tag, ns }) {
if (ns === 0) {
if (tag === "textarea" || tag === "title") {
return 1;
}
if (isRawTextContainer(tag)) {
return 2;
}
}
return 0;
}
}; };
// Parse inline CSS strings for static style attributes into an object. const transformStyle = (node) => {
// This is a NodeTransform since it works on the static `style` attribute and if (node.type === 1) {
// converts it into a dynamic equivalent: node.props.forEach((p, i) => {
// style="color: red" -> :style='{ "color": "red" }' if (p.type === 6 && p.name === "style" && p.value) {
// It is then processed by `transformElement` and included in the generated node.props[i] = {
// props. type: 7,
const transformStyle = node => { name: `bind`,
if (node.type === 1 /* NodeTypes.ELEMENT */) { arg: createSimpleExpression(`style`, true, p.loc),
node.props.forEach((p, i) => { exp: parseInlineCSS(p.value.content, p.loc),
if (p.type === 6 /* NodeTypes.ATTRIBUTE */ && p.name === 'style' && p.value) { modifiers: [],
// replace p with an expression node loc: p.loc
node.props[i] = { };
type: 7 /* NodeTypes.DIRECTIVE */, }
name: `bind`, });
arg: createSimpleExpression(`style`, true, p.loc), }
exp: parseInlineCSS(p.value.content, p.loc),
modifiers: [],
loc: p.loc
};
}
});
}
}; };
const parseInlineCSS = (cssText, loc) => { const parseInlineCSS = (cssText, loc) => {
const normalized = parseStringStyle(cssText); const normalized = parseStringStyle(cssText);
return createSimpleExpression(JSON.stringify(normalized), false, loc, 3 /* ConstantTypes.CAN_STRINGIFY */); return createSimpleExpression(
JSON.stringify(normalized),
false,
loc,
3
);
}; };
function createDOMCompilerError(code, loc) { function createDOMCompilerError(code, loc) {
return createCompilerError(code, loc, (process.env.NODE_ENV !== 'production') || !true ? DOMErrorMessages : undefined); return createCompilerError(
code,
loc,
!!(process.env.NODE_ENV !== "production") || false ? DOMErrorMessages : void 0
);
} }
const DOMErrorMessages = { const DOMErrorMessages = {
[51 /* DOMErrorCodes.X_V_HTML_NO_EXPRESSION */]: `v-html is missing expression.`, [53]: `v-html is missing expression.`,
[52 /* DOMErrorCodes.X_V_HTML_WITH_CHILDREN */]: `v-html will override element children.`, [54]: `v-html will override element children.`,
[53 /* DOMErrorCodes.X_V_TEXT_NO_EXPRESSION */]: `v-text is missing expression.`, [55]: `v-text is missing expression.`,
[54 /* DOMErrorCodes.X_V_TEXT_WITH_CHILDREN */]: `v-text will override element children.`, [56]: `v-text will override element children.`,
[55 /* DOMErrorCodes.X_V_MODEL_ON_INVALID_ELEMENT */]: `v-model can only be used on <input>, <textarea> and <select> elements.`, [57]: `v-model can only be used on <input>, <textarea> and <select> elements.`,
[56 /* DOMErrorCodes.X_V_MODEL_ARG_ON_ELEMENT */]: `v-model argument is not supported on plain elements.`, [58]: `v-model argument is not supported on plain elements.`,
[57 /* DOMErrorCodes.X_V_MODEL_ON_FILE_INPUT_ELEMENT */]: `v-model cannot be used on file inputs since they are read-only. Use a v-on:change listener instead.`, [59]: `v-model cannot be used on file inputs since they are read-only. Use a v-on:change listener instead.`,
[58 /* DOMErrorCodes.X_V_MODEL_UNNECESSARY_VALUE */]: `Unnecessary value binding used alongside v-model. It will interfere with v-model's behavior.`, [60]: `Unnecessary value binding used alongside v-model. It will interfere with v-model's behavior.`,
[59 /* DOMErrorCodes.X_V_SHOW_NO_EXPRESSION */]: `v-show is missing expression.`, [61]: `v-show is missing expression.`,
[60 /* DOMErrorCodes.X_TRANSITION_INVALID_CHILDREN */]: `<Transition> expects exactly one child element or component.`, [62]: `<Transition> expects exactly one child element or component.`,
[61 /* DOMErrorCodes.X_IGNORED_SIDE_EFFECT_TAG */]: `Tags with side effect (<script> and <style>) are ignored in client component templates.` [63]: `Tags with side effect (<script> and <style>) are ignored in client component templates.`
}; };
const transformVHtml = (dir, node, context) => { const transformVHtml = (dir, node, context) => {
const { exp, loc } = dir; const { exp, loc } = dir;
if (!exp) { if (!exp) {
context.onError(createDOMCompilerError(51 /* DOMErrorCodes.X_V_HTML_NO_EXPRESSION */, loc)); context.onError(
} createDOMCompilerError(53, loc)
if (node.children.length) { );
context.onError(createDOMCompilerError(52 /* DOMErrorCodes.X_V_HTML_WITH_CHILDREN */, loc)); }
node.children.length = 0; if (node.children.length) {
} context.onError(
return { createDOMCompilerError(54, loc)
props: [ );
createObjectProperty(createSimpleExpression(`innerHTML`, true, loc), exp || createSimpleExpression('', true)) node.children.length = 0;
] }
}; return {
props: [
createObjectProperty(
createSimpleExpression(`innerHTML`, true, loc),
exp || createSimpleExpression("", true)
)
]
};
}; };
const transformVText = (dir, node, context) => { const transformVText = (dir, node, context) => {
const { exp, loc } = dir; const { exp, loc } = dir;
if (!exp) { if (!exp) {
context.onError(createDOMCompilerError(53 /* DOMErrorCodes.X_V_TEXT_NO_EXPRESSION */, loc)); context.onError(
} createDOMCompilerError(55, loc)
if (node.children.length) { );
context.onError(createDOMCompilerError(54 /* DOMErrorCodes.X_V_TEXT_WITH_CHILDREN */, loc)); }
node.children.length = 0; if (node.children.length) {
} context.onError(
return { createDOMCompilerError(56, loc)
props: [ );
createObjectProperty(createSimpleExpression(`textContent`, true), exp node.children.length = 0;
? getConstantType(exp, context) > 0 }
? exp return {
: createCallExpression(context.helperString(TO_DISPLAY_STRING), [exp], loc) props: [
: createSimpleExpression('', true)) createObjectProperty(
] createSimpleExpression(`textContent`, true),
}; exp ? getConstantType(exp, context) > 0 ? exp : createCallExpression(
context.helperString(TO_DISPLAY_STRING),
[exp],
loc
) : createSimpleExpression("", true)
)
]
};
}; };
const transformModel = (dir, node, context) => { const transformModel = (dir, node, context) => {
const baseResult = transformModel$1(dir, node, context); const baseResult = transformModel$1(dir, node, context);
// base transform has errors OR component v-model (only need props) if (!baseResult.props.length || node.tagType === 1) {
if (!baseResult.props.length || node.tagType === 1 /* ElementTypes.COMPONENT */) {
return baseResult;
}
if (dir.arg) {
context.onError(createDOMCompilerError(56 /* DOMErrorCodes.X_V_MODEL_ARG_ON_ELEMENT */, dir.arg.loc));
}
function checkDuplicatedValue() {
const value = findProp(node, 'value');
if (value) {
context.onError(createDOMCompilerError(58 /* DOMErrorCodes.X_V_MODEL_UNNECESSARY_VALUE */, value.loc));
}
}
const { tag } = node;
const isCustomElement = context.isCustomElement(tag);
if (tag === 'input' ||
tag === 'textarea' ||
tag === 'select' ||
isCustomElement) {
let directiveToUse = V_MODEL_TEXT;
let isInvalidType = false;
if (tag === 'input' || isCustomElement) {
const type = findProp(node, `type`);
if (type) {
if (type.type === 7 /* NodeTypes.DIRECTIVE */) {
// :type="foo"
directiveToUse = V_MODEL_DYNAMIC;
}
else if (type.value) {
switch (type.value.content) {
case 'radio':
directiveToUse = V_MODEL_RADIO;
break;
case 'checkbox':
directiveToUse = V_MODEL_CHECKBOX;
break;
case 'file':
isInvalidType = true;
context.onError(createDOMCompilerError(57 /* DOMErrorCodes.X_V_MODEL_ON_FILE_INPUT_ELEMENT */, dir.loc));
break;
default:
// text type
(process.env.NODE_ENV !== 'production') && checkDuplicatedValue();
break;
}
}
}
else if (hasDynamicKeyVBind(node)) {
// element has bindings with dynamic keys, which can possibly contain
// "type".
directiveToUse = V_MODEL_DYNAMIC;
}
else {
// text type
(process.env.NODE_ENV !== 'production') && checkDuplicatedValue();
}
}
else if (tag === 'select') {
directiveToUse = V_MODEL_SELECT;
}
else {
// textarea
(process.env.NODE_ENV !== 'production') && checkDuplicatedValue();
}
// inject runtime directive
// by returning the helper symbol via needRuntime
// the import will replaced a resolveDirective call.
if (!isInvalidType) {
baseResult.needRuntime = context.helper(directiveToUse);
}
}
else {
context.onError(createDOMCompilerError(55 /* DOMErrorCodes.X_V_MODEL_ON_INVALID_ELEMENT */, dir.loc));
}
// native vmodel doesn't need the `modelValue` props since they are also
// passed to the runtime as `binding.value`. removing it reduces code size.
baseResult.props = baseResult.props.filter(p => !(p.key.type === 4 /* NodeTypes.SIMPLE_EXPRESSION */ &&
p.key.content === 'modelValue'));
return baseResult; return baseResult;
}
if (dir.arg) {
context.onError(
createDOMCompilerError(
58,
dir.arg.loc
)
);
}
function checkDuplicatedValue() {
const value = findProp(node, "value");
if (value) {
context.onError(
createDOMCompilerError(
60,
value.loc
)
);
}
}
const { tag } = node;
const isCustomElement = context.isCustomElement(tag);
if (tag === "input" || tag === "textarea" || tag === "select" || isCustomElement) {
let directiveToUse = V_MODEL_TEXT;
let isInvalidType = false;
if (tag === "input" || isCustomElement) {
const type = findProp(node, `type`);
if (type) {
if (type.type === 7) {
directiveToUse = V_MODEL_DYNAMIC;
} else if (type.value) {
switch (type.value.content) {
case "radio":
directiveToUse = V_MODEL_RADIO;
break;
case "checkbox":
directiveToUse = V_MODEL_CHECKBOX;
break;
case "file":
isInvalidType = true;
context.onError(
createDOMCompilerError(
59,
dir.loc
)
);
break;
default:
!!(process.env.NODE_ENV !== "production") && checkDuplicatedValue();
break;
}
}
} else if (hasDynamicKeyVBind(node)) {
directiveToUse = V_MODEL_DYNAMIC;
} else {
!!(process.env.NODE_ENV !== "production") && checkDuplicatedValue();
}
} else if (tag === "select") {
directiveToUse = V_MODEL_SELECT;
} else {
!!(process.env.NODE_ENV !== "production") && checkDuplicatedValue();
}
if (!isInvalidType) {
baseResult.needRuntime = context.helper(directiveToUse);
}
} else {
context.onError(
createDOMCompilerError(
57,
dir.loc
)
);
}
baseResult.props = baseResult.props.filter(
(p) => !(p.key.type === 4 && p.key.content === "modelValue")
);
return baseResult;
}; };
const isEventOptionModifier = /*#__PURE__*/ makeMap(`passive,once,capture`); const isEventOptionModifier = /* @__PURE__ */ makeMap(`passive,once,capture`);
const isNonKeyModifier = /*#__PURE__*/ makeMap( const isNonKeyModifier = /* @__PURE__ */ makeMap(
// event propagation management // event propagation management
`stop,prevent,self,` + `stop,prevent,self,ctrl,shift,alt,meta,exact,middle`
// system modifiers + exact );
`ctrl,shift,alt,meta,exact,` + const maybeKeyModifier = /* @__PURE__ */ makeMap("left,right");
// mouse const isKeyboardEvent = /* @__PURE__ */ makeMap(
`middle`); `onkeyup,onkeydown,onkeypress`,
// left & right could be mouse or key modifiers based on event type true
const maybeKeyModifier = /*#__PURE__*/ makeMap('left,right'); );
const isKeyboardEvent = /*#__PURE__*/ makeMap(`onkeyup,onkeydown,onkeypress`, true);
const resolveModifiers = (key, modifiers, context, loc) => { const resolveModifiers = (key, modifiers, context, loc) => {
const keyModifiers = []; const keyModifiers = [];
const nonKeyModifiers = []; const nonKeyModifiers = [];
const eventOptionModifiers = []; const eventOptionModifiers = [];
for (let i = 0; i < modifiers.length; i++) { for (let i = 0; i < modifiers.length; i++) {
const modifier = modifiers[i]; const modifier = modifiers[i];
if (modifier === 'native' && if (modifier === "native" && checkCompatEnabled(
checkCompatEnabled("COMPILER_V_ON_NATIVE" /* CompilerDeprecationTypes.COMPILER_V_ON_NATIVE */, context, loc)) { "COMPILER_V_ON_NATIVE",
eventOptionModifiers.push(modifier); context,
loc
)) {
eventOptionModifiers.push(modifier);
} else if (isEventOptionModifier(modifier)) {
eventOptionModifiers.push(modifier);
} else {
if (maybeKeyModifier(modifier)) {
if (isStaticExp(key)) {
if (isKeyboardEvent(key.content)) {
keyModifiers.push(modifier);
} else {
nonKeyModifiers.push(modifier);
}
} else {
keyModifiers.push(modifier);
nonKeyModifiers.push(modifier);
} }
else if (isEventOptionModifier(modifier)) { } else {
// eventOptionModifiers: modifiers for addEventListener() options, if (isNonKeyModifier(modifier)) {
// e.g. .passive & .capture nonKeyModifiers.push(modifier);
eventOptionModifiers.push(modifier); } else {
} keyModifiers.push(modifier);
else {
// runtimeModifiers: modifiers that needs runtime guards
if (maybeKeyModifier(modifier)) {
if (isStaticExp(key)) {
if (isKeyboardEvent(key.content)) {
keyModifiers.push(modifier);
}
else {
nonKeyModifiers.push(modifier);
}
}
else {
keyModifiers.push(modifier);
nonKeyModifiers.push(modifier);
}
}
else {
if (isNonKeyModifier(modifier)) {
nonKeyModifiers.push(modifier);
}
else {
keyModifiers.push(modifier);
}
}
} }
}
} }
return { }
keyModifiers, return {
nonKeyModifiers, keyModifiers,
eventOptionModifiers nonKeyModifiers,
}; eventOptionModifiers
};
}; };
const transformClick = (key, event) => { const transformClick = (key, event) => {
const isStaticClick = isStaticExp(key) && key.content.toLowerCase() === 'onclick'; const isStaticClick = isStaticExp(key) && key.content.toLowerCase() === "onclick";
return isStaticClick return isStaticClick ? createSimpleExpression(event, true) : key.type !== 4 ? createCompoundExpression([
? createSimpleExpression(event, true) `(`,
: key.type !== 4 /* NodeTypes.SIMPLE_EXPRESSION */ key,
? createCompoundExpression([ `) === "onClick" ? "${event}" : (`,
`(`, key,
key, `)`
`) === "onClick" ? "${event}" : (`, ]) : key;
key,
`)`
])
: key;
}; };
const transformOn = (dir, node, context) => { const transformOn = (dir, node, context) => {
return transformOn$1(dir, node, context, baseResult => { return transformOn$1(dir, node, context, (baseResult) => {
const { modifiers } = dir; const { modifiers } = dir;
if (!modifiers.length) if (!modifiers.length)
return baseResult; return baseResult;
let { key, value: handlerExp } = baseResult.props[0]; let { key, value: handlerExp } = baseResult.props[0];
const { keyModifiers, nonKeyModifiers, eventOptionModifiers } = resolveModifiers(key, modifiers, context, dir.loc); const { keyModifiers, nonKeyModifiers, eventOptionModifiers } = resolveModifiers(key, modifiers, context, dir.loc);
// normalize click.right and click.middle since they don't actually fire if (nonKeyModifiers.includes("right")) {
if (nonKeyModifiers.includes('right')) { key = transformClick(key, `onContextmenu`);
key = transformClick(key, `onContextmenu`); }
} if (nonKeyModifiers.includes("middle")) {
if (nonKeyModifiers.includes('middle')) { key = transformClick(key, `onMouseup`);
key = transformClick(key, `onMouseup`); }
} if (nonKeyModifiers.length) {
if (nonKeyModifiers.length) { handlerExp = createCallExpression(context.helper(V_ON_WITH_MODIFIERS), [
handlerExp = createCallExpression(context.helper(V_ON_WITH_MODIFIERS), [ handlerExp,
handlerExp, JSON.stringify(nonKeyModifiers)
JSON.stringify(nonKeyModifiers) ]);
]); }
} if (keyModifiers.length && // if event name is dynamic, always wrap with keys guard
if (keyModifiers.length && (!isStaticExp(key) || isKeyboardEvent(key.content))) {
// if event name is dynamic, always wrap with keys guard handlerExp = createCallExpression(context.helper(V_ON_WITH_KEYS), [
(!isStaticExp(key) || isKeyboardEvent(key.content))) { handlerExp,
handlerExp = createCallExpression(context.helper(V_ON_WITH_KEYS), [ JSON.stringify(keyModifiers)
handlerExp, ]);
JSON.stringify(keyModifiers) }
]); if (eventOptionModifiers.length) {
} const modifierPostfix = eventOptionModifiers.map(capitalize).join("");
if (eventOptionModifiers.length) { key = isStaticExp(key) ? createSimpleExpression(`${key.content}${modifierPostfix}`, true) : createCompoundExpression([`(`, key, `) + "${modifierPostfix}"`]);
const modifierPostfix = eventOptionModifiers.map(capitalize).join(''); }
key = isStaticExp(key) return {
? createSimpleExpression(`${key.content}${modifierPostfix}`, true) props: [createObjectProperty(key, handlerExp)]
: createCompoundExpression([`(`, key, `) + "${modifierPostfix}"`]); };
} });
return {
props: [createObjectProperty(key, handlerExp)]
};
});
}; };
const transformShow = (dir, node, context) => { const transformShow = (dir, node, context) => {
const { exp, loc } = dir; const { exp, loc } = dir;
if (!exp) { if (!exp) {
context.onError(createDOMCompilerError(59 /* DOMErrorCodes.X_V_SHOW_NO_EXPRESSION */, loc)); context.onError(
} createDOMCompilerError(61, loc)
return { );
props: [], }
needRuntime: context.helper(V_SHOW) return {
}; props: [],
needRuntime: context.helper(V_SHOW)
};
}; };
const transformTransition = (node, context) => { const transformTransition = (node, context) => {
if (node.type === 1 /* NodeTypes.ELEMENT */ && if (node.type === 1 && node.tagType === 1) {
node.tagType === 1 /* ElementTypes.COMPONENT */) { const component = context.isBuiltInComponent(node.tag);
const component = context.isBuiltInComponent(node.tag); if (component === TRANSITION) {
if (component === TRANSITION) { return () => {
return () => { if (!node.children.length) {
if (!node.children.length) { return;
return;
}
// warn multiple transition children
if (hasMultipleChildren(node)) {
context.onError(createDOMCompilerError(60 /* DOMErrorCodes.X_TRANSITION_INVALID_CHILDREN */, {
start: node.children[0].loc.start,
end: node.children[node.children.length - 1].loc.end,
source: ''
}));
}
// check if it's s single child w/ v-show
// if yes, inject "persisted: true" to the transition props
const child = node.children[0];
if (child.type === 1 /* NodeTypes.ELEMENT */) {
for (const p of child.props) {
if (p.type === 7 /* NodeTypes.DIRECTIVE */ && p.name === 'show') {
node.props.push({
type: 6 /* NodeTypes.ATTRIBUTE */,
name: 'persisted',
value: undefined,
loc: node.loc
});
}
}
}
};
} }
if (hasMultipleChildren(node)) {
context.onError(
createDOMCompilerError(
62,
{
start: node.children[0].loc.start,
end: node.children[node.children.length - 1].loc.end,
source: ""
}
)
);
}
const child = node.children[0];
if (child.type === 1) {
for (const p of child.props) {
if (p.type === 7 && p.name === "show") {
node.props.push({
type: 6,
name: "persisted",
value: void 0,
loc: node.loc
});
}
}
}
};
} }
}
}; };
function hasMultipleChildren(node) { function hasMultipleChildren(node) {
// #1352 filter out potential comment nodes. const children = node.children = node.children.filter(
const children = (node.children = node.children.filter(c => c.type !== 3 /* NodeTypes.COMMENT */ && (c) => c.type !== 3 && !(c.type === 2 && !c.content.trim())
!(c.type === 2 /* NodeTypes.TEXT */ && !c.content.trim()))); );
const child = children[0]; const child = children[0];
return (children.length !== 1 || return children.length !== 1 || child.type === 11 || child.type === 9 && child.branches.some(hasMultipleChildren);
child.type === 11 /* NodeTypes.FOR */ ||
(child.type === 9 /* NodeTypes.IF */ && child.branches.some(hasMultipleChildren)));
} }
const ignoreSideEffectTags = (node, context) => { const ignoreSideEffectTags = (node, context) => {
if (node.type === 1 /* NodeTypes.ELEMENT */ && if (node.type === 1 && node.tagType === 0 && (node.tag === "script" || node.tag === "style")) {
node.tagType === 0 /* ElementTypes.ELEMENT */ && !!(process.env.NODE_ENV !== "production") && context.onError(
(node.tag === 'script' || node.tag === 'style')) { createDOMCompilerError(
context.onError(createDOMCompilerError(61 /* DOMErrorCodes.X_IGNORED_SIDE_EFFECT_TAG */, node.loc)); 63,
context.removeNode(); node.loc
} )
);
context.removeNode();
}
}; };
const DOMNodeTransforms = [ const DOMNodeTransforms = [
transformStyle, transformStyle,
...((process.env.NODE_ENV !== 'production') ? [transformTransition] : []) ...!!(process.env.NODE_ENV !== "production") ? [transformTransition] : []
]; ];
const DOMDirectiveTransforms = { const DOMDirectiveTransforms = {
cloak: noopDirectiveTransform, cloak: noopDirectiveTransform,
html: transformVHtml, html: transformVHtml,
text: transformVText, text: transformVText,
model: transformModel, model: transformModel,
on: transformOn, // override compiler-core
show: transformShow on: transformOn,
// override compiler-core
show: transformShow
}; };
function compile(template, options = {}) { function compile(template, options = {}) {
return baseCompile(template, extend({}, parserOptions, options, { return baseCompile(
nodeTransforms: [ template,
// ignore <script> and <tag> extend({}, parserOptions, options, {
// this is not put inside DOMNodeTransforms because that list is used nodeTransforms: [
// by compiler-ssr to generate vnode fallback branches // ignore <script> and <tag>
ignoreSideEffectTags, // this is not put inside DOMNodeTransforms because that list is used
...DOMNodeTransforms, // by compiler-ssr to generate vnode fallback branches
...(options.nodeTransforms || []) ignoreSideEffectTags,
], ...DOMNodeTransforms,
directiveTransforms: extend({}, DOMDirectiveTransforms, options.directiveTransforms || {}), ...options.nodeTransforms || []
transformHoist: null ],
})); directiveTransforms: extend(
{},
DOMDirectiveTransforms,
options.directiveTransforms || {}
),
transformHoist: null
})
);
} }
function parse(template, options = {}) { function parse(template, options = {}) {
return baseParse(template, extend({}, parserOptions, options)); return baseParse(template, extend({}, parserOptions, options));
} }
export { DOMDirectiveTransforms, DOMNodeTransforms, TRANSITION, TRANSITION_GROUP, V_MODEL_CHECKBOX, V_MODEL_DYNAMIC, V_MODEL_RADIO, V_MODEL_SELECT, V_MODEL_TEXT, V_ON_WITH_KEYS, V_ON_WITH_MODIFIERS, V_SHOW, compile, createDOMCompilerError, parse, parserOptions, transformStyle }; export { DOMDirectiveTransforms, DOMNodeTransforms, TRANSITION, TRANSITION_GROUP, V_MODEL_CHECKBOX, V_MODEL_DYNAMIC, V_MODEL_RADIO, V_MODEL_SELECT, V_MODEL_TEXT, V_ON_WITH_KEYS, V_ON_WITH_MODIFIERS, V_SHOW, compile, createDOMCompilerError, parse, parserOptions, transformStyle };

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
{ {
"name": "@vue/compiler-dom", "name": "@vue/compiler-dom",
"version": "3.2.45", "version": "3.3.4",
"description": "@vue/compiler-dom", "description": "@vue/compiler-dom",
"main": "index.js", "main": "index.js",
"module": "dist/compiler-dom.esm-bundler.js", "module": "dist/compiler-dom.esm-bundler.js",
@ -37,7 +37,7 @@
}, },
"homepage": "https://github.com/vuejs/core/tree/main/packages/compiler-dom#readme", "homepage": "https://github.com/vuejs/core/tree/main/packages/compiler-dom#readme",
"dependencies": { "dependencies": {
"@vue/shared": "3.2.45", "@vue/shared": "3.3.4",
"@vue/compiler-core": "3.2.45" "@vue/compiler-core": "3.3.4"
} }
} }

File diff suppressed because one or more lines are too long

View File

@ -1,317 +1,473 @@
import { parse as babelParse } from '@babel/parser'; import * as _babel_types from '@babel/types';
import { BindingMetadata } from '@vue/compiler-core'; import { Statement, Expression, TSType, Program, Node, ObjectPattern, TSModuleDeclaration, TSPropertySignature, TSMethodSignature, TSCallSignatureDeclaration, TSFunctionType } from '@babel/types';
import { CodegenResult } from '@vue/compiler-core'; import { CompilerOptions, CodegenResult, ParserOptions, RootNode, CompilerError, SourceLocation, ElementNode, BindingMetadata as BindingMetadata$1 } from '@vue/compiler-core';
import { CompilerError } from '@vue/compiler-core'; export { BindingMetadata, CompilerError, CompilerOptions, extractIdentifiers, generateCodeFrame, isInDestructureAssignment, isStaticProperty, walkIdentifiers } from '@vue/compiler-core';
import { CompilerOptions } from '@vue/compiler-core'; import { RawSourceMap } from 'source-map-js';
import { ElementNode } from '@vue/compiler-core'; import { ParserPlugin } from '@babel/parser';
import { extractIdentifiers } from '@vue/compiler-core'; export { parse as babelParse } from '@babel/parser';
import { generateCodeFrame } from '@vue/compiler-core'; import { Result, LazyResult } from 'postcss';
import { isInDestructureAssignment } from '@vue/compiler-core'; import MagicString from 'magic-string';
import { isStaticProperty } from '@vue/compiler-core'; export { default as MagicString } from 'magic-string';
import { LazyResult } from 'postcss'; export { shouldTransform as shouldTransformRef, transform as transformRef, transformAST as transformRefAST } from '@vue/reactivity-transform';
import MagicString from 'magic-string';
import { ParserOptions } from '@vue/compiler-core'; export interface AssetURLTagConfig {
import { ParserPlugin } from '@babel/parser'; [name: string]: string[];
import { RawSourceMap } from 'source-map'; }
import { Result } from 'postcss'; export interface AssetURLOptions {
import { RootNode } from '@vue/compiler-core'; /**
import { shouldTransform as shouldTransformRef } from '@vue/reactivity-transform'; * If base is provided, instead of transforming relative asset urls into
import { SourceLocation } from '@vue/compiler-core'; * imports, they will be directly rewritten to absolute urls.
import { Statement } from '@babel/types'; */
import { transform as transformRef } from '@vue/reactivity-transform'; base?: string | null;
import { transformAST as transformRefAST } from '@vue/reactivity-transform'; /**
import { walkIdentifiers } from '@vue/compiler-core'; * If true, also processes absolute urls.
*/
export declare interface AssetURLOptions { includeAbsolute?: boolean;
/** tags?: AssetURLTagConfig;
* If base is provided, instead of transforming relative asset urls into }
* imports, they will be directly rewritten to absolute urls.
*/ export interface TemplateCompiler {
base?: string | null; compile(template: string, options: CompilerOptions): CodegenResult;
/** parse(template: string, options: ParserOptions): RootNode;
* If true, also processes absolute urls. }
*/ export interface SFCTemplateCompileResults {
includeAbsolute?: boolean; code: string;
tags?: AssetURLTagConfig; ast?: RootNode;
} preamble?: string;
source: string;
export declare interface AssetURLTagConfig { tips: string[];
[name: string]: string[]; errors: (string | CompilerError)[];
} map?: RawSourceMap;
}
export { babelParse } export interface SFCTemplateCompileOptions {
source: string;
export { BindingMetadata } filename: string;
id: string;
export { CompilerError } scoped?: boolean;
slotted?: boolean;
export { CompilerOptions } isProd?: boolean;
ssr?: boolean;
/** ssrCssVars?: string[];
* Compile `<script setup>` inMap?: RawSourceMap;
* It requires the whole SFC descriptor because we need to handle and merge compiler?: TemplateCompiler;
* normal `<script>` + `<script setup>` if both are present. compilerOptions?: CompilerOptions;
*/ preprocessLang?: string;
export declare function compileScript(sfc: SFCDescriptor, options: SFCScriptCompileOptions): SFCScriptBlock; preprocessOptions?: any;
/**
export declare function compileStyle(options: SFCStyleCompileOptions): SFCStyleCompileResults; * In some cases, compiler-sfc may not be inside the project root (e.g. when
* linked or globally installed). In such cases a custom `require` can be
export declare function compileStyleAsync(options: SFCAsyncStyleCompileOptions): Promise<SFCStyleCompileResults>; * passed to correctly resolve the preprocessors.
*/
export declare function compileTemplate(options: SFCTemplateCompileOptions): SFCTemplateCompileResults; preprocessCustomRequire?: (id: string) => any;
/**
/** * Configure what tags/attributes to transform into asset url imports,
* Aligns with postcss-modules * or disable the transform altogether with `false`.
* https://github.com/css-modules/postcss-modules */
*/ transformAssetUrls?: AssetURLOptions | AssetURLTagConfig | boolean;
declare interface CSSModulesOptions { }
scopeBehaviour?: 'global' | 'local'; export declare function compileTemplate(options: SFCTemplateCompileOptions): SFCTemplateCompileResults;
generateScopedName?: string | ((name: string, filename: string, css: string) => string);
hashPrefix?: string; export interface SFCScriptCompileOptions {
localsConvention?: 'camelCase' | 'camelCaseOnly' | 'dashes' | 'dashesOnly'; /**
exportGlobals?: boolean; * Scope ID for prefixing injected CSS variables.
globalModulePaths?: RegExp[]; * This must be consistent with the `id` passed to `compileStyle`.
} */
id: string;
export { extractIdentifiers } /**
* Production mode. Used to determine whether to generate hashed CSS variables
export { generateCodeFrame } */
isProd?: boolean;
declare interface ImportBinding { /**
isType: boolean; * Enable/disable source map. Defaults to true.
imported: string; */
local: string; sourceMap?: boolean;
source: string; /**
isFromSetup: boolean; * https://babeljs.io/docs/en/babel-parser#plugins
isUsedInTemplate: boolean; */
} babelParserPlugins?: ParserPlugin[];
/**
export { isInDestructureAssignment } * A list of files to parse for global types to be made available for type
* resolving in SFC macros. The list must be fully resolved file system paths.
export { isStaticProperty } */
globalTypeFiles?: string[];
export { MagicString } /**
* Compile the template and inline the resulting render function
export declare function parse(source: string, { sourceMap, filename, sourceRoot, pad, ignoreEmpty, compiler }?: SFCParseOptions): SFCParseResult; * directly inside setup().
* - Only affects `<script setup>`
declare type PreprocessLang = 'less' | 'sass' | 'scss' | 'styl' | 'stylus'; * - This should only be used in production because it prevents the template
* from being hot-reloaded separately from component state.
/** */
* Utility for rewriting `export default` in a script block into a variable inlineTemplate?: boolean;
* declaration so that we can inject things into it /**
*/ * Generate the final component as a variable instead of default export.
export declare function rewriteDefault(input: string, as: string, parserPlugins?: ParserPlugin[]): string; * This is useful in e.g. @vitejs/plugin-vue where the script needs to be
* placed inside the main module.
export declare interface SFCAsyncStyleCompileOptions extends SFCStyleCompileOptions { */
isAsync?: boolean; genDefaultAs?: string;
modules?: boolean; /**
modulesOptions?: CSSModulesOptions; * Options for template compilation when inlining. Note these are options that
} * would normally be passed to `compiler-sfc`'s own `compileTemplate()`, not
* options passed to `compiler-dom`.
export declare interface SFCBlock { */
type: string; templateOptions?: Partial<SFCTemplateCompileOptions>;
content: string; /**
attrs: Record<string, string | true>; * Hoist <script setup> static constants.
loc: SourceLocation; * - Only enables when one `<script setup>` exists.
map?: RawSourceMap; * @default true
lang?: string; */
src?: string; hoistStatic?: boolean;
} /**
* (**Experimental**) Enable macro `defineModel`
export declare interface SFCDescriptor { * @default false
filename: string; */
source: string; defineModel?: boolean;
template: SFCTemplateBlock | null; /**
script: SFCScriptBlock | null; * (**Experimental**) Enable reactive destructure for `defineProps`
scriptSetup: SFCScriptBlock | null; * @default false
styles: SFCStyleBlock[]; */
customBlocks: SFCBlock[]; propsDestructure?: boolean;
cssVars: string[]; /**
/** * File system access methods to be used when resolving types
* whether the SFC uses :slotted() modifier. * imported in SFC macros. Defaults to ts.sys in Node.js, can be overwritten
* this is used as a compiler optimization hint. * to use a virtual file system for use in browsers (e.g. in REPLs)
*/ */
slotted: boolean; fs?: {
/** fileExists(file: string): boolean;
* compare with an existing descriptor to determine whether HMR should perform readFile(file: string): string | undefined;
* a reload vs. re-render. };
* /**
* Note: this comparison assumes the prev/next script are already identical, * (Experimental) Enable syntax transform for using refs without `.value` and
* and only checks the special case where <script setup lang="ts"> unused import * using destructured props with reactivity
* pruning result changes due to template changes. * @deprecated the Reactivity Transform proposal has been dropped. This
*/ * feature will be removed from Vue core in 3.4. If you intend to continue
shouldForceReload: (prevImports: Record<string, ImportBinding>) => boolean; * using it, disable this and switch to the [Vue Macros implementation](https://vue-macros.sxzz.moe/features/reactivity-transform.html).
} */
reactivityTransform?: boolean;
export declare interface SFCParseOptions { }
filename?: string; interface ImportBinding {
sourceMap?: boolean; isType: boolean;
sourceRoot?: string; imported: string;
pad?: boolean | 'line' | 'space'; local: string;
ignoreEmpty?: boolean; source: string;
compiler?: TemplateCompiler; isFromSetup: boolean;
} isUsedInTemplate: boolean;
}
export declare interface SFCParseResult { /**
descriptor: SFCDescriptor; * Compile `<script setup>`
errors: (CompilerError | SyntaxError)[]; * It requires the whole SFC descriptor because we need to handle and merge
} * normal `<script>` + `<script setup>` if both are present.
*/
export declare interface SFCScriptBlock extends SFCBlock { export declare function compileScript(sfc: SFCDescriptor, options: SFCScriptCompileOptions): SFCScriptBlock;
type: 'script';
setup?: string | boolean; export interface SFCParseOptions {
bindings?: BindingMetadata; filename?: string;
imports?: Record<string, ImportBinding>; sourceMap?: boolean;
scriptAst?: Statement[]; sourceRoot?: string;
scriptSetupAst?: Statement[]; pad?: boolean | 'line' | 'space';
} ignoreEmpty?: boolean;
compiler?: TemplateCompiler;
export declare interface SFCScriptCompileOptions { }
/** export interface SFCBlock {
* Scope ID for prefixing injected CSS variables. type: string;
* This must be consistent with the `id` passed to `compileStyle`. content: string;
*/ attrs: Record<string, string | true>;
id: string; loc: SourceLocation;
/** map?: RawSourceMap;
* Production mode. Used to determine whether to generate hashed CSS variables lang?: string;
*/ src?: string;
isProd?: boolean; }
/** export interface SFCTemplateBlock extends SFCBlock {
* Enable/disable source map. Defaults to true. type: 'template';
*/ ast: ElementNode;
sourceMap?: boolean; }
/** export interface SFCScriptBlock extends SFCBlock {
* https://babeljs.io/docs/en/babel-parser#plugins type: 'script';
*/ setup?: string | boolean;
babelParserPlugins?: ParserPlugin[]; bindings?: BindingMetadata$1;
/** imports?: Record<string, ImportBinding>;
* (Experimental) Enable syntax transform for using refs without `.value` and scriptAst?: _babel_types.Statement[];
* using destructured props with reactivity scriptSetupAst?: _babel_types.Statement[];
*/ warnings?: string[];
reactivityTransform?: boolean; /**
/** * Fully resolved dependency file paths (unix slashes) with imported types
* (Experimental) Enable syntax transform for using refs without `.value` * used in macros, used for HMR cache busting in @vitejs/plugin-vue and
* https://github.com/vuejs/rfcs/discussions/369 * vue-loader.
* @deprecated now part of `reactivityTransform` */
* @default false deps?: string[];
*/ }
refTransform?: boolean; export interface SFCStyleBlock extends SFCBlock {
/** type: 'style';
* (Experimental) Enable syntax transform for destructuring from defineProps() scoped?: boolean;
* https://github.com/vuejs/rfcs/discussions/394 module?: string | boolean;
* @deprecated now part of `reactivityTransform` }
* @default false export interface SFCDescriptor {
*/ filename: string;
propsDestructureTransform?: boolean; source: string;
/** template: SFCTemplateBlock | null;
* @deprecated use `reactivityTransform` instead. script: SFCScriptBlock | null;
*/ scriptSetup: SFCScriptBlock | null;
refSugar?: boolean; styles: SFCStyleBlock[];
/** customBlocks: SFCBlock[];
* Compile the template and inline the resulting render function cssVars: string[];
* directly inside setup(). /**
* - Only affects `<script setup>` * whether the SFC uses :slotted() modifier.
* - This should only be used in production because it prevents the template * this is used as a compiler optimization hint.
* from being hot-reloaded separately from component state. */
*/ slotted: boolean;
inlineTemplate?: boolean; /**
/** * compare with an existing descriptor to determine whether HMR should perform
* Options for template compilation when inlining. Note these are options that * a reload vs. re-render.
* would normally be passed to `compiler-sfc`'s own `compileTemplate()`, not *
* options passed to `compiler-dom`. * Note: this comparison assumes the prev/next script are already identical,
*/ * and only checks the special case where <script setup lang="ts"> unused import
templateOptions?: Partial<SFCTemplateCompileOptions>; * pruning result changes due to template changes.
} */
shouldForceReload: (prevImports: Record<string, ImportBinding>) => boolean;
export declare interface SFCStyleBlock extends SFCBlock { }
type: 'style'; export interface SFCParseResult {
scoped?: boolean; descriptor: SFCDescriptor;
module?: string | boolean; errors: (CompilerError | SyntaxError)[];
} }
export declare const parseCache: Map<string, SFCParseResult> & {
export declare interface SFCStyleCompileOptions { max?: number | undefined;
source: string; };
filename: string; export declare function parse(source: string, { sourceMap, filename, sourceRoot, pad, ignoreEmpty, compiler }?: SFCParseOptions): SFCParseResult;
id: string;
scoped?: boolean; type PreprocessLang = 'less' | 'sass' | 'scss' | 'styl' | 'stylus';
trim?: boolean;
isProd?: boolean; export interface SFCStyleCompileOptions {
inMap?: RawSourceMap; source: string;
preprocessLang?: PreprocessLang; filename: string;
preprocessOptions?: any; id: string;
preprocessCustomRequire?: (id: string) => any; scoped?: boolean;
postcssOptions?: any; trim?: boolean;
postcssPlugins?: any[]; isProd?: boolean;
/** inMap?: RawSourceMap;
* @deprecated use `inMap` instead. preprocessLang?: PreprocessLang;
*/ preprocessOptions?: any;
map?: RawSourceMap; preprocessCustomRequire?: (id: string) => any;
} postcssOptions?: any;
postcssPlugins?: any[];
export declare interface SFCStyleCompileResults { /**
code: string; * @deprecated use `inMap` instead.
map: RawSourceMap | undefined; */
rawResult: Result | LazyResult | undefined; map?: RawSourceMap;
errors: Error[]; }
modules?: Record<string, string>; /**
dependencies: Set<string>; * Aligns with postcss-modules
} * https://github.com/css-modules/postcss-modules
*/
export declare interface SFCTemplateBlock extends SFCBlock { interface CSSModulesOptions {
type: 'template'; scopeBehaviour?: 'global' | 'local';
ast: ElementNode; generateScopedName?: string | ((name: string, filename: string, css: string) => string);
} hashPrefix?: string;
localsConvention?: 'camelCase' | 'camelCaseOnly' | 'dashes' | 'dashesOnly';
export declare interface SFCTemplateCompileOptions { exportGlobals?: boolean;
source: string; globalModulePaths?: RegExp[];
filename: string; }
id: string; export interface SFCAsyncStyleCompileOptions extends SFCStyleCompileOptions {
scoped?: boolean; isAsync?: boolean;
slotted?: boolean; modules?: boolean;
isProd?: boolean; modulesOptions?: CSSModulesOptions;
ssr?: boolean; }
ssrCssVars?: string[]; export interface SFCStyleCompileResults {
inMap?: RawSourceMap; code: string;
compiler?: TemplateCompiler; map: RawSourceMap | undefined;
compilerOptions?: CompilerOptions; rawResult: Result | LazyResult | undefined;
preprocessLang?: string; errors: Error[];
preprocessOptions?: any; modules?: Record<string, string>;
/** dependencies: Set<string>;
* In some cases, compiler-sfc may not be inside the project root (e.g. when }
* linked or globally installed). In such cases a custom `require` can be export declare function compileStyle(options: SFCStyleCompileOptions): SFCStyleCompileResults;
* passed to correctly resolve the preprocessors. export declare function compileStyleAsync(options: SFCAsyncStyleCompileOptions): Promise<SFCStyleCompileResults>;
*/
preprocessCustomRequire?: (id: string) => any; export declare function rewriteDefault(input: string, as: string, parserPlugins?: ParserPlugin[]): string;
/** /**
* Configure what tags/attributes to transform into asset url imports, * Utility for rewriting `export default` in a script block into a variable
* or disable the transform altogether with `false`. * declaration so that we can inject things into it
*/ */
transformAssetUrls?: AssetURLOptions | AssetURLTagConfig | boolean; export declare function rewriteDefaultAST(ast: Statement[], s: MagicString, as: string): void;
}
type PropsDestructureBindings = Record<string, // public prop key
export declare interface SFCTemplateCompileResults { {
code: string; local: string;
ast?: RootNode; default?: Expression;
preamble?: string; }>;
source: string;
tips: string[]; interface ModelDecl {
errors: (string | CompilerError)[]; type: TSType | undefined;
map?: RawSourceMap; options: string | undefined;
} identifier: string | undefined;
}
export { shouldTransformRef }
declare const enum BindingTypes {
export declare interface TemplateCompiler { /**
compile(template: string, options: CompilerOptions): CodegenResult; * returned from data()
parse(template: string, options: ParserOptions): RootNode; */
} DATA = "data",
/**
export { transformRef } * declared as a prop
*/
export { transformRefAST } PROPS = "props",
/**
export declare const walk: any; * a local alias of a `<script setup>` destructured prop.
* the original is stored in __propsAliases of the bindingMetadata object.
export { walkIdentifiers } */
PROPS_ALIASED = "props-aliased",
export { } /**
* a let binding (may or may not be a ref)
*/
SETUP_LET = "setup-let",
/**
* a const binding that can never be a ref.
* these bindings don't need `unref()` calls when processed in inlined
* template expressions.
*/
SETUP_CONST = "setup-const",
/**
* a const binding that does not need `unref()`, but may be mutated.
*/
SETUP_REACTIVE_CONST = "setup-reactive-const",
/**
* a const binding that may be a ref.
*/
SETUP_MAYBE_REF = "setup-maybe-ref",
/**
* bindings that are guaranteed to be refs
*/
SETUP_REF = "setup-ref",
/**
* declared by other options, e.g. computed, inject
*/
OPTIONS = "options",
/**
* a literal constant, e.g. 'foo', 1, true
*/
LITERAL_CONST = "literal-const"
}
type BindingMetadata = {
[key: string]: BindingTypes | undefined;
} & {
__isScriptSetup?: boolean;
__propsAliases?: Record<string, string>;
};
export declare class ScriptCompileContext {
descriptor: SFCDescriptor;
options: Partial<SFCScriptCompileOptions>;
isJS: boolean;
isTS: boolean;
scriptAst: Program | null;
scriptSetupAst: Program | null;
source: string;
filename: string;
s: MagicString;
startOffset: number | undefined;
endOffset: number | undefined;
scope?: TypeScope;
globalScopes?: TypeScope[];
userImports: Record<string, ImportBinding>;
hasDefinePropsCall: boolean;
hasDefineEmitCall: boolean;
hasDefineExposeCall: boolean;
hasDefaultExportName: boolean;
hasDefaultExportRender: boolean;
hasDefineOptionsCall: boolean;
hasDefineSlotsCall: boolean;
hasDefineModelCall: boolean;
propsIdentifier: string | undefined;
propsRuntimeDecl: Node | undefined;
propsTypeDecl: Node | undefined;
propsDestructureDecl: ObjectPattern | undefined;
propsDestructuredBindings: PropsDestructureBindings;
propsDestructureRestId: string | undefined;
propsRuntimeDefaults: Node | undefined;
emitsRuntimeDecl: Node | undefined;
emitsTypeDecl: Node | undefined;
emitIdentifier: string | undefined;
modelDecls: Record<string, ModelDecl>;
optionsRuntimeDecl: Node | undefined;
bindingMetadata: BindingMetadata;
helperImports: Set<string>;
helper(key: string): string;
/**
* to be exposed on compiled script block for HMR cache busting
*/
deps?: Set<string>;
/**
* cache for resolved fs
*/
fs?: NonNullable<SFCScriptCompileOptions['fs']>;
constructor(descriptor: SFCDescriptor, options: Partial<SFCScriptCompileOptions>);
getString(node: Node, scriptSetup?: boolean): string;
error(msg: string, node: Node, scope?: TypeScope): never;
}
/**
* TypeResolveContext is compatible with ScriptCompileContext
* but also allows a simpler version of it with minimal required properties
* when resolveType needs to be used in a non-SFC context, e.g. in a babel
* plugin. The simplest context can be just:
* ```ts
* const ctx: SimpleTypeResolveContext = {
* filename: '...',
* source: '...',
* options: {},
* error() {},
* ast: []
* }
* ```
*/
export type SimpleTypeResolveContext = Pick<ScriptCompileContext, 'source' | 'filename' | 'error' | 'options'> & Partial<Pick<ScriptCompileContext, 'scope' | 'globalScopes' | 'deps' | 'fs'>> & {
ast: Statement[];
};
export type TypeResolveContext = ScriptCompileContext | SimpleTypeResolveContext;
type Import = Pick<ImportBinding, 'source' | 'imported'>;
interface WithScope {
_ownerScope: TypeScope;
}
type ScopeTypeNode = Node & WithScope & {
_ns?: TSModuleDeclaration & WithScope;
};
declare class TypeScope {
filename: string;
source: string;
offset: number;
imports: Record<string, Import>;
types: Record<string, ScopeTypeNode>;
declares: Record<string, ScopeTypeNode>;
constructor(filename: string, source: string, offset?: number, imports?: Record<string, Import>, types?: Record<string, ScopeTypeNode>, declares?: Record<string, ScopeTypeNode>);
resolvedImportSources: Record<string, string>;
exportedTypes: Record<string, ScopeTypeNode>;
exportedDeclares: Record<string, ScopeTypeNode>;
}
interface MaybeWithScope {
_ownerScope?: TypeScope;
}
interface ResolvedElements {
props: Record<string, (TSPropertySignature | TSMethodSignature) & {
_ownerScope: TypeScope;
}>;
calls?: (TSCallSignatureDeclaration | TSFunctionType)[];
}
/**
* Resolve arbitrary type node to a list of type elements that can be then
* mapped to runtime props or emits.
*/
export declare function resolveTypeElements(ctx: TypeResolveContext, node: Node & MaybeWithScope & {
_resolvedElements?: ResolvedElements;
}, scope?: TypeScope): ResolvedElements;
/**
* @private
*/
export declare function registerTS(_ts: any): void;
/**
* @private
*/
export declare function invalidateTypeCache(filename: string): void;
export declare function inferRuntimeType(ctx: TypeResolveContext, node: Node & MaybeWithScope, scope?: TypeScope): string[];
export declare const version: string;
export declare const walk: any;

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{ {
"name": "@vue/compiler-sfc", "name": "@vue/compiler-sfc",
"version": "3.2.45", "version": "3.3.4",
"description": "@vue/compiler-sfc", "description": "@vue/compiler-sfc",
"main": "dist/compiler-sfc.cjs.js", "main": "dist/compiler-sfc.cjs.js",
"module": "dist/compiler-sfc.esm-browser.js", "module": "dist/compiler-sfc.esm-browser.js",
@ -32,28 +32,29 @@
}, },
"homepage": "https://github.com/vuejs/core/tree/main/packages/compiler-sfc#readme", "homepage": "https://github.com/vuejs/core/tree/main/packages/compiler-sfc#readme",
"dependencies": { "dependencies": {
"@babel/parser": "^7.16.4", "@babel/parser": "^7.20.15",
"@vue/compiler-core": "3.2.45", "@vue/compiler-core": "3.3.4",
"@vue/compiler-dom": "3.2.45", "@vue/compiler-dom": "3.3.4",
"@vue/compiler-ssr": "3.2.45", "@vue/compiler-ssr": "3.3.4",
"@vue/reactivity-transform": "3.2.45", "@vue/reactivity-transform": "3.3.4",
"@vue/shared": "3.2.45", "@vue/shared": "3.3.4",
"estree-walker": "^2.0.2", "estree-walker": "^2.0.2",
"magic-string": "^0.25.7", "magic-string": "^0.30.0",
"source-map": "^0.6.1", "postcss": "^8.1.10",
"postcss": "^8.1.10" "source-map-js": "^1.0.2"
}, },
"devDependencies": { "devDependencies": {
"@babel/types": "^7.21.3",
"@types/estree": "^0.0.48", "@types/estree": "^0.0.48",
"@babel/types": "^7.16.0",
"@types/lru-cache": "^5.1.0", "@types/lru-cache": "^5.1.0",
"pug": "^3.0.1",
"sass": "^1.26.9",
"@vue/consolidate": "^0.17.3", "@vue/consolidate": "^0.17.3",
"hash-sum": "^2.0.0", "hash-sum": "^2.0.0",
"lru-cache": "^5.1.1", "lru-cache": "^5.1.1",
"merge-source-map": "^1.1.0", "merge-source-map": "^1.1.0",
"minimatch": "^9.0.0",
"postcss-modules": "^4.0.0", "postcss-modules": "^4.0.0",
"postcss-selector-parser": "^6.0.4" "postcss-selector-parser": "^6.0.4",
"pug": "^3.0.1",
"sass": "^1.26.9"
} }
} }

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,4 @@
import { CodegenResult } from '@vue/compiler-dom'; import { CompilerOptions, CodegenResult } from '@vue/compiler-dom';
import { CompilerOptions } from '@vue/compiler-dom';
export declare function compile(template: string, options?: CompilerOptions): CodegenResult;
export declare function compile(template: string, options?: CompilerOptions): CodegenResult;
export { }

View File

@ -1,6 +1,6 @@
{ {
"name": "@vue/compiler-ssr", "name": "@vue/compiler-ssr",
"version": "3.2.45", "version": "3.3.4",
"description": "@vue/compiler-ssr", "description": "@vue/compiler-ssr",
"main": "dist/compiler-ssr.cjs.js", "main": "dist/compiler-ssr.cjs.js",
"types": "dist/compiler-ssr.d.ts", "types": "dist/compiler-ssr.d.ts",
@ -28,7 +28,7 @@
}, },
"homepage": "https://github.com/vuejs/core/tree/main/packages/compiler-ssr#readme", "homepage": "https://github.com/vuejs/core/tree/main/packages/compiler-ssr#readme",
"dependencies": { "dependencies": {
"@vue/shared": "3.2.45", "@vue/shared": "3.3.4",
"@vue/compiler-dom": "3.2.45" "@vue/compiler-dom": "3.3.4"
} }
} }

View File

@ -1,8 +1,10 @@
# @vue/reactivity-transform # @vue/reactivity-transform
> ⚠️ This is experimental and currently only provided for testing and feedback. It may break during patches or even be removed. Use at your own risk! > ⚠️ This is experimental and the proposal has been dropped.
> The feature is now marked as deprecated and will be removed from Vue core
> in 3.4.
> >
> Follow https://github.com/vuejs/rfcs/discussions/369 for details and updates. > See reason for deprecation [here](https://github.com/vuejs/rfcs/discussions/369#discussioncomment-5059028).
## Basic Rules ## Basic Rules

View File

@ -1,43 +1,34 @@
import { ImportDefaultSpecifier } from '@babel/types'; import { ImportSpecifier, ImportDefaultSpecifier, ImportNamespaceSpecifier, Program } from '@babel/types';
import { ImportNamespaceSpecifier } from '@babel/types'; import MagicString, { SourceMap } from 'magic-string';
import { ImportSpecifier } from '@babel/types'; import { ParserPlugin } from '@babel/parser';
import MagicString from 'magic-string';
import { ParserPlugin } from '@babel/parser'; export declare function shouldTransform(src: string): boolean;
import { Program } from '@babel/types'; export interface RefTransformOptions {
import { SourceMap } from 'magic-string'; filename?: string;
sourceMap?: boolean;
export declare interface ImportBinding { parserPlugins?: ParserPlugin[];
local: string; importHelpersFrom?: string;
imported: string; }
source: string; export interface RefTransformResults {
specifier: ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier; code: string;
} map: SourceMap | null;
rootRefs: string[];
export declare interface RefTransformOptions { importedHelpers: string[];
filename?: string; }
sourceMap?: boolean; export interface ImportBinding {
parserPlugins?: ParserPlugin[]; local: string;
importHelpersFrom?: string; imported: string;
} source: string;
specifier: ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier;
export declare interface RefTransformResults { }
code: string; export declare function transform(src: string, { filename, sourceMap, parserPlugins, importHelpersFrom }?: RefTransformOptions): RefTransformResults;
map: SourceMap | null; export declare function transformAST(ast: Program, s: MagicString, offset?: number, knownRefs?: string[], knownProps?: Record<string, // public prop key
rootRefs: string[]; {
importedHelpers: string[]; local: string;
} default?: any;
isConst?: boolean;
export declare function shouldTransform(src: string): boolean; }>): {
rootRefs: string[];
export declare function transform(src: string, { filename, sourceMap, parserPlugins, importHelpersFrom }?: RefTransformOptions): RefTransformResults; importedHelpers: string[];
};
export declare function transformAST(ast: Program, s: MagicString, offset?: number, knownRefs?: string[], knownProps?: Record<string, // public prop key
{
local: string;
default?: any;
}>): {
rootRefs: string[];
importedHelpers: string[];
};
export { }

View File

@ -1,6 +1,6 @@
{ {
"name": "@vue/reactivity-transform", "name": "@vue/reactivity-transform",
"version": "3.2.45", "version": "3.3.4",
"description": "@vue/reactivity-transform", "description": "@vue/reactivity-transform",
"main": "dist/reactivity-transform.cjs.js", "main": "dist/reactivity-transform.cjs.js",
"files": [ "files": [
@ -28,14 +28,14 @@
}, },
"homepage": "https://github.com/vuejs/core/tree/dev/packages/reactivity-transform#readme", "homepage": "https://github.com/vuejs/core/tree/dev/packages/reactivity-transform#readme",
"dependencies": { "dependencies": {
"@babel/parser": "^7.16.4", "@babel/parser": "^7.20.15",
"@vue/compiler-core": "3.2.45", "@vue/compiler-core": "3.3.4",
"@vue/shared": "3.2.45", "@vue/shared": "3.3.4",
"estree-walker": "^2.0.2", "estree-walker": "^2.0.2",
"magic-string": "^0.25.7" "magic-string": "^0.30.0"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "^7.16.0", "@babel/core": "^7.21.3",
"@babel/types": "^7.16.0" "@babel/types": "^7.21.3"
} }
} }

View File

@ -4,7 +4,7 @@
This package is inlined into Global & Browser ESM builds of user-facing renderers (e.g. `@vue/runtime-dom`), but also published as a package that can be used standalone. The standalone build should not be used alongside a pre-bundled build of a user-facing renderer, as they will have different internal storage for reactivity connections. A user-facing renderer should re-export all APIs from this package. This package is inlined into Global & Browser ESM builds of user-facing renderers (e.g. `@vue/runtime-dom`), but also published as a package that can be used standalone. The standalone build should not be used alongside a pre-bundled build of a user-facing renderer, as they will have different internal storage for reactivity connections. A user-facing renderer should re-export all APIs from this package.
For full exposed APIs, see `src/index.ts`. You can also run `yarn build reactivity --types` from repo root, which will generate an API report at `temp/reactivity.api.md`. For full exposed APIs, see `src/index.ts`.
## Credits ## Credits

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
{ {
"name": "@vue/reactivity", "name": "@vue/reactivity",
"version": "3.2.45", "version": "3.3.4",
"description": "@vue/reactivity", "description": "@vue/reactivity",
"main": "index.js", "main": "index.js",
"module": "dist/reactivity.esm-bundler.js", "module": "dist/reactivity.esm-bundler.js",
@ -36,6 +36,6 @@
}, },
"homepage": "https://github.com/vuejs/core/tree/main/packages/reactivity#readme", "homepage": "https://github.com/vuejs/core/tree/main/packages/reactivity#readme",
"dependencies": { "dependencies": {
"@vue/shared": "3.2.45" "@vue/shared": "3.3.4"
} }
} }

View File

@ -2,18 +2,18 @@
> This package is published only for typing and building custom renderers. It is NOT meant to be used in applications. > This package is published only for typing and building custom renderers. It is NOT meant to be used in applications.
For full exposed APIs, see `src/index.ts`. You can also run `yarn build runtime-core --types` from repo root, which will generate an API report at `temp/runtime-core.api.md`. For full exposed APIs, see `src/index.ts`.
## Building a Custom Renderer ## Building a Custom Renderer
``` ts ```ts
import { createRenderer } from '@vue/runtime-core' import { createRenderer } from '@vue/runtime-core'
const { render, createApp } = createRenderer({ const { render, createApp } = createRenderer({
patchProp, patchProp,
insert, insert,
remove, remove,
createElement, createElement
// ... // ...
}) })

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{ {
"name": "@vue/runtime-core", "name": "@vue/runtime-core",
"version": "3.2.45", "version": "3.3.4",
"description": "@vue/runtime-core", "description": "@vue/runtime-core",
"main": "index.js", "main": "index.js",
"module": "dist/runtime-core.esm-bundler.js", "module": "dist/runtime-core.esm-bundler.js",
@ -32,7 +32,7 @@
}, },
"homepage": "https://github.com/vuejs/core/tree/main/packages/runtime-core#readme", "homepage": "https://github.com/vuejs/core/tree/main/packages/runtime-core#readme",
"dependencies": { "dependencies": {
"@vue/shared": "3.2.45", "@vue/shared": "3.3.4",
"@vue/reactivity": "3.2.45" "@vue/reactivity": "3.3.4"
} }
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
{ {
"name": "@vue/runtime-dom", "name": "@vue/runtime-dom",
"version": "3.2.45", "version": "3.3.4",
"description": "@vue/runtime-dom", "description": "@vue/runtime-dom",
"main": "index.js", "main": "index.js",
"module": "dist/runtime-dom.esm-bundler.js", "module": "dist/runtime-dom.esm-bundler.js",
@ -35,8 +35,8 @@
}, },
"homepage": "https://github.com/vuejs/core/tree/main/packages/runtime-dom#readme", "homepage": "https://github.com/vuejs/core/tree/main/packages/runtime-dom#readme",
"dependencies": { "dependencies": {
"@vue/shared": "3.2.45", "@vue/shared": "3.3.4",
"@vue/runtime-core": "3.2.45", "@vue/runtime-core": "3.3.4",
"csstype": "^2.6.8" "csstype": "^3.1.1"
} }
} }

File diff suppressed because it is too large Load Diff

View File

@ -1,101 +1,71 @@
/// <reference types="node" /> /// <reference types="node" />
import { VNode, ComponentInternalInstance, App, Slots, Component } from 'vue';
import { App } from 'vue'; import { Readable, Writable } from 'stream';
import { Component } from 'vue'; import { ComponentPublicInstance, Directive } from '@vue/runtime-core';
import { ComponentInternalInstance } from 'vue'; export { includeBooleanAttr as ssrIncludeBooleanAttr } from '@vue/shared';
import { ComponentPublicInstance } from '@vue/runtime-core';
import { Directive } from '@vue/runtime-core'; type SSRBuffer = SSRBufferItem[] & {
import { Readable } from 'stream'; hasAsync?: boolean;
import { Slots } from 'vue'; };
import { includeBooleanAttr as ssrIncludeBooleanAttr } from '@vue/shared'; type SSRBufferItem = string | SSRBuffer | Promise<SSRBuffer>;
import { VNode } from 'vue'; type PushFn = (item: SSRBufferItem) => void;
import { Writable } from 'stream'; type Props = Record<string, unknown>;
export type SSRContext = {
export declare function pipeToNodeWritable(input: App | VNode, context: SSRContext | undefined, writable: Writable): void; [key: string]: any;
teleports?: Record<string, string>;
export declare function pipeToWebWritable(input: App | VNode, context: SSRContext | undefined, writable: WritableStream): void; /* removed internal: __teleportBuffers */
/* removed internal: __watcherHandles */
declare type Props = Record<string, unknown>; };
export declare function renderVNode(push: PushFn, vnode: VNode, parentComponent: ComponentInternalInstance, slotScopeId?: string): void;
declare type PushFn = (item: SSRBufferItem) => void;
export declare function renderToString(input: App | VNode, context?: SSRContext): Promise<string>;
export declare function renderToNodeStream(input: App | VNode, context?: SSRContext): Readable;
export interface SimpleReadable {
export declare function renderToSimpleStream<T extends SimpleReadable>(input: App | VNode, context: SSRContext, stream: T): T; push(chunk: string | null): void;
destroy(err: any): void;
/** }
* @deprecated export declare function renderToSimpleStream<T extends SimpleReadable>(input: App | VNode, context: SSRContext, stream: T): T;
*/ /**
export declare function renderToStream(input: App | VNode, context?: SSRContext): Readable; * @deprecated
*/
export declare function renderToString(input: App | VNode, context?: SSRContext): Promise<string>; export declare function renderToStream(input: App | VNode, context?: SSRContext): Readable;
export declare function renderToNodeStream(input: App | VNode, context?: SSRContext): Readable;
export declare function renderToWebStream(input: App | VNode, context?: SSRContext): ReadableStream; export declare function pipeToNodeWritable(input: App | VNode, context: SSRContext | undefined, writable: Writable): void;
export declare function renderToWebStream(input: App | VNode, context?: SSRContext): ReadableStream;
export declare interface SimpleReadable { export declare function pipeToWebWritable(input: App | VNode, context: SSRContext | undefined, writable: WritableStream): void;
push(chunk: string | null): void;
destroy(err: any): void; type SSRSlots = Record<string, SSRSlot>;
} type SSRSlot = (props: Props, push: PushFn, parentComponent: ComponentInternalInstance | null, scopeId: string | null) => void;
export declare function ssrRenderSlot(slots: Slots | SSRSlots, slotName: string, slotProps: Props, fallbackRenderFn: (() => void) | null, push: PushFn, parentComponent: ComponentInternalInstance, slotScopeId?: string): void;
declare type SSRBuffer = SSRBufferItem[] & { export declare function ssrRenderSlotInner(slots: Slots | SSRSlots, slotName: string, slotProps: Props, fallbackRenderFn: (() => void) | null, push: PushFn, parentComponent: ComponentInternalInstance, slotScopeId?: string, transition?: boolean): void;
hasAsync?: boolean;
}; export declare function ssrRenderComponent(comp: Component, props?: Props | null, children?: Slots | SSRSlots | null, parentComponent?: ComponentInternalInstance | null, slotScopeId?: string): SSRBuffer | Promise<SSRBuffer>;
declare type SSRBufferItem = string | SSRBuffer | Promise<SSRBuffer>; export declare function ssrRenderTeleport(parentPush: PushFn, contentRenderFn: (push: PushFn) => void, target: string, disabled: boolean, parentComponent: ComponentInternalInstance): void;
export declare type SSRContext = { export declare function ssrRenderAttrs(props: Record<string, unknown>, tag?: string): string;
[key: string]: any; export declare function ssrRenderDynamicAttr(key: string, value: unknown, tag?: string): string;
teleports?: Record<string, string>; export declare function ssrRenderAttr(key: string, value: unknown): string;
/* Excluded from this release type: __teleportBuffers */ export declare function ssrRenderClass(raw: unknown): string;
/* Excluded from this release type: __watcherHandles */ export declare function ssrRenderStyle(raw: unknown): string;
};
export declare function ssrInterpolate(value: unknown): string;
export declare function ssrGetDirectiveProps(instance: ComponentPublicInstance, dir: Directive, value?: any, arg?: string, modifiers?: Record<string, boolean>): Record<string, any>;
export declare function ssrRenderList(source: unknown, renderItem: (value: unknown, key: string | number, index?: number) => void): void;
export declare function ssrGetDynamicModelProps(existingProps: any, model: unknown): {
checked: boolean; export declare function ssrRenderSuspense(push: PushFn, { default: renderContent }: Record<string, (() => void) | undefined>): Promise<void>;
value?: undefined;
} | { export declare function ssrGetDirectiveProps(instance: ComponentPublicInstance, dir: Directive, value?: any, arg?: string, modifiers?: Record<string, boolean>): Record<string, any>;
value: unknown;
checked?: undefined; export declare const ssrLooseEqual: (a: unknown, b: unknown) => boolean;
} | null; export declare function ssrLooseContain(arr: unknown[], value: unknown): boolean;
export declare function ssrRenderDynamicModel(type: unknown, model: unknown, value: unknown): string;
export { ssrIncludeBooleanAttr } export declare function ssrGetDynamicModelProps(existingProps: any, model: unknown): {
checked: boolean;
export declare function ssrInterpolate(value: unknown): string; value?: undefined;
} | {
export declare function ssrLooseContain(arr: unknown[], value: unknown): boolean; value: unknown;
checked?: undefined;
export declare const ssrLooseEqual: (a: unknown, b: unknown) => boolean; } | null;
export declare function ssrRenderAttr(key: string, value: unknown): string; export { renderVNode as ssrRenderVNode };
export declare function ssrRenderAttrs(props: Record<string, unknown>, tag?: string): string;
export declare function ssrRenderClass(raw: unknown): string;
export declare function ssrRenderComponent(comp: Component, props?: Props | null, children?: Slots | SSRSlots | null, parentComponent?: ComponentInternalInstance | null, slotScopeId?: string): SSRBuffer | Promise<SSRBuffer>;
export declare function ssrRenderDynamicAttr(key: string, value: unknown, tag?: string): string;
export declare function ssrRenderDynamicModel(type: unknown, model: unknown, value: unknown): string;
export declare function ssrRenderList(source: unknown, renderItem: (value: unknown, key: string | number, index?: number) => void): void;
export declare function ssrRenderSlot(slots: Slots | SSRSlots, slotName: string, slotProps: Props, fallbackRenderFn: (() => void) | null, push: PushFn, parentComponent: ComponentInternalInstance, slotScopeId?: string): void;
export declare function ssrRenderSlotInner(slots: Slots | SSRSlots, slotName: string, slotProps: Props, fallbackRenderFn: (() => void) | null, push: PushFn, parentComponent: ComponentInternalInstance, slotScopeId?: string, transition?: boolean): void;
export declare function ssrRenderStyle(raw: unknown): string;
export declare function ssrRenderSuspense(push: PushFn, { default: renderContent }: Record<string, (() => void) | undefined>): Promise<void>;
export declare function ssrRenderTeleport(parentPush: PushFn, contentRenderFn: (push: PushFn) => void, target: string, disabled: boolean, parentComponent: ComponentInternalInstance): void;
export declare function ssrRenderVNode(push: PushFn, vnode: VNode, parentComponent: ComponentInternalInstance, slotScopeId?: string): void;
declare type SSRSlot = (props: Props, push: PushFn, parentComponent: ComponentInternalInstance | null, scopeId: string | null) => void;
declare type SSRSlots = Record<string, SSRSlot>;
export { }

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
{ {
"name": "@vue/server-renderer", "name": "@vue/server-renderer",
"version": "3.2.45", "version": "3.3.4",
"description": "@vue/server-renderer", "description": "@vue/server-renderer",
"main": "index.js", "main": "index.js",
"module": "dist/server-renderer.esm-bundler.js", "module": "dist/server-renderer.esm-bundler.js",
@ -32,10 +32,10 @@
}, },
"homepage": "https://github.com/vuejs/core/tree/main/packages/server-renderer#readme", "homepage": "https://github.com/vuejs/core/tree/main/packages/server-renderer#readme",
"peerDependencies": { "peerDependencies": {
"vue": "3.2.45" "vue": "3.3.4"
}, },
"dependencies": { "dependencies": {
"@vue/shared": "3.2.45", "@vue/shared": "3.3.4",
"@vue/compiler-ssr": "3.2.45" "@vue/compiler-ssr": "3.3.4"
} }
} }

View File

@ -2,591 +2,413 @@
Object.defineProperty(exports, '__esModule', { value: true }); Object.defineProperty(exports, '__esModule', { value: true });
/**
* Make a map and return a function for checking if a key
* is in that map.
* IMPORTANT: all calls of this function must be prefixed with
* \/\*#\_\_PURE\_\_\*\/
* So that rollup can tree-shake them if necessary.
*/
function makeMap(str, expectsLowerCase) { function makeMap(str, expectsLowerCase) {
const map = Object.create(null); const map = /* @__PURE__ */ Object.create(null);
const list = str.split(','); const list = str.split(",");
for (let i = 0; i < list.length; i++) { for (let i = 0; i < list.length; i++) {
map[list[i]] = true; map[list[i]] = true;
} }
return expectsLowerCase ? val => !!map[val.toLowerCase()] : val => !!map[val]; return expectsLowerCase ? (val) => !!map[val.toLowerCase()] : (val) => !!map[val];
} }
/** const EMPTY_OBJ = Object.freeze({}) ;
* dev only flag -> name mapping
*/
const PatchFlagNames = {
[1 /* PatchFlags.TEXT */]: `TEXT`,
[2 /* PatchFlags.CLASS */]: `CLASS`,
[4 /* PatchFlags.STYLE */]: `STYLE`,
[8 /* PatchFlags.PROPS */]: `PROPS`,
[16 /* PatchFlags.FULL_PROPS */]: `FULL_PROPS`,
[32 /* PatchFlags.HYDRATE_EVENTS */]: `HYDRATE_EVENTS`,
[64 /* PatchFlags.STABLE_FRAGMENT */]: `STABLE_FRAGMENT`,
[128 /* PatchFlags.KEYED_FRAGMENT */]: `KEYED_FRAGMENT`,
[256 /* PatchFlags.UNKEYED_FRAGMENT */]: `UNKEYED_FRAGMENT`,
[512 /* PatchFlags.NEED_PATCH */]: `NEED_PATCH`,
[1024 /* PatchFlags.DYNAMIC_SLOTS */]: `DYNAMIC_SLOTS`,
[2048 /* PatchFlags.DEV_ROOT_FRAGMENT */]: `DEV_ROOT_FRAGMENT`,
[-1 /* PatchFlags.HOISTED */]: `HOISTED`,
[-2 /* PatchFlags.BAIL */]: `BAIL`
};
/**
* Dev only
*/
const slotFlagsText = {
[1 /* SlotFlags.STABLE */]: 'STABLE',
[2 /* SlotFlags.DYNAMIC */]: 'DYNAMIC',
[3 /* SlotFlags.FORWARDED */]: 'FORWARDED'
};
const GLOBALS_WHITE_LISTED = 'Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,' +
'decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,' +
'Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt';
const isGloballyWhitelisted = /*#__PURE__*/ makeMap(GLOBALS_WHITE_LISTED);
const range = 2;
function generateCodeFrame(source, start = 0, end = source.length) {
// Split the content into individual lines but capture the newline sequence
// that separated each line. This is important because the actual sequence is
// needed to properly take into account the full line length for offset
// comparison
let lines = source.split(/(\r?\n)/);
// Separate the lines and newline sequences into separate arrays for easier referencing
const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);
lines = lines.filter((_, idx) => idx % 2 === 0);
let count = 0;
const res = [];
for (let i = 0; i < lines.length; i++) {
count +=
lines[i].length +
((newlineSequences[i] && newlineSequences[i].length) || 0);
if (count >= start) {
for (let j = i - range; j <= i + range || end > count; j++) {
if (j < 0 || j >= lines.length)
continue;
const line = j + 1;
res.push(`${line}${' '.repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}`);
const lineLength = lines[j].length;
const newLineSeqLength = (newlineSequences[j] && newlineSequences[j].length) || 0;
if (j === i) {
// push underline
const pad = start - (count - (lineLength + newLineSeqLength));
const length = Math.max(1, end > count ? lineLength - pad : end - start);
res.push(` | ` + ' '.repeat(pad) + '^'.repeat(length));
}
else if (j > i) {
if (end > count) {
const length = Math.max(Math.min(end - count, lineLength), 1);
res.push(` | ` + '^'.repeat(length));
}
count += lineLength + newLineSeqLength;
}
}
break;
}
}
return res.join('\n');
}
function normalizeStyle(value) {
if (isArray(value)) {
const res = {};
for (let i = 0; i < value.length; i++) {
const item = value[i];
const normalized = isString(item)
? parseStringStyle(item)
: normalizeStyle(item);
if (normalized) {
for (const key in normalized) {
res[key] = normalized[key];
}
}
}
return res;
}
else if (isString(value)) {
return value;
}
else if (isObject(value)) {
return value;
}
}
const listDelimiterRE = /;(?![^(]*\))/g;
const propertyDelimiterRE = /:([^]+)/;
const styleCommentRE = /\/\*.*?\*\//gs;
function parseStringStyle(cssText) {
const ret = {};
cssText
.replace(styleCommentRE, '')
.split(listDelimiterRE)
.forEach(item => {
if (item) {
const tmp = item.split(propertyDelimiterRE);
tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());
}
});
return ret;
}
function stringifyStyle(styles) {
let ret = '';
if (!styles || isString(styles)) {
return ret;
}
for (const key in styles) {
const value = styles[key];
const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);
if (isString(value) || typeof value === 'number') {
// only render valid values
ret += `${normalizedKey}:${value};`;
}
}
return ret;
}
function normalizeClass(value) {
let res = '';
if (isString(value)) {
res = value;
}
else if (isArray(value)) {
for (let i = 0; i < value.length; i++) {
const normalized = normalizeClass(value[i]);
if (normalized) {
res += normalized + ' ';
}
}
}
else if (isObject(value)) {
for (const name in value) {
if (value[name]) {
res += name + ' ';
}
}
}
return res.trim();
}
function normalizeProps(props) {
if (!props)
return null;
let { class: klass, style } = props;
if (klass && !isString(klass)) {
props.class = normalizeClass(klass);
}
if (style) {
props.style = normalizeStyle(style);
}
return props;
}
// These tag configs are shared between compiler-dom and runtime-dom, so they
// https://developer.mozilla.org/en-US/docs/Web/HTML/Element
const HTML_TAGS = 'html,body,base,head,link,meta,style,title,address,article,aside,footer,' +
'header,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,' +
'figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,' +
'data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,' +
'time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,' +
'canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,' +
'th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,' +
'option,output,progress,select,textarea,details,dialog,menu,' +
'summary,template,blockquote,iframe,tfoot';
// https://developer.mozilla.org/en-US/docs/Web/SVG/Element
const SVG_TAGS = 'svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,' +
'defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,' +
'feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,' +
'feDistanceLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,' +
'feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,' +
'fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,' +
'foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,' +
'mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,' +
'polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,' +
'text,textPath,title,tspan,unknown,use,view';
const VOID_TAGS = 'area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr';
/**
* Compiler only.
* Do NOT use in runtime code paths unless behind `true` flag.
*/
const isHTMLTag = /*#__PURE__*/ makeMap(HTML_TAGS);
/**
* Compiler only.
* Do NOT use in runtime code paths unless behind `true` flag.
*/
const isSVGTag = /*#__PURE__*/ makeMap(SVG_TAGS);
/**
* Compiler only.
* Do NOT use in runtime code paths unless behind `true` flag.
*/
const isVoidTag = /*#__PURE__*/ makeMap(VOID_TAGS);
/**
* On the client we only need to offer special cases for boolean attributes that
* have different names from their corresponding dom properties:
* - itemscope -> N/A
* - allowfullscreen -> allowFullscreen
* - formnovalidate -> formNoValidate
* - ismap -> isMap
* - nomodule -> noModule
* - novalidate -> noValidate
* - readonly -> readOnly
*/
const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;
const isSpecialBooleanAttr = /*#__PURE__*/ makeMap(specialBooleanAttrs);
/**
* The full list is needed during SSR to produce the correct initial markup.
*/
const isBooleanAttr = /*#__PURE__*/ makeMap(specialBooleanAttrs +
`,async,autofocus,autoplay,controls,default,defer,disabled,hidden,` +
`loop,open,required,reversed,scoped,seamless,` +
`checked,muted,multiple,selected`);
/**
* Boolean attributes should be included if the value is truthy or ''.
* e.g. `<select multiple>` compiles to `{ multiple: '' }`
*/
function includeBooleanAttr(value) {
return !!value || value === '';
}
const unsafeAttrCharRE = /[>/="'\u0009\u000a\u000c\u0020]/;
const attrValidationCache = {};
function isSSRSafeAttrName(name) {
if (attrValidationCache.hasOwnProperty(name)) {
return attrValidationCache[name];
}
const isUnsafe = unsafeAttrCharRE.test(name);
if (isUnsafe) {
console.error(`unsafe attribute name: ${name}`);
}
return (attrValidationCache[name] = !isUnsafe);
}
const propsToAttrMap = {
acceptCharset: 'accept-charset',
className: 'class',
htmlFor: 'for',
httpEquiv: 'http-equiv'
};
/**
* Known attributes, this is used for stringification of runtime static nodes
* so that we don't stringify bindings that cannot be set from HTML.
* Don't also forget to allow `data-*` and `aria-*`!
* Generated from https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes
*/
const isKnownHtmlAttr = /*#__PURE__*/ makeMap(`accept,accept-charset,accesskey,action,align,allow,alt,async,` +
`autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,` +
`border,buffered,capture,challenge,charset,checked,cite,class,code,` +
`codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,` +
`coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,` +
`disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,` +
`formaction,formenctype,formmethod,formnovalidate,formtarget,headers,` +
`height,hidden,high,href,hreflang,http-equiv,icon,id,importance,integrity,` +
`ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,` +
`manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,` +
`open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,` +
`referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,` +
`selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,` +
`start,step,style,summary,tabindex,target,title,translate,type,usemap,` +
`value,width,wrap`);
/**
* Generated from https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute
*/
const isKnownSvgAttr = /*#__PURE__*/ makeMap(`xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,` +
`arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,` +
`baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,` +
`clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,` +
`color-interpolation-filters,color-profile,color-rendering,` +
`contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,` +
`descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,` +
`dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,` +
`fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,` +
`font-family,font-size,font-size-adjust,font-stretch,font-style,` +
`font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,` +
`glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,` +
`gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,` +
`horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,` +
`k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,` +
`lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,` +
`marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,` +
`mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,` +
`name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,` +
`overflow,overline-position,overline-thickness,panose-1,paint-order,path,` +
`pathLength,patternContentUnits,patternTransform,patternUnits,ping,` +
`pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,` +
`preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,` +
`rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,` +
`restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,` +
`specularConstant,specularExponent,speed,spreadMethod,startOffset,` +
`stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,` +
`strikethrough-position,strikethrough-thickness,string,stroke,` +
`stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,` +
`stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,` +
`systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,` +
`text-decoration,text-rendering,textLength,to,transform,transform-origin,` +
`type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,` +
`unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,` +
`v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,` +
`vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,` +
`writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,` +
`xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,` +
`xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`);
const escapeRE = /["'&<>]/;
function escapeHtml(string) {
const str = '' + string;
const match = escapeRE.exec(str);
if (!match) {
return str;
}
let html = '';
let escaped;
let index;
let lastIndex = 0;
for (index = match.index; index < str.length; index++) {
switch (str.charCodeAt(index)) {
case 34: // "
escaped = '&quot;';
break;
case 38: // &
escaped = '&amp;';
break;
case 39: // '
escaped = '&#39;';
break;
case 60: // <
escaped = '&lt;';
break;
case 62: // >
escaped = '&gt;';
break;
default:
continue;
}
if (lastIndex !== index) {
html += str.slice(lastIndex, index);
}
lastIndex = index + 1;
html += escaped;
}
return lastIndex !== index ? html + str.slice(lastIndex, index) : html;
}
// https://www.w3.org/TR/html52/syntax.html#comments
const commentStripRE = /^-?>|<!--|-->|--!>|<!-$/g;
function escapeHtmlComment(src) {
return src.replace(commentStripRE, '');
}
function looseCompareArrays(a, b) {
if (a.length !== b.length)
return false;
let equal = true;
for (let i = 0; equal && i < a.length; i++) {
equal = looseEqual(a[i], b[i]);
}
return equal;
}
function looseEqual(a, b) {
if (a === b)
return true;
let aValidType = isDate(a);
let bValidType = isDate(b);
if (aValidType || bValidType) {
return aValidType && bValidType ? a.getTime() === b.getTime() : false;
}
aValidType = isSymbol(a);
bValidType = isSymbol(b);
if (aValidType || bValidType) {
return a === b;
}
aValidType = isArray(a);
bValidType = isArray(b);
if (aValidType || bValidType) {
return aValidType && bValidType ? looseCompareArrays(a, b) : false;
}
aValidType = isObject(a);
bValidType = isObject(b);
if (aValidType || bValidType) {
/* istanbul ignore if: this if will probably never be called */
if (!aValidType || !bValidType) {
return false;
}
const aKeysCount = Object.keys(a).length;
const bKeysCount = Object.keys(b).length;
if (aKeysCount !== bKeysCount) {
return false;
}
for (const key in a) {
const aHasKey = a.hasOwnProperty(key);
const bHasKey = b.hasOwnProperty(key);
if ((aHasKey && !bHasKey) ||
(!aHasKey && bHasKey) ||
!looseEqual(a[key], b[key])) {
return false;
}
}
}
return String(a) === String(b);
}
function looseIndexOf(arr, val) {
return arr.findIndex(item => looseEqual(item, val));
}
/**
* For converting {{ interpolation }} values to displayed strings.
* @private
*/
const toDisplayString = (val) => {
return isString(val)
? val
: val == null
? ''
: isArray(val) ||
(isObject(val) &&
(val.toString === objectToString || !isFunction(val.toString)))
? JSON.stringify(val, replacer, 2)
: String(val);
};
const replacer = (_key, val) => {
// can't use isRef here since @vue/shared has no deps
if (val && val.__v_isRef) {
return replacer(_key, val.value);
}
else if (isMap(val)) {
return {
[`Map(${val.size})`]: [...val.entries()].reduce((entries, [key, val]) => {
entries[`${key} =>`] = val;
return entries;
}, {})
};
}
else if (isSet(val)) {
return {
[`Set(${val.size})`]: [...val.values()]
};
}
else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {
return String(val);
}
return val;
};
const EMPTY_OBJ = Object.freeze({})
;
const EMPTY_ARR = Object.freeze([]) ; const EMPTY_ARR = Object.freeze([]) ;
const NOOP = () => { }; const NOOP = () => {
/** };
* Always return false.
*/
const NO = () => false; const NO = () => false;
const onRE = /^on[^a-z]/; const onRE = /^on[^a-z]/;
const isOn = (key) => onRE.test(key); const isOn = (key) => onRE.test(key);
const isModelListener = (key) => key.startsWith('onUpdate:'); const isModelListener = (key) => key.startsWith("onUpdate:");
const extend = Object.assign; const extend = Object.assign;
const remove = (arr, el) => { const remove = (arr, el) => {
const i = arr.indexOf(el); const i = arr.indexOf(el);
if (i > -1) { if (i > -1) {
arr.splice(i, 1); arr.splice(i, 1);
} }
}; };
const hasOwnProperty = Object.prototype.hasOwnProperty; const hasOwnProperty = Object.prototype.hasOwnProperty;
const hasOwn = (val, key) => hasOwnProperty.call(val, key); const hasOwn = (val, key) => hasOwnProperty.call(val, key);
const isArray = Array.isArray; const isArray = Array.isArray;
const isMap = (val) => toTypeString(val) === '[object Map]'; const isMap = (val) => toTypeString(val) === "[object Map]";
const isSet = (val) => toTypeString(val) === '[object Set]'; const isSet = (val) => toTypeString(val) === "[object Set]";
const isDate = (val) => toTypeString(val) === '[object Date]'; const isDate = (val) => toTypeString(val) === "[object Date]";
const isFunction = (val) => typeof val === 'function'; const isRegExp = (val) => toTypeString(val) === "[object RegExp]";
const isString = (val) => typeof val === 'string'; const isFunction = (val) => typeof val === "function";
const isSymbol = (val) => typeof val === 'symbol'; const isString = (val) => typeof val === "string";
const isObject = (val) => val !== null && typeof val === 'object'; const isSymbol = (val) => typeof val === "symbol";
const isObject = (val) => val !== null && typeof val === "object";
const isPromise = (val) => { const isPromise = (val) => {
return isObject(val) && isFunction(val.then) && isFunction(val.catch); return isObject(val) && isFunction(val.then) && isFunction(val.catch);
}; };
const objectToString = Object.prototype.toString; const objectToString = Object.prototype.toString;
const toTypeString = (value) => objectToString.call(value); const toTypeString = (value) => objectToString.call(value);
const toRawType = (value) => { const toRawType = (value) => {
// extract "RawType" from strings like "[object RawType]" return toTypeString(value).slice(8, -1);
return toTypeString(value).slice(8, -1);
}; };
const isPlainObject = (val) => toTypeString(val) === '[object Object]'; const isPlainObject = (val) => toTypeString(val) === "[object Object]";
const isIntegerKey = (key) => isString(key) && const isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key;
key !== 'NaN' && const isReservedProp = /* @__PURE__ */ makeMap(
key[0] !== '-' && // the leading comma is intentional so empty string "" is also included
'' + parseInt(key, 10) === key; ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"
const isReservedProp = /*#__PURE__*/ makeMap( );
// the leading comma is intentional so empty string "" is also included const isBuiltInDirective = /* @__PURE__ */ makeMap(
',key,ref,ref_for,ref_key,' + "bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo"
'onVnodeBeforeMount,onVnodeMounted,' + );
'onVnodeBeforeUpdate,onVnodeUpdated,' +
'onVnodeBeforeUnmount,onVnodeUnmounted');
const isBuiltInDirective = /*#__PURE__*/ makeMap('bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo');
const cacheStringFunction = (fn) => { const cacheStringFunction = (fn) => {
const cache = Object.create(null); const cache = /* @__PURE__ */ Object.create(null);
return ((str) => { return (str) => {
const hit = cache[str]; const hit = cache[str];
return hit || (cache[str] = fn(str)); return hit || (cache[str] = fn(str));
}); };
}; };
const camelizeRE = /-(\w)/g; const camelizeRE = /-(\w)/g;
/**
* @private
*/
const camelize = cacheStringFunction((str) => { const camelize = cacheStringFunction((str) => {
return str.replace(camelizeRE, (_, c) => (c ? c.toUpperCase() : '')); return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : "");
}); });
const hyphenateRE = /\B([A-Z])/g; const hyphenateRE = /\B([A-Z])/g;
/** const hyphenate = cacheStringFunction(
* @private (str) => str.replace(hyphenateRE, "-$1").toLowerCase()
*/ );
const hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, '-$1').toLowerCase()); const capitalize = cacheStringFunction(
/** (str) => str.charAt(0).toUpperCase() + str.slice(1)
* @private );
*/ const toHandlerKey = cacheStringFunction(
const capitalize = cacheStringFunction((str) => str.charAt(0).toUpperCase() + str.slice(1)); (str) => str ? `on${capitalize(str)}` : ``
/** );
* @private
*/
const toHandlerKey = cacheStringFunction((str) => str ? `on${capitalize(str)}` : ``);
// compare whether a value has changed, accounting for NaN.
const hasChanged = (value, oldValue) => !Object.is(value, oldValue); const hasChanged = (value, oldValue) => !Object.is(value, oldValue);
const invokeArrayFns = (fns, arg) => { const invokeArrayFns = (fns, arg) => {
for (let i = 0; i < fns.length; i++) { for (let i = 0; i < fns.length; i++) {
fns[i](arg); fns[i](arg);
} }
}; };
const def = (obj, key, value) => { const def = (obj, key, value) => {
Object.defineProperty(obj, key, { Object.defineProperty(obj, key, {
configurable: true, configurable: true,
enumerable: false, enumerable: false,
value value
}); });
};
const looseToNumber = (val) => {
const n = parseFloat(val);
return isNaN(n) ? val : n;
}; };
const toNumber = (val) => { const toNumber = (val) => {
const n = parseFloat(val); const n = isString(val) ? Number(val) : NaN;
return isNaN(n) ? val : n; return isNaN(n) ? val : n;
}; };
let _globalThis; let _globalThis;
const getGlobalThis = () => { const getGlobalThis = () => {
return (_globalThis || return _globalThis || (_globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {});
(_globalThis =
typeof globalThis !== 'undefined'
? globalThis
: typeof self !== 'undefined'
? self
: typeof window !== 'undefined'
? window
: typeof global !== 'undefined'
? global
: {}));
}; };
const identRE = /^[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*$/; const identRE = /^[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*$/;
function genPropsAccessExp(name) { function genPropsAccessExp(name) {
return identRE.test(name) return identRE.test(name) ? `__props.${name}` : `__props[${JSON.stringify(name)}]`;
? `__props.${name}`
: `__props[${JSON.stringify(name)}]`;
} }
const PatchFlagNames = {
[1]: `TEXT`,
[2]: `CLASS`,
[4]: `STYLE`,
[8]: `PROPS`,
[16]: `FULL_PROPS`,
[32]: `HYDRATE_EVENTS`,
[64]: `STABLE_FRAGMENT`,
[128]: `KEYED_FRAGMENT`,
[256]: `UNKEYED_FRAGMENT`,
[512]: `NEED_PATCH`,
[1024]: `DYNAMIC_SLOTS`,
[2048]: `DEV_ROOT_FRAGMENT`,
[-1]: `HOISTED`,
[-2]: `BAIL`
};
const slotFlagsText = {
[1]: "STABLE",
[2]: "DYNAMIC",
[3]: "FORWARDED"
};
const GLOBALS_WHITE_LISTED = "Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console";
const isGloballyWhitelisted = /* @__PURE__ */ makeMap(GLOBALS_WHITE_LISTED);
const range = 2;
function generateCodeFrame(source, start = 0, end = source.length) {
let lines = source.split(/(\r?\n)/);
const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);
lines = lines.filter((_, idx) => idx % 2 === 0);
let count = 0;
const res = [];
for (let i = 0; i < lines.length; i++) {
count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0);
if (count >= start) {
for (let j = i - range; j <= i + range || end > count; j++) {
if (j < 0 || j >= lines.length)
continue;
const line = j + 1;
res.push(
`${line}${" ".repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}`
);
const lineLength = lines[j].length;
const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0;
if (j === i) {
const pad = start - (count - (lineLength + newLineSeqLength));
const length = Math.max(
1,
end > count ? lineLength - pad : end - start
);
res.push(` | ` + " ".repeat(pad) + "^".repeat(length));
} else if (j > i) {
if (end > count) {
const length = Math.max(Math.min(end - count, lineLength), 1);
res.push(` | ` + "^".repeat(length));
}
count += lineLength + newLineSeqLength;
}
}
break;
}
}
return res.join("\n");
}
function normalizeStyle(value) {
if (isArray(value)) {
const res = {};
for (let i = 0; i < value.length; i++) {
const item = value[i];
const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item);
if (normalized) {
for (const key in normalized) {
res[key] = normalized[key];
}
}
}
return res;
} else if (isString(value)) {
return value;
} else if (isObject(value)) {
return value;
}
}
const listDelimiterRE = /;(?![^(]*\))/g;
const propertyDelimiterRE = /:([^]+)/;
const styleCommentRE = /\/\*[^]*?\*\//g;
function parseStringStyle(cssText) {
const ret = {};
cssText.replace(styleCommentRE, "").split(listDelimiterRE).forEach((item) => {
if (item) {
const tmp = item.split(propertyDelimiterRE);
tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());
}
});
return ret;
}
function stringifyStyle(styles) {
let ret = "";
if (!styles || isString(styles)) {
return ret;
}
for (const key in styles) {
const value = styles[key];
const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);
if (isString(value) || typeof value === "number") {
ret += `${normalizedKey}:${value};`;
}
}
return ret;
}
function normalizeClass(value) {
let res = "";
if (isString(value)) {
res = value;
} else if (isArray(value)) {
for (let i = 0; i < value.length; i++) {
const normalized = normalizeClass(value[i]);
if (normalized) {
res += normalized + " ";
}
}
} else if (isObject(value)) {
for (const name in value) {
if (value[name]) {
res += name + " ";
}
}
}
return res.trim();
}
function normalizeProps(props) {
if (!props)
return null;
let { class: klass, style } = props;
if (klass && !isString(klass)) {
props.class = normalizeClass(klass);
}
if (style) {
props.style = normalizeStyle(style);
}
return props;
}
const HTML_TAGS = "html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot";
const SVG_TAGS = "svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view";
const VOID_TAGS = "area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr";
const isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS);
const isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS);
const isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS);
const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;
const isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);
const isBooleanAttr = /* @__PURE__ */ makeMap(
specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`
);
function includeBooleanAttr(value) {
return !!value || value === "";
}
const unsafeAttrCharRE = /[>/="'\u0009\u000a\u000c\u0020]/;
const attrValidationCache = {};
function isSSRSafeAttrName(name) {
if (attrValidationCache.hasOwnProperty(name)) {
return attrValidationCache[name];
}
const isUnsafe = unsafeAttrCharRE.test(name);
if (isUnsafe) {
console.error(`unsafe attribute name: ${name}`);
}
return attrValidationCache[name] = !isUnsafe;
}
const propsToAttrMap = {
acceptCharset: "accept-charset",
className: "class",
htmlFor: "for",
httpEquiv: "http-equiv"
};
const isKnownHtmlAttr = /* @__PURE__ */ makeMap(
`accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap`
);
const isKnownSvgAttr = /* @__PURE__ */ makeMap(
`xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`
);
const escapeRE = /["'&<>]/;
function escapeHtml(string) {
const str = "" + string;
const match = escapeRE.exec(str);
if (!match) {
return str;
}
let html = "";
let escaped;
let index;
let lastIndex = 0;
for (index = match.index; index < str.length; index++) {
switch (str.charCodeAt(index)) {
case 34:
escaped = "&quot;";
break;
case 38:
escaped = "&amp;";
break;
case 39:
escaped = "&#39;";
break;
case 60:
escaped = "&lt;";
break;
case 62:
escaped = "&gt;";
break;
default:
continue;
}
if (lastIndex !== index) {
html += str.slice(lastIndex, index);
}
lastIndex = index + 1;
html += escaped;
}
return lastIndex !== index ? html + str.slice(lastIndex, index) : html;
}
const commentStripRE = /^-?>|<!--|-->|--!>|<!-$/g;
function escapeHtmlComment(src) {
return src.replace(commentStripRE, "");
}
function looseCompareArrays(a, b) {
if (a.length !== b.length)
return false;
let equal = true;
for (let i = 0; equal && i < a.length; i++) {
equal = looseEqual(a[i], b[i]);
}
return equal;
}
function looseEqual(a, b) {
if (a === b)
return true;
let aValidType = isDate(a);
let bValidType = isDate(b);
if (aValidType || bValidType) {
return aValidType && bValidType ? a.getTime() === b.getTime() : false;
}
aValidType = isSymbol(a);
bValidType = isSymbol(b);
if (aValidType || bValidType) {
return a === b;
}
aValidType = isArray(a);
bValidType = isArray(b);
if (aValidType || bValidType) {
return aValidType && bValidType ? looseCompareArrays(a, b) : false;
}
aValidType = isObject(a);
bValidType = isObject(b);
if (aValidType || bValidType) {
if (!aValidType || !bValidType) {
return false;
}
const aKeysCount = Object.keys(a).length;
const bKeysCount = Object.keys(b).length;
if (aKeysCount !== bKeysCount) {
return false;
}
for (const key in a) {
const aHasKey = a.hasOwnProperty(key);
const bHasKey = b.hasOwnProperty(key);
if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) {
return false;
}
}
}
return String(a) === String(b);
}
function looseIndexOf(arr, val) {
return arr.findIndex((item) => looseEqual(item, val));
}
const toDisplayString = (val) => {
return isString(val) ? val : val == null ? "" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? JSON.stringify(val, replacer, 2) : String(val);
};
const replacer = (_key, val) => {
if (val && val.__v_isRef) {
return replacer(_key, val.value);
} else if (isMap(val)) {
return {
[`Map(${val.size})`]: [...val.entries()].reduce((entries, [key, val2]) => {
entries[`${key} =>`] = val2;
return entries;
}, {})
};
} else if (isSet(val)) {
return {
[`Set(${val.size})`]: [...val.values()]
};
} else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {
return String(val);
}
return val;
};
exports.EMPTY_ARR = EMPTY_ARR; exports.EMPTY_ARR = EMPTY_ARR;
exports.EMPTY_OBJ = EMPTY_OBJ; exports.EMPTY_OBJ = EMPTY_OBJ;
exports.NO = NO; exports.NO = NO;
@ -622,6 +444,7 @@ exports.isObject = isObject;
exports.isOn = isOn; exports.isOn = isOn;
exports.isPlainObject = isPlainObject; exports.isPlainObject = isPlainObject;
exports.isPromise = isPromise; exports.isPromise = isPromise;
exports.isRegExp = isRegExp;
exports.isReservedProp = isReservedProp; exports.isReservedProp = isReservedProp;
exports.isSSRSafeAttrName = isSSRSafeAttrName; exports.isSSRSafeAttrName = isSSRSafeAttrName;
exports.isSVGTag = isSVGTag; exports.isSVGTag = isSVGTag;
@ -632,6 +455,7 @@ exports.isSymbol = isSymbol;
exports.isVoidTag = isVoidTag; exports.isVoidTag = isVoidTag;
exports.looseEqual = looseEqual; exports.looseEqual = looseEqual;
exports.looseIndexOf = looseIndexOf; exports.looseIndexOf = looseIndexOf;
exports.looseToNumber = looseToNumber;
exports.makeMap = makeMap; exports.makeMap = makeMap;
exports.normalizeClass = normalizeClass; exports.normalizeClass = normalizeClass;
exports.normalizeProps = normalizeProps; exports.normalizeProps = normalizeProps;

View File

@ -2,590 +2,413 @@
Object.defineProperty(exports, '__esModule', { value: true }); Object.defineProperty(exports, '__esModule', { value: true });
/**
* Make a map and return a function for checking if a key
* is in that map.
* IMPORTANT: all calls of this function must be prefixed with
* \/\*#\_\_PURE\_\_\*\/
* So that rollup can tree-shake them if necessary.
*/
function makeMap(str, expectsLowerCase) { function makeMap(str, expectsLowerCase) {
const map = Object.create(null); const map = /* @__PURE__ */ Object.create(null);
const list = str.split(','); const list = str.split(",");
for (let i = 0; i < list.length; i++) { for (let i = 0; i < list.length; i++) {
map[list[i]] = true; map[list[i]] = true;
} }
return expectsLowerCase ? val => !!map[val.toLowerCase()] : val => !!map[val]; return expectsLowerCase ? (val) => !!map[val.toLowerCase()] : (val) => !!map[val];
} }
/**
* dev only flag -> name mapping
*/
const PatchFlagNames = {
[1 /* PatchFlags.TEXT */]: `TEXT`,
[2 /* PatchFlags.CLASS */]: `CLASS`,
[4 /* PatchFlags.STYLE */]: `STYLE`,
[8 /* PatchFlags.PROPS */]: `PROPS`,
[16 /* PatchFlags.FULL_PROPS */]: `FULL_PROPS`,
[32 /* PatchFlags.HYDRATE_EVENTS */]: `HYDRATE_EVENTS`,
[64 /* PatchFlags.STABLE_FRAGMENT */]: `STABLE_FRAGMENT`,
[128 /* PatchFlags.KEYED_FRAGMENT */]: `KEYED_FRAGMENT`,
[256 /* PatchFlags.UNKEYED_FRAGMENT */]: `UNKEYED_FRAGMENT`,
[512 /* PatchFlags.NEED_PATCH */]: `NEED_PATCH`,
[1024 /* PatchFlags.DYNAMIC_SLOTS */]: `DYNAMIC_SLOTS`,
[2048 /* PatchFlags.DEV_ROOT_FRAGMENT */]: `DEV_ROOT_FRAGMENT`,
[-1 /* PatchFlags.HOISTED */]: `HOISTED`,
[-2 /* PatchFlags.BAIL */]: `BAIL`
};
/**
* Dev only
*/
const slotFlagsText = {
[1 /* SlotFlags.STABLE */]: 'STABLE',
[2 /* SlotFlags.DYNAMIC */]: 'DYNAMIC',
[3 /* SlotFlags.FORWARDED */]: 'FORWARDED'
};
const GLOBALS_WHITE_LISTED = 'Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,' +
'decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,' +
'Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt';
const isGloballyWhitelisted = /*#__PURE__*/ makeMap(GLOBALS_WHITE_LISTED);
const range = 2;
function generateCodeFrame(source, start = 0, end = source.length) {
// Split the content into individual lines but capture the newline sequence
// that separated each line. This is important because the actual sequence is
// needed to properly take into account the full line length for offset
// comparison
let lines = source.split(/(\r?\n)/);
// Separate the lines and newline sequences into separate arrays for easier referencing
const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);
lines = lines.filter((_, idx) => idx % 2 === 0);
let count = 0;
const res = [];
for (let i = 0; i < lines.length; i++) {
count +=
lines[i].length +
((newlineSequences[i] && newlineSequences[i].length) || 0);
if (count >= start) {
for (let j = i - range; j <= i + range || end > count; j++) {
if (j < 0 || j >= lines.length)
continue;
const line = j + 1;
res.push(`${line}${' '.repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}`);
const lineLength = lines[j].length;
const newLineSeqLength = (newlineSequences[j] && newlineSequences[j].length) || 0;
if (j === i) {
// push underline
const pad = start - (count - (lineLength + newLineSeqLength));
const length = Math.max(1, end > count ? lineLength - pad : end - start);
res.push(` | ` + ' '.repeat(pad) + '^'.repeat(length));
}
else if (j > i) {
if (end > count) {
const length = Math.max(Math.min(end - count, lineLength), 1);
res.push(` | ` + '^'.repeat(length));
}
count += lineLength + newLineSeqLength;
}
}
break;
}
}
return res.join('\n');
}
function normalizeStyle(value) {
if (isArray(value)) {
const res = {};
for (let i = 0; i < value.length; i++) {
const item = value[i];
const normalized = isString(item)
? parseStringStyle(item)
: normalizeStyle(item);
if (normalized) {
for (const key in normalized) {
res[key] = normalized[key];
}
}
}
return res;
}
else if (isString(value)) {
return value;
}
else if (isObject(value)) {
return value;
}
}
const listDelimiterRE = /;(?![^(]*\))/g;
const propertyDelimiterRE = /:([^]+)/;
const styleCommentRE = /\/\*.*?\*\//gs;
function parseStringStyle(cssText) {
const ret = {};
cssText
.replace(styleCommentRE, '')
.split(listDelimiterRE)
.forEach(item => {
if (item) {
const tmp = item.split(propertyDelimiterRE);
tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());
}
});
return ret;
}
function stringifyStyle(styles) {
let ret = '';
if (!styles || isString(styles)) {
return ret;
}
for (const key in styles) {
const value = styles[key];
const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);
if (isString(value) || typeof value === 'number') {
// only render valid values
ret += `${normalizedKey}:${value};`;
}
}
return ret;
}
function normalizeClass(value) {
let res = '';
if (isString(value)) {
res = value;
}
else if (isArray(value)) {
for (let i = 0; i < value.length; i++) {
const normalized = normalizeClass(value[i]);
if (normalized) {
res += normalized + ' ';
}
}
}
else if (isObject(value)) {
for (const name in value) {
if (value[name]) {
res += name + ' ';
}
}
}
return res.trim();
}
function normalizeProps(props) {
if (!props)
return null;
let { class: klass, style } = props;
if (klass && !isString(klass)) {
props.class = normalizeClass(klass);
}
if (style) {
props.style = normalizeStyle(style);
}
return props;
}
// These tag configs are shared between compiler-dom and runtime-dom, so they
// https://developer.mozilla.org/en-US/docs/Web/HTML/Element
const HTML_TAGS = 'html,body,base,head,link,meta,style,title,address,article,aside,footer,' +
'header,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,' +
'figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,' +
'data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,' +
'time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,' +
'canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,' +
'th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,' +
'option,output,progress,select,textarea,details,dialog,menu,' +
'summary,template,blockquote,iframe,tfoot';
// https://developer.mozilla.org/en-US/docs/Web/SVG/Element
const SVG_TAGS = 'svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,' +
'defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,' +
'feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,' +
'feDistanceLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,' +
'feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,' +
'fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,' +
'foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,' +
'mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,' +
'polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,' +
'text,textPath,title,tspan,unknown,use,view';
const VOID_TAGS = 'area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr';
/**
* Compiler only.
* Do NOT use in runtime code paths unless behind `false` flag.
*/
const isHTMLTag = /*#__PURE__*/ makeMap(HTML_TAGS);
/**
* Compiler only.
* Do NOT use in runtime code paths unless behind `false` flag.
*/
const isSVGTag = /*#__PURE__*/ makeMap(SVG_TAGS);
/**
* Compiler only.
* Do NOT use in runtime code paths unless behind `false` flag.
*/
const isVoidTag = /*#__PURE__*/ makeMap(VOID_TAGS);
/**
* On the client we only need to offer special cases for boolean attributes that
* have different names from their corresponding dom properties:
* - itemscope -> N/A
* - allowfullscreen -> allowFullscreen
* - formnovalidate -> formNoValidate
* - ismap -> isMap
* - nomodule -> noModule
* - novalidate -> noValidate
* - readonly -> readOnly
*/
const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;
const isSpecialBooleanAttr = /*#__PURE__*/ makeMap(specialBooleanAttrs);
/**
* The full list is needed during SSR to produce the correct initial markup.
*/
const isBooleanAttr = /*#__PURE__*/ makeMap(specialBooleanAttrs +
`,async,autofocus,autoplay,controls,default,defer,disabled,hidden,` +
`loop,open,required,reversed,scoped,seamless,` +
`checked,muted,multiple,selected`);
/**
* Boolean attributes should be included if the value is truthy or ''.
* e.g. `<select multiple>` compiles to `{ multiple: '' }`
*/
function includeBooleanAttr(value) {
return !!value || value === '';
}
const unsafeAttrCharRE = /[>/="'\u0009\u000a\u000c\u0020]/;
const attrValidationCache = {};
function isSSRSafeAttrName(name) {
if (attrValidationCache.hasOwnProperty(name)) {
return attrValidationCache[name];
}
const isUnsafe = unsafeAttrCharRE.test(name);
if (isUnsafe) {
console.error(`unsafe attribute name: ${name}`);
}
return (attrValidationCache[name] = !isUnsafe);
}
const propsToAttrMap = {
acceptCharset: 'accept-charset',
className: 'class',
htmlFor: 'for',
httpEquiv: 'http-equiv'
};
/**
* Known attributes, this is used for stringification of runtime static nodes
* so that we don't stringify bindings that cannot be set from HTML.
* Don't also forget to allow `data-*` and `aria-*`!
* Generated from https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes
*/
const isKnownHtmlAttr = /*#__PURE__*/ makeMap(`accept,accept-charset,accesskey,action,align,allow,alt,async,` +
`autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,` +
`border,buffered,capture,challenge,charset,checked,cite,class,code,` +
`codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,` +
`coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,` +
`disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,` +
`formaction,formenctype,formmethod,formnovalidate,formtarget,headers,` +
`height,hidden,high,href,hreflang,http-equiv,icon,id,importance,integrity,` +
`ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,` +
`manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,` +
`open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,` +
`referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,` +
`selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,` +
`start,step,style,summary,tabindex,target,title,translate,type,usemap,` +
`value,width,wrap`);
/**
* Generated from https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute
*/
const isKnownSvgAttr = /*#__PURE__*/ makeMap(`xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,` +
`arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,` +
`baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,` +
`clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,` +
`color-interpolation-filters,color-profile,color-rendering,` +
`contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,` +
`descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,` +
`dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,` +
`fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,` +
`font-family,font-size,font-size-adjust,font-stretch,font-style,` +
`font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,` +
`glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,` +
`gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,` +
`horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,` +
`k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,` +
`lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,` +
`marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,` +
`mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,` +
`name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,` +
`overflow,overline-position,overline-thickness,panose-1,paint-order,path,` +
`pathLength,patternContentUnits,patternTransform,patternUnits,ping,` +
`pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,` +
`preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,` +
`rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,` +
`restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,` +
`specularConstant,specularExponent,speed,spreadMethod,startOffset,` +
`stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,` +
`strikethrough-position,strikethrough-thickness,string,stroke,` +
`stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,` +
`stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,` +
`systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,` +
`text-decoration,text-rendering,textLength,to,transform,transform-origin,` +
`type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,` +
`unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,` +
`v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,` +
`vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,` +
`writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,` +
`xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,` +
`xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`);
const escapeRE = /["'&<>]/;
function escapeHtml(string) {
const str = '' + string;
const match = escapeRE.exec(str);
if (!match) {
return str;
}
let html = '';
let escaped;
let index;
let lastIndex = 0;
for (index = match.index; index < str.length; index++) {
switch (str.charCodeAt(index)) {
case 34: // "
escaped = '&quot;';
break;
case 38: // &
escaped = '&amp;';
break;
case 39: // '
escaped = '&#39;';
break;
case 60: // <
escaped = '&lt;';
break;
case 62: // >
escaped = '&gt;';
break;
default:
continue;
}
if (lastIndex !== index) {
html += str.slice(lastIndex, index);
}
lastIndex = index + 1;
html += escaped;
}
return lastIndex !== index ? html + str.slice(lastIndex, index) : html;
}
// https://www.w3.org/TR/html52/syntax.html#comments
const commentStripRE = /^-?>|<!--|-->|--!>|<!-$/g;
function escapeHtmlComment(src) {
return src.replace(commentStripRE, '');
}
function looseCompareArrays(a, b) {
if (a.length !== b.length)
return false;
let equal = true;
for (let i = 0; equal && i < a.length; i++) {
equal = looseEqual(a[i], b[i]);
}
return equal;
}
function looseEqual(a, b) {
if (a === b)
return true;
let aValidType = isDate(a);
let bValidType = isDate(b);
if (aValidType || bValidType) {
return aValidType && bValidType ? a.getTime() === b.getTime() : false;
}
aValidType = isSymbol(a);
bValidType = isSymbol(b);
if (aValidType || bValidType) {
return a === b;
}
aValidType = isArray(a);
bValidType = isArray(b);
if (aValidType || bValidType) {
return aValidType && bValidType ? looseCompareArrays(a, b) : false;
}
aValidType = isObject(a);
bValidType = isObject(b);
if (aValidType || bValidType) {
/* istanbul ignore if: this if will probably never be called */
if (!aValidType || !bValidType) {
return false;
}
const aKeysCount = Object.keys(a).length;
const bKeysCount = Object.keys(b).length;
if (aKeysCount !== bKeysCount) {
return false;
}
for (const key in a) {
const aHasKey = a.hasOwnProperty(key);
const bHasKey = b.hasOwnProperty(key);
if ((aHasKey && !bHasKey) ||
(!aHasKey && bHasKey) ||
!looseEqual(a[key], b[key])) {
return false;
}
}
}
return String(a) === String(b);
}
function looseIndexOf(arr, val) {
return arr.findIndex(item => looseEqual(item, val));
}
/**
* For converting {{ interpolation }} values to displayed strings.
* @private
*/
const toDisplayString = (val) => {
return isString(val)
? val
: val == null
? ''
: isArray(val) ||
(isObject(val) &&
(val.toString === objectToString || !isFunction(val.toString)))
? JSON.stringify(val, replacer, 2)
: String(val);
};
const replacer = (_key, val) => {
// can't use isRef here since @vue/shared has no deps
if (val && val.__v_isRef) {
return replacer(_key, val.value);
}
else if (isMap(val)) {
return {
[`Map(${val.size})`]: [...val.entries()].reduce((entries, [key, val]) => {
entries[`${key} =>`] = val;
return entries;
}, {})
};
}
else if (isSet(val)) {
return {
[`Set(${val.size})`]: [...val.values()]
};
}
else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {
return String(val);
}
return val;
};
const EMPTY_OBJ = {}; const EMPTY_OBJ = {};
const EMPTY_ARR = []; const EMPTY_ARR = [];
const NOOP = () => { }; const NOOP = () => {
/** };
* Always return false.
*/
const NO = () => false; const NO = () => false;
const onRE = /^on[^a-z]/; const onRE = /^on[^a-z]/;
const isOn = (key) => onRE.test(key); const isOn = (key) => onRE.test(key);
const isModelListener = (key) => key.startsWith('onUpdate:'); const isModelListener = (key) => key.startsWith("onUpdate:");
const extend = Object.assign; const extend = Object.assign;
const remove = (arr, el) => { const remove = (arr, el) => {
const i = arr.indexOf(el); const i = arr.indexOf(el);
if (i > -1) { if (i > -1) {
arr.splice(i, 1); arr.splice(i, 1);
} }
}; };
const hasOwnProperty = Object.prototype.hasOwnProperty; const hasOwnProperty = Object.prototype.hasOwnProperty;
const hasOwn = (val, key) => hasOwnProperty.call(val, key); const hasOwn = (val, key) => hasOwnProperty.call(val, key);
const isArray = Array.isArray; const isArray = Array.isArray;
const isMap = (val) => toTypeString(val) === '[object Map]'; const isMap = (val) => toTypeString(val) === "[object Map]";
const isSet = (val) => toTypeString(val) === '[object Set]'; const isSet = (val) => toTypeString(val) === "[object Set]";
const isDate = (val) => toTypeString(val) === '[object Date]'; const isDate = (val) => toTypeString(val) === "[object Date]";
const isFunction = (val) => typeof val === 'function'; const isRegExp = (val) => toTypeString(val) === "[object RegExp]";
const isString = (val) => typeof val === 'string'; const isFunction = (val) => typeof val === "function";
const isSymbol = (val) => typeof val === 'symbol'; const isString = (val) => typeof val === "string";
const isObject = (val) => val !== null && typeof val === 'object'; const isSymbol = (val) => typeof val === "symbol";
const isObject = (val) => val !== null && typeof val === "object";
const isPromise = (val) => { const isPromise = (val) => {
return isObject(val) && isFunction(val.then) && isFunction(val.catch); return isObject(val) && isFunction(val.then) && isFunction(val.catch);
}; };
const objectToString = Object.prototype.toString; const objectToString = Object.prototype.toString;
const toTypeString = (value) => objectToString.call(value); const toTypeString = (value) => objectToString.call(value);
const toRawType = (value) => { const toRawType = (value) => {
// extract "RawType" from strings like "[object RawType]" return toTypeString(value).slice(8, -1);
return toTypeString(value).slice(8, -1);
}; };
const isPlainObject = (val) => toTypeString(val) === '[object Object]'; const isPlainObject = (val) => toTypeString(val) === "[object Object]";
const isIntegerKey = (key) => isString(key) && const isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key;
key !== 'NaN' && const isReservedProp = /* @__PURE__ */ makeMap(
key[0] !== '-' && // the leading comma is intentional so empty string "" is also included
'' + parseInt(key, 10) === key; ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"
const isReservedProp = /*#__PURE__*/ makeMap( );
// the leading comma is intentional so empty string "" is also included const isBuiltInDirective = /* @__PURE__ */ makeMap(
',key,ref,ref_for,ref_key,' + "bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo"
'onVnodeBeforeMount,onVnodeMounted,' + );
'onVnodeBeforeUpdate,onVnodeUpdated,' +
'onVnodeBeforeUnmount,onVnodeUnmounted');
const isBuiltInDirective = /*#__PURE__*/ makeMap('bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo');
const cacheStringFunction = (fn) => { const cacheStringFunction = (fn) => {
const cache = Object.create(null); const cache = /* @__PURE__ */ Object.create(null);
return ((str) => { return (str) => {
const hit = cache[str]; const hit = cache[str];
return hit || (cache[str] = fn(str)); return hit || (cache[str] = fn(str));
}); };
}; };
const camelizeRE = /-(\w)/g; const camelizeRE = /-(\w)/g;
/**
* @private
*/
const camelize = cacheStringFunction((str) => { const camelize = cacheStringFunction((str) => {
return str.replace(camelizeRE, (_, c) => (c ? c.toUpperCase() : '')); return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : "");
}); });
const hyphenateRE = /\B([A-Z])/g; const hyphenateRE = /\B([A-Z])/g;
/** const hyphenate = cacheStringFunction(
* @private (str) => str.replace(hyphenateRE, "-$1").toLowerCase()
*/ );
const hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, '-$1').toLowerCase()); const capitalize = cacheStringFunction(
/** (str) => str.charAt(0).toUpperCase() + str.slice(1)
* @private );
*/ const toHandlerKey = cacheStringFunction(
const capitalize = cacheStringFunction((str) => str.charAt(0).toUpperCase() + str.slice(1)); (str) => str ? `on${capitalize(str)}` : ``
/** );
* @private
*/
const toHandlerKey = cacheStringFunction((str) => str ? `on${capitalize(str)}` : ``);
// compare whether a value has changed, accounting for NaN.
const hasChanged = (value, oldValue) => !Object.is(value, oldValue); const hasChanged = (value, oldValue) => !Object.is(value, oldValue);
const invokeArrayFns = (fns, arg) => { const invokeArrayFns = (fns, arg) => {
for (let i = 0; i < fns.length; i++) { for (let i = 0; i < fns.length; i++) {
fns[i](arg); fns[i](arg);
} }
}; };
const def = (obj, key, value) => { const def = (obj, key, value) => {
Object.defineProperty(obj, key, { Object.defineProperty(obj, key, {
configurable: true, configurable: true,
enumerable: false, enumerable: false,
value value
}); });
};
const looseToNumber = (val) => {
const n = parseFloat(val);
return isNaN(n) ? val : n;
}; };
const toNumber = (val) => { const toNumber = (val) => {
const n = parseFloat(val); const n = isString(val) ? Number(val) : NaN;
return isNaN(n) ? val : n; return isNaN(n) ? val : n;
}; };
let _globalThis; let _globalThis;
const getGlobalThis = () => { const getGlobalThis = () => {
return (_globalThis || return _globalThis || (_globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {});
(_globalThis =
typeof globalThis !== 'undefined'
? globalThis
: typeof self !== 'undefined'
? self
: typeof window !== 'undefined'
? window
: typeof global !== 'undefined'
? global
: {}));
}; };
const identRE = /^[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*$/; const identRE = /^[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*$/;
function genPropsAccessExp(name) { function genPropsAccessExp(name) {
return identRE.test(name) return identRE.test(name) ? `__props.${name}` : `__props[${JSON.stringify(name)}]`;
? `__props.${name}`
: `__props[${JSON.stringify(name)}]`;
} }
const PatchFlagNames = {
[1]: `TEXT`,
[2]: `CLASS`,
[4]: `STYLE`,
[8]: `PROPS`,
[16]: `FULL_PROPS`,
[32]: `HYDRATE_EVENTS`,
[64]: `STABLE_FRAGMENT`,
[128]: `KEYED_FRAGMENT`,
[256]: `UNKEYED_FRAGMENT`,
[512]: `NEED_PATCH`,
[1024]: `DYNAMIC_SLOTS`,
[2048]: `DEV_ROOT_FRAGMENT`,
[-1]: `HOISTED`,
[-2]: `BAIL`
};
const slotFlagsText = {
[1]: "STABLE",
[2]: "DYNAMIC",
[3]: "FORWARDED"
};
const GLOBALS_WHITE_LISTED = "Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console";
const isGloballyWhitelisted = /* @__PURE__ */ makeMap(GLOBALS_WHITE_LISTED);
const range = 2;
function generateCodeFrame(source, start = 0, end = source.length) {
let lines = source.split(/(\r?\n)/);
const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);
lines = lines.filter((_, idx) => idx % 2 === 0);
let count = 0;
const res = [];
for (let i = 0; i < lines.length; i++) {
count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0);
if (count >= start) {
for (let j = i - range; j <= i + range || end > count; j++) {
if (j < 0 || j >= lines.length)
continue;
const line = j + 1;
res.push(
`${line}${" ".repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}`
);
const lineLength = lines[j].length;
const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0;
if (j === i) {
const pad = start - (count - (lineLength + newLineSeqLength));
const length = Math.max(
1,
end > count ? lineLength - pad : end - start
);
res.push(` | ` + " ".repeat(pad) + "^".repeat(length));
} else if (j > i) {
if (end > count) {
const length = Math.max(Math.min(end - count, lineLength), 1);
res.push(` | ` + "^".repeat(length));
}
count += lineLength + newLineSeqLength;
}
}
break;
}
}
return res.join("\n");
}
function normalizeStyle(value) {
if (isArray(value)) {
const res = {};
for (let i = 0; i < value.length; i++) {
const item = value[i];
const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item);
if (normalized) {
for (const key in normalized) {
res[key] = normalized[key];
}
}
}
return res;
} else if (isString(value)) {
return value;
} else if (isObject(value)) {
return value;
}
}
const listDelimiterRE = /;(?![^(]*\))/g;
const propertyDelimiterRE = /:([^]+)/;
const styleCommentRE = /\/\*[^]*?\*\//g;
function parseStringStyle(cssText) {
const ret = {};
cssText.replace(styleCommentRE, "").split(listDelimiterRE).forEach((item) => {
if (item) {
const tmp = item.split(propertyDelimiterRE);
tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());
}
});
return ret;
}
function stringifyStyle(styles) {
let ret = "";
if (!styles || isString(styles)) {
return ret;
}
for (const key in styles) {
const value = styles[key];
const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);
if (isString(value) || typeof value === "number") {
ret += `${normalizedKey}:${value};`;
}
}
return ret;
}
function normalizeClass(value) {
let res = "";
if (isString(value)) {
res = value;
} else if (isArray(value)) {
for (let i = 0; i < value.length; i++) {
const normalized = normalizeClass(value[i]);
if (normalized) {
res += normalized + " ";
}
}
} else if (isObject(value)) {
for (const name in value) {
if (value[name]) {
res += name + " ";
}
}
}
return res.trim();
}
function normalizeProps(props) {
if (!props)
return null;
let { class: klass, style } = props;
if (klass && !isString(klass)) {
props.class = normalizeClass(klass);
}
if (style) {
props.style = normalizeStyle(style);
}
return props;
}
const HTML_TAGS = "html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot";
const SVG_TAGS = "svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view";
const VOID_TAGS = "area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr";
const isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS);
const isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS);
const isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS);
const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;
const isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);
const isBooleanAttr = /* @__PURE__ */ makeMap(
specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`
);
function includeBooleanAttr(value) {
return !!value || value === "";
}
const unsafeAttrCharRE = /[>/="'\u0009\u000a\u000c\u0020]/;
const attrValidationCache = {};
function isSSRSafeAttrName(name) {
if (attrValidationCache.hasOwnProperty(name)) {
return attrValidationCache[name];
}
const isUnsafe = unsafeAttrCharRE.test(name);
if (isUnsafe) {
console.error(`unsafe attribute name: ${name}`);
}
return attrValidationCache[name] = !isUnsafe;
}
const propsToAttrMap = {
acceptCharset: "accept-charset",
className: "class",
htmlFor: "for",
httpEquiv: "http-equiv"
};
const isKnownHtmlAttr = /* @__PURE__ */ makeMap(
`accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap`
);
const isKnownSvgAttr = /* @__PURE__ */ makeMap(
`xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`
);
const escapeRE = /["'&<>]/;
function escapeHtml(string) {
const str = "" + string;
const match = escapeRE.exec(str);
if (!match) {
return str;
}
let html = "";
let escaped;
let index;
let lastIndex = 0;
for (index = match.index; index < str.length; index++) {
switch (str.charCodeAt(index)) {
case 34:
escaped = "&quot;";
break;
case 38:
escaped = "&amp;";
break;
case 39:
escaped = "&#39;";
break;
case 60:
escaped = "&lt;";
break;
case 62:
escaped = "&gt;";
break;
default:
continue;
}
if (lastIndex !== index) {
html += str.slice(lastIndex, index);
}
lastIndex = index + 1;
html += escaped;
}
return lastIndex !== index ? html + str.slice(lastIndex, index) : html;
}
const commentStripRE = /^-?>|<!--|-->|--!>|<!-$/g;
function escapeHtmlComment(src) {
return src.replace(commentStripRE, "");
}
function looseCompareArrays(a, b) {
if (a.length !== b.length)
return false;
let equal = true;
for (let i = 0; equal && i < a.length; i++) {
equal = looseEqual(a[i], b[i]);
}
return equal;
}
function looseEqual(a, b) {
if (a === b)
return true;
let aValidType = isDate(a);
let bValidType = isDate(b);
if (aValidType || bValidType) {
return aValidType && bValidType ? a.getTime() === b.getTime() : false;
}
aValidType = isSymbol(a);
bValidType = isSymbol(b);
if (aValidType || bValidType) {
return a === b;
}
aValidType = isArray(a);
bValidType = isArray(b);
if (aValidType || bValidType) {
return aValidType && bValidType ? looseCompareArrays(a, b) : false;
}
aValidType = isObject(a);
bValidType = isObject(b);
if (aValidType || bValidType) {
if (!aValidType || !bValidType) {
return false;
}
const aKeysCount = Object.keys(a).length;
const bKeysCount = Object.keys(b).length;
if (aKeysCount !== bKeysCount) {
return false;
}
for (const key in a) {
const aHasKey = a.hasOwnProperty(key);
const bHasKey = b.hasOwnProperty(key);
if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) {
return false;
}
}
}
return String(a) === String(b);
}
function looseIndexOf(arr, val) {
return arr.findIndex((item) => looseEqual(item, val));
}
const toDisplayString = (val) => {
return isString(val) ? val : val == null ? "" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? JSON.stringify(val, replacer, 2) : String(val);
};
const replacer = (_key, val) => {
if (val && val.__v_isRef) {
return replacer(_key, val.value);
} else if (isMap(val)) {
return {
[`Map(${val.size})`]: [...val.entries()].reduce((entries, [key, val2]) => {
entries[`${key} =>`] = val2;
return entries;
}, {})
};
} else if (isSet(val)) {
return {
[`Set(${val.size})`]: [...val.values()]
};
} else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {
return String(val);
}
return val;
};
exports.EMPTY_ARR = EMPTY_ARR; exports.EMPTY_ARR = EMPTY_ARR;
exports.EMPTY_OBJ = EMPTY_OBJ; exports.EMPTY_OBJ = EMPTY_OBJ;
exports.NO = NO; exports.NO = NO;
@ -621,6 +444,7 @@ exports.isObject = isObject;
exports.isOn = isOn; exports.isOn = isOn;
exports.isPlainObject = isPlainObject; exports.isPlainObject = isPlainObject;
exports.isPromise = isPromise; exports.isPromise = isPromise;
exports.isRegExp = isRegExp;
exports.isReservedProp = isReservedProp; exports.isReservedProp = isReservedProp;
exports.isSSRSafeAttrName = isSSRSafeAttrName; exports.isSSRSafeAttrName = isSSRSafeAttrName;
exports.isSVGTag = isSVGTag; exports.isSVGTag = isSVGTag;
@ -631,6 +455,7 @@ exports.isSymbol = isSymbol;
exports.isVoidTag = isVoidTag; exports.isVoidTag = isVoidTag;
exports.looseEqual = looseEqual; exports.looseEqual = looseEqual;
exports.looseIndexOf = looseIndexOf; exports.looseIndexOf = looseIndexOf;
exports.looseToNumber = looseToNumber;
exports.makeMap = makeMap; exports.makeMap = makeMap;
exports.normalizeClass = normalizeClass; exports.normalizeClass = normalizeClass;
exports.normalizeProps = normalizeProps; exports.normalizeProps = normalizeProps;

View File

@ -1,351 +1,308 @@
/** /**
* @private * Make a map and return a function for checking if a key
*/ * is in that map.
export declare const camelize: (str: string) => string; * IMPORTANT: all calls of this function must be prefixed with
* \/\*#\_\_PURE\_\_\*\/
/** * So that rollup can tree-shake them if necessary.
* @private */
*/ export declare function makeMap(str: string, expectsLowerCase?: boolean): (key: string) => boolean;
export declare const capitalize: (str: string) => string;
export declare const EMPTY_OBJ: {
export declare const def: (obj: object, key: string | symbol, value: any) => void; readonly [key: string]: any;
};
export declare const EMPTY_ARR: readonly never[]; export declare const EMPTY_ARR: readonly never[];
export declare const NOOP: () => void;
export declare const EMPTY_OBJ: { /**
readonly [key: string]: any; * Always return false.
}; */
export declare const NO: () => boolean;
export declare function escapeHtml(string: unknown): string; export declare const isOn: (key: string) => boolean;
export declare const isModelListener: (key: string) => boolean;
export declare function escapeHtmlComment(src: string): string; export declare const extend: {
<T extends {}, U>(target: T, source: U): T & U;
export declare const extend: { <T_1 extends {}, U_1, V>(target: T_1, source1: U_1, source2: V): T_1 & U_1 & V;
<T extends {}, U>(target: T, source: U): T & U; <T_2 extends {}, U_2, V_1, W>(target: T_2, source1: U_2, source2: V_1, source3: W): T_2 & U_2 & V_1 & W;
<T_1 extends {}, U_1, V>(target: T_1, source1: U_1, source2: V): T_1 & U_1 & V; (target: object, ...sources: any[]): any;
<T_2 extends {}, U_2, V_1, W>(target: T_2, source1: U_2, source2: V_1, source3: W): T_2 & U_2 & V_1 & W; };
(target: object, ...sources: any[]): any; export declare const remove: <T>(arr: T[], el: T) => void;
}; export declare const hasOwn: (val: object, key: string | symbol) => key is never;
export declare const isArray: (arg: any) => arg is any[];
export declare function generateCodeFrame(source: string, start?: number, end?: number): string; export declare const isMap: (val: unknown) => val is Map<any, any>;
export declare const isSet: (val: unknown) => val is Set<any>;
export declare function genPropsAccessExp(name: string): string; export declare const isDate: (val: unknown) => val is Date;
export declare const isRegExp: (val: unknown) => val is RegExp;
export declare const getGlobalThis: () => any; export declare const isFunction: (val: unknown) => val is Function;
export declare const isString: (val: unknown) => val is string;
export declare const hasChanged: (value: any, oldValue: any) => boolean; export declare const isSymbol: (val: unknown) => val is symbol;
export declare const isObject: (val: unknown) => val is Record<any, any>;
export declare const hasOwn: (val: object, key: string | symbol) => key is never; export declare const isPromise: <T = any>(val: unknown) => val is Promise<T>;
export declare const objectToString: () => string;
/** export declare const toTypeString: (value: unknown) => string;
* @private export declare const toRawType: (value: unknown) => string;
*/ export declare const isPlainObject: (val: unknown) => val is object;
export declare const hyphenate: (str: string) => string; export declare const isIntegerKey: (key: unknown) => boolean;
export declare const isReservedProp: (key: string) => boolean;
export declare type IfAny<T, Y, N> = 0 extends 1 & T ? Y : N; export declare const isBuiltInDirective: (key: string) => boolean;
/**
/** * @private
* Boolean attributes should be included if the value is truthy or ''. */
* e.g. `<select multiple>` compiles to `{ multiple: '' }` export declare const camelize: (str: string) => string;
*/ /**
export declare function includeBooleanAttr(value: unknown): boolean; * @private
*/
export declare const invokeArrayFns: (fns: Function[], arg?: any) => void; export declare const hyphenate: (str: string) => string;
/**
export declare const isArray: (arg: any) => arg is any[]; * @private
*/
/** export declare const capitalize: (str: string) => string;
* The full list is needed during SSR to produce the correct initial markup. /**
*/ * @private
export declare const isBooleanAttr: (key: string) => boolean; */
export declare const toHandlerKey: (str: string) => string;
export declare const isBuiltInDirective: (key: string) => boolean; export declare const hasChanged: (value: any, oldValue: any) => boolean;
export declare const invokeArrayFns: (fns: Function[], arg?: any) => void;
export declare const isDate: (val: unknown) => val is Date; export declare const def: (obj: object, key: string | symbol, value: any) => void;
/**
export declare const isFunction: (val: unknown) => val is Function; * "123-foo" will be parsed to 123
* This is used for the .number modifier in v-model
export declare const isGloballyWhitelisted: (key: string) => boolean; */
export declare const looseToNumber: (val: any) => any;
/** /**
* Compiler only. * Only conerces number-like strings
* Do NOT use in runtime code paths unless behind `__DEV__` flag. * "123-foo" will be returned as-is
*/ */
export declare const isHTMLTag: (key: string) => boolean; export declare const toNumber: (val: any) => any;
export declare const getGlobalThis: () => any;
export declare const isIntegerKey: (key: unknown) => boolean; export declare function genPropsAccessExp(name: string): string;
/** /**
* Known attributes, this is used for stringification of runtime static nodes * Patch flags are optimization hints generated by the compiler.
* so that we don't stringify bindings that cannot be set from HTML. * when a block with dynamicChildren is encountered during diff, the algorithm
* Don't also forget to allow `data-*` and `aria-*`! * enters "optimized mode". In this mode, we know that the vdom is produced by
* Generated from https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes * a render function generated by the compiler, so the algorithm only needs to
*/ * handle updates explicitly marked by these patch flags.
export declare const isKnownHtmlAttr: (key: string) => boolean; *
* Patch flags can be combined using the | bitwise operator and can be checked
/** * using the & operator, e.g.
* Generated from https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute *
*/ * ```js
export declare const isKnownSvgAttr: (key: string) => boolean; * const flag = TEXT | CLASS
* if (flag & TEXT) { ... }
export declare const isMap: (val: unknown) => val is Map<any, any>; * ```
*
export declare const isModelListener: (key: string) => boolean; * Check the `patchElement` function in '../../runtime-core/src/renderer.ts' to see how the
* flags are handled during diff.
export declare const isObject: (val: unknown) => val is Record<any, any>; */
export declare const enum PatchFlags {
export declare const isOn: (key: string) => boolean; /**
* Indicates an element with dynamic textContent (children fast path)
export declare const isPlainObject: (val: unknown) => val is object; */
TEXT = 1,
export declare const isPromise: <T = any>(val: unknown) => val is Promise<T>; /**
* Indicates an element with dynamic class binding.
export declare const isReservedProp: (key: string) => boolean; */
CLASS = 2,
export declare const isSet: (val: unknown) => val is Set<any>; /**
* Indicates an element with dynamic style
export declare const isSpecialBooleanAttr: (key: string) => boolean; * The compiler pre-compiles static string styles into static objects
* + detects and hoists inline static objects
export declare function isSSRSafeAttrName(name: string): boolean; * e.g. `style="color: red"` and `:style="{ color: 'red' }"` both get hoisted
* as:
export declare const isString: (val: unknown) => val is string; * ```js
* const style = { color: 'red' }
/** * render() { return e('div', { style }) }
* Compiler only. * ```
* Do NOT use in runtime code paths unless behind `__DEV__` flag. */
*/ STYLE = 4,
export declare const isSVGTag: (key: string) => boolean; /**
* Indicates an element that has non-class/style dynamic props.
export declare const isSymbol: (val: unknown) => val is symbol; * Can also be on a component that has any dynamic props (includes
* class/style). when this flag is present, the vnode also has a dynamicProps
/** * array that contains the keys of the props that may change so the runtime
* Compiler only. * can diff them faster (without having to worry about removed props)
* Do NOT use in runtime code paths unless behind `__DEV__` flag. */
*/ PROPS = 8,
export declare const isVoidTag: (key: string) => boolean; /**
* Indicates an element with props with dynamic keys. When keys change, a full
export declare function looseEqual(a: any, b: any): boolean; * diff is always needed to remove the old key. This flag is mutually
* exclusive with CLASS, STYLE and PROPS.
export declare function looseIndexOf(arr: any[], val: any): number; */
FULL_PROPS = 16,
export declare type LooseRequired<T> = { /**
[P in keyof (T & Required<T>)]: T[P]; * Indicates an element with event listeners (which need to be attached
}; * during hydration)
*/
/** HYDRATE_EVENTS = 32,
* Make a map and return a function for checking if a key /**
* is in that map. * Indicates a fragment whose children order doesn't change.
* IMPORTANT: all calls of this function must be prefixed with */
* \/\*#\_\_PURE\_\_\*\/ STABLE_FRAGMENT = 64,
* So that rollup can tree-shake them if necessary. /**
*/ * Indicates a fragment with keyed or partially keyed children
export declare function makeMap(str: string, expectsLowerCase?: boolean): (key: string) => boolean; */
KEYED_FRAGMENT = 128,
/** /**
* Always return false. * Indicates a fragment with unkeyed children.
*/ */
export declare const NO: () => boolean; UNKEYED_FRAGMENT = 256,
/**
export declare const NOOP: () => void; * Indicates an element that only needs non-props patching, e.g. ref or
* directives (onVnodeXXX hooks). since every patched vnode checks for refs
export declare function normalizeClass(value: unknown): string; * and onVnodeXXX hooks, it simply marks the vnode so that a parent block
* will track it.
export declare type NormalizedStyle = Record<string, string | number>; */
NEED_PATCH = 512,
export declare function normalizeProps(props: Record<string, any> | null): Record<string, any> | null; /**
* Indicates a component with dynamic slots (e.g. slot that references a v-for
export declare function normalizeStyle(value: unknown): NormalizedStyle | string | undefined; * iterated value, or dynamic slot names).
* Components with this flag are always force updated.
export declare const objectToString: () => string; */
DYNAMIC_SLOTS = 1024,
export declare function parseStringStyle(cssText: string): NormalizedStyle; /**
* Indicates a fragment that was created only because the user has placed
/** * comments at the root level of a template. This is a dev-only flag since
* dev only flag -> name mapping * comments are stripped in production.
*/ */
export declare const PatchFlagNames: { DEV_ROOT_FRAGMENT = 2048,
[x: number]: string; /**
}; * SPECIAL FLAGS -------------------------------------------------------------
* Special flags are negative integers. They are never matched against using
/** * bitwise operators (bitwise matching should only happen in branches where
* Patch flags are optimization hints generated by the compiler. * patchFlag > 0), and are mutually exclusive. When checking for a special
* when a block with dynamicChildren is encountered during diff, the algorithm * flag, simply check patchFlag === FLAG.
* enters "optimized mode". In this mode, we know that the vdom is produced by */
* a render function generated by the compiler, so the algorithm only needs to /**
* handle updates explicitly marked by these patch flags. * Indicates a hoisted static vnode. This is a hint for hydration to skip
* * the entire sub tree since static content never needs to be updated.
* Patch flags can be combined using the | bitwise operator and can be checked */
* using the & operator, e.g. HOISTED = -1,
* /**
* ```js * A special flag that indicates that the diffing algorithm should bail out
* const flag = TEXT | CLASS * of optimized mode. For example, on block fragments created by renderSlot()
* if (flag & TEXT) { ... } * when encountering non-compiler generated slots (i.e. manually written
* ``` * render functions, which should always be fully diffed)
* * OR manually cloneVNodes
* Check the `patchElement` function in '../../runtime-core/src/renderer.ts' to see how the */
* flags are handled during diff. BAIL = -2
*/ }
export declare const enum PatchFlags { /**
/** * dev only flag -> name mapping
* Indicates an element with dynamic textContent (children fast path) */
*/ export declare const PatchFlagNames: Record<PatchFlags, string>;
TEXT = 1,
/** export declare const enum ShapeFlags {
* Indicates an element with dynamic class binding. ELEMENT = 1,
*/ FUNCTIONAL_COMPONENT = 2,
CLASS = 2, STATEFUL_COMPONENT = 4,
/** TEXT_CHILDREN = 8,
* Indicates an element with dynamic style ARRAY_CHILDREN = 16,
* The compiler pre-compiles static string styles into static objects SLOTS_CHILDREN = 32,
* + detects and hoists inline static objects TELEPORT = 64,
* e.g. `style="color: red"` and `:style="{ color: 'red' }"` both get hoisted SUSPENSE = 128,
* as: COMPONENT_SHOULD_KEEP_ALIVE = 256,
* ```js COMPONENT_KEPT_ALIVE = 512,
* const style = { color: 'red' } COMPONENT = 6
* render() { return e('div', { style }) } }
* ```
*/ export declare const enum SlotFlags {
STYLE = 4, /**
/** * Stable slots that only reference slot props or context state. The slot
* Indicates an element that has non-class/style dynamic props. * can fully capture its own dependencies so when passed down the parent won't
* Can also be on a component that has any dynamic props (includes * need to force the child to update.
* class/style). when this flag is present, the vnode also has a dynamicProps */
* array that contains the keys of the props that may change so the runtime STABLE = 1,
* can diff them faster (without having to worry about removed props) /**
*/ * Slots that reference scope variables (v-for or an outer slot prop), or
PROPS = 8, * has conditional structure (v-if, v-for). The parent will need to force
/** * the child to update because the slot does not fully capture its dependencies.
* Indicates an element with props with dynamic keys. When keys change, a full */
* diff is always needed to remove the old key. This flag is mutually DYNAMIC = 2,
* exclusive with CLASS, STYLE and PROPS. /**
*/ * `<slot/>` being forwarded into a child component. Whether the parent needs
FULL_PROPS = 16, * to update the child is dependent on what kind of slots the parent itself
/** * received. This has to be refined at runtime, when the child's vnode
* Indicates an element with event listeners (which need to be attached * is being created (in `normalizeChildren`)
* during hydration) */
*/ FORWARDED = 3
HYDRATE_EVENTS = 32, }
/** /**
* Indicates a fragment whose children order doesn't change. * Dev only
*/ */
STABLE_FRAGMENT = 64, export declare const slotFlagsText: {
/** 1: string;
* Indicates a fragment with keyed or partially keyed children 2: string;
*/ 3: string;
KEYED_FRAGMENT = 128, };
/**
* Indicates a fragment with unkeyed children. export declare const isGloballyWhitelisted: (key: string) => boolean;
*/
UNKEYED_FRAGMENT = 256, export declare function generateCodeFrame(source: string, start?: number, end?: number): string;
/**
* Indicates an element that only needs non-props patching, e.g. ref or export type NormalizedStyle = Record<string, string | number>;
* directives (onVnodeXXX hooks). since every patched vnode checks for refs export declare function normalizeStyle(value: unknown): NormalizedStyle | string | undefined;
* and onVnodeXXX hooks, it simply marks the vnode so that a parent block export declare function parseStringStyle(cssText: string): NormalizedStyle;
* will track it. export declare function stringifyStyle(styles: NormalizedStyle | string | undefined): string;
*/ export declare function normalizeClass(value: unknown): string;
NEED_PATCH = 512, export declare function normalizeProps(props: Record<string, any> | null): Record<string, any> | null;
/**
* Indicates a component with dynamic slots (e.g. slot that references a v-for /**
* iterated value, or dynamic slot names). * Compiler only.
* Components with this flag are always force updated. * Do NOT use in runtime code paths unless behind `__DEV__` flag.
*/ */
DYNAMIC_SLOTS = 1024, export declare const isHTMLTag: (key: string) => boolean;
/** /**
* Indicates a fragment that was created only because the user has placed * Compiler only.
* comments at the root level of a template. This is a dev-only flag since * Do NOT use in runtime code paths unless behind `__DEV__` flag.
* comments are stripped in production. */
*/ export declare const isSVGTag: (key: string) => boolean;
DEV_ROOT_FRAGMENT = 2048, /**
/** * Compiler only.
* SPECIAL FLAGS ------------------------------------------------------------- * Do NOT use in runtime code paths unless behind `__DEV__` flag.
* Special flags are negative integers. They are never matched against using */
* bitwise operators (bitwise matching should only happen in branches where export declare const isVoidTag: (key: string) => boolean;
* patchFlag > 0), and are mutually exclusive. When checking for a special
* flag, simply check patchFlag === FLAG. export declare const isSpecialBooleanAttr: (key: string) => boolean;
*/ /**
/** * The full list is needed during SSR to produce the correct initial markup.
* Indicates a hoisted static vnode. This is a hint for hydration to skip */
* the entire sub tree since static content never needs to be updated. export declare const isBooleanAttr: (key: string) => boolean;
*/ /**
HOISTED = -1, * Boolean attributes should be included if the value is truthy or ''.
/** * e.g. `<select multiple>` compiles to `{ multiple: '' }`
* A special flag that indicates that the diffing algorithm should bail out */
* of optimized mode. For example, on block fragments created by renderSlot() export declare function includeBooleanAttr(value: unknown): boolean;
* when encountering non-compiler generated slots (i.e. manually written export declare function isSSRSafeAttrName(name: string): boolean;
* render functions, which should always be fully diffed) export declare const propsToAttrMap: Record<string, string | undefined>;
* OR manually cloneVNodes /**
*/ * Known attributes, this is used for stringification of runtime static nodes
BAIL = -2 * so that we don't stringify bindings that cannot be set from HTML.
} * Don't also forget to allow `data-*` and `aria-*`!
* Generated from https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes
export declare const propsToAttrMap: Record<string, string | undefined>; */
export declare const isKnownHtmlAttr: (key: string) => boolean;
export declare const remove: <T>(arr: T[], el: T) => void; /**
* Generated from https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute
export declare const enum ShapeFlags { */
ELEMENT = 1, export declare const isKnownSvgAttr: (key: string) => boolean;
FUNCTIONAL_COMPONENT = 2,
STATEFUL_COMPONENT = 4, export declare function escapeHtml(string: unknown): string;
TEXT_CHILDREN = 8, export declare function escapeHtmlComment(src: string): string;
ARRAY_CHILDREN = 16,
SLOTS_CHILDREN = 32, export declare function looseEqual(a: any, b: any): boolean;
TELEPORT = 64, export declare function looseIndexOf(arr: any[], val: any): number;
SUSPENSE = 128,
COMPONENT_SHOULD_KEEP_ALIVE = 256, /**
COMPONENT_KEPT_ALIVE = 512, * For converting {{ interpolation }} values to displayed strings.
COMPONENT = 6 * @private
} */
export declare const toDisplayString: (val: unknown) => string;
export declare const enum SlotFlags {
/** export type Prettify<T> = {
* Stable slots that only reference slot props or context state. The slot [K in keyof T]: T[K];
* can fully capture its own dependencies so when passed down the parent won't } & {};
* need to force the child to update. export type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
*/ export type LooseRequired<T> = {
STABLE = 1, [P in keyof (T & Required<T>)]: T[P];
/** };
* Slots that reference scope variables (v-for or an outer slot prop), or export type IfAny<T, Y, N> = 0 extends 1 & T ? Y : N;
* has conditional structure (v-if, v-for). The parent will need to force
* the child to update because the slot does not fully capture its dependencies.
*/
DYNAMIC = 2,
/**
* `<slot/>` being forwarded into a child component. Whether the parent needs
* to update the child is dependent on what kind of slots the parent itself
* received. This has to be refined at runtime, when the child's vnode
* is being created (in `normalizeChildren`)
*/
FORWARDED = 3
}
/**
* Dev only
*/
export declare const slotFlagsText: {
1: string;
2: string;
3: string;
};
export declare function stringifyStyle(styles: NormalizedStyle | string | undefined): string;
/**
* For converting {{ interpolation }} values to displayed strings.
* @private
*/
export declare const toDisplayString: (val: unknown) => string;
/**
* @private
*/
export declare const toHandlerKey: (str: string) => string;
export declare const toNumber: (val: any) => any;
export declare const toRawType: (value: unknown) => string;
export declare const toTypeString: (value: unknown) => string;
export declare type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
export { }

View File

@ -1,587 +1,408 @@
/**
* Make a map and return a function for checking if a key
* is in that map.
* IMPORTANT: all calls of this function must be prefixed with
* \/\*#\_\_PURE\_\_\*\/
* So that rollup can tree-shake them if necessary.
*/
function makeMap(str, expectsLowerCase) { function makeMap(str, expectsLowerCase) {
const map = Object.create(null); const map = /* @__PURE__ */ Object.create(null);
const list = str.split(','); const list = str.split(",");
for (let i = 0; i < list.length; i++) { for (let i = 0; i < list.length; i++) {
map[list[i]] = true; map[list[i]] = true;
} }
return expectsLowerCase ? val => !!map[val.toLowerCase()] : val => !!map[val]; return expectsLowerCase ? (val) => !!map[val.toLowerCase()] : (val) => !!map[val];
} }
/** const EMPTY_OBJ = !!(process.env.NODE_ENV !== "production") ? Object.freeze({}) : {};
* dev only flag -> name mapping const EMPTY_ARR = !!(process.env.NODE_ENV !== "production") ? Object.freeze([]) : [];
*/ const NOOP = () => {
const PatchFlagNames = {
[1 /* PatchFlags.TEXT */]: `TEXT`,
[2 /* PatchFlags.CLASS */]: `CLASS`,
[4 /* PatchFlags.STYLE */]: `STYLE`,
[8 /* PatchFlags.PROPS */]: `PROPS`,
[16 /* PatchFlags.FULL_PROPS */]: `FULL_PROPS`,
[32 /* PatchFlags.HYDRATE_EVENTS */]: `HYDRATE_EVENTS`,
[64 /* PatchFlags.STABLE_FRAGMENT */]: `STABLE_FRAGMENT`,
[128 /* PatchFlags.KEYED_FRAGMENT */]: `KEYED_FRAGMENT`,
[256 /* PatchFlags.UNKEYED_FRAGMENT */]: `UNKEYED_FRAGMENT`,
[512 /* PatchFlags.NEED_PATCH */]: `NEED_PATCH`,
[1024 /* PatchFlags.DYNAMIC_SLOTS */]: `DYNAMIC_SLOTS`,
[2048 /* PatchFlags.DEV_ROOT_FRAGMENT */]: `DEV_ROOT_FRAGMENT`,
[-1 /* PatchFlags.HOISTED */]: `HOISTED`,
[-2 /* PatchFlags.BAIL */]: `BAIL`
}; };
/**
* Dev only
*/
const slotFlagsText = {
[1 /* SlotFlags.STABLE */]: 'STABLE',
[2 /* SlotFlags.DYNAMIC */]: 'DYNAMIC',
[3 /* SlotFlags.FORWARDED */]: 'FORWARDED'
};
const GLOBALS_WHITE_LISTED = 'Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,' +
'decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,' +
'Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt';
const isGloballyWhitelisted = /*#__PURE__*/ makeMap(GLOBALS_WHITE_LISTED);
const range = 2;
function generateCodeFrame(source, start = 0, end = source.length) {
// Split the content into individual lines but capture the newline sequence
// that separated each line. This is important because the actual sequence is
// needed to properly take into account the full line length for offset
// comparison
let lines = source.split(/(\r?\n)/);
// Separate the lines and newline sequences into separate arrays for easier referencing
const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);
lines = lines.filter((_, idx) => idx % 2 === 0);
let count = 0;
const res = [];
for (let i = 0; i < lines.length; i++) {
count +=
lines[i].length +
((newlineSequences[i] && newlineSequences[i].length) || 0);
if (count >= start) {
for (let j = i - range; j <= i + range || end > count; j++) {
if (j < 0 || j >= lines.length)
continue;
const line = j + 1;
res.push(`${line}${' '.repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}`);
const lineLength = lines[j].length;
const newLineSeqLength = (newlineSequences[j] && newlineSequences[j].length) || 0;
if (j === i) {
// push underline
const pad = start - (count - (lineLength + newLineSeqLength));
const length = Math.max(1, end > count ? lineLength - pad : end - start);
res.push(` | ` + ' '.repeat(pad) + '^'.repeat(length));
}
else if (j > i) {
if (end > count) {
const length = Math.max(Math.min(end - count, lineLength), 1);
res.push(` | ` + '^'.repeat(length));
}
count += lineLength + newLineSeqLength;
}
}
break;
}
}
return res.join('\n');
}
function normalizeStyle(value) {
if (isArray(value)) {
const res = {};
for (let i = 0; i < value.length; i++) {
const item = value[i];
const normalized = isString(item)
? parseStringStyle(item)
: normalizeStyle(item);
if (normalized) {
for (const key in normalized) {
res[key] = normalized[key];
}
}
}
return res;
}
else if (isString(value)) {
return value;
}
else if (isObject(value)) {
return value;
}
}
const listDelimiterRE = /;(?![^(]*\))/g;
const propertyDelimiterRE = /:([^]+)/;
const styleCommentRE = /\/\*.*?\*\//gs;
function parseStringStyle(cssText) {
const ret = {};
cssText
.replace(styleCommentRE, '')
.split(listDelimiterRE)
.forEach(item => {
if (item) {
const tmp = item.split(propertyDelimiterRE);
tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());
}
});
return ret;
}
function stringifyStyle(styles) {
let ret = '';
if (!styles || isString(styles)) {
return ret;
}
for (const key in styles) {
const value = styles[key];
const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);
if (isString(value) || typeof value === 'number') {
// only render valid values
ret += `${normalizedKey}:${value};`;
}
}
return ret;
}
function normalizeClass(value) {
let res = '';
if (isString(value)) {
res = value;
}
else if (isArray(value)) {
for (let i = 0; i < value.length; i++) {
const normalized = normalizeClass(value[i]);
if (normalized) {
res += normalized + ' ';
}
}
}
else if (isObject(value)) {
for (const name in value) {
if (value[name]) {
res += name + ' ';
}
}
}
return res.trim();
}
function normalizeProps(props) {
if (!props)
return null;
let { class: klass, style } = props;
if (klass && !isString(klass)) {
props.class = normalizeClass(klass);
}
if (style) {
props.style = normalizeStyle(style);
}
return props;
}
// These tag configs are shared between compiler-dom and runtime-dom, so they
// https://developer.mozilla.org/en-US/docs/Web/HTML/Element
const HTML_TAGS = 'html,body,base,head,link,meta,style,title,address,article,aside,footer,' +
'header,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,' +
'figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,' +
'data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,' +
'time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,' +
'canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,' +
'th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,' +
'option,output,progress,select,textarea,details,dialog,menu,' +
'summary,template,blockquote,iframe,tfoot';
// https://developer.mozilla.org/en-US/docs/Web/SVG/Element
const SVG_TAGS = 'svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,' +
'defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,' +
'feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,' +
'feDistanceLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,' +
'feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,' +
'fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,' +
'foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,' +
'mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,' +
'polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,' +
'text,textPath,title,tspan,unknown,use,view';
const VOID_TAGS = 'area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr';
/**
* Compiler only.
* Do NOT use in runtime code paths unless behind `(process.env.NODE_ENV !== 'production')` flag.
*/
const isHTMLTag = /*#__PURE__*/ makeMap(HTML_TAGS);
/**
* Compiler only.
* Do NOT use in runtime code paths unless behind `(process.env.NODE_ENV !== 'production')` flag.
*/
const isSVGTag = /*#__PURE__*/ makeMap(SVG_TAGS);
/**
* Compiler only.
* Do NOT use in runtime code paths unless behind `(process.env.NODE_ENV !== 'production')` flag.
*/
const isVoidTag = /*#__PURE__*/ makeMap(VOID_TAGS);
/**
* On the client we only need to offer special cases for boolean attributes that
* have different names from their corresponding dom properties:
* - itemscope -> N/A
* - allowfullscreen -> allowFullscreen
* - formnovalidate -> formNoValidate
* - ismap -> isMap
* - nomodule -> noModule
* - novalidate -> noValidate
* - readonly -> readOnly
*/
const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;
const isSpecialBooleanAttr = /*#__PURE__*/ makeMap(specialBooleanAttrs);
/**
* The full list is needed during SSR to produce the correct initial markup.
*/
const isBooleanAttr = /*#__PURE__*/ makeMap(specialBooleanAttrs +
`,async,autofocus,autoplay,controls,default,defer,disabled,hidden,` +
`loop,open,required,reversed,scoped,seamless,` +
`checked,muted,multiple,selected`);
/**
* Boolean attributes should be included if the value is truthy or ''.
* e.g. `<select multiple>` compiles to `{ multiple: '' }`
*/
function includeBooleanAttr(value) {
return !!value || value === '';
}
const unsafeAttrCharRE = /[>/="'\u0009\u000a\u000c\u0020]/;
const attrValidationCache = {};
function isSSRSafeAttrName(name) {
if (attrValidationCache.hasOwnProperty(name)) {
return attrValidationCache[name];
}
const isUnsafe = unsafeAttrCharRE.test(name);
if (isUnsafe) {
console.error(`unsafe attribute name: ${name}`);
}
return (attrValidationCache[name] = !isUnsafe);
}
const propsToAttrMap = {
acceptCharset: 'accept-charset',
className: 'class',
htmlFor: 'for',
httpEquiv: 'http-equiv'
};
/**
* Known attributes, this is used for stringification of runtime static nodes
* so that we don't stringify bindings that cannot be set from HTML.
* Don't also forget to allow `data-*` and `aria-*`!
* Generated from https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes
*/
const isKnownHtmlAttr = /*#__PURE__*/ makeMap(`accept,accept-charset,accesskey,action,align,allow,alt,async,` +
`autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,` +
`border,buffered,capture,challenge,charset,checked,cite,class,code,` +
`codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,` +
`coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,` +
`disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,` +
`formaction,formenctype,formmethod,formnovalidate,formtarget,headers,` +
`height,hidden,high,href,hreflang,http-equiv,icon,id,importance,integrity,` +
`ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,` +
`manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,` +
`open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,` +
`referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,` +
`selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,` +
`start,step,style,summary,tabindex,target,title,translate,type,usemap,` +
`value,width,wrap`);
/**
* Generated from https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute
*/
const isKnownSvgAttr = /*#__PURE__*/ makeMap(`xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,` +
`arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,` +
`baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,` +
`clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,` +
`color-interpolation-filters,color-profile,color-rendering,` +
`contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,` +
`descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,` +
`dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,` +
`fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,` +
`font-family,font-size,font-size-adjust,font-stretch,font-style,` +
`font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,` +
`glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,` +
`gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,` +
`horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,` +
`k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,` +
`lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,` +
`marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,` +
`mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,` +
`name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,` +
`overflow,overline-position,overline-thickness,panose-1,paint-order,path,` +
`pathLength,patternContentUnits,patternTransform,patternUnits,ping,` +
`pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,` +
`preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,` +
`rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,` +
`restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,` +
`specularConstant,specularExponent,speed,spreadMethod,startOffset,` +
`stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,` +
`strikethrough-position,strikethrough-thickness,string,stroke,` +
`stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,` +
`stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,` +
`systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,` +
`text-decoration,text-rendering,textLength,to,transform,transform-origin,` +
`type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,` +
`unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,` +
`v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,` +
`vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,` +
`writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,` +
`xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,` +
`xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`);
const escapeRE = /["'&<>]/;
function escapeHtml(string) {
const str = '' + string;
const match = escapeRE.exec(str);
if (!match) {
return str;
}
let html = '';
let escaped;
let index;
let lastIndex = 0;
for (index = match.index; index < str.length; index++) {
switch (str.charCodeAt(index)) {
case 34: // "
escaped = '&quot;';
break;
case 38: // &
escaped = '&amp;';
break;
case 39: // '
escaped = '&#39;';
break;
case 60: // <
escaped = '&lt;';
break;
case 62: // >
escaped = '&gt;';
break;
default:
continue;
}
if (lastIndex !== index) {
html += str.slice(lastIndex, index);
}
lastIndex = index + 1;
html += escaped;
}
return lastIndex !== index ? html + str.slice(lastIndex, index) : html;
}
// https://www.w3.org/TR/html52/syntax.html#comments
const commentStripRE = /^-?>|<!--|-->|--!>|<!-$/g;
function escapeHtmlComment(src) {
return src.replace(commentStripRE, '');
}
function looseCompareArrays(a, b) {
if (a.length !== b.length)
return false;
let equal = true;
for (let i = 0; equal && i < a.length; i++) {
equal = looseEqual(a[i], b[i]);
}
return equal;
}
function looseEqual(a, b) {
if (a === b)
return true;
let aValidType = isDate(a);
let bValidType = isDate(b);
if (aValidType || bValidType) {
return aValidType && bValidType ? a.getTime() === b.getTime() : false;
}
aValidType = isSymbol(a);
bValidType = isSymbol(b);
if (aValidType || bValidType) {
return a === b;
}
aValidType = isArray(a);
bValidType = isArray(b);
if (aValidType || bValidType) {
return aValidType && bValidType ? looseCompareArrays(a, b) : false;
}
aValidType = isObject(a);
bValidType = isObject(b);
if (aValidType || bValidType) {
/* istanbul ignore if: this if will probably never be called */
if (!aValidType || !bValidType) {
return false;
}
const aKeysCount = Object.keys(a).length;
const bKeysCount = Object.keys(b).length;
if (aKeysCount !== bKeysCount) {
return false;
}
for (const key in a) {
const aHasKey = a.hasOwnProperty(key);
const bHasKey = b.hasOwnProperty(key);
if ((aHasKey && !bHasKey) ||
(!aHasKey && bHasKey) ||
!looseEqual(a[key], b[key])) {
return false;
}
}
}
return String(a) === String(b);
}
function looseIndexOf(arr, val) {
return arr.findIndex(item => looseEqual(item, val));
}
/**
* For converting {{ interpolation }} values to displayed strings.
* @private
*/
const toDisplayString = (val) => {
return isString(val)
? val
: val == null
? ''
: isArray(val) ||
(isObject(val) &&
(val.toString === objectToString || !isFunction(val.toString)))
? JSON.stringify(val, replacer, 2)
: String(val);
};
const replacer = (_key, val) => {
// can't use isRef here since @vue/shared has no deps
if (val && val.__v_isRef) {
return replacer(_key, val.value);
}
else if (isMap(val)) {
return {
[`Map(${val.size})`]: [...val.entries()].reduce((entries, [key, val]) => {
entries[`${key} =>`] = val;
return entries;
}, {})
};
}
else if (isSet(val)) {
return {
[`Set(${val.size})`]: [...val.values()]
};
}
else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {
return String(val);
}
return val;
};
const EMPTY_OBJ = (process.env.NODE_ENV !== 'production')
? Object.freeze({})
: {};
const EMPTY_ARR = (process.env.NODE_ENV !== 'production') ? Object.freeze([]) : [];
const NOOP = () => { };
/**
* Always return false.
*/
const NO = () => false; const NO = () => false;
const onRE = /^on[^a-z]/; const onRE = /^on[^a-z]/;
const isOn = (key) => onRE.test(key); const isOn = (key) => onRE.test(key);
const isModelListener = (key) => key.startsWith('onUpdate:'); const isModelListener = (key) => key.startsWith("onUpdate:");
const extend = Object.assign; const extend = Object.assign;
const remove = (arr, el) => { const remove = (arr, el) => {
const i = arr.indexOf(el); const i = arr.indexOf(el);
if (i > -1) { if (i > -1) {
arr.splice(i, 1); arr.splice(i, 1);
} }
}; };
const hasOwnProperty = Object.prototype.hasOwnProperty; const hasOwnProperty = Object.prototype.hasOwnProperty;
const hasOwn = (val, key) => hasOwnProperty.call(val, key); const hasOwn = (val, key) => hasOwnProperty.call(val, key);
const isArray = Array.isArray; const isArray = Array.isArray;
const isMap = (val) => toTypeString(val) === '[object Map]'; const isMap = (val) => toTypeString(val) === "[object Map]";
const isSet = (val) => toTypeString(val) === '[object Set]'; const isSet = (val) => toTypeString(val) === "[object Set]";
const isDate = (val) => toTypeString(val) === '[object Date]'; const isDate = (val) => toTypeString(val) === "[object Date]";
const isFunction = (val) => typeof val === 'function'; const isRegExp = (val) => toTypeString(val) === "[object RegExp]";
const isString = (val) => typeof val === 'string'; const isFunction = (val) => typeof val === "function";
const isSymbol = (val) => typeof val === 'symbol'; const isString = (val) => typeof val === "string";
const isObject = (val) => val !== null && typeof val === 'object'; const isSymbol = (val) => typeof val === "symbol";
const isObject = (val) => val !== null && typeof val === "object";
const isPromise = (val) => { const isPromise = (val) => {
return isObject(val) && isFunction(val.then) && isFunction(val.catch); return isObject(val) && isFunction(val.then) && isFunction(val.catch);
}; };
const objectToString = Object.prototype.toString; const objectToString = Object.prototype.toString;
const toTypeString = (value) => objectToString.call(value); const toTypeString = (value) => objectToString.call(value);
const toRawType = (value) => { const toRawType = (value) => {
// extract "RawType" from strings like "[object RawType]" return toTypeString(value).slice(8, -1);
return toTypeString(value).slice(8, -1);
}; };
const isPlainObject = (val) => toTypeString(val) === '[object Object]'; const isPlainObject = (val) => toTypeString(val) === "[object Object]";
const isIntegerKey = (key) => isString(key) && const isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key;
key !== 'NaN' && const isReservedProp = /* @__PURE__ */ makeMap(
key[0] !== '-' && // the leading comma is intentional so empty string "" is also included
'' + parseInt(key, 10) === key; ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"
const isReservedProp = /*#__PURE__*/ makeMap( );
// the leading comma is intentional so empty string "" is also included const isBuiltInDirective = /* @__PURE__ */ makeMap(
',key,ref,ref_for,ref_key,' + "bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo"
'onVnodeBeforeMount,onVnodeMounted,' + );
'onVnodeBeforeUpdate,onVnodeUpdated,' +
'onVnodeBeforeUnmount,onVnodeUnmounted');
const isBuiltInDirective = /*#__PURE__*/ makeMap('bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo');
const cacheStringFunction = (fn) => { const cacheStringFunction = (fn) => {
const cache = Object.create(null); const cache = /* @__PURE__ */ Object.create(null);
return ((str) => { return (str) => {
const hit = cache[str]; const hit = cache[str];
return hit || (cache[str] = fn(str)); return hit || (cache[str] = fn(str));
}); };
}; };
const camelizeRE = /-(\w)/g; const camelizeRE = /-(\w)/g;
/**
* @private
*/
const camelize = cacheStringFunction((str) => { const camelize = cacheStringFunction((str) => {
return str.replace(camelizeRE, (_, c) => (c ? c.toUpperCase() : '')); return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : "");
}); });
const hyphenateRE = /\B([A-Z])/g; const hyphenateRE = /\B([A-Z])/g;
/** const hyphenate = cacheStringFunction(
* @private (str) => str.replace(hyphenateRE, "-$1").toLowerCase()
*/ );
const hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, '-$1').toLowerCase()); const capitalize = cacheStringFunction(
/** (str) => str.charAt(0).toUpperCase() + str.slice(1)
* @private );
*/ const toHandlerKey = cacheStringFunction(
const capitalize = cacheStringFunction((str) => str.charAt(0).toUpperCase() + str.slice(1)); (str) => str ? `on${capitalize(str)}` : ``
/** );
* @private
*/
const toHandlerKey = cacheStringFunction((str) => str ? `on${capitalize(str)}` : ``);
// compare whether a value has changed, accounting for NaN.
const hasChanged = (value, oldValue) => !Object.is(value, oldValue); const hasChanged = (value, oldValue) => !Object.is(value, oldValue);
const invokeArrayFns = (fns, arg) => { const invokeArrayFns = (fns, arg) => {
for (let i = 0; i < fns.length; i++) { for (let i = 0; i < fns.length; i++) {
fns[i](arg); fns[i](arg);
} }
}; };
const def = (obj, key, value) => { const def = (obj, key, value) => {
Object.defineProperty(obj, key, { Object.defineProperty(obj, key, {
configurable: true, configurable: true,
enumerable: false, enumerable: false,
value value
}); });
};
const looseToNumber = (val) => {
const n = parseFloat(val);
return isNaN(n) ? val : n;
}; };
const toNumber = (val) => { const toNumber = (val) => {
const n = parseFloat(val); const n = isString(val) ? Number(val) : NaN;
return isNaN(n) ? val : n; return isNaN(n) ? val : n;
}; };
let _globalThis; let _globalThis;
const getGlobalThis = () => { const getGlobalThis = () => {
return (_globalThis || return _globalThis || (_globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {});
(_globalThis =
typeof globalThis !== 'undefined'
? globalThis
: typeof self !== 'undefined'
? self
: typeof window !== 'undefined'
? window
: typeof global !== 'undefined'
? global
: {}));
}; };
const identRE = /^[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*$/; const identRE = /^[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*$/;
function genPropsAccessExp(name) { function genPropsAccessExp(name) {
return identRE.test(name) return identRE.test(name) ? `__props.${name}` : `__props[${JSON.stringify(name)}]`;
? `__props.${name}`
: `__props[${JSON.stringify(name)}]`;
} }
export { EMPTY_ARR, EMPTY_OBJ, NO, NOOP, PatchFlagNames, camelize, capitalize, def, escapeHtml, escapeHtmlComment, extend, genPropsAccessExp, generateCodeFrame, getGlobalThis, hasChanged, hasOwn, hyphenate, includeBooleanAttr, invokeArrayFns, isArray, isBooleanAttr, isBuiltInDirective, isDate, isFunction, isGloballyWhitelisted, isHTMLTag, isIntegerKey, isKnownHtmlAttr, isKnownSvgAttr, isMap, isModelListener, isObject, isOn, isPlainObject, isPromise, isReservedProp, isSSRSafeAttrName, isSVGTag, isSet, isSpecialBooleanAttr, isString, isSymbol, isVoidTag, looseEqual, looseIndexOf, makeMap, normalizeClass, normalizeProps, normalizeStyle, objectToString, parseStringStyle, propsToAttrMap, remove, slotFlagsText, stringifyStyle, toDisplayString, toHandlerKey, toNumber, toRawType, toTypeString }; const PatchFlagNames = {
[1]: `TEXT`,
[2]: `CLASS`,
[4]: `STYLE`,
[8]: `PROPS`,
[16]: `FULL_PROPS`,
[32]: `HYDRATE_EVENTS`,
[64]: `STABLE_FRAGMENT`,
[128]: `KEYED_FRAGMENT`,
[256]: `UNKEYED_FRAGMENT`,
[512]: `NEED_PATCH`,
[1024]: `DYNAMIC_SLOTS`,
[2048]: `DEV_ROOT_FRAGMENT`,
[-1]: `HOISTED`,
[-2]: `BAIL`
};
const slotFlagsText = {
[1]: "STABLE",
[2]: "DYNAMIC",
[3]: "FORWARDED"
};
const GLOBALS_WHITE_LISTED = "Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console";
const isGloballyWhitelisted = /* @__PURE__ */ makeMap(GLOBALS_WHITE_LISTED);
const range = 2;
function generateCodeFrame(source, start = 0, end = source.length) {
let lines = source.split(/(\r?\n)/);
const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);
lines = lines.filter((_, idx) => idx % 2 === 0);
let count = 0;
const res = [];
for (let i = 0; i < lines.length; i++) {
count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0);
if (count >= start) {
for (let j = i - range; j <= i + range || end > count; j++) {
if (j < 0 || j >= lines.length)
continue;
const line = j + 1;
res.push(
`${line}${" ".repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}`
);
const lineLength = lines[j].length;
const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0;
if (j === i) {
const pad = start - (count - (lineLength + newLineSeqLength));
const length = Math.max(
1,
end > count ? lineLength - pad : end - start
);
res.push(` | ` + " ".repeat(pad) + "^".repeat(length));
} else if (j > i) {
if (end > count) {
const length = Math.max(Math.min(end - count, lineLength), 1);
res.push(` | ` + "^".repeat(length));
}
count += lineLength + newLineSeqLength;
}
}
break;
}
}
return res.join("\n");
}
function normalizeStyle(value) {
if (isArray(value)) {
const res = {};
for (let i = 0; i < value.length; i++) {
const item = value[i];
const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item);
if (normalized) {
for (const key in normalized) {
res[key] = normalized[key];
}
}
}
return res;
} else if (isString(value)) {
return value;
} else if (isObject(value)) {
return value;
}
}
const listDelimiterRE = /;(?![^(]*\))/g;
const propertyDelimiterRE = /:([^]+)/;
const styleCommentRE = /\/\*[^]*?\*\//g;
function parseStringStyle(cssText) {
const ret = {};
cssText.replace(styleCommentRE, "").split(listDelimiterRE).forEach((item) => {
if (item) {
const tmp = item.split(propertyDelimiterRE);
tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());
}
});
return ret;
}
function stringifyStyle(styles) {
let ret = "";
if (!styles || isString(styles)) {
return ret;
}
for (const key in styles) {
const value = styles[key];
const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);
if (isString(value) || typeof value === "number") {
ret += `${normalizedKey}:${value};`;
}
}
return ret;
}
function normalizeClass(value) {
let res = "";
if (isString(value)) {
res = value;
} else if (isArray(value)) {
for (let i = 0; i < value.length; i++) {
const normalized = normalizeClass(value[i]);
if (normalized) {
res += normalized + " ";
}
}
} else if (isObject(value)) {
for (const name in value) {
if (value[name]) {
res += name + " ";
}
}
}
return res.trim();
}
function normalizeProps(props) {
if (!props)
return null;
let { class: klass, style } = props;
if (klass && !isString(klass)) {
props.class = normalizeClass(klass);
}
if (style) {
props.style = normalizeStyle(style);
}
return props;
}
const HTML_TAGS = "html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot";
const SVG_TAGS = "svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view";
const VOID_TAGS = "area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr";
const isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS);
const isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS);
const isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS);
const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;
const isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);
const isBooleanAttr = /* @__PURE__ */ makeMap(
specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`
);
function includeBooleanAttr(value) {
return !!value || value === "";
}
const unsafeAttrCharRE = /[>/="'\u0009\u000a\u000c\u0020]/;
const attrValidationCache = {};
function isSSRSafeAttrName(name) {
if (attrValidationCache.hasOwnProperty(name)) {
return attrValidationCache[name];
}
const isUnsafe = unsafeAttrCharRE.test(name);
if (isUnsafe) {
console.error(`unsafe attribute name: ${name}`);
}
return attrValidationCache[name] = !isUnsafe;
}
const propsToAttrMap = {
acceptCharset: "accept-charset",
className: "class",
htmlFor: "for",
httpEquiv: "http-equiv"
};
const isKnownHtmlAttr = /* @__PURE__ */ makeMap(
`accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap`
);
const isKnownSvgAttr = /* @__PURE__ */ makeMap(
`xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`
);
const escapeRE = /["'&<>]/;
function escapeHtml(string) {
const str = "" + string;
const match = escapeRE.exec(str);
if (!match) {
return str;
}
let html = "";
let escaped;
let index;
let lastIndex = 0;
for (index = match.index; index < str.length; index++) {
switch (str.charCodeAt(index)) {
case 34:
escaped = "&quot;";
break;
case 38:
escaped = "&amp;";
break;
case 39:
escaped = "&#39;";
break;
case 60:
escaped = "&lt;";
break;
case 62:
escaped = "&gt;";
break;
default:
continue;
}
if (lastIndex !== index) {
html += str.slice(lastIndex, index);
}
lastIndex = index + 1;
html += escaped;
}
return lastIndex !== index ? html + str.slice(lastIndex, index) : html;
}
const commentStripRE = /^-?>|<!--|-->|--!>|<!-$/g;
function escapeHtmlComment(src) {
return src.replace(commentStripRE, "");
}
function looseCompareArrays(a, b) {
if (a.length !== b.length)
return false;
let equal = true;
for (let i = 0; equal && i < a.length; i++) {
equal = looseEqual(a[i], b[i]);
}
return equal;
}
function looseEqual(a, b) {
if (a === b)
return true;
let aValidType = isDate(a);
let bValidType = isDate(b);
if (aValidType || bValidType) {
return aValidType && bValidType ? a.getTime() === b.getTime() : false;
}
aValidType = isSymbol(a);
bValidType = isSymbol(b);
if (aValidType || bValidType) {
return a === b;
}
aValidType = isArray(a);
bValidType = isArray(b);
if (aValidType || bValidType) {
return aValidType && bValidType ? looseCompareArrays(a, b) : false;
}
aValidType = isObject(a);
bValidType = isObject(b);
if (aValidType || bValidType) {
if (!aValidType || !bValidType) {
return false;
}
const aKeysCount = Object.keys(a).length;
const bKeysCount = Object.keys(b).length;
if (aKeysCount !== bKeysCount) {
return false;
}
for (const key in a) {
const aHasKey = a.hasOwnProperty(key);
const bHasKey = b.hasOwnProperty(key);
if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) {
return false;
}
}
}
return String(a) === String(b);
}
function looseIndexOf(arr, val) {
return arr.findIndex((item) => looseEqual(item, val));
}
const toDisplayString = (val) => {
return isString(val) ? val : val == null ? "" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? JSON.stringify(val, replacer, 2) : String(val);
};
const replacer = (_key, val) => {
if (val && val.__v_isRef) {
return replacer(_key, val.value);
} else if (isMap(val)) {
return {
[`Map(${val.size})`]: [...val.entries()].reduce((entries, [key, val2]) => {
entries[`${key} =>`] = val2;
return entries;
}, {})
};
} else if (isSet(val)) {
return {
[`Set(${val.size})`]: [...val.values()]
};
} else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {
return String(val);
}
return val;
};
export { EMPTY_ARR, EMPTY_OBJ, NO, NOOP, PatchFlagNames, camelize, capitalize, def, escapeHtml, escapeHtmlComment, extend, genPropsAccessExp, generateCodeFrame, getGlobalThis, hasChanged, hasOwn, hyphenate, includeBooleanAttr, invokeArrayFns, isArray, isBooleanAttr, isBuiltInDirective, isDate, isFunction, isGloballyWhitelisted, isHTMLTag, isIntegerKey, isKnownHtmlAttr, isKnownSvgAttr, isMap, isModelListener, isObject, isOn, isPlainObject, isPromise, isRegExp, isReservedProp, isSSRSafeAttrName, isSVGTag, isSet, isSpecialBooleanAttr, isString, isSymbol, isVoidTag, looseEqual, looseIndexOf, looseToNumber, makeMap, normalizeClass, normalizeProps, normalizeStyle, objectToString, parseStringStyle, propsToAttrMap, remove, slotFlagsText, stringifyStyle, toDisplayString, toHandlerKey, toNumber, toRawType, toTypeString };

View File

@ -1,6 +1,6 @@
{ {
"name": "@vue/shared", "name": "@vue/shared",
"version": "3.2.45", "version": "3.3.4",
"description": "internal utils shared across @vue packages", "description": "internal utils shared across @vue packages",
"main": "index.js", "main": "index.js",
"module": "dist/shared.esm-bundler.js", "module": "dist/shared.esm-bundler.js",
@ -30,4 +30,4 @@
"url": "https://github.com/vuejs/core/issues" "url": "https://github.com/vuejs/core/issues"
}, },
"homepage": "https://github.com/vuejs/core/tree/main/packages/shared#readme" "homepage": "https://github.com/vuejs/core/tree/main/packages/shared#readme"
} }

View File

@ -1,5 +1,18 @@
# Changelog # Changelog
## v15.3.0
- Added support for smart layer puppet filter (`placedLayer.filter`)
## v15.2.0
- Added handling missing `font` in text layer style by assuming first font on the list
## v15.1.0
- Added support for float color in effects, new color type was added
```ts
export type FRGB = { fr: number; fg: number; fb: number; }; // values from 0 to 1 (can be above 1)
```
- Changed `time` field on `LinkedFile` from `Date` to `string` type
## v15.0.0 ## v15.0.0
- Added support for frame and timeline animations - Added support for frame and timeline animations

View File

@ -686,11 +686,12 @@ Many fields in PSD file support passing color in different color formats (RGBA,
```ts ```ts
type RGBA = { r: number; g: number; b: number; a: number; }; // values from 0 to 255 type RGBA = { r: number; g: number; b: number; a: number; }; // values from 0 to 255
type RGB = { r: number; g: number; b: number; }; // values from 0 to 255 type RGB = { r: number; g: number; b: number; }; // values from 0 to 255
type FRGB = { fr: number; fg: number; fb: number; }; // values from 0 to 1 (can be above 1)
type HSB = { h: number; s: number; b: number; }; // values from 0 to 1 type HSB = { h: number; s: number; b: number; }; // values from 0 to 1
type CMYK = { c: number; m: number; y: number; k: number; }; // values from 0 to 255 type CMYK = { c: number; m: number; y: number; k: number; }; // values from 0 to 255
type LAB = { l: number; a: number; b: number; }; // values `l` from 0 to 1; `a` and `b` from -1 to 1 type LAB = { l: number; a: number; b: number; }; // values `l` from 0 to 1; `a` and `b` from -1 to 1
type Grayscale = { k: number }; // values from 0 to 255 type Grayscale = { k: number }; // values from 0 to 255
type Color = RGBA | RGB | HSB | CMYK | LAB | Grayscale; type Color = RGBA | RGB | FRGB | HSB | CMYK | LAB | Grayscale;
``` ```
When you want to set field with a `Color` type, it's pretty straightforward, you can just choose any of the formats you like and set it on the field: When you want to set field with a `Color` type, it's pretty straightforward, you can just choose any of the formats you like and set it on the field:
@ -712,6 +713,8 @@ if ('l' in color) {
// color is Grayscale // color is Grayscale
} else if ('a' in color) { } else if ('a' in color) {
// color is RGBA // color is RGBA
} else if ('rf' in color) {
// color is FRGB
} else { } else {
// color is RGB // color is RGB
} }

View File

@ -1,5 +1,3 @@
- remove gulp
- can we remove sectionDivider property ? - can we remove sectionDivider property ?
- can we remove nameSource property ? - can we remove nameSource property ?

View File

@ -0,0 +1,3 @@
const fs = require('fs');
fs.rmSync('dist', { recursive: true, force: true });
fs.rmSync('dist-es', { recursive: true, force: true });

View File

@ -1,132 +1,132 @@
import { BlendMode, PatternInfo } from './psd'; import { BlendMode, PatternInfo } from './psd';
export interface Abr { export interface Abr {
brushes: Brush[]; brushes: Brush[];
samples: SampleInfo[]; samples: SampleInfo[];
patterns: PatternInfo[]; patterns: PatternInfo[];
} }
export interface SampleInfo { export interface SampleInfo {
id: string; id: string;
bounds: { bounds: {
x: number; x: number;
y: number; y: number;
w: number; w: number;
h: number; h: number;
}; };
alpha: Uint8Array; alpha: Uint8Array;
} }
export interface BrushDynamics { export interface BrushDynamics {
control: 'off' | 'fade' | 'pen pressure' | 'pen tilt' | 'stylus wheel' | 'initial direction' | 'direction' | 'initial rotation' | 'rotation'; control: 'off' | 'fade' | 'pen pressure' | 'pen tilt' | 'stylus wheel' | 'initial direction' | 'direction' | 'initial rotation' | 'rotation';
steps: number; steps: number;
jitter: number; jitter: number;
minimum: number; minimum: number;
} }
export interface BrushShape { export interface BrushShape {
name?: string; name?: string;
size: number; size: number;
angle: number; angle: number;
roundness: number; roundness: number;
hardness?: number; hardness?: number;
spacingOn: boolean; spacingOn: boolean;
spacing: number; spacing: number;
flipX: boolean; flipX: boolean;
flipY: boolean; flipY: boolean;
sampledData?: string; sampledData?: string;
} }
export interface Brush { export interface Brush {
name: string; name: string;
shape: BrushShape; shape: BrushShape;
shapeDynamics?: { shapeDynamics?: {
sizeDynamics: BrushDynamics; sizeDynamics: BrushDynamics;
minimumDiameter: number; minimumDiameter: number;
tiltScale: number; tiltScale: number;
angleDynamics: BrushDynamics; angleDynamics: BrushDynamics;
roundnessDynamics: BrushDynamics; roundnessDynamics: BrushDynamics;
minimumRoundness: number; minimumRoundness: number;
flipX: boolean; flipX: boolean;
flipY: boolean; flipY: boolean;
brushProjection: boolean; brushProjection: boolean;
}; };
scatter?: { scatter?: {
bothAxes: boolean; bothAxes: boolean;
scatterDynamics: BrushDynamics; scatterDynamics: BrushDynamics;
countDynamics: BrushDynamics; countDynamics: BrushDynamics;
count: number; count: number;
}; };
texture?: { texture?: {
id: string; id: string;
name: string; name: string;
invert: boolean; invert: boolean;
scale: number; scale: number;
brightness: number; brightness: number;
contrast: number; contrast: number;
blendMode: BlendMode; blendMode: BlendMode;
depth: number; depth: number;
depthMinimum: number; depthMinimum: number;
depthDynamics: BrushDynamics; depthDynamics: BrushDynamics;
}; };
dualBrush?: { dualBrush?: {
flip: boolean; flip: boolean;
shape: BrushShape; shape: BrushShape;
blendMode: BlendMode; blendMode: BlendMode;
useScatter: boolean; useScatter: boolean;
spacing: number; spacing: number;
count: number; count: number;
bothAxes: boolean; bothAxes: boolean;
countDynamics: BrushDynamics; countDynamics: BrushDynamics;
scatterDynamics: BrushDynamics; scatterDynamics: BrushDynamics;
}; };
colorDynamics?: { colorDynamics?: {
foregroundBackground: BrushDynamics; foregroundBackground: BrushDynamics;
hue: number; hue: number;
saturation: number; saturation: number;
brightness: number; brightness: number;
purity: number; purity: number;
perTip: boolean; perTip: boolean;
}; };
transfer?: { transfer?: {
flowDynamics: BrushDynamics; flowDynamics: BrushDynamics;
opacityDynamics: BrushDynamics; opacityDynamics: BrushDynamics;
wetnessDynamics: BrushDynamics; wetnessDynamics: BrushDynamics;
mixDynamics: BrushDynamics; mixDynamics: BrushDynamics;
}; };
brushPose?: { brushPose?: {
overrideAngle: boolean; overrideAngle: boolean;
overrideTiltX: boolean; overrideTiltX: boolean;
overrideTiltY: boolean; overrideTiltY: boolean;
overridePressure: boolean; overridePressure: boolean;
pressure: number; pressure: number;
tiltX: number; tiltX: number;
tiltY: number; tiltY: number;
angle: number; angle: number;
}; };
noise: boolean; noise: boolean;
wetEdges: boolean; wetEdges: boolean;
protectTexture?: boolean; protectTexture?: boolean;
spacing: number; spacing: number;
brushGroup?: undefined; brushGroup?: undefined;
interpretation?: boolean; interpretation?: boolean;
useBrushSize: boolean; useBrushSize: boolean;
toolOptions?: { toolOptions?: {
brushPreset: boolean; brushPreset: boolean;
flow: number; flow: number;
smooth: number; smooth: number;
mode: BlendMode; mode: BlendMode;
opacity: number; opacity: number;
smoothing: boolean; smoothing: boolean;
smoothingValue: number; smoothingValue: number;
smoothingRadiusMode: boolean; smoothingRadiusMode: boolean;
smoothingCatchup: boolean; smoothingCatchup: boolean;
smoothingCatchupAtEnd: boolean; smoothingCatchupAtEnd: boolean;
smoothingZoomCompensation: boolean; smoothingZoomCompensation: boolean;
pressureSmoothing: boolean; pressureSmoothing: boolean;
usePressureOverridesSize: boolean; usePressureOverridesSize: boolean;
usePressureOverridesOpacity: boolean; usePressureOverridesOpacity: boolean;
useLegacy: boolean; useLegacy: boolean;
flowDynamics?: BrushDynamics; flowDynamics?: BrushDynamics;
opacityDynamics?: BrushDynamics; opacityDynamics?: BrushDynamics;
sizeDynamics?: BrushDynamics; sizeDynamics?: BrushDynamics;
}; };
} }
export declare function readAbr(buffer: ArrayBufferView, options?: { export declare function readAbr(buffer: ArrayBufferView, options?: {
logMissingFeatures?: boolean; logMissingFeatures?: boolean;
}): Abr; }): Abr;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,25 +1,25 @@
import { LayerAdditionalInfo, BezierPath, Psd, ReadOptions, WriteOptions, BooleanOperation, LayerEffectsInfo, LayerVectorMask } from './psd'; import { LayerAdditionalInfo, BezierPath, Psd, ReadOptions, WriteOptions, BooleanOperation, LayerEffectsInfo, LayerVectorMask } from './psd';
import { PsdReader } from './psdReader'; import { PsdReader } from './psdReader';
import { PsdWriter } from './psdWriter'; import { PsdWriter } from './psdWriter';
export interface ExtendedWriteOptions extends WriteOptions { export interface ExtendedWriteOptions extends WriteOptions {
layerIds: Set<number>; layerIds: Set<number>;
layerToId: Map<any, number>; layerToId: Map<any, number>;
} }
declare type HasMethod = (target: LayerAdditionalInfo) => boolean; type HasMethod = (target: LayerAdditionalInfo) => boolean;
declare type ReadMethod = (reader: PsdReader, target: LayerAdditionalInfo, left: () => number, psd: Psd, options: ReadOptions) => void; type ReadMethod = (reader: PsdReader, target: LayerAdditionalInfo, left: () => number, psd: Psd, options: ReadOptions) => void;
declare type WriteMethod = (writer: PsdWriter, target: LayerAdditionalInfo, psd: Psd, options: ExtendedWriteOptions) => void; type WriteMethod = (writer: PsdWriter, target: LayerAdditionalInfo, psd: Psd, options: ExtendedWriteOptions) => void;
export interface InfoHandler { export interface InfoHandler {
key: string; key: string;
has: HasMethod; has: HasMethod;
read: ReadMethod; read: ReadMethod;
write: WriteMethod; write: WriteMethod;
} }
export declare const infoHandlers: InfoHandler[]; export declare const infoHandlers: InfoHandler[];
export declare const infoHandlersMap: { export declare const infoHandlersMap: {
[key: string]: InfoHandler; [key: string]: InfoHandler;
}; };
export declare function readBezierKnot(reader: PsdReader, width: number, height: number): number[]; export declare function readBezierKnot(reader: PsdReader, width: number, height: number): number[];
export declare const booleanOperations: BooleanOperation[]; export declare const booleanOperations: BooleanOperation[];
export declare function readVectorMask(reader: PsdReader, vectorMask: LayerVectorMask, width: number, height: number, size: number): BezierPath[]; export declare function readVectorMask(reader: PsdReader, vectorMask: LayerVectorMask, width: number, height: number, size: number): BezierPath[];
export declare function hasMultiEffects(effects: LayerEffectsInfo): boolean; export declare function hasMultiEffects(effects: LayerEffectsInfo): boolean;
export {}; export {};

Some files were not shown because too many files have changed in this diff Show More