new license file version [CI SKIP]
This commit is contained in:
@@ -0,0 +1,234 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
import path from 'path'
|
||||
import arg from 'arg'
|
||||
import fs from 'fs'
|
||||
|
||||
import { build } from './build'
|
||||
import { help } from './help'
|
||||
import { init } from './init'
|
||||
|
||||
function isESM() {
|
||||
const pkgPath = path.resolve('./package.json')
|
||||
|
||||
try {
|
||||
let pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'))
|
||||
return pkg.type && pkg.type === 'module'
|
||||
} catch (err) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
let configs = isESM()
|
||||
? {
|
||||
tailwind: 'tailwind.config.cjs',
|
||||
postcss: 'postcss.config.cjs',
|
||||
}
|
||||
: {
|
||||
tailwind: 'tailwind.config.js',
|
||||
postcss: 'postcss.config.js',
|
||||
}
|
||||
|
||||
// ---
|
||||
|
||||
function oneOf(...options) {
|
||||
return Object.assign(
|
||||
(value = true) => {
|
||||
for (let option of options) {
|
||||
let parsed = option(value)
|
||||
if (parsed === value) {
|
||||
return parsed
|
||||
}
|
||||
}
|
||||
|
||||
throw new Error('...')
|
||||
},
|
||||
{ manualParsing: true }
|
||||
)
|
||||
}
|
||||
|
||||
let commands = {
|
||||
init: {
|
||||
run: init,
|
||||
args: {
|
||||
'--full': { type: Boolean, description: `Initialize a full \`${configs.tailwind}\` file` },
|
||||
'--postcss': { type: Boolean, description: `Initialize a \`${configs.postcss}\` file` },
|
||||
'-f': '--full',
|
||||
'-p': '--postcss',
|
||||
},
|
||||
},
|
||||
build: {
|
||||
run: build,
|
||||
args: {
|
||||
'--input': { type: String, description: 'Input file' },
|
||||
'--output': { type: String, description: 'Output file' },
|
||||
'--watch': {
|
||||
type: oneOf(String, Boolean),
|
||||
description: 'Watch for changes and rebuild as needed',
|
||||
},
|
||||
'--poll': {
|
||||
type: Boolean,
|
||||
description: 'Use polling instead of filesystem events when watching',
|
||||
},
|
||||
'--content': {
|
||||
type: String,
|
||||
description: 'Content paths to use for removing unused classes',
|
||||
},
|
||||
'--purge': {
|
||||
type: String,
|
||||
deprecated: true,
|
||||
},
|
||||
'--postcss': {
|
||||
type: oneOf(String, Boolean),
|
||||
description: 'Load custom PostCSS configuration',
|
||||
},
|
||||
'--minify': { type: Boolean, description: 'Minify the output' },
|
||||
'--config': {
|
||||
type: String,
|
||||
description: 'Path to a custom config file',
|
||||
},
|
||||
'--no-autoprefixer': {
|
||||
type: Boolean,
|
||||
description: 'Disable autoprefixer',
|
||||
},
|
||||
'-c': '--config',
|
||||
'-i': '--input',
|
||||
'-o': '--output',
|
||||
'-m': '--minify',
|
||||
'-w': '--watch',
|
||||
'-p': '--poll',
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
let sharedFlags = {
|
||||
'--help': { type: Boolean, description: 'Display usage information' },
|
||||
'-h': '--help',
|
||||
}
|
||||
|
||||
if (
|
||||
process.stdout.isTTY /* Detect redirecting output to a file */ &&
|
||||
(process.argv[2] === undefined ||
|
||||
process.argv.slice(2).every((flag) => sharedFlags[flag] !== undefined))
|
||||
) {
|
||||
help({
|
||||
usage: [
|
||||
'tailwindcss [--input input.css] [--output output.css] [--watch] [options...]',
|
||||
'tailwindcss init [--full] [--postcss] [options...]',
|
||||
],
|
||||
commands: Object.keys(commands)
|
||||
.filter((command) => command !== 'build')
|
||||
.map((command) => `${command} [options]`),
|
||||
options: { ...commands.build.args, ...sharedFlags },
|
||||
})
|
||||
process.exit(0)
|
||||
}
|
||||
|
||||
let command = ((arg = '') => (arg.startsWith('-') ? undefined : arg))(process.argv[2]) || 'build'
|
||||
|
||||
if (commands[command] === undefined) {
|
||||
if (fs.existsSync(path.resolve(command))) {
|
||||
// TODO: Deprecate this in future versions
|
||||
// Check if non-existing command, might be a file.
|
||||
command = 'build'
|
||||
} else {
|
||||
help({
|
||||
message: `Invalid command: ${command}`,
|
||||
usage: ['tailwindcss <command> [options]'],
|
||||
commands: Object.keys(commands)
|
||||
.filter((command) => command !== 'build')
|
||||
.map((command) => `${command} [options]`),
|
||||
options: sharedFlags,
|
||||
})
|
||||
process.exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
// Execute command
|
||||
let { args: flags, run } = commands[command]
|
||||
let args = (() => {
|
||||
try {
|
||||
let result = arg(
|
||||
Object.fromEntries(
|
||||
Object.entries({ ...flags, ...sharedFlags })
|
||||
.filter(([_key, value]) => !value?.type?.manualParsing)
|
||||
.map(([key, value]) => [key, typeof value === 'object' ? value.type : value])
|
||||
),
|
||||
{ permissive: true }
|
||||
)
|
||||
|
||||
// Manual parsing of flags to allow for special flags like oneOf(Boolean, String)
|
||||
for (let i = result['_'].length - 1; i >= 0; --i) {
|
||||
let flag = result['_'][i]
|
||||
if (!flag.startsWith('-')) continue
|
||||
|
||||
let [flagName, flagValue] = flag.split('=')
|
||||
let handler = flags[flagName]
|
||||
|
||||
// Resolve flagName & handler
|
||||
while (typeof handler === 'string') {
|
||||
flagName = handler
|
||||
handler = flags[handler]
|
||||
}
|
||||
|
||||
if (!handler) continue
|
||||
|
||||
let args = []
|
||||
let offset = i + 1
|
||||
|
||||
// --flag value syntax was used so we need to pull `value` from `args`
|
||||
if (flagValue === undefined) {
|
||||
// Parse args for current flag
|
||||
while (result['_'][offset] && !result['_'][offset].startsWith('-')) {
|
||||
args.push(result['_'][offset++])
|
||||
}
|
||||
|
||||
// Cleanup manually parsed flags + args
|
||||
result['_'].splice(i, 1 + args.length)
|
||||
|
||||
// No args were provided, use default value defined in handler
|
||||
// One arg was provided, use that directly
|
||||
// Multiple args were provided so pass them all in an array
|
||||
flagValue = args.length === 0 ? undefined : args.length === 1 ? args[0] : args
|
||||
} else {
|
||||
// Remove the whole flag from the args array
|
||||
result['_'].splice(i, 1)
|
||||
}
|
||||
|
||||
// Set the resolved value in the `result` object
|
||||
result[flagName] = handler.type(flagValue, flagName)
|
||||
}
|
||||
|
||||
// Ensure that the `command` is always the first argument in the `args`.
|
||||
// This is important so that we don't have to check if a default command
|
||||
// (build) was used or not from within each plugin.
|
||||
//
|
||||
// E.g.: tailwindcss input.css -> _: ['build', 'input.css']
|
||||
// E.g.: tailwindcss build input.css -> _: ['build', 'input.css']
|
||||
if (result['_'][0] !== command) {
|
||||
result['_'].unshift(command)
|
||||
}
|
||||
|
||||
return result
|
||||
} catch (err) {
|
||||
if (err.code === 'ARG_UNKNOWN_OPTION') {
|
||||
help({
|
||||
message: err.message,
|
||||
usage: ['tailwindcss <command> [options]'],
|
||||
options: sharedFlags,
|
||||
})
|
||||
process.exit(1)
|
||||
}
|
||||
throw err
|
||||
}
|
||||
})()
|
||||
|
||||
if (args['--help']) {
|
||||
help({
|
||||
options: { ...flags, ...sharedFlags },
|
||||
usage: [`tailwindcss ${command} [options]`],
|
||||
})
|
||||
process.exit(0)
|
||||
}
|
||||
|
||||
run(args, configs)
|
||||
@@ -0,0 +1,102 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Code coverage report for csv2json/libs/core/fileLineToCSVLine.js</title>
|
||||
<meta charset="utf-8" />
|
||||
<link rel="stylesheet" href="../../../prettify.css" />
|
||||
<link rel="stylesheet" href="../../../base.css" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<style type='text/css'>
|
||||
.coverage-summary .sorter {
|
||||
background-image: url(../../../sort-arrow-sprite.png);
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class='wrapper'>
|
||||
<div class='pad1'>
|
||||
<h1>
|
||||
<a href="../../../index.html">All files</a> / <a href="index.html">csv2json/libs/core</a> fileLineToCSVLine.js
|
||||
</h1>
|
||||
<div class='clearfix'>
|
||||
<div class='fl pad1y space-right2'>
|
||||
<span class="strong">0% </span>
|
||||
<span class="quiet">Statements</span>
|
||||
<span class='fraction'>0/5</span>
|
||||
</div>
|
||||
<div class='fl pad1y space-right2'>
|
||||
<span class="strong">100% </span>
|
||||
<span class="quiet">Branches</span>
|
||||
<span class='fraction'>0/0</span>
|
||||
</div>
|
||||
<div class='fl pad1y space-right2'>
|
||||
<span class="strong">0% </span>
|
||||
<span class="quiet">Functions</span>
|
||||
<span class='fraction'>0/1</span>
|
||||
</div>
|
||||
<div class='fl pad1y space-right2'>
|
||||
<span class="strong">0% </span>
|
||||
<span class="quiet">Lines</span>
|
||||
<span class='fraction'>0/5</span>
|
||||
</div>
|
||||
</div>
|
||||
<p class="quiet">
|
||||
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
||||
</p>
|
||||
</div>
|
||||
<div class='status-line low'></div>
|
||||
<pre><table class="coverage">
|
||||
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
||||
<a name='L2'></a><a href='#L2'>2</a>
|
||||
<a name='L3'></a><a href='#L3'>3</a>
|
||||
<a name='L4'></a><a href='#L4'>4</a>
|
||||
<a name='L5'></a><a href='#L5'>5</a>
|
||||
<a name='L6'></a><a href='#L6'>6</a>
|
||||
<a name='L7'></a><a href='#L7'>7</a>
|
||||
<a name='L8'></a><a href='#L8'>8</a>
|
||||
<a name='L9'></a><a href='#L9'>9</a>
|
||||
<a name='L10'></a><a href='#L10'>10</a>
|
||||
<a name='L11'></a><a href='#L11'>11</a>
|
||||
<a name='L12'></a><a href='#L12'>12</a></td><td class="line-coverage quiet"><span class="cline-any cline-no">0</span>
|
||||
<span class="cline-any cline-no">0</span>
|
||||
<span class="cline-any cline-no">0</span>
|
||||
<span class="cline-any cline-no">0</span>
|
||||
<span class="cline-any cline-no">0</span>
|
||||
<span class="cline-any cline-no">0</span>
|
||||
<span class="cline-any cline-no">0</span>
|
||||
<span class="cline-any cline-no">0</span>
|
||||
<span class="cline-any cline-no">0</span>
|
||||
<span class="cline-any cline-no">0</span>
|
||||
<span class="cline-any cline-no">0</span>
|
||||
<span class="cline-any cline-no">0</span></td><td class="text"><pre class="prettyprint lang-js">Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/fileLineToCSVLine.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/fileLineToCSVLine.js')
|
||||
Error: Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/fileLineToCSVLine.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/fileLineToCSVLine.js')
|
||||
at Context.defaultSourceLookup [as sourceFinder] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:15:15)
|
||||
at Context.getSource (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:74:17)
|
||||
at Object.annotateSourceCode (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/annotator.js:172:38)
|
||||
at HtmlReport.onDetail (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/index.js:237:39)
|
||||
at Visitor.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:34:30)
|
||||
at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:123:17)
|
||||
at /Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:116:23
|
||||
at Array.forEach (native)
|
||||
at visitChildren (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:115:32)
|
||||
at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:126:5)</pre></td></tr>
|
||||
</table></pre>
|
||||
<div class='push'></div><!-- for sticky footer -->
|
||||
</div><!-- /wrapper -->
|
||||
<div class='footer quiet pad2 space-top1 center small'>
|
||||
Code coverage
|
||||
generated by <a href="https://istanbul.js.org/" target="_blank">istanbul</a> at Fri May 11 2018 21:36:07 GMT+0100 (IST)
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../../prettify.js"></script>
|
||||
<script>
|
||||
window.onload = function () {
|
||||
if (typeof prettyPrint === 'function') {
|
||||
prettyPrint();
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script src="../../../sorter.js"></script>
|
||||
<script src="../../../block-navigation.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,16 @@
|
||||
/*! node-DOMException. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> */
|
||||
|
||||
if (!globalThis.DOMException) {
|
||||
try {
|
||||
const { MessageChannel } = require('worker_threads'),
|
||||
port = new MessageChannel().port1,
|
||||
ab = new ArrayBuffer()
|
||||
port.postMessage(ab, [ab, ab])
|
||||
} catch (err) {
|
||||
err.constructor.name === 'DOMException' && (
|
||||
globalThis.DOMException = err.constructor
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = globalThis.DOMException
|
||||
@@ -0,0 +1,140 @@
|
||||
/**
|
||||
* @typedef {object} ScreenValue
|
||||
* @property {number|undefined} min
|
||||
* @property {number|undefined} max
|
||||
* @property {string|undefined} raw
|
||||
*/
|
||||
|
||||
/**
|
||||
* @typedef {object} Screen
|
||||
* @property {string} name
|
||||
* @property {boolean} not
|
||||
* @property {ScreenValue[]} values
|
||||
*/
|
||||
|
||||
/**
|
||||
* A function that normalizes the various forms that the screens object can be
|
||||
* provided in.
|
||||
*
|
||||
* Input(s):
|
||||
* - ['100px', '200px'] // Raw strings
|
||||
* - { sm: '100px', md: '200px' } // Object with string values
|
||||
* - { sm: { min: '100px' }, md: { max: '100px' } } // Object with object values
|
||||
* - { sm: [{ min: '100px' }, { max: '200px' }] } // Object with object array (multiple values)
|
||||
*
|
||||
* Output(s):
|
||||
* - [{ name: 'sm', values: [{ min: '100px', max: '200px' }] }] // List of objects, that contains multiple values
|
||||
*
|
||||
* @returns {Screen[]}
|
||||
*/
|
||||
export function normalizeScreens(screens, root = true) {
|
||||
if (Array.isArray(screens)) {
|
||||
return screens.map((screen) => {
|
||||
if (root && Array.isArray(screen)) {
|
||||
throw new Error('The tuple syntax is not supported for `screens`.')
|
||||
}
|
||||
|
||||
if (typeof screen === 'string') {
|
||||
return { name: screen.toString(), not: false, values: [{ min: screen, max: undefined }] }
|
||||
}
|
||||
|
||||
let [name, options] = screen
|
||||
name = name.toString()
|
||||
|
||||
if (typeof options === 'string') {
|
||||
return { name, not: false, values: [{ min: options, max: undefined }] }
|
||||
}
|
||||
|
||||
if (Array.isArray(options)) {
|
||||
return { name, not: false, values: options.map((option) => resolveValue(option)) }
|
||||
}
|
||||
|
||||
return { name, not: false, values: [resolveValue(options)] }
|
||||
})
|
||||
}
|
||||
|
||||
return normalizeScreens(Object.entries(screens ?? {}), false)
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Screen} screen
|
||||
* @returns {{result: false, reason: string} | {result: true, reason: null}}
|
||||
*/
|
||||
export function isScreenSortable(screen) {
|
||||
if (screen.values.length !== 1) {
|
||||
return { result: false, reason: 'multiple-values' }
|
||||
} else if (screen.values[0].raw !== undefined) {
|
||||
return { result: false, reason: 'raw-values' }
|
||||
} else if (screen.values[0].min !== undefined && screen.values[0].max !== undefined) {
|
||||
return { result: false, reason: 'min-and-max' }
|
||||
}
|
||||
|
||||
return { result: true, reason: null }
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {'min' | 'max'} type
|
||||
* @param {Screen | 'string'} a
|
||||
* @param {Screen | 'string'} z
|
||||
* @returns {number}
|
||||
*/
|
||||
export function compareScreens(type, a, z) {
|
||||
let aScreen = toScreen(a, type)
|
||||
let zScreen = toScreen(z, type)
|
||||
|
||||
let aSorting = isScreenSortable(aScreen)
|
||||
let bSorting = isScreenSortable(zScreen)
|
||||
|
||||
// These cases should never happen and indicate a bug in Tailwind CSS itself
|
||||
if (aSorting.reason === 'multiple-values' || bSorting.reason === 'multiple-values') {
|
||||
throw new Error(
|
||||
'Attempted to sort a screen with multiple values. This should never happen. Please open a bug report.'
|
||||
)
|
||||
} else if (aSorting.reason === 'raw-values' || bSorting.reason === 'raw-values') {
|
||||
throw new Error(
|
||||
'Attempted to sort a screen with raw values. This should never happen. Please open a bug report.'
|
||||
)
|
||||
} else if (aSorting.reason === 'min-and-max' || bSorting.reason === 'min-and-max') {
|
||||
throw new Error(
|
||||
'Attempted to sort a screen with both min and max values. This should never happen. Please open a bug report.'
|
||||
)
|
||||
}
|
||||
|
||||
// Let the sorting begin
|
||||
let { min: aMin, max: aMax } = aScreen.values[0]
|
||||
let { min: zMin, max: zMax } = zScreen.values[0]
|
||||
|
||||
// Negating screens flip their behavior. Basically `not min-width` is `max-width`
|
||||
if (a.not) [aMin, aMax] = [aMax, aMin]
|
||||
if (z.not) [zMin, zMax] = [zMax, zMin]
|
||||
|
||||
aMin = aMin === undefined ? aMin : parseFloat(aMin)
|
||||
aMax = aMax === undefined ? aMax : parseFloat(aMax)
|
||||
zMin = zMin === undefined ? zMin : parseFloat(zMin)
|
||||
zMax = zMax === undefined ? zMax : parseFloat(zMax)
|
||||
|
||||
let [aValue, zValue] = type === 'min' ? [aMin, zMin] : [zMax, aMax]
|
||||
|
||||
return aValue - zValue
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {PartialScreen> | string} value
|
||||
* @param {'min' | 'max'} type
|
||||
* @returns {Screen}
|
||||
*/
|
||||
export function toScreen(value, type) {
|
||||
if (typeof value === 'object') {
|
||||
return value
|
||||
}
|
||||
|
||||
return {
|
||||
name: 'arbitrary-screen',
|
||||
values: [{ [type]: value }],
|
||||
}
|
||||
}
|
||||
|
||||
function resolveValue({ 'min-width': _minWidth, min = _minWidth, max, raw } = {}) {
|
||||
return { min, max, raw }
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"bindCallbackInternals.d.ts","sourceRoot":"","sources":["../../../../src/internal/observable/bindCallbackInternals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAM3C,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,OAAO,EACpB,YAAY,EAAE,GAAG,EACjB,cAAc,CAAC,EAAE,GAAG,EACpB,SAAS,CAAC,EAAE,aAAa,GACxB,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,UAAU,CAAC,OAAO,CAAC,CAyGzC"}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (C) 2012-2022 by various contributors (see AUTHORS)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
@@ -0,0 +1,89 @@
|
||||
# es-get-iterator <sup>[![Version Badge][npm-version-svg]][package-url]</sup>
|
||||
|
||||
[![dependency status][deps-svg]][deps-url]
|
||||
[![dev dependency status][dev-deps-svg]][dev-deps-url]
|
||||
[![License][license-image]][license-url]
|
||||
[![Downloads][downloads-image]][downloads-url]
|
||||
|
||||
[![npm badge][npm-badge-png]][package-url]
|
||||
|
||||
Get an iterator for any JS language value. Works robustly across all environments, all versions.
|
||||
|
||||
In modern engines, `value[Symbol.iterator]()` is sufficient to produce an iterator (an object with a `.next` method) for that object. However, older engines:
|
||||
- may lack `Symbol` support altogether
|
||||
- may have `Symbol.iterator` but not implement it on everything it should, like arguments objects
|
||||
- may have `Map` and `Set`, but a non-standard name for the iterator-producing method (`.iterator` or `['@@iterator']`, eg)
|
||||
- may be old versions of Firefox that produce values until they throw a StopIteration exception, rather than having iteration result objects
|
||||
- may be polyfilled/shimmed/shammed, with `es6-shim` or `core-js` or similar
|
||||
|
||||
This library attempts to provide an abstraction over all that complexity!
|
||||
|
||||
In node v13+, `exports` is used to provide a lean implementation that lacks all the complexity described above, in combination with the `browser` field so that bundlers will pick up the proper implementation.
|
||||
|
||||
## Targeting browsers with Symbol support
|
||||
|
||||
If you are targeting browsers that definitely all have Symbol support, then you can configure your bundler to replace `require('has-symbols')()` with a literal `true`, which should allow dead code elimination to reduce the size of the bundled code.
|
||||
|
||||
### With `@rollup/plugin-replace`
|
||||
|
||||
```js
|
||||
// rollup.config.js
|
||||
|
||||
import replace from '@rollup/plugin-replace';
|
||||
|
||||
export default {
|
||||
...
|
||||
plugins: [
|
||||
replace({
|
||||
"require('has-symbols')()": 'true',
|
||||
delimiters: ['', '']
|
||||
})
|
||||
]
|
||||
};
|
||||
```
|
||||
|
||||
## Example
|
||||
|
||||
```js
|
||||
var getIterator = require('es-get-iterator');
|
||||
var assert = require('assert');
|
||||
|
||||
var iterator = getIterator('a 💩');
|
||||
assert.deepEqual(
|
||||
[iterator.next(), iterator.next(), iterator.next(), iterator.next()],
|
||||
[{ done: false, value: 'a' }, { done: false, value: ' ' }, { done: false, value: '💩' }, { done: true, value: undefined }]
|
||||
);
|
||||
|
||||
var iterator = getIterator([1, 2]);
|
||||
assert.deepEqual(
|
||||
[iterator.next(), iterator.next(), iterator.next()],
|
||||
[{ done: false, value: 1 }, { done: false, value: 2 }, { done: true, value: undefined }]
|
||||
);
|
||||
|
||||
var iterator = getIterator(new Set([1, 2]));
|
||||
assert.deepEqual(
|
||||
[iterator.next(), iterator.next(), iterator.next()],
|
||||
[{ done: false, value: 1 }, { done: false, value: 2 }, { done: true, value: undefined }]
|
||||
);
|
||||
|
||||
var iterator = getIterator(new Map([[1, 2], [3, 4]]));
|
||||
assert.deepEqual(
|
||||
[iterator.next(), iterator.next(), iterator.next()],
|
||||
[{ done: false, value: [1, 2] }, { done: false, value: [3, 4] }, { done: true, value: undefined }]
|
||||
);
|
||||
```
|
||||
|
||||
## Tests
|
||||
Simply clone the repo, `npm install`, and run `npm test`
|
||||
|
||||
[package-url]: https://npmjs.org/package/es-get-iterator
|
||||
[npm-version-svg]: https://versionbadg.es/ljharb/es-get-iterator.svg
|
||||
[deps-svg]: https://david-dm.org/ljharb/es-get-iterator.svg
|
||||
[deps-url]: https://david-dm.org/ljharb/es-get-iterator
|
||||
[dev-deps-svg]: https://david-dm.org/ljharb/es-get-iterator/dev-status.svg
|
||||
[dev-deps-url]: https://david-dm.org/ljharb/es-get-iterator#info=devDependencies
|
||||
[npm-badge-png]: https://nodei.co/npm/es-get-iterator.png?downloads=true&stars=true
|
||||
[license-image]: https://img.shields.io/npm/l/es-get-iterator.svg
|
||||
[license-url]: LICENSE
|
||||
[downloads-image]: https://img.shields.io/npm/dm/es-get-iterator.svg
|
||||
[downloads-url]: https://npm-stat.com/charts.html?package=es-get-iterator
|
||||
@@ -0,0 +1,82 @@
|
||||
# semver-diff
|
||||
|
||||
> Get the diff type of two [semver](https://github.com/npm/node-semver) versions: `0.0.1 0.0.2` → `patch`
|
||||
|
||||
## Install
|
||||
|
||||
```
|
||||
$ npm install semver-diff
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
```js
|
||||
import semverDiff from 'semver-diff';
|
||||
|
||||
semverDiff('1.1.1', '1.1.2');
|
||||
//=> 'patch'
|
||||
|
||||
semverDiff('1.1.1-foo', '1.1.2');
|
||||
//=> 'prepatch'
|
||||
|
||||
semverDiff('0.0.1', '1.0.0');
|
||||
//=> 'major'
|
||||
|
||||
semverDiff('0.0.1-foo', '1.0.0');
|
||||
//=> 'premajor'
|
||||
|
||||
semverDiff('0.0.1', '0.1.0');
|
||||
//=> 'minor'
|
||||
|
||||
semverDiff('0.0.1-foo', '0.1.0');
|
||||
//=> 'preminor'
|
||||
|
||||
semverDiff('0.0.1-foo', '0.0.1-foo.bar');
|
||||
//=> 'prerelease'
|
||||
|
||||
semverDiff('0.1.0', '0.1.0+foo');
|
||||
//=> 'build'
|
||||
|
||||
semverDiff('0.0.1', '0.0.1');
|
||||
//=> undefined
|
||||
|
||||
semverDiff('0.0.2', '0.0.1');
|
||||
//=> undefined
|
||||
```
|
||||
|
||||
## API
|
||||
|
||||
### semverDiff(versionA, versionB)
|
||||
|
||||
Returns the difference type between two semver versions, or `undefined` if they are identical or the second one is lower than the first.
|
||||
|
||||
Possible values:
|
||||
|
||||
- `'major'`,
|
||||
- `'premajor'`,
|
||||
- `'minor'`,
|
||||
- `'preminor'`,
|
||||
- `'patch'`,
|
||||
- `'prepatch'`,
|
||||
- `'prerelease'`,
|
||||
- `'build'`,
|
||||
- `undefined`
|
||||
|
||||
## Related
|
||||
|
||||
- [latest-semver](https://github.com/sindresorhus/latest-semver) - Get the latest stable semver version from an array of versions
|
||||
- [to-semver](https://github.com/sindresorhus/to-semver) - Get an array of valid, sorted, and cleaned semver versions from an array of strings
|
||||
- [semver-regex](https://github.com/sindresorhus/semver-regex) - Regular expression for matching semver versions
|
||||
- [semver-truncate](https://github.com/sindresorhus/semver-truncate) - Truncate a semver version: `1.2.3` → `1.2.0`
|
||||
|
||||
---
|
||||
|
||||
<div align="center">
|
||||
<b>
|
||||
<a href="https://tidelift.com/subscription/pkg/npm-semver-diff?utm_source=npm-semver-diff&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a>
|
||||
</b>
|
||||
<br>
|
||||
<sub>
|
||||
Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
|
||||
</sub>
|
||||
</div>
|
||||
@@ -0,0 +1,2 @@
|
||||
if(typeof cptable === 'undefined') cptable = {};
|
||||
cptable[20273] = (function(){ var d = "\u0002\u0003\t\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013
\b\u0018\u0019\u001c\u001d\u001e\u001f\n\u0017\u001b\u0005\u0006\u0007\u0016\u0004\u0014\u0015\u001a â{àáãåçñÄ.<(+!&éêëèíîïì~Ü$*);^-/Â[ÀÁÃÅÇÑö,%_>?øÉÊËÈÍÎÏÌ`:#§'=\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µßstuvwxyz¡¿ÐÝÞ®¢£¥·©@¶¼½¾¬|¯¨´×äABCDEFGHIô¦òóõüJKLMNOPQR¹û}ùúÿÖ÷STUVWXYZ²Ô\\ÒÓÕ0123456789³Û]ÙÚ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })();
|
||||
@@ -0,0 +1,22 @@
|
||||
var createMathOperation = require('./_createMathOperation');
|
||||
|
||||
/**
|
||||
* Subtract two numbers.
|
||||
*
|
||||
* @static
|
||||
* @memberOf _
|
||||
* @since 4.0.0
|
||||
* @category Math
|
||||
* @param {number} minuend The first number in a subtraction.
|
||||
* @param {number} subtrahend The second number in a subtraction.
|
||||
* @returns {number} Returns the difference.
|
||||
* @example
|
||||
*
|
||||
* _.subtract(6, 4);
|
||||
* // => 2
|
||||
*/
|
||||
var subtract = createMathOperation(function(minuend, subtrahend) {
|
||||
return minuend - subtrahend;
|
||||
}, 0);
|
||||
|
||||
module.exports = subtract;
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"LookupSupportedLocales.d.ts","sourceRoot":"","sources":["../../../../../../../packages/intl-localematcher/abstract/LookupSupportedLocales.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,EAC7B,gBAAgB,EAAE,MAAM,EAAE,YAiB3B"}
|
||||
@@ -0,0 +1,7 @@
|
||||
import { MonoTypeOperatorFunction, SchedulerLike, OperatorFunction, ValueFromArray } from '../types';
|
||||
/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `concatAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */
|
||||
export declare function endWith<T>(scheduler: SchedulerLike): MonoTypeOperatorFunction<T>;
|
||||
/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `concatAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */
|
||||
export declare function endWith<T, A extends unknown[] = T[]>(...valuesAndScheduler: [...A, SchedulerLike]): OperatorFunction<T, T | ValueFromArray<A>>;
|
||||
export declare function endWith<T, A extends unknown[] = T[]>(...values: A): OperatorFunction<T, T | ValueFromArray<A>>;
|
||||
//# sourceMappingURL=endWith.d.ts.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"AjaxResponse.js","sourceRoot":"","sources":["../../../../src/internal/ajax/AjaxResponse.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAgBlD;IA+CE,sBAIkB,aAA4B,EAM5B,GAAmB,EAInB,OAAoB,EAcpB,IAAwC;QAAxC,qBAAA,EAAA,sBAAwC;QAxBxC,kBAAa,GAAb,aAAa,CAAe;QAM5B,QAAG,GAAH,GAAG,CAAgB;QAInB,YAAO,GAAP,OAAO,CAAa;QAcpB,SAAI,GAAJ,IAAI,CAAoC;QAEhD,IAAA,MAAM,GAAmB,GAAG,OAAtB,EAAE,YAAY,GAAK,GAAG,aAAR,CAAS;QACrC,IAAI,CAAC,MAAM,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,YAAY,GAAG,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,EAAE,CAAC;QASvC,IAAM,UAAU,GAAG,GAAG,CAAC,qBAAqB,EAAE,CAAC;QAC/C,IAAI,CAAC,eAAe,GAAG,UAAU;YAC/B,CAAC;gBACC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,UAAC,OAA+B,EAAE,IAAI;oBAIlE,IAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBACjC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;oBACtD,OAAO,OAAO,CAAC;gBACjB,CAAC,EAAE,EAAE,CAAC;YACR,CAAC,CAAC,EAAE,CAAC;QAEP,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAA,MAAM,GAAY,aAAa,OAAzB,EAAE,KAAK,GAAK,aAAa,MAAlB,CAAmB;QACxC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IACH,mBAAC;AAAD,CAAC,AA1GD,IA0GC"}
|
||||
@@ -0,0 +1,16 @@
|
||||
var Stream = require('stream');
|
||||
if (process.env.READABLE_STREAM === 'disable' && Stream) {
|
||||
module.exports = Stream.Readable;
|
||||
Object.assign(module.exports, Stream);
|
||||
module.exports.Stream = Stream;
|
||||
} else {
|
||||
exports = module.exports = require('./lib/_stream_readable.js');
|
||||
exports.Stream = Stream || exports;
|
||||
exports.Readable = exports;
|
||||
exports.Writable = require('./lib/_stream_writable.js');
|
||||
exports.Duplex = require('./lib/_stream_duplex.js');
|
||||
exports.Transform = require('./lib/_stream_transform.js');
|
||||
exports.PassThrough = require('./lib/_stream_passthrough.js');
|
||||
exports.finished = require('./lib/internal/streams/end-of-stream.js');
|
||||
exports.pipeline = require('./lib/internal/streams/pipeline.js');
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
define(['exports', './decorators/inline'], function (exports, _decoratorsInline) {
|
||||
'use strict';
|
||||
|
||||
exports.__esModule = true;
|
||||
exports.registerDefaultDecorators = registerDefaultDecorators;
|
||||
// istanbul ignore next
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
|
||||
|
||||
var _registerInline = _interopRequireDefault(_decoratorsInline);
|
||||
|
||||
function registerDefaultDecorators(instance) {
|
||||
_registerInline['default'](instance);
|
||||
}
|
||||
});
|
||||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFFTyxXQUFTLHlCQUF5QixDQUFDLFFBQVEsRUFBRTtBQUNsRCwrQkFBZSxRQUFRLENBQUMsQ0FBQztHQUMxQiIsImZpbGUiOiJkZWNvcmF0b3JzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlZ2lzdGVySW5saW5lIGZyb20gJy4vZGVjb3JhdG9ycy9pbmxpbmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJEZWZhdWx0RGVjb3JhdG9ycyhpbnN0YW5jZSkge1xuICByZWdpc3RlcklubGluZShpbnN0YW5jZSk7XG59XG4iXX0=
|
||||
@@ -0,0 +1,6 @@
|
||||
import { combineLatest } from '../observable/combineLatest';
|
||||
import { joinAllInternals } from './joinAllInternals';
|
||||
export function combineLatestAll(project) {
|
||||
return joinAllInternals(combineLatest, project);
|
||||
}
|
||||
//# sourceMappingURL=combineLatestAll.js.map
|
||||
@@ -0,0 +1,3 @@
|
||||
# Intl MessageFormat
|
||||
|
||||
We've migrated the docs to https://formatjs.io/docs/intl-messageformat.
|
||||
@@ -0,0 +1,74 @@
|
||||
var arrayEach = require('./_arrayEach'),
|
||||
arrayPush = require('./_arrayPush'),
|
||||
baseFunctions = require('./_baseFunctions'),
|
||||
copyArray = require('./_copyArray'),
|
||||
isFunction = require('./isFunction'),
|
||||
isObject = require('./isObject'),
|
||||
keys = require('./keys');
|
||||
|
||||
/**
|
||||
* Adds all own enumerable string keyed function properties of a source
|
||||
* object to the destination object. If `object` is a function, then methods
|
||||
* are added to its prototype as well.
|
||||
*
|
||||
* **Note:** Use `_.runInContext` to create a pristine `lodash` function to
|
||||
* avoid conflicts caused by modifying the original.
|
||||
*
|
||||
* @static
|
||||
* @since 0.1.0
|
||||
* @memberOf _
|
||||
* @category Util
|
||||
* @param {Function|Object} [object=lodash] The destination object.
|
||||
* @param {Object} source The object of functions to add.
|
||||
* @param {Object} [options={}] The options object.
|
||||
* @param {boolean} [options.chain=true] Specify whether mixins are chainable.
|
||||
* @returns {Function|Object} Returns `object`.
|
||||
* @example
|
||||
*
|
||||
* function vowels(string) {
|
||||
* return _.filter(string, function(v) {
|
||||
* return /[aeiou]/i.test(v);
|
||||
* });
|
||||
* }
|
||||
*
|
||||
* _.mixin({ 'vowels': vowels });
|
||||
* _.vowels('fred');
|
||||
* // => ['e']
|
||||
*
|
||||
* _('fred').vowels().value();
|
||||
* // => ['e']
|
||||
*
|
||||
* _.mixin({ 'vowels': vowels }, { 'chain': false });
|
||||
* _('fred').vowels();
|
||||
* // => ['e']
|
||||
*/
|
||||
function mixin(object, source, options) {
|
||||
var props = keys(source),
|
||||
methodNames = baseFunctions(source, props);
|
||||
|
||||
var chain = !(isObject(options) && 'chain' in options) || !!options.chain,
|
||||
isFunc = isFunction(object);
|
||||
|
||||
arrayEach(methodNames, function(methodName) {
|
||||
var func = source[methodName];
|
||||
object[methodName] = func;
|
||||
if (isFunc) {
|
||||
object.prototype[methodName] = function() {
|
||||
var chainAll = this.__chain__;
|
||||
if (chain || chainAll) {
|
||||
var result = object(this.__wrapped__),
|
||||
actions = result.__actions__ = copyArray(this.__actions__);
|
||||
|
||||
actions.push({ 'func': func, 'args': arguments, 'thisArg': object });
|
||||
result.__chain__ = chainAll;
|
||||
return result;
|
||||
}
|
||||
return func.apply(object, arrayPush([this.value()], arguments));
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
return object;
|
||||
}
|
||||
|
||||
module.exports = mixin;
|
||||
@@ -0,0 +1,21 @@
|
||||
"use strict";
|
||||
|
||||
var toArray = require("es5-ext/array/to-array")
|
||||
, isValue = require("es5-ext/object/is-value")
|
||||
, callable = require("es5-ext/object/valid-callable");
|
||||
|
||||
var slice = Array.prototype.slice, resolveArgs;
|
||||
|
||||
resolveArgs = function (args) {
|
||||
return this.map(function (resolve, i) {
|
||||
return resolve ? resolve(args[i]) : args[i];
|
||||
}).concat(slice.call(args, this.length));
|
||||
};
|
||||
|
||||
module.exports = function (resolvers) {
|
||||
resolvers = toArray(resolvers);
|
||||
resolvers.forEach(function (resolve) {
|
||||
if (isValue(resolve)) callable(resolve);
|
||||
});
|
||||
return resolveArgs.bind(resolvers);
|
||||
};
|
||||
@@ -0,0 +1,4 @@
|
||||
export { A as Alias, C as Collection, M as Merge, N as Node, P as Pair, S as Scalar, d as YAMLMap, Y as YAMLSeq, b as binaryOptions, a as boolOptions, i as intOptions, n as nullOptions, s as strOptions } from './resolveSeq-492ab440.js';
|
||||
export { S as Schema } from './Schema-e94716c8.js';
|
||||
import './PlainValue-b8036b75.js';
|
||||
import './warnings-df54cb69.js';
|
||||
@@ -0,0 +1,421 @@
|
||||
import { ToRawFixed } from './ToRawFixed';
|
||||
import { digitMapping } from './digit-mapping.generated';
|
||||
import { S_UNICODE_REGEX } from '../regex.generated';
|
||||
// This is from: unicode-12.1.0/General_Category/Symbol/regex.js
|
||||
// IE11 does not support unicode flag, otherwise this is just /\p{S}/u.
|
||||
// /^\p{S}/u
|
||||
var CARET_S_UNICODE_REGEX = new RegExp("^".concat(S_UNICODE_REGEX.source));
|
||||
// /\p{S}$/u
|
||||
var S_DOLLAR_UNICODE_REGEX = new RegExp("".concat(S_UNICODE_REGEX.source, "$"));
|
||||
var CLDR_NUMBER_PATTERN = /[#0](?:[\.,][#0]+)*/g;
|
||||
export default function formatToParts(numberResult, data, pl, options) {
|
||||
var sign = numberResult.sign, exponent = numberResult.exponent, magnitude = numberResult.magnitude;
|
||||
var notation = options.notation, style = options.style, numberingSystem = options.numberingSystem;
|
||||
var defaultNumberingSystem = data.numbers.nu[0];
|
||||
// #region Part 1: partition and interpolate the CLDR number pattern.
|
||||
// ----------------------------------------------------------
|
||||
var compactNumberPattern = null;
|
||||
if (notation === 'compact' && magnitude) {
|
||||
compactNumberPattern = getCompactDisplayPattern(numberResult, pl, data, style, options.compactDisplay, options.currencyDisplay, numberingSystem);
|
||||
}
|
||||
// This is used multiple times
|
||||
var nonNameCurrencyPart;
|
||||
if (style === 'currency' && options.currencyDisplay !== 'name') {
|
||||
var byCurrencyDisplay = data.currencies[options.currency];
|
||||
if (byCurrencyDisplay) {
|
||||
switch (options.currencyDisplay) {
|
||||
case 'code':
|
||||
nonNameCurrencyPart = options.currency;
|
||||
break;
|
||||
case 'symbol':
|
||||
nonNameCurrencyPart = byCurrencyDisplay.symbol;
|
||||
break;
|
||||
default:
|
||||
nonNameCurrencyPart = byCurrencyDisplay.narrow;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Fallback for unknown currency
|
||||
nonNameCurrencyPart = options.currency;
|
||||
}
|
||||
}
|
||||
var numberPattern;
|
||||
if (!compactNumberPattern) {
|
||||
// Note: if the style is unit, or is currency and the currency display is name,
|
||||
// its unit parts will be interpolated in part 2. So here we can fallback to decimal.
|
||||
if (style === 'decimal' ||
|
||||
style === 'unit' ||
|
||||
(style === 'currency' && options.currencyDisplay === 'name')) {
|
||||
// Shortcut for decimal
|
||||
var decimalData = data.numbers.decimal[numberingSystem] ||
|
||||
data.numbers.decimal[defaultNumberingSystem];
|
||||
numberPattern = getPatternForSign(decimalData.standard, sign);
|
||||
}
|
||||
else if (style === 'currency') {
|
||||
var currencyData = data.numbers.currency[numberingSystem] ||
|
||||
data.numbers.currency[defaultNumberingSystem];
|
||||
// We replace number pattern part with `0` for easier postprocessing.
|
||||
numberPattern = getPatternForSign(currencyData[options.currencySign], sign);
|
||||
}
|
||||
else {
|
||||
// percent
|
||||
var percentPattern = data.numbers.percent[numberingSystem] ||
|
||||
data.numbers.percent[defaultNumberingSystem];
|
||||
numberPattern = getPatternForSign(percentPattern, sign);
|
||||
}
|
||||
}
|
||||
else {
|
||||
numberPattern = compactNumberPattern;
|
||||
}
|
||||
// Extract the decimal number pattern string. It looks like "#,##0,00", which will later be
|
||||
// used to infer decimal group sizes.
|
||||
var decimalNumberPattern = CLDR_NUMBER_PATTERN.exec(numberPattern)[0];
|
||||
// Now we start to substitute patterns
|
||||
// 1. replace strings like `0` and `#,##0.00` with `{0}`
|
||||
// 2. unquote characters (invariant: the quoted characters does not contain the special tokens)
|
||||
numberPattern = numberPattern
|
||||
.replace(CLDR_NUMBER_PATTERN, '{0}')
|
||||
.replace(/'(.)'/g, '$1');
|
||||
// Handle currency spacing (both compact and non-compact).
|
||||
if (style === 'currency' && options.currencyDisplay !== 'name') {
|
||||
var currencyData = data.numbers.currency[numberingSystem] ||
|
||||
data.numbers.currency[defaultNumberingSystem];
|
||||
// See `currencySpacing` substitution rule in TR-35.
|
||||
// Here we always assume the currencyMatch is "[:^S:]" and surroundingMatch is "[:digit:]".
|
||||
//
|
||||
// Example 1: for pattern "#,##0.00¤" with symbol "US$", we replace "¤" with the symbol,
|
||||
// but insert an extra non-break space before the symbol, because "[:^S:]" matches "U" in
|
||||
// "US$" and "[:digit:]" matches the latn numbering system digits.
|
||||
//
|
||||
// Example 2: for pattern "¤#,##0.00" with symbol "US$", there is no spacing between symbol
|
||||
// and number, because `$` does not match "[:^S:]".
|
||||
//
|
||||
// Implementation note: here we do the best effort to infer the insertion.
|
||||
// We also assume that `beforeInsertBetween` and `afterInsertBetween` will never be `;`.
|
||||
var afterCurrency = currencyData.currencySpacing.afterInsertBetween;
|
||||
if (afterCurrency && !S_DOLLAR_UNICODE_REGEX.test(nonNameCurrencyPart)) {
|
||||
numberPattern = numberPattern.replace('¤{0}', "\u00A4".concat(afterCurrency, "{0}"));
|
||||
}
|
||||
var beforeCurrency = currencyData.currencySpacing.beforeInsertBetween;
|
||||
if (beforeCurrency && !CARET_S_UNICODE_REGEX.test(nonNameCurrencyPart)) {
|
||||
numberPattern = numberPattern.replace('{0}¤', "{0}".concat(beforeCurrency, "\u00A4"));
|
||||
}
|
||||
}
|
||||
// The following tokens are special: `{0}`, `¤`, `%`, `-`, `+`, `{c:...}.
|
||||
var numberPatternParts = numberPattern.split(/({c:[^}]+}|\{0\}|[¤%\-\+])/g);
|
||||
var numberParts = [];
|
||||
var symbols = data.numbers.symbols[numberingSystem] ||
|
||||
data.numbers.symbols[defaultNumberingSystem];
|
||||
for (var _i = 0, numberPatternParts_1 = numberPatternParts; _i < numberPatternParts_1.length; _i++) {
|
||||
var part = numberPatternParts_1[_i];
|
||||
if (!part) {
|
||||
continue;
|
||||
}
|
||||
switch (part) {
|
||||
case '{0}': {
|
||||
// We only need to handle scientific and engineering notation here.
|
||||
numberParts.push.apply(numberParts, paritionNumberIntoParts(symbols, numberResult, notation, exponent, numberingSystem,
|
||||
// If compact number pattern exists, do not insert group separators.
|
||||
!compactNumberPattern && options.useGrouping, decimalNumberPattern));
|
||||
break;
|
||||
}
|
||||
case '-':
|
||||
numberParts.push({ type: 'minusSign', value: symbols.minusSign });
|
||||
break;
|
||||
case '+':
|
||||
numberParts.push({ type: 'plusSign', value: symbols.plusSign });
|
||||
break;
|
||||
case '%':
|
||||
numberParts.push({ type: 'percentSign', value: symbols.percentSign });
|
||||
break;
|
||||
case '¤':
|
||||
// Computed above when handling currency spacing.
|
||||
numberParts.push({ type: 'currency', value: nonNameCurrencyPart });
|
||||
break;
|
||||
default:
|
||||
if (/^\{c:/.test(part)) {
|
||||
numberParts.push({
|
||||
type: 'compact',
|
||||
value: part.substring(3, part.length - 1),
|
||||
});
|
||||
}
|
||||
else {
|
||||
// literal
|
||||
numberParts.push({ type: 'literal', value: part });
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
// #endregion
|
||||
// #region Part 2: interpolate unit pattern if necessary.
|
||||
// ----------------------------------------------
|
||||
switch (style) {
|
||||
case 'currency': {
|
||||
// `currencyDisplay: 'name'` has similar pattern handling as units.
|
||||
if (options.currencyDisplay === 'name') {
|
||||
var unitPattern = (data.numbers.currency[numberingSystem] ||
|
||||
data.numbers.currency[defaultNumberingSystem]).unitPattern;
|
||||
// Select plural
|
||||
var unitName = void 0;
|
||||
var currencyNameData = data.currencies[options.currency];
|
||||
if (currencyNameData) {
|
||||
unitName = selectPlural(pl, numberResult.roundedNumber * Math.pow(10, exponent), currencyNameData.displayName);
|
||||
}
|
||||
else {
|
||||
// Fallback for unknown currency
|
||||
unitName = options.currency;
|
||||
}
|
||||
// Do {0} and {1} substitution
|
||||
var unitPatternParts = unitPattern.split(/(\{[01]\})/g);
|
||||
var result = [];
|
||||
for (var _a = 0, unitPatternParts_1 = unitPatternParts; _a < unitPatternParts_1.length; _a++) {
|
||||
var part = unitPatternParts_1[_a];
|
||||
switch (part) {
|
||||
case '{0}':
|
||||
result.push.apply(result, numberParts);
|
||||
break;
|
||||
case '{1}':
|
||||
result.push({ type: 'currency', value: unitName });
|
||||
break;
|
||||
default:
|
||||
if (part) {
|
||||
result.push({ type: 'literal', value: part });
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
else {
|
||||
return numberParts;
|
||||
}
|
||||
}
|
||||
case 'unit': {
|
||||
var unit = options.unit, unitDisplay = options.unitDisplay;
|
||||
var unitData = data.units.simple[unit];
|
||||
var unitPattern = void 0;
|
||||
if (unitData) {
|
||||
// Simple unit pattern
|
||||
unitPattern = selectPlural(pl, numberResult.roundedNumber * Math.pow(10, exponent), data.units.simple[unit][unitDisplay]);
|
||||
}
|
||||
else {
|
||||
// See: http://unicode.org/reports/tr35/tr35-general.html#perUnitPatterns
|
||||
// If cannot find unit in the simple pattern, it must be "per" compound pattern.
|
||||
// Implementation note: we are not following TR-35 here because we need to format to parts!
|
||||
var _b = unit.split('-per-'), numeratorUnit = _b[0], denominatorUnit = _b[1];
|
||||
unitData = data.units.simple[numeratorUnit];
|
||||
var numeratorUnitPattern = selectPlural(pl, numberResult.roundedNumber * Math.pow(10, exponent), data.units.simple[numeratorUnit][unitDisplay]);
|
||||
var perUnitPattern = data.units.simple[denominatorUnit].perUnit[unitDisplay];
|
||||
if (perUnitPattern) {
|
||||
// perUnitPattern exists, combine it with numeratorUnitPattern
|
||||
unitPattern = perUnitPattern.replace('{0}', numeratorUnitPattern);
|
||||
}
|
||||
else {
|
||||
// get compoundUnit pattern (e.g. "{0} per {1}"), repalce {0} with numerator pattern and {1} with
|
||||
// the denominator pattern in singular form.
|
||||
var perPattern = data.units.compound.per[unitDisplay];
|
||||
var denominatorPattern = selectPlural(pl, 1, data.units.simple[denominatorUnit][unitDisplay]);
|
||||
unitPattern = unitPattern = perPattern
|
||||
.replace('{0}', numeratorUnitPattern)
|
||||
.replace('{1}', denominatorPattern.replace('{0}', ''));
|
||||
}
|
||||
}
|
||||
var result = [];
|
||||
// We need spacing around "{0}" because they are not treated as "unit" parts, but "literal".
|
||||
for (var _c = 0, _d = unitPattern.split(/(\s*\{0\}\s*)/); _c < _d.length; _c++) {
|
||||
var part = _d[_c];
|
||||
var interpolateMatch = /^(\s*)\{0\}(\s*)$/.exec(part);
|
||||
if (interpolateMatch) {
|
||||
// Space before "{0}"
|
||||
if (interpolateMatch[1]) {
|
||||
result.push({ type: 'literal', value: interpolateMatch[1] });
|
||||
}
|
||||
// "{0}" itself
|
||||
result.push.apply(result, numberParts);
|
||||
// Space after "{0}"
|
||||
if (interpolateMatch[2]) {
|
||||
result.push({ type: 'literal', value: interpolateMatch[2] });
|
||||
}
|
||||
}
|
||||
else if (part) {
|
||||
result.push({ type: 'unit', value: part });
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
default:
|
||||
return numberParts;
|
||||
}
|
||||
// #endregion
|
||||
}
|
||||
// A subset of https://tc39.es/ecma402/#sec-partitionnotationsubpattern
|
||||
// Plus the exponent parts handling.
|
||||
function paritionNumberIntoParts(symbols, numberResult, notation, exponent, numberingSystem, useGrouping,
|
||||
/**
|
||||
* This is the decimal number pattern without signs or symbols.
|
||||
* It is used to infer the group size when `useGrouping` is true.
|
||||
*
|
||||
* A typical value looks like "#,##0.00" (primary group size is 3).
|
||||
* Some locales like Hindi has secondary group size of 2 (e.g. "#,##,##0.00").
|
||||
*/
|
||||
decimalNumberPattern) {
|
||||
var result = [];
|
||||
// eslint-disable-next-line prefer-const
|
||||
var n = numberResult.formattedString, x = numberResult.roundedNumber;
|
||||
if (isNaN(x)) {
|
||||
return [{ type: 'nan', value: n }];
|
||||
}
|
||||
else if (!isFinite(x)) {
|
||||
return [{ type: 'infinity', value: n }];
|
||||
}
|
||||
var digitReplacementTable = digitMapping[numberingSystem];
|
||||
if (digitReplacementTable) {
|
||||
n = n.replace(/\d/g, function (digit) { return digitReplacementTable[+digit] || digit; });
|
||||
}
|
||||
// TODO: Else use an implementation dependent algorithm to map n to the appropriate
|
||||
// representation of n in the given numbering system.
|
||||
var decimalSepIndex = n.indexOf('.');
|
||||
var integer;
|
||||
var fraction;
|
||||
if (decimalSepIndex > 0) {
|
||||
integer = n.slice(0, decimalSepIndex);
|
||||
fraction = n.slice(decimalSepIndex + 1);
|
||||
}
|
||||
else {
|
||||
integer = n;
|
||||
}
|
||||
// #region Grouping integer digits
|
||||
// The weird compact and x >= 10000 check is to ensure consistency with Node.js and Chrome.
|
||||
// Note that `de` does not have compact form for thousands, but Node.js does not insert grouping separator
|
||||
// unless the rounded number is greater than 10000:
|
||||
// NumberFormat('de', {notation: 'compact', compactDisplay: 'short'}).format(1234) //=> "1234"
|
||||
// NumberFormat('de').format(1234) //=> "1.234"
|
||||
if (useGrouping && (notation !== 'compact' || x >= 10000)) {
|
||||
var groupSepSymbol = symbols.group;
|
||||
var groups = [];
|
||||
// > There may be two different grouping sizes: The primary grouping size used for the least
|
||||
// > significant integer group, and the secondary grouping size used for more significant groups.
|
||||
// > If a pattern contains multiple grouping separators, the interval between the last one and the
|
||||
// > end of the integer defines the primary grouping size, and the interval between the last two
|
||||
// > defines the secondary grouping size. All others are ignored.
|
||||
var integerNumberPattern = decimalNumberPattern.split('.')[0];
|
||||
var patternGroups = integerNumberPattern.split(',');
|
||||
var primaryGroupingSize = 3;
|
||||
var secondaryGroupingSize = 3;
|
||||
if (patternGroups.length > 1) {
|
||||
primaryGroupingSize = patternGroups[patternGroups.length - 1].length;
|
||||
}
|
||||
if (patternGroups.length > 2) {
|
||||
secondaryGroupingSize = patternGroups[patternGroups.length - 2].length;
|
||||
}
|
||||
var i = integer.length - primaryGroupingSize;
|
||||
if (i > 0) {
|
||||
// Slice the least significant integer group
|
||||
groups.push(integer.slice(i, i + primaryGroupingSize));
|
||||
// Then iteratively push the more signicant groups
|
||||
// TODO: handle surrogate pairs in some numbering system digits
|
||||
for (i -= secondaryGroupingSize; i > 0; i -= secondaryGroupingSize) {
|
||||
groups.push(integer.slice(i, i + secondaryGroupingSize));
|
||||
}
|
||||
groups.push(integer.slice(0, i + secondaryGroupingSize));
|
||||
}
|
||||
else {
|
||||
groups.push(integer);
|
||||
}
|
||||
while (groups.length > 0) {
|
||||
var integerGroup = groups.pop();
|
||||
result.push({ type: 'integer', value: integerGroup });
|
||||
if (groups.length > 0) {
|
||||
result.push({ type: 'group', value: groupSepSymbol });
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
result.push({ type: 'integer', value: integer });
|
||||
}
|
||||
// #endregion
|
||||
if (fraction !== undefined) {
|
||||
result.push({ type: 'decimal', value: symbols.decimal }, { type: 'fraction', value: fraction });
|
||||
}
|
||||
if ((notation === 'scientific' || notation === 'engineering') &&
|
||||
isFinite(x)) {
|
||||
result.push({ type: 'exponentSeparator', value: symbols.exponential });
|
||||
if (exponent < 0) {
|
||||
result.push({ type: 'exponentMinusSign', value: symbols.minusSign });
|
||||
exponent = -exponent;
|
||||
}
|
||||
var exponentResult = ToRawFixed(exponent, 0, 0);
|
||||
result.push({
|
||||
type: 'exponentInteger',
|
||||
value: exponentResult.formattedString,
|
||||
});
|
||||
}
|
||||
return result;
|
||||
}
|
||||
function getPatternForSign(pattern, sign) {
|
||||
if (pattern.indexOf(';') < 0) {
|
||||
pattern = "".concat(pattern, ";-").concat(pattern);
|
||||
}
|
||||
var _a = pattern.split(';'), zeroPattern = _a[0], negativePattern = _a[1];
|
||||
switch (sign) {
|
||||
case 0:
|
||||
return zeroPattern;
|
||||
case -1:
|
||||
return negativePattern;
|
||||
default:
|
||||
return negativePattern.indexOf('-') >= 0
|
||||
? negativePattern.replace(/-/g, '+')
|
||||
: "+".concat(zeroPattern);
|
||||
}
|
||||
}
|
||||
// Find the CLDR pattern for compact notation based on the magnitude of data and style.
|
||||
//
|
||||
// Example return value: "¤ {c:laki}000;¤{c:laki} -0" (`sw` locale):
|
||||
// - Notice the `{c:...}` token that wraps the compact literal.
|
||||
// - The consecutive zeros are normalized to single zero to match CLDR_NUMBER_PATTERN.
|
||||
//
|
||||
// Returning null means the compact display pattern cannot be found.
|
||||
function getCompactDisplayPattern(numberResult, pl, data, style, compactDisplay, currencyDisplay, numberingSystem) {
|
||||
var _a;
|
||||
var roundedNumber = numberResult.roundedNumber, sign = numberResult.sign, magnitude = numberResult.magnitude;
|
||||
var magnitudeKey = String(Math.pow(10, magnitude));
|
||||
var defaultNumberingSystem = data.numbers.nu[0];
|
||||
var pattern;
|
||||
if (style === 'currency' && currencyDisplay !== 'name') {
|
||||
var byNumberingSystem = data.numbers.currency;
|
||||
var currencyData = byNumberingSystem[numberingSystem] ||
|
||||
byNumberingSystem[defaultNumberingSystem];
|
||||
// NOTE: compact notation ignores currencySign!
|
||||
var compactPluralRules = (_a = currencyData.short) === null || _a === void 0 ? void 0 : _a[magnitudeKey];
|
||||
if (!compactPluralRules) {
|
||||
return null;
|
||||
}
|
||||
pattern = selectPlural(pl, roundedNumber, compactPluralRules);
|
||||
}
|
||||
else {
|
||||
var byNumberingSystem = data.numbers.decimal;
|
||||
var byCompactDisplay = byNumberingSystem[numberingSystem] ||
|
||||
byNumberingSystem[defaultNumberingSystem];
|
||||
var compactPlaralRule = byCompactDisplay[compactDisplay][magnitudeKey];
|
||||
if (!compactPlaralRule) {
|
||||
return null;
|
||||
}
|
||||
pattern = selectPlural(pl, roundedNumber, compactPlaralRule);
|
||||
}
|
||||
// See https://unicode.org/reports/tr35/tr35-numbers.html#Compact_Number_Formats
|
||||
// > If the value is precisely “0”, either explicit or defaulted, then the normal number format
|
||||
// > pattern for that sort of object is supplied.
|
||||
if (pattern === '0') {
|
||||
return null;
|
||||
}
|
||||
pattern = getPatternForSign(pattern, sign)
|
||||
// Extract compact literal from the pattern
|
||||
.replace(/([^\s;\-\+\d¤]+)/g, '{c:$1}')
|
||||
// We replace one or more zeros with a single zero so it matches `CLDR_NUMBER_PATTERN`.
|
||||
.replace(/0+/, '0');
|
||||
return pattern;
|
||||
}
|
||||
function selectPlural(pl, x, rules) {
|
||||
return rules[pl.select(x)] || rules.other;
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
var convert = require('./convert'),
|
||||
func = convert('plant', require('../plant'), require('./_falseOptions'));
|
||||
|
||||
func.placeholder = require('./placeholder');
|
||||
module.exports = func;
|
||||
@@ -0,0 +1 @@
|
||||
module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L G EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D"},E:{"1":"J D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v HC zB IC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e qB AC TC rB","2":"F PC QC RC SC"},G:{"1":"cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC"},H:{"1":"oC"},I:{"1":"f tC uC","2":"tB I pC qC rC sC BC"},J:{"1":"D A"},K:{"1":"B C h qB AC rB","2":"A"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"meter element"};
|
||||
@@ -0,0 +1,10 @@
|
||||
'use strict'
|
||||
module.exports = value => {
|
||||
const date = new Date(value)
|
||||
/* istanbul ignore if */
|
||||
if (isNaN(date)) {
|
||||
throw new TypeError('Invalid Datetime')
|
||||
} else {
|
||||
return date
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"immediateProvider.js","sourceRoot":"","sources":["../../../../src/internal/scheduler/immediateProvider.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEtC,IAAA,YAAY,GAAqB,SAAS,aAA9B,EAAE,cAAc,GAAK,SAAS,eAAd,CAAe;AAgBnD,MAAM,CAAC,IAAM,iBAAiB,GAAsB;IAGlD,YAAY;QAAC,cAAO;aAAP,UAAO,EAAP,qBAAO,EAAP,IAAO;YAAP,yBAAO;;QACV,IAAA,QAAQ,GAAK,iBAAiB,SAAtB,CAAuB;QACvC,OAAO,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,YAAY,KAAI,YAAY,CAAC,wCAAI,IAAI,IAAE;IAC3D,CAAC;IACD,cAAc,EAAd,UAAe,MAAM;QACX,IAAA,QAAQ,GAAK,iBAAiB,SAAtB,CAAuB;QACvC,OAAO,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,cAAc,KAAI,cAAc,CAAC,CAAC,MAAa,CAAC,CAAC;IACrE,CAAC;IACD,QAAQ,EAAE,SAAS;CACpB,CAAC"}
|
||||
@@ -0,0 +1,26 @@
|
||||
import {DelimiterCasedProperties} from './delimiter-cased-properties';
|
||||
|
||||
/**
|
||||
Convert object properties to kebab case but not recursively.
|
||||
|
||||
This can be useful when, for example, converting some API types from a different style.
|
||||
|
||||
@see KebabCase
|
||||
@see KebabCasedPropertiesDeep
|
||||
|
||||
@example
|
||||
```
|
||||
interface User {
|
||||
userId: number;
|
||||
userName: string;
|
||||
}
|
||||
|
||||
const result: KebabCasedProperties<User> = {
|
||||
'user-id': 1,
|
||||
'user-name': 'Tom',
|
||||
};
|
||||
```
|
||||
|
||||
@category Template Literals
|
||||
*/
|
||||
export type KebabCasedProperties<Value> = DelimiterCasedProperties<Value, '-'>;
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,5 @@
|
||||
'use strict';
|
||||
|
||||
module.exports = function sign(number) {
|
||||
return number >= 0 ? 1 : -1;
|
||||
};
|
||||
@@ -0,0 +1 @@
|
||||
{"name":"whatwg-url","version":"5.0.0","files":{"package.json":{"checkedAt":1678883669949,"integrity":"sha512-9d1c+eoTFh8cd1XqRrspBfIP3sNm4+Omh5zhYiQNcYAvmZKo2kZkidum49vnYDqAr26hNnR7mCRSOrBVvcHxaQ==","mode":438,"size":886},"README.md":{"checkedAt":1678883669949,"integrity":"sha512-n8GTdVLrul59s9Gr4UbNLeuAiQDKeMuFBvRIay6YEz1CDfsodgh6DJnSW8+cxTXNVygEZ71FBRz+fANF6UHAjw==","mode":438,"size":5136},"LICENSE.txt":{"checkedAt":1678883669949,"integrity":"sha512-rkt6HfaFVoYAToPPXabowsgGiGsMm+dnexcV3eP8ibFICdkdtdHDlBWCJzAzOtTrghr9ef3pa7BVJvKhXOvH6g==","mode":438,"size":1088},"lib/URL-impl.js":{"checkedAt":1678883669949,"integrity":"sha512-/Zp1bFVUxvdfCcRwQQC9eV7Yd7qepAEmICHSMxUHAAXwJx5AbL5PGPEWOIfKrLd650eX6qp3Cn6Jrj7CccS+4w==","mode":438,"size":3804},"lib/URL.js":{"checkedAt":1678883669949,"integrity":"sha512-9ZR+exADE0S3UkhvyPo7ejO5sAx6UibZWB27G2N5TvOmLuEZ0oR2GLcSl0Tjta34HaL4uoVlWBAF8JcZKIORJw==","mode":438,"size":4212},"lib/public-api.js":{"checkedAt":1678883669949,"integrity":"sha512-xc7MKBeocI4/FyC3Do38OqKey+cczczYtbwfIX/3VCCJJpLDJpPLs+coauhSYaHAfO6L8A7kVARu7NanNdgREw==","mode":438,"size":625},"lib/url-state-machine.js":{"checkedAt":1678883669950,"integrity":"sha512-1oIM5e6vXlxTQcRXRWxmzqSwYh+TbifkjD9PJA1xRsA6vG+0SESaV6jJyGJsOrQGj/uiWV5vm3MzBanvUXQvKQ==","mode":438,"size":33573},"lib/utils.js":{"checkedAt":1678883669950,"integrity":"sha512-L+O3+dCD2Oft9xf5T6ya+dcmUxhDKhB3klOvmCmyj1t+94FCNNNNZzI+wPzSr2776/cwGg9q0VhgF4MVTkh/DQ==","mode":438,"size":562}}}
|
||||
@@ -0,0 +1,50 @@
|
||||
import {CamelCase} from './camel-case';
|
||||
|
||||
/**
|
||||
Convert object properties to camel case recursively.
|
||||
|
||||
This can be useful when, for example, converting some API types from a different style.
|
||||
|
||||
@see CamelCasedProperties
|
||||
@see CamelCase
|
||||
|
||||
@example
|
||||
```
|
||||
interface User {
|
||||
UserId: number;
|
||||
UserName: string;
|
||||
}
|
||||
|
||||
interface UserWithFriends {
|
||||
UserInfo: User;
|
||||
UserFriends: User[];
|
||||
}
|
||||
|
||||
const result: CamelCasedPropertiesDeep<UserWithFriends> = {
|
||||
userInfo: {
|
||||
userId: 1,
|
||||
userName: 'Tom',
|
||||
},
|
||||
userFriends: [
|
||||
{
|
||||
userId: 2,
|
||||
userName: 'Jerry',
|
||||
},
|
||||
{
|
||||
userId: 3,
|
||||
userName: 'Spike',
|
||||
},
|
||||
],
|
||||
};
|
||||
```
|
||||
|
||||
@category Template Literals
|
||||
*/
|
||||
export type CamelCasedPropertiesDeep<Value> = Value extends Function
|
||||
? Value
|
||||
: Value extends Array<infer U>
|
||||
? Array<CamelCasedPropertiesDeep<U>>
|
||||
: Value extends Set<infer U>
|
||||
? Set<CamelCasedPropertiesDeep<U>> : {
|
||||
[K in keyof Value as CamelCase<K>]: CamelCasedPropertiesDeep<Value[K]>;
|
||||
};
|
||||
@@ -0,0 +1,28 @@
|
||||
var baseGetTag = require('./_baseGetTag'),
|
||||
isObjectLike = require('./isObjectLike');
|
||||
|
||||
/** `Object#toString` result references. */
|
||||
var weakSetTag = '[object WeakSet]';
|
||||
|
||||
/**
|
||||
* Checks if `value` is classified as a `WeakSet` object.
|
||||
*
|
||||
* @static
|
||||
* @memberOf _
|
||||
* @since 4.3.0
|
||||
* @category Lang
|
||||
* @param {*} value The value to check.
|
||||
* @returns {boolean} Returns `true` if `value` is a weak set, else `false`.
|
||||
* @example
|
||||
*
|
||||
* _.isWeakSet(new WeakSet);
|
||||
* // => true
|
||||
*
|
||||
* _.isWeakSet(new Set);
|
||||
* // => false
|
||||
*/
|
||||
function isWeakSet(value) {
|
||||
return isObjectLike(value) && baseGetTag(value) == weakSetTag;
|
||||
}
|
||||
|
||||
module.exports = isWeakSet;
|
||||
@@ -0,0 +1,60 @@
|
||||
<h1>
|
||||
<img src="logo.jpg" width="1280" alt="escape-goat">
|
||||
</h1>
|
||||
|
||||
> Escape a string for use in HTML or the inverse
|
||||
|
||||
## Install
|
||||
|
||||
```
|
||||
$ npm install escape-goat
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
```js
|
||||
import {htmlEscape, htmlUnescape} from 'escape-goat';
|
||||
|
||||
htmlEscape('🦄 & 🐐');
|
||||
//=> '🦄 & 🐐'
|
||||
|
||||
htmlUnescape('🦄 & 🐐');
|
||||
//=> '🦄 & 🐐'
|
||||
|
||||
htmlEscape('Hello <em>World</em>');
|
||||
//=> 'Hello <em>World</em>'
|
||||
|
||||
const url = 'https://sindresorhus.com?x="🦄"';
|
||||
|
||||
htmlEscape`<a href="${url}">Unicorn</a>`;
|
||||
//=> '<a href="https://sindresorhus.com?x="🦄"">Unicorn</a>'
|
||||
|
||||
const escapedUrl = 'https://sindresorhus.com?x="🦄"';
|
||||
|
||||
htmlUnescape`URL from HTML: ${escapedUrl}`;
|
||||
//=> 'URL from HTML: https://sindresorhus.com?x="🦄"'
|
||||
```
|
||||
|
||||
## API
|
||||
|
||||
### htmlEscape(string)
|
||||
|
||||
Escapes the following characters in the given `string` argument: `&` `<` `>` `"` `'`
|
||||
|
||||
The function also works as a [tagged template literal](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Template_literals#Tagged_template_literals) that escapes interpolated values.
|
||||
|
||||
### htmlUnescape(htmlString)
|
||||
|
||||
Unescapes the following HTML entities in the given `htmlString` argument: `&` `<` `>` `"` `'`
|
||||
|
||||
The function also works as a [tagged template literal](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Template_literals#Tagged_template_literals) that unescapes interpolated values.
|
||||
|
||||
## Tip
|
||||
|
||||
Ensure you always quote your HTML attributes to prevent possible [XSS](https://en.wikipedia.org/wiki/Cross-site_scripting).
|
||||
|
||||
## FAQ
|
||||
|
||||
### Why yet another HTML escaping package?
|
||||
|
||||
I couldn't find one I liked that was tiny, well-tested, and had both escape and unescape methods.
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../../../src/internal/operators/merge.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AACA,qCAAuC;AACvC,yDAAwD;AACxD,uCAAsC;AACtC,qCAAuD;AACvD,2CAA0C;AAiB1C,SAAgB,KAAK;IAAI,cAAkB;SAAlB,UAAkB,EAAlB,qBAAkB,EAAlB,IAAkB;QAAlB,yBAAkB;;IACzC,IAAM,SAAS,GAAG,mBAAY,CAAC,IAAI,CAAC,CAAC;IACrC,IAAM,UAAU,GAAG,gBAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC7C,IAAI,GAAG,+BAAc,CAAC,IAAI,CAAC,CAAC;IAE5B,OAAO,cAAO,CAAC,UAAC,MAAM,EAAE,UAAU;QAChC,mBAAQ,CAAC,UAAU,CAAC,CAAC,WAAI,gBAAE,MAAM,UAAM,IAA6B,IAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC3G,CAAC,CAAC,CAAC;AACL,CAAC;AARD,sBAQC"}
|
||||
@@ -0,0 +1,56 @@
|
||||
// @ts-check
|
||||
|
||||
import {
|
||||
// @ts-ignore
|
||||
lazyPostcss,
|
||||
|
||||
// @ts-ignore
|
||||
lazyPostcssImport,
|
||||
|
||||
// @ts-ignore
|
||||
lazyCssnano,
|
||||
|
||||
// @ts-ignore
|
||||
lazyAutoprefixer,
|
||||
} from '../../../peers/index.js'
|
||||
|
||||
/**
|
||||
* @returns {import('postcss')}
|
||||
*/
|
||||
export function loadPostcss() {
|
||||
// Try to load a local `postcss` version first
|
||||
try {
|
||||
return require('postcss')
|
||||
} catch {}
|
||||
|
||||
return lazyPostcss()
|
||||
}
|
||||
|
||||
export function loadPostcssImport() {
|
||||
// Try to load a local `postcss-import` version first
|
||||
try {
|
||||
return require('postcss-import')
|
||||
} catch {}
|
||||
|
||||
return lazyPostcssImport()
|
||||
}
|
||||
|
||||
export function loadCssNano() {
|
||||
let options = { preset: ['default', { cssDeclarationSorter: false }] }
|
||||
|
||||
// Try to load a local `cssnano` version first
|
||||
try {
|
||||
return require('cssnano')
|
||||
} catch {}
|
||||
|
||||
return lazyCssnano()(options)
|
||||
}
|
||||
|
||||
export function loadAutoprefixer() {
|
||||
// Try to load a local `autoprefixer` version first
|
||||
try {
|
||||
return require('autoprefixer')
|
||||
} catch {}
|
||||
|
||||
return lazyAutoprefixer()
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"workarounds.d.ts","sourceRoot":"","sources":["../../../../src/internal/util/workarounds.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,CAAA"}
|
||||
@@ -0,0 +1,45 @@
|
||||
# Upper Case
|
||||
|
||||
[![NPM version][npm-image]][npm-url]
|
||||
[![NPM downloads][downloads-image]][downloads-url]
|
||||
[![Build status][travis-image]][travis-url]
|
||||
[![Test coverage][coveralls-image]][coveralls-url]
|
||||
|
||||
Upper case a string.
|
||||
|
||||
Supports Unicode (non-ASCII characters) and non-string entities, such as objects with a `toString` property, numbers and booleans. Empty values (`null` and `undefined`) will result in an empty string.
|
||||
|
||||
## Installation
|
||||
|
||||
```
|
||||
npm install upper-case --save
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
```js
|
||||
var upperCase = require('upper-case')
|
||||
|
||||
upperCase(null) //=> ""
|
||||
upperCase('string') //=> "STRING"
|
||||
upperCase('string', 'tr') //=> "STRİNG"
|
||||
|
||||
upperCase({ toString: function () { return 'test' } }) //=> "TEST"
|
||||
```
|
||||
|
||||
## Typings
|
||||
|
||||
Includes a [TypeScript definition](upper-case.d.ts).
|
||||
|
||||
## License
|
||||
|
||||
MIT
|
||||
|
||||
[npm-image]: https://img.shields.io/npm/v/upper-case.svg?style=flat
|
||||
[npm-url]: https://npmjs.org/package/upper-case
|
||||
[downloads-image]: https://img.shields.io/npm/dm/upper-case.svg?style=flat
|
||||
[downloads-url]: https://npmjs.org/package/upper-case
|
||||
[travis-image]: https://img.shields.io/travis/blakeembrey/upper-case.svg?style=flat
|
||||
[travis-url]: https://travis-ci.org/blakeembrey/upper-case
|
||||
[coveralls-image]: https://img.shields.io/coveralls/blakeembrey/upper-case.svg?style=flat
|
||||
[coveralls-url]: https://coveralls.io/r/blakeembrey/upper-case?branch=master
|
||||
@@ -0,0 +1 @@
|
||||
module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 DC tB I v J D E F A B C K L G M N O w g x y z EC FC"},D:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F A B C K L G M N O w g","33":"0 x y z"},E:{"1":"B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A HC zB IC JC KC LC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C G M N O w g x y z PC QC RC SC qB AC TC rB"},G:{"1":"cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:5,C:"Gamepad API"};
|
||||
@@ -0,0 +1,3 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
//# sourceMappingURL=TestMessage.js.map
|
||||
@@ -0,0 +1,46 @@
|
||||
var apply = require('./_apply'),
|
||||
createCtor = require('./_createCtor'),
|
||||
createHybrid = require('./_createHybrid'),
|
||||
createRecurry = require('./_createRecurry'),
|
||||
getHolder = require('./_getHolder'),
|
||||
replaceHolders = require('./_replaceHolders'),
|
||||
root = require('./_root');
|
||||
|
||||
/**
|
||||
* Creates a function that wraps `func` to enable currying.
|
||||
*
|
||||
* @private
|
||||
* @param {Function} func The function to wrap.
|
||||
* @param {number} bitmask The bitmask flags. See `createWrap` for more details.
|
||||
* @param {number} arity The arity of `func`.
|
||||
* @returns {Function} Returns the new wrapped function.
|
||||
*/
|
||||
function createCurry(func, bitmask, arity) {
|
||||
var Ctor = createCtor(func);
|
||||
|
||||
function wrapper() {
|
||||
var length = arguments.length,
|
||||
args = Array(length),
|
||||
index = length,
|
||||
placeholder = getHolder(wrapper);
|
||||
|
||||
while (index--) {
|
||||
args[index] = arguments[index];
|
||||
}
|
||||
var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)
|
||||
? []
|
||||
: replaceHolders(args, placeholder);
|
||||
|
||||
length -= holders.length;
|
||||
if (length < arity) {
|
||||
return createRecurry(
|
||||
func, bitmask, createHybrid, wrapper.placeholder, undefined,
|
||||
args, holders, undefined, undefined, arity - length);
|
||||
}
|
||||
var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
|
||||
return apply(fn, this, args);
|
||||
}
|
||||
return wrapper;
|
||||
}
|
||||
|
||||
module.exports = createCurry;
|
||||
@@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2018 Made With MOXY Lda <hello@moxy.studio>
|
||||
|
||||
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.
|
||||
@@ -0,0 +1 @@
|
||||
module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M"},C:{"1":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 DC tB I v J D E F A B C K L G M N O w g x y z EC FC","132":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB"},D:{"1":"PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB"},E:{"1":"B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A HC zB IC JC KC LC"},F:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB PC QC RC SC qB AC TC rB"},G:{"1":"cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"URLSearchParams"};
|
||||
@@ -0,0 +1,11 @@
|
||||
/**
|
||||
* Used to create Error subclasses until the community moves away from ES5.
|
||||
*
|
||||
* This is because compiling from TypeScript down to ES5 has issues with subclassing Errors
|
||||
* as well as other built-in types: https://github.com/Microsoft/TypeScript/issues/12123
|
||||
*
|
||||
* @param createImpl A factory function to create the actual constructor implementation. The returned
|
||||
* function should be a named function that calls `_super` internally.
|
||||
*/
|
||||
export declare function createErrorClass<T>(createImpl: (_super: any) => any): T;
|
||||
//# sourceMappingURL=createErrorClass.d.ts.map
|
||||
@@ -0,0 +1,22 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.splitWhen = exports.flatten = void 0;
|
||||
function flatten(items) {
|
||||
return items.reduce((collection, item) => [].concat(collection, item), []);
|
||||
}
|
||||
exports.flatten = flatten;
|
||||
function splitWhen(items, predicate) {
|
||||
const result = [[]];
|
||||
let groupIndex = 0;
|
||||
for (const item of items) {
|
||||
if (predicate(item)) {
|
||||
groupIndex++;
|
||||
result[groupIndex] = [];
|
||||
}
|
||||
else {
|
||||
result[groupIndex].push(item);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
exports.splitWhen = splitWhen;
|
||||
@@ -0,0 +1,42 @@
|
||||
import _ from 'lodash';
|
||||
import { readJSON } from '../util.js';
|
||||
import GitBase from './GitBase.js';
|
||||
|
||||
const defaultConfig = readJSON(new URL('../../config/release-it.json', import.meta.url));
|
||||
|
||||
class GitRelease extends GitBase {
|
||||
static isEnabled(options) {
|
||||
return options.release;
|
||||
}
|
||||
|
||||
getInitialOptions(options) {
|
||||
const baseOptions = super.getInitialOptions(...arguments);
|
||||
const git = options.git || defaultConfig.git;
|
||||
const gitOptions = _.pick(git, ['tagExclude', 'tagName', 'tagMatch', 'pushRepo', 'changelog']);
|
||||
return _.defaults(baseOptions, gitOptions);
|
||||
}
|
||||
|
||||
get token() {
|
||||
const { tokenRef } = this.options;
|
||||
return _.get(process.env, tokenRef, null);
|
||||
}
|
||||
|
||||
async beforeRelease() {
|
||||
const { releaseNotes: script } = this.options;
|
||||
const { changelog } = this.config.getContext();
|
||||
const releaseNotes = script ? await this.exec(script) : changelog;
|
||||
this.setContext({ releaseNotes });
|
||||
if (releaseNotes !== changelog) {
|
||||
this.log.preview({ title: 'release notes', text: releaseNotes });
|
||||
}
|
||||
}
|
||||
|
||||
afterRelease() {
|
||||
const { isReleased, releaseUrl } = this.getContext();
|
||||
if (isReleased) {
|
||||
this.log.log(`🔗 ${releaseUrl}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default GitRelease;
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"name": "string_decoder",
|
||||
"version": "1.3.0",
|
||||
"description": "The string_decoder module from Node core",
|
||||
"main": "lib/string_decoder.js",
|
||||
"files": [
|
||||
"lib"
|
||||
],
|
||||
"dependencies": {
|
||||
"safe-buffer": "~5.2.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"babel-polyfill": "^6.23.0",
|
||||
"core-util-is": "^1.0.2",
|
||||
"inherits": "^2.0.3",
|
||||
"tap": "~0.4.8"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "tap test/parallel/*.js && node test/verify-dependencies",
|
||||
"ci": "tap test/parallel/*.js test/ours/*.js --tap | tee test.tap && node test/verify-dependencies.js"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/nodejs/string_decoder.git"
|
||||
},
|
||||
"homepage": "https://github.com/nodejs/string_decoder",
|
||||
"keywords": [
|
||||
"string",
|
||||
"decoder",
|
||||
"browser",
|
||||
"browserify"
|
||||
],
|
||||
"license": "MIT"
|
||||
}
|
||||
Reference in New Issue
Block a user