flow like the river

This commit is contained in:
root 2025-11-07 00:06:12 +01:00
commit 013fe673f3
42435 changed files with 5764238 additions and 0 deletions

21
BACK_BACK/node_modules/parcel-bundler/LICENSE generated vendored Executable file
View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2017-present Devon Govett
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

129
BACK_BACK/node_modules/parcel-bundler/README.md generated vendored Executable file
View file

@ -0,0 +1,129 @@
<p align="center">
<a href="https://parceljs.org/" target="_blank">
<img alt="Parcel" src="https://user-images.githubusercontent.com/19409/31321658-f6aed0f2-ac3d-11e7-8100-1587e676e0ec.png" width="749">
</a>
</p>
[![Backers on Open Collective](https://opencollective.com/parcel/backers/badge.svg)](#backers) [![Sponsors on Open Collective](https://opencollective.com/parcel/sponsors/badge.svg)](#sponsors)
[![Build Status](https://dev.azure.com/devongovett/devongovett/_apis/build/status/parcel-bundler.parcel?branchName=master)](https://dev.azure.com/devongovett/devongovett/_build/latest?definitionId=1)
[![Coverage](https://img.shields.io/codecov/c/github/parcel-bundler/parcel/master.svg)](https://codecov.io/github/parcel-bundler/parcel/)
[![David Dependency Status](https://david-dm.org/parcel-bundler/parcel.svg)](https://david-dm.org/parcel-bundler/parcel)
[![npm package](https://img.shields.io/npm/v/parcel-bundler.svg)](https://www.npmjs.com/package/parcel-bundler)
[![npm package](https://img.shields.io/npm/dm/parcel-bundler.svg)](https://www.npmjs.com/package/parcel-bundler)
[![Join the community on Spectrum](https://withspectrum.github.io/badge/badge.svg)](https://spectrum.chat/parcel)
[![Twitter Follow](https://img.shields.io/twitter/follow/parceljs.svg?style=social)](https://twitter.com/parceljs)
## Features
- 🚀 **Blazing fast** bundle times - multicore compilation, and a filesystem cache for fast rebuilds even after a restart.
- 📦 Out of the box support for JS, CSS, HTML, file assets, and more - **no plugins to install**.
- 🐠 **Automatically transforms modules** using Babel, PostCSS, and PostHTML when needed - even `node_modules`.
- ✂️ Zero configuration **code splitting** using dynamic `import()` statements.
- 🔥 Built in support for **hot module replacement**
- 🚨 Friendly error logging experience - syntax highlighted code frames help pinpoint the problem.
## Getting started
1. Install with yarn:
```shell
yarn global add parcel-bundler
```
or with npm:
```shell
npm install -g parcel-bundler
```
2. Parcel can take any type of file as an entry point, but a HTML or JavaScript file is a good place to start. If you link your main JavaScript file in the HTML using a relative path, Parcel will also process it for you, and replace the reference with a URL to the output file.
```html
<html>
<body>
<script src="./index.js"></script>
</body>
</html>
```
3. Parcel has a development server built in which will automatically rebuild your app as you change files and supports hot module replacement for fast development. Just point it at your entry file:
```shell
parcel index.html
```
4. Now open http://localhost:1234/ in your browser. If needed, you can also override the default port with the `-p` option. Add `--open` to automatically open a browser.
See [parceljs.org](https://parceljs.org) for more documentation!
## Benchmarks
Based on a reasonably sized app, containing 1726 modules, 6.5M uncompressed. Built on a 2016 MacBook Pro with 4 physical CPUs.
| Bundler | Time |
| ----------------------- | --------- |
| browserify       | 22.98s |
| webpack           | 20.71s |
| **parcel** | **9.98s** |
| **parcel - with cache** | **2.64s** |
## Why parcel?
There are many web application bundlers out there with huge adoption, including webpack and browserify. So, why do we need another one? The main reasons are around developer experience.
Many bundlers are built around configuration and plugins, and it is not uncommon to see applications with upwards of 500 lines of configuration just to get things working. This configuration is not just tedious and time consuming, but is also hard to get right and must be duplicated for each application. Oftentimes, this can lead to sub-optimized apps shipping to production. `parcel` is designed to need zero configuration: just point it at the entry point of your application, and it does the right thing.
Existing bundlers are also _very_ slow. Large applications with lots of files and many dependencies can take minutes to build, which is especially painful during development, when things change all the time. File watchers can help with rebuilds, but the initial launch is often still very slow.
`parcel` utilizes worker processes to compile your code in parallel, utilizing modern multicore processors. This results in a huge boost in speed for initial builds. It also has a file system cache, which saves the compiled results per file, for even faster subsequent startups.
Finally, existing bundlers are built around string loaders/transforms, where the transform takes in a string, parses it, does some transformation, and generates code again. Oftentimes, this ends up causing many parses and code generation runs on a single file, which is inefficient. Instead, `parcel`'s transforms work on ASTs, so that there is one parse, many transforms, and one code generation per file.
## How it works
`parcel` transforms a tree of assets into a tree of bundles. Many other bundlers are fundamentally based around JavaScript assets, with other formats tacked on - for example, by default inlined as strings into JS files. `parcel` is file-type agnostic - it will work with any type of assets the way you'd expect, with no configuration.
`parcel` takes as input a single entry asset, which could be any file type: JS, HTML, CSS, image, etc. There are various asset types defined in `parcel` which know how to handle specific file types. The assets are parsed, their dependencies are extracted, and they are transformed to their final compiled form. This creates a tree of assets.
Once the asset tree has been constructed, the assets are placed into a bundle tree. A bundle is created for the entry asset, and child bundles are created for dynamic imports, which cause code splitting to occur. Child bundles are also created when assets of a different type are imported. For example, if you imported a CSS file from JavaScript, it would be placed into a sibling bundle in correlation to the associated JavaScript file. If an asset is required in more than one bundle, it is hoisted up to the nearest common ancestor in the bundle tree, so it is not included more than once.
After the bundle tree is constructed, each bundle is written to a file by a packager specific to the file type. The packagers know how to combine the code from each asset together into the final file that is loaded by a browser.
## Community
All feedback and suggestions are welcome!
- 💬 Join the community on [Spectrum](https://spectrum.chat/parcel)
- 📣 Stay up to date on new features and announcements on [@parceljs](https://twitter.com/parceljs).
## Contributors
This project exists thanks to all the people who contribute. [[Contribute]](CONTRIBUTING.md).
<a href="https://github.com/parcel-bundler/parcel/graphs/contributors"><img src="https://opencollective.com/parcel/contributors.svg?width=890" title="contributors" alt="contributors" /></a>
## Backers
Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/parcel#backer)]
<a href="https://opencollective.com/parcel#backers" target="_blank"><img src="https://opencollective.com/parcel/backers.svg?width=890"></a>
## Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/parcel#sponsor)]
<a href="https://opencollective.com/parcel/sponsor/0/website" target="_blank"><img src="https://opencollective.com/parcel/sponsor/0/avatar.svg"></a>
<a href="https://opencollective.com/parcel/sponsor/1/website" target="_blank"><img src="https://opencollective.com/parcel/sponsor/1/avatar.svg"></a>
<a href="https://opencollective.com/parcel/sponsor/2/website" target="_blank"><img src="https://opencollective.com/parcel/sponsor/2/avatar.svg"></a>
<a href="https://opencollective.com/parcel/sponsor/3/website" target="_blank"><img src="https://opencollective.com/parcel/sponsor/3/avatar.svg"></a>
<a href="https://opencollective.com/parcel/sponsor/4/website" target="_blank"><img src="https://opencollective.com/parcel/sponsor/4/avatar.svg"></a>
<a href="https://opencollective.com/parcel/sponsor/5/website" target="_blank"><img src="https://opencollective.com/parcel/sponsor/5/avatar.svg"></a>
<a href="https://opencollective.com/parcel/sponsor/6/website" target="_blank"><img src="https://opencollective.com/parcel/sponsor/6/avatar.svg"></a>
<a href="https://opencollective.com/parcel/sponsor/7/website" target="_blank"><img src="https://opencollective.com/parcel/sponsor/7/avatar.svg"></a>
<a href="https://opencollective.com/parcel/sponsor/8/website" target="_blank"><img src="https://opencollective.com/parcel/sponsor/8/avatar.svg"></a>
<a href="https://opencollective.com/parcel/sponsor/9/website" target="_blank"><img src="https://opencollective.com/parcel/sponsor/9/avatar.svg"></a>
## [Changelog](https://github.com/parcel-bundler/parcel/blob/master/CHANGELOG.md)
## License
MIT

6
BACK_BACK/node_modules/parcel-bundler/bin/.eslintrc.json generated vendored Executable file
View file

@ -0,0 +1,6 @@
{
"extends": "../../../../.eslintrc.json",
"rules": {
"no-console": 0
}
}

9
BACK_BACK/node_modules/parcel-bundler/bin/cli.js generated vendored Executable file
View file

@ -0,0 +1,9 @@
#!/usr/bin/env node
process.env.UV_THREADPOOL_SIZE = process.env.UV_THREADPOOL_SIZE || 16;
// Node 8 supports native async functions - no need to use compiled code!
module.exports =
parseInt(process.versions.node, 10) < 8
? require('../lib/cli')
: require('../src/cli');

4
BACK_BACK/node_modules/parcel-bundler/index.js generated vendored Executable file
View file

@ -0,0 +1,4 @@
// Node 8 supports native async functions - no need to use compiled code!
module.exports = parseInt(process.versions.node, 10) < 8
? require('./lib/Bundler')
: require('./src/Bundler');

359
BACK_BACK/node_modules/parcel-bundler/lib/Asset.js generated vendored Executable file
View file

@ -0,0 +1,359 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
const URL = require('url');
const path = require('path');
const clone = require('clone');
const fs = require('@parcel/fs');
const md5 = require('./utils/md5');
const isURL = require('./utils/is-url');
const config = require('./utils/config');
const syncPromise = require('./utils/syncPromise');
const logger = require('@parcel/logger');
const Resolver = require('./Resolver');
const objectHash = require('./utils/objectHash');
const t = require('babel-types');
/**
* An Asset represents a file in the dependency tree. Assets can have multiple
* parents that depend on it, and can be added to multiple output bundles.
* The base Asset class doesn't do much by itself, but sets up an interface
* for subclasses to implement.
*/
class Asset {
constructor(name, options) {
this.id = null;
this.name = name;
this.basename = path.basename(this.name);
this.relativeName = path.relative(options.rootDir, this.name).replace(/\\/g, '/');
this.options = options;
this.encoding = 'utf8';
this.type = path.extname(this.name).slice(1);
this.hmrPageReload = false;
this.processed = false;
this.contents = options.rendition ? options.rendition.value : null;
this.ast = null;
this.generated = null;
this.hash = null;
this.sourceMaps = null;
this.parentDeps = new Set();
this.dependencies = new Map();
this.depAssets = new Map();
this.parentBundle = null;
this.bundles = new Set();
this.cacheData = {};
this.startTime = 0;
this.endTime = 0;
this.buildTime = 0;
this.bundledSize = 0;
this.resolver = new Resolver(options);
}
shouldInvalidate() {
return false;
}
loadIfNeeded() {
var _this = this;
return (0, _asyncToGenerator2.default)(function* () {
if (_this.contents == null) {
_this.contents = yield _this.load();
}
})();
}
parseIfNeeded() {
var _this2 = this;
return (0, _asyncToGenerator2.default)(function* () {
yield _this2.loadIfNeeded();
if (!_this2.ast) {
_this2.ast = yield _this2.parse(_this2.contents);
}
})();
}
getDependencies() {
var _this3 = this;
return (0, _asyncToGenerator2.default)(function* () {
if (_this3.options.rendition && _this3.options.rendition.hasDependencies === false) {
return;
}
yield _this3.loadIfNeeded();
if (_this3.contents && _this3.mightHaveDependencies()) {
yield _this3.parseIfNeeded();
yield _this3.collectDependencies();
}
})();
}
addDependency(name, opts) {
this.dependencies.set(name, Object.assign({
name
}, opts));
}
resolveDependency(url, from = this.name) {
const parsed = URL.parse(url);
let depName;
let resolved;
let dir = path.dirname(from);
const filename = decodeURIComponent(parsed.pathname);
if (filename[0] === '~' || filename[0] === '/') {
if (dir === '.') {
dir = this.options.rootDir;
}
depName = resolved = this.resolver.resolveFilename(filename, dir);
} else {
resolved = path.resolve(dir, filename);
depName = './' + path.relative(path.dirname(this.name), resolved);
}
return {
depName,
resolved
};
}
addURLDependency(url, from = this.name, opts) {
if (!url || isURL(url)) {
return url;
}
if (typeof from === 'object') {
opts = from;
from = this.name;
}
const _this$resolveDependen = this.resolveDependency(url, from),
depName = _this$resolveDependen.depName,
resolved = _this$resolveDependen.resolved;
this.addDependency(depName, Object.assign({
dynamic: true,
resolved
}, opts));
const parsed = URL.parse(url);
parsed.pathname = this.options.parser.getAsset(resolved, this.options).generateBundleName();
return URL.format(parsed);
}
get package() {
logger.warn('`asset.package` is deprecated. Please use `await asset.getPackage()` instead.');
return syncPromise(this.getPackage());
}
getPackage() {
var _this4 = this;
return (0, _asyncToGenerator2.default)(function* () {
if (!_this4._package) {
_this4._package = yield _this4.resolver.findPackage(path.dirname(_this4.name));
}
return _this4._package;
})();
}
getConfig(filenames, opts = {}) {
var _this5 = this;
return (0, _asyncToGenerator2.default)(function* () {
if (opts.packageKey) {
let pkg = yield _this5.getPackage();
if (pkg && pkg[opts.packageKey]) {
return clone(pkg[opts.packageKey]);
}
} // Resolve the config file
let conf = yield config.resolve(opts.path || _this5.name, filenames);
if (conf) {
// Add as a dependency so it is added to the watcher and invalidates
// this asset when the config changes.
_this5.addDependency(conf, {
includedInParent: true
});
if (opts.load === false) {
return conf;
}
return config.load(opts.path || _this5.name, filenames);
}
return null;
})();
}
mightHaveDependencies() {
return true;
}
load() {
var _this6 = this;
return (0, _asyncToGenerator2.default)(function* () {
return fs.readFile(_this6.name, _this6.encoding);
})();
}
parse() {// do nothing by default
}
collectDependencies() {// do nothing by default
}
pretransform() {// do nothing by default
return (0, _asyncToGenerator2.default)(function* () {})();
}
transform() {// do nothing by default
return (0, _asyncToGenerator2.default)(function* () {})();
}
generate() {
var _this7 = this;
return (0, _asyncToGenerator2.default)(function* () {
return {
[_this7.type]: _this7.contents
};
})();
}
process() {
var _this8 = this;
return (0, _asyncToGenerator2.default)(function* () {
// Generate the id for this asset, unless it has already been set.
// We do this here rather than in the constructor to avoid unnecessary work in the main process.
// In development, the id is just the relative path to the file, for easy debugging and performance.
// In production, we use a short hash of the relative path.
if (!_this8.id) {
_this8.id = _this8.options.production || _this8.options.scopeHoist ? t.toIdentifier(md5(_this8.relativeName, 'base64')).slice(0, 4) : _this8.relativeName;
}
if (!_this8.generated) {
yield _this8.loadIfNeeded();
yield _this8.pretransform();
yield _this8.getDependencies();
yield _this8.transform();
_this8.generated = yield _this8.generate();
}
return _this8.generated;
})();
}
postProcess(generated) {
return (0, _asyncToGenerator2.default)(function* () {
return generated;
})();
}
generateHash() {
return objectHash(this.generated);
}
invalidate() {
this.processed = false;
this.contents = null;
this.ast = null;
this.generated = null;
this.hash = null;
this.dependencies.clear();
this.depAssets.clear();
}
invalidateBundle() {
this.parentBundle = null;
this.bundles.clear();
this.parentDeps.clear();
}
generateBundleName() {
// Generate a unique name. This will be replaced with a nicer
// name later as part of content hashing.
return md5(this.relativeName) + '.' + this.type;
}
replaceBundleNames(bundleNameMap) {
let copied = false;
for (let key in this.generated) {
let value = this.generated[key];
if (typeof value === 'string') {
// Replace temporary bundle names in the output with the final content-hashed names.
let newValue = value;
var _iterator = _createForOfIteratorHelper(bundleNameMap),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
let _step$value = (0, _slicedToArray2.default)(_step.value, 2),
name = _step$value[0],
map = _step$value[1];
newValue = newValue.split(name).join(map);
} // Copy `this.generated` on write so we don't end up writing the final names to the cache.
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
if (newValue !== value && !copied) {
this.generated = Object.assign({}, this.generated);
copied = true;
}
this.generated[key] = newValue;
}
}
}
generateErrorMessage(err) {
return err;
}
}
module.exports = Asset;

352
BACK_BACK/node_modules/parcel-bundler/lib/Bundle.js generated vendored Executable file
View file

@ -0,0 +1,352 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
const Path = require('path');
const crypto = require('crypto');
/**
* A Bundle represents an output file, containing multiple assets. Bundles can have
* child bundles, which are bundles that are loaded dynamically from this bundle.
* Child bundles are also produced when importing an asset of a different type from
* the bundle, e.g. importing a CSS file from JS.
*/
class Bundle {
constructor(type, name, parent, options = {}) {
this.type = type;
this.name = name;
this.parentBundle = parent;
this.entryAsset = null;
this.assets = new Set();
this.childBundles = new Set();
this.siblingBundles = new Set();
this.siblingBundlesMap = new Map();
this.offsets = new Map();
this.totalSize = 0;
this.bundleTime = 0;
this.isolated = options.isolated;
}
static createWithAsset(asset, parentBundle, options) {
let bundle = new Bundle(asset.type, Path.join(asset.options.outDir, asset.generateBundleName()), parentBundle, options);
bundle.entryAsset = asset;
bundle.addAsset(asset);
return bundle;
}
addAsset(asset) {
asset.bundles.add(this);
this.assets.add(asset);
if (this.type != 'map' && this.type == asset.type && asset.options.sourceMaps && asset.sourceMaps) {
this.getSiblingBundle('map').addAsset(asset);
}
}
removeAsset(asset) {
asset.bundles.delete(this);
this.assets.delete(asset);
}
addOffset(asset, line, column = 0) {
this.offsets.set(asset, [line, column]);
}
getOffset(asset) {
return this.offsets.get(asset) || [0, 0];
}
getSiblingBundle(type) {
if (!type || type === this.type) {
return this;
}
if (!this.siblingBundlesMap.has(type)) {
let bundle = new Bundle(type, Path.join(Path.dirname(this.name), // keep the original extension for source map files, so we have
// .js.map instead of just .map
type === 'map' ? Path.basename(this.name) + '.' + type : Path.basename(this.name, Path.extname(this.name)) + '.' + type), this);
this.childBundles.add(bundle);
this.siblingBundles.add(bundle);
this.siblingBundlesMap.set(type, bundle);
}
return this.siblingBundlesMap.get(type);
}
createChildBundle(entryAsset, options = {}) {
let bundle = Bundle.createWithAsset(entryAsset, this, options);
this.childBundles.add(bundle);
return bundle;
}
createSiblingBundle(entryAsset, options = {}) {
let bundle = this.createChildBundle(entryAsset, options);
this.siblingBundles.add(bundle);
return bundle;
}
get isEmpty() {
return this.assets.size === 0;
}
getBundleNameMap(contentHash, hashes = new Map()) {
if (this.name) {
let hashedName = this.getHashedBundleName(contentHash);
hashes.set(Path.basename(this.name), hashedName);
this.name = Path.join(Path.dirname(this.name), hashedName);
}
var _iterator = _createForOfIteratorHelper(this.childBundles.values()),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
let child = _step.value;
child.getBundleNameMap(contentHash, hashes);
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
return hashes;
}
getHashedBundleName(contentHash) {
// If content hashing is enabled, generate a hash from all assets in the bundle.
// Otherwise, use a hash of the filename so it remains consistent across builds.
if (this.type == 'map') {
return this.parentBundle.getHashedBundleName(contentHash) + '.map';
}
let basename = Path.basename(this.name);
let ext = Path.extname(basename);
let hash = (contentHash ? this.getHash() : Path.basename(this.name, ext)).slice(-8);
let entryAsset = this;
while (!entryAsset.entryAsset && entryAsset.parentBundle) {
entryAsset = entryAsset.parentBundle;
}
entryAsset = entryAsset.entryAsset;
let name = Path.basename(entryAsset.name, Path.extname(entryAsset.name));
let isMainEntry = entryAsset.options.entryFiles[0] === entryAsset.name;
let isEntry = entryAsset.options.entryFiles.includes(entryAsset.name) || Array.from(entryAsset.parentDeps).some(dep => dep.entry); // If this is the main entry file, use the output file option as the name if provided.
if (isMainEntry && entryAsset.options.outFile) {
let extname = Path.extname(entryAsset.options.outFile);
if (extname) {
ext = this.entryAsset ? extname : ext;
name = Path.basename(entryAsset.options.outFile, extname);
} else {
name = entryAsset.options.outFile;
}
} // If this is an entry asset, don't hash. Return a relative path
// from the main file so we keep the original file paths.
if (isEntry) {
return Path.join(Path.relative(entryAsset.options.rootDir, Path.dirname(entryAsset.name)), name + ext).replace(/\.\.(\/|\\)/g, '__$1');
} // If this is an index file, use the parent directory name instead
// which is probably more descriptive.
if (name === 'index') {
name = Path.basename(Path.dirname(entryAsset.name));
} // Add the content hash and extension.
return name + '.' + hash + ext;
}
package(bundler, oldHashes, newHashes = new Map()) {
var _this = this;
return (0, _asyncToGenerator2.default)(function* () {
let promises = [];
let mappings = [];
if (!_this.isEmpty) {
let hash = _this.getHash();
newHashes.set(_this.name, hash);
if (!oldHashes || oldHashes.get(_this.name) !== hash) {
promises.push(_this._package(bundler));
}
}
var _iterator2 = _createForOfIteratorHelper(_this.childBundles.values()),
_step2;
try {
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
let bundle = _step2.value;
if (bundle.type === 'map') {
mappings.push(bundle);
} else {
promises.push(bundle.package(bundler, oldHashes, newHashes));
}
}
} catch (err) {
_iterator2.e(err);
} finally {
_iterator2.f();
}
yield Promise.all(promises);
for (var _i = 0, _mappings = mappings; _i < _mappings.length; _i++) {
let bundle = _mappings[_i];
yield bundle.package(bundler, oldHashes, newHashes);
}
return newHashes;
})();
}
_package(bundler) {
var _this2 = this;
return (0, _asyncToGenerator2.default)(function* () {
let Packager = bundler.packagers.get(_this2.type);
let packager = new Packager(_this2, bundler);
let startTime = Date.now();
yield packager.setup();
yield packager.start();
let included = new Set();
var _iterator3 = _createForOfIteratorHelper(_this2.assets),
_step3;
try {
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
let asset = _step3.value;
yield _this2._addDeps(asset, packager, included);
}
} catch (err) {
_iterator3.e(err);
} finally {
_iterator3.f();
}
yield packager.end();
_this2.totalSize = packager.getSize();
let assetArray = Array.from(_this2.assets);
let assetStartTime = _this2.type === 'map' ? 0 : assetArray.sort((a, b) => a.startTime - b.startTime)[0].startTime;
let assetEndTime = _this2.type === 'map' ? 0 : assetArray.sort((a, b) => b.endTime - a.endTime)[0].endTime;
let packagingTime = Date.now() - startTime;
_this2.bundleTime = assetEndTime - assetStartTime + packagingTime;
})();
}
_addDeps(asset, packager, included) {
var _this3 = this;
return (0, _asyncToGenerator2.default)(function* () {
if (!_this3.assets.has(asset) || included.has(asset)) {
return;
}
included.add(asset);
var _iterator4 = _createForOfIteratorHelper(asset.depAssets.values()),
_step4;
try {
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
let depAsset = _step4.value;
yield _this3._addDeps(depAsset, packager, included);
}
} catch (err) {
_iterator4.e(err);
} finally {
_iterator4.f();
}
yield packager.addAsset(asset);
const assetSize = packager.getSize() - _this3.totalSize;
if (assetSize > 0) {
_this3.addAssetSize(asset, assetSize);
}
})();
}
addAssetSize(asset, size) {
asset.bundledSize = size;
this.totalSize += size;
}
getParents() {
let parents = [];
let bundle = this;
while (bundle) {
parents.push(bundle);
bundle = bundle.parentBundle;
}
return parents;
}
findCommonAncestor(bundle) {
// Get a list of parent bundles going up to the root
let ourParents = this.getParents();
let theirParents = bundle.getParents(); // Start from the root bundle, and find the first bundle that's different
let a = ourParents.pop();
let b = theirParents.pop();
let last;
while (a === b && ourParents.length > 0 && theirParents.length > 0) {
last = a;
a = ourParents.pop();
b = theirParents.pop();
}
if (a === b) {
// One bundle descended from the other
return a;
}
return last;
}
getHash() {
let hash = crypto.createHash('md5');
var _iterator5 = _createForOfIteratorHelper(this.assets),
_step5;
try {
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
let asset = _step5.value;
hash.update(asset.hash);
}
} catch (err) {
_iterator5.e(err);
} finally {
_iterator5.f();
}
return hash.digest('hex');
}
}
module.exports = Bundle;

1026
BACK_BACK/node_modules/parcel-bundler/lib/Bundler.js generated vendored Executable file

File diff suppressed because it is too large Load diff

201
BACK_BACK/node_modules/parcel-bundler/lib/FSCache.js generated vendored Executable file
View file

@ -0,0 +1,201 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
const fs = require('@parcel/fs');
const path = require('path');
const md5 = require('./utils/md5');
const objectHash = require('./utils/objectHash');
const pkg = require('../package.json');
const logger = require('@parcel/logger');
const _require = require('./utils/glob'),
isGlob = _require.isGlob,
glob = _require.glob; // These keys can affect the output, so if they differ, the cache should not match
const OPTION_KEYS = ['publicURL', 'minify', 'hmr', 'target', 'scopeHoist', 'sourceMaps'];
class FSCache {
constructor(options) {
this.dir = path.resolve(options.cacheDir || '.cache');
this.dirExists = false;
this.invalidated = new Set();
this.optionsHash = objectHash(OPTION_KEYS.reduce((p, k) => (p[k] = options[k], p), {
version: pkg.version
}));
}
ensureDirExists() {
var _this = this;
return (0, _asyncToGenerator2.default)(function* () {
if (_this.dirExists) {
return;
}
yield fs.mkdirp(_this.dir); // Create sub-directories for every possible hex value
// This speeds up large caches on many file systems since there are fewer files in a single directory.
for (let i = 0; i < 256; i++) {
yield fs.mkdirp(path.join(_this.dir, ('00' + i.toString(16)).slice(-2)));
}
_this.dirExists = true;
})();
}
getCacheFile(filename) {
let hash = md5(this.optionsHash + filename);
return path.join(this.dir, hash.slice(0, 2), hash.slice(2) + '.json');
}
getLastModified(filename) {
return (0, _asyncToGenerator2.default)(function* () {
if (isGlob(filename)) {
let files = yield glob(filename, {
onlyFiles: true
});
return (yield Promise.all(files.map(file => fs.stat(file).then(({
mtime
}) => mtime.getTime())))).reduce((a, b) => Math.max(a, b), 0);
}
return (yield fs.stat(filename)).mtime.getTime();
})();
}
writeDepMtimes(data) {
var _this2 = this;
return (0, _asyncToGenerator2.default)(function* () {
// Write mtimes for each dependent file that is already compiled into this asset
var _iterator = _createForOfIteratorHelper(data.dependencies),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
let dep = _step.value;
if (dep.includedInParent) {
dep.mtime = yield _this2.getLastModified(dep.name);
}
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
})();
}
write(filename, data) {
var _this3 = this;
return (0, _asyncToGenerator2.default)(function* () {
try {
yield _this3.ensureDirExists();
yield _this3.writeDepMtimes(data);
yield fs.writeFile(_this3.getCacheFile(filename), JSON.stringify(data));
_this3.invalidated.delete(filename);
} catch (err) {
logger.error(`Error writing to cache: ${err.message}`);
}
})();
}
checkDepMtimes(data) {
var _this4 = this;
return (0, _asyncToGenerator2.default)(function* () {
// Check mtimes for files that are already compiled into this asset
// If any of them changed, invalidate.
var _iterator2 = _createForOfIteratorHelper(data.dependencies),
_step2;
try {
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
let dep = _step2.value;
if (dep.includedInParent) {
if ((yield _this4.getLastModified(dep.name)) > dep.mtime) {
return false;
}
}
}
} catch (err) {
_iterator2.e(err);
} finally {
_iterator2.f();
}
return true;
})();
}
read(filename) {
var _this5 = this;
return (0, _asyncToGenerator2.default)(function* () {
if (_this5.invalidated.has(filename)) {
return null;
}
let cacheFile = _this5.getCacheFile(filename);
try {
let stats = yield fs.stat(filename);
let cacheStats = yield fs.stat(cacheFile);
if (stats.mtime > cacheStats.mtime) {
return null;
}
let json = yield fs.readFile(cacheFile);
let data = JSON.parse(json);
if (!(yield _this5.checkDepMtimes(data))) {
return null;
}
return data;
} catch (err) {
return null;
}
})();
}
invalidate(filename) {
this.invalidated.add(filename);
}
delete(filename) {
var _this6 = this;
return (0, _asyncToGenerator2.default)(function* () {
try {
yield fs.unlink(_this6.getCacheFile(filename));
_this6.invalidated.delete(filename);
} catch (err) {// Fail silently
}
})();
}
}
module.exports = FSCache;

173
BACK_BACK/node_modules/parcel-bundler/lib/HMRServer.js generated vendored Executable file
View file

@ -0,0 +1,173 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
const http = require('http');
const https = require('https');
const WebSocket = require('ws');
const generateCertificate = require('./utils/generateCertificate');
const getCertificate = require('./utils/getCertificate');
const logger = require('@parcel/logger');
class HMRServer {
start(options = {}) {
var _this = this;
return (0, _asyncToGenerator2.default)(function* () {
yield new Promise( /*#__PURE__*/function () {
var _ref = (0, _asyncToGenerator2.default)(function* (resolve) {
if (!options.https) {
_this.server = http.createServer();
} else if (typeof options.https === 'boolean') {
_this.server = https.createServer(generateCertificate(options));
} else {
_this.server = https.createServer(yield getCertificate(options.https));
}
let websocketOptions = {
server: _this.server
};
if (options.hmrHostname) {
websocketOptions.origin = `${options.https ? 'https' : 'http'}://${options.hmrHostname}`;
}
_this.wss = new WebSocket.Server(websocketOptions);
_this.server.listen(options.hmrPort, resolve);
});
return function (_x) {
return _ref.apply(this, arguments);
};
}());
_this.wss.on('connection', ws => {
ws.onerror = _this.handleSocketError;
if (_this.unresolvedError) {
ws.send(JSON.stringify(_this.unresolvedError));
}
});
_this.wss.on('error', _this.handleSocketError);
return _this.wss._server.address().port;
})();
}
stop() {
this.wss.close();
this.server.close();
}
emitError(err) {
let _logger$formatError = logger.formatError(err),
message = _logger$formatError.message,
stack = _logger$formatError.stack; // store the most recent error so we can notify new connections
// and so we can broadcast when the error is resolved
this.unresolvedError = {
type: 'error',
error: {
message,
stack
}
};
this.broadcast(this.unresolvedError);
}
emitUpdate(assets, reload = false) {
if (this.unresolvedError) {
this.unresolvedError = null;
this.broadcast({
type: 'error-resolved'
});
}
const shouldReload = reload || assets.some(asset => asset.hmrPageReload);
if (shouldReload) {
this.broadcast({
type: 'reload'
});
} else {
this.broadcast({
type: 'update',
assets: assets.map(asset => {
let deps = {};
var _iterator = _createForOfIteratorHelper(asset.depAssets),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
let _step$value = (0, _slicedToArray2.default)(_step.value, 2),
dep = _step$value[0],
depAsset = _step$value[1];
deps[dep.name] = depAsset.id;
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
return {
id: asset.id,
type: asset.type,
generated: asset.generated,
deps: deps
};
})
});
}
}
handleSocketError(err) {
if (err.error.code === 'ECONNRESET') {
// This gets triggered on page refresh, ignore this
return;
}
logger.warn(err);
}
broadcast(msg) {
const json = JSON.stringify(msg);
var _iterator2 = _createForOfIteratorHelper(this.wss.clients),
_step2;
try {
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
let ws = _step2.value;
ws.send(json);
}
} catch (err) {
_iterator2.e(err);
} finally {
_iterator2.f();
}
}
}
module.exports = HMRServer;

107
BACK_BACK/node_modules/parcel-bundler/lib/Parser.js generated vendored Executable file
View file

@ -0,0 +1,107 @@
"use strict";
const path = require('path');
const logger = require('@parcel/logger');
const RawAsset = require('./assets/RawAsset');
const GlobAsset = require('./assets/GlobAsset');
const _require = require('./utils/glob'),
isGlob = _require.isGlob;
class Parser {
constructor(options = {}) {
this.extensions = {};
this.registerExtension('js', './assets/JSAsset');
this.registerExtension('jsx', './assets/JSAsset');
this.registerExtension('es6', './assets/JSAsset');
this.registerExtension('jsm', './assets/JSAsset');
this.registerExtension('mjs', './assets/JSAsset');
this.registerExtension('ml', './assets/ReasonAsset');
this.registerExtension('re', './assets/ReasonAsset');
this.registerExtension('ts', './assets/TypeScriptAsset');
this.registerExtension('tsx', './assets/TypeScriptAsset');
this.registerExtension('coffee', './assets/CoffeeScriptAsset');
this.registerExtension('elm', './assets/ElmAsset');
this.registerExtension('vue', './assets/VueAsset');
this.registerExtension('json', './assets/JSONAsset');
this.registerExtension('json5', './assets/JSONAsset');
this.registerExtension('jsonld', './assets/JSONLDAsset');
this.registerExtension('yaml', './assets/YAMLAsset');
this.registerExtension('yml', './assets/YAMLAsset');
this.registerExtension('toml', './assets/TOMLAsset');
this.registerExtension('gql', './assets/GraphqlAsset');
this.registerExtension('graphql', './assets/GraphqlAsset');
this.registerExtension('kt', './assets/KotlinAsset');
this.registerExtension('css', './assets/CSSAsset');
this.registerExtension('pcss', './assets/CSSAsset');
this.registerExtension('postcss', './assets/CSSAsset');
this.registerExtension('sss', './assets/SSSAsset');
this.registerExtension('styl', './assets/StylusAsset');
this.registerExtension('stylus', './assets/StylusAsset');
this.registerExtension('less', './assets/LESSAsset');
this.registerExtension('sass', './assets/SASSAsset');
this.registerExtension('scss', './assets/SASSAsset');
this.registerExtension('html', './assets/HTMLAsset');
this.registerExtension('htm', './assets/HTMLAsset');
this.registerExtension('rs', './assets/RustAsset');
this.registerExtension('webmanifest', './assets/WebManifestAsset');
this.registerExtension('glsl', './assets/GLSLAsset');
this.registerExtension('vert', './assets/GLSLAsset');
this.registerExtension('frag', './assets/GLSLAsset');
this.registerExtension('jade', './assets/PugAsset');
this.registerExtension('pug', './assets/PugAsset');
this.registerExtension('md', './assets/MarkdownAsset');
let extensions = options.extensions || {};
for (let ext in extensions) {
this.registerExtension(ext, extensions[ext]);
}
}
registerExtension(ext, parser) {
if (!ext.startsWith('.')) {
ext = '.' + ext;
}
this.extensions[ext.toLowerCase()] = parser;
}
findParser(filename, fromPipeline) {
if (!fromPipeline && isGlob(filename)) {
return GlobAsset;
}
let extension = path.extname(filename).toLowerCase();
let parser = this.extensions[extension] || RawAsset;
if (typeof parser === 'string') {
try {
parser = this.extensions[extension] = require(parser);
} catch (err) {
let relFilename = path.relative(process.cwd(), filename);
let relParserName = path.relative(process.cwd(), parser);
if (relParserName.slice(0, 12) === 'node_modules') {
relParserName = relParserName.slice(13);
}
logger.warn(`Parser "${relParserName}" failed to initialize when processing ` + `asset "${relFilename}". Threw the following error:\n` + `${err.stack || err.message || err} falling back to RawAsset`);
return RawAsset;
}
}
return parser;
}
getAsset(filename, options = {}) {
let Asset = this.findParser(filename);
options.parser = this;
return new Asset(filename, options);
}
}
module.exports = Parser;

214
BACK_BACK/node_modules/parcel-bundler/lib/Pipeline.js generated vendored Executable file
View file

@ -0,0 +1,214 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
const Parser = require('./Parser');
const path = require('path');
const _require = require('@parcel/utils'),
errorUtils = _require.errorUtils;
/**
* A Pipeline composes multiple Asset types together.
*/
class Pipeline {
constructor(options) {
this.options = options;
this.parser = new Parser(options);
}
process(path, isWarmUp) {
var _this = this;
return (0, _asyncToGenerator2.default)(function* () {
let options = _this.options;
if (isWarmUp) {
options = Object.assign({
isWarmUp
}, options);
}
let asset = _this.parser.getAsset(path, options);
let error = null;
let generatedMap = {};
try {
let generated = yield _this.processAsset(asset);
var _iterator = _createForOfIteratorHelper(generated),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
let rendition = _step.value;
generatedMap[rendition.type] = rendition.value;
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
} catch (err) {
error = errorUtils.errorToJson(err);
error.fileName = path;
}
return {
id: asset.id,
dependencies: Array.from(asset.dependencies.values()),
generated: generatedMap,
sourceMaps: asset.sourceMaps,
error: error,
hash: asset.hash,
cacheData: asset.cacheData
};
})();
}
processAsset(asset) {
var _this2 = this;
return (0, _asyncToGenerator2.default)(function* () {
try {
yield asset.process();
} catch (err) {
throw asset.generateErrorMessage(err);
}
let inputType = path.extname(asset.name).slice(1);
let generated = [];
var _iterator2 = _createForOfIteratorHelper(_this2.iterateRenditions(asset)),
_step2;
try {
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
let rendition = _step2.value;
let type = rendition.type,
value = rendition.value;
if (typeof value !== 'string' || rendition.final) {
generated.push(rendition);
continue;
} // Find an asset type for the rendition type.
// If the asset is not already an instance of this asset type, process it.
let AssetType = _this2.parser.findParser(asset.name.slice(0, -inputType.length) + type, true);
if (!(asset instanceof AssetType)) {
let opts = Object.assign({}, asset.options, {
rendition
});
let subAsset = new AssetType(asset.name, opts);
subAsset.id = asset.id;
subAsset.contents = value;
subAsset.dependencies = asset.dependencies;
subAsset.cacheData = Object.assign(asset.cacheData, subAsset.cacheData);
let processed = yield _this2.processAsset(subAsset);
if (rendition.meta) {
var _iterator4 = _createForOfIteratorHelper(processed),
_step4;
try {
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
let res = _step4.value;
res.meta = rendition.meta;
res.isMain = res.type === subAsset.type;
}
} catch (err) {
_iterator4.e(err);
} finally {
_iterator4.f();
}
}
generated = generated.concat(processed);
} else {
generated.push(rendition);
}
} // Post process. This allows assets a chance to modify the output produced by sub-asset types.
} catch (err) {
_iterator2.e(err);
} finally {
_iterator2.f();
}
try {
generated = yield asset.postProcess(generated);
} catch (err) {
throw asset.generateErrorMessage(err);
}
let hasMap = false;
let sourceMaps = {};
var _iterator3 = _createForOfIteratorHelper(generated),
_step3;
try {
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
let rendition = _step3.value;
if (rendition.map && rendition.type == asset.type) {
sourceMaps[rendition.type] = rendition.map;
hasMap = true;
}
}
} catch (err) {
_iterator3.e(err);
} finally {
_iterator3.f();
}
if (hasMap) {
asset.sourceMaps = sourceMaps;
}
asset.generated = generated;
asset.hash = yield asset.generateHash();
return generated;
})();
}
*iterateRenditions(asset) {
if (Array.isArray(asset.generated)) {
return yield* asset.generated;
}
if (typeof asset.generated === 'string') {
return yield {
type: asset.type,
value: asset.generated
};
} // Backward compatibility support for the old API.
// Assume all renditions are final - don't compose asset types together.
for (let type in asset.generated) {
yield {
type,
value: asset.generated[type],
// for scope hoisting, we need to post process all JS
final: !(type === 'js' && this.options.scopeHoist)
};
}
}
}
module.exports = Pipeline;

537
BACK_BACK/node_modules/parcel-bundler/lib/Resolver.js generated vendored Executable file
View file

@ -0,0 +1,537 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
const builtins = require('./builtins');
const nodeBuiltins = require('node-libs-browser');
const path = require('path');
const _require = require('./utils/glob'),
isGlob = _require.isGlob;
const fs = require('@parcel/fs');
const micromatch = require('micromatch');
const getModuleParts = require('./utils/getModuleParts');
const EMPTY_SHIM = require.resolve('./builtins/_empty');
/**
* This resolver implements a modified version of the node_modules resolution algorithm:
* https://nodejs.org/api/modules.html#modules_all_together
*
* In addition to the standard algorithm, Parcel supports:
* - All file extensions supported by Parcel.
* - Glob file paths
* - Absolute paths (e.g. /foo) resolved relative to the project root.
* - Tilde paths (e.g. ~/foo) resolved relative to the nearest module root in node_modules.
* - The package.json module, jsnext:main, and browser field as replacements for package.main.
* - The package.json browser and alias fields as an alias map within a local module.
* - The package.json alias field in the root package for global aliases across all modules.
*/
class Resolver {
constructor(options = {}) {
this.options = options;
this.cache = new Map();
this.packageCache = new Map();
this.rootPackage = null;
}
resolve(input, parent) {
var _this = this;
return (0, _asyncToGenerator2.default)(function* () {
let filename = input; // Check the cache first
let key = _this.getCacheKey(filename, parent);
if (_this.cache.has(key)) {
return _this.cache.get(key);
} // Check if this is a glob
if (isGlob(filename)) {
return {
path: path.resolve(path.dirname(parent), filename)
};
} // Get file extensions to search
let extensions = Array.isArray(_this.options.extensions) ? _this.options.extensions.slice() : Object.keys(_this.options.extensions);
if (parent) {
// parent's extension given high priority
const parentExt = path.extname(parent);
extensions = [parentExt, ...extensions.filter(ext => ext !== parentExt)];
}
extensions.unshift(''); // Resolve the module directory or local file path
let module = yield _this.resolveModule(filename, parent);
let resolved;
if (module.moduleDir) {
resolved = yield _this.loadNodeModules(module, extensions);
} else if (module.filePath) {
resolved = yield _this.loadRelative(module.filePath, extensions);
}
if (!resolved) {
let dir = parent ? path.dirname(parent) : process.cwd();
let err = new Error(`Cannot find module '${input}' from '${dir}'`);
err.code = 'MODULE_NOT_FOUND';
throw err;
}
_this.cache.set(key, resolved);
return resolved;
})();
}
resolveModule(filename, parent) {
var _this2 = this;
return (0, _asyncToGenerator2.default)(function* () {
let dir = parent ? path.dirname(parent) : process.cwd(); // If this isn't the entrypoint, resolve the input file to an absolute path
if (parent) {
filename = _this2.resolveFilename(filename, dir);
} // Resolve aliases in the parent module for this file.
filename = yield _this2.loadAlias(filename, dir); // Return just the file path if this is a file, not in node_modules
if (path.isAbsolute(filename)) {
return {
filePath: filename
};
} // Resolve the module in node_modules
let resolved;
try {
resolved = yield _this2.findNodeModulePath(filename, dir);
} catch (err) {// ignore
} // If we couldn't resolve the node_modules path, just return the module name info
if (!resolved) {
let parts = getModuleParts(filename);
resolved = {
moduleName: parts[0],
subPath: parts[1]
};
}
return resolved;
})();
}
getCacheKey(filename, parent) {
return (parent ? path.dirname(parent) : '') + ':' + filename;
}
resolveFilename(filename, dir) {
switch (filename[0]) {
case '/':
// Absolute path. Resolve relative to project root.
return path.resolve(this.options.rootDir, filename.slice(1));
case '~':
// Tilde path. Resolve relative to nearest node_modules directory,
// or the project root - whichever comes first.
while (dir !== this.options.rootDir && path.basename(path.dirname(dir)) !== 'node_modules') {
dir = path.dirname(dir);
if (dir === path.dirname(dir)) {
dir = this.options.rootDir;
break;
}
}
return path.join(dir, filename.slice(1));
case '.':
// Relative path.
return path.resolve(dir, filename);
default:
// Module
return filename;
}
}
loadRelative(filename, extensions) {
var _this3 = this;
return (0, _asyncToGenerator2.default)(function* () {
// Find a package.json file in the current package.
let pkg = yield _this3.findPackage(path.dirname(filename)); // First try as a file, then as a directory.
return (yield _this3.loadAsFile(filename, extensions, pkg)) || (yield _this3.loadDirectory(filename, extensions, pkg)) // eslint-disable-line no-return-await
;
})();
}
findNodeModulePath(filename, dir) {
var _this4 = this;
return (0, _asyncToGenerator2.default)(function* () {
if (builtins[filename]) {
if (_this4.options.target === 'node' && filename in nodeBuiltins) {
throw new Error('Cannot resolve builtin module for node target');
}
return {
filePath: builtins[filename]
};
}
let parts = getModuleParts(filename);
let root = path.parse(dir).root;
while (dir !== root) {
// Skip node_modules directories
if (path.basename(dir) === 'node_modules') {
dir = path.dirname(dir);
}
try {
// First, check if the module directory exists. This prevents a lot of unnecessary checks later.
let moduleDir = path.join(dir, 'node_modules', parts[0]);
let stats = yield fs.stat(moduleDir);
if (stats.isDirectory()) {
return {
moduleName: parts[0],
subPath: parts[1],
moduleDir: moduleDir,
filePath: path.join(dir, 'node_modules', filename)
};
}
} catch (err) {// ignore
} // Move up a directory
dir = path.dirname(dir);
}
})();
}
loadNodeModules(module, extensions) {
var _this5 = this;
return (0, _asyncToGenerator2.default)(function* () {
try {
// If a module was specified as a module sub-path (e.g. some-module/some/path),
// it is likely a file. Try loading it as a file first.
if (module.subPath) {
let pkg = yield _this5.readPackage(module.moduleDir);
let res = yield _this5.loadAsFile(module.filePath, extensions, pkg);
if (res) {
return res;
}
} // Otherwise, load as a directory.
return yield _this5.loadDirectory(module.filePath, extensions);
} catch (e) {// ignore
}
})();
}
isFile(file) {
return (0, _asyncToGenerator2.default)(function* () {
try {
let stat = yield fs.stat(file);
return stat.isFile() || stat.isFIFO();
} catch (err) {
return false;
}
})();
}
loadDirectory(dir, extensions, pkg) {
var _this6 = this;
return (0, _asyncToGenerator2.default)(function* () {
try {
pkg = yield _this6.readPackage(dir); // Get a list of possible package entry points.
let entries = _this6.getPackageEntries(pkg);
var _iterator = _createForOfIteratorHelper(entries),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
let file = _step.value;
// First try loading package.main as a file, then try as a directory.
const res = (yield _this6.loadAsFile(file, extensions, pkg)) || (yield _this6.loadDirectory(file, extensions, pkg));
if (res) {
return res;
}
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
} catch (err) {// ignore
} // Fall back to an index file inside the directory.
return _this6.loadAsFile(path.join(dir, 'index'), extensions, pkg);
})();
}
readPackage(dir) {
var _this7 = this;
return (0, _asyncToGenerator2.default)(function* () {
let file = path.join(dir, 'package.json');
if (_this7.packageCache.has(file)) {
return _this7.packageCache.get(file);
}
let json = yield fs.readFile(file, 'utf8');
let pkg = JSON.parse(json);
pkg.pkgfile = file;
pkg.pkgdir = dir; // If the package has a `source` field, check if it is behind a symlink.
// If so, we treat the module as source code rather than a pre-compiled module.
if (pkg.source) {
let realpath = yield fs.realpath(file);
if (realpath === file) {
delete pkg.source;
}
}
_this7.packageCache.set(file, pkg);
return pkg;
})();
}
getBrowserField(pkg) {
let target = this.options.target || 'browser';
return target === 'browser' ? pkg.browser : null;
}
getPackageEntries(pkg) {
let browser = this.getBrowserField(pkg);
if (browser && typeof browser === 'object' && browser[pkg.name]) {
browser = browser[pkg.name];
} // libraries like d3.js specifies node.js specific files in the "main" which breaks the build
// we use the "browser" or "module" field to get the full dependency tree if available.
// If this is a linked module with a `source` field, use that as the entry point.
return [pkg.source, browser, pkg.module, pkg.main].filter(entry => typeof entry === 'string').map(main => {
// Default to index file if no main field find
if (!main || main === '.' || main === './') {
main = 'index';
}
return path.resolve(pkg.pkgdir, main);
});
}
loadAsFile(file, extensions, pkg) {
var _this8 = this;
return (0, _asyncToGenerator2.default)(function* () {
// Try all supported extensions
var _iterator2 = _createForOfIteratorHelper(_this8.expandFile(file, extensions, pkg)),
_step2;
try {
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
let f = _step2.value;
if (yield _this8.isFile(f)) {
return {
path: f,
pkg
};
}
}
} catch (err) {
_iterator2.e(err);
} finally {
_iterator2.f();
}
})();
}
expandFile(file, extensions, pkg, expandAliases = true) {
// Expand extensions and aliases
let res = [];
var _iterator3 = _createForOfIteratorHelper(extensions),
_step3;
try {
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
let ext = _step3.value;
let f = file + ext;
if (expandAliases) {
let alias = this.resolveAliases(file + ext, pkg);
if (alias !== f) {
res = res.concat(this.expandFile(alias, extensions, pkg, false));
}
}
res.push(f);
}
} catch (err) {
_iterator3.e(err);
} finally {
_iterator3.f();
}
return res;
}
resolveAliases(filename, pkg) {
// First resolve local package aliases, then project global ones.
return this.resolvePackageAliases(this.resolvePackageAliases(filename, pkg), this.rootPackage);
}
resolvePackageAliases(filename, pkg) {
if (!pkg) {
return filename;
} // Resolve aliases in the package.source, package.alias, and package.browser fields.
return this.getAlias(filename, pkg.pkgdir, pkg.source) || this.getAlias(filename, pkg.pkgdir, pkg.alias) || this.getAlias(filename, pkg.pkgdir, this.getBrowserField(pkg)) || filename;
}
getAlias(filename, dir, aliases) {
if (!filename || !aliases || typeof aliases !== 'object') {
return null;
}
let alias; // If filename is an absolute path, get one relative to the package.json directory.
if (path.isAbsolute(filename)) {
filename = path.relative(dir, filename);
if (filename[0] !== '.') {
filename = './' + filename;
}
alias = this.lookupAlias(aliases, filename, dir);
} else {
// It is a node_module. First try the entire filename as a key.
alias = this.lookupAlias(aliases, filename, dir);
if (alias == null) {
// If it didn't match, try only the module name.
let parts = getModuleParts(filename);
alias = this.lookupAlias(aliases, parts[0], dir);
if (typeof alias === 'string') {
// Append the filename back onto the aliased module.
alias = path.join(alias, ...parts.slice(1));
}
}
} // If the alias is set to `false`, return an empty file.
if (alias === false) {
return EMPTY_SHIM;
}
return alias;
}
lookupAlias(aliases, filename, dir) {
// First, try looking up the exact filename
let alias = aliases[filename];
if (alias == null) {
// Otherwise, try replacing glob keys
for (let key in aliases) {
if (isGlob(key)) {
let re = micromatch.makeRe(key, {
capture: true
});
if (re.test(filename)) {
alias = filename.replace(re, aliases[key]);
break;
}
}
} // Or try a lookup replacing backslash characters with forward slash
if (alias == null && ~filename.indexOf('\\')) {
alias = aliases[filename.replace(/\\/g, '/')];
}
}
if (typeof alias === 'string') {
return this.resolveFilename(alias, dir);
}
return alias;
}
findPackage(dir) {
var _this9 = this;
return (0, _asyncToGenerator2.default)(function* () {
// Find the nearest package.json file within the current node_modules folder
let root = path.parse(dir).root;
while (dir !== root && path.basename(dir) !== 'node_modules') {
try {
return yield _this9.readPackage(dir);
} catch (err) {// ignore
}
dir = path.dirname(dir);
}
})();
}
loadAlias(filename, dir) {
var _this10 = this;
return (0, _asyncToGenerator2.default)(function* () {
// Load the root project's package.json file if we haven't already
if (!_this10.rootPackage) {
_this10.rootPackage = yield _this10.findPackage(_this10.options.rootDir);
} // Load the local package, and resolve aliases
let pkg = yield _this10.findPackage(dir);
return _this10.resolveAliases(filename, pkg);
})();
}
}
module.exports = Resolver;

170
BACK_BACK/node_modules/parcel-bundler/lib/Server.js generated vendored Executable file
View file

@ -0,0 +1,170 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
const http = require('http');
const https = require('https');
const serveStatic = require('serve-static');
const getPort = require('get-port');
const serverErrors = require('./utils/customErrors').serverErrors;
const generateCertificate = require('./utils/generateCertificate');
const getCertificate = require('./utils/getCertificate');
const AnsiToHtml = require('ansi-to-html');
const logger = require('@parcel/logger');
const path = require('path');
const url = require('url');
const ansiToHtml = new AnsiToHtml({
newline: true
});
serveStatic.mime.define({
'application/wasm': ['wasm']
});
function setHeaders(res) {
enableCors(res);
}
function enableCors(res) {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, HEAD, PUT, PATCH, POST, DELETE');
res.setHeader('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept, Content-Type');
}
function middleware(bundler) {
const serve = serveStatic(bundler.options.outDir, {
index: false,
redirect: false,
setHeaders: setHeaders,
dotfiles: 'allow'
});
return function (req, res, next) {
logAccessIfVerbose(); // Wait for the bundler to finish bundling if needed
if (bundler.pending) {
bundler.once('bundled', respond);
} else {
respond();
}
function respond() {
let _url$parse = url.parse(req.url),
pathname = _url$parse.pathname;
if (bundler.error) {
return send500(bundler.error);
} else if (!pathname.startsWith(bundler.options.publicURL) || path.extname(pathname) === '') {
// If the URL doesn't start with the public path, or the URL doesn't
// have a file extension, send the main HTML bundle.
return sendIndex();
} else {
// Otherwise, serve the file from the dist folder
req.url = pathname.slice(bundler.options.publicURL.length);
return serve(req, res, sendIndex);
}
}
function sendIndex() {
// If the main asset is an HTML file, serve it
if (bundler.mainBundle.type === 'html') {
req.url = `/${path.basename(bundler.mainBundle.name)}`;
serve(req, res, send404);
} else {
send404();
}
}
function send500(error) {
setHeaders(res);
res.setHeader('Content-Type', 'text/html; charset=utf-8');
res.writeHead(500);
let errorMesssge = '<h1>🚨 Build Error</h1>';
if (process.env.NODE_ENV === 'production') {
errorMesssge += '<p><b>Check the console for details.</b></p>';
} else {
const _logger$formatError = logger.formatError(error, {
color: true
}),
message = _logger$formatError.message,
stack = _logger$formatError.stack;
errorMesssge += `<p><b>${message}</b></p>`;
if (stack) {
errorMesssge += `<div style="background: black; padding: 1rem;">${ansiToHtml.toHtml(stack)}</div>`;
}
}
res.end([`<!doctype html>`, `<head><title>🚨 Build Error</title></head>`, `<body style="font-family: monospace; white-space: pre;">${errorMesssge}</body>`].join(''));
}
function send404() {
if (next) {
return next();
}
setHeaders(res);
res.writeHead(404);
res.end();
}
function logAccessIfVerbose() {
const protocol = req.connection.encrypted ? 'https' : 'http';
const fullUrl = `${protocol}://${req.headers.host}${req.url}`;
logger.verbose(`Request: ${fullUrl}`);
}
};
}
function serve(_x, _x2, _x3) {
return _serve.apply(this, arguments);
}
function _serve() {
_serve = (0, _asyncToGenerator2.default)(function* (bundler, port, host, useHTTPS = false) {
let handler = middleware(bundler);
let server;
if (!useHTTPS) {
server = http.createServer(handler);
} else if (typeof useHTTPS === 'boolean') {
server = https.createServer(generateCertificate(bundler.options), handler);
} else {
server = https.createServer(yield getCertificate(useHTTPS), handler);
}
let freePort = yield getPort({
port
});
server.listen(freePort, host);
return new Promise((resolve, reject) => {
server.on('error', err => {
console.log(err);
logger.error(new Error(serverErrors(err, server.address().port)));
reject(err);
});
server.once('listening', () => {
let addon = server.address().port !== port ? `- ${logger.chalk.yellow(`configured port ${port} could not be used.`)}` : '';
logger.persistent(`Server running at ${logger.chalk.cyan(`${useHTTPS ? 'https' : 'http'}://${host || 'localhost'}:${server.address().port}`)} ${addon}`);
resolve(server);
});
});
});
return _serve.apply(this, arguments);
}
exports.middleware = middleware;
exports.serve = serve;

335
BACK_BACK/node_modules/parcel-bundler/lib/SourceMap.js generated vendored Executable file
View file

@ -0,0 +1,335 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
const _require = require('source-map'),
SourceMapConsumer = _require.SourceMapConsumer,
SourceMapGenerator = _require.SourceMapGenerator;
const lineCounter = require('./utils/lineCounter');
class SourceMap {
constructor(mappings, sources) {
this.mappings = this.purifyMappings(mappings);
this.sources = sources || {};
this.lineCount = null;
}
purifyMappings(mappings) {
if (Array.isArray(mappings)) {
return mappings.filter(mapping => mapping && typeof mapping.original === 'object' && (mapping.original === null || typeof mapping.original.line === 'number' && mapping.original.line > 0 && typeof mapping.original.column === 'number' && mapping.source) && mapping.generated && typeof mapping.generated.line === 'number' && mapping.generated.line > 0 && typeof mapping.generated.column === 'number');
}
return [];
}
getConsumer(map) {
return (0, _asyncToGenerator2.default)(function* () {
if (map instanceof SourceMapConsumer) {
return map;
}
map = typeof map === 'string' ? JSON.parse(map) : map;
if (map.sourceRoot) delete map.sourceRoot;
return new SourceMapConsumer(map);
})();
}
addMap(map, lineOffset = 0, columnOffset = 0) {
var _this = this;
return (0, _asyncToGenerator2.default)(function* () {
if (typeof map === 'string' || typeof map === 'object' && map.version) {
let consumer = yield _this.getConsumer(map);
if (!consumer) return _this;
consumer.eachMapping(mapping => {
_this.addConsumerMapping(mapping, lineOffset, columnOffset);
if (!_this.sources[mapping.source]) {
_this.sources[mapping.source] = consumer.sourceContentFor(mapping.source, true);
}
});
if (consumer.destroy) {
// Only needs to happen in source-map 0.7
consumer.destroy();
}
} else if (map.mappings && map.sources) {
if (!map.eachMapping) {
map = new SourceMap(map.mappings, map.sources);
}
if (lineOffset === 0 && columnOffset === 0) {
_this.mappings = _this.mappings.concat(map.mappings);
} else {
map.eachMapping(mapping => {
_this.addMapping(mapping, lineOffset, columnOffset);
});
}
Object.keys(map.sources).forEach(sourceName => {
if (!_this.sources[sourceName]) {
_this.sources[sourceName] = map.sources[sourceName];
}
});
}
return _this;
})();
}
addMapping(mapping, lineOffset = 0, columnOffset = 0) {
this.mappings.push({
source: mapping.source,
name: mapping.name,
original: mapping.original,
generated: {
line: mapping.generated.line + lineOffset,
column: mapping.generated.column + columnOffset
}
});
}
addConsumerMapping(mapping, lineOffset = 0, columnOffset = 0) {
let original = null;
if (typeof mapping.originalLine === 'number' && mapping.originalLine > 0 && typeof mapping.originalColumn === 'number') {
original = {
line: mapping.originalLine,
column: mapping.originalColumn
};
}
this.mappings.push({
source: original ? mapping.source : null,
name: mapping.name,
original,
generated: {
line: mapping.generatedLine + lineOffset,
column: mapping.generatedColumn + columnOffset
}
});
}
eachMapping(callback) {
this.mappings.forEach(callback);
}
generateEmptyMap(sourceName, sourceContent) {
this.sources[sourceName] = sourceContent;
this.lineCount = lineCounter(sourceContent);
for (let line = 1; line < this.lineCount + 1; line++) {
this.addMapping({
source: sourceName,
original: {
line: line,
column: 0
},
generated: {
line: line,
column: 0
}
});
}
return this;
}
extendSourceMap(original, extension) {
var _this2 = this;
return (0, _asyncToGenerator2.default)(function* () {
if (!(extension instanceof SourceMap)) {
extension = yield new SourceMap().addMap(extension);
}
if (!(original instanceof SourceMap)) {
original = yield _this2.getConsumer(original);
}
extension.eachMapping(mapping => {
let originalMapping = original.originalPositionFor({
line: mapping.original.line,
column: mapping.original.column
});
if (!originalMapping || !originalMapping.line) {
return;
}
_this2.addMapping({
source: originalMapping.source,
name: originalMapping.name,
original: {
line: originalMapping.line,
column: originalMapping.column
},
generated: {
line: mapping.generated.line,
column: mapping.generated.column
}
});
if (!_this2.sources[originalMapping.source]) {
_this2.sources[originalMapping.source] = original.sourceContentFor(originalMapping.source, true);
}
});
if (original.destroy) {
// Only needs to happen in source-map 0.7
original.destroy();
}
return _this2;
})();
}
findClosestGenerated(line, column) {
if (line < 1) {
throw new Error('Line numbers must be >= 1');
}
if (column < 0) {
throw new Error('Column numbers must be >= 0');
}
if (this.mappings.length < 1) {
return undefined;
}
let startIndex = 0;
let stopIndex = this.mappings.length - 1;
let middleIndex = stopIndex + startIndex >>> 1;
while (startIndex < stopIndex && this.mappings[middleIndex].generated.line !== line) {
let mid = this.mappings[middleIndex].generated.line;
if (line < mid) {
stopIndex = middleIndex - 1;
} else if (line > mid) {
startIndex = middleIndex + 1;
}
middleIndex = stopIndex + startIndex >>> 1;
}
let mapping = this.mappings[middleIndex];
if (!mapping || mapping.generated.line !== line) {
return this.mappings.length - 1;
}
while (middleIndex >= 1 && this.mappings[middleIndex - 1].generated.line === line) {
middleIndex--;
}
while (middleIndex < this.mappings.length - 1 && this.mappings[middleIndex + 1].generated.line === line && column > this.mappings[middleIndex].generated.column) {
middleIndex++;
}
return middleIndex;
}
findClosest(line, column, key) {
if (line < 1) {
throw new Error('Line numbers must be >= 1');
}
if (column < 0) {
throw new Error('Column numbers must be >= 0');
}
if (this.mappings.length < 1) {
return undefined;
}
let startIndex = 0;
let stopIndex = this.mappings.length - 1;
let middleIndex = Math.floor((stopIndex + startIndex) / 2);
while (startIndex < stopIndex && this.mappings[middleIndex][key].line !== line) {
if (line < this.mappings[middleIndex][key].line) {
stopIndex = middleIndex - 1;
} else if (line > this.mappings[middleIndex][key].line) {
startIndex = middleIndex + 1;
}
middleIndex = Math.floor((stopIndex + startIndex) / 2);
}
var mapping = this.mappings[middleIndex];
if (!mapping || mapping[key].line !== line) {
return this.mappings.length - 1;
}
while (middleIndex >= 1 && this.mappings[middleIndex - 1][key].line === line) {
middleIndex--;
}
while (middleIndex < this.mappings.length - 1 && this.mappings[middleIndex + 1][key].line === line && column > this.mappings[middleIndex][key].column) {
middleIndex++;
}
return middleIndex;
}
originalPositionFor(generatedPosition) {
let index = this.findClosestGenerated(generatedPosition.line, generatedPosition.column);
let mapping = this.mappings[index];
if (!mapping || !mapping.original) {
return null;
}
return {
source: mapping.source,
name: mapping.name,
line: mapping.original.line,
column: mapping.original.column
};
}
generatedPositionFor(originalPosition) {
let index = this.findClosest(originalPosition.line, originalPosition.column, 'original');
let mapping = this.mappings[index];
return {
source: mapping.source,
name: mapping.name,
line: mapping.generated.line,
column: mapping.generated.column
};
}
sourceContentFor(fileName) {
return this.sources[fileName];
}
offset(lineOffset = 0, columnOffset = 0) {
this.mappings.map(mapping => {
mapping.generated.line = mapping.generated.line + lineOffset;
mapping.generated.column = mapping.generated.column + columnOffset;
return mapping;
});
if (this.lineCount != null) {
this.lineCount += lineOffset;
}
}
stringify(file, sourceRoot) {
let generator = new SourceMapGenerator({
file,
sourceRoot
});
this.eachMapping(mapping => generator.addMapping(mapping));
Object.keys(this.sources).forEach(sourceName => generator.setSourceContent(sourceName, this.sources[sourceName]));
return generator.toString();
}
}
module.exports = SourceMap;

287
BACK_BACK/node_modules/parcel-bundler/lib/assets/CSSAsset.js generated vendored Executable file
View file

@ -0,0 +1,287 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _toArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toArray"));
const Asset = require('../Asset');
const postcss = require('postcss');
const valueParser = require('postcss-value-parser');
const postcssTransform = require('../transforms/postcss');
const CssSyntaxError = require('postcss/lib/css-syntax-error');
const SourceMap = require('../SourceMap');
const loadSourceMap = require('../utils/loadSourceMap');
const path = require('path');
const urlJoin = require('../utils/urlJoin');
const isURL = require('../utils/is-url');
const URL_RE = /url\s*\("?(?![a-z]+:)/;
const IMPORT_RE = /@import/;
const COMPOSES_RE = /composes:.+from\s*("|').*("|')\s*;?/;
const FROM_IMPORT_RE = /.+from\s*(?:"|')(.*)(?:"|')\s*;?/;
const PROTOCOL_RE = /^[a-z]+:/;
class CSSAsset extends Asset {
constructor(name, options) {
super(name, options);
this.type = 'css';
this.previousSourceMap = this.options.rendition ? this.options.rendition.map : null;
}
mightHaveDependencies() {
return !/\.css$/.test(this.name) || IMPORT_RE.test(this.contents) || COMPOSES_RE.test(this.contents) || URL_RE.test(this.contents);
}
parse(code) {
let root = postcss.parse(code, {
from: this.name
});
return new CSSAst(code, root);
}
collectDependencies() {
this.ast.root.walkAtRules('import', rule => {
let params = valueParser(rule.params);
let _params$nodes = (0, _toArray2.default)(params.nodes),
name = _params$nodes[0],
media = _params$nodes.slice(1);
let dep;
if (name.type === 'function' && name.value === 'url' && name.nodes.length) {
name = name.nodes[0];
}
dep = name.value;
if (!dep) {
throw new Error('Could not find import name for ' + rule);
}
if (PROTOCOL_RE.test(dep)) {
return;
} // If this came from an inline <style> tag, don't inline the imported file. Replace with the correct URL instead.
// TODO: run CSSPackager on inline style tags.
let inlineHTML = this.options.rendition && this.options.rendition.inlineHTML;
if (inlineHTML) {
name.value = this.addURLDependency(dep, {
loc: rule.source.start
});
rule.params = params.toString();
} else {
media = valueParser.stringify(media).trim();
this.addDependency(dep, {
media,
loc: rule.source.start
});
rule.remove();
}
this.ast.dirty = true;
});
this.ast.root.walkDecls(decl => {
if (URL_RE.test(decl.value)) {
let parsed = valueParser(decl.value);
let dirty = false;
parsed.walk(node => {
if (node.type === 'function' && node.value === 'url' && node.nodes.length) {
let url = this.addURLDependency(node.nodes[0].value, {
loc: decl.source.start
});
if (!isURL(url)) {
url = urlJoin(this.options.publicURL, url);
}
dirty = node.nodes[0].value !== url;
node.nodes[0].value = url;
}
});
if (dirty) {
decl.value = parsed.toString();
this.ast.dirty = true;
}
}
if (decl.prop === 'composes' && FROM_IMPORT_RE.test(decl.value)) {
let parsed = valueParser(decl.value);
parsed.walk(node => {
if (node.type === 'string') {
const _FROM_IMPORT_RE$exec = FROM_IMPORT_RE.exec(decl.value),
_FROM_IMPORT_RE$exec2 = (0, _slicedToArray2.default)(_FROM_IMPORT_RE$exec, 2),
importPath = _FROM_IMPORT_RE$exec2[1];
this.addURLDependency(importPath, {
dynamic: false,
loc: decl.source.start
});
}
});
}
});
}
pretransform() {
var _this = this;
return (0, _asyncToGenerator2.default)(function* () {
if (_this.options.sourceMaps && !_this.previousSourceMap) {
_this.previousSourceMap = yield loadSourceMap(_this);
}
})();
}
transform() {
var _this2 = this;
return (0, _asyncToGenerator2.default)(function* () {
yield postcssTransform(_this2);
})();
}
getCSSAst() {
// Converts the ast to a CSS ast if needed, so we can apply postcss transforms.
if (!(this.ast instanceof CSSAst)) {
this.ast = CSSAsset.prototype.parse.call(this, this.ast.render(this.name));
}
return this.ast.root;
}
generate() {
var _this3 = this;
return (0, _asyncToGenerator2.default)(function* () {
let css;
if (_this3.ast) {
let result = _this3.ast.render(_this3.name);
css = result.css;
if (result.map) _this3.sourceMap = result.map;
} else {
css = _this3.contents;
}
let js = '';
if (_this3.options.hmr) {
_this3.addDependency('_css_loader');
js = `
var reloadCSS = require('_css_loader');
module.hot.dispose(reloadCSS);
module.hot.accept(reloadCSS);
`;
}
if (_this3.cssModules) {
js += 'module.exports = ' + JSON.stringify(_this3.cssModules, null, 2) + ';';
}
if (_this3.options.sourceMaps) {
if (_this3.sourceMap) {
_this3.sourceMap = yield new SourceMap().addMap(_this3.sourceMap);
}
if (_this3.previousSourceMap) {
_this3.previousSourceMap.sources = _this3.previousSourceMap.sources.map(v => path.join(path.dirname(_this3.relativeName), _this3.previousSourceMap.sourceRoot || '', v));
if (_this3.sourceMap) {
_this3.sourceMap = yield new SourceMap().extendSourceMap(_this3.previousSourceMap, _this3.sourceMap);
} else {
_this3.sourceMap = yield new SourceMap().addMap(_this3.previousSourceMap);
}
} else if (!_this3.sourceMap) {
_this3.sourceMap = new SourceMap().generateEmptyMap(_this3.relativeName, css);
}
}
return [{
type: 'css',
value: css,
cssModules: _this3.cssModules,
map: _this3.sourceMap
}, {
type: 'js',
value: js,
hasDependencies: false
}];
})();
}
generateErrorMessage(err) {
// Wrap the error in a CssSyntaxError if needed so we can generate a code frame
if (err.loc && !err.showSourceCode) {
err = new CssSyntaxError(err.message, err.loc.line, err.loc.column, this.contents);
}
err.message = err.reason || err.message;
err.loc = {
line: err.line,
column: err.column
};
if (err.showSourceCode) {
err.codeFrame = err.showSourceCode();
err.highlightedCodeFrame = err.showSourceCode(true);
}
return err;
}
}
class CSSAst {
constructor(css, root) {
this.css = css;
this.root = root;
this.dirty = false;
}
render(name) {
if (this.dirty) {
let _this$root$toResult = this.root.toResult({
to: name,
map: {
inline: false,
annotation: false,
sourcesContent: true
}
}),
css = _this$root$toResult.css,
map = _this$root$toResult.map;
this.css = css;
return {
css: this.css,
map: map ? map.toJSON() : null
};
}
return {
css: this.css
};
}
}
module.exports = CSSAsset;

View file

@ -0,0 +1,45 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
const Asset = require('../Asset');
const localRequire = require('../utils/localRequire');
class CoffeeScriptAsset extends Asset {
constructor(name, options) {
super(name, options);
this.type = 'js';
}
generate() {
var _this = this;
return (0, _asyncToGenerator2.default)(function* () {
// require coffeescript, installed locally in the app
let coffee = yield localRequire('coffeescript', _this.name); // Transpile Module using CoffeeScript and parse result as ast format through babylon
let transpiled = coffee.compile(_this.contents, {
sourceMap: _this.options.sourceMaps
});
let sourceMap;
if (transpiled.sourceMap) {
sourceMap = transpiled.sourceMap.generate();
sourceMap.sources = [_this.relativeName];
sourceMap.sourcesContent = [_this.contents];
}
return [{
type: 'js',
value: _this.options.sourceMaps ? transpiled.js : transpiled,
map: sourceMap
}];
})();
}
}
module.exports = CoffeeScriptAsset;

172
BACK_BACK/node_modules/parcel-bundler/lib/assets/ElmAsset.js generated vendored Executable file
View file

@ -0,0 +1,172 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
const Asset = require('../Asset');
const commandExists = require('command-exists');
const localRequire = require('../utils/localRequire');
const _require = require('terser'),
minify = _require.minify;
const path = require('path');
const spawn = require('cross-spawn');
class ElmAsset extends Asset {
constructor(name, options) {
super(name, options);
this.type = 'js';
}
parse() {
var _this = this;
return (0, _asyncToGenerator2.default)(function* () {
let options = {
cwd: path.dirname(_this.name)
}; // If elm is not installed globally, install it locally.
try {
yield commandExists('elm');
} catch (err) {
yield localRequire('elm', _this.name);
options.pathToElm = path.join(path.dirname(require.resolve('elm')), 'bin', 'elm');
}
_this.elm = yield localRequire('node-elm-compiler', _this.name); // Ensure that an elm.json file exists, and initialize one if not.
let elmConfig = yield _this.getConfig(['elm.json'], {
load: false
});
if (!elmConfig) {
yield _this.createElmConfig(options); // Ensure we are watching elm.json for changes
yield _this.getConfig(['elm.json'], {
load: false
});
}
options.debug = !_this.options.production;
if (_this.options.minify) {
options.optimize = true;
}
_this.elmOpts = options;
})();
}
collectDependencies() {
var _this2 = this;
return (0, _asyncToGenerator2.default)(function* () {
let dependencies = yield _this2.elm.findAllDependencies(_this2.name);
var _iterator = _createForOfIteratorHelper(dependencies),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
let dependency = _step.value;
_this2.addDependency(dependency, {
includedInParent: true
});
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
})();
}
createElmConfig(options) {
return (0, _asyncToGenerator2.default)(function* () {
let cp = spawn(options.pathToElm || 'elm', ['init']);
cp.stdin.write('y\n');
return new Promise((resolve, reject) => {
cp.on('error', reject);
cp.on('close', function (code) {
if (code !== 0) {
return reject(new Error('elm init failed.'));
}
return resolve();
});
});
})();
}
generate() {
var _this3 = this;
return (0, _asyncToGenerator2.default)(function* () {
let compiled = yield _this3.elm.compileToString(_this3.name, _this3.elmOpts);
_this3.contents = compiled.toString();
if (_this3.options.hmr) {
let _yield$localRequire = yield localRequire('elm-hot', _this3.name),
inject = _yield$localRequire.inject;
_this3.contents = inject(_this3.contents);
}
let output = _this3.contents;
if (_this3.options.minify) {
output = pack(output);
}
return {
[_this3.type]: output
}; // Recommended minification
// Based on:
// - http://elm-lang.org/0.19.0/optimize
function pack(source) {
let options = {
compress: {
keep_fargs: false,
passes: 2,
pure_funcs: ['F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9'],
pure_getters: true,
unsafe: true,
unsafe_comps: true
},
mangle: true,
rename: false
};
let result = minify(source, options);
if (result.error) {
throw result.error;
}
return result.code;
}
})();
}
generateErrorMessage(err) {
// The generated stack is not useful, but other code may
// expect it and try to print it, so make it an empty string.
err.stack = '';
return err;
}
}
module.exports = ElmAsset;

100
BACK_BACK/node_modules/parcel-bundler/lib/assets/GLSLAsset.js generated vendored Executable file
View file

@ -0,0 +1,100 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
const Asset = require('../Asset');
const localRequire = require('../utils/localRequire');
const path = require('path');
const _require = require('@parcel/utils'),
promisify = _require.promisify;
const Resolver = require('../Resolver');
class GLSLAsset extends Asset {
constructor(name, options) {
super(name, options);
this.type = 'js';
}
parse() {
var _this = this;
return (0, _asyncToGenerator2.default)(function* () {
const glslifyDeps = yield localRequire('glslify-deps', _this.name); // Use the Parcel resolver rather than the default glslify one.
// This adds support for parcel features like aliases, and tilde paths.
const resolver = new Resolver({
extensions: ['.glsl', '.vert', '.frag'],
rootDir: _this.options.rootDir
}); // Parse and collect dependencies with glslify-deps
let cwd = path.dirname(_this.name);
let depper = glslifyDeps({
cwd,
resolve: function () {
var _resolve = (0, _asyncToGenerator2.default)(function* (target, opts, next) {
try {
let res = yield resolver.resolve(target, path.join(opts.basedir, 'index'));
next(null, res.path);
} catch (err) {
next(err);
}
});
function resolve(_x, _x2, _x3) {
return _resolve.apply(this, arguments);
}
return resolve;
}()
});
return promisify(depper.inline.bind(depper))(_this.contents, cwd);
})();
}
collectDependencies() {
var _iterator = _createForOfIteratorHelper(this.ast),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
let dep = _step.value;
if (!dep.entry) {
this.addDependency(dep.file, {
includedInParent: true
});
}
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
}
generate() {
var _this2 = this;
return (0, _asyncToGenerator2.default)(function* () {
// Generate the bundled glsl file
const glslifyBundle = yield localRequire('glslify-bundle', _this2.name);
let glsl = glslifyBundle(_this2.ast);
return `module.exports=${JSON.stringify(glsl)};`;
})();
}
}
module.exports = GLSLAsset;

109
BACK_BACK/node_modules/parcel-bundler/lib/assets/GlobAsset.js generated vendored Executable file
View file

@ -0,0 +1,109 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
const Asset = require('../Asset');
const micromatch = require('micromatch');
const path = require('path');
const _require = require('../utils/glob'),
glob = _require.glob;
class GlobAsset extends Asset {
constructor(name, options) {
super(name, options);
this.type = null; // allows this asset to be included in any type bundle
}
load() {
var _this = this;
return (0, _asyncToGenerator2.default)(function* () {
let regularExpressionSafeName = _this.name;
if (process.platform === 'win32') regularExpressionSafeName = regularExpressionSafeName.replace(/\\/g, '/');
let files = yield glob(regularExpressionSafeName, {
onlyFiles: true
});
let re = micromatch.makeRe(regularExpressionSafeName, {
capture: true
});
let matches = {};
var _iterator = _createForOfIteratorHelper(files),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
let file = _step.value;
let match = file.match(re);
let parts = match.slice(1).filter(Boolean).reduce((a, p) => a.concat(p.split('/')), []);
let relative = './' + path.relative(path.dirname(_this.name), file.normalize('NFC'));
set(matches, parts, relative);
_this.addDependency(relative);
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
return matches;
})();
}
generate() {
return [{
type: 'js',
value: 'module.exports = ' + generate(this.contents) + ';'
}];
}
}
function generate(matches, indent = '') {
if (typeof matches === 'string') {
return `require(${JSON.stringify(matches)})`;
}
let res = indent + '{';
let first = true;
for (let key in matches) {
if (!first) {
res += ',';
}
res += `\n${indent} ${JSON.stringify(key)}: ${generate(matches[key], indent + ' ')}`;
first = false;
}
res += '\n' + indent + '}';
return res;
}
function set(obj, path, value) {
for (let i = 0; i < path.length - 1; i++) {
let part = path[i];
if (obj[part] == null) {
obj[part] = {};
}
obj = obj[part];
}
obj[path[path.length - 1]] = value;
}
module.exports = GlobAsset;

View file

@ -0,0 +1,100 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
const Asset = require('../Asset');
const localRequire = require('../utils/localRequire');
const Resolver = require('../Resolver');
const fs = require('@parcel/fs');
const os = require('os');
const IMPORT_RE = /^# *import +['"](.*)['"] *;? *$/;
class GraphqlAsset extends Asset {
constructor(name, options) {
super(name, options);
this.type = 'js';
this.gqlMap = new Map();
this.gqlResolver = new Resolver(Object.assign({}, this.options, {
extensions: ['.gql', '.graphql']
}));
}
traverseImports(name, code) {
var _this = this;
return (0, _asyncToGenerator2.default)(function* () {
_this.gqlMap.set(name, code);
yield Promise.all(code.split(/\r\n?|\n/).map(line => line.match(IMPORT_RE)).filter(match => !!match).map( /*#__PURE__*/function () {
var _ref = (0, _asyncToGenerator2.default)(function* ([, importName]) {
let _yield$_this$gqlResol = yield _this.gqlResolver.resolve(importName, name),
resolved = _yield$_this$gqlResol.path;
if (_this.gqlMap.has(resolved)) {
return;
}
let code = yield fs.readFile(resolved, 'utf8');
yield _this.traverseImports(resolved, code);
});
return function (_x) {
return _ref.apply(this, arguments);
};
}()));
})();
}
collectDependencies() {
var _iterator = _createForOfIteratorHelper(this.gqlMap),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
let _step$value = (0, _slicedToArray2.default)(_step.value, 1),
path = _step$value[0];
this.addDependency(path, {
includedInParent: true
});
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
}
parse(code) {
var _this2 = this;
return (0, _asyncToGenerator2.default)(function* () {
let gql = yield localRequire('graphql-tag', _this2.name);
yield _this2.traverseImports(_this2.name, code);
const allCodes = [..._this2.gqlMap.values()].join(os.EOL);
return gql(allCodes);
})();
}
generate() {
return `module.exports=${JSON.stringify(this.ast, null, 2)};`;
}
}
module.exports = GraphqlAsset;

319
BACK_BACK/node_modules/parcel-bundler/lib/assets/HTMLAsset.js generated vendored Executable file
View file

@ -0,0 +1,319 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
const Asset = require('../Asset');
const api = require('posthtml/lib/api');
const urlJoin = require('../utils/urlJoin');
const render = require('posthtml-render');
const posthtmlTransform = require('../transforms/posthtml');
const htmlnanoTransform = require('../transforms/htmlnano');
const isURL = require('../utils/is-url'); // A list of all attributes that may produce a dependency
// Based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes
const ATTRS = {
src: ['script', 'img', 'audio', 'video', 'source', 'track', 'iframe', 'embed'],
href: ['link', 'a', 'use'],
srcset: ['img', 'source'],
poster: ['video'],
'xlink:href': ['use', 'image'],
content: ['meta'],
data: ['object']
}; // A list of metadata that should produce a dependency
// Based on:
// - http://schema.org/
// - http://ogp.me
// - https://developer.twitter.com/en/docs/tweets/optimize-with-cards/overview/markup
// - https://msdn.microsoft.com/en-us/library/dn255024.aspx
const META = {
property: ['og:image', 'og:image:url', 'og:image:secure_url', 'og:audio', 'og:audio:secure_url', 'og:video', 'og:video:secure_url'],
name: ['twitter:image', 'msapplication-square150x150logo', 'msapplication-square310x310logo', 'msapplication-square70x70logo', 'msapplication-wide310x150logo', 'msapplication-TileImage', 'msapplication-config'],
itemprop: ['image', 'logo', 'screenshot', 'thumbnailUrl', 'contentUrl', 'downloadUrl']
};
const SCRIPT_TYPES = {
'application/javascript': 'js',
'text/javascript': 'js',
'application/json': false,
'application/ld+json': 'jsonld',
'text/html': false
}; // Options to be passed to `addURLDependency` for certain tags + attributes
const OPTIONS = {
a: {
href: {
entry: true
}
},
iframe: {
src: {
entry: true
}
}
};
class HTMLAsset extends Asset {
constructor(name, options) {
super(name, options);
this.type = 'html';
this.isAstDirty = false;
this.hmrPageReload = true;
}
parse(code) {
var _this = this;
return (0, _asyncToGenerator2.default)(function* () {
let res = yield posthtmlTransform.parse(code, _this);
res.walk = api.walk;
res.match = api.match;
return res;
})();
}
processSingleDependency(path, opts) {
let assetPath = this.addURLDependency(path, opts);
if (!isURL(assetPath)) {
assetPath = urlJoin(this.options.publicURL, assetPath);
}
return assetPath;
}
collectSrcSetDependencies(srcset, opts) {
const newSources = [];
var _iterator = _createForOfIteratorHelper(srcset.split(',')),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
const source = _step.value;
const pair = source.trim().split(' ');
if (pair.length === 0) continue;
pair[0] = this.processSingleDependency(pair[0], opts);
newSources.push(pair.join(' '));
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
return newSources.join(',');
}
getAttrDepHandler(attr) {
if (attr === 'srcset') {
return this.collectSrcSetDependencies;
}
return this.processSingleDependency;
}
collectDependencies() {
let ast = this.ast; // Add bundled dependencies from plugins like posthtml-extend or posthtml-include, if any
if (ast.messages) {
ast.messages.forEach(message => {
if (message.type === 'dependency') {
this.addDependency(message.file, {
includedInParent: true
});
}
});
}
ast.walk(node => {
if (node.attrs) {
if (node.tag === 'meta') {
if (!Object.keys(node.attrs).some(attr => {
let values = META[attr];
return values && values.includes(node.attrs[attr]) && node.attrs.content !== '';
})) {
return node;
}
}
if (node.tag === 'link' && node.attrs.rel === 'manifest' && node.attrs.href) {
node.attrs.href = this.getAttrDepHandler('href').call(this, node.attrs.href, {
entry: true
});
this.isAstDirty = true;
return node;
}
for (let attr in node.attrs) {
const attrVal = node.attrs[attr];
if (!attrVal) {
continue;
} // Check for virtual paths
if (node.tag === 'a' && attrVal.lastIndexOf('.') < 1) {
continue;
}
let elements = ATTRS[attr];
if (elements && elements.includes(node.tag)) {
let depHandler = this.getAttrDepHandler(attr);
let options = OPTIONS[node.tag];
node.attrs[attr] = depHandler.call(this, attrVal, options && options[attr]);
this.isAstDirty = true;
}
}
}
return node;
});
}
pretransform() {
var _this2 = this;
return (0, _asyncToGenerator2.default)(function* () {
yield posthtmlTransform.transform(_this2);
})();
}
transform() {
var _this3 = this;
return (0, _asyncToGenerator2.default)(function* () {
if (_this3.options.minify) {
yield htmlnanoTransform(_this3);
}
})();
}
generate() {
var _this4 = this;
return (0, _asyncToGenerator2.default)(function* () {
// Extract inline <script> and <style> tags for processing.
let parts = [];
if (_this4.ast) {
_this4.ast.walk(node => {
if (node.tag === 'script' || node.tag === 'style') {
let value = node.content && node.content.join('').trim();
if (value) {
let type;
if (node.tag === 'style') {
if (node.attrs && node.attrs.type) {
type = node.attrs.type.split('/')[1];
} else {
type = 'css';
}
} else if (node.attrs && node.attrs.type) {
// Skip JSON
if (SCRIPT_TYPES[node.attrs.type] === false) {
return node;
}
if (SCRIPT_TYPES[node.attrs.type]) {
type = SCRIPT_TYPES[node.attrs.type];
} else {
type = node.attrs.type.split('/')[1];
}
} else {
type = 'js';
}
parts.push({
type,
value,
inlineHTML: true,
meta: {
type: 'tag',
node
}
});
}
} // Process inline style attributes.
if (node.attrs && node.attrs.style) {
parts.push({
type: 'css',
value: node.attrs.style,
meta: {
type: 'attr',
node
}
});
}
return node;
});
}
return parts;
})();
}
postProcess(generated) {
var _this5 = this;
return (0, _asyncToGenerator2.default)(function* () {
// Replace inline scripts and styles with processed results.
var _iterator2 = _createForOfIteratorHelper(generated),
_step2;
try {
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
let rendition = _step2.value;
let _rendition$meta = rendition.meta,
type = _rendition$meta.type,
node = _rendition$meta.node;
if (type === 'attr' && rendition.type === 'css') {
node.attrs.style = rendition.value;
} else if (type === 'tag') {
if (rendition.isMain) {
node.content = rendition.value;
} // Delete "type" attribute, since CSS and JS are the defaults.
// Unless it's application/ld+json
if (node.attrs && (node.tag === 'style' || node.attrs.type && SCRIPT_TYPES[node.attrs.type] === 'js')) {
delete node.attrs.type;
}
}
}
} catch (err) {
_iterator2.e(err);
} finally {
_iterator2.f();
}
return [{
type: 'html',
value: render(_this5.ast)
}];
})();
}
}
module.exports = HTMLAsset;

253
BACK_BACK/node_modules/parcel-bundler/lib/assets/JSAsset.js generated vendored Executable file
View file

@ -0,0 +1,253 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
const traverse = require('@babel/traverse').default;
const codeFrame = require('@babel/code-frame').codeFrameColumns;
const collectDependencies = require('../visitors/dependencies');
const walk = require('babylon-walk');
const Asset = require('../Asset');
const babelParser = require('@babel/parser');
const insertGlobals = require('../visitors/globals');
const fsVisitor = require('../visitors/fs');
const envVisitor = require('../visitors/env');
const processVisitor = require('../visitors/process');
const babel = require('../transforms/babel/transform');
const babel7 = require('../transforms/babel/babel7');
const generate = require('@babel/generator').default;
const terser = require('../transforms/terser');
const SourceMap = require('../SourceMap');
const hoist = require('../scope-hoisting/hoist');
const loadSourceMap = require('../utils/loadSourceMap');
const isAccessedVarChanged = require('../utils/isAccessedVarChanged');
const IMPORT_RE = /\b(?:import\b|export\b|require\s*\()/;
const ENV_RE = /\b(?:process\.env)\b/;
const BROWSER_RE = /\b(?:process\.browser)\b/;
const GLOBAL_RE = /\b(?:process|__dirname|__filename|global|Buffer|define)\b/;
const FS_RE = /\breadFileSync\b/;
const SW_RE = /\bnavigator\s*\.\s*serviceWorker\s*\.\s*register\s*\(/;
const WORKER_RE = /\bnew\s*(?:Shared)?Worker\s*\(/;
class JSAsset extends Asset {
constructor(name, options) {
super(name, options);
this.type = 'js';
this.globals = new Map();
this.isAstDirty = false;
this.isES6Module = false;
this.outputCode = null;
this.cacheData.env = {};
this.rendition = options.rendition;
this.sourceMap = this.rendition ? this.rendition.map : null;
}
shouldInvalidate(cacheData) {
return isAccessedVarChanged(cacheData);
}
mightHaveDependencies() {
return this.isAstDirty || !/\.js$/.test(this.name) || IMPORT_RE.test(this.contents) || GLOBAL_RE.test(this.contents) || SW_RE.test(this.contents) || WORKER_RE.test(this.contents);
}
parse(code) {
var _this = this;
return (0, _asyncToGenerator2.default)(function* () {
return babelParser.parse(code, {
filename: _this.name,
allowReturnOutsideFunction: true,
strictMode: false,
sourceType: 'module',
plugins: ['exportDefaultFrom', 'exportNamespaceFrom', 'dynamicImport']
});
})();
}
traverse(visitor) {
return traverse(this.ast, visitor, null, this);
}
traverseFast(visitor) {
return walk.simple(this.ast, visitor, this);
}
collectDependencies() {
walk.ancestor(this.ast, collectDependencies, this);
}
pretransform() {
var _this2 = this;
return (0, _asyncToGenerator2.default)(function* () {
if (_this2.options.sourceMaps && !_this2.sourceMap) {
_this2.sourceMap = yield loadSourceMap(_this2);
}
yield babel(_this2); // Inline environment variables
if (_this2.options.target === 'browser' && ENV_RE.test(_this2.contents)) {
yield _this2.parseIfNeeded();
_this2.traverseFast(envVisitor);
} // Inline process.browser
if (_this2.options.target === 'browser' && BROWSER_RE.test(_this2.contents)) {
yield _this2.parseIfNeeded();
_this2.traverse(processVisitor);
_this2.isAstDirty = true;
}
})();
}
transform() {
var _this3 = this;
return (0, _asyncToGenerator2.default)(function* () {
if (_this3.options.target === 'browser') {
if (_this3.dependencies.has('fs') && FS_RE.test(_this3.contents)) {
// Check if we should ignore fs calls
// See https://github.com/defunctzombie/node-browser-resolve#skip
let pkg = yield _this3.getPackage();
let ignore = pkg && pkg.browser && pkg.browser.fs === false;
if (!ignore) {
yield _this3.parseIfNeeded();
_this3.traverse(fsVisitor);
}
}
if (GLOBAL_RE.test(_this3.contents)) {
yield _this3.parseIfNeeded();
walk.ancestor(_this3.ast, insertGlobals, _this3);
}
}
if (_this3.options.scopeHoist) {
yield _this3.parseIfNeeded();
yield _this3.getPackage();
_this3.traverse(hoist);
_this3.isAstDirty = true;
} else {
if (_this3.isES6Module) {
yield babel7(_this3, {
internal: true,
config: {
plugins: [require('@babel/plugin-transform-modules-commonjs')]
}
});
}
}
if (_this3.options.minify) {
yield terser(_this3);
}
})();
}
generate() {
var _this4 = this;
return (0, _asyncToGenerator2.default)(function* () {
let code;
if (_this4.isAstDirty) {
let opts = {
sourceMaps: _this4.options.sourceMaps,
sourceFileName: _this4.relativeName
};
let generated = generate(_this4.ast, opts, _this4.contents);
if (_this4.options.sourceMaps && generated.rawMappings) {
let rawMap = new SourceMap(generated.rawMappings, {
[_this4.relativeName]: _this4.contents
}); // Check if we already have a source map (e.g. from TypeScript or CoffeeScript)
// In that case, we need to map the original source map to the babel generated one.
if (_this4.sourceMap) {
_this4.sourceMap = yield new SourceMap().extendSourceMap(_this4.sourceMap, rawMap);
} else {
_this4.sourceMap = rawMap;
}
}
code = generated.code;
} else {
code = _this4.outputCode != null ? _this4.outputCode : _this4.contents;
}
if (_this4.options.sourceMaps && !_this4.sourceMap) {
_this4.sourceMap = new SourceMap().generateEmptyMap(_this4.relativeName, _this4.contents);
}
if (_this4.globals.size > 0) {
code = Array.from(_this4.globals.values()).join('\n') + '\n' + code;
if (_this4.options.sourceMaps) {
if (!(_this4.sourceMap instanceof SourceMap)) {
_this4.sourceMap = yield new SourceMap().addMap(_this4.sourceMap);
}
_this4.sourceMap.offset(_this4.globals.size);
}
}
return [{
type: 'js',
value: code,
map: _this4.sourceMap
}];
})();
}
generateErrorMessage(err) {
const loc = err.loc;
if (loc) {
// Babel 7 adds its own code frame on the error message itself
// We need to remove it and pass it separately.
if (err.message.startsWith(this.name)) {
err.message = err.message.slice(this.name.length + 1, err.message.indexOf('\n')).trim();
}
err.codeFrame = codeFrame(this.contents, {
start: loc
});
err.highlightedCodeFrame = codeFrame(this.contents, {
start: loc
}, {
highlightCode: true
});
}
return err;
}
}
module.exports = JSAsset;

View file

@ -0,0 +1,40 @@
"use strict";
const Asset = require('../Asset');
const path = require('path');
const json5 = require('json5');
const _require = require('terser'),
minify = _require.minify;
class JSONAsset extends Asset {
constructor(name, options) {
super(name, options);
this.type = 'js';
}
parse(code) {
return path.extname(this.name) === '.json5' ? json5.parse(code) : null;
}
generate() {
let code = `module.exports = ${this.ast ? JSON.stringify(this.ast, null, 2) : this.contents};`;
if (this.options.minify && !this.options.scopeHoist) {
let minified = minify(code);
if (minified.error) {
throw minified.error;
}
code = minified.code;
}
return code;
}
}
module.exports = JSONAsset;

View file

@ -0,0 +1,76 @@
"use strict";
const urlJoin = require('../utils/urlJoin');
const isURL = require('../utils/is-url');
const Asset = require('../Asset');
const logger = require('@parcel/logger'); // A list of all attributes in a schema that may produce a dependency
// Based on https://schema.org/ImageObject
// Section "Instances of ImageObject may appear as values for the following properties"
const SCHEMA_ATTRS = ['logo', 'photo', 'image', 'thumbnail', 'screenshot', 'primaryImageOfPage', 'embedUrl', 'thumbnailUrl', 'video', 'contentUrl'];
class JSONLDAsset extends Asset {
constructor(name, options) {
super(name, options);
this.type = 'jsonld';
}
parse(content) {
return JSON.parse(content.trim());
}
collectDependencies() {
if (!this.options.publicURL.startsWith('http')) {
logger.warn("Please specify a publicURL using --public-url, otherwise schema assets won't be collected");
return;
}
for (let schemaKey in this.ast) {
if (SCHEMA_ATTRS.includes(schemaKey)) {
this.collectFromKey(this.ast, schemaKey);
this.isAstDirty = true;
}
}
} // Auxiliary method for collectDependencies() to use for recursion
collectFromKey(schema, schemaKey) {
if (!schema.hasOwnProperty(schemaKey)) {
return;
} // values can be strings or objects
// if it's not a string, it should have a url
if (typeof schema[schemaKey] === 'string') {
let assetPath = this.addURLDependency(schema[schemaKey]);
if (!isURL(assetPath)) {
// paths aren't allowed, values must be urls
assetPath = urlJoin(this.options.publicURL, assetPath);
}
schema[schemaKey] = assetPath;
} else if (Array.isArray(schema[schemaKey])) {
Object.keys(schema[schemaKey]).forEach(i => {
this.collectFromKey(schema[schemaKey], i);
});
} else {
this.collectFromKey(schema[schemaKey], 'url');
}
}
generate() {
if (this.options.production) {
return JSON.stringify(this.ast);
} else {
return JSON.stringify(this.ast, null, 2);
}
}
}
module.exports = JSONLDAsset;

View file

@ -0,0 +1,65 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
const Asset = require('../Asset');
const localRequire = require('../utils/localRequire');
const path = require('path');
const fs = require('@parcel/fs');
const os = require('os');
class KotlinAsset extends Asset {
constructor(name, options) {
super(name, options);
this.type = 'js';
}
generate() {
var _this = this;
return (0, _asyncToGenerator2.default)(function* () {
// require kotlin
const kotlinCompiler = yield localRequire('@jetbrains/kotlinc-js-api', _this.name);
let id = Math.random().toString(36).slice(3);
let dir = path.join(os.tmpdir(), id);
let filename = path.join(dir, id + '.js');
yield fs.mkdirp(dir);
yield kotlinCompiler.compile({
output: filename,
sources: [_this.name],
moduleKind: 'commonjs',
noStdlib: false,
metaInfo: true,
sourceMaps: _this.options.sourceMaps
});
let source = yield fs.readFile(filename, 'utf8');
let sourceMap;
if (_this.options.sourceMaps) {
sourceMap = yield fs.readFile(filename + '.map', 'utf8');
sourceMap = JSON.parse(sourceMap);
sourceMap.sources = [_this.relativeName];
sourceMap.sourcesContent = [_this.contents]; // remove source map url
source = source.substring(0, source.lastIndexOf('//# sourceMappingURL'));
} // delete temp directory
yield fs.rimraf(dir);
return [{
type: 'js',
value: source,
sourceMap
}];
})();
}
}
module.exports = KotlinAsset;

141
BACK_BACK/node_modules/parcel-bundler/lib/assets/LESSAsset.js generated vendored Executable file
View file

@ -0,0 +1,141 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
const Asset = require('../Asset');
const localRequire = require('../utils/localRequire');
const _require = require('@parcel/utils'),
promisify = _require.promisify;
const Resolver = require('../Resolver');
const fs = require('@parcel/fs');
const path = require('path');
const parseCSSImport = require('../utils/parseCSSImport');
class LESSAsset extends Asset {
constructor(name, options) {
super(name, options);
this.type = 'css';
}
parse(code) {
var _this = this;
return (0, _asyncToGenerator2.default)(function* () {
// less should be installed locally in the module that's being required
let less = yield localRequire('less', _this.name);
let render = promisify(less.render.bind(less));
let opts = (yield _this.getConfig(['.lessrc', '.lessrc.js'], {
packageKey: 'less'
})) || {};
opts.filename = _this.name;
opts.plugins = (opts.plugins || []).concat(urlPlugin(_this));
if (_this.options.sourceMaps) {
opts.sourceMap = {
outputSourceFiles: true
};
}
return render(code, opts);
})();
}
collectDependencies() {
var _iterator = _createForOfIteratorHelper(this.ast.imports),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
let dep = _step.value;
this.addDependency(dep, {
includedInParent: true
});
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
}
generate() {
let map;
if (this.ast && this.ast.map) {
map = JSON.parse(this.ast.map.toString());
map.sources = map.sources.map(v => path.relative(this.options.rootDir, v));
}
return [{
type: 'css',
value: this.ast ? this.ast.css : '',
hasDependencies: false,
map
}];
}
}
function urlPlugin(asset) {
return {
install: (less, pluginManager) => {
let visitor = new less.visitors.Visitor({
visitUrl: node => {
node.value.value = asset.addURLDependency(node.value.value, node.currentFileInfo.filename);
return node;
}
});
visitor.run = visitor.visit;
pluginManager.addVisitor(visitor);
let LessFileManager = getFileManager(less, asset.options);
pluginManager.addFileManager(new LessFileManager());
}
};
}
function getFileManager(less, options) {
const resolver = new Resolver({
extensions: ['.css', '.less'],
rootDir: options.rootDir
});
class LessFileManager extends less.FileManager {
supports() {
return true;
}
supportsSync() {
return false;
}
loadFile(filename, currentDirectory) {
return (0, _asyncToGenerator2.default)(function* () {
filename = parseCSSImport(filename);
let resolved = yield resolver.resolve(filename, path.join(currentDirectory, 'index'));
return {
contents: yield fs.readFile(resolved.path, 'utf8'),
filename: resolved.path
};
})();
}
}
return LessFileManager;
}
module.exports = LESSAsset;

View file

@ -0,0 +1,29 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
const localRequire = require('../utils/localRequire');
const Asset = require('../Asset');
class MarkdownAsset extends Asset {
constructor(name, options) {
super(name, options);
this.type = 'html';
this.hmrPageReload = true;
}
generate() {
var _this = this;
return (0, _asyncToGenerator2.default)(function* () {
let marked = yield localRequire('marked', _this.name);
return marked(_this.contents);
})();
}
}
module.exports = MarkdownAsset;

68
BACK_BACK/node_modules/parcel-bundler/lib/assets/PugAsset.js generated vendored Executable file
View file

@ -0,0 +1,68 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
const path = require('path');
const Asset = require('../Asset');
const localRequire = require('../utils/localRequire');
class PugAsset extends Asset {
constructor(name, options) {
super(name, options);
this.type = 'html';
this.hmrPageReload = true;
}
generate() {
var _this = this;
return (0, _asyncToGenerator2.default)(function* () {
const pug = yield localRequire('pug', _this.name);
const config = (yield _this.getConfig(['.pugrc', '.pugrc.js', 'pug.config.js'])) || {};
const compiled = pug.compile(_this.contents, {
compileDebug: false,
filename: _this.name,
basedir: path.dirname(_this.name),
pretty: config.pretty || false,
templateName: path.basename(_this.basename, path.extname(_this.basename)),
filters: config.filters,
filterOptions: config.filterOptions,
filterAliases: config.filterAliases
});
if (compiled.dependencies) {
var _iterator = _createForOfIteratorHelper(compiled.dependencies),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
let item = _step.value;
_this.addDependency(item, {
includedInParent: true
});
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
}
return compiled(config.locals);
})();
}
}
module.exports = PugAsset;

41
BACK_BACK/node_modules/parcel-bundler/lib/assets/RawAsset.js generated vendored Executable file
View file

@ -0,0 +1,41 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
const Asset = require('../Asset');
const urlJoin = require('../utils/urlJoin');
const md5 = require('../utils/md5');
class RawAsset extends Asset {
// Don't load raw assets. They will be copied by the RawPackager directly.
load() {}
generate() {
// Don't return a URL to the JS bundle if there is a bundle loader defined for this asset type.
// This will cause the actual asset to be automatically preloaded prior to the JS bundle running.
if (this.options.bundleLoaders[this.type]) {
return {};
}
const pathToAsset = urlJoin(this.options.publicURL, this.generateBundleName());
return [{
type: 'js',
value: `module.exports=${JSON.stringify(pathToAsset)};`
}];
}
generateHash() {
var _this = this;
return (0, _asyncToGenerator2.default)(function* () {
return md5.file(_this.name);
})();
}
}
module.exports = RawAsset;

View file

@ -0,0 +1,43 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
const Asset = require('../Asset');
const fs = require('@parcel/fs');
const localRequire = require('../utils/localRequire');
class ReasonAsset extends Asset {
constructor(name, options) {
super(name, options);
this.type = 'js';
}
generate() {
var _this = this;
return (0, _asyncToGenerator2.default)(function* () {
const bsb = yield localRequire('bsb-js', _this.name); // This runs BuckleScript - the Reason to JS compiler.
// Other Asset types use `localRequire` but the `bsb-js` package already
// does that internally. This should also take care of error handling in
// the Reason compilation process.
if (process.env.NODE_ENV !== 'test') {
yield bsb.runBuild();
} // This is a simplified use-case for Reason - it only loads the recommended
// BuckleScript configuration to simplify the file processing.
const outputFile = _this.name.replace(/\.(re|ml)$/, '.bs.js');
const outputContent = yield fs.readFile(outputFile);
return outputContent.toString();
})();
}
}
module.exports = ReasonAsset;

236
BACK_BACK/node_modules/parcel-bundler/lib/assets/RustAsset.js generated vendored Executable file
View file

@ -0,0 +1,236 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
const path = require('path');
const commandExists = require('command-exists');
const childProcess = require('child_process');
const _require = require('@parcel/utils'),
promisify = _require.promisify;
const exec = promisify(childProcess.execFile);
const toml = require('@iarna/toml');
const fs = require('@parcel/fs');
const Asset = require('../Asset');
const config = require('../utils/config');
const pipeSpawn = require('../utils/pipeSpawn');
const md5 = require('../utils/md5');
const RUST_TARGET = 'wasm32-unknown-unknown';
const MAIN_FILES = ['src/lib.rs', 'src/main.rs']; // Track installation status so we don't need to check more than once
let rustInstalled = false;
class RustAsset extends Asset {
constructor(name, options) {
super(name, options);
this.type = 'wasm';
}
process() {
// We don't want to process this asset if the worker is in a warm up phase
// since the asset will also be processed by the main process, which
// may cause errors since rust writes to the filesystem.
if (this.options.isWarmUp) {
return;
}
return super.process();
}
parse() {
var _this = this;
return (0, _asyncToGenerator2.default)(function* () {
// Install rust toolchain and target if needed
yield _this.installRust(); // See if there is a Cargo config in the project
let cargoConfig = yield _this.getConfig(['Cargo.toml']);
let cargoDir;
let isMainFile = false;
if (cargoConfig) {
const mainFiles = MAIN_FILES.slice();
if (cargoConfig.lib && cargoConfig.lib.path) {
mainFiles.push(cargoConfig.lib.path);
}
cargoDir = path.dirname(yield config.resolve(_this.name, ['Cargo.toml']));
isMainFile = mainFiles.some(file => path.join(cargoDir, file) === _this.name);
} // If this is the main file of a Cargo build, use the cargo command to compile.
// Otherwise, use rustc directly.
if (isMainFile) {
yield _this.cargoBuild(cargoConfig, cargoDir);
} else {
yield _this.rustcBuild();
}
})();
}
installRust() {
return (0, _asyncToGenerator2.default)(function* () {
if (rustInstalled) {
return;
} // Check for rustup
try {
yield commandExists('rustup');
} catch (e) {
throw new Error("Rust isn't installed. Visit https://www.rustup.rs/ for more info");
} // Ensure nightly toolchain is installed
let _yield$exec = yield exec('rustup', ['show']),
_yield$exec2 = (0, _slicedToArray2.default)(_yield$exec, 1),
stdout = _yield$exec2[0];
if (!stdout.includes('nightly')) {
yield pipeSpawn('rustup', ['update']);
yield pipeSpawn('rustup', ['toolchain', 'install', 'nightly']);
} // Ensure wasm target is installed
var _yield$exec3 = yield exec('rustup', ['target', 'list', '--toolchain', 'nightly']);
var _yield$exec4 = (0, _slicedToArray2.default)(_yield$exec3, 1);
stdout = _yield$exec4[0];
if (!stdout.includes(RUST_TARGET + ' (installed)')) {
yield pipeSpawn('rustup', ['target', 'add', RUST_TARGET, '--toolchain', 'nightly']);
}
rustInstalled = true;
})();
}
cargoBuild(cargoConfig, cargoDir) {
var _this2 = this;
return (0, _asyncToGenerator2.default)(function* () {
// Ensure the cargo config has cdylib as the crate-type
if (!cargoConfig.lib) {
cargoConfig.lib = {};
}
if (!Array.isArray(cargoConfig.lib['crate-type'])) {
cargoConfig.lib['crate-type'] = [];
}
if (!cargoConfig.lib['crate-type'].includes('cdylib')) {
cargoConfig.lib['crate-type'].push('cdylib');
yield fs.writeFile(path.join(cargoDir, 'Cargo.toml'), toml.stringify(cargoConfig));
} // Run cargo
let args = ['+nightly', 'build', '--target', RUST_TARGET, '--release'];
yield exec('cargo', args, {
cwd: cargoDir
}); // Get output file paths
let _yield$exec5 = yield exec('cargo', ['metadata', '--format-version', '1'], {
cwd: cargoDir
}),
_yield$exec6 = (0, _slicedToArray2.default)(_yield$exec5, 1),
stdout = _yield$exec6[0];
const cargoMetadata = JSON.parse(stdout);
const cargoTargetDir = cargoMetadata.target_directory;
let outDir = path.join(cargoTargetDir, RUST_TARGET, 'release'); // Rust converts '-' to '_' when outputting files.
let rustName = cargoConfig.package.name.replace(/-/g, '_');
_this2.wasmPath = path.join(outDir, rustName + '.wasm');
_this2.depsPath = path.join(outDir, rustName + '.d');
})();
}
rustcBuild() {
var _this3 = this;
return (0, _asyncToGenerator2.default)(function* () {
// Get output filename
yield fs.mkdirp(_this3.options.cacheDir);
let name = md5(_this3.name);
_this3.wasmPath = path.join(_this3.options.cacheDir, name + '.wasm'); // Run rustc to compile the code
const args = ['+nightly', '--target', RUST_TARGET, '-O', '--crate-type=cdylib', _this3.name, '-o', _this3.wasmPath];
const minifyArgs = _this3.options.minify ? ['-Clink-arg=-s'] : [];
yield exec('rustc', [...args, ...minifyArgs]); // Run again to collect dependencies
_this3.depsPath = path.join(_this3.options.cacheDir, name + '.d');
yield exec('rustc', [_this3.name, '--emit=dep-info', '-o', _this3.depsPath]);
})();
}
collectDependencies() {
var _this4 = this;
return (0, _asyncToGenerator2.default)(function* () {
// Read deps file
let contents = yield fs.readFile(_this4.depsPath, 'utf8');
let dir = path.dirname(_this4.name);
let deps = contents.split('\n').filter(Boolean).slice(1);
var _iterator = _createForOfIteratorHelper(deps),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
let dep = _step.value;
dep = path.resolve(dir, dep.slice(0, dep.indexOf(': ')));
if (dep !== _this4.name) {
_this4.addDependency(dep, {
includedInParent: true
});
}
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
})();
}
generate() {
var _this5 = this;
return (0, _asyncToGenerator2.default)(function* () {
return {
wasm: {
path: _this5.wasmPath,
// pass output path to RawPackager
mtime: Date.now() // force re-bundling since otherwise the hash would never change
}
};
})();
}
}
module.exports = RustAsset;

155
BACK_BACK/node_modules/parcel-bundler/lib/assets/SASSAsset.js generated vendored Executable file
View file

@ -0,0 +1,155 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
const Asset = require('../Asset');
const localRequire = require('../utils/localRequire');
const _require = require('@parcel/utils'),
promisify = _require.promisify;
const path = require('path');
const os = require('os');
const Resolver = require('../Resolver');
const parseCSSImport = require('../utils/parseCSSImport');
class SASSAsset extends Asset {
constructor(name, options) {
super(name, options);
this.type = 'css';
}
parse(code) {
var _this = this;
return (0, _asyncToGenerator2.default)(function* () {
// node-sass or dart-sass should be installed locally in the module that's being required
let sass = yield getSassRuntime(_this.name);
let render = promisify(sass.render.bind(sass));
const resolver = new Resolver({
extensions: ['.scss', '.sass'],
rootDir: _this.options.rootDir
});
let opts = (yield _this.getConfig(['.sassrc', '.sassrc.js'], {
packageKey: 'sass'
})) || {};
opts.includePaths = (opts.includePaths ? opts.includePaths.map(includePath => path.resolve(includePath)) : []).concat(path.dirname(_this.name));
opts.data = opts.data ? opts.data + os.EOL + code : code;
let type = _this.options.rendition ? _this.options.rendition.type : path.extname(_this.name).toLowerCase().replace('.', '');
opts.indentedSyntax = typeof opts.indentedSyntax === 'boolean' ? opts.indentedSyntax : type === 'sass';
opts.importer = opts.importer || [];
opts.importer = Array.isArray(opts.importer) ? opts.importer : [opts.importer];
opts.importer.push((url, prev, done) => {
url = url.replace(/^file:\/\//, '');
url = parseCSSImport(url);
resolver.resolve(url, prev === 'stdin' ? _this.name : prev).then(resolved => resolved.path).catch(() => url).then(file => done({
file
})).catch(err => done(normalizeError(err)));
});
if (_this.options.sourceMaps) {
opts.sourceMap = true;
opts.file = _this.name;
opts.outFile = _this.name;
opts.omitSourceMapUrl = true;
opts.sourceMapContents = true;
}
try {
return yield render(opts);
} catch (err) {
// Format the error so it can be handled by parcel's prettyError
if (err.formatted) {
throw sassToCodeFrame(err);
} // Throw original error if there is no codeFrame
throw err;
}
})();
}
collectDependencies() {
var _iterator = _createForOfIteratorHelper(this.ast.stats.includedFiles),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
let dep = _step.value;
this.addDependency(dep, {
includedInParent: true
});
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
}
generate() {
return [{
type: 'css',
value: this.ast ? this.ast.css.toString() : '',
map: this.ast && this.ast.map ? JSON.parse(this.ast.map.toString()) : undefined
}];
}
}
module.exports = SASSAsset;
function getSassRuntime(_x) {
return _getSassRuntime.apply(this, arguments);
}
function _getSassRuntime() {
_getSassRuntime = (0, _asyncToGenerator2.default)(function* (searchPath) {
try {
return yield localRequire('node-sass', searchPath, true);
} catch (e) {
// If node-sass is not used locally, install dart-sass, as this causes no freezing issues
return localRequire('sass', searchPath);
}
});
return _getSassRuntime.apply(this, arguments);
}
function sassToCodeFrame(err) {
let error = new Error(err.message);
error.codeFrame = err.formatted;
error.stack = err.stack;
error.fileName = err.file;
error.loc = {
line: err.line,
column: err.column
};
return error;
} // Ensures an error inherits from Error
function normalizeError(err) {
let message = 'Unknown error';
if (err) {
if (err instanceof Error) {
return err;
}
message = err.stack || err.message || err;
}
return new Error(message);
}

42
BACK_BACK/node_modules/parcel-bundler/lib/assets/SSSAsset.js generated vendored Executable file
View file

@ -0,0 +1,42 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
const postcss = require('postcss');
const localRequire = require('../utils/localRequire');
const Asset = require('../Asset');
class SSSAsset extends Asset {
constructor(name, options) {
super(name, options);
this.type = 'css';
}
generate() {
var _this = this;
return (0, _asyncToGenerator2.default)(function* () {
let sugarss = yield localRequire('sugarss', _this.name);
yield _this.loadIfNeeded();
let _yield$postcss$proces = yield postcss().process(_this.contents, {
from: _this.name,
to: _this.name,
parser: sugarss
}),
css = _yield$postcss$proces.css;
return [{
type: 'css',
value: css
}];
})();
}
}
module.exports = SSSAsset;

View file

@ -0,0 +1,280 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
// const CSSAsset = require('./CSSAsset');
const Asset = require('../Asset');
const localRequire = require('../utils/localRequire');
const Resolver = require('../Resolver');
const fs = require('@parcel/fs');
const _require = require('path'),
dirname = _require.dirname,
resolve = _require.resolve,
relative = _require.relative;
const _require2 = require('../utils/glob'),
isGlob = _require2.isGlob,
glob = _require2.glob;
const URL_RE = /^(?:url\s*\(\s*)?['"]?(?:[#/]|(?:https?:)?\/\/)/i;
class StylusAsset extends Asset {
constructor(name, options) {
super(name, options);
this.type = 'css';
}
parse(code) {
var _this = this;
return (0, _asyncToGenerator2.default)(function* () {
// stylus should be installed locally in the module that's being required
let stylus = yield localRequire('stylus', _this.name);
let opts = yield _this.getConfig(['.stylusrc', '.stylusrc.js'], {
packageKey: 'stylus'
});
let style = stylus(code, opts);
style.set('filename', _this.name);
style.set('include css', true); // Setup a handler for the URL function so we add dependencies for linked assets.
style.define('url', node => {
let filename = _this.addURLDependency(node.val, node.filename);
return new stylus.nodes.Literal(`url(${JSON.stringify(filename)})`);
});
style.set('Evaluator', yield createEvaluator(code, _this, style.options));
return style;
})();
}
generate() {
return [{
type: 'css',
value: this.ast.render(),
hasDependencies: false
}];
}
generateErrorMessage(err) {
let index = err.message.indexOf('\n');
err.codeFrame = err.message.slice(index + 1);
err.message = err.message.slice(0, index);
return err;
}
}
function getDependencies(_x, _x2, _x3, _x4) {
return _getDependencies.apply(this, arguments);
}
function _getDependencies() {
_getDependencies = (0, _asyncToGenerator2.default)(function* (code, filepath, asset, options, seen = new Set()) {
seen.add(filepath);
const _yield$Promise$all = yield Promise.all(['parser', 'visitor/deps-resolver', 'nodes', 'utils'].map(dep => localRequire('stylus/lib/' + dep, filepath))),
_yield$Promise$all2 = (0, _slicedToArray2.default)(_yield$Promise$all, 4),
Parser = _yield$Promise$all2[0],
DepsResolver = _yield$Promise$all2[1],
nodes = _yield$Promise$all2[2],
utils = _yield$Promise$all2[3];
nodes.filename = asset.name;
let parser = new Parser(code, options);
let ast = parser.parse();
let deps = new Map();
let resolver = new Resolver(Object.assign({}, asset.options, {
extensions: ['.styl', '.css']
}));
class ImportVisitor extends DepsResolver {
visitImport(imported) {
let path = imported.path.first.string;
if (!deps.has(path)) {
if (isGlob(path)) {
deps.set(path, glob(resolve(dirname(filepath), path), {
onlyFiles: true
}).then(entries => Promise.all(entries.map(entry => resolver.resolve('./' + relative(dirname(filepath), entry), filepath)))));
} else {
deps.set(path, resolver.resolve(path, filepath));
}
}
}
}
new ImportVisitor(ast, options).visit(ast); // Recursively process depdendencies, and return a map with all resolved paths.
let res = new Map();
yield Promise.all(Array.from(deps.entries()).map( /*#__PURE__*/function () {
var _ref = (0, _asyncToGenerator2.default)(function* ([path, resolved]) {
try {
resolved = yield resolved;
resolved = Array.isArray(resolved) ? resolved.map(r => r.path) : resolved.path;
} catch (err) {
resolved = null;
}
let found;
if (resolved) {
found = Array.isArray(resolved) ? resolved : [resolved];
res.set(path, resolved);
} else {
// If we couldn't resolve, try the normal stylus resolver.
// We just need to do this to keep track of the dependencies - stylus does the real work.
// support optional .styl
let originalPath = path;
if (!/\.styl$/i.test(path)) {
path += '.styl';
}
let paths = (options.paths || []).concat(dirname(filepath || '.'));
found = utils.find(path, paths, filepath);
if (!found) {
found = utils.lookupIndex(originalPath, paths, filepath);
}
if (!found) {
throw new Error('failed to locate file ' + originalPath);
}
} // Recursively process resolved files as well to get nested deps
var _iterator2 = _createForOfIteratorHelper(found),
_step2;
try {
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
let resolved = _step2.value;
if (!seen.has(resolved)) {
asset.addDependency(resolved, {
includedInParent: true
});
let code = yield fs.readFile(resolved, 'utf8');
var _iterator3 = _createForOfIteratorHelper(yield getDependencies(code, resolved, asset, options, seen)),
_step3;
try {
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
let _step3$value = (0, _slicedToArray2.default)(_step3.value, 2),
path = _step3$value[0],
resolvedPath = _step3$value[1];
res.set(path, resolvedPath);
}
} catch (err) {
_iterator3.e(err);
} finally {
_iterator3.f();
}
}
}
} catch (err) {
_iterator2.e(err);
} finally {
_iterator2.f();
}
});
return function (_x8) {
return _ref.apply(this, arguments);
};
}()));
return res;
});
return _getDependencies.apply(this, arguments);
}
function createEvaluator(_x5, _x6, _x7) {
return _createEvaluator.apply(this, arguments);
}
/**
* Puts the content of all given node blocks into the first one, essentially merging them.
*/
function _createEvaluator() {
_createEvaluator = (0, _asyncToGenerator2.default)(function* (code, asset, options) {
const deps = yield getDependencies(code, asset.name, asset, options);
const Evaluator = yield localRequire('stylus/lib/visitor/evaluator', asset.name); // This is a custom stylus evaluator that extends stylus with support for the node
// require resolution algorithm. It also adds all dependencies to the parcel asset
// tree so the file watcher works correctly, etc.
class CustomEvaluator extends Evaluator {
visitImport(imported) {
let node = this.visit(imported.path).first;
let path = node.string;
if (node.name !== 'url' && path && !URL_RE.test(path)) {
let resolved = deps.get(path); // First try resolving using the node require resolution algorithm.
// This allows stylus files in node_modules to be resolved properly.
// If we find something, update the AST so stylus gets the absolute path to load later.
if (resolved) {
if (!Array.isArray(resolved)) {
node.string = resolved;
} else {
// If the import resolves to multiple files (i.e. glob),
// replace it with a separate import node for each file
return mergeBlocks(resolved.map(resolvedPath => {
node.string = resolvedPath;
return super.visitImport(imported.clone());
}));
}
}
} // Done. Let stylus do its thing.
return super.visitImport(imported);
}
}
return CustomEvaluator;
});
return _createEvaluator.apply(this, arguments);
}
function mergeBlocks(blocks) {
let finalBlock;
var _iterator = _createForOfIteratorHelper(blocks),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
const block = _step.value;
if (!finalBlock) finalBlock = block;else {
block.nodes.forEach(node => finalBlock.push(node));
}
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
return finalBlock;
}
module.exports = StylusAsset;

View file

@ -0,0 +1,25 @@
"use strict";
const Asset = require('../Asset');
const toml = require('@iarna/toml');
const serializeObject = require('../utils/serializeObject');
class TOMLAsset extends Asset {
constructor(name, options) {
super(name, options);
this.type = 'js';
}
parse(code) {
return toml.parse(code);
}
generate() {
return serializeObject(this.ast, this.options.minify && !this.options.scopeHoist);
}
}
module.exports = TOMLAsset;

View file

@ -0,0 +1,71 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
const Asset = require('../Asset');
const localRequire = require('../utils/localRequire');
const isAccessedVarChanged = require('../utils/isAccessedVarChanged');
class TypeScriptAsset extends Asset {
constructor(name, options) {
super(name, options);
this.type = 'js';
this.cacheData.env = {};
}
shouldInvalidate(cacheData) {
return isAccessedVarChanged(cacheData);
}
generate() {
var _this = this;
return (0, _asyncToGenerator2.default)(function* () {
// require typescript, installed locally in the app
let typescript = yield localRequire('typescript', _this.name);
let transpilerOptions = {
compilerOptions: {
module: _this.options.scopeHoist ? typescript.ModuleKind.ESNext : typescript.ModuleKind.CommonJS,
jsx: typescript.JsxEmit.Preserve,
// it brings the generated output from TypeScript closer to that generated by Babel
// see https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-7.html
esModuleInterop: true
},
fileName: _this.relativeName
};
let tsconfig = yield _this.getConfig(['tsconfig.json']); // Overwrite default if config is found
if (tsconfig) {
transpilerOptions.compilerOptions = Object.assign(transpilerOptions.compilerOptions, tsconfig.compilerOptions);
}
transpilerOptions.compilerOptions.noEmit = false;
transpilerOptions.compilerOptions.sourceMap = _this.options.sourceMaps; // Transpile Module using TypeScript and parse result as ast format through babylon
let transpiled = typescript.transpileModule(_this.contents, transpilerOptions);
let sourceMap = transpiled.sourceMapText;
if (sourceMap) {
sourceMap = JSON.parse(sourceMap);
sourceMap.sources = [_this.relativeName];
sourceMap.sourcesContent = [_this.contents]; // Remove the source map URL
let content = transpiled.outputText;
transpiled.outputText = content.substring(0, content.lastIndexOf('//# sourceMappingURL'));
}
return [{
type: 'js',
value: transpiled.outputText,
map: sourceMap
}];
})();
}
}
module.exports = TypeScriptAsset;

325
BACK_BACK/node_modules/parcel-bundler/lib/assets/VueAsset.js generated vendored Executable file
View file

@ -0,0 +1,325 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
const Asset = require('../Asset');
const localRequire = require('../utils/localRequire');
const md5 = require('../utils/md5');
const _require = require('terser'),
minify = _require.minify;
const t = require('@babel/types');
class VueAsset extends Asset {
constructor(name, options) {
super(name, options);
this.type = 'js';
}
parse(code) {
var _this = this;
return (0, _asyncToGenerator2.default)(function* () {
// Is being used in component-compiler-utils, errors if not installed...
_this.vueTemplateCompiler = yield localRequire('vue-template-compiler', _this.name);
_this.vue = yield localRequire('@vue/component-compiler-utils', _this.name);
return _this.vue.parse({
source: code,
needMap: _this.options.sourceMaps,
filename: _this.relativeName,
// Used for sourcemaps
sourceRoot: '',
// Used for sourcemaps. Override so it doesn't use cwd
compiler: _this.vueTemplateCompiler
});
})();
}
generate() {
var _this2 = this;
return (0, _asyncToGenerator2.default)(function* () {
let descriptor = _this2.ast;
let parts = [];
if (descriptor.script) {
parts.push({
type: descriptor.script.lang || 'js',
value: descriptor.script.content,
map: descriptor.script.map
});
}
if (descriptor.template) {
parts.push({
type: descriptor.template.lang || 'html',
value: descriptor.template.content.trim()
});
}
if (descriptor.styles) {
var _iterator = _createForOfIteratorHelper(descriptor.styles),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
let style = _step.value;
parts.push({
type: style.lang || 'css',
value: style.content.trim(),
modules: !!style.module
});
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
}
return parts;
})();
}
postProcess(generated) {
var _this3 = this;
return (0, _asyncToGenerator2.default)(function* () {
let result = [];
let hasScoped = _this3.ast.styles.some(s => s.scoped);
let id = md5(_this3.name).slice(-6);
let scopeId = hasScoped ? `data-v-${id}` : null;
let optsVar = '$' + id; // Generate JS output.
let js = _this3.ast.script ? generated[0].value : '';
let supplemental = ''; // TODO: make it possible to process this code with the normal scope hoister
if (_this3.options.scopeHoist) {
optsVar = `$${t.toIdentifier(_this3.id)}$export$default`;
if (!js.includes(optsVar)) {
optsVar = `$${t.toIdentifier(_this3.id)}$exports`;
if (!js.includes(optsVar)) {
supplemental += `
var ${optsVar} = {};
`;
_this3.cacheData.isCommonJS = true;
}
}
} else {
supplemental += `
var ${optsVar} = exports.default || module.exports;
`;
}
supplemental += `
if (typeof ${optsVar} === 'function') {
${optsVar} = ${optsVar}.options;
}
`;
supplemental += _this3.compileTemplate(generated, scopeId, optsVar);
supplemental += _this3.compileCSSModules(generated, optsVar);
supplemental += _this3.compileHMR(generated, optsVar);
if (_this3.options.minify && !_this3.options.scopeHoist) {
let _minify = minify(supplemental, {
toplevel: true
}),
code = _minify.code,
error = _minify.error;
if (error) {
throw error;
}
supplemental = code;
if (supplemental) {
supplemental = `\n(function(){${supplemental}})();`;
}
}
js += supplemental;
if (js) {
result.push({
type: 'js',
value: js,
map: _this3.options.sourceMaps && _this3.ast.script && generated[0].map
});
}
let css = _this3.compileStyle(generated, scopeId);
if (css) {
result.push({
type: 'css',
value: css
});
}
return result;
})();
}
compileTemplate(generated, scopeId, optsVar) {
let html = generated.find(r => r.type === 'html');
if (html) {
let isFunctional = this.ast.template.attrs.functional;
let template = this.vue.compileTemplate({
source: html.value,
filename: this.relativeName,
compiler: this.vueTemplateCompiler,
isProduction: this.options.production,
isFunctional,
compilerOptions: {
scopeId
}
});
if (Array.isArray(template.errors) && template.errors.length >= 1) {
throw new Error(template.errors[0]);
}
return `
/* template */
Object.assign(${optsVar}, (function () {
${template.code}
return {
render: render,
staticRenderFns: staticRenderFns,
_compiled: true,
_scopeId: ${JSON.stringify(scopeId)},
functional: ${JSON.stringify(isFunctional)}
};
})());
`;
}
return '';
}
compileCSSModules(generated, optsVar) {
let cssRenditions = generated.filter(r => r.type === 'css');
let cssModulesCode = '';
this.ast.styles.forEach((style, index) => {
if (style.module) {
let cssModules = JSON.stringify(cssRenditions[index].cssModules);
let name = style.module === true ? '$style' : style.module;
cssModulesCode += `\nthis[${JSON.stringify(name)}] = ${cssModules};`;
}
});
if (cssModulesCode) {
cssModulesCode = `function hook(){${cssModulesCode}\n}`;
let isFunctional = this.ast.template && this.ast.template.attrs.functional;
if (isFunctional) {
return `
/* css modules */
(function () {
${cssModulesCode}
${optsVar}._injectStyles = hook;
var originalRender = ${optsVar}.render;
${optsVar}.render = function (h, context) {
hook.call(context);
return originalRender(h, context);
};
})();
`;
} else {
return `
/* css modules */
(function () {
${cssModulesCode}
${optsVar}.beforeCreate = ${optsVar}.beforeCreate ? ${optsVar}.beforeCreate.concat(hook) : [hook];
})();
`;
}
}
return '';
}
compileStyle(generated, scopeId) {
return generated.filter(r => r.type === 'css').reduce((p, r, i) => {
let css = r.value;
let scoped = this.ast.styles[i].scoped; // Process scoped styles if needed.
if (scoped) {
let _this$vue$compileStyl = this.vue.compileStyle({
source: css,
filename: this.relativeName,
id: scopeId,
scoped
}),
code = _this$vue$compileStyl.code,
errors = _this$vue$compileStyl.errors;
if (errors.length) {
throw errors[0];
}
css = code;
}
return p + css;
}, '');
}
compileHMR(generated, optsVar) {
if (!this.options.hmr) {
return '';
}
this.addDependency('vue-hot-reload-api');
this.addDependency('vue');
let cssHMR = '';
if (this.ast.styles.length) {
cssHMR = `
var reloadCSS = require('_css_loader');
module.hot.dispose(reloadCSS);
module.hot.accept(reloadCSS);
`;
}
let isFunctional = this.ast.template && this.ast.template.attrs.functional;
return `
/* hot reload */
(function () {
if (module.hot) {
var api = require('vue-hot-reload-api');
api.install(require('vue'));
if (api.compatible) {
module.hot.accept();
if (!module.hot.data) {
api.createRecord('${optsVar}', ${optsVar});
} else {
api.${isFunctional ? 'rerender' : 'reload'}('${optsVar}', ${optsVar});
}
}
${cssHMR}
}
})();`;
}
}
module.exports = VueAsset;

View file

@ -0,0 +1,65 @@
"use strict";
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
const Asset = require('../Asset');
class WebManifestAsset extends Asset {
constructor(name, options) {
super(name, options);
this.type = 'webmanifest';
}
parse(content) {
return JSON.parse(content);
}
collectDependencies() {
if (Array.isArray(this.ast.icons)) {
var _iterator = _createForOfIteratorHelper(this.ast.icons),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
let icon = _step.value;
icon.src = this.addURLDependency(icon.src);
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
}
if (Array.isArray(this.ast.screenshots)) {
var _iterator2 = _createForOfIteratorHelper(this.ast.screenshots),
_step2;
try {
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
let shot = _step2.value;
shot.src = this.addURLDependency(shot.src);
}
} catch (err) {
_iterator2.e(err);
} finally {
_iterator2.f();
}
}
if (this.ast.serviceworker && this.ast.serviceworker.src) {
this.ast.serviceworker.src = this.addURLDependency(this.ast.serviceworker.src);
}
}
generate() {
return JSON.stringify(this.ast);
}
}
module.exports = WebManifestAsset;

View file

@ -0,0 +1,25 @@
"use strict";
const Asset = require('../Asset');
const yaml = require('js-yaml');
const serializeObject = require('../utils/serializeObject');
class YAMLAsset extends Asset {
constructor(name, options) {
super(name, options);
this.type = 'js';
}
parse(code) {
return yaml.safeLoad(code);
}
generate() {
return serializeObject(this.ast, this.options.minify && !this.options.scopeHoist);
}
}
module.exports = YAMLAsset;

View file

@ -0,0 +1,13 @@
{
"extends": "../.eslintrc.json",
"parserOptions": {
"ecmaVersion": 5
},
"env": {
"browser": true
},
"rules": {
"no-global-assign": 1,
"no-unused-vars": 0
}
}

View file

View file

@ -0,0 +1,83 @@
var getBundleURL = require('./bundle-url').getBundleURL;
function loadBundlesLazy(bundles) {
if (!Array.isArray(bundles)) {
bundles = [bundles]
}
var id = bundles[bundles.length - 1];
try {
return Promise.resolve(require(id));
} catch (err) {
if (err.code === 'MODULE_NOT_FOUND') {
return new LazyPromise(function (resolve, reject) {
loadBundles(bundles.slice(0, -1))
.then(function () {
return require(id);
})
.then(resolve, reject);
});
}
throw err;
}
}
function loadBundles(bundles) {
return Promise.all(bundles.map(loadBundle));
}
var bundleLoaders = {};
function registerBundleLoader(type, loader) {
bundleLoaders[type] = loader;
}
module.exports = exports = loadBundlesLazy;
exports.load = loadBundles;
exports.register = registerBundleLoader;
var bundles = {};
function loadBundle(bundle) {
var id;
if (Array.isArray(bundle)) {
id = bundle[1];
bundle = bundle[0];
}
if (bundles[bundle]) {
return bundles[bundle];
}
var type = (bundle.substring(bundle.lastIndexOf('.') + 1, bundle.length) || bundle).toLowerCase();
var bundleLoader = bundleLoaders[type];
if (bundleLoader) {
return bundles[bundle] = bundleLoader(getBundleURL() + bundle)
.then(function (resolved) {
if (resolved) {
module.bundle.register(id, resolved);
}
return resolved;
}).catch(function(e) {
delete bundles[bundle];
throw e;
});
}
}
function LazyPromise(executor) {
this.executor = executor;
this.promise = null;
}
LazyPromise.prototype.then = function (onSuccess, onError) {
if (this.promise === null) this.promise = new Promise(this.executor)
return this.promise.then(onSuccess, onError)
};
LazyPromise.prototype.catch = function (onError) {
if (this.promise === null) this.promise = new Promise(this.executor)
return this.promise.catch(onError)
};

View file

@ -0,0 +1,29 @@
var bundleURL = null;
function getBundleURLCached() {
if (!bundleURL) {
bundleURL = getBundleURL();
}
return bundleURL;
}
function getBundleURL() {
// Attempt to find the URL of the current script and use that as the base URL
try {
throw new Error;
} catch (err) {
var matches = ('' + err.stack).match(/(https?|file|ftp|chrome-extension|moz-extension):\/\/[^)\n]+/g);
if (matches) {
return getBaseURL(matches[0]);
}
}
return '/';
}
function getBaseURL(url) {
return ('' + url).replace(/^((?:https?|file|ftp|chrome-extension|moz-extension):\/\/.+)?\/[^/]+(?:\?.*)?$/, '$1') + '/';
}
exports.getBundleURL = getBundleURLCached;
exports.getBaseURL = getBaseURL;

View file

@ -0,0 +1,30 @@
var bundle = require('./bundle-url');
function updateLink(link) {
var newLink = link.cloneNode();
newLink.onload = function () {
link.remove();
};
newLink.href = link.href.split('?')[0] + '?' + Date.now();
link.parentNode.insertBefore(newLink, link.nextSibling);
}
var cssTimeout = null;
function reloadCSS() {
if (cssTimeout) {
return;
}
cssTimeout = setTimeout(function () {
var links = document.querySelectorAll('link[rel="stylesheet"]');
for (var i = 0; i < links.length; i++) {
if (bundle.getBaseURL(links[i].href) === bundle.getBundleURL()) {
updateLink(links[i]);
}
}
cssTimeout = null;
}, 50);
}
module.exports = reloadCSS;

View file

@ -0,0 +1,34 @@
function $parcel$interopDefault(a) {
return a && a.__esModule
? {d: a.default}
: {d: a};
}
function $parcel$defineInteropFlag(a) {
Object.defineProperty(a, '__esModule', {value: true});
}
function $parcel$exportWildcard(dest, source) {
Object.keys(source).forEach(function(key) {
if(key === "default" || key === "__esModule") {
return;
}
Object.defineProperty(dest, key, {
enumerable: true,
get: function get() {
return source[key];
}
});
});
return dest;
}
function $parcel$missingModule(name) {
var err = new Error("Cannot find module '" + name + "'");
err.code = 'MODULE_NOT_FOUND';
throw err;
}
var $parcel$global = this;

View file

@ -0,0 +1,212 @@
var OVERLAY_ID = '__parcel__error__overlay__';
var OldModule = module.bundle.Module;
function Module(moduleName) {
OldModule.call(this, moduleName);
this.hot = {
data: module.bundle.hotData,
_acceptCallbacks: [],
_disposeCallbacks: [],
accept: function (fn) {
this._acceptCallbacks.push(fn || function () {});
},
dispose: function (fn) {
this._disposeCallbacks.push(fn);
}
};
module.bundle.hotData = null;
}
module.bundle.Module = Module;
var checkedAssets, assetsToAccept;
var parent = module.bundle.parent;
if ((!parent || !parent.isParcelRequire) && typeof WebSocket !== 'undefined') {
var hostname = process.env.HMR_HOSTNAME || location.hostname;
var protocol = location.protocol === 'https:' ? 'wss' : 'ws';
var ws = new WebSocket(protocol + '://' + hostname + ':' + process.env.HMR_PORT + '/');
ws.onmessage = function(event) {
checkedAssets = {};
assetsToAccept = [];
var data = JSON.parse(event.data);
if (data.type === 'update') {
var handled = false;
data.assets.forEach(function(asset) {
if (!asset.isNew) {
var didAccept = hmrAcceptCheck(global.parcelRequire, asset.id);
if (didAccept) {
handled = true;
}
}
});
// Enable HMR for CSS by default.
handled = handled || data.assets.every(function(asset) {
return asset.type === 'css' && asset.generated.js;
});
if (handled) {
console.clear();
data.assets.forEach(function (asset) {
hmrApply(global.parcelRequire, asset);
});
assetsToAccept.forEach(function (v) {
hmrAcceptRun(v[0], v[1]);
});
} else if (location.reload) { // `location` global exists in a web worker context but lacks `.reload()` function.
location.reload();
}
}
if (data.type === 'reload') {
ws.close();
ws.onclose = function () {
location.reload();
}
}
if (data.type === 'error-resolved') {
console.log('[parcel] ✨ Error resolved');
removeErrorOverlay();
}
if (data.type === 'error') {
console.error('[parcel] 🚨 ' + data.error.message + '\n' + data.error.stack);
removeErrorOverlay();
var overlay = createErrorOverlay(data);
document.body.appendChild(overlay);
}
};
}
function removeErrorOverlay() {
var overlay = document.getElementById(OVERLAY_ID);
if (overlay) {
overlay.remove();
}
}
function createErrorOverlay(data) {
var overlay = document.createElement('div');
overlay.id = OVERLAY_ID;
// html encode message and stack trace
var message = document.createElement('div');
var stackTrace = document.createElement('pre');
message.innerText = data.error.message;
stackTrace.innerText = data.error.stack;
overlay.innerHTML = (
'<div style="background: black; font-size: 16px; color: white; position: fixed; height: 100%; width: 100%; top: 0px; left: 0px; padding: 30px; opacity: 0.85; font-family: Menlo, Consolas, monospace; z-index: 9999;">' +
'<span style="background: red; padding: 2px 4px; border-radius: 2px;">ERROR</span>' +
'<span style="top: 2px; margin-left: 5px; position: relative;">🚨</span>' +
'<div style="font-size: 18px; font-weight: bold; margin-top: 20px;">' + message.innerHTML + '</div>' +
'<pre>' + stackTrace.innerHTML + '</pre>' +
'</div>'
);
return overlay;
}
function getParents(bundle, id) {
var modules = bundle.modules;
if (!modules) {
return [];
}
var parents = [];
var k, d, dep;
for (k in modules) {
for (d in modules[k][1]) {
dep = modules[k][1][d];
if (dep === id || (Array.isArray(dep) && dep[dep.length - 1] === id)) {
parents.push(k);
}
}
}
if (bundle.parent) {
parents = parents.concat(getParents(bundle.parent, id));
}
return parents;
}
function hmrApply(bundle, asset) {
var modules = bundle.modules;
if (!modules) {
return;
}
if (modules[asset.id] || !bundle.parent) {
var fn = new Function('require', 'module', 'exports', asset.generated.js);
asset.isNew = !modules[asset.id];
modules[asset.id] = [fn, asset.deps];
} else if (bundle.parent) {
hmrApply(bundle.parent, asset);
}
}
function hmrAcceptCheck(bundle, id) {
var modules = bundle.modules;
if (!modules) {
return;
}
if (!modules[id] && bundle.parent) {
return hmrAcceptCheck(bundle.parent, id);
}
if (checkedAssets[id]) {
return;
}
checkedAssets[id] = true;
var cached = bundle.cache[id];
assetsToAccept.push([bundle, id]);
if (cached && cached.hot && cached.hot._acceptCallbacks.length) {
return true;
}
return getParents(global.parcelRequire, id).some(function (id) {
return hmrAcceptCheck(global.parcelRequire, id)
});
}
function hmrAcceptRun(bundle, id) {
var cached = bundle.cache[id];
bundle.hotData = {};
if (cached) {
cached.hot.data = bundle.hotData;
}
if (cached && cached.hot && cached.hot._disposeCallbacks.length) {
cached.hot._disposeCallbacks.forEach(function (cb) {
cb(bundle.hotData);
});
}
delete bundle.cache[id];
bundle(id);
cached = bundle.cache[id];
if (cached && cached.hot && cached.hot._acceptCallbacks.length) {
cached.hot._acceptCallbacks.forEach(function (cb) {
cb();
});
return true;
}
}

13
BACK_BACK/node_modules/parcel-bundler/lib/builtins/index.js generated vendored Executable file
View file

@ -0,0 +1,13 @@
var nodeBuiltins = require('node-libs-browser');
var builtins = Object.create(null);
for (var key in nodeBuiltins) {
builtins[key] = nodeBuiltins[key] == null
? require.resolve('./_empty.js')
: nodeBuiltins[key];
}
builtins['_bundle_loader'] = require.resolve('./bundle-loader.js');
builtins['_css_loader'] = require.resolve('./css-loader.js');
module.exports = builtins;

View file

@ -0,0 +1,18 @@
module.exports = function loadCSSBundle(bundle) {
return new Promise(function (resolve, reject) {
var link = document.createElement('link');
link.rel = 'stylesheet';
link.href = bundle;
link.onerror = function (e) {
link.onerror = link.onload = null;
reject(e);
};
link.onload = function () {
link.onerror = link.onload = null;
resolve();
};
document.getElementsByTagName('head')[0].appendChild(link);
});
};

View file

@ -0,0 +1,5 @@
module.exports = function loadHTMLBundle(bundle) {
return fetch(bundle).then(function (res) {
return res.text();
});
};

View file

@ -0,0 +1,20 @@
module.exports = function loadJSBundle(bundle) {
return new Promise(function (resolve, reject) {
var script = document.createElement('script');
script.async = true;
script.type = 'text/javascript';
script.charset = 'utf-8';
script.src = bundle;
script.onerror = function (e) {
script.onerror = script.onload = null;
reject(e);
};
script.onload = function () {
script.onerror = script.onload = null;
resolve();
};
document.getElementsByTagName('head')[0].appendChild(script);
});
};

View file

@ -0,0 +1,16 @@
module.exports = function loadWASMBundle(bundle) {
return fetch(bundle)
.then(function (res) {
if (WebAssembly.instantiateStreaming) {
return WebAssembly.instantiateStreaming(res);
} else {
return res.arrayBuffer()
.then(function (data) {
return WebAssembly.instantiate(data);
});
}
})
.then(function (wasmModule) {
return wasmModule.instance.exports;
});
};

View file

@ -0,0 +1,4 @@
// loading a CSS style is a no-op in Node.js
module.exports = function loadCSSBundle() {
return Promise.resolve();
};

View file

@ -0,0 +1,17 @@
var fs = require('fs');
module.exports = function loadHTMLBundle(bundle) {
return new Promise(function(resolve, reject) {
fs.readFile(__dirname + bundle, 'utf8', function(err, data) {
if (err) {
reject(err);
} else {
// wait for the next event loop iteration, so we are sure
// the current module is fully loaded
setImmediate(function() {
resolve(data);
});
}
});
});
};

View file

@ -0,0 +1,20 @@
var fs = require('fs');
module.exports = function loadJSBundle(bundle) {
return new Promise(function(resolve, reject) {
fs.readFile(__dirname + bundle, 'utf8', function(err, data) {
if (err) {
reject(err);
} else {
// wait for the next event loop iteration, so we are sure
// the current module is fully loaded
setImmediate(function() {
resolve(data);
});
}
});
})
.then(function(code) {
new Function('', code)();
});
};

View file

@ -0,0 +1,19 @@
var fs = require('fs');
module.exports = function loadWASMBundle(bundle) {
return new Promise(function(resolve, reject) {
fs.readFile(__dirname + bundle, function(err, data) {
if (err) {
reject(err);
} else {
resolve(data.buffer);
}
});
})
.then(function(data) {
return WebAssembly.instantiate(data);
})
.then(function(wasmModule) {
return wasmModule.instance.exports;
});
};

120
BACK_BACK/node_modules/parcel-bundler/lib/builtins/prelude.js generated vendored Executable file
View file

@ -0,0 +1,120 @@
// modules are defined as an array
// [ module function, map of requires ]
//
// map of requires is short require name -> numeric require
//
// anything defined in a previous bundle is accessed via the
// orig method which is the require for previous bundles
parcelRequire = (function (modules, cache, entry, globalName) {
// Save the require from previous bundle to this closure if any
var previousRequire = typeof parcelRequire === 'function' && parcelRequire;
var nodeRequire = typeof require === 'function' && require;
function newRequire(name, jumped) {
if (!cache[name]) {
if (!modules[name]) {
// if we cannot find the module within our internal map or
// cache jump to the current global require ie. the last bundle
// that was added to the page.
var currentRequire = typeof parcelRequire === 'function' && parcelRequire;
if (!jumped && currentRequire) {
return currentRequire(name, true);
}
// If there are other bundles on this page the require from the
// previous one is saved to 'previousRequire'. Repeat this as
// many times as there are bundles until the module is found or
// we exhaust the require chain.
if (previousRequire) {
return previousRequire(name, true);
}
// Try the node require function if it exists.
if (nodeRequire && typeof name === 'string') {
return nodeRequire(name);
}
var err = new Error('Cannot find module \'' + name + '\'');
err.code = 'MODULE_NOT_FOUND';
throw err;
}
localRequire.resolve = resolve;
localRequire.cache = {};
var module = cache[name] = new newRequire.Module(name);
modules[name][0].call(module.exports, localRequire, module, module.exports, this);
}
return cache[name].exports;
function localRequire(x){
return newRequire(localRequire.resolve(x));
}
function resolve(x){
return modules[name][1][x] || x;
}
}
function Module(moduleName) {
this.id = moduleName;
this.bundle = newRequire;
this.exports = {};
}
newRequire.isParcelRequire = true;
newRequire.Module = Module;
newRequire.modules = modules;
newRequire.cache = cache;
newRequire.parent = previousRequire;
newRequire.register = function (id, exports) {
modules[id] = [function (require, module) {
module.exports = exports;
}, {}];
};
var error;
for (var i = 0; i < entry.length; i++) {
try {
newRequire(entry[i]);
} catch (e) {
// Save first error but execute all entries
if (!error) {
error = e;
}
}
}
if (entry.length) {
// Expose entry point to Node, AMD or browser globals
// Based on https://github.com/ForbesLindesay/umd/blob/master/template.js
var mainExports = newRequire(entry[entry.length - 1]);
// CommonJS
if (typeof exports === "object" && typeof module !== "undefined") {
module.exports = mainExports;
// RequireJS
} else if (typeof define === "function" && define.amd) {
define(function () {
return mainExports;
});
// <script>
} else if (globalName) {
this[globalName] = mainExports;
}
}
// Override the current require with this new one
parcelRequire = newRequire;
if (error) {
// throw error from earlier, _after updating parcelRequire_
throw error;
}
return newRequire;
})

View file

@ -0,0 +1 @@
parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcelRequire,u="function"==typeof require&&require;function f(t,n){if(!r[t]){if(!e[t]){var i="function"==typeof parcelRequire&&parcelRequire;if(!n&&i)return i(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=new Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){return e[t][1][r]||r},p.cache={};var l=r[t]=new f.Module(t);e[t][0].call(l.exports,p,l,l.exports,this)}return r[t].exports;function p(e){return f(p.resolve(e))}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=r,f.parent=o,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]};for(var c=0;c<t.length;c++)try{f(t[c])}catch(e){i||(i=e)}if(t.length){var l=f(t[t.length-1]);"object"==typeof exports&&"undefined"!=typeof module?module.exports=l:"function"==typeof define&&define.amd?define(function(){return l}):n&&(this[n]=l)}if(parcelRequire=f,i)throw i;return f};

View file

@ -0,0 +1,45 @@
parcelRequire = (function (init) {
// Save the require from previous bundle to this closure if any
var previousRequire = typeof parcelRequire === 'function' && parcelRequire;
var nodeRequire = typeof require === 'function' && require;
var modules = {};
function localRequire(name, jumped) {
if (name in modules) {
return modules[name];
}
// if we cannot find the module within our internal map or
// cache jump to the current global require ie. the last bundle
// that was added to the page.
var currentRequire = typeof parcelRequire === 'function' && parcelRequire;
if (!jumped && currentRequire) {
return currentRequire(name, true);
}
// If there are other bundles on this page the require from the
// previous one is saved to 'previousRequire'. Repeat this as
// many times as there are bundles until the module is found or
// we exhaust the require chain.
if (previousRequire) {
return previousRequire(name, true);
}
// Try the node require function if it exists.
if (nodeRequire && typeof name === 'string') {
return nodeRequire(name);
}
var err = new Error('Cannot find module \'' + name + '\'');
err.code = 'MODULE_NOT_FOUND';
throw err;
}
localRequire.register = function register(id, exports) {
modules[id] = exports;
};
modules = init(localRequire);
localRequire.modules = modules;
return localRequire;
})

View file

@ -0,0 +1 @@
parcelRequire=function(e){var r="function"==typeof parcelRequire&&parcelRequire,n="function"==typeof require&&require,i={};function u(e,u){if(e in i)return i[e];var t="function"==typeof parcelRequire&&parcelRequire;if(!u&&t)return t(e,!0);if(r)return r(e,!0);if(n&&"string"==typeof e)return n(e);var o=new Error("Cannot find module '"+e+"'");throw o.code="MODULE_NOT_FOUND",o}return u.register=function(e,r){i[e]=r},i=e(u),u.modules=i,u};

94
BACK_BACK/node_modules/parcel-bundler/lib/cli.js generated vendored Executable file
View file

@ -0,0 +1,94 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
require('v8-compile-cache');
const chalk = require('chalk');
const envinfo = require('envinfo');
const program = require('commander');
const version = require('../package.json').version;
program.version(version).usage('<command> [options]');
program.command('serve [input...]').description('starts a development server').option('-p, --port <port>', 'set the port to serve on. defaults to 1234', parseInt).option('--host <host>', 'set the host to listen on, defaults to listening on all interfaces').option('--hmr-port <port>', 'set the port to serve HMR websockets, defaults to random', parseInt).option('--hmr-hostname <hostname>', 'set the hostname of HMR websockets, defaults to location.hostname of current window').option('--https', 'serves files over HTTPS').option('--cert <path>', 'path to certificate to use with HTTPS').option('--key <path>', 'path to private key to use with HTTPS').option('--open [browser]', 'automatically open in specified browser, defaults to default browser').option('-d, --out-dir <path>', 'set the output directory. defaults to "dist"').option('-o, --out-file <filename>', 'set the output filename for the application entry point.').option('--public-url <url>', 'set the public URL to serve on. defaults to "/"').option('--global <variable>', 'expose your module through a global variable').option('--no-hmr', 'disable hot module replacement').option('--no-cache', 'disable the filesystem cache').option('--no-source-maps', 'disable sourcemaps').option('--no-autoinstall', 'disable autoinstall').option('-t, --target [target]', 'set the runtime environment, either "node", "browser" or "electron". defaults to "browser"', /^(node|browser|electron)$/).option('--bundle-node-modules', 'force bundling node modules, even on node/electron target').option('-V, --version', 'output the version number').option('--log-level <level>', 'set the log level, either "0" (no output), "1" (errors), "2" (warnings), "3" (info), "4" (verbose) or "5" (debug, creates a log file).', /^([0-5])$/).option('--cache-dir <path>', 'set the cache directory. defaults to ".cache"').action(bundle);
program.command('watch [input...]').description('starts the bundler in watch mode').option('-d, --out-dir <path>', 'set the output directory. defaults to "dist"').option('-o, --out-file <filename>', 'set the output filename for the application entry point.').option('--public-url <url>', 'set the public URL to serve on. defaults to "/"').option('--global <variable>', 'expose your module through a global variable').option('--hmr-port <port>', 'set the port to serve HMR websockets, defaults to random', parseInt).option('--hmr-hostname <hostname>', 'set the hostname of HMR websockets, defaults to location.hostname of current window').option('--https', 'listen on HTTPS for HMR connections').option('--cert <path>', 'path to certificate to use with HTTPS').option('--key <path>', 'path to private key to use with HTTPS').option('--no-hmr', 'disable hot module replacement').option('--no-cache', 'disable the filesystem cache').option('--no-source-maps', 'disable sourcemaps').option('--no-autoinstall', 'disable autoinstall').option('-t, --target [target]', 'set the runtime environment, either "node", "browser" or "electron". defaults to "browser"', /^(node|browser|electron)$/).option('--bundle-node-modules', 'force bundling node modules, even on node/electron target').option('--log-level <level>', 'set the log level, either "0" (no output), "1" (errors), "2" (warnings), "3" (info), "4" (verbose) or "5" (debug, creates a log file).', /^([0-5])$/).option('--cache-dir <path>', 'set the cache directory. defaults to ".cache"').action(bundle);
program.command('build [input...]').description('bundles for production').option('-d, --out-dir <path>', 'set the output directory. defaults to "dist"').option('-o, --out-file <filename>', 'set the output filename for the application entry point.').option('--public-url <url>', 'set the public URL to serve on. defaults to "/"').option('--global <variable>', 'expose your module through a global variable').option('--no-minify', 'disable minification').option('--no-cache', 'disable the filesystem cache').option('--no-source-maps', 'disable sourcemaps').option('--no-autoinstall', 'disable autoinstall').option('--no-content-hash', 'disable content hashing').option('--experimental-scope-hoisting', 'enable experimental scope hoisting/tree shaking support').option('-t, --target <target>', 'set the runtime environment, either "node", "browser" or "electron". defaults to "browser"', /^(node|browser|electron)$/).option('--bundle-node-modules', 'force bundling node modules, even on node/electron target').option('--detailed-report [depth]', 'print a detailed build report after a completed build. If enabled, defaults to depth "10"', /^([0-9]+|all)$/).option('--log-level <level>', 'set the log level, either "0" (no output), "1" (errors), "2" (warnings), "3" (info), "4" (verbose) or "5" (debug, creates a log file).', /^([0-5])$/).option('--cache-dir <path>', 'set the cache directory. defaults to ".cache"').action(bundle);
program.command('info').description('Prints debugging information about the local environment').action(function () {
console.log(chalk.bold('\nEnvironment Info:'));
envinfo.run({
System: ['OS', 'CPU'],
Binaries: ['Node', 'Yarn', 'npm'],
Browsers: ['Chrome', 'Edge', 'Firefox', 'Safari'],
npmPackages: ['parcel-bundler'],
npmGlobalPackages: ['parcel-bundler']
}).then(console.log);
});
program.command('help [command]').description('display help information for a command').action(function (command) {
let cmd = program.commands.find(c => c.name() === command) || program;
cmd.help();
});
program.on('--help', function () {
console.log('');
console.log(' Run `' + chalk.bold('parcel help <command>') + '` for more information on specific commands');
console.log('');
}); // Make serve the default command except for --help
var args = process.argv;
if (args[2] === '--help' || args[2] === '-h') args[2] = 'help';
if (!args[2] || !program.commands.some(c => c.name() === args[2])) {
args.splice(2, 0, 'serve');
}
program.parse(args);
function bundle(_x, _x2) {
return _bundle.apply(this, arguments);
}
function _bundle() {
_bundle = (0, _asyncToGenerator2.default)(function* (main, command) {
// Require bundler here so the help command is fast
const Bundler = require('../');
if (command.name() === 'watch') {
command.watch = true;
}
if (command.name() === 'build') {
command.production = true;
process.env.NODE_ENV = process.env.NODE_ENV || 'production';
} else {
process.env.NODE_ENV = process.env.NODE_ENV || 'development';
}
if (command.cert && command.key) {
command.https = {
cert: command.cert,
key: command.key
};
}
command.throwErrors = false;
command.scopeHoist = command.experimentalScopeHoisting || false;
const bundler = new Bundler(main, command);
command.target = command.target || 'browser';
if (command.name() === 'serve' && command.target === 'browser') {
const port = command.port || process.env.PORT || 1234;
const server = yield bundler.serve(port, command.https, command.host);
if (server && command.open) {
yield require('./utils/openInBrowser')(`${command.https ? 'https' : 'http'}://${command.host || 'localhost'}:${server.address().port}`, command.open);
}
} else {
bundler.bundle();
}
});
return _bundle.apply(this, arguments);
}

View file

@ -0,0 +1,119 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
const path = require('path');
const Packager = require('./Packager');
const lineCounter = require('../utils/lineCounter');
const urlJoin = require('../utils/urlJoin');
class CSSPackager extends Packager {
start() {
var _this = this;
return (0, _asyncToGenerator2.default)(function* () {
_this.lineOffset = 0;
_this.columnOffset = 0;
})();
}
addAsset(asset) {
var _this2 = this;
return (0, _asyncToGenerator2.default)(function* () {
let css = asset.generated.css || ''; // Figure out which media types this asset was imported with.
// We only want to import the asset once, so group them all together.
let media = [];
var _iterator = _createForOfIteratorHelper(asset.parentDeps),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
let dep = _step.value;
if (!dep.media) {
// Asset was imported without a media type. Don't wrap in @media.
media.length = 0;
break;
} else {
media.push(dep.media);
}
} // If any, wrap in an @media block
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
if (media.length) {
css = `@media ${media.join(', ')} {\n${css.trim()}\n}\n`;
}
if (asset.options.sourceMaps) {
let lineCount = lineCounter(css);
if (lineCount == 1) {
_this2.bundle.addOffset(asset, _this2.lineOffset, _this2.columnOffset);
yield _this2.write(css);
_this2.columnOffset += css.length;
} else {
const lines = css.split('\n');
if (_this2.columnOffset == 0) {
_this2.bundle.addOffset(asset, _this2.lineOffset, 0);
yield _this2.write(css + '\n');
} else {
_this2.columnOffset = 0;
_this2.bundle.addOffset(asset, _this2.lineOffset + 1, 0);
_this2.columnOffset = lines[lines.length - 1].length;
yield _this2.write('\n' + css);
}
_this2.lineOffset += lineCount;
}
} else {
yield _this2.write(css);
}
})();
}
end() {
var _superprop_getEnd = () => super.end,
_this3 = this;
return (0, _asyncToGenerator2.default)(function* () {
if (_this3.options.sourceMaps) {
// Add source map url if a map bundle exists
let mapBundle = _this3.bundle.siblingBundlesMap.get('map');
if (mapBundle) {
let mapUrl = urlJoin(_this3.options.publicURL, path.basename(mapBundle.name));
yield _this3.write(`\n/*# sourceMappingURL=${mapUrl} */`);
}
}
yield _superprop_getEnd().call(_this3);
})();
}
}
module.exports = CSSPackager;

View file

@ -0,0 +1,125 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
const Packager = require('./Packager');
const posthtml = require('posthtml');
const path = require('path');
const urlJoin = require('../utils/urlJoin'); // https://www.w3.org/TR/html5/dom.html#metadata-content-2
const metadataContent = new Set(['base', 'link', 'meta', 'noscript', 'script', 'style', 'template', 'title']);
class HTMLPackager extends Packager {
static shouldAddAsset() {
// We cannot combine multiple HTML files together - they should be written as separate bundles.
return false;
}
addAsset(asset) {
var _this = this;
return (0, _asyncToGenerator2.default)(function* () {
let html = asset.generated.html || ''; // Find child bundles that have JS or CSS sibling bundles,
// add them to the head so they are loaded immediately.
let siblingBundles = Array.from(_this.bundle.childBundles).reduce((p, b) => p.concat([...b.siblingBundles.values()]), []).filter(b => b.type === 'css' || b.type === 'js');
if (siblingBundles.length > 0) {
html = posthtml(_this.insertSiblingBundles.bind(_this, siblingBundles)).process(html, {
sync: true
}).html;
}
yield _this.write(html);
})();
}
addBundlesToTree(bundles, tree) {
const head = find(tree, 'head');
if (head) {
const content = head.content || (head.content = []);
content.push(...bundles);
return;
}
const html = find(tree, 'html');
const content = html ? html.content || (html.content = []) : tree;
const index = findBundleInsertIndex(content);
content.splice(index, 0, ...bundles);
}
insertSiblingBundles(siblingBundles, tree) {
const bundles = [];
var _iterator = _createForOfIteratorHelper(siblingBundles),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
let bundle = _step.value;
if (bundle.type === 'css') {
bundles.push({
tag: 'link',
attrs: {
rel: 'stylesheet',
href: urlJoin(this.options.publicURL, path.basename(bundle.name))
}
});
} else if (bundle.type === 'js') {
bundles.push({
tag: 'script',
attrs: {
src: urlJoin(this.options.publicURL, path.basename(bundle.name))
}
});
}
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
this.addBundlesToTree(bundles, tree);
}
}
function find(tree, tag) {
let res;
tree.match({
tag
}, node => {
res = node;
return node;
});
return res;
}
function findBundleInsertIndex(content) {
for (let index = 0; index < content.length; index++) {
const node = content[index];
if (node && node.tag && !metadataContent.has(node.tag)) {
return index;
}
}
return 0;
}
module.exports = HTMLPackager;

View file

@ -0,0 +1,752 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
const Packager = require('./Packager');
const path = require('path');
const concat = require('../scope-hoisting/concat');
const urlJoin = require('../utils/urlJoin');
const getExisting = require('../utils/getExisting');
const walk = require('babylon-walk');
const babylon = require('@babel/parser');
const t = require('@babel/types');
const _require = require('../scope-hoisting/utils'),
getName = _require.getName,
getIdentifier = _require.getIdentifier;
const prelude = getExisting(path.join(__dirname, '../builtins/prelude2.min.js'), path.join(__dirname, '../builtins/prelude2.js'));
const helpers = getExisting(path.join(__dirname, '../builtins/helpers.min.js'), path.join(__dirname, '../builtins/helpers.js'));
class JSConcatPackager extends Packager {
start() {
var _this = this;
return (0, _asyncToGenerator2.default)(function* () {
_this.addedAssets = new Set();
_this.assets = new Map();
_this.exposedModules = new Set();
_this.externalModules = new Set();
_this.size = 0;
_this.needsPrelude = false;
_this.statements = [];
_this.assetPostludes = new Map();
var _iterator = _createForOfIteratorHelper(_this.bundle.assets),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
let asset = _step.value;
// If this module is referenced by another JS bundle, it needs to be exposed externally.
let isExposed = !Array.from(asset.parentDeps).every(dep => {
let depAsset = _this.bundler.loadedAssets.get(dep.parent);
return _this.bundle.assets.has(depAsset) || depAsset.type !== 'js';
});
if (isExposed || _this.bundle.entryAsset === asset && _this.bundle.parentBundle && _this.bundle.parentBundle.childBundles.size !== 1) {
_this.exposedModules.add(asset);
_this.needsPrelude = true;
}
_this.assets.set(asset.id, asset);
var _iterator2 = _createForOfIteratorHelper(asset.depAssets.values()),
_step2;
try {
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
let mod = _step2.value;
if (!_this.bundle.assets.has(mod) && _this.options.bundleLoaders[asset.type]) {
_this.needsPrelude = true;
break;
}
}
} catch (err) {
_iterator2.e(err);
} finally {
_iterator2.f();
}
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
if (_this.bundle.entryAsset) {
_this.markUsedExports(_this.bundle.entryAsset);
}
if (_this.needsPrelude) {
if (_this.bundle.entryAsset && _this.options.bundleLoaders[_this.bundle.entryAsset.type]) {
_this.exposedModules.add(_this.bundle.entryAsset);
}
}
_this.write(helpers.minified);
})();
}
write(string) {
this.statements.push(...this.parse(string));
}
getSize() {
return this.size;
}
markUsedExports(asset) {
if (asset.usedExports) {
return;
}
asset.usedExports = new Set();
for (let identifier in asset.cacheData.imports) {
let _asset$cacheData$impo = (0, _slicedToArray2.default)(asset.cacheData.imports[identifier], 2),
source = _asset$cacheData$impo[0],
name = _asset$cacheData$impo[1];
let dep = asset.depAssets.get(asset.dependencies.get(source));
if (dep) {
if (name === '*') {
this.markUsedExports(dep);
}
this.markUsed(dep, name);
}
}
}
markUsed(mod, name) {
let _this$findExportModul = this.findExportModule(mod.id, name),
id = _this$findExportModul.id;
mod = this.assets.get(id);
if (!mod) {
return;
}
let exp = mod.cacheData.exports[name];
if (Array.isArray(exp)) {
let depMod = mod.depAssets.get(mod.dependencies.get(exp[0]));
return this.markUsed(depMod, exp[1]);
}
this.markUsedExports(mod);
mod.usedExports.add(name);
}
getExportIdentifier(asset) {
let id = getName(asset, 'exports');
if (this.shouldWrap(asset)) {
return `(${getName(asset, 'init')}(), ${id})`;
}
return id;
}
addAsset(asset) {
var _this2 = this;
return (0, _asyncToGenerator2.default)(function* () {
if (_this2.addedAssets.has(asset)) {
return;
}
_this2.addedAssets.add(asset);
let js = asset.generated.js; // If the asset has no side effects according to the its package's sideEffects flag,
// and there are no used exports marked, exclude the asset from the bundle.
if (asset.cacheData.sideEffects === false && (!asset.usedExports || asset.usedExports.size === 0)) {
return;
}
var _iterator3 = _createForOfIteratorHelper(asset.depAssets),
_step3;
try {
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
let _step3$value = (0, _slicedToArray2.default)(_step3.value, 2),
dep = _step3$value[0],
mod = _step3$value[1];
if (dep.dynamic) {
var _iterator4 = _createForOfIteratorHelper(mod.parentBundle.siblingBundles),
_step4;
try {
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
let child = _step4.value;
if (!child.isEmpty) {
yield _this2.addBundleLoader(child.type, asset);
}
}
} catch (err) {
_iterator4.e(err);
} finally {
_iterator4.f();
}
yield _this2.addBundleLoader(mod.type, asset, true);
} else {
// If the dep isn't in this bundle, add it to the list of external modules to preload.
// Only do this if this is the root JS bundle, otherwise they will have already been
// loaded in parallel with this bundle as part of a dynamic import.
if (!_this2.bundle.assets.has(mod) && (!_this2.bundle.parentBundle || _this2.bundle.parentBundle.type !== 'js') && _this2.options.bundleLoaders[mod.type]) {
_this2.externalModules.add(mod);
yield _this2.addBundleLoader(mod.type, asset);
}
}
} // if (this.bundle.entryAsset === asset && this.externalModules.size > 0) {
// js = `
// function $parcel$entry() {
// ${js.trim()}
// }
// `;
// }
// js = js.trim() + '\n';
} catch (err) {
_iterator3.e(err);
} finally {
_iterator3.f();
}
_this2.size += js.length;
})();
}
shouldWrap(asset) {
if (!asset) {
return false;
}
if (asset.cacheData.shouldWrap != null) {
return asset.cacheData.shouldWrap;
} // Set to false initially so circular deps work
asset.cacheData.shouldWrap = false; // We need to wrap if any of the deps are marked by the hoister, e.g.
// when the dep is required inside a function or conditional.
// We also need to wrap if any of the parents are wrapped - transitive requires
// shouldn't be evaluated until their parents are.
let shouldWrap = [...asset.parentDeps].some(dep => dep.shouldWrap || this.shouldWrap(this.bundler.loadedAssets.get(dep.parent)));
asset.cacheData.shouldWrap = shouldWrap;
return shouldWrap;
}
addDeps(asset, included) {
if (!this.bundle.assets.has(asset) || included.has(asset)) {
return [];
}
included.add(asset);
let depAsts = new Map();
var _iterator5 = _createForOfIteratorHelper(asset.depAssets.values()),
_step5;
try {
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
let depAsset = _step5.value;
if (!depAsts.has(depAsset)) {
let depAst = this.addDeps(depAsset, included);
depAsts.set(depAsset, depAst);
}
}
} catch (err) {
_iterator5.e(err);
} finally {
_iterator5.f();
}
let statements;
if (asset.cacheData.sideEffects === false && (!asset.usedExports || asset.usedExports.size === 0)) {
statements = [];
} else {
statements = this.parse(asset.generated.js, asset.name);
}
if (this.shouldWrap(asset)) {
statements = this.wrapModule(asset, statements);
}
if (statements[0]) {
if (!statements[0].leadingComments) {
statements[0].leadingComments = [];
}
statements[0].leadingComments.push({
type: 'CommentLine',
value: ` ASSET: ${path.relative(this.options.rootDir, asset.name)}`
});
}
let statementIndices = new Map();
for (let i = 0; i < statements.length; i++) {
let statement = statements[i];
if (t.isExpressionStatement(statement)) {
var _iterator6 = _createForOfIteratorHelper(this.findRequires(asset, statement)),
_step6;
try {
for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
let depAsset = _step6.value;
if (!statementIndices.has(depAsset)) {
statementIndices.set(depAsset, i);
}
}
} catch (err) {
_iterator6.e(err);
} finally {
_iterator6.f();
}
}
}
let reverseDeps = [...asset.depAssets.values()].reverse();
var _iterator7 = _createForOfIteratorHelper(reverseDeps),
_step7;
try {
for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
let dep = _step7.value;
let index = statementIndices.has(dep) ? statementIndices.get(dep) : 0;
statements.splice(index, 0, ...depAsts.get(dep));
}
} catch (err) {
_iterator7.e(err);
} finally {
_iterator7.f();
}
if (this.assetPostludes.has(asset)) {
statements.push(...this.parse(this.assetPostludes.get(asset)));
}
return statements;
}
wrapModule(asset, statements) {
let body = [];
let decls = [];
let fns = [];
var _iterator8 = _createForOfIteratorHelper(statements),
_step8;
try {
for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
let node = _step8.value;
// Hoist all declarations out of the function wrapper
// so that they can be referenced by other modules directly.
if (t.isVariableDeclaration(node)) {
var _iterator9 = _createForOfIteratorHelper(node.declarations),
_step9;
try {
for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
let decl = _step9.value;
if (t.isObjectPattern(decl.id) || t.isArrayPattern(decl.id)) {
for (var _i = 0, _Object$values = Object.values(t.getBindingIdentifiers(decl.id)); _i < _Object$values.length; _i++) {
let prop = _Object$values[_i];
decls.push(t.variableDeclarator(prop));
}
if (decl.init) {
body.push(t.expressionStatement(t.assignmentExpression('=', decl.id, decl.init)));
}
} else {
decls.push(t.variableDeclarator(decl.id));
if (decl.init) {
body.push(t.expressionStatement(t.assignmentExpression('=', t.identifier(decl.id.name), decl.init)));
}
}
}
} catch (err) {
_iterator9.e(err);
} finally {
_iterator9.f();
}
} else if (t.isFunctionDeclaration(node)) {
// Function declarations can be hoisted out of the module initialization function
fns.push(node);
} else if (t.isClassDeclaration(node)) {
// Class declarations are not hoisted. We declare a variable outside the
// function convert to a class expression assignment.
decls.push(t.variableDeclarator(t.identifier(node.id.name)));
body.push(t.expressionStatement(t.assignmentExpression('=', t.identifier(node.id.name), t.toExpression(node))));
} else {
body.push(node);
}
}
} catch (err) {
_iterator8.e(err);
} finally {
_iterator8.f();
}
let executed = getName(asset, 'executed');
decls.push(t.variableDeclarator(t.identifier(executed), t.booleanLiteral(false)));
let init = t.functionDeclaration(getIdentifier(asset, 'init'), [], t.blockStatement([t.ifStatement(t.identifier(executed), t.returnStatement()), t.expressionStatement(t.assignmentExpression('=', t.identifier(executed), t.booleanLiteral(true))), ...body]));
return [t.variableDeclaration('var', decls), ...fns, init];
}
parse(code, filename) {
let ast = babylon.parse(code, {
sourceFilename: filename,
allowReturnOutsideFunction: true
});
return ast.program.body;
}
findRequires(asset, ast) {
let result = [];
walk.simple(ast, {
CallExpression(node) {
let args = node.arguments,
callee = node.callee;
if (!t.isIdentifier(callee)) {
return;
}
if (callee.name === '$parcel$require') {
result.push(asset.depAssets.get(asset.dependencies.get(args[1].value)));
}
}
});
return result;
}
getBundleSpecifier(bundle) {
let name = path.relative(path.dirname(this.bundle.name), bundle.name);
if (bundle.entryAsset) {
return [name, bundle.entryAsset.id];
}
return name;
}
addAssetToBundle(asset) {
var _this3 = this;
return (0, _asyncToGenerator2.default)(function* () {
if (_this3.bundle.assets.has(asset)) {
return;
}
_this3.assets.set(asset.id, asset);
_this3.bundle.addAsset(asset);
if (!asset.parentBundle) {
asset.parentBundle = _this3.bundle;
} // Add all dependencies as well
var _iterator10 = _createForOfIteratorHelper(asset.depAssets.values()),
_step10;
try {
for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {
let child = _step10.value;
yield _this3.addAssetToBundle(child, _this3.bundle);
}
} catch (err) {
_iterator10.e(err);
} finally {
_iterator10.f();
}
yield _this3.addAsset(asset);
})();
}
addBundleLoader(bundleType, parentAsset, dynamic) {
var _this4 = this;
return (0, _asyncToGenerator2.default)(function* () {
let loader = _this4.options.bundleLoaders[bundleType];
if (!loader) {
return;
}
let bundleLoader = _this4.bundler.loadedAssets.get(require.resolve('../builtins/bundle-loader'));
if (!bundleLoader && !dynamic) {
bundleLoader = yield _this4.bundler.getAsset('_bundle_loader');
}
if (bundleLoader) {
// parentAsset.depAssets.set({name: '_bundle_loader'}, bundleLoader);
yield _this4.addAssetToBundle(bundleLoader);
} else {
return;
}
let target = _this4.options.target === 'node' ? 'node' : 'browser';
let asset = yield _this4.bundler.getAsset(loader[target]);
if (!_this4.bundle.assets.has(asset)) {
let dep = {
name: asset.name
};
asset.parentDeps.add(dep);
parentAsset.dependencies.set(dep.name, dep);
parentAsset.depAssets.set(dep, asset);
_this4.assetPostludes.set(asset, `${_this4.getExportIdentifier(bundleLoader)}.register(${JSON.stringify(bundleType)},${_this4.getExportIdentifier(asset)});\n`);
yield _this4.addAssetToBundle(asset);
}
})();
}
end() {
var _superprop_getWrite = () => super.write,
_superprop_getEnd = () => super.end,
_this5 = this;
return (0, _asyncToGenerator2.default)(function* () {
let included = new Set();
var _iterator11 = _createForOfIteratorHelper(_this5.bundle.assets),
_step11;
try {
for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {
let asset = _step11.value;
_this5.statements.push(..._this5.addDeps(asset, included));
} // Preload external modules before running entry point if needed
} catch (err) {
_iterator11.e(err);
} finally {
_iterator11.f();
}
if (_this5.externalModules.size > 0) {
let bundleLoader = _this5.bundler.loadedAssets.get(require.resolve('../builtins/bundle-loader'));
let preload = [];
var _iterator12 = _createForOfIteratorHelper(_this5.externalModules),
_step12;
try {
for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {
let mod = _step12.value;
// Find the bundle that has the module as its entry point
let bundle = Array.from(mod.bundles).find(b => b.entryAsset === mod);
if (bundle) {
preload.push([path.basename(bundle.name), mod.id]);
}
}
} catch (err) {
_iterator12.e(err);
} finally {
_iterator12.f();
}
let loads = `${_this5.getExportIdentifier(bundleLoader)}.load(${JSON.stringify(preload)})`;
if (_this5.bundle.entryAsset) {
loads += '.then($parcel$entry)';
}
loads += ';';
_this5.write(loads);
}
let entryExports = _this5.bundle.entryAsset && _this5.getExportIdentifier(_this5.bundle.entryAsset);
if (entryExports && _this5.bundle.entryAsset.generated.js.includes(entryExports)) {
_this5.write(`
if (typeof exports === "object" && typeof module !== "undefined") {
// CommonJS
module.exports = ${entryExports};
} else if (typeof define === "function" && define.amd) {
// RequireJS
define(function () {
return ${entryExports};
});
} ${_this5.options.global ? `else {
// <script>
this[${JSON.stringify(_this5.options.global)}] = ${entryExports};
}` : ''}
`);
}
if (_this5.needsPrelude) {
let exposed = [];
let prepareModule = [];
var _iterator13 = _createForOfIteratorHelper(_this5.exposedModules),
_step13;
try {
for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {
let m = _step13.value;
if (m.cacheData.isES6Module) {
prepareModule.push(`${_this5.getExportIdentifier(m)}.__esModule = true;`);
}
exposed.push(`"${m.id}": ${_this5.getExportIdentifier(m)}`);
}
} catch (err) {
_iterator13.e(err);
} finally {
_iterator13.f();
}
_this5.write(`
${prepareModule.join('\n')}
return {${exposed.join(', ')}};
`);
}
try {
let ast = t.file(t.program(_this5.statements));
let _concat = concat(_this5, ast),
output = _concat.code;
if (!_this5.options.minify) {
output = '\n' + output + '\n';
}
let preludeCode = _this5.options.minify ? prelude.minified : prelude.source;
if (_this5.needsPrelude) {
output = preludeCode + '(function (require) {' + output + '});';
} else {
output = '(function () {' + output + '})();';
}
_this5.size = output.length;
let sourceMaps = _this5.options.sourceMaps;
if (sourceMaps) {
// Add source map url if a map bundle exists
let mapBundle = _this5.bundle.siblingBundlesMap.get('map');
if (mapBundle) {
let mapUrl = urlJoin(_this5.options.publicURL, path.basename(mapBundle.name));
output += `\n//# sourceMappingURL=${mapUrl}`;
}
}
yield _superprop_getWrite().call(_this5, output);
} catch (e) {
throw e;
} finally {
yield _superprop_getEnd().call(_this5);
}
})();
}
resolveModule(id, name) {
let module = this.assets.get(id);
return module.depAssets.get(module.dependencies.get(name));
}
findExportModule(id, name, replacements) {
let asset = this.assets.get(id);
let exp = asset && Object.prototype.hasOwnProperty.call(asset.cacheData.exports, name) ? asset.cacheData.exports[name] : null; // If this is a re-export, find the original module.
if (Array.isArray(exp)) {
let mod = this.resolveModule(id, exp[0]);
return this.findExportModule(mod.id, exp[1], replacements);
} // If this module exports wildcards, resolve the original module.
// Default exports are excluded from wildcard exports.
let wildcards = asset && asset.cacheData.wildcards;
if (wildcards && name !== 'default' && name !== '*') {
var _iterator14 = _createForOfIteratorHelper(wildcards),
_step14;
try {
for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {
let source = _step14.value;
let mod = this.resolveModule(id, source);
let m = this.findExportModule(mod.id, name, replacements);
if (m.identifier) {
return m;
}
}
} catch (err) {
_iterator14.e(err);
} finally {
_iterator14.f();
}
} // If this is a wildcard import, resolve to the exports object.
if (asset && name === '*') {
exp = getName(asset, 'exports');
}
if (replacements && replacements.has(exp)) {
exp = replacements.get(exp);
}
return {
identifier: exp,
name,
id
};
}
}
module.exports = JSConcatPackager;

View file

@ -0,0 +1,326 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
const path = require('path');
const Packager = require('./Packager');
const getExisting = require('../utils/getExisting');
const urlJoin = require('../utils/urlJoin');
const lineCounter = require('../utils/lineCounter');
const objectHash = require('../utils/objectHash');
const prelude = getExisting(path.join(__dirname, '../builtins/prelude.min.js'), path.join(__dirname, '../builtins/prelude.js'));
class JSPackager extends Packager {
start() {
var _this = this;
return (0, _asyncToGenerator2.default)(function* () {
_this.first = true;
_this.dedupe = new Map();
_this.bundleLoaders = new Set();
_this.externalModules = new Set();
let preludeCode = _this.options.minify ? prelude.minified : prelude.source;
if (_this.options.target === 'electron') {
preludeCode = `process.env.HMR_PORT=${_this.options.hmrPort};process.env.HMR_HOSTNAME=${JSON.stringify(_this.options.hmrHostname)};` + preludeCode;
}
yield _this.write(preludeCode + '({');
_this.lineOffset = lineCounter(preludeCode);
})();
}
addAsset(asset) {
var _this2 = this;
return (0, _asyncToGenerator2.default)(function* () {
// If this module is referenced by another JS bundle, it needs to be exposed externally.
// In that case, don't dedupe the asset as it would affect the module ids that are referenced by other bundles.
let isExposed = !Array.from(asset.parentDeps).every(dep => {
let depAsset = _this2.bundler.loadedAssets.get(dep.parent);
return _this2.bundle.assets.has(depAsset) || depAsset.type !== 'js';
});
if (!isExposed) {
let key = _this2.dedupeKey(asset);
if (_this2.dedupe.has(key)) {
return;
} // Don't dedupe when HMR is turned on since it messes with the asset ids
if (!_this2.options.hmr) {
_this2.dedupe.set(key, asset.id);
}
}
let deps = {};
var _iterator = _createForOfIteratorHelper(asset.depAssets),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
let _step$value = (0, _slicedToArray2.default)(_step.value, 2),
dep = _step$value[0],
mod = _step$value[1];
// For dynamic dependencies, list the child bundles to load along with the module id
if (dep.dynamic) {
let bundles = [_this2.getBundleSpecifier(mod.parentBundle)];
var _iterator2 = _createForOfIteratorHelper(mod.parentBundle.siblingBundles),
_step2;
try {
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
let child = _step2.value;
if (!child.isEmpty) {
bundles.push(_this2.getBundleSpecifier(child));
_this2.bundleLoaders.add(child.type);
}
}
} catch (err) {
_iterator2.e(err);
} finally {
_iterator2.f();
}
bundles.push(mod.id);
deps[dep.name] = bundles;
_this2.bundleLoaders.add(mod.type);
} else {
deps[dep.name] = _this2.dedupe.get(_this2.dedupeKey(mod)) || mod.id; // If the dep isn't in this bundle, add it to the list of external modules to preload.
// Only do this if this is the root JS bundle, otherwise they will have already been
// loaded in parallel with this bundle as part of a dynamic import.
if (!_this2.bundle.assets.has(mod)) {
_this2.externalModules.add(mod);
if (!_this2.bundle.parentBundle || _this2.bundle.isolated || _this2.bundle.parentBundle.type !== 'js') {
_this2.bundleLoaders.add(mod.type);
}
}
}
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
_this2.bundle.addOffset(asset, _this2.lineOffset);
yield _this2.writeModule(asset.id, asset.generated.js, deps, asset.generated.map);
})();
}
getBundleSpecifier(bundle) {
let name = path.relative(path.dirname(this.bundle.name), bundle.name);
if (bundle.entryAsset) {
return [name, bundle.entryAsset.id];
}
return name;
}
dedupeKey(asset) {
// cannot rely *only* on generated JS for deduplication because paths like
// `../` can cause 2 identical JS files to behave differently depending on
// where they are located on the filesystem
let deps = Array.from(asset.depAssets.values(), dep => dep.name).sort();
return objectHash([asset.generated.js, deps]);
}
writeModule(id, code, deps = {}, map) {
var _this3 = this;
return (0, _asyncToGenerator2.default)(function* () {
let wrapped = _this3.first ? '' : ',';
wrapped += JSON.stringify(id) + ':[function(require,module,exports) {\n' + (code || '') + '\n},';
wrapped += JSON.stringify(deps);
wrapped += ']';
_this3.first = false;
yield _this3.write(wrapped); // Use the pre-computed line count from the source map if possible
let lineCount = map && map.lineCount ? map.lineCount : lineCounter(code);
_this3.lineOffset += 1 + lineCount;
})();
}
addAssetToBundle(asset) {
var _this4 = this;
return (0, _asyncToGenerator2.default)(function* () {
if (_this4.bundle.assets.has(asset)) {
return;
}
_this4.bundle.addAsset(asset);
if (!asset.parentBundle) {
asset.parentBundle = _this4.bundle;
} // Add all dependencies as well
var _iterator3 = _createForOfIteratorHelper(asset.depAssets.values()),
_step3;
try {
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
let child = _step3.value;
yield _this4.addAssetToBundle(child);
}
} catch (err) {
_iterator3.e(err);
} finally {
_iterator3.f();
}
yield _this4.addAsset(asset);
})();
}
writeBundleLoaders() {
var _this5 = this;
return (0, _asyncToGenerator2.default)(function* () {
if (_this5.bundleLoaders.size === 0) {
return false;
}
let bundleLoader = _this5.bundler.loadedAssets.get(require.resolve('../builtins/bundle-loader'));
if (_this5.externalModules.size > 0 && !bundleLoader) {
bundleLoader = yield _this5.bundler.getAsset('_bundle_loader');
}
if (bundleLoader) {
yield _this5.addAssetToBundle(bundleLoader);
} else {
return;
} // Generate a module to register the bundle loaders that are needed
let loads = 'var b=require(' + JSON.stringify(bundleLoader.id) + ');';
var _iterator4 = _createForOfIteratorHelper(_this5.bundleLoaders),
_step4;
try {
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
let bundleType = _step4.value;
let loader = _this5.options.bundleLoaders[bundleType];
if (loader) {
let target = _this5.options.target === 'node' ? 'node' : 'browser';
let asset = yield _this5.bundler.getAsset(loader[target]);
yield _this5.addAssetToBundle(asset);
loads += 'b.register(' + JSON.stringify(bundleType) + ',require(' + JSON.stringify(asset.id) + '));';
}
} // Preload external modules before running entry point if needed
} catch (err) {
_iterator4.e(err);
} finally {
_iterator4.f();
}
if (_this5.externalModules.size > 0) {
let preload = [];
var _iterator5 = _createForOfIteratorHelper(_this5.externalModules),
_step5;
try {
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
let mod = _step5.value;
// Find the bundle that has the module as its entry point
let bundle = Array.from(mod.bundles).find(b => b.entryAsset === mod);
if (bundle) {
preload.push([path.basename(bundle.name), mod.id]);
}
}
} catch (err) {
_iterator5.e(err);
} finally {
_iterator5.f();
}
loads += 'b.load(' + JSON.stringify(preload) + ')';
if (_this5.bundle.entryAsset) {
loads += `.then(function(){require(${JSON.stringify(_this5.bundle.entryAsset.id)});})`;
}
loads += ';';
} // Asset ids normally start at 1, so this should be safe.
yield _this5.writeModule(0, loads, {});
return true;
})();
}
end() {
var _superprop_getEnd = () => super.end,
_this6 = this;
return (0, _asyncToGenerator2.default)(function* () {
let entry = []; // Add the HMR runtime if needed.
if (_this6.options.hmr) {
let asset = yield _this6.bundler.getAsset(require.resolve('../builtins/hmr-runtime'));
yield _this6.addAssetToBundle(asset);
entry.push(asset.id);
}
if (yield _this6.writeBundleLoaders()) {
entry.push(0);
}
if (_this6.bundle.entryAsset && _this6.externalModules.size === 0) {
entry.push(_this6.bundle.entryAsset.id);
}
yield _this6.write('},{},' + JSON.stringify(entry) + ', ' + JSON.stringify(_this6.options.global || null) + ')');
if (_this6.options.sourceMaps) {
// Add source map url if a map bundle exists
let mapBundle = _this6.bundle.siblingBundlesMap.get('map');
if (mapBundle) {
let mapUrl = urlJoin(_this6.options.publicURL, path.relative(_this6.options.outDir, mapBundle.name));
yield _this6.write(`\n//# sourceMappingURL=${mapUrl}`);
}
}
yield _superprop_getEnd().call(_this6);
})();
}
}
module.exports = JSPackager;

