From a10dab16e60f6329bb45c7babe481c16b5b13f56 Mon Sep 17 00:00:00 2001
From: Julian Gonggrijp
Date: Thu, 27 Jul 2023 22:58:02 +0200
Subject: [PATCH 01/26] Warn about setting the model id in the defaults (fix
#4205)
---
index.html | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/index.html b/index.html
index 26df23866..088c10f28 100644
--- a/index.html
+++ b/index.html
@@ -1404,6 +1404,17 @@ Backbone.Model
Instead, define defaults as a function.
+
+ In nearly all cases, the defaults should not set a value for the
+ model’s idAttribute. Doing
+ so would likely prevent an instance of Backbone.Collection from
+ correctly identifying model hashes and is almost certainly a mistake. If
+ you know what you are doing and you really must set the model id in
+ the defaults, make sure that you either (a) never add instances of the
+ model class to a collection or (b) define the defaults as a function that
+ returns a different, universally unique id on every invocation.
+
+
model.toJSON([options])
From 2233c3eeefe603578ed547cdfa7af52b59b613aa Mon Sep 17 00:00:00 2001
From: Julian Gonggrijp
Date: Fri, 28 Jul 2023 21:15:53 +0200
Subject: [PATCH 02/26] Update the copyright years
---
LICENSE | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/LICENSE b/LICENSE
index a66cb771b..aa6bcc28e 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2010-2022 Jeremy Ashkenas, DocumentCloud
+Copyright (c) 2010-2023 Jeremy Ashkenas, DocumentCloud
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
From c6c6dda690770a54f0aafc83249526d980b9fba3 Mon Sep 17 00:00:00 2001
From: Julian Gonggrijp
Date: Fri, 28 Jul 2023 21:23:02 +0200
Subject: [PATCH 03/26] Add Tidelift to the FUNDING.yml
---
.github/FUNDING.yml | 1 +
1 file changed, 1 insertion(+)
diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
index 9dd73fb27..9913f95a8 100644
--- a/.github/FUNDING.yml
+++ b/.github/FUNDING.yml
@@ -1,2 +1,3 @@
+tidelift: "npm/backbone"
patreon: juliangonggrijp
github: [jgonggrijp]
From f65a59c0c004c4482a965633c651f8d935c65e9b Mon Sep 17 00:00:00 2001
From: Julian Gonggrijp
Date: Tue, 8 Aug 2023 17:31:17 +0200
Subject: [PATCH 04/26] Add tests for the notfound event
---
test/router.js | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 85 insertions(+)
diff --git a/test/router.js b/test/router.js
index c60eb7418..9b5bdbdf2 100644
--- a/test/router.js
+++ b/test/router.js
@@ -1110,4 +1110,89 @@
assert.strictEqual(location.hash, '#' + route);
});
+ QUnit.test('initial non-matching root triggers notfound event', function(assert) {
+ assert.expect(1);
+ location.replace('http://example.com/root#foo');
+ Backbone.history.stop();
+ Backbone.history = _.extend(new Backbone.History, {location: location});
+ Backbone.history.on('notfound', function() { assert.ok(true); });
+ var MyRouter = Backbone.Router.extend({
+ routes: {foo: function() { assert.ok(false); }}
+ });
+ var myRouter = new MyRouter;
+ Backbone.history.start({root: 'other'});
+ });
+
+ QUnit.test('later non-matching root triggers notfound event', function(assert) {
+ assert.expect(2);
+ location.replace('http://example.com/root#foo');
+ Backbone.history.stop();
+ Backbone.history = _.extend(new Backbone.History, {location: location});
+ Backbone.history.on('notfound', function() { assert.ok(true); });
+ var MyRouter = Backbone.Router.extend({
+ routes: {foo: function() { assert.ok(true); }}
+ });
+ var myRouter = new MyRouter;
+ Backbone.history.start({root: 'root'});
+ location.replace('http://example.com/other#foo');
+ Backbone.history.checkUrl();
+ });
+
+ QUnit.test('initial non-matching route triggers notfound event', function(assert) {
+ assert.expect(1);
+ location.replace('http://example.com/root#bar');
+ Backbone.history.stop();
+ Backbone.history = _.extend(new Backbone.History, {location: location});
+ Backbone.history.on('notfound', function() { assert.ok(true); });
+ var MyRouter = Backbone.Router.extend({
+ routes: {foo: function() { assert.ok(false); }}
+ });
+ var myRouter = new MyRouter;
+ Backbone.history.start({root: 'root'});
+ });
+
+ QUnit.test('later non-matching route triggers notfound event', function(assert) {
+ assert.expect(2);
+ location.replace('http://example.com/root#foo');
+ Backbone.history.stop();
+ Backbone.history = _.extend(new Backbone.History, {location: location});
+ Backbone.history.on('notfound', function() { assert.ok(true); });
+ var MyRouter = Backbone.Router.extend({
+ routes: {foo: function() { assert.ok(true); }}
+ });
+ var myRouter = new MyRouter;
+ Backbone.history.start({root: 'root'});
+ location.replace('http://example.com/other#bar');
+ Backbone.history.checkUrl();
+ });
+
+ QUnit.test('non-matching pushState route triggers notfound event', function(assert) {
+ assert.expect(2);
+ location.replace('http://example.com/root/foo');
+ Backbone.history.stop();
+ Backbone.history = _.extend(new Backbone.History, {location: location});
+ Backbone.history.on('notfound', function() { assert.ok(true); });
+ var MyRouter = Backbone.Router.extend({
+ routes: {foo: function() { assert.ok(true); }}
+ });
+ var myRouter = new MyRouter;
+ Backbone.history.start({root: 'root', pushState: true});
+ location.replace('http://example.com/other/bar');
+ Backbone.history.checkUrl();
+ });
+
+ QUnit.test('non-matching navigate triggers notfound event', function(assert) {
+ assert.expect(2);
+ location.replace('http://example.com/root#foo');
+ Backbone.history.stop();
+ Backbone.history = _.extend(new Backbone.History, {location: location});
+ Backbone.history.on('notfound', function() { assert.ok(true); });
+ var MyRouter = Backbone.Router.extend({
+ routes: {foo: function() { assert.ok(true); }}
+ });
+ var myRouter = new MyRouter;
+ Backbone.history.start({root: 'root'});
+ Backbone.history.navigate('http://example.com/other#bar', {trigger: true});
+ });
+
})(QUnit);
From 9fea394e07bf4f10a65037667e4b32aecaf50bec Mon Sep 17 00:00:00 2001
From: Julian Gonggrijp
Date: Tue, 8 Aug 2023 17:37:51 +0200
Subject: [PATCH 05/26] Implement the notfound event
---
backbone.js | 17 ++++++++++++++---
1 file changed, 14 insertions(+), 3 deletions(-)
diff --git a/backbone.js b/backbone.js
index 2f8db3721..f0bb5fb46 100644
--- a/backbone.js
+++ b/backbone.js
@@ -1985,7 +1985,10 @@
current = this.getHash(this.iframe.contentWindow);
}
- if (current === this.fragment) return false;
+ if (current === this.fragment) {
+ if (!this.matchRoot()) return this.notfound();
+ return false;
+ }
if (this.iframe) this.navigate(current);
this.loadUrl();
},
@@ -1995,14 +1998,22 @@
// returns `false`.
loadUrl: function(fragment) {
// If the root doesn't match, no routes can match either.
- if (!this.matchRoot()) return false;
+ if (!this.matchRoot()) return this.notfound();
fragment = this.fragment = this.getFragment(fragment);
return _.some(this.handlers, function(handler) {
if (handler.route.test(fragment)) {
handler.callback(fragment);
return true;
}
- });
+ }) || this.notfound();
+ },
+
+ // When no route could be matched, this method is called internally to
+ // trigger the `'notfound'` event. It returns `false` so that it can be used
+ // in tail position.
+ notfound: function() {
+ this.trigger('notfound');
+ return false;
},
// Save a fragment into the hash history, or replace the URL state if the
From f434aa942095068fbd1c3bd1b7c7218020857897 Mon Sep 17 00:00:00 2001
From: Julian Gonggrijp
Date: Wed, 9 Aug 2023 00:13:15 +0200
Subject: [PATCH 06/26] Document the notfound event
---
index.html | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/index.html b/index.html
index 683d54fbc..ca5dbb912 100644
--- a/index.html
+++ b/index.html
@@ -1040,6 +1040,7 @@ Backbone.Events
"route:[name]" (params) — Fired by the router when a specific route is matched.
"route" (route, params) — Fired by the router when any route has been matched.
"route" (router, route, params) — Fired by history when any route has been matched.
+ "notfound" () — Fired by history when no route could be matched.
"all" — this special event fires for any triggered event, passing the event name as the first argument followed by all trigger arguments.
@@ -2716,6 +2717,9 @@ Backbone.history
History serves as a global router (per frame) to handle hashchange
events or pushState, match the appropriate route, and trigger callbacks.
+ It forwards the "route" and "route[name]" events of the
+ matching router, or "notfound" when no route in any router
+ matches the current URL.
You shouldn't ever have to create one of these yourself since Backbone.history
already contains one.
@@ -2772,8 +2776,10 @@ Backbone.history
When called, if a route succeeds with a match for the current URL,
- Backbone.history.start() returns true. If no defined
- route matches the current URL, it returns false.
+ Backbone.history.start() returns true and
+ the "route" and "route[name]" events are triggered. If
+ no defined route matches the current URL, it returns false
+ and "notfound" is triggered instead.
From 97afbe8097f8f760eac8c772232951db9aa51705 Mon Sep 17 00:00:00 2001
From: Julian Gonggrijp
Date: Thu, 10 Aug 2023 00:28:07 +0200
Subject: [PATCH 07/26] Make the idAttribute defaults warning less harsh
Per review comment by @paulfalgout, with gratitude.
---
index.html | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
diff --git a/index.html b/index.html
index 088c10f28..66c970feb 100644
--- a/index.html
+++ b/index.html
@@ -1405,14 +1405,13 @@ Backbone.Model
- In nearly all cases, the defaults should not set a value for the
- model’s idAttribute. Doing
- so would likely prevent an instance of Backbone.Collection from
- correctly identifying model hashes and is almost certainly a mistake. If
- you know what you are doing and you really must set the model id in
- the defaults, make sure that you either (a) never add instances of the
- model class to a collection or (b) define the defaults as a function that
- returns a different, universally unique id on every invocation.
+ If you set a value for the model’s
+ idAttribute, you should define
+ the defaults as a function that returns a different, universally
+ unique id on every invocation. Not doing so would likely prevent an
+ instance of Backbone.Collection from correctly identifying model
+ hashes and is almost certainly a mistake, unless you never add instances
+ of the model class to a collection.
From e6d434e7313a95ed7e5ef54101e60b12fde123b3 Mon Sep 17 00:00:00 2001
From: Julian Gonggrijp
Date: Fri, 11 Aug 2023 00:05:08 +0200
Subject: [PATCH 08/26] Update the copyright years in the code as well
---
backbone.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/backbone.js b/backbone.js
index f0bb5fb46..c364267a1 100644
--- a/backbone.js
+++ b/backbone.js
@@ -1,6 +1,6 @@
// Backbone.js 1.5.0
-// (c) 2010-2022 Jeremy Ashkenas and DocumentCloud
+// (c) 2010-2023 Jeremy Ashkenas and DocumentCloud
// Backbone may be freely distributed under the MIT license.
// For all details and documentation:
// http://backbonejs.org
From 9cc855311487bdb109b2ecb76edca56ba8136a82 Mon Sep 17 00:00:00 2001
From: Julian Gonggrijp
Date: Thu, 27 Jul 2023 00:11:25 +0200
Subject: [PATCH 09/26] Add config for issue templates
---
.github/ISSUE_TEMPLATE/config.yml | 10 ++++++++++
1 file changed, 10 insertions(+)
create mode 100644 .github/ISSUE_TEMPLATE/config.yml
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 000000000..49b03e819
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1,10 @@
+contact_links:
+ - name: Security issue
+ url: https://github.com/jashkenas/backbone/security/policy
+ about: Go here if you would like to report a security issue.
+ - name: Stack Overflow
+ url: https://stackoverflow.com/questions/tagged/backbone.js
+ about: The best place to get help making your code work (be sure to include the `backbone.js` tag).
+ - name: Matrix/Gitter
+ url: https://matrix.to/#/#jashkenas_backbone:gitter.im
+ about: Discussions about, and general help with, Backbone.
From b176a06f98649f153a4cead23db2611e25b12a33 Mon Sep 17 00:00:00 2001
From: Julian Gonggrijp
Date: Thu, 27 Jul 2023 03:01:14 +0200
Subject: [PATCH 10/26] Add a bug issue template
---
.github/ISSUE_TEMPLATE/Bugs.yml | 231 ++++++++++++++++++++++++++++++++
1 file changed, 231 insertions(+)
create mode 100644 .github/ISSUE_TEMPLATE/Bugs.yml
diff --git a/.github/ISSUE_TEMPLATE/Bugs.yml b/.github/ISSUE_TEMPLATE/Bugs.yml
new file mode 100644
index 000000000..20409b3f6
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/Bugs.yml
@@ -0,0 +1,231 @@
+name: Bug report
+description: |
+ Report something that is not working correctly.
+ Not intended for security issues!
+title: Foo.bar should bazoonite, but frobulates instead
+body:
+ - type: markdown
+ attributes:
+ value: "
+ Thank you for taking the effort to report a bug.\n\n
+
+ Is your bug a security issue? In that case, **please do not use this
+ form!** Instead, see the [security
+ policy](https://github.com/jashkenas/backbone/security/policy) on how to
+ report the issue.\n\n
+
+ ## Identification\n\n
+
+ To start, some quick questions to pinpoint the issue."
+ - type: input
+ id: component
+ attributes:
+ label: Affected component
+ description: >
+ Which part of Backbone is affected? Please be as specific as possible,
+ for example “the silent option of Collection.reset” or
+ “importing Backbone with require.js”.
+ placeholder: the sync event triggered after Model.fetch
+ validations:
+ required: true
+ - type: input
+ id: expected
+ attributes:
+ label: Expected behavior
+ description: |
+ In one sentence, what *should* the affected component do?
+ placeholder: |
+ Forward all options passed to Model.fetch to the event handler
+ validations:
+ required: true
+ - type: input
+ id: actual
+ attributes:
+ label: Actual behavior
+ description: |
+ In one sentence, what does the affected component *actually* do?
+ placeholder: |
+ Forward options to whichever method was called last: sync, fetch, save
+ or destroy.
+ validations:
+ required: true
+ - type: markdown
+ attributes:
+ value: "
+ After filling the above three fields, please review the issue title. It
+ should be short, including elements of all three fields and not much
+ else.\n\n
+
+ For example: **After Model.fetch, sync event may include
+ options of a later sync, save or destroy call**\n\n
+
+ ## Context"
+ - type: textarea
+ id: docs
+ attributes:
+ label: Relevant documentation
+ description: |
+ Which documentation, if any, did you base your above expectation on?
+ Provide one link per line.
+ placeholder: |
+ - https://backbonejs.org/#Model-fetch
+ - https://backbonejs.org/#Events-catalog
+ - type: input
+ id: version
+ attributes:
+ label: Affected version(s)
+ description: >
+ With which version(s) of Backbone did you experience this problem? List
+ the version numbers, separated by commas. If you were trying the
+ bleeding edge version from the `master` branch, list the commit hash(es)
+ if possible, or date and time otherwise.
+ placeholder: 1.4.1, fcf5df6, 2023-07-25 23:45 UTC
+ validations:
+ required: true
+ - type: textarea
+ id: engine
+ attributes:
+ label: Affected engine(s)
+ description: >
+ In which browser(s) or other JavaScript environment(s) did you encounter
+ the problem? Please list one per line, including name and version
+ number.
+ placeholder: |
+ - Firefox 100
+ - Node.js 14.6
+ validations:
+ required: true
+ - type: textarea
+ id: interactions
+ attributes:
+ label: Interacting software
+ description: >
+ Where you using Backbone in conjuction with other libraries or tools,
+ which might be playing a role in this issue? Please list one per line,
+ including name, version number and variant if applicable.
+ placeholder: |
+ - jQuery 3.6.3
+ - type: textarea
+ id: related
+ attributes:
+ label: Related tickets
+ description: >
+ Do you know of other issues, pull requests or comments that may be
+ relevant to this bug? For example an issue ticket that discusses a
+ similar problem, or a pull request that may have introduced the bug.
+ placeholder: "#4229, #3410"
+ - type: textarea
+ id: prior
+ attributes:
+ label: Prior discussion
+ description: >
+ Besides the tickets referenced above, did you discuss the problem
+ elsewhere on the internet before reporting it here? In that case, please
+ list the URL(s) below.
+ placeholder: |
+ e.g. a Stack Overflow or Matrix link
+ - type: input
+ id: mention
+ attributes:
+ label: Mentions
+ description: >
+ If you would like to attract the attention of other GitHub users, you
+ can list their `@handles` here.
+ placeholder: "@jgonggrijp"
+ - type: markdown
+ attributes:
+ value: "## Details"
+ - type: textarea
+ id: permalink
+ attributes:
+ label: Code permalinks
+ description: >
+ If possible, provide permalinks to the JavaScript code, configuration,
+ etcetera in your project that exposed the bug. You can make a permalink
+ by visiting the affected file in the GitHub/GitLab/* webinterface,
+ hovering your mouse pointer over the affected line(s) near the left
+ margin and clicking on the triple dot menu that appears.
+ - type: input
+ id: error
+ attributes:
+ label: Error
+ description: >
+ If possible, name the error that you observed and that anyone trying to
+ reproduce the bug should look for.
+ placeholder: TypeError (options.success is not an object)
+ - type: textarea
+ id: story
+ attributes:
+ label: Story
+ description: >
+ In a paragraph or two, tell us your story. What did you want to achieve,
+ what did you do, what did you observe, and why do you think this is a
+ bug?
+ validations:
+ required: true
+ - type: textarea
+ id: research
+ attributes:
+ label: Debugging and other research
+ description: >
+ Did you step with a debugger or do other research in order to better
+ understand the issue? If so, please describe what you did and what you
+ observed.
+ - type: textarea
+ id: repro
+ attributes:
+ label: Steps to reproduce
+ description: >
+ In human language, list the minimal steps needed to make the bug happen.
+ You can list code and logs in the next two fields.
+ placeholder: |
+ 1. Define a `Backbone.Model` subclass with overridden `sync` method.
+ 2. ...
+ validations:
+ required: true
+ - type: textarea
+ id: code
+ attributes:
+ label: Example code
+ render: txt
+ description: >-
+ Provide any example code, configuration, etcetera that could help to
+ reproduce the bug. This will be rendered as code, but without syntax
+ highlighting. You can include code for different file types if needed.
+ validations:
+ required: true
+ - type: textarea
+ id: log
+ attributes:
+ label: Logs
+ render: txt
+ description: >-
+ If you got relevant text output, for example through `console.log`, you
+ can copy-paste it below. However, if it is more than 10 lines, please
+ attach it as a file in the next field.
+ - type: textarea
+ id: attachment
+ attributes:
+ label: Attachments
+ description: >
+ Attach any relevant files, such as logs or screenshots, by dragging them
+ over the box below.
+ - type: markdown
+ attributes:
+ value: "## Closing"
+ - type: textarea
+ id: solution
+ attributes:
+ label: Suggested solution(s)
+ description: >
+ If you have any idea on how the problem could (or should) be
+ solved, please feel welcome to describe it here. Of course, if
+ your idea is very concrete, you may as well submit a pull
+ request!
+ - type: textarea
+ id: remarks
+ attributes:
+ label: Other remarks
+ description: >-
+ If there is anything else you would like to say about the issue, you can
+ do so here.
From ed13c528ba7d7ce3a6954c4aa47b05b591da853d Mon Sep 17 00:00:00 2001
From: Julian Gonggrijp
Date: Thu, 27 Jul 2023 15:39:02 +0200
Subject: [PATCH 11/26] Add a feature request template
---
.github/ISSUE_TEMPLATE/Features.yml | 82 +++++++++++++++++++++++++++++
1 file changed, 82 insertions(+)
create mode 100644 .github/ISSUE_TEMPLATE/Features.yml
diff --git a/.github/ISSUE_TEMPLATE/Features.yml b/.github/ISSUE_TEMPLATE/Features.yml
new file mode 100644
index 000000000..045692797
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/Features.yml
@@ -0,0 +1,82 @@
+name: Feature request
+description: >-
+ Tell us about functionality that you miss in Backbone.
+body:
+ - type: markdown
+ attributes:
+ value: |
+ Thank you for proposing a new feature.
+
+ Let us begin with the end in mind.
+ - type: textarea
+ id: goal
+ attributes:
+ label: Ultimate goal
+ description: >-
+ This first question is not about Backbone but about the
+ mission that you hope to accomplish with Backbone. What work
+ do you need to get done?
+ placeholder: |
+ GOOD: I work on an application that needs to ...
+ BAD (later question): I think Backbone.Collection should have a method that ...
+ validations:
+ required: true
+ - type: textarea
+ id: limitation
+ attributes:
+ label: Experienced limitation
+ description: >-
+ Working towards your end goal, what task is currently
+ difficult to achieve with Backbone as it is?
+ placeholder: >-
+ In my application, I need to ..., but when I define a
+ Backbone.Collection subclass, there does not seem to be any
+ way to ...
+ validations:
+ required: true
+ - type: textarea
+ id: options
+ attributes:
+ label: Insufficient options
+ description: >-
+ Which features in Backbone or other libraries are currently
+ available to you, which do not quite do what you need? How are
+ they failing you? If there is really nothing out there, you
+ can leave this empty.
+ placeholder: |
+ - I could use `Collection.slice`, but ...
+ - I could use , but ...
+ - type: textarea
+ id: justification
+ attributes:
+ label: Justification
+ description: >-
+ Why do you believe that the missing functionality belongs in
+ Backbone proper? Why could or should it not be provided by
+ another library or tool?
+ validations:
+ required: true
+ - type: textarea
+ id: proposal
+ attributes:
+ label: Proposal
+ description: >-
+ Go ahead, describe your ideal solution. Show what it should
+ look like and explain how it should behave.
+ validations:
+ required: true
+ - type: textarea
+ id: alternatives
+ attributes:
+ label: Possible alternatives
+ description: >-
+ Can you think of other ways in which your desired
+ functionality could be provided? If they appeal less to you,
+ why is this the case?
+ - type: textarea
+ id: remarks
+ attributes:
+ label: Other remarks
+ description: >-
+ If there is anything else you would like to say about your
+ feature request, you can do so here.
From 0b86204f5184d23f4b6bcd8fde5f9ef03fa1114c Mon Sep 17 00:00:00 2001
From: Julian Gonggrijp
Date: Thu, 27 Jul 2023 16:41:32 +0200
Subject: [PATCH 12/26] Add a documentation issue template
---
.github/ISSUE_TEMPLATE/Documentation.yml | 79 ++++++++++++++++++++++++
1 file changed, 79 insertions(+)
create mode 100644 .github/ISSUE_TEMPLATE/Documentation.yml
diff --git a/.github/ISSUE_TEMPLATE/Documentation.yml b/.github/ISSUE_TEMPLATE/Documentation.yml
new file mode 100644
index 000000000..758b1378b
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/Documentation.yml
@@ -0,0 +1,79 @@
+name: Documentation issue
+description: >-
+ Report information that is missing, incomplete, vague, misleading or
+ plain wrong in online documentation such as the website, the README,
+ the wiki, etcetera.
+body:
+ - type: markdown
+ attributes:
+ value: >-
+ Thank you for taking the time to help us improve the
+ documentation.
+ - type: input
+ id: reference
+ attributes:
+ label: Reference to current documentation
+ description: >-
+ If you can identify an existing piece of documentation that is
+ lacking, please provide a URL (or multiple) below. If your
+ report is about missing information and there is no single
+ obvious place where it should be added, you can leave this
+ empty.
+ placeholder: "https://backbonejs.org/#Model-changedAttributes"
+ - type: textarea
+ id: quote
+ attributes:
+ label: Quote of current documentation
+ description: >-
+ If you provided a URL in the previous field, please quote the
+ problematic documentation below. This ensures that future
+ readers understand what you were responding to, in case the
+ referred page disappears or changes content.
+ placeholder: "
+ > Retrieve a hash of only the model's attributes that have
+ changed since the last
+ [set](https://backbonejs.org/#Model-set), or `false` if there
+ are none. Optionally, an external **attributes** hash can be
+ passed in, returning the attributes in that hash which differ
+ from the model. This can be used to figure out which portions
+ of a view should be updated, or what calls need to be made to
+ sync the changes to the server."
+ - type: textarea
+ id: problem
+ attributes:
+ label: Problem statement
+ description: >-
+ What did you or someone else not know, misunderstand or
+ falsely believe due to the current state of the documentation?
+ How has this misguided your or someone else's behavior?
+ placeholder: >-
+ I did not know that I could ..., so I needlessly ...
+ validations:
+ required: true
+ - type: textarea
+ id: cause
+ attributes:
+ label: Cause of the problem
+ description: >-
+ What is it about the current documentation that caused your
+ problem? What is missing, ambiguous or wrong? Pinpoint
+ specific words or phrases if possible.
+ placeholder: >-
+ It says "...", which seems to suggest that ..., while actually, ...
+ validations:
+ required: true
+ - type: textarea
+ id: suggestion
+ attributes:
+ label: Suggestion
+ description: >-
+ If you have any idea on how the documentation could be
+ improved, please share it here. Of course, if your idea is
+ very concrete, you can also submit a pull request!
+ - type: textarea
+ id: remarks
+ attributes:
+ label: Other remarks
+ description: >-
+ If there is anything else you would like to say about the issue, you can
+ do so here.
From a2bcf1989efce1d99b485f3143495633064e44a0 Mon Sep 17 00:00:00 2001
From: Julian Gonggrijp
Date: Fri, 11 Aug 2023 03:27:15 +0200
Subject: [PATCH 13/26] Add debugInfo method
---
backbone.js | 28 ++++++++
package-lock.json | 175 ++++++++++++++++++++++++++++++++++++++++++++++
package.json | 5 +-
test/debuginfo.js | 43 ++++++++++++
test/index.html | 1 +
5 files changed, 251 insertions(+), 1 deletion(-)
create mode 100644 test/debuginfo.js
diff --git a/backbone.js b/backbone.js
index c364267a1..0c957b231 100644
--- a/backbone.js
+++ b/backbone.js
@@ -2144,5 +2144,33 @@
};
};
+ // Provide useful information when things go wrong.
+ Backbone.debugInfo = function() {
+ // Use the `partialRight` function as a Lodash indicator. It was never in
+ // Underscore, has been in Lodash at least since version 1.3.1, and is
+ // unlikely to be mixed into Underscore since nobody needs it.
+ var lodash = !!_.partialRight;
+ var info = {
+ backbone: Backbone.VERSION,
+ // Is this the exact released version, or a later development version?
+ /* This is automatically temporarily replaced when publishing a release,
+ so please don't edit this. */
+ distribution: 'MARK_DEVELOPMENT',
+ _: (lodash ? 'lodash ' : '') + _.VERSION,
+ $: !$ ? false : $.fn && $.fn.jquery ? $.fn.jquery :
+ $.zepto ? 'zepto' : $.ender ? 'ender' : true
+ };
+ if (typeof root.Deno !== 'undefined') {
+ info.deno = _.pick(root.Deno, 'version', 'build');
+ } else if (typeof root.process !== 'undefined') {
+ info.process = _.pick(root.process, 'version', 'platform', 'arch');
+ } else if (typeof root.navigator !== 'undefined') {
+ info.navigator = _.pick(root.navigator, 'userAgent', 'platform', 'webdriver');
+ }
+ /* eslint-disable-next-line no-console */
+ console.debug('Backbone debug info: ', JSON.stringify(info, null, 4));
+ return info;
+ };
+
return Backbone;
});
diff --git a/package-lock.json b/package-lock.json
index ce08fb986..b6b937bf9 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -21,6 +21,7 @@
"karma-qunit": "^4.1.2",
"phantomjs-prebuilt": "^2.1.7",
"qunit": "^2.17.2",
+ "replace-in-file": "^7.0.1",
"uglify-js": "^3.14.5"
}
},
@@ -4199,6 +4200,104 @@
"node": ">=0.10"
}
},
+ "node_modules/replace-in-file": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/replace-in-file/-/replace-in-file-7.0.1.tgz",
+ "integrity": "sha512-KbhgPq04eA+TxXuUxpgWIH9k/TjF+28ofon2PXP7vq6izAILhxOtksCVcLuuQLtyjouBaPdlH6RJYYcSPVxCOA==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^4.1.2",
+ "glob": "^8.1.0",
+ "yargs": "^17.7.2"
+ },
+ "bin": {
+ "replace-in-file": "bin/cli.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/replace-in-file/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/replace-in-file/node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/replace-in-file/node_modules/glob": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
+ "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^5.0.1",
+ "once": "^1.3.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/replace-in-file/node_modules/minimatch": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/replace-in-file/node_modules/yargs": {
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+ "dev": true,
+ "dependencies": {
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/replace-in-file/node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/request": {
"version": "2.88.2",
"resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
@@ -8846,6 +8945,82 @@
"integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
"dev": true
},
+ "replace-in-file": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/replace-in-file/-/replace-in-file-7.0.1.tgz",
+ "integrity": "sha512-KbhgPq04eA+TxXuUxpgWIH9k/TjF+28ofon2PXP7vq6izAILhxOtksCVcLuuQLtyjouBaPdlH6RJYYcSPVxCOA==",
+ "dev": true,
+ "requires": {
+ "chalk": "^4.1.2",
+ "glob": "^8.1.0",
+ "yargs": "^17.7.2"
+ },
+ "dependencies": {
+ "brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "requires": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "dev": true,
+ "requires": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ }
+ },
+ "glob": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
+ "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^5.0.1",
+ "once": "^1.3.0"
+ }
+ },
+ "minimatch": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^2.0.1"
+ }
+ },
+ "yargs": {
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+ "dev": true,
+ "requires": {
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
+ }
+ },
+ "yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "dev": true
+ }
+ }
+ },
"request": {
"version": "2.88.2",
"resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
diff --git a/package.json b/package.json
index 52a486e87..61a230765 100644
--- a/package.json
+++ b/package.json
@@ -25,6 +25,7 @@
"karma-qunit": "^4.1.2",
"phantomjs-prebuilt": "^2.1.7",
"qunit": "^2.17.2",
+ "replace-in-file": "^7.0.1",
"uglify-js": "^3.14.5"
},
"scripts": {
@@ -33,7 +34,9 @@
"alias-sourcemap": "cpy --rename=backbone-min.map backbone-min.js.map .",
"doc": "docco backbone.js && docco examples/todos/todos.js examples/backbone.localStorage.js",
"lint": "eslint backbone.js test/*.js",
- "prepublishOnly": "npm run test && npm run build && npm run alias-sourcemap && npm run doc"
+ "mark-release": "replace-in-file MARK_DEVELOPMENT MARK_RELEASE backbone.js",
+ "mark-develop": "replace-in-file MARK_RELEASE MARK_DEVELOPMENT backbone.js",
+ "prepublishOnly": "npm run test && npm run mark-release && npm run build && npm run alias-sourcemap && npm run doc && git add -u && npm run mark-develop"
},
"main": "backbone.js",
"version": "1.5.0",
diff --git a/test/debuginfo.js b/test/debuginfo.js
new file mode 100644
index 000000000..8f471256c
--- /dev/null
+++ b/test/debuginfo.js
@@ -0,0 +1,43 @@
+/* eslint-disable no-console */
+
+(function(QUnit) {
+
+ var logs, originalDebug = console.debug;
+
+ function spyDebug() {
+ logs.push(arguments);
+ originalDebug.apply(console, arguments);
+ }
+
+ QUnit.module('Backbone.debugInfo', {
+
+ beforeEach: function() {
+ logs = [];
+ console.debug = spyDebug;
+ },
+
+ afterEach: function() {
+ console.debug = originalDebug;
+ logs = undefined;
+ }
+ });
+
+ QUnit.test('debugInfo', function(assert) {
+ var info = Backbone.debugInfo();
+ assert.strictEqual(info.backbone, Backbone.VERSION, 'includes Backbone version');
+ assert.strictEqual(info.distribution, 'MARK_DEVELOPMENT', 'distribution mark sticks to development');
+ assert.strictEqual(info._, _.VERSION, 'includes Underscore version');
+ assert.strictEqual(info.$, $.fn.jquery, 'includes jQuery version');
+ if (typeof navigator !== 'undefined') {
+ assert.ok(typeof info.navigator === 'object');
+ assert.strictEqual(info.navigator.userAgent, navigator.userAgent, 'includes user agent');
+ assert.strictEqual(info.navigator.platform, navigator.platform, 'includes navigator platform');
+ assert.strictEqual(info.navigator.webdriver, navigator.webdriver, 'includes webdriver state');
+ }
+ assert.strictEqual(logs.length, 1, 'prints to console as side effect');
+ var debugArgs = logs[0];
+ var infoString = JSON.stringify(info, null, 4);
+ assert.strictEqual(debugArgs[1], infoString, 'prints payload as second argument');
+ });
+
+})(QUnit);
diff --git a/test/index.html b/test/index.html
index 3dad8c679..428058615 100644
--- a/test/index.html
+++ b/test/index.html
@@ -14,6 +14,7 @@
+
From 01a027cb34ece1b676dcf9e58e4db053e6af55ac Mon Sep 17 00:00:00 2001
From: Julian Gonggrijp
Date: Fri, 11 Aug 2023 17:17:00 +0200
Subject: [PATCH 14/26] Merge bug issue template fields per review comments
I mean, not exactly to the letter of the comments, but hopefully to
the spirit.
---
.github/ISSUE_TEMPLATE/Bugs.yml | 145 +++++++-------------------------
1 file changed, 32 insertions(+), 113 deletions(-)
diff --git a/.github/ISSUE_TEMPLATE/Bugs.yml b/.github/ISSUE_TEMPLATE/Bugs.yml
index 20409b3f6..761a274a8 100644
--- a/.github/ISSUE_TEMPLATE/Bugs.yml
+++ b/.github/ISSUE_TEMPLATE/Bugs.yml
@@ -70,81 +70,39 @@ body:
placeholder: |
- https://backbonejs.org/#Model-fetch
- https://backbonejs.org/#Events-catalog
- - type: input
- id: version
- attributes:
- label: Affected version(s)
- description: >
- With which version(s) of Backbone did you experience this problem? List
- the version numbers, separated by commas. If you were trying the
- bleeding edge version from the `master` branch, list the commit hash(es)
- if possible, or date and time otherwise.
- placeholder: 1.4.1, fcf5df6, 2023-07-25 23:45 UTC
- validations:
- required: true
- type: textarea
- id: engine
+ id: stack
attributes:
- label: Affected engine(s)
+ label: Software stack
description: >
- In which browser(s) or other JavaScript environment(s) did you encounter
- the problem? Please list one per line, including name and version
- number.
+ With which version(s) of Backbone, Underscore/Lodash, jQuery/Zepto,
+ other relevant libraries or tools, your browser, etcetera, did you
+ experience this problem? Please list one per line, including name,
+ version number(s) and variant(s) if applicable.
placeholder: |
+ - Backbone 1.4.1 and latest `master` (commit fcf5df6)
+ - Underscore 1.13.6
+ - jQuery 3.6.3 (slim build)
+ - Marionette 4.1.2
- Firefox 100
- Node.js 14.6
validations:
required: true
- type: textarea
- id: interactions
- attributes:
- label: Interacting software
- description: >
- Where you using Backbone in conjuction with other libraries or tools,
- which might be playing a role in this issue? Please list one per line,
- including name, version number and variant if applicable.
- placeholder: |
- - jQuery 3.6.3
- - type: textarea
- id: related
+ id: discourse
attributes:
- label: Related tickets
+ label: Related issues, prior discussion and CCs
description: >
- Do you know of other issues, pull requests or comments that may be
- relevant to this bug? For example an issue ticket that discusses a
- similar problem, or a pull request that may have introduced the bug.
- placeholder: "#4229, #3410"
- - type: textarea
- id: prior
- attributes:
- label: Prior discussion
- description: >
- Besides the tickets referenced above, did you discuss the problem
- elsewhere on the internet before reporting it here? In that case, please
- list the URL(s) below.
- placeholder: |
- e.g. a Stack Overflow or Matrix link
- - type: input
- id: mention
- attributes:
- label: Mentions
- description: >
- If you would like to attract the attention of other GitHub users, you
- can list their `@handles` here.
- placeholder: "@jgonggrijp"
+ Please list any issue numbers, pull requests or links to discussions
+ elsewhere on the internet that may be relevant. You can also attract the
+ attention of other GitHub users by listing their `@handles` here.
+ placeholder: "
+ #4229, #3410\n
+ a Stack Overflow or Matrix link\n
+ @jgonggrijp"
- type: markdown
attributes:
- value: "## Details"
- - type: textarea
- id: permalink
- attributes:
- label: Code permalinks
- description: >
- If possible, provide permalinks to the JavaScript code, configuration,
- etcetera in your project that exposed the bug. You can make a permalink
- by visiting the affected file in the GitHub/GitLab/* webinterface,
- hovering your mouse pointer over the affected line(s) near the left
- margin and clicking on the triple dot menu that appears.
+ value: "## Bug details"
- type: input
id: error
attributes:
@@ -153,63 +111,25 @@ body:
If possible, name the error that you observed and that anyone trying to
reproduce the bug should look for.
placeholder: TypeError (options.success is not an object)
- - type: textarea
- id: story
- attributes:
- label: Story
- description: >
- In a paragraph or two, tell us your story. What did you want to achieve,
- what did you do, what did you observe, and why do you think this is a
- bug?
- validations:
- required: true
- - type: textarea
- id: research
- attributes:
- label: Debugging and other research
- description: >
- Did you step with a debugger or do other research in order to better
- understand the issue? If so, please describe what you did and what you
- observed.
- type: textarea
id: repro
attributes:
label: Steps to reproduce
description: >
- In human language, list the minimal steps needed to make the bug happen.
- You can list code and logs in the next two fields.
- placeholder: |
- 1. Define a `Backbone.Model` subclass with overridden `sync` method.
- 2. ...
+ List the minimal steps needed to make the bug happen. Include code
+ examples as needed.
validations:
required: true
- type: textarea
- id: code
+ id: details
attributes:
- label: Example code
- render: txt
+ label: Additional information
description: >-
- Provide any example code, configuration, etcetera that could help to
- reproduce the bug. This will be rendered as code, but without syntax
- highlighting. You can include code for different file types if needed.
- validations:
- required: true
- - type: textarea
- id: log
- attributes:
- label: Logs
- render: txt
- description: >-
- If you got relevant text output, for example through `console.log`, you
- can copy-paste it below. However, if it is more than 10 lines, please
- attach it as a file in the next field.
- - type: textarea
- id: attachment
- attributes:
- label: Attachments
- description: >
- Attach any relevant files, such as logs or screenshots, by dragging them
- over the box below.
+ This is a free-form field where you can add any further details that may
+ help to understand the bug. For example, you might provide permalinks to
+ the affected lines of code in your actual project, attach logs or
+ screenshots, point out things you noticed while debugging, and explain
+ why the bug is especially problematic for your use case.
- type: markdown
attributes:
value: "## Closing"
@@ -218,10 +138,9 @@ body:
attributes:
label: Suggested solution(s)
description: >
- If you have any idea on how the problem could (or should) be
- solved, please feel welcome to describe it here. Of course, if
- your idea is very concrete, you may as well submit a pull
- request!
+ If you have any idea on how the problem could (or should) be solved,
+ please feel welcome to describe it here. Of course, if your idea is very
+ concrete, you may as well submit a pull request!
- type: textarea
id: remarks
attributes:
From 6e9d79e6b8420ee0767a6b0bd03d512af138c502 Mon Sep 17 00:00:00 2001
From: Julian Gonggrijp
Date: Fri, 11 Aug 2023 17:36:21 +0200
Subject: [PATCH 15/26] Mention Backbone.debugInfo in bug issue template stack
field
---
.github/ISSUE_TEMPLATE/Bugs.yml | 42 ++++++++++++++++++++++++++-------
1 file changed, 33 insertions(+), 9 deletions(-)
diff --git a/.github/ISSUE_TEMPLATE/Bugs.yml b/.github/ISSUE_TEMPLATE/Bugs.yml
index 761a274a8..88b283916 100644
--- a/.github/ISSUE_TEMPLATE/Bugs.yml
+++ b/.github/ISSUE_TEMPLATE/Bugs.yml
@@ -74,18 +74,42 @@ body:
id: stack
attributes:
label: Software stack
- description: >
+ description: "
With which version(s) of Backbone, Underscore/Lodash, jQuery/Zepto,
other relevant libraries or tools, your browser, etcetera, did you
experience this problem? Please list one per line, including name,
- version number(s) and variant(s) if applicable.
- placeholder: |
- - Backbone 1.4.1 and latest `master` (commit fcf5df6)
- - Underscore 1.13.6
- - jQuery 3.6.3 (slim build)
- - Marionette 4.1.2
- - Firefox 100
- - Node.js 14.6
+ version number(s) and variant(s) if applicable.\n\n
+
+ **Tip:** if you are using the bleeding-edge version of Backbone, much
+ of this information can be obtained by inserting `Backbone.debugInfo();`
+ somewhere in your code before the bug happens and copy-pasting its
+ console output below."
+ placeholder: "
+ - Backbone 1.4.1 and latest `master` (commit fcf5df6)\n
+ - Underscore 1.13.6\n
+ - jQuery 3.6.3 (slim build)\n
+ - Marionette 4.1.2\n
+ - Firefox 100\n
+ - Node.js 14.6\n
+
+ OR (stretch form field to see example content):\n
+
+ ```json\n
+ Backbone debug info: {\n
+ \ \ \"backbone\": \"1.5.0\",\n
+ \ \ \"distribution\": \"MARK_DEVELOPMENT\",\n
+ \ \ \"_\": \"lodash 4.17.21\",\n
+ \ \ \"$\": \"3.6.0\",\n
+ \ \ \"navigator\": {\n
+ \ \ \ \ \"userAgent\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/116.0\",\n
+ \ \ \ \ \"platform\": \"MacIntel\",\n
+ \ \ \ \ \"webdriver\": false\n
+ \ \ }\n
+ }\n
+ ```\n
+
+ - Backbone `master` checked out on August 10, 2023\n
+ - Marionette 4.1.2"
validations:
required: true
- type: textarea
From 25d34a4f39ec8dbfdf62eee404ec560122a16227 Mon Sep 17 00:00:00 2001
From: Julian Gonggrijp
Date: Fri, 11 Aug 2023 17:52:08 +0200
Subject: [PATCH 16/26] Rename doc issue template "problem" field to "effect"
---
.github/ISSUE_TEMPLATE/Documentation.yml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.github/ISSUE_TEMPLATE/Documentation.yml b/.github/ISSUE_TEMPLATE/Documentation.yml
index 758b1378b..7cce2c097 100644
--- a/.github/ISSUE_TEMPLATE/Documentation.yml
+++ b/.github/ISSUE_TEMPLATE/Documentation.yml
@@ -39,9 +39,9 @@ body:
of a view should be updated, or what calls need to be made to
sync the changes to the server."
- type: textarea
- id: problem
+ id: effect
attributes:
- label: Problem statement
+ label: Effect of the problem
description: >-
What did you or someone else not know, misunderstand or
falsely believe due to the current state of the documentation?
From f342b6c2eb78d8660e803827daede15954b70133 Mon Sep 17 00:00:00 2001
From: Julian Gonggrijp
Date: Fri, 11 Aug 2023 17:54:41 +0200
Subject: [PATCH 17/26] Rewrap doc issue template to 80 columns
---
.github/ISSUE_TEMPLATE/Documentation.yml | 57 +++++++++++-------------
1 file changed, 27 insertions(+), 30 deletions(-)
diff --git a/.github/ISSUE_TEMPLATE/Documentation.yml b/.github/ISSUE_TEMPLATE/Documentation.yml
index 7cce2c097..fc6ea8bc4 100644
--- a/.github/ISSUE_TEMPLATE/Documentation.yml
+++ b/.github/ISSUE_TEMPLATE/Documentation.yml
@@ -1,24 +1,22 @@
name: Documentation issue
description: >-
- Report information that is missing, incomplete, vague, misleading or
- plain wrong in online documentation such as the website, the README,
- the wiki, etcetera.
+ Report information that is missing, incomplete, vague, misleading or plain
+ wrong in online documentation such as the website, the README, the wiki,
+ etcetera.
body:
- type: markdown
attributes:
value: >-
- Thank you for taking the time to help us improve the
- documentation.
+ Thank you for taking the time to help us improve the documentation.
- type: input
id: reference
attributes:
label: Reference to current documentation
description: >-
- If you can identify an existing piece of documentation that is
- lacking, please provide a URL (or multiple) below. If your
- report is about missing information and there is no single
- obvious place where it should be added, you can leave this
- empty.
+ If you can identify an existing piece of documentation that is lacking,
+ please provide a URL (or multiple) below. If your report is about
+ missing information and there is no single obvious place where it should
+ be added, you can leave this empty.
placeholder: "https://backbonejs.org/#Model-changedAttributes"
- type: textarea
id: quote
@@ -26,26 +24,25 @@ body:
label: Quote of current documentation
description: >-
If you provided a URL in the previous field, please quote the
- problematic documentation below. This ensures that future
- readers understand what you were responding to, in case the
- referred page disappears or changes content.
+ problematic documentation below. This ensures that future readers
+ understand what you were responding to, in case the referred page
+ disappears or changes content.
placeholder: "
- > Retrieve a hash of only the model's attributes that have
- changed since the last
- [set](https://backbonejs.org/#Model-set), or `false` if there
- are none. Optionally, an external **attributes** hash can be
- passed in, returning the attributes in that hash which differ
- from the model. This can be used to figure out which portions
- of a view should be updated, or what calls need to be made to
- sync the changes to the server."
+ > Retrieve a hash of only the model's attributes that have changed since
+ the last
+ [set](https://backbonejs.org/#Model-set), or `false` if there are none.
+ Optionally, an external **attributes** hash can be passed in, returning
+ the attributes in that hash which differ from the model. This can be
+ used to figure out which portions of a view should be updated, or what
+ calls need to be made to sync the changes to the server."
- type: textarea
id: effect
attributes:
label: Effect of the problem
description: >-
- What did you or someone else not know, misunderstand or
- falsely believe due to the current state of the documentation?
- How has this misguided your or someone else's behavior?
+ What did you or someone else not know, misunderstand or falsely believe
+ due to the current state of the documentation? How has this misguided
+ your or someone else's behavior?
placeholder: >-
I did not know that I could ..., so I needlessly ...
validations:
@@ -55,9 +52,9 @@ body:
attributes:
label: Cause of the problem
description: >-
- What is it about the current documentation that caused your
- problem? What is missing, ambiguous or wrong? Pinpoint
- specific words or phrases if possible.
+ What is it about the current documentation that caused your problem?
+ What is missing, ambiguous or wrong? Pinpoint specific words or phrases
+ if possible.
placeholder: >-
It says "...", which seems to suggest that ..., while actually, ...
validations:
@@ -67,9 +64,9 @@ body:
attributes:
label: Suggestion
description: >-
- If you have any idea on how the documentation could be
- improved, please share it here. Of course, if your idea is
- very concrete, you can also submit a pull request!
+ If you have any idea on how the documentation could be improved, please
+ share it here. Of course, if your idea is very concrete, you can also
+ submit a pull request!
- type: textarea
id: remarks
attributes:
From 16e16c192fa3cd9aa649ba6d1f511d8cc2b29609 Mon Sep 17 00:00:00 2001
From: Julian Gonggrijp
Date: Fri, 11 Aug 2023 17:58:38 +0200
Subject: [PATCH 18/26] Rewrap feature issue template to 80 columns
---
.github/ISSUE_TEMPLATE/Features.yml | 38 +++++++++++++----------------
1 file changed, 17 insertions(+), 21 deletions(-)
diff --git a/.github/ISSUE_TEMPLATE/Features.yml b/.github/ISSUE_TEMPLATE/Features.yml
index 045692797..eeab05389 100644
--- a/.github/ISSUE_TEMPLATE/Features.yml
+++ b/.github/ISSUE_TEMPLATE/Features.yml
@@ -13,9 +13,8 @@ body:
attributes:
label: Ultimate goal
description: >-
- This first question is not about Backbone but about the
- mission that you hope to accomplish with Backbone. What work
- do you need to get done?
+ This first question is not about Backbone but about the mission that you
+ hope to accomplish with Backbone. What work do you need to get done?
placeholder: |
GOOD: I work on an application that needs to ...
BAD (later question): I think Backbone.Collection should have a method that ...
@@ -26,12 +25,11 @@ body:
attributes:
label: Experienced limitation
description: >-
- Working towards your end goal, what task is currently
- difficult to achieve with Backbone as it is?
+ Working towards your end goal, what task is currently difficult to
+ achieve with Backbone as it is?
placeholder: >-
In my application, I need to ..., but when I define a
- Backbone.Collection subclass, there does not seem to be any
- way to ...
+ Backbone.Collection subclass, there does not seem to be any way to ...
validations:
required: true
- type: textarea
@@ -39,10 +37,9 @@ body:
attributes:
label: Insufficient options
description: >-
- Which features in Backbone or other libraries are currently
- available to you, which do not quite do what you need? How are
- they failing you? If there is really nothing out there, you
- can leave this empty.
+ Which features in Backbone or other libraries are currently available to
+ you, which do not quite do what you need? How are they failing you? If
+ there is really nothing out there, you can leave this empty.
placeholder: |
- I could use `Collection.slice`, but ...
- I could use , but ...
@@ -51,9 +48,9 @@ body:
attributes:
label: Justification
description: >-
- Why do you believe that the missing functionality belongs in
- Backbone proper? Why could or should it not be provided by
- another library or tool?
+ Why do you believe that the missing functionality belongs in Backbone
+ proper? Why could or should it not be provided by another library or
+ tool?
validations:
required: true
- type: textarea
@@ -61,8 +58,8 @@ body:
attributes:
label: Proposal
description: >-
- Go ahead, describe your ideal solution. Show what it should
- look like and explain how it should behave.
+ Go ahead, describe your ideal solution. Show what it should look like
+ and explain how it should behave.
validations:
required: true
- type: textarea
@@ -70,13 +67,12 @@ body:
attributes:
label: Possible alternatives
description: >-
- Can you think of other ways in which your desired
- functionality could be provided? If they appeal less to you,
- why is this the case?
+ Can you think of other ways in which your desired functionality could be
+ provided? If they appeal less to you, why is this the case?
- type: textarea
id: remarks
attributes:
label: Other remarks
description: >-
- If there is anything else you would like to say about your
- feature request, you can do so here.
+ If there is anything else you would like to say about your feature
+ request, you can do so here.
From 32ba686f8f7563765a80721590a73cf853d47a2e Mon Sep 17 00:00:00 2001
From: Julian Gonggrijp
Date: Fri, 11 Aug 2023 18:04:13 +0200
Subject: [PATCH 19/26] Merge limitation and options in feature issue template
per review
---
.github/ISSUE_TEMPLATE/Features.yml | 24 +++++++++---------------
1 file changed, 9 insertions(+), 15 deletions(-)
diff --git a/.github/ISSUE_TEMPLATE/Features.yml b/.github/ISSUE_TEMPLATE/Features.yml
index eeab05389..1bcb1a2a1 100644
--- a/.github/ISSUE_TEMPLATE/Features.yml
+++ b/.github/ISSUE_TEMPLATE/Features.yml
@@ -21,28 +21,22 @@ body:
validations:
required: true
- type: textarea
- id: limitation
+ id: shortcoming
attributes:
- label: Experienced limitation
+ label: Shortcomings
description: >-
Working towards your end goal, what task is currently difficult to
- achieve with Backbone as it is?
- placeholder: >-
+ achieve with Backbone as it is? Which features in Backbone or other
+ libraries are currently available to you, which do not quite do what you
+ need?
+ placeholder: |
In my application, I need to ..., but when I define a
Backbone.Collection subclass, there does not seem to be any way to ...
- validations:
- required: true
- - type: textarea
- id: options
- attributes:
- label: Insufficient options
- description: >-
- Which features in Backbone or other libraries are currently available to
- you, which do not quite do what you need? How are they failing you? If
- there is really nothing out there, you can leave this empty.
- placeholder: |
+
- I could use `Collection.slice`, but ...
- I could use , but ...
+ validations:
+ required: true
- type: textarea
id: justification
attributes:
From d47dc716841593e48fcc29d24c59028ff609faf1 Mon Sep 17 00:00:00 2001
From: Julian Gonggrijp
Date: Wed, 23 Aug 2023 13:34:17 +0200
Subject: [PATCH 20/26] Shorten actual behavior placeholder text in bug issue
template
---
.github/ISSUE_TEMPLATE/Bugs.yml | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/.github/ISSUE_TEMPLATE/Bugs.yml b/.github/ISSUE_TEMPLATE/Bugs.yml
index 88b283916..d0ea8a787 100644
--- a/.github/ISSUE_TEMPLATE/Bugs.yml
+++ b/.github/ISSUE_TEMPLATE/Bugs.yml
@@ -45,8 +45,7 @@ body:
description: |
In one sentence, what does the affected component *actually* do?
placeholder: |
- Forward options to whichever method was called last: sync, fetch, save
- or destroy.
+ Forward options to the method called last, e.g. save.
validations:
required: true
- type: markdown
From eb29ed8f917ad9d1d2a82d920f1b116b89e7e50d Mon Sep 17 00:00:00 2001
From: Julian Gonggrijp
Date: Wed, 23 Aug 2023 22:17:22 +0200
Subject: [PATCH 21/26] Add a modules directory with its own package.json
Old trick learned from Underscore: within this directory, Node.js and
other tools that follow its awkward convention will be willing to
interpret .js files with ES module syntax.
---
modules/package.json | 1 +
1 file changed, 1 insertion(+)
create mode 100644 modules/package.json
diff --git a/modules/package.json b/modules/package.json
new file mode 100644
index 000000000..54d8da044
--- /dev/null
+++ b/modules/package.json
@@ -0,0 +1 @@
+{"type":"module","version":"1.4.1"}
From 5ae5639de84fb82567e74609836f79b686102dae Mon Sep 17 00:00:00 2001
From: Julian Gonggrijp
Date: Thu, 24 Aug 2023 00:57:32 +0200
Subject: [PATCH 22/26] Move debugInfo to a separate module
---
.github/ISSUE_TEMPLATE/Bugs.yml | 8 ++--
backbone.js | 31 +++------------
debug-info.js | 38 ++++++++++++++++++
karma.conf-sauce.js | 1 +
karma.conf.js | 3 +-
modules/debug-info.js | 31 +++++++++++++++
package-lock.json | 68 +++++++++++++++++++++++----------
package.json | 13 +++++--
test/index.html | 1 +
9 files changed, 138 insertions(+), 56 deletions(-)
create mode 100644 debug-info.js
create mode 100644 modules/debug-info.js
diff --git a/.github/ISSUE_TEMPLATE/Bugs.yml b/.github/ISSUE_TEMPLATE/Bugs.yml
index d0ea8a787..544ded0d1 100644
--- a/.github/ISSUE_TEMPLATE/Bugs.yml
+++ b/.github/ISSUE_TEMPLATE/Bugs.yml
@@ -79,10 +79,10 @@ body:
experience this problem? Please list one per line, including name,
version number(s) and variant(s) if applicable.\n\n
- **Tip:** if you are using the bleeding-edge version of Backbone, much
- of this information can be obtained by inserting `Backbone.debugInfo();`
- somewhere in your code before the bug happens and copy-pasting its
- console output below."
+ **Tip:** if you are using the bleeding-edge version of
+ Backbone, much of this information can be obtained by using
+ [debugInfo](https://backbonejs.org/#Utility-Backbone-debugInfo)
+ and copy-pasting its console output below."
placeholder: "
- Backbone 1.4.1 and latest `master` (commit fcf5df6)\n
- Underscore 1.13.6\n
diff --git a/backbone.js b/backbone.js
index 0c957b231..adcf11003 100644
--- a/backbone.js
+++ b/backbone.js
@@ -2144,32 +2144,11 @@
};
};
- // Provide useful information when things go wrong.
- Backbone.debugInfo = function() {
- // Use the `partialRight` function as a Lodash indicator. It was never in
- // Underscore, has been in Lodash at least since version 1.3.1, and is
- // unlikely to be mixed into Underscore since nobody needs it.
- var lodash = !!_.partialRight;
- var info = {
- backbone: Backbone.VERSION,
- // Is this the exact released version, or a later development version?
- /* This is automatically temporarily replaced when publishing a release,
- so please don't edit this. */
- distribution: 'MARK_DEVELOPMENT',
- _: (lodash ? 'lodash ' : '') + _.VERSION,
- $: !$ ? false : $.fn && $.fn.jquery ? $.fn.jquery :
- $.zepto ? 'zepto' : $.ender ? 'ender' : true
- };
- if (typeof root.Deno !== 'undefined') {
- info.deno = _.pick(root.Deno, 'version', 'build');
- } else if (typeof root.process !== 'undefined') {
- info.process = _.pick(root.process, 'version', 'platform', 'arch');
- } else if (typeof root.navigator !== 'undefined') {
- info.navigator = _.pick(root.navigator, 'userAgent', 'platform', 'webdriver');
- }
- /* eslint-disable-next-line no-console */
- console.debug('Backbone debug info: ', JSON.stringify(info, null, 4));
- return info;
+ // Provide useful information when things go wrong. This method is not meant
+ // to be used directly; it merely provides the necessary introspection for the
+ // external `debugInfo` function.
+ Backbone._debug = function() {
+ return {root: root, _: _};
};
return Backbone;
diff --git a/debug-info.js b/debug-info.js
new file mode 100644
index 000000000..e160d5d8c
--- /dev/null
+++ b/debug-info.js
@@ -0,0 +1,38 @@
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('backbone')) :
+ typeof define === 'function' && define.amd ? define(['backbone'], factory) :
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.Backbone = global.Backbone || {}, global.Backbone.debugInfo = factory(global.Backbone)));
+})(this, (function (Backbone) {
+ // Provide useful information when things go wrong.
+ function debugInfo() {
+ // Introspect Backbone.
+ var $ = Backbone.$, _b = Backbone._debug(), _ = _b._, root = _b.root;
+ // Use the `partialRight` function as a Lodash indicator. It was never in
+ // Underscore, has been in Lodash at least since version 1.3.1, and is
+ // unlikely to be mixed into Underscore since nobody needs it.
+ var lodash = !!_.partialRight;
+ var info = {
+ backbone: Backbone.VERSION,
+ // Is this the exact released version, or a later development version?
+ /* This is automatically temporarily replaced when publishing a release,
+ so please don't edit this. */
+ distribution: 'MARK_DEVELOPMENT',
+ _: (lodash ? 'lodash ' : '') + _.VERSION,
+ $: !$ ? false : $.fn && $.fn.jquery ? $.fn.jquery :
+ $.zepto ? 'zepto' : $.ender ? 'ender' : true
+ };
+ if (typeof root.Deno !== 'undefined') {
+ info.deno = _.pick(root.Deno, 'version', 'build');
+ } else if (typeof root.process !== 'undefined') {
+ info.process = _.pick(root.process, 'version', 'platform', 'arch');
+ } else if (typeof root.navigator !== 'undefined') {
+ info.navigator = _.pick(root.navigator, 'userAgent', 'platform', 'webdriver');
+ }
+ /* eslint-disable-next-line no-console */
+ console.debug('Backbone debug info: ', JSON.stringify(info, null, 4));
+ return info;
+ }
+
+ return debugInfo;
+
+}));
diff --git a/karma.conf-sauce.js b/karma.conf-sauce.js
index 3bb1f039e..a2216ab10 100644
--- a/karma.conf-sauce.js
+++ b/karma.conf-sauce.js
@@ -69,6 +69,7 @@ module.exports = function(config) {
'test/vendor/json2.js',
'test/vendor/underscore.js',
'backbone.js',
+ 'debug-info.js',
'test/setup/*.js',
'test/*.js'
],
diff --git a/karma.conf.js b/karma.conf.js
index b7b3db0f7..e8817e9c0 100644
--- a/karma.conf.js
+++ b/karma.conf.js
@@ -13,6 +13,7 @@ module.exports = function(config) {
'test/vendor/json2.js',
'test/vendor/underscore.js',
'backbone.js',
+ 'debug-info.js',
'test/setup/*.js',
'test/*.js'
],
@@ -51,4 +52,4 @@ module.exports = function(config) {
}
}
});
-};
\ No newline at end of file
+};
diff --git a/modules/debug-info.js b/modules/debug-info.js
new file mode 100644
index 000000000..d367a06d9
--- /dev/null
+++ b/modules/debug-info.js
@@ -0,0 +1,31 @@
+import Backbone from 'backbone';
+
+// Provide useful information when things go wrong.
+export default function() {
+ // Introspect Backbone.
+ var $ = Backbone.$, _b = Backbone._debug(), _ = _b._, root = _b.root;
+ // Use the `partialRight` function as a Lodash indicator. It was never in
+ // Underscore, has been in Lodash at least since version 1.3.1, and is
+ // unlikely to be mixed into Underscore since nobody needs it.
+ var lodash = !!_.partialRight;
+ var info = {
+ backbone: Backbone.VERSION,
+ // Is this the exact released version, or a later development version?
+ /* This is automatically temporarily replaced when publishing a release,
+ so please don't edit this. */
+ distribution: 'MARK_DEVELOPMENT',
+ _: (lodash ? 'lodash ' : '') + _.VERSION,
+ $: !$ ? false : $.fn && $.fn.jquery ? $.fn.jquery :
+ $.zepto ? 'zepto' : $.ender ? 'ender' : true
+ };
+ if (typeof root.Deno !== 'undefined') {
+ info.deno = _.pick(root.Deno, 'version', 'build');
+ } else if (typeof root.process !== 'undefined') {
+ info.process = _.pick(root.process, 'version', 'platform', 'arch');
+ } else if (typeof root.navigator !== 'undefined') {
+ info.navigator = _.pick(root.navigator, 'userAgent', 'platform', 'webdriver');
+ }
+ /* eslint-disable-next-line no-console */
+ console.debug('Backbone debug info: ', JSON.stringify(info, null, 4));
+ return info;
+};
diff --git a/package-lock.json b/package-lock.json
index b6b937bf9..38c0e4cc8 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -22,6 +22,7 @@
"phantomjs-prebuilt": "^2.1.7",
"qunit": "^2.17.2",
"replace-in-file": "^7.0.1",
+ "rollup": "^3.28.1",
"uglify-js": "^3.14.5"
}
},
@@ -2090,6 +2091,20 @@
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
"dev": true
},
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
"node_modules/function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
@@ -2931,20 +2946,6 @@
"node": ">=8"
}
},
- "node_modules/karma/node_modules/fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "dev": true,
- "hasInstallScript": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
- },
"node_modules/karma/node_modules/glob-parent": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
@@ -4446,6 +4447,22 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/rollup": {
+ "version": "3.28.1",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.28.1.tgz",
+ "integrity": "sha512-R9OMQmIHJm9znrU3m3cpE8uhN0fGdXiawME7aZIpQqvpS/85+Vt1Hq1/yVIcYfOmaQiHjvXkQAoJukvLpau6Yw==",
+ "dev": true,
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=14.18.0",
+ "npm": ">=8.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
"node_modules/safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
@@ -7322,6 +7339,13 @@
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
"dev": true
},
+ "fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "dev": true,
+ "optional": true
+ },
"function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
@@ -7969,13 +7993,6 @@
"to-regex-range": "^5.0.1"
}
},
- "fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "dev": true,
- "optional": true
- },
"glob-parent": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
@@ -9128,6 +9145,15 @@
"glob": "^7.1.3"
}
},
+ "rollup": {
+ "version": "3.28.1",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.28.1.tgz",
+ "integrity": "sha512-R9OMQmIHJm9znrU3m3cpE8uhN0fGdXiawME7aZIpQqvpS/85+Vt1Hq1/yVIcYfOmaQiHjvXkQAoJukvLpau6Yw==",
+ "dev": true,
+ "requires": {
+ "fsevents": "~2.3.2"
+ }
+ },
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
diff --git a/package.json b/package.json
index 61a230765..86fff0ec0 100644
--- a/package.json
+++ b/package.json
@@ -26,16 +26,18 @@
"phantomjs-prebuilt": "^2.1.7",
"qunit": "^2.17.2",
"replace-in-file": "^7.0.1",
+ "rollup": "^3.28.1",
"uglify-js": "^3.14.5"
},
"scripts": {
"test": "karma start && coffee test/model.coffee && npm run lint",
"build": "uglifyjs backbone.js --mangle --source-map url=backbone-min.js.map -o backbone-min.js",
+ "build-debug": "npx rollup -e backbone -f umd -g backbone:Backbone -n Backbone.debugInfo -o debug-info.js --no-strict modules/debug-info.js",
"alias-sourcemap": "cpy --rename=backbone-min.map backbone-min.js.map .",
"doc": "docco backbone.js && docco examples/todos/todos.js examples/backbone.localStorage.js",
- "lint": "eslint backbone.js test/*.js",
- "mark-release": "replace-in-file MARK_DEVELOPMENT MARK_RELEASE backbone.js",
- "mark-develop": "replace-in-file MARK_RELEASE MARK_DEVELOPMENT backbone.js",
+ "lint": "eslint backbone.js test/*.js modules/*.js",
+ "mark-release": "replace-in-file MARK_DEVELOPMENT MARK_RELEASE modules/debug-info.js && npm run build-debug",
+ "mark-develop": "replace-in-file MARK_RELEASE MARK_DEVELOPMENT modules/debug-info.js && npm run build-debug",
"prepublishOnly": "npm run test && npm run mark-release && npm run build && npm run alias-sourcemap && npm run doc && git add -u && npm run mark-develop"
},
"main": "backbone.js",
@@ -50,6 +52,9 @@
"backbone-min.js",
"backbone-min.js.map",
"backbone-min.map",
- "LICENSE"
+ "debug-info.js",
+ "LICENSE",
+ "modules/debug-info.js",
+ "modules/package.json"
]
}
diff --git a/test/index.html b/test/index.html
index 428058615..4769d8ad4 100644
--- a/test/index.html
+++ b/test/index.html
@@ -11,6 +11,7 @@
+
From 07cc274087ece80198cf836410ffa143af21d42d Mon Sep 17 00:00:00 2001
From: Julian Gonggrijp
Date: Tue, 19 Sep 2023 16:20:15 +0200
Subject: [PATCH 23/26] Document debugInfo
---
index.html | 37 +++++++++++++++++++++++++++++++++++++
1 file changed, 37 insertions(+)
diff --git a/index.html b/index.html
index 61ba8e348..94b80191f 100644
--- a/index.html
+++ b/index.html
@@ -486,6 +486,7 @@
@@ -3311,6 +3312,42 @@ Utility
Backbone.$ = require('jquery');
+
+ debugInfo();
+
+ In the unfortunate event that you need to submit a
+ bug
+ report, this function makes it easier to provide detailed information
+ about your setup. It prints a JSON object with version information about
+ Backbone and its dependencies through console.debug. It also
+ returns this object in case you want to inspect it in code.
+
+
+
+ debugInfo comes in a separate module that ships with
+ the edge version and releases later than 1.5.0.
+ It is available in UMD format under the same prefix
+ as backbone.js, but with debug-info.js as the file name.
+ It is also experimentally available in ES module format
+ under backbone/modules/.
+
+
+
+ <!-- browser embeds -->
+ <script src="some-path-or-url/backbone.js"></script>
+ <script src="some-path-or-url/debug-info.js"></script>
+ <script>
+ Backbone.debugInfo();
+ </script>
+
+ // CommonJS
+ require('backbone/debug-info.js')();
+
+ // ESM
+ import debugInfo from 'backbone/modules/debug-info.js';
+ debugInfo();
+
+
F.A.Q.
From be262159370c02cd6134193ed2a669c597a76642 Mon Sep 17 00:00:00 2001
From: Julian Gonggrijp
Date: Tue, 19 Sep 2023 17:04:23 +0200
Subject: [PATCH 24/26] Get new debugInfo module to pass linting
---
modules/.eslintrc | 15 +
modules/debug-info.js | 2 +-
package-lock.json | 1961 ++++++++++++++++++++++++++++++++++++++++-
package.json | 1 +
4 files changed, 1940 insertions(+), 39 deletions(-)
create mode 100644 modules/.eslintrc
diff --git a/modules/.eslintrc b/modules/.eslintrc
new file mode 100644
index 000000000..78681e5fa
--- /dev/null
+++ b/modules/.eslintrc
@@ -0,0 +1,15 @@
+{
+ "parserOptions": {
+ "ecmaVersion": 6,
+ "sourceType": "module",
+ },
+ "plugins": [
+ "import"
+ ],
+ "extends": [
+ "plugin:import/errors"
+ ],
+ "rules": {
+ "import/no-unresolved": 0
+ }
+}
diff --git a/modules/debug-info.js b/modules/debug-info.js
index d367a06d9..fca6f356c 100644
--- a/modules/debug-info.js
+++ b/modules/debug-info.js
@@ -28,4 +28,4 @@ export default function() {
/* eslint-disable-next-line no-console */
console.debug('Backbone debug info: ', JSON.stringify(info, null, 4));
return info;
-};
+}
diff --git a/package-lock.json b/package-lock.json
index 38c0e4cc8..2a3e37578 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -16,6 +16,7 @@
"cpy-cli": "^3.1.1",
"docco": "^0.9.1",
"eslint": "^8.7.0",
+ "eslint-plugin-import": "^2.28.1",
"karma": "^6.3.11",
"karma-phantomjs-launcher": "^1.0.0",
"karma-qunit": "^4.1.2",
@@ -295,6 +296,12 @@
"@types/node": "*"
}
},
+ "node_modules/@types/json5": {
+ "version": "0.0.29",
+ "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
+ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
+ "dev": true
+ },
"node_modules/@types/minimatch": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz",
@@ -439,6 +446,38 @@
"node": ">=0.10.0"
}
},
+ "node_modules/array-buffer-byte-length": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz",
+ "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "is-array-buffer": "^3.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array-includes": {
+ "version": "3.1.7",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz",
+ "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "get-intrinsic": "^1.2.1",
+ "is-string": "^1.0.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/array-union": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
@@ -469,6 +508,82 @@
"node": ">=0.10.0"
}
},
+ "node_modules/array.prototype.findlastindex": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz",
+ "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "es-shim-unscopables": "^1.0.0",
+ "get-intrinsic": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.flat": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz",
+ "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "es-shim-unscopables": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.flatmap": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz",
+ "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "es-shim-unscopables": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/arraybuffer.prototype.slice": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz",
+ "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==",
+ "dev": true,
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.0",
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "get-intrinsic": "^1.2.1",
+ "is-array-buffer": "^3.0.2",
+ "is-shared-array-buffer": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/arrify": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
@@ -523,6 +638,18 @@
"node": ">= 4.5.0"
}
},
+ "node_modules/available-typed-arrays": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
+ "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/aws-sign2": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
@@ -709,6 +836,19 @@
"node": ">=0.10.0"
}
},
+ "node_modules/call-bind": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/call-me-maybe": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz",
@@ -1202,6 +1342,37 @@
"integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
"dev": true
},
+ "node_modules/define-data-property": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz",
+ "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.2.1",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/define-properties": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
+ "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
+ "dev": true,
+ "dependencies": {
+ "define-data-property": "^1.0.1",
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/define-property": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
@@ -1405,6 +1576,99 @@
"is-arrayish": "^0.2.1"
}
},
+ "node_modules/es-abstract": {
+ "version": "1.22.2",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz",
+ "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==",
+ "dev": true,
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.0",
+ "arraybuffer.prototype.slice": "^1.0.2",
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "es-set-tostringtag": "^2.0.1",
+ "es-to-primitive": "^1.2.1",
+ "function.prototype.name": "^1.1.6",
+ "get-intrinsic": "^1.2.1",
+ "get-symbol-description": "^1.0.0",
+ "globalthis": "^1.0.3",
+ "gopd": "^1.0.1",
+ "has": "^1.0.3",
+ "has-property-descriptors": "^1.0.0",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.5",
+ "is-array-buffer": "^3.0.2",
+ "is-callable": "^1.2.7",
+ "is-negative-zero": "^2.0.2",
+ "is-regex": "^1.1.4",
+ "is-shared-array-buffer": "^1.0.2",
+ "is-string": "^1.0.7",
+ "is-typed-array": "^1.1.12",
+ "is-weakref": "^1.0.2",
+ "object-inspect": "^1.12.3",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.4",
+ "regexp.prototype.flags": "^1.5.1",
+ "safe-array-concat": "^1.0.1",
+ "safe-regex-test": "^1.0.0",
+ "string.prototype.trim": "^1.2.8",
+ "string.prototype.trimend": "^1.0.7",
+ "string.prototype.trimstart": "^1.0.7",
+ "typed-array-buffer": "^1.0.0",
+ "typed-array-byte-length": "^1.0.0",
+ "typed-array-byte-offset": "^1.0.0",
+ "typed-array-length": "^1.0.4",
+ "unbox-primitive": "^1.0.2",
+ "which-typed-array": "^1.1.11"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/es-set-tostringtag": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz",
+ "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.1.3",
+ "has": "^1.0.3",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-shim-unscopables": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz",
+ "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==",
+ "dev": true,
+ "dependencies": {
+ "has": "^1.0.3"
+ }
+ },
+ "node_modules/es-to-primitive": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "dev": true,
+ "dependencies": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/es6-promise": {
"version": "4.2.8",
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz",
@@ -1490,6 +1754,122 @@
"url": "https://opencollective.com/eslint"
}
},
+ "node_modules/eslint-import-resolver-node": {
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz",
+ "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^3.2.7",
+ "is-core-module": "^2.13.0",
+ "resolve": "^1.22.4"
+ }
+ },
+ "node_modules/eslint-import-resolver-node/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-import-resolver-node/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true
+ },
+ "node_modules/eslint-module-utils": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz",
+ "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^3.2.7"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependenciesMeta": {
+ "eslint": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-module-utils/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-module-utils/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true
+ },
+ "node_modules/eslint-plugin-import": {
+ "version": "2.28.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz",
+ "integrity": "sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==",
+ "dev": true,
+ "dependencies": {
+ "array-includes": "^3.1.6",
+ "array.prototype.findlastindex": "^1.2.2",
+ "array.prototype.flat": "^1.3.1",
+ "array.prototype.flatmap": "^1.3.1",
+ "debug": "^3.2.7",
+ "doctrine": "^2.1.0",
+ "eslint-import-resolver-node": "^0.3.7",
+ "eslint-module-utils": "^2.8.0",
+ "has": "^1.0.3",
+ "is-core-module": "^2.13.0",
+ "is-glob": "^4.0.3",
+ "minimatch": "^3.1.2",
+ "object.fromentries": "^2.0.6",
+ "object.groupby": "^1.0.0",
+ "object.values": "^1.1.6",
+ "semver": "^6.3.1",
+ "tsconfig-paths": "^3.14.2"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependencies": {
+ "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true
+ },
"node_modules/eslint-scope": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz",
@@ -2015,6 +2395,15 @@
}
}
},
+ "node_modules/for-each": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
+ "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+ "dev": true,
+ "dependencies": {
+ "is-callable": "^1.1.3"
+ }
+ },
"node_modules/for-in": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
@@ -2111,12 +2500,39 @@
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
"dev": true
},
+ "node_modules/function.prototype.name": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz",
+ "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "functions-have-names": "^1.2.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/functional-red-black-tree": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
"integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
"dev": true
},
+ "node_modules/functions-have-names": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
+ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/get-caller-file": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
@@ -2126,6 +2542,37 @@
"node": "6.* || 8.* || >= 10.*"
}
},
+ "node_modules/get-intrinsic": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz",
+ "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-symbol-description": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
+ "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/get-value": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
@@ -2207,6 +2654,21 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/globalthis": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz",
+ "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==",
+ "dev": true,
+ "dependencies": {
+ "define-properties": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/globalyzer": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz",
@@ -2247,6 +2709,18 @@
"integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==",
"dev": true
},
+ "node_modules/gopd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.1.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/graceful-fs": {
"version": "4.2.9",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz",
@@ -2297,6 +2771,15 @@
"node": ">= 0.4.0"
}
},
+ "node_modules/has-bigints": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
+ "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -2330,6 +2813,57 @@
"node": ">=0.10.0"
}
},
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
+ "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.1.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
+ "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-tostringtag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
+ "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
+ "dev": true,
+ "dependencies": {
+ "has-symbols": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/has-value": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
@@ -2513,6 +3047,20 @@
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
"dev": true
},
+ "node_modules/internal-slot": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz",
+ "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.2.0",
+ "has": "^1.0.3",
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/is-accessor-descriptor": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
@@ -2525,22 +3073,76 @@
"node": ">=0.10.0"
}
},
+ "node_modules/is-array-buffer": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz",
+ "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.2.0",
+ "is-typed-array": "^1.1.10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-arrayish": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
"integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
"dev": true
},
+ "node_modules/is-bigint": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
+ "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+ "dev": true,
+ "dependencies": {
+ "has-bigints": "^1.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-boolean-object": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
+ "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
"dev": true
},
+ "node_modules/is-callable": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
+ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-core-module": {
- "version": "2.8.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz",
- "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==",
+ "version": "2.13.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz",
+ "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==",
"dev": true,
"dependencies": {
"has": "^1.0.3"
@@ -2561,6 +3163,21 @@
"node": ">=0.10.0"
}
},
+ "node_modules/is-date-object": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+ "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-descriptor": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
@@ -2617,6 +3234,18 @@
"node": ">=0.10.0"
}
},
+ "node_modules/is-negative-zero": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
+ "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-number": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
@@ -2629,6 +3258,21 @@
"node": ">=0.10.0"
}
},
+ "node_modules/is-number-object": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
+ "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-number/node_modules/kind-of": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
@@ -2662,6 +3306,34 @@
"node": ">=0.10.0"
}
},
+ "node_modules/is-regex": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
+ "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-shared-array-buffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
+ "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-stream": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
@@ -2671,12 +3343,69 @@
"node": ">=0.10.0"
}
},
+ "node_modules/is-string": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
+ "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-symbol": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
+ "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+ "dev": true,
+ "dependencies": {
+ "has-symbols": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-typed-array": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz",
+ "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==",
+ "dev": true,
+ "dependencies": {
+ "which-typed-array": "^1.1.11"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
"dev": true
},
+ "node_modules/is-weakref": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
+ "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-windows": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
@@ -2779,6 +3508,18 @@
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
"dev": true
},
+ "node_modules/json5": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
+ "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
"node_modules/jsonfile": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
@@ -3322,9 +4063,9 @@
}
},
"node_modules/minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
"dependencies": {
"brace-expansion": "^1.1.7"
@@ -3569,6 +4310,24 @@
"node": ">=0.10.0"
}
},
+ "node_modules/object-inspect": {
+ "version": "1.12.3",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
+ "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/object-visit": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
@@ -3581,6 +4340,53 @@
"node": ">=0.10.0"
}
},
+ "node_modules/object.assign": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz",
+ "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "has-symbols": "^1.0.3",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object.fromentries": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz",
+ "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object.groupby": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz",
+ "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "get-intrinsic": "^1.2.1"
+ }
+ },
"node_modules/object.pick": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
@@ -3593,6 +4399,23 @@
"node": ">=0.10.0"
}
},
+ "node_modules/object.values": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz",
+ "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/on-finished": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
@@ -4171,6 +4994,23 @@
"node": ">=0.10.0"
}
},
+ "node_modules/regexp.prototype.flags": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz",
+ "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "set-function-name": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/regexpp": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
@@ -4385,12 +5225,12 @@
"dev": true
},
"node_modules/resolve": {
- "version": "1.22.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
- "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
+ "version": "1.22.6",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz",
+ "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==",
"dev": true,
"dependencies": {
- "is-core-module": "^2.8.1",
+ "is-core-module": "^2.13.0",
"path-parse": "^1.0.7",
"supports-preserve-symlinks-flag": "^1.0.0"
},
@@ -4463,6 +5303,30 @@
"fsevents": "~2.3.2"
}
},
+ "node_modules/safe-array-concat": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz",
+ "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.2.1",
+ "has-symbols": "^1.0.3",
+ "isarray": "^2.0.5"
+ },
+ "engines": {
+ "node": ">=0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/safe-array-concat/node_modules/isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "dev": true
+ },
"node_modules/safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
@@ -4478,6 +5342,20 @@
"ret": "~0.1.10"
}
},
+ "node_modules/safe-regex-test": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz",
+ "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.3",
+ "is-regex": "^1.1.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
@@ -4485,14 +5363,28 @@
"dev": true
},
"node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
"bin": {
"semver": "bin/semver.js"
}
},
+ "node_modules/set-function-name": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz",
+ "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==",
+ "dev": true,
+ "dependencies": {
+ "define-data-property": "^1.0.1",
+ "functions-have-names": "^1.2.3",
+ "has-property-descriptors": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/set-value": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
@@ -4556,6 +5448,20 @@
"node": ">=8"
}
},
+ "node_modules/side-channel": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/slash": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
@@ -5111,6 +6017,51 @@
"node": ">=8"
}
},
+ "node_modules/string.prototype.trim": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz",
+ "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimend": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz",
+ "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimstart": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz",
+ "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
@@ -5123,6 +6074,15 @@
"node": ">=8"
}
},
+ "node_modules/strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/strip-indent": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
@@ -5288,6 +6248,18 @@
"node": ">=8"
}
},
+ "node_modules/tsconfig-paths": {
+ "version": "3.14.2",
+ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz",
+ "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==",
+ "dev": true,
+ "dependencies": {
+ "@types/json5": "^0.0.29",
+ "json5": "^1.0.2",
+ "minimist": "^1.2.6",
+ "strip-bom": "^3.0.0"
+ }
+ },
"node_modules/tunnel-agent": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
@@ -5363,6 +6335,71 @@
"node": ">= 0.6"
}
},
+ "node_modules/typed-array-buffer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz",
+ "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.2.1",
+ "is-typed-array": "^1.1.10"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/typed-array-byte-length": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz",
+ "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "has-proto": "^1.0.1",
+ "is-typed-array": "^1.1.10"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typed-array-byte-offset": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz",
+ "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==",
+ "dev": true,
+ "dependencies": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "has-proto": "^1.0.1",
+ "is-typed-array": "^1.1.10"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typed-array-length": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz",
+ "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "is-typed-array": "^1.1.9"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/typedarray": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
@@ -5400,6 +6437,21 @@
"node": ">=0.8.0"
}
},
+ "node_modules/unbox-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
+ "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-bigints": "^1.0.2",
+ "has-symbols": "^1.0.3",
+ "which-boxed-primitive": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/underscore": {
"version": "1.13.2",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.2.tgz",
@@ -5620,6 +6672,41 @@
"which": "bin/which"
}
},
+ "node_modules/which-boxed-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
+ "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+ "dev": true,
+ "dependencies": {
+ "is-bigint": "^1.0.1",
+ "is-boolean-object": "^1.1.0",
+ "is-number-object": "^1.0.4",
+ "is-string": "^1.0.5",
+ "is-symbol": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-typed-array": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz",
+ "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==",
+ "dev": true,
+ "dependencies": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/word-wrap": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
@@ -5935,6 +7022,12 @@
"@types/node": "*"
}
},
+ "@types/json5": {
+ "version": "0.0.29",
+ "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
+ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
+ "dev": true
+ },
"@types/minimatch": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz",
@@ -6043,6 +7136,29 @@
"integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
"dev": true
},
+ "array-buffer-byte-length": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz",
+ "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "is-array-buffer": "^3.0.1"
+ }
+ },
+ "array-includes": {
+ "version": "3.1.7",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz",
+ "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "get-intrinsic": "^1.2.1",
+ "is-string": "^1.0.7"
+ }
+ },
"array-union": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
@@ -6064,6 +7180,58 @@
"integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
"dev": true
},
+ "array.prototype.findlastindex": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz",
+ "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "es-shim-unscopables": "^1.0.0",
+ "get-intrinsic": "^1.2.1"
+ }
+ },
+ "array.prototype.flat": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz",
+ "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "es-shim-unscopables": "^1.0.0"
+ }
+ },
+ "array.prototype.flatmap": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz",
+ "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "es-shim-unscopables": "^1.0.0"
+ }
+ },
+ "arraybuffer.prototype.slice": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz",
+ "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==",
+ "dev": true,
+ "requires": {
+ "array-buffer-byte-length": "^1.0.0",
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "get-intrinsic": "^1.2.1",
+ "is-array-buffer": "^3.0.2",
+ "is-shared-array-buffer": "^1.0.2"
+ }
+ },
"arrify": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
@@ -6103,6 +7271,12 @@
"integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
"dev": true
},
+ "available-typed-arrays": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
+ "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
+ "dev": true
+ },
"aws-sign2": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
@@ -6260,6 +7434,16 @@
"unset-value": "^1.0.0"
}
},
+ "call-bind": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.0.2"
+ }
+ },
"call-me-maybe": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz",
@@ -6639,6 +7823,28 @@
"integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
"dev": true
},
+ "define-data-property": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz",
+ "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==",
+ "dev": true,
+ "requires": {
+ "get-intrinsic": "^1.2.1",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.0"
+ }
+ },
+ "define-properties": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
+ "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
+ "dev": true,
+ "requires": {
+ "define-data-property": "^1.0.1",
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
+ }
+ },
"define-property": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
@@ -6805,6 +8011,84 @@
"is-arrayish": "^0.2.1"
}
},
+ "es-abstract": {
+ "version": "1.22.2",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz",
+ "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==",
+ "dev": true,
+ "requires": {
+ "array-buffer-byte-length": "^1.0.0",
+ "arraybuffer.prototype.slice": "^1.0.2",
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "es-set-tostringtag": "^2.0.1",
+ "es-to-primitive": "^1.2.1",
+ "function.prototype.name": "^1.1.6",
+ "get-intrinsic": "^1.2.1",
+ "get-symbol-description": "^1.0.0",
+ "globalthis": "^1.0.3",
+ "gopd": "^1.0.1",
+ "has": "^1.0.3",
+ "has-property-descriptors": "^1.0.0",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.5",
+ "is-array-buffer": "^3.0.2",
+ "is-callable": "^1.2.7",
+ "is-negative-zero": "^2.0.2",
+ "is-regex": "^1.1.4",
+ "is-shared-array-buffer": "^1.0.2",
+ "is-string": "^1.0.7",
+ "is-typed-array": "^1.1.12",
+ "is-weakref": "^1.0.2",
+ "object-inspect": "^1.12.3",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.4",
+ "regexp.prototype.flags": "^1.5.1",
+ "safe-array-concat": "^1.0.1",
+ "safe-regex-test": "^1.0.0",
+ "string.prototype.trim": "^1.2.8",
+ "string.prototype.trimend": "^1.0.7",
+ "string.prototype.trimstart": "^1.0.7",
+ "typed-array-buffer": "^1.0.0",
+ "typed-array-byte-length": "^1.0.0",
+ "typed-array-byte-offset": "^1.0.0",
+ "typed-array-length": "^1.0.4",
+ "unbox-primitive": "^1.0.2",
+ "which-typed-array": "^1.1.11"
+ }
+ },
+ "es-set-tostringtag": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz",
+ "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==",
+ "dev": true,
+ "requires": {
+ "get-intrinsic": "^1.1.3",
+ "has": "^1.0.3",
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "es-shim-unscopables": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz",
+ "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==",
+ "dev": true,
+ "requires": {
+ "has": "^1.0.3"
+ }
+ },
+ "es-to-primitive": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "dev": true,
+ "requires": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ }
+ },
"es6-promise": {
"version": "4.2.8",
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz",
@@ -6873,27 +8157,132 @@
},
"dependencies": {
"debug": {
- "version": "4.3.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
- "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
+ "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dev": true,
+ "requires": {
+ "is-glob": "^4.0.3"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ }
+ }
+ },
+ "eslint-import-resolver-node": {
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz",
+ "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==",
+ "dev": true,
+ "requires": {
+ "debug": "^3.2.7",
+ "is-core-module": "^2.13.0",
+ "resolve": "^1.22.4"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true
+ }
+ }
+ },
+ "eslint-module-utils": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz",
+ "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==",
+ "dev": true,
+ "requires": {
+ "debug": "^3.2.7"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
"dev": true,
"requires": {
- "ms": "2.1.2"
+ "ms": "^2.1.1"
}
},
- "glob-parent": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
- "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true
+ }
+ }
+ },
+ "eslint-plugin-import": {
+ "version": "2.28.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz",
+ "integrity": "sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==",
+ "dev": true,
+ "requires": {
+ "array-includes": "^3.1.6",
+ "array.prototype.findlastindex": "^1.2.2",
+ "array.prototype.flat": "^1.3.1",
+ "array.prototype.flatmap": "^1.3.1",
+ "debug": "^3.2.7",
+ "doctrine": "^2.1.0",
+ "eslint-import-resolver-node": "^0.3.7",
+ "eslint-module-utils": "^2.8.0",
+ "has": "^1.0.3",
+ "is-core-module": "^2.13.0",
+ "is-glob": "^4.0.3",
+ "minimatch": "^3.1.2",
+ "object.fromentries": "^2.0.6",
+ "object.groupby": "^1.0.0",
+ "object.values": "^1.1.6",
+ "semver": "^6.3.1",
+ "tsconfig-paths": "^3.14.2"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
"dev": true,
"requires": {
- "is-glob": "^4.0.3"
+ "ms": "^2.1.1"
+ }
+ },
+ "doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2"
}
},
"ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"dev": true
}
}
@@ -7278,6 +8667,15 @@
"integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==",
"dev": true
},
+ "for-each": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
+ "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+ "dev": true,
+ "requires": {
+ "is-callable": "^1.1.3"
+ }
+ },
"for-in": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
@@ -7352,18 +8750,58 @@
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
"dev": true
},
+ "function.prototype.name": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz",
+ "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "functions-have-names": "^1.2.3"
+ }
+ },
"functional-red-black-tree": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
"integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
"dev": true
},
+ "functions-have-names": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
+ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+ "dev": true
+ },
"get-caller-file": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
"dev": true
},
+ "get-intrinsic": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz",
+ "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3"
+ }
+ },
+ "get-symbol-description": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
+ "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.1"
+ }
+ },
"get-value": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
@@ -7429,6 +8867,15 @@
"type-fest": "^0.20.2"
}
},
+ "globalthis": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz",
+ "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3"
+ }
+ },
"globalyzer": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz",
@@ -7465,6 +8912,15 @@
"integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==",
"dev": true
},
+ "gopd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "dev": true,
+ "requires": {
+ "get-intrinsic": "^1.1.3"
+ }
+ },
"graceful-fs": {
"version": "4.2.9",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz",
@@ -7502,6 +8958,12 @@
"function-bind": "^1.1.1"
}
},
+ "has-bigints": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
+ "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
+ "dev": true
+ },
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -7528,6 +8990,36 @@
}
}
},
+ "has-property-descriptors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
+ "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
+ "dev": true,
+ "requires": {
+ "get-intrinsic": "^1.1.1"
+ }
+ },
+ "has-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
+ "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
+ "dev": true
+ },
+ "has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "dev": true
+ },
+ "has-tostringtag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
+ "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
+ "dev": true,
+ "requires": {
+ "has-symbols": "^1.0.2"
+ }
+ },
"has-value": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
@@ -7670,6 +9162,17 @@
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
"dev": true
},
+ "internal-slot": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz",
+ "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==",
+ "dev": true,
+ "requires": {
+ "get-intrinsic": "^1.2.0",
+ "has": "^1.0.3",
+ "side-channel": "^1.0.4"
+ }
+ },
"is-accessor-descriptor": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
@@ -7679,22 +9182,58 @@
"kind-of": "^6.0.0"
}
},
+ "is-array-buffer": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz",
+ "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.2.0",
+ "is-typed-array": "^1.1.10"
+ }
+ },
"is-arrayish": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
"integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
"dev": true
},
+ "is-bigint": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
+ "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+ "dev": true,
+ "requires": {
+ "has-bigints": "^1.0.1"
+ }
+ },
+ "is-boolean-object": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
+ "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ }
+ },
"is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
"dev": true
},
+ "is-callable": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
+ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
+ "dev": true
+ },
"is-core-module": {
- "version": "2.8.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz",
- "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==",
+ "version": "2.13.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz",
+ "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==",
"dev": true,
"requires": {
"has": "^1.0.3"
@@ -7709,6 +9248,15 @@
"kind-of": "^6.0.0"
}
},
+ "is-date-object": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+ "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+ "dev": true,
+ "requires": {
+ "has-tostringtag": "^1.0.0"
+ }
+ },
"is-descriptor": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
@@ -7750,6 +9298,12 @@
"is-extglob": "^2.1.1"
}
},
+ "is-negative-zero": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
+ "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
+ "dev": true
+ },
"is-number": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
@@ -7770,6 +9324,15 @@
}
}
},
+ "is-number-object": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
+ "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
+ "dev": true,
+ "requires": {
+ "has-tostringtag": "^1.0.0"
+ }
+ },
"is-plain-obj": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
@@ -7785,18 +9348,73 @@
"isobject": "^3.0.1"
}
},
+ "is-regex": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
+ "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-shared-array-buffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
+ "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2"
+ }
+ },
"is-stream": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
"integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
"dev": true
},
+ "is-string": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
+ "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+ "dev": true,
+ "requires": {
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-symbol": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
+ "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+ "dev": true,
+ "requires": {
+ "has-symbols": "^1.0.2"
+ }
+ },
+ "is-typed-array": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz",
+ "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==",
+ "dev": true,
+ "requires": {
+ "which-typed-array": "^1.1.11"
+ }
+ },
"is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
"dev": true
},
+ "is-weakref": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
+ "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2"
+ }
+ },
"is-windows": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
@@ -7884,6 +9502,15 @@
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
"dev": true
},
+ "json5": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
+ "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
+ "dev": true,
+ "requires": {
+ "minimist": "^1.2.0"
+ }
+ },
"jsonfile": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
@@ -8288,9 +9915,9 @@
"dev": true
},
"minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
"requires": {
"brace-expansion": "^1.1.7"
@@ -8489,6 +10116,18 @@
}
}
},
+ "object-inspect": {
+ "version": "1.12.3",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
+ "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
+ "dev": true
+ },
+ "object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true
+ },
"object-visit": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
@@ -8498,6 +10137,41 @@
"isobject": "^3.0.0"
}
},
+ "object.assign": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz",
+ "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "has-symbols": "^1.0.3",
+ "object-keys": "^1.1.1"
+ }
+ },
+ "object.fromentries": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz",
+ "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ }
+ },
+ "object.groupby": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz",
+ "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "get-intrinsic": "^1.2.1"
+ }
+ },
"object.pick": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
@@ -8507,6 +10181,17 @@
"isobject": "^3.0.1"
}
},
+ "object.values": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz",
+ "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ }
+ },
"on-finished": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
@@ -8944,6 +10629,17 @@
"safe-regex": "^1.1.0"
}
},
+ "regexp.prototype.flags": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz",
+ "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "set-function-name": "^2.0.0"
+ }
+ },
"regexpp": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
@@ -9102,12 +10798,12 @@
"dev": true
},
"resolve": {
- "version": "1.22.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
- "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
+ "version": "1.22.6",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz",
+ "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==",
"dev": true,
"requires": {
- "is-core-module": "^2.8.1",
+ "is-core-module": "^2.13.0",
"path-parse": "^1.0.7",
"supports-preserve-symlinks-flag": "^1.0.0"
}
@@ -9154,6 +10850,26 @@
"fsevents": "~2.3.2"
}
},
+ "safe-array-concat": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz",
+ "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.2.1",
+ "has-symbols": "^1.0.3",
+ "isarray": "^2.0.5"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "dev": true
+ }
+ }
+ },
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
@@ -9169,6 +10885,17 @@
"ret": "~0.1.10"
}
},
+ "safe-regex-test": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz",
+ "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.3",
+ "is-regex": "^1.1.4"
+ }
+ },
"safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
@@ -9176,11 +10903,22 @@
"dev": true
},
"semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true
},
+ "set-function-name": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz",
+ "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==",
+ "dev": true,
+ "requires": {
+ "define-data-property": "^1.0.1",
+ "functions-have-names": "^1.2.3",
+ "has-property-descriptors": "^1.0.0"
+ }
+ },
"set-value": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
@@ -9231,6 +10969,17 @@
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
"dev": true
},
+ "side-channel": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
+ }
+ },
"slash": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
@@ -9679,6 +11428,39 @@
"strip-ansi": "^6.0.1"
}
},
+ "string.prototype.trim": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz",
+ "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ }
+ },
+ "string.prototype.trimend": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz",
+ "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ }
+ },
+ "string.prototype.trimstart": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz",
+ "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ }
+ },
"strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
@@ -9688,6 +11470,12 @@
"ansi-regex": "^5.0.1"
}
},
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
+ "dev": true
+ },
"strip-indent": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
@@ -9813,6 +11601,18 @@
"integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==",
"dev": true
},
+ "tsconfig-paths": {
+ "version": "3.14.2",
+ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz",
+ "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==",
+ "dev": true,
+ "requires": {
+ "@types/json5": "^0.0.29",
+ "json5": "^1.0.2",
+ "minimist": "^1.2.6",
+ "strip-bom": "^3.0.0"
+ }
+ },
"tunnel-agent": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
@@ -9861,6 +11661,53 @@
"mime-types": "~2.1.24"
}
},
+ "typed-array-buffer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz",
+ "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.2.1",
+ "is-typed-array": "^1.1.10"
+ }
+ },
+ "typed-array-byte-length": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz",
+ "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "has-proto": "^1.0.1",
+ "is-typed-array": "^1.1.10"
+ }
+ },
+ "typed-array-byte-offset": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz",
+ "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==",
+ "dev": true,
+ "requires": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "has-proto": "^1.0.1",
+ "is-typed-array": "^1.1.10"
+ }
+ },
+ "typed-array-length": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz",
+ "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "is-typed-array": "^1.1.9"
+ }
+ },
"typedarray": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
@@ -9879,6 +11726,18 @@
"integrity": "sha512-qZukoSxOG0urUTvjc2ERMTcAy+BiFh3weWAkeurLwjrCba73poHmG3E36XEjd/JGukMzwTL7uCxZiAexj8ppvQ==",
"dev": true
},
+ "unbox-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
+ "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "has-bigints": "^1.0.2",
+ "has-symbols": "^1.0.3",
+ "which-boxed-primitive": "^1.0.2"
+ }
+ },
"underscore": {
"version": "1.13.2",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.2.tgz",
@@ -10057,6 +11916,32 @@
"isexe": "^2.0.0"
}
},
+ "which-boxed-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
+ "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+ "dev": true,
+ "requires": {
+ "is-bigint": "^1.0.1",
+ "is-boolean-object": "^1.1.0",
+ "is-number-object": "^1.0.4",
+ "is-string": "^1.0.5",
+ "is-symbol": "^1.0.3"
+ }
+ },
+ "which-typed-array": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz",
+ "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==",
+ "dev": true,
+ "requires": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-tostringtag": "^1.0.0"
+ }
+ },
"word-wrap": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
diff --git a/package.json b/package.json
index 86fff0ec0..f288e709a 100644
--- a/package.json
+++ b/package.json
@@ -20,6 +20,7 @@
"cpy-cli": "^3.1.1",
"docco": "^0.9.1",
"eslint": "^8.7.0",
+ "eslint-plugin-import": "^2.28.1",
"karma": "^6.3.11",
"karma-phantomjs-launcher": "^1.0.0",
"karma-qunit": "^4.1.2",
From 8c0916a7bdb638bef61bea0bdf16c25ba1dbf1e4 Mon Sep 17 00:00:00 2001
From: Oleg Vdovenko
Date: Tue, 23 Jan 2024 21:45:21 +0200
Subject: [PATCH 25/26] [FIX] wrong context passed in collection.create
---
backbone.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/backbone.js b/backbone.js
index c364267a1..4fdad1968 100644
--- a/backbone.js
+++ b/backbone.js
@@ -1085,7 +1085,7 @@
var success = options.success;
options.success = function(m, resp, callbackOpts) {
if (wait) {
- m.off('error', this._forwardPristineError, this);
+ m.off('error', collection._forwardPristineError, collection);
collection.add(m, callbackOpts);
}
if (success) success.call(callbackOpts.context, m, resp, callbackOpts);
From d981caa7bc7ab93fb97f780db5b6ddf88dee5f9e Mon Sep 17 00:00:00 2001
From: Julian Gonggrijp
Date: Tue, 23 Jan 2024 21:28:05 +0100
Subject: [PATCH 26/26] Add regression test for #4284
---
test/collection.js | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/test/collection.js b/test/collection.js
index adf16dfe9..4ceeaa6ac 100644
--- a/test/collection.js
+++ b/test/collection.js
@@ -674,6 +674,16 @@
this.ajaxSettings.success();
});
+ QUnit.test('successful create with wait:true drops special error listener (#4284)', function(assert) {
+ assert.expect(1);
+ var collection = new Backbone.Collection;
+ collection.url = '/test';
+ collection.on('error', function() { assert.ok(true); });
+ var model = collection.create({id: '1'}, {wait: true});
+ this.ajaxSettings.success();
+ model.trigger('error');
+ });
+
QUnit.test('failing create pre-existing with wait:true triggers once (#4262)', function(assert) {
assert.expect(1);
var model = new Backbone.Model;