├── .github └── dependabot.yml ├── .gitignore ├── LICENSE ├── README.md ├── gatsby-node.js ├── index.js ├── package-lock.json └── package.json /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | 3 | updates: 4 | # Enable version updates for npm 5 | - package-ecosystem: "npm" 6 | directory: "/" 7 | target-branch: "master" 8 | commit-message: 9 | prefix: "npm" 10 | include: "scope" 11 | schedule: 12 | interval: "daily" 13 | open-pull-requests-limit: 1 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Runtime data 9 | pids 10 | *.pid 11 | *.seed 12 | *.pid.lock 13 | 14 | # Directory for instrumented libs generated by jscoverage/JSCover 15 | lib-cov 16 | 17 | # Coverage directory used by tools like istanbul 18 | coverage 19 | 20 | # nyc test coverage 21 | .nyc_output 22 | 23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 24 | .grunt 25 | 26 | # Bower dependency directory (https://bower.io/) 27 | bower_components 28 | 29 | # node-waf configuration 30 | .lock-wscript 31 | 32 | # Compiled binary addons (https://nodejs.org/api/addons.html) 33 | build/Release 34 | 35 | # Dependency directories 36 | node_modules/ 37 | jspm_packages/ 38 | 39 | # TypeScript v1 declaration files 40 | typings/ 41 | 42 | # Optional npm cache directory 43 | .npm 44 | 45 | # Optional eslint cache 46 | .eslintcache 47 | 48 | # Optional REPL history 49 | .node_repl_history 50 | 51 | # Output of 'npm pack' 52 | *.tgz 53 | 54 | # Yarn Integrity file 55 | .yarn-integrity 56 | 57 | # dotenv environment variables file 58 | .env 59 | 60 | # next.js build output 61 | .next 62 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Stephen Tweeddale 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # gatsby-source-git 2 | 3 | Source plugin for pulling files into the Gatsby graph from abitrary Git repositories (hosted anywhere). This is useful if the markdown files you wish to render can't live within your gatsby codebase, or if need to aggregate content from disparate repositories. 4 | 5 | It clones the repo(s) you configure (a shallow clone, into your cache folder if 6 | you're interested), and then sucks the files into the graph as `File` nodes, as 7 | if you'd configured 8 | [`gatsby-source-filesystem`](https://www.gatsbyjs.org/packages/gatsby-source-filesystem/) 9 | on that directory. As such, all the tranformer plugins that operate on files 10 | should work exactly as they do with `gatsby-source-filesystem` eg with 11 | `gatsby-transformer-remark`, `gatsby-transformer-json` etc. 12 | 13 | The only difference is that the `File` nodes created by this plugin will 14 | also have a `gitRemote` field, which will provide you with various bits of 15 | Git related information. The fields on the `gitRemote` node are 16 | mostly provided by 17 | [IonicaBazau/git-url-parse](https://github.com/IonicaBizau/git-url-parse), with 18 | the addition of `ref` and `weblink` fields, which are 19 | the 2 main things you probably want if you're constructing "edit on github" 20 | style links. 21 | 22 | N.B. Although with respect to sourcing this works as a drop-in replacement for `gatsby-source-filesystem`, there are a number of helpers included in that module (`createFilePath`, `createRemoteFileNode`, `createFileNodeFromBuffer`) that are not duplicated here – but you can still import and use them from there as needed. 23 | 24 | ## Requirements 25 | 26 | Requires [git](http://git-scm.com/downloads) to be installed, and to be callable using the command `git`. 27 | 28 | Ideally we'd use [nodegit](https://github.com/nodegit/nodegit), but it doesn't support shallow clones (see [libgit2/libgit2#3058](https://github.com/libgit2/libgit2/issues/3058)) which would have a significant effect on build times if you wanted to read files from git repositories with large histories. 29 | 30 | ## Install 31 | 32 | `npm install --save gatsby-source-git` 33 | 34 | ## Configuration 35 | 36 | ### Plugin options 37 | 38 | - `name`: A machine name label for each plugin instance. 39 | - `remote`: The url to clone from. 40 | - `branch` (optional): The branch or tag to use. If none supplied, we try to use the 41 | 'default' branch. 42 | - `patterns` (optional): Passed to 43 | [fast-glob](https://github.com/mrmlnc/fast-glob) to determine which files get 44 | sucked into the graph. 45 | - `local` (optional): Specify the local path for the cloned repo. If omitted, 46 | it will default to a directory within the local Gatsby cache. Note that using 47 | a location outside the cache will prevent you changing the branch via 48 | gatsby-config.js. You will need to synchronise the branch of the local 49 | checkout yourself. However if clones are painful and slow for you, then using 50 | a custom location will prevent your local repo getting trashed when Gatsby 51 | clears the cache, which should help. 52 | 53 | ### Example gatsby-config.js 54 | 55 | ```javascript 56 | module.exports = { 57 | plugins: [ 58 | // You can have multiple instances of this plugin to read source files from 59 | // different repositories or locations within a repository. 60 | { 61 | resolve: `gatsby-source-git`, 62 | options: { 63 | name: `repo-one`, 64 | remote: `https://bitbucket.org/stevetweeddale/markdown-test.git`, 65 | branch: `develop`, 66 | // Only import the docs folder from a codebase. 67 | patterns: `docs/**`, 68 | // The "--depth" command line argument of Git. Set to 0 if you need accurate file modified time. 69 | fetchDepth: 1 70 | } 71 | }, 72 | { 73 | resolve: `gatsby-source-git`, 74 | options: { 75 | name: `repo-two`, 76 | remote: `https://bitbucket.org/stevetweeddale/markdown-test.git`, 77 | // Specify the local checkout location, to avoid it being trashed on 78 | // cache clears. 79 | local: '/explicit/path/to/repo-two', 80 | // Multiple patterns and negation supported. See https://github.com/mrmlnc/fast-glob 81 | patterns: [`*`, `!*.md`] 82 | } 83 | } 84 | ] 85 | }; 86 | ``` 87 | 88 | This will result in `File` nodes being put in your data graph, it's then up to you to do whatever it is you want to do with that data. 89 | 90 | ### Private repositories 91 | 92 | Most git hosting providers support authentication via URL, either in the form of username and password or more commonly access tokens. So to use a private github repository as an example, you would firstly [generate a personal access token](https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line). Now you don't want that in your repo, so instead you'd [set an OS environment variable](https://www.gatsbyjs.org/docs/environment-variables/#server-side-nodejs) and then read that environment variable into your plugin config something like: 93 | 94 | ```javascript 95 | { 96 | resolve: `gatsby-source-git`, 97 | options: { 98 | name: `my-repo`, 99 | remote: `https://myuser:${process.env.GITHUB_TOKEN}@github.com/myuser/my-repo`, 100 | }, 101 | } 102 | ``` 103 | 104 | ## How to query 105 | 106 | You can query file nodes exactly as you would node query for nodes created with 107 | [`gatsby-source-filesystem`](https://www.gatsbyjs.org/packages/gatsby-source-filesystem/), 108 | eg: 109 | 110 | ```graphql 111 | { 112 | allFile { 113 | edges { 114 | node { 115 | extension 116 | dir 117 | modifiedTime 118 | message 119 | authorName 120 | } 121 | } 122 | } 123 | } 124 | ``` 125 | 126 | Similarly, you can filter by the `name` you specified in the config by using 127 | `sourceInstanceName`: 128 | 129 | ```graphql 130 | { 131 | allFile(filter: { sourceInstanceName: { eq: "repo-one" } }) { 132 | edges { 133 | node { 134 | extension 135 | dir 136 | modifiedTime 137 | message 138 | authorName 139 | } 140 | } 141 | } 142 | } 143 | ``` 144 | 145 | And access some information about the git repo: 146 | 147 | ```graphql 148 | { 149 | allFile { 150 | edges { 151 | node { 152 | gitRemote { 153 | webLink 154 | ref 155 | } 156 | } 157 | } 158 | } 159 | } 160 | ``` 161 | 162 | ## Creating pages 163 | 164 | If you want to programatically create pages on your site from the files in your git repo, you should be able to follow the standard examples, such as [part 7 of the Gatsby tutorial](https://www.gatsbyjs.org/tutorial/part-seven/) or [the standard docs page](https://www.gatsbyjs.org/docs/creating-and-modifying-pages/#creating-pages-in-gatsby-nodejs). 165 | -------------------------------------------------------------------------------- /gatsby-node.js: -------------------------------------------------------------------------------- 1 | const Git = require("simple-git"); 2 | const fastGlob = require("fast-glob"); 3 | const fs = require(`fs-extra`) 4 | const { createFileNode } = require("gatsby-source-filesystem/create-file-node"); 5 | const GitUrlParse = require("git-url-parse"); 6 | 7 | function getCachedRepoPath(name, programDir) { 8 | return require("path").join( 9 | programDir, 10 | `.cache`, 11 | `gatsby-source-git`, 12 | name 13 | ); 14 | } 15 | 16 | async function isAlreadyCloned(remote, path) { 17 | const existingRemote = await Git(path).listRemote(["--get-url"]); 18 | return existingRemote.trim() == remote.trim(); 19 | } 20 | 21 | async function getTargetBranch(repo, branch) { 22 | if (typeof branch == `string`) { 23 | return `origin/${branch}`; 24 | } else { 25 | return repo.raw(["symbolic-ref", "--short", "refs/remotes/origin/HEAD"]).then(result => result.trim()); 26 | } 27 | } 28 | 29 | async function getRepo(path, remote, branch, fetchDepth) { 30 | // If the directory doesn't exist or is empty, clone. This will be the case if 31 | // our config has changed because Gatsby trashes the cache dir automatically 32 | // in that case. Note, however, that if just the branch name changes, then the directory 33 | // will still exist and we fall into the `isAlreadyCloned` block below. 34 | let opts = []; 35 | 36 | const depth = fetchDepth ?? 1 37 | if(depth > 0) { 38 | opts.push(`--depth`, depth); 39 | } 40 | 41 | if (!fs.existsSync(path) || fs.readdirSync(path).length === 0) { 42 | if (typeof branch == `string`) { 43 | opts.push(`--branch`, branch); 44 | } 45 | await Git().clone(remote, path, opts); 46 | return Git(path); 47 | } else if (await isAlreadyCloned(remote, path)) { 48 | const repo = await Git(path); 49 | const target = await getTargetBranch(repo, branch); 50 | if (typeof branch == `string`) { 51 | // First add the remote and fetch. This is a no-op if the branch hasn't changed but 52 | // it's necessary when the configured branch has changed. This is because, due to 53 | // the clone options used in the block above, only one remote branch is added, i.e., 54 | // the git config fetch refspec looks like this after cloning with a provided branch: 55 | // 56 | /// [remote "origin"] 57 | // url = git@github.com:/.git 58 | // fetch = +refs/heads/:refs/remotes/origin/ 59 | await repo 60 | .remote(['set-branches', 'origin', branch]) 61 | .then(() => repo.fetch('origin', branch)) 62 | .then(() => repo.checkout(branch)) 63 | } 64 | 65 | await repo 66 | .fetch(opts) 67 | .then(() => repo.reset([`--hard`, target])); 68 | return repo; 69 | } else { 70 | throw new Error(`Can't clone to target destination: ${localPath}`); 71 | } 72 | } 73 | 74 | exports.sourceNodes = async ( 75 | { 76 | actions: { createNode }, 77 | store, 78 | createNodeId, 79 | createContentDigest, 80 | reporter 81 | }, 82 | { name, remote, branch, patterns = `**`, local, fetchDepth} 83 | ) => { 84 | const programDir = store.getState().program.directory; 85 | const localPath = local || getCachedRepoPath(name, programDir); 86 | const parsedRemote = GitUrlParse(remote); 87 | 88 | let repo; 89 | try { 90 | repo = await getRepo(localPath, remote, branch, fetchDepth); 91 | } catch (e) { 92 | return reporter.error(e); 93 | } 94 | 95 | parsedRemote.git_suffix = false; 96 | parsedRemote.webLink = parsedRemote.toString("https"); 97 | delete parsedRemote.git_suffix; 98 | let ref = await repo.raw(["rev-parse", "--abbrev-ref", "HEAD"]); 99 | parsedRemote.ref = ref.trim(); 100 | 101 | const repoFiles = await fastGlob(patterns, { 102 | cwd: localPath, 103 | absolute: true 104 | }); 105 | 106 | const remoteId = createNodeId(`git-remote-${name}`); 107 | 108 | // Create a single graph node for this git remote. 109 | // Filenodes sourced from it will get a field pointing back to it. 110 | await createNode( 111 | Object.assign(parsedRemote, { 112 | id: remoteId, 113 | sourceInstanceName: name, 114 | parent: null, 115 | children: [], 116 | internal: { 117 | type: `GitRemote`, 118 | content: JSON.stringify(parsedRemote), 119 | contentDigest: createContentDigest(parsedRemote) 120 | } 121 | }) 122 | ); 123 | 124 | const createAndProcessNode = path => { 125 | return createFileNode(path, createNodeId, { 126 | name: name, 127 | path: localPath 128 | }).then(fileNode => { 129 | const relativePath = fileNode.relativePath; 130 | return repo.log({ 131 | file: relativePath 132 | }) 133 | .then(log => { 134 | const latest = log.latest; 135 | const {date, message, author_name} = latest; 136 | fileNode.modifiedTime = new Date(Date.parse(date)).toISOString(); 137 | fileNode.message = message; 138 | fileNode.authorName = author_name; 139 | return fileNode; 140 | }); 141 | }) 142 | .then(fileNode => { 143 | // Add a link to the git remote node 144 | fileNode.gitRemote___NODE = remoteId; 145 | // Then create the node, as if it were created by the gatsby-source 146 | // filesystem plugin. 147 | return createNode(fileNode, { 148 | name: `gatsby-source-filesystem` 149 | }); 150 | }); 151 | }; 152 | 153 | return Promise.all(repoFiles.map(createAndProcessNode)); 154 | }; 155 | 156 | exports.onPreInit = async ({ reporter, emitter, store }, pluginOptions) => { 157 | emitter.on('DELETE_CACHE', async () => { 158 | // The gatsby cache delete algorithm doesn't delete the hidden files, like 159 | // our .git directories, causing problems for our plugin; 160 | // So we delete our cache ourself. 161 | const programDir = store.getState().program.directory; 162 | const localPath = getCachedRepoPath(pluginOptions.name, programDir); 163 | try { 164 | // Attempt to empty dir if remove fails, 165 | // like when directory is mount point. 166 | await fs.remove(localPath).catch(() => fs.emptyDir(localPath)) 167 | reporter.verbose(`Removed gatsby-source-git cache directory: ${localPath}`); 168 | } catch (e) { 169 | reporter.error(`Failed to remove gatsby-source-git files.`, e); 170 | } 171 | }); 172 | } 173 | 174 | exports.onCreateNode; 175 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | // noop 2 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "gatsby-source-git", 3 | "version": "1.1.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@babel/runtime": { 8 | "version": "7.22.6", 9 | "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.6.tgz", 10 | "integrity": "sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==", 11 | "requires": { 12 | "regenerator-runtime": "^0.13.11" 13 | } 14 | }, 15 | "@kwsites/file-exists": { 16 | "version": "1.1.1", 17 | "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", 18 | "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", 19 | "requires": { 20 | "debug": "^4.1.1" 21 | } 22 | }, 23 | "@kwsites/promise-deferred": { 24 | "version": "1.1.1", 25 | "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", 26 | "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==" 27 | }, 28 | "@lmdb/lmdb-darwin-arm64": { 29 | "version": "2.5.3", 30 | "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-2.5.3.tgz", 31 | "integrity": "sha512-RXwGZ/0eCqtCY8FLTM/koR60w+MXyvBUpToXiIyjOcBnC81tAlTUHrRUavCEWPI9zc9VgvpK3+cbumPyR8BSuA==", 32 | "optional": true 33 | }, 34 | "@lmdb/lmdb-darwin-x64": { 35 | "version": "2.5.3", 36 | "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-2.5.3.tgz", 37 | "integrity": "sha512-337dNzh5yCdNCTk8kPfoU7jR3otibSlPDGW0vKZT97rKnQMb9tNdto3RtWoGPsQ8hKmlRZpojOJtmwjncq1MoA==", 38 | "optional": true 39 | }, 40 | "@lmdb/lmdb-linux-arm": { 41 | "version": "2.5.3", 42 | "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-2.5.3.tgz", 43 | "integrity": "sha512-mU2HFJDGwECkoD9dHQEfeTG5mp8hNS2BCfwoiOpVPMeapjYpQz9Uw3FkUjRZ4dGHWKbin40oWHuL0bk2bCx+Sg==", 44 | "optional": true 45 | }, 46 | "@lmdb/lmdb-linux-arm64": { 47 | "version": "2.5.3", 48 | "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-2.5.3.tgz", 49 | "integrity": "sha512-VJw60Mdgb4n+L0fO1PqfB0C7TyEQolJAC8qpqvG3JoQwvyOv6LH7Ib/WE3wxEW9nuHmVz9jkK7lk5HfWWgoO1Q==", 50 | "optional": true 51 | }, 52 | "@lmdb/lmdb-linux-x64": { 53 | "version": "2.5.3", 54 | "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-2.5.3.tgz", 55 | "integrity": "sha512-qaReO5aV8griBDsBr8uBF/faO3ieGjY1RY4p8JvTL6Mu1ylLrTVvOONqKFlNaCwrmUjWw5jnf7VafxDAeQHTow==", 56 | "optional": true 57 | }, 58 | "@lmdb/lmdb-win32-x64": { 59 | "version": "2.5.3", 60 | "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.5.3.tgz", 61 | "integrity": "sha512-cK+Elf3RjEzrm3SerAhrFWL5oQAsZSJ/LmjL1joIpTfEP1etJJ9CTRvdaV6XLYAxaEkfdhk/9hOvHLbR9yIhCA==", 62 | "optional": true 63 | }, 64 | "@msgpackr-extract/msgpackr-extract-darwin-arm64": { 65 | "version": "3.0.2", 66 | "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.2.tgz", 67 | "integrity": "sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ==", 68 | "optional": true 69 | }, 70 | "@msgpackr-extract/msgpackr-extract-darwin-x64": { 71 | "version": "3.0.2", 72 | "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.2.tgz", 73 | "integrity": "sha512-lwriRAHm1Yg4iDf23Oxm9n/t5Zpw1lVnxYU3HnJPTi2lJRkKTrps1KVgvL6m7WvmhYVt/FIsssWay+k45QHeuw==", 74 | "optional": true 75 | }, 76 | "@msgpackr-extract/msgpackr-extract-linux-arm": { 77 | "version": "3.0.2", 78 | "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.2.tgz", 79 | "integrity": "sha512-MOI9Dlfrpi2Cuc7i5dXdxPbFIgbDBGgKR5F2yWEa6FVEtSWncfVNKW5AKjImAQ6CZlBK9tympdsZJ2xThBiWWA==", 80 | "optional": true 81 | }, 82 | "@msgpackr-extract/msgpackr-extract-linux-arm64": { 83 | "version": "3.0.2", 84 | "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.2.tgz", 85 | "integrity": "sha512-FU20Bo66/f7He9Fp9sP2zaJ1Q8L9uLPZQDub/WlUip78JlPeMbVL8546HbZfcW9LNciEXc8d+tThSJjSC+tmsg==", 86 | "optional": true 87 | }, 88 | "@msgpackr-extract/msgpackr-extract-linux-x64": { 89 | "version": "3.0.2", 90 | "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.2.tgz", 91 | "integrity": "sha512-gsWNDCklNy7Ajk0vBBf9jEx04RUxuDQfBse918Ww+Qb9HCPoGzS+XJTLe96iN3BVK7grnLiYghP/M4L8VsaHeA==", 92 | "optional": true 93 | }, 94 | "@msgpackr-extract/msgpackr-extract-win32-x64": { 95 | "version": "3.0.2", 96 | "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.2.tgz", 97 | "integrity": "sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ==", 98 | "optional": true 99 | }, 100 | "@nodelib/fs.scandir": { 101 | "version": "2.1.5", 102 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 103 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 104 | "requires": { 105 | "@nodelib/fs.stat": "2.0.5", 106 | "run-parallel": "^1.1.9" 107 | } 108 | }, 109 | "@nodelib/fs.stat": { 110 | "version": "2.0.5", 111 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 112 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" 113 | }, 114 | "@nodelib/fs.walk": { 115 | "version": "1.2.8", 116 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 117 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 118 | "requires": { 119 | "@nodelib/fs.scandir": "2.1.5", 120 | "fastq": "^1.6.0" 121 | } 122 | }, 123 | "@sindresorhus/is": { 124 | "version": "4.6.0", 125 | "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", 126 | "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==" 127 | }, 128 | "@szmarczak/http-timer": { 129 | "version": "4.0.6", 130 | "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", 131 | "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", 132 | "requires": { 133 | "defer-to-connect": "^2.0.0" 134 | } 135 | }, 136 | "@tokenizer/token": { 137 | "version": "0.3.0", 138 | "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", 139 | "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" 140 | }, 141 | "@types/cacheable-request": { 142 | "version": "6.0.3", 143 | "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", 144 | "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", 145 | "requires": { 146 | "@types/http-cache-semantics": "*", 147 | "@types/keyv": "^3.1.4", 148 | "@types/node": "*", 149 | "@types/responselike": "^1.0.0" 150 | } 151 | }, 152 | "@types/http-cache-semantics": { 153 | "version": "4.0.1", 154 | "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", 155 | "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" 156 | }, 157 | "@types/keyv": { 158 | "version": "3.1.4", 159 | "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", 160 | "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", 161 | "requires": { 162 | "@types/node": "*" 163 | } 164 | }, 165 | "@types/node": { 166 | "version": "20.4.5", 167 | "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.5.tgz", 168 | "integrity": "sha512-rt40Nk13II9JwQBdeYqmbn2Q6IVTA5uPhvSO+JVqdXw/6/4glI6oR9ezty/A9Hg5u7JH4OmYmuQ+XvjKm0Datg==" 169 | }, 170 | "@types/responselike": { 171 | "version": "1.0.0", 172 | "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", 173 | "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", 174 | "requires": { 175 | "@types/node": "*" 176 | } 177 | }, 178 | "anymatch": { 179 | "version": "3.1.3", 180 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 181 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 182 | "requires": { 183 | "normalize-path": "^3.0.0", 184 | "picomatch": "^2.0.4" 185 | } 186 | }, 187 | "balanced-match": { 188 | "version": "1.0.0", 189 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 190 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" 191 | }, 192 | "binary-extensions": { 193 | "version": "2.2.0", 194 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 195 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" 196 | }, 197 | "brace-expansion": { 198 | "version": "1.1.11", 199 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 200 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 201 | "requires": { 202 | "balanced-match": "^1.0.0", 203 | "concat-map": "0.0.1" 204 | } 205 | }, 206 | "braces": { 207 | "version": "3.0.2", 208 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 209 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 210 | "requires": { 211 | "fill-range": "^7.0.1" 212 | } 213 | }, 214 | "cacheable-lookup": { 215 | "version": "5.0.4", 216 | "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", 217 | "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==" 218 | }, 219 | "cacheable-request": { 220 | "version": "7.0.4", 221 | "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", 222 | "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", 223 | "requires": { 224 | "clone-response": "^1.0.2", 225 | "get-stream": "^5.1.0", 226 | "http-cache-semantics": "^4.0.0", 227 | "keyv": "^4.0.0", 228 | "lowercase-keys": "^2.0.0", 229 | "normalize-url": "^6.0.1", 230 | "responselike": "^2.0.0" 231 | }, 232 | "dependencies": { 233 | "normalize-url": { 234 | "version": "6.1.0", 235 | "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", 236 | "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" 237 | } 238 | } 239 | }, 240 | "chokidar": { 241 | "version": "3.5.3", 242 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 243 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 244 | "requires": { 245 | "anymatch": "~3.1.2", 246 | "braces": "~3.0.2", 247 | "fsevents": "~2.3.2", 248 | "glob-parent": "~5.1.2", 249 | "is-binary-path": "~2.1.0", 250 | "is-glob": "~4.0.1", 251 | "normalize-path": "~3.0.0", 252 | "readdirp": "~3.6.0" 253 | } 254 | }, 255 | "ci-info": { 256 | "version": "2.0.0", 257 | "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", 258 | "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" 259 | }, 260 | "clone-response": { 261 | "version": "1.0.3", 262 | "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", 263 | "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", 264 | "requires": { 265 | "mimic-response": "^1.0.0" 266 | } 267 | }, 268 | "concat-map": { 269 | "version": "0.0.1", 270 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 271 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 272 | }, 273 | "configstore": { 274 | "version": "5.0.1", 275 | "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", 276 | "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", 277 | "requires": { 278 | "dot-prop": "^5.2.0", 279 | "graceful-fs": "^4.1.2", 280 | "make-dir": "^3.0.0", 281 | "unique-string": "^2.0.0", 282 | "write-file-atomic": "^3.0.0", 283 | "xdg-basedir": "^4.0.0" 284 | } 285 | }, 286 | "crypto-random-string": { 287 | "version": "2.0.0", 288 | "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", 289 | "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" 290 | }, 291 | "debug": { 292 | "version": "4.3.4", 293 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 294 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 295 | "requires": { 296 | "ms": "2.1.2" 297 | } 298 | }, 299 | "decompress-response": { 300 | "version": "6.0.0", 301 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", 302 | "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", 303 | "requires": { 304 | "mimic-response": "^3.1.0" 305 | }, 306 | "dependencies": { 307 | "mimic-response": { 308 | "version": "3.1.0", 309 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", 310 | "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" 311 | } 312 | } 313 | }, 314 | "defer-to-connect": { 315 | "version": "2.0.1", 316 | "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", 317 | "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==" 318 | }, 319 | "dot-prop": { 320 | "version": "5.3.0", 321 | "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", 322 | "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", 323 | "requires": { 324 | "is-obj": "^2.0.0" 325 | } 326 | }, 327 | "end-of-stream": { 328 | "version": "1.4.4", 329 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 330 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 331 | "requires": { 332 | "once": "^1.4.0" 333 | } 334 | }, 335 | "fast-glob": { 336 | "version": "3.3.1", 337 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", 338 | "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", 339 | "requires": { 340 | "@nodelib/fs.stat": "^2.0.2", 341 | "@nodelib/fs.walk": "^1.2.3", 342 | "glob-parent": "^5.1.2", 343 | "merge2": "^1.3.0", 344 | "micromatch": "^4.0.4" 345 | } 346 | }, 347 | "fastq": { 348 | "version": "1.15.0", 349 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", 350 | "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", 351 | "requires": { 352 | "reusify": "^1.0.4" 353 | } 354 | }, 355 | "file-type": { 356 | "version": "16.5.4", 357 | "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz", 358 | "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==", 359 | "requires": { 360 | "readable-web-to-node-stream": "^3.0.0", 361 | "strtok3": "^6.2.4", 362 | "token-types": "^4.1.1" 363 | } 364 | }, 365 | "fill-range": { 366 | "version": "7.0.1", 367 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 368 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 369 | "requires": { 370 | "to-regex-range": "^5.0.1" 371 | } 372 | }, 373 | "fs-extra": { 374 | "version": "11.1.1", 375 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", 376 | "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", 377 | "requires": { 378 | "graceful-fs": "^4.2.0", 379 | "jsonfile": "^6.0.1", 380 | "universalify": "^2.0.0" 381 | }, 382 | "dependencies": { 383 | "graceful-fs": { 384 | "version": "4.2.11", 385 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 386 | "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" 387 | } 388 | } 389 | }, 390 | "fs.realpath": { 391 | "version": "1.0.0", 392 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 393 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 394 | }, 395 | "fsevents": { 396 | "version": "2.3.2", 397 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 398 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 399 | "optional": true 400 | }, 401 | "gatsby-core-utils": { 402 | "version": "4.11.0", 403 | "resolved": "https://registry.npmjs.org/gatsby-core-utils/-/gatsby-core-utils-4.11.0.tgz", 404 | "integrity": "sha512-W7pfrKgBchdk19g802IuPkCA2iJ69lRR1GzkfYjB8d1TuIQqf0l1z0lv7e+2kQqO+uQ5Yt3sGMMN2qMYMWfLXg==", 405 | "requires": { 406 | "@babel/runtime": "^7.20.13", 407 | "ci-info": "2.0.0", 408 | "configstore": "^5.0.1", 409 | "fastq": "^1.15.0", 410 | "file-type": "^16.5.4", 411 | "fs-extra": "^11.1.1", 412 | "got": "^11.8.6", 413 | "hash-wasm": "^4.9.0", 414 | "import-from": "^4.0.0", 415 | "lmdb": "2.5.3", 416 | "lock": "^1.1.0", 417 | "node-object-hash": "^2.3.10", 418 | "proper-lockfile": "^4.1.2", 419 | "resolve-from": "^5.0.0", 420 | "tmp": "^0.2.1", 421 | "xdg-basedir": "^4.0.0" 422 | }, 423 | "dependencies": { 424 | "fs-extra": { 425 | "version": "11.1.1", 426 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", 427 | "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", 428 | "requires": { 429 | "graceful-fs": "^4.2.0", 430 | "jsonfile": "^6.0.1", 431 | "universalify": "^2.0.0" 432 | } 433 | }, 434 | "graceful-fs": { 435 | "version": "4.2.11", 436 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 437 | "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" 438 | }, 439 | "jsonfile": { 440 | "version": "6.1.0", 441 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", 442 | "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", 443 | "requires": { 444 | "graceful-fs": "^4.1.6", 445 | "universalify": "^2.0.0" 446 | } 447 | }, 448 | "universalify": { 449 | "version": "2.0.0", 450 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", 451 | "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" 452 | } 453 | } 454 | }, 455 | "gatsby-source-filesystem": { 456 | "version": "5.11.0", 457 | "resolved": "https://registry.npmjs.org/gatsby-source-filesystem/-/gatsby-source-filesystem-5.11.0.tgz", 458 | "integrity": "sha512-42CXNzKgGvkZtqmFIIMbEJW5ZpQ5b4TQT7Rk21XsEMkoZT9QchqMG1S2VPK/LPe7LicvGv6zBziGrtn6ttch7w==", 459 | "requires": { 460 | "@babel/runtime": "^7.20.13", 461 | "chokidar": "^3.5.3", 462 | "file-type": "^16.5.4", 463 | "fs-extra": "^11.1.1", 464 | "gatsby-core-utils": "^4.11.0", 465 | "mime": "^3.0.0", 466 | "pretty-bytes": "^5.6.0", 467 | "valid-url": "^1.0.9", 468 | "xstate": "^4.37.2" 469 | }, 470 | "dependencies": { 471 | "fs-extra": { 472 | "version": "11.1.1", 473 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", 474 | "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", 475 | "requires": { 476 | "graceful-fs": "^4.2.0", 477 | "jsonfile": "^6.0.1", 478 | "universalify": "^2.0.0" 479 | } 480 | }, 481 | "graceful-fs": { 482 | "version": "4.2.11", 483 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 484 | "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" 485 | }, 486 | "jsonfile": { 487 | "version": "6.1.0", 488 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", 489 | "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", 490 | "requires": { 491 | "graceful-fs": "^4.1.6", 492 | "universalify": "^2.0.0" 493 | } 494 | }, 495 | "universalify": { 496 | "version": "2.0.0", 497 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", 498 | "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" 499 | } 500 | } 501 | }, 502 | "get-stream": { 503 | "version": "5.2.0", 504 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", 505 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", 506 | "requires": { 507 | "pump": "^3.0.0" 508 | } 509 | }, 510 | "git-up": { 511 | "version": "7.0.0", 512 | "resolved": "https://registry.npmjs.org/git-up/-/git-up-7.0.0.tgz", 513 | "integrity": "sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==", 514 | "requires": { 515 | "is-ssh": "^1.4.0", 516 | "parse-url": "^8.1.0" 517 | } 518 | }, 519 | "git-url-parse": { 520 | "version": "13.1.0", 521 | "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-13.1.0.tgz", 522 | "integrity": "sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA==", 523 | "requires": { 524 | "git-up": "^7.0.0" 525 | } 526 | }, 527 | "glob": { 528 | "version": "7.1.3", 529 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", 530 | "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", 531 | "requires": { 532 | "fs.realpath": "^1.0.0", 533 | "inflight": "^1.0.4", 534 | "inherits": "2", 535 | "minimatch": "^3.0.4", 536 | "once": "^1.3.0", 537 | "path-is-absolute": "^1.0.0" 538 | } 539 | }, 540 | "glob-parent": { 541 | "version": "5.1.2", 542 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 543 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 544 | "requires": { 545 | "is-glob": "^4.0.1" 546 | } 547 | }, 548 | "got": { 549 | "version": "11.8.6", 550 | "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", 551 | "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", 552 | "requires": { 553 | "@sindresorhus/is": "^4.0.0", 554 | "@szmarczak/http-timer": "^4.0.5", 555 | "@types/cacheable-request": "^6.0.1", 556 | "@types/responselike": "^1.0.0", 557 | "cacheable-lookup": "^5.0.3", 558 | "cacheable-request": "^7.0.2", 559 | "decompress-response": "^6.0.0", 560 | "http2-wrapper": "^1.0.0-beta.5.2", 561 | "lowercase-keys": "^2.0.0", 562 | "p-cancelable": "^2.0.0", 563 | "responselike": "^2.0.0" 564 | } 565 | }, 566 | "graceful-fs": { 567 | "version": "4.1.11", 568 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", 569 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" 570 | }, 571 | "hash-wasm": { 572 | "version": "4.9.0", 573 | "resolved": "https://registry.npmjs.org/hash-wasm/-/hash-wasm-4.9.0.tgz", 574 | "integrity": "sha512-7SW7ejyfnRxuOc7ptQHSf4LDoZaWOivfzqw+5rpcQku0nHfmicPKE51ra9BiRLAmT8+gGLestr1XroUkqdjL6w==" 575 | }, 576 | "http-cache-semantics": { 577 | "version": "4.1.1", 578 | "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", 579 | "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" 580 | }, 581 | "http2-wrapper": { 582 | "version": "1.0.3", 583 | "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", 584 | "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", 585 | "requires": { 586 | "quick-lru": "^5.1.1", 587 | "resolve-alpn": "^1.0.0" 588 | } 589 | }, 590 | "ieee754": { 591 | "version": "1.2.1", 592 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 593 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" 594 | }, 595 | "import-from": { 596 | "version": "4.0.0", 597 | "resolved": "https://registry.npmjs.org/import-from/-/import-from-4.0.0.tgz", 598 | "integrity": "sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==" 599 | }, 600 | "imurmurhash": { 601 | "version": "0.1.4", 602 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 603 | "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" 604 | }, 605 | "inflight": { 606 | "version": "1.0.6", 607 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 608 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 609 | "requires": { 610 | "once": "^1.3.0", 611 | "wrappy": "1" 612 | } 613 | }, 614 | "inherits": { 615 | "version": "2.0.3", 616 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 617 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 618 | }, 619 | "is-binary-path": { 620 | "version": "2.1.0", 621 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 622 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 623 | "requires": { 624 | "binary-extensions": "^2.0.0" 625 | } 626 | }, 627 | "is-extglob": { 628 | "version": "2.1.1", 629 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 630 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" 631 | }, 632 | "is-glob": { 633 | "version": "4.0.3", 634 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 635 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 636 | "requires": { 637 | "is-extglob": "^2.1.1" 638 | } 639 | }, 640 | "is-number": { 641 | "version": "7.0.0", 642 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 643 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" 644 | }, 645 | "is-obj": { 646 | "version": "2.0.0", 647 | "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", 648 | "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" 649 | }, 650 | "is-ssh": { 651 | "version": "1.4.0", 652 | "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz", 653 | "integrity": "sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==", 654 | "requires": { 655 | "protocols": "^2.0.1" 656 | } 657 | }, 658 | "is-typedarray": { 659 | "version": "1.0.0", 660 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 661 | "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" 662 | }, 663 | "json-buffer": { 664 | "version": "3.0.1", 665 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", 666 | "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" 667 | }, 668 | "jsonfile": { 669 | "version": "6.1.0", 670 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", 671 | "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", 672 | "requires": { 673 | "graceful-fs": "^4.1.6", 674 | "universalify": "^2.0.0" 675 | } 676 | }, 677 | "keyv": { 678 | "version": "4.5.3", 679 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", 680 | "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", 681 | "requires": { 682 | "json-buffer": "3.0.1" 683 | } 684 | }, 685 | "lmdb": { 686 | "version": "2.5.3", 687 | "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-2.5.3.tgz", 688 | "integrity": "sha512-iBA0cb13CobBSoGJLfZgnrykLlfJipDAnvtf+YwIqqzBEsTeQYsXrHaSBkaHd5wCWeabwrNvhjZoFMUrlo+eLw==", 689 | "requires": { 690 | "@lmdb/lmdb-darwin-arm64": "2.5.3", 691 | "@lmdb/lmdb-darwin-x64": "2.5.3", 692 | "@lmdb/lmdb-linux-arm": "2.5.3", 693 | "@lmdb/lmdb-linux-arm64": "2.5.3", 694 | "@lmdb/lmdb-linux-x64": "2.5.3", 695 | "@lmdb/lmdb-win32-x64": "2.5.3", 696 | "msgpackr": "^1.5.4", 697 | "node-addon-api": "^4.3.0", 698 | "node-gyp-build-optional-packages": "5.0.3", 699 | "ordered-binary": "^1.2.4", 700 | "weak-lru-cache": "^1.2.2" 701 | } 702 | }, 703 | "lock": { 704 | "version": "1.1.0", 705 | "resolved": "https://registry.npmjs.org/lock/-/lock-1.1.0.tgz", 706 | "integrity": "sha512-NZQIJJL5Rb9lMJ0Yl1JoVr9GSdo4HTPsUEWsSFzB8dE8DSoiLCVavWZPi7Rnlv/o73u6I24S/XYc/NmG4l8EKA==" 707 | }, 708 | "lowercase-keys": { 709 | "version": "2.0.0", 710 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", 711 | "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" 712 | }, 713 | "make-dir": { 714 | "version": "3.1.0", 715 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", 716 | "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", 717 | "requires": { 718 | "semver": "^6.0.0" 719 | } 720 | }, 721 | "merge2": { 722 | "version": "1.4.1", 723 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 724 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" 725 | }, 726 | "micromatch": { 727 | "version": "4.0.5", 728 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", 729 | "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", 730 | "requires": { 731 | "braces": "^3.0.2", 732 | "picomatch": "^2.3.1" 733 | }, 734 | "dependencies": { 735 | "picomatch": { 736 | "version": "2.3.1", 737 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 738 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" 739 | } 740 | } 741 | }, 742 | "mime": { 743 | "version": "3.0.0", 744 | "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", 745 | "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==" 746 | }, 747 | "mimic-response": { 748 | "version": "1.0.1", 749 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", 750 | "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" 751 | }, 752 | "minimatch": { 753 | "version": "3.1.2", 754 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 755 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 756 | "requires": { 757 | "brace-expansion": "^1.1.7" 758 | } 759 | }, 760 | "ms": { 761 | "version": "2.1.2", 762 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 763 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 764 | }, 765 | "msgpackr": { 766 | "version": "1.9.5", 767 | "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.9.5.tgz", 768 | "integrity": "sha512-/IJ3cFSN6Ci3eG2wLhbFEL6GT63yEaoN/R5My2QkV6zro+OJaVRLPlwvxY7EtHYSmDlQpk8stvOQTL2qJFkDRg==", 769 | "requires": { 770 | "msgpackr-extract": "^3.0.2" 771 | } 772 | }, 773 | "msgpackr-extract": { 774 | "version": "3.0.2", 775 | "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.2.tgz", 776 | "integrity": "sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A==", 777 | "optional": true, 778 | "requires": { 779 | "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.2", 780 | "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.2", 781 | "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.2", 782 | "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.2", 783 | "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.2", 784 | "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.2", 785 | "node-gyp-build-optional-packages": "5.0.7" 786 | }, 787 | "dependencies": { 788 | "node-gyp-build-optional-packages": { 789 | "version": "5.0.7", 790 | "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.7.tgz", 791 | "integrity": "sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w==", 792 | "optional": true 793 | } 794 | } 795 | }, 796 | "node-addon-api": { 797 | "version": "4.3.0", 798 | "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", 799 | "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" 800 | }, 801 | "node-gyp-build-optional-packages": { 802 | "version": "5.0.3", 803 | "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.3.tgz", 804 | "integrity": "sha512-k75jcVzk5wnnc/FMxsf4udAoTEUv2jY3ycfdSd3yWu6Cnd1oee6/CfZJApyscA4FJOmdoixWwiwOyf16RzD5JA==" 805 | }, 806 | "node-object-hash": { 807 | "version": "2.3.10", 808 | "resolved": "https://registry.npmjs.org/node-object-hash/-/node-object-hash-2.3.10.tgz", 809 | "integrity": "sha512-jY5dPJzw6NHd/KPSfPKJ+IHoFS81/tJ43r34ZeNMXGzCOM8jwQDCD12HYayKIB6MuznrnqIYy2e891NA2g0ibA==" 810 | }, 811 | "normalize-path": { 812 | "version": "3.0.0", 813 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 814 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" 815 | }, 816 | "once": { 817 | "version": "1.4.0", 818 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 819 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 820 | "requires": { 821 | "wrappy": "1" 822 | } 823 | }, 824 | "ordered-binary": { 825 | "version": "1.4.1", 826 | "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.4.1.tgz", 827 | "integrity": "sha512-9LtiGlPy982CsgxZvJGNNp2/NnrgEr6EAyN3iIEP3/8vd3YLgAZQHbQ75ZrkfBRGrNg37Dk3U6tuVb+B4Xfslg==" 828 | }, 829 | "p-cancelable": { 830 | "version": "2.1.1", 831 | "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", 832 | "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==" 833 | }, 834 | "parse-path": { 835 | "version": "7.0.0", 836 | "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-7.0.0.tgz", 837 | "integrity": "sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==", 838 | "requires": { 839 | "protocols": "^2.0.0" 840 | } 841 | }, 842 | "parse-url": { 843 | "version": "8.1.0", 844 | "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-8.1.0.tgz", 845 | "integrity": "sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==", 846 | "requires": { 847 | "parse-path": "^7.0.0" 848 | } 849 | }, 850 | "path-is-absolute": { 851 | "version": "1.0.1", 852 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 853 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" 854 | }, 855 | "peek-readable": { 856 | "version": "4.1.0", 857 | "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz", 858 | "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==" 859 | }, 860 | "picomatch": { 861 | "version": "2.3.1", 862 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 863 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" 864 | }, 865 | "pretty-bytes": { 866 | "version": "5.6.0", 867 | "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", 868 | "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==" 869 | }, 870 | "proper-lockfile": { 871 | "version": "4.1.2", 872 | "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", 873 | "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", 874 | "requires": { 875 | "graceful-fs": "^4.2.4", 876 | "retry": "^0.12.0", 877 | "signal-exit": "^3.0.2" 878 | }, 879 | "dependencies": { 880 | "graceful-fs": { 881 | "version": "4.2.11", 882 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 883 | "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" 884 | } 885 | } 886 | }, 887 | "protocols": { 888 | "version": "2.0.1", 889 | "resolved": "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz", 890 | "integrity": "sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==" 891 | }, 892 | "pump": { 893 | "version": "3.0.0", 894 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 895 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 896 | "requires": { 897 | "end-of-stream": "^1.1.0", 898 | "once": "^1.3.1" 899 | } 900 | }, 901 | "queue-microtask": { 902 | "version": "1.2.3", 903 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 904 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" 905 | }, 906 | "quick-lru": { 907 | "version": "5.1.1", 908 | "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", 909 | "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" 910 | }, 911 | "readable-stream": { 912 | "version": "3.6.2", 913 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", 914 | "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", 915 | "requires": { 916 | "inherits": "^2.0.3", 917 | "string_decoder": "^1.1.1", 918 | "util-deprecate": "^1.0.1" 919 | } 920 | }, 921 | "readable-web-to-node-stream": { 922 | "version": "3.0.2", 923 | "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", 924 | "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", 925 | "requires": { 926 | "readable-stream": "^3.6.0" 927 | } 928 | }, 929 | "readdirp": { 930 | "version": "3.6.0", 931 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 932 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 933 | "requires": { 934 | "picomatch": "^2.2.1" 935 | } 936 | }, 937 | "regenerator-runtime": { 938 | "version": "0.13.11", 939 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", 940 | "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" 941 | }, 942 | "resolve-alpn": { 943 | "version": "1.2.1", 944 | "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", 945 | "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" 946 | }, 947 | "resolve-from": { 948 | "version": "5.0.0", 949 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", 950 | "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" 951 | }, 952 | "responselike": { 953 | "version": "2.0.1", 954 | "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", 955 | "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", 956 | "requires": { 957 | "lowercase-keys": "^2.0.0" 958 | } 959 | }, 960 | "retry": { 961 | "version": "0.12.0", 962 | "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", 963 | "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==" 964 | }, 965 | "reusify": { 966 | "version": "1.0.4", 967 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 968 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" 969 | }, 970 | "run-parallel": { 971 | "version": "1.2.0", 972 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 973 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 974 | "requires": { 975 | "queue-microtask": "^1.2.2" 976 | } 977 | }, 978 | "safe-buffer": { 979 | "version": "5.2.1", 980 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 981 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 982 | }, 983 | "semver": { 984 | "version": "6.3.1", 985 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", 986 | "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" 987 | }, 988 | "signal-exit": { 989 | "version": "3.0.7", 990 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 991 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" 992 | }, 993 | "simple-git": { 994 | "version": "3.19.1", 995 | "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.19.1.tgz", 996 | "integrity": "sha512-Ck+rcjVaE1HotraRAS8u/+xgTvToTuoMkT9/l9lvuP5jftwnYUp6DwuJzsKErHgfyRk8IB8pqGHWEbM3tLgV1w==", 997 | "requires": { 998 | "@kwsites/file-exists": "^1.1.1", 999 | "@kwsites/promise-deferred": "^1.1.1", 1000 | "debug": "^4.3.4" 1001 | } 1002 | }, 1003 | "string_decoder": { 1004 | "version": "1.3.0", 1005 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 1006 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 1007 | "requires": { 1008 | "safe-buffer": "~5.2.0" 1009 | } 1010 | }, 1011 | "strtok3": { 1012 | "version": "6.3.0", 1013 | "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz", 1014 | "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==", 1015 | "requires": { 1016 | "@tokenizer/token": "^0.3.0", 1017 | "peek-readable": "^4.1.0" 1018 | } 1019 | }, 1020 | "tmp": { 1021 | "version": "0.2.1", 1022 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", 1023 | "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", 1024 | "requires": { 1025 | "rimraf": "^3.0.0" 1026 | }, 1027 | "dependencies": { 1028 | "rimraf": { 1029 | "version": "3.0.2", 1030 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 1031 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 1032 | "requires": { 1033 | "glob": "^7.1.3" 1034 | } 1035 | } 1036 | } 1037 | }, 1038 | "to-regex-range": { 1039 | "version": "5.0.1", 1040 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1041 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1042 | "requires": { 1043 | "is-number": "^7.0.0" 1044 | } 1045 | }, 1046 | "token-types": { 1047 | "version": "4.2.1", 1048 | "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz", 1049 | "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==", 1050 | "requires": { 1051 | "@tokenizer/token": "^0.3.0", 1052 | "ieee754": "^1.2.1" 1053 | } 1054 | }, 1055 | "typedarray-to-buffer": { 1056 | "version": "3.1.5", 1057 | "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", 1058 | "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", 1059 | "requires": { 1060 | "is-typedarray": "^1.0.0" 1061 | } 1062 | }, 1063 | "unique-string": { 1064 | "version": "2.0.0", 1065 | "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", 1066 | "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", 1067 | "requires": { 1068 | "crypto-random-string": "^2.0.0" 1069 | } 1070 | }, 1071 | "universalify": { 1072 | "version": "2.0.0", 1073 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", 1074 | "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" 1075 | }, 1076 | "util-deprecate": { 1077 | "version": "1.0.2", 1078 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1079 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" 1080 | }, 1081 | "valid-url": { 1082 | "version": "1.0.9", 1083 | "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz", 1084 | "integrity": "sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA==" 1085 | }, 1086 | "weak-lru-cache": { 1087 | "version": "1.2.2", 1088 | "resolved": "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz", 1089 | "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==" 1090 | }, 1091 | "wrappy": { 1092 | "version": "1.0.2", 1093 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1094 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 1095 | }, 1096 | "write-file-atomic": { 1097 | "version": "3.0.3", 1098 | "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", 1099 | "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", 1100 | "requires": { 1101 | "imurmurhash": "^0.1.4", 1102 | "is-typedarray": "^1.0.0", 1103 | "signal-exit": "^3.0.2", 1104 | "typedarray-to-buffer": "^3.1.5" 1105 | } 1106 | }, 1107 | "xdg-basedir": { 1108 | "version": "4.0.0", 1109 | "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", 1110 | "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==" 1111 | }, 1112 | "xstate": { 1113 | "version": "4.38.2", 1114 | "resolved": "https://registry.npmjs.org/xstate/-/xstate-4.38.2.tgz", 1115 | "integrity": "sha512-Fba/DwEPDLneHT3tbJ9F3zafbQXszOlyCJyQqqdzmtlY/cwE2th462KK48yaANf98jHlP6lJvxfNtN0LFKXPQg==" 1116 | } 1117 | } 1118 | } 1119 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "gatsby-source-git", 3 | "version": "1.1.0", 4 | "description": "Gatsby plugin for pulling files into Gatsby from Git repositories", 5 | "scripts": { 6 | "test": "echo \"Error: no test specified\" && exit 1" 7 | }, 8 | "repository": { 9 | "type": "git", 10 | "url": "https://github.com/stevetweeddale/gatsby-source-git.git" 11 | }, 12 | "keywords": [ 13 | "gatsby", 14 | "gatsby-plugin", 15 | "gatsby-source-plugin", 16 | "git" 17 | ], 18 | "author": "Steve Tweeddale", 19 | "license": "MIT", 20 | "peerDependencies": { 21 | "gatsby": ">2.0.0-alpha" 22 | }, 23 | "bugs": { 24 | "url": "https://github.com/stevetweeddale/gatsby-source-git/issues" 25 | }, 26 | "homepage": "https://github.com/stevetweeddale/gatsby-source-git#readme", 27 | "dependencies": { 28 | "fast-glob": "^3.3.1", 29 | "fs-extra": "^11.1.1", 30 | "gatsby-source-filesystem": "^5.11.0", 31 | "git-url-parse": "^13.1.0", 32 | "simple-git": "^3.16.0" 33 | } 34 | } 35 | --------------------------------------------------------------------------------