View file

@ -0,0 +1,76 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
const fs = require('fs');
const _require = require('@parcel/utils'),
promisify = _require.promisify;
const path = require('path');
const _require2 = require('@parcel/fs'),
mkdirp = _require2.mkdirp;
class Packager {
constructor(bundle, bundler) {
this.bundle = bundle;
this.bundler = bundler;
this.options = bundler.options;
}
static shouldAddAsset() {
return true;
}
setup() {
var _this = this;
return (0, _asyncToGenerator2.default)(function* () {
// Create sub-directories if needed
if (_this.bundle.name.includes(path.sep)) {
yield mkdirp(path.dirname(_this.bundle.name));
}
_this.dest = fs.createWriteStream(_this.bundle.name);
_this.dest.write = promisify(_this.dest.write.bind(_this.dest));
_this.dest.end = promisify(_this.dest.end.bind(_this.dest));
})();
}
write(string) {
var _this2 = this;
return (0, _asyncToGenerator2.default)(function* () {
yield _this2.dest.write(string);
})();
}
start() {
return (0, _asyncToGenerator2.default)(function* () {})();
} // eslint-disable-next-line no-unused-vars
addAsset(asset) {
return (0, _asyncToGenerator2.default)(function* () {
throw new Error('Must be implemented by subclasses');
})();
}
getSize() {
return this.dest.bytesWritten;
}
end() {
var _this3 = this;
return (0, _asyncToGenerator2.default)(function* () {
yield _this3.dest.end();
})();
}
}
module.exports = Packager;

