forked from public/fvtt-cthulhu-eternal
Initial import with skill sheet working
This commit is contained in:
21
node_modules/resolve-options/LICENSE
generated
vendored
Normal file
21
node_modules/resolve-options/LICENSE
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2017, 2022 Blaine Bublitz <blaine.bublitz@gmail.com> and Eric Schoffstall <yo@contra.io>
|
||||
|
||||
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.
|
107
node_modules/resolve-options/README.md
generated
vendored
Normal file
107
node_modules/resolve-options/README.md
generated
vendored
Normal file
@ -0,0 +1,107 @@
|
||||
<p align="center">
|
||||
<a href="https://gulpjs.com">
|
||||
<img height="257" width="114" src="https://raw.githubusercontent.com/gulpjs/artwork/master/gulp-2x.png">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
# resolve-options
|
||||
|
||||
[![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url] [![Build Status][ci-image]][ci-url] [![Coveralls Status][coveralls-image]][coveralls-url]
|
||||
|
||||
Resolve an options object based on configuration.
|
||||
|
||||
## Usage
|
||||
|
||||
```js
|
||||
// This example assumes a Vinyl file
|
||||
|
||||
var createResolver = require('resolve-options');
|
||||
|
||||
var config = {
|
||||
cwd: {
|
||||
type: 'string',
|
||||
default: process.cwd,
|
||||
},
|
||||
sourcemaps: {
|
||||
type: 'boolean',
|
||||
default: false,
|
||||
},
|
||||
since: {
|
||||
type: ['date', 'number'],
|
||||
},
|
||||
read: {
|
||||
type: 'boolean',
|
||||
},
|
||||
};
|
||||
|
||||
var options = {
|
||||
sourcemaps: true,
|
||||
since: Date.now(),
|
||||
read: function (file) {
|
||||
return file.extname !== '.mp4';
|
||||
},
|
||||
};
|
||||
|
||||
var resolver = createResolver(config, options);
|
||||
|
||||
var cwd = resolver.resolve('cwd', file);
|
||||
// cwd === process.cwd()
|
||||
|
||||
var sourcemaps = resolver.resolve('sourcemaps', file);
|
||||
// sourcemaps === true
|
||||
|
||||
var read = resolver.resolve('read', file);
|
||||
// Given .mp4, read === false
|
||||
// Given .txt, read === true
|
||||
```
|
||||
|
||||
## API
|
||||
|
||||
### `createResolver([config,] [options])`
|
||||
|
||||
Takes a `config` object that describes the options to accept/resolve and an `options` object (usually passed by a user) to resolve against the `config`. Returns a `resolver` that contains a `resolve` method for realtime resolution of options.
|
||||
|
||||
The `config` object takes the following structure:
|
||||
|
||||
```graphql
|
||||
config {
|
||||
[optionKey] {
|
||||
type // string, array or function
|
||||
default // any value or function
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Each option is represented by its `optionKey` in the `config` object. It must be an object with a `type` property.
|
||||
|
||||
The `type` property must be a string, array or function which will be passed to the [`value-or-function`][value-or-function] module (functions will be bound to the resolver to allow for dependent options).
|
||||
|
||||
A `default` property may also be specified as a fallback if the option isn't available or is invalid. The `default` value can be any value or a function (functions will be bound to the resolver to allow for dependent defaults). **Note:** `default` values are not type-validated by the `value-or-function` module.
|
||||
|
||||
### `resolver.resolve(optionKey, [...arguments])`
|
||||
|
||||
Takes an `optionKey` string and any number of `arguments` to apply if an option is a function. Returns the resolved value for the `optionKey`.
|
||||
|
||||
### `resolver.resolveConstant(optionKey)`
|
||||
|
||||
Like `resolve`, but only returns a value if the option is constant (not a function).
|
||||
|
||||
## License
|
||||
|
||||
MIT
|
||||
|
||||
<!-- prettier-ignore-start -->
|
||||
[downloads-image]: https://img.shields.io/npm/dm/resolve-options.svg?style=flat-square
|
||||
[npm-url]: https://npmjs.com/package/resolve-options
|
||||
[npm-image]: https://img.shields.io/npm/v/resolve-options.svg?style=flat-square
|
||||
|
||||
[ci-url]: https://github.com/gulpjs/resolve-options/actions?query=workflow:dev
|
||||
[ci-image]: https://img.shields.io/github/workflow/status/gulpjs/resolve-options/dev?style=flat-square
|
||||
|
||||
[coveralls-url]: https://coveralls.io/r/gulpjs/resolve-options
|
||||
[coveralls-image]: https://img.shields.io/coveralls/gulpjs/resolve-options/master.svg?style=flat-square
|
||||
<!-- prettier-ignore-end -->
|
||||
|
||||
<!-- prettier-ignore-start -->
|
||||
[value-or-function]: https://github.com/gulpjs/value-or-function
|
||||
<!-- prettier-ignore-end -->
|
107
node_modules/resolve-options/index.js
generated
vendored
Normal file
107
node_modules/resolve-options/index.js
generated
vendored
Normal file
@ -0,0 +1,107 @@
|
||||
'use strict';
|
||||
|
||||
var normalize = require('value-or-function');
|
||||
|
||||
var slice = Array.prototype.slice;
|
||||
|
||||
function createResolver(config, options) {
|
||||
// TODO: should the config object be validated?
|
||||
config = config || {};
|
||||
options = options || {};
|
||||
|
||||
var resolver = {
|
||||
resolve: resolve,
|
||||
resolveConstant: resolveConstant,
|
||||
};
|
||||
|
||||
// Keep constants separately
|
||||
var constants = {};
|
||||
|
||||
function resolveConstant(key) {
|
||||
if (Object.prototype.hasOwnProperty.call(constants, key)) {
|
||||
return constants[key];
|
||||
}
|
||||
|
||||
var definition = config[key];
|
||||
// Ignore options that are not defined
|
||||
if (!definition) {
|
||||
return;
|
||||
}
|
||||
|
||||
var option = options[key];
|
||||
|
||||
if (option != null) {
|
||||
if (typeof option === 'function') {
|
||||
return;
|
||||
}
|
||||
option = normalize.call(resolver, definition.type, option);
|
||||
if (option != null) {
|
||||
constants[key] = option;
|
||||
return option;
|
||||
}
|
||||
}
|
||||
|
||||
var fallback = definition.default;
|
||||
if (option == null && typeof fallback !== 'function') {
|
||||
constants[key] = fallback;
|
||||
return fallback;
|
||||
}
|
||||
}
|
||||
|
||||
// Keep requested keys to detect (and disallow) recursive resolution
|
||||
var stack = [];
|
||||
|
||||
function resolve(key) {
|
||||
var option = resolveConstant(key);
|
||||
if (option != null) {
|
||||
return option;
|
||||
}
|
||||
|
||||
var definition = config[key];
|
||||
// Ignore options that are not defined
|
||||
if (!definition) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (stack.indexOf(key) >= 0) {
|
||||
throw new Error('Recursive resolution denied.');
|
||||
}
|
||||
|
||||
option = options[key];
|
||||
var fallback = definition.default;
|
||||
var appliedArgs = slice.call(arguments, 1);
|
||||
var args = [definition.type, option].concat(appliedArgs);
|
||||
|
||||
function toResolve() {
|
||||
stack.push(key);
|
||||
var option = normalize.apply(resolver, args);
|
||||
|
||||
if (option == null) {
|
||||
option = fallback;
|
||||
if (typeof option === 'function') {
|
||||
option = option.apply(resolver, appliedArgs);
|
||||
}
|
||||
}
|
||||
|
||||
return option;
|
||||
}
|
||||
|
||||
function onResolve() {
|
||||
stack.pop();
|
||||
}
|
||||
|
||||
return tryResolve(toResolve, onResolve);
|
||||
}
|
||||
|
||||
return resolver;
|
||||
}
|
||||
|
||||
function tryResolve(toResolve, onResolve) {
|
||||
try {
|
||||
return toResolve();
|
||||
} finally {
|
||||
onResolve();
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = createResolver;
|
55
node_modules/resolve-options/package.json
generated
vendored
Normal file
55
node_modules/resolve-options/package.json
generated
vendored
Normal file
@ -0,0 +1,55 @@
|
||||
{
|
||||
"name": "resolve-options",
|
||||
"version": "2.0.0",
|
||||
"description": "Resolve an options object based on configuration.",
|
||||
"author": "Gulp Team <team@gulpjs.com> (http://gulpjs.com/)",
|
||||
"contributors": [
|
||||
"Blaine Bublitz <blaine.bublitz@gmail.com>"
|
||||
],
|
||||
"repository": "gulpjs/resolve-options",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">= 10.13.0"
|
||||
},
|
||||
"main": "index.js",
|
||||
"files": [
|
||||
"LICENSE",
|
||||
"index.js"
|
||||
],
|
||||
"scripts": {
|
||||
"lint": "eslint .",
|
||||
"pretest": "npm run lint",
|
||||
"test": "nyc mocha --async-only"
|
||||
},
|
||||
"dependencies": {
|
||||
"value-or-function": "^4.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"eslint": "^7.32.0",
|
||||
"eslint-config-gulp": "^5.0.1",
|
||||
"eslint-plugin-node": "^11.1.0",
|
||||
"expect": "^27.5.1",
|
||||
"mocha": "^8.4.0",
|
||||
"nyc": "^15.1.0"
|
||||
},
|
||||
"nyc": {
|
||||
"reporter": [
|
||||
"lcov",
|
||||
"text-summary"
|
||||
]
|
||||
},
|
||||
"prettier": {
|
||||
"singleQuote": true
|
||||
},
|
||||
"keywords": [
|
||||
"options",
|
||||
"functions",
|
||||
"resolver",
|
||||
"type",
|
||||
"configuration",
|
||||
"config",
|
||||
"opts",
|
||||
"opt",
|
||||
"default"
|
||||
]
|
||||
}
|
Reference in New Issue
Block a user