Compare commits
2 Commits
7104d5ec11
...
4357ed82c2
Author | SHA1 | Date | |
---|---|---|---|
4357ed82c2 | |||
b05d920c09 |
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
|
||||||
|
config.json
|
4
config.json
Normal file
4
config.json
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"token": "your-token-goes-here",
|
||||||
|
"path": "funfacts.json"
|
||||||
|
}
|
9
main.js
9
main.js
@ -1,6 +1,10 @@
|
|||||||
|
const config = require('./config.json');
|
||||||
|
const discordToken = config.token;
|
||||||
|
const outputFile = config.path;
|
||||||
const Discord = require('discord.js');
|
const Discord = require('discord.js');
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
const readline = require('readline');
|
const readline = require('readline');
|
||||||
|
|
||||||
const client = new Discord.Client({
|
const client = new Discord.Client({
|
||||||
intents: [
|
intents: [
|
||||||
Discord.GatewayIntentBits.Guilds,
|
Discord.GatewayIntentBits.Guilds,
|
||||||
@ -33,7 +37,7 @@ async function parseMessages() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Write to JSON file
|
// Write to JSON file
|
||||||
fs.writeFileSync('/volume3/docker/docker_mkdocs/site/DND/Eigene Konfigurationen/funfacts.json', JSON.stringify(lines, null, 2));
|
fs.writeFileSync(outputFile, JSON.stringify(lines, null, 2));
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('An error occurred:', error);
|
console.error('An error occurred:', error);
|
||||||
}
|
}
|
||||||
@ -116,5 +120,4 @@ client.on('messageCreate', message => {
|
|||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
//Dont worry, I changed this token lol.
|
client.login(discordToken);
|
||||||
client.login('OTg0NDYxMDkyODkxODIwMTYy.GEYK76.eXLEGBVhcaav_F1_rxR0NOo0uLIKxtDk9ZnXxM');
|
|
16
node_modules/.bin/json5
generated
vendored
Normal file
16
node_modules/.bin/json5
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||||
|
|
||||||
|
case `uname` in
|
||||||
|
*CYGWIN*|*MINGW*|*MSYS*)
|
||||||
|
if command -v cygpath > /dev/null 2>&1; then
|
||||||
|
basedir=`cygpath -w "$basedir"`
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ -x "$basedir/node" ]; then
|
||||||
|
exec "$basedir/node" "$basedir/../json5/lib/cli.js" "$@"
|
||||||
|
else
|
||||||
|
exec node "$basedir/../json5/lib/cli.js" "$@"
|
||||||
|
fi
|
17
node_modules/.bin/json5.cmd
generated
vendored
Normal file
17
node_modules/.bin/json5.cmd
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
@ECHO off
|
||||||
|
GOTO start
|
||||||
|
:find_dp0
|
||||||
|
SET dp0=%~dp0
|
||||||
|
EXIT /b
|
||||||
|
:start
|
||||||
|
SETLOCAL
|
||||||
|
CALL :find_dp0
|
||||||
|
|
||||||
|
IF EXIST "%dp0%\node.exe" (
|
||||||
|
SET "_prog=%dp0%\node.exe"
|
||||||
|
) ELSE (
|
||||||
|
SET "_prog=node"
|
||||||
|
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||||
|
)
|
||||||
|
|
||||||
|
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\json5\lib\cli.js" %*
|
28
node_modules/.bin/json5.ps1
generated
vendored
Normal file
28
node_modules/.bin/json5.ps1
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
#!/usr/bin/env pwsh
|
||||||
|
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||||
|
|
||||||
|
$exe=""
|
||||||
|
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||||
|
# Fix case when both the Windows and Linux builds of Node
|
||||||
|
# are installed in the same directory
|
||||||
|
$exe=".exe"
|
||||||
|
}
|
||||||
|
$ret=0
|
||||||
|
if (Test-Path "$basedir/node$exe") {
|
||||||
|
# Support pipeline input
|
||||||
|
if ($MyInvocation.ExpectingInput) {
|
||||||
|
$input | & "$basedir/node$exe" "$basedir/../json5/lib/cli.js" $args
|
||||||
|
} else {
|
||||||
|
& "$basedir/node$exe" "$basedir/../json5/lib/cli.js" $args
|
||||||
|
}
|
||||||
|
$ret=$LASTEXITCODE
|
||||||
|
} else {
|
||||||
|
# Support pipeline input
|
||||||
|
if ($MyInvocation.ExpectingInput) {
|
||||||
|
$input | & "node$exe" "$basedir/../json5/lib/cli.js" $args
|
||||||
|
} else {
|
||||||
|
& "node$exe" "$basedir/../json5/lib/cli.js" $args
|
||||||
|
}
|
||||||
|
$ret=$LASTEXITCODE
|
||||||
|
}
|
||||||
|
exit $ret
|
24
node_modules/.package-lock.json
generated
vendored
24
node_modules/.package-lock.json
generated
vendored
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "DNDZitateGrabber",
|
"name": "DNDQoteGrabber",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
@ -205,6 +205,17 @@
|
|||||||
"node": ">= 0.8"
|
"node": ">= 0.8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/config": {
|
||||||
|
"version": "3.3.9",
|
||||||
|
"resolved": "https://registry.npmjs.org/config/-/config-3.3.9.tgz",
|
||||||
|
"integrity": "sha512-G17nfe+cY7kR0wVpc49NCYvNtelm/pPy8czHoFkAgtV1lkmcp7DHtWCdDu+C9Z7gb2WVqa9Tm3uF9aKaPbCfhg==",
|
||||||
|
"dependencies": {
|
||||||
|
"json5": "^2.2.3"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 10.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/delayed-stream": {
|
"node_modules/delayed-stream": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
||||||
@ -308,6 +319,17 @@
|
|||||||
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
|
||||||
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
|
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
|
||||||
},
|
},
|
||||||
|
"node_modules/json5": {
|
||||||
|
"version": "2.2.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
|
||||||
|
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
|
||||||
|
"bin": {
|
||||||
|
"json5": "lib/cli.js"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/lodash": {
|
"node_modules/lodash": {
|
||||||
"version": "4.17.21",
|
"version": "4.17.21",
|
||||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
|
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
|
||||||
|
23
node_modules/json5/LICENSE.md
generated
vendored
Normal file
23
node_modules/json5/LICENSE.md
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2012-2018 Aseem Kishore, and [others].
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
[others]: https://github.com/json5/json5/contributors
|
282
node_modules/json5/README.md
generated
vendored
Normal file
282
node_modules/json5/README.md
generated
vendored
Normal file
@ -0,0 +1,282 @@
|
|||||||
|
# JSON5 – JSON for Humans
|
||||||
|
|
||||||
|
[![Build Status](https://app.travis-ci.com/json5/json5.svg?branch=main)][Build
|
||||||
|
Status] [![Coverage
|
||||||
|
Status](https://coveralls.io/repos/github/json5/json5/badge.svg)][Coverage
|
||||||
|
Status]
|
||||||
|
|
||||||
|
JSON5 is an extension to the popular [JSON] file format that aims to be
|
||||||
|
easier to **write and maintain _by hand_ (e.g. for config files)**.
|
||||||
|
It is _not intended_ to be used for machine-to-machine communication.
|
||||||
|
(Keep using JSON or other file formats for that. 🙂)
|
||||||
|
|
||||||
|
JSON5 was started in 2012, and as of 2022, now gets **[>65M downloads/week](https://www.npmjs.com/package/json5)**,
|
||||||
|
ranks in the **[top 0.1%](https://gist.github.com/anvaka/8e8fa57c7ee1350e3491)** of the most depended-upon packages on npm,
|
||||||
|
and has been adopted by major projects like
|
||||||
|
**[Chromium](https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/platform/runtime_enabled_features.json5;drc=5de823b36e68fd99009a29281b17bc3a1d6b329c),
|
||||||
|
[Next.js](https://github.com/vercel/next.js/blob/b88f20c90bf4659b8ad5cb2a27956005eac2c7e8/packages/next/lib/find-config.ts#L43-L46),
|
||||||
|
[Babel](https://babeljs.io/docs/en/config-files#supported-file-extensions),
|
||||||
|
[Retool](https://community.retool.com/t/i-am-attempting-to-append-several-text-fields-to-a-google-sheet-but-receiving-a-json5-invalid-character-error/7626),
|
||||||
|
[WebStorm](https://www.jetbrains.com/help/webstorm/json.html),
|
||||||
|
and [more](https://github.com/json5/json5/wiki/In-the-Wild)**.
|
||||||
|
It's also natively supported on **[Apple platforms](https://developer.apple.com/documentation/foundation/jsondecoder/3766916-allowsjson5)**
|
||||||
|
like **MacOS** and **iOS**.
|
||||||
|
|
||||||
|
Formally, the **[JSON5 Data Interchange Format](https://spec.json5.org/)** is a superset of JSON
|
||||||
|
(so valid JSON files will always be valid JSON5 files)
|
||||||
|
that expands its syntax to include some productions from [ECMAScript 5.1] (ES5).
|
||||||
|
It's also a strict _subset_ of ES5, so valid JSON5 files will always be valid ES5.
|
||||||
|
|
||||||
|
This JavaScript library is a reference implementation for JSON5 parsing and serialization,
|
||||||
|
and is directly used in many of the popular projects mentioned above
|
||||||
|
(where e.g. extreme performance isn't necessary),
|
||||||
|
but others have created [many other libraries](https://github.com/json5/json5/wiki/In-the-Wild)
|
||||||
|
across many other platforms.
|
||||||
|
|
||||||
|
[Build Status]: https://app.travis-ci.com/json5/json5
|
||||||
|
|
||||||
|
[Coverage Status]: https://coveralls.io/github/json5/json5
|
||||||
|
|
||||||
|
[JSON]: https://tools.ietf.org/html/rfc7159
|
||||||
|
|
||||||
|
[ECMAScript 5.1]: https://www.ecma-international.org/ecma-262/5.1/
|
||||||
|
|
||||||
|
## Summary of Features
|
||||||
|
The following ECMAScript 5.1 features, which are not supported in JSON, have
|
||||||
|
been extended to JSON5.
|
||||||
|
|
||||||
|
### Objects
|
||||||
|
- Object keys may be an ECMAScript 5.1 _[IdentifierName]_.
|
||||||
|
- Objects may have a single trailing comma.
|
||||||
|
|
||||||
|
### Arrays
|
||||||
|
- Arrays may have a single trailing comma.
|
||||||
|
|
||||||
|
### Strings
|
||||||
|
- Strings may be single quoted.
|
||||||
|
- Strings may span multiple lines by escaping new line characters.
|
||||||
|
- Strings may include character escapes.
|
||||||
|
|
||||||
|
### Numbers
|
||||||
|
- Numbers may be hexadecimal.
|
||||||
|
- Numbers may have a leading or trailing decimal point.
|
||||||
|
- Numbers may be [IEEE 754] positive infinity, negative infinity, and NaN.
|
||||||
|
- Numbers may begin with an explicit plus sign.
|
||||||
|
|
||||||
|
### Comments
|
||||||
|
- Single and multi-line comments are allowed.
|
||||||
|
|
||||||
|
### White Space
|
||||||
|
- Additional white space characters are allowed.
|
||||||
|
|
||||||
|
[IdentifierName]: https://www.ecma-international.org/ecma-262/5.1/#sec-7.6
|
||||||
|
|
||||||
|
[IEEE 754]: http://ieeexplore.ieee.org/servlet/opac?punumber=4610933
|
||||||
|
|
||||||
|
## Example
|
||||||
|
Kitchen-sink example:
|
||||||
|
|
||||||
|
```js
|
||||||
|
{
|
||||||
|
// comments
|
||||||
|
unquoted: 'and you can quote me on that',
|
||||||
|
singleQuotes: 'I can use "double quotes" here',
|
||||||
|
lineBreaks: "Look, Mom! \
|
||||||
|
No \\n's!",
|
||||||
|
hexadecimal: 0xdecaf,
|
||||||
|
leadingDecimalPoint: .8675309, andTrailing: 8675309.,
|
||||||
|
positiveSign: +1,
|
||||||
|
trailingComma: 'in objects', andIn: ['arrays',],
|
||||||
|
"backwardsCompatible": "with JSON",
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
A more real-world example is [this config file](https://github.com/chromium/chromium/blob/feb3c9f670515edf9a88f185301cbd7794ee3e52/third_party/blink/renderer/platform/runtime_enabled_features.json5)
|
||||||
|
from the Chromium/Blink project.
|
||||||
|
|
||||||
|
## Specification
|
||||||
|
For a detailed explanation of the JSON5 format, please read the [official
|
||||||
|
specification](https://json5.github.io/json5-spec/).
|
||||||
|
|
||||||
|
## Installation and Usage
|
||||||
|
### Node.js
|
||||||
|
```sh
|
||||||
|
npm install json5
|
||||||
|
```
|
||||||
|
|
||||||
|
#### CommonJS
|
||||||
|
```js
|
||||||
|
const JSON5 = require('json5')
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Modules
|
||||||
|
```js
|
||||||
|
import JSON5 from 'json5'
|
||||||
|
```
|
||||||
|
|
||||||
|
### Browsers
|
||||||
|
#### UMD
|
||||||
|
```html
|
||||||
|
<!-- This will create a global `JSON5` variable. -->
|
||||||
|
<script src="https://unpkg.com/json5@2/dist/index.min.js"></script>
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Modules
|
||||||
|
```html
|
||||||
|
<script type="module">
|
||||||
|
import JSON5 from 'https://unpkg.com/json5@2/dist/index.min.mjs'
|
||||||
|
</script>
|
||||||
|
```
|
||||||
|
|
||||||
|
## API
|
||||||
|
The JSON5 API is compatible with the [JSON API].
|
||||||
|
|
||||||
|
[JSON API]:
|
||||||
|
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON
|
||||||
|
|
||||||
|
### JSON5.parse()
|
||||||
|
Parses a JSON5 string, constructing the JavaScript value or object described by
|
||||||
|
the string. An optional reviver function can be provided to perform a
|
||||||
|
transformation on the resulting object before it is returned.
|
||||||
|
|
||||||
|
#### Syntax
|
||||||
|
JSON5.parse(text[, reviver])
|
||||||
|
|
||||||
|
#### Parameters
|
||||||
|
- `text`: The string to parse as JSON5.
|
||||||
|
- `reviver`: If a function, this prescribes how the value originally produced by
|
||||||
|
parsing is transformed, before being returned.
|
||||||
|
|
||||||
|
#### Return value
|
||||||
|
The object corresponding to the given JSON5 text.
|
||||||
|
|
||||||
|
### JSON5.stringify()
|
||||||
|
Converts a JavaScript value to a JSON5 string, optionally replacing values if a
|
||||||
|
replacer function is specified, or optionally including only the specified
|
||||||
|
properties if a replacer array is specified.
|
||||||
|
|
||||||
|
#### Syntax
|
||||||
|
JSON5.stringify(value[, replacer[, space]])
|
||||||
|
JSON5.stringify(value[, options])
|
||||||
|
|
||||||
|
#### Parameters
|
||||||
|
- `value`: The value to convert to a JSON5 string.
|
||||||
|
- `replacer`: A function that alters the behavior of the stringification
|
||||||
|
process, or an array of String and Number objects that serve as a whitelist
|
||||||
|
for selecting/filtering the properties of the value object to be included in
|
||||||
|
the JSON5 string. If this value is null or not provided, all properties of the
|
||||||
|
object are included in the resulting JSON5 string.
|
||||||
|
- `space`: A String or Number object that's used to insert white space into the
|
||||||
|
output JSON5 string for readability purposes. If this is a Number, it
|
||||||
|
indicates the number of space characters to use as white space; this number is
|
||||||
|
capped at 10 (if it is greater, the value is just 10). Values less than 1
|
||||||
|
indicate that no space should be used. If this is a String, the string (or the
|
||||||
|
first 10 characters of the string, if it's longer than that) is used as white
|
||||||
|
space. If this parameter is not provided (or is null), no white space is used.
|
||||||
|
If white space is used, trailing commas will be used in objects and arrays.
|
||||||
|
- `options`: An object with the following properties:
|
||||||
|
- `replacer`: Same as the `replacer` parameter.
|
||||||
|
- `space`: Same as the `space` parameter.
|
||||||
|
- `quote`: A String representing the quote character to use when serializing
|
||||||
|
strings.
|
||||||
|
|
||||||
|
#### Return value
|
||||||
|
A JSON5 string representing the value.
|
||||||
|
|
||||||
|
### Node.js `require()` JSON5 files
|
||||||
|
When using Node.js, you can `require()` JSON5 files by adding the following
|
||||||
|
statement.
|
||||||
|
|
||||||
|
```js
|
||||||
|
require('json5/lib/register')
|
||||||
|
```
|
||||||
|
|
||||||
|
Then you can load a JSON5 file with a Node.js `require()` statement. For
|
||||||
|
example:
|
||||||
|
|
||||||
|
```js
|
||||||
|
const config = require('./config.json5')
|
||||||
|
```
|
||||||
|
|
||||||
|
## CLI
|
||||||
|
Since JSON is more widely used than JSON5, this package includes a CLI for
|
||||||
|
converting JSON5 to JSON and for validating the syntax of JSON5 documents.
|
||||||
|
|
||||||
|
### Installation
|
||||||
|
```sh
|
||||||
|
npm install --global json5
|
||||||
|
```
|
||||||
|
|
||||||
|
### Usage
|
||||||
|
```sh
|
||||||
|
json5 [options] <file>
|
||||||
|
```
|
||||||
|
|
||||||
|
If `<file>` is not provided, then STDIN is used.
|
||||||
|
|
||||||
|
#### Options:
|
||||||
|
- `-s`, `--space`: The number of spaces to indent or `t` for tabs
|
||||||
|
- `-o`, `--out-file [file]`: Output to the specified file, otherwise STDOUT
|
||||||
|
- `-v`, `--validate`: Validate JSON5 but do not output JSON
|
||||||
|
- `-V`, `--version`: Output the version number
|
||||||
|
- `-h`, `--help`: Output usage information
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
### Development
|
||||||
|
```sh
|
||||||
|
git clone https://github.com/json5/json5
|
||||||
|
cd json5
|
||||||
|
npm install
|
||||||
|
```
|
||||||
|
|
||||||
|
When contributing code, please write relevant tests and run `npm test` and `npm
|
||||||
|
run lint` before submitting pull requests. Please use an editor that supports
|
||||||
|
[EditorConfig](http://editorconfig.org/).
|
||||||
|
|
||||||
|
### Issues
|
||||||
|
To report bugs or request features regarding the JSON5 **data format**,
|
||||||
|
please submit an issue to the official
|
||||||
|
**[_specification_ repository](https://github.com/json5/json5-spec)**.
|
||||||
|
|
||||||
|
Note that we will never add any features that make JSON5 incompatible with ES5;
|
||||||
|
that compatibility is a fundamental premise of JSON5.
|
||||||
|
|
||||||
|
To report bugs or request features regarding this **JavaScript implementation**
|
||||||
|
of JSON5, please submit an issue to **_this_ repository**.
|
||||||
|
|
||||||
|
### Security Vulnerabilities and Disclosures
|
||||||
|
To report a security vulnerability, please follow the follow the guidelines
|
||||||
|
described in our [security policy](./SECURITY.md).
|
||||||
|
|
||||||
|
## License
|
||||||
|
MIT. See [LICENSE.md](./LICENSE.md) for details.
|
||||||
|
|
||||||
|
## Credits
|
||||||
|
[Aseem Kishore](https://github.com/aseemk) founded this project.
|
||||||
|
He wrote a [blog post](https://aseemk.substack.com/p/ignore-the-f-ing-haters-json5)
|
||||||
|
about the journey and lessons learned 10 years in.
|
||||||
|
|
||||||
|
[Michael Bolin](http://bolinfest.com/) independently arrived at and published
|
||||||
|
some of these same ideas with awesome explanations and detail. Recommended
|
||||||
|
reading: [Suggested Improvements to JSON](http://bolinfest.com/essays/json.html)
|
||||||
|
|
||||||
|
[Douglas Crockford](http://www.crockford.com/) of course designed and built
|
||||||
|
JSON, but his state machine diagrams on the [JSON website](http://json.org/), as
|
||||||
|
cheesy as it may sound, gave us motivation and confidence that building a new
|
||||||
|
parser to implement these ideas was within reach! The original
|
||||||
|
implementation of JSON5 was also modeled directly off of Doug’s open-source
|
||||||
|
[json_parse.js] parser. We’re grateful for that clean and well-documented
|
||||||
|
code.
|
||||||
|
|
||||||
|
[json_parse.js]:
|
||||||
|
https://github.com/douglascrockford/JSON-js/blob/03157639c7a7cddd2e9f032537f346f1a87c0f6d/json_parse.js
|
||||||
|
|
||||||
|
[Max Nanasy](https://github.com/MaxNanasy) has been an early and prolific
|
||||||
|
supporter, contributing multiple patches and ideas.
|
||||||
|
|
||||||
|
[Andrew Eisenberg](https://github.com/aeisenberg) contributed the original
|
||||||
|
`stringify` method.
|
||||||
|
|
||||||
|
[Jordan Tucker](https://github.com/jordanbtucker) has aligned JSON5 more closely
|
||||||
|
with ES5, wrote the official JSON5 specification, completely rewrote the
|
||||||
|
codebase from the ground up, and is actively maintaining this project.
|
1737
node_modules/json5/dist/index.js
generated
vendored
Normal file
1737
node_modules/json5/dist/index.js
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
1
node_modules/json5/dist/index.min.js
generated
vendored
Normal file
1
node_modules/json5/dist/index.min.js
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
1
node_modules/json5/dist/index.min.mjs
generated
vendored
Normal file
1
node_modules/json5/dist/index.min.mjs
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
1426
node_modules/json5/dist/index.mjs
generated
vendored
Normal file
1426
node_modules/json5/dist/index.mjs
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
152
node_modules/json5/lib/cli.js
generated
vendored
Normal file
152
node_modules/json5/lib/cli.js
generated
vendored
Normal file
@ -0,0 +1,152 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
const fs = require('fs')
|
||||||
|
const path = require('path')
|
||||||
|
const pkg = require('../package.json')
|
||||||
|
const JSON5 = require('./')
|
||||||
|
|
||||||
|
const argv = parseArgs()
|
||||||
|
|
||||||
|
if (argv.version) {
|
||||||
|
version()
|
||||||
|
} else if (argv.help) {
|
||||||
|
usage()
|
||||||
|
} else {
|
||||||
|
const inFilename = argv.defaults[0]
|
||||||
|
|
||||||
|
let readStream
|
||||||
|
if (inFilename) {
|
||||||
|
readStream = fs.createReadStream(inFilename)
|
||||||
|
} else {
|
||||||
|
readStream = process.stdin
|
||||||
|
}
|
||||||
|
|
||||||
|
let json5 = ''
|
||||||
|
readStream.on('data', data => {
|
||||||
|
json5 += data
|
||||||
|
})
|
||||||
|
|
||||||
|
readStream.on('end', () => {
|
||||||
|
let space
|
||||||
|
if (argv.space === 't' || argv.space === 'tab') {
|
||||||
|
space = '\t'
|
||||||
|
} else {
|
||||||
|
space = Number(argv.space)
|
||||||
|
}
|
||||||
|
|
||||||
|
let value
|
||||||
|
try {
|
||||||
|
value = JSON5.parse(json5)
|
||||||
|
if (!argv.validate) {
|
||||||
|
const json = JSON.stringify(value, null, space)
|
||||||
|
|
||||||
|
let writeStream
|
||||||
|
|
||||||
|
// --convert is for backward compatibility with v0.5.1. If
|
||||||
|
// specified with <file> and not --out-file, then a file with
|
||||||
|
// the same name but with a .json extension will be written.
|
||||||
|
if (argv.convert && inFilename && !argv.outFile) {
|
||||||
|
const parsedFilename = path.parse(inFilename)
|
||||||
|
const outFilename = path.format(
|
||||||
|
Object.assign(
|
||||||
|
parsedFilename,
|
||||||
|
{base: path.basename(parsedFilename.base, parsedFilename.ext) + '.json'}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
writeStream = fs.createWriteStream(outFilename)
|
||||||
|
} else if (argv.outFile) {
|
||||||
|
writeStream = fs.createWriteStream(argv.outFile)
|
||||||
|
} else {
|
||||||
|
writeStream = process.stdout
|
||||||
|
}
|
||||||
|
|
||||||
|
writeStream.write(json)
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
console.error(err.message)
|
||||||
|
process.exit(1)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function parseArgs () {
|
||||||
|
let convert
|
||||||
|
let space
|
||||||
|
let validate
|
||||||
|
let outFile
|
||||||
|
let version
|
||||||
|
let help
|
||||||
|
const defaults = []
|
||||||
|
|
||||||
|
const args = process.argv.slice(2)
|
||||||
|
for (let i = 0; i < args.length; i++) {
|
||||||
|
const arg = args[i]
|
||||||
|
switch (arg) {
|
||||||
|
case '--convert':
|
||||||
|
case '-c':
|
||||||
|
convert = true
|
||||||
|
break
|
||||||
|
|
||||||
|
case '--space':
|
||||||
|
case '-s':
|
||||||
|
space = args[++i]
|
||||||
|
break
|
||||||
|
|
||||||
|
case '--validate':
|
||||||
|
case '-v':
|
||||||
|
validate = true
|
||||||
|
break
|
||||||
|
|
||||||
|
case '--out-file':
|
||||||
|
case '-o':
|
||||||
|
outFile = args[++i]
|
||||||
|
break
|
||||||
|
|
||||||
|
case '--version':
|
||||||
|
case '-V':
|
||||||
|
version = true
|
||||||
|
break
|
||||||
|
|
||||||
|
case '--help':
|
||||||
|
case '-h':
|
||||||
|
help = true
|
||||||
|
break
|
||||||
|
|
||||||
|
default:
|
||||||
|
defaults.push(arg)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
convert,
|
||||||
|
space,
|
||||||
|
validate,
|
||||||
|
outFile,
|
||||||
|
version,
|
||||||
|
help,
|
||||||
|
defaults,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function version () {
|
||||||
|
console.log(pkg.version)
|
||||||
|
}
|
||||||
|
|
||||||
|
function usage () {
|
||||||
|
console.log(
|
||||||
|
`
|
||||||
|
Usage: json5 [options] <file>
|
||||||
|
|
||||||
|
If <file> is not provided, then STDIN is used.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
|
||||||
|
-s, --space The number of spaces to indent or 't' for tabs
|
||||||
|
-o, --out-file [file] Output to the specified file, otherwise STDOUT
|
||||||
|
-v, --validate Validate JSON5 but do not output JSON
|
||||||
|
-V, --version Output the version number
|
||||||
|
-h, --help Output usage information`
|
||||||
|
)
|
||||||
|
}
|
4
node_modules/json5/lib/index.d.ts
generated
vendored
Normal file
4
node_modules/json5/lib/index.d.ts
generated
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
import parse = require('./parse')
|
||||||
|
import stringify = require('./stringify')
|
||||||
|
|
||||||
|
export {parse, stringify}
|
9
node_modules/json5/lib/index.js
generated
vendored
Normal file
9
node_modules/json5/lib/index.js
generated
vendored
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
const parse = require('./parse')
|
||||||
|
const stringify = require('./stringify')
|
||||||
|
|
||||||
|
const JSON5 = {
|
||||||
|
parse,
|
||||||
|
stringify,
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = JSON5
|
15
node_modules/json5/lib/parse.d.ts
generated
vendored
Normal file
15
node_modules/json5/lib/parse.d.ts
generated
vendored
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
/**
|
||||||
|
* Parses a JSON5 string, constructing the JavaScript value or object described
|
||||||
|
* by the string.
|
||||||
|
* @template T The type of the return value.
|
||||||
|
* @param text The string to parse as JSON5.
|
||||||
|
* @param reviver A function that prescribes how the value originally produced
|
||||||
|
* by parsing is transformed before being returned.
|
||||||
|
* @returns The JavaScript value converted from the JSON5 string.
|
||||||
|
*/
|
||||||
|
declare function parse<T = any>(
|
||||||
|
text: string,
|
||||||
|
reviver?: ((this: any, key: string, value: any) => any) | null,
|
||||||
|
): T
|
||||||
|
|
||||||
|
export = parse
|
1114
node_modules/json5/lib/parse.js
generated
vendored
Normal file
1114
node_modules/json5/lib/parse.js
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
13
node_modules/json5/lib/register.js
generated
vendored
Normal file
13
node_modules/json5/lib/register.js
generated
vendored
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
const fs = require('fs')
|
||||||
|
const JSON5 = require('./')
|
||||||
|
|
||||||
|
// eslint-disable-next-line node/no-deprecated-api
|
||||||
|
require.extensions['.json5'] = function (module, filename) {
|
||||||
|
const content = fs.readFileSync(filename, 'utf8')
|
||||||
|
try {
|
||||||
|
module.exports = JSON5.parse(content)
|
||||||
|
} catch (err) {
|
||||||
|
err.message = filename + ': ' + err.message
|
||||||
|
throw err
|
||||||
|
}
|
||||||
|
}
|
4
node_modules/json5/lib/require.js
generated
vendored
Normal file
4
node_modules/json5/lib/require.js
generated
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
// This file is for backward compatibility with v0.5.1.
|
||||||
|
require('./register')
|
||||||
|
|
||||||
|
console.warn("'json5/require' is deprecated. Please use 'json5/register' instead.")
|
89
node_modules/json5/lib/stringify.d.ts
generated
vendored
Normal file
89
node_modules/json5/lib/stringify.d.ts
generated
vendored
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
declare type StringifyOptions = {
|
||||||
|
/**
|
||||||
|
* A function that alters the behavior of the stringification process, or an
|
||||||
|
* array of String and Number objects that serve as a allowlist for
|
||||||
|
* selecting/filtering the properties of the value object to be included in
|
||||||
|
* the JSON5 string. If this value is null or not provided, all properties
|
||||||
|
* of the object are included in the resulting JSON5 string.
|
||||||
|
*/
|
||||||
|
replacer?:
|
||||||
|
| ((this: any, key: string, value: any) => any)
|
||||||
|
| (string | number)[]
|
||||||
|
| null
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A String or Number object that's used to insert white space into the
|
||||||
|
* output JSON5 string for readability purposes. If this is a Number, it
|
||||||
|
* indicates the number of space characters to use as white space; this
|
||||||
|
* number is capped at 10 (if it is greater, the value is just 10). Values
|
||||||
|
* less than 1 indicate that no space should be used. If this is a String,
|
||||||
|
* the string (or the first 10 characters of the string, if it's longer than
|
||||||
|
* that) is used as white space. If this parameter is not provided (or is
|
||||||
|
* null), no white space is used. If white space is used, trailing commas
|
||||||
|
* will be used in objects and arrays.
|
||||||
|
*/
|
||||||
|
space?: string | number | null
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A String representing the quote character to use when serializing
|
||||||
|
* strings.
|
||||||
|
*/
|
||||||
|
quote?: string | null
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts a JavaScript value to a JSON5 string.
|
||||||
|
* @param value The value to convert to a JSON5 string.
|
||||||
|
* @param replacer A function that alters the behavior of the stringification
|
||||||
|
* process. If this value is null or not provided, all properties of the object
|
||||||
|
* are included in the resulting JSON5 string.
|
||||||
|
* @param space A String or Number object that's used to insert white space into
|
||||||
|
* the output JSON5 string for readability purposes. If this is a Number, it
|
||||||
|
* indicates the number of space characters to use as white space; this number
|
||||||
|
* is capped at 10 (if it is greater, the value is just 10). Values less than 1
|
||||||
|
* indicate that no space should be used. If this is a String, the string (or
|
||||||
|
* the first 10 characters of the string, if it's longer than that) is used as
|
||||||
|
* white space. If this parameter is not provided (or is null), no white space
|
||||||
|
* is used. If white space is used, trailing commas will be used in objects and
|
||||||
|
* arrays.
|
||||||
|
* @returns The JSON5 string converted from the JavaScript value.
|
||||||
|
*/
|
||||||
|
declare function stringify(
|
||||||
|
value: any,
|
||||||
|
replacer?: ((this: any, key: string, value: any) => any) | null,
|
||||||
|
space?: string | number | null,
|
||||||
|
): string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts a JavaScript value to a JSON5 string.
|
||||||
|
* @param value The value to convert to a JSON5 string.
|
||||||
|
* @param replacer An array of String and Number objects that serve as a
|
||||||
|
* allowlist for selecting/filtering the properties of the value object to be
|
||||||
|
* included in the JSON5 string. If this value is null or not provided, all
|
||||||
|
* properties of the object are included in the resulting JSON5 string.
|
||||||
|
* @param space A String or Number object that's used to insert white space into
|
||||||
|
* the output JSON5 string for readability purposes. If this is a Number, it
|
||||||
|
* indicates the number of space characters to use as white space; this number
|
||||||
|
* is capped at 10 (if it is greater, the value is just 10). Values less than 1
|
||||||
|
* indicate that no space should be used. If this is a String, the string (or
|
||||||
|
* the first 10 characters of the string, if it's longer than that) is used as
|
||||||
|
* white space. If this parameter is not provided (or is null), no white space
|
||||||
|
* is used. If white space is used, trailing commas will be used in objects and
|
||||||
|
* arrays.
|
||||||
|
* @returns The JSON5 string converted from the JavaScript value.
|
||||||
|
*/
|
||||||
|
declare function stringify(
|
||||||
|
value: any,
|
||||||
|
replacer: (string | number)[],
|
||||||
|
space?: string | number | null,
|
||||||
|
): string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts a JavaScript value to a JSON5 string.
|
||||||
|
* @param value The value to convert to a JSON5 string.
|
||||||
|
* @param options An object specifying options.
|
||||||
|
* @returns The JSON5 string converted from the JavaScript value.
|
||||||
|
*/
|
||||||
|
declare function stringify(value: any, options: StringifyOptions): string
|
||||||
|
|
||||||
|
export = stringify
|
261
node_modules/json5/lib/stringify.js
generated
vendored
Normal file
261
node_modules/json5/lib/stringify.js
generated
vendored
Normal file
@ -0,0 +1,261 @@
|
|||||||
|
const util = require('./util')
|
||||||
|
|
||||||
|
module.exports = function stringify (value, replacer, space) {
|
||||||
|
const stack = []
|
||||||
|
let indent = ''
|
||||||
|
let propertyList
|
||||||
|
let replacerFunc
|
||||||
|
let gap = ''
|
||||||
|
let quote
|
||||||
|
|
||||||
|
if (
|
||||||
|
replacer != null &&
|
||||||
|
typeof replacer === 'object' &&
|
||||||
|
!Array.isArray(replacer)
|
||||||
|
) {
|
||||||
|
space = replacer.space
|
||||||
|
quote = replacer.quote
|
||||||
|
replacer = replacer.replacer
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof replacer === 'function') {
|
||||||
|
replacerFunc = replacer
|
||||||
|
} else if (Array.isArray(replacer)) {
|
||||||
|
propertyList = []
|
||||||
|
for (const v of replacer) {
|
||||||
|
let item
|
||||||
|
|
||||||
|
if (typeof v === 'string') {
|
||||||
|
item = v
|
||||||
|
} else if (
|
||||||
|
typeof v === 'number' ||
|
||||||
|
v instanceof String ||
|
||||||
|
v instanceof Number
|
||||||
|
) {
|
||||||
|
item = String(v)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (item !== undefined && propertyList.indexOf(item) < 0) {
|
||||||
|
propertyList.push(item)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (space instanceof Number) {
|
||||||
|
space = Number(space)
|
||||||
|
} else if (space instanceof String) {
|
||||||
|
space = String(space)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof space === 'number') {
|
||||||
|
if (space > 0) {
|
||||||
|
space = Math.min(10, Math.floor(space))
|
||||||
|
gap = ' '.substr(0, space)
|
||||||
|
}
|
||||||
|
} else if (typeof space === 'string') {
|
||||||
|
gap = space.substr(0, 10)
|
||||||
|
}
|
||||||
|
|
||||||
|
return serializeProperty('', {'': value})
|
||||||
|
|
||||||
|
function serializeProperty (key, holder) {
|
||||||
|
let value = holder[key]
|
||||||
|
if (value != null) {
|
||||||
|
if (typeof value.toJSON5 === 'function') {
|
||||||
|
value = value.toJSON5(key)
|
||||||
|
} else if (typeof value.toJSON === 'function') {
|
||||||
|
value = value.toJSON(key)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (replacerFunc) {
|
||||||
|
value = replacerFunc.call(holder, key, value)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (value instanceof Number) {
|
||||||
|
value = Number(value)
|
||||||
|
} else if (value instanceof String) {
|
||||||
|
value = String(value)
|
||||||
|
} else if (value instanceof Boolean) {
|
||||||
|
value = value.valueOf()
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (value) {
|
||||||
|
case null: return 'null'
|
||||||
|
case true: return 'true'
|
||||||
|
case false: return 'false'
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof value === 'string') {
|
||||||
|
return quoteString(value, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof value === 'number') {
|
||||||
|
return String(value)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof value === 'object') {
|
||||||
|
return Array.isArray(value) ? serializeArray(value) : serializeObject(value)
|
||||||
|
}
|
||||||
|
|
||||||
|
return undefined
|
||||||
|
}
|
||||||
|
|
||||||
|
function quoteString (value) {
|
||||||
|
const quotes = {
|
||||||
|
"'": 0.1,
|
||||||
|
'"': 0.2,
|
||||||
|
}
|
||||||
|
|
||||||
|
const replacements = {
|
||||||
|
"'": "\\'",
|
||||||
|
'"': '\\"',
|
||||||
|
'\\': '\\\\',
|
||||||
|
'\b': '\\b',
|
||||||
|
'\f': '\\f',
|
||||||
|
'\n': '\\n',
|
||||||
|
'\r': '\\r',
|
||||||
|
'\t': '\\t',
|
||||||
|
'\v': '\\v',
|
||||||
|
'\0': '\\0',
|
||||||
|
'\u2028': '\\u2028',
|
||||||
|
'\u2029': '\\u2029',
|
||||||
|
}
|
||||||
|
|
||||||
|
let product = ''
|
||||||
|
|
||||||
|
for (let i = 0; i < value.length; i++) {
|
||||||
|
const c = value[i]
|
||||||
|
switch (c) {
|
||||||
|
case "'":
|
||||||
|
case '"':
|
||||||
|
quotes[c]++
|
||||||
|
product += c
|
||||||
|
continue
|
||||||
|
|
||||||
|
case '\0':
|
||||||
|
if (util.isDigit(value[i + 1])) {
|
||||||
|
product += '\\x00'
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (replacements[c]) {
|
||||||
|
product += replacements[c]
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if (c < ' ') {
|
||||||
|
let hexString = c.charCodeAt(0).toString(16)
|
||||||
|
product += '\\x' + ('00' + hexString).substring(hexString.length)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
product += c
|
||||||
|
}
|
||||||
|
|
||||||
|
const quoteChar = quote || Object.keys(quotes).reduce((a, b) => (quotes[a] < quotes[b]) ? a : b)
|
||||||
|
|
||||||
|
product = product.replace(new RegExp(quoteChar, 'g'), replacements[quoteChar])
|
||||||
|
|
||||||
|
return quoteChar + product + quoteChar
|
||||||
|
}
|
||||||
|
|
||||||
|
function serializeObject (value) {
|
||||||
|
if (stack.indexOf(value) >= 0) {
|
||||||
|
throw TypeError('Converting circular structure to JSON5')
|
||||||
|
}
|
||||||
|
|
||||||
|
stack.push(value)
|
||||||
|
|
||||||
|
let stepback = indent
|
||||||
|
indent = indent + gap
|
||||||
|
|
||||||
|
let keys = propertyList || Object.keys(value)
|
||||||
|
let partial = []
|
||||||
|
for (const key of keys) {
|
||||||
|
const propertyString = serializeProperty(key, value)
|
||||||
|
if (propertyString !== undefined) {
|
||||||
|
let member = serializeKey(key) + ':'
|
||||||
|
if (gap !== '') {
|
||||||
|
member += ' '
|
||||||
|
}
|
||||||
|
member += propertyString
|
||||||
|
partial.push(member)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let final
|
||||||
|
if (partial.length === 0) {
|
||||||
|
final = '{}'
|
||||||
|
} else {
|
||||||
|
let properties
|
||||||
|
if (gap === '') {
|
||||||
|
properties = partial.join(',')
|
||||||
|
final = '{' + properties + '}'
|
||||||
|
} else {
|
||||||
|
let separator = ',\n' + indent
|
||||||
|
properties = partial.join(separator)
|
||||||
|
final = '{\n' + indent + properties + ',\n' + stepback + '}'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
stack.pop()
|
||||||
|
indent = stepback
|
||||||
|
return final
|
||||||
|
}
|
||||||
|
|
||||||
|
function serializeKey (key) {
|
||||||
|
if (key.length === 0) {
|
||||||
|
return quoteString(key, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
const firstChar = String.fromCodePoint(key.codePointAt(0))
|
||||||
|
if (!util.isIdStartChar(firstChar)) {
|
||||||
|
return quoteString(key, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let i = firstChar.length; i < key.length; i++) {
|
||||||
|
if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) {
|
||||||
|
return quoteString(key, true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return key
|
||||||
|
}
|
||||||
|
|
||||||
|
function serializeArray (value) {
|
||||||
|
if (stack.indexOf(value) >= 0) {
|
||||||
|
throw TypeError('Converting circular structure to JSON5')
|
||||||
|
}
|
||||||
|
|
||||||
|
stack.push(value)
|
||||||
|
|
||||||
|
let stepback = indent
|
||||||
|
indent = indent + gap
|
||||||
|
|
||||||
|
let partial = []
|
||||||
|
for (let i = 0; i < value.length; i++) {
|
||||||
|
const propertyString = serializeProperty(String(i), value)
|
||||||
|
partial.push((propertyString !== undefined) ? propertyString : 'null')
|
||||||
|
}
|
||||||
|
|
||||||
|
let final
|
||||||
|
if (partial.length === 0) {
|
||||||
|
final = '[]'
|
||||||
|
} else {
|
||||||
|
if (gap === '') {
|
||||||
|
let properties = partial.join(',')
|
||||||
|
final = '[' + properties + ']'
|
||||||
|
} else {
|
||||||
|
let separator = ',\n' + indent
|
||||||
|
let properties = partial.join(separator)
|
||||||
|
final = '[\n' + indent + properties + ',\n' + stepback + ']'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
stack.pop()
|
||||||
|
indent = stepback
|
||||||
|
return final
|
||||||
|
}
|
||||||
|
}
|
3
node_modules/json5/lib/unicode.d.ts
generated
vendored
Normal file
3
node_modules/json5/lib/unicode.d.ts
generated
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
export declare const Space_Separator: RegExp
|
||||||
|
export declare const ID_Start: RegExp
|
||||||
|
export declare const ID_Continue: RegExp
|
4
node_modules/json5/lib/unicode.js
generated
vendored
Normal file
4
node_modules/json5/lib/unicode.js
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
5
node_modules/json5/lib/util.d.ts
generated
vendored
Normal file
5
node_modules/json5/lib/util.d.ts
generated
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
export declare function isSpaceSeparator(c?: string): boolean
|
||||||
|
export declare function isIdStartChar(c?: string): boolean
|
||||||
|
export declare function isIdContinueChar(c?: string): boolean
|
||||||
|
export declare function isDigit(c?: string): boolean
|
||||||
|
export declare function isHexDigit(c?: string): boolean
|
35
node_modules/json5/lib/util.js
generated
vendored
Normal file
35
node_modules/json5/lib/util.js
generated
vendored
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
const unicode = require('../lib/unicode')
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
isSpaceSeparator (c) {
|
||||||
|
return typeof c === 'string' && unicode.Space_Separator.test(c)
|
||||||
|
},
|
||||||
|
|
||||||
|
isIdStartChar (c) {
|
||||||
|
return typeof c === 'string' && (
|
||||||
|
(c >= 'a' && c <= 'z') ||
|
||||||
|
(c >= 'A' && c <= 'Z') ||
|
||||||
|
(c === '$') || (c === '_') ||
|
||||||
|
unicode.ID_Start.test(c)
|
||||||
|
)
|
||||||
|
},
|
||||||
|
|
||||||
|
isIdContinueChar (c) {
|
||||||
|
return typeof c === 'string' && (
|
||||||
|
(c >= 'a' && c <= 'z') ||
|
||||||
|
(c >= 'A' && c <= 'Z') ||
|
||||||
|
(c >= '0' && c <= '9') ||
|
||||||
|
(c === '$') || (c === '_') ||
|
||||||
|
(c === '\u200C') || (c === '\u200D') ||
|
||||||
|
unicode.ID_Continue.test(c)
|
||||||
|
)
|
||||||
|
},
|
||||||
|
|
||||||
|
isDigit (c) {
|
||||||
|
return typeof c === 'string' && /[0-9]/.test(c)
|
||||||
|
},
|
||||||
|
|
||||||
|
isHexDigit (c) {
|
||||||
|
return typeof c === 'string' && /[0-9A-Fa-f]/.test(c)
|
||||||
|
},
|
||||||
|
}
|
72
node_modules/json5/package.json
generated
vendored
Normal file
72
node_modules/json5/package.json
generated
vendored
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
{
|
||||||
|
"name": "json5",
|
||||||
|
"version": "2.2.3",
|
||||||
|
"description": "JSON for Humans",
|
||||||
|
"main": "lib/index.js",
|
||||||
|
"module": "dist/index.mjs",
|
||||||
|
"bin": "lib/cli.js",
|
||||||
|
"browser": "dist/index.js",
|
||||||
|
"types": "lib/index.d.ts",
|
||||||
|
"files": [
|
||||||
|
"lib/",
|
||||||
|
"dist/"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"build": "rollup -c",
|
||||||
|
"build-package": "node build/package.js",
|
||||||
|
"build-unicode": "node build/unicode.js",
|
||||||
|
"coverage": "tap --coverage-report html test",
|
||||||
|
"lint": "eslint --fix .",
|
||||||
|
"lint-report": "eslint .",
|
||||||
|
"prepublishOnly": "npm run production",
|
||||||
|
"preversion": "npm run production",
|
||||||
|
"production": "run-s test build",
|
||||||
|
"tap": "tap -Rspec --100 test",
|
||||||
|
"test": "run-s lint-report tap",
|
||||||
|
"version": "npm run build-package && git add package.json5"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+https://github.com/json5/json5.git"
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"json",
|
||||||
|
"json5",
|
||||||
|
"es5",
|
||||||
|
"es2015",
|
||||||
|
"ecmascript"
|
||||||
|
],
|
||||||
|
"author": "Aseem Kishore <aseem.kishore@gmail.com>",
|
||||||
|
"contributors": [
|
||||||
|
"Max Nanasy <max.nanasy@gmail.com>",
|
||||||
|
"Andrew Eisenberg <andrew@eisenberg.as>",
|
||||||
|
"Jordan Tucker <jordanbtucker@gmail.com>"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/json5/json5/issues"
|
||||||
|
},
|
||||||
|
"homepage": "http://json5.org/",
|
||||||
|
"devDependencies": {
|
||||||
|
"core-js": "^2.6.5",
|
||||||
|
"eslint": "^5.15.3",
|
||||||
|
"eslint-config-standard": "^12.0.0",
|
||||||
|
"eslint-plugin-import": "^2.16.0",
|
||||||
|
"eslint-plugin-node": "^8.0.1",
|
||||||
|
"eslint-plugin-promise": "^4.0.1",
|
||||||
|
"eslint-plugin-standard": "^4.0.0",
|
||||||
|
"npm-run-all": "^4.1.5",
|
||||||
|
"regenerate": "^1.4.0",
|
||||||
|
"rollup": "^0.64.1",
|
||||||
|
"rollup-plugin-buble": "^0.19.6",
|
||||||
|
"rollup-plugin-commonjs": "^9.2.1",
|
||||||
|
"rollup-plugin-node-resolve": "^3.4.0",
|
||||||
|
"rollup-plugin-terser": "^1.0.1",
|
||||||
|
"sinon": "^6.3.5",
|
||||||
|
"tap": "^12.6.0",
|
||||||
|
"unicode-10.0.0": "^0.7.5"
|
||||||
|
}
|
||||||
|
}
|
25
package-lock.json
generated
25
package-lock.json
generated
@ -1,10 +1,11 @@
|
|||||||
{
|
{
|
||||||
"name": "DNDZitateGrabber",
|
"name": "DNDQoteGrabber",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"config": "^3.3.9",
|
||||||
"discord-fetch-all": "^3.0.2",
|
"discord-fetch-all": "^3.0.2",
|
||||||
"discord.js": "^14.14.1"
|
"discord.js": "^14.14.1"
|
||||||
}
|
}
|
||||||
@ -211,6 +212,17 @@
|
|||||||
"node": ">= 0.8"
|
"node": ">= 0.8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/config": {
|
||||||
|
"version": "3.3.9",
|
||||||
|
"resolved": "https://registry.npmjs.org/config/-/config-3.3.9.tgz",
|
||||||
|
"integrity": "sha512-G17nfe+cY7kR0wVpc49NCYvNtelm/pPy8czHoFkAgtV1lkmcp7DHtWCdDu+C9Z7gb2WVqa9Tm3uF9aKaPbCfhg==",
|
||||||
|
"dependencies": {
|
||||||
|
"json5": "^2.2.3"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 10.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/delayed-stream": {
|
"node_modules/delayed-stream": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
||||||
@ -314,6 +326,17 @@
|
|||||||
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
|
||||||
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
|
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
|
||||||
},
|
},
|
||||||
|
"node_modules/json5": {
|
||||||
|
"version": "2.2.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
|
||||||
|
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
|
||||||
|
"bin": {
|
||||||
|
"json5": "lib/cli.js"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/lodash": {
|
"node_modules/lodash": {
|
||||||
"version": "4.17.21",
|
"version": "4.17.21",
|
||||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
|
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"config": "^3.3.9",
|
||||||
"discord-fetch-all": "^3.0.2",
|
"discord-fetch-all": "^3.0.2",
|
||||||
"discord.js": "^14.14.1"
|
"discord.js": "^14.14.1"
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user