View file

@ -0,0 +1,51 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
const Packager = require('./Packager');
const path = require('path');
const fs = require('@parcel/fs');
class RawPackager extends Packager {
static shouldAddAsset() {
// We cannot combine multiple raw assets together - they should be written as separate bundles.
return false;
} // Override so we don't create a file for this bundle.
// Each asset will be emitted as a separate file instead.
setup() {}
addAsset(asset) {
var _this = this;
return (0, _asyncToGenerator2.default)(function* () {
let contents = asset.generated[_this.bundle.type];
if (!contents || contents && contents.path) {
contents = yield fs.readFile(contents ? contents.path : asset.name);
} // Create sub-directories if needed
if (_this.bundle.name.includes(path.sep)) {
yield fs.mkdirp(path.dirname(_this.bundle.name));
}
_this.size = contents.length;
yield fs.writeFile(_this.bundle.name, contents);
})();
}
getSize() {
return this.size || 0;
}
end() {}
}
module.exports = RawPackager;

View file

@ -0,0 +1,47 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
const path = require('path');
const Packager = require('./Packager');
const SourceMap = require('../SourceMap');
class SourceMapPackager extends Packager {
start() {
var _this = this;
return (0, _asyncToGenerator2.default)(function* () {
_this.sourceMap = new SourceMap();
})();
}
addAsset(asset) {
var _this2 = this;
return (0, _asyncToGenerator2.default)(function* () {
let offsets = _this2.bundle.parentBundle.getOffset(asset);
if (asset.sourceMaps[asset.type]) {
yield _this2.sourceMap.addMap(asset.sourceMaps[asset.type], offsets[0], offsets[1]);
}
})();
}
end() {
var _superprop_getEnd = () => super.end,
_this3 = this;
return (0, _asyncToGenerator2.default)(function* () {
let file = path.basename(_this3.bundle.parentBundle.name);
yield _this3.write(_this3.sourceMap.stringify(file, path.relative(_this3.options.outDir, _this3.options.rootDir)));
yield _superprop_getEnd().call(_this3);
})();
}
}
module.exports = SourceMapPackager;

