├── .editorconfig
├── .eslintrc.js
├── .github
└── workflows
│ └── release.yml
├── .gitignore
├── CHANGELOG.md
├── LICENSE
├── README.md
├── docs
├── demo.gif
├── link_creation.gif
├── metacopy2.png
├── metacopy3.png
└── presentation.gif
├── manifest.json
├── metacopy
├── i18n
│ ├── index.ts
│ └── locales
│ │ ├── en.ts
│ │ └── fr.ts
├── main.ts
├── modal.ts
├── settings.ts
└── src
│ ├── metadata.ts
│ ├── pluginBehavior.ts
│ └── utils.ts
├── package.json
├── pnpm-lock.yaml
├── styles.css
├── tsconfig.json
└── versions.json
/.editorconfig:
--------------------------------------------------------------------------------
1 | # top-most EditorConfig file
2 | root = true
3 |
4 | [*]
5 | charset = utf-8
6 | insert_final_newline = true
7 | indent_style = tab
8 | indent_size = 4
9 | tab_width = 4
10 |
--------------------------------------------------------------------------------
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | "env": {
3 | "browser": true,
4 | "es2021": true,
5 | "node": true
6 | },
7 | "extends": [
8 | "eslint:recommended",
9 | "plugin:@typescript-eslint/recommended"
10 | ],
11 | "parser": "@typescript-eslint/parser",
12 | "parserOptions": {
13 | "ecmaVersion": "latest",
14 | "sourceType": "module"
15 | },
16 | "plugins": [
17 | "@typescript-eslint"
18 | ],
19 | "rules": {
20 | "indent": [
21 | "error",
22 | "tab"
23 | ],
24 | "linebreak-style": [
25 | "error",
26 | "windows"
27 | ],
28 | "quotes": [
29 | "error",
30 | "double"
31 | ],
32 | "semi": [
33 | "error",
34 | "always"
35 | ],
36 | "@typescript-eslint/ban-ts-comment": "off",
37 | }
38 | };
39 |
--------------------------------------------------------------------------------
/.github/workflows/release.yml:
--------------------------------------------------------------------------------
1 | name: Release Obsidian plugin
2 |
3 | on:
4 | workflow_dispatch:
5 | push:
6 | tags:
7 | - "*"
8 | env:
9 | PLUGIN_NAME: obsidian-metacopy # Change this to match the id of your plugin.
10 |
11 | jobs:
12 | build:
13 | runs-on: ubuntu-latest
14 |
15 | steps:
16 | - uses: actions/checkout@v3
17 | - name: Use Node.js
18 | uses: actions/setup-node@v3
19 | with:
20 | node-version: 18
21 |
22 | - name: Build
23 | id: build
24 | run: |
25 | npm install
26 | npm run build
27 | mkdir ${{ env.PLUGIN_NAME }}
28 | cp main.js styles.css ${{ env.PLUGIN_NAME }}
29 | - name: Copy files (beta)
30 | if: contains(github.ref, '-')
31 | run: |
32 | cp manifest-beta.json ${{ env.PLUGIN_NAME }}
33 | mv manifest-beta.json manifest.json
34 | - name: Copy files if not beta
35 | if: ${{ !contains(github.ref, '-') }}
36 | run: cp manifest.json ${{ env.PLUGIN_NAME }}
37 | - name: Create zip
38 | run: |
39 | zip -r ${{ env.PLUGIN_NAME }}.zip ${{ env.PLUGIN_NAME }}
40 | ls
41 | echo "tag_name=$(git tag --sort version:refname | tail -n 1)" >> $GITHUB_OUTPUT
42 | - name: Create changelog (beta)
43 | if: contains(github.ref, '-')
44 | run: npx rexreplace "^.*?#+\s\[.*?\n.*?(?=\s*#+\s\[)" "_" -s -M -G -m -o "CHANGELOG-beta.md" > CHANGELOG-LATEST.md
45 | - name: Create changelog (not beta)
46 | if: ${{ !contains(github.ref, '-') }}
47 | run: npx rexreplace "^.*?#+\s\[.*?\n.*?(?=\s*#+\s\[)" "_" -s -M -G -m -o "CHANGELOG.md" > CHANGELOG-LATEST.md
48 | - name: Create Release
49 | id: create_release
50 | uses: softprops/action-gh-release@v1
51 | env:
52 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
53 | VERSION: ${{ github.ref }}
54 | with:
55 | tag_name: ${{ github.ref_name }}
56 | name: ${{ github.ref_name }}
57 | body_path: CHANGELOG-LATEST.md
58 | draft: false
59 | prerelease: false
60 | token: ${{ secrets.GITHUB_TOKEN }}
61 | files: |
62 | ${{ env.PLUGIN_NAME }}.zip
63 | main.js
64 | manifest.json
65 | styles.css
66 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Intellij
2 | *.iml
3 | .idea
4 |
5 | # npm
6 | node_modules
7 | package-lock.json
8 |
9 | # Don't include the compiled main.js file in the repo.
10 | # They should be uploaded to GitHub releases instead.
11 | main.js
12 |
13 | # Exclude sourcemaps
14 | *.map
15 |
16 | # obsidian
17 | data.json
18 |
19 | #prettierignore
20 |
21 | .prettierignore
22 | .prettierrc.json
23 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Changelog
2 |
3 | All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
4 |
5 | ## [1.10.0](https://github.com/Lisandra-dev/obsidian-metacopy/compare/1.9.2...1.10.0) (2023-07-30)
6 |
7 |
8 | ### Features
9 |
10 | * add support for path frontmatter keys ([8291d8d](https://github.com/Lisandra-dev/obsidian-metacopy/commit/8291d8d093820f0c8763e31f3a9601acbce5e9e5))
11 |
12 |
13 | ### Bug Fixes
14 |
15 | * **contextMenu:** no context menu appear ([096b981](https://github.com/Lisandra-dev/obsidian-metacopy/commit/096b981af047e95f97db6180cdec66b6c793b1e5)), closes [#2](https://github.com/Lisandra-dev/obsidian-metacopy/issues/2)
16 | * **plugin:** the plugin doesn't work with the basic settings ([1a8cc4d](https://github.com/Lisandra-dev/obsidian-metacopy/commit/1a8cc4dc4a552a4ac760d182f726f06b25d7b95b)), closes [#2](https://github.com/Lisandra-dev/obsidian-metacopy/issues/2)
17 |
18 | ### [1.9.2](https://github.com/Lisandra-dev/obsidian-metacopy/compare/1.9.1...1.9.2) (2023-01-28)
19 |
20 |
21 | ### Bug Fixes
22 |
23 | * foldernote miscreated ([5f009ea](https://github.com/Lisandra-dev/obsidian-metacopy/commit/5f009ea3f7f7a8742cb862e8ce3964fab66c3848))
24 |
25 | ### [1.9.1](https://github.com/Lisandra-dev/obsidian-metacopy/compare/1.9.0...1.9.1) (2023-01-21)
26 |
27 | ## [1.9.0](https://github.com/Lisandra-dev/obsidian-metacopy/compare/1.8.1...1.9.0) (2023-01-21)
28 |
29 |
30 | ### Features
31 |
32 | * allow obsidian path to be created if there is no frontmatter ([22213ab](https://github.com/Lisandra-dev/obsidian-metacopy/commit/22213ab6f0b20d04d12d164cf6eefbe816ad10ee))
33 |
34 | ### [1.8.1](https://github.com/Lisandra-dev/obsidian-metacopy/compare/1.8.0...1.8.1) (2023-01-15)
35 |
36 |
37 | ### Bug Fixes
38 |
39 | * forgot to return if usefrontmattertitle is set to false ([82fe2e5](https://github.com/Lisandra-dev/obsidian-metacopy/commit/82fe2e5a84cb02ee29eae8f9fcdf4234b0811f84))
40 |
41 | ## [1.8.0](https://github.com/Lisandra-dev/obsidian-metacopy/compare/1.7.1...1.8.0) (2023-01-15)
42 |
43 |
44 | ### Features
45 |
46 | * delete a part of the links ([9a692e4](https://github.com/Lisandra-dev/obsidian-metacopy/commit/9a692e44686adf14fc7d521db91aaef40149a8f3))
47 |
48 | ### [1.7.1](https://github.com/Lisandra-dev/obsidian-metacopy/compare/1.7.0...1.7.1) (2023-01-02)
49 |
50 |
51 | ### Bug Fixes
52 |
53 | * title error using obsidian path ([59e8ee6](https://github.com/Lisandra-dev/obsidian-metacopy/commit/59e8ee6ce794728f2c71adae5ace26bdf78de8cb))
54 |
55 | ## [1.7.0](https://github.com/Lisandra-dev/obsidian-metacopy/compare/1.5.1...1.7.0) (2022-12-31)
56 |
57 |
58 | ### Features
59 |
60 | * Adding link replacement as in Github Publisher ([50c25fb](https://github.com/Lisandra-dev/obsidian-metacopy/commit/50c25fb87bc23e2de8482c73f2ccaefc4e45f2d5))
61 |
62 | ## [1.6.0](https://github.com/Lisandra-dev/obsidian-metacopy/compare/1.5.1...1.6.0) (2022-12-31)
63 |
64 |
65 | ### Features
66 |
67 | * Adding link replacement as in Github Publisher ([50c25fb](https://github.com/Lisandra-dev/obsidian-metacopy/commit/50c25fb87bc23e2de8482c73f2ccaefc4e45f2d5))
68 |
69 | ### [1.5.1](https://github.com/Lisandra-dev/obsidian-metacopy/compare/1.6.0...1.5.1) (2022-12-20)
70 |
71 |
72 | ### Bug Fixes
73 |
74 | * Uncaught TypeError: Cannot read properties of null (reading 'path') in Canva ([bfbb64e](https://github.com/Lisandra-dev/obsidian-metacopy/commit/bfbb64ef8f61336f303568330461f6d81120f020))
75 |
76 | ## [1.5.0](https://github.com/Lisandra-dev/obsidian-metacopy/compare/1.4.0...1.5.0) (2022-09-20)
77 |
78 | ## [1.5.0](https://github.com/Lisandra-dev/obsidian-metacopy/compare/1.4.0...1.5.0) (2022-09-20)
79 |
80 |
81 | ### Features
82 |
83 | * specify a frontmatter frontmatterKey for the title creation ([00677ef](https://github.com/Lisandra-dev/obsidian-metacopy/commit/00677ef746da7035284bc3e2a57c87a2308db1c2))
84 |
85 | ## [1.4.0](https://github.com/Lisandra-dev/obsidian-metacopy/compare/1.3.0...1.4.0) (2022-09-08)
86 |
87 |
88 | ### Features
89 |
90 | * specify a frontmatter frontmatterKey for the title creation ([80ebbae](https://github.com/Lisandra-dev/obsidian-metacopy/commit/80ebbaeb48f1f04d3a731a583a4b153baa75178a))
91 |
92 | ## [1.3.0](https://github.com/Mara-Li/obsidian-metacopy/compare/1.2.2...1.3.0) (2022-08-06)
93 |
94 |
95 | ### Features
96 |
97 | * translation + adding support for "title" field instead of filename ([1132728](https://github.com/Mara-Li/obsidian-metacopy/commit/1132728596677981a9bb27f10ad1edcf3ca5dc13))
98 |
99 | ### [1.2.2](https://github.com/Mara-Li/obsidian-metacopy/compare/1.2.1...1.2.2) (2022-07-14)
100 |
101 |
102 | ### Bug Fixes
103 |
104 | * modal crash ([06ae644](https://github.com/Mara-Li/obsidian-metacopy/commit/06ae6440d8532118c82abee64186f99b6271a828))
105 |
106 | ### [1.2.1](https://github.com/Mara-Li/obsidian-metacopy/compare/1.2.0...1.2.1) (2022-07-14)
107 |
108 | ## [1.2.0](https://github.com/Mara-Li/obsidian-metacopy/compare/1.1.1...1.2.0) (2022-06-28)
109 |
110 |
111 | ### Features
112 |
113 | * adding section using obsidian 0.15.3 ([4ebe3fd](https://github.com/Mara-Li/obsidian-metacopy/commit/4ebe3fd139e4be13f4deb30150a4a53f5e9ec2d6))
114 |
115 | ### [1.1.1](https://github.com/Mara-Li/obsidian-metacopy/compare/1.1.0...1.1.1) (2022-05-26)
116 |
117 |
118 | ### Bug Fixes
119 |
120 | * fix folder name && workflow ([50310f5](https://github.com/Mara-Li/obsidian-metacopy/commit/50310f58e66d04cb7eefea51f18ecdd5e81005a6))
121 | * resolve main.ts & files doesn't exist because of renaming folder ([c708a43](https://github.com/Mara-Li/obsidian-metacopy/commit/c708a43b6d809e7974b44480986dcf2fab1f220f))
122 |
123 | ## [1.1.0](https://github.com/Mara-Li/obsidian-metacopy/compare/1.0.2...1.1.0) (2022-05-25)
124 |
125 |
126 | ### Features
127 |
128 | * Adding more behavior for link creator ([4ff71ef](https://github.com/Mara-Li/obsidian-metacopy/commit/4ff71ef57d3d630f93dd018a020d1e9a9017bd9a))
129 |
130 | ### [1.0.2](https://github.com/Mara-Li/obsidian-metacopy/compare/1.0.1...1.0.2) (2022-01-22)
131 |
132 |
133 | ### Bug Fixes
134 |
135 | * **url:** Update notice when copy metacopy-url ([f9ec6b8](https://github.com/Mara-Li/obsidian-metacopy/commit/f9ec6b84e4b64a6af1d38bcc44e80eb4b5e69b9c))
136 |
137 | ### [1.0.1](https://github.com/Mara-Li/obsidian-metacopy/compare/1.0.0...1.0.1) (2022-01-22)
138 |
139 |
140 | ### Bug Fixes
141 |
142 | * **url:** Fix description settings ([3f9ad35](https://github.com/Mara-Li/obsidian-metacopy/commit/3f9ad351d1741d4248034b0966005563eaeee6e1))
143 |
144 | ## [1.0.0](https://github.com/Mara-Li/obsidian-metacopy/compare/0.0.27...1.0.0) (2022-01-22)
145 |
146 |
147 | ### Bug Fixes
148 |
149 | * Change description ([5862677](https://github.com/Mara-Li/obsidian-metacopy/commit/5862677c057db94fb31095bed01c4dffc3f5ca2c))
150 |
151 | ### [0.0.27](https://github.com/Mara-Li/obsidian-metacopy/compare/0.0.26...0.0.27) (2022-01-22)
152 |
153 |
154 | ### Features
155 |
156 | * **url:** Create a default URL ([bc2e41b](https://github.com/Mara-Li/obsidian-metacopy/commit/bc2e41b5d8df21444353626eb7c6a765862f3817))
157 |
158 | ### [0.0.26](https://github.com/Mara-Li/obsidian-metacopy/compare/0.0.25...0.0.26) (2022-01-05)
159 |
160 |
161 | ### Bug Fixes
162 |
163 | * **url:** Fix url creation ([04b3783](https://github.com/Mara-Li/obsidian-metacopy/commit/04b378358c77b96390fba83cc62b4b0171215c97))
164 |
165 | ### [0.0.25](https://github.com/Mara-Li/obsidian-metacopy/compare/0.0.24...0.0.25) (2022-01-04)
166 |
167 | ### [0.0.24](https://github.com/Mara-Li/obsidian-metacopy/compare/0.0.23...0.0.24) (2022-01-04)
168 |
169 |
170 | ### Features
171 |
172 | * **url:** Support foldernote ([7f8725b](https://github.com/Mara-Li/obsidian-metacopy/commit/7f8725b116162874a1c2fd95960851ceae592518))
173 |
174 | ### [0.0.23](https://github.com/Mara-Li/obsidian-metacopy/compare/0.0.22...0.0.23) (2022-01-04)
175 |
176 | ### Bug Fixes
177 |
178 | - **editorMenu:** Add separator ([fe5476e](https://github.com/Mara-Li/obsidian-metacopy/commit/fe5476e81285fd3198996bf4941f86a8ca50037c))
179 |
180 | ### [0.0.22](https://github.com/Mara-Li/obsidian-metacopy/compare/0.0.21...0.0.22) (2022-01-04)
181 |
182 | ### Features
183 |
184 | - **option:** Disable/enable plugin based on a frontmatter frontmatterKey ([ed85cb2](https://github.com/Mara-Li/obsidian-metacopy/commit/ed85cb2547eca93fdeb95b96c9f882ef4bbb5241))
185 |
186 | ### [0.0.21](https://github.com/Mara-Li/obsidian-metacopy/compare/0.0.20...0.0.21) (2022-01-01)
187 |
188 | ### Features
189 |
190 | - **menu:** Add a context menu (left-click) to copy url ([a817bf2](https://github.com/Mara-Li/obsidian-metacopy/commit/a817bf293b33d3ce7d53b6c17e03dc75a15744ab))
191 |
192 | ### [0.0.20](https://github.com/Mara-Li/obsidian-metacopy/compare/0.0.19...0.0.20) (2022-01-01)
193 |
194 | ### Bug Fixes
195 |
196 | - **icon:** Update icon if link found ([fc40da8](https://github.com/Mara-Li/obsidian-metacopy/commit/fc40da890a9737ae4ea74348576635308dd4bea9))
197 |
198 | ### [0.0.19](https://github.com/Mara-Li/obsidian-metacopy/compare/0.0.18...0.0.19) (2022-01-01)
199 |
200 | ### Features
201 |
202 | - Link creation ([2330c53](https://github.com/Mara-Li/obsidian-metacopy/commit/2330c53e6a4e36a06ff400149d226db3987bbfda))
203 |
204 | ### [0.0.18](https://github.com/Mara-Li/obsidian-metacopy/compare/0.0.17...0.0.18) (2021-11-28)
205 |
206 | ### Bug Fixes
207 |
208 | - Adjust frontmatter cache; remove editor menu ; Adjust icon ([f6a5f45](https://github.com/Mara-Li/obsidian-metacopy/commit/f6a5f45c04773ce7312ab0d24af97e1f8cd3cb5d))
209 |
210 | ### [0.0.17](https://github.com/Mara-Li/obsidian-metacopy/compare/0.0.16...0.0.17) (2021-11-07)
211 |
212 | ### Bug Fixes
213 |
214 | - **bug:** Fix bug with command ([719969d](https://github.com/Mara-Li/obsidian-metacopy/commit/719969dde7b9081444981b823327bcb05dd4bb0d))
215 |
216 | ### [0.0.16](https://github.com/Mara-Li/obsidian-metacopy/compare/0.0.15...0.0.16) (2021-11-01)
217 |
218 | ### Bug Fixes
219 |
220 | - Update checking using advice from licat ([ddee7d9](https://github.com/Mara-Li/obsidian-metacopy/commit/ddee7d91c711332b983ed19d84a73fade9e57694))
221 |
222 | ### [0.0.15](https://github.com/Mara-Li/obsidian-metacopy/compare/0.0.14...0.0.15) (2021-10-31)
223 |
224 | ### Bug Fixes
225 |
226 | - First pass of Obsidian's correction ([e73306f](https://github.com/Mara-Li/obsidian-metacopy/commit/e73306f093ccd2b79908783dddc00dd18b9d3f1c))
227 |
228 | ### [0.0.14](https://github.com/Mara-Li/obsidian-metacopy/compare/0.0.13...0.0.14) (2021-10-27)
229 |
230 | ### Features
231 |
232 | - :lipstic: :Update message for menu ([b691711](https://github.com/Mara-Li/obsidian-metacopy/commit/b691711c66dc4bb674b68a57c025bee1a04fd770))
233 |
234 | ### [0.0.13](https://github.com/Mara-Li/obsidian-metacopy/compare/0.0.12...0.0.13) (2021-10-24)
235 |
236 | ### Features
237 |
238 | - **fix:** Forgot to remove \* for left click ([fd7e01f](https://github.com/Mara-Li/obsidian-metacopy/commit/fd7e01f552479e9da7d3ee4d0c35ea1549fd86c8))
239 |
240 | ### [0.0.12](https://github.com/Mara-Li/obsidian-metacopy/compare/0.0.11...0.0.12) (2021-10-24)
241 |
242 | ### Bug Fixes
243 |
244 | - Adding support for list ; change settings to textArea ([44c52c3](https://github.com/Mara-Li/obsidian-metacopy/commit/44c52c358a6b1a752ddc93c85b84be8d4d5b72c5))
245 |
246 | ### [0.0.11](https://github.com/Mara-Li/obsidian-metacopy/compare/0.0.10...0.0.11) (2021-10-24)
247 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | GNU AFFERO GENERAL PUBLIC LICENSE
2 | Version 3, 19 November 2007
3 |
4 | Copyright (C) 2007 Free Software Foundation, Inc.
5 | Everyone is permitted to copy and distribute verbatim copies
6 | of this license document, but changing it is not allowed.
7 |
8 | Preamble
9 |
10 | The GNU Affero General Public License is a free, copyleft license for
11 | software and other kinds of works, specifically designed to ensure
12 | cooperation with the community in the case of network server software.
13 |
14 | The licenses for most software and other practical works are designed
15 | to take away your freedom to share and change the works. By contrast,
16 | our General Public Licenses are intended to guarantee your freedom to
17 | share and change all versions of a program--to make sure it remains free
18 | software for all its users.
19 |
20 | When we speak of free software, we are referring to freedom, not
21 | price. Our General Public Licenses are designed to make sure that you
22 | have the freedom to distribute copies of free software (and charge for
23 | them if you wish), that you receive source code or can get it if you
24 | want it, that you can change the software or use pieces of it in new
25 | free programs, and that you know you can do these things.
26 |
27 | Developers that use our General Public Licenses protect your rights
28 | with two steps: (1) assert copyright on the software, and (2) offer
29 | you this License which gives you legal permission to copy, distribute
30 | and/or modify the software.
31 |
32 | A secondary benefit of defending all users' freedom is that
33 | improvements made in alternate versions of the program, if they
34 | receive widespread use, become available for other developers to
35 | incorporate. Many developers of free software are heartened and
36 | encouraged by the resulting cooperation. However, in the case of
37 | software used on network servers, this result may fail to come about.
38 | The GNU General Public License permits making a modified version and
39 | letting the public access it on a server without ever releasing its
40 | source code to the public.
41 |
42 | The GNU Affero General Public License is designed specifically to
43 | ensure that, in such cases, the modified source code becomes available
44 | to the community. It requires the operator of a network server to
45 | provide the source code of the modified version running there to the
46 | users of that server. Therefore, public use of a modified version, on
47 | a publicly accessible server, gives the public access to the source
48 | code of the modified version.
49 |
50 | An older license, called the Affero General Public License and
51 | published by Affero, was designed to accomplish similar goals. This is
52 | a different license, not a version of the Affero GPL, but Affero has
53 | released a new version of the Affero GPL which permits relicensing under
54 | this license.
55 |
56 | The precise terms and conditions for copying, distribution and
57 | modification follow.
58 |
59 | TERMS AND CONDITIONS
60 |
61 | 0. Definitions.
62 |
63 | "This License" refers to version 3 of the GNU Affero General Public License.
64 |
65 | "Copyright" also means copyright-like laws that apply to other kinds of
66 | works, such as semiconductor masks.
67 |
68 | "The Program" refers to any copyrightable work licensed under this
69 | License. Each licensee is addressed as "you". "Licensees" and
70 | "recipients" may be individuals or organizations.
71 |
72 | To "modify" a work means to copy from or adapt all or part of the work
73 | in a fashion requiring copyright permission, other than the making of an
74 | exact copy. The resulting work is called a "modified version" of the
75 | earlier work or a work "based on" the earlier work.
76 |
77 | A "covered work" means either the unmodified Program or a work based
78 | on the Program.
79 |
80 | To "propagate" a work means to do anything with it that, without
81 | permission, would make you directly or secondarily liable for
82 | infringement under applicable copyright law, except executing it on a
83 | computer or modifying a private copy. Propagation includes copying,
84 | distribution (with or without modification), making available to the
85 | public, and in some countries other activities as well.
86 |
87 | To "convey" a work means any kind of propagation that enables other
88 | parties to make or receive copies. Mere interaction with a user through
89 | a computer network, with no transfer of a copy, is not conveying.
90 |
91 | An interactive user interface displays "Appropriate Legal Notices"
92 | to the extent that it includes a convenient and prominently visible
93 | feature that (1) displays an appropriate copyright notice, and (2)
94 | tells the user that there is no warranty for the work (except to the
95 | extent that warranties are provided), that licensees may convey the
96 | work under this License, and how to view a copy of this License. If
97 | the interface presents a list of user commands or options, such as a
98 | menu, a prominent item in the list meets this criterion.
99 |
100 | 1. Source Code.
101 |
102 | The "source code" for a work means the preferred form of the work
103 | for making modifications to it. "Object code" means any non-source
104 | form of a work.
105 |
106 | A "Standard Interface" means an interface that either is an official
107 | standard defined by a recognized standards body, or, in the case of
108 | interfaces specified for a particular programming language, one that
109 | is widely used among developers working in that language.
110 |
111 | The "System Libraries" of an executable work include anything, other
112 | than the work as a whole, that (a) is included in the normal form of
113 | packaging a Major Component, but which is not part of that Major
114 | Component, and (b) serves only to enable use of the work with that
115 | Major Component, or to implement a Standard Interface for which an
116 | implementation is available to the public in source code form. A
117 | "Major Component", in this context, means a major essential component
118 | (kernel, window system, and so on) of the specific operating system
119 | (if any) on which the executable work runs, or a compiler used to
120 | produce the work, or an object code interpreter used to run it.
121 |
122 | The "Corresponding Source" for a work in object code form means all
123 | the source code needed to generate, install, and (for an executable
124 | work) run the object code and to modify the work, including scripts to
125 | control those activities. However, it does not include the work's
126 | System Libraries, or general-purpose tools or generally available free
127 | programs which are used unmodified in performing those activities but
128 | which are not part of the work. For example, Corresponding Source
129 | includes interface definition files associated with source files for
130 | the work, and the source code for shared libraries and dynamically
131 | linked subprograms that the work is specifically designed to require,
132 | such as by intimate data communication or control flow between those
133 | subprograms and other parts of the work.
134 |
135 | The Corresponding Source need not include anything that users
136 | can regenerate automatically from other parts of the Corresponding
137 | Source.
138 |
139 | The Corresponding Source for a work in source code form is that
140 | same work.
141 |
142 | 2. Basic Permissions.
143 |
144 | All rights granted under this License are granted for the term of
145 | copyright on the Program, and are irrevocable provided the stated
146 | conditions are met. This License explicitly affirms your unlimited
147 | permission to run the unmodified Program. The output from running a
148 | covered work is covered by this License only if the output, given its
149 | content, constitutes a covered work. This License acknowledges your
150 | rights of fair use or other equivalent, as provided by copyright law.
151 |
152 | You may make, run and propagate covered works that you do not
153 | convey, without conditions so long as your license otherwise remains
154 | in force. You may convey covered works to others for the sole purpose
155 | of having them make modifications exclusively for you, or provide you
156 | with facilities for running those works, provided that you comply with
157 | the terms of this License in conveying all material for which you do
158 | not control copyright. Those thus making or running the covered works
159 | for you must do so exclusively on your behalf, under your direction
160 | and control, on terms that prohibit them from making any copies of
161 | your copyrighted material outside their relationship with you.
162 |
163 | Conveying under any other circumstances is permitted solely under
164 | the conditions stated below. Sublicensing is not allowed; section 10
165 | makes it unnecessary.
166 |
167 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
168 |
169 | No covered work shall be deemed part of an effective technological
170 | measure under any applicable law fulfilling obligations under article
171 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or
172 | similar laws prohibiting or restricting circumvention of such
173 | measures.
174 |
175 | When you convey a covered work, you waive any legal power to forbid
176 | circumvention of technological measures to the extent such circumvention
177 | is effected by exercising rights under this License with respect to
178 | the covered work, and you disclaim any intention to limit operation or
179 | modification of the work as a means of enforcing, against the work's
180 | users, your or third parties' legal rights to forbid circumvention of
181 | technological measures.
182 |
183 | 4. Conveying Verbatim Copies.
184 |
185 | You may convey verbatim copies of the Program's source code as you
186 | receive it, in any medium, provided that you conspicuously and
187 | appropriately publish on each copy an appropriate copyright notice;
188 | keep intact all notices stating that this License and any
189 | non-permissive terms added in accord with section 7 apply to the code;
190 | keep intact all notices of the absence of any warranty; and give all
191 | recipients a copy of this License along with the Program.
192 |
193 | You may charge any price or no price for each copy that you convey,
194 | and you may offer support or warranty protection for a fee.
195 |
196 | 5. Conveying Modified Source Versions.
197 |
198 | You may convey a work based on the Program, or the modifications to
199 | produce it from the Program, in the form of source code under the
200 | terms of section 4, provided that you also meet all of these conditions:
201 |
202 | a) The work must carry prominent notices stating that you modified
203 | it, and giving a relevant date.
204 |
205 | b) The work must carry prominent notices stating that it is
206 | released under this License and any conditions added under section
207 | 7. This requirement modifies the requirement in section 4 to
208 | "keep intact all notices".
209 |
210 | c) You must license the entire work, as a whole, under this
211 | License to anyone who comes into possession of a copy. This
212 | License will therefore apply, along with any applicable section 7
213 | additional terms, to the whole of the work, and all its parts,
214 | regardless of how they are packaged. This License gives no
215 | permission to license the work in any other way, but it does not
216 | invalidate such permission if you have separately received it.
217 |
218 | d) If the work has interactive user interfaces, each must display
219 | Appropriate Legal Notices; however, if the Program has interactive
220 | interfaces that do not display Appropriate Legal Notices, your
221 | work need not make them do so.
222 |
223 | A compilation of a covered work with other separate and independent
224 | works, which are not by their nature extensions of the covered work,
225 | and which are not combined with it such as to form a larger program,
226 | in or on a volume of a storage or distribution medium, is called an
227 | "aggregate" if the compilation and its resulting copyright are not
228 | used to limit the access or legal rights of the compilation's users
229 | beyond what the individual works permit. Inclusion of a covered work
230 | in an aggregate does not cause this License to apply to the other
231 | parts of the aggregate.
232 |
233 | 6. Conveying Non-Source Forms.
234 |
235 | You may convey a covered work in object code form under the terms
236 | of sections 4 and 5, provided that you also convey the
237 | machine-readable Corresponding Source under the terms of this License,
238 | in one of these ways:
239 |
240 | a) Convey the object code in, or embodied in, a physical product
241 | (including a physical distribution medium), accompanied by the
242 | Corresponding Source fixed on a durable physical medium
243 | customarily used for software interchange.
244 |
245 | b) Convey the object code in, or embodied in, a physical product
246 | (including a physical distribution medium), accompanied by a
247 | written offer, valid for at least three years and valid for as
248 | long as you offer spare parts or customer support for that product
249 | model, to give anyone who possesses the object code either (1) a
250 | copy of the Corresponding Source for all the software in the
251 | product that is covered by this License, on a durable physical
252 | medium customarily used for software interchange, for a price no
253 | more than your reasonable cost of physically performing this
254 | conveying of source, or (2) access to copy the
255 | Corresponding Source from a network server at no charge.
256 |
257 | c) Convey individual copies of the object code with a copy of the
258 | written offer to provide the Corresponding Source. This
259 | alternative is allowed only occasionally and noncommercially, and
260 | only if you received the object code with such an offer, in accord
261 | with subsection 6b.
262 |
263 | d) Convey the object code by offering access from a designated
264 | place (gratis or for a charge), and offer equivalent access to the
265 | Corresponding Source in the same way through the same place at no
266 | further charge. You need not require recipients to copy the
267 | Corresponding Source along with the object code. If the place to
268 | copy the object code is a network server, the Corresponding Source
269 | may be on a different server (operated by you or a third party)
270 | that supports equivalent copying facilities, provided you maintain
271 | clear directions next to the object code saying where to find the
272 | Corresponding Source. Regardless of what server hosts the
273 | Corresponding Source, you remain obligated to ensure that it is
274 | available for as long as needed to satisfy these requirements.
275 |
276 | e) Convey the object code using peer-to-peer transmission, provided
277 | you inform other peers where the object code and Corresponding
278 | Source of the work are being offered to the general public at no
279 | charge under subsection 6d.
280 |
281 | A separable portion of the object code, whose source code is excluded
282 | from the Corresponding Source as a System Library, need not be
283 | included in conveying the object code work.
284 |
285 | A "User Product" is either (1) a "consumer product", which means any
286 | tangible personal property which is normally used for personal, family,
287 | or household purposes, or (2) anything designed or sold for incorporation
288 | into a dwelling. In determining whether a product is a consumer product,
289 | doubtful cases shall be resolved in favor of coverage. For a particular
290 | product received by a particular user, "normally used" refers to a
291 | typical or common use of that class of product, regardless of the status
292 | of the particular user or of the way in which the particular user
293 | actually uses, or expects or is expected to use, the product. A product
294 | is a consumer product regardless of whether the product has substantial
295 | commercial, industrial or non-consumer uses, unless such uses represent
296 | the only significant mode of use of the product.
297 |
298 | "Installation Information" for a User Product means any methods,
299 | procedures, authorization keys, or other information required to install
300 | and execute modified versions of a covered work in that User Product from
301 | a modified version of its Corresponding Source. The information must
302 | suffice to ensure that the continued functioning of the modified object
303 | code is in no case prevented or interfered with solely because
304 | modification has been made.
305 |
306 | If you convey an object code work under this section in, or with, or
307 | specifically for use in, a User Product, and the conveying occurs as
308 | part of a transaction in which the right of possession and use of the
309 | User Product is transferred to the recipient in perpetuity or for a
310 | fixed term (regardless of how the transaction is characterized), the
311 | Corresponding Source conveyed under this section must be accompanied
312 | by the Installation Information. But this requirement does not apply
313 | if neither you nor any third party retains the ability to install
314 | modified object code on the User Product (for example, the work has
315 | been installed in ROM).
316 |
317 | The requirement to provide Installation Information does not include a
318 | requirement to continue to provide support service, warranty, or updates
319 | for a work that has been modified or installed by the recipient, or for
320 | the User Product in which it has been modified or installed. Access to a
321 | network may be denied when the modification itself materially and
322 | adversely affects the operation of the network or violates the rules and
323 | protocols for communication across the network.
324 |
325 | Corresponding Source conveyed, and Installation Information provided,
326 | in accord with this section must be in a format that is publicly
327 | documented (and with an implementation available to the public in
328 | source code form), and must require no special password or frontmatterKey for
329 | unpacking, reading or copying.
330 |
331 | 7. Additional Terms.
332 |
333 | "Additional permissions" are terms that supplement the terms of this
334 | License by making exceptions from one or more of its conditions.
335 | Additional permissions that are applicable to the entire Program shall
336 | be treated as though they were included in this License, to the extent
337 | that they are valid under applicable law. If additional permissions
338 | apply only to part of the Program, that part may be used separately
339 | under those permissions, but the entire Program remains governed by
340 | this License without regard to the additional permissions.
341 |
342 | When you convey a copy of a covered work, you may at your option
343 | remove any additional permissions from that copy, or from any part of
344 | it. (Additional permissions may be written to require their own
345 | removal in certain cases when you modify the work.) You may place
346 | additional permissions on material, added by you to a covered work,
347 | for which you have or can give appropriate copyright permission.
348 |
349 | Notwithstanding any other provision of this License, for material you
350 | add to a covered work, you may (if authorized by the copyright holders of
351 | that material) supplement the terms of this License with terms:
352 |
353 | a) Disclaiming warranty or limiting liability differently from the
354 | terms of sections 15 and 16 of this License; or
355 |
356 | b) Requiring preservation of specified reasonable legal notices or
357 | author attributions in that material or in the Appropriate Legal
358 | Notices displayed by works containing it; or
359 |
360 | c) Prohibiting misrepresentation of the origin of that material, or
361 | requiring that modified versions of such material be marked in
362 | reasonable ways as different from the original version; or
363 |
364 | d) Limiting the use for publicity purposes of names of licensors or
365 | authors of the material; or
366 |
367 | e) Declining to grant rights under trademark law for use of some
368 | trade names, trademarks, or service marks; or
369 |
370 | f) Requiring indemnification of licensors and authors of that
371 | material by anyone who conveys the material (or modified versions of
372 | it) with contractual assumptions of liability to the recipient, for
373 | any liability that these contractual assumptions directly impose on
374 | those licensors and authors.
375 |
376 | All other non-permissive additional terms are considered "further
377 | restrictions" within the meaning of section 10. If the Program as you
378 | received it, or any part of it, contains a notice stating that it is
379 | governed by this License along with a term that is a further
380 | restriction, you may remove that term. If a license document contains
381 | a further restriction but permits relicensing or conveying under this
382 | License, you may add to a covered work material governed by the terms
383 | of that license document, provided that the further restriction does
384 | not survive such relicensing or conveying.
385 |
386 | If you add terms to a covered work in accord with this section, you
387 | must place, in the relevant source files, a statement of the
388 | additional terms that apply to those files, or a notice indicating
389 | where to find the applicable terms.
390 |
391 | Additional terms, permissive or non-permissive, may be stated in the
392 | form of a separately written license, or stated as exceptions;
393 | the above requirements apply either way.
394 |
395 | 8. Termination.
396 |
397 | You may not propagate or modify a covered work except as expressly
398 | provided under this License. Any attempt otherwise to propagate or
399 | modify it is void, and will automatically terminate your rights under
400 | this License (including any patent licenses granted under the third
401 | paragraph of section 11).
402 |
403 | However, if you cease all violation of this License, then your
404 | license from a particular copyright holder is reinstated (a)
405 | provisionally, unless and until the copyright holder explicitly and
406 | finally terminates your license, and (b) permanently, if the copyright
407 | holder fails to notify you of the violation by some reasonable means
408 | prior to 60 days after the cessation.
409 |
410 | Moreover, your license from a particular copyright holder is
411 | reinstated permanently if the copyright holder notifies you of the
412 | violation by some reasonable means, this is the first time you have
413 | received notice of violation of this License (for any work) from that
414 | copyright holder, and you cure the violation prior to 30 days after
415 | your receipt of the notice.
416 |
417 | Termination of your rights under this section does not terminate the
418 | licenses of parties who have received copies or rights from you under
419 | this License. If your rights have been terminated and not permanently
420 | reinstated, you do not qualify to receive new licenses for the same
421 | material under section 10.
422 |
423 | 9. Acceptance Not Required for Having Copies.
424 |
425 | You are not required to accept this License in order to receive or
426 | run a copy of the Program. Ancillary propagation of a covered work
427 | occurring solely as a consequence of using peer-to-peer transmission
428 | to receive a copy likewise does not require acceptance. However,
429 | nothing other than this License grants you permission to propagate or
430 | modify any covered work. These actions infringe copyright if you do
431 | not accept this License. Therefore, by modifying or propagating a
432 | covered work, you indicate your acceptance of this License to do so.
433 |
434 | 10. Automatic Licensing of Downstream Recipients.
435 |
436 | Each time you convey a covered work, the recipient automatically
437 | receives a license from the original licensors, to run, modify and
438 | propagate that work, subject to this License. You are not responsible
439 | for enforcing compliance by third parties with this License.
440 |
441 | An "entity transaction" is a transaction transferring control of an
442 | organization, or substantially all assets of one, or subdividing an
443 | organization, or merging organizations. If propagation of a covered
444 | work results from an entity transaction, each party to that
445 | transaction who receives a copy of the work also receives whatever
446 | licenses to the work the party's predecessor in interest had or could
447 | give under the previous paragraph, plus a right to possession of the
448 | Corresponding Source of the work from the predecessor in interest, if
449 | the predecessor has it or can get it with reasonable efforts.
450 |
451 | You may not impose any further restrictions on the exercise of the
452 | rights granted or affirmed under this License. For example, you may
453 | not impose a license fee, royalty, or other charge for exercise of
454 | rights granted under this License, and you may not initiate litigation
455 | (including a cross-claim or counterclaim in a lawsuit) alleging that
456 | any patent claim is infringed by making, using, selling, offering for
457 | sale, or importing the Program or any portion of it.
458 |
459 | 11. Patents.
460 |
461 | A "contributor" is a copyright holder who authorizes use under this
462 | License of the Program or a work on which the Program is based. The
463 | work thus licensed is called the contributor's "contributor version".
464 |
465 | A contributor's "essential patent claims" are all patent claims
466 | owned or controlled by the contributor, whether already acquired or
467 | hereafter acquired, that would be infringed by some manner, permitted
468 | by this License, of making, using, or selling its contributor version,
469 | but do not include claims that would be infringed only as a
470 | consequence of further modification of the contributor version. For
471 | purposes of this definition, "control" includes the right to grant
472 | patent sublicenses in a manner consistent with the requirements of
473 | this License.
474 |
475 | Each contributor grants you a non-exclusive, worldwide, royalty-free
476 | patent license under the contributor's essential patent claims, to
477 | make, use, sell, offer for sale, import and otherwise run, modify and
478 | propagate the contents of its contributor version.
479 |
480 | In the following three paragraphs, a "patent license" is any express
481 | agreement or commitment, however denominated, not to enforce a patent
482 | (such as an express permission to practice a patent or covenant not to
483 | sue for patent infringement). To "grant" such a patent license to a
484 | party means to make such an agreement or commitment not to enforce a
485 | patent against the party.
486 |
487 | If you convey a covered work, knowingly relying on a patent license,
488 | and the Corresponding Source of the work is not available for anyone
489 | to copy, free of charge and under the terms of this License, through a
490 | publicly available network server or other readily accessible means,
491 | then you must either (1) cause the Corresponding Source to be so
492 | available, or (2) arrange to deprive yourself of the benefit of the
493 | patent license for this particular work, or (3) arrange, in a manner
494 | consistent with the requirements of this License, to extend the patent
495 | license to downstream recipients. "Knowingly relying" means you have
496 | actual knowledge that, but for the patent license, your conveying the
497 | covered work in a country, or your recipient's use of the covered work
498 | in a country, would infringe one or more identifiable patents in that
499 | country that you have reason to believe are valid.
500 |
501 | If, pursuant to or in connection with a single transaction or
502 | arrangement, you convey, or propagate by procuring conveyance of, a
503 | covered work, and grant a patent license to some of the parties
504 | receiving the covered work authorizing them to use, propagate, modify
505 | or convey a specific copy of the covered work, then the patent license
506 | you grant is automatically extended to all recipients of the covered
507 | work and works based on it.
508 |
509 | A patent license is "discriminatory" if it does not include within
510 | the scope of its coverage, prohibits the exercise of, or is
511 | conditioned on the non-exercise of one or more of the rights that are
512 | specifically granted under this License. You may not convey a covered
513 | work if you are a party to an arrangement with a third party that is
514 | in the business of distributing software, under which you make payment
515 | to the third party based on the extent of your activity of conveying
516 | the work, and under which the third party grants, to any of the
517 | parties who would receive the covered work from you, a discriminatory
518 | patent license (a) in connection with copies of the covered work
519 | conveyed by you (or copies made from those copies), or (b) primarily
520 | for and in connection with specific products or compilations that
521 | contain the covered work, unless you entered into that arrangement,
522 | or that patent license was granted, prior to 28 March 2007.
523 |
524 | Nothing in this License shall be construed as excluding or limiting
525 | any implied license or other defenses to infringement that may
526 | otherwise be available to you under applicable patent law.
527 |
528 | 12. No Surrender of Others' Freedom.
529 |
530 | If conditions are imposed on you (whether by court order, agreement or
531 | otherwise) that contradict the conditions of this License, they do not
532 | excuse you from the conditions of this License. If you cannot convey a
533 | covered work so as to satisfy simultaneously your obligations under this
534 | License and any other pertinent obligations, then as a consequence you may
535 | not convey it at all. For example, if you agree to terms that obligate you
536 | to collect a royalty for further conveying from those to whom you convey
537 | the Program, the only way you could satisfy both those terms and this
538 | License would be to refrain entirely from conveying the Program.
539 |
540 | 13. Remote Network Interaction; Use with the GNU General Public License.
541 |
542 | Notwithstanding any other provision of this License, if you modify the
543 | Program, your modified version must prominently offer all users
544 | interacting with it remotely through a computer network (if your version
545 | supports such interaction) an opportunity to receive the Corresponding
546 | Source of your version by providing access to the Corresponding Source
547 | from a network server at no charge, through some standard or customary
548 | means of facilitating copying of software. This Corresponding Source
549 | shall include the Corresponding Source for any work covered by version 3
550 | of the GNU General Public License that is incorporated pursuant to the
551 | following paragraph.
552 |
553 | Notwithstanding any other provision of this License, you have
554 | permission to link or combine any covered work with a work licensed
555 | under version 3 of the GNU General Public License into a single
556 | combined work, and to convey the resulting work. The terms of this
557 | License will continue to apply to the part which is the covered work,
558 | but the work with which it is combined will remain governed by version
559 | 3 of the GNU General Public License.
560 |
561 | 14. Revised Versions of this License.
562 |
563 | The Free Software Foundation may publish revised and/or new versions of
564 | the GNU Affero General Public License from time to time. Such new versions
565 | will be similar in spirit to the present version, but may differ in detail to
566 | address new problems or concerns.
567 |
568 | Each version is given a distinguishing version number. If the
569 | Program specifies that a certain numbered version of the GNU Affero General
570 | Public License "or any later version" applies to it, you have the
571 | option of following the terms and conditions either of that numbered
572 | version or of any later version published by the Free Software
573 | Foundation. If the Program does not specify a version number of the
574 | GNU Affero General Public License, you may choose any version ever published
575 | by the Free Software Foundation.
576 |
577 | If the Program specifies that a proxy can decide which future
578 | versions of the GNU Affero General Public License can be used, that proxy's
579 | public statement of acceptance of a version permanently authorizes you
580 | to choose that version for the Program.
581 |
582 | Later license versions may give you additional or different
583 | permissions. However, no additional obligations are imposed on any
584 | author or copyright holder as a result of your choosing to follow a
585 | later version.
586 |
587 | 15. Disclaimer of Warranty.
588 |
589 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
590 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
591 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
592 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
593 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
594 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
595 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
596 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
597 |
598 | 16. Limitation of Liability.
599 |
600 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
601 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
602 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
603 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
604 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
605 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
606 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
607 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
608 | SUCH DAMAGES.
609 |
610 | 17. Interpretation of Sections 15 and 16.
611 |
612 | If the disclaimer of warranty and limitation of liability provided
613 | above cannot be given local legal effect according to their terms,
614 | reviewing courts shall apply local law that most closely approximates
615 | an absolute waiver of all civil liability in connection with the
616 | Program, unless a warranty or assumption of liability accompanies a
617 | copy of the Program in return for a fee.
618 |
619 | END OF TERMS AND CONDITIONS
620 |
621 | How to Apply These Terms to Your New Programs
622 |
623 | If you develop a new program, and you want it to be of the greatest
624 | possible use to the public, the best way to achieve this is to make it
625 | free software which everyone can redistribute and change under these terms.
626 |
627 | To do so, attach the following notices to the program. It is safest
628 | to attach them to the start of each source file to most effectively
629 | state the exclusion of warranty; and each file should have at least
630 | the "copyright" line and a pointer to where the full notice is found.
631 |
632 |
633 | Copyright (C)
634 |
635 | This program is free software: you can redistribute it and/or modify
636 | it under the terms of the GNU Affero General Public License as published
637 | by the Free Software Foundation, either version 3 of the License, or
638 | (at your option) any later version.
639 |
640 | This program is distributed in the hope that it will be useful,
641 | but WITHOUT ANY WARRANTY; without even the implied warranty of
642 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
643 | GNU Affero General Public License for more details.
644 |
645 | You should have received a copy of the GNU Affero General Public License
646 | along with this program. If not, see .
647 |
648 | Also add information on how to contact you by electronic and paper mail.
649 |
650 | If your software can interact with users remotely through a computer
651 | network, you should also make sure that it provides a way for users to
652 | get its source. For example, if your program is a web application, its
653 | interface could display a "Source" link that leads users to an archive
654 | of the code. There are many ways you could offer source, and different
655 | solutions will be better for different programs; see section 13 for the
656 | specific requirements.
657 |
658 | You should also get your employer (if you work as a programmer) or school,
659 | if any, to sign a "copyright disclaimer" for the program, if necessary.
660 | For more information on this, and how to apply and follow the GNU AGPL, see
661 | .
662 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | This plugin recommended being used
2 | with [Obsidian To Mkdocs](https://github.com/Mara-Li/mkdocs_obsidian_publish).
3 | # Obsidian — MetaCopy
4 |
5 | The purpose of this plugin is to get quickly the value of a front matter key. You can set multiple value in settings, as : `key1, key2, key3, ...`
6 |
7 | If the plugin found multiple key in the front matter :
8 |
9 | 1. The context takes the **first** value from the front matter.
10 | 2. The command creates a menu where you can choose the value you want.
11 |
12 | The value added in your pasteboard, so you can paste it everywhere.
13 |
14 | Yeah. That's it.
15 |
16 | Here is the plugin in action :
17 | 
18 |
19 | # Links creator
20 |
21 | ## Base options
22 |
23 | If you want to create a link to a page, you can use this plugin.
24 |
25 | > ⚠️ This function only work if you have a frontmatter.
26 |
27 | There are 3 possibles configuration :
28 |
29 | - Creating link using a default folder
30 | - Creating link using the base link **plus** the relative obsidian path
31 | - Creating the link using a frontmatter key.
32 |
33 | ### Fixed folder
34 |
35 | The resulted link will be `{your_base_link}/{default_folder}/{filename}/`.
36 |
37 | > 💭 Folder note option is disabled with this option.
38 |
39 | ### Obsidian Path option
40 |
41 | The resulted link will be : `{your_base_link}/{obsidian_path}/{filename}/`.
42 |
43 | ### Frontmatter
44 |
45 | You can create a link using a front matter key.
46 |
47 | 1. The key must be both in `key` and in `key link`
48 | 2. You need to configure the `base link`
49 |
50 | The link creator works as the main plugin : file menu will take the first value,
51 | so if this value is the link key, it will create a link.
52 |
53 | You can also set a `default value`, that will be a fallback in case of the
54 | absence of a `category` key & value.
55 |
56 | 
57 |
58 | Furthermore, the editor menu will add an option to copy the link if it exists.
59 |
60 | ## Folder note support
61 |
62 | You can enable the support of folder note (with the “folder name” behavior) to
63 | create link without the file's name if it's the same of the last folder of the
64 | link key.
65 |
66 | > ️🗒️ Example : Obsidian Path
67 | > - If you set as `default value` : `docs`
68 | > - If your file is named `noteIndex` and their folder `myFolder`
69 | > - The link will be `{your_base_link}/{obsidian_path}/docs/myFolder/`
70 |
71 | > 🗒️ Example : Frontmatter
72 | > - If you set `link_key: folder1/folder2/noteIndex`
73 | > - If your file is named `noteIndex`
74 | > - The result link will be : `{base_link}/folder1/folder2/noteIndex/`
75 |
76 | > ⚠️ This option is not compatible with the `Fixed Folder` option.
77 |
78 | ## Disable menu
79 |
80 | You can disable the menu using a front matter key. There are two behaviors :
81 |
82 | 1. Settings enabled :
83 | The key must be present **and** set to **true** to **enable** the menu.
84 | 2. Setting is disabled:
85 | The default behavior.
86 | The key must be absent **or** set to **false** to **disable** the menu.
87 |
88 | Regardless of the option, the command modal continue to work.
89 |
90 | # Obsidian Mkdocs
91 |
92 | Furthermore, the plugin recommended being used
93 | with [Obsidian To Mkdocs](https://github.com/Mara-Li/mkdocs_obsidian_publish) to
94 | copy link without editing the source file.
95 |
96 | To use Obsidian2mkdocs with Metacopy, here is the configuration :
97 | 
98 | 
99 |
100 | This template allows copying a link, as you will do with Notion or Google Docs (
101 | for example).
102 |
103 | The file template will be :
104 | ```yaml
105 | title:
106 | category: something/like/that
107 | share: true
108 | ```
109 |
110 | [Here is a demo](https://www.loom.com/share/88c64da2ba194e219578d5911fb8e08d) :
111 | [](https://www.loom.com/share/88c64da2ba194e219578d5911fb8e08d)
112 | ---
113 |
114 | The plugin is inspired by [Copy Publish URL](https://github.com/kometenstaub/copy-publish-url) but for all link (instead of only publish).
115 |
116 |
117 | # 🖥️ Development
118 |
119 | - Fork / clone the repository
120 | - `npm install`
121 | - `npm run dev` (or `npm run build`)
122 |
123 | # Installation
124 |
125 | 1. You can use [BRAT](https://github.com/TfTHacker/obsidian42-brat) with the link to the repository.
126 | 2. You can use the community plugin registry.
127 | 3. Likewise, you can manually install the plugin using [release](https://github.com/Mara-Li/obsidian-metacopy/releases) and unzip obsidian-metacopy-x.x.xx.zip in your `.obsidian/plugins` folder.
128 |
--------------------------------------------------------------------------------
/docs/demo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mara-Li/obsidian-metacopy/48ffaa765f380737218bf44b1fa3349d1715052a/docs/demo.gif
--------------------------------------------------------------------------------
/docs/link_creation.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mara-Li/obsidian-metacopy/48ffaa765f380737218bf44b1fa3349d1715052a/docs/link_creation.gif
--------------------------------------------------------------------------------
/docs/metacopy2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mara-Li/obsidian-metacopy/48ffaa765f380737218bf44b1fa3349d1715052a/docs/metacopy2.png
--------------------------------------------------------------------------------
/docs/metacopy3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mara-Li/obsidian-metacopy/48ffaa765f380737218bf44b1fa3349d1715052a/docs/metacopy3.png
--------------------------------------------------------------------------------
/docs/presentation.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mara-Li/obsidian-metacopy/48ffaa765f380737218bf44b1fa3349d1715052a/docs/presentation.gif
--------------------------------------------------------------------------------
/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "obsidian-metacopy",
3 | "name": "Metacopy & URL",
4 | "version": "1.9.2",
5 | "minAppVersion": "0.15.3",
6 | "description": "Copy the value of a frontmatter key and allows to create link from it using various settings.",
7 | "author": "Mara-Li",
8 | "authorUrl": "https://github.com/Mara-Li",
9 | "fundingUrl": "https://ko-fi.com/mara__li",
10 | "isDesktopOnly": false,
11 | "js": "main.js"
12 | }
13 |
--------------------------------------------------------------------------------
/metacopy/i18n/index.ts:
--------------------------------------------------------------------------------
1 | import { moment } from "obsidian";
2 | import en from "./locales/en";
3 | import fr from "./locales/fr";
4 |
5 | const localeMap : {[key: string]: Partial}= {
6 | "en" : en,
7 | "fr" : fr,
8 | };
9 |
10 | const locale = localeMap[moment.locale()] || localeMap.en;
11 |
12 | export interface StringFunc{
13 | (params: string|string[]): string;
14 | }
15 |
16 | function nestedProp(obj: object, path: string): unknown {
17 | return path.split(".").reduce((o, k) => o ? (o as never)[k] : undefined, obj);
18 | }
19 |
20 | export function t(multipleKey:string): string | StringFunc {
21 | // eslint-disable-next-line @typescript-eslint/ban-ts-comment
22 | // @ts-ignore
23 | return (locale && nestedProp(locale, multipleKey))|| nestedProp(en, multipleKey);
24 | }
25 |
--------------------------------------------------------------------------------
/metacopy/i18n/locales/en.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | title: "MetaCopy Settings",
3 | keyTitle: {
4 | title: "Key",
5 | desc: "The frontmatterKey which you want to copy the correspondingValue",
6 | placeholder: "key1, key2, key3,…",
7 | },
8 | toggleLinkCreator : {
9 | title: "Enable link creator",
10 | desc: "Display the settings of the link creator",
11 | },
12 | linkCreator: {
13 | header: "Link Creator",
14 | baseLink: "Base link",
15 | baseLinkDesc: "The base of the link",
16 | behavior: {
17 | title: "Default behavior",
18 | desc: "Choose between a metadata frontmatterKey, obsidian path & fixed folder for the link creator",
19 | fixedFolder: "Fixed Folder",
20 | categoryKey: "Metadata Key",
21 | obsidianPath: "Obsidian Path",
22 | },
23 | keyLink: {
24 | title: "Key link",
25 | desc: "The frontmatterKey to create as link",
26 | defaultValue: "Default correspondingValue",
27 | defaultValueDesc: "If you want to active the link creation without the frontmatterKey set.",
28 | },
29 | folderNote: {
30 | title: "Folder note",
31 | desc: "If the file name = frontmatterKey link or parent folder, remove the file name in the link"
32 | },
33 | useFrontMatterTitle: {
34 | title: "Use frontmatter frontmatterKey as title",
35 | desc: "Use a frontmatter field instead of the file name.",
36 | },
37 | regexReplaceTitle: {
38 | title: "Apply a replacement to the filename",
39 | desc: "If the text is between \"//\", it will be used as a regex. Otherwise, it will be used as a string.",
40 | },
41 | replaceLinkPart: {
42 | title: "Replace a part of the link",
43 | desc: "You can add multiple string, separated by a comma.",
44 | }
45 | },
46 | disable: {
47 | title: "Context menu",
48 | desc: "Disable or enable Metacopy context menu with a frontmatter key.",
49 | },
50 | menuBehavior: {
51 | title: "Menu behavior",
52 | desc: "Enabled: require a configured frontmatterKey to enable the menu",
53 | keyMenu: "Key menu",
54 | keyMenuDesc: "The frontmatterKey used to disable/enable the metacopy file menu",
55 | },
56 |
57 | command : {
58 | metadataMessage: (key: string): string => `Metadata key "${key}" copied to the clipboard.`,
59 | metadataMessageURL: "URL send to the clipboard.",
60 | copy: (key: string): string => `Metacopy : Copy ${key}`,
61 | copyCmd: (key: string): string => `Copy [${key}]`,
62 | copyURL: "MetaCopy : Create URL",
63 | suggesterCopyURL: "Create URL",
64 | },
65 | };
66 |
--------------------------------------------------------------------------------
/metacopy/i18n/locales/fr.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | title: "Paramètre MetaCopy",
3 | keyTitle: {
4 | title: "Clé",
5 | desc: "La clé dont vous voulez copier la valeur",
6 | placeholder: "clé1, clé2, clé3,…",
7 | },
8 | toggleLinkCreator : {
9 | title: "Active le créateur de lien",
10 | desc: "Affiche les options pour créer un lien avec une clé de métadonnées.",
11 | },
12 | linkCreator: {
13 | header: "Créateur de lien",
14 | baseLink: "Base du lien",
15 | baseLinkDesc: "La base du lien",
16 | behavior: {
17 | title: "Comportement par défaut",
18 | desc: "Choisissez entre une clé de métadonnées, le chemin dans Obsidian et un dossier fixe pour le créateur de liens.",
19 | fixedFolder: "Dossier fixe",
20 | categoryKey: "Clé de métadonnée",
21 | obsidianPath: "Chemin Obsidian",
22 | },
23 | keyLink:{
24 | title: "Clé de lien",
25 | desc: "La clé pour créer le lien",
26 | defaultValue: "Valeur par défaut",
27 | defaultValueDesc: "Si vous voulez activer la création de liens sans clé de métadonnée.",
28 | },
29 | folderNote: {
30 | title: "Folder Note",
31 | desc: "Si le nom du fichier = lien clé ou dossier parent, supprimer le nom du fichier dans le lien",
32 | },
33 | useFrontMatterTitle: {
34 | title: "Utiliser une clé frontmatter pour le titre",
35 | desc: "Utiliser une clé de métadonnée en tant que titre (au lieu du nom du fichier) pour créer le lien.",
36 | },
37 | regexReplaceTitle: {
38 | title: "Appliquer un remplacement au titre",
39 | desc: "Si le texte est entre \"//\", il sera interprété comme une expression régulière. Sinon, il sera interprété comme une chaîne de caractères.",
40 | },
41 | replaceLinkPart: {
42 | title: "Supprimer une partie du lien",
43 | desc: "Vous pouvez ajouter plusieurs chaînes de caractères, séparées par une virgule.",
44 | }
45 | },
46 | disable: {
47 | title: "Menu contextuel",
48 | desc: "Désactiver ou activer le menu contextuel de Metacopy avec une clé de métadonnée.",
49 | },
50 | menuBehavior: {
51 | title: "Comportement du menu",
52 | desc: "Activer : nécessite une clé configurée pour activer le menu",
53 | keyMenu: "Clé du menu",
54 | keyMenuDesc: "La clé utilisée pour désactiver/activer le menu du fichier Metacopy.",
55 | },
56 | command : {
57 | metadataMessage: (key: string): string => `Clé de métadonnée "${key}" copiée dans le presse-papier`,
58 | metadataMessageURL: "URL envoyé dans le presse-papier",
59 | copy: (key: string): string => `Metacopy : Copier la clé de ${key}`,
60 | copyCmd: (key: string): string => `Copie de [${key}]`,
61 | copyURL: "MetaCopy : Créer URL",
62 | suggesterCopyURL: "Créer URL",
63 | },
64 | };
65 |
--------------------------------------------------------------------------------
/metacopy/main.ts:
--------------------------------------------------------------------------------
1 | import { Menu, Plugin, TFile } from "obsidian";
2 | import {
3 | CopySettingsTabs,
4 | DEFAULT_SETTINGS,
5 | MetaCopySettings,
6 | } from "./settings";
7 | import {CopyMetaSuggester} from "./modal";
8 | import {getValue} from "./src/utils";
9 | import {getMeta, checkMeta} from "./src/metadata";
10 | import {disableMetaCopy} from "./src/pluginBehavior";
11 | import { StringFunc, t } from "./i18n";
12 |
13 | export default class MetaCopy extends Plugin {
14 | settings: MetaCopySettings;
15 |
16 | convertstringToList(toConvert: string): void {
17 | // @ts-ignore
18 | const str = this.settings[toConvert] as unknown as string;
19 | if (typeof str === "string") {
20 | // @ts-ignore
21 | this.settings[toConvert] = str.split(/[\n, ]/).map((item) => item.trim());
22 | this.saveSettings();
23 | }
24 | }
25 |
26 | enableMenu(menu: Menu, file: TFile): void {
27 | const meta = getMeta(this.app, file, this.settings);
28 | if (!meta) {
29 | return;
30 | }
31 | const keyMeta = meta.frontmatterKey;
32 | let title = (t("command.copy") as StringFunc)(keyMeta);
33 | let icon = "two-blank-pages";
34 | const enableMetaCopy = disableMetaCopy(
35 | this.app,
36 | this.settings,
37 | file
38 | );
39 | if (this.settings.enableCopyLink && keyMeta === this.settings.keyLink) {
40 | title = (t("command.copyURL") as string);
41 | icon = "price-tag-glyph";
42 | }
43 |
44 | if (meta.correspondingValue && enableMetaCopy) {
45 | menu.addSeparator();
46 | menu.addItem((item) => {
47 | item.setSection("info");
48 | item.setTitle(title)
49 | .setIcon(icon)
50 | .onClick(async () => {
51 | await getValue(this.app, file, this.settings);
52 | });
53 | });
54 | menu.addSeparator();
55 | }
56 | }
57 |
58 |
59 | async onload() {
60 | console.log("MetaCopy loaded");
61 | await this.loadSettings();
62 | this.addSettingTab(new CopySettingsTabs(this.app, this));
63 | this.convertstringToList("copyKey");
64 | this.registerEvent(
65 | this.app.workspace.on("file-menu", (menu, file: TFile) => {
66 | this.enableMenu(menu, file);
67 | }));
68 |
69 | this.registerEvent(
70 | this.app.workspace.on("editor-menu", (menu, editor, view) => {
71 | this.enableMenu(menu, view.file);
72 | })
73 | );
74 |
75 | this.addCommand({
76 | id: "obsidian-metacopy",
77 | name: "Metacopy",
78 | hotkeys: [],
79 | checkCallback: (checking: boolean) => {
80 | const fileMeta = checkMeta(this.app, this.settings);
81 | if (fileMeta) {
82 | if (!checking) {
83 | new CopyMetaSuggester(
84 | this.app,
85 | this.settings,
86 | this.app.workspace.getActiveFile()
87 | ).open();
88 | }
89 | return true;
90 | }
91 | return false;
92 | },
93 | });
94 | }
95 |
96 | async onunload() {
97 | console.log("MetaCopy unloaded");
98 | }
99 |
100 | async loadSettings() {
101 | this.settings = Object.assign(
102 | {},
103 | DEFAULT_SETTINGS,
104 | await this.loadData()
105 | );
106 | }
107 |
108 | async saveSettings() {
109 | await this.saveData(this.settings);
110 | }
111 | }
112 |
--------------------------------------------------------------------------------
/metacopy/modal.ts:
--------------------------------------------------------------------------------
1 | import {App, FuzzySuggestModal, TFile} from "obsidian";
2 | import {MetaCopySettings} from "./settings";
3 | import {copy, createLink} from "./src/utils";
4 | import {getAllMeta} from "./src/metadata";
5 | import { t } from "./i18n";
6 |
7 |
8 | interface CopyMetaModal {
9 | key: string;
10 | value: string;
11 | }
12 |
13 |
14 | export class CopyMetaSuggester extends FuzzySuggestModal {
15 | app: App;
16 | file: TFile;
17 | settings: MetaCopySettings;
18 |
19 | constructor(app: App, settings: MetaCopySettings, file: TFile) {
20 | super(app);
21 | this.file = file;
22 | this.settings = settings;
23 | }
24 |
25 | getItemText(item: CopyMetaModal): string {
26 | return item.key;
27 | }
28 |
29 | getItems(): CopyMetaModal[] {
30 | return getAllMeta(this.app, this.file, this.settings);
31 | }
32 |
33 | // eslint-disable-next-line @typescript-eslint/no-unused-vars
34 | onChooseItem(item: CopyMetaModal, evt: MouseEvent | KeyboardEvent): void {
35 | item.value = item.value.toString();
36 | if (item.value.split(",").length > 1) {
37 | item.value = "- " + item.value.replaceAll(",", "\n- ");
38 | }
39 | let contents = item.value;
40 | const cmd = t("command.suggesterCopyURL") as string;
41 | if (item.key === cmd) {
42 | contents = createLink(
43 | this.file,
44 | this.settings,
45 | {frontmatterKey: item.key, correspondingValue: item.value},
46 | this.app
47 | );
48 | }
49 |
50 | copy(contents, item.key, this.settings).then();
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/metacopy/settings.ts:
--------------------------------------------------------------------------------
1 | import {App, PluginSettingTab, Setting} from "obsidian";
2 | import { t } from "./i18n";
3 | import MetaCopy from "./main";
4 |
5 | export interface MetaCopySettings {
6 | copyKey: string[];
7 | baseLink: string;
8 | keyLink: string;
9 | comport: boolean;
10 | disableKey: string;
11 | folderNote: boolean;
12 | defaultKeyLink: string;
13 | behaviourLinkCreator: string;
14 | useFrontMatterTitle: boolean;
15 | frontmattertitleKey: string;
16 | titleRegex: string;
17 | titleReplace: string;
18 | removeLinkPart: string[];
19 | enableCopyLink: boolean;
20 | }
21 |
22 | export interface MetaCopyValue
23 | {
24 | frontmatterKey: string;
25 | correspondingValue: string;
26 | }
27 |
28 | export enum BehaviourLinkCreator {
29 | CATEGORY_KEY = "categoryKey",
30 | OBSIDIAN_PATH = "obsidianPath",
31 | FIXED_FOLDER = "fixedFolder",
32 | }
33 |
34 | export const DEFAULT_SETTINGS: MetaCopySettings = {
35 | copyKey: [],
36 | baseLink: "",
37 | keyLink: "",
38 | comport: false,
39 | disableKey: "",
40 | folderNote: false,
41 | defaultKeyLink: "",
42 | behaviourLinkCreator: BehaviourLinkCreator.CATEGORY_KEY,
43 | useFrontMatterTitle: false,
44 | frontmattertitleKey: "title",
45 | titleRegex: "",
46 | titleReplace: "",
47 | removeLinkPart: [],
48 | enableCopyLink: false,
49 | };
50 |
51 |
52 |
53 | export class CopySettingsTabs extends PluginSettingTab {
54 | plugin: MetaCopy;
55 |
56 | constructor(app: App, plugin: MetaCopy) {
57 | super(app, plugin);
58 | this.plugin = plugin;
59 | }
60 |
61 |
62 | display(): void {
63 | const {containerEl} = this;
64 |
65 | containerEl.empty();
66 |
67 | containerEl.createEl("h2", {text: t("metaCopySettings") as string});
68 |
69 | new Setting(containerEl)
70 | .setName(t("keyTitle.title") as string)
71 | .setDesc(t("keyTitle.desc") as string)
72 | .addTextArea((text) =>
73 | text
74 | .setPlaceholder(t("keyTitle.placeholder") as string)
75 | .setValue(this.plugin.settings.copyKey.join(", "))
76 | .onChange(async (value) => {
77 | this.plugin.settings.copyKey = value.split(/[\n, ]/);
78 | await this.plugin.saveSettings();
79 | })
80 | );
81 | new Setting(containerEl)
82 | .setName(t("toggleLinkCreator.title") as string)
83 | .setDesc(t("toggleLinkCreator.desc") as string)
84 | .addToggle((toggle) =>
85 | toggle
86 | .setValue(this.plugin.settings.enableCopyLink)
87 | .onChange(async (value) => {
88 | this.plugin.settings.enableCopyLink = value;
89 | await this.plugin.saveSettings();
90 | this.display();
91 | })
92 | );
93 | if (this.plugin.settings.enableCopyLink) {
94 | containerEl.createEl("h3", { text: (t("linkCreator.header") as string) });
95 | new Setting(containerEl)
96 | .setName(t("linkCreator.baseLink") as string)
97 | .setDesc(t("linkCreator.baseLinkDesc") as string)
98 | .addText((text) =>
99 | text
100 | .setPlaceholder("https://obsidian-file.github.io/")
101 | .setValue(this.plugin.settings.baseLink)
102 | .onChange(async (value) => {
103 | this.plugin.settings.baseLink = value;
104 | await this.plugin.saveSettings();
105 | })
106 | );
107 |
108 | new Setting(containerEl)
109 | .setName(t("linkCreator.behavior.title") as string)
110 | .setDesc(t("linkCreator.behavior.desc") as string)
111 | .addDropdown((dropdown) =>
112 | dropdown
113 | .addOptions({
114 | fixedFolder: t("linkCreator.behavior.fixedFolder") as string,
115 | categoryKey: t("linkCreator.behavior.categoryKey") as string,
116 | obsidianPath: t("linkCreator.behavior.obsidianPath") as string,
117 | })
118 | .setValue(this.plugin.settings.behaviourLinkCreator)
119 | .onChange(async (value) => {
120 | this.plugin.settings.behaviourLinkCreator = value;
121 | this.display();
122 | await this.plugin.saveSettings();
123 | }));
124 |
125 | if (this.plugin.settings.behaviourLinkCreator === BehaviourLinkCreator.CATEGORY_KEY) {
126 | new Setting(containerEl)
127 | .setName(t("linkCreator.keyLink.title") as string)
128 | .setDesc(t("linkCreator.keyLink.desc") as string)
129 | .setClass("metacopy-settings")
130 | .addText((text) =>
131 | text
132 | .setPlaceholder("")
133 | .setValue(this.plugin.settings.keyLink)
134 | .onChange(async (value) => {
135 | this.plugin.settings.keyLink = value;
136 | await this.plugin.saveSettings();
137 | })
138 | );
139 | }
140 |
141 |
142 | new Setting(containerEl)
143 | .setName(t("linkCreator.keyLink.defaultValue") as string)
144 | .setDesc(t("linkCreator.keyLink.defaultValueDesc") as string)
145 | .addText((text) =>
146 | text
147 | .setPlaceholder("")
148 | .setValue(this.plugin.settings.defaultKeyLink)
149 | .onChange(async (value) => {
150 | this.plugin.settings.defaultKeyLink = value;
151 | await this.plugin.saveSettings();
152 | }));
153 |
154 | if (this.plugin.settings.behaviourLinkCreator === BehaviourLinkCreator.OBSIDIAN_PATH || this.plugin.settings.behaviourLinkCreator === BehaviourLinkCreator.CATEGORY_KEY) {
155 | new Setting(containerEl)
156 | .setName(t("linkCreator.folderNote.title") as string)
157 | .setDesc(t("linkCreator.folderNote.desc") as string)
158 | .addToggle((toggle) => {
159 | toggle.setValue(this.plugin.settings.folderNote);
160 | toggle.onChange(async (value) => {
161 | this.plugin.settings.folderNote = value;
162 | await this.plugin.saveSettings();
163 | });
164 | });
165 | }
166 |
167 | const titleSettings = new Setting(containerEl)
168 | .setName(t("linkCreator.useFrontMatterTitle.title") as string)
169 | .setDesc(t("linkCreator.useFrontMatterTitle.desc") as string)
170 | .addToggle((toggle) => {
171 | toggle.setValue(this.plugin.settings.useFrontMatterTitle);
172 | toggle.onChange(async (value) => {
173 | this.plugin.settings.useFrontMatterTitle = value;
174 | await this.plugin.saveSettings();
175 | this.display();
176 | });
177 | });
178 | if (this.plugin.settings.useFrontMatterTitle) {
179 | titleSettings
180 | .addText((text) => {
181 | text
182 | .setPlaceholder("title")
183 | .setValue(this.plugin.settings.frontmattertitleKey)
184 | .onChange(async (value) => {
185 | this.plugin.settings.frontmattertitleKey = value.trim();
186 | await this.plugin.saveSettings();
187 | });
188 | });
189 | }
190 |
191 | new Setting(containerEl)
192 | .setName(t("linkCreator.regexReplaceTitle.title") as string)
193 | .setDesc(t("linkCreator.regexReplaceTitle.desc") as string)
194 | .addText((text) =>
195 | text
196 | .setPlaceholder("")
197 | .setValue(this.plugin.settings.titleRegex)
198 | .onChange(async (value) => {
199 | this.plugin.settings.titleRegex = value;
200 | await this.plugin.saveSettings();
201 | })
202 | )
203 | .addText((text) =>
204 | text
205 | .setPlaceholder("")
206 | .setValue(this.plugin.settings.titleReplace)
207 | .onChange(async (value) => {
208 | this.plugin.settings.titleReplace = value;
209 | await this.plugin.saveSettings();
210 | })
211 | );
212 |
213 | new Setting(containerEl)
214 | .setName(t("linkCreator.replaceLinkPart.title") as string)
215 | .setDesc(t("linkCreator.replaceLinkPart.desc") as string)
216 | .addTextArea((text) =>
217 | text
218 | .setPlaceholder("")
219 | .setValue(this.plugin.settings.removeLinkPart.join(", "))
220 | .onChange(async (value) => {
221 | this.plugin.settings.removeLinkPart = value
222 | .split(/[,\n]/)
223 | .map((item) => item.trim())
224 | .filter((item) => item.length > 0);
225 | await this.plugin.saveSettings();
226 | })
227 | );
228 | }
229 | containerEl.createEl("h3", {text: t("disable.title") as string});
230 | containerEl.createEl("i", {
231 | text: t("disable.desc") as string,
232 | });
233 |
234 | new Setting(containerEl)
235 | .setName(t("menuBehavior.title") as string)
236 | .setDesc(t("menuBehavior.desc") as string)
237 | .addToggle((toggle) => {
238 | toggle.setValue(this.plugin.settings.comport);
239 | toggle.onChange(async (value) => {
240 | this.plugin.settings.comport = value;
241 | await this.plugin.saveSettings();
242 | });
243 | });
244 | new Setting(containerEl)
245 | .setName(t("menuBehavior.keyMenu") as string)
246 | .setDesc(t("menuBehavior.keyMenuDesc") as string)
247 | .addText((text) =>
248 | text
249 | .setPlaceholder("")
250 | .setValue(this.plugin.settings.disableKey)
251 | .onChange(async (value) => {
252 | this.plugin.settings.disableKey = value;
253 | await this.plugin.saveSettings();
254 | })
255 | );
256 | }
257 | }
258 |
--------------------------------------------------------------------------------
/metacopy/src/metadata.ts:
--------------------------------------------------------------------------------
1 | import {App, TFile} from "obsidian";
2 | import { BehaviourLinkCreator, MetaCopySettings, MetaCopyValue } from "../settings";
3 | import {disableMetaCopy} from "./pluginBehavior";
4 | import { t } from "../i18n";
5 |
6 |
7 | export function getMeta(app: App, file: TFile, settings: MetaCopySettings): MetaCopyValue {
8 | if (!file) {
9 | return null;
10 | }
11 | const meta = app.metadataCache.getFileCache(file)?.frontmatter;
12 | const defaultKey: MetaCopyValue = {
13 | frontmatterKey : "DefaultKey",
14 | correspondingValue : settings.defaultKeyLink,
15 | };
16 | if (meta === undefined) {
17 | if (settings.behaviourLinkCreator !== BehaviourLinkCreator.OBSIDIAN_PATH) {
18 | return null;
19 | } else {
20 | return defaultKey;
21 | }
22 | }
23 |
24 | let linkValue = "";
25 | let metaKey = "";
26 | if (settings?.copyKey.length > 1) {
27 | for (let i = 0; i < settings.copyKey.length; i++) {
28 | if (meta[settings.copyKey[i]] !== undefined) {
29 | linkValue = meta[settings.copyKey[i]].trim();
30 | metaKey = settings.copyKey[i].trim();
31 | break;
32 | }
33 | }
34 | } else {
35 | linkValue = meta[settings.copyKey[0]];
36 | metaKey = settings.copyKey[0];
37 | }
38 |
39 | const metaKeys: MetaCopyValue = {
40 | frontmatterKey: metaKey,
41 | correspondingValue: linkValue
42 | };
43 | if (!linkValue && settings.defaultKeyLink) {
44 | return defaultKey;
45 | }
46 | return metaKeys;
47 | }
48 |
49 | export function checkMeta(app: App, settings: MetaCopySettings) {
50 | const file = app.workspace.getActiveFile();
51 | const meta = getMeta(app, file, settings);
52 | const checkKey = meta?.frontmatterKey === "DefaultKey" || meta?.frontmatterKey;
53 | return !!file && checkKey;
54 | }
55 |
56 |
57 | export function getAllMeta(app: App, file: TFile, settings: MetaCopySettings) {
58 | const metaValue: string[]=[];
59 | const frontmatter = app.metadataCache.getCache(file.path).frontmatter;
60 | let listKey = settings.copyKey;
61 | listKey = listKey.map((x) => x.trim());
62 | if (listKey.length > 0) {
63 | for (let i = 0; i < listKey.length; i++) {
64 | if (frontmatter[listKey[i]]) {
65 | metaValue.push(frontmatter[listKey[i].trim()]);
66 | }
67 | }
68 | }
69 | let mappedListKey = listKey.map((key, i) => ({
70 | key,
71 | value: metaValue[i],
72 | }));
73 | mappedListKey = JSON.parse(JSON.stringify(mappedListKey));
74 | Object.entries(mappedListKey).forEach(([, v]) => {
75 | if (v.value === undefined) {
76 | mappedListKey.remove(v);
77 | }
78 | });
79 |
80 | if (settings.enableCopyLink) {
81 | mappedListKey[mappedListKey.length] = {
82 | key: t("command.suggesterCopyURL") as string,
83 | value: settings.defaultKeyLink
84 | };
85 | }
86 | return mappedListKey;
87 | }
88 |
--------------------------------------------------------------------------------
/metacopy/src/pluginBehavior.ts:
--------------------------------------------------------------------------------
1 | import {App, TFile} from "obsidian";
2 | import { BehaviourLinkCreator, MetaCopySettings } from "../settings";
3 |
4 | export function disableMetaCopy(app: App, settings: MetaCopySettings, file: TFile) {
5 | const toggle = settings.comport;
6 | const fileCache = app.metadataCache.getFileCache(file);
7 | const meta = fileCache?.frontmatter;
8 | if (!meta && settings.behaviourLinkCreator === BehaviourLinkCreator.OBSIDIAN_PATH) {
9 | return true;
10 | }
11 | if (toggle) {
12 | /* toggle : true ⇒ Disable on all file unless there is the frontmatterKey */
13 | if (meta === undefined) {
14 | return false; /* Disable Metacopy */
15 | } else return !!meta[settings.disableKey];
16 | } else {
17 | if (meta === undefined) {
18 | return false; /* Disable Meta Copy ; there is no frontmatter... */
19 | } else {
20 | return !meta[settings.disableKey];
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/metacopy/src/utils.ts:
--------------------------------------------------------------------------------
1 | import { App, TFile, Notice, TFolder, Vault, FrontMatterCache } from "obsidian";
2 | import { BehaviourLinkCreator, MetaCopySettings, MetaCopyValue } from "../settings";
3 | import {getMeta} from "./metadata";
4 | import { StringFunc, t } from "../i18n";
5 |
6 | function getTitleField(
7 | frontmatter: FrontMatterCache,
8 | file: TFile,
9 | settings: MetaCopySettings
10 | ): string {
11 | let fileName = file.name;
12 | if (!settings.useFrontMatterTitle) return fileName;
13 | if (
14 | frontmatter &&
15 | frontmatter[settings.frontmattertitleKey] &&
16 | frontmatter[settings.frontmattertitleKey] !== file.name
17 | ) {
18 |
19 | fileName= frontmatter[settings.frontmattertitleKey] + ".md";
20 | }
21 | return fileName;
22 | }
23 |
24 |
25 | export function createLink(
26 | file: TFile,
27 | settings: MetaCopySettings,
28 | metaCopy: MetaCopyValue,
29 | app: App,
30 | ) {
31 | let url = metaCopy.correspondingValue;
32 | const folderPath = checkSlash(url).replace(/(^\/|\/$)/, "");
33 | const folder = folderPath.split("/").slice(-1)[0];
34 | const meta = app.metadataCache.getFileCache(file)?.frontmatter;
35 | const cmd = t("command.copyURL") as string;
36 | const suggester = t("command.suggesterCopyURL") as string;
37 | if (settings) {
38 | let baseLink = settings.baseLink;
39 | if (meta && meta["baselink"] !== undefined) {
40 | baseLink = meta["baselink"];
41 | }
42 | baseLink = checkSlash(baseLink);
43 | const folderNote = settings.folderNote;
44 | let fileName = getTitleField(meta, file, settings);
45 | if (meta.path) {
46 | url = baseLink + meta.path + regexOnFileName(fileName, settings);
47 | }
48 | else if (settings.behaviourLinkCreator === "categoryKey") {
49 | const keyLink = settings.keyLink;
50 | if ((metaCopy.frontmatterKey === keyLink) || (metaCopy.frontmatterKey == "DefaultKey") || (metaCopy.frontmatterKey == cmd) || (metaCopy.frontmatterKey == suggester)) {
51 | if (fileName.replace(".md", "") === folder && folderNote) {
52 | fileName = "/";
53 | } else {
54 | fileName = "/" + fileName + "/";
55 | }
56 | url = baseLink + folderPath + regexOnFileName(fileName, settings);
57 | }
58 | } else if (settings.behaviourLinkCreator === BehaviourLinkCreator.OBSIDIAN_PATH) {
59 | fileName = folderNoteIndexOBS(file, app.vault, settings, fileName);
60 | url = baseLink + settings.defaultKeyLink + fileName;
61 | } else {
62 | url = baseLink + settings.defaultKeyLink + "/" + regexOnFileName(fileName, settings) + "/";
63 | }
64 | }
65 | if (settings.removeLinkPart) {
66 | for (const part of settings.removeLinkPart) {
67 | url = url.replace(part, "");
68 | }
69 | }
70 | return encodeURI(url);
71 | }
72 |
73 | function folderNoteIndexOBS(
74 | file: TFile,
75 | vault: Vault,
76 | settings: MetaCopySettings,
77 | fileName: string
78 | ): string {
79 | const defaultPath = `/${file.parent.path}/${regexOnFileName(fileName, settings)}`;
80 | if (!settings.folderNote) return defaultPath;
81 | const folderParent = file.parent.name;
82 | if (fileName.replace(".md", "") === folderParent) return `/${file.parent.path}/`;
83 | const outsideFolder = vault.getAbstractFileByPath(
84 | file.path.replace(".md", "")
85 | );
86 | if (outsideFolder && outsideFolder instanceof TFolder) {
87 | return `/${outsideFolder.path}/` ;
88 | } else {
89 | return defaultPath;
90 | }
91 | }
92 |
93 | export async function getValue(
94 | app: App,
95 | file: TFile,
96 | settings: MetaCopySettings
97 | ) {
98 | const meta: MetaCopyValue = getMeta(app, file, settings);
99 | if (!meta || meta.correspondingValue === undefined) {
100 | return false;
101 | }
102 | let value = meta.correspondingValue.toString();
103 | if (value.split(",").length > 1) {
104 | value = "- " + value.replaceAll(",", "\n- ");
105 | }
106 | const metaCopyValue:MetaCopyValue = {frontmatterKey: meta.frontmatterKey, correspondingValue: value};
107 | const linkValue = createLink(file, settings, metaCopyValue, app);
108 | await copy(linkValue, meta.frontmatterKey, settings);
109 | }
110 |
111 | export function checkSlash(
112 | link: string
113 | ) {
114 | const slash = link.match(/\/*$/);
115 | if (slash[0].length != 1) {
116 | link = link.replace(/\/*$/, "") + "/";
117 | }
118 | return link;
119 | }
120 |
121 | export async function copy(content: string, item: string, settings: MetaCopySettings): Promise {
122 | await navigator.clipboard.writeText(content);
123 | let message = (t("command.metadataMessage") as StringFunc)(item);
124 | if (item == "DefaultKey" || item == settings.keyLink) {
125 | message = t("command.metadataMessageURL") as string;
126 | }
127 | new Notice(message);
128 | }
129 |
130 | /**
131 | * Apply a regex edition on the title. It can be used to remove special characters or to add a prefix or suffix
132 | * @param {string} fileName file name
133 | * @param {MetaCopySettings} settings Settings
134 | * @return {string} edited file name
135 | */
136 | export function regexOnFileName(fileName: string, settings: MetaCopySettings): string {
137 | if (fileName === "/" && settings.folderNote) return fileName;
138 | fileName = fileName.replace(".md", "");
139 | if (settings.titleRegex.length > 0) {
140 | const toReplace = settings.titleRegex;
141 | const replaceWith = settings.titleReplace;
142 | if (toReplace.match(/\/.+\//)) {
143 | const flagsRegex = toReplace.match(/\/([gimy]+)$/);
144 | const flags = flagsRegex ? Array.from(new Set(flagsRegex[1].split(""))).join("") : "";
145 | const regex = new RegExp(toReplace.replace(/\/(.+)\/.*/, "$1"), flags);
146 | return fileName.replace(
147 | regex,
148 | replaceWith
149 | );
150 | } else {
151 | return fileName.replaceAll(
152 | toReplace,
153 | replaceWith
154 | );
155 | }
156 | }
157 | return fileName;
158 | }
159 |
160 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "obsidian-metacopy",
3 | "version": "1.10.0",
4 | "description": "This is a plugin that copy the value of a frontmatter key.",
5 | "main": "main.js",
6 | "scripts": {
7 | "dev": "esbuild metacopy/main.ts --bundle --external:obsidian --outdir=. --target=es2016 --format=cjs --sourcemap=inline --watch",
8 | "build": "esbuild metacopy/main.ts --bundle --external:obsidian --outdir=. --target=es2016 --format=cjs",
9 | "release": "commit-and-tag-version"
10 | },
11 | "standard-version": {
12 | "t": ""
13 | },
14 | "keywords": [],
15 | "author": "Mara",
16 | "license": "AGPL-3.0",
17 | "devDependencies": {
18 | "@types/node": "^20.4.5",
19 | "@typescript-eslint/eslint-plugin": "^6.2.0",
20 | "@typescript-eslint/parser": "^6.2.0",
21 | "esbuild": "0.18.17",
22 | "eslint": "^8.46.0",
23 | "obsidian": "^1.3.5",
24 | "prettier": "3.0.0",
25 | "tslib": "2.6.1",
26 | "typescript": "5.1.6"
27 | },
28 | "dependencies": {
29 | "commit-and-tag-version": "^11.2.2"
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: 5.4
2 |
3 | specifiers:
4 | '@types/node': ^20.4.5
5 | '@typescript-eslint/eslint-plugin': ^6.2.0
6 | '@typescript-eslint/parser': ^6.2.0
7 | commit-and-tag-version: ^11.2.2
8 | esbuild: 0.18.17
9 | eslint: ^8.46.0
10 | obsidian: ^1.3.5
11 | prettier: 3.0.0
12 | tslib: 2.6.1
13 | typescript: 5.1.6
14 |
15 | dependencies:
16 | commit-and-tag-version: 11.2.2
17 |
18 | devDependencies:
19 | '@types/node': 20.4.5
20 | '@typescript-eslint/eslint-plugin': 6.2.0_idzvfmj5qli4h3jfxnf522w3fe
21 | '@typescript-eslint/parser': 6.2.0_7haavtekmro7ptbnqmctjaodju
22 | esbuild: 0.18.17
23 | eslint: 8.46.0
24 | obsidian: 1.3.5_qhkmntjgjdxkyszk3etqrkzvlm
25 | prettier: 3.0.0
26 | tslib: 2.6.1
27 | typescript: 5.1.6
28 |
29 | packages:
30 |
31 | /@aashutoshrathi/word-wrap/1.2.6:
32 | resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==}
33 | engines: {node: '>=0.10.0'}
34 | dev: true
35 |
36 | /@babel/code-frame/7.22.5:
37 | resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==}
38 | engines: {node: '>=6.9.0'}
39 | dependencies:
40 | '@babel/highlight': 7.22.5
41 | dev: false
42 |
43 | /@babel/helper-validator-identifier/7.22.5:
44 | resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==}
45 | engines: {node: '>=6.9.0'}
46 | dev: false
47 |
48 | /@babel/highlight/7.22.5:
49 | resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==}
50 | engines: {node: '>=6.9.0'}
51 | dependencies:
52 | '@babel/helper-validator-identifier': 7.22.5
53 | chalk: 2.4.2
54 | js-tokens: 4.0.0
55 | dev: false
56 |
57 | /@codemirror/state/6.2.1:
58 | resolution: {integrity: sha512-RupHSZ8+OjNT38zU9fKH2sv+Dnlr8Eb8sl4NOnnqz95mCFTZUaiRP8Xv5MeeaG0px2b8Bnfe7YGwCV3nsBhbuw==}
59 | dev: true
60 |
61 | /@codemirror/view/6.15.3:
62 | resolution: {integrity: sha512-chNgR8H7Ipx7AZUt0+Kknk7BCow/ron3mHd1VZdM7hQXiI79+UlWqcxpCiexTxZQ+iSkqndk3HHAclJOcjSuog==}
63 | dependencies:
64 | '@codemirror/state': 6.2.1
65 | style-mod: 4.0.3
66 | w3c-keyname: 2.2.8
67 | dev: true
68 |
69 | /@esbuild/android-arm/0.18.17:
70 | resolution: {integrity: sha512-wHsmJG/dnL3OkpAcwbgoBTTMHVi4Uyou3F5mf58ZtmUyIKfcdA7TROav/6tCzET4A3QW2Q2FC+eFneMU+iyOxg==}
71 | engines: {node: '>=12'}
72 | cpu: [arm]
73 | os: [android]
74 | requiresBuild: true
75 | dev: true
76 | optional: true
77 |
78 | /@esbuild/android-arm64/0.18.17:
79 | resolution: {integrity: sha512-9np+YYdNDed5+Jgr1TdWBsozZ85U1Oa3xW0c7TWqH0y2aGghXtZsuT8nYRbzOMcl0bXZXjOGbksoTtVOlWrRZg==}
80 | engines: {node: '>=12'}
81 | cpu: [arm64]
82 | os: [android]
83 | requiresBuild: true
84 | dev: true
85 | optional: true
86 |
87 | /@esbuild/android-x64/0.18.17:
88 | resolution: {integrity: sha512-O+FeWB/+xya0aLg23hHEM2E3hbfwZzjqumKMSIqcHbNvDa+dza2D0yLuymRBQQnC34CWrsJUXyH2MG5VnLd6uw==}
89 | engines: {node: '>=12'}
90 | cpu: [x64]
91 | os: [android]
92 | requiresBuild: true
93 | dev: true
94 | optional: true
95 |
96 | /@esbuild/darwin-arm64/0.18.17:
97 | resolution: {integrity: sha512-M9uJ9VSB1oli2BE/dJs3zVr9kcCBBsE883prage1NWz6pBS++1oNn/7soPNS3+1DGj0FrkSvnED4Bmlu1VAE9g==}
98 | engines: {node: '>=12'}
99 | cpu: [arm64]
100 | os: [darwin]
101 | requiresBuild: true
102 | dev: true
103 | optional: true
104 |
105 | /@esbuild/darwin-x64/0.18.17:
106 | resolution: {integrity: sha512-XDre+J5YeIJDMfp3n0279DFNrGCXlxOuGsWIkRb1NThMZ0BsrWXoTg23Jer7fEXQ9Ye5QjrvXpxnhzl3bHtk0g==}
107 | engines: {node: '>=12'}
108 | cpu: [x64]
109 | os: [darwin]
110 | requiresBuild: true
111 | dev: true
112 | optional: true
113 |
114 | /@esbuild/freebsd-arm64/0.18.17:
115 | resolution: {integrity: sha512-cjTzGa3QlNfERa0+ptykyxs5A6FEUQQF0MuilYXYBGdBxD3vxJcKnzDlhDCa1VAJCmAxed6mYhA2KaJIbtiNuQ==}
116 | engines: {node: '>=12'}
117 | cpu: [arm64]
118 | os: [freebsd]
119 | requiresBuild: true
120 | dev: true
121 | optional: true
122 |
123 | /@esbuild/freebsd-x64/0.18.17:
124 | resolution: {integrity: sha512-sOxEvR8d7V7Kw8QqzxWc7bFfnWnGdaFBut1dRUYtu+EIRXefBc/eIsiUiShnW0hM3FmQ5Zf27suDuHsKgZ5QrA==}
125 | engines: {node: '>=12'}
126 | cpu: [x64]
127 | os: [freebsd]
128 | requiresBuild: true
129 | dev: true
130 | optional: true
131 |
132 | /@esbuild/linux-arm/0.18.17:
133 | resolution: {integrity: sha512-2d3Lw6wkwgSLC2fIvXKoMNGVaeY8qdN0IC3rfuVxJp89CRfA3e3VqWifGDfuakPmp90+ZirmTfye1n4ncjv2lg==}
134 | engines: {node: '>=12'}
135 | cpu: [arm]
136 | os: [linux]
137 | requiresBuild: true
138 | dev: true
139 | optional: true
140 |
141 | /@esbuild/linux-arm64/0.18.17:
142 | resolution: {integrity: sha512-c9w3tE7qA3CYWjT+M3BMbwMt+0JYOp3vCMKgVBrCl1nwjAlOMYzEo+gG7QaZ9AtqZFj5MbUc885wuBBmu6aADQ==}
143 | engines: {node: '>=12'}
144 | cpu: [arm64]
145 | os: [linux]
146 | requiresBuild: true
147 | dev: true
148 | optional: true
149 |
150 | /@esbuild/linux-ia32/0.18.17:
151 | resolution: {integrity: sha512-1DS9F966pn5pPnqXYz16dQqWIB0dmDfAQZd6jSSpiT9eX1NzKh07J6VKR3AoXXXEk6CqZMojiVDSZi1SlmKVdg==}
152 | engines: {node: '>=12'}
153 | cpu: [ia32]
154 | os: [linux]
155 | requiresBuild: true
156 | dev: true
157 | optional: true
158 |
159 | /@esbuild/linux-loong64/0.18.17:
160 | resolution: {integrity: sha512-EvLsxCk6ZF0fpCB6w6eOI2Fc8KW5N6sHlIovNe8uOFObL2O+Mr0bflPHyHwLT6rwMg9r77WOAWb2FqCQrVnwFg==}
161 | engines: {node: '>=12'}
162 | cpu: [loong64]
163 | os: [linux]
164 | requiresBuild: true
165 | dev: true
166 | optional: true
167 |
168 | /@esbuild/linux-mips64el/0.18.17:
169 | resolution: {integrity: sha512-e0bIdHA5p6l+lwqTE36NAW5hHtw2tNRmHlGBygZC14QObsA3bD4C6sXLJjvnDIjSKhW1/0S3eDy+QmX/uZWEYQ==}
170 | engines: {node: '>=12'}
171 | cpu: [mips64el]
172 | os: [linux]
173 | requiresBuild: true
174 | dev: true
175 | optional: true
176 |
177 | /@esbuild/linux-ppc64/0.18.17:
178 | resolution: {integrity: sha512-BAAilJ0M5O2uMxHYGjFKn4nJKF6fNCdP1E0o5t5fvMYYzeIqy2JdAP88Az5LHt9qBoUa4tDaRpfWt21ep5/WqQ==}
179 | engines: {node: '>=12'}
180 | cpu: [ppc64]
181 | os: [linux]
182 | requiresBuild: true
183 | dev: true
184 | optional: true
185 |
186 | /@esbuild/linux-riscv64/0.18.17:
187 | resolution: {integrity: sha512-Wh/HW2MPnC3b8BqRSIme/9Zhab36PPH+3zam5pqGRH4pE+4xTrVLx2+XdGp6fVS3L2x+DrsIcsbMleex8fbE6g==}
188 | engines: {node: '>=12'}
189 | cpu: [riscv64]
190 | os: [linux]
191 | requiresBuild: true
192 | dev: true
193 | optional: true
194 |
195 | /@esbuild/linux-s390x/0.18.17:
196 | resolution: {integrity: sha512-j/34jAl3ul3PNcK3pfI0NSlBANduT2UO5kZ7FCaK33XFv3chDhICLY8wJJWIhiQ+YNdQ9dxqQctRg2bvrMlYgg==}
197 | engines: {node: '>=12'}
198 | cpu: [s390x]
199 | os: [linux]
200 | requiresBuild: true
201 | dev: true
202 | optional: true
203 |
204 | /@esbuild/linux-x64/0.18.17:
205 | resolution: {integrity: sha512-QM50vJ/y+8I60qEmFxMoxIx4de03pGo2HwxdBeFd4nMh364X6TIBZ6VQ5UQmPbQWUVWHWws5MmJXlHAXvJEmpQ==}
206 | engines: {node: '>=12'}
207 | cpu: [x64]
208 | os: [linux]
209 | requiresBuild: true
210 | dev: true
211 | optional: true
212 |
213 | /@esbuild/netbsd-x64/0.18.17:
214 | resolution: {integrity: sha512-/jGlhWR7Sj9JPZHzXyyMZ1RFMkNPjC6QIAan0sDOtIo2TYk3tZn5UDrkE0XgsTQCxWTTOcMPf9p6Rh2hXtl5TQ==}
215 | engines: {node: '>=12'}
216 | cpu: [x64]
217 | os: [netbsd]
218 | requiresBuild: true
219 | dev: true
220 | optional: true
221 |
222 | /@esbuild/openbsd-x64/0.18.17:
223 | resolution: {integrity: sha512-rSEeYaGgyGGf4qZM2NonMhMOP/5EHp4u9ehFiBrg7stH6BYEEjlkVREuDEcQ0LfIl53OXLxNbfuIj7mr5m29TA==}
224 | engines: {node: '>=12'}
225 | cpu: [x64]
226 | os: [openbsd]
227 | requiresBuild: true
228 | dev: true
229 | optional: true
230 |
231 | /@esbuild/sunos-x64/0.18.17:
232 | resolution: {integrity: sha512-Y7ZBbkLqlSgn4+zot4KUNYst0bFoO68tRgI6mY2FIM+b7ZbyNVtNbDP5y8qlu4/knZZ73fgJDlXID+ohY5zt5g==}
233 | engines: {node: '>=12'}
234 | cpu: [x64]
235 | os: [sunos]
236 | requiresBuild: true
237 | dev: true
238 | optional: true
239 |
240 | /@esbuild/win32-arm64/0.18.17:
241 | resolution: {integrity: sha512-bwPmTJsEQcbZk26oYpc4c/8PvTY3J5/QK8jM19DVlEsAB41M39aWovWoHtNm78sd6ip6prilxeHosPADXtEJFw==}
242 | engines: {node: '>=12'}
243 | cpu: [arm64]
244 | os: [win32]
245 | requiresBuild: true
246 | dev: true
247 | optional: true
248 |
249 | /@esbuild/win32-ia32/0.18.17:
250 | resolution: {integrity: sha512-H/XaPtPKli2MhW+3CQueo6Ni3Avggi6hP/YvgkEe1aSaxw+AeO8MFjq8DlgfTd9Iz4Yih3QCZI6YLMoyccnPRg==}
251 | engines: {node: '>=12'}
252 | cpu: [ia32]
253 | os: [win32]
254 | requiresBuild: true
255 | dev: true
256 | optional: true
257 |
258 | /@esbuild/win32-x64/0.18.17:
259 | resolution: {integrity: sha512-fGEb8f2BSA3CW7riJVurug65ACLuQAzKq0SSqkY2b2yHHH0MzDfbLyKIGzHwOI/gkHcxM/leuSW6D5w/LMNitA==}
260 | engines: {node: '>=12'}
261 | cpu: [x64]
262 | os: [win32]
263 | requiresBuild: true
264 | dev: true
265 | optional: true
266 |
267 | /@eslint-community/eslint-utils/4.4.0_eslint@8.46.0:
268 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
269 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
270 | peerDependencies:
271 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
272 | dependencies:
273 | eslint: 8.46.0
274 | eslint-visitor-keys: 3.4.2
275 | dev: true
276 |
277 | /@eslint-community/regexpp/4.6.2:
278 | resolution: {integrity: sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==}
279 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
280 | dev: true
281 |
282 | /@eslint/eslintrc/2.1.1:
283 | resolution: {integrity: sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==}
284 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
285 | dependencies:
286 | ajv: 6.12.6
287 | debug: 4.3.4
288 | espree: 9.6.1
289 | globals: 13.20.0
290 | ignore: 5.2.4
291 | import-fresh: 3.3.0
292 | js-yaml: 4.1.0
293 | minimatch: 3.1.2
294 | strip-json-comments: 3.1.1
295 | transitivePeerDependencies:
296 | - supports-color
297 | dev: true
298 |
299 | /@eslint/js/8.46.0:
300 | resolution: {integrity: sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==}
301 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
302 | dev: true
303 |
304 | /@humanwhocodes/config-array/0.11.10:
305 | resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==}
306 | engines: {node: '>=10.10.0'}
307 | dependencies:
308 | '@humanwhocodes/object-schema': 1.2.1
309 | debug: 4.3.4
310 | minimatch: 3.1.2
311 | transitivePeerDependencies:
312 | - supports-color
313 | dev: true
314 |
315 | /@humanwhocodes/module-importer/1.0.1:
316 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
317 | engines: {node: '>=12.22'}
318 | dev: true
319 |
320 | /@humanwhocodes/object-schema/1.2.1:
321 | resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==}
322 | dev: true
323 |
324 | /@hutson/parse-repository-url/3.0.2:
325 | resolution: {integrity: sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==}
326 | engines: {node: '>=6.9.0'}
327 | dev: false
328 |
329 | /@nodelib/fs.scandir/2.1.5:
330 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
331 | engines: {node: '>= 8'}
332 | dependencies:
333 | '@nodelib/fs.stat': 2.0.5
334 | run-parallel: 1.2.0
335 | dev: true
336 |
337 | /@nodelib/fs.stat/2.0.5:
338 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
339 | engines: {node: '>= 8'}
340 | dev: true
341 |
342 | /@nodelib/fs.walk/1.2.8:
343 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
344 | engines: {node: '>= 8'}
345 | dependencies:
346 | '@nodelib/fs.scandir': 2.1.5
347 | fastq: 1.15.0
348 | dev: true
349 |
350 | /@types/codemirror/5.60.8:
351 | resolution: {integrity: sha512-VjFgDF/eB+Aklcy15TtOTLQeMjTo07k7KAjql8OK5Dirr7a6sJY4T1uVBDuTVG9VEmn1uUsohOpYnVfgC6/jyw==}
352 | dependencies:
353 | '@types/tern': 0.23.4
354 | dev: true
355 |
356 | /@types/estree/1.0.1:
357 | resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==}
358 | dev: true
359 |
360 | /@types/json-schema/7.0.12:
361 | resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==}
362 | dev: true
363 |
364 | /@types/minimist/1.2.2:
365 | resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==}
366 | dev: false
367 |
368 | /@types/node/20.4.5:
369 | resolution: {integrity: sha512-rt40Nk13II9JwQBdeYqmbn2Q6IVTA5uPhvSO+JVqdXw/6/4glI6oR9ezty/A9Hg5u7JH4OmYmuQ+XvjKm0Datg==}
370 | dev: true
371 |
372 | /@types/normalize-package-data/2.4.1:
373 | resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==}
374 | dev: false
375 |
376 | /@types/semver/7.5.0:
377 | resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==}
378 | dev: true
379 |
380 | /@types/tern/0.23.4:
381 | resolution: {integrity: sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg==}
382 | dependencies:
383 | '@types/estree': 1.0.1
384 | dev: true
385 |
386 | /@typescript-eslint/eslint-plugin/6.2.0_idzvfmj5qli4h3jfxnf522w3fe:
387 | resolution: {integrity: sha512-rClGrMuyS/3j0ETa1Ui7s6GkLhfZGKZL3ZrChLeAiACBE/tRc1wq8SNZESUuluxhLj9FkUefRs2l6bCIArWBiQ==}
388 | engines: {node: ^16.0.0 || >=18.0.0}
389 | peerDependencies:
390 | '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha
391 | eslint: ^7.0.0 || ^8.0.0
392 | typescript: '*'
393 | peerDependenciesMeta:
394 | typescript:
395 | optional: true
396 | dependencies:
397 | '@eslint-community/regexpp': 4.6.2
398 | '@typescript-eslint/parser': 6.2.0_7haavtekmro7ptbnqmctjaodju
399 | '@typescript-eslint/scope-manager': 6.2.0
400 | '@typescript-eslint/type-utils': 6.2.0_7haavtekmro7ptbnqmctjaodju
401 | '@typescript-eslint/utils': 6.2.0_7haavtekmro7ptbnqmctjaodju
402 | '@typescript-eslint/visitor-keys': 6.2.0
403 | debug: 4.3.4
404 | eslint: 8.46.0
405 | graphemer: 1.4.0
406 | ignore: 5.2.4
407 | natural-compare: 1.4.0
408 | natural-compare-lite: 1.4.0
409 | semver: 7.5.4
410 | ts-api-utils: 1.0.1_typescript@5.1.6
411 | typescript: 5.1.6
412 | transitivePeerDependencies:
413 | - supports-color
414 | dev: true
415 |
416 | /@typescript-eslint/parser/6.2.0_7haavtekmro7ptbnqmctjaodju:
417 | resolution: {integrity: sha512-igVYOqtiK/UsvKAmmloQAruAdUHihsOCvplJpplPZ+3h4aDkC/UKZZNKgB6h93ayuYLuEymU3h8nF1xMRbh37g==}
418 | engines: {node: ^16.0.0 || >=18.0.0}
419 | peerDependencies:
420 | eslint: ^7.0.0 || ^8.0.0
421 | typescript: '*'
422 | peerDependenciesMeta:
423 | typescript:
424 | optional: true
425 | dependencies:
426 | '@typescript-eslint/scope-manager': 6.2.0
427 | '@typescript-eslint/types': 6.2.0
428 | '@typescript-eslint/typescript-estree': 6.2.0_typescript@5.1.6
429 | '@typescript-eslint/visitor-keys': 6.2.0
430 | debug: 4.3.4
431 | eslint: 8.46.0
432 | typescript: 5.1.6
433 | transitivePeerDependencies:
434 | - supports-color
435 | dev: true
436 |
437 | /@typescript-eslint/scope-manager/6.2.0:
438 | resolution: {integrity: sha512-1ZMNVgm5nnHURU8ZSJ3snsHzpFeNK84rdZjluEVBGNu7jDymfqceB3kdIZ6A4xCfEFFhRIB6rF8q/JIqJd2R0Q==}
439 | engines: {node: ^16.0.0 || >=18.0.0}
440 | dependencies:
441 | '@typescript-eslint/types': 6.2.0
442 | '@typescript-eslint/visitor-keys': 6.2.0
443 | dev: true
444 |
445 | /@typescript-eslint/type-utils/6.2.0_7haavtekmro7ptbnqmctjaodju:
446 | resolution: {integrity: sha512-DnGZuNU2JN3AYwddYIqrVkYW0uUQdv0AY+kz2M25euVNlujcN2u+rJgfJsBFlUEzBB6OQkUqSZPyuTLf2bP5mw==}
447 | engines: {node: ^16.0.0 || >=18.0.0}
448 | peerDependencies:
449 | eslint: ^7.0.0 || ^8.0.0
450 | typescript: '*'
451 | peerDependenciesMeta:
452 | typescript:
453 | optional: true
454 | dependencies:
455 | '@typescript-eslint/typescript-estree': 6.2.0_typescript@5.1.6
456 | '@typescript-eslint/utils': 6.2.0_7haavtekmro7ptbnqmctjaodju
457 | debug: 4.3.4
458 | eslint: 8.46.0
459 | ts-api-utils: 1.0.1_typescript@5.1.6
460 | typescript: 5.1.6
461 | transitivePeerDependencies:
462 | - supports-color
463 | dev: true
464 |
465 | /@typescript-eslint/types/6.2.0:
466 | resolution: {integrity: sha512-1nRRaDlp/XYJQLvkQJG5F3uBTno5SHPT7XVcJ5n1/k2WfNI28nJsvLakxwZRNY5spuatEKO7d5nZWsQpkqXwBA==}
467 | engines: {node: ^16.0.0 || >=18.0.0}
468 | dev: true
469 |
470 | /@typescript-eslint/typescript-estree/6.2.0_typescript@5.1.6:
471 | resolution: {integrity: sha512-Mts6+3HQMSM+LZCglsc2yMIny37IhUgp1Qe8yJUYVyO6rHP7/vN0vajKu3JvHCBIy8TSiKddJ/Zwu80jhnGj1w==}
472 | engines: {node: ^16.0.0 || >=18.0.0}
473 | peerDependencies:
474 | typescript: '*'
475 | peerDependenciesMeta:
476 | typescript:
477 | optional: true
478 | dependencies:
479 | '@typescript-eslint/types': 6.2.0
480 | '@typescript-eslint/visitor-keys': 6.2.0
481 | debug: 4.3.4
482 | globby: 11.1.0
483 | is-glob: 4.0.3
484 | semver: 7.5.4
485 | ts-api-utils: 1.0.1_typescript@5.1.6
486 | typescript: 5.1.6
487 | transitivePeerDependencies:
488 | - supports-color
489 | dev: true
490 |
491 | /@typescript-eslint/utils/6.2.0_7haavtekmro7ptbnqmctjaodju:
492 | resolution: {integrity: sha512-RCFrC1lXiX1qEZN8LmLrxYRhOkElEsPKTVSNout8DMzf8PeWoQG7Rxz2SadpJa3VSh5oYKGwt7j7X/VRg+Y3OQ==}
493 | engines: {node: ^16.0.0 || >=18.0.0}
494 | peerDependencies:
495 | eslint: ^7.0.0 || ^8.0.0
496 | dependencies:
497 | '@eslint-community/eslint-utils': 4.4.0_eslint@8.46.0
498 | '@types/json-schema': 7.0.12
499 | '@types/semver': 7.5.0
500 | '@typescript-eslint/scope-manager': 6.2.0
501 | '@typescript-eslint/types': 6.2.0
502 | '@typescript-eslint/typescript-estree': 6.2.0_typescript@5.1.6
503 | eslint: 8.46.0
504 | semver: 7.5.4
505 | transitivePeerDependencies:
506 | - supports-color
507 | - typescript
508 | dev: true
509 |
510 | /@typescript-eslint/visitor-keys/6.2.0:
511 | resolution: {integrity: sha512-QbaYUQVKKo9bgCzpjz45llCfwakyoxHetIy8CAvYCtd16Zu1KrpzNHofwF8kGkpPOxZB2o6kz+0nqH8ZkIzuoQ==}
512 | engines: {node: ^16.0.0 || >=18.0.0}
513 | dependencies:
514 | '@typescript-eslint/types': 6.2.0
515 | eslint-visitor-keys: 3.4.2
516 | dev: true
517 |
518 | /JSONStream/1.3.5:
519 | resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==}
520 | hasBin: true
521 | dependencies:
522 | jsonparse: 1.3.1
523 | through: 2.3.8
524 | dev: false
525 |
526 | /acorn-jsx/5.3.2_acorn@8.10.0:
527 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
528 | peerDependencies:
529 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
530 | dependencies:
531 | acorn: 8.10.0
532 | dev: true
533 |
534 | /acorn/8.10.0:
535 | resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==}
536 | engines: {node: '>=0.4.0'}
537 | hasBin: true
538 | dev: true
539 |
540 | /add-stream/1.0.0:
541 | resolution: {integrity: sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==}
542 | dev: false
543 |
544 | /ajv/6.12.6:
545 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
546 | dependencies:
547 | fast-deep-equal: 3.1.3
548 | fast-json-stable-stringify: 2.1.0
549 | json-schema-traverse: 0.4.1
550 | uri-js: 4.4.1
551 | dev: true
552 |
553 | /ansi-regex/5.0.1:
554 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
555 | engines: {node: '>=8'}
556 |
557 | /ansi-styles/3.2.1:
558 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
559 | engines: {node: '>=4'}
560 | dependencies:
561 | color-convert: 1.9.3
562 | dev: false
563 |
564 | /ansi-styles/4.3.0:
565 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
566 | engines: {node: '>=8'}
567 | dependencies:
568 | color-convert: 2.0.1
569 |
570 | /argparse/2.0.1:
571 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
572 | dev: true
573 |
574 | /array-ify/1.0.0:
575 | resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==}
576 | dev: false
577 |
578 | /array-union/2.1.0:
579 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
580 | engines: {node: '>=8'}
581 | dev: true
582 |
583 | /arrify/1.0.1:
584 | resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==}
585 | engines: {node: '>=0.10.0'}
586 | dev: false
587 |
588 | /balanced-match/1.0.2:
589 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
590 |
591 | /brace-expansion/1.1.11:
592 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
593 | dependencies:
594 | balanced-match: 1.0.2
595 | concat-map: 0.0.1
596 |
597 | /braces/3.0.2:
598 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
599 | engines: {node: '>=8'}
600 | dependencies:
601 | fill-range: 7.0.1
602 | dev: true
603 |
604 | /buffer-from/1.1.2:
605 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
606 | dev: false
607 |
608 | /callsites/3.1.0:
609 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
610 | engines: {node: '>=6'}
611 | dev: true
612 |
613 | /camelcase-keys/6.2.2:
614 | resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==}
615 | engines: {node: '>=8'}
616 | dependencies:
617 | camelcase: 5.3.1
618 | map-obj: 4.3.0
619 | quick-lru: 4.0.1
620 | dev: false
621 |
622 | /camelcase/5.3.1:
623 | resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
624 | engines: {node: '>=6'}
625 | dev: false
626 |
627 | /chalk/2.4.2:
628 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
629 | engines: {node: '>=4'}
630 | dependencies:
631 | ansi-styles: 3.2.1
632 | escape-string-regexp: 1.0.5
633 | supports-color: 5.5.0
634 | dev: false
635 |
636 | /chalk/4.1.2:
637 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
638 | engines: {node: '>=10'}
639 | dependencies:
640 | ansi-styles: 4.3.0
641 | supports-color: 7.2.0
642 | dev: true
643 |
644 | /cliui/7.0.4:
645 | resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==}
646 | dependencies:
647 | string-width: 4.2.3
648 | strip-ansi: 6.0.1
649 | wrap-ansi: 7.0.0
650 | dev: false
651 |
652 | /cliui/8.0.1:
653 | resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
654 | engines: {node: '>=12'}
655 | dependencies:
656 | string-width: 4.2.3
657 | strip-ansi: 6.0.1
658 | wrap-ansi: 7.0.0
659 | dev: false
660 |
661 | /color-convert/1.9.3:
662 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
663 | dependencies:
664 | color-name: 1.1.3
665 | dev: false
666 |
667 | /color-convert/2.0.1:
668 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
669 | engines: {node: '>=7.0.0'}
670 | dependencies:
671 | color-name: 1.1.4
672 |
673 | /color-name/1.1.3:
674 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
675 | dev: false
676 |
677 | /color-name/1.1.4:
678 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
679 |
680 | /commit-and-tag-version/11.2.2:
681 | resolution: {integrity: sha512-pqtTvRZFSqsGevhdcCvZVhzoSC56OeWZxhVzVDOWu97FfMJR4xUmpirRZcGqmTsDWCTxnm+UVl9/slN7OGO82A==}
682 | engines: {node: '>=14'}
683 | hasBin: true
684 | dependencies:
685 | chalk: 2.4.2
686 | conventional-changelog: 3.1.25
687 | conventional-changelog-config-spec: 2.1.0
688 | conventional-changelog-conventionalcommits: 6.1.0
689 | conventional-recommended-bump: 7.0.1
690 | detect-indent: 6.1.0
691 | detect-newline: 3.1.0
692 | dotgitignore: 2.1.0
693 | figures: 3.2.0
694 | find-up: 5.0.0
695 | git-semver-tags: 5.0.1
696 | semver: 7.5.4
697 | yargs: 17.7.2
698 | dev: false
699 |
700 | /compare-func/2.0.0:
701 | resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==}
702 | dependencies:
703 | array-ify: 1.0.0
704 | dot-prop: 5.3.0
705 | dev: false
706 |
707 | /concat-map/0.0.1:
708 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
709 |
710 | /concat-stream/2.0.0:
711 | resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==}
712 | engines: {'0': node >= 6.0}
713 | dependencies:
714 | buffer-from: 1.1.2
715 | inherits: 2.0.4
716 | readable-stream: 3.6.2
717 | typedarray: 0.0.6
718 | dev: false
719 |
720 | /conventional-changelog-angular/5.0.13:
721 | resolution: {integrity: sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==}
722 | engines: {node: '>=10'}
723 | dependencies:
724 | compare-func: 2.0.0
725 | q: 1.5.1
726 | dev: false
727 |
728 | /conventional-changelog-atom/2.0.8:
729 | resolution: {integrity: sha512-xo6v46icsFTK3bb7dY/8m2qvc8sZemRgdqLb/bjpBsH2UyOS8rKNTgcb5025Hri6IpANPApbXMg15QLb1LJpBw==}
730 | engines: {node: '>=10'}
731 | dependencies:
732 | q: 1.5.1
733 | dev: false
734 |
735 | /conventional-changelog-codemirror/2.0.8:
736 | resolution: {integrity: sha512-z5DAsn3uj1Vfp7po3gpt2Boc+Bdwmw2++ZHa5Ak9k0UKsYAO5mH1UBTN0qSCuJZREIhX6WU4E1p3IW2oRCNzQw==}
737 | engines: {node: '>=10'}
738 | dependencies:
739 | q: 1.5.1
740 | dev: false
741 |
742 | /conventional-changelog-config-spec/2.1.0:
743 | resolution: {integrity: sha512-IpVePh16EbbB02V+UA+HQnnPIohgXvJRxHcS5+Uwk4AT5LjzCZJm5sp/yqs5C6KZJ1jMsV4paEV13BN1pvDuxQ==}
744 | dev: false
745 |
746 | /conventional-changelog-conventionalcommits/4.6.3:
747 | resolution: {integrity: sha512-LTTQV4fwOM4oLPad317V/QNQ1FY4Hju5qeBIM1uTHbrnCE+Eg4CdRZ3gO2pUeR+tzWdp80M2j3qFFEDWVqOV4g==}
748 | engines: {node: '>=10'}
749 | dependencies:
750 | compare-func: 2.0.0
751 | lodash: 4.17.21
752 | q: 1.5.1
753 | dev: false
754 |
755 | /conventional-changelog-conventionalcommits/6.1.0:
756 | resolution: {integrity: sha512-3cS3GEtR78zTfMzk0AizXKKIdN4OvSh7ibNz6/DPbhWWQu7LqE/8+/GqSodV+sywUR2gpJAdP/1JFf4XtN7Zpw==}
757 | engines: {node: '>=14'}
758 | dependencies:
759 | compare-func: 2.0.0
760 | dev: false
761 |
762 | /conventional-changelog-core/4.2.4:
763 | resolution: {integrity: sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==}
764 | engines: {node: '>=10'}
765 | dependencies:
766 | add-stream: 1.0.0
767 | conventional-changelog-writer: 5.0.1
768 | conventional-commits-parser: 3.2.4
769 | dateformat: 3.0.3
770 | get-pkg-repo: 4.2.1
771 | git-raw-commits: 2.0.11
772 | git-remote-origin-url: 2.0.0
773 | git-semver-tags: 4.1.1
774 | lodash: 4.17.21
775 | normalize-package-data: 3.0.3
776 | q: 1.5.1
777 | read-pkg: 3.0.0
778 | read-pkg-up: 3.0.0
779 | through2: 4.0.2
780 | dev: false
781 |
782 | /conventional-changelog-ember/2.0.9:
783 | resolution: {integrity: sha512-ulzIReoZEvZCBDhcNYfDIsLTHzYHc7awh+eI44ZtV5cx6LVxLlVtEmcO+2/kGIHGtw+qVabJYjdI5cJOQgXh1A==}
784 | engines: {node: '>=10'}
785 | dependencies:
786 | q: 1.5.1
787 | dev: false
788 |
789 | /conventional-changelog-eslint/3.0.9:
790 | resolution: {integrity: sha512-6NpUCMgU8qmWmyAMSZO5NrRd7rTgErjrm4VASam2u5jrZS0n38V7Y9CzTtLT2qwz5xEChDR4BduoWIr8TfwvXA==}
791 | engines: {node: '>=10'}
792 | dependencies:
793 | q: 1.5.1
794 | dev: false
795 |
796 | /conventional-changelog-express/2.0.6:
797 | resolution: {integrity: sha512-SDez2f3iVJw6V563O3pRtNwXtQaSmEfTCaTBPCqn0oG0mfkq0rX4hHBq5P7De2MncoRixrALj3u3oQsNK+Q0pQ==}
798 | engines: {node: '>=10'}
799 | dependencies:
800 | q: 1.5.1
801 | dev: false
802 |
803 | /conventional-changelog-jquery/3.0.11:
804 | resolution: {integrity: sha512-x8AWz5/Td55F7+o/9LQ6cQIPwrCjfJQ5Zmfqi8thwUEKHstEn4kTIofXub7plf1xvFA2TqhZlq7fy5OmV6BOMw==}
805 | engines: {node: '>=10'}
806 | dependencies:
807 | q: 1.5.1
808 | dev: false
809 |
810 | /conventional-changelog-jshint/2.0.9:
811 | resolution: {integrity: sha512-wMLdaIzq6TNnMHMy31hql02OEQ8nCQfExw1SE0hYL5KvU+JCTuPaDO+7JiogGT2gJAxiUGATdtYYfh+nT+6riA==}
812 | engines: {node: '>=10'}
813 | dependencies:
814 | compare-func: 2.0.0
815 | q: 1.5.1
816 | dev: false
817 |
818 | /conventional-changelog-preset-loader/2.3.4:
819 | resolution: {integrity: sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==}
820 | engines: {node: '>=10'}
821 | dev: false
822 |
823 | /conventional-changelog-preset-loader/3.0.0:
824 | resolution: {integrity: sha512-qy9XbdSLmVnwnvzEisjxdDiLA4OmV3o8db+Zdg4WiFw14fP3B6XNz98X0swPPpkTd/pc1K7+adKgEDM1JCUMiA==}
825 | engines: {node: '>=14'}
826 | dev: false
827 |
828 | /conventional-changelog-writer/5.0.1:
829 | resolution: {integrity: sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==}
830 | engines: {node: '>=10'}
831 | hasBin: true
832 | dependencies:
833 | conventional-commits-filter: 2.0.7
834 | dateformat: 3.0.3
835 | handlebars: 4.7.7
836 | json-stringify-safe: 5.0.1
837 | lodash: 4.17.21
838 | meow: 8.1.2
839 | semver: 6.3.1
840 | split: 1.0.1
841 | through2: 4.0.2
842 | dev: false
843 |
844 | /conventional-changelog/3.1.25:
845 | resolution: {integrity: sha512-ryhi3fd1mKf3fSjbLXOfK2D06YwKNic1nC9mWqybBHdObPd8KJ2vjaXZfYj1U23t+V8T8n0d7gwnc9XbIdFbyQ==}
846 | engines: {node: '>=10'}
847 | dependencies:
848 | conventional-changelog-angular: 5.0.13
849 | conventional-changelog-atom: 2.0.8
850 | conventional-changelog-codemirror: 2.0.8
851 | conventional-changelog-conventionalcommits: 4.6.3
852 | conventional-changelog-core: 4.2.4
853 | conventional-changelog-ember: 2.0.9
854 | conventional-changelog-eslint: 3.0.9
855 | conventional-changelog-express: 2.0.6
856 | conventional-changelog-jquery: 3.0.11
857 | conventional-changelog-jshint: 2.0.9
858 | conventional-changelog-preset-loader: 2.3.4
859 | dev: false
860 |
861 | /conventional-commits-filter/2.0.7:
862 | resolution: {integrity: sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==}
863 | engines: {node: '>=10'}
864 | dependencies:
865 | lodash.ismatch: 4.4.0
866 | modify-values: 1.0.1
867 | dev: false
868 |
869 | /conventional-commits-filter/3.0.0:
870 | resolution: {integrity: sha512-1ymej8b5LouPx9Ox0Dw/qAO2dVdfpRFq28e5Y0jJEU8ZrLdy0vOSkkIInwmxErFGhg6SALro60ZrwYFVTUDo4Q==}
871 | engines: {node: '>=14'}
872 | dependencies:
873 | lodash.ismatch: 4.4.0
874 | modify-values: 1.0.1
875 | dev: false
876 |
877 | /conventional-commits-parser/3.2.4:
878 | resolution: {integrity: sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==}
879 | engines: {node: '>=10'}
880 | hasBin: true
881 | dependencies:
882 | JSONStream: 1.3.5
883 | is-text-path: 1.0.1
884 | lodash: 4.17.21
885 | meow: 8.1.2
886 | split2: 3.2.2
887 | through2: 4.0.2
888 | dev: false
889 |
890 | /conventional-commits-parser/4.0.0:
891 | resolution: {integrity: sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==}
892 | engines: {node: '>=14'}
893 | hasBin: true
894 | dependencies:
895 | JSONStream: 1.3.5
896 | is-text-path: 1.0.1
897 | meow: 8.1.2
898 | split2: 3.2.2
899 | dev: false
900 |
901 | /conventional-recommended-bump/7.0.1:
902 | resolution: {integrity: sha512-Ft79FF4SlOFvX4PkwFDRnaNiIVX7YbmqGU0RwccUaiGvgp3S0a8ipR2/Qxk31vclDNM+GSdJOVs2KrsUCjblVA==}
903 | engines: {node: '>=14'}
904 | hasBin: true
905 | dependencies:
906 | concat-stream: 2.0.0
907 | conventional-changelog-preset-loader: 3.0.0
908 | conventional-commits-filter: 3.0.0
909 | conventional-commits-parser: 4.0.0
910 | git-raw-commits: 3.0.0
911 | git-semver-tags: 5.0.1
912 | meow: 8.1.2
913 | dev: false
914 |
915 | /core-util-is/1.0.3:
916 | resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
917 | dev: false
918 |
919 | /cross-spawn/7.0.3:
920 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
921 | engines: {node: '>= 8'}
922 | dependencies:
923 | path-key: 3.1.1
924 | shebang-command: 2.0.0
925 | which: 2.0.2
926 | dev: true
927 |
928 | /dargs/7.0.0:
929 | resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==}
930 | engines: {node: '>=8'}
931 | dev: false
932 |
933 | /dateformat/3.0.3:
934 | resolution: {integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==}
935 | dev: false
936 |
937 | /debug/4.3.4:
938 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
939 | engines: {node: '>=6.0'}
940 | peerDependencies:
941 | supports-color: '*'
942 | peerDependenciesMeta:
943 | supports-color:
944 | optional: true
945 | dependencies:
946 | ms: 2.1.2
947 | dev: true
948 |
949 | /decamelize-keys/1.1.1:
950 | resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==}
951 | engines: {node: '>=0.10.0'}
952 | dependencies:
953 | decamelize: 1.2.0
954 | map-obj: 1.0.1
955 | dev: false
956 |
957 | /decamelize/1.2.0:
958 | resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==}
959 | engines: {node: '>=0.10.0'}
960 | dev: false
961 |
962 | /deep-is/0.1.4:
963 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
964 | dev: true
965 |
966 | /detect-indent/6.1.0:
967 | resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==}
968 | engines: {node: '>=8'}
969 | dev: false
970 |
971 | /detect-newline/3.1.0:
972 | resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==}
973 | engines: {node: '>=8'}
974 | dev: false
975 |
976 | /dir-glob/3.0.1:
977 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
978 | engines: {node: '>=8'}
979 | dependencies:
980 | path-type: 4.0.0
981 | dev: true
982 |
983 | /doctrine/3.0.0:
984 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
985 | engines: {node: '>=6.0.0'}
986 | dependencies:
987 | esutils: 2.0.3
988 | dev: true
989 |
990 | /dot-prop/5.3.0:
991 | resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==}
992 | engines: {node: '>=8'}
993 | dependencies:
994 | is-obj: 2.0.0
995 | dev: false
996 |
997 | /dotgitignore/2.1.0:
998 | resolution: {integrity: sha512-sCm11ak2oY6DglEPpCB8TixLjWAxd3kJTs6UIcSasNYxXdFPV+YKlye92c8H4kKFqV5qYMIh7d+cYecEg0dIkA==}
999 | engines: {node: '>=6'}
1000 | dependencies:
1001 | find-up: 3.0.0
1002 | minimatch: 3.1.2
1003 | dev: false
1004 |
1005 | /emoji-regex/8.0.0:
1006 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
1007 | dev: false
1008 |
1009 | /error-ex/1.3.2:
1010 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
1011 | dependencies:
1012 | is-arrayish: 0.2.1
1013 | dev: false
1014 |
1015 | /esbuild/0.18.17:
1016 | resolution: {integrity: sha512-1GJtYnUxsJreHYA0Y+iQz2UEykonY66HNWOb0yXYZi9/kNrORUEHVg87eQsCtqh59PEJ5YVZJO98JHznMJSWjg==}
1017 | engines: {node: '>=12'}
1018 | hasBin: true
1019 | requiresBuild: true
1020 | optionalDependencies:
1021 | '@esbuild/android-arm': 0.18.17
1022 | '@esbuild/android-arm64': 0.18.17
1023 | '@esbuild/android-x64': 0.18.17
1024 | '@esbuild/darwin-arm64': 0.18.17
1025 | '@esbuild/darwin-x64': 0.18.17
1026 | '@esbuild/freebsd-arm64': 0.18.17
1027 | '@esbuild/freebsd-x64': 0.18.17
1028 | '@esbuild/linux-arm': 0.18.17
1029 | '@esbuild/linux-arm64': 0.18.17
1030 | '@esbuild/linux-ia32': 0.18.17
1031 | '@esbuild/linux-loong64': 0.18.17
1032 | '@esbuild/linux-mips64el': 0.18.17
1033 | '@esbuild/linux-ppc64': 0.18.17
1034 | '@esbuild/linux-riscv64': 0.18.17
1035 | '@esbuild/linux-s390x': 0.18.17
1036 | '@esbuild/linux-x64': 0.18.17
1037 | '@esbuild/netbsd-x64': 0.18.17
1038 | '@esbuild/openbsd-x64': 0.18.17
1039 | '@esbuild/sunos-x64': 0.18.17
1040 | '@esbuild/win32-arm64': 0.18.17
1041 | '@esbuild/win32-ia32': 0.18.17
1042 | '@esbuild/win32-x64': 0.18.17
1043 | dev: true
1044 |
1045 | /escalade/3.1.1:
1046 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
1047 | engines: {node: '>=6'}
1048 | dev: false
1049 |
1050 | /escape-string-regexp/1.0.5:
1051 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
1052 | engines: {node: '>=0.8.0'}
1053 | dev: false
1054 |
1055 | /escape-string-regexp/4.0.0:
1056 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
1057 | engines: {node: '>=10'}
1058 | dev: true
1059 |
1060 | /eslint-scope/7.2.2:
1061 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
1062 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1063 | dependencies:
1064 | esrecurse: 4.3.0
1065 | estraverse: 5.3.0
1066 | dev: true
1067 |
1068 | /eslint-visitor-keys/3.4.2:
1069 | resolution: {integrity: sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==}
1070 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1071 | dev: true
1072 |
1073 | /eslint/8.46.0:
1074 | resolution: {integrity: sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==}
1075 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1076 | hasBin: true
1077 | dependencies:
1078 | '@eslint-community/eslint-utils': 4.4.0_eslint@8.46.0
1079 | '@eslint-community/regexpp': 4.6.2
1080 | '@eslint/eslintrc': 2.1.1
1081 | '@eslint/js': 8.46.0
1082 | '@humanwhocodes/config-array': 0.11.10
1083 | '@humanwhocodes/module-importer': 1.0.1
1084 | '@nodelib/fs.walk': 1.2.8
1085 | ajv: 6.12.6
1086 | chalk: 4.1.2
1087 | cross-spawn: 7.0.3
1088 | debug: 4.3.4
1089 | doctrine: 3.0.0
1090 | escape-string-regexp: 4.0.0
1091 | eslint-scope: 7.2.2
1092 | eslint-visitor-keys: 3.4.2
1093 | espree: 9.6.1
1094 | esquery: 1.5.0
1095 | esutils: 2.0.3
1096 | fast-deep-equal: 3.1.3
1097 | file-entry-cache: 6.0.1
1098 | find-up: 5.0.0
1099 | glob-parent: 6.0.2
1100 | globals: 13.20.0
1101 | graphemer: 1.4.0
1102 | ignore: 5.2.4
1103 | imurmurhash: 0.1.4
1104 | is-glob: 4.0.3
1105 | is-path-inside: 3.0.3
1106 | js-yaml: 4.1.0
1107 | json-stable-stringify-without-jsonify: 1.0.1
1108 | levn: 0.4.1
1109 | lodash.merge: 4.6.2
1110 | minimatch: 3.1.2
1111 | natural-compare: 1.4.0
1112 | optionator: 0.9.3
1113 | strip-ansi: 6.0.1
1114 | text-table: 0.2.0
1115 | transitivePeerDependencies:
1116 | - supports-color
1117 | dev: true
1118 |
1119 | /espree/9.6.1:
1120 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
1121 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1122 | dependencies:
1123 | acorn: 8.10.0
1124 | acorn-jsx: 5.3.2_acorn@8.10.0
1125 | eslint-visitor-keys: 3.4.2
1126 | dev: true
1127 |
1128 | /esquery/1.5.0:
1129 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==}
1130 | engines: {node: '>=0.10'}
1131 | dependencies:
1132 | estraverse: 5.3.0
1133 | dev: true
1134 |
1135 | /esrecurse/4.3.0:
1136 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
1137 | engines: {node: '>=4.0'}
1138 | dependencies:
1139 | estraverse: 5.3.0
1140 | dev: true
1141 |
1142 | /estraverse/5.3.0:
1143 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
1144 | engines: {node: '>=4.0'}
1145 | dev: true
1146 |
1147 | /esutils/2.0.3:
1148 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
1149 | engines: {node: '>=0.10.0'}
1150 | dev: true
1151 |
1152 | /fast-deep-equal/3.1.3:
1153 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
1154 | dev: true
1155 |
1156 | /fast-glob/3.3.1:
1157 | resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==}
1158 | engines: {node: '>=8.6.0'}
1159 | dependencies:
1160 | '@nodelib/fs.stat': 2.0.5
1161 | '@nodelib/fs.walk': 1.2.8
1162 | glob-parent: 5.1.2
1163 | merge2: 1.4.1
1164 | micromatch: 4.0.5
1165 | dev: true
1166 |
1167 | /fast-json-stable-stringify/2.1.0:
1168 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
1169 | dev: true
1170 |
1171 | /fast-levenshtein/2.0.6:
1172 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
1173 | dev: true
1174 |
1175 | /fastq/1.15.0:
1176 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==}
1177 | dependencies:
1178 | reusify: 1.0.4
1179 | dev: true
1180 |
1181 | /figures/3.2.0:
1182 | resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==}
1183 | engines: {node: '>=8'}
1184 | dependencies:
1185 | escape-string-regexp: 1.0.5
1186 | dev: false
1187 |
1188 | /file-entry-cache/6.0.1:
1189 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
1190 | engines: {node: ^10.12.0 || >=12.0.0}
1191 | dependencies:
1192 | flat-cache: 3.0.4
1193 | dev: true
1194 |
1195 | /fill-range/7.0.1:
1196 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
1197 | engines: {node: '>=8'}
1198 | dependencies:
1199 | to-regex-range: 5.0.1
1200 | dev: true
1201 |
1202 | /find-up/2.1.0:
1203 | resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==}
1204 | engines: {node: '>=4'}
1205 | dependencies:
1206 | locate-path: 2.0.0
1207 | dev: false
1208 |
1209 | /find-up/3.0.0:
1210 | resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==}
1211 | engines: {node: '>=6'}
1212 | dependencies:
1213 | locate-path: 3.0.0
1214 | dev: false
1215 |
1216 | /find-up/4.1.0:
1217 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
1218 | engines: {node: '>=8'}
1219 | dependencies:
1220 | locate-path: 5.0.0
1221 | path-exists: 4.0.0
1222 | dev: false
1223 |
1224 | /find-up/5.0.0:
1225 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
1226 | engines: {node: '>=10'}
1227 | dependencies:
1228 | locate-path: 6.0.0
1229 | path-exists: 4.0.0
1230 |
1231 | /flat-cache/3.0.4:
1232 | resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==}
1233 | engines: {node: ^10.12.0 || >=12.0.0}
1234 | dependencies:
1235 | flatted: 3.2.7
1236 | rimraf: 3.0.2
1237 | dev: true
1238 |
1239 | /flatted/3.2.7:
1240 | resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==}
1241 | dev: true
1242 |
1243 | /fs.realpath/1.0.0:
1244 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
1245 | dev: true
1246 |
1247 | /function-bind/1.1.1:
1248 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
1249 | dev: false
1250 |
1251 | /get-caller-file/2.0.5:
1252 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
1253 | engines: {node: 6.* || 8.* || >= 10.*}
1254 | dev: false
1255 |
1256 | /get-pkg-repo/4.2.1:
1257 | resolution: {integrity: sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==}
1258 | engines: {node: '>=6.9.0'}
1259 | hasBin: true
1260 | dependencies:
1261 | '@hutson/parse-repository-url': 3.0.2
1262 | hosted-git-info: 4.1.0
1263 | through2: 2.0.5
1264 | yargs: 16.2.0
1265 | dev: false
1266 |
1267 | /git-raw-commits/2.0.11:
1268 | resolution: {integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==}
1269 | engines: {node: '>=10'}
1270 | hasBin: true
1271 | dependencies:
1272 | dargs: 7.0.0
1273 | lodash: 4.17.21
1274 | meow: 8.1.2
1275 | split2: 3.2.2
1276 | through2: 4.0.2
1277 | dev: false
1278 |
1279 | /git-raw-commits/3.0.0:
1280 | resolution: {integrity: sha512-b5OHmZ3vAgGrDn/X0kS+9qCfNKWe4K/jFnhwzVWWg0/k5eLa3060tZShrRg8Dja5kPc+YjS0Gc6y7cRr44Lpjw==}
1281 | engines: {node: '>=14'}
1282 | hasBin: true
1283 | dependencies:
1284 | dargs: 7.0.0
1285 | meow: 8.1.2
1286 | split2: 3.2.2
1287 | dev: false
1288 |
1289 | /git-remote-origin-url/2.0.0:
1290 | resolution: {integrity: sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==}
1291 | engines: {node: '>=4'}
1292 | dependencies:
1293 | gitconfiglocal: 1.0.0
1294 | pify: 2.3.0
1295 | dev: false
1296 |
1297 | /git-semver-tags/4.1.1:
1298 | resolution: {integrity: sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==}
1299 | engines: {node: '>=10'}
1300 | hasBin: true
1301 | dependencies:
1302 | meow: 8.1.2
1303 | semver: 6.3.1
1304 | dev: false
1305 |
1306 | /git-semver-tags/5.0.1:
1307 | resolution: {integrity: sha512-hIvOeZwRbQ+7YEUmCkHqo8FOLQZCEn18yevLHADlFPZY02KJGsu5FZt9YW/lybfK2uhWFI7Qg/07LekJiTv7iA==}
1308 | engines: {node: '>=14'}
1309 | hasBin: true
1310 | dependencies:
1311 | meow: 8.1.2
1312 | semver: 7.5.4
1313 | dev: false
1314 |
1315 | /gitconfiglocal/1.0.0:
1316 | resolution: {integrity: sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==}
1317 | dependencies:
1318 | ini: 1.3.8
1319 | dev: false
1320 |
1321 | /glob-parent/5.1.2:
1322 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
1323 | engines: {node: '>= 6'}
1324 | dependencies:
1325 | is-glob: 4.0.3
1326 | dev: true
1327 |
1328 | /glob-parent/6.0.2:
1329 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
1330 | engines: {node: '>=10.13.0'}
1331 | dependencies:
1332 | is-glob: 4.0.3
1333 | dev: true
1334 |
1335 | /glob/7.2.3:
1336 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
1337 | dependencies:
1338 | fs.realpath: 1.0.0
1339 | inflight: 1.0.6
1340 | inherits: 2.0.4
1341 | minimatch: 3.1.2
1342 | once: 1.4.0
1343 | path-is-absolute: 1.0.1
1344 | dev: true
1345 |
1346 | /globals/13.20.0:
1347 | resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==}
1348 | engines: {node: '>=8'}
1349 | dependencies:
1350 | type-fest: 0.20.2
1351 | dev: true
1352 |
1353 | /globby/11.1.0:
1354 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
1355 | engines: {node: '>=10'}
1356 | dependencies:
1357 | array-union: 2.1.0
1358 | dir-glob: 3.0.1
1359 | fast-glob: 3.3.1
1360 | ignore: 5.2.4
1361 | merge2: 1.4.1
1362 | slash: 3.0.0
1363 | dev: true
1364 |
1365 | /graceful-fs/4.2.11:
1366 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
1367 | dev: false
1368 |
1369 | /graphemer/1.4.0:
1370 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
1371 | dev: true
1372 |
1373 | /handlebars/4.7.7:
1374 | resolution: {integrity: sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==}
1375 | engines: {node: '>=0.4.7'}
1376 | hasBin: true
1377 | dependencies:
1378 | minimist: 1.2.8
1379 | neo-async: 2.6.2
1380 | source-map: 0.6.1
1381 | wordwrap: 1.0.0
1382 | optionalDependencies:
1383 | uglify-js: 3.17.4
1384 | dev: false
1385 |
1386 | /hard-rejection/2.1.0:
1387 | resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==}
1388 | engines: {node: '>=6'}
1389 | dev: false
1390 |
1391 | /has-flag/3.0.0:
1392 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
1393 | engines: {node: '>=4'}
1394 | dev: false
1395 |
1396 | /has-flag/4.0.0:
1397 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
1398 | engines: {node: '>=8'}
1399 | dev: true
1400 |
1401 | /has/1.0.3:
1402 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
1403 | engines: {node: '>= 0.4.0'}
1404 | dependencies:
1405 | function-bind: 1.1.1
1406 | dev: false
1407 |
1408 | /hosted-git-info/2.8.9:
1409 | resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
1410 | dev: false
1411 |
1412 | /hosted-git-info/4.1.0:
1413 | resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==}
1414 | engines: {node: '>=10'}
1415 | dependencies:
1416 | lru-cache: 6.0.0
1417 | dev: false
1418 |
1419 | /ignore/5.2.4:
1420 | resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==}
1421 | engines: {node: '>= 4'}
1422 | dev: true
1423 |
1424 | /import-fresh/3.3.0:
1425 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
1426 | engines: {node: '>=6'}
1427 | dependencies:
1428 | parent-module: 1.0.1
1429 | resolve-from: 4.0.0
1430 | dev: true
1431 |
1432 | /imurmurhash/0.1.4:
1433 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
1434 | engines: {node: '>=0.8.19'}
1435 | dev: true
1436 |
1437 | /indent-string/4.0.0:
1438 | resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
1439 | engines: {node: '>=8'}
1440 | dev: false
1441 |
1442 | /inflight/1.0.6:
1443 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
1444 | dependencies:
1445 | once: 1.4.0
1446 | wrappy: 1.0.2
1447 | dev: true
1448 |
1449 | /inherits/2.0.4:
1450 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
1451 |
1452 | /ini/1.3.8:
1453 | resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
1454 | dev: false
1455 |
1456 | /is-arrayish/0.2.1:
1457 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
1458 | dev: false
1459 |
1460 | /is-core-module/2.12.1:
1461 | resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==}
1462 | dependencies:
1463 | has: 1.0.3
1464 | dev: false
1465 |
1466 | /is-extglob/2.1.1:
1467 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
1468 | engines: {node: '>=0.10.0'}
1469 | dev: true
1470 |
1471 | /is-fullwidth-code-point/3.0.0:
1472 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
1473 | engines: {node: '>=8'}
1474 | dev: false
1475 |
1476 | /is-glob/4.0.3:
1477 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
1478 | engines: {node: '>=0.10.0'}
1479 | dependencies:
1480 | is-extglob: 2.1.1
1481 | dev: true
1482 |
1483 | /is-number/7.0.0:
1484 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
1485 | engines: {node: '>=0.12.0'}
1486 | dev: true
1487 |
1488 | /is-obj/2.0.0:
1489 | resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==}
1490 | engines: {node: '>=8'}
1491 | dev: false
1492 |
1493 | /is-path-inside/3.0.3:
1494 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
1495 | engines: {node: '>=8'}
1496 | dev: true
1497 |
1498 | /is-plain-obj/1.1.0:
1499 | resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==}
1500 | engines: {node: '>=0.10.0'}
1501 | dev: false
1502 |
1503 | /is-text-path/1.0.1:
1504 | resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==}
1505 | engines: {node: '>=0.10.0'}
1506 | dependencies:
1507 | text-extensions: 1.9.0
1508 | dev: false
1509 |
1510 | /isarray/1.0.0:
1511 | resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
1512 | dev: false
1513 |
1514 | /isexe/2.0.0:
1515 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
1516 | dev: true
1517 |
1518 | /js-tokens/4.0.0:
1519 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
1520 | dev: false
1521 |
1522 | /js-yaml/4.1.0:
1523 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
1524 | hasBin: true
1525 | dependencies:
1526 | argparse: 2.0.1
1527 | dev: true
1528 |
1529 | /json-parse-better-errors/1.0.2:
1530 | resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==}
1531 | dev: false
1532 |
1533 | /json-parse-even-better-errors/2.3.1:
1534 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
1535 | dev: false
1536 |
1537 | /json-schema-traverse/0.4.1:
1538 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
1539 | dev: true
1540 |
1541 | /json-stable-stringify-without-jsonify/1.0.1:
1542 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
1543 | dev: true
1544 |
1545 | /json-stringify-safe/5.0.1:
1546 | resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==}
1547 | dev: false
1548 |
1549 | /jsonparse/1.3.1:
1550 | resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==}
1551 | engines: {'0': node >= 0.2.0}
1552 | dev: false
1553 |
1554 | /kind-of/6.0.3:
1555 | resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
1556 | engines: {node: '>=0.10.0'}
1557 | dev: false
1558 |
1559 | /levn/0.4.1:
1560 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
1561 | engines: {node: '>= 0.8.0'}
1562 | dependencies:
1563 | prelude-ls: 1.2.1
1564 | type-check: 0.4.0
1565 | dev: true
1566 |
1567 | /lines-and-columns/1.2.4:
1568 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
1569 | dev: false
1570 |
1571 | /load-json-file/4.0.0:
1572 | resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==}
1573 | engines: {node: '>=4'}
1574 | dependencies:
1575 | graceful-fs: 4.2.11
1576 | parse-json: 4.0.0
1577 | pify: 3.0.0
1578 | strip-bom: 3.0.0
1579 | dev: false
1580 |
1581 | /locate-path/2.0.0:
1582 | resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==}
1583 | engines: {node: '>=4'}
1584 | dependencies:
1585 | p-locate: 2.0.0
1586 | path-exists: 3.0.0
1587 | dev: false
1588 |
1589 | /locate-path/3.0.0:
1590 | resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==}
1591 | engines: {node: '>=6'}
1592 | dependencies:
1593 | p-locate: 3.0.0
1594 | path-exists: 3.0.0
1595 | dev: false
1596 |
1597 | /locate-path/5.0.0:
1598 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
1599 | engines: {node: '>=8'}
1600 | dependencies:
1601 | p-locate: 4.1.0
1602 | dev: false
1603 |
1604 | /locate-path/6.0.0:
1605 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
1606 | engines: {node: '>=10'}
1607 | dependencies:
1608 | p-locate: 5.0.0
1609 |
1610 | /lodash.ismatch/4.4.0:
1611 | resolution: {integrity: sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==}
1612 | dev: false
1613 |
1614 | /lodash.merge/4.6.2:
1615 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
1616 | dev: true
1617 |
1618 | /lodash/4.17.21:
1619 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
1620 | dev: false
1621 |
1622 | /lru-cache/6.0.0:
1623 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
1624 | engines: {node: '>=10'}
1625 | dependencies:
1626 | yallist: 4.0.0
1627 |
1628 | /map-obj/1.0.1:
1629 | resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==}
1630 | engines: {node: '>=0.10.0'}
1631 | dev: false
1632 |
1633 | /map-obj/4.3.0:
1634 | resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==}
1635 | engines: {node: '>=8'}
1636 | dev: false
1637 |
1638 | /meow/8.1.2:
1639 | resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==}
1640 | engines: {node: '>=10'}
1641 | dependencies:
1642 | '@types/minimist': 1.2.2
1643 | camelcase-keys: 6.2.2
1644 | decamelize-keys: 1.1.1
1645 | hard-rejection: 2.1.0
1646 | minimist-options: 4.1.0
1647 | normalize-package-data: 3.0.3
1648 | read-pkg-up: 7.0.1
1649 | redent: 3.0.0
1650 | trim-newlines: 3.0.1
1651 | type-fest: 0.18.1
1652 | yargs-parser: 20.2.9
1653 | dev: false
1654 |
1655 | /merge2/1.4.1:
1656 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
1657 | engines: {node: '>= 8'}
1658 | dev: true
1659 |
1660 | /micromatch/4.0.5:
1661 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
1662 | engines: {node: '>=8.6'}
1663 | dependencies:
1664 | braces: 3.0.2
1665 | picomatch: 2.3.1
1666 | dev: true
1667 |
1668 | /min-indent/1.0.1:
1669 | resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
1670 | engines: {node: '>=4'}
1671 | dev: false
1672 |
1673 | /minimatch/3.1.2:
1674 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
1675 | dependencies:
1676 | brace-expansion: 1.1.11
1677 |
1678 | /minimist-options/4.1.0:
1679 | resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==}
1680 | engines: {node: '>= 6'}
1681 | dependencies:
1682 | arrify: 1.0.1
1683 | is-plain-obj: 1.1.0
1684 | kind-of: 6.0.3
1685 | dev: false
1686 |
1687 | /minimist/1.2.8:
1688 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
1689 | dev: false
1690 |
1691 | /modify-values/1.0.1:
1692 | resolution: {integrity: sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==}
1693 | engines: {node: '>=0.10.0'}
1694 | dev: false
1695 |
1696 | /moment/2.29.4:
1697 | resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==}
1698 | dev: true
1699 |
1700 | /ms/2.1.2:
1701 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
1702 | dev: true
1703 |
1704 | /natural-compare-lite/1.4.0:
1705 | resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==}
1706 | dev: true
1707 |
1708 | /natural-compare/1.4.0:
1709 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
1710 | dev: true
1711 |
1712 | /neo-async/2.6.2:
1713 | resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
1714 | dev: false
1715 |
1716 | /normalize-package-data/2.5.0:
1717 | resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
1718 | dependencies:
1719 | hosted-git-info: 2.8.9
1720 | resolve: 1.22.2
1721 | semver: 5.7.2
1722 | validate-npm-package-license: 3.0.4
1723 | dev: false
1724 |
1725 | /normalize-package-data/3.0.3:
1726 | resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==}
1727 | engines: {node: '>=10'}
1728 | dependencies:
1729 | hosted-git-info: 4.1.0
1730 | is-core-module: 2.12.1
1731 | semver: 7.5.4
1732 | validate-npm-package-license: 3.0.4
1733 | dev: false
1734 |
1735 | /obsidian/1.3.5_qhkmntjgjdxkyszk3etqrkzvlm:
1736 | resolution: {integrity: sha512-2Zg9vlaEZw6fd2AohcdrC1kV+lZcb4a1Ju6GcIwdWaGOWj6l//7wbKD6vVhO2GlfoQRGARYu++eLo7FEc+f6Tw==}
1737 | peerDependencies:
1738 | '@codemirror/state': ^6.0.0
1739 | '@codemirror/view': ^6.0.0
1740 | dependencies:
1741 | '@codemirror/state': 6.2.1
1742 | '@codemirror/view': 6.15.3
1743 | '@types/codemirror': 5.60.8
1744 | moment: 2.29.4
1745 | dev: true
1746 |
1747 | /once/1.4.0:
1748 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
1749 | dependencies:
1750 | wrappy: 1.0.2
1751 | dev: true
1752 |
1753 | /optionator/0.9.3:
1754 | resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==}
1755 | engines: {node: '>= 0.8.0'}
1756 | dependencies:
1757 | '@aashutoshrathi/word-wrap': 1.2.6
1758 | deep-is: 0.1.4
1759 | fast-levenshtein: 2.0.6
1760 | levn: 0.4.1
1761 | prelude-ls: 1.2.1
1762 | type-check: 0.4.0
1763 | dev: true
1764 |
1765 | /p-limit/1.3.0:
1766 | resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==}
1767 | engines: {node: '>=4'}
1768 | dependencies:
1769 | p-try: 1.0.0
1770 | dev: false
1771 |
1772 | /p-limit/2.3.0:
1773 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
1774 | engines: {node: '>=6'}
1775 | dependencies:
1776 | p-try: 2.2.0
1777 | dev: false
1778 |
1779 | /p-limit/3.1.0:
1780 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
1781 | engines: {node: '>=10'}
1782 | dependencies:
1783 | yocto-queue: 0.1.0
1784 |
1785 | /p-locate/2.0.0:
1786 | resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==}
1787 | engines: {node: '>=4'}
1788 | dependencies:
1789 | p-limit: 1.3.0
1790 | dev: false
1791 |
1792 | /p-locate/3.0.0:
1793 | resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==}
1794 | engines: {node: '>=6'}
1795 | dependencies:
1796 | p-limit: 2.3.0
1797 | dev: false
1798 |
1799 | /p-locate/4.1.0:
1800 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
1801 | engines: {node: '>=8'}
1802 | dependencies:
1803 | p-limit: 2.3.0
1804 | dev: false
1805 |
1806 | /p-locate/5.0.0:
1807 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
1808 | engines: {node: '>=10'}
1809 | dependencies:
1810 | p-limit: 3.1.0
1811 |
1812 | /p-try/1.0.0:
1813 | resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==}
1814 | engines: {node: '>=4'}
1815 | dev: false
1816 |
1817 | /p-try/2.2.0:
1818 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
1819 | engines: {node: '>=6'}
1820 | dev: false
1821 |
1822 | /parent-module/1.0.1:
1823 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
1824 | engines: {node: '>=6'}
1825 | dependencies:
1826 | callsites: 3.1.0
1827 | dev: true
1828 |
1829 | /parse-json/4.0.0:
1830 | resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==}
1831 | engines: {node: '>=4'}
1832 | dependencies:
1833 | error-ex: 1.3.2
1834 | json-parse-better-errors: 1.0.2
1835 | dev: false
1836 |
1837 | /parse-json/5.2.0:
1838 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
1839 | engines: {node: '>=8'}
1840 | dependencies:
1841 | '@babel/code-frame': 7.22.5
1842 | error-ex: 1.3.2
1843 | json-parse-even-better-errors: 2.3.1
1844 | lines-and-columns: 1.2.4
1845 | dev: false
1846 |
1847 | /path-exists/3.0.0:
1848 | resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==}
1849 | engines: {node: '>=4'}
1850 | dev: false
1851 |
1852 | /path-exists/4.0.0:
1853 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
1854 | engines: {node: '>=8'}
1855 |
1856 | /path-is-absolute/1.0.1:
1857 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
1858 | engines: {node: '>=0.10.0'}
1859 | dev: true
1860 |
1861 | /path-key/3.1.1:
1862 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
1863 | engines: {node: '>=8'}
1864 | dev: true
1865 |
1866 | /path-parse/1.0.7:
1867 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
1868 | dev: false
1869 |
1870 | /path-type/3.0.0:
1871 | resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==}
1872 | engines: {node: '>=4'}
1873 | dependencies:
1874 | pify: 3.0.0
1875 | dev: false
1876 |
1877 | /path-type/4.0.0:
1878 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
1879 | engines: {node: '>=8'}
1880 | dev: true
1881 |
1882 | /picomatch/2.3.1:
1883 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
1884 | engines: {node: '>=8.6'}
1885 | dev: true
1886 |
1887 | /pify/2.3.0:
1888 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
1889 | engines: {node: '>=0.10.0'}
1890 | dev: false
1891 |
1892 | /pify/3.0.0:
1893 | resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==}
1894 | engines: {node: '>=4'}
1895 | dev: false
1896 |
1897 | /prelude-ls/1.2.1:
1898 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
1899 | engines: {node: '>= 0.8.0'}
1900 | dev: true
1901 |
1902 | /prettier/3.0.0:
1903 | resolution: {integrity: sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==}
1904 | engines: {node: '>=14'}
1905 | hasBin: true
1906 | dev: true
1907 |
1908 | /process-nextick-args/2.0.1:
1909 | resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
1910 | dev: false
1911 |
1912 | /punycode/2.3.0:
1913 | resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==}
1914 | engines: {node: '>=6'}
1915 | dev: true
1916 |
1917 | /q/1.5.1:
1918 | resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==}
1919 | engines: {node: '>=0.6.0', teleport: '>=0.2.0'}
1920 | dev: false
1921 |
1922 | /queue-microtask/1.2.3:
1923 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
1924 | dev: true
1925 |
1926 | /quick-lru/4.0.1:
1927 | resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==}
1928 | engines: {node: '>=8'}
1929 | dev: false
1930 |
1931 | /read-pkg-up/3.0.0:
1932 | resolution: {integrity: sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==}
1933 | engines: {node: '>=4'}
1934 | dependencies:
1935 | find-up: 2.1.0
1936 | read-pkg: 3.0.0
1937 | dev: false
1938 |
1939 | /read-pkg-up/7.0.1:
1940 | resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==}
1941 | engines: {node: '>=8'}
1942 | dependencies:
1943 | find-up: 4.1.0
1944 | read-pkg: 5.2.0
1945 | type-fest: 0.8.1
1946 | dev: false
1947 |
1948 | /read-pkg/3.0.0:
1949 | resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==}
1950 | engines: {node: '>=4'}
1951 | dependencies:
1952 | load-json-file: 4.0.0
1953 | normalize-package-data: 2.5.0
1954 | path-type: 3.0.0
1955 | dev: false
1956 |
1957 | /read-pkg/5.2.0:
1958 | resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==}
1959 | engines: {node: '>=8'}
1960 | dependencies:
1961 | '@types/normalize-package-data': 2.4.1
1962 | normalize-package-data: 2.5.0
1963 | parse-json: 5.2.0
1964 | type-fest: 0.6.0
1965 | dev: false
1966 |
1967 | /readable-stream/2.3.8:
1968 | resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
1969 | dependencies:
1970 | core-util-is: 1.0.3
1971 | inherits: 2.0.4
1972 | isarray: 1.0.0
1973 | process-nextick-args: 2.0.1
1974 | safe-buffer: 5.1.2
1975 | string_decoder: 1.1.1
1976 | util-deprecate: 1.0.2
1977 | dev: false
1978 |
1979 | /readable-stream/3.6.2:
1980 | resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
1981 | engines: {node: '>= 6'}
1982 | dependencies:
1983 | inherits: 2.0.4
1984 | string_decoder: 1.3.0
1985 | util-deprecate: 1.0.2
1986 | dev: false
1987 |
1988 | /redent/3.0.0:
1989 | resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==}
1990 | engines: {node: '>=8'}
1991 | dependencies:
1992 | indent-string: 4.0.0
1993 | strip-indent: 3.0.0
1994 | dev: false
1995 |
1996 | /require-directory/2.1.1:
1997 | resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
1998 | engines: {node: '>=0.10.0'}
1999 | dev: false
2000 |
2001 | /resolve-from/4.0.0:
2002 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
2003 | engines: {node: '>=4'}
2004 | dev: true
2005 |
2006 | /resolve/1.22.2:
2007 | resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==}
2008 | hasBin: true
2009 | dependencies:
2010 | is-core-module: 2.12.1
2011 | path-parse: 1.0.7
2012 | supports-preserve-symlinks-flag: 1.0.0
2013 | dev: false
2014 |
2015 | /reusify/1.0.4:
2016 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
2017 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
2018 | dev: true
2019 |
2020 | /rimraf/3.0.2:
2021 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
2022 | hasBin: true
2023 | dependencies:
2024 | glob: 7.2.3
2025 | dev: true
2026 |
2027 | /run-parallel/1.2.0:
2028 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
2029 | dependencies:
2030 | queue-microtask: 1.2.3
2031 | dev: true
2032 |
2033 | /safe-buffer/5.1.2:
2034 | resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
2035 | dev: false
2036 |
2037 | /safe-buffer/5.2.1:
2038 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
2039 | dev: false
2040 |
2041 | /semver/5.7.2:
2042 | resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
2043 | hasBin: true
2044 | dev: false
2045 |
2046 | /semver/6.3.1:
2047 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
2048 | hasBin: true
2049 | dev: false
2050 |
2051 | /semver/7.5.4:
2052 | resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==}
2053 | engines: {node: '>=10'}
2054 | hasBin: true
2055 | dependencies:
2056 | lru-cache: 6.0.0
2057 |
2058 | /shebang-command/2.0.0:
2059 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
2060 | engines: {node: '>=8'}
2061 | dependencies:
2062 | shebang-regex: 3.0.0
2063 | dev: true
2064 |
2065 | /shebang-regex/3.0.0:
2066 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
2067 | engines: {node: '>=8'}
2068 | dev: true
2069 |
2070 | /slash/3.0.0:
2071 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
2072 | engines: {node: '>=8'}
2073 | dev: true
2074 |
2075 | /source-map/0.6.1:
2076 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
2077 | engines: {node: '>=0.10.0'}
2078 | dev: false
2079 |
2080 | /spdx-correct/3.2.0:
2081 | resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
2082 | dependencies:
2083 | spdx-expression-parse: 3.0.1
2084 | spdx-license-ids: 3.0.13
2085 | dev: false
2086 |
2087 | /spdx-exceptions/2.3.0:
2088 | resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==}
2089 | dev: false
2090 |
2091 | /spdx-expression-parse/3.0.1:
2092 | resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
2093 | dependencies:
2094 | spdx-exceptions: 2.3.0
2095 | spdx-license-ids: 3.0.13
2096 | dev: false
2097 |
2098 | /spdx-license-ids/3.0.13:
2099 | resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==}
2100 | dev: false
2101 |
2102 | /split/1.0.1:
2103 | resolution: {integrity: sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==}
2104 | dependencies:
2105 | through: 2.3.8
2106 | dev: false
2107 |
2108 | /split2/3.2.2:
2109 | resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==}
2110 | dependencies:
2111 | readable-stream: 3.6.2
2112 | dev: false
2113 |
2114 | /string-width/4.2.3:
2115 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
2116 | engines: {node: '>=8'}
2117 | dependencies:
2118 | emoji-regex: 8.0.0
2119 | is-fullwidth-code-point: 3.0.0
2120 | strip-ansi: 6.0.1
2121 | dev: false
2122 |
2123 | /string_decoder/1.1.1:
2124 | resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
2125 | dependencies:
2126 | safe-buffer: 5.1.2
2127 | dev: false
2128 |
2129 | /string_decoder/1.3.0:
2130 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
2131 | dependencies:
2132 | safe-buffer: 5.2.1
2133 | dev: false
2134 |
2135 | /strip-ansi/6.0.1:
2136 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
2137 | engines: {node: '>=8'}
2138 | dependencies:
2139 | ansi-regex: 5.0.1
2140 |
2141 | /strip-bom/3.0.0:
2142 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
2143 | engines: {node: '>=4'}
2144 | dev: false
2145 |
2146 | /strip-indent/3.0.0:
2147 | resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==}
2148 | engines: {node: '>=8'}
2149 | dependencies:
2150 | min-indent: 1.0.1
2151 | dev: false
2152 |
2153 | /strip-json-comments/3.1.1:
2154 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
2155 | engines: {node: '>=8'}
2156 | dev: true
2157 |
2158 | /style-mod/4.0.3:
2159 | resolution: {integrity: sha512-78Jv8kYJdjbvRwwijtCevYADfsI0lGzYJe4mMFdceO8l75DFFDoqBhR1jVDicDRRaX4//g1u9wKeo+ztc2h1Rw==}
2160 | dev: true
2161 |
2162 | /supports-color/5.5.0:
2163 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
2164 | engines: {node: '>=4'}
2165 | dependencies:
2166 | has-flag: 3.0.0
2167 | dev: false
2168 |
2169 | /supports-color/7.2.0:
2170 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
2171 | engines: {node: '>=8'}
2172 | dependencies:
2173 | has-flag: 4.0.0
2174 | dev: true
2175 |
2176 | /supports-preserve-symlinks-flag/1.0.0:
2177 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
2178 | engines: {node: '>= 0.4'}
2179 | dev: false
2180 |
2181 | /text-extensions/1.9.0:
2182 | resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==}
2183 | engines: {node: '>=0.10'}
2184 | dev: false
2185 |
2186 | /text-table/0.2.0:
2187 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
2188 | dev: true
2189 |
2190 | /through/2.3.8:
2191 | resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
2192 | dev: false
2193 |
2194 | /through2/2.0.5:
2195 | resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==}
2196 | dependencies:
2197 | readable-stream: 2.3.8
2198 | xtend: 4.0.2
2199 | dev: false
2200 |
2201 | /through2/4.0.2:
2202 | resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==}
2203 | dependencies:
2204 | readable-stream: 3.6.2
2205 | dev: false
2206 |
2207 | /to-regex-range/5.0.1:
2208 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
2209 | engines: {node: '>=8.0'}
2210 | dependencies:
2211 | is-number: 7.0.0
2212 | dev: true
2213 |
2214 | /trim-newlines/3.0.1:
2215 | resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==}
2216 | engines: {node: '>=8'}
2217 | dev: false
2218 |
2219 | /ts-api-utils/1.0.1_typescript@5.1.6:
2220 | resolution: {integrity: sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==}
2221 | engines: {node: '>=16.13.0'}
2222 | peerDependencies:
2223 | typescript: '>=4.2.0'
2224 | dependencies:
2225 | typescript: 5.1.6
2226 | dev: true
2227 |
2228 | /tslib/2.6.1:
2229 | resolution: {integrity: sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==}
2230 | dev: true
2231 |
2232 | /type-check/0.4.0:
2233 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
2234 | engines: {node: '>= 0.8.0'}
2235 | dependencies:
2236 | prelude-ls: 1.2.1
2237 | dev: true
2238 |
2239 | /type-fest/0.18.1:
2240 | resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==}
2241 | engines: {node: '>=10'}
2242 | dev: false
2243 |
2244 | /type-fest/0.20.2:
2245 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
2246 | engines: {node: '>=10'}
2247 | dev: true
2248 |
2249 | /type-fest/0.6.0:
2250 | resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==}
2251 | engines: {node: '>=8'}
2252 | dev: false
2253 |
2254 | /type-fest/0.8.1:
2255 | resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==}
2256 | engines: {node: '>=8'}
2257 | dev: false
2258 |
2259 | /typedarray/0.0.6:
2260 | resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==}
2261 | dev: false
2262 |
2263 | /typescript/5.1.6:
2264 | resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==}
2265 | engines: {node: '>=14.17'}
2266 | hasBin: true
2267 | dev: true
2268 |
2269 | /uglify-js/3.17.4:
2270 | resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==}
2271 | engines: {node: '>=0.8.0'}
2272 | hasBin: true
2273 | requiresBuild: true
2274 | dev: false
2275 | optional: true
2276 |
2277 | /uri-js/4.4.1:
2278 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
2279 | dependencies:
2280 | punycode: 2.3.0
2281 | dev: true
2282 |
2283 | /util-deprecate/1.0.2:
2284 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
2285 | dev: false
2286 |
2287 | /validate-npm-package-license/3.0.4:
2288 | resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
2289 | dependencies:
2290 | spdx-correct: 3.2.0
2291 | spdx-expression-parse: 3.0.1
2292 | dev: false
2293 |
2294 | /w3c-keyname/2.2.8:
2295 | resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==}
2296 | dev: true
2297 |
2298 | /which/2.0.2:
2299 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
2300 | engines: {node: '>= 8'}
2301 | hasBin: true
2302 | dependencies:
2303 | isexe: 2.0.0
2304 | dev: true
2305 |
2306 | /wordwrap/1.0.0:
2307 | resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==}
2308 | dev: false
2309 |
2310 | /wrap-ansi/7.0.0:
2311 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
2312 | engines: {node: '>=10'}
2313 | dependencies:
2314 | ansi-styles: 4.3.0
2315 | string-width: 4.2.3
2316 | strip-ansi: 6.0.1
2317 | dev: false
2318 |
2319 | /wrappy/1.0.2:
2320 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
2321 | dev: true
2322 |
2323 | /xtend/4.0.2:
2324 | resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
2325 | engines: {node: '>=0.4'}
2326 | dev: false
2327 |
2328 | /y18n/5.0.8:
2329 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
2330 | engines: {node: '>=10'}
2331 | dev: false
2332 |
2333 | /yallist/4.0.0:
2334 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
2335 |
2336 | /yargs-parser/20.2.9:
2337 | resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==}
2338 | engines: {node: '>=10'}
2339 | dev: false
2340 |
2341 | /yargs-parser/21.1.1:
2342 | resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
2343 | engines: {node: '>=12'}
2344 | dev: false
2345 |
2346 | /yargs/16.2.0:
2347 | resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==}
2348 | engines: {node: '>=10'}
2349 | dependencies:
2350 | cliui: 7.0.4
2351 | escalade: 3.1.1
2352 | get-caller-file: 2.0.5
2353 | require-directory: 2.1.1
2354 | string-width: 4.2.3
2355 | y18n: 5.0.8
2356 | yargs-parser: 20.2.9
2357 | dev: false
2358 |
2359 | /yargs/17.7.2:
2360 | resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
2361 | engines: {node: '>=12'}
2362 | dependencies:
2363 | cliui: 8.0.1
2364 | escalade: 3.1.1
2365 | get-caller-file: 2.0.5
2366 | require-directory: 2.1.1
2367 | string-width: 4.2.3
2368 | y18n: 5.0.8
2369 | yargs-parser: 21.1.1
2370 | dev: false
2371 |
2372 | /yocto-queue/0.1.0:
2373 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
2374 | engines: {node: '>=10'}
2375 |
--------------------------------------------------------------------------------
/styles.css:
--------------------------------------------------------------------------------
1 | .metacopy-settings {
2 | border-top: transparent;
3 | padding: 0 0 3px 0;
4 | }
5 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "baseUrl": ".",
4 | "inlineSourceMap": true,
5 | "inlineSources": true,
6 | "module": "ESNext",
7 | "target": "ES6",
8 | "allowJs": true,
9 | "noImplicitAny": true,
10 | "moduleResolution": "node",
11 | "importHelpers": true,
12 | "lib": ["dom", "es5", "scripthost", "es2021"]
13 | },
14 | "include": ["**/*.ts"]
15 | }
16 |
--------------------------------------------------------------------------------
/versions.json:
--------------------------------------------------------------------------------
1 | {
2 | "1.0.1": "0.9.12",
3 | "1.0.0": "0.9.7"
4 | }
5 |
--------------------------------------------------------------------------------