@gesslar/licensed 1.1.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.txt +12 -0
- package/README.md +63 -7
- package/package.json +18 -8
- package/src/cli.js +11 -75
- package/src/lib.js +123 -0
- package/types/lib.d.ts +63 -0
- package/types/lib.d.ts.map +1 -0
- package/UNLICENSE.txt +0 -24
package/LICENSE.txt
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
Copyright (C) 2026 by Brian M. Workman bmw@gesslar.dev
|
|
2
|
+
|
|
3
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
4
|
+
purpose with or without fee is hereby granted.
|
|
5
|
+
|
|
6
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
7
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
8
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
9
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
10
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
11
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
12
|
+
PERFORMANCE OF THIS SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
# @gesslar/licensed
|
|
2
2
|
|
|
3
|
-
A simple CLI
|
|
4
|
-
reads your `package.json`, finds your license file, and outputs
|
|
5
|
-
markdown
|
|
3
|
+
A simple CLI and API for generating license documentation for Node.js projects.
|
|
4
|
+
It reads your `package.json`, finds your license file, and outputs formatted
|
|
5
|
+
markdown or structured JSON listing your project license and all dependency
|
|
6
|
+
licenses.
|
|
6
7
|
|
|
7
8
|
## Installation
|
|
8
9
|
|
|
@@ -16,7 +17,7 @@ Or as a dev dependency:
|
|
|
16
17
|
npm install --save-dev @gesslar/licensed
|
|
17
18
|
```
|
|
18
19
|
|
|
19
|
-
## Usage
|
|
20
|
+
## CLI Usage
|
|
20
21
|
|
|
21
22
|
Run from your project directory:
|
|
22
23
|
|
|
@@ -30,18 +31,73 @@ includes:
|
|
|
30
31
|
- Your project's license with a link to the license file
|
|
31
32
|
- A table of all dependencies with their licenses and repository links
|
|
32
33
|
|
|
34
|
+
## API Usage
|
|
35
|
+
|
|
36
|
+
You can also use `licensed` programmatically. Pass a
|
|
37
|
+
[`FileObject`](https://github.com/gesslar/toolkit) pointing to a project's
|
|
38
|
+
`package.json` and get back structured JSON.
|
|
39
|
+
|
|
40
|
+
```js
|
|
41
|
+
import {licensed} from "@gesslar/licensed"
|
|
42
|
+
import {DirectoryObject} from "@gesslar/toolkit"
|
|
43
|
+
|
|
44
|
+
const cwd = new DirectoryObject("/path/to/project")
|
|
45
|
+
const jsonFile = cwd.getFile("package.json")
|
|
46
|
+
const data = await licensed(jsonFile)
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
The returned object has the following shape:
|
|
50
|
+
|
|
51
|
+
```js
|
|
52
|
+
{
|
|
53
|
+
name: "my-package", // package name, or null
|
|
54
|
+
license: "MIT", // SPDX license identifier, or null
|
|
55
|
+
licenseFile: "LICENSE.txt", // detected license filename, or null
|
|
56
|
+
publicDomain: false, // true for Unlicense, 0BSD, CC0-1.0, MIT-0
|
|
57
|
+
dependencies: [
|
|
58
|
+
{ name: "lodash", license: "MIT", repo: "https://github.com/lodash/lodash" },
|
|
59
|
+
{ name: "private-pkg", license: "Unknown", repo: null },
|
|
60
|
+
]
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Generating Markdown from the API
|
|
65
|
+
|
|
66
|
+
Use `buildLicenseSection` to turn the data into the same markdown the CLI
|
|
67
|
+
produces:
|
|
68
|
+
|
|
69
|
+
```js
|
|
70
|
+
import {licensed, buildLicenseSection} from "@gesslar/licensed"
|
|
71
|
+
|
|
72
|
+
const data = await licensed(jsonFile)
|
|
73
|
+
const markdown = buildLicenseSection({
|
|
74
|
+
name: data.name,
|
|
75
|
+
license: data.license,
|
|
76
|
+
licenseFile: data.licenseFile,
|
|
77
|
+
depResults: data.dependencies,
|
|
78
|
+
})
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Other Exports
|
|
82
|
+
|
|
83
|
+
- `cleanUrl(raw)` - Normalizes repository URLs (strips `git+`, `.git`,
|
|
84
|
+
converts SSH/git protocols to HTTPS)
|
|
85
|
+
- `npmView(dep)` - Queries the npm registry for a package's license and
|
|
86
|
+
repository URL
|
|
87
|
+
- `buildLicenseSection(options)` - Generates a markdown license section from
|
|
88
|
+
structured data
|
|
89
|
+
|
|
33
90
|
## Requirements
|
|
34
91
|
|
|
35
92
|
- Node.js v24.13.0 or higher
|
|
36
93
|
|
|
37
94
|
## License
|
|
38
95
|
|
|
39
|
-
licensed is released into the public domain under the
|
|
40
|
-
[Unlicense](UNLICENSE.txt).
|
|
96
|
+
`@gesslar/licensed` is released into the public domain under the [0BSD](LICENSE.txt).
|
|
41
97
|
|
|
42
98
|
This package includes or depends on third-party components under their own
|
|
43
99
|
licenses:
|
|
44
100
|
|
|
45
101
|
| Dependency | License |
|
|
46
102
|
| --- | --- |
|
|
47
|
-
| [@gesslar/toolkit](https://github.com/gesslar/toolkit) |
|
|
103
|
+
| [@gesslar/toolkit](https://github.com/gesslar/toolkit) | 0BSD |
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gesslar/licensed",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"description": "CLI and library for generating license sections in README.md",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "git+https://github.com/gesslar/licensed.git"
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"name": "gesslar",
|
|
12
12
|
"url": "https://gesslar.dev"
|
|
13
13
|
},
|
|
14
|
-
"license": "
|
|
14
|
+
"license": "0BSD",
|
|
15
15
|
"type": "module",
|
|
16
16
|
"homepage": "https://github.com/gesslar/licensed#readme",
|
|
17
17
|
"scripts": {
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
"build": "mkdir -pv ./dist && npm pack --pack-destination ./dist/",
|
|
20
20
|
"types": "node -e \"require('fs').rmSync('types',{recursive:true,force:true});\" && tsc -p tsconfig.types.json",
|
|
21
21
|
"exec": "node ./src/cli.js",
|
|
22
|
+
"test": "node --test tests/**/*.test.js",
|
|
22
23
|
"lint": "eslint src/",
|
|
23
24
|
"submit": "npm publish --access public --//registry.npmjs.org/:_authToken=\"${NPM_ACCESS_TOKEN}\"",
|
|
24
25
|
"update": "npx npm-check-updates -u && npm install",
|
|
@@ -28,18 +29,27 @@
|
|
|
28
29
|
"major": "npm version major"
|
|
29
30
|
},
|
|
30
31
|
"dependencies": {
|
|
31
|
-
"@gesslar/toolkit": "^
|
|
32
|
+
"@gesslar/toolkit": "^5.0.1"
|
|
32
33
|
},
|
|
33
34
|
"devDependencies": {
|
|
34
|
-
"@gesslar/uglier": "^2.
|
|
35
|
-
"eslint": "^10.0
|
|
35
|
+
"@gesslar/uglier": "^2.4.0",
|
|
36
|
+
"eslint": "^10.2.0",
|
|
37
|
+
"typescript": "^6.0.2"
|
|
36
38
|
},
|
|
37
39
|
"engines": {
|
|
38
40
|
"node": ">=v24.13.0"
|
|
39
41
|
},
|
|
40
42
|
"files": [
|
|
41
|
-
"
|
|
42
|
-
"src/**/*.js"
|
|
43
|
+
"LICENSE.txt",
|
|
44
|
+
"src/**/*.js",
|
|
45
|
+
"types/**/*.d.ts",
|
|
46
|
+
"types/**/*.d.ts.map"
|
|
43
47
|
],
|
|
48
|
+
"exports": {
|
|
49
|
+
".": {
|
|
50
|
+
"types": "./types/lib.d.ts",
|
|
51
|
+
"default": "./src/lib.js"
|
|
52
|
+
}
|
|
53
|
+
},
|
|
44
54
|
"bin": "./src/cli.js"
|
|
45
55
|
}
|
package/src/cli.js
CHANGED
|
@@ -1,81 +1,17 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
import * as TK from "@gesslar/toolkit"
|
|
4
|
+
import {buildLicenseSection, licensed} from "./lib.js"
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
|
|
6
|
+
const cwd = new TK.DirectoryObject(TK.FileSystem.cwd)
|
|
7
|
+
const jsonFile = cwd.getFile("package.json")
|
|
8
|
+
const data = await licensed(jsonFile)
|
|
7
9
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
+
const output = buildLicenseSection({
|
|
11
|
+
name: data.name,
|
|
12
|
+
license: data.license,
|
|
13
|
+
licenseFile: data.licenseFile,
|
|
14
|
+
depResults: data.dependencies,
|
|
15
|
+
})
|
|
10
16
|
|
|
11
|
-
|
|
12
|
-
const jsonFile = cwd.getFile("package.json")
|
|
13
|
-
const pkg = await jsonFile.loadData()
|
|
14
|
-
|
|
15
|
-
// Detect license file in project root
|
|
16
|
-
const licenseFile = (await cwd.glob("{LICEN[CS]E,UNLICEN[CS]E}{,.txt,.md}"))?.files[0]
|
|
17
|
-
|
|
18
|
-
const name = pkg.name ?? "this project"
|
|
19
|
-
const license = pkg.license ?? "Unknown"
|
|
20
|
-
|
|
21
|
-
const publicDomain = ["Unlicense", "0BSD", "CC0-1.0"]
|
|
22
|
-
const phrase = publicDomain.includes(license)
|
|
23
|
-
? `\`${name}\` is released into the public domain under the`
|
|
24
|
-
: `\`${name}\` is released under the`
|
|
25
|
-
|
|
26
|
-
const lines = [
|
|
27
|
-
"## License",
|
|
28
|
-
"",
|
|
29
|
-
`${phrase} [${license}](${licenseFile?.name ?? "LICENSE"}).`,
|
|
30
|
-
]
|
|
31
|
-
|
|
32
|
-
const deps = Object.keys(pkg.dependencies ?? {}).sort()
|
|
33
|
-
|
|
34
|
-
if(deps.length) {
|
|
35
|
-
lines.push(
|
|
36
|
-
"",
|
|
37
|
-
"This package includes or depends on third-party components under their own",
|
|
38
|
-
"licenses:",
|
|
39
|
-
"",
|
|
40
|
-
"| Dependency | License |",
|
|
41
|
-
"| --- | --- |",
|
|
42
|
-
)
|
|
43
|
-
|
|
44
|
-
const results = await Promise.all(deps.map(dep => npmView(dep)))
|
|
45
|
-
|
|
46
|
-
for(const {name: dep, license: depLicense, repo} of results) {
|
|
47
|
-
const link = repo ? `[${dep}](${repo})` : dep
|
|
48
|
-
lines.push(`| ${link} | ${depLicense} |`)
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
TK.Glog(lines.join("\n"))
|
|
53
|
-
|
|
54
|
-
async function npmView(dep) {
|
|
55
|
-
try {
|
|
56
|
-
const {stdout} = await exec(
|
|
57
|
-
"npm", ["view", dep, "repository.url", "license", "--json"]
|
|
58
|
-
)
|
|
59
|
-
const data = JSON.parse(stdout)
|
|
60
|
-
|
|
61
|
-
return {
|
|
62
|
-
name: dep,
|
|
63
|
-
license: data.license ?? "Unknown",
|
|
64
|
-
repo: cleanUrl(data["repository.url"]),
|
|
65
|
-
}
|
|
66
|
-
} catch {
|
|
67
|
-
return {name: dep, license: "Unknown", repo: null}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
function cleanUrl(raw) {
|
|
72
|
-
if(!raw)
|
|
73
|
-
return null
|
|
74
|
-
|
|
75
|
-
return raw
|
|
76
|
-
.replace(/^git\+/, "")
|
|
77
|
-
.replace(/\.git$/, "")
|
|
78
|
-
.replace(/^ssh:\/\/git@github\.com/, "https://github.com")
|
|
79
|
-
.replace(/^git:\/\//, "https://")
|
|
80
|
-
}
|
|
81
|
-
})()
|
|
17
|
+
TK.Glog(output)
|
package/src/lib.js
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import * as TK from "@gesslar/toolkit"
|
|
2
|
+
import {execFile} from "node:child_process"
|
|
3
|
+
import {promisify} from "node:util"
|
|
4
|
+
|
|
5
|
+
const exec = promisify(execFile)
|
|
6
|
+
|
|
7
|
+
const PUBLIC_DOMAIN = ["Unlicense", "0BSD", "CC0-1.0", "MIT-0"]
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Cleans a repository URL to a normalized HTTPS form.
|
|
11
|
+
*
|
|
12
|
+
* @param {string|null|undefined} raw - The raw repository URL.
|
|
13
|
+
* @returns {string|null} The cleaned URL or null.
|
|
14
|
+
*/
|
|
15
|
+
export function cleanUrl(raw) {
|
|
16
|
+
if(!raw)
|
|
17
|
+
return null
|
|
18
|
+
|
|
19
|
+
return raw
|
|
20
|
+
.replace(/^git\+/, "")
|
|
21
|
+
.replace(/\.git$/, "")
|
|
22
|
+
.replace(/^ssh:\/\/git@github\.com/, "https://github.com")
|
|
23
|
+
.replace(/^git:\/\//, "https://")
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Queries npm registry for a dependency's license and repository URL.
|
|
28
|
+
*
|
|
29
|
+
* @param {string} dep - The dependency name.
|
|
30
|
+
* @returns {Promise<{name: string, license: string, repo: string|null}>}
|
|
31
|
+
* The dependency info.
|
|
32
|
+
*/
|
|
33
|
+
export async function npmView(dep) {
|
|
34
|
+
try {
|
|
35
|
+
const {stdout} = await exec(
|
|
36
|
+
"npm", ["view", dep, "repository.url", "license", "--json"]
|
|
37
|
+
)
|
|
38
|
+
const data = JSON.parse(stdout)
|
|
39
|
+
|
|
40
|
+
return {
|
|
41
|
+
name: dep,
|
|
42
|
+
license: data.license ?? "Unknown",
|
|
43
|
+
repo: cleanUrl(data["repository.url"]),
|
|
44
|
+
}
|
|
45
|
+
} catch {
|
|
46
|
+
return {name: dep, license: "Unknown", repo: null}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Builds the markdown license section lines.
|
|
52
|
+
*
|
|
53
|
+
* @param {object} options - The options.
|
|
54
|
+
* @param {string|undefined} options.name - Package name.
|
|
55
|
+
* @param {string|undefined} options.license - Package license identifier.
|
|
56
|
+
* @param {string|undefined} options.licenseFile - License file name.
|
|
57
|
+
* @param {Array<{name: string, license: string, repo: string|null}>}
|
|
58
|
+
* options.depResults - Dependency info results.
|
|
59
|
+
* @returns {string} The formatted markdown string.
|
|
60
|
+
*/
|
|
61
|
+
export function buildLicenseSection({name, license, licenseFile, depResults}) {
|
|
62
|
+
const projName = name ?? "this project"
|
|
63
|
+
const projLicense = license ?? "Unknown"
|
|
64
|
+
|
|
65
|
+
const phrase = PUBLIC_DOMAIN.includes(projLicense)
|
|
66
|
+
? `\`${projName}\` is released into the public domain under the`
|
|
67
|
+
: `\`${projName}\` is released under the`
|
|
68
|
+
|
|
69
|
+
const lines = [
|
|
70
|
+
"## License",
|
|
71
|
+
"",
|
|
72
|
+
`${phrase} [${projLicense}](${licenseFile ?? "LICENSE"}).`,
|
|
73
|
+
]
|
|
74
|
+
|
|
75
|
+
if(depResults?.length) {
|
|
76
|
+
lines.push(
|
|
77
|
+
"",
|
|
78
|
+
"This package includes or depends on third-party components under their own",
|
|
79
|
+
"licenses:",
|
|
80
|
+
"",
|
|
81
|
+
"| Dependency | License |",
|
|
82
|
+
"| --- | --- |",
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
for(const {name: dep, license: depLicense, repo} of depResults) {
|
|
86
|
+
const link = repo ? `[${dep}](${repo})` : dep
|
|
87
|
+
lines.push(`| ${link} | ${depLicense} |`)
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
return lines.join("\n")
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Generates structured license data for a project.
|
|
96
|
+
*
|
|
97
|
+
* @param {TK.FileObject} jsonFile - A FileObject pointing to the project's
|
|
98
|
+
* package.json.
|
|
99
|
+
* @returns {Promise<{name: string|null, license: string|null,
|
|
100
|
+
* licenseFile: string|null, publicDomain: boolean,
|
|
101
|
+
* dependencies: Array<{name: string, license: string,
|
|
102
|
+
* repo: string|null}>}>} Structured license data.
|
|
103
|
+
*/
|
|
104
|
+
export async function licensed(jsonFile) {
|
|
105
|
+
const pkg = await jsonFile.loadData()
|
|
106
|
+
const cwd = jsonFile.parent
|
|
107
|
+
|
|
108
|
+
const licenseFileObj =
|
|
109
|
+
(await cwd.glob("{LICEN[CS]E,UNLICEN[CS]E}{,.txt,.md}"))?.files[0]
|
|
110
|
+
|
|
111
|
+
const deps = Object.keys(pkg.dependencies ?? {}).sort()
|
|
112
|
+
const depResults = deps.length
|
|
113
|
+
? await Promise.all(deps.map(dep => npmView(dep)))
|
|
114
|
+
: []
|
|
115
|
+
|
|
116
|
+
return {
|
|
117
|
+
name: pkg.name ?? null,
|
|
118
|
+
license: pkg.license ?? null,
|
|
119
|
+
licenseFile: licenseFileObj?.name ?? null,
|
|
120
|
+
publicDomain: PUBLIC_DOMAIN.includes(pkg.license),
|
|
121
|
+
dependencies: depResults,
|
|
122
|
+
}
|
|
123
|
+
}
|
package/types/lib.d.ts
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cleans a repository URL to a normalized HTTPS form.
|
|
3
|
+
*
|
|
4
|
+
* @param {string|null|undefined} raw - The raw repository URL.
|
|
5
|
+
* @returns {string|null} The cleaned URL or null.
|
|
6
|
+
*/
|
|
7
|
+
export function cleanUrl(raw: string | null | undefined): string | null;
|
|
8
|
+
/**
|
|
9
|
+
* Queries npm registry for a dependency's license and repository URL.
|
|
10
|
+
*
|
|
11
|
+
* @param {string} dep - The dependency name.
|
|
12
|
+
* @returns {Promise<{name: string, license: string, repo: string|null}>}
|
|
13
|
+
* The dependency info.
|
|
14
|
+
*/
|
|
15
|
+
export function npmView(dep: string): Promise<{
|
|
16
|
+
name: string;
|
|
17
|
+
license: string;
|
|
18
|
+
repo: string | null;
|
|
19
|
+
}>;
|
|
20
|
+
/**
|
|
21
|
+
* Builds the markdown license section lines.
|
|
22
|
+
*
|
|
23
|
+
* @param {object} options - The options.
|
|
24
|
+
* @param {string|undefined} options.name - Package name.
|
|
25
|
+
* @param {string|undefined} options.license - Package license identifier.
|
|
26
|
+
* @param {string|undefined} options.licenseFile - License file name.
|
|
27
|
+
* @param {Array<{name: string, license: string, repo: string|null}>}
|
|
28
|
+
* options.depResults - Dependency info results.
|
|
29
|
+
* @returns {string} The formatted markdown string.
|
|
30
|
+
*/
|
|
31
|
+
export function buildLicenseSection({ name, license, licenseFile, depResults }: {
|
|
32
|
+
name: string | undefined;
|
|
33
|
+
license: string | undefined;
|
|
34
|
+
licenseFile: string | undefined;
|
|
35
|
+
depResults: Array<{
|
|
36
|
+
name: string;
|
|
37
|
+
license: string;
|
|
38
|
+
repo: string | null;
|
|
39
|
+
}>;
|
|
40
|
+
}): string;
|
|
41
|
+
/**
|
|
42
|
+
* Generates structured license data for a project.
|
|
43
|
+
*
|
|
44
|
+
* @param {TK.FileObject} jsonFile - A FileObject pointing to the project's
|
|
45
|
+
* package.json.
|
|
46
|
+
* @returns {Promise<{name: string|null, license: string|null,
|
|
47
|
+
* licenseFile: string|null, publicDomain: boolean,
|
|
48
|
+
* dependencies: Array<{name: string, license: string,
|
|
49
|
+
* repo: string|null}>}>} Structured license data.
|
|
50
|
+
*/
|
|
51
|
+
export function licensed(jsonFile: TK.FileObject): Promise<{
|
|
52
|
+
name: string | null;
|
|
53
|
+
license: string | null;
|
|
54
|
+
licenseFile: string | null;
|
|
55
|
+
publicDomain: boolean;
|
|
56
|
+
dependencies: Array<{
|
|
57
|
+
name: string;
|
|
58
|
+
license: string;
|
|
59
|
+
repo: string | null;
|
|
60
|
+
}>;
|
|
61
|
+
}>;
|
|
62
|
+
import * as TK from "@gesslar/toolkit";
|
|
63
|
+
//# sourceMappingURL=lib.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.js"],"names":[],"mappings":"AAQA;;;;;GAKG;AACH,8BAHW,MAAM,GAAC,IAAI,GAAC,SAAS,GACnB,MAAM,GAAC,IAAI,CAWvB;AAED;;;;;;GAMG;AACH,6BAJW,MAAM,GACJ,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAC,IAAI,CAAA;CAAC,CAAC,CAkBvE;AAED;;;;;;;;;;GAUG;AACH,gFAPG;IAAkC,IAAI,EAA9B,MAAM,GAAC,SAAS;IACU,OAAO,EAAjC,MAAM,GAAC,SAAS;IACU,WAAW,EAArC,MAAM,GAAC,SAAS;IAEd,UAAU,EADZ,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAC,IAAI,CAAA;KAAC,CAAC;CAEjE,GAAU,MAAM,CAiClB;AAED;;;;;;;;;GASG;AACH,mCAPW,EAAE,CAAC,UAAU,GAEX,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,GAAC,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,GAAC,IAAI,CAAC;IACzD,WAAW,EAAE,MAAM,GAAC,IAAI,CAAC;IAAC,YAAY,EAAE,OAAO,CAAC;IAChD,YAAY,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QACnD,IAAI,EAAE,MAAM,GAAC,IAAI,CAAA;KAAC,CAAC,CAAA;CAAC,CAAC,CAqBzB;oBA1HmB,kBAAkB"}
|
package/UNLICENSE.txt
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
This is free and unencumbered software released into the public domain.
|
|
2
|
-
|
|
3
|
-
Anyone is free to copy, modify, publish, use, compile, sell, or
|
|
4
|
-
distribute this software, either in source code form or as a compiled
|
|
5
|
-
binary, for any purpose, commercial or non-commercial, and by any
|
|
6
|
-
means.
|
|
7
|
-
|
|
8
|
-
In jurisdictions that recognize copyright laws, the author or authors
|
|
9
|
-
of this software dedicate any and all copyright interest in the
|
|
10
|
-
software to the public domain. We make this dedication for the benefit
|
|
11
|
-
of the public at large and to the detriment of our heirs and
|
|
12
|
-
successors. We intend this dedication to be an overt act of
|
|
13
|
-
relinquishment in perpetuity of all present and future rights to this
|
|
14
|
-
software under copyright law.
|
|
15
|
-
|
|
16
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
17
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
18
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
19
|
-
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
|
20
|
-
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
|
21
|
-
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
22
|
-
OTHER DEALINGS IN THE SOFTWARE.
|
|
23
|
-
|
|
24
|
-
For more information, please refer to <https://unlicense.org>
|