42
BACK_BACK/node_modules/parcel-bundler/lib/packagers/index.js generated vendored Executable file
View file

@ -0,0 +1,42 @@
"use strict";
const JSConcatPackager = require('./JSConcatPackager');
const JSPackager = require('./JSPackager');
const CSSPackager = require('./CSSPackager');
const HTMLPackager = require('./HTMLPackager');
const SourceMapPackager = require('./SourceMapPackager');
const RawPackager = require('./RawPackager');
class PackagerRegistry {
constructor(options) {
this.packagers = new Map();
this.add('css', CSSPackager);
this.add('html', HTMLPackager);
this.add('map', SourceMapPackager);
this.add('js', options.scopeHoist ? JSConcatPackager : JSPackager);
}
add(type, packager) {
if (typeof packager === 'string') {
packager = require(packager);
}
this.packagers.set(type, packager);
}
has(type) {
return this.packagers.has(type);
}
get(type) {
return this.packagers.get(type) || RawPackager;
}
}
module.exports = PackagerRegistry;

View file

@ -0,0 +1,452 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
const _require = require('path'),
relative = _require.relative;
const template = require('@babel/template').default;
const t = require('@babel/types');
const traverse = require('@babel/traverse').default;
const generate = require('@babel/generator').default;
const treeShake = require('./shake');
const mangleScope = require('./mangler');
const _require2 = require('./utils'),
getName = _require2.getName,
getIdentifier = _require2.getIdentifier;
const EXPORTS_RE = /^\$([^$]+)\$exports$/;
const ESMODULE_TEMPLATE = template(`$parcel$defineInteropFlag(EXPORTS);`);
const DEFAULT_INTEROP_TEMPLATE = template('var NAME = $parcel$interopDefault(MODULE)');
const THROW_TEMPLATE = template('$parcel$missingModule(MODULE)');
const REQUIRE_TEMPLATE = template('require(ID)');
module.exports = (packager, ast) => {
let assets = packager.assets;
let replacements = new Map();
let imports = new Map();
let referenced = new Set(); // Build a mapping of all imported identifiers to replace.
var _iterator = _createForOfIteratorHelper(assets.values()),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
let asset = _step.value;
for (let name in asset.cacheData.imports) {
let imp = asset.cacheData.imports[name];
imports.set(name, [packager.resolveModule(asset.id, imp[0]), imp[1]]);
}
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
function replaceExportNode(module, originalName, path) {
let _packager$findExportM = packager.findExportModule(module.id, originalName, replacements),
identifier = _packager$findExportM.identifier,
name = _packager$findExportM.name,
id = _packager$findExportM.id;
let mod = assets.get(id);
let node;
if (identifier) {
node = findSymbol(path, identifier);
} // If the module is not in this bundle, create a `require` call for it.
if (!node && !mod) {
node = REQUIRE_TEMPLATE({
ID: t.stringLiteral(id)
}).expression;
return interop(module, name, path, node);
} // If this is an ES6 module, throw an error if we cannot resolve the module
if (!node && !mod.cacheData.isCommonJS && mod.cacheData.isES6Module) {
let relativePath = relative(packager.options.rootDir, mod.name);
throw new Error(`${relativePath} does not export '${name}'`);
} // If it is CommonJS, look for an exports object.
if (!node && mod.cacheData.isCommonJS) {
node = findSymbol(path, getName(mod, 'exports'));
if (!node) {
return null;
}
return interop(mod, name, path, node);
}
return node;
}
function findSymbol(path, symbol) {
if (replacements.has(symbol)) {
symbol = replacements.get(symbol);
} // if the symbol is in the scope there is not need to remap it
if (path.scope.getProgramParent().hasBinding(symbol)) {
return t.identifier(symbol);
}
return null;
}
function interop(mod, originalName, path, node) {
// Handle interop for default imports of CommonJS modules.
if (mod.cacheData.isCommonJS && originalName === 'default') {
let name = getName(mod, '$interop$default');
if (!path.scope.getBinding(name)) {
let _path$getStatementPar = path.getStatementParent().insertBefore(DEFAULT_INTEROP_TEMPLATE({
NAME: t.identifier(name),
MODULE: node
})),
_path$getStatementPar2 = (0, _slicedToArray2.default)(_path$getStatementPar, 1),
decl = _path$getStatementPar2[0];
let binding = path.scope.getBinding(getName(mod, 'exports'));
if (binding) {
binding.reference(decl.get('declarations.0.init'));
}
path.scope.registerDeclaration(decl);
}
return t.memberExpression(t.identifier(name), t.identifier('d'));
} // if there is a CommonJS export return $id$exports.name
if (originalName !== '*') {
return t.memberExpression(node, t.identifier(originalName));
}
return node;
}
function isUnusedValue(path) {
return path.parentPath.isExpressionStatement() || path.parentPath.isSequenceExpression() && (path.key !== path.container.length - 1 || isUnusedValue(path.parentPath));
}
traverse(ast, {
CallExpression(path) {
let _path$node = path.node,
args = _path$node.arguments,
callee = _path$node.callee;
if (!t.isIdentifier(callee)) {
return;
} // each require('module') call gets replaced with $parcel$require(id, 'module')
if (callee.name === '$parcel$require') {
let _args = (0, _slicedToArray2.default)(args, 2),
id = _args[0],
source = _args[1];
if (args.length !== 2 || !t.isStringLiteral(id) || !t.isStringLiteral(source)) {
throw new Error('invariant: invalid signature, expected : $parcel$require(number, string)');
}
let asset = assets.get(id.value);
let mod = packager.resolveModule(id.value, source.value);
if (!mod) {
if (asset.dependencies.get(source.value).optional) {
path.replaceWith(THROW_TEMPLATE({
MODULE: t.stringLiteral(source.value)
}));
} else {
throw new Error(`Cannot find module "${source.value}" in asset ${id.value}`);
}
} else {
let node;
if (assets.get(mod.id)) {
// Replace with nothing if the require call's result is not used.
if (!isUnusedValue(path)) {
let name = getName(mod, 'exports');
node = t.identifier(replacements.get(name) || name); // Insert __esModule interop flag if the required module is an ES6 module with a default export.
// This ensures that code generated by Babel and other tools works properly.
if (asset.cacheData.isCommonJS && mod.cacheData.isES6Module && mod.cacheData.exports.default) {
let binding = path.scope.getBinding(name);
if (binding && !binding.path.getData('hasESModuleFlag')) {
if (binding.path.node.init) {
binding.path.getStatementParent().insertAfter(ESMODULE_TEMPLATE({
EXPORTS: name
}));
}
var _iterator2 = _createForOfIteratorHelper(binding.constantViolations),
_step2;
try {
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
let path = _step2.value;
path.insertAfter(ESMODULE_TEMPLATE({
EXPORTS: name
}));
}
} catch (err) {
_iterator2.e(err);
} finally {
_iterator2.f();
}
binding.path.setData('hasESModuleFlag', true);
}
}
} // We need to wrap the module in a function when a require
// call happens inside a non top-level scope, e.g. in a
// function, if statement, or conditional expression.
if (mod.cacheData.shouldWrap) {
let call = t.callExpression(getIdentifier(mod, 'init'), []);
node = node ? t.sequenceExpression([call, node]) : call;
}
} else {
node = REQUIRE_TEMPLATE({
ID: t.stringLiteral(mod.id)
}).expression;
}
if (node) {
path.replaceWith(node);
} else {
path.remove();
}
}
} else if (callee.name === '$parcel$require$resolve') {
let _args2 = (0, _slicedToArray2.default)(args, 2),
id = _args2[0],
source = _args2[1];
if (args.length !== 2 || !t.isStringLiteral(id) || !t.isStringLiteral(source)) {
throw new Error('invariant: invalid signature, expected : $parcel$require$resolve(number, string)');
}
let mapped = assets.get(id.value);
let dep = mapped.dependencies.get(source.value);
let mod = mapped.depAssets.get(dep);
let bundles = mod.id;
if (dep.dynamic && packager.bundle.childBundles.has(mod.parentBundle)) {
bundles = [];
var _iterator3 = _createForOfIteratorHelper(mod.parentBundle.siblingBundles),
_step3;
try {
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
let child = _step3.value;
if (!child.isEmpty && packager.options.bundleLoaders[child.type]) {
bundles.push(packager.getBundleSpecifier(child));
}
}
} catch (err) {
_iterator3.e(err);
} finally {
_iterator3.f();
}
bundles.push(packager.getBundleSpecifier(mod.parentBundle));
bundles.push(mod.id);
}
path.replaceWith(t.valueToNode(bundles));
}
},
VariableDeclarator: {
exit(path) {
// Replace references to declarations like `var x = require('x')`
// with the final export identifier instead.
// This allows us to potentially replace accesses to e.g. `x.foo` with
// a variable like `$id$export$foo` later, avoiding the exports object altogether.
let _path$node2 = path.node,
id = _path$node2.id,
init = _path$node2.init;
if (!t.isIdentifier(init)) {
return;
}
let match = init.name.match(EXPORTS_RE);
if (!match) {
return;
} // Replace patterns like `var {x} = require('y')` with e.g. `$id$export$x`.
if (t.isObjectPattern(id)) {
var _iterator4 = _createForOfIteratorHelper(path.get('id.properties')),
_step4;
try {
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
let p = _step4.value;
let _p$node = p.node,
computed = _p$node.computed,
key = _p$node.key,
value = _p$node.value;
if (computed || !t.isIdentifier(key) || !t.isIdentifier(value)) {
continue;
}
let _packager$findExportM2 = packager.findExportModule(match[1], key.name, replacements),
identifier = _packager$findExportM2.identifier;
if (identifier) {
replace(value.name, identifier, p);
}
}
} catch (err) {
_iterator4.e(err);
} finally {
_iterator4.f();
}
if (id.properties.length === 0) {
path.remove();
}
} else if (t.isIdentifier(id)) {
replace(id.name, init.name, path);
}
function replace(id, init, path) {
let binding = path.scope.getBinding(id);
if (!binding.constant) {
return;
}
var _iterator5 = _createForOfIteratorHelper(binding.referencePaths),
_step5;
try {
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
let ref = _step5.value;
ref.replaceWith(t.identifier(init));
}
} catch (err) {
_iterator5.e(err);
} finally {
_iterator5.f();
}
replacements.set(id, init);
path.remove();
}
}
},
MemberExpression: {
exit(path) {
if (!path.isReferenced()) {
return;
}
let _path$node3 = path.node,
object = _path$node3.object,
property = _path$node3.property,
computed = _path$node3.computed;
if (!(t.isIdentifier(object) && (t.isIdentifier(property) && !computed || t.isStringLiteral(property)))) {
return;
}
let match = object.name.match(EXPORTS_RE); // If it's a $id$exports.name expression.
if (match) {
let name = t.isIdentifier(property) ? property.name : property.value;
let _packager$findExportM3 = packager.findExportModule(match[1], name, replacements),
identifier = _packager$findExportM3.identifier; // Check if $id$export$name exists and if so, replace the node by it.
if (identifier) {
path.replaceWith(t.identifier(identifier));
}
}
}
},
ReferencedIdentifier(path) {
let name = path.node.name;
if (typeof name !== 'string') {
return;
}
if (imports.has(name)) {
let imp = imports.get(name);
let node = replaceExportNode(imp[0], imp[1], path); // If the export does not exist, replace with an empty object.
if (!node) {
node = t.objectExpression([]);
}
path.replaceWith(node);
return;
}
let match = name.match(EXPORTS_RE);
if (match) {
referenced.add(name);
} // If it's an undefined $id$exports identifier.
if (match && !path.scope.hasBinding(name)) {
path.replaceWith(t.objectExpression([]));
}
},
Program: {
// A small optimization to remove unused CommonJS exports as sometimes Uglify doesn't remove them.
exit(path) {
treeShake(path.scope);
if (packager.options.minify) {
mangleScope(path.scope);
}
}
}
});
let opts = {
sourceMaps: packager.options.sourceMaps,
sourceFileName: packager.bundle.name,
minified: packager.options.minify,
comments: !packager.options.minify
};
return generate(ast, opts);
};

