Compare commits
No commits in common. "4357ed82c20a16436a08572ecc2e16674ae97ed2" and "7104d5ec11d685f3de7b7ddfa6137cee7a65679d" have entirely different histories.
4357ed82c2
...
7104d5ec11
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
config.json
|
|
@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"token": "your-token-goes-here",
|
|
||||||
"path": "funfacts.json"
|
|
||||||
}
|
|
9
main.js
9
main.js
@ -1,10 +1,6 @@
|
|||||||
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,
|
||||||
@ -37,7 +33,7 @@ async function parseMessages() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Write to JSON file
|
// Write to JSON file
|
||||||
fs.writeFileSync(outputFile, JSON.stringify(lines, null, 2));
|
fs.writeFileSync('/volume3/docker/docker_mkdocs/site/DND/Eigene Konfigurationen/funfacts.json', JSON.stringify(lines, null, 2));
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('An error occurred:', error);
|
console.error('An error occurred:', error);
|
||||||
}
|
}
|
||||||
@ -120,4 +116,5 @@ client.on('messageCreate', message => {
|
|||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
client.login(discordToken);
|
//Dont worry, I changed this token lol.
|
||||||
|
client.login('OTg0NDYxMDkyODkxODIwMTYy.GEYK76.eXLEGBVhcaav_F1_rxR0NOo0uLIKxtDk9ZnXxM');
|
16
node_modules/.bin/json5
generated
vendored
16
node_modules/.bin/json5
generated
vendored
@ -1,16 +0,0 @@
|
|||||||
#!/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
17
node_modules/.bin/json5.cmd
generated
vendored
@ -1,17 +0,0 @@
|
|||||||
@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
28
node_modules/.bin/json5.ps1
generated
vendored
@ -1,28 +0,0 @@
|
|||||||
#!/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": "DNDQoteGrabber",
|
"name": "DNDZitateGrabber",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
@ -205,17 +205,6 @@
|
|||||||
"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",
|
||||||
@ -319,17 +308,6 @@
|
|||||||
"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
23
node_modules/json5/LICENSE.md
generated
vendored
@ -1,23 +0,0 @@
|
|||||||
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
282
node_modules/json5/README.md
generated
vendored
@ -1,282 +0,0 @@
|
|||||||
# 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
1737
node_modules/json5/dist/index.js
generated
vendored
File diff suppressed because one or more lines are too long
1
node_modules/json5/dist/index.min.js
generated
vendored
1
node_modules/json5/dist/index.min.js
generated
vendored
File diff suppressed because one or more lines are too long
1
node_modules/json5/dist/index.min.mjs
generated
vendored
1
node_modules/json5/dist/index.min.mjs
generated
vendored
File diff suppressed because one or more lines are too long
1426
node_modules/json5/dist/index.mjs
generated
vendored
1426
node_modules/json5/dist/index.mjs
generated
vendored
File diff suppressed because one or more lines are too long
152
node_modules/json5/lib/cli.js
generated
vendored
152
node_modules/json5/lib/cli.js
generated
vendored
@ -1,152 +0,0 @@
|
|||||||
#!/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
4
node_modules/json5/lib/index.d.ts
generated
vendored
@ -1,4 +0,0 @@
|
|||||||
import parse = require('./parse')
|
|
||||||
import stringify = require('./stringify')
|
|
||||||
|
|
||||||
export {parse, stringify}
|
|
9
node_modules/json5/lib/index.js
generated
vendored
9
node_modules/json5/lib/index.js
generated
vendored
@ -1,9 +0,0 @@
|
|||||||
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
15
node_modules/json5/lib/parse.d.ts
generated
vendored
@ -1,15 +0,0 @@
|
|||||||
/**
|
|
||||||
* 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
1114
node_modules/json5/lib/parse.js
generated
vendored
File diff suppressed because it is too large
Load Diff
13
node_modules/json5/lib/register.js
generated
vendored
13
node_modules/json5/lib/register.js
generated
vendored
@ -1,13 +0,0 @@
|
|||||||
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
4
node_modules/json5/lib/require.js
generated
vendored
@ -1,4 +0,0 @@
|
|||||||
// 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
89
node_modules/json5/lib/stringify.d.ts
generated
vendored
@ -1,89 +0,0 @@
|
|||||||
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
261
node_modules/json5/lib/stringify.js
generated
vendored
@ -1,261 +0,0 @@
|
|||||||
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
3
node_modules/json5/lib/unicode.d.ts
generated
vendored
@ -1,3 +0,0 @@
|
|||||||
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
4
node_modules/json5/lib/unicode.js
generated
vendored
File diff suppressed because one or more lines are too long
5
node_modules/json5/lib/util.d.ts
generated
vendored
5
node_modules/json5/lib/util.d.ts
generated
vendored
@ -1,5 +0,0 @@
|
|||||||
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
35
node_modules/json5/lib/util.js
generated
vendored
@ -1,35 +0,0 @@
|
|||||||
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
72
node_modules/json5/package.json
generated
vendored
@ -1,72 +0,0 @@
|
|||||||
{
|
|
||||||
"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,11 +1,10 @@
|
|||||||
{
|
{
|
||||||
"name": "DNDQoteGrabber",
|
"name": "DNDZitateGrabber",
|
||||||
"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"
|
||||||
}
|
}
|
||||||
@ -212,17 +211,6 @@
|
|||||||
"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",
|
||||||
@ -326,17 +314,6 @@
|
|||||||
"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,6 +1,5 @@
|
|||||||
{
|
{
|
||||||
"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