From ce59bad87178986bd1a87f80fd6a4489e066e614 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Pradel?= Date: Thu, 12 Nov 2020 19:21:42 +0100 Subject: [PATCH] feat: switch project to monorepo (#451) --- .github/workflows/main.yml | 12 +- .github/workflows/release-please.yml | 8 +- .github/workflows/size.yml | 1 + .../@yarnpkg/plugin-workspace-tools.cjs | 29 +++ .yarnrc.yml | 5 +- README.md | 72 +------ netlify.toml | 4 +- package.json | 90 +-------- react-responsive-modal/README.md | 71 +++++++ .../__snapshots__/index.test.tsx.snap | 0 .../__tests__}/index.test.tsx | 0 .../__tests__}/setupTests.ts | 0 .../cypress.json | 0 .../cypress}/integration/modal.spec.ts | 0 .../cypress}/plugins/index.js | 2 +- .../cypress}/support/commands.js | 0 .../cypress}/support/index.js | 2 +- .../cypress}/tsconfig.json | 0 .../docs}/docs.css | 0 .../docs}/examples.mdx | 0 .../docs}/examples/custom-animation.css | 0 .../docs}/examples/custom-styling.css | 0 .../docs}/index.mdx | 0 doczrc.js => react-responsive-modal/doczrc.js | 0 .../gatsby-config.js | 0 react-responsive-modal/package.json | 90 +++++++++ .../src}/CloseIcon.tsx | 0 .../src}/FocusTrap.tsx | 0 {src => react-responsive-modal/src}/index.tsx | 0 .../src}/lib/focusTrapJs.ts | 0 .../src}/modalManager.ts | 0 {src => react-responsive-modal/src}/utils.ts | 0 .../styles.css | 0 .../tsconfig.json | 0 yarn.lock | 175 +++++++++++++++++- 35 files changed, 386 insertions(+), 175 deletions(-) create mode 100644 .yarn/plugins/@yarnpkg/plugin-workspace-tools.cjs mode change 100644 => 120000 README.md create mode 100644 react-responsive-modal/README.md rename {__tests__ => react-responsive-modal/__tests__}/__snapshots__/index.test.tsx.snap (100%) rename {__tests__ => react-responsive-modal/__tests__}/index.test.tsx (100%) rename {__tests__ => react-responsive-modal/__tests__}/setupTests.ts (100%) rename cypress.json => react-responsive-modal/cypress.json (100%) rename {cypress => react-responsive-modal/cypress}/integration/modal.spec.ts (100%) rename {cypress => react-responsive-modal/cypress}/plugins/index.js (99%) rename {cypress => react-responsive-modal/cypress}/support/commands.js (100%) rename {cypress => react-responsive-modal/cypress}/support/index.js (96%) rename {cypress => react-responsive-modal/cypress}/tsconfig.json (100%) rename {docs => react-responsive-modal/docs}/docs.css (100%) rename {docs => react-responsive-modal/docs}/examples.mdx (100%) rename {docs => react-responsive-modal/docs}/examples/custom-animation.css (100%) rename {docs => react-responsive-modal/docs}/examples/custom-styling.css (100%) rename {docs => react-responsive-modal/docs}/index.mdx (100%) rename doczrc.js => react-responsive-modal/doczrc.js (100%) rename gatsby-config.js => react-responsive-modal/gatsby-config.js (100%) create mode 100644 react-responsive-modal/package.json rename {src => react-responsive-modal/src}/CloseIcon.tsx (100%) rename {src => react-responsive-modal/src}/FocusTrap.tsx (100%) rename {src => react-responsive-modal/src}/index.tsx (100%) rename {src => react-responsive-modal/src}/lib/focusTrapJs.ts (100%) rename {src => react-responsive-modal/src}/modalManager.ts (100%) rename {src => react-responsive-modal/src}/utils.ts (100%) rename styles.css => react-responsive-modal/styles.css (100%) rename tsconfig.json => react-responsive-modal/tsconfig.json (100%) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 2bba6b95..df7e078a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -35,23 +35,25 @@ jobs: run: yarn install --immutable - name: Lint - run: yarn lint + run: yarn workspace react-responsive-modal lint - name: Test - run: yarn test --ci --coverage --maxWorkers=2 + run: yarn workspace react-responsive-modal test --ci --coverage --maxWorkers=2 - name: Report coverage uses: codecov/codecov-action@v1 - name: Build - run: yarn build + run: yarn workspace react-responsive-modal build - name: Build docs - run: yarn docz:build + run: yarn workspace react-responsive-modal docz:build - name: Cypress run uses: cypress-io/github-action@v2 with: # Dependencies already installed before install: false - start: yarn dlx serve -l 3000 .docz/dist + # Use monorepo + project: ./react-responsive-modal + start: yarn dlx serve -l 3000 react-responsive-modal/.docz/dist diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index 2794f1a8..e1f57cac 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -30,12 +30,12 @@ jobs: run: yarn install --immutable if: ${{ steps.release.outputs.release_created }} - - name: Build - run: yarn build + - name: Build react-responsive-modal + run: yarn workspace react-responsive-modal build if: ${{ steps.release.outputs.release_created }} - - name: Publish npm package - run: yarn npm publish + - name: Publish react-responsive-modal npm package + run: yarn workspace react-responsive-modal npm publish env: NPM_TOKEN: ${{secrets.NPM_TOKEN}} if: ${{ steps.release.outputs.release_created }} diff --git a/.github/workflows/size.yml b/.github/workflows/size.yml index 0d3e9416..77741379 100644 --- a/.github/workflows/size.yml +++ b/.github/workflows/size.yml @@ -30,3 +30,4 @@ jobs: - uses: andresz1/size-limit-action@v1 with: github_token: ${{ secrets.GITHUB_TOKEN }} + directory: react-responsive-modal diff --git a/.yarn/plugins/@yarnpkg/plugin-workspace-tools.cjs b/.yarn/plugins/@yarnpkg/plugin-workspace-tools.cjs new file mode 100644 index 00000000..8fb261f6 --- /dev/null +++ b/.yarn/plugins/@yarnpkg/plugin-workspace-tools.cjs @@ -0,0 +1,29 @@ +/* eslint-disable */ +module.exports = { +name: "@yarnpkg/plugin-workspace-tools", +factory: function (require) { +var plugin;plugin=(()=>{"use strict";var e={115:(e,t,n)=>{n.r(t),n.d(t,{default:()=>y});function o(e,t,n,o){var r,a=arguments.length,s=a<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,n):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,o);else for(var i=e.length-1;i>=0;i--)(r=e[i])&&(s=(a<3?r(s):a>3?r(t,n,s):r(t,n))||s);return a>3&&s&&Object.defineProperty(t,n,s),s}var r=n(594),a=n(966),s=n(42),i=n(440);class l extends r.BaseCommand{constructor(){super(...arguments),this.workspaces=[],this.json=!1,this.production=!1,this.all=!1}async execute(){const e=await a.Configuration.find(this.context.cwd,this.context.plugins),{project:t,workspace:n}=await a.Project.find(e,this.context.cwd),o=await a.Cache.find(e);let s;if(this.all)s=new Set(t.workspaces);else if(0===this.workspaces.length){if(!n)throw new r.WorkspaceRequiredError(t.cwd,this.context.cwd);s=new Set([n])}else s=new Set(this.workspaces.map(e=>t.getWorkspaceByIdent(a.structUtils.parseIdent(e))));for(const e of s)for(const n of a.Manifest.hardDependencies)for(const o of e.manifest.getForScope(n).values()){const e=t.tryWorkspaceByDescriptor(o);null!==e&&s.add(e)}for(const e of t.workspaces)s.has(e)?this.production&&e.manifest.devDependencies.clear():(e.manifest.dependencies.clear(),e.manifest.devDependencies.clear(),e.manifest.peerDependencies.clear());return(await a.StreamReport.start({configuration:e,json:this.json,stdout:this.context.stdout,includeLogs:!0},async e=>{await t.install({cache:o,report:e,persistProject:!1}),await t.persistInstallStateFile()})).exitCode()}}l.usage=s.Command.Usage({category:"Workspace-related commands",description:"install a single workspace and its dependencies",details:"\n This command will run an install as if the specified workspaces (and all other workspaces they depend on) were the only ones in the project. If no workspaces are explicitly listed, the active one will be assumed.\n\n Note that this command is only very moderately useful when using zero-installs, since the cache will contain all the packages anyway - meaning that the only difference between a full install and a focused install would just be a few extra lines in the `.pnp.js` file, at the cost of introducing an extra complexity.\n\n If the `-A,--all` flag is set, the entire project will be installed. Combine with `--production` to replicate the old `yarn install --production`.\n "}),l.schema=i.object().shape({all:i.bool(),workspaces:i.array().when("all",{is:!0,then:i.array().max(0,"Cannot specify workspaces when using the --all flag"),otherwise:i.array()})}),o([s.Command.Rest()],l.prototype,"workspaces",void 0),o([s.Command.Boolean("--json",{description:"Format the output as an NDJSON stream"})],l.prototype,"json",void 0),o([s.Command.Boolean("--production",{description:"Only install regular dependencies by omitting dev dependencies"})],l.prototype,"production",void 0),o([s.Command.Boolean("-A,--all",{description:"Install the entire project"})],l.prototype,"all",void 0),o([s.Command.Path("workspaces","focus")],l.prototype,"execute",null);var p=n(401),u=n.n(p),c=n(87),d=n(578),f=n.n(d);const h=(e,t)=>{const n=[];for(const o of e.workspacesCwds){const e=t.workspacesByCwd.get(o);e&&n.push(e,...h(e,t))}return n};class g extends r.BaseCommand{constructor(){super(...arguments),this.args=[],this.allLegacy=!1,this.verbose=!1,this.parallel=!1,this.interlaced=!1,this.topological=!1,this.topologicalDev=!1,this.include=[],this.exclude=[],this.private=!0}async execute(){var e;const t=await a.Configuration.find(this.context.cwd,this.context.plugins),{project:n,workspace:o}=await a.Project.find(t,this.context.cwd),i=null!==(e=this.all)&&void 0!==e?e:this.allLegacy;if(!i&&!o)throw new r.WorkspaceRequiredError(n.cwd,this.context.cwd);const l=this.cli.process([this.commandName,...this.args]),p=1===l.path.length&&"run"===l.path[0]&&void 0!==l.scriptName?l.scriptName:null;if(0===l.path.length)throw new s.UsageError("Invalid subcommand name for iteration - use the 'run' keyword if you wish to execute a script");const d=i?n.topLevelWorkspace:o,g=[d,...h(d,n)],y=[];for(const e of g)p&&!e.manifest.scripts.has(p)||p===process.env.npm_lifecycle_event&&e.cwd===o.cwd||this.include.length>0&&!u().isMatch(a.structUtils.stringifyIdent(e.locator),this.include)||this.exclude.length>0&&u().isMatch(a.structUtils.stringifyIdent(e.locator),this.exclude)||!1===this.private&&!0===e.manifest.private||y.push(e);let R=this.interlaced;this.parallel||(R=!0);const m=new Map,_=new Set,E=this.parallel?Math.max(1,(0,c.cpus)().length/2):1,C=f()(this.jobs||E);let b=0,x=null,v=!1;const S=await a.StreamReport.start({configuration:t,stdout:this.context.stdout},async e=>{const o=async(n,{commandIndex:o})=>{if(v)return-1;!this.parallel&&this.verbose&&o>1&&e.reportSeparator();const r=function(e,{configuration:t,commandIndex:n,verbose:o}){if(!o)return null;const r=a.structUtils.convertToIdent(e.locator),s=`[${a.structUtils.stringifyIdent(r)}]:`,i=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],l=i[n%i.length];return a.formatUtils.pretty(t,s,l)}(n,{configuration:t,verbose:this.verbose,commandIndex:o}),[s,i]=A(e,{prefix:r,interlaced:R}),[l,p]=A(e,{prefix:r,interlaced:R});try{const t=await this.cli.run([this.commandName,...this.args],{cwd:n.cwd,stdout:s,stderr:l})||0;s.end(),l.end();const o=await i,a=await p;return this.verbose&&o&&a&&e.reportInfo(null,`${r} Process exited without output (exit code ${t})`),130===t&&(v=!0,x=t),t}catch(e){throw s.end(),l.end(),await i,await p,e}};for(const e of y)m.set(e.anchoredLocator.locatorHash,e);for(;m.size>0&&!e.hasErrors();){const r=[];for(const[e,t]of m){if(_.has(t.anchoredDescriptor.descriptorHash))continue;let a=!0;if(this.topological||this.topologicalDev){const e=this.topologicalDev?new Map([...t.manifest.dependencies,...t.manifest.devDependencies]):t.manifest.dependencies;for(const t of e.values()){const e=n.tryWorkspaceByDescriptor(t);if(a=null===e||!m.has(e.anchoredLocator.locatorHash),!a)break}}if(a&&(_.add(t.anchoredDescriptor.descriptorHash),r.push(C(async()=>{const n=await o(t,{commandIndex:++b});return m.delete(e),_.delete(t.anchoredDescriptor.descriptorHash),n})),!this.parallel))break}if(0===r.length){const n=Array.from(m.values()).map(e=>a.structUtils.prettyLocator(t,e.anchoredLocator)).join(", ");return void e.reportError(a.MessageName.CYCLIC_DEPENDENCIES,`Dependency cycle detected (${n})`)}const s=(await Promise.all(r)).find(e=>0!==e);null===x&&(x=void 0!==s?1:x),(this.topological||this.topologicalDev)&&void 0!==s&&e.reportError(a.MessageName.UNNAMED,"The command failed for workspaces that are depended upon by other workspaces; can't satisfy the dependency graph")}});return null!==x?x:S.exitCode()}}function A(e,{prefix:t,interlaced:n}){const o=e.createStreamReporter(t),r=new a.miscUtils.DefaultStream;r.pipe(o,{end:!1}),r.on("finish",()=>{o.end()});const s=new Promise(e=>{o.on("finish",()=>{e(r.active)})});if(n)return[r,s];const i=new a.miscUtils.BufferStream;return i.pipe(r,{end:!1}),i.on("finish",()=>{r.end()}),[i,s]}g.schema=i.object().shape({jobs:i.number().min(2),parallel:i.boolean().when("jobs",{is:e=>e>1,then:i.boolean().oneOf([!0],"--parallel must be set when using --jobs"),otherwise:i.boolean()})}),g.usage=s.Command.Usage({category:"Workspace-related commands",description:"run a command on all workspaces",details:"\n This command will run a given sub-command on current and all its descendant workspaces. Various flags can alter the exact behavior of the command:\n\n - If `-p,--parallel` is set, the commands will be ran in parallel; they'll by default be limited to a number of parallel tasks roughly equal to half your core number, but that can be overridden via `-j,--jobs`.\n\n - If `-p,--parallel` and `-i,--interlaced` are both set, Yarn will print the lines from the output as it receives them. If `-i,--interlaced` wasn't set, it would instead buffer the output from each process and print the resulting buffers only after their source processes have exited.\n\n - If `-t,--topological` is set, Yarn will only run the command after all workspaces that it depends on through the `dependencies` field have successfully finished executing. If `--topological-dev` is set, both the `dependencies` and `devDependencies` fields will be considered when figuring out the wait points.\n\n - If `-A,--all` is set, Yarn will run the command on all the workspaces of a project. By default yarn runs the command only on current and all its descendant workspaces.\n\n - The command may apply to only some workspaces through the use of `--include` which acts as a whitelist. The `--exclude` flag will do the opposite and will be a list of packages that mustn't execute the script. Both flags accept glob patterns (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n Adding the `-v,--verbose` flag will cause Yarn to print more information; in particular the name of the workspace that generated the output will be printed at the front of each line.\n\n If the command is `run` and the script being run does not exist the child workspace will be skipped without error.\n ",examples:[["Publish current and all descendant packages","yarn workspaces foreach npm publish --tolerate-republish"],["Run build script on current and all descendant packages","yarn workspaces foreach run build"],["Run build script on current and all descendant packages in parallel, building dependent packages first","yarn workspaces foreach -pt run build"]]}),o([s.Command.String()],g.prototype,"commandName",void 0),o([s.Command.Proxy()],g.prototype,"args",void 0),o([s.Command.Boolean("-a",{hidden:!0})],g.prototype,"allLegacy",void 0),o([s.Command.Boolean("-A,--all",{description:"Run the command on all workspaces of a project"})],g.prototype,"all",void 0),o([s.Command.Boolean("-v,--verbose",{description:"Prefix each output line with the name of the originating workspace"})],g.prototype,"verbose",void 0),o([s.Command.Boolean("-p,--parallel",{description:"Run the commands in parallel"})],g.prototype,"parallel",void 0),o([s.Command.Boolean("-i,--interlaced",{description:"Print the output of commands in real-time instead of buffering it"})],g.prototype,"interlaced",void 0),o([s.Command.String("-j,--jobs",{description:"The maximum number of parallel tasks that the execution will be limited to"})],g.prototype,"jobs",void 0),o([s.Command.Boolean("-t,--topological",{description:"Run the command after all workspaces it depends on (regular) have finished"})],g.prototype,"topological",void 0),o([s.Command.Boolean("--topological-dev",{description:"Run the command after all workspaces it depends on (regular + dev) have finished"})],g.prototype,"topologicalDev",void 0),o([s.Command.Array("--include",{description:"An array of glob pattern idents that acts as a whitelist of workspaces"})],g.prototype,"include",void 0),o([s.Command.Array("--exclude",{description:"An array of glob pattern idents that acts as a blacklist of workspaces"})],g.prototype,"exclude",void 0),o([s.Command.Boolean("--private",{description:"Also run the command on private workspaces"})],g.prototype,"private",void 0),o([s.Command.Path("workspaces","foreach")],g.prototype,"execute",null);const y={commands:[l,g]}},235:(e,t,n)=>{const o=n(900),r=n(617),a=n(495),s=n(425),i=(e,t={})=>{let n=[];if(Array.isArray(e))for(let o of e){let e=i.create(o,t);Array.isArray(e)?n.push(...e):n.push(e)}else n=[].concat(i.create(e,t));return t&&!0===t.expand&&!0===t.nodupes&&(n=[...new Set(n)]),n};i.parse=(e,t={})=>s(e,t),i.stringify=(e,t={})=>o("string"==typeof e?i.parse(e,t):e,t),i.compile=(e,t={})=>("string"==typeof e&&(e=i.parse(e,t)),r(e,t)),i.expand=(e,t={})=>{"string"==typeof e&&(e=i.parse(e,t));let n=a(e,t);return!0===t.noempty&&(n=n.filter(Boolean)),!0===t.nodupes&&(n=[...new Set(n)]),n},i.create=(e,t={})=>""===e||e.length<3?[e]:!0!==t.expand?i.compile(e,t):i.expand(e,t),e.exports=i},617:(e,t,n)=>{const o=n(169),r=n(542);e.exports=(e,t={})=>{let n=(e,a={})=>{let s=r.isInvalidBrace(a),i=!0===e.invalid&&!0===t.escapeInvalid,l=!0===s||!0===i,p=!0===t.escapeInvalid?"\\":"",u="";if(!0===e.isOpen)return p+e.value;if(!0===e.isClose)return p+e.value;if("open"===e.type)return l?p+e.value:"(";if("close"===e.type)return l?p+e.value:")";if("comma"===e.type)return"comma"===e.prev.type?"":l?e.value:"|";if(e.value)return e.value;if(e.nodes&&e.ranges>0){let n=r.reduce(e.nodes),a=o(...n,{...t,wrap:!1,toRegex:!0});if(0!==a.length)return n.length>1&&a.length>1?`(${a})`:a}if(e.nodes)for(let t of e.nodes)u+=n(t,e);return u};return n(e)}},384:e=>{e.exports={MAX_LENGTH:65536,CHAR_0:"0",CHAR_9:"9",CHAR_UPPERCASE_A:"A",CHAR_LOWERCASE_A:"a",CHAR_UPPERCASE_Z:"Z",CHAR_LOWERCASE_Z:"z",CHAR_LEFT_PARENTHESES:"(",CHAR_RIGHT_PARENTHESES:")",CHAR_ASTERISK:"*",CHAR_AMPERSAND:"&",CHAR_AT:"@",CHAR_BACKSLASH:"\\",CHAR_BACKTICK:"`",CHAR_CARRIAGE_RETURN:"\r",CHAR_CIRCUMFLEX_ACCENT:"^",CHAR_COLON:":",CHAR_COMMA:",",CHAR_DOLLAR:"$",CHAR_DOT:".",CHAR_DOUBLE_QUOTE:'"',CHAR_EQUAL:"=",CHAR_EXCLAMATION_MARK:"!",CHAR_FORM_FEED:"\f",CHAR_FORWARD_SLASH:"/",CHAR_HASH:"#",CHAR_HYPHEN_MINUS:"-",CHAR_LEFT_ANGLE_BRACKET:"<",CHAR_LEFT_CURLY_BRACE:"{",CHAR_LEFT_SQUARE_BRACKET:"[",CHAR_LINE_FEED:"\n",CHAR_NO_BREAK_SPACE:" ",CHAR_PERCENT:"%",CHAR_PLUS:"+",CHAR_QUESTION_MARK:"?",CHAR_RIGHT_ANGLE_BRACKET:">",CHAR_RIGHT_CURLY_BRACE:"}",CHAR_RIGHT_SQUARE_BRACKET:"]",CHAR_SEMICOLON:";",CHAR_SINGLE_QUOTE:"'",CHAR_SPACE:" ",CHAR_TAB:"\t",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\ufeff"}},495:(e,t,n)=>{const o=n(169),r=n(900),a=n(542),s=(e="",t="",n=!1)=>{let o=[];if(e=[].concat(e),!(t=[].concat(t)).length)return e;if(!e.length)return n?a.flatten(t).map(e=>`{${e}}`):t;for(let r of e)if(Array.isArray(r))for(let e of r)o.push(s(e,t,n));else for(let e of t)!0===n&&"string"==typeof e&&(e=`{${e}}`),o.push(Array.isArray(e)?s(r,e,n):r+e);return a.flatten(o)};e.exports=(e,t={})=>{let n=void 0===t.rangeLimit?1e3:t.rangeLimit,i=(e,l={})=>{e.queue=[];let p=l,u=l.queue;for(;"brace"!==p.type&&"root"!==p.type&&p.parent;)p=p.parent,u=p.queue;if(e.invalid||e.dollar)return void u.push(s(u.pop(),r(e,t)));if("brace"===e.type&&!0!==e.invalid&&2===e.nodes.length)return void u.push(s(u.pop(),["{}"]));if(e.nodes&&e.ranges>0){let i=a.reduce(e.nodes);if(a.exceedsLimit(...i,t.step,n))throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");let l=o(...i,t);return 0===l.length&&(l=r(e,t)),u.push(s(u.pop(),l)),void(e.nodes=[])}let c=a.encloseBrace(e),d=e.queue,f=e;for(;"brace"!==f.type&&"root"!==f.type&&f.parent;)f=f.parent,d=f.queue;for(let t=0;t{const o=n(900),{MAX_LENGTH:r,CHAR_BACKSLASH:a,CHAR_BACKTICK:s,CHAR_COMMA:i,CHAR_DOT:l,CHAR_LEFT_PARENTHESES:p,CHAR_RIGHT_PARENTHESES:u,CHAR_LEFT_CURLY_BRACE:c,CHAR_RIGHT_CURLY_BRACE:d,CHAR_LEFT_SQUARE_BRACKET:f,CHAR_RIGHT_SQUARE_BRACKET:h,CHAR_DOUBLE_QUOTE:g,CHAR_SINGLE_QUOTE:A,CHAR_NO_BREAK_SPACE:y,CHAR_ZERO_WIDTH_NOBREAK_SPACE:R}=n(384);e.exports=(e,t={})=>{if("string"!=typeof e)throw new TypeError("Expected a string");let n=t||{},m="number"==typeof n.maxLength?Math.min(r,n.maxLength):r;if(e.length>m)throw new SyntaxError(`Input length (${e.length}), exceeds max characters (${m})`);let _,E={type:"root",input:e,nodes:[]},C=[E],b=E,x=E,v=0,S=e.length,w=0,H=0;const T=()=>e[w++],L=e=>{if("text"===e.type&&"dot"===x.type&&(x.type="text"),!x||"text"!==x.type||"text"!==e.type)return b.nodes.push(e),e.parent=b,e.prev=x,x=e,e;x.value+=e.value};for(L({type:"bos"});w0){if(b.ranges>0){b.ranges=0;let e=b.nodes.shift();b.nodes=[e,{type:"text",value:o(b)}]}L({type:"comma",value:_}),b.commas++}else if(_===l&&H>0&&0===b.commas){let e=b.nodes;if(0===H||0===e.length){L({type:"text",value:_});continue}if("dot"===x.type){if(b.range=[],x.value+=_,x.type="range",3!==b.nodes.length&&5!==b.nodes.length){b.invalid=!0,b.ranges=0,x.type="text";continue}b.ranges++,b.args=[];continue}if("range"===x.type){e.pop();let t=e[e.length-1];t.value+=x.value+_,x=t,b.ranges--;continue}L({type:"dot",value:_})}else L({type:"text",value:_});else{if("brace"!==b.type){L({type:"text",value:_});continue}let e="close";b=C.pop(),b.close=!0,L({type:e,value:_}),H--,b=C[C.length-1]}else{H++;let e=x.value&&"$"===x.value.slice(-1)||!0===b.dollar;b=L({type:"brace",open:!0,close:!1,dollar:e,depth:H,commas:0,ranges:0,nodes:[]}),C.push(b),L({type:"open",value:_})}else{let e,n=_;for(!0!==t.keepQuotes&&(_="");w{e.nodes||("open"===e.type&&(e.isOpen=!0),"close"===e.type&&(e.isClose=!0),e.nodes||(e.type="text"),e.invalid=!0)});let e=C[C.length-1],t=e.nodes.indexOf(b);e.nodes.splice(t,1,...b.nodes)}}while(C.length>0);return L({type:"eos"}),E}},900:(e,t,n)=>{const o=n(542);e.exports=(e,t={})=>{let n=(e,r={})=>{let a=t.escapeInvalid&&o.isInvalidBrace(r),s=!0===e.invalid&&!0===t.escapeInvalid,i="";if(e.value)return(a||s)&&o.isOpenOrClose(e)?"\\"+e.value:e.value;if(e.value)return e.value;if(e.nodes)for(let t of e.nodes)i+=n(t);return i};return n(e)}},542:(e,t)=>{t.isInteger=e=>"number"==typeof e?Number.isInteger(e):"string"==typeof e&&""!==e.trim()&&Number.isInteger(Number(e)),t.find=(e,t)=>e.nodes.find(e=>e.type===t),t.exceedsLimit=(e,n,o=1,r)=>!1!==r&&(!(!t.isInteger(e)||!t.isInteger(n))&&(Number(n)-Number(e))/Number(o)>=r),t.escapeNode=(e,t=0,n)=>{let o=e.nodes[t];o&&(n&&o.type===n||"open"===o.type||"close"===o.type)&&!0!==o.escaped&&(o.value="\\"+o.value,o.escaped=!0)},t.encloseBrace=e=>"brace"===e.type&&(e.commas>>0+e.ranges>>0==0&&(e.invalid=!0,!0)),t.isInvalidBrace=e=>"brace"===e.type&&(!(!0!==e.invalid&&!e.dollar)||(e.commas>>0+e.ranges>>0==0||!0!==e.open||!0!==e.close)&&(e.invalid=!0,!0)),t.isOpenOrClose=e=>"open"===e.type||"close"===e.type||(!0===e.open||!0===e.close),t.reduce=e=>e.reduce((e,t)=>("text"===t.type&&e.push(t.value),"range"===t.type&&(t.type="text"),e),[]),t.flatten=(...e)=>{const t=[],n=e=>{for(let o=0;o{ +/*! + * fill-range + * + * Copyright (c) 2014-present, Jon Schlinkert. + * Licensed under the MIT License. + */ +const o=n(669),r=n(615),a=e=>null!==e&&"object"==typeof e&&!Array.isArray(e),s=e=>"number"==typeof e||"string"==typeof e&&""!==e,i=e=>Number.isInteger(+e),l=e=>{let t=""+e,n=-1;if("-"===t[0]&&(t=t.slice(1)),"0"===t)return!1;for(;"0"===t[++n];);return n>0},p=(e,t,n)=>{if(t>0){let n="-"===e[0]?"-":"";n&&(e=e.slice(1)),e=n+e.padStart(n?t-1:t,"0")}return!1===n?String(e):e},u=(e,t)=>{let n="-"===e[0]?"-":"";for(n&&(e=e.slice(1),t--);e.length{if(n)return r(e,t,{wrap:!1,...o});let a=String.fromCharCode(e);return e===t?a:`[${a}-${String.fromCharCode(t)}]`},d=(e,t,n)=>{if(Array.isArray(e)){let t=!0===n.wrap,o=n.capture?"":"?:";return t?`(${o}${e.join("|")})`:e.join("|")}return r(e,t,n)},f=(...e)=>new RangeError("Invalid range arguments: "+o.inspect(...e)),h=(e,t,n)=>{if(!0===n.strictRanges)throw f([e,t]);return[]},g=(e,t,n=1,o={})=>{let r=Number(e),a=Number(t);if(!Number.isInteger(r)||!Number.isInteger(a)){if(!0===o.strictRanges)throw f([e,t]);return[]}0===r&&(r=0),0===a&&(a=0);let s=r>a,i=String(e),h=String(t),g=String(n);n=Math.max(Math.abs(n),1);let A=l(i)||l(h)||l(g),y=A?Math.max(i.length,h.length,g.length):0,R=!1===A&&!1===((e,t,n)=>"string"==typeof e||"string"==typeof t||!0===n.stringify)(e,t,o),m=o.transform||(e=>t=>!0===e?Number(t):String(t))(R);if(o.toRegex&&1===n)return c(u(e,y),u(t,y),!0,o);let _={negatives:[],positives:[]},E=[],C=0;for(;s?r>=a:r<=a;)!0===o.toRegex&&n>1?_[(b=r)<0?"negatives":"positives"].push(Math.abs(b)):E.push(p(m(r,C),y,R)),r=s?r-n:r+n,C++;var b;return!0===o.toRegex?n>1?((e,t)=>{e.negatives.sort((e,t)=>et?1:0),e.positives.sort((e,t)=>et?1:0);let n,o=t.capture?"":"?:",r="",a="";return e.positives.length&&(r=e.positives.join("|")),e.negatives.length&&(a=`-(${o}${e.negatives.join("|")})`),n=r&&a?`${r}|${a}`:r||a,t.wrap?`(${o}${n})`:n})(_,o):d(E,null,{wrap:!1,...o}):E},A=(e,t,n,o={})=>{if(null==t&&s(e))return[e];if(!s(e)||!s(t))return h(e,t,o);if("function"==typeof n)return A(e,t,1,{transform:n});if(a(n))return A(e,t,0,n);let r={...o};return!0===r.capture&&(r.wrap=!0),n=n||r.step||1,i(n)?i(e)&&i(t)?g(e,t,n,r):((e,t,n=1,o={})=>{if(!i(e)&&e.length>1||!i(t)&&t.length>1)return h(e,t,o);let r=o.transform||(e=>String.fromCharCode(e)),a=(""+e).charCodeAt(0),s=(""+t).charCodeAt(0),l=a>s,p=Math.min(a,s),u=Math.max(a,s);if(o.toRegex&&1===n)return c(p,u,!1,o);let f=[],g=0;for(;l?a>=s:a<=s;)f.push(r(a,g)),a=l?a-n:a+n,g++;return!0===o.toRegex?d(f,null,{wrap:!1,options:o}):f})(e,t,Math.max(Math.abs(n),1),r):null==n||a(n)?A(e,t,1,n):((e,t)=>{if(!0===t.strictRanges)throw new TypeError(`Expected step "${e}" to be a number`);return[]})(n,r)};e.exports=A},761:e=>{ +/*! + * is-number + * + * Copyright (c) 2014-present, Jon Schlinkert. + * Released under the MIT License. + */ +e.exports=function(e){return"number"==typeof e?e-e==0:"string"==typeof e&&""!==e.trim()&&(Number.isFinite?Number.isFinite(+e):isFinite(+e))}},401:(e,t,n)=>{const o=n(669),r=n(235),a=n(722),s=n(598),i=e=>"string"==typeof e&&(""===e||"./"===e),l=(e,t,n)=>{t=[].concat(t),e=[].concat(e);let o=new Set,r=new Set,s=new Set,i=0,l=e=>{s.add(e.output),n&&n.onResult&&n.onResult(e)};for(let s=0;s!o.has(e));if(n&&0===p.length){if(!0===n.failglob)throw new Error(`No matches found for "${t.join(", ")}"`);if(!0===n.nonull||!0===n.nullglob)return n.unescape?t.map(e=>e.replace(/\\/g,"")):t}return p};l.match=l,l.matcher=(e,t)=>a(e,t),l.any=l.isMatch=(e,t,n)=>a(t,n)(e),l.not=(e,t,n={})=>{t=[].concat(t).map(String);let o=new Set,r=[],a=l(e,t,{...n,onResult:e=>{n.onResult&&n.onResult(e),r.push(e.output)}});for(let e of r)a.includes(e)||o.add(e);return[...o]},l.contains=(e,t,n)=>{if("string"!=typeof e)throw new TypeError(`Expected a string: "${o.inspect(e)}"`);if(Array.isArray(t))return t.some(t=>l.contains(e,t,n));if("string"==typeof t){if(i(e)||i(t))return!1;if(e.includes(t)||e.startsWith("./")&&e.slice(2).includes(t))return!0}return l.isMatch(e,t,{...n,contains:!0})},l.matchKeys=(e,t,n)=>{if(!s.isObject(e))throw new TypeError("Expected the first argument to be an object");let o=l(Object.keys(e),t,n),r={};for(let t of o)r[t]=e[t];return r},l.some=(e,t,n)=>{let o=[].concat(e);for(let e of[].concat(t)){let t=a(String(e),n);if(o.some(e=>t(e)))return!0}return!1},l.every=(e,t,n)=>{let o=[].concat(e);for(let e of[].concat(t)){let t=a(String(e),n);if(!o.every(e=>t(e)))return!1}return!0},l.all=(e,t,n)=>{if("string"!=typeof e)throw new TypeError(`Expected a string: "${o.inspect(e)}"`);return[].concat(t).every(t=>a(t,n)(e))},l.capture=(e,t,n)=>{let o=s.isWindows(n),r=a.makeRe(String(e),{...n,capture:!0}).exec(o?s.toPosixSlashes(t):t);if(r)return r.slice(1).map(e=>void 0===e?"":e)},l.makeRe=(...e)=>a.makeRe(...e),l.scan=(...e)=>a.scan(...e),l.parse=(e,t)=>{let n=[];for(let o of[].concat(e||[]))for(let e of r(String(o),t))n.push(a.parse(e,t));return n},l.braces=(e,t)=>{if("string"!=typeof e)throw new TypeError("Expected a string");return t&&!0===t.nobrace||!/\{.*\}/.test(e)?[e]:r(e,t)},l.braceExpand=(e,t)=>{if("string"!=typeof e)throw new TypeError("Expected a string");return l.braces(e,{...t,expand:!0})},e.exports=l},578:(e,t,n)=>{const o=n(550),r=e=>{if(e<1)throw new TypeError("Expected `concurrency` to be a number from 1 and up");const t=[];let n=0;const r=()=>{n--,t.length>0&&t.shift()()},a=(e,t,...a)=>{n++;const s=o(e,...a);t(s),s.then(r,r)},s=(o,...r)=>new Promise(s=>((o,r,...s)=>{nn},pendingCount:{get:()=>t.length}}),s};e.exports=r,e.exports.default=r},550:e=>{e.exports=(e,...t)=>new Promise(n=>{n(e(...t))})},722:(e,t,n)=>{e.exports=n(828)},86:(e,t,n)=>{const o=n(622),r={DOT_LITERAL:"\\.",PLUS_LITERAL:"\\+",QMARK_LITERAL:"\\?",SLASH_LITERAL:"\\/",ONE_CHAR:"(?=.)",QMARK:"[^/]",END_ANCHOR:"(?:\\/|$)",DOTS_SLASH:"\\.{1,2}(?:\\/|$)",NO_DOT:"(?!\\.)",NO_DOTS:"(?!(?:^|\\/)\\.{1,2}(?:\\/|$))",NO_DOT_SLASH:"(?!\\.{0,1}(?:\\/|$))",NO_DOTS_SLASH:"(?!\\.{1,2}(?:\\/|$))",QMARK_NO_DOT:"[^.\\/]",STAR:"[^/]*?",START_ANCHOR:"(?:^|\\/)"},a={...r,SLASH_LITERAL:"[\\\\/]",QMARK:"[^\\\\/]",STAR:"[^\\\\/]*?",DOTS_SLASH:"\\.{1,2}(?:[\\\\/]|$)",NO_DOT:"(?!\\.)",NO_DOTS:"(?!(?:^|[\\\\/])\\.{1,2}(?:[\\\\/]|$))",NO_DOT_SLASH:"(?!\\.{0,1}(?:[\\\\/]|$))",NO_DOTS_SLASH:"(?!\\.{1,2}(?:[\\\\/]|$))",QMARK_NO_DOT:"[^.\\\\/]",START_ANCHOR:"(?:^|[\\\\/])",END_ANCHOR:"(?:[\\\\/]|$)"};e.exports={MAX_LENGTH:65536,POSIX_REGEX_SOURCE:{alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"},REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:o.sep,extglobChars:e=>({"!":{type:"negate",open:"(?:(?!(?:",close:`))${e.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}),globChars:e=>!0===e?a:r}},974:(e,t,n)=>{const o=n(86),r=n(598),{MAX_LENGTH:a,POSIX_REGEX_SOURCE:s,REGEX_NON_SPECIAL_CHARS:i,REGEX_SPECIAL_CHARS_BACKREF:l,REPLACEMENTS:p}=o,u=(e,t)=>{if("function"==typeof t.expandRange)return t.expandRange(...e,t);e.sort();const n=`[${e.join("-")}]`;try{new RegExp(n)}catch(t){return e.map(e=>r.escapeRegex(e)).join("..")}return n},c=(e,t)=>`Missing ${e}: "${t}" - use "\\\\${t}" to match literal characters`,d=(e,t)=>{if("string"!=typeof e)throw new TypeError("Expected a string");e=p[e]||e;const n={...t},d="number"==typeof n.maxLength?Math.min(a,n.maxLength):a;let f=e.length;if(f>d)throw new SyntaxError(`Input length: ${f}, exceeds maximum allowed length: ${d}`);const h={type:"bos",value:"",output:n.prepend||""},g=[h],A=n.capture?"":"?:",y=r.isWindows(t),R=o.globChars(y),m=o.extglobChars(R),{DOT_LITERAL:_,PLUS_LITERAL:E,SLASH_LITERAL:C,ONE_CHAR:b,DOTS_SLASH:x,NO_DOT:v,NO_DOT_SLASH:S,NO_DOTS_SLASH:w,QMARK:H,QMARK_NO_DOT:T,STAR:L,START_ANCHOR:k}=R,O=e=>`(${A}(?:(?!${k}${e.dot?x:_}).)*?)`,$=n.dot?"":v,N=n.dot?H:T;let I=!0===n.bash?O(n):L;n.capture&&(I=`(${I})`),"boolean"==typeof n.noext&&(n.noextglob=n.noext);const B={input:e,index:-1,start:0,dot:!0===n.dot,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:g};e=r.removePrefix(e,B),f=e.length;const M=[],P=[],D=[];let U,G=h;const j=()=>B.index===f-1,K=B.peek=(t=1)=>e[B.index+t],F=B.advance=()=>e[++B.index],W=()=>e.slice(B.index+1),Q=(e="",t=0)=>{B.consumed+=e,B.index+=t},X=e=>{B.output+=null!=e.output?e.output:e.value,Q(e.value)},q=()=>{let e=1;for(;"!"===K()&&("("!==K(2)||"?"===K(3));)F(),B.start++,e++;return e%2!=0&&(B.negated=!0,B.start++,!0)},Z=e=>{B[e]++,D.push(e)},Y=e=>{B[e]--,D.pop()},z=e=>{if("globstar"===G.type){const t=B.braces>0&&("comma"===e.type||"brace"===e.type),n=!0===e.extglob||M.length&&("pipe"===e.type||"paren"===e.type);"slash"===e.type||"paren"===e.type||t||n||(B.output=B.output.slice(0,-G.output.length),G.type="star",G.value="*",G.output=I,B.output+=G.output)}if(M.length&&"paren"!==e.type&&!m[e.value]&&(M[M.length-1].inner+=e.value),(e.value||e.output)&&X(e),G&&"text"===G.type&&"text"===e.type)return G.value+=e.value,void(G.output=(G.output||"")+e.value);e.prev=G,g.push(e),G=e},V=(e,t)=>{const o={...m[t],conditions:1,inner:""};o.prev=G,o.parens=B.parens,o.output=B.output;const r=(n.capture?"(":"")+o.open;Z("parens"),z({type:e,value:t,output:B.output?"":b}),z({type:"paren",extglob:!0,value:F(),output:r}),M.push(o)},J=e=>{let t=e.close+(n.capture?")":"");if("negate"===e.type){let o=I;e.inner&&e.inner.length>1&&e.inner.includes("/")&&(o=O(n)),(o!==I||j()||/^\)+$/.test(W()))&&(t=e.close=")$))"+o),"bos"===e.prev.type&&j()&&(B.negatedExtglob=!0)}z({type:"paren",extglob:!0,value:U,output:t}),Y("parens")};if(!1!==n.fastpaths&&!/(^[*!]|[/()[\]{}"])/.test(e)){let o=!1,a=e.replace(l,(e,t,n,r,a,s)=>"\\"===r?(o=!0,e):"?"===r?t?t+r+(a?H.repeat(a.length):""):0===s?N+(a?H.repeat(a.length):""):H.repeat(n.length):"."===r?_.repeat(n.length):"*"===r?t?t+r+(a?I:""):I:t?e:"\\"+e);return!0===o&&(a=!0===n.unescape?a.replace(/\\/g,""):a.replace(/\\+/g,e=>e.length%2==0?"\\\\":e?"\\":"")),a===e&&!0===n.contains?(B.output=e,B):(B.output=r.wrapOutput(a,B,t),B)}for(;!j();){if(U=F(),"\0"===U)continue;if("\\"===U){const e=K();if("/"===e&&!0!==n.bash)continue;if("."===e||";"===e)continue;if(!e){U+="\\",z({type:"text",value:U});continue}const t=/^\\+/.exec(W());let o=0;if(t&&t[0].length>2&&(o=t[0].length,B.index+=o,o%2!=0&&(U+="\\")),!0===n.unescape?U=F()||"":U+=F()||"",0===B.brackets){z({type:"text",value:U});continue}}if(B.brackets>0&&("]"!==U||"["===G.value||"[^"===G.value)){if(!1!==n.posix&&":"===U){const e=G.value.slice(1);if(e.includes("[")&&(G.posix=!0,e.includes(":"))){const e=G.value.lastIndexOf("["),t=G.value.slice(0,e),n=G.value.slice(e+2),o=s[n];if(o){G.value=t+o,B.backtrack=!0,F(),h.output||1!==g.indexOf(G)||(h.output=b);continue}}}("["===U&&":"!==K()||"-"===U&&"]"===K())&&(U="\\"+U),"]"!==U||"["!==G.value&&"[^"!==G.value||(U="\\"+U),!0===n.posix&&"!"===U&&"["===G.value&&(U="^"),G.value+=U,X({value:U});continue}if(1===B.quotes&&'"'!==U){U=r.escapeRegex(U),G.value+=U,X({value:U});continue}if('"'===U){B.quotes=1===B.quotes?0:1,!0===n.keepQuotes&&z({type:"text",value:U});continue}if("("===U){Z("parens"),z({type:"paren",value:U});continue}if(")"===U){if(0===B.parens&&!0===n.strictBrackets)throw new SyntaxError(c("opening","("));const e=M[M.length-1];if(e&&B.parens===e.parens+1){J(M.pop());continue}z({type:"paren",value:U,output:B.parens?")":"\\)"}),Y("parens");continue}if("["===U){if(!0!==n.nobracket&&W().includes("]"))Z("brackets");else{if(!0!==n.nobracket&&!0===n.strictBrackets)throw new SyntaxError(c("closing","]"));U="\\"+U}z({type:"bracket",value:U});continue}if("]"===U){if(!0===n.nobracket||G&&"bracket"===G.type&&1===G.value.length){z({type:"text",value:U,output:"\\"+U});continue}if(0===B.brackets){if(!0===n.strictBrackets)throw new SyntaxError(c("opening","["));z({type:"text",value:U,output:"\\"+U});continue}Y("brackets");const e=G.value.slice(1);if(!0===G.posix||"^"!==e[0]||e.includes("/")||(U="/"+U),G.value+=U,X({value:U}),!1===n.literalBrackets||r.hasRegexChars(e))continue;const t=r.escapeRegex(G.value);if(B.output=B.output.slice(0,-G.value.length),!0===n.literalBrackets){B.output+=t,G.value=t;continue}G.value=`(${A}${t}|${G.value})`,B.output+=G.value;continue}if("{"===U&&!0!==n.nobrace){Z("braces");const e={type:"brace",value:U,output:"(",outputIndex:B.output.length,tokensIndex:B.tokens.length};P.push(e),z(e);continue}if("}"===U){const e=P[P.length-1];if(!0===n.nobrace||!e){z({type:"text",value:U,output:U});continue}let t=")";if(!0===e.dots){const e=g.slice(),o=[];for(let t=e.length-1;t>=0&&(g.pop(),"brace"!==e[t].type);t--)"dots"!==e[t].type&&o.unshift(e[t].value);t=u(o,n),B.backtrack=!0}if(!0!==e.comma&&!0!==e.dots){const n=B.output.slice(0,e.outputIndex),o=B.tokens.slice(e.tokensIndex);e.value=e.output="\\{",U=t="\\}",B.output=n;for(const e of o)B.output+=e.output||e.value}z({type:"brace",value:U,output:t}),Y("braces"),P.pop();continue}if("|"===U){M.length>0&&M[M.length-1].conditions++,z({type:"text",value:U});continue}if(","===U){let e=U;const t=P[P.length-1];t&&"braces"===D[D.length-1]&&(t.comma=!0,e="|"),z({type:"comma",value:U,output:e});continue}if("/"===U){if("dot"===G.type&&B.index===B.start+1){B.start=B.index+1,B.consumed="",B.output="",g.pop(),G=h;continue}z({type:"slash",value:U,output:C});continue}if("."===U){if(B.braces>0&&"dot"===G.type){"."===G.value&&(G.output=_);const e=P[P.length-1];G.type="dots",G.output+=U,G.value+=U,e.dots=!0;continue}if(B.braces+B.parens===0&&"bos"!==G.type&&"slash"!==G.type){z({type:"text",value:U,output:_});continue}z({type:"dot",value:U,output:_});continue}if("?"===U){if(!(G&&"("===G.value)&&!0!==n.noextglob&&"("===K()&&"?"!==K(2)){V("qmark",U);continue}if(G&&"paren"===G.type){const e=K();let t=U;if("<"===e&&!r.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");("("===G.value&&!/[!=<:]/.test(e)||"<"===e&&!/<([!=]|\w+>)/.test(W()))&&(t="\\"+U),z({type:"text",value:U,output:t});continue}if(!0!==n.dot&&("slash"===G.type||"bos"===G.type)){z({type:"qmark",value:U,output:T});continue}z({type:"qmark",value:U,output:H});continue}if("!"===U){if(!0!==n.noextglob&&"("===K()&&("?"!==K(2)||!/[!=<:]/.test(K(3)))){V("negate",U);continue}if(!0!==n.nonegate&&0===B.index){q();continue}}if("+"===U){if(!0!==n.noextglob&&"("===K()&&"?"!==K(2)){V("plus",U);continue}if(G&&"("===G.value||!1===n.regex){z({type:"plus",value:U,output:E});continue}if(G&&("bracket"===G.type||"paren"===G.type||"brace"===G.type)||B.parens>0){z({type:"plus",value:U});continue}z({type:"plus",value:E});continue}if("@"===U){if(!0!==n.noextglob&&"("===K()&&"?"!==K(2)){z({type:"at",extglob:!0,value:U,output:""});continue}z({type:"text",value:U});continue}if("*"!==U){"$"!==U&&"^"!==U||(U="\\"+U);const e=i.exec(W());e&&(U+=e[0],B.index+=e[0].length),z({type:"text",value:U});continue}if(G&&("globstar"===G.type||!0===G.star)){G.type="star",G.star=!0,G.value+=U,G.output=I,B.backtrack=!0,B.globstar=!0,Q(U);continue}let t=W();if(!0!==n.noextglob&&/^\([^?]/.test(t)){V("star",U);continue}if("star"===G.type){if(!0===n.noglobstar){Q(U);continue}const o=G.prev,r=o.prev,a="slash"===o.type||"bos"===o.type,s=r&&("star"===r.type||"globstar"===r.type);if(!0===n.bash&&(!a||t[0]&&"/"!==t[0])){z({type:"star",value:U,output:""});continue}const i=B.braces>0&&("comma"===o.type||"brace"===o.type),l=M.length&&("pipe"===o.type||"paren"===o.type);if(!a&&"paren"!==o.type&&!i&&!l){z({type:"star",value:U,output:""});continue}for(;"/**"===t.slice(0,3);){const n=e[B.index+4];if(n&&"/"!==n)break;t=t.slice(3),Q("/**",3)}if("bos"===o.type&&j()){G.type="globstar",G.value+=U,G.output=O(n),B.output=G.output,B.globstar=!0,Q(U);continue}if("slash"===o.type&&"bos"!==o.prev.type&&!s&&j()){B.output=B.output.slice(0,-(o.output+G.output).length),o.output="(?:"+o.output,G.type="globstar",G.output=O(n)+(n.strictSlashes?")":"|$)"),G.value+=U,B.globstar=!0,B.output+=o.output+G.output,Q(U);continue}if("slash"===o.type&&"bos"!==o.prev.type&&"/"===t[0]){const e=void 0!==t[1]?"|$":"";B.output=B.output.slice(0,-(o.output+G.output).length),o.output="(?:"+o.output,G.type="globstar",G.output=`${O(n)}${C}|${C}${e})`,G.value+=U,B.output+=o.output+G.output,B.globstar=!0,Q(U+F()),z({type:"slash",value:"/",output:""});continue}if("bos"===o.type&&"/"===t[0]){G.type="globstar",G.value+=U,G.output=`(?:^|${C}|${O(n)}${C})`,B.output=G.output,B.globstar=!0,Q(U+F()),z({type:"slash",value:"/",output:""});continue}B.output=B.output.slice(0,-G.output.length),G.type="globstar",G.output=O(n),G.value+=U,B.output+=G.output,B.globstar=!0,Q(U);continue}const o={type:"star",value:U,output:I};!0!==n.bash?!G||"bracket"!==G.type&&"paren"!==G.type||!0!==n.regex?(B.index!==B.start&&"slash"!==G.type&&"dot"!==G.type||("dot"===G.type?(B.output+=S,G.output+=S):!0===n.dot?(B.output+=w,G.output+=w):(B.output+=$,G.output+=$),"*"!==K()&&(B.output+=b,G.output+=b)),z(o)):(o.output=U,z(o)):(o.output=".*?","bos"!==G.type&&"slash"!==G.type||(o.output=$+o.output),z(o))}for(;B.brackets>0;){if(!0===n.strictBrackets)throw new SyntaxError(c("closing","]"));B.output=r.escapeLast(B.output,"["),Y("brackets")}for(;B.parens>0;){if(!0===n.strictBrackets)throw new SyntaxError(c("closing",")"));B.output=r.escapeLast(B.output,"("),Y("parens")}for(;B.braces>0;){if(!0===n.strictBrackets)throw new SyntaxError(c("closing","}"));B.output=r.escapeLast(B.output,"{"),Y("braces")}if(!0===n.strictSlashes||"star"!==G.type&&"bracket"!==G.type||z({type:"maybe_slash",value:"",output:C+"?"}),!0===B.backtrack){B.output="";for(const e of B.tokens)B.output+=null!=e.output?e.output:e.value,e.suffix&&(B.output+=e.suffix)}return B};d.fastpaths=(e,t)=>{const n={...t},s="number"==typeof n.maxLength?Math.min(a,n.maxLength):a,i=e.length;if(i>s)throw new SyntaxError(`Input length: ${i}, exceeds maximum allowed length: ${s}`);e=p[e]||e;const l=r.isWindows(t),{DOT_LITERAL:u,SLASH_LITERAL:c,ONE_CHAR:d,DOTS_SLASH:f,NO_DOT:h,NO_DOTS:g,NO_DOTS_SLASH:A,STAR:y,START_ANCHOR:R}=o.globChars(l),m=n.dot?g:h,_=n.dot?A:h,E=n.capture?"":"?:";let C=!0===n.bash?".*?":y;n.capture&&(C=`(${C})`);const b=e=>!0===e.noglobstar?C:`(${E}(?:(?!${R}${e.dot?f:u}).)*?)`,x=e=>{switch(e){case"*":return`${m}${d}${C}`;case".*":return`${u}${d}${C}`;case"*.*":return`${m}${C}${u}${d}${C}`;case"*/*":return`${m}${C}${c}${d}${_}${C}`;case"**":return m+b(n);case"**/*":return`(?:${m}${b(n)}${c})?${_}${d}${C}`;case"**/*.*":return`(?:${m}${b(n)}${c})?${_}${C}${u}${d}${C}`;case"**/.*":return`(?:${m}${b(n)}${c})?${u}${d}${C}`;default:{const t=/^(.*?)\.(\w+)$/.exec(e);if(!t)return;const n=x(t[1]);if(!n)return;return n+u+t[2]}}},v=r.removePrefix(e,{negated:!1,prefix:""});let S=x(v);return S&&!0!==n.strictSlashes&&(S+=c+"?"),S},e.exports=d},828:(e,t,n)=>{const o=n(622),r=n(321),a=n(974),s=n(598),i=n(86),l=(e,t,n=!1)=>{if(Array.isArray(e)){const o=e.map(e=>l(e,t,n));return e=>{for(const t of o){const n=t(e);if(n)return n}return!1}}const o=(r=e)&&"object"==typeof r&&!Array.isArray(r)&&e.tokens&&e.input;var r;if(""===e||"string"!=typeof e&&!o)throw new TypeError("Expected pattern to be a non-empty string");const a=t||{},i=s.isWindows(t),p=o?l.compileRe(e,t):l.makeRe(e,t,!1,!0),u=p.state;delete p.state;let c=()=>!1;if(a.ignore){const e={...t,ignore:null,onMatch:null,onResult:null};c=l(a.ignore,e,n)}const d=(n,o=!1)=>{const{isMatch:r,match:s,output:d}=l.test(n,p,t,{glob:e,posix:i}),f={glob:e,state:u,regex:p,posix:i,input:n,output:d,match:s,isMatch:r};return"function"==typeof a.onResult&&a.onResult(f),!1===r?(f.isMatch=!1,!!o&&f):c(n)?("function"==typeof a.onIgnore&&a.onIgnore(f),f.isMatch=!1,!!o&&f):("function"==typeof a.onMatch&&a.onMatch(f),!o||f)};return n&&(d.state=u),d};l.test=(e,t,n,{glob:o,posix:r}={})=>{if("string"!=typeof e)throw new TypeError("Expected input to be a string");if(""===e)return{isMatch:!1,output:""};const a=n||{},i=a.format||(r?s.toPosixSlashes:null);let p=e===o,u=p&&i?i(e):e;return!1===p&&(u=i?i(e):e,p=u===o),!1!==p&&!0!==a.capture||(p=!0===a.matchBase||!0===a.basename?l.matchBase(e,t,n,r):t.exec(u)),{isMatch:Boolean(p),match:p,output:u}},l.matchBase=(e,t,n,r=s.isWindows(n))=>(t instanceof RegExp?t:l.makeRe(t,n)).test(o.basename(e)),l.isMatch=(e,t,n)=>l(t,n)(e),l.parse=(e,t)=>Array.isArray(e)?e.map(e=>l.parse(e,t)):a(e,{...t,fastpaths:!1}),l.scan=(e,t)=>r(e,t),l.compileRe=(e,t,n=!1,o=!1)=>{if(!0===n)return e.output;const r=t||{},a=r.contains?"":"^",s=r.contains?"":"$";let i=`${a}(?:${e.output})${s}`;e&&!0===e.negated&&(i=`^(?!${i}).*$`);const p=l.toRegex(i,t);return!0===o&&(p.state=e),p},l.makeRe=(e,t,n=!1,o=!1)=>{if(!e||"string"!=typeof e)throw new TypeError("Expected a non-empty string");const r=t||{};let s,i={negated:!1,fastpaths:!0},p="";return e.startsWith("./")&&(e=e.slice(2),p=i.prefix="./"),!1===r.fastpaths||"."!==e[0]&&"*"!==e[0]||(s=a.fastpaths(e,t)),void 0===s?(i=a(e,t),i.prefix=p+(i.prefix||"")):i.output=s,l.compileRe(i,t,n,o)},l.toRegex=(e,t)=>{try{const n=t||{};return new RegExp(e,n.flags||(n.nocase?"i":""))}catch(e){if(t&&!0===t.debug)throw e;return/$^/}},l.constants=i,e.exports=l},321:(e,t,n)=>{const o=n(598),{CHAR_ASTERISK:r,CHAR_AT:a,CHAR_BACKWARD_SLASH:s,CHAR_COMMA:i,CHAR_DOT:l,CHAR_EXCLAMATION_MARK:p,CHAR_FORWARD_SLASH:u,CHAR_LEFT_CURLY_BRACE:c,CHAR_LEFT_PARENTHESES:d,CHAR_LEFT_SQUARE_BRACKET:f,CHAR_PLUS:h,CHAR_QUESTION_MARK:g,CHAR_RIGHT_CURLY_BRACE:A,CHAR_RIGHT_PARENTHESES:y,CHAR_RIGHT_SQUARE_BRACKET:R}=n(86),m=e=>e===u||e===s,_=e=>{!0!==e.isPrefix&&(e.depth=e.isGlobstar?1/0:1)};e.exports=(e,t)=>{const n=t||{},E=e.length-1,C=!0===n.parts||!0===n.scanToEnd,b=[],x=[],v=[];let S,w,H=e,T=-1,L=0,k=0,O=!1,$=!1,N=!1,I=!1,B=!1,M=!1,P=!1,D=!1,U=!1,G=0,j={value:"",depth:0,isGlob:!1};const K=()=>T>=E,F=()=>(S=w,H.charCodeAt(++T));for(;T0&&(Q=H.slice(0,L),H=H.slice(L),k-=L),W&&!0===N&&k>0?(W=H.slice(0,k),X=H.slice(k)):!0===N?(W="",X=H):W=H,W&&""!==W&&"/"!==W&&W!==H&&m(W.charCodeAt(W.length-1))&&(W=W.slice(0,-1)),!0===n.unescape&&(X&&(X=o.removeBackslashes(X)),W&&!0===P&&(W=o.removeBackslashes(W)));const q={prefix:Q,input:e,start:L,base:W,glob:X,isBrace:O,isBracket:$,isGlob:N,isExtglob:I,isGlobstar:B,negated:D};if(!0===n.tokens&&(q.maxDepth=0,m(w)||x.push(j),q.tokens=x),!0===n.parts||!0===n.tokens){let t;for(let o=0;o{const o=n(622),r="win32"===process.platform,{REGEX_BACKSLASH:a,REGEX_REMOVE_BACKSLASH:s,REGEX_SPECIAL_CHARS:i,REGEX_SPECIAL_CHARS_GLOBAL:l}=n(86);t.isObject=e=>null!==e&&"object"==typeof e&&!Array.isArray(e),t.hasRegexChars=e=>i.test(e),t.isRegexChar=e=>1===e.length&&t.hasRegexChars(e),t.escapeRegex=e=>e.replace(l,"\\$1"),t.toPosixSlashes=e=>e.replace(a,"/"),t.removeBackslashes=e=>e.replace(s,e=>"\\"===e?"":e),t.supportsLookbehinds=()=>{const e=process.version.slice(1).split(".").map(Number);return 3===e.length&&e[0]>=9||8===e[0]&&e[1]>=10},t.isWindows=e=>e&&"boolean"==typeof e.windows?e.windows:!0===r||"\\"===o.sep,t.escapeLast=(e,n,o)=>{const r=e.lastIndexOf(n,o);return-1===r?e:"\\"===e[r-1]?t.escapeLast(e,n,r-1):`${e.slice(0,r)}\\${e.slice(r)}`},t.removePrefix=(e,t={})=>{let n=e;return n.startsWith("./")&&(n=n.slice(2),t.prefix="./"),n},t.wrapOutput=(e,t={},n={})=>{let o=`${n.contains?"":"^"}(?:${e})${n.contains?"":"$"}`;return!0===t.negated&&(o=`(?:^(?!${o}).*$)`),o}},615:(e,t,n)=>{ +/*! + * to-regex-range + * + * Copyright (c) 2015-present, Jon Schlinkert. + * Released under the MIT License. + */ +const o=n(761),r=(e,t,n)=>{if(!1===o(e))throw new TypeError("toRegexRange: expected the first argument to be a number");if(void 0===t||e===t)return String(e);if(!1===o(t))throw new TypeError("toRegexRange: expected the second argument to be a number.");let a={relaxZeros:!0,...n};"boolean"==typeof a.strictZeros&&(a.relaxZeros=!1===a.strictZeros);let l=e+":"+t+"="+String(a.relaxZeros)+String(a.shorthand)+String(a.capture)+String(a.wrap);if(r.cache.hasOwnProperty(l))return r.cache[l].result;let p=Math.min(e,t),u=Math.max(e,t);if(1===Math.abs(p-u)){let n=e+"|"+t;return a.capture?`(${n})`:!1===a.wrap?n:`(?:${n})`}let c=h(e)||h(t),d={min:e,max:t,a:p,b:u},f=[],g=[];if(c&&(d.isPadded=c,d.maxLen=String(d.max).length),p<0){g=s(u<0?Math.abs(u):1,Math.abs(p),d,a),p=d.a=0}return u>=0&&(f=s(p,u,d,a)),d.negatives=g,d.positives=f,d.result=function(e,t,n){let o=i(e,t,"-",!1,n)||[],r=i(t,e,"",!1,n)||[],a=i(e,t,"-?",!0,n)||[];return o.concat(a).concat(r).join("|")}(g,f,a),!0===a.capture?d.result=`(${d.result})`:!1!==a.wrap&&f.length+g.length>1&&(d.result=`(?:${d.result})`),r.cache[l]=d,d.result};function a(e,t,n){if(e===t)return{pattern:e,count:[],digits:0};let o=function(e,t){let n=[];for(let o=0;o1&&r.count.pop(),r.count.push(l.count[0]),r.string=r.pattern+d(r.count),p=t+1)}return i}function i(e,t,n,o,r){let a=[];for(let r of e){let{string:e}=r;o||p(t,"string",e)||a.push(n+e),o&&p(t,"string",e)&&a.push(n+e)}return a}function l(e,t){return e>t?1:t>e?-1:0}function p(e,t,n){return e.some(e=>e[t]===n)}function u(e,t){return Number(String(e).slice(0,-t)+"9".repeat(t))}function c(e,t){return e-e%Math.pow(10,t)}function d(e){let[t=0,n=""]=e;return n||t>1?`{${t+(n?","+n:"")}}`:""}function f(e,t,n){return`[${e}${t-e==1?"":"-"}${t}]`}function h(e){return/^-?(0+)\d/.test(e)}function g(e,t,n){if(!t.isPadded)return e;let o=Math.abs(t.maxLen-String(e).length),r=!1!==n.relaxZeros;switch(o){case 0:return"";case 1:return r?"0?":"0";case 2:return r?"0{0,2}":"00";default:return r?`0{0,${o}}`:`0{${o}}`}}r.cache={},r.clearCache=()=>r.cache={},e.exports=r},594:e=>{e.exports=require("@yarnpkg/cli")},966:e=>{e.exports=require("@yarnpkg/core")},42:e=>{e.exports=require("clipanion")},87:e=>{e.exports=require("os")},622:e=>{e.exports=require("path")},669:e=>{e.exports=require("util")},440:e=>{e.exports=require("yup")}},t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={exports:{}};return e[o](r,r.exports,n),r.exports}return n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n(115)})(); +return plugin; +} +}; \ No newline at end of file diff --git a/.yarnrc.yml b/.yarnrc.yml index 367287e1..11777f05 100644 --- a/.yarnrc.yml +++ b/.yarnrc.yml @@ -1,8 +1,11 @@ nodeLinker: node-modules +npmAuthToken: "${NPM_TOKEN-''}" + plugins: - path: .yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs spec: "@yarnpkg/plugin-interactive-tools" + - path: .yarn/plugins/@yarnpkg/plugin-workspace-tools.cjs + spec: "@yarnpkg/plugin-workspace-tools" yarnPath: .yarn/releases/yarn-2.3.3.cjs -npmAuthToken: "${NPM_TOKEN-''}" diff --git a/README.md b/README.md deleted file mode 100644 index 6b513de2..00000000 --- a/README.md +++ /dev/null @@ -1,71 +0,0 @@ -# react-responsive-modal - -[![npm version](https://img.shields.io/npm/v/react-responsive-modal.svg)](https://www.npmjs.com/package/react-responsive-modal) -[![npm downloads per month](https://img.shields.io/npm/dm/react-responsive-modal.svg)](https://www.npmjs.com/package/react-responsive-modal) -[![codecov](https://img.shields.io/codecov/c/github/pradel/react-responsive-modal/master.svg)](https://codecov.io/gh/pradel/react-responsive-modal) - -A simple responsive and accessible react modal. - -- Focus trap inside the modal. -- Centered modals. -- Scrolling modals. -- Multiple modals. -- Accessible modals. -- Easily customizable via props. - -## Documentation - -- [Getting started](https://react-responsive-modal.leopradel.com/) - - [Installation](https://react-responsive-modal.leopradel.com/#installation) - - [Usage](https://react-responsive-modal.leopradel.com/#usage) - - [Props](https://react-responsive-modal.leopradel.com/#props) - - [Licence](https://react-responsive-modal.leopradel.com/#license) -- [Examples](https://react-responsive-modal.leopradel.com/examples) - - [Centered modal](https://react-responsive-modal.leopradel.com/examples#centered-modal) - - [Multiple modal](https://react-responsive-modal.leopradel.com/examples#multiple-modal) - - [Custom styling](https://react-responsive-modal.leopradel.com/examples#custom-styling) - - [Custom animation](https://react-responsive-modal.leopradel.com/examples#custom-animation) - - [Custom container](https://react-responsive-modal.leopradel.com/examples#custom-container) - -## Installation - -With npm: `npm install react-responsive-modal --save` - -Or with yarn: `yarn add react-responsive-modal` - -## Usage - -[![Edit react-responsive-modal](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/9jxp669j2o) - -```javascript -import React, { useState } from 'react'; -import ReactDOM from 'react-dom'; -import 'react-responsive-modal/styles.css'; -import { Modal } from 'react-responsive-modal'; - -const App = () => { - const [open, setOpen] = useState(false); - - const onOpenModal = () => setOpen(true); - const onCloseModal = () => setOpen(false); - - return ( -
- - -

Simple centered modal

-
-
- ); -}; - -ReactDOM.render(, document.getElementById('app')); -``` - -## Props - -Check the documentation: https://react-responsive-modal.leopradel.com/#props. - -## License - -MIT © [Léo Pradel](https://www.leopradel.com/) diff --git a/README.md b/README.md new file mode 120000 index 00000000..dfd5ce29 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +./react-responsive-modal/README.md \ No newline at end of file diff --git a/netlify.toml b/netlify.toml index 76e5aff8..b7180ab5 100644 --- a/netlify.toml +++ b/netlify.toml @@ -1,7 +1,7 @@ [build] - publish = ".docz/dist" - command = "yarn docz:build" + publish = "react-responsive-modal/.docz/dist" + command = "yarn workspace react-responsive-modal docz:build" [build.environment] NODE_VERSION = "12" diff --git a/package.json b/package.json index 55c0148d..7cbeb1eb 100644 --- a/package.json +++ b/package.json @@ -1,99 +1,25 @@ { - "name": "react-responsive-modal", - "version": "5.2.6", - "description": "A simple responsive and accessible react modal", - "license": "MIT", - "main": "dist/index.js", - "module": "dist/react-responsive-modal.esm.js", - "typings": "dist/index.d.ts", + "private": true, "scripts": { - "start": "tsdx watch", - "build": "tsdx build", - "test": "tsdx test --passWithNoTests", - "lint": "tsdx lint", - "prepare": "tsdx build", - "docz:dev": "docz dev", - "docz:build": "docz build", - "size": "size-limit", "prettier": "prettier --write \"**/*.{js,ts,tsx,css,scss,json,md,mdx}\"" }, - "files": [ - "dist", - "src", - "styles.css" + "workspaces": [ + "react-responsive-modal" ], - "jest": { - "setupFilesAfterEnv": [ - "./__tests__/setupTests.ts" - ], - "modulePathIgnorePatterns": [ - "cypress" - ], - "coveragePathIgnorePatterns": [ - "src/lib" - ] - }, "prettier": { "singleQuote": true }, "husky": { "hooks": { - "pre-commit": "tsdx lint" - } - }, - "keywords": [ - "react", - "responsive", - "modal", - "mobile", - "flex" - ], - "repository": "git+https://github.com/pradel/react-responsive-modal.git", - "author": "Léo Pradel", - "bugs": { - "url": "https://github.com/pradel/react-responsive-modal/issues" - }, - "homepage": "https://react-responsive-modal.leopradel.com/", - "funding": "https://github.com/sponsors/pradel", - "size-limit": [ - { - "path": "dist/react-responsive-modal.cjs.production.min.js", - "limit": "3.3 KB" - }, - { - "path": "dist/react-responsive-modal.esm.js", - "limit": "3.3 KB" + "pre-commit": "lint-staged" } - ], - "dependencies": { - "classnames": "^2.2.6", - "no-scroll": "^2.1.1" }, - "peerDependencies": { - "react": "^16.8.0 || ^17", - "react-dom": "^16.8.0 || ^17" + "lint-staged": { + "*.{js,ts,tsx,css,scss,json,md,mdx}": "prettier --write" }, "devDependencies": { - "@size-limit/preset-small-lib": "4.7.0", - "@testing-library/jest-dom": "5.11.5", - "@testing-library/react": "11.1.1", - "@types/classnames": "2.2.11", - "@types/no-scroll": "2.1.0", - "@types/node": "14.14.6", - "@types/react": "16.9.56", - "@types/react-dom": "16.9.9", - "@types/react-transition-group": "4.4.0", - "cypress": "5.5.0", - "docz": "2.3.1", - "gatsby": "2.23.11", - "gatsby-theme-docz": "2.3.1", "husky": "4.3.0", - "prettier": "2.1.2", - "react": "16.14.0", - "react-dom": "16.14.0", - "size-limit": "4.7.0", - "tsdx": "0.14.1", - "tslib": "2.0.3", - "typescript": "4.0.5" + "lint-staged": "10.5.1", + "prettier": "2.1.2" } } diff --git a/react-responsive-modal/README.md b/react-responsive-modal/README.md new file mode 100644 index 00000000..6b513de2 --- /dev/null +++ b/react-responsive-modal/README.md @@ -0,0 +1,71 @@ +# react-responsive-modal + +[![npm version](https://img.shields.io/npm/v/react-responsive-modal.svg)](https://www.npmjs.com/package/react-responsive-modal) +[![npm downloads per month](https://img.shields.io/npm/dm/react-responsive-modal.svg)](https://www.npmjs.com/package/react-responsive-modal) +[![codecov](https://img.shields.io/codecov/c/github/pradel/react-responsive-modal/master.svg)](https://codecov.io/gh/pradel/react-responsive-modal) + +A simple responsive and accessible react modal. + +- Focus trap inside the modal. +- Centered modals. +- Scrolling modals. +- Multiple modals. +- Accessible modals. +- Easily customizable via props. + +## Documentation + +- [Getting started](https://react-responsive-modal.leopradel.com/) + - [Installation](https://react-responsive-modal.leopradel.com/#installation) + - [Usage](https://react-responsive-modal.leopradel.com/#usage) + - [Props](https://react-responsive-modal.leopradel.com/#props) + - [Licence](https://react-responsive-modal.leopradel.com/#license) +- [Examples](https://react-responsive-modal.leopradel.com/examples) + - [Centered modal](https://react-responsive-modal.leopradel.com/examples#centered-modal) + - [Multiple modal](https://react-responsive-modal.leopradel.com/examples#multiple-modal) + - [Custom styling](https://react-responsive-modal.leopradel.com/examples#custom-styling) + - [Custom animation](https://react-responsive-modal.leopradel.com/examples#custom-animation) + - [Custom container](https://react-responsive-modal.leopradel.com/examples#custom-container) + +## Installation + +With npm: `npm install react-responsive-modal --save` + +Or with yarn: `yarn add react-responsive-modal` + +## Usage + +[![Edit react-responsive-modal](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/9jxp669j2o) + +```javascript +import React, { useState } from 'react'; +import ReactDOM from 'react-dom'; +import 'react-responsive-modal/styles.css'; +import { Modal } from 'react-responsive-modal'; + +const App = () => { + const [open, setOpen] = useState(false); + + const onOpenModal = () => setOpen(true); + const onCloseModal = () => setOpen(false); + + return ( +
+ + +

Simple centered modal

+
+
+ ); +}; + +ReactDOM.render(, document.getElementById('app')); +``` + +## Props + +Check the documentation: https://react-responsive-modal.leopradel.com/#props. + +## License + +MIT © [Léo Pradel](https://www.leopradel.com/) diff --git a/__tests__/__snapshots__/index.test.tsx.snap b/react-responsive-modal/__tests__/__snapshots__/index.test.tsx.snap similarity index 100% rename from __tests__/__snapshots__/index.test.tsx.snap rename to react-responsive-modal/__tests__/__snapshots__/index.test.tsx.snap diff --git a/__tests__/index.test.tsx b/react-responsive-modal/__tests__/index.test.tsx similarity index 100% rename from __tests__/index.test.tsx rename to react-responsive-modal/__tests__/index.test.tsx diff --git a/__tests__/setupTests.ts b/react-responsive-modal/__tests__/setupTests.ts similarity index 100% rename from __tests__/setupTests.ts rename to react-responsive-modal/__tests__/setupTests.ts diff --git a/cypress.json b/react-responsive-modal/cypress.json similarity index 100% rename from cypress.json rename to react-responsive-modal/cypress.json diff --git a/cypress/integration/modal.spec.ts b/react-responsive-modal/cypress/integration/modal.spec.ts similarity index 100% rename from cypress/integration/modal.spec.ts rename to react-responsive-modal/cypress/integration/modal.spec.ts diff --git a/cypress/plugins/index.js b/react-responsive-modal/cypress/plugins/index.js similarity index 99% rename from cypress/plugins/index.js rename to react-responsive-modal/cypress/plugins/index.js index aa9918d2..8dd144a6 100644 --- a/cypress/plugins/index.js +++ b/react-responsive-modal/cypress/plugins/index.js @@ -18,4 +18,4 @@ module.exports = (on, config) => { // `on` is used to hook into various events Cypress emits // `config` is the resolved Cypress config -} +}; diff --git a/cypress/support/commands.js b/react-responsive-modal/cypress/support/commands.js similarity index 100% rename from cypress/support/commands.js rename to react-responsive-modal/cypress/support/commands.js diff --git a/cypress/support/index.js b/react-responsive-modal/cypress/support/index.js similarity index 96% rename from cypress/support/index.js rename to react-responsive-modal/cypress/support/index.js index d68db96d..37a498fb 100644 --- a/cypress/support/index.js +++ b/react-responsive-modal/cypress/support/index.js @@ -14,7 +14,7 @@ // *********************************************************** // Import commands.js using ES2015 syntax: -import './commands' +import './commands'; // Alternatively you can use CommonJS syntax: // require('./commands') diff --git a/cypress/tsconfig.json b/react-responsive-modal/cypress/tsconfig.json similarity index 100% rename from cypress/tsconfig.json rename to react-responsive-modal/cypress/tsconfig.json diff --git a/docs/docs.css b/react-responsive-modal/docs/docs.css similarity index 100% rename from docs/docs.css rename to react-responsive-modal/docs/docs.css diff --git a/docs/examples.mdx b/react-responsive-modal/docs/examples.mdx similarity index 100% rename from docs/examples.mdx rename to react-responsive-modal/docs/examples.mdx diff --git a/docs/examples/custom-animation.css b/react-responsive-modal/docs/examples/custom-animation.css similarity index 100% rename from docs/examples/custom-animation.css rename to react-responsive-modal/docs/examples/custom-animation.css diff --git a/docs/examples/custom-styling.css b/react-responsive-modal/docs/examples/custom-styling.css similarity index 100% rename from docs/examples/custom-styling.css rename to react-responsive-modal/docs/examples/custom-styling.css diff --git a/docs/index.mdx b/react-responsive-modal/docs/index.mdx similarity index 100% rename from docs/index.mdx rename to react-responsive-modal/docs/index.mdx diff --git a/doczrc.js b/react-responsive-modal/doczrc.js similarity index 100% rename from doczrc.js rename to react-responsive-modal/doczrc.js diff --git a/gatsby-config.js b/react-responsive-modal/gatsby-config.js similarity index 100% rename from gatsby-config.js rename to react-responsive-modal/gatsby-config.js diff --git a/react-responsive-modal/package.json b/react-responsive-modal/package.json new file mode 100644 index 00000000..2aaf74a6 --- /dev/null +++ b/react-responsive-modal/package.json @@ -0,0 +1,90 @@ +{ + "name": "react-responsive-modal", + "version": "5.2.6", + "description": "A simple responsive and accessible react modal", + "license": "MIT", + "main": "dist/index.js", + "module": "dist/react-responsive-modal.esm.js", + "typings": "dist/index.d.ts", + "scripts": { + "start": "tsdx watch", + "build": "tsdx build", + "test": "tsdx test --passWithNoTests", + "lint": "tsdx lint", + "prepare": "tsdx build", + "docz:dev": "docz dev", + "docz:build": "docz build", + "size": "size-limit" + }, + "files": [ + "dist", + "src", + "styles.css" + ], + "jest": { + "setupFilesAfterEnv": [ + "./__tests__/setupTests.ts" + ], + "modulePathIgnorePatterns": [ + "cypress" + ], + "coveragePathIgnorePatterns": [ + "src/lib" + ] + }, + "keywords": [ + "react", + "responsive", + "modal", + "mobile", + "flex" + ], + "repository": "git+https://github.com/pradel/react-responsive-modal.git", + "author": "Léo Pradel", + "bugs": { + "url": "https://github.com/pradel/react-responsive-modal/issues" + }, + "homepage": "https://react-responsive-modal.leopradel.com/", + "funding": "https://github.com/sponsors/pradel", + "size-limit": [ + { + "path": "dist/react-responsive-modal.cjs.production.min.js", + "limit": "3.3 KB" + }, + { + "path": "dist/react-responsive-modal.esm.js", + "limit": "3.3 KB" + } + ], + "dependencies": { + "classnames": "^2.2.6", + "no-scroll": "^2.1.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17", + "react-dom": "^16.8.0 || ^17" + }, + "devDependencies": { + "@size-limit/preset-small-lib": "4.7.0", + "@testing-library/jest-dom": "5.11.5", + "@testing-library/react": "11.1.1", + "@types/classnames": "2.2.11", + "@types/no-scroll": "2.1.0", + "@types/node": "14.14.6", + "@types/react": "16.9.56", + "@types/react-dom": "16.9.9", + "@types/react-transition-group": "4.4.0", + "cypress": "5.5.0", + "docz": "2.3.1", + "gatsby": "2.23.11", + "gatsby-theme-docz": "2.3.1", + "husky": "4.3.0", + "prettier": "2.1.2", + "react": "16.14.0", + "react-dom": "16.14.0", + "size-limit": "4.7.0", + "tsdx": "0.14.1", + "tslib": "2.0.3", + "typescript": "4.0.5" + } +} diff --git a/src/CloseIcon.tsx b/react-responsive-modal/src/CloseIcon.tsx similarity index 100% rename from src/CloseIcon.tsx rename to react-responsive-modal/src/CloseIcon.tsx diff --git a/src/FocusTrap.tsx b/react-responsive-modal/src/FocusTrap.tsx similarity index 100% rename from src/FocusTrap.tsx rename to react-responsive-modal/src/FocusTrap.tsx diff --git a/src/index.tsx b/react-responsive-modal/src/index.tsx similarity index 100% rename from src/index.tsx rename to react-responsive-modal/src/index.tsx diff --git a/src/lib/focusTrapJs.ts b/react-responsive-modal/src/lib/focusTrapJs.ts similarity index 100% rename from src/lib/focusTrapJs.ts rename to react-responsive-modal/src/lib/focusTrapJs.ts diff --git a/src/modalManager.ts b/react-responsive-modal/src/modalManager.ts similarity index 100% rename from src/modalManager.ts rename to react-responsive-modal/src/modalManager.ts diff --git a/src/utils.ts b/react-responsive-modal/src/utils.ts similarity index 100% rename from src/utils.ts rename to react-responsive-modal/src/utils.ts diff --git a/styles.css b/react-responsive-modal/styles.css similarity index 100% rename from styles.css rename to react-responsive-modal/styles.css diff --git a/tsconfig.json b/react-responsive-modal/tsconfig.json similarity index 100% rename from tsconfig.json rename to react-responsive-modal/tsconfig.json diff --git a/yarn.lock b/yarn.lock index db0a5b96..828788f4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4789,6 +4789,13 @@ __metadata: languageName: node linkType: hard +"ansi-colors@npm:^4.1.1": + version: 4.1.1 + resolution: "ansi-colors@npm:4.1.1" + checksum: 50d8dfbce25602caea1b170ecf4c71c4c9c58d2d1e3186fb5712848c0610d05fe60b8bb6a9eaebd9b54f1db3baf6f603e04214cce597cc7799bc9f47fd9a797a + languageName: node + linkType: hard + "ansi-escapes@npm:^3.0.0, ansi-escapes@npm:^3.1.0, ansi-escapes@npm:^3.2.0": version: 3.2.0 resolution: "ansi-escapes@npm:3.2.0" @@ -4796,7 +4803,7 @@ __metadata: languageName: node linkType: hard -"ansi-escapes@npm:^4.2.1": +"ansi-escapes@npm:^4.2.1, ansi-escapes@npm:^4.3.0": version: 4.3.1 resolution: "ansi-escapes@npm:4.3.1" dependencies: @@ -7257,6 +7264,13 @@ __metadata: languageName: node linkType: hard +"commander@npm:^6.2.0": + version: 6.2.0 + resolution: "commander@npm:6.2.0" + checksum: c78501cd98e6ad66839004adc27940f5fc1a0102b306fbbc177965101d586cf6dd2e01bdffd64f99f2d4862101f24e602e3e4baa641b6f6a11c01ec5c900e412 + languageName: node + linkType: hard + "commander@npm:~2.19.0": version: 2.19.0 resolution: "commander@npm:2.19.0" @@ -8301,6 +8315,18 @@ __metadata: languageName: node linkType: hard +"debug@npm:^4.2.0": + version: 4.3.0 + resolution: "debug@npm:4.3.0" + dependencies: + ms: 2.1.2 + peerDependenciesMeta: + supports-color: + optional: true + checksum: 847d2760d1493cfaef53fb67d8943c6afaba30472d7527450c19919d230dde04f2275dd8dd5c2874c7103787c190d3b5d3dbc2ee7596a12d853a2ce35c4b8b1b + languageName: node + linkType: hard + "debug@npm:~4.1.0": version: 4.1.1 resolution: "debug@npm:4.1.1" @@ -8352,6 +8378,13 @@ __metadata: languageName: node linkType: hard +"dedent@npm:^0.7.0": + version: 0.7.0 + resolution: "dedent@npm:0.7.0" + checksum: 05c18541a4b932006a65eccaf03d68ac60552981db424f39f1ca4bebf5beaa53d318eadbb4dc0be24232844e69d1140763a7ada94559b2cb7771a47c0a829aeb + languageName: node + linkType: hard + "deep-equal@npm:^1.0.1, deep-equal@npm:^1.1.0": version: 1.1.1 resolution: "deep-equal@npm:1.1.1" @@ -9206,6 +9239,15 @@ __metadata: languageName: node linkType: hard +"enquirer@npm:^2.3.6": + version: 2.3.6 + resolution: "enquirer@npm:2.3.6" + dependencies: + ansi-colors: ^4.1.1 + checksum: e249bb97bf7d5a91d51081547ea5aa1d849604e5de74feff2c48f7174fc6c9dfcfeea42ef5536e9a3be58964a248c322d6897269ae7bba3e1b6d24f152d9d685 + languageName: node + linkType: hard + "entities@npm:^1.1.1, entities@npm:~1.1.1": version: 1.1.2 resolution: "entities@npm:1.1.2" @@ -9906,7 +9948,7 @@ __metadata: languageName: node linkType: hard -"execa@npm:^4.0.3": +"execa@npm:^4.0.3, execa@npm:^4.1.0": version: 4.1.0 resolution: "execa@npm:4.1.0" dependencies: @@ -10360,7 +10402,7 @@ __metadata: languageName: node linkType: hard -"figures@npm:^3.0.0": +"figures@npm:^3.0.0, figures@npm:^3.2.0": version: 3.2.0 resolution: "figures@npm:3.2.0" dependencies: @@ -11434,6 +11476,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"get-own-enumerable-property-symbols@npm:^3.0.0": + version: 3.0.2 + resolution: "get-own-enumerable-property-symbols@npm:3.0.2" + checksum: 23f13946c768d9803a8e072ba13a4250528ced6bd5af4b4b31306eb197281f01a6426936b24b16725ff0e55f9097475296e4bcdb6d33455989683c3d385079ce + languageName: node + linkType: hard + "get-package-type@npm:^0.1.0": version: 0.1.0 resolution: "get-package-type@npm:0.1.0" @@ -13430,7 +13479,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"is-obj@npm:^1.0.0": +"is-obj@npm:^1.0.0, is-obj@npm:^1.0.1": version: 1.0.1 resolution: "is-obj@npm:1.0.1" checksum: 0913a3bb6424d6bfb37e2daa5ef4a5d31a388b0f5a53f36bbe1fd95f1264efe92c6fd87a5c3f41e25b3db42fe60924fe6ae1f0efb274375b090fd093a5301ccf @@ -13558,6 +13607,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"is-regexp@npm:^1.0.0": + version: 1.0.0 + resolution: "is-regexp@npm:1.0.0" + checksum: b6c3ea4f405d31e20c9612f0480b5deb86d71477f3e08c78a889a8b7b4c9f9e9944b2621b997bede7b94b6f8607dc8333b521b6b69a2f8ad97c80d9eb47d04a9 + languageName: node + linkType: hard + "is-relative-url@npm:^3.0.0": version: 3.0.0 resolution: "is-relative-url@npm:3.0.0" @@ -14712,6 +14768,31 @@ fsevents@^1.2.7: languageName: node linkType: hard +"lint-staged@npm:10.5.1": + version: 10.5.1 + resolution: "lint-staged@npm:10.5.1" + dependencies: + chalk: ^4.1.0 + cli-truncate: ^2.1.0 + commander: ^6.2.0 + cosmiconfig: ^7.0.0 + debug: ^4.2.0 + dedent: ^0.7.0 + enquirer: ^2.3.6 + execa: ^4.1.0 + listr2: ^3.2.2 + log-symbols: ^4.0.0 + micromatch: ^4.0.2 + normalize-path: ^3.0.0 + please-upgrade-node: ^3.2.0 + string-argv: 0.3.1 + stringify-object: ^3.3.0 + bin: + lint-staged: bin/lint-staged.js + checksum: d22748dde5117c1d63e6829a73cf5755b4b99b5c93adaf53d1842941bf8b415d18577fe58291c4e44d40446e05400fe7cafe88727bcd61ef2837840406b89496 + languageName: node + linkType: hard + "listr-silent-renderer@npm:^1.1.1": version: 1.1.1 resolution: "listr-silent-renderer@npm:1.1.1" @@ -14749,6 +14830,24 @@ fsevents@^1.2.7: languageName: node linkType: hard +"listr2@npm:^3.2.2": + version: 3.2.2 + resolution: "listr2@npm:3.2.2" + dependencies: + chalk: ^4.1.0 + cli-truncate: ^2.1.0 + figures: ^3.2.0 + indent-string: ^4.0.0 + log-update: ^4.0.0 + p-map: ^4.0.0 + rxjs: ^6.6.3 + through: ^2.3.8 + peerDependencies: + enquirer: ">= 2.3.0 < 3" + checksum: e4cccac610bc18cf75f1248f599ce6fb9637e481dc8ebca480c84b6a57802f580a2df2915b54acaa4268dfcc42a87bb6c86bd7ec5cee793e4df8ee1c8f0822ff + languageName: node + linkType: hard + "listr@npm:0.14.3, listr@npm:^0.14.3": version: 0.14.3 resolution: "listr@npm:0.14.3" @@ -15156,6 +15255,18 @@ fsevents@^1.2.7: languageName: node linkType: hard +"log-update@npm:^4.0.0": + version: 4.0.0 + resolution: "log-update@npm:4.0.0" + dependencies: + ansi-escapes: ^4.3.0 + cli-cursor: ^3.1.0 + slice-ansi: ^4.0.0 + wrap-ansi: ^6.2.0 + checksum: 65ee082f30570fb315a0f674cccef4d16ef5a7c9d2651a65099e665f0adbf848af5e4f9e580b6e81d5677a4df3d7ea06ff8118fe8428a570a4a387875bb8210c + languageName: node + linkType: hard + "loglevel@npm:^1.6.8": version: 1.6.8 resolution: "loglevel@npm:1.6.8" @@ -17068,6 +17179,15 @@ fsevents@^1.2.7: languageName: node linkType: hard +"p-map@npm:^4.0.0": + version: 4.0.0 + resolution: "p-map@npm:4.0.0" + dependencies: + aggregate-error: ^3.0.0 + checksum: d51e630d72b7c38bc9e396710e7a068f0b813fe4db6f4a2d1ce2972e7fa11142c763c3aa39bcfd77c0133688c1ebfdd9b38fa3ac4c6ada20b62df26239c5c0e4 + languageName: node + linkType: hard + "p-queue@npm:^5.0.0": version: 5.0.0 resolution: "p-queue@npm:5.0.0" @@ -18935,9 +19055,9 @@ fsevents@^1.2.7: languageName: node linkType: hard -"react-responsive-modal@workspace:.": +"react-responsive-modal@workspace:react-responsive-modal": version: 0.0.0-use.local - resolution: "react-responsive-modal@workspace:." + resolution: "react-responsive-modal@workspace:react-responsive-modal" dependencies: "@size-limit/preset-small-lib": 4.7.0 "@testing-library/jest-dom": 5.11.5 @@ -20140,6 +20260,16 @@ resolve@^1.10.0: languageName: node linkType: hard +"root-workspace-0b6124@workspace:.": + version: 0.0.0-use.local + resolution: "root-workspace-0b6124@workspace:." + dependencies: + husky: 4.3.0 + lint-staged: 10.5.1 + prettier: 2.1.2 + languageName: unknown + linkType: soft + "rsvp@npm:^4.8.4": version: 4.8.5 resolution: "rsvp@npm:4.8.5" @@ -20193,7 +20323,7 @@ resolve@^1.10.0: languageName: node linkType: hard -"rxjs@npm:^6.3.3": +"rxjs@npm:^6.3.3, rxjs@npm:^6.6.3": version: 6.6.3 resolution: "rxjs@npm:6.6.3" dependencies: @@ -20774,6 +20904,17 @@ resolve@^1.10.0: languageName: node linkType: hard +"slice-ansi@npm:^4.0.0": + version: 4.0.0 + resolution: "slice-ansi@npm:4.0.0" + dependencies: + ansi-styles: ^4.0.0 + astral-regex: ^2.0.0 + is-fullwidth-code-point: ^3.0.0 + checksum: f411aa051802605c3dc8523edee42d39ef59d7c36e6bef6bf1e61d9d2a83894187f6af56911a43ec8e58b921996722d75b354a4c3050b924426ffd1b05da33f9 + languageName: node + linkType: hard + "slugify@npm:^1.4.2": version: 1.4.2 resolution: "slugify@npm:1.4.2" @@ -21296,6 +21437,13 @@ resolve@^1.10.0: languageName: node linkType: hard +"string-argv@npm:0.3.1": + version: 0.3.1 + resolution: "string-argv@npm:0.3.1" + checksum: 002a6902698eff6bd463ddd2b03864bf9be08a1359879243d94d3906ebbe984ff355d73224064be7504d20262eadb06897b3d40b5d7cefccacc69c9dc45c8d0e + languageName: node + linkType: hard + "string-length@npm:^3.1.0": version: 3.1.0 resolution: "string-length@npm:3.1.0" @@ -21495,6 +21643,17 @@ resolve@^1.10.0: languageName: node linkType: hard +"stringify-object@npm:^3.3.0": + version: 3.3.0 + resolution: "stringify-object@npm:3.3.0" + dependencies: + get-own-enumerable-property-symbols: ^3.0.0 + is-obj: ^1.0.1 + is-regexp: ^1.0.0 + checksum: 4b0a6802f0294a3a340f31822a0802a4945f12b0823e640c9a3dd64b487abf0a0e7099b43d6133a9aa28a9b99ffe187ee5e066f0798ea60019c87e156bcaf6d3 + languageName: node + linkType: hard + "strip-ansi@npm:3.0.1, strip-ansi@npm:^3, strip-ansi@npm:^3.0.0, strip-ansi@npm:^3.0.1": version: 3.0.1 resolution: "strip-ansi@npm:3.0.1" @@ -21971,7 +22130,7 @@ resolve@^1.10.0: languageName: node linkType: hard -"through@npm:^2.3.6": +"through@npm:^2.3.6, through@npm:^2.3.8": version: 2.3.8 resolution: "through@npm:2.3.8" checksum: 918d9151680b5355990011eb8c4b02e8cb8cf6e9fb6ea3d3e5a1faa688343789e261634ae35de4ea9167ab029d1e7bac6af2fe61b843931768d405fdc3e8897c