View file

@ -0,0 +1,570 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
const path = require('path');
const mm = require('micromatch');
const t = require('@babel/types');
const template = require('@babel/template').default;
const traverse = require('@babel/traverse').default;
const rename = require('./renamer');
const _require = require('./utils'),
getName = _require.getName,
getIdentifier = _require.getIdentifier,
getExportIdentifier = _require.getExportIdentifier;
const WRAPPER_TEMPLATE = template(`
var NAME = (function () {
var exports = this;
var module = {exports: this};
BODY;
return module.exports;
}).call({});
`);
const ESMODULE_TEMPLATE = template(`exports.__esModule = true;`);
const EXPORT_ASSIGN_TEMPLATE = template('EXPORTS.NAME = LOCAL');
const EXPORT_ALL_TEMPLATE = template('$parcel$exportWildcard(OLD_NAME, $parcel$require(ID, SOURCE))');
const REQUIRE_CALL_TEMPLATE = template('$parcel$require(ID, SOURCE)');
const REQUIRE_RESOLVE_CALL_TEMPLATE = template('$parcel$require$resolve(ID, SOURCE)');
const TYPEOF = {
module: 'object',
require: 'function'
};
function hasSideEffects(asset, {
sideEffects
} = asset._package) {
switch (typeof sideEffects) {
case 'undefined':
return true;
case 'boolean':
return sideEffects;
case 'string':
return mm.isMatch(path.relative(asset._package.pkgdir, asset.name), sideEffects, {
matchBase: true
});
case 'object':
return sideEffects.some(sideEffects => hasSideEffects(asset, {
sideEffects
}));
}
}
module.exports = {
Program: {
enter(path, asset) {
traverse.cache.clearScope();
path.scope.crawl();
asset.cacheData.imports = asset.cacheData.imports || Object.create(null);
asset.cacheData.exports = asset.cacheData.exports || Object.create(null);
asset.cacheData.wildcards = asset.cacheData.wildcards || [];
asset.cacheData.sideEffects = asset._package && hasSideEffects(asset);
let shouldWrap = false;
path.traverse({
CallExpression(path) {
// If we see an `eval` call, wrap the module in a function.
// Otherwise, local variables accessed inside the eval won't work.
let callee = path.node.callee;
if (t.isIdentifier(callee) && callee.name === 'eval' && !path.scope.hasBinding('eval', true)) {
asset.cacheData.isCommonJS = true;
shouldWrap = true;
path.stop();
}
},
ReturnStatement(path) {
// Wrap in a function if we see a top-level return statement.
if (!path.getFunctionParent()) {
shouldWrap = true;
asset.cacheData.isCommonJS = true;
path.replaceWith(t.returnStatement(t.memberExpression(t.identifier('module'), t.identifier('exports'))));
path.stop();
}
},
ReferencedIdentifier(path) {
// We must wrap if `module` is referenced as a free identifier rather
// than a statically resolvable member expression.
if (path.node.name === 'module' && (!path.parentPath.isMemberExpression() || path.parent.computed) && !(path.parentPath.isUnaryExpression() && path.parent.operator === 'typeof') && !path.scope.hasBinding('module') && !path.scope.getData('shouldWrap')) {
asset.cacheData.isCommonJS = true;
shouldWrap = true;
path.stop();
}
}
});
path.scope.setData('shouldWrap', shouldWrap);
},
exit(path, asset) {
let scope = path.scope;
if (scope.getData('shouldWrap')) {
if (asset.cacheData.isES6Module) {
path.unshiftContainer('body', [ESMODULE_TEMPLATE()]);
}
path.replaceWith(t.program([WRAPPER_TEMPLATE({
NAME: getExportsIdentifier(asset),
BODY: path.node.body
})]));
asset.cacheData.exports = {};
asset.cacheData.isCommonJS = true;
asset.cacheData.isES6Module = false;
} else {
// Re-crawl scope so we are sure to have all bindings.
scope.crawl(); // Rename each binding in the top-level scope to something unique.
for (let name in scope.bindings) {
if (!name.startsWith('$' + t.toIdentifier(asset.id))) {
let newName = getName(asset, 'var', name);
rename(scope, name, newName);
}
}
let exportsIdentifier = getExportsIdentifier(asset); // Add variable that represents module.exports if it is referenced and not declared.
if (scope.hasGlobal(exportsIdentifier.name) && !scope.hasBinding(exportsIdentifier.name)) {
scope.push({
id: exportsIdentifier,
init: t.objectExpression([])
});
}
}
path.stop();
asset.isAstDirty = true;
}
},
DirectiveLiteral(path) {
// Remove 'use strict' directives, since modules are concatenated - one strict mode
// module should not apply to all other modules in the same scope.
if (path.node.value === 'use strict') {
path.parentPath.remove();
}
},
MemberExpression(path, asset) {
if (path.scope.hasBinding('module') || path.scope.getData('shouldWrap')) {
return;
}
if (t.matchesPattern(path.node, 'module.exports')) {
path.replaceWith(getExportsIdentifier(asset));
asset.cacheData.isCommonJS = true;
}
if (t.matchesPattern(path.node, 'module.id')) {
path.replaceWith(t.stringLiteral(asset.id));
}
if (t.matchesPattern(path.node, 'module.hot')) {
path.replaceWith(t.identifier('null'));
}
if (t.matchesPattern(path.node, 'module.require') && asset.options.target !== 'node') {
path.replaceWith(t.identifier('null'));
}
if (t.matchesPattern(path.node, 'module.bundle')) {
path.replaceWith(t.identifier('require'));
}
},
ReferencedIdentifier(path, asset) {
if (path.node.name === 'exports' && !path.scope.hasBinding('exports') && !path.scope.getData('shouldWrap')) {
path.replaceWith(getExportsIdentifier(asset));
asset.cacheData.isCommonJS = true;
}
if (path.node.name === 'global' && !path.scope.hasBinding('global')) {
path.replaceWith(t.identifier('$parcel$global'));
asset.globals.delete('global');
}
let globalCode = asset.globals.get(path.node.name);
if (globalCode) {
path.scope.getProgramParent().path.unshiftContainer('body', [template(globalCode)()]);
asset.globals.delete(path.node.name);
}
},
ThisExpression(path, asset) {
if (!path.scope.parent && !path.scope.getData('shouldWrap')) {
path.replaceWith(getExportsIdentifier(asset));
asset.cacheData.isCommonJS = true;
}
},
AssignmentExpression(path, asset) {
if (path.scope.hasBinding('exports') || path.scope.getData('shouldWrap')) {
return;
}
let _path$node = path.node,
left = _path$node.left,
right = _path$node.right;
if (t.isIdentifier(left) && left.name === 'exports') {
path.get('left').replaceWith(getExportsIdentifier(asset));
asset.cacheData.isCommonJS = true;
} // If we can statically evaluate the name of a CommonJS export, create an ES6-style export for it.
// This allows us to remove the CommonJS export object completely in many cases.
if (t.isMemberExpression(left) && t.isIdentifier(left.object, {
name: 'exports'
}) && (t.isIdentifier(left.property) && !left.computed || t.isStringLiteral(left.property))) {
let name = t.isIdentifier(left.property) ? left.property.name : left.property.value;
let identifier = getExportIdentifier(asset, name); // Replace the CommonJS assignment with a reference to the ES6 identifier.
path.get('left.object').replaceWith(getExportsIdentifier(asset));
path.get('right').replaceWith(identifier); // If this is the first assignment, create a binding for the ES6-style export identifier.
// Otherwise, assign to the existing export binding.
let scope = path.scope.getProgramParent();
if (!scope.hasBinding(identifier.name)) {
asset.cacheData.exports[name] = identifier.name; // If in the program scope, create a variable declaration and initialize with the exported value.
// Otherwise, declare the variable in the program scope, and assign to it here.
if (path.scope === scope) {
let _path$insertBefore = path.insertBefore(t.variableDeclaration('var', [t.variableDeclarator(t.clone(identifier), right)])),
_path$insertBefore2 = (0, _slicedToArray2.default)(_path$insertBefore, 1),
decl = _path$insertBefore2[0];
scope.registerDeclaration(decl);
} else {
scope.push({
id: t.clone(identifier)
});
path.insertBefore(t.assignmentExpression('=', t.clone(identifier), right));
}
} else {
path.insertBefore(t.assignmentExpression('=', t.clone(identifier), right));
}
asset.cacheData.isCommonJS = true;
}
},
UnaryExpression(path) {
// Replace `typeof module` with "object"
if (path.node.operator === 'typeof' && t.isIdentifier(path.node.argument) && TYPEOF[path.node.argument.name] && !path.scope.hasBinding(path.node.argument.name) && !path.scope.getData('shouldWrap')) {
path.replaceWith(t.stringLiteral(TYPEOF[path.node.argument.name]));
}
},
CallExpression(path, asset) {
let _path$node2 = path.node,
callee = _path$node2.callee,
args = _path$node2.arguments;
let ignore = args.length !== 1 || !t.isStringLiteral(args[0]) || path.scope.hasBinding('require');
if (ignore) {
return;
}
if (t.isIdentifier(callee, {
name: 'require'
})) {
let source = args[0].value; // Ignore require calls that were ignored earlier.
if (!asset.dependencies.has(source)) {
return;
} // If this require call does not occur in the top-level, e.g. in a function
// or inside an if statement, or if it might potentially happen conditionally,
// the module must be wrapped in a function so that the module execution order is correct.
let parent = path.getStatementParent().parentPath;
let bail = path.findParent(p => p.isConditionalExpression() || p.isLogicalExpression() || p.isSequenceExpression());
if (!parent.isProgram() || bail) {
asset.dependencies.get(source).shouldWrap = true;
}
asset.cacheData.imports['$require$' + source] = [source, '*']; // Generate a variable name based on the current asset id and the module name to require.
// This will be replaced by the final variable name of the resolved asset in the packager.
path.replaceWith(REQUIRE_CALL_TEMPLATE({
ID: t.stringLiteral(asset.id),
SOURCE: t.stringLiteral(args[0].value)
}));
}
if (t.matchesPattern(callee, 'require.resolve')) {
path.replaceWith(REQUIRE_RESOLVE_CALL_TEMPLATE({
ID: t.stringLiteral(asset.id),
SOURCE: args[0]
}));
}
},
ImportDeclaration(path, asset) {
// For each specifier, rename the local variables to point to the imported name.
// This will be replaced by the final variable name of the resolved asset in the packager.
var _iterator = _createForOfIteratorHelper(path.node.specifiers),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
let specifier = _step.value;
let id = getIdentifier(asset, 'import', specifier.local.name);
rename(path.scope, specifier.local.name, id.name);
if (t.isImportDefaultSpecifier(specifier)) {
asset.cacheData.imports[id.name] = [path.node.source.value, 'default'];
} else if (t.isImportSpecifier(specifier)) {
asset.cacheData.imports[id.name] = [path.node.source.value, specifier.imported.name];
} else if (t.isImportNamespaceSpecifier(specifier)) {
asset.cacheData.imports[id.name] = [path.node.source.value, '*'];
}
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
addImport(asset, path);
path.remove();
},
ExportDefaultDeclaration(path, asset) {
let declaration = path.node.declaration;
let identifier = getExportIdentifier(asset, 'default');
let name = declaration.id ? declaration.id.name : declaration.name;
if (asset.cacheData.imports[name]) {
asset.cacheData.exports['default'] = asset.cacheData.imports[name];
identifier = t.identifier(name);
}
if (hasExport(asset, name)) {
identifier = t.identifier(name);
} // Add assignment to exports object for namespace imports and commonjs.
path.insertAfter(EXPORT_ASSIGN_TEMPLATE({
EXPORTS: getExportsIdentifier(asset, path.scope),
NAME: t.identifier('default'),
LOCAL: t.clone(identifier)
}));
if (t.isIdentifier(declaration)) {
// Rename the variable being exported.
safeRename(path, asset, declaration.name, identifier.name);
path.remove();
} else if (t.isExpression(declaration) || !declaration.id) {
// Declare a variable to hold the exported value.
path.replaceWith(t.variableDeclaration('var', [t.variableDeclarator(identifier, t.toExpression(declaration))]));
path.scope.registerDeclaration(path);
} else {
// Rename the declaration to the exported name.
safeRename(path, asset, declaration.id.name, identifier.name);
path.replaceWith(declaration);
}
if (!asset.cacheData.exports['default']) {
asset.cacheData.exports['default'] = identifier.name;
} // Mark the asset as an ES6 module, so we handle imports correctly in the packager.
asset.cacheData.isES6Module = true;
},
ExportNamedDeclaration(path, asset) {
let _path$node3 = path.node,
declaration = _path$node3.declaration,
source = _path$node3.source,
specifiers = _path$node3.specifiers;
if (source) {
var _iterator2 = _createForOfIteratorHelper(specifiers),
_step2;
try {
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
let specifier = _step2.value;
let exported = specifier.exported;
if (t.isExportDefaultSpecifier(specifier)) {
asset.cacheData.exports[exported.name] = [source.value, 'default'];
} else if (t.isExportNamespaceSpecifier(specifier)) {
asset.cacheData.exports[exported.name] = [source.value, '*'];
} else if (t.isExportSpecifier(specifier)) {
asset.cacheData.exports[exported.name] = [source.value, specifier.local.name];
}
let id = getIdentifier(asset, 'import', exported.name);
asset.cacheData.imports[id.name] = asset.cacheData.exports[exported.name];
path.insertAfter(EXPORT_ASSIGN_TEMPLATE({
EXPORTS: getExportsIdentifier(asset, path.scope),
NAME: exported,
LOCAL: id
}));
}
} catch (err) {
_iterator2.e(err);
} finally {
_iterator2.f();
}
addImport(asset, path);
path.remove();
} else if (declaration) {
path.replaceWith(declaration);
let identifiers = t.isIdentifier(declaration.id) ? [declaration.id] : t.getBindingIdentifiers(declaration);
for (let id in identifiers) {
addExport(asset, path, identifiers[id], identifiers[id]);
}
} else if (specifiers.length > 0) {
var _iterator3 = _createForOfIteratorHelper(specifiers),
_step3;
try {
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
let specifier = _step3.value;
addExport(asset, path, specifier.local, specifier.exported);
}
} catch (err) {
_iterator3.e(err);
} finally {
_iterator3.f();
}
path.remove();
} // Mark the asset as an ES6 module, so we handle imports correctly in the packager.
asset.cacheData.isES6Module = true;
},
ExportAllDeclaration(path, asset) {
asset.cacheData.wildcards.push(path.node.source.value);
asset.cacheData.isES6Module = true;
path.replaceWith(EXPORT_ALL_TEMPLATE({
OLD_NAME: getExportsIdentifier(asset),
SOURCE: t.stringLiteral(path.node.source.value),
ID: t.stringLiteral(asset.id)
}));
}
};
function addImport(asset, path) {
// Replace with a $parcel$require call so we know where to insert side effects.
let requireCall = REQUIRE_CALL_TEMPLATE({
ID: t.stringLiteral(asset.id),
SOURCE: t.stringLiteral(path.node.source.value)
}); // Hoist the call to the top of the file.
let lastImport = path.scope.getData('hoistedImport');
if (lastImport) {
var _lastImport$insertAft = lastImport.insertAfter(requireCall);
var _lastImport$insertAft2 = (0, _slicedToArray2.default)(_lastImport$insertAft, 1);
lastImport = _lastImport$insertAft2[0];
} else {
var _path$parentPath$unsh = path.parentPath.unshiftContainer('body', [requireCall]);
var _path$parentPath$unsh2 = (0, _slicedToArray2.default)(_path$parentPath$unsh, 1);
lastImport = _path$parentPath$unsh2[0];
}
path.scope.setData('hoistedImport', lastImport);
}
function addExport(asset, path, local, exported) {
let scope = path.scope.getProgramParent();
let identifier = getExportIdentifier(asset, exported.name);
if (asset.cacheData.imports[local.name]) {
asset.cacheData.exports[exported.name] = asset.cacheData.imports[local.name];
identifier = t.identifier(local.name);
}
if (hasExport(asset, local.name)) {
identifier = t.identifier(local.name);
}
let assignNode = EXPORT_ASSIGN_TEMPLATE({
EXPORTS: getExportsIdentifier(asset, scope),
NAME: t.identifier(exported.name),
LOCAL: identifier
});
let binding = scope.getBinding(local.name);
let constantViolations = binding ? binding.constantViolations.concat(path) : [path];
if (!asset.cacheData.exports[exported.name]) {
asset.cacheData.exports[exported.name] = identifier.name;
}
try {
rename(scope, local.name, identifier.name);
} catch (e) {
throw new Error('export ' + e.message);
}
constantViolations.forEach(path => path.insertAfter(t.cloneDeep(assignNode)));
}
function hasExport(asset, name) {
let exports = asset.cacheData.exports;
return Object.keys(exports).some(k => exports[k] === name);
}
function safeRename(path, asset, from, to) {
if (from === to) {
return;
} // If the binding that we're renaming is constant, it's safe to rename it.
// Otherwise, create a new binding that references the original.
let binding = path.scope.getBinding(from);
if (binding && binding.constant) {
rename(path.scope, from, to);
} else {
let _path$insertAfter = path.insertAfter(t.variableDeclaration('var', [t.variableDeclarator(t.identifier(to), t.identifier(from))])),
_path$insertAfter2 = (0, _slicedToArray2.default)(_path$insertAfter, 1),
decl = _path$insertAfter2[0];
path.scope.getBinding(from).reference(decl.get('declarations.0.init'));
path.scope.registerDeclaration(decl);
}
}
function getExportsIdentifier(asset, scope) {
if (scope && scope.getData('shouldWrap')) {
return t.identifier('exports');
} else {
return getIdentifier(asset, 'exports');
}
}

View file

@ -0,0 +1,82 @@
"use strict";
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
const rename = require('./renamer');
const t = require('@babel/types');
const CHARSET = ('abcdefghijklmnopqrstuvwxyz' + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ$_').split('');
/**
* This is a very specialized mangler designer to mangle only names in the top-level scope.
* Mangling of names in other scopes happens at a file level inside workers, but we can't
* mangle the top-level scope until scope hoisting is complete in the packager.
*
* Based on code from babel-minify!
* https://github.com/babel/minify/blob/master/packages/babel-plugin-minify-mangle-names/src/charset.js
*/
function mangleScope(scope) {
let newNames = new Set(); // Sort bindings so that more frequently referenced bindings get shorter names.
let sortedBindings = Object.keys(scope.bindings).sort((a, b) => scope.bindings[b].referencePaths.length - scope.bindings[a].referencePaths.length);
var _iterator = _createForOfIteratorHelper(sortedBindings),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
let oldName = _step.value;
let i = 0;
let newName = '';
do {
newName = getIdentifier(i++);
} while (newNames.has(newName) || !canRename(scope, scope.bindings[oldName], newName));
rename(scope, oldName, newName);
newNames.add(newName);
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
}
function getIdentifier(num) {
let ret = '';
num++;
do {
num--;
ret += CHARSET[num % CHARSET.length];
num = Math.floor(num / CHARSET.length);
} while (num > 0);
return ret;
}
function canRename(scope, binding, newName) {
if (!t.isValidIdentifier(newName)) {
return false;
} // If there are any references where the parent scope has a binding
// for the new name, we cannot rename to this name.
for (let i = 0; i < binding.referencePaths.length; i++) {
const ref = binding.referencePaths[i];
if (ref.scope.hasBinding(newName) || ref.scope.hasReference(newName)) {
return false;
}
}
return true;
}
module.exports = mangleScope;

View file

@ -0,0 +1,83 @@
"use strict";
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
const t = require('@babel/types');
function rename(scope, oldName, newName) {
if (oldName === newName) {
return;
}
let binding = scope.getBinding(oldName);
if (!binding) {
throw new Error("'" + oldName + "' is not defined");
} // Rename all constant violations
var _iterator = _createForOfIteratorHelper(binding.constantViolations),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
let violation = _step.value;
let bindingIds = violation.getBindingIdentifierPaths(true, false);
for (let name in bindingIds) {
if (name === oldName) {
var _iterator3 = _createForOfIteratorHelper(bindingIds[name]),
_step3;
try {
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
let idPath = _step3.value;
idPath.node.name = newName;
}
} catch (err) {
_iterator3.e(err);
} finally {
_iterator3.f();
}
}
}
} // Rename all references
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
var _iterator2 = _createForOfIteratorHelper(binding.referencePaths),
_step2;
try {
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
let path = _step2.value;
if (t.isExportSpecifier(path.parent) && path.parentPath.parent.source) {
continue;
}
if (path.node.name === oldName) {
path.node.name = newName;
}
} // Rename binding identifier, and update scope.
} catch (err) {
_iterator2.e(err);
} finally {
_iterator2.f();
}
scope.removeOwnBinding(oldName);
scope.bindings[newName] = binding;
binding.identifier.name = newName;
}
module.exports = rename;

View file

@ -0,0 +1,115 @@
"use strict";
const t = require('@babel/types');
/**
* This is a small small implementation of dead code removal specialized to handle
* removing unused exports. All other dead code removal happens in workers on each
* individual file by babel-minify.
*/
function treeShake(scope) {
// Keep passing over all bindings in the scope until we don't remove any.
// This handles cases where we remove one binding which had a reference to
// another one. That one will get removed in the next pass if it is now unreferenced.
let removed;
do {
removed = false; // Recrawl to get all bindings.
scope.crawl();
Object.keys(scope.bindings).forEach(name => {
let binding = getUnusedBinding(scope.path, name); // If it is not safe to remove the binding don't touch it.
if (!binding) {
return;
} // Remove the binding and all references to it.
binding.path.remove();
binding.referencePaths.concat(binding.constantViolations).forEach(remove);
scope.removeBinding(name);
removed = true;
});
} while (removed);
}
module.exports = treeShake; // Check if a binding is safe to remove and returns it if it is.
function getUnusedBinding(path, name) {
let binding = path.scope.getBinding(name);
if (!binding) {
return null;
}
let pure = isPure(binding);
if (!binding.referenced && pure) {
return binding;
} // Is there any references which aren't simple assignments?
let bailout = binding.referencePaths.some(path => !isExportAssignment(path) && !isUnusedWildcard(path));
if (!bailout && pure) {
return binding;
}
return null;
}
function isPure(binding) {
if (binding.path.isVariableDeclarator() && binding.path.get('id').isIdentifier()) {
let init = binding.path.get('init');
return init.isPure() || init.isIdentifier() || init.isThisExpression();
}
return binding.path.isPure();
}
function isExportAssignment(path) {
return (// match "path.any = any;"
path.parentPath.isMemberExpression() && path.parentPath.parentPath.isAssignmentExpression() && path.parentPath.parentPath.node.left === path.parentPath.node
);
}
function isUnusedWildcard(path) {
let parent = path.parent;
return (// match `$parcel$exportWildcard` calls
t.isCallExpression(parent) && t.isIdentifier(parent.callee, {
name: '$parcel$exportWildcard'
}) && parent.arguments[0] === path.node && // check if the $id$exports variable is used
!getUnusedBinding(path, parent.arguments[1].name)
);
}
function remove(path) {
if (path.isAssignmentExpression()) {
if (path.parentPath.isSequenceExpression()) {
if (path.parent.expressions.length == 1) {
// replace sequence expression with it's sole child
path.parentPath.replaceWith(path);
remove(path.parentPath);
} else {
path.remove();
}
} else if (!path.parentPath.isExpressionStatement()) {
path.replaceWith(path.node.right);
} else {
path.remove();
}
} else if (isExportAssignment(path)) {
remove(path.parentPath.parentPath);
} else if (isUnusedWildcard(path)) {
remove(path.parentPath);
} else if (!path.removed) {
if (path.parentPath.isSequenceExpression() && path.parent.expressions.length === 1) {
// replace sequence expression with it's sole child
path.parentPath.replaceWith(path);
remove(path.parentPath);
} else {
path.remove();
}
}
}

View file

@ -0,0 +1,19 @@
"use strict";
const t = require('@babel/types');
function getName(asset, type, ...rest) {
return '$' + t.toIdentifier(asset.id) + '$' + type + (rest.length ? '$' + rest.map(name => name === 'default' ? name : t.toIdentifier(name)).join('$') : '');
}
function getIdentifier(asset, type, ...rest) {
return t.identifier(getName(asset, type, ...rest));
}
function getExportIdentifier(asset, name) {
return getIdentifier(asset, 'export', name);
}
exports.getName = getName;
exports.getIdentifier = getIdentifier;
exports.getExportIdentifier = getExportIdentifier;

View file

@ -0,0 +1,101 @@
"use strict";
const traverse = require('@babel/traverse').default; // Convert between babel 7 and babel 6 AST
// More info on the AST Changes: https://babeljs.io/docs/en/v7-migration-api#ast-changes
function babel7toBabel6(ast) {
const visitor = {
ArrowFunctionExpression: node => {
node.expression = node.body.type !== 'BlockStatement';
},
ExistsTypeAnnotation: node => {
node.type = 'ExistentialTypeParam';
},
NumberLiteralTypeAnnotation: node => {
node.type = 'NumericLiteralTypeAnnotation';
},
ObjectTypeIndexer: node => {
node.end++;
node.loc.end.column++;
},
ForOfStatement: node => {
node.type = 'ForAwaitStatement';
delete node.await;
},
SpreadElement: (node, path) => {
if (path.parentPath.isObjectExpression() || path.parentPath.isArrayExpression()) {
node.type = 'SpreadProperty';
}
},
RestElement: (node, path) => {
if (path.parentPath.isObjectPattern() || path.parentPath.isArrayPattern()) {
node.type = 'RestProperty';
}
}
};
traverse(ast, {
enter(path) {
if (path.node.variance && path.node.variance.type === 'Variance') {
path.node.variance = path.node.variance.kind;
}
let visitorFunc = visitor[path.node.type];
if (visitorFunc) {
visitorFunc(path.node, path);
}
}
});
return ast;
}
function babel6toBabel7(ast) {
const visitor = {
ArrowFunctionExpression: node => {
delete node.expression;
},
ExistentialTypeParam: node => {
node.type = 'ExistsTypeAnnotation';
},
NumericLiteralTypeAnnotation: node => {
node.type = 'NumberLiteralTypeAnnotation';
},
ObjectTypeIndexer: node => {
node.end--;
node.loc.end.column--;
},
ForAwaitStatement: node => {
node.type = 'ForOfStatement';
node.await = true;
},
SpreadProperty: node => {
node.type = 'SpreadElement';
},
RestProperty: node => {
node.type = 'RestElement';
}
};
traverse(ast, {
enter(path) {
if (path.node.variance && typeof path.node.variance === 'string') {
path.node.variance = {
type: 'VarianceNode',
kind: path.node.variance
};
}
let visitorFunc = visitor[path.node.type];
if (visitorFunc) {
visitorFunc(path.node);
}
}
});
return ast;
}
exports.babel7toBabel6 = babel7toBabel6;
exports.babel6toBabel7 = babel6toBabel7;

View file

@ -0,0 +1,55 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
const localRequire = require('../../utils/localRequire');
const _require = require('./astConverter'),
babel6toBabel7 = _require.babel6toBabel7;
function babel6(_x, _x2) {
return _babel.apply(this, arguments);
}
function _babel() {
_babel = (0, _asyncToGenerator2.default)(function* (asset, options) {
let babel = yield localRequire('babel-core', asset.name);
let config = options.config;
config.code = false;
config.ast = true;
config.filename = asset.name;
config.babelrc = false;
config.parserOpts = Object.assign({}, config.parserOpts, {
allowReturnOutsideFunction: true,
allowHashBang: true,
ecmaVersion: Infinity,
strictMode: false,
sourceType: 'module',
locations: true
}); // Passing a list of plugins as part of parserOpts seems to override any custom
// syntax plugins a user might have added (e.g. decorators). We add dynamicImport
// using a plugin instead.
config.plugins = (config.plugins || []).concat(dynamicImport);
let res = babel.transform(asset.contents, config);
if (res.ast) {
asset.ast = babel6toBabel7(res.ast);
asset.isAstDirty = true;
}
});
return _babel.apply(this, arguments);
}
function dynamicImport() {
return {
manipulateOptions(opts, parserOpts) {
parserOpts.plugins.push('dynamicImport');
}
};
}
module.exports = babel6;

View file

@ -0,0 +1,48 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
const localRequire = require('../../utils/localRequire');
function babel7(_x, _x2) {
return _babel.apply(this, arguments);
}
function _babel() {
_babel = (0, _asyncToGenerator2.default)(function* (asset, options) {
let config = options.config; // If this is an internally generated config, use our internal @babel/core,
// otherwise require a local version from the package we're compiling.
let babel = options.internal ? require('@babel/core') : yield localRequire('@babel/core', asset.name);
let pkg = yield asset.getPackage();
config.code = false;
config.ast = true;
config.filename = asset.name;
config.cwd = pkg ? pkg.pkgdir : asset.options.rootDir;
config.babelrc = false;
config.configFile = false;
config.parserOpts = Object.assign({}, config.parserOpts, {
allowReturnOutsideFunction: true,
strictMode: false,
sourceType: 'module',
plugins: ['dynamicImport']
});
let res;
if (asset.ast) {
res = babel.transformFromAst(asset.ast, asset.contents, config);
} else {
res = babel.transformSync(asset.contents, config);
}
if (res.ast) {
asset.ast = res.ast;
asset.isAstDirty = true;
}
});
return _babel.apply(this, arguments);
}
module.exports = babel7;

View file

@ -0,0 +1,367 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
const semver = require('semver');
const logger = require('@parcel/logger');
const path = require('path');
const localRequire = require('../../utils/localRequire');
const installPackage = require('../../utils/installPackage');
const fs = require('@parcel/fs');
const micromatch = require('micromatch');
function getBabelConfig(_x, _x2) {
return _getBabelConfig.apply(this, arguments);
}
function _getBabelConfig() {
_getBabelConfig = (0, _asyncToGenerator2.default)(function* (asset, isSource) {
let config = yield getBabelRc(asset, isSource);
if (!config) {
return null;
} // Ignore if the config is empty.
if ((!config.plugins || config.plugins.length === 0) && (!config.presets || config.presets.length === 0)) {
return null;
}
let plugins = yield installPlugins(asset, config);
let babelVersion = yield getBabelVersion(asset, plugins);
return {
babelVersion,
config
};
});
return _getBabelConfig.apply(this, arguments);
}
module.exports = getBabelConfig;
/**
* Finds a .babelrc for an asset. By default, .babelrc files inside node_modules are not used.
* However, there are some exceptions:
* - if `browserify.transforms` includes "babelify" in package.json (for legacy module compat)
* - the `source` field in package.json is used by the resolver
*/
function getBabelRc(_x3, _x4) {
return _getBabelRc.apply(this, arguments);
}
function _getBabelRc() {
_getBabelRc = (0, _asyncToGenerator2.default)(function* (asset, isSource) {
// Support legacy browserify packages
let pkg = yield asset.getPackage();
let browserify = pkg && pkg.browserify;
if (browserify && Array.isArray(browserify.transform)) {
// Look for babelify in the browserify transform list
let babelify = browserify.transform.find(t => (Array.isArray(t) ? t[0] : t) === 'babelify'); // If specified as an array, override the config with the one specified
if (Array.isArray(babelify) && babelify[1]) {
return babelify[1];
} // Otherwise, return the .babelrc if babelify was found
return babelify ? findBabelRc(asset) : null;
} // If this asset is not in node_modules, always use the .babelrc
if (isSource) {
return findBabelRc(asset);
} // Otherwise, don't load .babelrc for node_modules.
// See https://github.com/parcel-bundler/parcel/issues/13.
return null;
});
return _getBabelRc.apply(this, arguments);
}
function findBabelRc(_x5) {
return _findBabelRc.apply(this, arguments);
}
function _findBabelRc() {
_findBabelRc = (0, _asyncToGenerator2.default)(function* (asset) {
// TODO: use the babel API to do this config resolution and support all of its features.
// This is not currently possible because babel tries to actually load plugins and presets
// while resolving the config, but those plugins might not be installed yet.
let config = yield asset.getConfig(['.babelrc', '.babelrc.js'], {
packageKey: 'babel'
});
if (!config) {
return null;
}
if (typeof config === 'function') {
// We cannot support function configs since there is no exposed method in babel
// to create the API that is passed to them...
throw new Error('Parcel does not support function configs in .babelrc.js yet.');
}
for (var _i = 0, _arr = ['extends', 'overrides', 'test', 'include', 'exclude']; _i < _arr.length; _i++) {
let key = _arr[_i];
if (config[key]) {
throw new Error(`Parcel does not support babel 7 advanced configuration option "${key}" yet.`);
}
} // Support ignore/only config options.
if (shouldIgnore(asset, config)) {
return null;
} // Support .babelignore
let ignoreConfig = yield getIgnoreConfig(asset);
if (ignoreConfig && shouldIgnore(asset, ignoreConfig)) {
return null;
}
return config;
});
return _findBabelRc.apply(this, arguments);
}
function getIgnoreConfig(_x6) {
return _getIgnoreConfig.apply(this, arguments);
}
function _getIgnoreConfig() {
_getIgnoreConfig = (0, _asyncToGenerator2.default)(function* (asset) {
let ignoreFile = yield asset.getConfig(['.babelignore'], {
load: false
});
if (!ignoreFile) {
return null;
}
let data = yield fs.readFile(ignoreFile, 'utf8');
let patterns = data.split('\n').map(line => line.replace(/#.*$/, '').trim()).filter(Boolean);
return {
ignore: patterns
};
});
return _getIgnoreConfig.apply(this, arguments);
}
function shouldIgnore(asset, config) {
if (config.ignore && matchesPatterns(config.ignore, asset.name)) {
return true;
}
if (config.only && !matchesPatterns(config.only, asset.name)) {
return true;
}
return false;
}
function matchesPatterns(patterns, path) {
return patterns.some(pattern => {
if (typeof pattern === 'function') {
return !!pattern(path);
}
if (typeof pattern === 'string') {
return micromatch.isMatch(path, '**/' + pattern + '/**');
}
return pattern.test(path);
});
}
function getBabelVersion(_x7, _x8) {
return _getBabelVersion.apply(this, arguments);
}
function _getBabelVersion() {
_getBabelVersion = (0, _asyncToGenerator2.default)(function* (asset, plugins) {
// Check the package.json to determine the babel version that is installed
let pkg = yield asset.getPackage();
let babelLegacy = getDependency(pkg, 'babel-core');
let babelModern = getDependency(pkg, '@babel/core');
if (babelModern) {
return getMaxMajor(babelModern);
}
if (babelLegacy) {
return 6;
} // No version was installed. This is either an old app where we didn't require a version to be installed,
// or a new app that just added a .babelrc without manually installing a version of babel core.
// We will attempt to infer a verison of babel and install it based on the dependencies of the plugins
// in the config. This should only happen once since we save babel core into package.json for subsequent runs.
let inferred = yield inferBabelVersion(asset, plugins);
let name = inferred === 6 ? 'babel-core' : `@babel/core`;
yield installPackage(name, asset.name);
return inferred;
});
return _getBabelVersion.apply(this, arguments);
}
function getDependency(pkg, dep) {
return pkg.dependencies && pkg.dependencies[dep] || pkg.peerDependencies && pkg.peerDependencies[dep] || pkg.devDependencies && pkg.devDependencies[dep];
} // Core babel packages we use to infer the major version of babel to use.
const CORE_DEPS = new Set(['@babel/core', '@babel/runtime', '@babel/template', '@babel/traverse', '@babel/types', '@babel/parser', '@babel/cli', '@babel/register', '@babel/generator', 'babel-core', 'babel-runtime', 'babel-template', 'babel-traverse', 'babel-types', 'babylon', 'babel-cli', 'babel-register', 'babel-generator']);
function inferBabelVersion(_x9, _x10) {
return _inferBabelVersion.apply(this, arguments);
}
function _inferBabelVersion() {
_inferBabelVersion = (0, _asyncToGenerator2.default)(function* (asset, plugins) {
// Attempt to determine version based on dependencies of plugins
let version;
var _iterator = _createForOfIteratorHelper(plugins),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
let pkg = _step.value;
if (!pkg) {
continue;
}
var _iterator2 = _createForOfIteratorHelper(CORE_DEPS),
_step2;
try {
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
let name = _step2.value;
let dep = getDependency(pkg, name);
if (dep) {
// Parse version range (ignore prerelease), and ensure it overlaps with the existing version (if any)
let range = new semver.Range(dep.replace(/-.*(\s|\|\||$)?/, ''));
if (version && !version.intersects(range)) {
throw new Error('Conflicting babel versions found in .babelrc. Make sure all of your plugins and presets depend on the same major version of babel.');
}
version = range;
break;
}
}
} catch (err) {
_iterator2.e(err);
} finally {
_iterator2.f();
}
} // Find the maximum major version allowed in the range and use that.
// e.g. if ^6 || ^7 were specified, use 7.
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
version = getMaxMajor(version);
if (!version) {
logger.warn(`Could not infer babel version. Defaulting to babel 7. Please add either babel-core or @babel/core as a dependency.`);
version = 7;
}
return version;
});
return _inferBabelVersion.apply(this, arguments);
}
function getPluginName(p) {
return Array.isArray(p) ? p[0] : p;
}
function getMaxMajor(version) {
try {
let range = new semver.Range(version);
let sorted = range.set.sort((a, b) => a[0].semver.compare(b[0].semver));
return semver.major(sorted.pop()[0].semver.version);
} catch (err) {
return null;
}
}
function installPlugins(_x11, _x12) {
return _installPlugins.apply(this, arguments);
}
function _installPlugins() {
_installPlugins = (0, _asyncToGenerator2.default)(function* (asset, babelrc) {
let presets = (babelrc.presets || []).map(p => resolveModule('preset', getPluginName(p), asset.name));
let plugins = (babelrc.plugins || []).map(p => resolveModule('plugin', getPluginName(p), asset.name));
return Promise.all([...presets, ...plugins]);
});
return _installPlugins.apply(this, arguments);
}
function resolveModule(_x13, _x14, _x15) {
return _resolveModule.apply(this, arguments);
} // Copied from https://github.com/babel/babel/blob/3a399d1eb907df520f2b85bf9ddbc6533e256f6d/packages/babel-core/src/config/files/plugins.js#L61
function _resolveModule() {
_resolveModule = (0, _asyncToGenerator2.default)(function* (type, name, path) {
try {
name = standardizeName(type, name);
let _yield$localRequire$r = yield localRequire.resolve(name, path),
_yield$localRequire$r2 = (0, _slicedToArray2.default)(_yield$localRequire$r, 2),
pkg = _yield$localRequire$r2[1];
return pkg;
} catch (err) {
return null;
}
});
return _resolveModule.apply(this, arguments);
}
const EXACT_RE = /^module:/;
const BABEL_PLUGIN_PREFIX_RE = /^(?!@|module:|[^/]+\/|babel-plugin-)/;
const BABEL_PRESET_PREFIX_RE = /^(?!@|module:|[^/]+\/|babel-preset-)/;
const BABEL_PLUGIN_ORG_RE = /^(@babel\/)(?!plugin-|[^/]+\/)/;
const BABEL_PRESET_ORG_RE = /^(@babel\/)(?!preset-|[^/]+\/)/;
const OTHER_PLUGIN_ORG_RE = /^(@(?!babel\/)[^/]+\/)(?![^/]*babel-plugin(?:-|\/|$)|[^/]+\/)/;
const OTHER_PRESET_ORG_RE = /^(@(?!babel\/)[^/]+\/)(?![^/]*babel-preset(?:-|\/|$)|[^/]+\/)/;
const OTHER_ORG_DEFAULT_RE = /^(@(?!babel$)[^/]+)$/;
function standardizeName(type, name) {
// Let absolute and relative paths through.
if (path.isAbsolute(name)) return name;
const isPreset = type === 'preset';
return name // foo -> babel-preset-foo
.replace(isPreset ? BABEL_PRESET_PREFIX_RE : BABEL_PLUGIN_PREFIX_RE, `babel-${type}-`) // @babel/es2015 -> @babel/preset-es2015
.replace(isPreset ? BABEL_PRESET_ORG_RE : BABEL_PLUGIN_ORG_RE, `$1${type}-`) // @foo/mypreset -> @foo/babel-preset-mypreset
.replace(isPreset ? OTHER_PRESET_ORG_RE : OTHER_PLUGIN_ORG_RE, `$1babel-${type}-`) // @foo -> @foo/babel-preset
.replace(OTHER_ORG_DEFAULT_RE, `$1/babel-${type}`) // module:mypreset -> mypreset
.replace(EXACT_RE, '');
}

View file

@ -0,0 +1,111 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
const getBabelRc = require('./babelrc');
const getEnvConfig = require('./env');
const getJSXConfig = require('./jsx');
const getFlowConfig = require('./flow');
const path = require('path');
const fs = require('@parcel/fs');
const NODE_MODULES = `${path.sep}node_modules${path.sep}`;
const ENV_PLUGINS = require('@babel/preset-env/data/plugins');
const ENV_PRESETS = {
es2015: true,
es2016: true,
es2017: true,
latest: true,
env: true,
'@babel/preset-env': true,
'@babel/env': true
};
function getBabelConfig(_x) {
return _getBabelConfig.apply(this, arguments);
}
function _getBabelConfig() {
_getBabelConfig = (0, _asyncToGenerator2.default)(function* (asset) {
// Consider the module source code rather than precompiled if the resolver
// used the `source` field, or it is not in node_modules.
let pkg = yield asset.getPackage();
let isSource = !!(pkg && pkg.source && (yield fs.realpath(asset.name)) !== asset.name) || !asset.name.includes(NODE_MODULES); // Try to resolve a .babelrc file. If one is found, consider the module source code.
let babelrc = yield getBabelRc(asset, isSource);
isSource = isSource || !!babelrc;
let envConfig = yield getEnvConfig(asset, isSource);
let jsxConfig = yield getJSXConfig(asset, isSource);
let flowConfig = getFlowConfig(asset, isSource);
if (babelrc && envConfig) {
// Filter out presets that are already applied by @babel/preset-env
if (Array.isArray(babelrc.config.presets)) {
babelrc.config.presets = babelrc.config.presets.filter(preset => {
return !ENV_PRESETS[getPluginName(preset)];
});
} // Filter out plugins that are already applied by @babel/preset-env
if (Array.isArray(babelrc.config.plugins)) {
babelrc.config.plugins = babelrc.config.plugins.filter(plugin => {
return !ENV_PLUGINS[getPluginName(plugin)];
});
}
}
let result = {};
mergeConfigs(result, babelrc);
mergeConfigs(result, envConfig); // Add JSX config if it isn't already specified in the babelrc
let hasReact = babelrc && (hasPlugin(babelrc.config.presets, ['react', '@babel/react', '@babel/preset-react']) || hasPlugin(babelrc.config.plugins, ['transform-react-jsx', '@babel/transform-react-jsx', '@babel/plugin-transform-react-jsx']));
if (!hasReact) {
mergeConfigs(result, jsxConfig);
} // Add Flow stripping config if it isn't already specified in the babelrc
let hasFlow = babelrc && hasPlugin(babelrc.config.plugins, ['transform-flow-strip-types', '@babel/transform-flow-strip-types', '@babel/plugin-transform-flow-strip-types']);
if (!hasFlow) {
mergeConfigs(result, flowConfig);
}
return result;
});
return _getBabelConfig.apply(this, arguments);
}
module.exports = getBabelConfig;
function mergeConfigs(result, config) {
if (!config || (!config.config.presets || config.config.presets.length === 0) && (!config.config.plugins || config.config.plugins.length === 0)) {
return;
}
let merged = result[config.babelVersion];
if (merged) {
merged.config.presets = (merged.config.presets || []).concat(config.config.presets || []);
merged.config.plugins = (merged.config.plugins || []).concat(config.config.plugins || []);
} else {
result[config.babelVersion] = config;
}
}
function hasPlugin(arr, plugins) {
return Array.isArray(arr) && arr.some(p => plugins.includes(getPluginName(p)));
}
function getPluginName(p) {
return Array.isArray(p) ? p[0] : p;
}

View file

@ -0,0 +1,95 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
const presetEnv = require('@babel/preset-env');
const getTargetEngines = require('../../utils/getTargetEngines');
const babelCore = require('@babel/core');
/**
* Generates a @babel/preset-env config for an asset.
* This is done by finding the source module's target engines, and the app's
* target engines, and doing a diff to include only the necessary plugins.
*/
function getEnvConfig(_x, _x2) {
return _getEnvConfig.apply(this, arguments);
}
function _getEnvConfig() {
_getEnvConfig = (0, _asyncToGenerator2.default)(function* (asset, isSourceModule) {
// Load the target engines for the app and generate a @babel/preset-env config
let targetEngines = yield getTargetEngines(asset, true);
let targetEnv = yield getEnvPlugins(targetEngines, true);
if (!targetEnv) {
return null;
} // If this is the app module, the source and target will be the same, so just compile everything.
// Otherwise, load the source engines and generate a babel-present-env config.
if (!isSourceModule) {
let sourceEngines = yield getTargetEngines(asset, false);
let sourceEnv = (yield getEnvPlugins(sourceEngines, false)) || targetEnv; // Do a diff of the returned plugins. We only need to process the remaining plugins to get to the app target.
let sourcePlugins = new Set(sourceEnv.map(p => p[0]));
targetEnv = targetEnv.filter(plugin => {
return !sourcePlugins.has(plugin[0]);
});
}
return {
internal: true,
babelVersion: 7,
config: {
plugins: targetEnv
}
};
});
return _getEnvConfig.apply(this, arguments);
}
const envCache = new Map();
function getEnvPlugins(_x3) {
return _getEnvPlugins.apply(this, arguments);
}
function _getEnvPlugins() {
_getEnvPlugins = (0, _asyncToGenerator2.default)(function* (targets, useBuiltIns = false) {
if (!targets) {
return null;
}
let key = JSON.stringify(targets);
if (envCache.has(key)) {
return envCache.get(key);
}
const options = {
targets,
modules: false,
useBuiltIns: useBuiltIns ? 'entry' : false,
shippedProposals: true
};
if (useBuiltIns) {
options.corejs = 2;
}
let plugins = presetEnv.default({
version: babelCore.version,
assertVersion: () => true
}, options).plugins;
envCache.set(key, plugins);
return plugins;
});
return _getEnvPlugins.apply(this, arguments);
}
module.exports = getEnvConfig;

View file

@ -0,0 +1,20 @@
"use strict";
/**
* Generates a babel config for stripping away Flow types.
*/
function getFlowConfig(asset) {
if (/^(\/{2}|\/\*+) *@flow/.test(asset.contents.substring(0, 20))) {
return {
internal: true,
babelVersion: 7,
config: {
plugins: [[require('@babel/plugin-transform-flow-strip-types')]]
}
};
}
return null;
}
module.exports = getFlowConfig;

View file

@ -0,0 +1,95 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
const path = require('path');
const JSX_EXTENSIONS = {
'.jsx': true,
'.tsx': true
};
const JSX_PRAGMA = {
react: 'React.createElement',
preact: 'h',
nervjs: 'Nerv.createElement',
hyperapp: 'h'
};
function createJSXRegexFor(dependency) {
// result looks like /from\s+[`"']react[`"']|require\([`"']react[`"']\)/
return new RegExp(`from\\s+[\`"']${dependency}[\`"']|require\\([\`"']${dependency}[\`"']\\)`);
}
/**
* Solves a use case when JSX is used in .js files, but
* package.json is empty or missing yet and therefore pragma cannot
* be determined based on pkg.dependencies / pkg.devDependencies
*/
const cacheJsxRegexFor = {};
function maybeCreateFallbackPragma(asset) {
for (const dep in JSX_PRAGMA) {
let regex = cacheJsxRegexFor[dep];
if (!regex) {
regex = createJSXRegexFor(dep);
cacheJsxRegexFor[dep] = regex;
}
if (asset.contents.match(regex)) {
return JSX_PRAGMA[dep];
}
}
}
/**
* Generates a babel config for JSX. Attempts to detect react or react-like libraries
* and changes the pragma accordingly.
*/
function getJSXConfig(_x, _x2) {
return _getJSXConfig.apply(this, arguments);
}
function _getJSXConfig() {
_getJSXConfig = (0, _asyncToGenerator2.default)(function* (asset, isSourceModule) {
// Don't enable JSX in node_modules
if (!isSourceModule) {
return null;
}
let pkg = yield asset.getPackage(); // Find a dependency that we can map to a JSX pragma
let pragma = null;
for (let dep in JSX_PRAGMA) {
if (pkg && (pkg.dependencies && pkg.dependencies[dep] || pkg.devDependencies && pkg.devDependencies[dep])) {
pragma = JSX_PRAGMA[dep];
break;
}
}
if (!pragma) {
pragma = maybeCreateFallbackPragma(asset);
}
if (pragma || JSX_EXTENSIONS[path.extname(asset.name)]) {
return {
internal: true,
babelVersion: 7,
config: {
plugins: [[require('@babel/plugin-transform-react-jsx'), {
pragma,
pragmaFrag: 'React.Fragment'
}]]
}
};
}
});
return _getJSXConfig.apply(this, arguments);
}
module.exports = getJSXConfig;

View file

@ -0,0 +1,34 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
const babel6 = require('./babel6');
const babel7 = require('./babel7');
const getBabelConfig = require('./config');
function babelTransform(_x) {
return _babelTransform.apply(this, arguments);
}
function _babelTransform() {
_babelTransform = (0, _asyncToGenerator2.default)(function* (asset) {
let config = yield getBabelConfig(asset);
if (config[6]) {
yield babel6(asset, config[6]);
}
if (config[7]) {
yield babel7(asset, config[7]);
}
return asset.ast;
});
return _babelTransform.apply(this, arguments);
}
module.exports = babelTransform;

View file

@ -0,0 +1,30 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
const posthtml = require('posthtml');
const htmlnano = require('htmlnano');
module.exports = /*#__PURE__*/function () {
var _ref = (0, _asyncToGenerator2.default)(function* (asset) {
yield asset.parseIfNeeded();
let htmlNanoConfig = Object.assign({}, yield asset.getConfig(['.htmlnanorc', '.htmlnanorc.js'], {
packageKey: 'htmlnano'
}), {
minifyCss: false,
minifyJs: false
});
let res = yield posthtml([htmlnano(htmlNanoConfig)]).process(asset.ast, {
skipParse: true
});
asset.ast = res.tree;
asset.isAstDirty = true;
});
return function (_x) {
return _ref.apply(this, arguments);
};
}();

View file

@ -0,0 +1,142 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
const localRequire = require('../utils/localRequire');
const loadPlugins = require('../utils/loadPlugins');
const md5 = require('../utils/md5');
const postcss = require('postcss');
const FileSystemLoader = require('css-modules-loader-core/lib/file-system-loader');
const semver = require('semver');
const path = require('path');
const fs = require('@parcel/fs');
module.exports = /*#__PURE__*/function () {
var _ref = (0, _asyncToGenerator2.default)(function* (asset) {
let config = yield getConfig(asset);
if (!config) {
return;
}
yield asset.parseIfNeeded();
let res = yield postcss(config.plugins).process(asset.getCSSAst(), config);
asset.ast.css = res.css;
asset.ast.dirty = false;
asset.sourceMap = res.map ? res.map.toJSON() : null;
});
return function (_x) {
return _ref.apply(this, arguments);
};
}();
function getConfig(_x2) {
return _getConfig.apply(this, arguments);
}
function _getConfig() {
_getConfig = (0, _asyncToGenerator2.default)(function* (asset) {
let config = yield asset.getConfig(['.postcssrc', '.postcssrc.json', '.postcssrc.js', 'postcss.config.js'], {
packageKey: 'postcss'
});
let enableModules = asset.options.rendition && asset.options.rendition.modules;
if (!config && !asset.options.minify && !enableModules) {
return;
}
config = config || {};
if (asset.options.sourceMaps) {
config.map = {
inline: false,
annotation: false,
sourcesContent: true
};
}
if (typeof config !== 'object') {
throw new Error('PostCSS config should be an object.');
}
let postcssModulesConfig = {
getJSON: (filename, json) => asset.cssModules = json,
Loader: createLoader(asset),
generateScopedName: (name, filename) => `_${name}_${md5(filename).substr(0, 5)}`
};
if (config.plugins && config.plugins['postcss-modules']) {
postcssModulesConfig = Object.assign(postcssModulesConfig, config.plugins['postcss-modules']);
delete config.plugins['postcss-modules'];
}
config.plugins = yield loadPlugins(config.plugins, asset.name);
if (config.modules || enableModules) {
let postcssModules = yield localRequire('postcss-modules', asset.name);
config.plugins.push(postcssModules(postcssModulesConfig));
}
if (asset.options.minify) {
let cssnano = yield localRequire('cssnano', asset.name);
let _yield$localRequire = yield localRequire('cssnano/package.json', asset.name),
version = _yield$localRequire.version;
config.plugins.push(cssnano((yield asset.getConfig(['cssnano.config.js'])) || {
// Only enable safe css transforms if cssnano < 4
// See: https://github.com/parcel-bundler/parcel/issues/698
// See: https://github.com/ben-eb/cssnano/releases/tag/v4.0.0-rc.0
safe: semver.satisfies(version, '<4.0.0-rc')
}));
}
config.from = asset.name;
config.to = asset.name;
return config;
});
return _getConfig.apply(this, arguments);
}
const createLoader = asset => class ParcelFileSystemLoader extends FileSystemLoader {
fetch(composesPath, relativeTo) {
var _this = this;
return (0, _asyncToGenerator2.default)(function* () {
let importPath = composesPath.replace(/^["']|["']$/g, '');
const _asset$resolveDepende = asset.resolveDependency(importPath, relativeTo),
resolved = _asset$resolveDepende.resolved;
let rootRelativePath = path.resolve(path.dirname(relativeTo), resolved);
const root = path.resolve('/'); // fixes an issue on windows which is part of the css-modules-loader-core
// see https://github.com/css-modules/css-modules-loader-core/issues/230
if (rootRelativePath.startsWith(root)) {
rootRelativePath = rootRelativePath.substr(root.length);
}
const source = yield fs.readFile(resolved, 'utf-8');
const _yield$_this$core$loa = yield _this.core.load(source, rootRelativePath, undefined, _this.fetch.bind(_this)),
exportTokens = _yield$_this$core$loa.exportTokens;
return exportTokens;
})();
}
get finalSource() {
return '';
}
};

View file

@ -0,0 +1,90 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
const loadPlugins = require('../utils/loadPlugins');
const posthtml = require('posthtml');
const posthtmlParse = require('posthtml-parser');
function parse(_x, _x2) {
return _parse.apply(this, arguments);
}
function _parse() {
_parse = (0, _asyncToGenerator2.default)(function* (code, asset) {
var config = yield getConfig(asset);
if (!config) {
config = {};
}
return posthtmlParse(code, config);
});
return _parse.apply(this, arguments);
}
function transform(_x3) {
return _transform.apply(this, arguments);
}
function _transform() {
_transform = (0, _asyncToGenerator2.default)(function* (asset) {
let config = yield getConfig(asset);
if (!config) {
return;
}
yield asset.parseIfNeeded();
let res = yield posthtml(config.plugins).process(asset.ast, config);
asset.ast = res.tree;
asset.isAstDirty = true;
});
return _transform.apply(this, arguments);
}
function getConfig(_x4) {
return _getConfig.apply(this, arguments);
}
function _getConfig() {
_getConfig = (0, _asyncToGenerator2.default)(function* (asset) {
let config = yield asset.getConfig(['.posthtmlrc', '.posthtmlrc.js', 'posthtml.config.js'], {
packageKey: 'posthtml'
});
if (!config && !asset.options.minify) {
return;
}
config = config || {};
const plugins = config.plugins;
if (typeof plugins === 'object') {
// This is deprecated in favor of result messages but kept for compatibility
// See https://github.com/posthtml/posthtml-include/blob/e4f2a57c2e52ff721eed747b65eddf7d7a1451e3/index.js#L18-L26
const depConfig = {
addDependencyTo: {
addDependency: name => asset.addDependency(name, {
includedInParent: true
})
}
};
Object.keys(plugins).forEach(p => Object.assign(plugins[p], depConfig));
}
config.plugins = yield loadPlugins(plugins, asset.name);
config.skipParse = true;
return config;
});
return _getConfig.apply(this, arguments);
}
module.exports = {
parse,
transform
};

View file

@ -0,0 +1,77 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
const _require = require('terser'),
minify = _require.minify;
const SourceMap = require('../SourceMap');
module.exports = /*#__PURE__*/function () {
var _ref = (0, _asyncToGenerator2.default)(function* (asset) {
yield asset.parseIfNeeded(); // Convert AST into JS
let source = (yield asset.generate())[0].value;
let customConfig = yield asset.getConfig(['.uglifyrc', '.terserrc']);
let options = {
warnings: true,
safari10: true,
mangle: {
toplevel: !asset.options.scopeHoist
}
};
let sourceMap;
if (asset.options.sourceMaps) {
sourceMap = new SourceMap();
options.output = {
source_map: {
add(source, gen_line, gen_col, orig_line, orig_col, name) {
sourceMap.addMapping({
source,
name,
original: {
line: orig_line,
column: orig_col
},
generated: {
line: gen_line,
column: gen_col
}
});
}
}
};
}
if (customConfig) {
options = Object.assign(options, customConfig);
}
let result = minify(source, options);
if (result.error) {
throw result.error;
}
if (sourceMap) {
if (asset.sourceMap) {
asset.sourceMap = yield new SourceMap().extendSourceMap(asset.sourceMap, sourceMap);
} else {
asset.sourceMap = sourceMap;
}
} // babel-generator did our code generation for us, so remove the old AST
asset.ast = null;
asset.outputCode = result.code;
asset.isAstDirty = false;
});
return function (_x) {
return _ref.apply(this, arguments);
};
}();

View file

@ -0,0 +1,109 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
class PromiseQueue {
constructor(callback, options = {}) {
this.process = callback;
this.maxConcurrent = options.maxConcurrent || Infinity;
this.retry = options.retry !== false;
this.queue = [];
this.processing = new Set();
this.processed = new Set();
this.numRunning = 0;
this.runPromise = null;
this.resolve = null;
this.reject = null;
}
add(job, ...args) {
if (this.processing.has(job)) {
return;
}
if (this.runPromise && this.numRunning < this.maxConcurrent) {
this._runJob(job, args);
} else {
this.queue.push([job, args]);
}
this.processing.add(job);
}
run() {
if (this.runPromise) {
return this.runPromise;
}
const runPromise = new Promise((resolve, reject) => {
this.resolve = resolve;
this.reject = reject;
});
this.runPromise = runPromise;
this._next();
return runPromise;
}
_runJob(job, args) {
var _this = this;
return (0, _asyncToGenerator2.default)(function* () {
try {
_this.numRunning++;
yield _this.process(job, ...args);
_this.processing.delete(job);
_this.processed.add(job);
_this.numRunning--;
_this._next();
} catch (err) {
_this.numRunning--;
if (_this.retry) {
_this.queue.push([job, args]);
} else {
_this.processing.delete(job);
}
if (_this.reject) {
_this.reject(err);
}
_this._reset();
}
})();
}
_next() {
if (!this.runPromise) {
return;
}
if (this.queue.length > 0) {
while (this.queue.length > 0 && this.numRunning < this.maxConcurrent) {
this._runJob(...this.queue.shift());
}
} else if (this.processing.size === 0) {
this.resolve(this.processed);
this._reset();
}
}
_reset() {
this.processed = new Set();
this.runPromise = null;
this.resolve = null;
this.reject = null;
}
}
module.exports = PromiseQueue;

View file

@ -0,0 +1,127 @@
"use strict";
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
const path = require('path');
const prettifyTime = require('./prettifyTime');
const logger = require('@parcel/logger');
const filesize = require('filesize');
const LARGE_BUNDLE_SIZE = 1024 * 1024;
const DEFAULT_NUM_LARGE_ASSETS = 10;
const COLUMNS = [{
align: 'left'
}, // name
{
align: 'right'
}, // size
{
align: 'right'
} // time
];
function bundleReport(mainBundle, detailed = false) {
// Get a list of bundles sorted by size
let bundles = Array.from(iterateBundles(mainBundle)).sort((a, b) => b.totalSize - a.totalSize);
let rows = [];
var _iterator = _createForOfIteratorHelper(bundles),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
let bundle = _step.value;
// Add a row for the bundle
rows.push([formatFilename(bundle.name, logger.chalk.cyan.bold), logger.chalk.bold(prettifySize(bundle.totalSize, bundle.totalSize > LARGE_BUNDLE_SIZE)), logger.chalk.green.bold(prettifyTime(bundle.bundleTime))]); // If detailed, generate a list of the largest assets in the bundle
if (detailed && bundle.assets.size > 1) {
let assets = Array.from(bundle.assets).filter(a => a.type === bundle.type).sort((a, b) => b.bundledSize - a.bundledSize);
let largestAssets = (() => {
if (detailed === 'all') {
return assets;
}
return assets.slice(0, isNaN(detailed) || typeof detailed === 'boolean' ? DEFAULT_NUM_LARGE_ASSETS : parseInt(detailed, 10));
})();
var _iterator2 = _createForOfIteratorHelper(largestAssets),
_step2;
try {
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
let asset = _step2.value;
// Add a row for the asset.
rows.push([(asset == assets[assets.length - 1] ? '└── ' : '├── ') + formatFilename(asset.name, logger.chalk.reset), logger.chalk.dim(prettifySize(asset.bundledSize)), logger.chalk.dim(logger.chalk.green(prettifyTime(asset.buildTime)))]);
} // Show how many more assets there are
} catch (err) {
_iterator2.e(err);
} finally {
_iterator2.f();
}
if (assets.length > largestAssets.length) {
rows.push(['└── ' + logger.chalk.dim(`+ ${assets.length - largestAssets.length} more assets`)]);
} // If this isn't the last bundle, add an empty row before the next one
if (bundle !== bundles[bundles.length - 1]) {
rows.push([]);
}
}
} // Render table
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
logger.log('');
logger.table(COLUMNS, rows);
}
module.exports = bundleReport;
function* iterateBundles(bundle) {
if (!bundle.isEmpty) {
yield bundle;
}
var _iterator3 = _createForOfIteratorHelper(bundle.childBundles),
_step3;
try {
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
let child = _step3.value;
yield* iterateBundles(child);
}
} catch (err) {
_iterator3.e(err);
} finally {
_iterator3.f();
}
}
function prettifySize(size, isLarge) {
let res = filesize(size);
if (isLarge) {
return logger.chalk.yellow(logger.emoji.warning + ' ' + res);
}
return logger.chalk.magenta(res);
}
function formatFilename(filename, color = logger.chalk.reset) {
let dir = path.relative(process.cwd(), path.dirname(filename));
return logger.chalk.dim(dir + (dir ? path.sep : '')) + color(path.basename(filename));
}

97
BACK_BACK/node_modules/parcel-bundler/lib/utils/config.js generated vendored Executable file
View file

@ -0,0 +1,97 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
const fs = require('@parcel/fs');
const path = require('path');
const clone = require('clone');
const PARSERS = {
json: require('json5').parse,
toml: require('@iarna/toml').parse
};
const existsCache = new Map();
function resolve(_x, _x2) {
return _resolve.apply(this, arguments);
}
function _resolve() {
_resolve = (0, _asyncToGenerator2.default)(function* (filepath, filenames, root = path.parse(filepath).root) {
filepath = path.dirname(filepath); // Don't traverse above the module root
if (filepath === root || path.basename(filepath) === 'node_modules') {
return null;
}
var _iterator = _createForOfIteratorHelper(filenames),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
const filename = _step.value;
let file = path.join(filepath, filename);
let exists = existsCache.has(file) ? existsCache.get(file) : yield fs.exists(file);
if (exists) {
existsCache.set(file, true);
return file;
}
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
return resolve(filepath, filenames, root);
});
return _resolve.apply(this, arguments);
}
function load(_x3, _x4) {
return _load.apply(this, arguments);
}
function _load() {
_load = (0, _asyncToGenerator2.default)(function* (filepath, filenames, root = path.parse(filepath).root) {
let configFile = yield resolve(filepath, filenames, root);
if (configFile) {
try {
let extname = path.extname(configFile).slice(1);
if (extname === 'js') {
return clone(require(configFile));
}
let configContent = (yield fs.readFile(configFile)).toString();
let parse = PARSERS[extname] || PARSERS.json;
return configContent ? parse(configContent) : null;
} catch (err) {
if (err.code === 'MODULE_NOT_FOUND' || err.code === 'ENOENT') {
existsCache.delete(configFile);
return null;
}
throw err;
}
}
return null;
});
return _load.apply(this, arguments);
}
exports.resolve = resolve;
exports.load = load;

View file

@ -0,0 +1,18 @@
"use strict";
const serverErrorList = {
EACCES: "You don't have access to bind the server to port {port}.",
EADDRINUSE: 'There is already a process listening on port {port}.'
};
function serverErrors(err, port) {
let desc = `Error: ${err.code} occurred while setting up server on port ${port}.`;
if (serverErrorList[err.code]) {
desc = serverErrorList[err.code].replace(/{port}/g, port);
}
return desc;
}
module.exports.serverErrors = serverErrors;

44
BACK_BACK/node_modules/parcel-bundler/lib/utils/env.js generated vendored Executable file
View file

@ -0,0 +1,44 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
const config = require('./config');
const dotenv = require('dotenv');
const variableExpansion = require('dotenv-expand');
function loadEnv(_x) {
return _loadEnv.apply(this, arguments);
}
function _loadEnv() {
_loadEnv = (0, _asyncToGenerator2.default)(function* (filepath) {
const NODE_ENV = process.env.NODE_ENV || 'development';
const dotenvFiles = [`.env.${NODE_ENV}.local`, `.env.${NODE_ENV}`, // Don't include `.env.local` for `test` environment
// since normally you expect tests to produce the same
// results for everyone
NODE_ENV !== 'test' && '.env.local', '.env'].filter(Boolean);
yield Promise.all(dotenvFiles.map( /*#__PURE__*/function () {
var _ref = (0, _asyncToGenerator2.default)(function* (dotenvFile) {
const envPath = yield config.resolve(filepath, [dotenvFile]);
if (envPath) {
const envs = dotenv.config({
path: envPath
});
variableExpansion(envs);
}
});
return function (_x2) {
return _ref.apply(this, arguments);
};
}()));
});
return _loadEnv.apply(this, arguments);
}
module.exports = loadEnv;

View file

@ -0,0 +1,115 @@
"use strict";
const forge = require('node-forge');
const fs = require('fs');
const mkdirp = require('mkdirp');
const path = require('path');
const logger = require('@parcel/logger');
function generateCertificate(options = {}) {
const privateKeyPath = path.join(options.cacheDir, 'private.pem');
const certPath = path.join(options.cacheDir, 'primary.crt');
if (options.cache) {
const cachedKey = fs.existsSync(privateKeyPath) && fs.readFileSync(privateKeyPath);
const cachedCert = fs.existsSync(certPath) && fs.readFileSync(certPath);
if (cachedKey && cachedCert) {
return {
key: cachedKey,
cert: cachedCert
};
}
}
logger.progress('Generating SSL Certificate...');
const pki = forge.pki;
const keys = pki.rsa.generateKeyPair(2048);
const cert = pki.createCertificate();
cert.publicKey = keys.publicKey;
cert.serialNumber = Date.now().toString();
cert.validity.notBefore = new Date();
cert.validity.notAfter = new Date();
cert.validity.notAfter.setFullYear(cert.validity.notBefore.getFullYear() + 1);
const attrs = [{
name: 'commonName',
value: 'parceljs.org'
}, {
name: 'countryName',
value: 'US'
}, {
shortName: 'ST',
value: 'Virginia'
}, {
name: 'localityName',
value: 'Blacksburg'
}, {
name: 'organizationName',
value: 'parcelBundler'
}, {
shortName: 'OU',
value: 'Test'
}];
cert.setSubject(attrs);
cert.setIssuer(attrs);
cert.setExtensions([{
name: 'basicConstraints',
cA: true
}, {
name: 'keyUsage',
keyCertSign: true,
digitalSignature: true,
nonRepudiation: true,
keyEncipherment: true,
dataEncipherment: true
}, {
name: 'extKeyUsage',
serverAuth: true,
clientAuth: true,
codeSigning: true,
emailProtection: true,
timeStamping: true
}, {
name: 'nsCertType',
client: true,
server: true,
email: true,
objsign: true,
sslCA: true,
emailCA: true,
objCA: true
}, {
name: 'subjectAltName',
altNames: [{
type: 6,
// URI
value: 'http://example.org/webid#me'
}, {
type: 7,
// IP
ip: '127.0.0.1'
}]
}, {
name: 'subjectKeyIdentifier'
}]);
cert.sign(keys.privateKey, forge.md.sha256.create());
const privPem = pki.privateKeyToPem(keys.privateKey);
const certPem = pki.certificateToPem(cert);
if (options.cache) {
mkdirp.sync(options.cacheDir);
fs.writeFileSync(privateKeyPath, privPem);
fs.writeFileSync(certPath, certPem);
}
return {
key: privPem,
cert: certPem
};
}
module.exports = generateCertificate;

View file

@ -0,0 +1,29 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
const fs = require('@parcel/fs');
function getCertificate(_x) {
return _getCertificate.apply(this, arguments);
}
function _getCertificate() {
_getCertificate = (0, _asyncToGenerator2.default)(function* (options) {
try {
let cert = yield fs.readFile(options.cert);
let key = yield fs.readFile(options.key);
return {
key,
cert
};
} catch (err) {
throw new Error('Certificate and/or key not found');
}
});
return _getCertificate.apply(this, arguments);
}
module.exports = getCertificate;

View file

@ -0,0 +1,16 @@
"use strict";
const fs = require('fs');
/**
* Creates an object that contains both source and minified (using the source as a fallback).
* e.g. builtins.min.js and builtins.js.
*/
module.exports = (minifiedPath, sourcePath) => {
let source = fs.readFileSync(sourcePath, 'utf8').trim();
return {
source,
minified: fs.existsSync(minifiedPath) ? fs.readFileSync(minifiedPath, 'utf8').trim().replace(/;$/, '') : source
};
};

View file

@ -0,0 +1,14 @@
"use strict";
const path = require('path');
module.exports = function (name) {
let parts = path.normalize(name).split(path.sep);
if (parts[0].charAt(0) === '@') {
// Scoped module (e.g. @scope/module). Merge the first two parts back together.
parts.splice(0, 2, `${parts[0]}/${parts[1]}`);
}
return parts;
};

View file

@ -0,0 +1,51 @@
"use strict";
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
const path = require('path');
function getRootDir(files) {
let cur = null;
var _iterator = _createForOfIteratorHelper(files),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
let file = _step.value;
let parsed = path.parse(file);
if (!cur) {
cur = parsed;
} else if (parsed.root !== cur.root) {
// bail out. there is no common root.
// this can happen on windows, e.g. C:\foo\bar vs. D:\foo\bar
return process.cwd();
} else {
// find the common path parts.
let curParts = cur.dir.split(path.sep);
let newParts = parsed.dir.split(path.sep);
let len = Math.min(curParts.length, newParts.length);
let i = 0;
while (i < len && curParts[i] === newParts[i]) {
i++;
}
cur.dir = i > 1 ? curParts.slice(0, i).join(path.sep) : cur.root;
}
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
return cur ? cur.dir : process.cwd();
}
module.exports = getRootDir;

View file

@ -0,0 +1,148 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
const browserslist = require('browserslist');
const semver = require('semver');
const Path = require('path');
const DEFAULT_ENGINES = {
browsers: ['> 0.25%'],
node: '8'
};
/**
* Loads target node and browser versions from the following locations:
* - package.json engines field
* - package.json browserslist field
* - browserslist or .browserslistrc files
* - .babelrc or .babelrc.js files with @babel/preset-env
*/
function getTargetEngines(_x, _x2) {
return _getTargetEngines.apply(this, arguments);
}
function _getTargetEngines() {
_getTargetEngines = (0, _asyncToGenerator2.default)(function* (asset, isTargetApp) {
let targets = {};
let path = isTargetApp ? Path.join(asset.options.rootDir, 'index') : asset.name;
let compileTarget = asset.options.target === 'browser' ? 'browsers' : asset.options.target;
let pkg = yield asset.getConfig(['package.json'], {
path
});
let engines = pkg && pkg.engines;
let nodeVersion = engines && getMinSemver(engines.node);
if (compileTarget === 'node') {
// Use package.engines.node by default if we are compiling for node.
if (typeof nodeVersion === 'string') {
targets.node = nodeVersion;
}
} else {
if (engines && (typeof engines.browsers === 'string' || Array.isArray(engines.browsers))) {
targets.browsers = engines.browsers;
} else if (pkg && pkg.browserslist) {
targets.browsers = pkg.browserslist;
} else {
let browserslist = yield loadBrowserslist(asset, path);
if (browserslist) {
targets.browsers = browserslist;
} else {
let babelTargets = yield loadBabelrc(asset, path);
if (babelTargets && babelTargets.browsers) {
targets.browsers = babelTargets.browsers;
} else if (babelTargets && babelTargets.node && !nodeVersion) {
nodeVersion = babelTargets.node;
}
}
} // Fall back to package.engines.node for node_modules without any browser target info.
if (!isTargetApp && !targets.browsers && typeof nodeVersion === 'string') {
targets.node = nodeVersion;
}
} // If we didn't find any targets, set some default engines for the target app.
if (isTargetApp && !targets[compileTarget] && DEFAULT_ENGINES[compileTarget]) {
targets[compileTarget] = DEFAULT_ENGINES[compileTarget];
} // Parse browser targets
if (targets.browsers) {
if (typeof targets.browsers === 'object' && !Array.isArray(targets.browsers)) {
let env = asset.options.production ? 'production' : process.env.NODE_ENV || 'development';
targets.browsers = targets.browsers[env] || targets.browsers.defaults;
}
if (targets.browsers) {
targets.browsers = browserslist(targets.browsers).sort();
}
} // Dont compile if we couldn't find any targets
if (Object.keys(targets).length === 0) {
return null;
}
return targets;
});
return _getTargetEngines.apply(this, arguments);
}
function getMinSemver(version) {
try {
let range = new semver.Range(version);
let sorted = range.set.sort((a, b) => a[0].semver.compare(b[0].semver));
return sorted[0][0].semver.version;
} catch (err) {
return null;
}
}
function loadBrowserslist(_x3, _x4) {
return _loadBrowserslist.apply(this, arguments);
}
function _loadBrowserslist() {
_loadBrowserslist = (0, _asyncToGenerator2.default)(function* (asset, path) {
let config = yield asset.getConfig(['browserslist', '.browserslistrc'], {
path,
load: false
});
if (config) {
return browserslist.readConfig(config);
}
});
return _loadBrowserslist.apply(this, arguments);
}
function loadBabelrc(_x5, _x6) {
return _loadBabelrc.apply(this, arguments);
}
function _loadBabelrc() {
_loadBabelrc = (0, _asyncToGenerator2.default)(function* (asset, path) {
let config = yield asset.getConfig(['.babelrc', '.babelrc.js'], {
path
});
if (config && config.presets) {
let env = config.presets.find(plugin => Array.isArray(plugin) && (plugin[0] === 'env' || plugin[0] === '@babel/env'));
if (env && env[1] && env[1].targets) {
return env[1].targets;
}
}
});
return _loadBabelrc.apply(this, arguments);
}
module.exports = getTargetEngines;

21
BACK_BACK/node_modules/parcel-bundler/lib/utils/glob.js generated vendored Executable file
View file

@ -0,0 +1,21 @@
"use strict";
const isGlob = require('is-glob');
const fastGlob = require('fast-glob');
function normalisePath(p) {
return p.replace(/\\/g, '/');
}
exports.isGlob = function (p) {
return isGlob(normalisePath(p));
};
exports.glob = function (p, options) {
return fastGlob(normalisePath(p), options);
};
exports.glob.sync = function (p, options) {
return fastGlob.sync(normalisePath(p), options);
};

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