diff --git a/.idea/TransferGo.iml b/.idea/TransferGo.iml new file mode 100644 index 0000000..8b8c395 --- /dev/null +++ b/.idea/TransferGo.iml @@ -0,0 +1,12 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 897db85..1cf43ac 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,5 +1,6 @@ +<<<<<<< HEAD \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..306c038 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 085da98..b4b0dd2 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -5,15 +5,7 @@ - - - - - - - - + @@ -32,12 +29,12 @@ - - - - - - + @@ -49,4 +46,15 @@ + + + \ No newline at end of file diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json deleted file mode 100644 index 3af884b..0000000 --- a/node_modules/.package-lock.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "TransferGo", - "lockfileVersion": 2, - "requires": true, - "packages": { - "node_modules/git": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/git/-/git-0.1.5.tgz", - "integrity": "sha512-N+bfOrXyKMU/fQtCj6D/U9MQOEN0DAA8TLHSLdUQRSWBOkeRvsjJHdrdkvcq05xO7GSDKWc3nDEGoTZ4DfCCSg==", - "dependencies": { - "mime": "1.2.9" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/mime": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.9.tgz", - "integrity": "sha512-WiLgbHTIq5AYUvU/Luli4mZ1bUcHpGNHyCsbl+KPMg4zt+XUDpQehWjuBjdLaEvDTinvKj/FgfQt3fPoT7j08g==" - } - } -} diff --git a/node_modules/git/.npmignore b/node_modules/git/.npmignore deleted file mode 100644 index 5501f32..0000000 --- a/node_modules/git/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -makefile -test/ diff --git a/node_modules/git/.travis.yml b/node_modules/git/.travis.yml deleted file mode 100644 index 3c6757d..0000000 --- a/node_modules/git/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - '0.10' - - '0.11' diff --git a/node_modules/git/README.md b/node_modules/git/README.md deleted file mode 100644 index f5ffd18..0000000 --- a/node_modules/git/README.md +++ /dev/null @@ -1,48 +0,0 @@ -[![build status](https://secure.travis-ci.org/christkv/node-git.png)](http://travis-ci.org/christkv/node-git) - -# Introduction - -This is a library for Git written in Node.js. It's as close a port of grit http://github.com/mojombo/grit. - -The idea is to allow for manipulation of git repositories by the node.js application. Not everything is -implemented directly in node-git. Some of the stuff is using the native git command line instead of -direct javascript code. Also it's fairly synchronous right now but that will hopefully change a little -by little over time as it gets more stable and I start using it in real life scenarios. - -## Github information - -The source code is available at http://github.com/christkv/node-git. -You can either clone the repository or download a tarball of the latest release. - -Once you have the source you can test the driver by running - - $ make test - -On windows: - - PS > node.exe .\node_modules\nodeunit\bin\nodeunit .\test - -## Examples - -For simple examples of usage look at the tests included in the repository. - -## Notes - -The current version is basic git support, don't expect everything to work as you expect it -off the bat. - -## License - - Copyright 2009 - 2010 Christian Amor Kvalheim. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/node_modules/git/benchmarks/benchmark.js b/node_modules/git/benchmarks/benchmark.js deleted file mode 100644 index 1000338..0000000 --- a/node_modules/git/benchmarks/benchmark.js +++ /dev/null @@ -1,150 +0,0 @@ - -var Repo = require('git/repo').Repo, - util = require('util'), - fs = require('fs'), - exec = require('child_process').exec; - -var number_of_executions = 30; - -var create_tmp_directory = function(clone_path, callback) { - var filename = 'git_test' + new Date().getTime().toString() + Math.round((Math.random(100000) * 300)).toString(); - var tmp_path = '/tmp/' + filename; - // Create directory - fs.mkdirSync(tmp_path, 0777); - // Copy the old directory to the new one - var child = exec('cp -R ' + clone_path + ' ' + tmp_path, function (error, stdout, stderr) { - if (error !== null) { - util.puts('exec error: ' + error); - return callback(error, null); - } - return callback(null, tmp_path); - }); -} - -var destroy_directory = function(directory, callback) { - // Copy the old directory to the new one - var child = exec('rm -rf ' + directory, function (error, stdout, stderr) { - if (error !== null) { - util.puts('exec error: ' + error); - return callback(error, null); - } - return callback(null, null); - }); -} - -var commit1 = '5e3ee1198672257164ce3fe31dea3e40848e68d5' -var commit2 = 'ca8a30f5a7f0f163bbe3b6f0abf18a6c83b0687a' - -var pack_object_function = function(repo) { - repo.commit('5e3ee1198672257164ce3fe31dea3e40848e68d5', function(err, commit) { - repo.tree('cd7422af5a2e0fff3e94d6fb1a8fff03b2841881', function(err, tree) { - repo.blob('4232d073306f01cf0b895864e5a5cfad7dd76fce', function(err, blob) { - commit.parents[0].parents[0].parents[0]; - }) - }) - }); -} - -var commits1_function = function(repo) { - repo.commits(function(err, commits) { - commits.length; - }) -} - -var commits2_function = function(repo) { - repo.commits('master', 15, function(err, log) { - log.length; - log.length; - log[0]; - repo.commits('testing', function(err, commits) { - commits.map(function(c) { return c.message; }); - }) - }) -} - -var big_revlist_function = function(repo) { - repo.commits('master', 200, function(err, commits) {}); -} - -var log_function = function(repo) { - repo.log('master', function(err, log) { - log.length; - log.length; - log[0]; - }) -} - -var diff_function = function(repo) { - repo.diff(commit1, commit2, function(err, diff) {}); -} - -var commit_diff_function = function(repo) { - repo.commit_diff(commit1, function(err, diff) {}); -} - -var heads_function = function(repo) { - repo.heads(function(err, heads) { - heads.map(function(b) { return b.commit.id; }); - }); -} - -var execute_process = function(type) { - var execute_function = null; - - // Check that we have the right function - if(type == "packobj") { - execute_function = pack_object_function; - } else if(type == "commits1") { - execute_function = commits1_function; - } else if(type == "commits2") { - execute_function = commits2_function; - } else if(type == "big_revlist") { - execute_function = big_revlist_function; - } else if(type == "log") { - execute_function = log_function; - } else if(type == "diff") { - execute_function = diff_function; - } else if(type == "commit_diff") { - execute_function = commit_diff_function; - } else if(type == "heads") { - execute_function = heads_function; - } - - // Ensure that we have an executable function - if(execute_function) { - // Creat temp directory - create_tmp_directory("/Users/christian.kvalheim/coding/checkouts/grit/test/dot_git", function(err, target_path) { - // Open the repo - new Repo(target_path + "/dot_git", {is_bare:true}, function(err, repo) { - var start_time = new Date(); - - // Execute the benchmark x number of times if a function is defined - for(var i = 0; i < number_of_executions; i++) { - execute_function(repo); - } - - var end_time = new Date(); - var total_miliseconds = end_time.getTime() - start_time.getTime(); - util.puts("[" + type + "]::executed in: " + (total_miliseconds/1000) + " seconds"); - // Delete the directory - destroy_directory(target_path, function(err, result) {}); - }); - }); - } -} - -if(process.argv.length > 2 && process.argv[2].match(/packobj|commits1|commits2|big_revlist|log|diff|commit_diff|heads|all/)) { - if(process.argv[2] == "all") { - var tests = ["packobj", "commits1", "commits2", "big_revlist", "log", "diff", "commit_diff", "heads"]; - // var tests = ["packobj", "commits1", "commits2", "big_revlist", "log"]; - tests.forEach(function(t) { - execute_process(t); - }) - } else { - execute_process(process.argv[2]); - } -} else { - util.puts("Please provide the benchmark you wish to run in the form ") -} - - diff --git a/node_modules/git/lib/diff/block.js b/node_modules/git/lib/diff/block.js deleted file mode 100644 index 847731a..0000000 --- a/node_modules/git/lib/diff/block.js +++ /dev/null @@ -1,33 +0,0 @@ -// A block is an operation removing, adding, or changing a group of items. -// Basically, this is just a list of changes, where each change adds or -// deletes a single item. Used by bin/ldiff. -var Block = exports.Block = function(chunk) { - this.changes = []; - this.insert = []; - this.remove = []; - var self = this; - - chunk.forEach(function(item) { - self.changes.push(item); - if(item.is_deleting()) self.remove.push(item); - if(item.is_adding()) self.insert.push(item); - }) - - Object.defineProperty(this, "diff_size", { get: function() { return self.insert.length - self.remove.length; }, enumerable: true}); - Object.defineProperty(this, "op", { get: function() { - var result = [self.remove.length == 0, self.insert.length == 0]; - - if(!result[0] && !result[1]) { - return "!"; - } else if(!result[0] && result[1]) { - return "-"; - } else if(result[0] && result[1]) { - return "+"; - } else { - return "^"; - } - }, enumerable: true}); -} - -Block.prototype.op = function() { -} \ No newline at end of file diff --git a/node_modules/git/lib/diff/callbacks.js b/node_modules/git/lib/diff/callbacks.js deleted file mode 100644 index 3008544..0000000 --- a/node_modules/git/lib/diff/callbacks.js +++ /dev/null @@ -1,311 +0,0 @@ -var ContextChange = require('./change').ContextChange, - Change = require('./change').Change; - -// This callback object implements the default set of callback events, which -// only returns the event itself. Note that //finished_a and //finished_b are -// not implemented -- I haven't yet figured out where they would be useful. -// -// Note that this is intended to be called as is, e.g., -DefaultCallbacks = exports.DefaultCallbacks = function() { -} - -// Called when two items match. -DefaultCallbacks.prototype.match = function(event) { - return event; -} - -// Called when the old value is discarded in favour of the new value. -DefaultCallbacks.prototype.discard_a = function(event) { - return event; -} - -// Called when the new value is discarded in favour of the old value. -DefaultCallbacks.prototype.discard_b = function(event) { - return event; -} - -// Called when both the old and new values have changed. -DefaultCallbacks.prototype.change = function(event) { - return event; -} - -// An alias for DefaultCallbacks that is used in Diff::LCS#traverse_sequences. -SequenceCallbacks = exports.SequenceCallbacks = DefaultCallbacks; -// An alias for DefaultCallbacks that is used in Diff::LCS#traverse_balanced. -BalancedCallbacks = exports.BalancedCallbacks = DefaultCallbacks; - -// This will produce a compound array of simple diff change objects. Each -// element in the //diffs array is a +hunk+ or +hunk+ array, where each -// element in each +hunk+ array is a single Change object representing the -// addition or removal of a single element from one of the two tested -// sequences. The +hunk+ provides the full context for the changes. -// -// diffs = Diff::LCS.diff(seq1, seq2) -// // This example shows a simplified array format. -// // [ [ [ '-', 0, 'a' ] ], // 1 -// // [ [ '+', 2, 'd' ] ], // 2 -// // [ [ '-', 4, 'h' ], // 3 -// // [ '+', 4, 'f' ] ], -// // [ [ '+', 6, 'k' ] ], // 4 -// // [ [ '-', 8, 'n' ], // 5 -// // [ '-', 9, 'p' ], -// // [ '+', 9, 'r' ], -// // [ '+', 10, 's' ], -// // [ '+', 11, 't' ] ] ] -// -// There are five hunks here. The first hunk says that the +a+ at position 0 -// of the first sequence should be deleted ('-'). The second hunk -// says that the +d+ at position 2 of the second sequence should be inserted -// ('+'). The third hunk says that the +h+ at position 4 of the -// first sequence should be removed and replaced with the +f+ from position 4 -// of the second sequence. The other two hunks are described similarly. -// -// === Use -// This callback object must be initialised and is used by the Diff::LCS//diff -// method. -// -// cbo = Diff::LCS::DiffCallbacks.new -// Diff::LCS.LCS(seq1, seq2, cbo) -// cbo.finish -// -// Note that the call to //finish is absolutely necessary, or the last set of -// changes will not be visible. Alternatively, can be used as: -// -// cbo = Diff::LCS::DiffCallbacks.new { |tcbo| Diff::LCS.LCS(seq1, seq2, tcbo) } -// -// The necessary //finish call will be made. -// -// === Simplified Array Format -// The simplified array format used in the example above can be obtained -// with: -// -// require 'pp' -// pp diffs.map { |e| e.map { |f| f.to_a } } -DiffCallbacks = exports.DiffCallbacks = function(block) { - this.hunk = []; - this.diffs = []; - - if(block != null) { - block(this); - this.finish(); - } -} - -// Finalizes the diff process. If an unprocessed hunk still exists, then it -// is appended to the diff list. -DiffCallbacks.prototype.finish = function() { - add_nonempty_hunk(this); -} - -DiffCallbacks.prototype.match = function(event) { - add_nonempty_hunk(this); -} - -DiffCallbacks.prototype.discard_a = function(event) { - this.hunk.push(new Change('-', event.old_position, event.old_element)); -} - -DiffCallbacks.prototype.discard_b = function(event) { - this.hunk.push(new Change('+', event.new_position, event.new_element)); -} - -var add_nonempty_hunk = function(diff_callback) { - if(diff_callback.hunk.length > 0) diff_callback.diffs.push(diff_callback.hunk); - diff_callback.hunk = []; -} - -// This will produce a simple array of diff change objects. Each element in -// the //diffs array is a single ContextChange. In the set of //diffs provided -// by SDiffCallbacks, both old and new objects will be presented for both -// changed and unchanged objects. +nil+ will be substituted -// for a discarded object. -// -// The diffset produced by this callback, when provided to Diff::LCS//sdiff, -// will compute and display the necessary components to show two sequences -// and their minimized differences side by side, just like the Unix utility -// +sdiff+. -// -// same same -// before | after -// old < - -// - > new -// -// seq1 = %w(a b c e h j l m n p) -// seq2 = %w(b c d e f j k l m r s t) -// -// diffs = Diff::LCS.sdiff(seq1, seq2) -// // This example shows a simplified array format. -// // [ [ "-", [ 0, "a"], [ 0, nil ] ], -// // [ "=", [ 1, "b"], [ 0, "b" ] ], -// // [ "=", [ 2, "c"], [ 1, "c" ] ], -// // [ "+", [ 3, nil], [ 2, "d" ] ], -// // [ "=", [ 3, "e"], [ 3, "e" ] ], -// // [ "!", [ 4, "h"], [ 4, "f" ] ], -// // [ "=", [ 5, "j"], [ 5, "j" ] ], -// // [ "+", [ 6, nil], [ 6, "k" ] ], -// // [ "=", [ 6, "l"], [ 7, "l" ] ], -// // [ "=", [ 7, "m"], [ 8, "m" ] ], -// // [ "!", [ 8, "n"], [ 9, "r" ] ], -// // [ "!", [ 9, "p"], [ 10, "s" ] ], -// // [ "+", [ 10, nil], [ 11, "t" ] ] ] -// -// The result of this operation is similar to that of -// Diff::LCS::ContextDiffCallbacks. They may be compared as: -// -// s = Diff::LCS.sdiff(seq1, seq2).reject { |e| e.action == "=" } -// c = Diff::LCS.sdiff(seq1, seq2, Diff::LCS::ContextDiffCallbacks).flatten -// -// s == c // -> true -// -// === Use -// This callback object must be initialised and is used by the Diff::LCS//sdiff -// method. -// -// cbo = Diff::LCS::SDiffCallbacks.new -// Diff::LCS.LCS(seq1, seq2, cbo) -// -// As with the other initialisable callback objects, Diff::LCS::SDiffCallbacks -// can be initialised with a block. As there is no "fininishing" to be done, -// this has no effect on the state of the object. -// -// cbo = Diff::LCS::SDiffCallbacks.new { |tcbo| Diff::LCS.LCS(seq1, seq2, tcbo) } -// -// === Simplified Array Format -// The simplified array format used in the example above can be obtained -// with: -// -// require 'pp' -// pp diffs.map { |e| e.to_a } -SDiffCallbacks = exports.SDiffCallbacks = function(block) { - this.diffs = []; - - if(block != null) { - block(this); - this.finish(); - } -} - -SDiffCallbacks.prototype.match = function(event) { - this.diffs.push(ContextChange.simplify(event)); -} - -SDiffCallbacks.prototype.discard_a = function(event) { - this.diffs.push(ContextChange.simplify(event)); -} - -SDiffCallbacks.prototype.discard_b = function(event) { - this.diffs.push(ContextChange.simplify(event)); -} - -SDiffCallbacks.prototype.change = function(event) { - this.diffs.push(ContextChange.simplify(event)); -} - -// This will produce a compound array of contextual diff change objects. Each -// element in the //diffs array is a "hunk" array, where each element in each -// "hunk" array is a single change. Each change is a Diff::LCS::ContextChange -// that contains both the old index and new index values for the change. The -// "hunk" provides the full context for the changes. Both old and new objects -// will be presented for changed objects. +nil+ will be substituted for a -// discarded object. -// -// seq1 = %w(a b c e h j l m n p) -// seq2 = %w(b c d e f j k l m r s t) -// -// diffs = Diff::LCS.diff(seq1, seq2, Diff::LCS::ContextDiffCallbacks) -// // This example shows a simplified array format. -// // [ [ [ '-', [ 0, 'a' ], [ 0, nil ] ] ], // 1 -// // [ [ '+', [ 3, nil ], [ 2, 'd' ] ] ], // 2 -// // [ [ '-', [ 4, 'h' ], [ 4, nil ] ], // 3 -// // [ '+', [ 5, nil ], [ 4, 'f' ] ] ], -// // [ [ '+', [ 6, nil ], [ 6, 'k' ] ] ], // 4 -// // [ [ '-', [ 8, 'n' ], [ 9, nil ] ], // 5 -// // [ '+', [ 9, nil ], [ 9, 'r' ] ], -// // [ '-', [ 9, 'p' ], [ 10, nil ] ], -// // [ '+', [ 10, nil ], [ 10, 's' ] ], -// // [ '+', [ 10, nil ], [ 11, 't' ] ] ] ] -// -// The five hunks shown are comprised of individual changes; if there is a -// related set of changes, they are still shown individually. -// -// This callback can also be used with Diff::LCS//sdiff, which will produce -// results like: -// -// diffs = Diff::LCS.sdiff(seq1, seq2, Diff::LCS::ContextCallbacks) -// // This example shows a simplified array format. -// // [ [ [ "-", [ 0, "a" ], [ 0, nil ] ] ], // 1 -// // [ [ "+", [ 3, nil ], [ 2, "d" ] ] ], // 2 -// // [ [ "!", [ 4, "h" ], [ 4, "f" ] ] ], // 3 -// // [ [ "+", [ 6, nil ], [ 6, "k" ] ] ], // 4 -// // [ [ "!", [ 8, "n" ], [ 9, "r" ] ], // 5 -// // [ "!", [ 9, "p" ], [ 10, "s" ] ], -// // [ "+", [ 10, nil ], [ 11, "t" ] ] ] ] -// -// The five hunks are still present, but are significantly shorter in total -// presentation, because changed items are shown as changes ("!") instead of -// potentially "mismatched" pairs of additions and deletions. -// -// The result of this operation is similar to that of -// Diff::LCS::SDiffCallbacks. They may be compared as: -// -// s = Diff::LCS.sdiff(seq1, seq2).reject { |e| e.action == "=" } -// c = Diff::LCS.sdiff(seq1, seq2, Diff::LCS::ContextDiffCallbacks).flatten -// -// s == c // -> true -// -// === Use -// This callback object must be initialised and can be used by the -// Diff::LCS//diff or Diff::LCS//sdiff methods. -// -// cbo = Diff::LCS::ContextDiffCallbacks.new -// Diff::LCS.LCS(seq1, seq2, cbo) -// cbo.finish -// -// Note that the call to //finish is absolutely necessary, or the last set of -// changes will not be visible. Alternatively, can be used as: -// -// cbo = Diff::LCS::ContextDiffCallbacks.new { |tcbo| Diff::LCS.LCS(seq1, seq2, tcbo) } -// -// The necessary //finish call will be made. -// -// === Simplified Array Format -// The simplified array format used in the example above can be obtained -// with: -// -// require 'pp' -// pp diffs.map { |e| e.map { |f| f.to_a } } -ContextDiffCallbacks = exports.ContextDiffCallbacks = function(block) { - this.hunk = []; - this.diffs = []; - - if(block != null) { - block(this); - this.finish(); - } -} - -ContextDiffCallbacks.prototype.finish = function() { - add_nonempty_hunk(this); -} - -ContextDiffCallbacks.prototype.discard_a = function(event) { - this.hunk.push(ContextChange.simplify(event)); -} - -ContextDiffCallbacks.prototype.discard_b = function(event) { - this.hunk.push(ContextChange.simplify(event)); -} - -ContextDiffCallbacks.prototype.match = function(event) { - this.hunk.push(ContextChange.simplify(event)); -} - - - - - - - - - - diff --git a/node_modules/git/lib/diff/change.js b/node_modules/git/lib/diff/change.js deleted file mode 100644 index 6677caa..0000000 --- a/node_modules/git/lib/diff/change.js +++ /dev/null @@ -1,105 +0,0 @@ -// Represents a simplistic (non-contextual) change. Represents the removal or -// addition of an element from either the old or the new sequenced enumerable. -var Change = exports.Change = function(action, position, element) { - this.action = action; - this.position = position; - this.element = element; -} - -Change.from_a = function(arr) { - return new Change(arr[0], arr[1], arr[2]); -} - -Change.prototype.to_a = function() { - return [this.action, this.position, this.element]; -} - -Change.prototype.is_deleting = function() { - return this.action == '-'; -} - -Change.prototype.is_adding = function() { - return this.action == '+'; -} - -Change.prototype.is_unchanged = function() { - return this.action == '='; -} - -Change.prototype.is_changed = function() { - return this.changed == '!'; -} - -Change.prototype.is_finished_a = function() { - return this.changed == '>'; -} - -Change.prototype.is_finished_b = function() { - return this.changed == '<'; -} - -var ContextChange = exports.ContextChange = function(action, old_position, old_element, new_position, new_element) { - this.action = action; - this.old_position = old_position; - this.old_element = old_element; - this.new_position = new_position; - this.new_element = new_element; -} - -// Creates a ContextChange from an array produced by ContextChange#to_a. -ContextChange.from_a = function(arr) { - if(arr.length == 5) { - return new ContextChange(arr[0], arr[1], arr[2], arr[3], arr[4]); - } else { - return new ContextChange(arr[0], arr[1][0], arr[1][1], arr[2][0], arr[2][1]); - } -} - -// Simplifies a context change for use in some diff callbacks. '<' actions -// are converted to '-' and '>' actions are converted to '+'. -ContextChange.simplify = function(event) { - var ea = event.to_a(); - - if(ea[0] == '-') { - ea[2][1] = null; - } else if(ea[0] == '<') { - ea[0] = '-'; - ea[2][1] = null; - } else if(ea[0] == '+') { - ea[1][1] = null; - } else if(ea[0] == '>') { - ea[0] = '+'; - ea[1][1] = null; - } - - // Return a Context Change object - return ContextChange.from_a(ea); -} - -ContextChange.prototype.to_a = function() { - return [this.action, [this.old_position, this.old_element], [this.new_position, this.new_element]]; -} - -ContextChange.prototype.is_deleting = function() { - return this.action == '-'; -} - -ContextChange.prototype.is_adding = function() { - return this.action == '+'; -} - -ContextChange.prototype.is_unchanged = function() { - return this.action == '='; -} - -ContextChange.prototype.is_changed = function() { - return this.changed == '!'; -} - -ContextChange.prototype.is_finished_a = function() { - return this.changed == '>'; -} - -ContextChange.prototype.is_finished_b = function() { - return this.changed == '<'; -} diff --git a/node_modules/git/lib/diff/diff.js b/node_modules/git/lib/diff/diff.js deleted file mode 100644 index da6455a..0000000 --- a/node_modules/git/lib/diff/diff.js +++ /dev/null @@ -1,892 +0,0 @@ -var util = require('util'), - SequenceCallbacks = require('./callbacks').SequenceCallbacks, - ContextChange = require('./change').ContextChange, - Change = require('./change').Change, - DiffCallbacks = require('./callbacks').DiffCallbacks, - SDiffCallbacks = require('./callbacks').SDiffCallbacks, - BalancedCallbacks = require('./callbacks').BalancedCallbacks, - ContextDiffCallbacks = require('./callbacks').ContextDiffCallbacks, - Hunk = require('./hunk').Hunk; - -var Difference = exports.Difference = function() { -} - -Difference.LCS = function() { -} - -// Scope the Sequence Callbacks class -Difference.LCS.SequenceCallbacks = SequenceCallbacks; -Difference.LCS.ContextChange = ContextChange; -Difference.LCS.DiffCallbacks = DiffCallbacks; -Difference.LCS.SDiffCallbacks = SDiffCallbacks; -Difference.LCS.BalancedCallbacks = BalancedCallbacks; -Difference.LCS.ContextDiffCallbacks = ContextDiffCallbacks; -Difference.LCS.Change = Change; -Difference.LCS.Hunk = Hunk; - -// Diff::LCS.sdiff computes all necessary components to show two sequences -// and their minimized differences side by side, just like the Unix -// utility sdiff does: -// -// old < - -// same same -// before | after -// - > new -// -// See Diff::LCS::SDiffCallbacks for the default behaviour. An alternate -// behaviour may be implemented with Diff::LCS::ContextDiffCallbacks. If -// a Class argument is provided for +callbacks+, //diff will attempt to -// initialise it. If the +callbacks+ object (possibly initialised) -// responds to //finish, it will be called. -Difference.LCS.sdiff = function(seq1, seq2, callbacks, block) { - callbacks = callbacks != null ? callbacks : Difference.LCS.SDiffCallbacks; - - if(Object.prototype.toString.call(callbacks) == "[object Function]") { - callbacks = new callbacks(); - } - - // Traverse the sequence - Difference.LCS.traverse_balanced(seq1, seq2, callbacks); - if(callbacks.finish != null) callbacks.finish(); - - if(block != null) { - var res = callbacks.diffs.map(function(hunk) { - if(Array.isArray(hunk)) { - hunk = hunk.map(function(v) { return block(v); }); - } else { - block(hunk); - } - }); - - return res; - } else { - return callbacks.diffs; - } -} - -// Diff::LCS.diff computes the smallest set of additions and deletions -// necessary to turn the first sequence into the second, and returns a -// description of these changes. -// -// See Diff::LCS::DiffCallbacks for the default behaviour. An alternate -// behaviour may be implemented with Diff::LCS::ContextDiffCallbacks. -// If a Class argument is provided for +callbacks+, //diff will attempt -// to initialise it. If the +callbacks+ object (possibly initialised) -// responds to //finish, it will be called. -Difference.LCS.diff = function(seq1, seq2, callbacks, block) { - callbacks = callbacks != null ? callbacks : Difference.LCS.DiffCallbacks; - - if(Object.prototype.toString.call(callbacks) == "[object Function]") { - callbacks = new callbacks(); - } - - // Traverse the sequence - Difference.LCS.traverse_sequences(seq1, seq2, callbacks); - if(callbacks.finish != null) callbacks.finish(); - - if(block != null) { - var res = callbacks.diffs.map(function(hunk) { - if(Array.isArray(hunk)) { - hunk = hunk.map(function(v) { return block(v); }); - } else { - block(hunk); - } - }); - - return res; - } else { - return callbacks.diffs; - } -} - - -// Diff::LCS.traverse_sequences is the most general facility provided by this -// module; +diff+ and +LCS+ are implemented as calls to it. -// -// The arguments to //traverse_sequences are the two sequences to -// traverse, and a callback object, like this: -// -// traverse_sequences(seq1, seq2, Diff::LCS::ContextDiffCallbacks.new) -// -// //diff is implemented with //traverse_sequences. -// -// == Callback Methods -// Optional callback methods are emphasized. -// -// callbacks//match:: Called when +a+ and +b+ are pointing -// to common elements in +A+ and +B+. -// callbacks//discard_a:: Called when +a+ is pointing to an -// element not in +B+. -// callbacks//discard_b:: Called when +b+ is pointing to an -// element not in +A+. -// callbacks//finished_a:: Called when +a+ has reached the end of -// sequence +A+. -// callbacks//finished_b:: Called when +b+ has reached the end of -// sequence +B+. -// -// == Algorithm -// a---+ -// v -// A = a b c e h j l m n p -// B = b c d e f j k l m r s t -// ^ -// b---+ -// -// If there are two arrows (+a+ and +b+) pointing to elements of -// sequences +A+ and +B+, the arrows will initially point to the first -// elements of their respective sequences. //traverse_sequences will -// advance the arrows through the sequences one element at a time, -// calling a method on the user-specified callback object before each -// advance. It will advance the arrows in such a way that if there are -// elements A[ii] and B[jj] which are both equal and -// part of the longest common subsequence, there will be some moment -// during the execution of //traverse_sequences when arrow +a+ is pointing -// to A[ii] and arrow +b+ is pointing to B[jj]. When -// this happens, //traverse_sequences will call callbacks//match -// and then it will advance both arrows. -// -// Otherwise, one of the arrows is pointing to an element of its sequence -// that is not part of the longest common subsequence. -// //traverse_sequences will advance that arrow and will call -// callbacks//discard_a or callbacks//discard_b, depending -// on which arrow it advanced. If both arrows point to elements that are -// not part of the longest common subsequence, then //traverse_sequences -// will advance one of them and call the appropriate callback, but it is -// not specified which it will call. -// -// The methods for callbacks//match, callbacks//discard_a, -// and callbacks//discard_b are invoked with an event comprising -// the action ("=", "+", or "-", respectively), the indicies +ii+ and -// +jj+, and the elements A[ii] and B[jj]. Return -// values are discarded by //traverse_sequences. -// -// === End of Sequences -// If arrow +a+ reaches the end of its sequence before arrow +b+ does, -// //traverse_sequence try to call callbacks//finished_a with the -// last index and element of +A+ (A[-1]) and the current index -// and element of +B+ (B[jj]). If callbacks//finished_a -// does not exist, then callbacks//discard_b will be called on -// each element of +B+ until the end of the sequence is reached (the call -// will be done with A[-1] and B[jj] for each element). -// -// If +b+ reaches the end of +B+ before +a+ reaches the end of +A+, -// callbacks//finished_b will be called with the current index -// and element of +A+ (A[ii]) and the last index and element of -// +B+ (A[-1]). Again, if callbacks//finished_b does not -// exist on the callback object, then callbacks//discard_a will -// be called on each element of +A+ until the end of the sequence is -// reached (A[ii] and B[-1]). -// -// There is a chance that one additional callbacks//discard_a or -// callbacks//discard_b will be called after the end of the -// sequence is reached, if +a+ has not yet reached the end of +A+ or +b+ -// has not yet reached the end of +B+. -Difference.LCS.traverse_sequences = function(seq1, seq2, callbacks, block) { // The block allows callbacks on change events - // Ensure that we have at least a default callback object - callbacks = callbacks != null ? callbacks : new Difference.LCS.SequenceCallbacks(); - // Fetch the matches from the __lcs algorithm - var matches = Difference.LCS.__lcs(seq1, seq2); - - var run_finished_a = false, run_finished_b = false; - var string = seq1.constructor == String; - - var a_size = seq1.length, b_size = seq2.length; - var ai = 0, bj = 0; - var event = null; - - for(var ii = 0; ii <= matches.length; ii++) { - var b_line = matches[ii]; - - var ax = string ? seq1.substr(ii, 1) : seq1[ii]; - var bx = string ? seq2.substr(bj, bj + 1) : seq2[bj]; - - if(b_line == null) { - if(ax != null) { - event = new Difference.LCS.ContextChange('-', ii, ax, bj, bx); - if(block != null) event = block(event); - callbacks.discard_a(event); - } - } else { - while(bj < b_line) { - bx = string ? seq2.substr(bj, 1) : seq2[bj]; - event = new Difference.LCS.ContextChange('+', ii, ax, bj, bx); - if(block != null) event = block(event); - callbacks.discard_b(event); - bj = bj + 1; - } - - bx = string ? seq2.substr(bj, 1) : seq2[bj]; - event = new Difference.LCS.ContextChange('=', ii, ax, bj, bx); - if(block != null) event = block(event); - callbacks.match(event); - bj = bj + 1; - } - - // Update the ai with the current index point - ai = ii; - } - - // Update pointer - ai = ai + 1; - - // The last entry (if any) processed was a match. +ai+ and +bj+ point - // just past the last matching lines in their sequences. - while(ai < a_size || bj < b_size) { - // last A - if(ai == a_size && bj < b_size) { - if(callbacks.finished_a != null && !run_finished_a) { - ax = string ? seq1.substr(seq1.length - 1, 1) : seq1[seq1.length - 1]; - bx = string ? seq2.substr(bj, 1) : seq2[bj]; - event = new Difference.LCS.ContextChange('>', (a_size - 1), ax, bj, bx); - if(block != null) event = block(event); - callbacks.finished_a(event); - run_finished_a = true; - } else { - ax = string ? seq1.substr(ai, 1) : seq1[ai]; - do { - bx = string ? seq2.substr(bj, 1) : seq2[bj]; - event = new Difference.LCS.ContextChange('+', ai, ax, bj, bx); - if(block != null) event = block(event); - callbacks.discard_b(event); - bj = bj + 1; - } while(bj < b_size) - } - } - - // last B? - if(bj == b_size && ai < a_size) { - if(callbacks.finished_b != null && !run_finished_b) { - ax = string ? seq1.substr(ai, 1) : seq1[ai]; - bx = string ? seq2.substr(seq2.length - 1, 1) : seq2[seq2.length - 1]; - event = new Difference.LCS.ContextChange('<', ai, ax, (b_size -1), bx); - if(block != null) event = block(event); - callbacks.finished_b(event); - run_finished_b = true; - } else { - bx = string ? seq2.substr(bj, 1) : seq2[bj]; - do { - ax = string ? seq1.substr(ai, 1) : seq1[ai]; - event = new Difference.LCS.ContextChange('-', ai, ax, bj, bx); - if(block != null) event = block(event); - callbacks.discard_a(event); - ai = ai + 1; - } while(bj < b_size) - } - } - - if(ai < a_size) { - ax = string ? seq1.substr(ai, 1) : seq1[ai]; - bx = string ? seq2.substr(bj, 1) : seq2[bj]; - event = new Difference.LCS.ContextChange('-', ai, ax, bj, bx); - if(block != null) event = block(event); - callbacks.discard_a(event); - ai = ai + 1; - } - - if(bj < b_size) { - ax = string ? seq1.substr(ai, 1) : seq1[ai]; - bx = string ? seq2.substr(bj, 1) : seq2[bj]; - event = new Difference.LCS.ContextChange('+', ai, ax, bj, bx); - if(block != null) event = block(event); - callbacks.discard_b(event); - bj = bj + 1; - } - } -} - -// //traverse_balanced is an alternative to //traverse_sequences. It -// uses a different algorithm to iterate through the entries in the -// computed longest common subsequence. Instead of viewing the changes as -// insertions or deletions from one of the sequences, //traverse_balanced -// will report changes between the sequences. To represent a -// -// The arguments to //traverse_balanced are the two sequences to traverse -// and a callback object, like this: -// -// traverse_balanced(seq1, seq2, Diff::LCS::ContextDiffCallbacks.new) -// -// //sdiff is implemented with //traverse_balanced. -// -// == Callback Methods -// Optional callback methods are emphasized. -// -// callbacks//match:: Called when +a+ and +b+ are pointing -// to common elements in +A+ and +B+. -// callbacks//discard_a:: Called when +a+ is pointing to an -// element not in +B+. -// callbacks//discard_b:: Called when +b+ is pointing to an -// element not in +A+. -// callbacks//change:: Called when +a+ and +b+ are pointing -// to the same relative position, but -// A[a] and B[b] are -// not the same; a change has -// occurred. -// -// //traverse_balanced might be a bit slower than //traverse_sequences, -// noticable only while processing huge amounts of data. -// -// The +sdiff+ function of this module is implemented as call to -// //traverse_balanced. -// -// == Algorithm -// a---+ -// v -// A = a b c e h j l m n p -// B = b c d e f j k l m r s t -// ^ -// b---+ -// -// === Matches -// If there are two arrows (+a+ and +b+) pointing to elements of -// sequences +A+ and +B+, the arrows will initially point to the first -// elements of their respective sequences. //traverse_sequences will -// advance the arrows through the sequences one element at a time, -// calling a method on the user-specified callback object before each -// advance. It will advance the arrows in such a way that if there are -// elements A[ii] and B[jj] which are both equal and -// part of the longest common subsequence, there will be some moment -// during the execution of //traverse_sequences when arrow +a+ is pointing -// to A[ii] and arrow +b+ is pointing to B[jj]. When -// this happens, //traverse_sequences will call callbacks//match -// and then it will advance both arrows. -// -// === Discards -// Otherwise, one of the arrows is pointing to an element of its sequence -// that is not part of the longest common subsequence. -// //traverse_sequences will advance that arrow and will call -// callbacks//discard_a or callbacks//discard_b, -// depending on which arrow it advanced. -// -// === Changes -// If both +a+ and +b+ point to elements that are not part of the longest -// common subsequence, then //traverse_sequences will try to call -// callbacks//change and advance both arrows. If -// callbacks//change is not implemented, then -// callbacks//discard_a and callbacks//discard_b will be -// called in turn. -// -// The methods for callbacks//match, callbacks//discard_a, -// callbacks//discard_b, and callbacks//change are -// invoked with an event comprising the action ("=", "+", "-", or "!", -// respectively), the indicies +ii+ and +jj+, and the elements -// A[ii] and B[jj]. Return values are discarded by -// //traverse_balanced. -// -// === Context -// Note that +ii+ and +jj+ may not be the same index position, even if -// +a+ and +b+ are considered to be pointing to matching or changed -// elements. -Difference.LCS.traverse_balanced = function(seq1, seq2, callbacks, block) { - // Ensure that we have at least a default callback object - callbacks = callbacks != null ? callbacks : new Difference.LCS.BalancedCallbacks(); - // Fetch the matches from the __lcs algorithm - var matches = Difference.LCS.__lcs(seq1, seq2); - var a_size = seq1.length; - var b_size = seq2.length; - var ai = 0, bj = 0; - var mb = 0; - var ma = -1; - var string = seq1.constructor == String; - var ax = null, bx = null, event = null; - var execute = true; - - // Process all the lines in the match vector. - while(true) { - // Find next match indices +ma+ and +mb+ - while(execute) { - ma = ma + 1; - if(!(ma < matches.length && matches[ma] == null)) break; - // execute = !(ma < matches.length && matches[ma] == null); - } - - if(ma >= matches.length) break; // end of matches - mb = matches[ma]; - - // Change seq2 - while((ai < ma) || (bj < mb)) { - ax = string ? seq1.substr(ai, 1) : seq1[ai]; - bx = string ? seq2.substr(bj, 1) : seq2[bj]; - - // Calculate result - var result = [(ai < ma), (bj < mb)]; - - if(result[0] && result[1]) { - if(callbacks.change != null) { - event = new Difference.LCS.ContextChange('!', ai, ax, bj, bx); - if(block != null) event = block(event); - callbacks.change(event); - ai = ai + 1; - bj = bj + 1; - } else { - event = new Difference.LCS.ContextChange('-', ai, ax, bj, bx); - if(block != null) event = block(event); - callbacks.discard_a(event); - ai = ai + 1; - ax = string ? seq1.substr(ai, 1) : seq1[ai]; - event = new Difference.LCS.ContextChange('+', ai, ax, bj, bx); - if(block != null) event = block(event); - callbacks.discard_b(event); - bj = bj + 1 - } - } else if(result[0] && !result[1]) { - event = new Difference.LCS.ContextChange('-', ai, ax, bj, bx); - if(block != null) event = block(event); - callbacks.discard_a(event); - ai = ai + 1; - } else if(!result[0] && result[1]) { - event = new Difference.LCS.ContextChange('+', ai, ax, bj, bx); - if(block != null) event = block(event); - callbacks.discard_b(event); - bj = bj + 1; - } - } - - // Match - ax = string ? seq1.substr(ai, 1) : seq1[ai]; - bx = string ? seq2.substr(bj, 1) : seq2[bj]; - event = new Difference.LCS.ContextChange('=', ai, ax, bj, bx); - if(block != null) event = block(event); - callbacks.match(event); - ai = ai + 1; - bj = bj + 1; - } - - while((ai < a_size) || (bj < b_size)) { - ax = string ? seq1.substr(ai, 1) : seq1[ai]; - bx = string ? seq2.substr(bj, 1) : seq2[bj]; - - var result = [(ai < a_size), (bj < b_size)]; - if(result[0] && result[1]) { - if(callbacks.change != null) { - event = new Difference.LCS.ContextChange('!', ai, ax, bj, bx); - if(block != null) event = block(event); - callbacks.change(event); - ai = ai + 1; - bj = bj + 1; - } else { - event = new Difference.LCS.ContextChange('-', ai, ax, bj, bx); - if(block != null) event = block(event); - callbacks.discard_a(event); - ai = ai + 1; - ax = string ? seq1.substr(ai, 1) : seq1[ai]; - event = new Difference.LCS.ContextChange('+', ai, ax, bj, bx); - if(block != null) event = block(event); - callbacks.discard_b(event); - bj = bj + 1; - } - } else if(result[0] && !result[1]) { - event = new Difference.LCS.ContextChange('-', ai, ax, bj, bx); - if(block != null) event = block(event); - callbacks.discard_a(event); - ai = ai + 1; - } else if(!result[0] && result[1]) { - event = new Difference.LCS.ContextChange('+', ai, ax, bj, bx); - if(block != null) event = block(event); - callbacks.discard_b(event); - bj = bj + 1; - } - } -} - -// Given two sequenced Enumerables, LCS returns an Array containing their -// longest common subsequences. -// -// lcs = Diff::LCS.LCS(seq1, seq2) -// -// This array whose contents is such that: -// -// lcs.each_with_index do |ee, ii| -// assert(ee.nil? || (seq1[ii] == seq2[ee])) -// end -// -// If a block is provided, the matching subsequences will be yielded from -// +seq1+ in turn and may be modified before they are placed into the -// returned Array of subsequences. -Difference.LCS.LCS = function(seq1, seq2, block) { - var matches = Difference.LCS.__lcs(seq1, seq2); - var ret = []; - - for(var ii = 0; ii < matches.length; ii++) { - if(matches[ii] != null) { - if(block != null) { - ret.push(block(seq1[ii])); - } else { - ret.push(seq1[ii]); - } - } - } - // Return the result - return ret; -} - -var PATCH_MAP = { - patch:{ '+':'+', '-':'-', '!':'!', '=':'=' }, - unpatch:{ '+':'-', '-':'+', '!':'!', '=':'=' } -} - -// Given a patchset, convert the current version to the new -// version. If +direction+ is not specified (must be -// :patch or :unpatch), then discovery of the -// direction of the patch will be attempted. -Difference.LCS.patch = function(src, patchset, direction) { - var string = src.constructor == String; - // Start with an empty type of the source's class - var res = string ? '' : []; - - // Normalize the patchset - var patchset = this.__normalize_patchset(patchset); - var direction = direction || Difference.LCS.__diff_direction(src, patchset); - direction = direction || "patch"; - - var ai = 0, bj = 0; - var el = null, op = null, np = null; - - for(var i = 0; i < patchset.length; i++) { - var change = patchset[i]; - // Both Change and ContextChange has the action - var action = PATCH_MAP[direction][change.action]; - - if(change instanceof ContextChange) { - if(direction == 'patch') { - el = change.new_element; - op = change.old_position; - np = change.new_position; - } else if(direction == 'unpatch') { - el = change.old_element; - op = change.new_position; - np = change.old_position; - } - - if(action == '-') { //Remove details from the old string - while(ai < op) { - string ? res = res + src.substr(ai, 1) : res.push(src[ai]); - ai = ai + 1; - bj = bj + 1; - } - ai = ai + 1; - } else if(action == '+') { - while(bj < np) { - string ? res = res + src.substr(ai, 1) : res.push(src[ai]); - ai = ai + 1; - bj = bj + 1; - } - string ? res = res + el : res.push(el); - bj = bj + 1; - } else if(action == '=') { - // This only appears in sdiff output with the SDiff callback. - // Therefore, we only need to worry about dealing with a single - // element. - string ? res = res + el : res.push(el); - ai = ai + 1; - bj = bj + 1; - } else if(action == '!') { - while(ai < op) { - string ? res = res + src.substr(ai, 1) : res.push(src[ai]); - ai = ai + 1; - bj = bj + 1; - } - bj = bj + 1; - ai = ai + 1; - string ? res = res + el : res.push(el); - } - } else if(change instanceof Change) { - if(action == '-') { - while(ai < change.position) { - string ? res = res + src.substr(ai, 1) : res.push(src[ai]); - ai = ai + 1; - bj = bj + 1; - } - ai = ai + 1; - } else if(action = '+') { - while(bj < change.position) { - string ? res = res + src.substr(ai, 1) : res.push(src[ai]); - ai = ai + 1; - bj = bj + 1; - } - bj = bj + 1; - string ? res = res + change.element : res.push(change.element); - } - } - } - - while(ai < src.length) { - string ? res = res + src.substr(ai, 1) : res.push(src[ai]); - ai = ai + 1; - bj = bj + 1; - } - - return res; -} - -// Examine the patchset and the source to see in which direction the -// patch should be applied. -// -// WARNING: By default, this examines the whole patch, so this could take -// some time. This also works better with Diff::LCS::ContextChange or -// Diff::LCS::Change as its source, as an array will cause the creation -// of one of the above. -Difference.LCS.__diff_direction = function(src, patchset, limit) { - var count = 0, left = 0, left_miss = 0, right = 0, right_miss = 0, element = null; - var string = src.constructor == String; - - // Process all changes in the patchset - for(var i = 0; i < patchset.length; i++) { - var change = patchset[i]; - count = count + 1; - - if(change instanceof Change) { - // With a simplistic change, we can't tell the difference between - // the left and right on '!' actions, so we ignore those. On '=' - // actions, if there's a miss, we miss both left and right. - element = string ? src.substr(change.position, 1) : src[change.position]; - - if(change.action == '-') { - element == change.element ? left = left + 1 : left_miss = left_miss + 1; - } else if(change.action == '+') { - element == change.element ? right = right + 1 : right_miss = right_miss + 1; - } else if(change.action == '=') { - if(element != change.element) { - left_miss = left_miss + 1; - right_miss = right_miss + 1; - } - } - } else if(change instanceof ContextChange) { - if(change.action == '-') { - element = string ? src.substr(change.old_position, 1) : src[change.old_position]; - element == change.old_element ? left = left + 1 : left_miss = left_miss + 1; - } else if(change.action == '+') { - element = string ? src.substr(change.new_position, 1) : src[change.new_position]; - element == change.new_element ? right = right + 1 : right_miss = right_miss + 1; - } else if(change.action == '=') { - var le = string ? src.substr(change.old_position, 1) : src[change.old_position]; - var re = string ? src.substr(change.new_position, 1) : src[change.new_position]; - - if(le != change.old_element) left_miss = left_miss + 1; - if(re != change.new_element) right_miss = right_miss + 1; - } else if(change.action == '!') { - element = string ? src.substr(change.old_position, 1) : src[change.old_position]; - if(element == change.old_element) { - left = left + 1; - } else { - left_miss = left_miss + 1; - right_miss = right_miss + 1; - } - } - } - - if(limit != null && count > limit) break; - }; - - var no_left = (left == 0) && (left_miss >= 0); - var no_right = (right == 0) && (right_miss >= 0); - - var result = [no_left, no_right]; - if(!no_left && no_right) { - return "patch"; - } else if(no_left && !no_right) { - return "unpatch"; - } else { - throw "The provided patchset does not appear to apply to the provided value as either source or destination value." - } -} - -// Normalize the patchset. A patchset is always a sequence of changes, but -// how those changes are represented may vary, depending on how they were -// generated. In all cases we support, we also support the array -// representation of the changes. The formats are: -// -// [ // patchset <- Diff::LCS.diff(a, b) -// [ // one or more hunks -// Diff::LCS::Change // one or more changes -// ] ] -// -// [ // patchset, equivalent to the above -// [ // one or more hunks -// [ action, line, value ] // one or more changes -// ] ] -// -// [ // patchset <- Diff::LCS.diff(a, b, Diff::LCS::ContextDiffCallbacks) -// // OR <- Diff::LCS.sdiff(a, b, Diff::LCS::ContextDiffCallbacks) -// [ // one or more hunks -// Diff::LCS::ContextChange // one or more changes -// ] ] -// -// [ // patchset, equivalent to the above -// [ // one or more hunks -// [ action, [ old line, old value ], [ new line, new value ] ] -// // one or more changes -// ] ] -// -// [ // patchset <- Diff::LCS.sdiff(a, b) -// // OR <- Diff::LCS.diff(a, b, Diff::LCS::SDiffCallbacks) -// Diff::LCS::ContextChange // one or more changes -// ] -// -// [ // patchset, equivalent to the above -// [ action, [ old line, old value ], [ new line, new value ] ] -// // one or more changes -// ] -// -// The result of this will be either of the following. -// -// [ // patchset -// Diff::LCS::ContextChange // one or more changes -// ] -// -// [ // patchset -// Diff::LCS::Change // one or more changes -// ] -// -// If either of the above is provided, it will be returned as such. -// -Difference.LCS.__normalize_patchset = function(patchset) { - return flatten(patchset.map(function(hunk) { - if(hunk instanceof ContextChange || hunk instanceof Change) { - return hunk; - } else if(Array.isArray(hunk)) { - if(!Array.isArray(hunk[0]) && Array.isArray(hunk[1]) && Array.isArray(hunk[2])) { - return ContextChange.from_a(hunk); - } else { - return hunk.map(function(change) { - if(change instanceof ContextChange || change instanceof Change) { - return change; - } else if(Array.isArray(change)) { - // change[1] will ONLY be an array in a ContextChange#to_a call. - // In Change#to_a, it represents the line (singular). - if(Array.isArray(change[1])) { - return ContextChange.from_a(change); - } else { - return Change.from_a(change); - } - } - }); - } - } else { - throw "Cannot normalize the hunk: " + util.inspect(hunk); - } - })); -} - -// Gotten from -var flatten = function(array) { - return array.reduce(function(a,b) { - return a.concat(b); - }, []); -} - -// Compute the longest common subsequence between the arrays a and b the result -// being an array whose content is such that they -// count = 0 -// result.forEach(function(e) { -// if(e) a[count] == b[e]; -// count++; -// }) -Difference.LCS.__lcs = function(a, b) { - var a_start = 0; - var b_start = 0; - var a_finish = a.length - 1; - var b_finish = b.length - 1; - var vector = []; - - // Remove common elements at the beginning - while((a_start <= a_finish) && (b_start <= b_finish) && (a[a_start] == b[b_start])) { - vector[a_start] = b_start; - a_start = a_start + 1; - b_start = b_start + 1; - } - - // Remove common elements at the end - while((a_start <= a_finish) && (b_start <= b_finish) && (a[a_finish] == b[b_finish])) { - vector[a_finish] = b_finish; - a_finish = a_finish - 1; - b_finish = b_finish - 1; - } - - // Now compute the equivalent classes of positions of elements - var b_matches = Difference.LCS.__position_hash(b, b_start, b_finish); - - // Define treshold and links - var thresh = []; - var links = []; - - for(var ii = a_start; ii <= a_finish; ii++) { - var ai = Array.isArray(a) ? a[ii] : a.charAt(ii); - var bm = b_matches[ai]; - bm = bm ? bm : []; - var kk = null; - - bm.reverse().forEach(function(jj) { - if(kk != null && (thresh[kk] > jj) && (thresh[kk - 1] < jj)) { - thresh[kk] = jj; - } else { - kk = Difference.LCS.__replace_next_larger(thresh, jj, kk); - } - // Add link - if(kk != null) links[kk] = [(kk > 0) ? links[kk - 1] : null, ii, jj]; - }); - } - - // Build the vector - if(thresh.length > 0) { - var link = links[thresh.length - 1]; - - while(link != null) { - vector[link[1]] = link[2]; - link = link[0]; - } - } - - // Return the vector of the longest commong subsequence - return vector; -} - -// Find the place at which +value+ would normally be inserted into the -// Enumerable. If that place is already occupied by +value+, do nothing -// and return +nil+. If the place does not exist (i.e., it is off the end -// of the Enumerable), add it to the end. Otherwise, replace the element -// at that point with +value+. It is assumed that the Enumerable's values -// are numeric. -// -// This operation preserves the sort order. -Difference.LCS.__replace_next_larger = function(enumerable, value, last_index) { - // Is it off the end - if(enumerable.length == 0 || (value > enumerable[enumerable.length - 1])) { - enumerable.push(value); - return enumerable.length - 1; - } - - // Binary search for the insertion point - var last_index = last_index || enumerable.length; - var first_index = 0; - - while(first_index <= last_index) { - var ii = (first_index + last_index) >> 1; - var found = enumerable[ii]; - - if(value == found) { - return null; - } else if(value > found) { - first_index = ii + 1; - } else { - last_index = ii - 1; - } - } - - // The insertion point is in first_index; overwrite the next larger - // value. - enumerable[first_index] = value; - return first_index; -} - -Difference.LCS.__position_hash = function(enumerable, interval_start, interval_end) { - interval_start = interval_start ? interval_start : 0; - interval_end = interval_end ? interval_end : -1; - - var hash = {} - for(var i = interval_start; i <= interval_end; i++) { - var kk = Array.isArray(enumerable) ? enumerable[i] : enumerable.charAt(i); - hash[kk] = Array.isArray(hash[kk]) ? hash[kk] : []; - hash[kk].push(i); - } - return hash; -} \ No newline at end of file diff --git a/node_modules/git/lib/diff/hunk.js b/node_modules/git/lib/diff/hunk.js deleted file mode 100644 index 61d7cfe..0000000 --- a/node_modules/git/lib/diff/hunk.js +++ /dev/null @@ -1,291 +0,0 @@ -var Block = require('./block').Block; - -// A Hunk is a group of Blocks which overlap because of the context -// surrounding each block. (So if we're not using context, every hunk will -// contain one block.) Used in the diff program (bin/diff). -var Hunk = exports.Hunk = function(data_old, data_new, piece, context, file_length_difference) { - // Internal variables - var _flag_context = null; - var self = this; - - // At first, a hunk will have just one Block in it - this.blocks = [new Block(piece)]; - this.data_old = data_old; - this.data_new = data_new; - - var before = file_length_difference, after = file_length_difference; - after = after + this.blocks[0].diff_size; - this.file_length_difference = after; // The caller must get this manually - // Other parameters - var a1 = null, a2 = null; - var b1 = null, b2 = null; - - // Save the start & end of each array. If the array doesn't exist - // (e.g., we're only adding items in this block), then figure out the - // line number based on the line number of the other file and the - // current difference in file lengths. - if(this.blocks[0].remove.length > 0) { - a1 = this.blocks[0].remove[0].position; - a2 = this.blocks[0].remove[this.blocks[0].remove.length - 1].position; - } - - if(this.blocks[0].insert.length > 0) { - b1 = this.blocks[0].insert[0].position; - b2 = this.blocks[0].insert[this.blocks[0].insert.length - 1].position; - } - - this.start_old = a1 || (b1 - before); - this.start_new = b1 || (a1 + before); - this.end_old = a2 || (b2 - after); - this.end_new = b2 || (a2 + after); - - // Change the "start" and "end" fields to note that context should be added - // to this hunk - Object.defineProperty(this, "flag_context", { get: function() { return _flag_context; }, set: function(context) { - if(context == null || context == 0) return null; - - var add_start = (context > self.start_old) ? self.start_old : context; - var add_end = null; - - self.start_old = self.start_old - add_start; - self.start_new = self.start_new - add_start; - - if((self.end_old + context) > self.data_old.length) { - add_end = self.data_old.length - self.end_old; - } else { - add_end = context; - } - - self.end_old = self.end_old + add_end; - self.end_new = self.end_new + add_end; - _flag_context = context; - }, enumerable: true}); - - // Set the flag_context - this.flag_context = context; -} - -Hunk.prototype.unshift = function(hunk) { - this.start_old = hunk.start_old; - this.start_new = hunk.start_new; - this.blocks = hunk.blocks.concat(this.blocks); -} - -// Is there an overlap between hunk arg0 and old hunk arg1? Note: if end -// of old hunk is one less than beginning of second, they overlap -Hunk.prototype.overlaps = function(hunk) { - if(hunk == null) return null; - - var a = (this.start_old - hunk.end_old) <= 1; - var b = (this.start_new - hunk.end_new) <= 1; - return (a || b); -} - -Hunk.prototype.diff = function(format) { - if(format == "old") { - return old_diff(this); - } else if(format == 'unified') { - return unified_diff(this); - } else if(format == 'context') { - return context_diff(this); - } else if(format == 'ed') { - return this; - } else if(format == 'reverse_ed' || format == 'ed_finish') { - return ed_diff(this, format); - } else { - throw "unknown diff format " + format; - } -} - -Hunk.prototype.each_old = function(block) { - var entries = this.data_old.slice(this.start_old, this.end_old); - entries.forEach(function(e) { - block(e); - }); -} - -// Note that an old diff can't have any context. Therefore, we know that -// there's only one block in the hunk. -var old_diff = function(hunk) { - if(hunk.blocks.length > 1) sys.puts("expecting only one block in an old diff hunk!"); - // Set up operation actions - var opt_act = {'+':'a', '-':'d', '!':'c'}; - var block = hunk.blocks[0]; - - // Calculate item number range. Old diff range is just like a context - // diff range, except the ranges are on one line with the action between - // them. - var s = "" + context_rang("old") + opt_act[block.op] + context_rang("new") + "\n"; - // If removing anything, just print out all the remove lines in the hunk - // which is just all the remove lines in the block. - if(block.remove.length > 0) { - hunk.data_old.slice(hunk.start_old, hunk.end_old).forEach(function(e) { - s = s + "< " + e + "\n"; - }); - } - - if(block.insert.length > 0) { - hunk.data_new.slice(hunk.start_new, hunk.end_new).forEach(function(e) { - s = s + "> " + e + "\n;" - }); - } - // Return the diff string - return s; -} - -var unified_diff = function(hunk) { - // Calculate item number range. - var s = "@@ -" + unified_range(hunk, 'old') + " +" + unified_range(hunk, 'new') + " @@\n"; - - // Outlist starts containing the hunk of the old file. Removing an item - // just means putting a '-' in front of it. Inserting an item requires - // getting it from the new file and splicing it in. We splice in - // +num_added+ items. Remove blocks use +num_added+ because splicing - // changed the length of outlist. - // - // We remove +num_removed+ items. Insert blocks use +num_removed+ - // because their item numbers -- corresponding to positions in the NEW - // file -- don't take removed items into account. - var lo = hunk.start_old; - var hi = hunk.end_old; - var num_added = 0; - var num_removed = 0; - - // Create list of stripped entries - var outlist = hunk.data_old.slice(lo, hi + 1).map(function(e) { return e.replace(/^/g, ' '); }); - // Process all the blocks - hunk.blocks.forEach(function(block) { - block.remove.forEach(function(item) { - var op = item.action.toString(); // - - var offset = item.position - lo + num_added; - outlist[offset] = outlist[offset].replace(/^ /g, op.toString()); - num_removed = num_removed + 1; - }) - - block.insert.forEach(function(item) { - var op = item.action.toString(); // + - var offset = item.position - hunk.start_new + num_removed; - outlist.splice(offset, 0, ("" + op + hunk.data_new[item.position])); - num_added = num_added + 1; - }); - }); - - // Return the list - return s + outlist.join('\n'); -} - -var context_diff = function(hunk) { - var s = '***************\n'; - s = s + '*** ' + context_range(hunk, 'old') + ' ****\n'; - // Retrieve the context - var r = context_range(hunk, 'new'); - var outlist = null; - - // Print out file 1 part for each block in context diff format if there - // are any blocks that remove items - var lo = hunk.start_old; - var hi = hunk.end_old; - var removes = hunk.blocks.filter(function(e) { return !(e.remove.length == 0); }); - - if(removes) { - outlist = hunk.data_old.slice(lo, hi).map(function(e) { return e.replace(/^/g, ' '); }); - removes.forEach(function(block) { - block.remove.forEach(function(item) { - outlist[item.position - lo] = outlist[item.position - lo].replace(/^ /g, block.op); // - or ! - }); - }); - // Add to diff string - s = s + outlist.join('\n'); - } - - s = s + '\n-- ' + r + ' ----\n'; - lo = hunk.start_new; - hi = hunk.end_new; - var inserts = hunk.blocks.filter(function(e) { return !(e.insert.length == 0); }); - - if(inserts) { - outlist = hunk.data_new.slice(lo, hi).map(function(e) { return e.replace(/^/g, ' '); }); - inserts.forEach(function(block) { - block.insert.forEach(function(item) { - outlist[item.position - lo] = outlist[item.position - lo].replace(/^ /g, block.op); // + or ! - }); - }); - // Add to diff string - s = s + outlist.join('\n'); - } - // Return the diff string - return s; -} - -var ed_diff = function(hunk, format) { - var opt_act = {'+':'a', '-':'d', '!':'c'}; - if(hunk.blocks.length > 1) sys.puts("expecting only one block in an old diff hunk!"); - var s = null; - - if(format == 'reverse_ed') { - s = "" + op_act[hunk.blocks[0].op] + context_range(hunk, 'old') + '\n'; - } else { - s = "" + context_range(hunk, 'old').replace(/,/g, ' ') + op_act[hunk.blocks[0].op] + '\n'; - } - - if(hunk.blocks[0].insert.length > 0) { - hunk.data_new.slice(hunk.start_new, hunk.end_new).forEach(function(e) { - s = s + '' + e + '\n'; - }); - // Add final marker - s = s + '.\n'; - } - // Return diff string - return s; -} - -// Generate a range of item numbers to print. Only print 1 number if the -// range has only one item in it. Otherwise, it's 'start,end' -var context_range = function(hunk, mode) { - var s = null, e = null; - - if(mode == 'old') { - s = (hunk.start_old + 1); - e = (hunk.end_old + 1); - } else if(mode == 'new') { - s = (hunk.start_new + 1); - e = (hunk.end_new + 1); - } - - return (s < e) ? ("" + s + "," + e) : ("" + e); -} - -// Generate a range of item numbers to print for unified diff. Print -// number where block starts, followed by number of lines in the block -// (don't print number of lines if it's 1) -var unified_range = function(hunk, mode) { - var s = null, e = null; - - if(mode == 'old') { - s = (hunk.start_old + 1); - e = (hunk.end_old + 1); - } else if(mode == 'new') { - s = (hunk.start_new + 1); - e = (hunk.end_new + 1); - } - - var length = e - s + 1; - var first = (length < 2) ? e : s; // something weird - return (length == 1) ? ("" + first) : (first + "," + length); -} - - - - - - - - - - - - - - - - diff --git a/node_modules/git/lib/git/actor.js b/node_modules/git/lib/git/actor.js deleted file mode 100644 index 6c1deb5..0000000 --- a/node_modules/git/lib/git/actor.js +++ /dev/null @@ -1,21 +0,0 @@ -var util = require('util'); - -Actor = exports.Actor = function(name, email) { - var _name = name, _email = email; - // Control access to internal variables - Object.defineProperty(this, "name", { get: function() { return _name; }, set: function(value) { _name = value; }, enumerable: true}); - Object.defineProperty(this, "email", { get: function() { return _email; }, set: function(value) { _email = value; }, enumerable: true}); -} - -Actor.from_string = function(string) { - if(string.match(/<.+>/)) { - var results = string.match(/(.*) <(.+?)>/); - return new Actor(results[1], results[2]); - } else { - return new Actor(string, null); - } -} - -Actor.prototype.toString = function() { - return this.name; -} \ No newline at end of file diff --git a/node_modules/git/lib/git/binary_parser.js b/node_modules/git/lib/git/binary_parser.js deleted file mode 100644 index a574d02..0000000 --- a/node_modules/git/lib/git/binary_parser.js +++ /dev/null @@ -1,253 +0,0 @@ -//+ Jonas Raoni Soares Silva -//@ http://jsfromhell.com/classes/binary-parser [v1.0] -var chr = String.fromCharCode; - -var p = exports.BinaryParser = function( bigEndian, allowExceptions ){ - this.bigEndian = bigEndian; - this.allowExceptions = allowExceptions; -}; - -var Buffer = exports.BinaryParser.Buffer = function( bigEndian, buffer ){ - this.bigEndian = bigEndian || 0; - this.buffer = []; - this.setBuffer( buffer ); -}; - -Buffer.prototype.setBuffer = function( data ){ - if( data ){ - for( var l, i = l = data.length, b = this.buffer = new Array( l ); i; b[l - i] = data.charCodeAt( --i ) ); - this.bigEndian && b.reverse(); - } -}; - -Buffer.prototype.hasNeededBits = function( neededBits ){ - return this.buffer.length >= -( -neededBits >> 3 ); -}; - -Buffer.prototype.checkBuffer = function( neededBits ){ - if( !this.hasNeededBits( neededBits ) ) - throw new Error( "checkBuffer::missing bytes" ); -}; - -Buffer.prototype.readBits = function( start, length ){ - //shl fix: Henri Torgemane ~1996 (compressed by Jonas Raoni) - function shl( a, b ){ - for( ; b--; a = ( ( a %= 0x7fffffff + 1 ) & 0x40000000 ) == 0x40000000 ? a * 2 : ( a - 0x40000000 ) * 2 + 0x7fffffff + 1 ); - return a; - } - if( start < 0 || length <= 0 ) - return 0; - this.checkBuffer( start + length ); - for( var offsetLeft, offsetRight = start % 8, curByte = this.buffer.length - ( start >> 3 ) - 1, lastByte = this.buffer.length + ( -( start + length ) >> 3 ), diff = curByte - lastByte, sum = ( ( this.buffer[ curByte ] >> offsetRight ) & ( ( 1 << ( diff ? 8 - offsetRight : length ) ) - 1 ) ) + ( diff && ( offsetLeft = ( start + length ) % 8 ) ? ( this.buffer[ lastByte++ ] & ( ( 1 << offsetLeft ) - 1 ) ) << ( diff-- << 3 ) - offsetRight : 0 ); diff; sum += shl( this.buffer[ lastByte++ ], ( diff-- << 3 ) - offsetRight ) ); - return sum; -}; - -p.warn = function( msg ){ - if( this.allowExceptions ) - throw new Error( msg ); - return 1; -}; -p.decodeFloat = function( data, precisionBits, exponentBits ){ - var b = new this.Buffer( this.bigEndian, data ); - b.checkBuffer( precisionBits + exponentBits + 1 ); - var bias = Math.pow( 2, exponentBits - 1 ) - 1, signal = b.readBits( precisionBits + exponentBits, 1 ), exponent = b.readBits( precisionBits, exponentBits ), significand = 0, - divisor = 2, curByte = b.buffer.length + ( -precisionBits >> 3 ) - 1; - do{ - for( var byteValue = b.buffer[ ++curByte ], startBit = precisionBits % 8 || 8, mask = 1 << startBit; mask >>= 1; ( byteValue & mask ) && ( significand += 1 / divisor ), divisor *= 2 ); - }while( precisionBits -= startBit ); - return exponent == ( bias << 1 ) + 1 ? significand ? NaN : signal ? -Infinity : +Infinity : ( 1 + signal * -2 ) * ( exponent || significand ? !exponent ? Math.pow( 2, -bias + 1 ) * significand : Math.pow( 2, exponent - bias ) * ( 1 + significand ) : 0 ); -}; -p.decodeInt = function( data, bits, signed, forceBigEndian ){ - var b = new this.Buffer( this.bigEndian||forceBigEndian, data ), x = b.readBits( 0, bits ), max = Math.pow( 2, bits ); - return signed && x >= max / 2 ? x - max : x; -}; -p.encodeFloat = function( data, precisionBits, exponentBits ){ - var bias = Math.pow( 2, exponentBits - 1 ) - 1, minExp = -bias + 1, maxExp = bias, minUnnormExp = minExp - precisionBits, - status = isNaN( n = parseFloat( data ) ) || n == -Infinity || n == +Infinity ? n : 0, - exp = 0, len = 2 * bias + 1 + precisionBits + 3, bin = new Array( len ), - signal = ( n = status !== 0 ? 0 : n ) < 0, n = Math.abs( n ), intPart = Math.floor( n ), floatPart = n - intPart, - i, lastBit, rounded, j, result; - for( i = len; i; bin[--i] = 0 ); - for( i = bias + 2; intPart && i; bin[--i] = intPart % 2, intPart = Math.floor( intPart / 2 ) ); - for( i = bias + 1; floatPart > 0 && i; ( bin[++i] = ( ( floatPart *= 2 ) >= 1 ) - 0 ) && --floatPart ); - for( i = -1; ++i < len && !bin[i]; ); - if( bin[( lastBit = precisionBits - 1 + ( i = ( exp = bias + 1 - i ) >= minExp && exp <= maxExp ? i + 1 : bias + 1 - ( exp = minExp - 1 ) ) ) + 1] ){ - if( !( rounded = bin[lastBit] ) ){ - for( j = lastBit + 2; !rounded && j < len; rounded = bin[j++] ); - } - for( j = lastBit + 1; rounded && --j >= 0; ( bin[j] = !bin[j] - 0 ) && ( rounded = 0 ) ); - } - for( i = i - 2 < 0 ? -1 : i - 3; ++i < len && !bin[i]; ); - if( ( exp = bias + 1 - i ) >= minExp && exp <= maxExp ) - ++i; - else if( exp < minExp ){ - exp != bias + 1 - len && exp < minUnnormExp && this.warn( "encodeFloat::float underflow" ); - i = bias + 1 - ( exp = minExp - 1 ); - } - if( intPart || status !== 0 ){ - this.warn( intPart ? "encodeFloat::float overflow" : "encodeFloat::" + status ); - exp = maxExp + 1; - i = bias + 2; - if( status == -Infinity ) - signal = 1; - else if( isNaN( status ) ) - bin[i] = 1; - } - for( n = Math.abs( exp + bias ), j = exponentBits + 1, result = ""; --j; result = ( n % 2 ) + result, n = n >>= 1 ); - for( n = 0, j = 0, i = ( result = ( signal ? "1" : "0" ) + result + bin.slice( i, i + precisionBits ).join( "" ) ).length, r = []; i; j = ( j + 1 ) % 8 ){ - n += ( 1 << j ) * result.charAt( --i ); - if( j == 7 ){ - r[r.length] = String.fromCharCode( n ); - n = 0; - } - } - r[r.length] = n ? String.fromCharCode( n ) : ""; - return ( this.bigEndian ? r.reverse() : r ).join( "" ); -}; -p.encodeInt = function( data, bits, signed, forceBigEndian ){ - var max = Math.pow( 2, bits ); - ( data >= max || data < -( max / 2 ) ) && this.warn( "encodeInt::overflow" ) && ( data = 0 ); - data < 0 && ( data += max ); - for( var r = []; data; r[r.length] = String.fromCharCode( data % 256 ), data = Math.floor( data / 256 ) ); - for( bits = -( -bits >> 3 ) - r.length; bits--; r[r.length] = "\0" ); - return ( (this.bigEndian||forceBigEndian) ? r.reverse() : r ).join( "" ); -}; -p.toSmall = function( data ){ return this.decodeInt( data, 8, true ); }; -p.fromSmall = function( data ){ return this.encodeInt( data, 8, true ); }; -p.toByte = function( data ){ return this.decodeInt( data, 8, false ); }; -p.fromByte = function( data ){ return this.encodeInt( data, 8, false ); }; -p.toShort = function( data ){ return this.decodeInt( data, 16, true ); }; -p.fromShort = function( data ){ return this.encodeInt( data, 16, true ); }; -p.toWord = function( data ){ return this.decodeInt( data, 16, false ); }; -p.fromWord = function( data ){ return this.encodeInt( data, 16, false ); }; -p.toInt = function( data ){ return this.decodeInt( data, 32, true ); }; -p.fromInt = function( data ){ return this.encodeInt( data, 32, true ); }; -p.toLong = function( data ){ return this.decodeInt( data, 64, true ); }; -p.fromLong = function( data ){ return this.encodeInt( data, 64, true ); }; -p.toDWord = function( data ){ return this.decodeInt( data, 32, false ); }; -p.fromDWord = function( data ){ return this.encodeInt( data, 32, false ); }; -p.toQWord = function( data ){ return this.decodeInt( data, 64, true ); }; -p.fromQWord = function( data ){ return this.encodeInt( data, 64, true ); }; -p.toFloat = function( data ){ return this.decodeFloat( data, 23, 8 ); }; -p.fromFloat = function( data ){ return this.encodeFloat( data, 23, 8 ); }; -p.toDouble = function( data ){ return this.decodeFloat( data, 52, 11 ); }; -p.fromDouble = function( data ){ return this.encodeFloat( data, 52, 11 ); }; - -// Factor out the encode so it can be shared by add_header and push_int32 -p.encode_int32 = function(number) { - var a, b, c, d, unsigned; - unsigned = (number < 0) ? (number + 0x100000000) : number; - a = Math.floor(unsigned / 0xffffff); - unsigned &= 0xffffff; - b = Math.floor(unsigned / 0xffff); - unsigned &= 0xffff; - c = Math.floor(unsigned / 0xff); - unsigned &= 0xff; - d = Math.floor(unsigned); - return chr(a) + chr(b) + chr(c) + chr(d); -}; - -p.encode_int64 = function(number) { - var a, b, c, d, e, f, g, h, unsigned; - unsigned = (number < 0) ? (number + 0x10000000000000000) : number; - a = Math.floor(unsigned / 0xffffffffffffff); - unsigned &= 0xffffffffffffff; - b = Math.floor(unsigned / 0xffffffffffff); - unsigned &= 0xffffffffffff; - c = Math.floor(unsigned / 0xffffffffff); - unsigned &= 0xffffffffff; - d = Math.floor(unsigned / 0xffffffff); - unsigned &= 0xffffffff; - e = Math.floor(unsigned / 0xffffff); - unsigned &= 0xffffff; - f = Math.floor(unsigned / 0xffff); - unsigned &= 0xffff; - g = Math.floor(unsigned / 0xff); - unsigned &= 0xff; - h = Math.floor(unsigned); - return chr(a) + chr(b) + chr(c) + chr(d) + chr(e) + chr(f) + chr(g) + chr(h); -}; - -/** - UTF8 methods -**/ - -// Take a raw binary string and return a utf8 string -p.decode_utf8 = function(a) { - var string = ""; - var i = 0; - var c = c1 = c2 = 0; - - while ( i < a.length ) { - c = a.charCodeAt(i); - if (c < 128) { - string += String.fromCharCode(c); - i++; - } else if((c > 191) && (c < 224)) { - c2 = a.charCodeAt(i+1); - string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); - i += 2; - } else { - c2 = a.charCodeAt(i+1); - c3 = a.charCodeAt(i+2); - string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); - i += 3; - } - } - return string; -}; - -// Encode a cstring correctly -p.encode_cstring = function(s) { - return unescape(encodeURIComponent(s)) + p.fromByte(0); -}; - -// Take a utf8 string and return a binary string -p.encode_utf8 = function(s) { - var a=""; - for (var n=0; n< s.length; n++) { - var c=s.charCodeAt(n); - if (c<128) { - a += String.fromCharCode(c); - } else if ((c>127)&&(c<2048)) { - a += String.fromCharCode( (c>>6) | 192) ; - a += String.fromCharCode( (c&63) | 128); - } else { - a += String.fromCharCode( (c>>12) | 224); - a += String.fromCharCode( ((c>>6) & 63) | 128); - a += String.fromCharCode( (c&63) | 128); - } - } - return a; -}; - -p.pprint = function(s) { - var util = require('util'); - - for (var i=0; i 0) { - var part = parts[0]; - - // Process the part - if(part.match(/^[0-9A-Fa-f]{40}$/)) { - // Parse references to SHA keys - if(line.match(/^([0-9A-Fa-f]{40}) (\d+) (\d+) (\d+)$/)) { - var matches = line.match(/^([0-9A-Fa-f]{40}) (\d+) (\d+) (\d+)$/); - var id = matches[1]; - var origin_line = matches[2]; - var final_line = matches[3]; - var group_lines = matches[4]; - // Set if of the current reference - info = {id:id}; - blames.push([null, []]); - } else if(line.match(/^([0-9A-Fa-f]{40}) (\d+) (\d+)$/)) { - var matches = line.match(/^([0-9A-Fa-f]{40}) (\d+) (\d+)$/); - var id = matches[1]; - var origin_line = matches[2]; - var final_line = matches[3]; - // Set if of the current reference - info = {id:id}; - } - } else if(part.match(/^(author|committer)/)) { - if(part.match(/^(.+)-mail$/)) { - info[part.match(/^(.+)-mail$/)[1] + "_email"] = parts[parts.length - 1]; - } else if(part.match(/^(.+)-time$/)) { - info[part.match(/^(.+)-time$/)[1] + "_date"] = new Date(parseInt(parts[parts.length - 1]) * 1000); - } else if(part.match(/^(author|committer)$/)) { - info[part.match(/^(author|committer)$/)[1]] = parts.slice(1).join(" "); - } - } else if(part.match(/^filename/)) { - info['filename'] = parts[parts.length - 1]; - } else if(part.match(/^summary/)) { - info['summary'] = parts.slice(1).join(" ").replace('\n', ''); - } else if(part == '') { - var commit = commits[info["id"]]; - // Create new commit - if(!commit) { - // commit = new Commit(repo, ) - var id = info['id']; - var author = Actor.from_string(info['author'] + ' ' + info['author_email']); - var authored_date = info['author_date']; - var committer = Actor.from_string(info['committer'] + ' ' + info['committer_email']); - var committed_date = info['committer_date']; - var message = info['summary']; - // Create a new commit - commit = new Commit(repo, id, null, null, author, authored_date, committer, committed_date, message); - commits[info['id']] = commit; - } - - // Break up the parts - parts = line.match(/^\t(.*)$/); - blames[blames.length - 1][0] = commit; - blames[blames.length - 1][1].push(parts[1]); - info = null; - } - } - }); - // Call back with the list of blames - callback(null, blames); - }); -} - - - - - - - diff --git a/node_modules/git/lib/git/commit.js b/node_modules/git/lib/git/commit.js deleted file mode 100644 index 83aec7b..0000000 --- a/node_modules/git/lib/git/commit.js +++ /dev/null @@ -1,336 +0,0 @@ -var util = require('util'), - Actor = require('./actor').Actor, - Diff = require('./diff').Diff; - Tree = require('./tree').Tree; - -// Create a commit object -var Commit = exports.Commit = function(repo, id, parents, tree, author, authored_date, committer, committed_date, message, filechanges) { - var _repo = repo, _id = id, _parents = parents, _tree = tree, _author = author, _authored_date = authored_date; - var _committer = committer, _committed_date = committed_date, _id_abbrev = null, _filechanges = filechanges; - // Ensure we have an empty message at least - message = message ? message : []; - message = Array.isArray(message) ? message : [message]; - var _message = message.join("\n"); - // Extract short message - var message_lines_filtered = message.filter(function(line) { - return line.trim() == '' ? false : true; - }) - var _short_message = message_lines_filtered.length > 0 ? message_lines_filtered[0] : ''; - // Internal properties - Object.defineProperty(this, "repo", { get: function() { return _repo; }, set: function(value) { _repo = value; }, enumerable: true, configurable:true}); - Object.defineProperty(this, "id", { get: function() { return _id; }, set: function(value) { _id = value; }, enumerable: true, configurable:true}); - Object.defineProperty(this, "sha", { get: function() { return _id; }, set: function(value) { _id = value; }, enumerable: true, configurable:true}); - Object.defineProperty(this, "parents", { get: function() { - _parents = lazy_reader(_repo, _id, 'parents', _parents); - return _parents; - }, set: function(value) { _parents = value; }, enumerable: true, configurable:true}); - Object.defineProperty(this, "tree", { get: function() { - _tree = lazy_reader(_repo, _id, 'tree', _tree); - return _tree; - }, set: function(value) { _tree = value; }, enumerable: true, configurable:true}); - Object.defineProperty(this, "author", { get: function() { - _author = lazy_reader(_repo, _id, 'author', _author); - return _author; - }, set: function(value) { _author = value; }, enumerable: true, configurable:true}); - Object.defineProperty(this, "authored_date", { get: function() { - _authored_date = lazy_reader(_repo, _id, 'authored_date', _authored_date); - return _authored_date; - }, set: function(value) { _authored_date = value; }, enumerable: true, configurable:true}); - Object.defineProperty(this, "committer", { get: function() { - _committer = lazy_reader(_repo, _id, 'comitter', _committer); - return _committer; - }, set: function(value) { _comitter = value; }, enumerable: true, configurable:true}); - Object.defineProperty(this, "committed_date", { get: function() { - _committed_date = lazy_reader(_repo, _id, 'committed_date', _committed_date); - return _committed_date; - }, set: function(value) { _committed_date = value; }, enumerable: true, configurable:true}); - Object.defineProperty(this, "message", { get: function() { - _message = lazy_reader(_repo, _id, 'message', _message); - return _message; - }, set: function(value) { _message = value; }, enumerable: true, configurable:true}); - Object.defineProperty(this, "short_message", { get: function() { - _short_message = lazy_reader(_repo, _id, 'short_message', _short_message); - return _short_message; - }, set: function(value) { _short_message = value; }, enumerable: true, configurable:true}); - Object.defineProperty(this, "filechanges", { get: function() { - _filechanges = lazy_reader(_repo, _id, 'filechanges', _filechanges); - return _filechanges; - }, set: function(value) { _filechanges = value; }, enumerable: true, configurable:true}); - - Object.defineProperty(this, "_id_abbrev", { get: function() { return _id_abbrev; }, set: function(value) { _id_abbrev = value; }, enumerable: true, configurable:true}); -} - -var lazy_reader = function(repo, id, name, variable) { - if(variable != null) return variable; - // Control the flow - var done = false; - var value = null; - // Fetch all the commits - Commit.find_all(repo, id, {max_count:1}, function(err, commits) { - if(err) return done = true; - value = commits[0][name]; - done = true; - }) - - while(!done) {}; - return value ? value : ''; -} - -// Load a commit -Commit.prototype.load = function(callback) { - var self = this; - - Commit.find_all(this.repo, this.id, {max_count:1}, function(err, commits) { - if(err) return callback(err, commits); - var commit = commits[0]; - Object.keys(commit).forEach(function(key) { - self[key] = commit[key]; - }); - callback(null, self); - }); -} - -// Chomp text removing end carriage returns -var chomp = function chomp(raw_text) { - return raw_text.replace(/(\n|\r)+$/, ''); -} - -// Fetch the short form of an id -Commit.prototype.id_abbrev = function(callback) { - var self = this; - - if(this._id_abbrev) return callback(null, this._id_abbrev); - this.repo.git.rev_parse({}, this.id, 0, function(err, id) { - if(err) return callback(err, id); - self._id_abbrev = chomp(id).substr(0, 7); - callback(null, self._id_abbrev); - }) -} - -// Parse the actor and create the object -var actor = function(line) { - var results = line.match(/^.+? (.*) (\d+) .*$/); - var actor = results[1]; - var epoch = results[2]; - // Return the objects - return [Actor.from_string(actor), new Date(parseInt(epoch) * 1000)] -} - -// Convert commit text to list of commits -Commit.list_from_string = function(repo, text) { - // Split up the result - var lines = text.split("\n"); - - // require('util').debug("-------------------------------------------------- lines") - // require('util').debug(require('util').inspect(lines)) - // require('util').debug("-------------------------------------------------- text end") - - var linesshift = function() { - return lines.shift(); - }; - var commits = []; - // Parse all commit messages - while(lines.length > 0) { - var id = linesshift().split(/ /).pop(); - if(lines.length == 0) break; - var tree = new Tree(repo, linesshift().split(/ /).pop()); - - // Let's get the parents - var parents = []; - while(lines[0].match(/^parent/)) { - parents.push(new Commit(repo, linesshift().split(/ /).pop())) - } - // Let's get the author and committer - var actor_info = actor(linesshift()); - var author = actor_info[0]; - var authored_date = actor_info[1] - var committer_info = actor(linesshift()); - var comitter = committer_info[0]; - var committed_date = committer_info[1]; - // Unpack encoding - var encoding = lines[0].match(/^encoding/) ? linesshift().split().pop() : ''; - // Jump empty space - linesshift(); - // Unpack message lines - var message_lines = []; - while(lines.length > 0 && lines[0].match(/^ {4}/)) { - var message_line = linesshift(); - message_lines.push(message_line.substring(4, message_line.length)) ; - } - - linesshift(); - // Parse --raw lines - var filechanges = {}; - var fcre = /:(\d+) (\d+) ([a-z0-9]+) ([a-z0-9]+) (\S+)\s+(.+)/; - var numre = /(\S+)\s+(\S+)\s+(.+)/; - var line; - var matched; - while (lines.length > 0) { - line = linesshift(); - matched = line.match(fcre); - if (!matched) break; - var o = {}; - var xs = ['a_mode', 'b_mode', 'a_blob', 'b_blob', 'what', 'path']; - for(var i = 0; i < xs.length; i++) { - o[xs[i]] = matched[i+1]; - } - filechanges[o.path] = o; - } - while (line) { - matched = line.match(numre); - if (!matched) break; - var o = {}; - var xs = ['plus', 'minus', 'path']; - for(var i = 0; i < xs.length; i++) { - o[xs[i]] = matched[i+1]; - } - filechanges[o.path].plus = o.plus; - filechanges[o.path].minus = o.minus; - if (lines.length == 0) break; - line = linesshift(); - } - - if (!matched && line) lines = [line].concat(lines); - // Move and point to next message - while(lines[0] != null && lines[0] == '') linesshift(); - // Create commit object - commits.push(new Commit(repo, id, parents, tree, author, authored_date, comitter, committed_date, message_lines, filechanges)); - } - // Return all the commits - return commits; -} - -// Locate all commits for a give set of parameters -Commit.find_all = function(repo, reference, options, callback) { - var self = this; - var args = Array.prototype.slice.call(arguments, 1); - callback = args.pop(); - reference = args.length ? args.shift() : null; - options = args.length ? args.shift() : {}; - - // Merge the options with the default_options - if(!options.pretty) options['pretty'] = 'raw'; - // If we have a reference use that for the lookup - if(!reference) options['all'] = true; - - // Locate revisions - if(reference) { - repo.git.rev_list(options, reference, function(err, revision_output) { - if(err) return callback(err, []); - // Turn string into a list of revisions - callback(null, Commit.list_from_string(repo, revision_output)); - }); - } else { - repo.git.rev_list(options, function(err, revision_output) { - if(err) return callback(err, []); - // Turn string into a list of revisions - callback(null, Commit.list_from_string(repo, revision_output)); - }); - } -} - -// Return the count of committs for a given start -Commit.count = function(repo, ref, callback) { - repo.git.rev_list({}, ref, function(err, revision_output) { - if(err) return callback(err, revision_output); - callback(null, parseInt((revision_output.length/41))); - }) -} - -// Show diffs between two trees -// repo: the repo object -// a: named commit -// b: optional named commit, passing an array assumes you wish to omit the second -// named commit and limit the diff to the given paths -// paths: an array of paths to limit the diff. -// -// Returns array of diffs (baked) -Commit.diff = function(repo, a, b, paths, callback) { - var self = this; - var args = Array.prototype.slice.call(arguments, 2); - callback = args.pop(); - b = args.length ? args.shift() : null; - paths = args.length ? args.shift() : []; - - // If b is an array we skipped the b parameter - if(Array.isArray(b)) { - paths = b; - b = null; - } - - // Set up parameters correctly - if(paths.length > 0) { - if(paths.length > 0) paths.unshift("--"); - if(b) paths.unshift(b); - paths.unshift(a); - // Let's execute the native git function - repo.git.call_git('', 'diff', '', {full_index:true}, paths, function(err, text) { - // Create a list of diffs from the string - if(text) { - Diff.list_from_string(repo, text, callback); - } else { - callback(null, []); - } - }); - } else { - repo.git.diff(a, b, {full_index:true}, function(err, text) { - // Create a list of diffs from the string - if(text) { - Diff.list_from_string(repo, text, callback); - } else { - callback(null, []); - } - }); - } -} - -var process_diff = function(repo, diff, callback) { - if(diff.match(/diff --git a/)) { - diff = diff.substring(diff.match(/diff --git a/).index, diff.length); - } else { - diff = ''; - } - // Return the diffs - Diff.list_from_string(repo, diff, callback); -} - -// Show the commits -Commit.prototype.show = function(callback) { - var parents = this.parents; - var diff = null - var self = this; - - if(parents.length > 1) { - this.repo.git.native_call("diff " + parents[0].id + "..." + parents[1].id, {full_index:true}, function(err, diff) { - if(err) return callback(err, diff); - process_diff(this.repo, diff, callback); - }); - } else { - this.repo.git.show({full_index:true, pretty:'raw'}, this.id, function(err, diff) { - if(err) return callback(err, diff); - process_diff(this.repo, diff, callback); - }); - } -} - -// Return the diffs for a commit -Commit.prototype.diffs = function(callback) { - var parents = this.parents; - // If we have no parents - if(parents.length == 0) { - this.show(callback); - } else { - Commit.diff(this.repo, parents[0].id, this.id, callback) - } -} - -// To String method -Commit.prototype.toString = function() { - return this.id; -} - -// Convert commit into patch -Commit.prototype.toPatch = function(callback) { - this.repo.git.format_patch({'1':true, stdout:true}, this.id, callback); -} - diff --git a/node_modules/git/lib/git/commit_stats.js b/node_modules/git/lib/git/commit_stats.js deleted file mode 100644 index 15d8cda..0000000 --- a/node_modules/git/lib/git/commit_stats.js +++ /dev/null @@ -1,115 +0,0 @@ -var CommitStats = exports.CommitStats = function(repo, id, files) { - var _repo = repo, _id = id, _files = files, _additions = 0, _deletions = 0, _total = 0; - - // Build the stats based on the files - _additions = files.reduce(function(previousValue, currentValue, index, array) { return previousValue + currentValue[1]; }, 0); - _deletions = files.reduce(function(previousValue, currentValue, index, array) { return previousValue + currentValue[2]; }, 0); - _total = files.reduce(function(previousValue, currentValue, index, array) { return previousValue + currentValue[3]; }, 0); - - // Internal properties - Object.defineProperty(this, "repo", { get: function() { return _repo; }, set: function(value) { _repo = value; }, enumerable: false}); - Object.defineProperty(this, "id", { get: function() { return _id; }, set: function(value) { _id = value; }, enumerable: true}); - Object.defineProperty(this, "files", { get: function() { return _files; }, set: function(value) { _files = value; }, enumerable: true}); - Object.defineProperty(this, "additions", { get: function() { return _additions; }, set: function(value) { _additions = value; }, enumerable: true}); - Object.defineProperty(this, "deletions", { get: function() { return _deletions; }, set: function(value) { _deletions = value; }, enumerable: true}); - Object.defineProperty(this, "total", { get: function() { return _total; }, set: function(value) { _total = value; }, enumerable: true}); -} - -// Find all commit stats matching the given criteria -// repo: the repo -// ref: the ref from which to begin (SHA1 or name) or nil for all -// options: hash of optional arguments to git -// max_count: maximum number of commits to fetch -// skip: number of commits to skip -// -// Returns assoc array (all values are lazy loading) -CommitStats.find_all = function(repo, reference, options, callback) { - var args = Array.prototype.slice.call(arguments, 2); - callback = args.pop(); - var self = this; - // Unpack variables - options = args.length ? args.shift() : {}; - // Set up options - options['numstat'] = true; - - // Check if we have a reference - if(reference) { - // Execute log function - repo.git.log(options, reference, function(err, output) { - if(err) return callback(err, output); - callback(null, CommitStats.list_from_string(repo, output)); - }); - } else { - // Add all options - options['all'] = true; - // Execute log function - repo.git.log(options, function(err, output) { - if(err) return callback(err, output); - callback(null, CommitStats.list_from_string(repo, output)); - }); - } -} - -// Parse out commit information into an array of baked Commit objects -// repo: the repo -// text: the text output from the git command (raw format) -// -// Returns assoc array of baked commits -CommitStats.list_from_string = function(repo, text) { - var lines = text.trim().split('\n'); - var commits = {}; - - while(lines.length > 0) { - // Fetch the commit id - var id = lines.shift().replace(/\ +/g, ' ').split(" ").pop(); - // Remove some rows - lines.shift(); - lines.shift(); - lines.shift(); - - // Process message lines - var message_lines = []; - // Process out the messages - while(lines.length > 0 && lines[0].match(/^ {4}/) || lines[0] == '') { - var string = lines.shift().substr(4); - message_lines.push(string); - } - - // Skip all empty lines - while(lines.length > 0 && lines[0] != null && lines[0] == '') lines.shift(); - - var files = []; - // Process all the files - while(lines.length > 0 && lines[0].match(/^([-\d]+)\s+([-\d]+)\s+(.+)/)) { - var parts = lines.shift().replace(/\ +/g, ' ').split(" "); - var additions = parseInt(parts[0]); - var deletions = parseInt(parts[1]); - var filename = parts[2]; - var total = additions + deletions; - files.push([filename, additions, deletions, total]); - } - - // Skip all empty lines - while(lines.length > 0 && lines[0] != null && lines[0] == '') lines.shift(); - // Add the commit to the list - commits[id] = new CommitStats(repo, id, files); - } - - // Return the commits - return commits; -} - - - - - - - - - - - - - - - diff --git a/node_modules/git/lib/git/config.js b/node_modules/git/lib/git/config.js deleted file mode 100644 index 33ec002..0000000 --- a/node_modules/git/lib/git/config.js +++ /dev/null @@ -1,48 +0,0 @@ -var Config = exports.Config = function(repo) { - var _repo = repo, _data = null; - - Object.defineProperty(this, "repo", { get: function() { return _repo; }, set: function(value) { _id = value; }, enumerable: false}); - Object.defineProperty(this, "data", { get: function() { - _data = lazy_reader(_repo, 'data', _data); - return _data; - }, set: function(value) { _data = value; }, enumerable: true}); -} - -var lazy_reader = function(repo, name, variable) { - if(variable) return variable; - // Control the flow - var done = false; - var hash = {}; - // Load the config and parse it - repo.git.config({list:true}, function(err, output) { - var lines = output.split("\n"); - - lines.forEach(function(line) { - var parts = line.split(/=/); - var key = parts.shift(); - hash[key] = parts.join("="); - }) - done = true; - }) - - while(!done) {}; - return hash; -} - -Config.prototype.fetch = function(key, default_value) { - var value = this.data[key]; - if(!value) return default_value; - return this.data[key]; -} - -Config.prototype.set = function(key, value, callback) { - var self = this; - - this.repo.git.config({}, key, value, function(err, output) { - if(err) return callback(err, output); - // Reset data variable - self.data = null; - // Return - callback(null, output); - }); -} \ No newline at end of file diff --git a/node_modules/git/lib/git/diff.js b/node_modules/git/lib/git/diff.js deleted file mode 100644 index eba5a4e..0000000 --- a/node_modules/git/lib/git/diff.js +++ /dev/null @@ -1,82 +0,0 @@ -var Blob = require('./blob').Blob; - -var Diff = exports.Diff = function(repo, a_path, b_path, a_blob, b_blob, a_mode, b_mode, new_file, deleted_file, diff) { - var _repo = repo, _a_path = a_path, _b_path = b_path - var _a_mode = a_mode, _b_mode = b_mode, _diff = diff; - // Create blob objects - var _a_blob = !a_blob || a_blob.match(/^0{40}$/) ? null : new Blob(repo, a_blob); - var _b_blob = !b_blob || b_blob.match(/^0{40}$/) ? null : new Blob(repo, b_blob); - // Chec if we have a new_file/deleted_file - var _new_file = new_file || _a_blob == null; - var _deleted_file = deleted_file || _b_blob == null; - - Object.defineProperty(this, "repo", { get: function() { return _repo; }, enumerable: true}); - Object.defineProperty(this, "a_path", { get: function() { return _a_path; }, enumerable: true}); - Object.defineProperty(this, "b_path", { get: function() { return _b_path; }, enumerable: true}); - Object.defineProperty(this, "a_mode", { get: function() { return _a_mode; }, enumerable: true}); - Object.defineProperty(this, "b_mode", { get: function() { return _b_mode; }, enumerable: true}); - Object.defineProperty(this, "diff", { get: function() { return _diff; }, enumerable: true}); - Object.defineProperty(this, "a_blob", { get: function() { return _a_blob; }, enumerable: true}); - Object.defineProperty(this, "b_blob", { get: function() { return _b_blob; }, enumerable: true}); - Object.defineProperty(this, "new_file", { get: function() { return _new_file; }, enumerable: true}); - Object.defineProperty(this, "deleted_file", { get: function() { return _deleted_file; }, enumerable: true}); -} - -// Create a list of diffs from a diff text -Diff.list_from_string = function(repo, text, callback) { - // Ensure we don't have white space at the end - text = text.trim(); - // Split the text into lines - var lines = text.split("\n"); - var diffs = []; - var a_path, b_path, a_mode, b_mode, new_file = false, deleted_file = false; - var a_blob, b_blob; - - while(text.length > 0 && lines.length > 0) { - // Extract a line - var parts = lines.shift().match(/^diff --git a\/(.+?) b\/(.+)$/); - // Unpack parts - var a_path = parts[1]; - var b_path = parts[2]; - - if(lines[0].match(/^old mode/)) { - a_mode = lines.shift().match(/^old mode (\d+)/)[1] - b_mode = lines.shift().match(/^new mode (\d+)/)[1] - } - - if(lines.length == 0 || lines[0].match(/^diff --git/)) { - diffs.push(new Diff(repo, a_path, b_path, null, null, a_mode, b_mode, false, false, null)); - } else { - if(lines[0].match(/^new file/)) { - b_mode = lines.shift().match(/^new file mode (.+)$/)[1]; - a_mode = null; - new_file = true; - } else if(lines[0].match(/^deleted file/)) { - a_mode = lines.shift().match(/^deleted file mode (.+)$/)[1]; - b_mode = null; - deleted_file = true; - } - // Unpack index reference - parts = lines.shift().match(/^index ([0-9A-Fa-f]+)\.\.([0-9A-Fa-f]+) ?(.+)?$/); - a_blob = parts[1]; - b_blob = parts[2]; - b_mode = parts[3]; - - // Contains all the diff lines - var diff_lines = []; - // Fetch all the diff lines - while(lines.length > 0 && !lines[0].match(/^diff/)) { - diff_lines.push(lines.shift()); - } - - // Join the difflines - var diff = diff_lines.join("\n"); - // Add the diff to the list - diffs.push(new Diff(repo, a_path, b_path, a_blob, b_blob, a_mode, b_mode, new_file, deleted_file, diff)); - } - } - - // Return the list of diffs - callback(null, diffs); -} - diff --git a/node_modules/git/lib/git/file_index.js b/node_modules/git/lib/git/file_index.js deleted file mode 100644 index 1fd8b32..0000000 --- a/node_modules/git/lib/git/file_index.js +++ /dev/null @@ -1,241 +0,0 @@ -var util = require('util'), - fs = require('fs'); - -var FileIndex = exports.FileIndex = function(repo_path, callback) { - var _repo_path = repo_path; - var _index_file = repo_path + "/file-index"; - var self = this; - // Set up internal index info - var _sha_count = 0, _commit_index = {}, _commit_order = {}, _all_files = {}; - - // Set up properites for instance - Object.defineProperty(this, "repo_path", { get: function() { return _repo_path; }, enumerable: true}); - Object.defineProperty(this, "index_file", { get: function() { return _index_file; }, enumerable: true}); - // Other values that allow setting - Object.defineProperty(this, "sha_count", { get: function() { return _sha_count; }, set: function(value) { _sha_count = value; }, enumerable: true}); - Object.defineProperty(this, "commit_index", { get: function() { return _commit_index; }, set: function(value) { _commit_index = value; }, enumerable: true}); - Object.defineProperty(this, "commit_order", { get: function() { return _commit_order; }, set: function(value) { _commit_order = value; }, enumerable: true}); - Object.defineProperty(this, "all_files", { get: function() { return _all_files; }, set: function(value) { _all_files = value; }, enumerable: true}); - - fs.stat(_index_file, function(err, stat) { - if(err) return callback(err, stat); - - if(stat.isFile() && stat.size < FileIndex.max_file_size) { - read_index(self, _index_file, function(err, _index) { - if(err) return callback(err, _index); - callback(null, _index); - }) - } else { - callback("index file not found", null); - } - }); -} - -// Max size for file index -FileIndex.max_file_size = 10000000; - -// Chomp text removing end carriage returns -var chomp = function chomp(raw_text) { - return raw_text.replace(/(\n|\r)+$/, ''); -} - -var dirname = function(file_name) { - var elements = file_name.split('/'); - elements.pop(); - if(elements.length == 0) return "."; - return elements.join("/"); -} - -// TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO -// TODO Needs to be async reading files in pieces and parsing them -// TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO -// Read and parse the file index for git -var read_index = function(file_index, _index_file, callback) { - var current_sha = null; - - fs.readFile(_index_file, 'ascii', function(err, data) { - if(err) return callback(err, data); - // Split the text into lines - var lines = data.split("\n"); - // Iterate over all the lines - for(var i = 0; i < lines.length; i++) { - var line = lines[i]; - - // Ensure it's a line with a starting sha - if(line.match(/^(\w{40})/)) { - // Unpack all the sha values (first one being the current_sha and the rest the parents) - var shas = line.match(/(\w{40})/g); - current_sha = shas.shift(); - // The rest of the sha's are the parents - file_index.commit_index[current_sha] = {files:[], parents:shas} - file_index.commit_order[current_sha] = file_index.sha_count; - file_index.sha_count = file_index.sha_count + 1; - } else { - var file_name = chomp(line); - var tree = ''; - // Retrieve the directory name for the file passed in - var dir = dirname(file_name); - // Ensure it's not an empty line - if(line.length > 0) { - // Split up the directory - var dir_parts = dir.split("/"); - for(var j = 0; j < dir_parts.length; j++) { - var part = dir_parts[j]; - - if(dir_parts[j] != '.') { - tree = tree + part + '/' - if(file_index.all_files[tree] == null) file_index.all_files[tree] = []; - if(file_index.all_files[tree].indexOf(current_sha) == -1) - file_index.all_files[tree].unshift(current_sha); - } - } - - // Finish up - if(!file_index.all_files[file_name]) file_index.all_files[file_name] = []; - file_index.all_files[file_name].unshift(current_sha); - file_index.commit_index[current_sha].files.push(file_name); - } - } - } - // Return the parsed index - callback(null, file_index); - }); -} - -// Builds a list of all commits reachable from a single commit -FileIndex.prototype.commits_from = function(commit_sha, callback) { - if(Array.isArray(commit_sha)) return callback("unsuported reference", null); - // Define some holding structures - var already = {}; - var final = []; - var left_to_do = [commit_sha]; - var self = this; - - while(left_to_do.length > 0) { - commit_sha = left_to_do.shift(); - - if(!already[commit_sha]) { - // Add commit to list of final commits - final.push(commit_sha); - already[commit_sha] = true; - - // Get parents of the commit and add them to the list - var commit = self.commit_index[commit_sha]; - if(commit) { - commit.parents.forEach(function(sha) { - left_to_do.push(sha); - }); - } - } - } - // Sort the commits - final = this.sort_commits(final); - // Callback - callback(null, final); -} - -FileIndex.prototype.sort_commits = function(sha_array) { - var self = this; - - return sha_array.sort(function(a, b) { - return compare(parseInt(self.commit_order[b]), parseInt(self.commit_order[a])); - }) -} - -var convert = function(d) { - return ( - d.constructor === Date ? d : - d.constructor === Array ? new Date(d[0],d[1],d[2]) : - d.constructor === Number ? new Date(d) : - d.constructor === String ? new Date(d) : - typeof d === "object" ? new Date(d.year,d.month,d.date) : - NaN - ); -} - -var compare = function(a,b) { - return ( - isFinite(a=convert(a).valueOf()) && - isFinite(b=convert(b).valueOf()) ? - (a>b)-(a 0) { - self.call_git('', 'rev_list', '', options, [reference], function(err, result) { - callback(err, result); - }) - } else if(Object.keys(options).length == 0){ - // Fetch the file index (will create a file index on the first call) - file_index(self, function(err, _file_index) { - if(err) return callback(err, _file_index); - // Parse the revision - self.rev_parse({}, reference, 0, function(err, ref) { - if(err) return callback(err, ref); - // Fetch the commits from the revision passed in - _file_index.commits_from(ref, function(err, commits) { - if(err) { - self.call_git('', 'rev_list', '', options, [reference], function(err, result) { - callback(err, result); - }) - } else { - callback(null, commits.join("\n") + "\n"); - } - }) - }); - }) - } else { - self.rev_parse({}, reference, 0, function(err, ref) { - if(err) return callback(err, ref); - - if(Array.isArray(ref)) { - self.call_git('', 'rev_list', '', options, [reference], function(err, result) { - callback(err, result); - }) - } else { - try { - // Try to execute revision fetch - self.repository.rev_list(ref, options, function(err, result) { - callback(err, result); - }) - } catch(err) { - callback(err, null); - } - } - }); - } -} - -// Chomp text removing end carriage returns -var chomp = function chomp(raw_text) { - return raw_text.replace(/(\n|\r)+$/, ''); -} - -Git.prototype.rev_parse = function(options, string, level, callback) { - if(string != null && string.constructor != String) return callback('only supports single sha reference'); - var self = this; - - // Allow leaving of level - var args = Array.prototype.slice.call(arguments, 2); - var callback = args.pop(); - level = args.length ? args.shift() : 0; - - if(string.match(/\.\./)) { - var parts = string.split(".."); - var sha1 = parts[0], sha2 = parts[1]; - var value = [this.rev_parse({}, sha1, level + 1, callback), this.rev_parse({}, sha2, level + 1, callback)]; - if(level == 0) return callback(null, value); - } - - // a sha is being passed in, chomp and return - if(string.match(/^[0-9a-f]{40}$/)) { - var value = chomp(string); - if(level == 0) { - return callback(null, value); - } else { - return value; - } - } - - // Check all the references - var head = this.git_directory + "/refs/heads/" + string; - try { - if(level == 0) { - return callback(null, chomp(fs.readFileSync(head, 'utf8'))); - } else { - return chomp(fs.readFileSync(head, 'utf8')); - } - } catch(err) {} - - var head = this.git_directory + "/refs/remotes/" + string; - try { - if(level == 0) { - return callback(null, chomp(fs.readFileSync(head, 'utf8'))); - } else { - return chomp(fs.readFileSync(head, 'utf8')); - } - } catch(err) {} - - var head = this.git_directory + "/refs/tags/" + string; - try { - if(level == 0) { - return callback(null, chomp(fs.readFileSync(head, 'utf8'))); - } else { - return chomp(fs.readFileSync(head, 'utf8')); - } - } catch(err) {} - - // Check packed-refs file, too - var packref = this.git_directory + "/packed-refs"; - try { - // Read the file - var parts = data.split(/\n/); - // Locate head - for(var i = 0; i < parts.length; i++) { - var match_parts = parts[i].match(/^(\w{40}) refs\/.+?\/(.*?)$/); - if(match_parts) { - ref = match_parts[1]; - // If we have a match fetch reference and return - if(new RegExp(string + '$').test(match_parts[3])) { - if(level == 0) { - return callback(null, chomp(ref)); - } else { - return chomp(ref); - } - } - } - } - } catch(err) {} - - // Wait until we got the git call - self.call_git('', 'rev-parse', '', options, [string], function(err, result) { - callback(null, result ? chomp(result) : result); - }) -} - -// List tree content -Git.prototype.ls_tree = function(treeish, paths, options, callback) { - var self = this; - var args = Array.prototype.slice.call(arguments, 1); - var callback = args.pop(); - paths = args.length ? args.shift() : []; - paths = paths ? paths : []; - options = args.length ? args.shift() : {}; - - try { - // Reverse parse the tree sha - this.rev_parse({}, treeish, function(err, sha) { - if(err) return callback(err, sha); - var tree = self.repository.ls_tree(sha, flatten(paths), options['r']); - if(tree == '') return callback('no such sha found', null); - // Ls_tree - callback(null, tree); - }) - } catch(err) { - callback(err, null); - } -} - -// Cat a file -Git.prototype.cat_file = function(type, ref, callback) { - if(type == "t") { - this.file_type(ref, callback); - } else if(type == "s") { - this.file_size(ref, callback); - } else if(type == "p") { - callback(null, this.repository.cat_file(ref)); - } -} - -Git.prototype.file_size = function(ref, callback) { - callback(null, this.repository.cat_file_size(ref)); -} - -// Make a directory -// dir: is the relative path to the directory to create -// -// Return nothing -Git.prototype.fs_mkdir = function(dir, callback) { - var path = this.git_directory + "/" + dir; - GitFileOperations.fs_mkdir(path, callback); -} - -// Initialize a new git repository (create physical setup) -Git.prototype.init = function(options, callback) { - var self = this; - var arguments = Array.prototype.slice(arguments); - - if(Object.keys(options).length == 0) { - Repository.init(this.git_directory, callback); - } else { - // Execute init with call git and return the object - this.call_git('', 'init', '', options, arguments, function(err, result) { - if(err) return callback(err, result); - callback(null, self); - }); - } -} - -// Clone a directory -Git.prototype.clone = function(options, original_path, target_path, callback) { -} - -// Generate diff from the changes between two shas -// Git.prototype.diff = function(options, sha1, sha2, callback) { -// } -// -// var simple_diff = function(repo, options, sha1, sha2, callback) { -// -// } -// -// var native_diff = function(repo, options, sha1, sha2, base, paths, callback) { -// -// } - -// Gotten from -var flatten = function(array) { - return array.reduce(function(a,b) { - return a.concat(b); - }, []); -} - -Git.prototype.diff = function(commit1, commit2, options, callback) { - try { - var self = this; - var args = Array.prototype.slice.call(arguments, 2); - // Pop the callback - var callback = args.pop(); - options = args.length ? args.shift() : {}; - - // Initialize patch variable - var patch = '', commit_obj1 = null, tree1 = null, tree2 = null; - // Retrieve the first commit object - var commit_obj1 = self.repository.get_object_by_sha1(commit1); - var tree1 = commit_obj1.tree; - - if(commit2) { - tree2 = self.repository.get_object_by_sha1(commit2).tree; - } else { - tree2 = self.repository.get_object_by_sha1(commit_obj1.parent[0]).tree; - } - - var qdiff = self.repository.quick_diff(tree1, tree2).sort(); - qdiff.forEach(function(diff_arr) { - // Set up all the variables - var path = diff_arr[0]; - var status = diff_arr[1]; - var treeSHA1 = diff_arr[2]; - var treeSHA2 = diff_arr[3]; - var format = 'unified'; - var lines = 3; - var output = ''; - var file_length_difference = 0; - - // Fetch the files - var fileA = treeSHA1 ? self.repository.cat_file(treeSHA1) : ''; - var fileB = treeSHA2 ? self.repository.cat_file(treeSHA2) : ''; - - // Get the sha's or set empty shas - var sha1 = treeSHA1 || '0000000000000000000000000000000000000000'; - var sha2 = treeSHA2 || '0000000000000000000000000000000000000000'; - - // Split up data - var data_old = fileA.trim().split(/\n/).map(function(e) { return chomp(e); }); - var data_new = fileB.trim().split(/\n/).map(function(e) { return chomp(e); }); - // Javascript split's a file into [''] if it's an empty file - if(data_old.length == 1 && data_old[0] == '') data_old = []; - if(data_new.length == 1 && data_new[0] == '') data_new = []; - - // Get diffs - var diffs = Difference.LCS.diff(data_old, data_new); - if(diffs.length > 0) { - // Create paths - var a_path = "a/" + path.replace(/\.\//g, ''); - var b_path = "b/" + path.replace(/\.\//g, ''); - // Let's create the header - var header = "diff --git " + a_path + " " + b_path; - if(options['full_index']) { - header = header + '\n' + 'index ' + sha1 + '..' + sha2; - if(treeSHA2) header = header + "' 100644"; - } else { - header = header + '\n' + 'index ' + sha1.substr(0, 7) + '..' + sha2.substr(0, 7); - if(treeSHA2) header = header + ' 100644'; - } - - header = header + '\n--- ' + (treeSHA1 ? a_path : '/dev/null'); - header = header + '\n+++ ' + (treeSHA2 ? b_path : '/dev/null'); - header = header + '\n'; - - // standard hunk - var old_hunk = null, hunk = null; - // Process all the diff changes - diffs.forEach(function(piece) { - - try { - hunk = new Difference.LCS.Hunk(data_old, data_new, piece, lines, file_length_difference); - file_length_difference = hunk.file_length_difference; - - if(old_hunk) { - if(lines > 0 && hunk.overlaps(old_hunk)) { - hunk.unshift(old_hunk); - } else { - output = output + old_hunk.diff(format); - } - } - } catch(err) {} - - old_hunk = hunk; - output = output + '\n'; - }); - - // Prepare next - output = output + old_hunk.diff(format); - output = output + '\n'; - patch = patch + header + output.trimLeft(); - } - }); - - // Return the patch - callback(null, patch); - } catch(err) { - callback('tree was bad or lcs is not working', null); - } -} - -// Check if a file exists -Git.prototype.fs_exist = function(path, callback) { - GitFileOperations.fs_exist(this.git_directory, path, callback); -} - -// Write a normal file to the filesystem -// file: relative path from the Git dir -// contents: String content to be written -// -// Return nothing -Git.prototype.fs_write = function(file, content, callback) { - GitFileOperations.fs_write(this.git_directory, file, content, callback); -} - -// Log function, returns the number of logs -Git.prototype.log = function(commit, path, options, callback) { - args = ['--raw', '--no-abbrev', '--numstat']; - if (path) { - args.push('--'); - args.push(path); - } - options.color = 'never'; - this.call_git('', 'log', '', options, args, callback); -} - -// Select the objects that exists -// object_ids: array of object sha's -// -// Returns array of ids's that exist -Git.prototype.select_existing_objects = function(object_ids, callback) { - var existing_object_ids = []; - // Process all the object ids - for(var i = 0; i < object_ids.length; i++) { - // Check if the object_id exists in the db - this.repository.object_exists(object_ids[i], function(err, result) { - if(err) return callback(err, result); - if(result) existing_object_ids.push(object_ids[i]); - }); - } - // Return all the existing objects - callback(null, existing_object_ids); -} - -// Format the patch -Git.prototype.format_patch = function(options, reference, callback) { - this.call_git('', 'format_patch', '', options, [reference], function(err, result) { - callback(err, result); - }) -} - -// Fetch the blame -Git.prototype.blame = function() { - // Unpack parameters as commit might be null - var args = Array.prototype.slice.call(arguments, 0); - var callback = args.pop(); - var options = args.length ? args.shift() : {}; - var arguments = args; - - // Execute blame command - this.call_git('', 'blame', '', options, arguments, function(err, result) { - callback(err, result); - }); -} - -var clean_paths = function(commits) { - var new_commits = {}; - // Iterate over all the commit hash entries and clean the directory names - Object.keys(commits).forEach(function(file) { - var sha = commits[file]; - file = file.substr(file.length - 1, 1) == '/' ? file.substr(0, file.length - 1) : file; - new_commits[file] = sha; - }) - // Return all the cleaned commits - return new_commits; -} - -// Fetch blame tree -Git.prototype.blame_tree = function(commit, path, callback) { - var self = this; - var args = Array.prototype.slice.call(arguments, 1); - var callback = args.pop(); - path = args.length ? args.shift() : null; - - // Create path - path = path != null && path != '' ? [path].join("/").toString() + '/' : path; - path = !path || path.constructor != String ? '' : path; - - // Fetch the file_index - file_index(this, function(err, file_index_instance) { - if(err) return callback(err, file_index_instance); - - self.rev_parse({}, commit, 0, function(err, rev_parse_output) { - if(err) return callback(err, rev_parse_output); - - self.looking_for(commit, path, function(err, looking_for) { - if(err) return callback(err, looking_for); - - file_index_instance.last_commits(rev_parse_output, looking_for, function(err, commits) { - if(err) return callback(err, commits); - - callback(null, clean_paths(commits)); - }); - }); - }); - }); -} - -// Looking for -Git.prototype.looking_for = function(commit, path, callback) { - var self = this; - var args = Array.prototype.slice.call(arguments, 1); - var callback = args.pop(); - path = args.length ? args.shift() : null; - var file = null; - - // Fetch the commit sha - self.rev_parse({}, commit, 0, function(err, rev_parse_output) { - if(err) return callback(err, rev_parse_output); - - // Fetch the sub tree - self.repository.get_subtree(rev_parse_output, path, function(err, tree_sha) { - if(err) return callback(err, tree_sha); - - // Contains the files - var looking_for = []; - // Fetch and return the object by the tree sha - var object = self.repository.get_object_by_sha1(tree_sha); - // Process all the entries for the object - object.entries.forEach(function(entry) { - file = path && !(path == '' || path == '.' || path == './') ? path + "/" + entry.name : entry.name; - // Ensure no double path characters - file = file.replace('//', '/'); - // Add a slash if it's a directory - if(entry.type == 'directory') file = file + "/"; - // Add to list of looking_for entries - looking_for.push(file); - }); - - // Return the entries - return callback(null, looking_for); - }); - }); -} - -// Peform commit -Git.prototype.commit = function() { - // Unpack parameters as commit might be null - var args = Array.prototype.slice.call(arguments, 0); - var callback = args.pop(); - var options = args.length ? args.shift() : {}; - var arguments = args; - - // Execute blame command - this.call_git('', 'commit', '', options, arguments, function(err, result) { - callback(err, result); - }); -} - -// Fetch config -Git.prototype.config = function() { - // Unpack parameters as commit might be null - var args = Array.prototype.slice.call(arguments, 0); - var callback = args.pop(); - var options = args.length ? args.shift() : {}; - var arguments = args; - // Execute blame command - this.call_git('', 'config', '', options, arguments, function(err, result) { - callback(err, result); - }); -} - -// Execute add command -Git.prototype.add = function() { - // Unpack parameters as commit might be null - var args = Array.prototype.slice.call(arguments, 0); - var callback = args.pop(); - var options = args.length ? args.shift() : {}; - var arguments = args; - // Execute blame command - this.call_git('', 'add', '', options, arguments, function(err, result) { - callback(err, result); - }); -} - -// Execute remove command -Git.prototype.remove = function() { - // Unpack parameters as commit might be null - var args = Array.prototype.slice.call(arguments, 0); - var callback = args.pop(); - var options = args.length ? args.shift() : {}; - var arguments = args; - // Execute blame command - this.call_git('', 'rm', '', options, arguments, function(err, result) { - callback(err, result); - }); -} - -// Execute ls-files -Git.prototype.ls_files = function() { - // Unpack parameters as commit might be null - var args = Array.prototype.slice.call(arguments, 0); - var callback = args.pop(); - var options = args.length ? args.shift() : {}; - var arguments = args; - // Execute blame command - this.call_git('', 'ls-files', '', options, arguments, function(err, result) { - callback(err, result); - }); -} - -// Execute diff-files -Git.prototype.diff_files = function() { - // Unpack parameters as commit might be null - var args = Array.prototype.slice.call(arguments, 0); - var callback = args.pop(); - var options = args.length ? args.shift() : {}; - var arguments = args; - // Execute blame command - this.call_git('', 'diff-files', '', options, arguments, function(err, result) { - callback(err, result); - }); -} - -// Execute diff-index -Git.prototype.diff_index = function() { - // Unpack parameters as commit might be null - var args = Array.prototype.slice.call(arguments, 0); - var callback = args.pop(); - var options = args.length ? args.shift() : {}; - var arguments = args; - // Execute blame command - this.call_git('', 'diff-index', '', options, arguments, function(err, result) { - callback(err, result); - }); -} - -Git.prototype.file_type = function(ref, callback) { - return callback(null, this.repository.cat_file_type(ref)); -} - -Git.prototype.put_raw_object = function(content, type, callback) { - return this.repository.put_raw_object(content, type, callback); -} - -Git.prototype.commit_from_sha = function(id) { - var repository = new Repository(this.git_directory); - var object = repository.get_object_by_sha1(id); - - if(object.type == "commit") { - return id; - } else if(object.type == "tag") { - return object.object; - } else { - return ''; - } -} - - -// // =================================================================================================== -// // -// // Decorates the Class prototype with functions wrapping git native functions (if not defined already) -// // -// // =================================================================================================== -// Git.prototype.call_git('', 'help', '', {}, ['--all'], function(err, result) { -// var index = result.indexOf("-----------"); -// result = result.substr(index); -// var lines = result.trim().split("\n"); -// // Ship the first line -// lines.shift(); -// // Process all the lines -// while(lines.length > 0 && lines[0] != '') { -// var line = lines.shift().trim().replace(/ +/g, ' '); -// var parts = line.split(" "); -// -// parts.forEach(function(command) { -// var function_name = command.replace(/\-/g, '_'); -// // For each entry create a new function if it does not exist on the prototype -// if(Git.prototype[function_name] == null) { -// Git.prototype[function_name] = function() { -// // Unpack parameters as commit might be null -// var args = Array.prototype.slice.call(arguments, 0); -// callback = args.pop(); -// var options = args.length ? args.shift() : {}; -// var arguments = args; -// // Execute blame command -// this.call_git('', command, '', options, arguments, function(err, result) { -// callback(err, result); -// }); -// } -// } -// }); -// -// } -// -// // callback(null, null); -// pre_loading_done = true -// // var g = new Git("..../") -// }); - diff --git a/node_modules/git/lib/git/git_file_operations.js b/node_modules/git/lib/git/git_file_operations.js deleted file mode 100644 index 8af908c..0000000 --- a/node_modules/git/lib/git/git_file_operations.js +++ /dev/null @@ -1,170 +0,0 @@ -var util = require('util'), - fs = require('fs'), - exec = require('child_process').exec; - -var GitFileOperations = exports.GitFileOperations = function() {} - -// Streaming glob function -var streaming_glob_function = function(path, stream) { - var entries = fs.readdirSync(path); - entries.forEach(function(entry) { - var entry_path = path + "/" + entry; - var stat = fs.statSync(entry_path); - - if(stat.isDirectory()) { - stream.emit("data", {path:entry_path, stat:stat}); - streaming_glob_function(entry_path, stream); - } else { - stream.emit("data", {path:entry_path, stat:stat}); - } - }) -} - -var stat_with_entry = function(entry_path, stream, callback) { - return function() { - fs.stat(entry_path, function(err, stat) { - if(stat.isDirectory()) { - // Dive into the directory - streaming_glob_function(entry_path, stream); - // Emit the directory and then update the count - stream.emit("data", {path:entry_path, stat:stat}); - callback(); - } else if(stat.isFile()) { - // Update the number of processed directories and emit the data event - stream.emit("data", {path:entry_path, stat:stat}); - callback(); - } - }); - } -} - -// Glob function for the file system -GitFileOperations.glob_streaming = function(path) { - // Comptability - var nextTick = global.setImmediate || process.nextTick; - // Create a stream object - var stream = new process.EventEmitter(); - var processed_directories_count = 0; - var top_level_files_count = -1; - // Tick method - var tick_function = function() { - // If we are done emit end otherwise execute the method again - processed_directories_count == top_level_files_count ? stream.emit("end") : nextTick(tick_function); - } - // set nextTick handler into action - nextTick(tick_function); - // Fetch the top directory - fs.readdir(path, function(err, entries) { - // The top level of files that need to be finished processing for us to be done - if(entries !== undefined && entries.length > 0) { - entries.sort(function(a, b) { - return a > b; - }); - - top_level_files_count = entries.length; - // Execute the entries - var procesEntry = function(i) { - // Entry path - var entry_path = path + "/" + entries[i]; - // Build glob function - stat_with_entry(entry_path, stream, function() { - processed_directories_count = processed_directories_count + 1; - if (++i < entries.length) { - procesEntry(i); - } - })(); - }; - procesEntry(0); - } else { - top_level_files_count = 0; - } - }); - // Return the stream for execution - return stream; -} - -// Execute recursive glob function (private function) -var glob_function = function(path, files) { - var entries = fs.readdirSync(path); - entries.forEach(function(entry) { - var entry_path = path + "/" + entry; - - var stat = fs.statSync(entry_path); - if(stat.isDirectory()) { - glob_function(entry_path, files); - } else { - files.push(entry_path); - } - }) -} - -// Glob function for the file system -GitFileOperations.glob = function(path, files, callback) { - var args = Array.prototype.slice.call(arguments, 1); - callback = args.pop(); - files = args.length ? args.shift() : []; - // Fetch all the files - glob_function(path, files); - callback(null, files); -} - -// Read a file -GitFileOperations.fs_read = function(path, file, callback) { - fs.readFile(path + "/" + file, callback); -} - -// Make a directory -GitFileOperations.fs_mkdir = function(dir, callback) { - fs.mkdir(dir, 16877, callback); -} - -// Check if a directory exists -GitFileOperations.fs_exist = function(dir, path, callback) { -} - -// Delete directory -GitFileOperations.fs_rmdir_r = function(dir, callback) { - // Copy the old directory to the new one - var child = exec('rm -rf ' + dir, function (error, stdout, stderr) { - if (error !== null) { - util.puts('exec error: ' + error); - return callback(error, null); - } - return callback(null, null); - }); -} - -// Write file -GitFileOperations.fs_write = function(dir, file, content, callback) { - // Let's make sure the parent directories exist, split the file into directories and content - var file_parts = file.split("/"); - var file_name = file_parts.pop() - var current_path = dir; - // Create missing sub directories - while(file_parts.length > 0) { - var dir_path = file_parts.shift(); - current_path = current_path + "/" + dir_path; - // Check if the directory exists (if it does not then create it) - try { - fs.statSync(current_path); - } catch(err) { - fs.mkdirSync(current_path, 16877); - } - } - - // Write the file to disk - current_path = dir + "/" + file; - // Append the entry to the file - fs.writeFile(current_path, content, callback); -} - - - - - - - - - - - diff --git a/node_modules/git/lib/git/git_index.js b/node_modules/git/lib/git/git_index.js deleted file mode 100644 index a457a29..0000000 --- a/node_modules/git/lib/git/git_index.js +++ /dev/null @@ -1,188 +0,0 @@ -var util = require('util'), - Tree = require('./tree').Tree, - Config = require('./config').Config; - -var GitIndex = exports.GitIndex = function(repo) { - var _repo = repo, _tree = {}, _current_tree = null; - - Object.defineProperty(this, "tree", { get: function() { return _tree; }, set: function(value) { _tree = value; }, enumerable: true}); - Object.defineProperty(this, "current_tree", { get: function() { return _current_tree; }, set: function(value) { _current_tree = value; }, enumerable: true}); - Object.defineProperty(this, "repo", { get: function() { return _repo; }, set: function(value) { _repo = value; }, enumerable: true}); -} - -// Sets the current tree -// +tree+ the branch/tag/sha... to use - a string -// -// Returns index (self) -GitIndex.prototype.read_tree = function(tree, callback) { - var self = this; - // Load the tree - this.repo.tree(tree, function(err, loaded_tree) { - if(err) return callback(err, loaded_tree); - self.current_tree = loaded_tree; - callback(null, loaded_tree); - }) -} - -// Add a file to the index -// +path+ is the path (including filename) -// +data+ is the binary contents of the file -// -// Returns nothing -GitIndex.prototype.add = function(file_path, data) { - var path = file_path.split('/'); - var filename = path.pop(); - var current = this.tree; - - path.forEach(function(dir) { - current[dir] = current[dir] || {}; - var node = current[dir]; - current = node; - }); - - current[filename] = data; -} - -// Commit the contents of the index -// +message+ is the commit message [nil] -// +parents+ is one or more commits to attach this commit to to form a new head [nil] -// +actor+ is the details of the user making the commit [nil] -// +last_tree+ is a tree to compare with - to avoid making empty commits [nil] -// +head+ is the branch to write this head to [master] -// -// Returns a String of the SHA1 of the commit -GitIndex.prototype.commit = function(message, parents, actor, last_tree, head, callback) { - var self = this; - var args = Array.prototype.slice.call(arguments, 1); - callback = args.pop(); - // Set variables to default values - parents = args.length ? args.shift() : null; - actor = args.length ? args.shift() : null; - last_tree = args.length ? args.shift() : null; - head = args.length ? args.shift() : 'master'; - - this.write_tree(this.tree, this.current_tree, function(err, tree_sha1) { - if(tree_sha1 == last_tree) return callback(null, false); // Don't write identical commits - var contents = []; - // Add tree to contents - contents.push(['tree', tree_sha1].join(' ')); - // Add all parents if they exist - if(parents) { - parents.forEach(function(p) { - if(p) contents.push(['parent', p].join(' ')); - }); - } - - // Define name and email - var name = null, email = null; - - if(actor) { - name = actor.name; - email = actor.email; - } else { - config = new Config(self.repo); - name = config['user.name']; - email = config['user.email']; - } - - var author_string = "" + name + " <" + email + "> " + parseInt(new Date().getTime()/1000) + " -0700"; // TODO must fix - contents.push(['author', author_string].join(' ')); - contents.push(['committer', author_string].join(' ')); - contents.push(''); - contents.push(message); - // Write commit and update reference tree - self.repo.git.put_raw_object(contents.join("\n"), 'commit', function (commit_sha1) { - self.repo.update_ref(head, commit_sha1, callback); - }); - }); -} - -var to_bin = function(sha1o) { - var sha1 = ''; - for(var i = 0; i < sha1o.length; i = i + 2) { - sha1 = sha1 + String.fromCharCode(parseInt(sha1o.substr(i, 2), 16)); - } - return sha1; -} - -// Recursively write a tree to the index -// +tree+ is the tree -// -// Returns the SHA1 String of the tree -GitIndex.prototype.write_tree = function(tree, now_tree, callback) { - var self = this; - var args = Array.prototype.slice.call(arguments, 1); - callback = args.pop(); - // Set variables to default values - now_tree = args.length ? args.shift() : null; - - // Holds the tree content - var tree_contents = {}; - - // Fill in the original tree - if(now_tree) { - now_tree.contents.forEach(function(obj) { - var sha = to_bin(obj.id); - var k = obj.name; - - if(obj instanceof Tree) k = k + '/'; - tree_contents[k] = "" + obj.mode.toString() + " " + obj.name + "\0" + sha; - }); - } - - // overwrite with the new tree contents - Object.keys(tree).forEach(function(key) { - var value = tree[key]; - - if(value.constructor == String) { - var sha = self.write_blob(value); - sha = to_bin(sha); - tree_contents[key] = "" + '100644' + " " + key + '\0' + sha; - } else if(Object.prototype.toString.call(value) === '[object Object]') { - var ctree = now_tree ? (now_tree.find(key)) : null; - // Write the next level - self.write_tree(value, ctree, function(err, sha) { - var sha = to_bin(sha); - tree_contents[key + '/'] = "" + '040000' + " " + key + '\0' + sha; - }); - } - }) - - var tr = Object.keys(tree_contents).sort().map(function(key) { - return tree_contents[key]; - }).join(''); - - // Return the object sha - this.repo.git.put_raw_object(tr, 'tree', function (sha1) { - callback(null, sha1); - }) -} - -// Write the blob to the index -// +data+ is the data to write -// -// Returns the SHA1 String of the blob -GitIndex.prototype.write_blob = function(data) { - return this.repo.git.put_raw_object(data, 'blob'); -} - - - - - - - - - - - - - - - - - - - - - diff --git a/node_modules/git/lib/git/git_object.js b/node_modules/git/lib/git/git_object.js deleted file mode 100644 index 1b9703a..0000000 --- a/node_modules/git/lib/git/git_object.js +++ /dev/null @@ -1,20 +0,0 @@ -var GitCommit = require('./internal/git_commit').GitCommit, - GitTree = require('./internal/git_tree').GitTree, - GitTag = require('./internal/git_tag').GitTag, - GitBlob = require('./internal/git_blob').GitBlob; - -var GitObject = exports.GitObject = function() {} - -GitObject.from_raw = function(raw_object, repository) { - if(raw_object.type == "blob") { - return GitBlob.from_raw(raw_object, repository); - } else if(raw_object.type == "tree") { - return GitTree.from_raw(raw_object, repository); - } else if(raw_object.type == "commit") { - return GitCommit.from_raw(raw_object, repository); - } else if(raw_object.type == "tag") { - return GitTag.from_raw(raw_object, repository); - } else { - throw "got invalid object-type"; - } -} \ No newline at end of file diff --git a/node_modules/git/lib/git/head.js b/node_modules/git/lib/git/head.js deleted file mode 100644 index e851703..0000000 --- a/node_modules/git/lib/git/head.js +++ /dev/null @@ -1,54 +0,0 @@ -var util = require('util'), - Commit = require('./commit').Commit; - -var Head = exports.Head = function(name, commit) { - var _name = name; - var _commit = commit; - // Define the properties - Object.defineProperty(this, "name", { get: function() { return _name; }, enumerable: true}); - Object.defineProperty(this, "commit", { get: function() { return _commit; }, enumerable: true}); -} - -var prefix = function(name) { - return "refs/" + name + "s"; - } - -Head.current = function(repo, options, callback) { - var args = Array.prototype.slice.call(arguments, 1); - callback = args.pop(); - options = args.length ? args.shift() : {}; - // Let's read the the head - repo.git.fs_read('HEAD', function(err, head) { - if(err) return callback(err, head); - var matches = head.toString().match(/ref: refs\/heads\/(.*)/); - if(!matches) return callback(null, null); - // we have a correct reference, create a new head reference - repo.git.rev_parse(options, 'HEAD', 0, function(err, rev) { - if(err) return callback(err, rev); - return callback(null, new Head(matches[1], rev)); - }); - }); -} - -Head.find_all = function(repo, options, callback) { - var args = Array.prototype.slice.call(arguments, 1); - callback = args.pop(); - options = args.length ? args.shift() : {}; - // Let's fetch the references - repo.git.refs({}, prefix('head'), function(err, refs) { - if(err) return callback(err, refs); - // Map the references - var mapped_refs = refs.split(/\n/).map(function(ref) { - // Fetch the name and id for the reference - var split_reference = ref.split(/ /); - var name = split_reference[0]; - var id = split_reference[1]; - - // Create a commit object wit the id - var commit = new Commit(repo, id); - // Wrap the commit object in a head object and return mapped object - return new Head(name, commit); - }) - callback(null, mapped_refs); - }) -} \ No newline at end of file diff --git a/node_modules/git/lib/git/index.js b/node_modules/git/lib/git/index.js deleted file mode 100644 index a6c1f56..0000000 --- a/node_modules/git/lib/git/index.js +++ /dev/null @@ -1,36 +0,0 @@ -[ - 'actor', 'binary_parser', 'blame', 'blame_line', 'blob', 'commit', 'commit_stats', 'config', - 'diff', 'file_index', 'file_window', 'git', 'git_file_operations', 'git_index', 'git_object', - 'head', 'loose_storage', 'merge', 'pack_storage', 'raw_object', 'ref', 'remote', 'repo', 'repository', - 'status', 'status_file', 'sub_module', 'tag', 'tree', 'user_info', - 'internal/directory_entry', 'internal/git_blob', 'internal/git_commit', 'internal/git_tag', 'internal/git_tree' -].forEach(function(path){ - var module = require('./' + path); - for (var i in module) - exports[i] = module[i]; -}); - -[ - 'zlib' -].forEach(function(path){ - var module = require('../zlib/' + path); - for (var i in module) - exports[i] = module[i]; -}); - -[ - 'sprintf' -].forEach(function(path){ - var module = require('../sprintf/' + path); - for (var i in module) - exports[i] = module[i]; -}); - -[ - 'block', 'callbacks', 'change', 'diff', 'hunk' -].forEach(function(path){ - var module = require('../diff/' + path); - for (var i in module) - exports[i] = module[i]; -}); - diff --git a/node_modules/git/lib/git/internal/directory_entry.js b/node_modules/git/lib/git/internal/directory_entry.js deleted file mode 100644 index 0ed41a9..0000000 --- a/node_modules/git/lib/git/internal/directory_entry.js +++ /dev/null @@ -1,60 +0,0 @@ -var StringUtil = require('../../sprintf/sprintf').StringUtil; - -var S_IFMT = parseInt('00170000', 8); -var S_IFLNK = parseInt('0120000', 8); -var S_IFREG = parseInt('0100000', 8); -var S_IFDIR = parseInt('0040000', 8); -var S_IFGITLINK = parseInt('0160000', 8); - -var DirectoryEntry = exports.DirectoryEntry = function(mode, file_name, sha1) { - var _mode = 0, _name = file_name, _sha1 = sha1; - var self = this; - - // Process the mode to correctly get the right value - for(var i = 0; i < mode.length; i++) { - _mode = (_mode << 3) | (mode.charCodeAt(i) - '0'.charCodeAt(0)); - } - - // Internal properties - Object.defineProperty(this, "mode", { get: function() { return _mode; }, set: function(value) { _mode = value; }, enumerable: true}); - Object.defineProperty(this, "name", { get: function() { return _name; }, set: function(value) { _name = value; }, enumerable: true}); - Object.defineProperty(this, "sha1", { get: function() { return _sha1; }, set: function(value) { _sha1 = value; }, enumerable: true}); - // Return the type of entry - Object.defineProperty(this, "type", { get: function() { - var type = self.mode & S_IFMT; - if(type == S_IFGITLINK) { - return 'submodule'; - } else if(type == S_IFLNK) { - return 'link'; - } else if(type == S_IFDIR) { - return 'directory'; - } else if(type == S_IFREG) { - return 'file'; - } else { - return null; - } - }, enumerable: true}); - - Object.defineProperty(this, "format_type", { get:function() { - var type = this.type; - if(type == 'link') { - return 'link'; - } else if(type == 'directory') { - return 'tree'; - } else if(type == 'file') { - return 'blob'; - } else if(type == 'submodule') { - return 'commit'; - } - }, enumerable: false}); - - Object.defineProperty(this, "format_mode", { get:function() { - return StringUtil.sprintf("%06o", _mode); - }, enumerable: false}); - - // Ensure we don't have an illegal type of directory - if([S_IFLNK, S_IFDIR, S_IFREG, S_IFGITLINK].indexOf(_mode & S_IFMT) == -1) { - throw "unknown type for directory entry"; - } -} - diff --git a/node_modules/git/lib/git/internal/git_blob.js b/node_modules/git/lib/git/internal/git_blob.js deleted file mode 100644 index 584e20e..0000000 --- a/node_modules/git/lib/git/internal/git_blob.js +++ /dev/null @@ -1,14 +0,0 @@ -var util = require('util'); - -var GitBlob = exports.GitBlob = function(content, repository) { - var _content = content, _repository = repository; - - Object.defineProperty(this, "content", { get: function() { return _content; }, set: function(value) { _content = value; }, enumerable: true}); - Object.defineProperty(this, "repository", { get: function() { return _repository; }, set: function(value) { _repository = value; }, enumerable: false}); - Object.defineProperty(this, "type", { get: function() { return "blob"; }, enumerable: true}); - Object.defineProperty(this, "raw_content", { get: function() { return _content; }, set: function(value) { _content = value; }, enumerable: true}); -} - -GitBlob.from_raw = function(raw_object, repository) { - return new GitBlob(raw_object.content); -} \ No newline at end of file diff --git a/node_modules/git/lib/git/internal/git_commit.js b/node_modules/git/lib/git/internal/git_commit.js deleted file mode 100644 index 6c6cb77..0000000 --- a/node_modules/git/lib/git/internal/git_commit.js +++ /dev/null @@ -1,87 +0,0 @@ -var util = require('util'), - UserInfo = require('../user_info').UserInfo; - -var GitCommit = exports.GitCommit = function(tree, parent, author, committer, message, headers, repository) { - var _tree = tree, _parent = parent, _author = author, _committer = committer, _message = message, _headers = headers, _repository = repository; - - Object.defineProperty(this, "tree", { get: function() { return _tree; }, enumerable: true}); - Object.defineProperty(this, "parent", { get: function() { return _parent; }, enumerable: true}); - Object.defineProperty(this, "author", { get: function() { return _author; }, enumerable: true}); - Object.defineProperty(this, "committer", { get: function() { return _committer; }, enumerable: true}); - Object.defineProperty(this, "message", { get: function() { return _message; }, enumerable: true}); - Object.defineProperty(this, "headers", { get: function() { return _headers; }, enumerable: true}); - Object.defineProperty(this, "repository", { get: function() { return _repository; }, enumerable: true}); - Object.defineProperty(this, "type", { get: function() { return "commit"; }, enumerable: true}); - - // Raw content of commit - Object.defineProperty(this, "raw_content", { get: function() { - return "tree " + _tree + "\n" - + _parent.map(function(i) { return "parent " + i +"\n"; }).join('') - + "author " + _author + "\ncommitter " + _committer + "\n\n" + _message; - }, enumerable: true}); -} - -// Create a commit from a raw object -GitCommit.from_raw = function(raw_object, repository) { - var parent = []; - var tree = null, author = null, committer = null; - - // Split the text but only grab the 2 first blocks - var split_result = raw_object.content.split(/\n\n/); - var headers = split_result.shift(); - var message = split_result.join("\n\n"); - - // get all the headers - var all_headers = headers.split(/\n/).map(function(header) { - var parts = header.split(/ /); - return [parts.shift(), parts.join(" ")]; - }) - // Iterate over all the headers - all_headers.forEach(function(header) { - var key = header[0]; - var value = header[1]; - - if(key == "tree") { - tree = value; - } else if(key == "parent") { - parent.push(value); - } else if(key == "author") { - author = new UserInfo(value); - } else if(key == "committer") { - committer = new UserInfo(value); - } else { - // Unknow header - util.puts("unknow header '" + key + "' in commit " + raw_object.sha_hex()) - } - }) - - if(!tree && !author && !committer) { - throw "incomplete raw commit object"; - } - // Return the git commit object - return new GitCommit(tree, parent, author, committer, message, headers, repository); -} - -GitCommit.prototype.raw_log = function(sha1) { - var output = "commit " + sha1 + "\n"; - output = output + this.headers + "\n\n"; - var lines = this.message.split("\n"); - // Remove the last line which will be empty - for(var i = 0; i < (lines.length > 1 ? lines.length - 1 : lines.length); i++) { - output = output + ' ' + lines[i] + '\n'; - } - // Return the output - return output + '\n'; -} - - - - - - - - - - - - diff --git a/node_modules/git/lib/git/internal/git_tag.js b/node_modules/git/lib/git/internal/git_tag.js deleted file mode 100644 index ee7886a..0000000 --- a/node_modules/git/lib/git/internal/git_tag.js +++ /dev/null @@ -1,69 +0,0 @@ -var util = require('util'), - UserInfo = require('../user_info').UserInfo; - -var GitTag = exports.GitTag = function(object, type, tag, tagger, message, repository) { - var _object = object, _type = type, _tag = tag, _tagger = tagger, _message = message, _repository = repository; - - Object.defineProperty(this, "repository", { get: function() { return _repository; }, set: function(value) { _repository = value; }, enumerable: true}); - Object.defineProperty(this, "object", { get: function() { return _object; }, set: function(value) { _object = value; }, enumerable: true}); - // Object.defineProperty(this, "type", { get: function() { return _type; }, set: function(value) { _type = value; }, enumerable: true}); - Object.defineProperty(this, "tag", { get: function() { return _tag; }, set: function(value) { _tag = value; }, enumerable: true}); - Object.defineProperty(this, "tagger", { get: function() { return _tagger; }, set: function(value) { _tagger = value; }, enumerable: true}); - Object.defineProperty(this, "message", { get: function() { return _message; }, set: function(value) { _message = value; }, enumerable: true}); - Object.defineProperty(this, "type", { get: function() { return "tag"; }, enumerable: true}); - - Object.defineProperty(this, "raw_content", { get: function() { - return "object " + _object + "\ntype " + _type + "\ntag " + _tag + "\ntagger " + _tagger + " " + _message + "\n\n"; - }, enumerable: false}); -} - -GitTag.from_raw = function(raw_object, repository) { - var parts = raw_object.content.split("\n\n"); - var headers = parts.shift(); - var message = parts.join(/\n\n/); - - // Further split the headers - headers = headers.split(/\n/).map(function(header) { - var parts = header.split(/ /); - return [parts.shift(), parts.join(" ")]; - }) - - // Initialize base variables - var object = '', type = '', tag = '', tagger = ''; - - headers.forEach(function(header) { - var key = header[0]; - var value = header[1]; - - if(key == 'object') { - object = value; - } else if (key == 'type') { - if(['blob', 'tree', 'commit', 'tag'].indexOf(value) == -1) { - throw "invalid type in tag"; - } - // Set the type - type = value; - } else if(key == 'tag') { - tag = value; - } else if(key == 'tagger') { - tagger = new UserInfo(value); - } else { - util.puts("unknown header '" + key); - } - }); - - // If we have an illegal tag object - if(object == null || type == null || tag == null || tagger == null) { - throw "incomplete raw tag object"; - } - // Return the tag - return new GitTag(object, type, tag, tagger, message, repository); -} - - - - - - - - diff --git a/node_modules/git/lib/git/internal/git_tree.js b/node_modules/git/lib/git/internal/git_tree.js deleted file mode 100644 index 82661c4..0000000 --- a/node_modules/git/lib/git/internal/git_tree.js +++ /dev/null @@ -1,70 +0,0 @@ -var util = require('util'), - BinaryParser = require('../binary_parser').BinaryParser, - DirectoryEntry = require('../internal/directory_entry').DirectoryEntry; - -var GitTree = exports.GitTree = function(entries, repository) { - var _entries = entries ? entries : [], _repository = repository; - - // Internal properties - Object.defineProperty(this, "entries", { get: function() { return _entries; }, set: function(value) { _entries = value; }, enumerable: true}); - Object.defineProperty(this, "repository", { get: function() { return _repository; }, set: function(value) { _repository = value; }, enumerable: true}); - Object.defineProperty(this, "type", { get: function() { return "tree"; }, enumerable: true}); - - // Raw content of commit - Object.defineProperty(this, "raw_content", { get: function() { - return _entries.map(function(e) { - return [[e.format_mode, e.format_type, e.sha1].join(' '), e.name].join('\t') - }).join('\n'); - }, enumerable: true}); -} - -var read_until_chr = function(index, content, char) { - var found = false; - var content_length = content.length; - var chr_code = char.charCodeAt(0); - var offset = 0; - - // Search until we locate the content - while(!found && (index + offset) < content_length) { - if(content.charCodeAt(index + offset) == chr_code) found = true; - offset = offset + 1; - } - - // Extract content and return - return content.substr(index, offset - 1); -} - -var to_hex_string = function(string) { - var hexString = ''; - for(var index = 0; index < string.length; index++) { - var value = BinaryParser.toByte(string.substr(index, 1)); - var number = value <= 15 ? "0" + value.toString(16) : value.toString(16); - hexString = hexString + number; - } - return hexString; -}; - -// Create Tree Object from Raw stream -GitTree.from_raw = function(raw_object, repository) { - var entries = []; - var index = 0; - var content_length = raw_object.content.length; - var content = raw_object.content; - - // Parse the content - while(index < content_length) { - var mode = read_until_chr(index, content, ' '); - index = index + mode.length + 1; - var file_name = read_until_chr(index, content, '\0'); - index = index + file_name.length + 1; - var raw_sha = content.substr(index, 20); - index = index + raw_sha.length; - var sha = to_hex_string(raw_sha); - - // Add the Entry to the directory list - entries.push(new DirectoryEntry(mode, file_name, sha)); - } - - // Return a tree with all the entries - return new GitTree(entries, repository); -} diff --git a/node_modules/git/lib/git/loose_storage.js b/node_modules/git/lib/git/loose_storage.js deleted file mode 100644 index 11639d3..0000000 --- a/node_modules/git/lib/git/loose_storage.js +++ /dev/null @@ -1,172 +0,0 @@ -var util = require('util'), - fs = require('fs'), - BinaryParser = require('./binary_parser').BinaryParser, - Zlib = require('../zlib/zlib').Zlib, - RawObject = require('./raw_object').RawObject, - crypto = require('crypto'), - zlib = require('zlib'); - -var OBJ_TYPES = [null, "commit", "tree", "blob", "tag"]; - -LooseStorage = exports.LooseStorage = function(directory) { - var _directory = directory; - - Object.defineProperty(this, "directory", { get: function() { return _directory; }, set: function(value) { _directory = value; }, enumerable: true}); -} - -LooseStorage.prototype.find = function(sha1) { - try { - sha1 = to_hex_string(sha1); - // If we don't have a valid sha - if(sha1.length != 40) return null; - // Directory path - var path = this.directory + "/" + sha1.substring(0, 2) + '/' + sha1.substring(2, 40); - return this.get_raw_object(fs.readFileSync(path)); - } catch(err) { - return null; - } -} - -// Read and parse the raw object -LooseStorage.prototype.get_raw_object = function(buf) { - if(buf.length < 2) throw "object file too small"; - - // Set up variables - var type = null; - var size = null; - var used = null; - var content = null; - - if(this.is_legacy_loose_object(buf)) { - content = new Zlib.Unzip(buf).unzip(); - content = Array.isArray(content) ? content[0] : content; - // Let's split the content up - var parts = content.split(/\0/) - var header = parts.shift(); - content = parts.join("\0"); - - // if no header or content we got an invalid object header - if(header == null || content == null) throw "invalid object header"; - - // Split out the header - parts = header.split(/ /); - type = parts[0]; - size = parts[1]; - // Check that we have a valid type - if(['blob', 'tree', 'commit', 'tag'].indexOf(type) == -1 || !size.match(/^\d+$/)) throw "invalid object header"; - // Convert parts - size = parseInt(size, 10); - } else { - var parts = this.unpack_object_header_gently(buf); - type = parts[0]; - size = parts[1]; - used = parts[2]; - // Unpack content - content = new Zlib.Unzip(buf.slice(used, buf.length)).unzip(); - content = Array.isArray(content) ? content[0] : content; - } - // Return a raw object - return new RawObject(type, content); -} - -LooseStorage.prototype.unpack_object_header_gently = function(buf) { - var used = 0 - var c = buf[used]; - used = used + 1; - - var type = (c >> 4) & 7; - var size = c & 15; - var shift = 4; - - while(c & 0x80 != 0) { - if(buf.length <= used) throw "object file too short"; - // Get next char - c = buf[used]; - used = used + 1; - // Calculate size - size = size + ((c & 0x7f) << shift); - } - - // Fetch the type - type = OBJ_TYPES[type]; - // Check that we have a valid type - if(['blob', 'tree', 'commit', 'tag'].indexOf(type) == -1) throw "invalid loose object type"; - return [type, size, used]; -} - -LooseStorage.prototype.is_legacy_loose_object = function(buf) { - var word = (buf[0] << 8) + buf[1]; - return buf[0] == 0x78 && word % 31 == 0; -} - -var to_hex_string = function(string) { - var hexString = ''; - for(var index = 0; index < string.length; index++) { - var value = BinaryParser.toByte(string.substr(index, 1)); - var number = value <= 15 ? "0" + value.toString(16) : value.toString(16); - hexString = hexString + number; - } - return hexString; -}; - -// currently, I'm using the legacy format because it's easier to do -// this function takes content and a type and writes out the loose object and returns a sha -LooseStorage.prototype.put_raw_object = function(content, type, callback) { - var self = this; - // Retrieve size of message - var size = content.length.toString(); - // Verify that header is ok - LooseStorage.verify_header(type, size); - // Create header - var header = "" + type + " " + size + "\0"; - var store = header + content; - // Use node crypto library to create sha1 hash - var hash = crypto.createHash("sha1"); - hash.update(store); - // Return the hash digest - var sha1 = hash.digest('hex'); - // Create path - var path = this.directory + "/" + sha1.substr(0, 2) + '/' + sha1.substr(2); - - try { - fs.statSync(path); - } catch(err) { - // Deflate the data - var data = zlib.gunzip(store, function (err, buffer) { - if (err) { - throw err; - } - - // File does not exist create the directory - fs.mkdir(self.directory + "/" + sha1.substr(0, 2), 16877, function (err) { - if (err) { - throw err; - } - - fs.writeFile(path, data, 'binary', function (err) { - if (err) { - throw err; - } - - callback(sha1); - }); - }); - }); - } -} - -LooseStorage.verify_header = function(type, size) { - if(["blob", "tree", "commit", "tag"].indexOf(type) == -1 || size.match(/^\d+$/) == null) { - throw "invalid object header"; - } -} - - - - - - - - - - diff --git a/node_modules/git/lib/git/merge.js b/node_modules/git/lib/git/merge.js deleted file mode 100644 index bcd4def..0000000 --- a/node_modules/git/lib/git/merge.js +++ /dev/null @@ -1,39 +0,0 @@ -var Merge = exports.Merge = function(str) { - var _conflicts = 0, _text = {}, _sections = null; - var section = 0; - var status = Merge.STATUS_BOTH; - - Object.defineProperty(this, "conflicts", { get: function() { return _conflicts; }, set: function(value) { _conflicts = value; }, enumerable: true}); - Object.defineProperty(this, "text", { get: function() { return _text; }, set: function(value) { _text = value; }, enumerable: true}); - Object.defineProperty(this, "sections", { get: function() { return _sections; }, set: function(value) { _sections = value; }, enumerable: true}); - - var lines = str.split("\n"); - lines.forEach(function(line) { - if(line.match(/^<<<<<<< (.*?)/)) { - status = Merge.STATUS_OURS; - _conflicts = _conflicts + 1; - section = section + 1; - } else if(line == '=======') { - status = Merge.STATUS_THEIRS; - } else if(line.match(/^>>>>>>> (.*?)/)) { - status = Merge.STATUS_BOTH; - section = section + 1; - } else { - _text[section] = _text[section] == null ? {} : _text[section]; - _text[section][status] = _text[section][status] == null ? [] : _text[section][status]; - _text[section][status].push(line); - } - }); - - // Let's set the values - _text = Object.keys(_text).map(function(key) { - return _text[key]; - }); - // Set the number of sections - _sections = _text.length; -} - -// Static function -Merge.STATUS_BOTH = 'both'; -Merge.STATUS_OURS = 'ours'; -Merge.STATUS_THEIRS = 'theirs'; diff --git a/node_modules/git/lib/git/pack_storage.js b/node_modules/git/lib/git/pack_storage.js deleted file mode 100644 index 113b8b3..0000000 --- a/node_modules/git/lib/git/pack_storage.js +++ /dev/null @@ -1,393 +0,0 @@ -var util = require('util'), - fs = require('fs'), - Buffer = require('buffer').Buffer, - BinaryParser = require('./binary_parser').BinaryParser, - FileWindow = require('./file_window').FileWindow, - RawObject = require('./raw_object').RawObject; - Zlib = require('../zlib/zlib').Zlib; - -var PACK_IDX_SIGNATURE = '\xfftOc'; -var FAN_OUT_COUNT = 256; -var IDX_OFFSET_SIZE = 4; -var OFFSET_SIZE = 4; -var OFFSET_START = FAN_OUT_COUNT * IDX_OFFSET_SIZE; -var SHA1_SIZE = 20; -var CRC_SIZE = 4; -var SHA1_START = OFFSET_START + OFFSET_SIZE; -var ENTRY_SIZE = OFFSET_SIZE + SHA1_SIZE; -var ENTRY_SIZE_V2 = SHA1_SIZE + CRC_SIZE + OFFSET_SIZE; - -// Default types -var OBJ_NONE = 0; -var OBJ_COMMIT = 1; -var OBJ_TREE = 2; -var OBJ_BLOB = 3; -var OBJ_TAG = 4; -var OBJ_OFS_DELTA = 6; -var OBJ_REF_DELTA = 7; -var OBJ_TYPES = [null, "commit", "tree", "blob", "tag"]; - -var PackStorage = exports.PackStorage = function(file) { - var _name = file, _cache = {}, _version = null, _offsets = null, _size = 0; - // Replace idx reference with pack - if(file.match(/\.idx$/)) { - file = file.substr(0, file.length - 3) + "pack"; - } - - Object.defineProperty(this, "name", { get: function() { return _name; }, set: function(value) { _name = value; }, enumerable: true}); - Object.defineProperty(this, "cache", { get: function() { return _cache; }, set: function(value) { _cache = value; }, enumerable: true}); - Object.defineProperty(this, "version", { get: function() { return _version; }, set: function(value) { _version = value; }, enumerable: true}); - Object.defineProperty(this, "offsets", { get: function() { return _offsets; }, set: function(value) { _offsets = value; }, enumerable: true}); - Object.defineProperty(this, "size", { get: function() { return _size; }, set: function(value) { _size = value; }, enumerable: true}); - // Initialize pack - init_pack(this); -} - -// Search for a sha1 in the pack -PackStorage.prototype.find = function(sha1) { - // If we have the object in the cache return it - if(this.cache[sha1]) return this.cache[sha1]; - // We need to search for the object in the pack file - var offset = find_object(this, sha1); - // If no object found return null - if(!offset) return null; - // Parse the object at the located offset - var obj = this.parse_object(this, offset); - this.cache[sha1] = obj; - return obj; -} - -// Close the pack (nothing should be open, might be able to remove this TODO) -PackStorage.prototype.close = function() { -} - -PackStorage.prototype.parse_object = function(pack, offset) { - // Open the pack file - var packfile = fs.openSync(pack.name, "r"); - var result = this.unpack_object(pack, packfile, offset); - var data = result[0]; - var type = result[1]; - // Close the packfile - fs.closeSync(packfile) - return new RawObject(OBJ_TYPES[type], data); -} - -PackStorage.prototype.unpack_object = function(pack, packfile, offset, options) { - // Ensure valid options variable - options = options ? options : {}; - var obj_offset = offset; - - // TODO TODO TODO TODO TODO TODO - // TODO TODO TODO TODO TODO TODO - // TODO TODO TODO TODO TODO TODO - - var buf = new Buffer(1); - fs.readSync(packfile, buf, 0, 1, offset); - // Fetch the first byte - var c = buf[0]; - var size = c & 0xf - var type = (c >> 4) & 7; - var shift = 4; - var offset = offset + 1; - // unpack until we have decoded size - while((c & 0x80) != 0) { - fs.readSync(packfile, buf, 0, 1, offset); - c = buf[0]; - // Adjust size for the byte - size = size | ((c & 0x7f) << shift); - shift = shift + 7; - offset = offset + 1; - } - - // If it's not a commit or tree and caching is enabled then return false - if(!(type == OBJ_COMMIT || type == OBJ_TREE) && options['caching']) return [false, false]; - // Check the type of object and either unpack the delta or the compressed data (gziped) - if(type == OBJ_OFS_DELTA || type == OBJ_REF_DELTA) { - return this.unpack_deltified(packfile, type, offset, obj_offset, size, options); - } else if(type == OBJ_COMMIT || type == OBJ_TREE || type == OBJ_BLOB || type == OBJ_TAG) { - var data = unpack_compressed(pack, offset, size); - return [data, type]; - } else { - throw new "invalid type " + type; - } -} - -PackStorage.prototype.unpack_deltified = function(packfile, type, offset, obj_offset, size, options) { - var data = new Buffer(SHA1_SIZE); - // Read the SHA - fs.readSync(packfile, data, 0, SHA1_SIZE, offset); - - if(type == OBJ_OFS_DELTA) { - var i = 0; - var c = data[i]; - var base_offset = c & 0x7f; - - while((c & 0x80) != 0) { - c = data[++i]; - base_offset = base_offset + 1; - base_offset = base_offset << 7; - base_offset = base_offset | (c & 0x7f); - } - - base_offset = obj_offset - base_offset; - offset = offset + i + 1; - } else { - base_offset = find_object(this, data.toString()) - offset = offset + SHA1_SIZE; - } - - // Fetch the object at this offset and unpack the result - var object_array = this.unpack_object(this, packfile, base_offset); - var base = object_array[0]; - var type = object_array[1]; - // If it's not a Commit or Tree return an empty delta - if(!(type == OBJ_COMMIT || type == OBJ_TREE) && options['caching']) return [false, false]; - // Unpack the the data - var delta = unpack_compressed(this, offset, size); - var delta2 = patch_delta(base, delta); - return [delta2, type]; -} - -var to_hex_string = function(string) { - var hexString = ''; - for(var index = 0; index < string.length; index++) { - var value = BinaryParser.toByte(string.substr(index, 1)); - var number = value <= 15 ? "0" + value.toString(16) : value.toString(16); - hexString = hexString + number; - } - return hexString; -}; - -var patch_delta = function(base, delta) { - var delta_header_parts = patch_delta_header_size(delta, 0); - var src_size = delta_header_parts[0]; - var pos = delta_header_parts[1]; - - if(src_size != base.length) throw "invalid delta data"; - - delta_header_parts = patch_delta_header_size(delta, pos); - var dest_size = delta_header_parts[0]; - pos = delta_header_parts[1]; - var dest = ''; - - while(pos < delta.length) { - var c = delta.charCodeAt(pos); - pos = pos + 1; - - // Keep reading until end of data pack - if((c & 0x80) != 0) { - pos = pos - 1; - var cp_off = 0; - var cp_size = 0; - - if((c & 0x01) != 0) cp_off = delta.charCodeAt(pos += 1); - if((c & 0x02) != 0) cp_off = cp_off | (delta.charCodeAt(pos += 1) << 8); - if((c & 0x04) != 0) cp_off = cp_off | (delta.charCodeAt(pos += 1) << 16); - if((c & 0x08) != 0) cp_off = cp_off | (delta.charCodeAt(pos += 1) << 24); - - if((c & 0x10) != 0) cp_size = delta.charCodeAt(pos += 1); - if((c & 0x20) != 0) cp_size = cp_size | (delta.charCodeAt(pos += 1) << 8); - if((c & 0x40) != 0) cp_size = cp_size | (delta.charCodeAt(pos += 1) << 16); - if(cp_size == 0) cp_size = 0x10000; - - pos = pos + 1; - dest = dest + base.substr(cp_off, cp_size); - } else if(c != 0) { - dest = dest + delta.substr(pos, c); - pos = pos + c; - } else { - throw "invalid delta data"; - } - } - - return dest; -} - -var patch_delta_header_size = function(delta, pos) { - var size = 0; - var shift = 0; - - do { - var c = delta.charCodeAt(pos); - if(c == null) throw 'invalid delta data'; - pos = pos + 1; - size = size | ((c & 0x7f) << shift); - shift = shift + 7 - - } while((c & 0x80) != 0); - - // Return the header size and position - return [size, pos]; -} - -var unpack_compressed = function(pack, offset, destsize) { - var outdata = ""; - var file_offset = offset; - var packfile = fs.openSync(pack.name, "r"); - - // Read in the compressed object (this could be huge :() - // TODO TODO TODO, change unzip method to allow for initializing the structure and then decoding - // pieces - var indata = new Buffer(destsize + 100); - var bytes_read = fs.readSync(packfile, indata, 0, destsize + 100, file_offset); - // Close the file - fs.closeSync(packfile); - // Adjust the file_offset - file_offset = file_offset + destsize; - outdata = outdata + new Zlib.Unzip(indata).unzip(); - - if(outdata.size > destsize) { - throw "error reading pack data"; - } - // Return the data read from the compressed block - return outdata; -} - -var find_object_in_index = function(pack, idx, sha1) { - // Parse the first value of the sha as an index - var slot = sha1.charCodeAt(0); - if(slot == NaN) return null; - - // Unpack the variables - var first = pack.offsets[slot]; - var last = pack.offsets[slot + 1]; - - while(first < last) { - var mid = parseInt((first + last) / 2); - // If we have a version 2 pack file - if(pack.version == 2) { - // Fetch the sha1 - var midsha1 = idx.index([(OFFSET_START + (mid * SHA1_SIZE)), SHA1_SIZE]); - var compare_sha1 = ''; - // Convert midsha1 to allow for correct string comparision - for(var i = 0; i < midsha1.length; i++) { - compare_sha1 = compare_sha1 + String.fromCharCode(midsha1[i]); - } - - // Do a locale Compare - var cmp = compare_sha1.localeCompare(sha1); - if(cmp < 0) { - first = mid + 1; - } else if(cmp > 0) { - last = mid; - } else { - var pos = OFFSET_START + (pack.size * (SHA1_SIZE + CRC_SIZE)) + (mid * OFFSET_SIZE); - var offset = idx.index([pos, OFFSET_SIZE]); - offset = BinaryParser.toInt(reverse_buffer(offset).toString('binary', 0, 4)); - return offset; - } - } else { - var midsha1 = idx.index([SHA1_START + mid * ENTRY_SIZE, SHA1_SIZE]); - var compare_sha1 = ''; - // Convert midsha1 to allow for correct string comparision - for(var i = 0; i < midsha1.length; i++) { - compare_sha1 = compare_sha1 + String.fromCharCode(midsha1[i]); - } - - // Do a locale Compare - var cmp = compare_sha1.localeCompare(sha1); - if(cmp < 0) { - first = mid + 1; - } else if(cmp > 0) { - last = mid; - } else { - var pos = OFFSET_START + mid * ENTRY_SIZE; - var offset = idx.index([pos, OFFSET_SIZE]); - offset = BinaryParser.toInt(reverse_buffer(offset).toString('binary', 0, 4)); - return offset; - } - } - } - return null; -} - -var find_object = function(pack, sha1) { - var obj = null; - // Should I not use the cached version in the future ? TODO - with_idx(pack, function(err, idx) { - obj = find_object_in_index(pack, idx, sha1); - }) - - return obj; -} - -var reverse_buffer = function(buffer) { - var result_buffer = new Buffer(buffer.length); - var length = buffer.length; - - for(var i = 0; i < length; i++) { - result_buffer[length - 1 - i] = buffer[i]; - } - - return result_buffer; -} - -var init_pack = function(pack) { - // TODO TODO TODO - with_idx(pack, function(err, idx) { - // Reset pack offsets - pack.offsets = [0]; - // Do a max of FAN_OUT_COUNT to avoid going crazy - for(var i = 0; i < FAN_OUT_COUNT; i++) { - // Each offset value is a 4 byte network encoded integer - var pos = idx.index([i * IDX_OFFSET_SIZE, IDX_OFFSET_SIZE]) - pos = BinaryParser.toInt(reverse_buffer(pos).toString('binary', 0, 4)); - // If the position is less than the pack offset stored the pack index is corrupt - if(pos < pack.offsets[i]) { - throw "pack " + pack.name + " has discontinuous index " + i; - } - // Add offset position to list of tracked offsets - pack.offsets.push(pos); - } - // Adjust the pack size - pack.size = pack.offsets[pack.offsets.length - 1]; - // Close all files - idx.close(); - }); -} - -var with_idx = function(pack, index_file, callback) { - var args = Array.prototype.slice.call(arguments, 1); - callback = args.pop(); - index_file = args.length ? args.shift() : null; - // Final idx file name - var idx_file_name = null; - // Define file handle variable - var idxfile = null; - - if(!index_file) { - index_file = pack.name; - idx_file_name = pack.name.substr(0, pack.name.length - 4) + "idx"; - idxfile = fs.openSync(pack.name.substr(0, pack.name.length - 4) + "idx", "r"); - } else { - idx_file_name = index_file; - idxfile = fs.openSync(index_file, "r"); - } - - // Read header - var sign_buffer = new Buffer(4); - var signature = ''; - fs.readSync(idxfile, sign_buffer, 0, 4); - for(var i = 0; i < sign_buffer.length; i++) { - signature = signature + BinaryParser.fromByte(sign_buffer[i]); - } - - // Extract version of pack - var ver_buffer = new Buffer(4); - fs.readSync(idxfile, ver_buffer, 0, 4); - var ver = BinaryParser.toInt(reverse_buffer(ver_buffer).toString('binary', 0, 4)); - // Close idx file - fs.closeSync(idxfile); - // If we have a IDX pack signature this is at least version 2 of the file format - if(signature == PACK_IDX_SIGNATURE) { - if(ver != 2) { - throw ("pack " + pack.name + " has unknown pack file version " + ver); - } - pack.version = 2; - } else { - pack.version = 1; - } - // Create a file window and return it - var idx = new FileWindow(idx_file_name, pack.version); - callback(null, idx); -} \ No newline at end of file diff --git a/node_modules/git/lib/git/raw_object.js b/node_modules/git/lib/git/raw_object.js deleted file mode 100644 index c363e5c..0000000 --- a/node_modules/git/lib/git/raw_object.js +++ /dev/null @@ -1,26 +0,0 @@ -var crypto = require('crypto'), - util = require('util'), - Buffer = require('buffer').Buffer, - BinaryParser = require('./binary_parser').BinaryParser; - -var RawObject = exports.RawObject = function(type, content) { - var _type = type, _content = content; - - Object.defineProperty(this, "type", { get: function() { return _type; }, set: function(value) { _type = value; }, enumerable: true}); - Object.defineProperty(this, "content", { get: function() { return _content; }, set: function(value) { _content = value; }, enumerable: true}); -} - -RawObject.prototype.sha1 = function(encoding) { - type = type ? type : 'binary'; - // Create the basis for the digest - var digest_content = this.type + " " + this.content.length + BinaryParser.fromByte(0) + this.content; - // Use node crypto library to create sha1 hash - var hash = crypto.createHash("sha1"); - hash.update(digest_content); - // Return the hash digest - return hash.digest('binary'); -} - -RawObject.prototype.sha1_hex = function() { - this.sha1('hex'); -} \ No newline at end of file diff --git a/node_modules/git/lib/git/ref.js b/node_modules/git/lib/git/ref.js deleted file mode 100644 index b7eb2cd..0000000 --- a/node_modules/git/lib/git/ref.js +++ /dev/null @@ -1 +0,0 @@ -var Ref = exports.Ref = function() {} \ No newline at end of file diff --git a/node_modules/git/lib/git/remote.js b/node_modules/git/lib/git/remote.js deleted file mode 100644 index 6e0efd8..0000000 --- a/node_modules/git/lib/git/remote.js +++ /dev/null @@ -1,37 +0,0 @@ -var Commit = require('./commit').Commit; - -var Remote = exports.Remote = function(name, commit) { - var _name = name; - var _commit = commit; - // Define the properties - Object.defineProperty(this, "name", { get: function() { return _name; }, enumerable: true}); - Object.defineProperty(this, "commit", { get: function() { return _commit; }, enumerable: true}); -} - -var prefix = function(name) { - return "refs/" + name + "s"; - } - -Remote.find_all = function(repo, options, callback) { - var args = Array.prototype.slice.call(arguments, 1); - callback = args.pop(); - options = args.length ? args.shift() : {}; - - // Let's fetch the references - repo.git.refs({}, prefix('remote'), function(err, refs) { - if(err) return callback(err, refs); - // Map the references - var mapped_refs = refs.split(/\n/).map(function(ref) { - // Fetch the name and id for the reference - var split_reference = ref.split(/ /); - var name = split_reference[0]; - var id = split_reference[1]; - - // Create a commit object wit the id - var commit = new Commit(repo, id); - // Wrap the commit object in a head object and return mapped object - return new Remote(name, commit); - }) - callback(null, mapped_refs); - }) -} \ No newline at end of file diff --git a/node_modules/git/lib/git/repo.js b/node_modules/git/lib/git/repo.js deleted file mode 100644 index 6913b4e..0000000 --- a/node_modules/git/lib/git/repo.js +++ /dev/null @@ -1,507 +0,0 @@ -var Head = require('./head').Head, - Git = require('./git').Git, - Commit = require('./commit').Commit, - fs = require('fs'), - util = require('util'), - Tree = require('./tree').Tree, - Blob = require('./blob').Blob, - Head = require('./head').Head, - Tag = require('./tag').Tag, - Remote = require('./remote').Remote, - Blame = require('./blame').Blame, - CommitStats = require('./commit_stats').CommitStats, - Config = require('./config').Config, - Status = require('./status').Status, - GitIndex = require('./git_index').GitIndex; - -var Repo = exports.Repo = function(path, options, callback) { - var args = Array.prototype.slice.call(arguments, 1); - callback = args.pop(); - options = args.length ? args.shift() : {}; - - var _path = path; - var _options = options; - var _working_directory = _path; - var _bare = true; - var _git = null; - var _config_object = null; - // Create git object - var self = this; - // Control access to internal variables - Object.defineProperty(this, "path", { get: function() { return _path; }, enumerable: true}); - Object.defineProperty(this, "options", { get: function() { return _options; }, enumerable: true}); - Object.defineProperty(this, "git", { get: function() { return _git; }, enumerable: true}); - Object.defineProperty(this, "config_object", { get: function() { return _config_object; }, enumerable: true}); - Object.defineProperty(this, "bare", { get: function() { return _bare; }, enumerable: true}); - Object.defineProperty(this, "working_directory", { get: function() { return _working_directory; }, enumerable: true}); - - try { - var epath = fs.realpathSync(path); - // Todo checks on paths - fs.stat(epath + "/.git", function(err, stat) { - if(!err) { - _working_directory = epath; - _path = epath + "/.git"; - _bare = false; - _git = new Git(_path); - // Return the repo - callback(null, self); - } else { - // Check if it's a bare or already is pointing to the .git directory - fs.stat(epath, function(err, stat) { - if(!err && stat.isDirectory() && (epath.match(/\.git$/) || options.is_bare)) { - _path = epath; - _bare = true; - _git = new Git(_path); - // Return the repo - callback(null, self); - } else if(!err && stat.isDirectory()) { - callback("invalid git repository", null); - } else { - callback("no such path", null); - } - }); - } - }); - } catch (err) { - callback("no such path", null); - } -} - -// Fetch the current head -Repo.prototype.head = function(callback) { - Head.current(this, callback); -} - -// Fetch the repo heads -Repo.prototype.heads = function(callback) { - Head.find_all(this, callback); -} - -// Returns the tag objects that are available in this repo -Repo.prototype.tags = function(callback) { - Tag.find_all(this, callback); -} - -// Fetch a set of commits -Repo.prototype.commits = function(start, max_count, skip, callback) { - var args = Array.prototype.slice.call(arguments, 0); - callback = args.pop(); - start = args.length ? args.shift() : 'master'; - max_count = args.length ? args.shift() : 10; - skip = args.length ? args.shift() : 0; - - var options = {max_count:max_count, skip:skip} - // Locate all commits with the specified options - Commit.find_all(this, start, options, callback); -} - -// Fetch a specific commit -Repo.prototype.commit = function(id, callback) { - var options = {max_count:1}; - // Locate commits and return the first one - Commit.find_all(this, id, options, function(err, commits) { - if(err) return callback(err, commits); - callback(null, commits[0]); - }) -} - -// Fetch the commit count based on a start reference -Repo.prototype.commit_count = function(start, callback) { - start = start ? start : 'master'; - Commit.count(this, start, callback); -} - -// Fetch a repository tree -Repo.prototype.tree = function(treeish, paths, callback) { - var args = Array.prototype.slice.call(arguments, 0); - callback = args.pop(); - // Set variables to default values - treeish = args.length ? args.shift() : 'master'; - paths = args.length ? args.shift() : []; - // Construct the tree - Tree.construct(this, treeish, paths, callback); -} - -// Create a blob object -Repo.prototype.blob = function(id, callback) { - callback(null, new Blob(this, id)); -} - -// Initialize a bare git repository at the given path -// path: full path to the repo (traditionally ends with /.git) -// options: is any additional options to the git init command -// -// Examples -// Repo.init_bare('/var/git/myrepo.git') -// -// Return repo (newly created repo) -Repo.init_bare = function(path, git_options, repo_options, callback) { - var args = Array.prototype.slice.call(arguments, 1); - callback = args.pop(); - // Set variables to default values - git_options = args.length ? args.shift() : {}; - repo_options = repo_options ? repo_options : {}; - // Set up bare option - git_options['bare'] = true; - repo_options['is_bare'] = true; - // Create a git object - var git = new Git(path); - // Create the directory - git.fs_mkdir('', function(err, result) { - if(err) return callback(err, result); - git.init(git_options, function(err, git) { - if(err) return callback(err, git); - new Repo(path, repo_options, callback); - }) - }) -} - -// Fork a bare git repository from this repo -// path: is the full path of the new repo (traditionally ends with /.git) -// options: is additional options to the git clone command (:bare and :shared are true by default) -// -// Return repo (newly created forked repo) -Repo.prototype.fork_bare = function(path, options, callback) { - var args = Array.prototype.slice.call(arguments, 1); - callback = args.pop(); - var self = this; - // Set variables to default values - options = args.length ? args.shift() : {}; - options['bare'] = true; - options['shared'] = true; - // Create a git object - var git = new Git(path); - git.fs_mkdir('', function(err, result) { - if(err) return callback(err, result); - self.git.clone(options, self.path, path, function(err, result) { - if(err) return callback(err, result); - new Repo(path, {is_bare:true}, callback); - }) - }) -} - -// The diff from commit a to commit b, optionally restricted to the fiven file(s) -// a: the base commit -// b: the end commit -// paths: optional list of file paths on which to restrict the diff -Repo.prototype.diff = function(a, b, paths, callback) { - var self = this; - var args = Array.prototype.slice.call(arguments, 0); // XXX doesnt seem correct but it works for me - callback = args.pop(); - b = args.length ? args.shift() : null; - paths = args.length ? args.shift() : []; - - Commit.diff(this, a, b, paths, callback); -} - -// The commit diff for the given commit -// commit: the commit name/id -// -// Returns array of diff objects -Repo.prototype.commit_diff = function(commit, callback) { - Commit.diff(this, commit, callback); -} - -// The list of alternates for this repo -// -// Returns array of string (pathnames of alternates) -Repo.prototype.alternates = function(callback) { - var alternates_path = "objects/info/alternates"; - var self = this; - - this.git.fs_exist(alternates_path, function(err, result) { - if(err) return callback(err, result); - if(!result) return callback(null, []); - self.git.fs_read(alternates_path, function(err, data) { - if(err) return callback(err, data); - callback(null, data.trim().split("\n")); - }) - }); -} - -// Sets the alternates -// alts: array of string paths representing the alternates -// -// Returns nothing -Repo.prototype.set_alternates = function(alts, callback) { - var self = this; - var fail_msg = null; - // check all the entries - for(var i = 0; i < alts.length; i++) { - - // Is sync underneath (to avoid to many files open) - this.git.fs_exist(alts[i], function(err, result) { - if(err) fail_msg = err; - if(!result) fail_msg = "could not set alternates. alternate path " + alts[i] + " must exist"; - }); - } - - // If we have a fail message return - if(fail_msg) { return callback(fail_msg, null); } - // Otherwise let's set the alternate - if(alts.length == 0) { - this.git.fs_write('objects/info/alternates', '', callback); - } else { - this.git.fs_write('objects/info/alternates', alts.join("\n"), callback); - } -} - -// The commit log for a treeish -// -// Returns array of commits -Repo.prototype.log = function(commit, path, options, callback) { - var args = Array.prototype.slice.call(arguments, 0); - callback = args.pop(); - var self = this; - // Unpack variables - commit = args.length ? args.shift() : 'master'; - path = args.length ? args.shift() : null; - options = args.length ? args.shift() : {}; - // Merge in extra parameters - options['pretty'] = "raw"; - // var arg = path ? [commit, '--', path] : [commit]; - // Extract the commits - this.git.log(commit, path, options, function(err, commits) { - if(err) return callback(err, commits); - callback(null, Commit.list_from_string(self, commits)) - }); -} - -// Returns a list of commits that is in other_repo but not in self -// -// Returns array of commits -Repo.prototype.commit_deltas_from = function(other_repo, reference, other_reference, callback) { - var args = Array.prototype.slice.call(arguments, 1); - callback = args.pop(); - var self = this; - // Unpack variables - reference = args.length ? args.shift() : 'master'; - other_reference = args.length ? args.shift() : 'master'; - // Let's fetch revlist - self.git.rev_list({}, reference, function(err, rev_text) { - if(err) return callback(err, rev_text); - var repo_refs = rev_text.trim().split("\n"); - - other_repo.git.rev_list({}, other_reference, function(err, other_rev_text) { - if(err) return callback(err, other_rev_text); - var other_repo_refs = other_rev_text.trim().split("\n"); - - // Subtract the references from other references - // create map for the array to avoid binary searches - var repo_ref_map = {}; - repo_refs.forEach(function(line) { - repo_ref_map[line] = 1; - }); - - // Subtract one array from the other - var intersection = other_repo_refs.filter(function(line) { return !repo_ref_map[line]; }) - // Returned commits - var commits = []; - // Process all the intersected values - for(var i = 0; i < intersection.length; i++) { - var ref = intersection[i]; - Commit.find_all(other_repo, ref, {max_count:1}, function(err, ref_commits) { - commits.push(ref_commits[0]); - }) - } - - // Return the commits - callback(null, commits); - }) - }); -} - -// An array of ref objects representing the refs in this repo -// -// Returns array of references (baked) -Repo.prototype.refs = function(callback) { - var self = this; - // Let's fetch all the references for the head - Head.find_all(self, function(err, head_refs) { - if(err) return callback(err, head_refs); - // Fetch all the references for the tags - Tag.find_all(self, function(err, tag_refs) { - if(err) return callback(err, tag_refs); - // Fetch all the remote references - Remote.find_all(self, function(err, remote_refs) { - if(err) return callback(err, remote_refs); - // Return the complete list of references - callback(null, head_refs.concat(tag_refs, remote_refs)); - }); - }); - }); -} - -// Chomp text removing end carriage returns -var chomp = function chomp(raw_text) { - return raw_text.replace(/(\n|\r)+$/, ''); -} - -// The project's description, Taken directly from /description file in the repo -// -// Return string -Repo.prototype.description = function(callback) { - this.git.fs_read('description', function(err, data) { - if(err) return callback(err, data); - callback(null, chomp(data.toString())); - }); -} - -// Update a reference -// head: reference name -// commit_sha: commit to update -// -// Return commit_sha -Repo.prototype.update_ref = function(head, commit_sha, callback) { - if(!commit_sha || commit_sha.length != 40) return callback('not a legal commit sha', null); - this.git.fs_write("refs/heads/" + head, commit_sha, function(err, result) { - if(err) return callback(err, result); - callback(null, commit_sha); - }); -} - -// Get a specific head by name -// head_name: name of the head -// -// Return the head object -Repo.prototype.get_head = function(head_name, callback) { - this.heads(function(err, heads) { - if(err) return callback(err, heads); - for(var i = 0; i < heads.length; i++) { - if(heads[i].name == head_name) return callback(null, heads[i]) - } - // No head found - callback(null, null); - }); -} - -// Return a blam object -// file: name of file we want to locate blame for -// commit: the commit sha for the blame -// -// Return blame object -Repo.prototype.blame = function(file, commit, callback) { - new Blame(this, file, commit, callback); -} - -// Returns a stats object about the commits for the repo -// start: start commit or name -// max_count: maximum count traversing -// skip: Number of commits to skip -Repo.prototype.commit_stats = function(start, max_count, skip, callback) { - var args = Array.prototype.slice.call(arguments, 0); - callback = args.pop(); - var self = this; - // Unpack variables - start = args.length ? args.shift() : 'master'; - max_count = args.length ? args.shift() : 10; - skip = args.length ? args.shift() : 0; - - // Build options hash - var options = {max_count:max_count, skip:skip}; - // Fetch all the commit stats - CommitStats.find_all(self, start, options, callback); -} - -// Commits current index -// -// Return true/false if commit worked -Repo.prototype.commit_index = function(message, callback) { - this.git.commit({}, '-m' + message, callback); -} - -// Commits all tracked and modified files -// -// Return true/false if commit worked -Repo.prototype.commit_all = function(message, callback) { - this.git.commit({}, '-a', '-m' + message, callback); -} - -// Fetch the config for the repo -// -// Returns assoc array with config options -Repo.prototype.config = function(callback) { - if(this.config_object) return callback(null, this.config_object); - callback(null, new Config(this)); -} - -// Gotten from -var flatten = function(array) { - return array.reduce(function(a,b) { - return a.concat(b); - }, []); -} - -// Adds files to the index -Repo.prototype.add = function(files, callback) { - var flattened_files = null; - // Let's unpack the variables - var args = Array.prototype.slice.call(arguments, 0); - // Pop the callback - var callback = args.pop(); - - if(Array.isArray(files)) { - flattened_files = flatten(files); - } else if(args.length > 1){ - flattened_files = flatten(args); - } else { - flattened_files = [files]; - } - // Add the parameters - flattened_files.unshift({}); - flattened_files.push(callback); - // Execut add function against git repo - this.git.add.apply(this.git, flattened_files); -} - -// Removes files to the index -Repo.prototype.remove = function(files, callback) { - var flattened_files = null; - // Let's unpack the variables - var args = Array.prototype.slice.call(arguments, 0); - // Pop the callback - var callback = args.pop(); - - if(Array.isArray(files)) { - flattened_files = flatten(files); - } else if(args.length > 1){ - flattened_files = flatten(args); - } else { - flattened_files = [files]; - } - // Add the parameters - flattened_files.unshift({}); - flattened_files.push(callback); - // Execut add function against git repo - this.git.remove.apply(this.git, flattened_files); -} - -// Fetch repo status -Repo.prototype.status = function(callback) { - new Status(this, callback); -} - -// Array off Remote objects representing the remote branches in -// this repo -// -// Return array of remote references (baked) -Repo.prototype.remotes = function(callback) { - Remote.find_all(this, callback); -} - -// Validate if something is a head -// -// Return head -Repo.prototype.is_head = function(head_name, callback) { - this.get_head(head_name, function(err, head) { - if(err) return callback(err, head); - var exists = head == null ? false : true; - callback(null, exists); - }); -} - -Repo.prototype.index = function(callback) { - callback(null, new GitIndex(this)); -} - diff --git a/node_modules/git/lib/git/repository.js b/node_modules/git/lib/git/repository.js deleted file mode 100644 index 73c8ff2..0000000 --- a/node_modules/git/lib/git/repository.js +++ /dev/null @@ -1,764 +0,0 @@ -var util = require('util'), - GitObject = require('./git_object').GitObject, - fs = require('fs'), - LooseStorage = require('./loose_storage').LooseStorage, - PackStorage = require('./pack_storage').PackStorage, - BinaryParser = require('./binary_parser').BinaryParser; - -Repository = exports.Repository = function(git_directory, options) { - var _git_directory = git_directory; - var _options = options ? options : {}; - var _packs = []; - var _loose = null; - var _already_searched = {}; - var self = this; - - Object.defineProperty(this, "git_directory", { get: function() { return _git_directory; }, set: function(value) { _git_directory = value; }, enumerable: true}); - Object.defineProperty(this, "options", { get: function() { return _options; }, set: function(value) { _options = value; }, enumerable: true}); - Object.defineProperty(this, "already_searched", { get: function() { return _already_searched; }, set: function(value) { _already_searched = value; }, enumerable: true}); - Object.defineProperty(this, "packs", { get: function() { return _packs; }, set: function(value) { _packs = value; }, enumerable: true}); - Object.defineProperty(this, "loose", { get: function() { return _loose; }, set: function(value) { _loose = value; }, enumerable: true}); -} - -// Chomp text removing end carriage returns -var chomp = function chomp(raw_text) { - return raw_text.replace(/(\n|\r)+$/, ''); -} - -var truncate_array = function(array, sha) { - -} - -// takes the following options: -// :since - Time object specifying that you don't want commits BEFORE this -// :until - Time object specifying that you don't want commit AFTER this -// :first_parent - tells log to only walk first parent -// :path_limiter - string or array of strings to limit path -// :max_count - number to limit the output -Repository.prototype.log = function(sha, options, callback) { - this.already_searched = {} - return walk_log(this, sha, options); -} - -var close = function(repo) { - if(repo.packs) { - repo.packs.forEach(function(pack) { - pack.close(); - }); - } -} - -var git_path = function(repo, path) { return repo.git_directory + "/" + path; } - -var initloose = function(repo) { - repo.loaded = []; - repo.loose = []; - load_loose(repo, git_path(repo, 'objects')); - load_alternate_loose(repo, git_path(repo, 'objects')); - return repo.loose; -} - -var load_loose = function(repo, path) { - repo.loaded.push(path); - try { - fs.statSync(path); - repo.loose.push(new LooseStorage(path)); - } catch (err) { - return; - } -} - -var load_alternate_loose = function(repo, path) { - // load alternate loose too - var alt = path + '/info/alternates'; - try { - fs.statSync(alt); - // Read and process all entries in the directory - var lines = fs.readFileSync(alt, 'utf8').split('\n'); - lines.length > 0 && lines[lines.length - 1] == '' ? lines.pop() : null; - // Iterate over alternate loose storage locations - lines.forEach(function(line) { - // Only load the path once - if(repo.loaded.indexOf(chomp(line)) == -1) { - if(line.substr(0, 2) == "..") { - line = fs.realpathSync(repo.git_directory + "/" + line); - } - - load_loose(repo, chomp(line)); - load_alternate_loose(repo, chomp(line)); - } - }); - } catch(err) {} -} - -var initpacks = function(repo) { - close(repo); - repo.loaded_packs = []; - repo.packs = []; - load_packs(repo, git_path(repo, "objects/pack")); - load_alternate_packs(repo, git_path(repo, "objects")); - return repo.packs; -} - -var load_packs = function(repo, path) { - repo.loaded_packs.push(path); - try { - fs.statSync(path); - // Read and process all entries in the directory - fs.readdirSync(path).forEach(function(entry) { - // If we have a pack file create a new storage object - if(entry.match(/\.pack$/i)) { - var pack = new PackStorage(path + "/" + entry); - // If we have specified the map for the pack then load the entire object map - if(repo.options["map_packfile"]) { - pack.cache_objects(); - } - // Add pack to list of packs in the repo - repo.packs.push(pack) - } - }); - } catch (err) { - } -} - -var load_alternate_packs = function(repo, path) { - var alt = path + "/info/alternates"; - - try { - fs.statSync(alt); - // Read and process all entries in the directory - var lines = fs.readFileSync(alt, 'utf8').split('\n'); - lines.length > 0 && lines[lines.length - 1] == '' ? lines.pop() : null; - - lines.forEach(function(line) { - if(line.substr(0, 2) == "..") { - line = fs.realpathSync(repo.git_directory + "/" + line); - } - - // Get pack file name - var full_pack = chomp(line) + "/pack"; - if(repo.loaded_packs.indexOf(full_pack) == -1) { - load_packs(repo, full_pack); - load_alternate_packs(repo, chomp(line)); - } - }) - } catch(err) { - } -} - -var get_raw_object_by_sha1 = function(repo, sha1o) { - if(!sha1o || sha1o == "" || sha1o.constructor != String) throw "no such sha found"; - - var sha1 = ''; - for(var i = 0; i < sha1o.length; i = i + 2) { - sha1 = sha1 + String.fromCharCode(parseInt(sha1o.substr(i, 2), 16)); - } - // Init packs if we have none set yet - if(!repo.packs) initpacks(repo); - // Try packs - var packs = repo.packs; - for(var i = 0; i < packs.length; i++) { - var o = packs[i].find(sha1); - if(o != null) return o; - } - - if(!repo.loose) initloose(repo); - // Try loose storage - var looses = repo.loose; - for(var i = 0; i < looses.length; i++) { - var o = looses[i].find(sha1); - if(o) return o; - } - - // try packs again maybe the object got packed in the meantime - initpacks(repo); - // Try packs - var packs = repo.packs; - for(var i = 0; i < packs.length; i++) { - var o = packs[i].find(sha1); - if(o != null) return o; - } - - // No results throw an error that no sha pack object was found - throw "no such sha found"; -} - -Repository.prototype.get_object_by_sha1 = function(sha1) { - var r = get_raw_object_by_sha1(this, sha1); - if(!r) return null; - return GitObject.from_raw(r, this); -} - -// returns true if the files in the path_limiter were changed or no path limiter -// used by the log() function when passed with a path_limiter -Repository.prototype.files_changed = function(tree_sha1, tree_sha2, path_limiter) { - if(path_limiter == null) return true; - // We got a path limiter, let's perform the diff to check for changes - var mod = this.quick_diff(tree_sha1, tree_sha2); - var files = mod.map(function(c) { return c[0]; }); - path_limiter = Array.isArray(path_limiter) ? path_limiter : path_limiter != null ? [path_limiter] : []; - - for(var i = 0; i < path_limiter.length; i++) { - if(files.indexOf(path_limiter[i]) != -1) return true; - } - return false; -} - -// Returns the raw file contents of this sha -Repository.prototype.cat_file = function(sha) { - return this.get_object_by_sha1(sha).raw_content; -} - -// Returns the file size (as an int) of this sha -Repository.prototype.cat_file_size = function(sha) { - return get_raw_object_by_sha1(this, sha).content.length; -} - -// Returns the file type as string of this sha -Repository.prototype.cat_file_type = function(sha) { - return get_raw_object_by_sha1(this, sha).type; -} - -// returns the raw (cat-file) output for a tree -// if given a commit sha, it will print the tree of that commit -// if given a path limiter array, it will limit the output to those -// if asked for recursive trees, will traverse trees -Repository.prototype.ls_tree = function(sha, paths, recursive) { - var self = this; - paths = paths ? paths : []; - recursive = recursive ? recursive : false; - - try { - if(paths.length > 0) { - // pathing - var part = []; - paths.forEach(function(path) { - part = part.concat(self.ls_tree_path(sha, path)); - }) - // Return the parts - return part.join("\n"); - } else { - return this.get_raw_tree(sha, recursive); - } - } catch (err) { - return ''; - } -} - -Repository.prototype.get_raw_tree = function(sha, recursive) { - var self = this; - recursive = recursive ? recursive : false; - var tree = null; - - var o = get_raw_object_by_sha1(this, sha); - if(o.type == 'commit') { - tree = this.get_object_by_sha1(sha).tree; - } else if(o.type == 'tag') { - var commit_sha = this.get_object_by_sha1(sha).object; - tree = this.get_object_by_sha1(commit_sha).tree; - } else if(o.type == 'tree') { - tree = sha; - } else { - return null; - } - - // If recursive execute next level of trees otherwise return the raw file - return recursive ? this.get_raw_trees(tree) : this.cat_file(tree); -} - -// Grabs tree contents recursively, -// e.g. `git ls-tree -r sha` -Repository.prototype.get_raw_trees = function(sha, path) { - var self = this; - path = path ? path : ''; - var out = ''; - - this.cat_file(sha).split('\n').forEach(function(line) { - var parts = line.split(/\s/); - var mode = parts[0], type = parts[1], sha = parts[2], name = parts[3]; - - if(type == 'tree') { - var full_name = path.length == 0 ? name : (path + '/' + name); - out = out + self.get_raw_trees(sha, full_name); - } else if(path.length == 0) { - out = out + line + '\n'; - } else { - out = out + line.replace(new RegExp(name, 'g'), (path + '/' + name)) + '\n'; - } - }); - // Return the out - return out; -} - -// return array of tree entries -// TODO : refactor this to remove the fugly -Repository.prototype.ls_tree_path = function(sha, path, append) { - var self = this; - var tree = this.get_raw_tree(sha); - - if(path.match(/\//)) { - var paths = path.split('/'); - paths.length > 0 && paths[paths.length - 1] == '' ? paths.pop() : null; - var last = path.substr(path.length - 1, 1); - - if((last == '/') && (paths.length == 1)) { - var append = append ? (append + "/" + paths[0]) : paths[0]; - var dir_name = tree.split('\n').filter(function(p) { return p.split('\t')[1] == paths[0]; })[0]; - - if(dir_name == null) throw "no such path"; - var next_sha = dir_name.split(/ |\t/)[2]; - var tree = self.get_raw_tree(next_sha); - - tree = tree.split('\n'); - - if(append) { - var mod_tree = []; - tree.forEach(function(ent) { - var parts = ent.split('\t'); - var info = parts[0], fpath = parts[1]; - mod_tree.push([info, (append + "/" + fpath)].join('\t')); - }); - return mod_tree; - } else { - return tree; - } - } else { - if(tree == null) throw "no such path"; - var next_path = paths.shift(); - var dir_name = tree.split('\n').filter(function(p) { return p.split('\t')[1] == next_path; })[0]; - if(dir_name == null) throw "no such path"; - var next_sha = dir_name.split(/ |\t/)[2]; - next_path = append ? (append + "/" + next_path) : next_path; - - if(last == '/') { - return self.ls_tree_path(next_sha, (paths.join('/') + '/'), next_path); - } else { - return self.ls_tree_path(next_sha, paths.join('/'), next_path); - } - } - } else { - if(tree == null) throw "no such path"; - var tree = tree.split('\n'); - tree = tree.filter(function(p) { return p.split('\t')[1] == path; }); - - if(append) { - var mod_tree = []; - tree.forEach(function(ent) { - var parts = ent.split('\t'); - var info = parts[0], fpath = parts[1]; - mod_tree.push([info, (append + '/' + fpath)].join('\t')); - }); - return mod_tree; - } else { - return tree; - } - } -} - -// takes 2 tree shas and recursively walks them to find out what -// files or directories have been modified in them and returns on -// array of changes -// [ [full_path, 'added', tree1_hash, nil], -// [full_path, 'removed', nil, tree2_hash], -// [full_path, 'modified', tree1_hash, tree2_hash] -// ] -Repository.prototype.quick_diff = function(tree1, tree2, path, recurse) { - var self = this; - path = path ? path : '.'; - recurse = recurse ? recurse : true; - // Handle empty trees - var changed = []; - if(tree1 == tree2) return changed; - - var t1 = tree1 ? this.list_tree(tree1) : null; - var t2 = tree2 ? this.list_tree(tree2) : null; - - // Check that we have tree 1 blob differences - if(t1) { - Object.keys(t1['blob']).forEach(function(file) { - var hsh = t1['blob'][file]; - // Fetch the same file in tree 2 - var t2_file = t2 ? t2['blob'][file] : null; - var full = path + "/" + file; - if(!t2_file) { - changed.push([full, 'added', hsh['sha'], null]); // not in parent - } else if(hsh['sha'] != t2_file['sha']) { - changed.push([full, 'modified', hsh['sha'], t2_file['sha']]); // file changed - } - }); - } - - - // Check tree 2 blobs - if(t2) { - Object.keys(t2['blob']).forEach(function(file) { - var hsh = t2 ? t2['blob'][file] : null; - if(t1 == null || t1['blob'][file] == null) { - changed.push([path + "/" + file, 'removed', null, hsh['sha']]); - } - }); - } - - // Check for all the tree objects - if(t1) { - Object.keys(t1['tree']).forEach(function(dir) { - var hsh = t1['tree'][dir]; - var t2_tree = t2 ? t2['tree'][dir] : null; - var full = path + "/" + dir; - - if(!t2_tree) { - if(recurse) { - changed = changed.concat(self.quick_diff(hsh['sha'], null, full, true)); - } else { - changed.push([full, 'added', hsh['sha', null]]); - } - } else if(hsh['sha'] != t2_tree['sha']) { - if(recurse) { - changed = changed.concat(self.quick_diff(hsh['sha'], t2_tree['sha'], full, true)); - } else { - changed.push([full, 'modified', hsh['sha'], t2_tree['sha']]); - } - } - }); - } - - if(t2) { - Object.keys(t2['tree']).forEach(function(dir) { - var hsh = t2['tree'][dir]; - var t1_tree = t1 ? t1['tree'][dir] : null; - - if(!t1_tree) { - if(recurse) { - changed = changed.concat(self.quick_diff(null, hsh['sha'], full, true)); - } else { - changed.push([full, 'removed', null, hsh['sha']]); - } - } - }); - } - // Return all the changed files - return changed; -} - -// returna 2-d hash of the tree -// ['blob']['FILENAME'] = {:mode => '100644', :sha => SHA} -// ['tree']['DIRNAME'] = {:mode => '040000', :sha => SHA} -Repository.prototype.list_tree = function(sha) { - var data = {blob:{}, tree:{}, link:{}, commit:{}}; - var object = this.get_object_by_sha1(sha); - object.entries.forEach(function(entry) { - data[entry.format_type][entry.name] = {mode:entry.format_type, sha:entry.sha1}; - }); - - return data; -} - -var walk_log = function(repo, sha, options, total_size) { - if(total_size == null) total_size = 0; - if(repo.already_searched[sha]) return []; - // Add the sha to the list of allready searched for sha's - repo.already_searched[sha] = true; - // Empty array - var array = []; - var o = null, commit_sha = null, c = null, output = null; - - if(sha) { - // Get the raw object - o = get_raw_object_by_sha1(repo, sha); - - // Create a git object from the raw object - if(o.type == "tag") { - commit_sha = repo.get_object_by_sha1(sha).object; - c = repo.get_object_by_sha1(commit_sha); - } else { - c = GitObject.from_raw(o, repo); - } - - // If it is not a commit - if(c.type != "commit") return []; - - // Add sha - var add_sha = true; - // Check if the commit should be in the results - if(options["since"] && (options["since"] && options["since"].constructor == Date) && (options["since"] > c.committer.date)) { - add_sha = false; - } - if(options["until"] && (options["until"] && options["until"].constructor == Date) && (options["until"] < c.committer.date)) { - add_sha = false; - } - - // Follow all parents unless --first-parent is specified - var subarray = []; - - if(c.parent.length == 0 && options["path_limiter"]) { - add_sha = false; - } - - if(options["max_count"] == null || ((array.length + total_size) < options["max_count"])) { - if(options["path_limiter"] == null) { - output = c.raw_log(sha); - array.push([sha, output, c.committer.date]); - } - - if(options["max_count"] != null && (array.length + total_size) >= options["max_count"]) { - return array; - } - - for(var i = 0; i < c.parent.length; i++) { - var psha = c.parent[i]; - var tree = repo.get_object_by_sha1(psha).tree; - - if(psha && !repo.files_changed(c.tree, tree, options["path_limiter"])) { - add_sha = false; - } - - // Walk the next level of the tree - var results = walk_log(repo, psha, options, (array.length + total_size)); - subarray = subarray.concat(results); - if(options["first_parent"]) break; - } - - if(options["path_limiter"] != null && add_sha) { - output = c.raw_log(sha); - array.push([sha, output, c.comitter.date]); - } - - if(add_sha) { - array = array.concat(subarray); - } - } - } - // Return all the commits - return array; -} - -var convert = function(d) { - return ( - d.constructor === Date ? d : - d.constructor === Array ? new Date(d[0],d[1],d[2]) : - d.constructor === Number ? new Date(d) : - d.constructor === String ? new Date(d) : - typeof d === "object" ? new Date(d.year,d.month,d.date) : - NaN - ); -} - -var compare = function(a,b) { - return ( - isFinite(a=convert(a).valueOf()) && - isFinite(b=convert(b).valueOf()) ? - (a>b)-(a => { 'url' => , 'id' => } } -// Returns {} if no .gitmodules file was found -Submodule.config = function(repo, ref, callback) { - var args = Array.prototype.slice.call(arguments, 1); - callback = args.pop(); - ref = args.length ? args.shift() : 'master'; - - // Fetch code - repo.commit(ref, function(err, commit) { - if(err) return callback(err, commit); - // Fetch the blob - var blob = commit.tree.find('.gitmodules'); - // If there is no blob return an empty object - if(blob == null) return callback(null, {}); - // Parse all the lines - var lines = blob.data.trim().replace(/\r\n?/g, "\n").split("\n"); - var config = {}; - var current = null; - - lines.forEach(function(line) { - if(line.match(/^\[submodule "(.+)"\]$/)) { - var parts = line.match(/^\[submodule "(.+)"\]$/); - current = parts[1]; - config[current] = {}; - config[current]['id'] = commit.tree.find(current).id; - } else if(line.match(/^\t(\w+) = (.+)$/)) { - var parts = line.match(/^\t(\w+) = (.+)$/); - config[current][parts[1]] = parts[2]; - if(parts[1] == 'path') { - config[current]['id'] = commit.tree.find(parts[2]).id; - } - } else {} - }); - // Return the config - callback(null, config); - }); -} \ No newline at end of file diff --git a/node_modules/git/lib/git/tag.js b/node_modules/git/lib/git/tag.js deleted file mode 100644 index 731f374..0000000 --- a/node_modules/git/lib/git/tag.js +++ /dev/null @@ -1,41 +0,0 @@ -var Commit = require('./commit').Commit; - -var Tag = exports.Tag = function(name, commit) { - var _name = name; - var _commit = commit; - // Define the properties - Object.defineProperty(this, "name", { get: function() { return _name; }, enumerable: true}); - Object.defineProperty(this, "commit", { get: function() { return _commit; }, enumerable: true}); -} - -var prefix = function(name) { - return "refs/" + name + "s"; - } - -Tag.find_all = function(repo, options, callback) { - var args = Array.prototype.slice.call(arguments, 1); - callback = args.pop(); - options = args.length ? args.shift() : {}; - - // Let's fetch the references - repo.git.refs({}, prefix('tag'), function(err, refs) { - if(err) return callback(err, refs); - if(!refs) return callback(null, []); - // Map the references - var mapped_refs = refs.split(/\n/).map(function(ref) { - // Fetch the name and id for the reference - var split_reference = ref.split(/ /); - var name = split_reference[0]; - var id = split_reference[1]; - // Ensure we have the right id (if it's a tag it's the actual commit of the tag not the tag id) - var cid = repo.git.commit_from_sha(id) - if(cid == '') throw "unknown object type"; - // Create a commit object wit the id - var commit = new Commit(repo, cid); - // Wrap the commit object in a head object and return mapped object - return new Tag(name, commit); - }) - - callback(null, mapped_refs); - }) -} diff --git a/node_modules/git/lib/git/tree.js b/node_modules/git/lib/git/tree.js deleted file mode 100644 index 05358e0..0000000 --- a/node_modules/git/lib/git/tree.js +++ /dev/null @@ -1,159 +0,0 @@ -var util = require('util'), - Submodule = require('./sub_module').Submodule, - Blob = require('./blob').Blob; - -var Tree = exports.Tree = function(repo, id, mode, name, contents) { - var _repo = repo, _id = id, _contents = contents, _mode = mode, _name = name; - - // Internal properties - Object.defineProperty(this, "repo", { get: function() { return _repo; }, set: function(value) { _repo = value; }, enumerable: true}); - Object.defineProperty(this, "id", { get: function() { return _id; }, set: function(value) { _id = value; }, enumerable: true}); - Object.defineProperty(this, "mode", { get: function() { return _mode; }, set: function(value) { _mode = value; }, enumerable: true}); - Object.defineProperty(this, "name", { get: function() { return _name; }, set: function(value) { _name = value; }, enumerable: true}); - Object.defineProperty(this, "contents", { get: function() { - _contents = lazy_reader(_repo, _id, 'contents', _contents); - return _contents; - }, set: function(value) { _contents = value; }, enumerable: true}); - - // Return the base name - Object.defineProperty(this, "basename", { get: function() { - if(_name) { - var parts = _name.split("/"); - return parts[parts.length - 1]; - } else { - return null; - } - }, enumerable: false}); -} - -var lazy_reader = function(repo, id, type, variable) { - if(variable != null) return variable; - // Control the flow - var done = false; - var value = []; - - // Fetch the content - repo.git.ls_tree(id, [], {}, function(err, text) { - if(err) return done = true; - // Split the output - var lines = text.split("\n"); - // Create objects for all the entries - for(var i = 0; i < lines.length; i++) { - Tree.content_from_string(repo, lines[i], function(err, entry) { - value.push(entry); - }); - } - - done = true; - }) - - while(!done) {}; - return value ? value : ''; -} - -// Construct the contents of the tree -// repo: the current rep -// treeish: the reference -// paths: optional array of directory paths to restrict the tree -Tree.construct = function(repo, treeish, paths, callback) { - // Set the path to the default if it's null - paths = paths ? paths : []; - // Run the ls_tree command - repo.git.ls_tree(treeish, paths, function(err, output) { - if(err) return callback(err, output); - construct_initialize(repo, treeish, output, callback); - }); -} - -// Create a new instance of the tree class -var construct_initialize = function(repo, id, text, callback) { - // Create a tree object - var tree = new Tree(repo, id, null, null, []); - var lines = text.trim().split("\n"); - if(lines.length == 1 && lines[0] == '') lines = []; - // Fetch all the lines - for(var i = 0; i < lines.length; i++) { - Tree.content_from_string(repo, lines[i], function(err, entry) { - if(err) return callback(err, entry); - tree.contents.push(entry); - }); - } - - // Remove all the null entries - tree.contents = tree.contents.filter(function(entry) { return entry ? true : false; }); - // Return the object - callback(null, tree); -} - -Tree.content_from_string = function(repo, text, callback) { - // Split the text into parts and extract the variables - var parts = text.replace(/\t/, ' ').split(" "); - var mode = parts[0]; - var type = parts[1]; - var id = parts[2]; - var name = parts[3]; - - if(type == "tree") { - callback(null, new Tree(repo, id, mode, name)); - } else if(type == "blob") { - callback(null, new Blob(repo, id, mode, name)); - } else if(type == "link") { - callback(null, new Blob(repo, id, mode, name)); - } else if(type == "commit") { - callback(null, new Submodule(repo, id, mode, name)); - } else { - callback("invalid type: " + type, null); - } -} - -// Find the named object in this tree's contents -// -// Examples -// Repo.new('/path/to/grit').tree/'lib' -// // => // -// Repo.new('/path/to/grit').tree/'README.txt' -// // => // -// -// Returns Grit::Blob or Grit::Tree or nil if not found -Tree.prototype.find = function(file) { - var self = this; - - if(file.match(/\//)) { - var paths = file.split('/'); - paths.length > 0 && paths[paths.length - 1] == '' ? paths.pop() : null; - return paths.map(function(x) { - return self && (self = self.find(x)); - }); - } else { - var results = self.contents.filter(function(c) { - return c.name == file; - }) - - return results.length == 1 ? results[0] : null; - } -} - -Tree.create = function(repo, attributes, callback) { - var args = Array.prototype.slice.call(arguments, 1); - callback = args.pop(); - attributes = args.length ? args.shift() : {}; - - var tree = new Tree(repo); - for(var name in attributes) { - tree[name] = attributes[name]; - } - - callback(null, tree); -} - - - - - - - - - - - - diff --git a/node_modules/git/lib/git/user_info.js b/node_modules/git/lib/git/user_info.js deleted file mode 100644 index 88b43d9..0000000 --- a/node_modules/git/lib/git/user_info.js +++ /dev/null @@ -1,42 +0,0 @@ -var util = require('util'), - StringUtil = require('../sprintf/sprintf').StringUtil; - -var UserInfo = exports.UserInfo = function(string) { - var _email = '', _date = new Date(), _offset = 0, _name = ''; - - // Parse the content - var match_results = string.match(/^(.*?) <(.*)> (\d+) ([+-])0*(\d+?)$/); - // If we don't have a correct match set parse it partially - if(!match_results) { - if(string.match(/<.+>/)) { - var sub_match = string.match(/(.*) <(.+?)>/); - _name = sub_match[1]; - _email = sub_match[2]; - } else { - _name = string; - } - } else { - _name = match_results[1]; - _email = match_results[2]; - _date = new Date(parseInt(match_results[3] * 1000)); - _offset = (match_results[4] == "-" ? -1 : 1) * parseInt(match_results[5]); - } - - // Define properties - Object.defineProperty(this, "name", { get: function() { return _name; }, enumerable: true}); - Object.defineProperty(this, "email", { get: function() { return _email; }, enumerable: true}); - Object.defineProperty(this, "date", { get: function() { return _date; }, enumerable: true}); - Object.defineProperty(this, "offset", { get: function() { return _offset; }, enumerable: true}); -} - -UserInfo.prototype.toString = function() { - // Ensure correct formating for the offset - var offset_str = this.offset.toString(); - var add_string = ''; - if(offset_str.length < 5) { - for(var i = 0; i < (5 - offset_str.length); i++) { add_string += '0'; } - offset_str = offset_str.substr(0, 1) + add_string + offset_str.substr(1); - } - // Return the userinfo as a string - return "" + this.name + " <" + this.email + "> " + (this.date.getTime()/1000) + " " + offset_str; -} \ No newline at end of file diff --git a/node_modules/git/lib/sprintf/sprintf.js b/node_modules/git/lib/sprintf/sprintf.js deleted file mode 100644 index fe1bdc4..0000000 --- a/node_modules/git/lib/sprintf/sprintf.js +++ /dev/null @@ -1,100 +0,0 @@ -/** -sprintf() for JavaScript 0.6 - -Copyright (c) Alexandru Marasteanu -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of sprintf() for JavaScript nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL Alexandru Marasteanu BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -Changelog: -2007.04.03 - 0.1: - - initial release -2007.09.11 - 0.2: - - feature: added argument swapping -2007.09.17 - 0.3: - - bug fix: no longer throws exception on empty paramenters (Hans Pufal) -2007.10.21 - 0.4: - - unit test and patch (David Baird) -2010.05.09 - 0.5: - - bug fix: 0 is now preceeded with a + sign - - bug fix: the sign was not at the right position on padded results (Kamal Abdali) - - switched from GPL to BSD license -2010.05.22 - 0.6: - - reverted to 0.4 and fixed the bug regarding the sign of the number 0 - Note: - Thanks to Raphael Pigulla (http://www.n3rd.org/) - who warned me about a bug in 0.5, I discovered that the last update was - a regress. I appologize for that. -**/ - -var StringUtil = exports.StringUtil = function() {}; -StringUtil.str_repeat = str_repeat; -StringUtil.sprintf = sprintf; - -function str_repeat(i, m) { - for (var o = []; m > 0; o[--m] = i); - return o.join(''); -} - -function sprintf() { - var i = 0, a, f = arguments[i++], o = [], m, p, c, x, s = ''; - while (f) { - if (m = /^[^\x25]+/.exec(f)) { - o.push(m[0]); - } - else if (m = /^\x25{2}/.exec(f)) { - o.push('%'); - } - else if (m = /^\x25(?:(\d+)\$)?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(f)) { - if (((a = arguments[m[1] || i++]) == null) || (a == undefined)) { - throw('Too few arguments.'); - } - if (/[^s]/.test(m[7]) && (typeof(a) != 'number')) { - throw('Expecting number but found ' + typeof(a)); - } - switch (m[7]) { - case 'b': a = a.toString(2); break; - case 'c': a = String.fromCharCode(a); break; - case 'd': a = parseInt(a); break; - case 'e': a = m[6] ? a.toExponential(m[6]) : a.toExponential(); break; - case 'f': a = m[6] ? parseFloat(a).toFixed(m[6]) : parseFloat(a); break; - case 'o': a = a.toString(8); break; - case 's': a = ((a = String(a)) && m[6] ? a.substring(0, m[6]) : a); break; - case 'u': a = Math.abs(a); break; - case 'x': a = a.toString(16); break; - case 'X': a = a.toString(16).toUpperCase(); break; - } - a = (/[def]/.test(m[7]) && m[2] && a >= 0 ? '+'+ a : a); - c = m[3] ? m[3] == '0' ? '0' : m[3].charAt(1) : ' '; - x = m[5] - String(a).length - s.length; - p = m[5] ? str_repeat(c, x) : ''; - o.push(s + (m[4] ? a + p : p + a)); - } - else { - throw('Huh ?!'); - } - f = f.substring(m[0].length); - } - return o.join(''); -} diff --git a/node_modules/git/lib/zlib/zlib.js b/node_modules/git/lib/zlib/zlib.js deleted file mode 100644 index e4b46fe..0000000 --- a/node_modules/git/lib/zlib/zlib.js +++ /dev/null @@ -1,1172 +0,0 @@ -/* - Copyright 2008,2009 - Matthias Ehmann, - Michael Gerhaeuser, - Carsten Miller, - Bianca Valentin, - Alfred Wassermann, - Peter Wilfahrt - - This file is part of JSXGraph. - - JSXGraph is free software: you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - JSXGraph is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with JSXGraph. If not, see . -*/ - -/** - * @fileoverview Utilities for uncompressing and base64 decoding - */ - -/** - * @class Util class - * Class for gunzipping, unzipping and base64 decoding of files. - * It is used for reading GEONExT, Geogebra and Intergeo files. - * - * Only Huffman codes are decoded in gunzip. - * The code is based on the source code for gunzip.c by Pasi Ojala - * @see http://www.cs.tut.fi/~albert/Dev/gunzip/gunzip.c - * @see http://www.cs.tut.fi/~albert - */ -var util = require('util'); -var Zlib = exports.Zlib = {}; - -/** - * Unzip zip files - */ -Zlib.Unzip = function (barray){ - var outputArr = [], - output = "", - debug = false, - gpflags, - files = 0, - unzipped = [], - crc, - buf32k = new Array(32768), - bIdx = 0, - modeZIP=false, - - CRC, SIZE, - - bitReverse = [ - 0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0, - 0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0, - 0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8, - 0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8, - 0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4, - 0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4, - 0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec, - 0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc, - 0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2, - 0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2, - 0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea, - 0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa, - 0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6, - 0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6, - 0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee, - 0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe, - 0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1, - 0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1, - 0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9, - 0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9, - 0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5, - 0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5, - 0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed, - 0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd, - 0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3, - 0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3, - 0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb, - 0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb, - 0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7, - 0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7, - 0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef, - 0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff - ], - - cplens = [ - 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, - 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0 - ], - - cplext = [ - 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, - 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 99, 99 - ], /* 99==invalid */ - - cpdist = [ - 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0007, 0x0009, 0x000d, - 0x0011, 0x0019, 0x0021, 0x0031, 0x0041, 0x0061, 0x0081, 0x00c1, - 0x0101, 0x0181, 0x0201, 0x0301, 0x0401, 0x0601, 0x0801, 0x0c01, - 0x1001, 0x1801, 0x2001, 0x3001, 0x4001, 0x6001 - ], - - cpdext = [ - 0, 0, 0, 0, 1, 1, 2, 2, - 3, 3, 4, 4, 5, 5, 6, 6, - 7, 7, 8, 8, 9, 9, 10, 10, - 11, 11, 12, 12, 13, 13 - ], - - border = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15], - - bA = barray, - - bytepos=0, - bitpos=0, - bb = 1, - bits=0, - - NAMEMAX = 256, - - nameBuf = [], - - fileout; - - function readByte(){ - bits+=8; - if (bytepos"); - // util.debug(bA[bytepos++].toString(16)) - // return String.fromCharCode(bA[bytepos++]); - return bA[bytepos++]; - } else - return -1; - }; - - function byteAlign(){ - bb = 1; - }; - - function readBit(){ - var carry; - bits++; - carry = (bb & 1); - bb >>= 1; - if (bb==0){ - bb = readByte(); - carry = (bb & 1); - bb = (bb>>1) | 0x80; - } - return carry; - }; - - function readBits(a) { - var res = 0, - i = a; - - while(i--) { - res = (res<<1) | readBit(); - } - if(a) { - res = bitReverse[res]>>(8-a); - } - return res; - }; - - function flushBuffer(){ - //document.write('FLUSHBUFFER:'+buf32k); - bIdx = 0; - }; - function addBuffer(a){ - SIZE++; - //CRC=updcrc(a,crc); - buf32k[bIdx++] = a; - outputArr.push(String.fromCharCode(a)); - //output+=String.fromCharCode(a); - if(bIdx==0x8000){ - //document.write('ADDBUFFER:'+buf32k); - bIdx=0; - } - }; - - function HufNode() { - this.b0=0; - this.b1=0; - this.jump = null; - this.jumppos = -1; - }; - - var LITERALS = 288; - - var literalTree = new Array(LITERALS); - var distanceTree = new Array(32); - var treepos=0; - var Places = null; - var Places2 = null; - - var impDistanceTree = new Array(64); - var impLengthTree = new Array(64); - - var len = 0; - var fpos = new Array(17); - fpos[0]=0; - var flens; - var fmax; - - function IsPat() { - while (1) { - if (fpos[len] >= fmax) - return -1; - if (flens[fpos[len]] == len) - return fpos[len]++; - fpos[len]++; - } - }; - - function Rec() { - var curplace = Places[treepos]; - var tmp; - if (debug) - util.debug("len: " + len + " treepos: " + treepos) - if(len==17) { //war 17 - return -1; - } - treepos++; - len++; - - tmp = IsPat(); - if (debug) - util.debug("IsPat " + tmp) - if(tmp >= 0) { - curplace.b0 = tmp; /* leaf cell for 0-bit */ - if (debug) - util.debug("b0 " + curplace.b0) - } else { - /* Not a Leaf cell */ - curplace.b0 = 0x8000; - if (debug) - util.debug("b0 " + curplace.b0) - if(Rec()) - return -1; - } - tmp = IsPat(); - if(tmp >= 0) { - curplace.b1 = tmp; /* leaf cell for 1-bit */ - if (debug) - util.debug("b1 " + curplace.b1); - curplace.jump = null; /* Just for the display routine */ - } else { - /* Not a Leaf cell */ - curplace.b1 = 0x8000; - if (debug) - util.debug("b1 " + curplace.b1); - curplace.jump = Places[treepos]; - curplace.jumppos = treepos; - if(Rec()) - return -1; - } - len--; - return 0; - }; - - function CreateTree(currentTree, numval, lengths, show) { - var i; - /* Create the Huffman decode tree/table */ - //document.write("
createtree
"); - if (debug) - util.debug("currentTree " + currentTree + " numval " + numval + " lengths " + lengths + " show " + show); - Places = currentTree; - treepos=0; - flens = lengths; - fmax = numval; - for (i=0;i<17;i++) - fpos[i] = 0; - len = 0; - if(Rec()) { - //fprintf(stderr, "invalid huffman tree\n"); - if (debug) - util.debug("invalid huffman tree"); - return -1; - } - if (debug){ - util.debug("Tree: " + Places.length); - for (var a=0;a<32;a++){ - util.debug("Places[" + a + "].b0=" + Places[a].b0); - util.debug("Places[" + a + "].b1=" + Places[a].b1); - } - } - - /*if(show) { - var tmp; - for(tmp=currentTree;tmpjump?tmp->jump-currentTree:0,(tmp->jump?tmp->jump-currentTree:0)*6+0xcf0); - if(!(tmp.b0 & 0x8000)) { - //fprintf(stdout, " 0x%03x (%c)", tmp->b0,(tmp->b0<256 && isprint(tmp->b0))?tmp->b0:'�'); - } - if(!(tmp.b1 & 0x8000)) { - if((tmp.b0 & 0x8000)) - fprintf(stdout, " "); - fprintf(stdout, " 0x%03x (%c)", tmp->b1,(tmp->b1<256 && isprint(tmp->b1))?tmp->b1:'�'); - } - fprintf(stdout, "\n"); - } - }*/ - return 0; - }; - - function DecodeValue(currentTree) { - var len, i, - xtreepos=0, - X = currentTree[xtreepos], - b; - - /* decode one symbol of the data */ - while(1) { - b=readBit(); - if (debug) - util.debug("b=" + b); - if(b) { - if(!(X.b1 & 0x8000)){ - if (debug) - util.debug("ret1"); - return X.b1; /* If leaf node, return data */ - } - X = X.jump; - len = currentTree.length; - for (i=0;i>1); - if(j > 23) { - j = (j<<1) | readBit(); /* 48..255 */ - - if(j > 199) { /* 200..255 */ - j -= 128; /* 72..127 */ - j = (j<<1) | readBit(); /* 144..255 << */ - } else { /* 48..199 */ - j -= 48; /* 0..151 */ - if(j > 143) { - j = j+136; /* 280..287 << */ - /* 0..143 << */ - } - } - } else { /* 0..23 */ - j += 256; /* 256..279 << */ - } - if(j < 256) { - addBuffer(j); - //document.write("out:"+String.fromCharCode(j)); - /*fprintf(errfp, "@%d %02x\n", SIZE, j);*/ - } else if(j == 256) { - /* EOF */ - break; - } else { - var len, dist; - - j -= 256 + 1; /* bytes + EOF */ - len = readBits(cplext[j]) + cplens[j]; - - j = bitReverse[readBits(5)]>>3; - if(cpdext[j] > 8) { - dist = readBits(8); - dist |= (readBits(cpdext[j]-8)<<8); - } else { - dist = readBits(cpdext[j]); - } - dist += cpdist[j]; - - /*fprintf(errfp, "@%d (l%02x,d%04x)\n", SIZE, len, dist);*/ - for(j=0;jparam: "+literalCodes+" "+distCodes+" "+lenCodes+"
"); - for(j=0; j<19; j++) { - ll[j] = 0; - } - - // Get the decode tree code lengths - - //document.write("
"); - for(j=0; jll:'+ll); - len = distanceTree.length; - for (i=0; itree created'); - - //read in literal and distance code lengths - n = literalCodes + distCodes; - i = 0; - var z=-1; - if (debug) - util.debug("n=" + n + " bits: " + bits); - while(i < n) { - z++; - j = DecodeValue(distanceTree); - if (debug) - util.debug("" + z + " i:" + i + " decode: " + j + " bits" + bits); - if(j<16) { // length of code in bits (0..15) - ll[i++] = j; - } else if(j==16) { // repeat last length 3 to 6 times - var l; - j = 3 + readBits(2); - if(i+j > n) { - flushBuffer(); - return 1; - } - l = i ? ll[i-1] : 0; - while(j--) { - ll[i++] = l; - } - } else { - if(j==17) { // 3 to 10 zero length codes - j = 3 + readBits(3); - } else { // j == 18: 11 to 138 zero length codes - j = 11 + readBits(7); - } - if(i+j > n) { - flushBuffer(); - return 1; - } - while(j--) { - ll[i++] = 0; - } - } - } - /*for(j=0; j= 256) { // In C64: if carry set - var len, dist; - j -= 256; - if(j == 0) { - // EOF - break; - } - j--; - len = readBits(cplext[j]) + cplens[j]; - - j = DecodeValue(distanceTree); - if(cpdext[j] > 8) { - dist = readBits(8); - dist |= (readBits(cpdext[j]-8)<<8); - } else { - dist = readBits(cpdext[j]); - } - dist += cpdist[j]; - while(len--) { - var c = buf32k[(bIdx - dist) & 0x7fff]; - addBuffer(c); - } - } else { - addBuffer(j); - } - } - } - } while(!last); - flushBuffer(); - - byteAlign(); - return 0; -}; - -Zlib.Unzip.prototype.unzipFile = function(name) { - var i; - this.unzip(); - //alert(unzipped[0][1]); - for (i=0;i"); - } - */ - //alert(bA); - nextFile(); - return unzipped; - }; - - function nextFile(){ - if (debug) - util.debug("NEXTFILE"); - outputArr = []; - var tmp = []; - modeZIP = false; - tmp[0] = readByte(); - tmp[1] = readByte(); - - if (debug) - util.debug("type: " + tmp[0] + " " + tmp[1]); - if (tmp[0] == parseInt("78",16) && (tmp[1] == parseInt("156",10) || tmp[1] == parseInt("1", 10))){ //GZIP - if (debug) - util.debug("GEONExT-GZIP"); - DeflateLoop(); - if (debug) - util.debug(outputArr.join('')); - // unzipped[files] = new Array(2); - unzipped[files] = outputArr.join(''); - files++; - } - if (tmp[0] == parseInt("1f",16) && tmp[1] == parseInt("8b",16)){ //GZIP - if (debug) - util.debug("GZIP"); - //DeflateLoop(); - skipdir(); - if (debug) - util.debug(outputArr.join('')); - unzipped[files] = new Array(2); - unzipped[files][0] = outputArr.join(''); - unzipped[files][1] = "file"; - files++; - } - if (tmp[0] == parseInt("50",16) && tmp[1] == parseInt("4b",16)){ //ZIP - modeZIP = true; - tmp[2] = readByte(); - tmp[3] = readByte(); - if (tmp[2] == parseInt("3",16) && tmp[3] == parseInt("4",16)){ - //MODE_ZIP - tmp[0] = readByte(); - tmp[1] = readByte(); - if (debug) - util.debug("ZIP-Version: "+tmp[1]+" "+tmp[0]/10+"."+tmp[0]%10); - - gpflags = readByte(); - gpflags |= (readByte()<<8); - if (debug) - util.debug("gpflags: "+gpflags); - - var method = readByte(); - method |= (readByte()<<8); - if (debug) - util.debug("method: "+method); - - readByte(); - readByte(); - readByte(); - readByte(); - - var crc = readByte(); - crc |= (readByte()<<8); - crc |= (readByte()<<16); - crc |= (readByte()<<24); - - var compSize = readByte(); - compSize |= (readByte()<<8); - compSize |= (readByte()<<16); - compSize |= (readByte()<<24); - - var size = readByte(); - size |= (readByte()<<8); - size |= (readByte()<<16); - size |= (readByte()<<24); - - if (debug) - util.debug("local CRC: "+crc+"\nlocal Size: "+size+"\nlocal CompSize: "+compSize); - - var filelen = readByte(); - filelen |= (readByte()<<8); - - var extralen = readByte(); - extralen |= (readByte()<<8); - - if (debug) - util.debug("filelen "+filelen); - i = 0; - nameBuf = []; - while (filelen--){ - var c = readByte(); - if (c == "/" | c ==":"){ - i = 0; - } else if (i < NAMEMAX-1) - nameBuf[i++] = String.fromCharCode(c); - } - if (debug) - util.debug("nameBuf: "+nameBuf); - - //nameBuf[i] = "\0"; - if (!fileout) - fileout = nameBuf; - - var i = 0; - while (i < extralen){ - c = readByte(); - i++; - } - - CRC = 0xffffffff; - SIZE = 0; - - if (size = 0 && fileOut.charAt(fileout.length-1)=="/"){ - //skipdir - if (debug) - util.debug("skipdir"); - } - if (method == 8){ - DeflateLoop(); - if (debug) - util.debug(outputArr.join('')); - unzipped[files] = new Array(2); - unzipped[files][0] = outputArr.join(''); - unzipped[files][1] = nameBuf.join(''); - files++; - //return outputArr.join(''); - } - skipdir(); - } - } - }; - -function skipdir(){ - var crc, - tmp = [], - compSize, size, os, i, c; - - if ((gpflags & 8)) { - tmp[0] = readByte(); - tmp[1] = readByte(); - tmp[2] = readByte(); - tmp[3] = readByte(); - - if (tmp[0] == parseInt("50",16) && - tmp[1] == parseInt("4b",16) && - tmp[2] == parseInt("07",16) && - tmp[3] == parseInt("08",16)) - { - crc = readByte(); - crc |= (readByte()<<8); - crc |= (readByte()<<16); - crc |= (readByte()<<24); - } else { - crc = tmp[0] | (tmp[1]<<8) | (tmp[2]<<16) | (tmp[3]<<24); - } - - compSize = readByte(); - compSize |= (readByte()<<8); - compSize |= (readByte()<<16); - compSize |= (readByte()<<24); - - size = readByte(); - size |= (readByte()<<8); - size |= (readByte()<<16); - size |= (readByte()<<24); - - if (debug) - util.debug("CRC:"); - } - - if (modeZIP) - nextFile(); - - tmp[0] = readByte(); - if (tmp[0] != 8) { - if (debug) - util.debug("Unknown compression method!"); - return 0; - } - - gpflags = readByte(); - if (debug){ - if ((gpflags & ~(parseInt("1f",16)))) - util.debug("Unknown flags set!"); - } - - readByte(); - readByte(); - readByte(); - readByte(); - - readByte(); - os = readByte(); - - if ((gpflags & 4)){ - tmp[0] = readByte(); - tmp[2] = readByte(); - len = tmp[0] + 256*tmp[1]; - if (debug) - util.debug("Extra field size: "+len); - for (i=0;ihttp://www.webtoolkit.info/ -*/ -Zlib.Base64 = { - - // private property - _keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", - - // public method for encoding - encode : function (input) { - var output = [], - chr1, chr2, chr3, enc1, enc2, enc3, enc4, - i = 0; - - input = Zlib.Base64._utf8_encode(input); - - while (i < input.length) { - - chr1 = input.charCodeAt(i++); - chr2 = input.charCodeAt(i++); - chr3 = input.charCodeAt(i++); - - enc1 = chr1 >> 2; - enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); - enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); - enc4 = chr3 & 63; - - if (isNaN(chr2)) { - enc3 = enc4 = 64; - } else if (isNaN(chr3)) { - enc4 = 64; - } - - output.push([this._keyStr.charAt(enc1), - this._keyStr.charAt(enc2), - this._keyStr.charAt(enc3), - this._keyStr.charAt(enc4)].join('')); - } - - return output.join(''); - }, - - // public method for decoding - decode : function (input, utf8) { - var output = [], - chr1, chr2, chr3, - enc1, enc2, enc3, enc4, - i = 0; - - input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); - - while (i < input.length) { - - enc1 = this._keyStr.indexOf(input.charAt(i++)); - enc2 = this._keyStr.indexOf(input.charAt(i++)); - enc3 = this._keyStr.indexOf(input.charAt(i++)); - enc4 = this._keyStr.indexOf(input.charAt(i++)); - - chr1 = (enc1 << 2) | (enc2 >> 4); - chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); - chr3 = ((enc3 & 3) << 6) | enc4; - - output.push(String.fromCharCode(chr1)); - - if (enc3 != 64) { - output.push(String.fromCharCode(chr2)); - } - if (enc4 != 64) { - output.push(String.fromCharCode(chr3)); - } - } - - output = output.join(''); - - if (utf8) { - output = Zlib.Base64._utf8_decode(output); - } - return output; - - }, - - // private method for UTF-8 encoding - _utf8_encode : function (string) { - string = string.replace(/\r\n/g,"\n"); - var utftext = ""; - - for (var n = 0; n < string.length; n++) { - - var c = string.charCodeAt(n); - - if (c < 128) { - utftext += String.fromCharCode(c); - } - else if((c > 127) && (c < 2048)) { - utftext += String.fromCharCode((c >> 6) | 192); - utftext += String.fromCharCode((c & 63) | 128); - } - else { - utftext += String.fromCharCode((c >> 12) | 224); - utftext += String.fromCharCode(((c >> 6) & 63) | 128); - utftext += String.fromCharCode((c & 63) | 128); - } - - } - - return utftext; - }, - - // private method for UTF-8 decoding - _utf8_decode : function (utftext) { - var string = [], - i = 0, - c = 0, c2 = 0, c3 = 0; - - while ( i < utftext.length ) { - c = utftext.charCodeAt(i); - if (c < 128) { - string.push(String.fromCharCode(c)); - i++; - } - else if((c > 191) && (c < 224)) { - c2 = utftext.charCodeAt(i+1); - string.push(String.fromCharCode(((c & 31) << 6) | (c2 & 63))); - i += 2; - } - else { - c2 = utftext.charCodeAt(i+1); - c3 = utftext.charCodeAt(i+2); - string.push(String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63))); - i += 3; - } - } - return string.join(''); - }, - - _destrip: function (stripped, wrap){ - var lines = [], lineno, i, - destripped = []; - - if (wrap==null) - wrap = 76; - - stripped.replace(/ /g, ""); - lineno = stripped.length / wrap; - for (i = 0; i < lineno; i++) - lines[i]=stripped.substr(i * wrap, wrap); - if (lineno != stripped.length / wrap) - lines[lines.length]=stripped.substr(lineno * wrap, stripped.length-(lineno * wrap)); - - for (i = 0; i < lines.length; i++) - destripped.push(lines[i]); - return destripped.join('\n'); - }, - - decodeAsArray: function (input){ - var dec = this.decode(input), - ar = [], i; - for (i=0;i255){ - switch (c) { - case 8364: c=128; - break; - case 8218: c=130; - break; - case 402: c=131; - break; - case 8222: c=132; - break; - case 8230: c=133; - break; - case 8224: c=134; - break; - case 8225: c=135; - break; - case 710: c=136; - break; - case 8240: c=137; - break; - case 352: c=138; - break; - case 8249: c=139; - break; - case 338: c=140; - break; - case 381: c=142; - break; - case 8216: c=145; - break; - case 8217: c=146; - break; - case 8220: c=147; - break; - case 8221: c=148; - break; - case 8226: c=149; - break; - case 8211: c=150; - break; - case 8212: c=151; - break; - case 732: c=152; - break; - case 8482: c=153; - break; - case 353: c=154; - break; - case 8250: c=155; - break; - case 339: c=156; - break; - case 382: c=158; - break; - case 376: c=159; - break; - default: - break; - } - } - return c; -}; - -/** - * Decoding string into utf-8 - * @param {String} string to decode - * @return {String} utf8 decoded string - */ -Zlib.utf8Decode = function(utftext) { - var string = []; - var i = 0; - var c = 0, c1 = 0, c2 = 0; - - while ( i < utftext.length ) { - c = utftext.charCodeAt(i); - - if (c < 128) { - string.push(String.fromCharCode(c)); - i++; - } else if((c > 191) && (c < 224)) { - c2 = utftext.charCodeAt(i+1); - string.push(String.fromCharCode(((c & 31) << 6) | (c2 & 63))); - i += 2; - } else { - c2 = utftext.charCodeAt(i+1); - c3 = utftext.charCodeAt(i+2); - string.push(String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63))); - i += 3; - } - }; - return string.join(''); -}; \ No newline at end of file diff --git a/node_modules/git/package.json b/node_modules/git/package.json deleted file mode 100644 index c4811ac..0000000 --- a/node_modules/git/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ "name" : "git" -, "description" : "A node.js library for git" -, "version" : "0.1.5" -, "author" : "Christian Amor Kvalheim " -, "contributors" : [ "Vincent Giersch " ] -, "repository" : { "type" : "git" - , "url" : "git@github.com:christkv/node-git.git" } -, "bugs" : { "mail" : "node-git@googlegroups.com" - , "web" : "http://groups.google.com/group/nodegit" } -, "main": "./lib/git/index" -, "directories" : { "lib" : "./lib/git" } -, "engines" : { "node" : ">=0.4.0" } -, "dependencies": { "mime": "1.2.9" } -, "devDependencies":{ "nodeunit" : ">=0.5.1" } -, "licenses" : [ { "type" : "Apache License, Version 2.0" - , "url" : "http://www.apache.org/licenses/LICENSE-2.0" } ] -, "scripts" : { "test" : "./node_modules/.bin/nodeunit test" } -} diff --git a/node_modules/mime/LICENSE b/node_modules/mime/LICENSE deleted file mode 100644 index 451fc45..0000000 --- a/node_modules/mime/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2010 Benjamin Thomas, Robert Kieffer - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/mime/README.md b/node_modules/mime/README.md deleted file mode 100644 index b90552a..0000000 --- a/node_modules/mime/README.md +++ /dev/null @@ -1,63 +0,0 @@ -# mime - -Comprehensive MIME type mapping API. Includes all 600+ types and 800+ extensions defined by the Apache project, plus additional types submitted by the node.js community. - -## Install - -Install with [npm](http://github.com/isaacs/npm): - - npm install mime - -## API - Queries - -### mime.lookup(path) -Get the mime type associated with a file. Performs a case-insensitive lookup using the extension in `path` (the substring after the last '/' or '.'). E.g. - - var mime = require('mime'); - - mime.lookup('/path/to/file.txt'); // => 'text/plain' - mime.lookup('file.txt'); // => 'text/plain' - mime.lookup('.TXT'); // => 'text/plain' - mime.lookup('htm'); // => 'text/html' - -### mime.extension(type) -Get the default extension for `type` - - mime.extension('text/html'); // => 'html' - mime.extension('application/octet-stream'); // => 'bin' - -### mime.charsets.lookup() - -Map mime-type to charset - - mime.charsets.lookup('text/plain'); // => 'UTF-8' - -(The logic for charset lookups is pretty rudimentary. Feel free to suggest improvements.) - -## API - Defining Custom Types - -The following APIs allow you to add your own type mappings within your project. If you feel a type should be included as part of node-mime, see [requesting new types](https://github.com/broofa/node-mime/wiki/Requesting-New-Types). - -### mime.define() - -Add custom mime/extension mappings - - mime.define({ - 'text/x-some-format': ['x-sf', 'x-sft', 'x-sfml'], - 'application/x-my-type': ['x-mt', 'x-mtt'], - // etc ... - }); - - mime.lookup('x-sft'); // => 'text/x-some-format' - -The first entry in the extensions array is returned by `mime.extension()`. E.g. - - mime.extension('text/x-some-format'); // => 'x-sf' - -### mime.load(filepath) - -Load mappings from an Apache ".types" format file - - mime.load('./my_project.types'); - -The .types file format is simple - See the `types` dir for examples. diff --git a/node_modules/mime/mime.js b/node_modules/mime/mime.js deleted file mode 100644 index 70a6384..0000000 --- a/node_modules/mime/mime.js +++ /dev/null @@ -1,113 +0,0 @@ -var path = require('path'); -var fs = require('fs'); - -function Mime() { - // Map of extension -> mime type - this.types = Object.create(null); - - // Map of mime type -> extension - this.extensions = Object.create(null); -} - -/** - * Define mimetype -> extension mappings. Each key is a mime-type that maps - * to an array of extensions associated with the type. The first extension is - * used as the default extension for the type. - * - * e.g. mime.define({'audio/ogg', ['oga', 'ogg', 'spx']}); - * - * @param map (Object) type definitions - */ -Mime.prototype.define = function (map) { - for (var type in map) { - var exts = map[type]; - - for (var i = 0; i < exts.length; i++) { - if (process.env.DEBUG_MIME && this.types[exts]) { - console.warn(this._loading.replace(/.*\//, ''), 'changes "' + exts[i] + '" extension type from ' + - this.types[exts] + ' to ' + type); - } - - this.types[exts[i]] = type; - } - - // Default extension is the first one we encounter - if (!this.extensions[type]) { - this.extensions[type] = exts[0]; - } - } -}; - -/** - * Load an Apache2-style ".types" file - * - * This may be called multiple times (it's expected). Where files declare - * overlapping types/extensions, the last file wins. - * - * @param file (String) path of file to load. - */ -Mime.prototype.load = function(file) { - - this._loading = file; - // Read file and split into lines - var map = {}, - content = fs.readFileSync(file, 'ascii'), - lines = content.split(/[\r\n]+/); - - lines.forEach(function(line) { - // Clean up whitespace/comments, and split into fields - var fields = line.replace(/\s*#.*|^\s*|\s*$/g, '').split(/\s+/); - map[fields.shift()] = fields; - }); - - this.define(map); - - this._loading = null; -}; - -/** - * Lookup a mime type based on extension - */ -Mime.prototype.lookup = function(path, fallback) { - var ext = path.replace(/.*[\.\/]/, '').toLowerCase(); - - return this.types[ext] || fallback || this.default_type; -}; - -/** - * Return file extension associated with a mime type - */ -Mime.prototype.extension = function(mimeType) { - return this.extensions[mimeType]; -}; - -// Default instance -var mime = new Mime(); - -// Load local copy of -// http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types -mime.load(path.join(__dirname, 'types/mime.types')); - -// Load additional types from node.js community -mime.load(path.join(__dirname, 'types/node.types')); - -// Default type -mime.default_type = mime.lookup('bin'); - -// -// Additional API specific to the default instance -// - -mime.Mime = Mime; - -/** - * Lookup a charset based on mime type. - */ -mime.charsets = { - lookup: function(mimeType, fallback) { - // Assume text types are utf8 - return (/^text\//).test(mimeType) ? 'UTF-8' : fallback; - } -}; - -module.exports = mime; diff --git a/node_modules/mime/package.json b/node_modules/mime/package.json deleted file mode 100644 index 6e116b1..0000000 --- a/node_modules/mime/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "author": { - "name": "Robert Kieffer", - "url": "http://github.com/broofa", - "email": "robert@broofa.com" - }, - "contributors": [ - { - "name": "Benjamin Thomas", - "url": "http://github.com/bentomas", - "email": "benjamin@benjaminthomas.org" - } - ], - "dependencies": {}, - "description": "A comprehensive library for mime-type mapping", - "devDependencies": {}, - "keywords": ["util", "mime"], - "main": "mime.js", - "name": "mime", - "repository": {"url": "https://github.com/broofa/node-mime", "type": "git"}, - "version": "1.2.9" -} diff --git a/node_modules/mime/test.js b/node_modules/mime/test.js deleted file mode 100644 index cbad034..0000000 --- a/node_modules/mime/test.js +++ /dev/null @@ -1,55 +0,0 @@ -/** - * Usage: node test.js - */ - -var mime = require('./mime'); -var assert = require('assert'); - -function eq(a, b) { - console.log('Test: ' + a + ' === ' + b); - assert.strictEqual.apply(null, arguments); -} - -console.log(Object.keys(mime.extensions).length + ' types'); -console.log(Object.keys(mime.types).length + ' extensions\n'); - -// -// Test mime lookups -// - -eq('text/plain', mime.lookup('text.txt')); -eq('text/plain', mime.lookup('.text.txt')); -eq('text/plain', mime.lookup('.txt')); -eq('text/plain', mime.lookup('txt')); -eq('application/octet-stream', mime.lookup('text.nope')); -eq('fallback', mime.lookup('text.fallback', 'fallback')); -eq('application/octet-stream', mime.lookup('constructor')); -eq('text/plain', mime.lookup('TEXT.TXT')); -eq('text/event-stream', mime.lookup('text/event-stream')); -eq('application/x-web-app-manifest+json', mime.lookup('text.webapp')); - -// -// Test extensions -// - -eq('txt', mime.extension(mime.types.text)); -eq('html', mime.extension(mime.types.htm)); -eq('bin', mime.extension('application/octet-stream')); -eq(undefined, mime.extension('constructor')); - -// -// Test node types -// - -eq('application/octet-stream', mime.lookup('file.buffer')); -eq('audio/mp4', mime.lookup('file.m4a')); - -// -// Test charsets -// - -eq('UTF-8', mime.charsets.lookup('text/plain')); -eq(undefined, mime.charsets.lookup(mime.types.js)); -eq('fallback', mime.charsets.lookup('application/octet-stream', 'fallback')); - -console.log('\nOK'); diff --git a/node_modules/mime/types/mime.types b/node_modules/mime/types/mime.types deleted file mode 100644 index b90b165..0000000 --- a/node_modules/mime/types/mime.types +++ /dev/null @@ -1,1588 +0,0 @@ -# This file maps Internet media types to unique file extension(s). -# Although created for httpd, this file is used by many software systems -# and has been placed in the public domain for unlimited redisribution. -# -# The table below contains both registered and (common) unregistered types. -# A type that has no unique extension can be ignored -- they are listed -# here to guide configurations toward known types and to make it easier to -# identify "new" types. File extensions are also commonly used to indicate -# content languages and encodings, so choose them carefully. -# -# Internet media types should be registered as described in RFC 4288. -# The registry is at . -# -# MIME type (lowercased) Extensions -# ============================================ ========== -# application/1d-interleaved-parityfec -# application/3gpp-ims+xml -# application/activemessage -application/andrew-inset ez -# application/applefile -application/applixware aw -application/atom+xml atom -application/atomcat+xml atomcat -# application/atomicmail -application/atomsvc+xml atomsvc -# application/auth-policy+xml -# application/batch-smtp -# application/beep+xml -# application/calendar+xml -# application/cals-1840 -# application/ccmp+xml -application/ccxml+xml ccxml -application/cdmi-capability cdmia -application/cdmi-container cdmic -application/cdmi-domain cdmid -application/cdmi-object cdmio -application/cdmi-queue cdmiq -# application/cea-2018+xml -# application/cellml+xml -# application/cfw -# application/cnrp+xml -# application/commonground -# application/conference-info+xml -# application/cpl+xml -# application/csta+xml -# application/cstadata+xml -application/cu-seeme cu -# application/cybercash -application/davmount+xml davmount -# application/dca-rft -# application/dec-dx -# application/dialog-info+xml -# application/dicom -# application/dns -application/docbook+xml dbk -# application/dskpp+xml -application/dssc+der dssc -application/dssc+xml xdssc -# application/dvcs -application/ecmascript ecma -# application/edi-consent -# application/edi-x12 -# application/edifact -application/emma+xml emma -# application/epp+xml -application/epub+zip epub -# application/eshop -# application/example -application/exi exi -# application/fastinfoset -# application/fastsoap -# application/fits -application/font-tdpfr pfr -# application/framework-attributes+xml -application/gml+xml gml -application/gpx+xml gpx -application/gxf gxf -# application/h224 -# application/held+xml -# application/http -application/hyperstudio stk -# application/ibe-key-request+xml -# application/ibe-pkg-reply+xml -# application/ibe-pp-data -# application/iges -# application/im-iscomposing+xml -# application/index -# application/index.cmd -# application/index.obj -# application/index.response -# application/index.vnd -application/inkml+xml ink inkml -# application/iotp -application/ipfix ipfix -# application/ipp -# application/isup -application/java-archive jar -application/java-serialized-object ser -application/java-vm class -application/javascript js -application/json json -application/jsonml+json jsonml -# application/kpml-request+xml -# application/kpml-response+xml -application/lost+xml lostxml -application/mac-binhex40 hqx -application/mac-compactpro cpt -# application/macwriteii -application/mads+xml mads -application/marc mrc -application/marcxml+xml mrcx -application/mathematica ma nb mb -# application/mathml-content+xml -# application/mathml-presentation+xml -application/mathml+xml mathml -# application/mbms-associated-procedure-description+xml -# application/mbms-deregister+xml -# application/mbms-envelope+xml -# application/mbms-msk+xml -# application/mbms-msk-response+xml -# application/mbms-protection-description+xml -# application/mbms-reception-report+xml -# application/mbms-register+xml -# application/mbms-register-response+xml -# application/mbms-user-service-description+xml -application/mbox mbox -# application/media_control+xml -application/mediaservercontrol+xml mscml -application/metalink+xml metalink -application/metalink4+xml meta4 -application/mets+xml mets -# application/mikey -application/mods+xml mods -# application/moss-keys -# application/moss-signature -# application/mosskey-data -# application/mosskey-request -application/mp21 m21 mp21 -application/mp4 mp4s -# application/mpeg4-generic -# application/mpeg4-iod -# application/mpeg4-iod-xmt -# application/msc-ivr+xml -# application/msc-mixer+xml -application/msword doc dot -application/mxf mxf -# application/nasdata -# application/news-checkgroups -# application/news-groupinfo -# application/news-transmission -# application/nss -# application/ocsp-request -# application/ocsp-response -application/octet-stream bin dms lrf mar so dist distz pkg bpk dump elc deploy -application/oda oda -application/oebps-package+xml opf -application/ogg ogx -application/omdoc+xml omdoc -application/onenote onetoc onetoc2 onetmp onepkg -application/oxps oxps -# application/parityfec -application/patch-ops-error+xml xer -application/pdf pdf -application/pgp-encrypted pgp -# application/pgp-keys -application/pgp-signature asc sig -application/pics-rules prf -# application/pidf+xml -# application/pidf-diff+xml -application/pkcs10 p10 -application/pkcs7-mime p7m p7c -application/pkcs7-signature p7s -application/pkcs8 p8 -application/pkix-attr-cert ac -application/pkix-cert cer -application/pkix-crl crl -application/pkix-pkipath pkipath -application/pkixcmp pki -application/pls+xml pls -# application/poc-settings+xml -application/postscript ai eps ps -# application/prs.alvestrand.titrax-sheet -application/prs.cww cww -# application/prs.nprend -# application/prs.plucker -# application/prs.rdf-xml-crypt -# application/prs.xsf+xml -application/pskc+xml pskcxml -# application/qsig -application/rdf+xml rdf -application/reginfo+xml rif -application/relax-ng-compact-syntax rnc -# application/remote-printing -application/resource-lists+xml rl -application/resource-lists-diff+xml rld -# application/riscos -# application/rlmi+xml -application/rls-services+xml rs -application/rpki-ghostbusters gbr -application/rpki-manifest mft -application/rpki-roa roa -# application/rpki-updown -application/rsd+xml rsd -application/rss+xml rss -application/rtf rtf -# application/rtx -# application/samlassertion+xml -# application/samlmetadata+xml -application/sbml+xml sbml -application/scvp-cv-request scq -application/scvp-cv-response scs -application/scvp-vp-request spq -application/scvp-vp-response spp -application/sdp sdp -# application/set-payment -application/set-payment-initiation setpay -# application/set-registration -application/set-registration-initiation setreg -# application/sgml -# application/sgml-open-catalog -application/shf+xml shf -# application/sieve -# application/simple-filter+xml -# application/simple-message-summary -# application/simplesymbolcontainer -# application/slate -# application/smil -application/smil+xml smi smil -# application/soap+fastinfoset -# application/soap+xml -application/sparql-query rq -application/sparql-results+xml srx -# application/spirits-event+xml -application/srgs gram -application/srgs+xml grxml -application/sru+xml sru -application/ssdl+xml ssdl -application/ssml+xml ssml -# application/tamp-apex-update -# application/tamp-apex-update-confirm -# application/tamp-community-update -# application/tamp-community-update-confirm -# application/tamp-error -# application/tamp-sequence-adjust -# application/tamp-sequence-adjust-confirm -# application/tamp-status-query -# application/tamp-status-response -# application/tamp-update -# application/tamp-update-confirm -application/tei+xml tei teicorpus -application/thraud+xml tfi -# application/timestamp-query -# application/timestamp-reply -application/timestamped-data tsd -# application/tve-trigger -# application/ulpfec -# application/vcard+xml -# application/vemmi -# application/vividence.scriptfile -# application/vnd.3gpp.bsf+xml -application/vnd.3gpp.pic-bw-large plb -application/vnd.3gpp.pic-bw-small psb -application/vnd.3gpp.pic-bw-var pvb -# application/vnd.3gpp.sms -# application/vnd.3gpp2.bcmcsinfo+xml -# application/vnd.3gpp2.sms -application/vnd.3gpp2.tcap tcap -application/vnd.3m.post-it-notes pwn -application/vnd.accpac.simply.aso aso -application/vnd.accpac.simply.imp imp -application/vnd.acucobol acu -application/vnd.acucorp atc acutc -application/vnd.adobe.air-application-installer-package+zip air -application/vnd.adobe.formscentral.fcdt fcdt -application/vnd.adobe.fxp fxp fxpl -# application/vnd.adobe.partial-upload -application/vnd.adobe.xdp+xml xdp -application/vnd.adobe.xfdf xfdf -# application/vnd.aether.imp -# application/vnd.ah-barcode -application/vnd.ahead.space ahead -application/vnd.airzip.filesecure.azf azf -application/vnd.airzip.filesecure.azs azs -application/vnd.amazon.ebook azw -application/vnd.americandynamics.acc acc -application/vnd.amiga.ami ami -# application/vnd.amundsen.maze+xml -application/vnd.android.package-archive apk -application/vnd.anser-web-certificate-issue-initiation cii -application/vnd.anser-web-funds-transfer-initiation fti -application/vnd.antix.game-component atx -application/vnd.apple.installer+xml mpkg -application/vnd.apple.mpegurl m3u8 -# application/vnd.arastra.swi -application/vnd.aristanetworks.swi swi -application/vnd.astraea-software.iota iota -application/vnd.audiograph aep -# application/vnd.autopackage -# application/vnd.avistar+xml -application/vnd.blueice.multipass mpm -# application/vnd.bluetooth.ep.oob -application/vnd.bmi bmi -application/vnd.businessobjects rep -# application/vnd.cab-jscript -# application/vnd.canon-cpdl -# application/vnd.canon-lips -# application/vnd.cendio.thinlinc.clientconf -application/vnd.chemdraw+xml cdxml -application/vnd.chipnuts.karaoke-mmd mmd -application/vnd.cinderella cdy -# application/vnd.cirpack.isdn-ext -application/vnd.claymore cla -application/vnd.cloanto.rp9 rp9 -application/vnd.clonk.c4group c4g c4d c4f c4p c4u -application/vnd.cluetrust.cartomobile-config c11amc -application/vnd.cluetrust.cartomobile-config-pkg c11amz -# application/vnd.collection+json -# application/vnd.commerce-battelle -application/vnd.commonspace csp -application/vnd.contact.cmsg cdbcmsg -application/vnd.cosmocaller cmc -application/vnd.crick.clicker clkx -application/vnd.crick.clicker.keyboard clkk -application/vnd.crick.clicker.palette clkp -application/vnd.crick.clicker.template clkt -application/vnd.crick.clicker.wordbank clkw -application/vnd.criticaltools.wbs+xml wbs -application/vnd.ctc-posml pml -# application/vnd.ctct.ws+xml -# application/vnd.cups-pdf -# application/vnd.cups-postscript -application/vnd.cups-ppd ppd -# application/vnd.cups-raster -# application/vnd.cups-raw -# application/vnd.curl -application/vnd.curl.car car -application/vnd.curl.pcurl pcurl -# application/vnd.cybank -application/vnd.dart dart -application/vnd.data-vision.rdz rdz -application/vnd.dece.data uvf uvvf uvd uvvd -application/vnd.dece.ttml+xml uvt uvvt -application/vnd.dece.unspecified uvx uvvx -application/vnd.dece.zip uvz uvvz -application/vnd.denovo.fcselayout-link fe_launch -# application/vnd.dir-bi.plate-dl-nosuffix -application/vnd.dna dna -application/vnd.dolby.mlp mlp -# application/vnd.dolby.mobile.1 -# application/vnd.dolby.mobile.2 -application/vnd.dpgraph dpg -application/vnd.dreamfactory dfac -application/vnd.ds-keypoint kpxx -application/vnd.dvb.ait ait -# application/vnd.dvb.dvbj -# application/vnd.dvb.esgcontainer -# application/vnd.dvb.ipdcdftnotifaccess -# application/vnd.dvb.ipdcesgaccess -# application/vnd.dvb.ipdcesgaccess2 -# application/vnd.dvb.ipdcesgpdd -# application/vnd.dvb.ipdcroaming -# application/vnd.dvb.iptv.alfec-base -# application/vnd.dvb.iptv.alfec-enhancement -# application/vnd.dvb.notif-aggregate-root+xml -# application/vnd.dvb.notif-container+xml -# application/vnd.dvb.notif-generic+xml -# application/vnd.dvb.notif-ia-msglist+xml -# application/vnd.dvb.notif-ia-registration-request+xml -# application/vnd.dvb.notif-ia-registration-response+xml -# application/vnd.dvb.notif-init+xml -# application/vnd.dvb.pfr -application/vnd.dvb.service svc -# application/vnd.dxr -application/vnd.dynageo geo -# application/vnd.easykaraoke.cdgdownload -# application/vnd.ecdis-update -application/vnd.ecowin.chart mag -# application/vnd.ecowin.filerequest -# application/vnd.ecowin.fileupdate -# application/vnd.ecowin.series -# application/vnd.ecowin.seriesrequest -# application/vnd.ecowin.seriesupdate -# application/vnd.emclient.accessrequest+xml -application/vnd.enliven nml -# application/vnd.eprints.data+xml -application/vnd.epson.esf esf -application/vnd.epson.msf msf -application/vnd.epson.quickanime qam -application/vnd.epson.salt slt -application/vnd.epson.ssf ssf -# application/vnd.ericsson.quickcall -application/vnd.eszigno3+xml es3 et3 -# application/vnd.etsi.aoc+xml -# application/vnd.etsi.cug+xml -# application/vnd.etsi.iptvcommand+xml -# application/vnd.etsi.iptvdiscovery+xml -# application/vnd.etsi.iptvprofile+xml -# application/vnd.etsi.iptvsad-bc+xml -# application/vnd.etsi.iptvsad-cod+xml -# application/vnd.etsi.iptvsad-npvr+xml -# application/vnd.etsi.iptvservice+xml -# application/vnd.etsi.iptvsync+xml -# application/vnd.etsi.iptvueprofile+xml -# application/vnd.etsi.mcid+xml -# application/vnd.etsi.overload-control-policy-dataset+xml -# application/vnd.etsi.sci+xml -# application/vnd.etsi.simservs+xml -# application/vnd.etsi.tsl+xml -# application/vnd.etsi.tsl.der -# application/vnd.eudora.data -application/vnd.ezpix-album ez2 -application/vnd.ezpix-package ez3 -# application/vnd.f-secure.mobile -application/vnd.fdf fdf -application/vnd.fdsn.mseed mseed -application/vnd.fdsn.seed seed dataless -# application/vnd.ffsns -# application/vnd.fints -application/vnd.flographit gph -application/vnd.fluxtime.clip ftc -# application/vnd.font-fontforge-sfd -application/vnd.framemaker fm frame maker book -application/vnd.frogans.fnc fnc -application/vnd.frogans.ltf ltf -application/vnd.fsc.weblaunch fsc -application/vnd.fujitsu.oasys oas -application/vnd.fujitsu.oasys2 oa2 -application/vnd.fujitsu.oasys3 oa3 -application/vnd.fujitsu.oasysgp fg5 -application/vnd.fujitsu.oasysprs bh2 -# application/vnd.fujixerox.art-ex -# application/vnd.fujixerox.art4 -# application/vnd.fujixerox.hbpl -application/vnd.fujixerox.ddd ddd -application/vnd.fujixerox.docuworks xdw -application/vnd.fujixerox.docuworks.binder xbd -# application/vnd.fut-misnet -application/vnd.fuzzysheet fzs -application/vnd.genomatix.tuxedo txd -# application/vnd.geocube+xml -application/vnd.geogebra.file ggb -application/vnd.geogebra.tool ggt -application/vnd.geometry-explorer gex gre -application/vnd.geonext gxt -application/vnd.geoplan g2w -application/vnd.geospace g3w -# application/vnd.globalplatform.card-content-mgt -# application/vnd.globalplatform.card-content-mgt-response -application/vnd.gmx gmx -application/vnd.google-earth.kml+xml kml -application/vnd.google-earth.kmz kmz -application/vnd.grafeq gqf gqs -# application/vnd.gridmp -application/vnd.groove-account gac -application/vnd.groove-help ghf -application/vnd.groove-identity-message gim -application/vnd.groove-injector grv -application/vnd.groove-tool-message gtm -application/vnd.groove-tool-template tpl -application/vnd.groove-vcard vcg -# application/vnd.hal+json -application/vnd.hal+xml hal -application/vnd.handheld-entertainment+xml zmm -application/vnd.hbci hbci -# application/vnd.hcl-bireports -application/vnd.hhe.lesson-player les -application/vnd.hp-hpgl hpgl -application/vnd.hp-hpid hpid -application/vnd.hp-hps hps -application/vnd.hp-jlyt jlt -application/vnd.hp-pcl pcl -application/vnd.hp-pclxl pclxl -# application/vnd.httphone -application/vnd.hydrostatix.sof-data sfd-hdstx -# application/vnd.hzn-3d-crossword -# application/vnd.ibm.afplinedata -# application/vnd.ibm.electronic-media -application/vnd.ibm.minipay mpy -application/vnd.ibm.modcap afp listafp list3820 -application/vnd.ibm.rights-management irm -application/vnd.ibm.secure-container sc -application/vnd.iccprofile icc icm -application/vnd.igloader igl -application/vnd.immervision-ivp ivp -application/vnd.immervision-ivu ivu -# application/vnd.informedcontrol.rms+xml -# application/vnd.informix-visionary -# application/vnd.infotech.project -# application/vnd.infotech.project+xml -# application/vnd.innopath.wamp.notification -application/vnd.insors.igm igm -application/vnd.intercon.formnet xpw xpx -application/vnd.intergeo i2g -# application/vnd.intertrust.digibox -# application/vnd.intertrust.nncp -application/vnd.intu.qbo qbo -application/vnd.intu.qfx qfx -# application/vnd.iptc.g2.conceptitem+xml -# application/vnd.iptc.g2.knowledgeitem+xml -# application/vnd.iptc.g2.newsitem+xml -# application/vnd.iptc.g2.newsmessage+xml -# application/vnd.iptc.g2.packageitem+xml -# application/vnd.iptc.g2.planningitem+xml -application/vnd.ipunplugged.rcprofile rcprofile -application/vnd.irepository.package+xml irp -application/vnd.is-xpr xpr -application/vnd.isac.fcs fcs -application/vnd.jam jam -# application/vnd.japannet-directory-service -# application/vnd.japannet-jpnstore-wakeup -# application/vnd.japannet-payment-wakeup -# application/vnd.japannet-registration -# application/vnd.japannet-registration-wakeup -# application/vnd.japannet-setstore-wakeup -# application/vnd.japannet-verification -# application/vnd.japannet-verification-wakeup -application/vnd.jcp.javame.midlet-rms rms -application/vnd.jisp jisp -application/vnd.joost.joda-archive joda -application/vnd.kahootz ktz ktr -application/vnd.kde.karbon karbon -application/vnd.kde.kchart chrt -application/vnd.kde.kformula kfo -application/vnd.kde.kivio flw -application/vnd.kde.kontour kon -application/vnd.kde.kpresenter kpr kpt -application/vnd.kde.kspread ksp -application/vnd.kde.kword kwd kwt -application/vnd.kenameaapp htke -application/vnd.kidspiration kia -application/vnd.kinar kne knp -application/vnd.koan skp skd skt skm -application/vnd.kodak-descriptor sse -application/vnd.las.las+xml lasxml -# application/vnd.liberty-request+xml -application/vnd.llamagraphics.life-balance.desktop lbd -application/vnd.llamagraphics.life-balance.exchange+xml lbe -application/vnd.lotus-1-2-3 123 -application/vnd.lotus-approach apr -application/vnd.lotus-freelance pre -application/vnd.lotus-notes nsf -application/vnd.lotus-organizer org -application/vnd.lotus-screencam scm -application/vnd.lotus-wordpro lwp -application/vnd.macports.portpkg portpkg -# application/vnd.marlin.drm.actiontoken+xml -# application/vnd.marlin.drm.conftoken+xml -# application/vnd.marlin.drm.license+xml -# application/vnd.marlin.drm.mdcf -application/vnd.mcd mcd -application/vnd.medcalcdata mc1 -application/vnd.mediastation.cdkey cdkey -# application/vnd.meridian-slingshot -application/vnd.mfer mwf -application/vnd.mfmp mfm -application/vnd.micrografx.flo flo -application/vnd.micrografx.igx igx -application/vnd.mif mif -# application/vnd.minisoft-hp3000-save -# application/vnd.mitsubishi.misty-guard.trustweb -application/vnd.mobius.daf daf -application/vnd.mobius.dis dis -application/vnd.mobius.mbk mbk -application/vnd.mobius.mqy mqy -application/vnd.mobius.msl msl -application/vnd.mobius.plc plc -application/vnd.mobius.txf txf -application/vnd.mophun.application mpn -application/vnd.mophun.certificate mpc -# application/vnd.motorola.flexsuite -# application/vnd.motorola.flexsuite.adsi -# application/vnd.motorola.flexsuite.fis -# application/vnd.motorola.flexsuite.gotap -# application/vnd.motorola.flexsuite.kmr -# application/vnd.motorola.flexsuite.ttc -# application/vnd.motorola.flexsuite.wem -# application/vnd.motorola.iprm -application/vnd.mozilla.xul+xml xul -application/vnd.ms-artgalry cil -# application/vnd.ms-asf -application/vnd.ms-cab-compressed cab -# application/vnd.ms-color.iccprofile -application/vnd.ms-excel xls xlm xla xlc xlt xlw -application/vnd.ms-excel.addin.macroenabled.12 xlam -application/vnd.ms-excel.sheet.binary.macroenabled.12 xlsb -application/vnd.ms-excel.sheet.macroenabled.12 xlsm -application/vnd.ms-excel.template.macroenabled.12 xltm -application/vnd.ms-fontobject eot -application/vnd.ms-htmlhelp chm -application/vnd.ms-ims ims -application/vnd.ms-lrm lrm -# application/vnd.ms-office.activex+xml -application/vnd.ms-officetheme thmx -# application/vnd.ms-opentype -# application/vnd.ms-package.obfuscated-opentype -application/vnd.ms-pki.seccat cat -application/vnd.ms-pki.stl stl -# application/vnd.ms-playready.initiator+xml -application/vnd.ms-powerpoint ppt pps pot -application/vnd.ms-powerpoint.addin.macroenabled.12 ppam -application/vnd.ms-powerpoint.presentation.macroenabled.12 pptm -application/vnd.ms-powerpoint.slide.macroenabled.12 sldm -application/vnd.ms-powerpoint.slideshow.macroenabled.12 ppsm -application/vnd.ms-powerpoint.template.macroenabled.12 potm -# application/vnd.ms-printing.printticket+xml -application/vnd.ms-project mpp mpt -# application/vnd.ms-tnef -# application/vnd.ms-wmdrm.lic-chlg-req -# application/vnd.ms-wmdrm.lic-resp -# application/vnd.ms-wmdrm.meter-chlg-req -# application/vnd.ms-wmdrm.meter-resp -application/vnd.ms-word.document.macroenabled.12 docm -application/vnd.ms-word.template.macroenabled.12 dotm -application/vnd.ms-works wps wks wcm wdb -application/vnd.ms-wpl wpl -application/vnd.ms-xpsdocument xps -application/vnd.mseq mseq -# application/vnd.msign -# application/vnd.multiad.creator -# application/vnd.multiad.creator.cif -# application/vnd.music-niff -application/vnd.musician mus -application/vnd.muvee.style msty -application/vnd.mynfc taglet -# application/vnd.ncd.control -# application/vnd.ncd.reference -# application/vnd.nervana -# application/vnd.netfpx -application/vnd.neurolanguage.nlu nlu -application/vnd.nitf ntf nitf -application/vnd.noblenet-directory nnd -application/vnd.noblenet-sealer nns -application/vnd.noblenet-web nnw -# application/vnd.nokia.catalogs -# application/vnd.nokia.conml+wbxml -# application/vnd.nokia.conml+xml -# application/vnd.nokia.isds-radio-presets -# application/vnd.nokia.iptv.config+xml -# application/vnd.nokia.landmark+wbxml -# application/vnd.nokia.landmark+xml -# application/vnd.nokia.landmarkcollection+xml -# application/vnd.nokia.n-gage.ac+xml -application/vnd.nokia.n-gage.data ngdat -application/vnd.nokia.n-gage.symbian.install n-gage -# application/vnd.nokia.ncd -# application/vnd.nokia.pcd+wbxml -# application/vnd.nokia.pcd+xml -application/vnd.nokia.radio-preset rpst -application/vnd.nokia.radio-presets rpss -application/vnd.novadigm.edm edm -application/vnd.novadigm.edx edx -application/vnd.novadigm.ext ext -# application/vnd.ntt-local.file-transfer -# application/vnd.ntt-local.sip-ta_remote -# application/vnd.ntt-local.sip-ta_tcp_stream -application/vnd.oasis.opendocument.chart odc -application/vnd.oasis.opendocument.chart-template otc -application/vnd.oasis.opendocument.database odb -application/vnd.oasis.opendocument.formula odf -application/vnd.oasis.opendocument.formula-template odft -application/vnd.oasis.opendocument.graphics odg -application/vnd.oasis.opendocument.graphics-template otg -application/vnd.oasis.opendocument.image odi -application/vnd.oasis.opendocument.image-template oti -application/vnd.oasis.opendocument.presentation odp -application/vnd.oasis.opendocument.presentation-template otp -application/vnd.oasis.opendocument.spreadsheet ods -application/vnd.oasis.opendocument.spreadsheet-template ots -application/vnd.oasis.opendocument.text odt -application/vnd.oasis.opendocument.text-master odm -application/vnd.oasis.opendocument.text-template ott -application/vnd.oasis.opendocument.text-web oth -# application/vnd.obn -# application/vnd.oftn.l10n+json -# application/vnd.oipf.contentaccessdownload+xml -# application/vnd.oipf.contentaccessstreaming+xml -# application/vnd.oipf.cspg-hexbinary -# application/vnd.oipf.dae.svg+xml -# application/vnd.oipf.dae.xhtml+xml -# application/vnd.oipf.mippvcontrolmessage+xml -# application/vnd.oipf.pae.gem -# application/vnd.oipf.spdiscovery+xml -# application/vnd.oipf.spdlist+xml -# application/vnd.oipf.ueprofile+xml -# application/vnd.oipf.userprofile+xml -application/vnd.olpc-sugar xo -# application/vnd.oma-scws-config -# application/vnd.oma-scws-http-request -# application/vnd.oma-scws-http-response -# application/vnd.oma.bcast.associated-procedure-parameter+xml -# application/vnd.oma.bcast.drm-trigger+xml -# application/vnd.oma.bcast.imd+xml -# application/vnd.oma.bcast.ltkm -# application/vnd.oma.bcast.notification+xml -# application/vnd.oma.bcast.provisioningtrigger -# application/vnd.oma.bcast.sgboot -# application/vnd.oma.bcast.sgdd+xml -# application/vnd.oma.bcast.sgdu -# application/vnd.oma.bcast.simple-symbol-container -# application/vnd.oma.bcast.smartcard-trigger+xml -# application/vnd.oma.bcast.sprov+xml -# application/vnd.oma.bcast.stkm -# application/vnd.oma.cab-address-book+xml -# application/vnd.oma.cab-feature-handler+xml -# application/vnd.oma.cab-pcc+xml -# application/vnd.oma.cab-user-prefs+xml -# application/vnd.oma.dcd -# application/vnd.oma.dcdc -application/vnd.oma.dd2+xml dd2 -# application/vnd.oma.drm.risd+xml -# application/vnd.oma.group-usage-list+xml -# application/vnd.oma.pal+xml -# application/vnd.oma.poc.detailed-progress-report+xml -# application/vnd.oma.poc.final-report+xml -# application/vnd.oma.poc.groups+xml -# application/vnd.oma.poc.invocation-descriptor+xml -# application/vnd.oma.poc.optimized-progress-report+xml -# application/vnd.oma.push -# application/vnd.oma.scidm.messages+xml -# application/vnd.oma.xcap-directory+xml -# application/vnd.omads-email+xml -# application/vnd.omads-file+xml -# application/vnd.omads-folder+xml -# application/vnd.omaloc-supl-init -application/vnd.openofficeorg.extension oxt -# application/vnd.openxmlformats-officedocument.custom-properties+xml -# application/vnd.openxmlformats-officedocument.customxmlproperties+xml -# application/vnd.openxmlformats-officedocument.drawing+xml -# application/vnd.openxmlformats-officedocument.drawingml.chart+xml -# application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml -# application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml -# application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml -# application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml -# application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml -# application/vnd.openxmlformats-officedocument.extended-properties+xml -# application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml -# application/vnd.openxmlformats-officedocument.presentationml.comments+xml -# application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml -# application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml -# application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml -application/vnd.openxmlformats-officedocument.presentationml.presentation pptx -# application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml -# application/vnd.openxmlformats-officedocument.presentationml.presprops+xml -application/vnd.openxmlformats-officedocument.presentationml.slide sldx -# application/vnd.openxmlformats-officedocument.presentationml.slide+xml -# application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml -# application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml -application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx -# application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml -# application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml -# application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml -# application/vnd.openxmlformats-officedocument.presentationml.tags+xml -application/vnd.openxmlformats-officedocument.presentationml.template potx -# application/vnd.openxmlformats-officedocument.presentationml.template.main+xml -# application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml -application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx -# application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml -application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx -# application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml -# application/vnd.openxmlformats-officedocument.theme+xml -# application/vnd.openxmlformats-officedocument.themeoverride+xml -# application/vnd.openxmlformats-officedocument.vmldrawing -# application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml -application/vnd.openxmlformats-officedocument.wordprocessingml.document docx -# application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml -application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx -# application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml -# application/vnd.openxmlformats-package.core-properties+xml -# application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml -# application/vnd.openxmlformats-package.relationships+xml -# application/vnd.quobject-quoxdocument -# application/vnd.osa.netdeploy -application/vnd.osgeo.mapguide.package mgp -# application/vnd.osgi.bundle -application/vnd.osgi.dp dp -application/vnd.osgi.subsystem esa -# application/vnd.otps.ct-kip+xml -application/vnd.palm pdb pqa oprc -# application/vnd.paos.xml -application/vnd.pawaafile paw -application/vnd.pg.format str -application/vnd.pg.osasli ei6 -# application/vnd.piaccess.application-licence -application/vnd.picsel efif -application/vnd.pmi.widget wg -# application/vnd.poc.group-advertisement+xml -application/vnd.pocketlearn plf -application/vnd.powerbuilder6 pbd -# application/vnd.powerbuilder6-s -# application/vnd.powerbuilder7 -# application/vnd.powerbuilder7-s -# application/vnd.powerbuilder75 -# application/vnd.powerbuilder75-s -# application/vnd.preminet -application/vnd.previewsystems.box box -application/vnd.proteus.magazine mgz -application/vnd.publishare-delta-tree qps -application/vnd.pvi.ptid1 ptid -# application/vnd.pwg-multiplexed -# application/vnd.pwg-xhtml-print+xml -# application/vnd.qualcomm.brew-app-res -application/vnd.quark.quarkxpress qxd qxt qwd qwt qxl qxb -# application/vnd.radisys.moml+xml -# application/vnd.radisys.msml+xml -# application/vnd.radisys.msml-audit+xml -# application/vnd.radisys.msml-audit-conf+xml -# application/vnd.radisys.msml-audit-conn+xml -# application/vnd.radisys.msml-audit-dialog+xml -# application/vnd.radisys.msml-audit-stream+xml -# application/vnd.radisys.msml-conf+xml -# application/vnd.radisys.msml-dialog+xml -# application/vnd.radisys.msml-dialog-base+xml -# application/vnd.radisys.msml-dialog-fax-detect+xml -# application/vnd.radisys.msml-dialog-fax-sendrecv+xml -# application/vnd.radisys.msml-dialog-group+xml -# application/vnd.radisys.msml-dialog-speech+xml -# application/vnd.radisys.msml-dialog-transform+xml -# application/vnd.rainstor.data -# application/vnd.rapid -application/vnd.realvnc.bed bed -application/vnd.recordare.musicxml mxl -application/vnd.recordare.musicxml+xml musicxml -# application/vnd.renlearn.rlprint -application/vnd.rig.cryptonote cryptonote -application/vnd.rim.cod cod -application/vnd.rn-realmedia rm -application/vnd.rn-realmedia-vbr rmvb -application/vnd.route66.link66+xml link66 -# application/vnd.rs-274x -# application/vnd.ruckus.download -# application/vnd.s3sms -application/vnd.sailingtracker.track st -# application/vnd.sbm.cid -# application/vnd.sbm.mid2 -# application/vnd.scribus -# application/vnd.sealed.3df -# application/vnd.sealed.csf -# application/vnd.sealed.doc -# application/vnd.sealed.eml -# application/vnd.sealed.mht -# application/vnd.sealed.net -# application/vnd.sealed.ppt -# application/vnd.sealed.tiff -# application/vnd.sealed.xls -# application/vnd.sealedmedia.softseal.html -# application/vnd.sealedmedia.softseal.pdf -application/vnd.seemail see -application/vnd.sema sema -application/vnd.semd semd -application/vnd.semf semf -application/vnd.shana.informed.formdata ifm -application/vnd.shana.informed.formtemplate itp -application/vnd.shana.informed.interchange iif -application/vnd.shana.informed.package ipk -application/vnd.simtech-mindmapper twd twds -application/vnd.smaf mmf -# application/vnd.smart.notebook -application/vnd.smart.teacher teacher -# application/vnd.software602.filler.form+xml -# application/vnd.software602.filler.form-xml-zip -application/vnd.solent.sdkm+xml sdkm sdkd -application/vnd.spotfire.dxp dxp -application/vnd.spotfire.sfs sfs -# application/vnd.sss-cod -# application/vnd.sss-dtf -# application/vnd.sss-ntf -application/vnd.stardivision.calc sdc -application/vnd.stardivision.draw sda -application/vnd.stardivision.impress sdd -application/vnd.stardivision.math smf -application/vnd.stardivision.writer sdw vor -application/vnd.stardivision.writer-global sgl -application/vnd.stepmania.package smzip -application/vnd.stepmania.stepchart sm -# application/vnd.street-stream -application/vnd.sun.xml.calc sxc -application/vnd.sun.xml.calc.template stc -application/vnd.sun.xml.draw sxd -application/vnd.sun.xml.draw.template std -application/vnd.sun.xml.impress sxi -application/vnd.sun.xml.impress.template sti -application/vnd.sun.xml.math sxm -application/vnd.sun.xml.writer sxw -application/vnd.sun.xml.writer.global sxg -application/vnd.sun.xml.writer.template stw -# application/vnd.sun.wadl+xml -application/vnd.sus-calendar sus susp -application/vnd.svd svd -# application/vnd.swiftview-ics -application/vnd.symbian.install sis sisx -application/vnd.syncml+xml xsm -application/vnd.syncml.dm+wbxml bdm -application/vnd.syncml.dm+xml xdm -# application/vnd.syncml.dm.notification -# application/vnd.syncml.ds.notification -application/vnd.tao.intent-module-archive tao -application/vnd.tcpdump.pcap pcap cap dmp -application/vnd.tmobile-livetv tmo -application/vnd.trid.tpt tpt -application/vnd.triscape.mxs mxs -application/vnd.trueapp tra -# application/vnd.truedoc -# application/vnd.ubisoft.webplayer -application/vnd.ufdl ufd ufdl -application/vnd.uiq.theme utz -application/vnd.umajin umj -application/vnd.unity unityweb -application/vnd.uoml+xml uoml -# application/vnd.uplanet.alert -# application/vnd.uplanet.alert-wbxml -# application/vnd.uplanet.bearer-choice -# application/vnd.uplanet.bearer-choice-wbxml -# application/vnd.uplanet.cacheop -# application/vnd.uplanet.cacheop-wbxml -# application/vnd.uplanet.channel -# application/vnd.uplanet.channel-wbxml -# application/vnd.uplanet.list -# application/vnd.uplanet.list-wbxml -# application/vnd.uplanet.listcmd -# application/vnd.uplanet.listcmd-wbxml -# application/vnd.uplanet.signal -application/vnd.vcx vcx -# application/vnd.vd-study -# application/vnd.vectorworks -# application/vnd.verimatrix.vcas -# application/vnd.vidsoft.vidconference -application/vnd.visio vsd vst vss vsw -application/vnd.visionary vis -# application/vnd.vividence.scriptfile -application/vnd.vsf vsf -# application/vnd.wap.sic -# application/vnd.wap.slc -application/vnd.wap.wbxml wbxml -application/vnd.wap.wmlc wmlc -application/vnd.wap.wmlscriptc wmlsc -application/vnd.webturbo wtb -# application/vnd.wfa.wsc -# application/vnd.wmc -# application/vnd.wmf.bootstrap -# application/vnd.wolfram.mathematica -# application/vnd.wolfram.mathematica.package -application/vnd.wolfram.player nbp -application/vnd.wordperfect wpd -application/vnd.wqd wqd -# application/vnd.wrq-hp3000-labelled -application/vnd.wt.stf stf -# application/vnd.wv.csp+wbxml -# application/vnd.wv.csp+xml -# application/vnd.wv.ssp+xml -application/vnd.xara xar -application/vnd.xfdl xfdl -# application/vnd.xfdl.webform -# application/vnd.xmi+xml -# application/vnd.xmpie.cpkg -# application/vnd.xmpie.dpkg -# application/vnd.xmpie.plan -# application/vnd.xmpie.ppkg -# application/vnd.xmpie.xlim -application/vnd.yamaha.hv-dic hvd -application/vnd.yamaha.hv-script hvs -application/vnd.yamaha.hv-voice hvp -application/vnd.yamaha.openscoreformat osf -application/vnd.yamaha.openscoreformat.osfpvg+xml osfpvg -# application/vnd.yamaha.remote-setup -application/vnd.yamaha.smaf-audio saf -application/vnd.yamaha.smaf-phrase spf -# application/vnd.yamaha.through-ngn -# application/vnd.yamaha.tunnel-udpencap -application/vnd.yellowriver-custom-menu cmp -application/vnd.zul zir zirz -application/vnd.zzazz.deck+xml zaz -application/voicexml+xml vxml -# application/vq-rtcpxr -# application/watcherinfo+xml -# application/whoispp-query -# application/whoispp-response -application/widget wgt -application/winhlp hlp -# application/wita -# application/wordperfect5.1 -application/wsdl+xml wsdl -application/wspolicy+xml wspolicy -application/x-7z-compressed 7z -application/x-abiword abw -application/x-ace-compressed ace -# application/x-amf -application/x-apple-diskimage dmg -application/x-authorware-bin aab x32 u32 vox -application/x-authorware-map aam -application/x-authorware-seg aas -application/x-bcpio bcpio -application/x-bittorrent torrent -application/x-blorb blb blorb -application/x-bzip bz -application/x-bzip2 bz2 boz -application/x-cbr cbr cba cbt cbz cb7 -application/x-cdlink vcd -application/x-cfs-compressed cfs -application/x-chat chat -application/x-chess-pgn pgn -application/x-conference nsc -# application/x-compress -application/x-cpio cpio -application/x-csh csh -application/x-debian-package deb udeb -application/x-dgc-compressed dgc -application/x-director dir dcr dxr cst cct cxt w3d fgd swa -application/x-doom wad -application/x-dtbncx+xml ncx -application/x-dtbook+xml dtb -application/x-dtbresource+xml res -application/x-dvi dvi -application/x-envoy evy -application/x-eva eva -application/x-font-bdf bdf -# application/x-font-dos -# application/x-font-framemaker -application/x-font-ghostscript gsf -# application/x-font-libgrx -application/x-font-linux-psf psf -application/x-font-otf otf -application/x-font-pcf pcf -application/x-font-snf snf -# application/x-font-speedo -# application/x-font-sunos-news -application/x-font-ttf ttf ttc -application/x-font-type1 pfa pfb pfm afm -application/x-font-woff woff -# application/x-font-vfont -application/x-freearc arc -application/x-futuresplash spl -application/x-gca-compressed gca -application/x-glulx ulx -application/x-gnumeric gnumeric -application/x-gramps-xml gramps -application/x-gtar gtar -# application/x-gzip -application/x-hdf hdf -application/x-install-instructions install -application/x-iso9660-image iso -application/x-java-jnlp-file jnlp -application/x-latex latex -application/x-lzh-compressed lzh lha -application/x-mie mie -application/x-mobipocket-ebook prc mobi -application/x-ms-application application -application/x-ms-shortcut lnk -application/x-ms-wmd wmd -application/x-ms-wmz wmz -application/x-ms-xbap xbap -application/x-msaccess mdb -application/x-msbinder obd -application/x-mscardfile crd -application/x-msclip clp -application/x-msdownload exe dll com bat msi -application/x-msmediaview mvb m13 m14 -application/x-msmetafile wmf wmz emf emz -application/x-msmoney mny -application/x-mspublisher pub -application/x-msschedule scd -application/x-msterminal trm -application/x-mswrite wri -application/x-netcdf nc cdf -application/x-nzb nzb -application/x-pkcs12 p12 pfx -application/x-pkcs7-certificates p7b spc -application/x-pkcs7-certreqresp p7r -application/x-rar-compressed rar -application/x-research-info-systems ris -application/x-sh sh -application/x-shar shar -application/x-shockwave-flash swf -application/x-silverlight-app xap -application/x-sql sql -application/x-stuffit sit -application/x-stuffitx sitx -application/x-subrip srt -application/x-sv4cpio sv4cpio -application/x-sv4crc sv4crc -application/x-t3vm-image t3 -application/x-tads gam -application/x-tar tar -application/x-tcl tcl -application/x-tex tex -application/x-tex-tfm tfm -application/x-texinfo texinfo texi -application/x-tgif obj -application/x-ustar ustar -application/x-wais-source src -application/x-x509-ca-cert der crt -application/x-xfig fig -application/x-xliff+xml xlf -application/x-xpinstall xpi -application/x-xz xz -application/x-zmachine z1 z2 z3 z4 z5 z6 z7 z8 -# application/x400-bp -application/xaml+xml xaml -# application/xcap-att+xml -# application/xcap-caps+xml -application/xcap-diff+xml xdf -# application/xcap-el+xml -# application/xcap-error+xml -# application/xcap-ns+xml -# application/xcon-conference-info-diff+xml -# application/xcon-conference-info+xml -application/xenc+xml xenc -application/xhtml+xml xhtml xht -# application/xhtml-voice+xml -application/xml xml xsl -application/xml-dtd dtd -# application/xml-external-parsed-entity -# application/xmpp+xml -application/xop+xml xop -application/xproc+xml xpl -application/xslt+xml xslt -application/xspf+xml xspf -application/xv+xml mxml xhvml xvml xvm -application/yang yang -application/yin+xml yin -application/zip zip -# audio/1d-interleaved-parityfec -# audio/32kadpcm -# audio/3gpp -# audio/3gpp2 -# audio/ac3 -audio/adpcm adp -# audio/amr -# audio/amr-wb -# audio/amr-wb+ -# audio/asc -# audio/atrac-advanced-lossless -# audio/atrac-x -# audio/atrac3 -audio/basic au snd -# audio/bv16 -# audio/bv32 -# audio/clearmode -# audio/cn -# audio/dat12 -# audio/dls -# audio/dsr-es201108 -# audio/dsr-es202050 -# audio/dsr-es202211 -# audio/dsr-es202212 -# audio/dv -# audio/dvi4 -# audio/eac3 -# audio/evrc -# audio/evrc-qcp -# audio/evrc0 -# audio/evrc1 -# audio/evrcb -# audio/evrcb0 -# audio/evrcb1 -# audio/evrcwb -# audio/evrcwb0 -# audio/evrcwb1 -# audio/example -# audio/fwdred -# audio/g719 -# audio/g722 -# audio/g7221 -# audio/g723 -# audio/g726-16 -# audio/g726-24 -# audio/g726-32 -# audio/g726-40 -# audio/g728 -# audio/g729 -# audio/g7291 -# audio/g729d -# audio/g729e -# audio/gsm -# audio/gsm-efr -# audio/gsm-hr-08 -# audio/ilbc -# audio/ip-mr_v2.5 -# audio/isac -# audio/l16 -# audio/l20 -# audio/l24 -# audio/l8 -# audio/lpc -audio/midi mid midi kar rmi -# audio/mobile-xmf -audio/mp4 mp4a -# audio/mp4a-latm -# audio/mpa -# audio/mpa-robust -audio/mpeg mpga mp2 mp2a mp3 m2a m3a -# audio/mpeg4-generic -# audio/musepack -audio/ogg oga ogg spx -# audio/opus -# audio/parityfec -# audio/pcma -# audio/pcma-wb -# audio/pcmu-wb -# audio/pcmu -# audio/prs.sid -# audio/qcelp -# audio/red -# audio/rtp-enc-aescm128 -# audio/rtp-midi -# audio/rtx -audio/s3m s3m -audio/silk sil -# audio/smv -# audio/smv0 -# audio/smv-qcp -# audio/sp-midi -# audio/speex -# audio/t140c -# audio/t38 -# audio/telephone-event -# audio/tone -# audio/uemclip -# audio/ulpfec -# audio/vdvi -# audio/vmr-wb -# audio/vnd.3gpp.iufp -# audio/vnd.4sb -# audio/vnd.audiokoz -# audio/vnd.celp -# audio/vnd.cisco.nse -# audio/vnd.cmles.radio-events -# audio/vnd.cns.anp1 -# audio/vnd.cns.inf1 -audio/vnd.dece.audio uva uvva -audio/vnd.digital-winds eol -# audio/vnd.dlna.adts -# audio/vnd.dolby.heaac.1 -# audio/vnd.dolby.heaac.2 -# audio/vnd.dolby.mlp -# audio/vnd.dolby.mps -# audio/vnd.dolby.pl2 -# audio/vnd.dolby.pl2x -# audio/vnd.dolby.pl2z -# audio/vnd.dolby.pulse.1 -audio/vnd.dra dra -audio/vnd.dts dts -audio/vnd.dts.hd dtshd -# audio/vnd.dvb.file -# audio/vnd.everad.plj -# audio/vnd.hns.audio -audio/vnd.lucent.voice lvp -audio/vnd.ms-playready.media.pya pya -# audio/vnd.nokia.mobile-xmf -# audio/vnd.nortel.vbk -audio/vnd.nuera.ecelp4800 ecelp4800 -audio/vnd.nuera.ecelp7470 ecelp7470 -audio/vnd.nuera.ecelp9600 ecelp9600 -# audio/vnd.octel.sbc -# audio/vnd.qcelp -# audio/vnd.rhetorex.32kadpcm -audio/vnd.rip rip -# audio/vnd.sealedmedia.softseal.mpeg -# audio/vnd.vmx.cvsd -# audio/vorbis -# audio/vorbis-config -audio/webm weba -audio/x-aac aac -audio/x-aiff aif aiff aifc -audio/x-caf caf -audio/x-flac flac -audio/x-matroska mka -audio/x-mpegurl m3u -audio/x-ms-wax wax -audio/x-ms-wma wma -audio/x-pn-realaudio ram ra -audio/x-pn-realaudio-plugin rmp -# audio/x-tta -audio/x-wav wav -audio/xm xm -chemical/x-cdx cdx -chemical/x-cif cif -chemical/x-cmdf cmdf -chemical/x-cml cml -chemical/x-csml csml -# chemical/x-pdb -chemical/x-xyz xyz -image/bmp bmp -image/cgm cgm -# image/example -# image/fits -image/g3fax g3 -image/gif gif -image/ief ief -# image/jp2 -image/jpeg jpeg jpg jpe -# image/jpm -# image/jpx -image/ktx ktx -# image/naplps -image/png png -image/prs.btif btif -# image/prs.pti -image/sgi sgi -image/svg+xml svg svgz -# image/t38 -image/tiff tiff tif -# image/tiff-fx -image/vnd.adobe.photoshop psd -# image/vnd.cns.inf2 -image/vnd.dece.graphic uvi uvvi uvg uvvg -image/vnd.dvb.subtitle sub -image/vnd.djvu djvu djv -image/vnd.dwg dwg -image/vnd.dxf dxf -image/vnd.fastbidsheet fbs -image/vnd.fpx fpx -image/vnd.fst fst -image/vnd.fujixerox.edmics-mmr mmr -image/vnd.fujixerox.edmics-rlc rlc -# image/vnd.globalgraphics.pgb -# image/vnd.microsoft.icon -# image/vnd.mix -image/vnd.ms-modi mdi -image/vnd.ms-photo wdp -image/vnd.net-fpx npx -# image/vnd.radiance -# image/vnd.sealed.png -# image/vnd.sealedmedia.softseal.gif -# image/vnd.sealedmedia.softseal.jpg -# image/vnd.svf -image/vnd.wap.wbmp wbmp -image/vnd.xiff xif -image/webp webp -image/x-3ds 3ds -image/x-cmu-raster ras -image/x-cmx cmx -image/x-freehand fh fhc fh4 fh5 fh7 -image/x-icon ico -image/x-mrsid-image sid -image/x-pcx pcx -image/x-pict pic pct -image/x-portable-anymap pnm -image/x-portable-bitmap pbm -image/x-portable-graymap pgm -image/x-portable-pixmap ppm -image/x-rgb rgb -image/x-tga tga -image/x-xbitmap xbm -image/x-xpixmap xpm -image/x-xwindowdump xwd -# message/cpim -# message/delivery-status -# message/disposition-notification -# message/example -# message/external-body -# message/feedback-report -# message/global -# message/global-delivery-status -# message/global-disposition-notification -# message/global-headers -# message/http -# message/imdn+xml -# message/news -# message/partial -message/rfc822 eml mime -# message/s-http -# message/sip -# message/sipfrag -# message/tracking-status -# message/vnd.si.simp -# model/example -model/iges igs iges -model/mesh msh mesh silo -model/vnd.collada+xml dae -model/vnd.dwf dwf -# model/vnd.flatland.3dml -model/vnd.gdl gdl -# model/vnd.gs-gdl -# model/vnd.gs.gdl -model/vnd.gtw gtw -# model/vnd.moml+xml -model/vnd.mts mts -# model/vnd.parasolid.transmit.binary -# model/vnd.parasolid.transmit.text -model/vnd.vtu vtu -model/vrml wrl vrml -model/x3d+binary x3db x3dbz -model/x3d+vrml x3dv x3dvz -model/x3d+xml x3d x3dz -# multipart/alternative -# multipart/appledouble -# multipart/byteranges -# multipart/digest -# multipart/encrypted -# multipart/example -# multipart/form-data -# multipart/header-set -# multipart/mixed -# multipart/parallel -# multipart/related -# multipart/report -# multipart/signed -# multipart/voice-message -# text/1d-interleaved-parityfec -text/cache-manifest appcache -text/calendar ics ifb -text/css css -text/csv csv -# text/directory -# text/dns -# text/ecmascript -# text/enriched -# text/example -# text/fwdred -text/html html htm -# text/javascript -text/n3 n3 -# text/parityfec -text/plain txt text conf def list log in -# text/prs.fallenstein.rst -text/prs.lines.tag dsc -# text/vnd.radisys.msml-basic-layout -# text/red -# text/rfc822-headers -text/richtext rtx -# text/rtf -# text/rtp-enc-aescm128 -# text/rtx -text/sgml sgml sgm -# text/t140 -text/tab-separated-values tsv -text/troff t tr roff man me ms -text/turtle ttl -# text/ulpfec -text/uri-list uri uris urls -text/vcard vcard -# text/vnd.abc -text/vnd.curl curl -text/vnd.curl.dcurl dcurl -text/vnd.curl.scurl scurl -text/vnd.curl.mcurl mcurl -# text/vnd.dmclientscript -text/vnd.dvb.subtitle sub -# text/vnd.esmertec.theme-descriptor -text/vnd.fly fly -text/vnd.fmi.flexstor flx -text/vnd.graphviz gv -text/vnd.in3d.3dml 3dml -text/vnd.in3d.spot spot -# text/vnd.iptc.newsml -# text/vnd.iptc.nitf -# text/vnd.latex-z -# text/vnd.motorola.reflex -# text/vnd.ms-mediapackage -# text/vnd.net2phone.commcenter.command -# text/vnd.si.uricatalogue -text/vnd.sun.j2me.app-descriptor jad -# text/vnd.trolltech.linguist -# text/vnd.wap.si -# text/vnd.wap.sl -text/vnd.wap.wml wml -text/vnd.wap.wmlscript wmls -text/x-asm s asm -text/x-c c cc cxx cpp h hh dic -text/x-fortran f for f77 f90 -text/x-java-source java -text/x-opml opml -text/x-pascal p pas -text/x-nfo nfo -text/x-setext etx -text/x-sfv sfv -text/x-uuencode uu -text/x-vcalendar vcs -text/x-vcard vcf -# text/xml -# text/xml-external-parsed-entity -# video/1d-interleaved-parityfec -video/3gpp 3gp -# video/3gpp-tt -video/3gpp2 3g2 -# video/bmpeg -# video/bt656 -# video/celb -# video/dv -# video/example -video/h261 h261 -video/h263 h263 -# video/h263-1998 -# video/h263-2000 -video/h264 h264 -# video/h264-rcdo -# video/h264-svc -video/jpeg jpgv -# video/jpeg2000 -video/jpm jpm jpgm -video/mj2 mj2 mjp2 -# video/mp1s -# video/mp2p -# video/mp2t -video/mp4 mp4 mp4v mpg4 -# video/mp4v-es -video/mpeg mpeg mpg mpe m1v m2v -# video/mpeg4-generic -# video/mpv -# video/nv -video/ogg ogv -# video/parityfec -# video/pointer -video/quicktime qt mov -# video/raw -# video/rtp-enc-aescm128 -# video/rtx -# video/smpte292m -# video/ulpfec -# video/vc1 -# video/vnd.cctv -video/vnd.dece.hd uvh uvvh -video/vnd.dece.mobile uvm uvvm -# video/vnd.dece.mp4 -video/vnd.dece.pd uvp uvvp -video/vnd.dece.sd uvs uvvs -video/vnd.dece.video uvv uvvv -# video/vnd.directv.mpeg -# video/vnd.directv.mpeg-tts -# video/vnd.dlna.mpeg-tts -video/vnd.dvb.file dvb -video/vnd.fvt fvt -# video/vnd.hns.video -# video/vnd.iptvforum.1dparityfec-1010 -# video/vnd.iptvforum.1dparityfec-2005 -# video/vnd.iptvforum.2dparityfec-1010 -# video/vnd.iptvforum.2dparityfec-2005 -# video/vnd.iptvforum.ttsavc -# video/vnd.iptvforum.ttsmpeg2 -# video/vnd.motorola.video -# video/vnd.motorola.videop -video/vnd.mpegurl mxu m4u -video/vnd.ms-playready.media.pyv pyv -# video/vnd.nokia.interleaved-multimedia -# video/vnd.nokia.videovoip -# video/vnd.objectvideo -# video/vnd.sealed.mpeg1 -# video/vnd.sealed.mpeg4 -# video/vnd.sealed.swf -# video/vnd.sealedmedia.softseal.mov -video/vnd.uvvu.mp4 uvu uvvu -video/vnd.vivo viv -video/webm webm -video/x-f4v f4v -video/x-fli fli -video/x-flv flv -video/x-m4v m4v -video/x-matroska mkv mk3d mks -video/x-mng mng -video/x-ms-asf asf asx -video/x-ms-vob vob -video/x-ms-wm wm -video/x-ms-wmv wmv -video/x-ms-wmx wmx -video/x-ms-wvx wvx -video/x-msvideo avi -video/x-sgi-movie movie -video/x-smv smv -x-conference/x-cooltalk ice diff --git a/node_modules/mime/types/node.types b/node_modules/mime/types/node.types deleted file mode 100644 index 970a1bd..0000000 --- a/node_modules/mime/types/node.types +++ /dev/null @@ -1,60 +0,0 @@ -# What: WebVTT -# Why: To allow formats intended for marking up external text track resources. -# http://dev.w3.org/html5/webvtt/ -# Added by: niftylettuce -text/vtt vtt - -# What: Google Chrome Extension -# Why: To allow apps to (work) be served with the right content type header. -# http://codereview.chromium.org/2830017 -# Added by: niftylettuce -application/x-chrome-extension crx - -# What: HTC support -# Why: To properly render .htc files such as CSS3PIE -# Added by: niftylettuce -text/x-component htc - -# What: HTML5 application cache manifest -# Why: De-facto standard. Required by Mozilla browser when serving HTML5 apps -# per https://developer.mozilla.org/en/offline_resources_in_firefox -# Added by: louisremi -text/cache-manifest appcache manifest - -# What: node binary buffer format -# Why: semi-standard extension w/in the node community -# Added by: tootallnate -application/octet-stream buffer - -# What: The "protected" MP-4 formats used by iTunes. -# Why: Required for streaming music to browsers (?) -# Added by: broofa -application/mp4 m4p -audio/mp4 m4a - -# What: Video format, Part of RFC1890 -# Why: See https://github.com/bentomas/node-mime/pull/6 -# Added by: mjrusso -video/MP2T ts - -# What: EventSource mime type -# Why: mime type of Server-Sent Events stream -# http://www.w3.org/TR/eventsource/#text-event-stream -# Added by: francois2metz -text/event-stream event-stream - -# What: Mozilla App manifest mime type -# Why: https://developer.mozilla.org/en/Apps/Manifest#Serving_manifests -# Added by: ednapiranha -application/x-web-app-manifest+json webapp - -# What: Lua file types -# Why: Googling around shows de-facto consensus on these -# Added by: creationix (Issue #45) -text/x-lua lua -application/x-lua-bytecode luac - -# What: Markdown files, as per http://daringfireball.net/projects/markdown/syntax -# Why: http://stackoverflow.com/questions/10701983/what-is-the-mime-type-for-markdown -# Added by: avoidwork -text/x-markdown markdown md mkd diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 3143e90..0000000 --- a/package-lock.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "name": "TransferGo", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "dependencies": { - "git": "^0.1.5" - } - }, - "node_modules/git": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/git/-/git-0.1.5.tgz", - "integrity": "sha512-N+bfOrXyKMU/fQtCj6D/U9MQOEN0DAA8TLHSLdUQRSWBOkeRvsjJHdrdkvcq05xO7GSDKWc3nDEGoTZ4DfCCSg==", - "dependencies": { - "mime": "1.2.9" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/mime": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.9.tgz", - "integrity": "sha512-WiLgbHTIq5AYUvU/Luli4mZ1bUcHpGNHyCsbl+KPMg4zt+XUDpQehWjuBjdLaEvDTinvKj/FgfQt3fPoT7j08g==" - } - }, - "dependencies": { - "git": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/git/-/git-0.1.5.tgz", - "integrity": "sha512-N+bfOrXyKMU/fQtCj6D/U9MQOEN0DAA8TLHSLdUQRSWBOkeRvsjJHdrdkvcq05xO7GSDKWc3nDEGoTZ4DfCCSg==", - "requires": { - "mime": "1.2.9" - } - }, - "mime": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.9.tgz", - "integrity": "sha512-WiLgbHTIq5AYUvU/Luli4mZ1bUcHpGNHyCsbl+KPMg4zt+XUDpQehWjuBjdLaEvDTinvKj/FgfQt3fPoT7j08g==" - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index 3ef4c2a..0000000 --- a/package.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "dependencies": { - "git": "^0.1.5" - } -} diff --git a/src/backend/TransferGo/.gitignore b/src/backend/TransferGo/.gitignore index a9d0f21..409d282 100644 --- a/src/backend/TransferGo/.gitignore +++ b/src/backend/TransferGo/.gitignore @@ -1,9 +1,195 @@ -00*_*.py +# Created by https://www.toptal.com/developers/gitignore/api/django +# Edit at https://www.toptal.com/developers/gitignore?templates=django + +### Django ### +*.log +*.pot +*.pyc +__pycache__/ +core/management/__pycache__ +local_settings.py +db.sqlite3 +db.sqlite3-journal +media + +# If your build process includes running collect +# static, then you probably don't need or want to include staticfiles/ +# in your Git repository. Update and uncomment the following line accordingly. +# /staticfiles/ + +### Django.Python Stack ### +# Byte-compiled / optimized / DLL files +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo + +# Django stuff: + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.env.bat +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# End of https://www.toptal.com/developers/gitignore/api/django +.vercel + +./env +/env/ +env/ +makefile + +^db.sqlite3$ +./db.sqlite3 +*.sqlite3 + +other/ + +# Byte-compiled / optimized / DLL files +__pycache__ +**/__pycache__/** +*.py[cod] +*$py.class + +# migrations/** +**/migrations/** +!**/migrations +!**/migrations/__init__.py + +*.rdb +celerybeat-schedule + + +*_*.py *.pyc *__pycache__* .env/ +env venv **.idea** *.log *media* -.idea \ No newline at end of file +.idea +.sqlite3 + diff --git a/src/backend/TransferGo/TransferGo/__pycache__/__init__.cpython-310.pyc b/src/backend/TransferGo/TransferGo/__pycache__/__init__.cpython-310.pyc index d365dc5..6b96e9a 100644 Binary files a/src/backend/TransferGo/TransferGo/__pycache__/__init__.cpython-310.pyc and b/src/backend/TransferGo/TransferGo/__pycache__/__init__.cpython-310.pyc differ diff --git a/src/backend/TransferGo/TransferGo/__pycache__/settings.cpython-310.pyc b/src/backend/TransferGo/TransferGo/__pycache__/settings.cpython-310.pyc index b53cf7b..3e6e72a 100644 Binary files a/src/backend/TransferGo/TransferGo/__pycache__/settings.cpython-310.pyc and b/src/backend/TransferGo/TransferGo/__pycache__/settings.cpython-310.pyc differ diff --git a/src/backend/TransferGo/TransferGo/settings.py b/src/backend/TransferGo/TransferGo/settings.py index 0fbe5c2..c3d2ef9 100644 --- a/src/backend/TransferGo/TransferGo/settings.py +++ b/src/backend/TransferGo/TransferGo/settings.py @@ -35,7 +35,7 @@ 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', - 'django_filters', + "corsheaders", 'rest_framework', 'rest_framework.authtoken', 'core', @@ -43,6 +43,7 @@ ] MIDDLEWARE = [ + 'corsheaders.middleware.CorsMiddleware', 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', @@ -137,6 +138,7 @@ # Dossier où seront stockés les médias MEDIA_ROOT = BASE_DIR / 'media' +CORS_ALLOW_ALL_ORIGINS = True # Default primary key field type # https://docs.djangoproject.com/en/3.2/ref/settings/#default-auto-field diff --git a/src/backend/TransferGo/core/api_views.py b/src/backend/TransferGo/core/api_views.py index 47db92e..e6c2090 100644 --- a/src/backend/TransferGo/core/api_views.py +++ b/src/backend/TransferGo/core/api_views.py @@ -40,7 +40,7 @@ def create(self, request, *args, **kwargs): class UpdatePasswordViewSet(CreateModelMixin,GenericViewSet): serializer_class = PasswordSerializer - permission_classes = [AllowAny] + permission_classes = [IsAuthenticatedOrReadOnly] def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) @@ -72,15 +72,9 @@ class ProfileViewSet(CreateModelMixin, ListModelMixin, UpdateModelMixin, Retriev serializer_class = ProfileSerializer permission_classes = [AllowAny] - def get_user(self): - user = self.request.user - if not user.is_authenticated: - token = Token.objects.get(key=self.request.headers['Token']) - user = token.user - return user - def get_queryset(self): - user = self.get_user() + user = self.request.user + print(user) queryset = Profile.objects.filter(user=user.id) return queryset @@ -116,17 +110,10 @@ def partial_update(self, request, *args, **kwargs): ), 'create') class AccountViewSet(CreateModelMixin, DestroyModelMixin, ListModelMixin, UpdateModelMixin, RetrieveModelMixin, GenericViewSet): serializer_class = AccountSerializer - permission_classes = [AllowAny] - - def get_user(self): - user = self.request.user - if not user.is_authenticated: - token = Token.objects.get(key=self.request.headers['Token']) - user = token.user - return user + permission_classes = [IsAuthenticatedOrReadOnly] def get_queryset(self): - user = self.get_user() + user = self.request.user queryset = Account.objects.filter(user=user.id) return queryset @@ -139,21 +126,14 @@ def create(self, request, *args, **kwargs): @method_decorator(swagger_auto_schema( - request_body=TransactionSerializer() + request_body=TransactionCreateserializer() ), 'create') class TransactionViewSet(CreateModelMixin, DestroyModelMixin, ListModelMixin, RetrieveModelMixin, GenericViewSet): serializer_class = TransactionSerializer - permission_classes = [AllowAny] - - def get_user(self): - user = self.request.user - if not user.is_authenticated: - token = Token.objects.get(key=self.request.headers['Token']) - user = token.user - return user + permission_classes = [IsAuthenticatedOrReadOnly] def get_queryset(self): - user = self.get_user() + user = self.request.user queryset = Transaction.objects.filter(sender=user.account).order_by('-id') return queryset @@ -176,6 +156,9 @@ def create(self, request, *args, **kwargs): if profile is None: return Response({'detail': 'this number does not match with no one of our users'}) + if profile.user == request.user: + return Response({'detail':'Sorry, You can\'t make a transaction to your self'}) + serializer.validated_data['sender'] = sender receiver = profile.user.account serializer.validated_data['receiver'] = receiver diff --git a/src/backend/TransferGo/core/models.py b/src/backend/TransferGo/core/models.py index 860faaa..f57c802 100644 --- a/src/backend/TransferGo/core/models.py +++ b/src/backend/TransferGo/core/models.py @@ -4,6 +4,7 @@ from django.dispatch import receiver from rest_framework.authtoken.models import Token from django.core.exceptions import ValidationError +from django.utils.translation import ugettext_lazy as _ User = get_user_model() @@ -16,7 +17,7 @@ class Profile(models.Model): pin = models.PositiveIntegerField(default=1234) created_at = models.DateTimeField(auto_now_add=True ) deleted_at = models.DateTimeField(blank=True,null=True) - user = models.OneToOneField(User, on_delete=models.SET_NULL, null=True, related_name='profile') + user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile') def __str__(self): return f"profile of {self.user.username}" @@ -85,6 +86,6 @@ def clean_fields(self, exclude=None): }) if not self.sender.is_commercial(): raise ValidationError({ - "sender": _("your are not allow to done a transaction you heve a simple account ") + "sender": _("your are not allow to perform the transaction you heve a simple account ") }) diff --git a/src/backend/TransferGo/core/serializers.py b/src/backend/TransferGo/core/serializers.py index 836aa28..97610b9 100644 --- a/src/backend/TransferGo/core/serializers.py +++ b/src/backend/TransferGo/core/serializers.py @@ -62,16 +62,23 @@ class Meta: 'required': True, }, 'pin': { - 'write_only': True, + 'read_only': True, }, + 'deleted_at': { + 'read_only': True, + } } def create(self, validated_data): user = validated_data.pop('user') + print(user) serializer = UserSerializer(data=user) serializer.is_valid(raise_exception=True) user_instance = serializer.save() + user_instance.set_password(user_instance.password) + user_instance.save() + print(user_instance.password) validated_data['user'] = user_instance profile = Profile(**validated_data) @@ -87,6 +94,15 @@ class ProfileSerializer(serializers.ModelSerializer): class Meta: model = Profile fields = '__all__' + extra_kwargs = { + 'pin': { + 'write_only': True, + }, + 'deleted_at': { + 'write_only': True, + } + + } class AccountSerializer(serializers.ModelSerializer): @@ -112,7 +128,8 @@ class Meta: }, 'receiver': { 'read_only': True, - } + }, + } def create(self, validated_data): diff --git a/src/backend/TransferGo/core/tests.py b/src/backend/TransferGo/core/tests.py index 7ce503c..b946040 100644 --- a/src/backend/TransferGo/core/tests.py +++ b/src/backend/TransferGo/core/tests.py @@ -1,3 +1,278 @@ +import json + from django.test import TestCase +from django.urls import include, path, reverse +from .models import * +from rest_framework import status +from rest_framework.test import APITestCase, URLPatternsTestCase + + +class Tests(APITestCase, URLPatternsTestCase): + urlpatterns = [ + path('api/', include('core.urls')), + ] + + def test_get_account(self): + """self.client.credentials(HTTP_AUTHORIZATION=f"token {token}")""" + response = self.client.get('account/', format='json') + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(len(response.data), 1) + + +class AccounTestCase(APITestCase): + + def setUp(self): + """Here we create the user account immediately when the test scripts are lanched""" + self.user1 = json.loads(self.create_user().content) + self.user2 = json.loads(self.create_user1().content) + + self.token1 = json.loads(self.get_token({ + 'username': 'ivantom', + 'password': '1234' + }).content)['Token'] + self.token2 = json.loads(self.get_token({ + 'username': 'ivantom1', + 'password': '1234' + }).content)['Token'] + + def create_user(self): + data = { + "user": { + "username": "ivantom", + "first_name": "navi", + "last_name": "test", + "email": "test@gmail1.com", + "password": "1234" + }, + "phone": '650039773', + "birthday": '2022-1-1', + "adress": "nkolmesseng", + "pin": '0000' + } + + response = self.client.post('/api/profile/', data) + + return response + + def create_user1(self): + data = { + "user": { + "username": "ivantom1", + "first_name": "navi", + "last_name": "test", + "email": "test@gmail.com", + "password": "1234" + }, + "phone": '620284228', + "birthday": '2022-1-1', + "adress": "nkolmesseng", + "pin": '0000' + } + + response = self.client.post('/api/profile/', data) + + return response + + def test_display_user(self): + """This test case just check if the username created corresponds to ivantom""" + + self.assertEquals(self.user1['user']['username'], "ivantom") + + def get_token(self, data: dict): + # data = { + # 'username':'ivantom', + # 'password':'1234' + # } + response = self.client.post('/api/auth/sing_in/', data) + return response + + def test_login(self): + """ + Here we are gong to test if the user can login successfully + The request must return a status cde of 200 other wise the authentication + was not successfull + """ + data = { + 'username': 'ivantom', + 'password': '1234' + } + response = self.client.post('/api/auth/sing_in/', data) + + # token = json.loads(response.content)['Token'] + + self.assertEquals(response.status_code, 200) + + def get_user1_account_info(self): + self.client.credentials(HTTP_AUTHORIZATION=f"token {self.token1}") + + response = self.client.get('/api/account/') + + return json.loads(response.content)[0] + + def get_user2_account_info(self): + self.client.credentials(HTTP_AUTHORIZATION=f"token {self.token2}") + + response = self.client.get('/api/account/') + + return json.loads(response.content)[0] + + def test_get_account_info(self): + """ + This test case if just to display the user account and check if the account balance + is empty + """ + token = json.loads(self.get_token({ + 'username': 'ivantom', + 'password': '1234' + }).content)['Token'] + + self.client.credentials(HTTP_AUTHORIZATION=f"token {token}") + + response = self.client.get('/api/account/') + # data = json.loads(response.content) + + # self.assertEquals(data[0]['balance'],0,'The account balance must be empty') + self.assertEquals(response.status_code, 200, 'Passed') + + def test_set_account_balance_of_user1_to_5000(self): + # print(self.token1) + self.client.credentials(HTTP_AUTHORIZATION=f"token {self.token1}") + + response = self.client.get('/api/account/') + data = json.loads(response.content)[0] + # print(response) + + response = self.client.patch('/api/account/{}/'.format(data['id']), {'balance': 5000}) + data = json.loads(response.content) + # print(response.content) + self.assertEquals(response.status_code, 200, 'Passed') + self.assertEquals(data['balance'], 5000, "The balance must be 5000") + + def test_set_account_balance_of_user2_to_10000(self): + # print(self.token1) + self.client.credentials(HTTP_AUTHORIZATION=f"token {self.token2}") + + response = self.client.get('/api/account/') + data = json.loads(response.content)[0] + + # print(response) + + response = self.client.patch('/api/account/{}/'.format(data['id']), {'balance': 10000}) + data = json.loads(response.content) + # print(response.content) + self.assertEquals(response.status_code, 200, 'Passed') + self.assertEquals(data['balance'], 10000, "The balance must be 5000") + + def update_users_account(self, balance1: int = 5000, balance2: int = 10000): + self.client.credentials(HTTP_AUTHORIZATION=f"token {self.token1}") + + response = self.client.get('/api/account/') + data = json.loads(response.content)[0] + # print(response) + + response = self.client.patch('/api/account/{}/'.format(data['id']), {'balance': balance1}) + + self.client.credentials(HTTP_AUTHORIZATION=f"token {self.token2}") + + response = self.client.get('/api/account/') + data = json.loads(response.content)[0] + + # print(response) + + response = self.client.patch('/api/account/{}/'.format(data['id']), {'balance': balance2}) + + def test_transfer_money_from_user1_to_user2(self): + self.update_users_account() + # Set user's 1 token in the request headers + self.client.credentials(HTTP_AUTHORIZATION=f"token {self.token1}") + + response = self.client.get('/api/account/') + user_1_account_data = json.loads(response.content)[0] + + # print(user_1_account_data) + + # Set user's 2 token in the request headers + + self.client.credentials(HTTP_AUTHORIZATION=f"token {self.token2}") + + response = self.client.get('/api/account/') + user_2_account_data = json.loads(response.content)[0] + + # print(user_2_account_data) + + # Resetting user's 1 token in the request headers + self.client.credentials(HTTP_AUTHORIZATION=f"token {self.token1}") + + # Transaction data + # print(self.user2) + data = { + "amount": 1000, + "type": "transfert", + "number": self.user2['phone'] + } + + response = self.client.post('/api/transactions/', data) + + transaction_data = json.loads(response.content) + + print(transaction_data) + + self.assertEquals(response.status_code, 201, "Transaction must be successfull") + + self.assertEquals(transaction_data['sender'], user_1_account_data['id'], "The account id must be equal") + + self.assertEquals(transaction_data['receiver'], user_2_account_data['id'], "The user id must be equal") + + # print(self.get_user1_account_info()) + # print(self.get_user2_account_info()) + + self.assertEquals(self.get_user2_account_info()['balance'], user_2_account_data['balance'] + 1000, + "The account balance must be 11000") + + def test_transfer_money_from_user1_to_user2_show_return_an_error(self): + self.update_users_account(balance1=200, balance2=400) + # Set user's 1 token in the request headers + self.client.credentials(HTTP_AUTHORIZATION=f"token {self.token1}") + + response = self.client.get('/api/account/') + user_1_account_data = json.loads(response.content)[0] + + print(user_1_account_data) + + # Set user's 2 token in the request headers + + self.client.credentials(HTTP_AUTHORIZATION=f"token {self.token2}") + + response = self.client.get('/api/account/') + user_2_account_data = json.loads(response.content)[0] + + # print(user_2_account_data) + + # Resetting user's 1 token in the request headers + self.client.credentials(HTTP_AUTHORIZATION=f"token {self.token1}") + + # Transaction data + # print(self.user2) + data = { + "amount": 100000, + "type": "transfert", + "number": self.user2['phone'] + } + + response = self.client.post('/api/transactions/', data) + + transaction_data = json.loads(response.content) + + print(transaction_data) + + self.assertEquals(response.status_code, 200, "Transaction must be successfull") + + self.assertEquals(transaction_data['detail'], 'your balance is insufficient to complete this transaction') + + # Since the account balance of user 1 is insufficient the account balance must not change + + # print(self.get_user1_account_info()) + # print(self.get_user2_account_info()) -# Create your tests here. + self.assertEquals(self.get_user1_account_info()['balance'], 200) + self.assertEquals(self.get_user2_account_info()['balance'], 400) diff --git a/src/backend/TransferGo/db.sqlite3 b/src/backend/TransferGo/db.sqlite3 index 13b3d29..680d3db 100644 Binary files a/src/backend/TransferGo/db.sqlite3 and b/src/backend/TransferGo/db.sqlite3 differ diff --git a/src/backend/TransferGo/pytest.ini b/src/backend/TransferGo/pytest.ini new file mode 100644 index 0000000..6f9e438 --- /dev/null +++ b/src/backend/TransferGo/pytest.ini @@ -0,0 +1,3 @@ +[pytest] +DJANGO_SETTINGS_MODULE = TransferGo.settings +python_files = tests.py test_*.py *_tests.py diff --git a/src/backend/TransferGo/requirements.txt b/src/backend/TransferGo/requirements.txt index 4190474..55f0412 100644 --- a/src/backend/TransferGo/requirements.txt +++ b/src/backend/TransferGo/requirements.txt @@ -4,6 +4,8 @@ charset-normalizer==2.1.1 coreapi==2.3.3 coreschema==0.0.4 Django==3.2.15 +django-cors-headers==3.13.0 +django-filter==22.1 djangorestframework==3.13.1 drf-yasg==1.21.3 idna==3.4 @@ -25,3 +27,5 @@ sqlparse==0.4.3 typing_extensions==4.3.0 uritemplate==4.1.1 urllib3==1.26.12 +pytest==7.2.0 +pytest-django==4.5.2 diff --git a/src/frontend/react_native_frontend/App.js b/src/frontend/react_native_frontend/App.js index 28b246d..7057474 100644 --- a/src/frontend/react_native_frontend/App.js +++ b/src/frontend/react_native_frontend/App.js @@ -1,17 +1,13 @@ import { StatusBar } from "expo-status-bar"; import React from "react"; -import { NavigationContainer } from "@react-navigation/native" - -// navigation -import AuthStack from './navigation/AuthStack'; -import AppStack from './navigation/AppStack'; +import AppNav from './navigation/AppNav'; +import { AuthProvider } from "./context/AuthContext"; export default function App() { - return ( - - - {/* + + + + ); } \ No newline at end of file diff --git a/src/frontend/react_native_frontend/Config.jsx b/src/frontend/react_native_frontend/Config.jsx new file mode 100644 index 0000000..e730959 --- /dev/null +++ b/src/frontend/react_native_frontend/Config.jsx @@ -0,0 +1 @@ +export const BASE_URL = 'http://172.20.10.4:8000/api'; \ No newline at end of file diff --git a/src/frontend/react_native_frontend/README.md b/src/frontend/react_native_frontend/README.md index 5122317..7daefdf 100644 --- a/src/frontend/react_native_frontend/README.md +++ b/src/frontend/react_native_frontend/README.md @@ -17,4 +17,5 @@ ``` - Go to playstore an download the expo client app + - scan the QRCode in the console with the expo client app and the result will be display in the app diff --git a/src/frontend/react_native_frontend/app.json b/src/frontend/react_native_frontend/app.json index 9aee0b7..ac0a5ec 100644 --- a/src/frontend/react_native_frontend/app.json +++ b/src/frontend/react_native_frontend/app.json @@ -18,13 +18,15 @@ "**/*" ], "ios": { - "supportsTablet": true + "supportsTablet": true, + "bundleIdentifier": "com.anonymous.project1" }, "android": { "adaptiveIcon": { "foregroundImage": "./assets/adaptive-icon.png", "backgroundColor": "#FFFFFF" - } + }, + "package": "com.anonymous.project1" }, "web": { "favicon": "./assets/favicon.png" diff --git a/src/frontend/react_native_frontend/components/.List.jsx.swp b/src/frontend/react_native_frontend/components/.List.jsx.swp new file mode 100644 index 0000000..9ac7ac7 Binary files /dev/null and b/src/frontend/react_native_frontend/components/.List.jsx.swp differ diff --git a/src/frontend/react_native_frontend/components/CustomButton.jsx b/src/frontend/react_native_frontend/components/CustomButton.jsx index af3f1dd..3f24ce9 100644 --- a/src/frontend/react_native_frontend/components/CustomButton.jsx +++ b/src/frontend/react_native_frontend/components/CustomButton.jsx @@ -3,16 +3,13 @@ import React from "react"; export default function CustomButton({label, onPress}) { return ( - + {label} - ) + + ) } const styles = StyleSheet.create({ - icon: { width: 200, height: 200, diff --git a/src/frontend/react_native_frontend/components/CustomDrawer.jsx b/src/frontend/react_native_frontend/components/CustomDrawer.jsx index 616886f..e95abc5 100644 --- a/src/frontend/react_native_frontend/components/CustomDrawer.jsx +++ b/src/frontend/react_native_frontend/components/CustomDrawer.jsx @@ -1,18 +1,43 @@ -import React from "react"; +import React, { useContext } from "react"; import { View, Text } from "react-native"; import { DrawerContentScrollView, DrawerItemList } from "@react-navigation/drawer"; import MaterialIcons from "react-native-vector-icons/MaterialIcons"; import { TouchableOpacity } from "react-native-gesture-handler"; - +import { AuthContext } from "../context/AuthContext"; export default function CustomDrawer(props) { + const {userInfo} = useContext(AuthContext); + const {logout} = useContext(AuthContext); + let letter = userInfo.profile.user.username[0]; + letter = letter.toUpperCase(); return( - - + + + + {letter} + + + + + + + - {}} style={{paddingVertical: 15}}> + {alert('About the evelopment team:\nRonan(frontend, Design)\nBrown(backend)\nIvan(backend, Test)\nAgnès(Design)')}} style={{paddingVertical: 15}}> @@ -21,7 +46,7 @@ export default function CustomDrawer(props) { - {}} style={{paddingVertical: 15}}> + {logout()}} style={{paddingVertical: 15}}> @@ -31,6 +56,5 @@ export default function CustomDrawer(props) { - ) } \ No newline at end of file diff --git a/src/frontend/react_native_frontend/components/Header.jsx b/src/frontend/react_native_frontend/components/Header.jsx index d87b32b..7527fa7 100644 --- a/src/frontend/react_native_frontend/components/Header.jsx +++ b/src/frontend/react_native_frontend/components/Header.jsx @@ -2,13 +2,13 @@ import { View,Text, TouchableOpacity, StyleSheet } from "react-native"; import React from "react"; import MaterialIcons from "react-native-vector-icons/MaterialIcons"; -export default function Header({label, onPress}) { +export default function Header({label, ...navigation}) { return ( {label} - + {navigation.openDrawer()}}> diff --git a/src/frontend/react_native_frontend/components/InputField.jsx b/src/frontend/react_native_frontend/components/InputField.jsx index 5f203a5..2495e22 100644 --- a/src/frontend/react_native_frontend/components/InputField.jsx +++ b/src/frontend/react_native_frontend/components/InputField.jsx @@ -1,7 +1,16 @@ import { StyleSheet, View, Text, TextInput, TouchableOpacity } from "react-native"; import React from "react"; -export default function InputField({label, icon, inputType, keyboardType, fieldButtonLabel, fieldButtonfunction}) { +export default function InputField({ + label, + icon, + inputType, + keyboardType, + fieldButtonLabel, + fieldButtonfunction, + value, + onChangeText, +}) { return ( @@ -12,12 +21,16 @@ export default function InputField({label, icon, inputType, keyboardType, fieldB keyboardType={keyboardType} style={styles.inputText} secureTextEntry={true} + value={value} + onChangeText={onChangeText} /> ) : ( )} @@ -25,14 +38,11 @@ export default function InputField({label, icon, inputType, keyboardType, fieldB {fieldButtonLabel} - - ) } const styles = StyleSheet.create({ - loginText: { fontSize: 28, fontWeight: '500', diff --git a/src/frontend/react_native_frontend/components/List.jsx b/src/frontend/react_native_frontend/components/List.jsx new file mode 100644 index 0000000..070ec05 --- /dev/null +++ b/src/frontend/react_native_frontend/components/List.jsx @@ -0,0 +1,74 @@ +import React, { useContext } from "react"; +import { View, Text, StyleSheet, ScrollView, Touchable } from "react-native"; +import { AuthContext } from "../context/AuthContext"; + +const List = () => { + const {userTransactionList} = useContext(AuthContext); + const {DeleteTransaction} = useContext(AuthContext); + let data = userTransactionList; + const listItems = data.map( + (element) => { + let date = element.date.substring(0,10); + date = date.split("-").reverse().join("-"); + let time = element.date.substring(11,19); + return( + + + {element.amount} FCFA + + {element.sender} + + {date} + at {time} + + + ) + } + ) + + return( + + + Amount + SenderId + Date + + + + {listItems} + + + + + ) + + +} + +export default List; + +const styles = StyleSheet.create({ + elt: { + alignItems: "center", + flexDirection: 'row', + justifyContent: 'space-between', + padding: 15, + backgroundColor: '#ccc', + borderRadius: 10, + marginTop: 10, + marginLeft: 10, + marginRight: 10, + }, + head: { + backgroundColor: "#2137B2", + marginTop: 10, + color: "#fff", + alignItems: "center", + justifyContent: "space-between", + flexDirection: "row", + padding: 20, + marginLeft: 10, + marginRight: 10, + borderRadius: 10, + } +}) \ No newline at end of file diff --git a/src/frontend/react_native_frontend/context/AuthContext.jsx b/src/frontend/react_native_frontend/context/AuthContext.jsx index d2541b6..3a11987 100644 --- a/src/frontend/react_native_frontend/context/AuthContext.jsx +++ b/src/frontend/react_native_frontend/context/AuthContext.jsx @@ -1,11 +1,260 @@ -import React, { createContext } from "react"; +import React, { createContext, useState, useEffect } from "react"; +import AsyncStorage from "@react-native-async-storage/async-storage"; +import { BASE_URL } from "../Config"; -export const AuthContext = createContext() +export const AuthContext = createContext(); +export const AuthProvider = ({children }) => { + const [isLoading, setIsLoading] = useState(true); + const [userToken, setUserToken] = useState(null); + const [userInfo, setUserInfo] = useState(null); + const [userAccount, setUserAccount] = useState(null); + const [userTransactionList, setUserTransactionList] = useState(null); -const AuthProvider = () => { - return( - + const login = async(username, password) => { + let data = JSON.stringify({username, password}) + setIsLoading(true); + + const userInfo = await fetch(`${BASE_URL}/auth/sing_in/`, { + method: 'POST', + headers: { + 'Content-type': 'application/json' + }, + body: data + }) + .then(function(response){ + return response.json() + }) + .catch(error => {console.log("myy error is a "+error); alert("Either user name or password are incorrect, account doesn't exist")}) + + if(userInfo){ + setUserInfo(userInfo); + setUserToken(userInfo.Token) + + AsyncStorage.setItem('userInfo', JSON.stringify(userInfo)) + AsyncStorage.setItem('userToken', userInfo.Token) + var token = "token " + userInfo.Token; + } + + const userAccountInfo = await fetch(`${BASE_URL}/account/`, { + method: 'GET', + headers: { + 'Content-type': 'application/json', + 'Authorization' : token + } + }) + .then(function(response){ + return response.json() + }) + .catch(error => {console.log("My error "+error)}) + + if(userInfo){ + const userAccount = userAccountInfo[0]; + + setUserAccount(userAccount); + AsyncStorage.setItem('userAccount', JSON.stringify(userAccount)) + } + + const userTransactionList = await fetch(`${BASE_URL}/transactions/`, { + method: 'GET', + headers: { + 'Content-type': 'application/json', + 'Authorization' : token + } + }) + .then(function(response){ + return response.json() + }) + .catch(error => {console.log("my "+error)}); + + if(userInfo){ + setUserTransactionList(userTransactionList); + AsyncStorage.setItem('userTransactionList', JSON.stringify(userTransactionList)); + } + + setIsLoading(false); + } + + const listRefresh = async(token) => { + AsyncStorage.removeItem('userTransactionList'); + + const userTransactionList = await fetch(`${BASE_URL}/transactions/`, { + method: 'GET', + headers: { + 'Content-type': 'application/json', + 'Authorization' : token + } + }) + .then(function(response){ + return response.json() + }) + .catch(error => {console.log("my "+error)}); + + setUserTransactionList(userTransactionList); + AsyncStorage.setItem('userTransactionList', JSON.stringify(userTransactionList)); + } + + const accountRefresh = async(token) => { + AsyncStorage.removeItem('userAccount'); + + const userAccountInfo = await fetch(`${BASE_URL}/account/`, { + method: 'GET', + headers: { + 'Content-type': 'application/json', + 'Authorization' : token + } + }) + .then(function(response){ + return response.json() + }) + .catch(error => {console.log("My error "+error)}) + + const userAccount = userAccountInfo[0]; + AsyncStorage.removeItem('userAccount'); + + setUserAccount(userAccount); + AsyncStorage.setItem('userAccount', JSON.stringify(userAccount)) + } + const logout = (username, password) => { + setIsLoading(true); + setUserToken(null); + AsyncStorage.removeItem('userInfo'); + AsyncStorage.removeItem('userToken'); + AsyncStorage.removeItem('userAccount'); + AsyncStorage.removeItem('userTransactionList'); + + setIsLoading(false); + } + + const isLoggedIn = async() => { + try { + setIsLoading(true); + let userInfo = await AsyncStorage.getItem('userInfo'); + let userToken = await AsyncStorage.getItem('userToken'); + let userAccount = await AsyncStorage.getItem('userAccount'); + let userTransactionList = await AsyncStorage.getItem('userTransactionList'); + + userInfo = JSON.parse(userInfo); + userAccount = JSON.parse(userAccount); + userTransactionList = JSON.parse(userTransactionList); + + if(userInfo) { + setUserToken(userToken); + setUserInfo(userInfo); + setUserAccount(userAccount); + setUserTransactionList(userTransactionList); + } + setIsLoading(false); + } catch(e) { + console.log(`isLogged in error ${e}`) + } + + } + + const register = (username, first_name, last_name, email, password1, phone, birthday, adress) => { + //var validPass = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/; + + birthday = birthday.split("/").reverse().join("-"); + let d = { + "user":{ + "username":username, + "first_name":first_name, + "last_name":last_name, + "email":email, + "password":password1 + }, + "phone":phone, + "birthday":birthday, + "adress":adress + } + let data = JSON.stringify(d) + + fetch(`${BASE_URL}/profile/`, { + method: 'POST', + headers: { + 'Content-type': 'application/json' + }, + body: data + }) + .then(function(response) { + return response.json() + }) + .then(function(data){ + let userRegInfo = data + console.log(userRegInfo) + }) + .catch(function(error){ + console.log(error); + }) + } + + const transfer = async (amount, type, number) => { + let token = "token " + userInfo.Token; + let d = { + "amount":amount, + "type":type, + "number":number + } + let data = JSON.stringify(d); + + const transferInfo = await fetch(`${BASE_URL}/transactions/`, { + method: 'POST', + headers: { + 'Content-type': 'application/json', + 'Authorization' : token + }, + body:data + }) + .then(function(response) { + return response.json(); + }) + .catch(function(error){ + console.log(error); + }) + + if(transferInfo.id) { + accountRefresh(token); + listRefresh(token); + alert("Transaction completed\n Amount : "+amount+"\nTo : "+number) + }else { + console.log(userInfo.token) + alert('An error occured') + } + } + + const changePassword = async (old_password, new_password, confirm_password) => { + let token = "token " + userInfo.Token; + let data = JSON.stringify({old_password, new_password, confirm_password}); + + const changePasswordInfo = await fetch(`${BASE_URL}/auth/update_password/`, { + method: "POST", + headers: { + 'Content-type': 'application/json', + 'Authorization' : token + }, + body:data + }) + .then(function(response){ + return response.json(); + }) + .catch(function(error){ + console.log(error); + }) + + if(changePasswordInfo.detail == "password successfully updated") { + alert("Password successfully updated"); + }else { + alert("An error occured, please retry"); + } + } + + useEffect(() => { + isLoggedIn(); + }, []); + + return( + + {children} ); } \ No newline at end of file diff --git a/src/frontend/react_native_frontend/html.html b/src/frontend/react_native_frontend/html.html new file mode 100644 index 0000000..ae0c3f9 --- /dev/null +++ b/src/frontend/react_native_frontend/html.html @@ -0,0 +1,29 @@ + + + + Fetch API + + +
+

Fetch API GET REQUEST

+

Fetching Users

+ +

+

+ +

+

+

+ +

+ +

+ + +
+ + + + + + \ No newline at end of file diff --git a/src/frontend/react_native_frontend/index.js b/src/frontend/react_native_frontend/index.js new file mode 100644 index 0000000..1d6e981 --- /dev/null +++ b/src/frontend/react_native_frontend/index.js @@ -0,0 +1,8 @@ +import { registerRootComponent } from 'expo'; + +import App from './App'; + +// registerRootComponent calls AppRegistry.registerComponent('main', () => App); +// It also ensures that whether you load the app in Expo Go or in a native build, +// the environment is set up appropriately +registerRootComponent(App); diff --git a/src/frontend/react_native_frontend/main.js b/src/frontend/react_native_frontend/main.js new file mode 100644 index 0000000..21cdc3d --- /dev/null +++ b/src/frontend/react_native_frontend/main.js @@ -0,0 +1,108 @@ +let username = "wilbrown" +let password = "D@rkness1234" +let first_name = "ronan" +let last_name = "teyou" +let email ="teyouronan@gmail.com" +let phone = "696715846" +let birthday = "2002/08/15" +let adress = "odza" + +const login = async(username, password) => { + let data = JSON.stringify({username, password}) + + const userInfo = await fetch(`http://0.0.0.0:8000/api/auth/sing_in/`, { + method: 'POST', + headers: { + 'Content-type': 'application/json' + }, + body: data + }) + .then(function(response){ + return response.json() + }) + .catch(error => {console.log(error)}) + + let usr = userInfo.profile.user.username; + let mail = userInfo.profile.user.email; + let phone = userInfo.profile.phone ; + document.getElementById("name").innerHTML = usr; + document.getElementById("email").innerHTML = mail; + document.getElementById("phone").innerHTML = phone; + + const token = "token " + userInfo.Token; + const userAccountInfo = await fetch(`http://0.0.0.0:8000/api/account/`, { + method: 'GET', + headers: { + 'Content-type': 'application/json', + 'Authorization' : token + } + }) + .then(function(response){ + return response.json() + }) + .catch(error => {console.log(error)}) + + let userAccount = userAccountInfo[0]; + let me = userAccount.balance; + document.getElementById("me").innerHTML = me; + + /* + let amount = 1000; + let type = "transfert"; //transfer, withdraw + let number = 697667213; + + let d = { + "amount":amount, + "type":type, + "number":number + } + let dat = JSON.stringify(d); + + const transferInfo = await fetch(`http://0.0.0.0:8000/api/transactions/`, { + method: 'POST', + headers: { + 'Content-type': 'application/json', + 'Authorization': token + }, + body: dat + }) + .then(function(response) { + return response.json(); + }) + .catch(function(error){ + console.log("this is my error " +error); + }) + + console.log(transferInfo);*/ + + //document.getElementById("id").innerHTML = met; + +} + +login(username, password); + + +/*let user = JSON.stringify({username, first_name, last_name, email, password}); +let data = JSON.stringify({user, phone, birthday, adress}); + +let d = { + user:user, + phone:phone +} + +let o = { + "user":{ + "username":username, + "first_name":first_name, + "last_name":last_name, + "email":"teyouronan@gmail.com", + "password":"terb1234" + }, + "phone":"696715846", + "birthday":"22-08-2002", + "adress":"odza" + } + document.getElementById("name").innerHTML = o; + console.log(o.user.username) +*/ + diff --git a/src/frontend/react_native_frontend/metro.config.js b/src/frontend/react_native_frontend/metro.config.js new file mode 100644 index 0000000..9430b0f --- /dev/null +++ b/src/frontend/react_native_frontend/metro.config.js @@ -0,0 +1,4 @@ +// Learn more https://docs.expo.io/guides/customizing-metro +const { getDefaultConfig } = require('expo/metro-config'); + +module.exports = getDefaultConfig(__dirname); diff --git a/src/frontend/react_native_frontend/navigation/AppNav.jsx b/src/frontend/react_native_frontend/navigation/AppNav.jsx new file mode 100644 index 0000000..7998709 --- /dev/null +++ b/src/frontend/react_native_frontend/navigation/AppNav.jsx @@ -0,0 +1,24 @@ +import React, { useContext } from "react"; +import { View, ActivityIndicator } from "react-native"; +import { NavigationContainer } from '@react-navigation/native'; +import AuthStack from './AuthStack'; +import AppStack from './AppStack'; +import { AuthContext } from "../context/AuthContext"; + +function AppNav() { + const { isLoading, userToken } = useContext(AuthContext); + if(isLoading) { + return( + + + + ); + } + return( + + {userToken !== null ? : } + + ) +} + +export default AppNav; diff --git a/src/frontend/react_native_frontend/navigation/AppStack.jsx b/src/frontend/react_native_frontend/navigation/AppStack.jsx index f9637b1..d3f9216 100644 --- a/src/frontend/react_native_frontend/navigation/AppStack.jsx +++ b/src/frontend/react_native_frontend/navigation/AppStack.jsx @@ -1,38 +1,48 @@ -import { StatusBar } from "expo-status-bar"; -import { NavigationContainer } from "@react-navigation/native"; -import { createNativeStackNavigator } from "@react-navigation/native-stack"; -import { createBottomTabNavigator } from "@react-navigation/bottom-tabs"; import { SafeAreaView, Platform } from "react-native"; import { createDrawerNavigator } from "@react-navigation/drawer"; -import 'react-native-gesture-handler'; - +import MaterialIcons from "react-native-vector-icons/MaterialIcons"; +import { createNativeStackNavigator } from "@react-navigation/native-stack"; import CustomDrawer from "../components/CustomDrawer"; -import ProfilScreen from "../screens/ProfilScreen"; -import TransferScreen from "../screens/TransferScreen"; import SettingScreen from "../screens/SettingScreen"; -import AccountScreen from "../screens/AccountScreen"; import HelpScreen from "../screens/HelpScreen"; - import TabNavigator from "./TabNavigation"; const Drawer = createDrawerNavigator(); - +const Stack = createNativeStackNavigator(); export default function App() { return ( <> - - - } screenOptions={{headerShown: false}}> - - - - - + } + screenOptions={{ + headerShown: false, + drawerActiveBackgroundColor: "#2137B2", + drawerActiveTintColor: "#fff", + drawerInactiveTintColor: "#555", + drawerLabelStyle: { + marginLeft: -20, + fontSize: 15 + }}}> + ( + + ) + }} /> + ( + + ) + }} /> + ( + + ) + }} /> + ); diff --git a/src/frontend/react_native_frontend/navigation/AuthStack.jsx b/src/frontend/react_native_frontend/navigation/AuthStack.jsx index 987c51c..79c1507 100644 --- a/src/frontend/react_native_frontend/navigation/AuthStack.jsx +++ b/src/frontend/react_native_frontend/navigation/AuthStack.jsx @@ -1,17 +1,11 @@ -import { StatusBar } from "expo-status-bar"; import React from "react"; import { createNativeStackNavigator } from "@react-navigation/native-stack"; - -// screens import StartScreen from "../screens/StartScreen"; import LoginScreen from "../screens/LoginScreen"; import RegisterScreen from "../screens/RegisterScreen"; -import ProfilScreen from "../screens/ProfilScreen"; const Stack = createNativeStackNavigator(); - const AuthStack = () => { - return ( { component={RegisterScreen} name="Register" /> - ); }; diff --git a/src/frontend/react_native_frontend/navigation/TabNavigation.jsx b/src/frontend/react_native_frontend/navigation/TabNavigation.jsx index 42ecb87..d27ad82 100644 --- a/src/frontend/react_native_frontend/navigation/TabNavigation.jsx +++ b/src/frontend/react_native_frontend/navigation/TabNavigation.jsx @@ -3,9 +3,10 @@ import { createBottomTabNavigator } from "@react-navigation/bottom-tabs"; import MaterialIcons from "react-native-vector-icons/MaterialIcons"; import ProfilScreen from "../screens/ProfilScreen"; -import TransferScreen from "../screens/TransferScreen"; import AccountScreen from "../screens/AccountScreen"; import MessageScreen from "../screens/MessageScreen"; +import Transactions from "../screens/Transactions"; +import Accountmanager from "../screens/AccountManager"; const Tab = createBottomTabNavigator(); @@ -14,7 +15,7 @@ export default function TabNavigator() { ( @@ -42,7 +43,7 @@ export default function TabNavigator() { ( diff --git a/src/frontend/react_native_frontend/package-lock.json b/src/frontend/react_native_frontend/package-lock.json index def25b1..709aea2 100644 --- a/src/frontend/react_native_frontend/package-lock.json +++ b/src/frontend/react_native_frontend/package-lock.json @@ -1,31 +1,38 @@ { - "name": "project1", + "name": "transfergo", "version": "1.0.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "project1", + "name": "transfergo", "version": "1.0.0", "dependencies": { - "@expo/webpack-config": "^0.17.0", - "@react-native-community/datetimepicker": "6.2.0", + "@expo/webpack-config": "^0.17.2", + "@react-native-async-storage/async-storage": "~1.17.3", + "@react-native-community/datetimepicker": "6.5.2", + "@react-native-picker/picker": "2.4.8", "@react-navigation/bottom-tabs": "^6.4.0", "@react-navigation/drawer": "^6.5.6", "@react-navigation/native": "^6.0.14", "@react-navigation/native-stack": "^6.9.2", - "expo": "~46.0.16", - "expo-status-bar": "~1.4.0", + "axios": "^1.2.1", + "expo": "^47.0.0", + "expo-dev-client": "~2.0.1", + "expo-splash-screen": "~0.17.5", + "expo-status-bar": "~1.4.2", "material-icons-react": "^1.0.4", - "react": "18.0.0", - "react-dom": "18.0.0", - "react-native": "0.69.6", + "react": "18.1.0", + "react-dom": "18.1.0", + "react-native": "0.70.5", "react-native-date-picker": "^4.2.6", - "react-native-gesture-handler": "~2.5.0", + "react-native-gesture-handler": "~2.8.0", + "react-native-material-dropdown": "^0.11.1", "react-native-paper": "^5.0.0-rc.9", - "react-native-reanimated": "~2.9.1", - "react-native-safe-area-context": "^4.3.1", - "react-native-screens": "~3.15.0", + "react-native-reanimated": "~2.12.0", + "react-native-safe-area-context": "4.4.1", + "react-native-screens": "~3.18.0", + "react-native-select-dropdown": "^3.2.1", "react-native-vector-icons": "^9.2.0", "react-native-web": "~0.18.7" }, @@ -57,9 +64,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.4.tgz", - "integrity": "sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw==", + "version": "7.20.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz", + "integrity": "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==", "engines": { "node": ">=6.9.0" } @@ -94,11 +101,11 @@ } }, "node_modules/@babel/generator": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.6.tgz", - "integrity": "sha512-oHGRUQeoX1QrKeJIKVe0hwjGqNnVYsM5Nep5zo0uE0m42sLH+Fsd2pStJ5sRM1bNyTUUoz0pe2lTeMJrb/taTA==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz", + "integrity": "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==", "dependencies": { - "@babel/types": "^7.19.4", + "@babel/types": "^7.20.7", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, @@ -143,13 +150,14 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz", - "integrity": "sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", "dependencies": { - "@babel/compat-data": "^7.19.3", + "@babel/compat-data": "^7.20.5", "@babel/helper-validator-option": "^7.18.6", "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", "semver": "^6.3.0" }, "engines": { @@ -159,17 +167,30 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz", - "integrity": "sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.7.tgz", + "integrity": "sha512-LtoWbDXOaidEf50hmdDqn9g8VEzsorMexoWMQdQODbvmqYmaF23pBP5VNPAGIFHsFQCIeKokDiz3CH5Y2jlY6w==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-function-name": "^7.19.0", - "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.20.7", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-replace-supers": "^7.20.7", "@babel/helper-split-export-declaration": "^7.18.6" }, "engines": { @@ -253,11 +274,11 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", - "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz", + "integrity": "sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==", "dependencies": { - "@babel/types": "^7.18.9" + "@babel/types": "^7.20.7" }, "engines": { "node": ">=6.9.0" @@ -275,18 +296,18 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.6.tgz", - "integrity": "sha512-fCmcfQo/KYr/VXXDIyd3CBGZ6AFhPFy1TfSEJ+PilGVlQT6jcbqtHAM4C1EciRqMza7/TpOUZliuSH+U6HAhJw==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", + "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.19.4", + "@babel/helper-simple-access": "^7.20.2", "@babel/helper-split-export-declaration": "^7.18.6", "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.6", - "@babel/types": "^7.19.4" + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.10", + "@babel/types": "^7.20.7" }, "engines": { "node": ">=6.9.0" @@ -304,9 +325,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz", - "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", "engines": { "node": ">=6.9.0" } @@ -329,37 +350,38 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", - "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz", + "integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==", "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.20.7", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.19.1", - "@babel/types": "^7.19.0" + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.7", + "@babel/types": "^7.20.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz", - "integrity": "sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", "dependencies": { - "@babel/types": "^7.19.4" + "@babel/types": "^7.20.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", - "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", "dependencies": { - "@babel/types": "^7.18.9" + "@babel/types": "^7.20.0" }, "engines": { "node": ">=6.9.0" @@ -441,9 +463,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.6.tgz", - "integrity": "sha512-h1IUp81s2JYJ3mRkdxJgs4UvmSsRvDrx5ICSJbPvtWYv5i1nTBGcBpnog+89rAFMwvvru6E5NUHdBe01UeSzYA==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz", + "integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==", "bin": { "parser": "bin/babel-parser.js" }, @@ -466,13 +488,13 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", - "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz", + "integrity": "sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-proposal-optional-chaining": "^7.18.9" + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-proposal-optional-chaining": "^7.20.7" }, "engines": { "node": ">=6.9.0" @@ -482,12 +504,12 @@ } }, "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.1.tgz", - "integrity": "sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", + "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/helper-remap-async-to-generator": "^7.18.9", "@babel/plugin-syntax-async-generators": "^7.8.4" }, @@ -514,12 +536,12 @@ } }, "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", - "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.20.7.tgz", + "integrity": "sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ==", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, "engines": { @@ -530,13 +552,13 @@ } }, "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.19.6.tgz", - "integrity": "sha512-PKWforYpkVkogpOW0RaPuh7eQ7AoFgBJP+d87tQCRY2LVbvyGtfRM7RtrhCBsNgZb+2EY28SeWB6p2xe1Z5oAw==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.20.7.tgz", + "integrity": "sha512-JB45hbUweYpwAGjkiM7uCyXMENH2lG+9r3G2E+ttc2PRXAoEkpfd/KW5jDg4j8RS6tLtTG1jZi9LbHZVSfs1/A==", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.19.0", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-create-class-features-plugin": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.20.7", "@babel/helper-split-export-declaration": "^7.18.6", "@babel/plugin-syntax-decorators": "^7.19.0" }, @@ -608,11 +630,11 @@ } }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", - "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", + "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { @@ -653,15 +675,15 @@ } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.19.4.tgz", - "integrity": "sha512-wHmj6LDxVDnL+3WhXteUBaoM1aVILZODAUjg11kHqG4cOlfgMQGxw6aCgvrXrmaJR3Bn14oZhImyCPZzRpC93Q==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", "dependencies": { - "@babel/compat-data": "^7.19.4", - "@babel/helper-compilation-targets": "^7.19.3", - "@babel/helper-plugin-utils": "^7.19.0", + "@babel/compat-data": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.18.8" + "@babel/plugin-transform-parameters": "^7.20.7" }, "engines": { "node": ">=6.9.0" @@ -686,12 +708,12 @@ } }, "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", - "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz", + "integrity": "sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { @@ -717,13 +739,13 @@ } }, "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", - "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz", + "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { @@ -849,11 +871,11 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz", - "integrity": "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", + "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.19.0" }, "engines": { "node": ">=6.9.0" @@ -1040,11 +1062,11 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.19.4.tgz", - "integrity": "sha512-934S2VLLlt2hRJwPf4MczaOr4hYF0z+VKPwqTNxyKX7NthTiPfhuKFWQZHXRM0vh/wo/VyXB3s4bZUNA08l+tQ==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.11.tgz", + "integrity": "sha512-tA4N427a7fjf1P0/2I4ScsHGc5jcHPbb30xMbaTke2gxDuWpUfXDuX1FEymJwKk4tuGUvGcejAR6HdZVqmmPyw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -1054,17 +1076,17 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz", - "integrity": "sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz", + "integrity": "sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.19.0", + "@babel/helper-compilation-targets": "^7.20.7", "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-function-name": "^7.19.0", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.20.7", "@babel/helper-split-export-declaration": "^7.18.6", "globals": "^11.1.0" }, @@ -1090,11 +1112,11 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.19.4.tgz", - "integrity": "sha512-t0j0Hgidqf0aM86dF8U+vXYReUgJnlv4bZLsyoPnwZNrGY+7/38o8YjaELrvHeVfTZao15kjR0PVv0nju2iduA==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz", + "integrity": "sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -1221,12 +1243,12 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", - "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz", + "integrity": "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==", "dependencies": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -1252,13 +1274,13 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", - "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz", + "integrity": "sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==", "dependencies": { "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/helper-validator-identifier": "^7.19.1" }, "engines": { @@ -1342,11 +1364,11 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", - "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz", + "integrity": "sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -1430,12 +1452,12 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", - "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", + "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "regenerator-transform": "^0.15.0" + "@babel/helper-plugin-utils": "^7.20.2", + "regenerator-transform": "^0.15.1" }, "engines": { "node": ">=6.9.0" @@ -1594,17 +1616,17 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.4.tgz", - "integrity": "sha512-5QVOTXUdqTCjQuh2GGtdd7YEhoRXBMVGROAtsBeLGIbIz3obCBIfRMT1I3ZKkMgNzwkyCkftDXSSkHxnfVf4qg==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz", + "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==", "dependencies": { - "@babel/compat-data": "^7.19.4", - "@babel/helper-compilation-targets": "^7.19.3", - "@babel/helper-plugin-utils": "^7.19.0", + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/helper-validator-option": "^7.18.6", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-async-generator-functions": "^7.19.1", + "@babel/plugin-proposal-async-generator-functions": "^7.20.1", "@babel/plugin-proposal-class-properties": "^7.18.6", "@babel/plugin-proposal-class-static-block": "^7.18.6", "@babel/plugin-proposal-dynamic-import": "^7.18.6", @@ -1613,7 +1635,7 @@ "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.19.4", + "@babel/plugin-proposal-object-rest-spread": "^7.20.2", "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", "@babel/plugin-proposal-optional-chaining": "^7.18.9", "@babel/plugin-proposal-private-methods": "^7.18.6", @@ -1624,7 +1646,7 @@ "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.18.6", + "@babel/plugin-syntax-import-assertions": "^7.20.0", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", @@ -1637,10 +1659,10 @@ "@babel/plugin-transform-arrow-functions": "^7.18.6", "@babel/plugin-transform-async-to-generator": "^7.18.6", "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.19.4", - "@babel/plugin-transform-classes": "^7.19.0", + "@babel/plugin-transform-block-scoping": "^7.20.2", + "@babel/plugin-transform-classes": "^7.20.2", "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.19.4", + "@babel/plugin-transform-destructuring": "^7.20.2", "@babel/plugin-transform-dotall-regex": "^7.18.6", "@babel/plugin-transform-duplicate-keys": "^7.18.9", "@babel/plugin-transform-exponentiation-operator": "^7.18.6", @@ -1648,14 +1670,14 @@ "@babel/plugin-transform-function-name": "^7.18.9", "@babel/plugin-transform-literals": "^7.18.9", "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.18.6", - "@babel/plugin-transform-modules-commonjs": "^7.18.6", - "@babel/plugin-transform-modules-systemjs": "^7.19.0", + "@babel/plugin-transform-modules-amd": "^7.19.6", + "@babel/plugin-transform-modules-commonjs": "^7.19.6", + "@babel/plugin-transform-modules-systemjs": "^7.19.6", "@babel/plugin-transform-modules-umd": "^7.18.6", "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", "@babel/plugin-transform-new-target": "^7.18.6", "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.18.8", + "@babel/plugin-transform-parameters": "^7.20.1", "@babel/plugin-transform-property-literals": "^7.18.6", "@babel/plugin-transform-regenerator": "^7.18.6", "@babel/plugin-transform-reserved-words": "^7.18.6", @@ -1667,7 +1689,7 @@ "@babel/plugin-transform-unicode-escapes": "^7.18.10", "@babel/plugin-transform-unicode-regex": "^7.18.6", "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.19.4", + "@babel/types": "^7.20.2", "babel-plugin-polyfill-corejs2": "^0.3.3", "babel-plugin-polyfill-corejs3": "^0.6.0", "babel-plugin-polyfill-regenerator": "^0.4.1", @@ -1758,31 +1780,31 @@ } }, "node_modules/@babel/template": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", "dependencies": { "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.6.tgz", - "integrity": "sha512-6l5HrUCzFM04mfbG09AagtYyR2P0B71B1wN7PfSPiksDPz2k5H9CBC1tcZpz2M8OxbKTPccByoOJ22rUKbpmQQ==", + "version": "7.20.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.10.tgz", + "integrity": "sha512-oSf1juCgymrSez8NI4A2sr4+uB/mFd9MXplYGPEBnfAuWmmyeVcHa6xLPiaRBcXkcb/28bgxmQLTVwFKE1yfsg==", "dependencies": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.19.6", + "@babel/generator": "^7.20.7", "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-function-name": "^7.19.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.19.6", - "@babel/types": "^7.19.4", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -1791,9 +1813,9 @@ } }, "node_modules/@babel/types": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.4.tgz", - "integrity": "sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", + "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", "dependencies": { "@babel/helper-string-parser": "^7.19.4", "@babel/helper-validator-identifier": "^7.19.1", @@ -1850,22 +1872,22 @@ } }, "node_modules/@expo/cli": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-0.3.2.tgz", - "integrity": "sha512-P6yogdPCRKaoLjuH7D8jgq6kTzM4gWuQ+vssBPWhbnoymV5AClQOxvACPDHD+biKhvGsaXEQLMoi93lPQzcDlQ==", + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-0.4.10.tgz", + "integrity": "sha512-c8NJOVa5b8g9CYj8ahdaN21cVE2wPwUaFrtTE0kLeRR5ASy8reWLFEOcstEtt6eufdcN/uGgBWQ0FLovgLZuzw==", "dependencies": { "@babel/runtime": "^7.14.0", - "@expo/code-signing-certificates": "^0.0.2", - "@expo/config": "~7.0.1", - "@expo/config-plugins": "~5.0.1", - "@expo/dev-server": "~0.1.120", + "@expo/code-signing-certificates": "0.0.5", + "@expo/config": "~7.0.2", + "@expo/config-plugins": "~5.0.3", + "@expo/dev-server": "0.1.123", "@expo/devcert": "^1.0.0", "@expo/json-file": "^8.2.35", - "@expo/metro-config": "~0.4.0", + "@expo/metro-config": "~0.5.0", "@expo/osascript": "^2.0.31", "@expo/package-manager": "~0.0.53", "@expo/plist": "^0.0.18", - "@expo/prebuild-config": "~5.0.3", + "@expo/prebuild-config": "5.0.7", "@expo/rudder-sdk-node": "1.1.1", "@expo/spawn-async": "1.5.0", "@expo/xcpretty": "^4.2.1", @@ -1886,6 +1908,7 @@ "getenv": "^1.0.0", "graphql": "15.8.0", "graphql-tag": "^2.10.1", + "https-proxy-agent": "^5.0.1", "internal-ip": "4.3.0", "is-root": "^2.1.0", "js-yaml": "^3.13.1", @@ -1919,87 +1942,22 @@ "expo-internal": "build/bin/cli" } }, - "node_modules/@expo/cli/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@expo/cli/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@expo/cli/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@expo/cli/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/@expo/cli/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/@expo/cli/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@expo/code-signing-certificates": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/@expo/code-signing-certificates/-/code-signing-certificates-0.0.2.tgz", - "integrity": "sha512-vnPHFjwOqxQ1VLztktY+fYCfwvLzjqpzKn09rchcQE7Sdf0wtW5fFtIZBEFOOY5wasp8tXSnp627zrAwazPHzg==", + "node_modules/@expo/cli/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dependencies": { - "node-forge": "^1.2.1", - "nullthrows": "^1.1.1" + "@babel/highlight": "^7.10.4" } }, - "node_modules/@expo/config": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@expo/config/-/config-7.0.1.tgz", - "integrity": "sha512-4lu0wr45XXJ2MXiLAm2+fmOyy/jjqF3NuDm92fO6nuulRzEEvTP4w3vsibJ690rT81ohtvhpruKhkRs0wSjKWA==", + "node_modules/@expo/cli/node_modules/@expo/config": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-7.0.3.tgz", + "integrity": "sha512-joVtB5o+NF40Tmsdp65UzryRtbnCuMbXkVO4wJnNJO4aaK0EYLdHCYSewORVqNcDfGN0LphQr8VTG2npbd9CJA==", "dependencies": { "@babel/code-frame": "~7.10.4", - "@expo/config-plugins": "~5.0.1", - "@expo/config-types": "^46.0.1", + "@expo/config-plugins": "~5.0.3", + "@expo/config-types": "^47.0.0", "@expo/json-file": "8.2.36", "getenv": "^1.0.0", "glob": "7.1.6", @@ -2010,12 +1968,12 @@ "sucrase": "^3.20.0" } }, - "node_modules/@expo/config-plugins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-5.0.1.tgz", - "integrity": "sha512-1OfnsOrfeSkB0VZfT01UjQ5Uq6p+yYbq8yNkj0e99K/6NLHpyvIxj+5tZIV0nQXgkOcqBIABL2uA7lwB8CkaBQ==", + "node_modules/@expo/cli/node_modules/@expo/config-plugins": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-5.0.4.tgz", + "integrity": "sha512-vzUcVpqOMs3h+hyRdhGwk+eGIOhXa5xYdd92yO17RMNHav3v/+ekMbs7XA2c3lepMO8Yd4/5hqmRw9ZTL6jGzg==", "dependencies": { - "@expo/config-types": "^46.0.0", + "@expo/config-types": "^47.0.0", "@expo/json-file": "8.2.36", "@expo/plist": "0.0.18", "@expo/sdk-runtime-versions": "^1.0.0", @@ -2032,7 +1990,57 @@ "xml2js": "0.4.23" } }, - "node_modules/@expo/config-plugins/node_modules/ansi-styles": { + "node_modules/@expo/cli/node_modules/@expo/config-plugins/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/cli/node_modules/@expo/config-types": { + "version": "47.0.0", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-47.0.0.tgz", + "integrity": "sha512-r0pWfuhkv7KIcXMUiNACJmJKKwlTBGMw9VZHNdppS8/0Nve8HZMTkNRFQzTHW1uH3pBj8jEXpyw/2vSWDHex9g==" + }, + "node_modules/@expo/cli/node_modules/@expo/config/node_modules/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/cli/node_modules/@expo/json-file": { + "version": "8.2.36", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.36.tgz", + "integrity": "sha512-tOZfTiIFA5KmMpdW9KF7bc6CFiGjb0xnbieJhTGlHrLL+ps2G0OkqmuZ3pFEXBOMnJYUVpnSy++52LFxvpa5ZQ==", + "dependencies": { + "@babel/code-frame": "~7.10.4", + "json5": "^1.0.1", + "write-file-atomic": "^2.3.0" + } + }, + "node_modules/@expo/cli/node_modules/@expo/plist": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.18.tgz", + "integrity": "sha512-+48gRqUiz65R21CZ/IXa7RNBXgAI/uPSdvJqoN9x1hfL44DNbUoWHgHiEXTx7XelcATpDwNTz6sHLfy0iNqf+w==", + "dependencies": { + "@xmldom/xmldom": "~0.7.0", + "base64-js": "^1.2.3", + "xmlbuilder": "^14.0.0" + } + }, + "node_modules/@expo/cli/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -2046,7 +2054,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@expo/config-plugins/node_modules/chalk": { + "node_modules/@expo/cli/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", @@ -2061,7 +2069,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@expo/config-plugins/node_modules/color-convert": { + "node_modules/@expo/cli/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -2072,12 +2080,20 @@ "node": ">=7.0.0" } }, - "node_modules/@expo/config-plugins/node_modules/color-name": { + "node_modules/@expo/cli/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/@expo/config-plugins/node_modules/has-flag": { + "node_modules/@expo/cli/node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/cli/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -2085,21 +2101,29 @@ "node": ">=8" } }, - "node_modules/@expo/config-plugins/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "node_modules/@expo/cli/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@expo/cli/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==", "dependencies": { - "lru-cache": "^6.0.0" + "minimist": "^1.2.0" }, "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "json5": "lib/cli.js" } }, - "node_modules/@expo/config-plugins/node_modules/supports-color": { + "node_modules/@expo/cli/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -2110,42 +2134,141 @@ "node": ">=8" } }, - "node_modules/@expo/config-types": { - "version": "46.0.2", - "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-46.0.2.tgz", - "integrity": "sha512-PXkmOgNwRyBfgVT1HmFZhfh3Qm7WKKyV6mk3/5HJ/LzPh1t+Zs2JrWX8U2YncTLV1QzV7nV8tnkyvszzqnZEzQ==" + "node_modules/@expo/cli/node_modules/temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "engines": { + "node": ">=8" + } }, - "node_modules/@expo/config/node_modules/@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "node_modules/@expo/cli/node_modules/tempy": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.7.1.tgz", + "integrity": "sha512-vXPxwOyaNVi9nyczO16mxmHGpl6ASC5/TVhRRHpqeYHvKQm58EaWNvZXxAhR0lYYnBOQFjXjhzeLsaXdjxLjRg==", "dependencies": { - "@babel/highlight": "^7.10.4" + "del": "^6.0.0", + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@expo/config/node_modules/semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "node_modules/@expo/cli/node_modules/type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@expo/cli/node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/code-signing-certificates": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@expo/code-signing-certificates/-/code-signing-certificates-0.0.5.tgz", + "integrity": "sha512-BNhXkY1bblxKZpltzAx98G2Egj9g1Q+JRcvR7E99DOj862FTCX+ZPsAUtPTr7aHxwtrL7+fL3r0JSmM9kBm+Bw==", + "dependencies": { + "node-forge": "^1.2.1", + "nullthrows": "^1.1.1" + } + }, + "node_modules/@expo/configure-splash-screen": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@expo/configure-splash-screen/-/configure-splash-screen-0.6.0.tgz", + "integrity": "sha512-4DyPoNXJqx9bN4nEwF3HQreo//ECu7gDe1Xor3dnnzFm9P/VDxAKdbEhA0n+R6fgkNfT2onVHWijqvdpTS3Xew==", + "dependencies": { + "color-string": "^1.5.3", + "commander": "^5.1.0", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", + "lodash": "^4.17.15", + "pngjs": "^5.0.0", + "xcode": "^3.0.0", + "xml-js": "^1.6.11" + }, "bin": { - "semver": "bin/semver.js" + "configure-splash-screen": "build/index-cli.js", + "expo-splash-screen": "build/index-cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@expo/configure-splash-screen/node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/@expo/configure-splash-screen/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { "node": ">=10" } }, + "node_modules/@expo/configure-splash-screen/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@expo/configure-splash-screen/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/@expo/dev-server": { - "version": "0.1.120", - "resolved": "https://registry.npmjs.org/@expo/dev-server/-/dev-server-0.1.120.tgz", - "integrity": "sha512-x5/jCv0EOpz6FyehXpI5bgDQTVsGZYvgISkAw7n60RhtG+aid6N2CCR9SDMCH70XaUpFnfTW9qvderpCEj7Puw==", + "version": "0.1.123", + "resolved": "https://registry.npmjs.org/@expo/dev-server/-/dev-server-0.1.123.tgz", + "integrity": "sha512-N6UVzzeemfX0AONUSWInvkAAbqon8hRXpyYE/nMPaC6TvAmgGY5ILZAGoXwlpxwY2VKNT0Lx4s/UJ53ytIaHbA==", "dependencies": { "@expo/bunyan": "4.0.0", - "@expo/metro-config": "~0.4.0", + "@expo/metro-config": "~0.5.1", "@expo/osascript": "2.0.33", + "@expo/spawn-async": "^1.5.0", "body-parser": "1.19.0", "chalk": "^4.0.0", "connect": "^3.7.0", "fs-extra": "9.0.0", + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1", "node-fetch": "^2.6.0", "open": "^8.3.0", "resolve-from": "^5.0.0", @@ -2262,6 +2385,14 @@ "node": ">=8" } }, + "node_modules/@expo/dev-server/node_modules/temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "engines": { + "node": ">=8" + } + }, "node_modules/@expo/dev-server/node_modules/universalify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", @@ -2271,9 +2402,9 @@ } }, "node_modules/@expo/devcert": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@expo/devcert/-/devcert-1.0.0.tgz", - "integrity": "sha512-cahGyQCmpZmHpn2U04NR9KwsOIZy7Rhsw8Fg4q+A6563lIJxbkrgPnxq/O3NQAh3ohEvOXOOnoFx0b4yycCkpQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@expo/devcert/-/devcert-1.1.0.tgz", + "integrity": "sha512-ghUVhNJQOCTdQckSGTHctNp/0jzvVoMMkVh+6SHn+TZj8sU15U/npXIDt8NtQp0HedlPaCgkVdMu8Sacne0aEA==", "dependencies": { "application-config-path": "^0.1.0", "command-exists": "^1.2.4", @@ -2287,7 +2418,7 @@ "rimraf": "^2.6.2", "sudo-prompt": "^8.2.0", "tmp": "^0.0.33", - "tslib": "^1.10.0" + "tslib": "^2.4.0" } }, "node_modules/@expo/devcert/node_modules/debug": { @@ -2299,9 +2430,9 @@ } }, "node_modules/@expo/image-utils": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.3.20.tgz", - "integrity": "sha512-NgF/80XENyCS+amwC0P6uk1fauEtUq7gijD19jvl2xknJaADq8M2dMCRHwWMVOXosr2v46f3Z++G/NjmyOVS7A==", + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.3.23.tgz", + "integrity": "sha512-nhUVvW0TrRE4jtWzHQl8TR4ox7kcmrc2I0itaeJGjxF5A54uk7avgA0wRt7jP1rdvqQo1Ke1lXyLYREdhN9tPw==", "dependencies": { "@expo/spawn-async": "1.5.0", "chalk": "^4.0.0", @@ -2361,14 +2492,6 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/@expo/image-utils/node_modules/crypto-random-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==", - "engines": { - "node": ">=4" - } - }, "node_modules/@expo/image-utils/node_modules/fs-extra": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz", @@ -2432,46 +2555,6 @@ "node": ">=8" } }, - "node_modules/@expo/image-utils/node_modules/temp-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", - "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/image-utils/node_modules/tempy": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.3.0.tgz", - "integrity": "sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==", - "dependencies": { - "temp-dir": "^1.0.0", - "type-fest": "^0.3.1", - "unique-string": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@expo/image-utils/node_modules/type-fest": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", - "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/@expo/image-utils/node_modules/unique-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", - "integrity": "sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==", - "dependencies": { - "crypto-random-string": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@expo/image-utils/node_modules/universalify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", @@ -2480,17 +2563,22 @@ "node": ">= 10.0.0" } }, - "node_modules/@expo/json-file": { - "version": "8.2.36", - "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.36.tgz", - "integrity": "sha512-tOZfTiIFA5KmMpdW9KF7bc6CFiGjb0xnbieJhTGlHrLL+ps2G0OkqmuZ3pFEXBOMnJYUVpnSy++52LFxvpa5ZQ==", + "node_modules/@expo/metro-config": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.5.2.tgz", + "integrity": "sha512-W1qsZPA5BXuRBkNLydKBYQ1+ubObhOK0gk2Fpc+XnhW+UUIHC9sDR5pZRYGNSnDDc3rG8y7c32UzSW9nlK+mog==", "dependencies": { - "@babel/code-frame": "~7.10.4", - "json5": "^1.0.1", - "write-file-atomic": "^2.3.0" + "@expo/config": "~7.0.2", + "@expo/json-file": "8.2.36", + "chalk": "^4.1.0", + "debug": "^4.3.2", + "find-yarn-workspace-root": "~2.0.0", + "getenv": "^1.0.0", + "resolve-from": "^5.0.0", + "sucrase": "^3.20.0" } }, - "node_modules/@expo/json-file/node_modules/@babel/code-frame": { + "node_modules/@expo/metro-config/node_modules/@babel/code-frame": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", @@ -2498,30 +2586,83 @@ "@babel/highlight": "^7.10.4" } }, - "node_modules/@expo/json-file/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "node_modules/@expo/metro-config/node_modules/@expo/config": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-7.0.3.tgz", + "integrity": "sha512-joVtB5o+NF40Tmsdp65UzryRtbnCuMbXkVO4wJnNJO4aaK0EYLdHCYSewORVqNcDfGN0LphQr8VTG2npbd9CJA==", "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" + "@babel/code-frame": "~7.10.4", + "@expo/config-plugins": "~5.0.3", + "@expo/config-types": "^47.0.0", + "@expo/json-file": "8.2.36", + "getenv": "^1.0.0", + "glob": "7.1.6", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "semver": "7.3.2", + "slugify": "^1.3.4", + "sucrase": "^3.20.0" } }, - "node_modules/@expo/metro-config": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.4.0.tgz", - "integrity": "sha512-QhOiotuzklalLbbsTMXJ5v4q4jffQ5xXhy1zsosgc2DL/ZzUr/Yhm3xUcOGnPQ2x7UyeY9Tl3njPHBOJJe7CSA==", + "node_modules/@expo/metro-config/node_modules/@expo/config-plugins": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-5.0.4.tgz", + "integrity": "sha512-vzUcVpqOMs3h+hyRdhGwk+eGIOhXa5xYdd92yO17RMNHav3v/+ekMbs7XA2c3lepMO8Yd4/5hqmRw9ZTL6jGzg==", "dependencies": { - "@expo/config": "7.0.1", + "@expo/config-types": "^47.0.0", "@expo/json-file": "8.2.36", - "chalk": "^4.1.0", - "debug": "^4.3.2", - "find-yarn-workspace-root": "~2.0.0", + "@expo/plist": "0.0.18", + "@expo/sdk-runtime-versions": "^1.0.0", + "@react-native/normalize-color": "^2.0.0", + "chalk": "^4.1.2", + "debug": "^4.3.1", + "find-up": "~5.0.0", "getenv": "^1.0.0", + "glob": "7.1.6", "resolve-from": "^5.0.0", - "sucrase": "^3.20.0" + "semver": "^7.3.5", + "slash": "^3.0.0", + "xcode": "^3.0.1", + "xml2js": "0.4.23" + } + }, + "node_modules/@expo/metro-config/node_modules/@expo/config-plugins/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/metro-config/node_modules/@expo/config-types": { + "version": "47.0.0", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-47.0.0.tgz", + "integrity": "sha512-r0pWfuhkv7KIcXMUiNACJmJKKwlTBGMw9VZHNdppS8/0Nve8HZMTkNRFQzTHW1uH3pBj8jEXpyw/2vSWDHex9g==" + }, + "node_modules/@expo/metro-config/node_modules/@expo/json-file": { + "version": "8.2.36", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.36.tgz", + "integrity": "sha512-tOZfTiIFA5KmMpdW9KF7bc6CFiGjb0xnbieJhTGlHrLL+ps2G0OkqmuZ3pFEXBOMnJYUVpnSy++52LFxvpa5ZQ==", + "dependencies": { + "@babel/code-frame": "~7.10.4", + "json5": "^1.0.1", + "write-file-atomic": "^2.3.0" + } + }, + "node_modules/@expo/metro-config/node_modules/@expo/plist": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.18.tgz", + "integrity": "sha512-+48gRqUiz65R21CZ/IXa7RNBXgAI/uPSdvJqoN9x1hfL44DNbUoWHgHiEXTx7XelcATpDwNTz6sHLfy0iNqf+w==", + "dependencies": { + "@xmldom/xmldom": "~0.7.0", + "base64-js": "^1.2.3", + "xmlbuilder": "^14.0.0" } }, "node_modules/@expo/metro-config/node_modules/ansi-styles": { @@ -2577,6 +2718,28 @@ "node": ">=8" } }, + "node_modules/@expo/metro-config/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==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/@expo/metro-config/node_modules/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@expo/metro-config/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -2601,9 +2764,9 @@ } }, "node_modules/@expo/package-manager": { - "version": "0.0.56", - "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-0.0.56.tgz", - "integrity": "sha512-PGk34uz4XDyhoNIlPh2D+BDsiXYuW2jXavTiax8d32uvHlRO6FN0cAsqlWD6fx3H2hRn8cU/leTuc4M7pYovCQ==", + "version": "0.0.57", + "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-0.0.57.tgz", + "integrity": "sha512-Y4RpSL9EqaPF+Vd2GrK6r7Xx7Dv0Xdq3AGAD9C0KwV21WqP/scj/dpjxFY+ABwmdhNsFzYXb8fmDyh4tiKenPQ==", "dependencies": { "@expo/json-file": "8.2.36", "@expo/spawn-async": "^1.5.0", @@ -2617,6 +2780,24 @@ "sudo-prompt": "9.1.1" } }, + "node_modules/@expo/package-manager/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@expo/package-manager/node_modules/@expo/json-file": { + "version": "8.2.36", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.36.tgz", + "integrity": "sha512-tOZfTiIFA5KmMpdW9KF7bc6CFiGjb0xnbieJhTGlHrLL+ps2G0OkqmuZ3pFEXBOMnJYUVpnSy++52LFxvpa5ZQ==", + "dependencies": { + "@babel/code-frame": "~7.10.4", + "json5": "^1.0.1", + "write-file-atomic": "^2.3.0" + } + }, "node_modules/@expo/package-manager/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -2670,6 +2851,17 @@ "node": ">=8" } }, + "node_modules/@expo/package-manager/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==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, "node_modules/@expo/package-manager/node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -2700,7 +2892,144 @@ "node": ">=8" } }, - "node_modules/@expo/plist": { + "node_modules/@expo/prebuild-config": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-5.0.7.tgz", + "integrity": "sha512-D+TBpJUHe4+oTGFPb4o0rrw/h1xxc6wF+abJnbDHUkhnaeiHkE2O3ByS7FdiZ2FT36t0OKqeSKG/xFwWT3m1Ew==", + "dependencies": { + "@expo/config": "~7.0.2", + "@expo/config-plugins": "~5.0.3", + "@expo/config-types": "^47.0.0", + "@expo/image-utils": "0.3.22", + "@expo/json-file": "8.2.36", + "debug": "^4.3.1", + "fs-extra": "^9.0.0", + "resolve-from": "^5.0.0", + "semver": "7.3.2", + "xml2js": "0.4.23" + }, + "peerDependencies": { + "expo-modules-autolinking": ">=0.8.1" + } + }, + "node_modules/@expo/prebuild-config/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@expo/prebuild-config/node_modules/@expo/config": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-7.0.3.tgz", + "integrity": "sha512-joVtB5o+NF40Tmsdp65UzryRtbnCuMbXkVO4wJnNJO4aaK0EYLdHCYSewORVqNcDfGN0LphQr8VTG2npbd9CJA==", + "dependencies": { + "@babel/code-frame": "~7.10.4", + "@expo/config-plugins": "~5.0.3", + "@expo/config-types": "^47.0.0", + "@expo/json-file": "8.2.36", + "getenv": "^1.0.0", + "glob": "7.1.6", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "semver": "7.3.2", + "slugify": "^1.3.4", + "sucrase": "^3.20.0" + } + }, + "node_modules/@expo/prebuild-config/node_modules/@expo/config-plugins": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-5.0.4.tgz", + "integrity": "sha512-vzUcVpqOMs3h+hyRdhGwk+eGIOhXa5xYdd92yO17RMNHav3v/+ekMbs7XA2c3lepMO8Yd4/5hqmRw9ZTL6jGzg==", + "dependencies": { + "@expo/config-types": "^47.0.0", + "@expo/json-file": "8.2.36", + "@expo/plist": "0.0.18", + "@expo/sdk-runtime-versions": "^1.0.0", + "@react-native/normalize-color": "^2.0.0", + "chalk": "^4.1.2", + "debug": "^4.3.1", + "find-up": "~5.0.0", + "getenv": "^1.0.0", + "glob": "7.1.6", + "resolve-from": "^5.0.0", + "semver": "^7.3.5", + "slash": "^3.0.0", + "xcode": "^3.0.1", + "xml2js": "0.4.23" + } + }, + "node_modules/@expo/prebuild-config/node_modules/@expo/config-plugins/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/prebuild-config/node_modules/@expo/config-types": { + "version": "47.0.0", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-47.0.0.tgz", + "integrity": "sha512-r0pWfuhkv7KIcXMUiNACJmJKKwlTBGMw9VZHNdppS8/0Nve8HZMTkNRFQzTHW1uH3pBj8jEXpyw/2vSWDHex9g==" + }, + "node_modules/@expo/prebuild-config/node_modules/@expo/image-utils": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.3.22.tgz", + "integrity": "sha512-uzq+RERAtkWypOFOLssFnXXqEqKjNj9eXN7e97d/EXUAojNcLDoXc0sL+F5B1I4qtlsnhX01kcpoIBBZD8wZNQ==", + "dependencies": { + "@expo/spawn-async": "1.5.0", + "chalk": "^4.0.0", + "fs-extra": "9.0.0", + "getenv": "^1.0.0", + "jimp-compact": "0.16.1", + "mime": "^2.4.4", + "node-fetch": "^2.6.0", + "parse-png": "^2.1.0", + "resolve-from": "^5.0.0", + "semver": "7.3.2", + "tempy": "0.3.0" + } + }, + "node_modules/@expo/prebuild-config/node_modules/@expo/image-utils/node_modules/fs-extra": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz", + "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/prebuild-config/node_modules/@expo/image-utils/node_modules/universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@expo/prebuild-config/node_modules/@expo/json-file": { + "version": "8.2.36", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.36.tgz", + "integrity": "sha512-tOZfTiIFA5KmMpdW9KF7bc6CFiGjb0xnbieJhTGlHrLL+ps2G0OkqmuZ3pFEXBOMnJYUVpnSy++52LFxvpa5ZQ==", + "dependencies": { + "@babel/code-frame": "~7.10.4", + "json5": "^1.0.1", + "write-file-atomic": "^2.3.0" + } + }, + "node_modules/@expo/prebuild-config/node_modules/@expo/plist": { "version": "0.0.18", "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.18.tgz", "integrity": "sha512-+48gRqUiz65R21CZ/IXa7RNBXgAI/uPSdvJqoN9x1hfL44DNbUoWHgHiEXTx7XelcATpDwNTz6sHLfy0iNqf+w==", @@ -2710,26 +3039,51 @@ "xmlbuilder": "^14.0.0" } }, - "node_modules/@expo/prebuild-config": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-5.0.3.tgz", - "integrity": "sha512-G4j1H3WFjRaiQ+FgFNULrnIm7RsQyjc4xp6lLTP2ydBv79wO3x8wAdeZvaZh7eOkfu9BESpQzACT1uuJTag5jg==", + "node_modules/@expo/prebuild-config/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { - "@expo/config": "7.0.1", - "@expo/config-plugins": "~5.0.1", - "@expo/config-types": "^46.0.0", - "@expo/image-utils": "0.3.20", - "@expo/json-file": "8.2.36", - "debug": "^4.3.1", - "fs-extra": "^9.0.0", - "resolve-from": "^5.0.0", - "semver": "7.3.2", - "xml2js": "0.4.23" + "color-convert": "^2.0.1" }, - "peerDependencies": { - "expo-modules-autolinking": ">=0.8.1" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@expo/prebuild-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@expo/prebuild-config/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, + "node_modules/@expo/prebuild-config/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, "node_modules/@expo/prebuild-config/node_modules/fs-extra": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", @@ -2744,6 +3098,25 @@ "node": ">=10" } }, + "node_modules/@expo/prebuild-config/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/prebuild-config/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==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, "node_modules/@expo/prebuild-config/node_modules/jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -2766,6 +3139,17 @@ "node": ">=10" } }, + "node_modules/@expo/prebuild-config/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@expo/prebuild-config/node_modules/universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", @@ -3126,35 +3510,36 @@ } }, "node_modules/@jest/create-cache-key-function": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-27.5.1.tgz", - "integrity": "sha512-dmH1yW+makpTSURTy8VzdUwFnfQh1G8R+DxO2Ho2FFmBbKFEVm+3jWdvFhE2VqB/LATCTokkP0dotjyQyw5/AQ==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.3.1.tgz", + "integrity": "sha512-4i+E+E40gK13K78ffD/8cy4lSSqeWwyXeTZoq16tndiCP12hC8uQsPJdIu5C6Kf22fD8UbBk71so7s/6VwpUOQ==", "dependencies": { - "@jest/types": "^27.5.1" + "@jest/types": "^29.3.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/create-cache-key-function/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.3.1.tgz", + "integrity": "sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA==", "dependencies": { + "@jest/schemas": "^29.0.0", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^16.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/create-cache-key-function/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "version": "17.0.18", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.18.tgz", + "integrity": "sha512-eIJR1UER6ur3EpKM3d+2Pgd+ET+k6Kn9B4ZItX0oPjjVI5PrfaRjKyLT5UYendDpLuoiJMNJvovLQbEXqhsPaw==", "dependencies": { "@types/yargs-parser": "*" } @@ -3223,6 +3608,17 @@ "node": ">=8" } }, + "node_modules/@jest/schemas": { + "version": "29.0.0", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.0.0.tgz", + "integrity": "sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==", + "dependencies": { + "@sinclair/typebox": "^0.24.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/@jest/types": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", @@ -3436,29 +3832,37 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/@react-native-async-storage/async-storage": { + "version": "1.17.11", + "resolved": "https://registry.npmjs.org/@react-native-async-storage/async-storage/-/async-storage-1.17.11.tgz", + "integrity": "sha512-bzs45n5HNcDq6mxXnSsOHysZWn1SbbebNxldBXCQs8dSvF8Aor9KCdpm+TpnnGweK3R6diqsT8lFhX77VX0NFw==", + "dependencies": { + "merge-options": "^3.0.4" + }, + "peerDependencies": { + "react-native": "^0.0.0-0 || 0.60 - 0.71 || 1000.0.0" + } + }, "node_modules/@react-native-community/cli": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-8.0.6.tgz", - "integrity": "sha512-E36hU/if3quQCfJHGWVkpsCnwtByRCwORuAX0r6yr1ebKktpKeEO49zY9PAu/Z1gfyxCtgluXY0HfRxjKRFXTg==", - "dependencies": { - "@react-native-community/cli-clean": "^8.0.4", - "@react-native-community/cli-config": "^8.0.6", - "@react-native-community/cli-debugger-ui": "^8.0.0", - "@react-native-community/cli-doctor": "^8.0.6", - "@react-native-community/cli-hermes": "^8.0.5", - "@react-native-community/cli-plugin-metro": "^8.0.4", - "@react-native-community/cli-server-api": "^8.0.4", - "@react-native-community/cli-tools": "^8.0.4", - "@react-native-community/cli-types": "^8.0.0", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-9.2.1.tgz", + "integrity": "sha512-feMYS5WXXKF4TSWnCXozHxtWq36smyhGaENXlkiRESfYZ1mnCUlPfOanNCAvNvBqdyh9d4o0HxhYKX1g9l6DCQ==", + "dependencies": { + "@react-native-community/cli-clean": "^9.2.1", + "@react-native-community/cli-config": "^9.2.1", + "@react-native-community/cli-debugger-ui": "^9.0.0", + "@react-native-community/cli-doctor": "^9.2.1", + "@react-native-community/cli-hermes": "^9.2.1", + "@react-native-community/cli-plugin-metro": "^9.2.1", + "@react-native-community/cli-server-api": "^9.2.1", + "@react-native-community/cli-tools": "^9.2.1", + "@react-native-community/cli-types": "^9.1.0", "chalk": "^4.1.2", - "commander": "^2.19.0", + "commander": "^9.4.0", "execa": "^1.0.0", "find-up": "^4.1.0", "fs-extra": "^8.1.0", "graceful-fs": "^4.1.3", - "leven": "^3.1.0", - "lodash": "^4.17.15", - "minimist": "^1.2.0", "prompts": "^2.4.0", "semver": "^6.3.0" }, @@ -3466,18 +3870,15 @@ "react-native": "build/bin.js" }, "engines": { - "node": ">=12" - }, - "peerDependencies": { - "react-native": "*" + "node": ">=14" } }, "node_modules/@react-native-community/cli-clean": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-8.0.4.tgz", - "integrity": "sha512-IwS1M1NHg6+qL8PThZYMSIMYbZ6Zbx+lIck9PLBskbosFo24M3lCOflOl++Bggjakp6mR+sRXxLMexid/GeOsQ==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-9.2.1.tgz", + "integrity": "sha512-dyNWFrqRe31UEvNO+OFWmQ4hmqA07bR9Ief/6NnGwx67IO9q83D5PEAf/o96ML6jhSbDwCmpPKhPwwBbsyM3mQ==", "dependencies": { - "@react-native-community/cli-tools": "^8.0.4", + "@react-native-community/cli-tools": "^9.2.1", "chalk": "^4.1.2", "execa": "^1.0.0", "prompts": "^2.4.0" @@ -3548,11 +3949,11 @@ } }, "node_modules/@react-native-community/cli-config": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-8.0.6.tgz", - "integrity": "sha512-mjVpVvdh8AviiO8xtqeX+BkjqE//NMDnISwsLWSJUfNCwTAPmdR8PGbhgP5O4hWHyJ3WkepTopl0ya7Tfi3ifw==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-9.2.1.tgz", + "integrity": "sha512-gHJlBBXUgDN9vrr3aWkRqnYrPXZLztBDQoY97Mm5Yo6MidsEpYo2JIP6FH4N/N2p1TdjxJL4EFtdd/mBpiR2MQ==", "dependencies": { - "@react-native-community/cli-tools": "^8.0.4", + "@react-native-community/cli-tools": "^9.2.1", "cosmiconfig": "^5.1.0", "deepmerge": "^3.2.0", "glob": "^7.1.3", @@ -3560,21 +3961,21 @@ } }, "node_modules/@react-native-community/cli-debugger-ui": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-8.0.0.tgz", - "integrity": "sha512-u2jq06GZwZ9sRERzd9FIgpW6yv4YOW4zz7Ym/B8eSzviLmy3yI/8mxJtvlGW+J8lBsfMcQoqJpqI6Rl1nZy9yQ==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-9.0.0.tgz", + "integrity": "sha512-7hH05ZwU9Tp0yS6xJW0bqcZPVt0YCK7gwj7gnRu1jDNN2kughf6Lg0Ys29rAvtZ7VO1PK5c1O+zs7yFnylQDUA==", "dependencies": { "serve-static": "^1.13.1" } }, "node_modules/@react-native-community/cli-doctor": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-8.0.6.tgz", - "integrity": "sha512-ZQqyT9mJMVeFEVIwj8rbDYGCA2xXjJfsQjWk2iTRZ1CFHfhPSUuUiG8r6mJmTinAP9t+wYcbbIYzNgdSUKnDMw==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-9.3.0.tgz", + "integrity": "sha512-/fiuG2eDGC2/OrXMOWI5ifq4X1gdYTQhvW2m0TT5Lk1LuFiZsbTCp1lR+XILKekuTvmYNjEGdVpeDpdIWlXdEA==", "dependencies": { - "@react-native-community/cli-config": "^8.0.6", - "@react-native-community/cli-platform-ios": "^8.0.6", - "@react-native-community/cli-tools": "^8.0.4", + "@react-native-community/cli-config": "^9.2.1", + "@react-native-community/cli-platform-ios": "^9.3.0", + "@react-native-community/cli-tools": "^9.2.1", "chalk": "^4.1.2", "command-exists": "^1.2.8", "envinfo": "^7.7.2", @@ -3590,6 +3991,18 @@ "wcwidth": "^1.0.1" } }, + "node_modules/@react-native-community/cli-doctor/node_modules/@react-native-community/cli-platform-ios": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-9.3.0.tgz", + "integrity": "sha512-nihTX53BhF2Q8p4B67oG3RGe1XwggoGBrMb6vXdcu2aN0WeXJOXdBLgR900DAA1O8g7oy1Sudu6we+JsVTKnjw==", + "dependencies": { + "@react-native-community/cli-tools": "^9.2.1", + "chalk": "^4.1.2", + "execa": "^1.0.0", + "glob": "^7.1.3", + "ora": "^5.4.1" + } + }, "node_modules/@react-native-community/cli-doctor/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -3753,17 +4166,31 @@ } }, "node_modules/@react-native-community/cli-hermes": { - "version": "8.0.5", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-8.0.5.tgz", - "integrity": "sha512-Zm0wM6SfgYAEX1kfJ1QBvTayabvh79GzmjHyuSnEROVNPbl4PeCG4WFbwy489tGwOP9Qx9fMT5tRIFCD8bp6/g==", + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-9.3.1.tgz", + "integrity": "sha512-Mq4PK8m5YqIdaVq5IdRfp4qK09aVO+aiCtd6vjzjNUgk1+1X5cgUqV6L65h4N+TFJYJHcp2AnB+ik1FAYXvYPQ==", "dependencies": { - "@react-native-community/cli-platform-android": "^8.0.5", - "@react-native-community/cli-tools": "^8.0.4", + "@react-native-community/cli-platform-android": "^9.3.1", + "@react-native-community/cli-tools": "^9.2.1", "chalk": "^4.1.2", "hermes-profile-transformer": "^0.0.6", "ip": "^1.1.5" } }, + "node_modules/@react-native-community/cli-hermes/node_modules/@react-native-community/cli-platform-android": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-9.3.1.tgz", + "integrity": "sha512-m0bQ6Twewl7OEZoVf79I2GZmsDqh+Gh0bxfxWgwxobsKDxLx8/RNItAo1lVtTCgzuCR75cX4EEO8idIF9jYhew==", + "dependencies": { + "@react-native-community/cli-tools": "^9.2.1", + "chalk": "^4.1.2", + "execa": "^1.0.0", + "fs-extra": "^8.1.0", + "glob": "^7.1.3", + "logkitty": "^0.7.1", + "slash": "^3.0.0" + } + }, "node_modules/@react-native-community/cli-hermes/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -3829,17 +4256,15 @@ } }, "node_modules/@react-native-community/cli-platform-android": { - "version": "8.0.5", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-8.0.5.tgz", - "integrity": "sha512-z1YNE4T1lG5o9acoQR1GBvf7mq6Tzayqo/za5sHVSOJAC9SZOuVN/gg/nkBa9a8n5U7qOMFXfwhTMNqA474gXA==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-9.2.1.tgz", + "integrity": "sha512-VamCZ8nido3Q3Orhj6pBIx48itORNPLJ7iTfy3nucD1qISEDih3DOzCaQCtmqdEBgUkNkNl0O+cKgq5A3th3Zg==", "dependencies": { - "@react-native-community/cli-tools": "^8.0.4", + "@react-native-community/cli-tools": "^9.2.1", "chalk": "^4.1.2", "execa": "^1.0.0", "fs-extra": "^8.1.0", "glob": "^7.1.3", - "jetifier": "^1.6.2", - "lodash": "^4.17.15", "logkitty": "^0.7.1", "slash": "^3.0.0" } @@ -3909,18 +4334,15 @@ } }, "node_modules/@react-native-community/cli-platform-ios": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-8.0.6.tgz", - "integrity": "sha512-CMR6mu/LVx6JVfQRDL9uULsMirJT633bODn+IrYmrwSz250pnhON16We8eLPzxOZHyDjm7JPuSgHG3a/BPiRuQ==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-9.2.1.tgz", + "integrity": "sha512-dEgvkI6CFgPk3vs8IOR0toKVUjIFwe4AsXFvWWJL5qhrIzW9E5Owi0zPkSvzXsMlfYMbVX0COfVIK539ZxguSg==", "dependencies": { - "@react-native-community/cli-tools": "^8.0.4", + "@react-native-community/cli-tools": "^9.2.1", "chalk": "^4.1.2", "execa": "^1.0.0", "glob": "^7.1.3", - "js-yaml": "^3.13.1", - "lodash": "^4.17.15", - "ora": "^5.4.1", - "plist": "^3.0.2" + "ora": "^5.4.1" } }, "node_modules/@react-native-community/cli-platform-ios/node_modules/ansi-styles": { @@ -4081,19 +4503,19 @@ } }, "node_modules/@react-native-community/cli-plugin-metro": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-8.0.4.tgz", - "integrity": "sha512-UWzY1eMcEr/6262R2+d0Is5M3L/7Y/xXSDIFMoc5Rv5Wucl3hJM/TxHXmByvHpuJf6fJAfqOskyt4bZCvbI+wQ==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-9.2.1.tgz", + "integrity": "sha512-byBGBH6jDfUvcHGFA45W/sDwMlliv7flJ8Ns9foCh3VsIeYYPoDjjK7SawE9cPqRdMAD4SY7EVwqJnOtRbwLiQ==", "dependencies": { - "@react-native-community/cli-server-api": "^8.0.4", - "@react-native-community/cli-tools": "^8.0.4", + "@react-native-community/cli-server-api": "^9.2.1", + "@react-native-community/cli-tools": "^9.2.1", "chalk": "^4.1.2", - "metro": "^0.70.1", - "metro-config": "^0.70.1", - "metro-core": "^0.70.1", - "metro-react-native-babel-transformer": "^0.70.1", - "metro-resolver": "^0.70.1", - "metro-runtime": "^0.70.1", + "metro": "0.72.3", + "metro-config": "0.72.3", + "metro-core": "0.72.3", + "metro-react-native-babel-transformer": "0.72.3", + "metro-resolver": "0.72.3", + "metro-runtime": "0.72.3", "readline": "^1.3.0" } }, @@ -4162,12 +4584,12 @@ } }, "node_modules/@react-native-community/cli-server-api": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-8.0.4.tgz", - "integrity": "sha512-Orr14njx1E70CVrUA8bFdl+mrnbuXUjf1Rhhm0RxUadFpvkHuOi5dh8Bryj2MKtf8eZrpEwZ7tuQPhJEULW16A==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-9.2.1.tgz", + "integrity": "sha512-EI+9MUxEbWBQhWw2PkhejXfkcRqPl+58+whlXJvKHiiUd7oVbewFs0uLW0yZffUutt4FGx6Uh88JWEgwOzAdkw==", "dependencies": { - "@react-native-community/cli-debugger-ui": "^8.0.0", - "@react-native-community/cli-tools": "^8.0.4", + "@react-native-community/cli-debugger-ui": "^9.0.0", + "@react-native-community/cli-tools": "^9.2.1", "compression": "^1.7.1", "connect": "^3.6.5", "errorhandler": "^1.5.0", @@ -4198,14 +4620,13 @@ } }, "node_modules/@react-native-community/cli-tools": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-8.0.4.tgz", - "integrity": "sha512-ePN9lGxh6LRFiotyddEkSmuqpQhnq2iw9oiXYr4EFWpIEy0yCigTuSTiDF68+c8M9B+7bTwkRpz/rMPC4ViO5Q==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-9.2.1.tgz", + "integrity": "sha512-bHmL/wrKmBphz25eMtoJQgwwmeCylbPxqFJnFSbkqJPXQz3ManQ6q/gVVMqFyz7D3v+riaus/VXz3sEDa97uiQ==", "dependencies": { "appdirsjs": "^1.2.4", "chalk": "^4.1.2", "find-up": "^5.0.0", - "lodash": "^4.17.15", "mime": "^2.4.1", "node-fetch": "^2.6.0", "open": "^6.2.0", @@ -4391,9 +4812,9 @@ } }, "node_modules/@react-native-community/cli-types": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-8.0.0.tgz", - "integrity": "sha512-1lZS1PEvMlFaN3Se1ksyoFWzMjk+YfKi490GgsqKJln9gvFm8tqVPdnXttI5Uf2DQf3BMse8Bk8dNH4oV6Ewow==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-9.1.0.tgz", + "integrity": "sha512-KDybF9XHvafLEILsbiKwz5Iobd+gxRaPyn4zSaAerBxedug4er5VUWa8Szy+2GeYKZzMh/gsb1o9lCToUwdT/g==", "dependencies": { "joi": "^17.2.1" } @@ -4444,9 +4865,12 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/@react-native-community/cli/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", + "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", + "engines": { + "node": "^12.20.0 || >=14" + } }, "node_modules/@react-native-community/cli/node_modules/find-up": { "version": "4.1.0", @@ -4524,13 +4948,22 @@ } }, "node_modules/@react-native-community/datetimepicker": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@react-native-community/datetimepicker/-/datetimepicker-6.2.0.tgz", - "integrity": "sha512-w1ZS+wYO3qSASliRp+B7mPphOhtVm++rhSbj1WsgXdgLgDXSkDxpMnAXXQu9M0XdcgBwVJ6wDExeIwuzU5Jtfg==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@react-native-community/datetimepicker/-/datetimepicker-6.5.2.tgz", + "integrity": "sha512-9K3zhIH1zmpIGSG3GJTWLIoAx+sR4kJ1wqpGKMwWJ5IYXBsFxMdvGw023t0pz2CQStlnNbbNhnZY/HMYFBCsCg==", "dependencies": { "invariant": "^2.2.4" } }, + "node_modules/@react-native-picker/picker": { + "version": "2.4.8", + "resolved": "https://registry.npmjs.org/@react-native-picker/picker/-/picker-2.4.8.tgz", + "integrity": "sha512-5NQ5XPo1B03YNqKFrV6h9L3CQaHlB80wd4ETHUEABRP2iLh7FHLVObX2GfziD+K/VJb8G4KZcZ23NFBFP1f7bg==", + "peerDependencies": { + "react": ">=16", + "react-native": ">=0.57" + } + }, "node_modules/@react-native/assets": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@react-native/assets/-/assets-1.0.0.tgz", @@ -4749,15 +5182,20 @@ } }, "node_modules/@sideway/formula": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", - "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==" }, "node_modules/@sideway/pinpoint": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" }, + "node_modules/@sinclair/typebox": { + "version": "0.24.51", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", + "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==" + }, "node_modules/@types/glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", @@ -4767,14 +5205,6 @@ "@types/node": "*" } }, - "node_modules/@types/graceful-fs": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", - "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/hammerjs": { "version": "2.0.41", "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.41.tgz", @@ -5083,9 +5513,9 @@ } }, "node_modules/@xmldom/xmldom": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.6.tgz", - "integrity": "sha512-HHXP9hskkFQHy8QxxUXkS7946FFIhYVfGqsk0WLwllmexN9x/+R4UBLvurHEuyXRfVEObVR8APuQehykLviwSQ==", + "version": "0.7.9", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.9.tgz", + "integrity": "sha512-yceMpm/xd4W2a85iqZyO09gTnHvXF6pyiWjD2jcOJs7hRoZtNNOO1eJlhHj1ixA+xip2hOyGn+LgcvLCMo5zXA==", "engines": { "node": ">=10.0.0" } @@ -5147,6 +5577,17 @@ "node": ">= 0.12.0" } }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", @@ -5279,9 +5720,9 @@ "integrity": "sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==" }, "node_modules/application-config-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/application-config-path/-/application-config-path-0.1.0.tgz", - "integrity": "sha512-lljTpVvFteShrHuKRvweZfa9o/Nc34Y8r5/1Lqh/yyKaspRT2J3fkEiSSk1YLG8ZSVyU7yHysRy9zcDDS2aH1Q==" + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/application-config-path/-/application-config-path-0.1.1.tgz", + "integrity": "sha512-zy9cHePtMP0YhwG+CfHm0bgwdnga2X3gZexpdCwEj//dpb+TKajtiC8REEUJUSq6Ab4f9cgNy2l8ObXzCXFkEw==" }, "node_modules/aproba": { "version": "1.2.0", @@ -5434,11 +5875,6 @@ "node": ">=4" } }, - "node_modules/ast-types/node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - }, "node_modules/astral-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", @@ -5486,6 +5922,29 @@ "node": ">= 4.5.0" } }, + "node_modules/axios": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.2.1.tgz", + "integrity": "sha512-I88cFiGu9ryt/tfVEi4kX2SITsvDddTajXTOFmt2uK1ZVA8LytjtdeyefdQWEf5PU8w+4SSJDoYnggflB5tW4A==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axios/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/babel-core": { "version": "7.0.0-bridge.0", "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", @@ -5514,9 +5973,9 @@ } }, "node_modules/babel-loader/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dependencies": { "minimist": "^1.2.0" }, @@ -5525,9 +5984,9 @@ } }, "node_modules/babel-loader/node_modules/loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -5606,9 +6065,9 @@ } }, "node_modules/babel-plugin-react-native-web": { - "version": "0.18.9", - "resolved": "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.18.9.tgz", - "integrity": "sha512-A9rrSfV98CFRS+ACgZorxaHH8gDrVyK2Nea8OHepY4Sv/Mf+vk8uvQq+tRUEBpHnUvd/qRDKIjFLbygecAt9VA==" + "version": "0.18.10", + "resolved": "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.18.10.tgz", + "integrity": "sha512-2UiwS6G7XKJvpo0X5OFkzGjHGFuNx9J+DgEG8TEmm+X5S0z6EB59W11RDEZghdKzsQzVbs1jB+2VHBuVgjMTiw==" }, "node_modules/babel-plugin-syntax-trailing-function-commas": { "version": "7.0.0-beta.0", @@ -5616,16 +6075,17 @@ "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==" }, "node_modules/babel-preset-expo": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-9.2.0.tgz", - "integrity": "sha512-aM2htiNx0H49H+MWCp9+cKVSdcdNSn0tbE5Dln/GO1xna4ZlnA30clbfClcYJFUcZtW90IsYeZwQ/hj8zyWhNA==", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-9.2.2.tgz", + "integrity": "sha512-69cSPObZWFz0AaUT6IhCu2VzPVTICUtXzhX5ecoDttFe+9wb9yMV8m7rBNZptJQ3wtiKB5iEL7/wvtKygPz/mQ==", "dependencies": { "@babel/plugin-proposal-decorators": "^7.12.9", + "@babel/plugin-proposal-object-rest-spread": "^7.12.13", "@babel/plugin-transform-react-jsx": "^7.12.17", "@babel/preset-env": "^7.12.9", "babel-plugin-module-resolver": "^4.1.0", "babel-plugin-react-native-web": "~0.18.2", - "metro-react-native-babel-preset": "~0.70.3" + "metro-react-native-babel-preset": "0.72.3" } }, "node_modules/babel-preset-fbjs": { @@ -5865,9 +6325,9 @@ } }, "node_modules/bplist-parser": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.2.tgz", - "integrity": "sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.1.tgz", + "integrity": "sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==", "dependencies": { "big-integer": "1.6.x" }, @@ -6232,11 +6692,6 @@ "tslib": "^2.0.3" } }, - "node_modules/camel-case/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - }, "node_modules/camelcase": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", @@ -7233,11 +7688,11 @@ } }, "node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==", "engines": { - "node": ">=8" + "node": ">=4" } }, "node_modules/css-color-names": { @@ -7308,9 +7763,9 @@ } }, "node_modules/css-loader/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dependencies": { "minimist": "^1.2.0" }, @@ -7319,9 +7774,9 @@ } }, "node_modules/css-loader/node_modules/loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -7560,9 +8015,9 @@ "integrity": "sha512-+LSAiGFwQ9dRnRdOeaj7g47ZFJcOUPukAP8J3A3fuZ1g9Y44BG+P1sgApjLXTQPOzC4+7S9Wr8kXsfpINM4jpw==" }, "node_modules/dayjs": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.6.tgz", - "integrity": "sha512-zZbY5giJAinCG+7AGaw0wIhNZ6J8AhWuSXKvuc1KAyMiRsvGQWqh4L+MomvhdAYjN+lqvVCMq1I41e3YHvXkyQ==" + "version": "1.11.7", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz", + "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==" }, "node_modules/debug": { "version": "4.3.4", @@ -7589,9 +8044,9 @@ } }, "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", "engines": { "node": ">=0.10" } @@ -7955,11 +8410,6 @@ "tslib": "^2.0.3" } }, - "node_modules/dot-case/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - }, "node_modules/dot-prop": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", @@ -8492,23 +8942,25 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/expo": { - "version": "46.0.17", - "resolved": "https://registry.npmjs.org/expo/-/expo-46.0.17.tgz", - "integrity": "sha512-rB+KMvjU3lFMkec5LcVFFn0Q2iJUEIoyB9TckKMirA15H5mW4yZMao0ilR7239fJ5ytVoDC8SIf7ZAvTmiMuMw==", + "version": "47.0.9", + "resolved": "https://registry.npmjs.org/expo/-/expo-47.0.9.tgz", + "integrity": "sha512-NZtwk2Q+8DYlEpY/vBWDOVeN20AdlsVlZlhLOHAqvXpUSlNhG5XYBJD3wW+GQ1BQetq/8Hxe5NaZu0N5YkYsvA==", "dependencies": { "@babel/runtime": "^7.14.0", - "@expo/cli": "0.3.2", + "@expo/cli": "0.4.10", + "@expo/config": "7.0.3", + "@expo/config-plugins": "5.0.4", "@expo/vector-icons": "^13.0.0", - "babel-preset-expo": "~9.2.0", + "babel-preset-expo": "~9.2.2", "cross-spawn": "^6.0.5", - "expo-application": "~4.2.2", - "expo-asset": "~8.6.1", - "expo-constants": "~13.2.4", - "expo-file-system": "~14.1.0", - "expo-font": "~10.2.1", - "expo-keep-awake": "~10.2.0", - "expo-modules-autolinking": "0.10.3", - "expo-modules-core": "0.11.9", + "expo-application": "~5.0.1", + "expo-asset": "~8.7.0", + "expo-constants": "~14.0.2", + "expo-file-system": "~15.1.1", + "expo-font": "~11.0.1", + "expo-keep-awake": "~11.0.1", + "expo-modules-autolinking": "1.0.0", + "expo-modules-core": "1.0.4", "fbemitter": "^3.0.0", "getenv": "^1.0.0", "invariant": "^2.2.4", @@ -8521,25 +8973,25 @@ "expo": "bin/cli.js" }, "optionalDependencies": { - "expo-error-recovery": "~3.2.0" + "expo-error-recovery": "~4.0.1" } }, "node_modules/expo-application": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-4.2.2.tgz", - "integrity": "sha512-bFEaFRUdV6aK2iBd+HzkHNPYsyj88EAhaQW5leznmO0qQMJxpAQ3eoUXMey1hfDBh1qgkkHgSyCZ9BIgMAGJ1g==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-5.0.1.tgz", + "integrity": "sha512-bThxK5zH/Lc2tkCvEXGjfM7ayvOVmPWYcWzXsMIU1RtG73TyXo4cq+73FvfDNIWn6gKS0WyMcmoPB3WXEV/jsw==", "peerDependencies": { "expo": "*" } }, "node_modules/expo-asset": { - "version": "8.6.1", - "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-8.6.1.tgz", - "integrity": "sha512-urbUp1YtwH2J0Qc3inGQJdqTjWKML77SeMNgff+iR9MUE8gDkFqSCDjrBi7i5Oj5DDtq43mmtDg8G8ei6Vchcg==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-8.7.0.tgz", + "integrity": "sha512-lkoNsHK6vf+outISB6/37SonXcAL6Buw0ycjiwQVFfpOBKpkQa+zw5wm1m3KwjH2txmR3xdIzcpWsJkgovYCvQ==", "dependencies": { "blueimp-md5": "^2.10.0", - "expo-constants": "~13.2.2", - "expo-file-system": "~14.1.0", + "expo-constants": "~14.0.0", + "expo-file-system": "~15.1.0", "invariant": "^2.2.4", "md5-file": "^3.2.3", "path-browserify": "^1.0.0", @@ -8547,32 +8999,280 @@ } }, "node_modules/expo-constants": { - "version": "13.2.4", - "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-13.2.4.tgz", - "integrity": "sha512-Zobau8EuTk2GgafwkfGnWM6CmSLB7X8qnQXVuXe0nd3v92hfQUmRWGhJwH88uxXj3LrfqctM6PaJ8taG1vxfBw==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-14.0.2.tgz", + "integrity": "sha512-wzV3nrzTXTI8yG0tfas3fnqCfKV6YE+1GphEREyVDAShEB6mBInX1b6HgtpHFy2wOtnml+lPVmTCeGtjjLnZhA==", "dependencies": { - "@expo/config": "~7.0.0", + "@expo/config": "~7.0.2", "uuid": "^3.3.2" }, "peerDependencies": { "expo": "*" } }, + "node_modules/expo-constants/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/expo-constants/node_modules/@expo/config": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-7.0.3.tgz", + "integrity": "sha512-joVtB5o+NF40Tmsdp65UzryRtbnCuMbXkVO4wJnNJO4aaK0EYLdHCYSewORVqNcDfGN0LphQr8VTG2npbd9CJA==", + "dependencies": { + "@babel/code-frame": "~7.10.4", + "@expo/config-plugins": "~5.0.3", + "@expo/config-types": "^47.0.0", + "@expo/json-file": "8.2.36", + "getenv": "^1.0.0", + "glob": "7.1.6", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "semver": "7.3.2", + "slugify": "^1.3.4", + "sucrase": "^3.20.0" + } + }, + "node_modules/expo-constants/node_modules/@expo/config-plugins": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-5.0.4.tgz", + "integrity": "sha512-vzUcVpqOMs3h+hyRdhGwk+eGIOhXa5xYdd92yO17RMNHav3v/+ekMbs7XA2c3lepMO8Yd4/5hqmRw9ZTL6jGzg==", + "dependencies": { + "@expo/config-types": "^47.0.0", + "@expo/json-file": "8.2.36", + "@expo/plist": "0.0.18", + "@expo/sdk-runtime-versions": "^1.0.0", + "@react-native/normalize-color": "^2.0.0", + "chalk": "^4.1.2", + "debug": "^4.3.1", + "find-up": "~5.0.0", + "getenv": "^1.0.0", + "glob": "7.1.6", + "resolve-from": "^5.0.0", + "semver": "^7.3.5", + "slash": "^3.0.0", + "xcode": "^3.0.1", + "xml2js": "0.4.23" + } + }, + "node_modules/expo-constants/node_modules/@expo/config-plugins/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/expo-constants/node_modules/@expo/config-types": { + "version": "47.0.0", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-47.0.0.tgz", + "integrity": "sha512-r0pWfuhkv7KIcXMUiNACJmJKKwlTBGMw9VZHNdppS8/0Nve8HZMTkNRFQzTHW1uH3pBj8jEXpyw/2vSWDHex9g==" + }, + "node_modules/expo-constants/node_modules/@expo/json-file": { + "version": "8.2.36", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.36.tgz", + "integrity": "sha512-tOZfTiIFA5KmMpdW9KF7bc6CFiGjb0xnbieJhTGlHrLL+ps2G0OkqmuZ3pFEXBOMnJYUVpnSy++52LFxvpa5ZQ==", + "dependencies": { + "@babel/code-frame": "~7.10.4", + "json5": "^1.0.1", + "write-file-atomic": "^2.3.0" + } + }, + "node_modules/expo-constants/node_modules/@expo/plist": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.18.tgz", + "integrity": "sha512-+48gRqUiz65R21CZ/IXa7RNBXgAI/uPSdvJqoN9x1hfL44DNbUoWHgHiEXTx7XelcATpDwNTz6sHLfy0iNqf+w==", + "dependencies": { + "@xmldom/xmldom": "~0.7.0", + "base64-js": "^1.2.3", + "xmlbuilder": "^14.0.0" + } + }, + "node_modules/expo-constants/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/expo-constants/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/expo-constants/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/expo-constants/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/expo-constants/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/expo-constants/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==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/expo-constants/node_modules/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/expo-constants/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/expo-dev-client": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/expo-dev-client/-/expo-dev-client-2.0.1.tgz", + "integrity": "sha512-+OXXZKKo/CplqklpaZasHAX7qaRrzC83biqXTFa1z5NiFW41uqtAqTFx6gmPi4kx3YgwtD+ep6R3SRrKjdCukg==", + "dependencies": { + "expo-dev-launcher": "2.0.2", + "expo-dev-menu": "2.0.2", + "expo-dev-menu-interface": "1.0.0", + "expo-manifests": "~0.4.0", + "expo-updates-interface": "~0.8.0" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-dev-launcher": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expo-dev-launcher/-/expo-dev-launcher-2.0.2.tgz", + "integrity": "sha512-MQT7VSOHJQrEs3YAv5BQLYs3Uk7P1dNqBw6kKrj3jKBq0z92k2LLg1aCk7nP8OGJVDvrb2jTXBka8VXVqF0ECg==", + "dependencies": { + "expo-dev-menu": "2.0.2", + "resolve-from": "^5.0.0", + "semver": "^7.3.5" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-dev-launcher/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/expo-dev-menu": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expo-dev-menu/-/expo-dev-menu-2.0.2.tgz", + "integrity": "sha512-SxR5riXgm+VVKsDKC/bOLuOJ0CKutW07G+OqJ9eYfxwGfxa8omLJHwagbCsd8FwUPGkzvzgfRJRGLo5J6REMow==", + "dependencies": { + "expo-dev-menu-interface": "1.0.0", + "semver": "^7.3.5" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-dev-menu-interface": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/expo-dev-menu-interface/-/expo-dev-menu-interface-1.0.0.tgz", + "integrity": "sha512-4lsVofTwV9oBM+zo7XhtmvbfiXD4I7I3Rqns6U0i6IOnH7OGBDpKvGZ5YikWPFGn6NOu8loqqd8S7inFIaxC0A==", + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-dev-menu/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/expo-error-recovery": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/expo-error-recovery/-/expo-error-recovery-3.2.0.tgz", - "integrity": "sha512-XZ630ks5HNxa9oc2Ya1hEn1ez031Cy4VnyxerPC2o9fKNKSrD/64cRqGF9NkGM3X2uf8+PCB9adxVflAIXBf6w==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/expo-error-recovery/-/expo-error-recovery-4.0.1.tgz", + "integrity": "sha512-wceptnRX+N3qCSVTNbIchUFu3GmY30onRH5L66OF8HMLpAIQfrZMLxJfz7SAMJTcr3jxsJ11vSa2l2RaPKgHsQ==", "optional": true, "peerDependencies": { "expo": "*" } }, "node_modules/expo-file-system": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-14.1.0.tgz", - "integrity": "sha512-lJcPGQ8yKXVknVkD5TmcJnR/TpQbEL0JP8hknLejfq3FIqPqI/LBFn31YiP37grxW8lITz1al8pq5T6CSUjAzQ==", + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-15.1.1.tgz", + "integrity": "sha512-MYYDKxjLo9VOkvGHqym5EOAUS+ero9O66X5zI+EXJzqNznKvnfScdXeeAaQzShmWtmLkdVDCoYFGOaTvTA1wTQ==", "dependencies": { - "@expo/config-plugins": "~5.0.0", "uuid": "^3.4.0" }, "peerDependencies": { @@ -8580,9 +9280,9 @@ } }, "node_modules/expo-font": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-10.2.1.tgz", - "integrity": "sha512-sxy5GrdtY+Ka8Wo5wnrcFFeO6MbYC6Dris5wMLqshvVK6BneJNMUsFvwRfvVgg0TzsmMAc3Rlca2xyZ8ettinw==", + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-11.0.1.tgz", + "integrity": "sha512-LGAIluWZfru0J0n87dzb6pwAB6TVMTEiLcsd/ktozzbn4DlN7SeQy40+ruU6bvAKCOGrnRneYbKSIOGkrd7oNg==", "dependencies": { "fontfaceobserver": "^2.1.0" }, @@ -8590,18 +9290,31 @@ "expo": "*" } }, + "node_modules/expo-json-utils": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/expo-json-utils/-/expo-json-utils-0.4.0.tgz", + "integrity": "sha512-lK6gjea72XTYafpKNNJaMrBK5dYAX8LFLXrp/M1MKJU4Zy7EHd2rKrLwop3GZts8VdwLHeVcMko79SAbhe3i5Q==" + }, "node_modules/expo-keep-awake": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-10.2.0.tgz", - "integrity": "sha512-kIRtO4Hmrvxh4E45IPWG/NiUZsuRe1AQwBT09pq+kx8nm6tUS4B9TeL6+1NFy+qVBLbGKDqoQD5Ez7XYTFtBeQ==", + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-11.0.1.tgz", + "integrity": "sha512-44ZjgLE4lnce2d40Pv8xsjMVc6R5GvgHOwZfkLYtGmgYG9TYrEJeEj5UfSeweXPL3pBFhXKfFU8xpGYMaHdP0A==", "peerDependencies": { "expo": "*" } }, + "node_modules/expo-manifests": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/expo-manifests/-/expo-manifests-0.4.0.tgz", + "integrity": "sha512-IdZjIYDxx4nH0Gb3X4T4/2YknmR/jSLxymAS0m7SfJ9V7Vlu/y0p3lNwUys9/JzihxX9PDIuOi/Y4/uqL6TlXg==", + "dependencies": { + "expo-json-utils": "~0.4.0" + } + }, "node_modules/expo-modules-autolinking": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-0.10.3.tgz", - "integrity": "sha512-av9ln2zwUt303g98raX7sDmESgL3SXs1sbbtIjh1rL7R0676XIUacIKgbydR0/4tMbOShWx14Z9fozpk9xIAJA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-1.0.0.tgz", + "integrity": "sha512-MoRRkOVMoGUH/Lr8XS6UmBIZT/qrwbRt2IzUBALcM6MWZKtDn9Uct9XgMRxue82FJhRCfy9p1xZJVKHBRo4zEA==", "dependencies": { "chalk": "^4.1.0", "commander": "^7.2.0", @@ -8711,9 +9424,9 @@ } }, "node_modules/expo-modules-core": { - "version": "0.11.9", - "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-0.11.9.tgz", - "integrity": "sha512-6AlOE4KHN3/WWbY8hH7W6ceuIFj0qbk1N+UhmMhiCEUas3NvXA6wcH3xjO+8JZ+BRcIB9M4QEeX72j6vDDuExg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-1.0.4.tgz", + "integrity": "sha512-Cf2G8f2h3TGASKNDYXlOwe5CBMmRt32wZzBAmau6qComw0e13Y9sDYORSfgk+NJWvLnHJrInN4qGytxHfal/aA==", "dependencies": { "compare-versions": "^3.4.0", "invariant": "^2.2.4" @@ -8736,24 +9449,6 @@ "expo": "*" } }, - "node_modules/expo-pwa/node_modules/@expo/image-utils": { - "version": "0.3.23", - "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.3.23.tgz", - "integrity": "sha512-nhUVvW0TrRE4jtWzHQl8TR4ox7kcmrc2I0itaeJGjxF5A54uk7avgA0wRt7jP1rdvqQo1Ke1lXyLYREdhN9tPw==", - "dependencies": { - "@expo/spawn-async": "1.5.0", - "chalk": "^4.0.0", - "fs-extra": "9.0.0", - "getenv": "^1.0.0", - "jimp-compact": "0.16.1", - "mime": "^2.4.4", - "node-fetch": "^2.6.0", - "parse-png": "^2.1.0", - "resolve-from": "^5.0.0", - "semver": "7.3.2", - "tempy": "0.3.0" - } - }, "node_modules/expo-pwa/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -8804,59 +9499,105 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==" }, - "node_modules/expo-pwa/node_modules/crypto-random-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==", + "node_modules/expo-pwa/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/expo-pwa/node_modules/fs-extra": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz", - "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==", + "node_modules/expo-pwa/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^1.0.0" + "has-flag": "^4.0.0" }, - "engines": { - "node": ">=10" - } - }, - "node_modules/expo-pwa/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { "node": ">=8" } }, - "node_modules/expo-pwa/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "node_modules/expo-splash-screen": { + "version": "0.17.5", + "resolved": "https://registry.npmjs.org/expo-splash-screen/-/expo-splash-screen-0.17.5.tgz", + "integrity": "sha512-ejSO78hwHXz8T9u8kh8t4r6CR4h70iBvA65gX8GK+dYxZl6/IANPbIb2VnUpND9vqfW+JnkDw+ZFst+gDnkpcQ==", "dependencies": { - "universalify": "^2.0.0" + "@expo/configure-splash-screen": "^0.6.0", + "@expo/prebuild-config": "5.0.7" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "peerDependencies": { + "expo": "*" } }, - "node_modules/expo-pwa/node_modules/jsonfile/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "engines": { - "node": ">= 10.0.0" + "node_modules/expo-status-bar": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/expo-status-bar/-/expo-status-bar-1.4.2.tgz", + "integrity": "sha512-ZWjO6D4ARGYfAd3SWDD3STNudHDhyBZDZjhhseqoEmsf7bS9ykny8KKOhlzJW24qIQNPhkgdvHhaw9fQwMJy3Q==" + }, + "node_modules/expo-updates-interface": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/expo-updates-interface/-/expo-updates-interface-0.8.1.tgz", + "integrity": "sha512-1TPFCTQFHMZbltFGnxig3PbN/b6nO4T0RyL8XqdmYvQY0ElOCprZXQQ8vNDqeLYHgausG1lD4OyJwFzh2SNBSA==", + "peerDependencies": { + "expo": "*" } }, - "node_modules/expo-pwa/node_modules/semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "node_modules/expo/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/expo/node_modules/@expo/config": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-7.0.3.tgz", + "integrity": "sha512-joVtB5o+NF40Tmsdp65UzryRtbnCuMbXkVO4wJnNJO4aaK0EYLdHCYSewORVqNcDfGN0LphQr8VTG2npbd9CJA==", + "dependencies": { + "@babel/code-frame": "~7.10.4", + "@expo/config-plugins": "~5.0.3", + "@expo/config-types": "^47.0.0", + "@expo/json-file": "8.2.36", + "getenv": "^1.0.0", + "glob": "7.1.6", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "semver": "7.3.2", + "slugify": "^1.3.4", + "sucrase": "^3.20.0" + } + }, + "node_modules/expo/node_modules/@expo/config-plugins": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-5.0.4.tgz", + "integrity": "sha512-vzUcVpqOMs3h+hyRdhGwk+eGIOhXa5xYdd92yO17RMNHav3v/+ekMbs7XA2c3lepMO8Yd4/5hqmRw9ZTL6jGzg==", + "dependencies": { + "@expo/config-types": "^47.0.0", + "@expo/json-file": "8.2.36", + "@expo/plist": "0.0.18", + "@expo/sdk-runtime-versions": "^1.0.0", + "@react-native/normalize-color": "^2.0.0", + "chalk": "^4.1.2", + "debug": "^4.3.1", + "find-up": "~5.0.0", + "getenv": "^1.0.0", + "glob": "7.1.6", + "resolve-from": "^5.0.0", + "semver": "^7.3.5", + "slash": "^3.0.0", + "xcode": "^3.0.1", + "xml2js": "0.4.23" + } + }, + "node_modules/expo/node_modules/@expo/config-plugins/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dependencies": { + "lru-cache": "^6.0.0" + }, "bin": { "semver": "bin/semver.js" }, @@ -8864,69 +9605,116 @@ "node": ">=10" } }, - "node_modules/expo-pwa/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/expo/node_modules/@expo/config-types": { + "version": "47.0.0", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-47.0.0.tgz", + "integrity": "sha512-r0pWfuhkv7KIcXMUiNACJmJKKwlTBGMw9VZHNdppS8/0Nve8HZMTkNRFQzTHW1uH3pBj8jEXpyw/2vSWDHex9g==" + }, + "node_modules/expo/node_modules/@expo/json-file": { + "version": "8.2.36", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.36.tgz", + "integrity": "sha512-tOZfTiIFA5KmMpdW9KF7bc6CFiGjb0xnbieJhTGlHrLL+ps2G0OkqmuZ3pFEXBOMnJYUVpnSy++52LFxvpa5ZQ==", "dependencies": { - "has-flag": "^4.0.0" + "@babel/code-frame": "~7.10.4", + "json5": "^1.0.1", + "write-file-atomic": "^2.3.0" + } + }, + "node_modules/expo/node_modules/@expo/plist": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.18.tgz", + "integrity": "sha512-+48gRqUiz65R21CZ/IXa7RNBXgAI/uPSdvJqoN9x1hfL44DNbUoWHgHiEXTx7XelcATpDwNTz6sHLfy0iNqf+w==", + "dependencies": { + "@xmldom/xmldom": "~0.7.0", + "base64-js": "^1.2.3", + "xmlbuilder": "^14.0.0" + } + }, + "node_modules/expo/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/expo-pwa/node_modules/temp-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", - "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==", + "node_modules/expo/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/expo-pwa/node_modules/tempy": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.3.0.tgz", - "integrity": "sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==", + "node_modules/expo/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { - "temp-dir": "^1.0.0", - "type-fest": "^0.3.1", - "unique-string": "^1.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/expo-pwa/node_modules/type-fest": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", - "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", + "node_modules/expo/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/expo/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/expo-pwa/node_modules/unique-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", - "integrity": "sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==", + "node_modules/expo/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==", "dependencies": { - "crypto-random-string": "^1.0.0" + "minimist": "^1.2.0" }, - "engines": { - "node": ">=4" + "bin": { + "json5": "lib/cli.js" } }, - "node_modules/expo-pwa/node_modules/universalify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", - "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", + "node_modules/expo/node_modules/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "bin": { + "semver": "bin/semver.js" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=10" } }, - "node_modules/expo-status-bar": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/expo-status-bar/-/expo-status-bar-1.4.0.tgz", - "integrity": "sha512-vh98g8qMIjig/2XTBsoAWS6Vo2dIIwDWjB3/GiuZ9Lazpxc9GO/APfJ4dar7MibzIDUKIrjotrcL6rLdPH13Ew==" + "node_modules/expo/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } }, "node_modules/express": { "version": "4.18.2", @@ -9972,11 +10760,6 @@ "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/graphql-tag/node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - }, "node_modules/gzip-size": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", @@ -10177,22 +10960,17 @@ "he": "bin/he" } }, - "node_modules/hermes-engine": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/hermes-engine/-/hermes-engine-0.11.0.tgz", - "integrity": "sha512-7aMUlZja2IyLYAcZ69NBnwJAR5ZOYlSllj0oMpx08a8HzxHOys0eKCzfphrf6D0vX1JGO1QQvVsQKe6TkYherw==" - }, "node_modules/hermes-estree": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.6.0.tgz", - "integrity": "sha512-2YTGzJCkhdmT6VuNprWjXnvTvw/3iPNw804oc7yknvQpNKo+vJGZmtvLLCghOZf0OwzKaNAzeIMp71zQbNl09w==" + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.8.0.tgz", + "integrity": "sha512-W6JDAOLZ5pMPMjEiQGLCXSSV7pIBEgRR5zGkxgmzGSXHOxqV5dC/M1Zevqpbm9TZDE5tu358qZf8Vkzmsc+u7Q==" }, "node_modules/hermes-parser": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.6.0.tgz", - "integrity": "sha512-Vf58jBZca2+QBLR9h7B7mdg8oFz2g5ILz1iVouZ5DOrOrAfBmPfJjdjDT8jrO0f+iJ4/hSRrQHqHIjSnTaLUDQ==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.8.0.tgz", + "integrity": "sha512-yZKalg1fTYG5eOiToLUaw69rQfZq/fi+/NtEXRU7N87K/XobNRhRWorh80oSge2lWUiZfTgUvRJH+XgZWrhoqA==", "dependencies": { - "hermes-estree": "0.6.0" + "hermes-estree": "0.8.0" } }, "node_modules/hermes-profile-transformer": { @@ -10361,9 +11139,9 @@ } }, "node_modules/html-webpack-plugin/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dependencies": { "minimist": "^1.2.0" }, @@ -10372,9 +11150,9 @@ } }, "node_modules/html-webpack-plugin/node_modules/loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -10573,6 +11351,18 @@ "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==" }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/hyphenate-style-name": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz", @@ -11126,6 +11916,14 @@ "node": ">=8" } }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "engines": { + "node": ">=8" + } + }, "node_modules/is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -11308,118 +12106,6 @@ "node": ">= 10.14.2" } }, - "node_modules/jest-haste-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", - "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", - "dependencies": { - "@jest/types": "^27.5.1", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^27.5.1", - "jest-serializer": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-haste-map/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-haste-map/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-haste-map/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-haste-map/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-haste-map/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-haste-map/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/jest-haste-map/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-haste-map/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-regex-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", @@ -11658,25 +12344,15 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/jetifier": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/jetifier/-/jetifier-1.6.8.tgz", - "integrity": "sha512-3Zi16h6L5tXDRQJTb221cnRoVG9/9OvreLdLU2/ZjRv/GILL+2Cemt0IKvkowwkDpvouAU1DQPOJ7qaiHeIdrw==", - "bin": { - "jetifier": "bin/jetify", - "jetifier-standalone": "bin/jetifier-standalone", - "jetify": "bin/jetify" - } - }, "node_modules/jimp-compact": { "version": "0.16.1", "resolved": "https://registry.npmjs.org/jimp-compact/-/jimp-compact-0.16.1.tgz", "integrity": "sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==" }, "node_modules/joi": { - "version": "17.6.4", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.4.tgz", - "integrity": "sha512-tPzkTJHZQjSFCc842QpdVpOZ9LI2txApboNUbW70qgnRB14Lzl+oWQOPdF2N4yqyiY14wBGe8lc7f/2hZxbGmw==", + "version": "17.7.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.7.0.tgz", + "integrity": "sha512-1/ugc8djfn93rTE3WRKdCzGGt/EtiYKxITMO4Wiv6q5JL1gl9ePt4kBsl1S499nbosspfctIQTpYIhSmHA3WAg==", "dependencies": { "@hapi/hoek": "^9.0.0", "@hapi/topo": "^5.0.0", @@ -12006,9 +12682,9 @@ "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==" }, "node_modules/json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "bin": { "json5": "lib/cli.js" }, @@ -12084,9 +12760,9 @@ } }, "node_modules/loader-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.3.tgz", - "integrity": "sha512-THWqIsn8QRnvLl0shHYVBN9syumU8pYWEHPTmkiVGd+7K5eFNVSY6AJhRvgGF70gg1Dz+l/k8WicvFCxdEs60A==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -12165,9 +12841,9 @@ } }, "node_modules/loglevel": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.0.tgz", - "integrity": "sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz", + "integrity": "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==", "engines": { "node": ">= 0.6.0" }, @@ -12195,11 +12871,6 @@ "tslib": "^2.0.3" } }, - "node_modules/lower-case/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - }, "node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -12392,6 +13063,17 @@ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" }, + "node_modules/merge-options": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz", + "integrity": "sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==", + "dependencies": { + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -12414,9 +13096,9 @@ } }, "node_modules/metro": { - "version": "0.70.3", - "resolved": "https://registry.npmjs.org/metro/-/metro-0.70.3.tgz", - "integrity": "sha512-uEWS7xg8oTetQDABYNtsyeUjdLhH3KAvLFpaFFoJqUpOk2A3iygszdqmjobFl6W4zrvKDJS+XxdMR1roYvUhTw==", + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro/-/metro-0.72.3.tgz", + "integrity": "sha512-Hb3xTvPqex8kJ1hutQNZhQadUKUwmns/Du9GikmWKBFrkiG3k3xstGAyO5t5rN9JSUEzQT6y9SWzSSOGogUKIg==", "dependencies": { "@babel/code-frame": "^7.0.0", "@babel/core": "^7.14.0", @@ -12436,27 +13118,27 @@ "error-stack-parser": "^2.0.6", "fs-extra": "^1.0.0", "graceful-fs": "^4.2.4", - "hermes-parser": "0.6.0", + "hermes-parser": "0.8.0", "image-size": "^0.6.0", "invariant": "^2.2.4", - "jest-haste-map": "^27.3.1", "jest-worker": "^27.2.0", "lodash.throttle": "^4.1.1", - "metro-babel-transformer": "0.70.3", - "metro-cache": "0.70.3", - "metro-cache-key": "0.70.3", - "metro-config": "0.70.3", - "metro-core": "0.70.3", - "metro-hermes-compiler": "0.70.3", - "metro-inspector-proxy": "0.70.3", - "metro-minify-uglify": "0.70.3", - "metro-react-native-babel-preset": "0.70.3", - "metro-resolver": "0.70.3", - "metro-runtime": "0.70.3", - "metro-source-map": "0.70.3", - "metro-symbolicate": "0.70.3", - "metro-transform-plugins": "0.70.3", - "metro-transform-worker": "0.70.3", + "metro-babel-transformer": "0.72.3", + "metro-cache": "0.72.3", + "metro-cache-key": "0.72.3", + "metro-config": "0.72.3", + "metro-core": "0.72.3", + "metro-file-map": "0.72.3", + "metro-hermes-compiler": "0.72.3", + "metro-inspector-proxy": "0.72.3", + "metro-minify-uglify": "0.72.3", + "metro-react-native-babel-preset": "0.72.3", + "metro-resolver": "0.72.3", + "metro-runtime": "0.72.3", + "metro-source-map": "0.72.3", + "metro-symbolicate": "0.72.3", + "metro-transform-plugins": "0.72.3", + "metro-transform-worker": "0.72.3", "mime-types": "^2.1.27", "node-fetch": "^2.2.0", "nullthrows": "^1.1.1", @@ -12474,62 +13156,96 @@ } }, "node_modules/metro-babel-transformer": { - "version": "0.70.3", - "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.70.3.tgz", - "integrity": "sha512-bWhZRMn+mIOR/s3BDpFevWScz9sV8FGktVfMlF1eJBLoX24itHDbXvTktKBYi38PWIKcHedh6THSFpJogfuwNA==", + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.72.3.tgz", + "integrity": "sha512-PTOR2zww0vJbWeeM3qN90WKENxCLzv9xrwWaNtwVlhcV8/diNdNe82sE1xIxLFI6OQuAVwNMv1Y7VsO2I7Ejrw==", "dependencies": { "@babel/core": "^7.14.0", - "hermes-parser": "0.6.0", - "metro-source-map": "0.70.3", + "hermes-parser": "0.8.0", + "metro-source-map": "0.72.3", "nullthrows": "^1.1.1" } }, "node_modules/metro-cache": { - "version": "0.70.3", - "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.70.3.tgz", - "integrity": "sha512-iCix/+z812fUqa6KlOxaTkY6LQQDoXIe/VljXkGIvpygSCmYyhjQpfQVZEVVPezFmUBYXNdabdQ6cYx6JX3yMg==", + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.72.3.tgz", + "integrity": "sha512-++eyZzwkXvijWRV3CkDbueaXXGlVzH9GA52QWqTgAOgSHYp5jWaDwLQ8qpsMkQzpwSyIF4LLK9aI3eA7Xa132A==", "dependencies": { - "metro-core": "0.70.3", + "metro-core": "0.72.3", "rimraf": "^2.5.4" } }, "node_modules/metro-cache-key": { - "version": "0.70.3", - "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.70.3.tgz", - "integrity": "sha512-0zpw+IcpM3hmGd5sKMdxNv3sbOIUYnMUvx1/yaM6vNRReSPmOLX0bP8fYf3CGgk8NEreZ1OHbVsuw7bdKt40Mw==" + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.72.3.tgz", + "integrity": "sha512-kQzmF5s3qMlzqkQcDwDxrOaVxJ2Bh6WRXWdzPnnhsq9LcD3B3cYqQbRBS+3tSuXmathb4gsOdhWslOuIsYS8Rg==" }, "node_modules/metro-config": { - "version": "0.70.3", - "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.70.3.tgz", - "integrity": "sha512-SSCDjSTygoCgzoj61DdrBeJzZDRwQxUEfcgc6t6coxWSExXNR4mOngz0q4SAam49Bmjq9J2Jft6qUKnUTPrRgA==", + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.72.3.tgz", + "integrity": "sha512-VEsAIVDkrIhgCByq8HKTWMBjJG6RlYwWSu1Gnv3PpHa0IyTjKJtB7wC02rbTjSaemcr82scldf2R+h6ygMEvsw==", "dependencies": { "cosmiconfig": "^5.0.5", "jest-validate": "^26.5.2", - "metro": "0.70.3", - "metro-cache": "0.70.3", - "metro-core": "0.70.3", - "metro-runtime": "0.70.3" + "metro": "0.72.3", + "metro-cache": "0.72.3", + "metro-core": "0.72.3", + "metro-runtime": "0.72.3" } }, "node_modules/metro-core": { - "version": "0.70.3", - "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.70.3.tgz", - "integrity": "sha512-NzfHB/w5R7yLaOeU1tzPTbBzCRsYSvpKJkLMP0yudszKZzIAZqNdjoEJ9GZ688Wi0ynZxcU0BxukXh4my80ZBw==", + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.72.3.tgz", + "integrity": "sha512-KuYWBMmLB4+LxSMcZ1dmWabVExNCjZe3KysgoECAIV+wyIc2r4xANq15GhS94xYvX1+RqZrxU1pa0jQ5OK+/6A==", "dependencies": { - "jest-haste-map": "^27.3.1", "lodash.throttle": "^4.1.1", - "metro-resolver": "0.70.3" + "metro-resolver": "0.72.3" } }, + "node_modules/metro-file-map": { + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.72.3.tgz", + "integrity": "sha512-LhuRnuZ2i2uxkpFsz1XCDIQSixxBkBG7oICAFyLyEMDGbcfeY6/NexphfLdJLTghkaoJR5ARFMiIxUg9fIY/pA==", + "dependencies": { + "abort-controller": "^3.0.0", + "anymatch": "^3.0.3", + "debug": "^2.2.0", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.4", + "invariant": "^2.2.4", + "jest-regex-util": "^27.0.6", + "jest-serializer": "^27.0.6", + "jest-util": "^27.2.0", + "jest-worker": "^27.2.0", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "optionalDependencies": { + "fsevents": "^2.1.2" + } + }, + "node_modules/metro-file-map/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/metro-file-map/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, "node_modules/metro-hermes-compiler": { - "version": "0.70.3", - "resolved": "https://registry.npmjs.org/metro-hermes-compiler/-/metro-hermes-compiler-0.70.3.tgz", - "integrity": "sha512-W6WttLi4E72JL/NyteQ84uxYOFMibe0PUr9aBKuJxxfCq6QRnJKOVcNY0NLW0He2tneXGk+8ZsNz8c0flEvYqg==" + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-hermes-compiler/-/metro-hermes-compiler-0.72.3.tgz", + "integrity": "sha512-QWDQASMiXNW3j8uIQbzIzCdGYv5PpAX/ZiF4/lTWqKRWuhlkP4auhVY4eqdAKj5syPx45ggpjkVE0p8hAPDZYg==" }, "node_modules/metro-inspector-proxy": { - "version": "0.70.3", - "resolved": "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.70.3.tgz", - "integrity": "sha512-qQoNdPGrmyoJSWYkxSDpTaAI8xyqVdNDVVj9KRm1PG8niSuYmrCCFGLLFsMvkVYwsCWUGHoGBx0UoAzVp14ejw==", + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.72.3.tgz", + "integrity": "sha512-UPFkaq2k93RaOi+eqqt7UUmqy2ywCkuxJLasQ55+xavTUS+TQSyeTnTczaYn+YKw+izLTLllGcvqnQcZiWYhGw==", "dependencies": { "connect": "^3.6.5", "debug": "^2.2.0", @@ -12574,17 +13290,17 @@ } }, "node_modules/metro-minify-uglify": { - "version": "0.70.3", - "resolved": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.70.3.tgz", - "integrity": "sha512-oHyjV9WDqOlDE1FPtvs6tIjjeY/oP1PNUPYL1wqyYtqvjN+zzAOrcbsAAL1sv+WARaeiMsWkF2bwtNo+Hghoog==", + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.72.3.tgz", + "integrity": "sha512-dPXqtMI8TQcj0g7ZrdhC8X3mx3m3rtjtMuHKGIiEXH9CMBvrET8IwrgujQw2rkPcXiSiX8vFDbGMIlfxefDsKA==", "dependencies": { "uglify-es": "^3.1.9" } }, "node_modules/metro-react-native-babel-preset": { - "version": "0.70.3", - "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.70.3.tgz", - "integrity": "sha512-4Nxc1zEiHEu+GTdEMEsHnRgfaBkg8f/Td3+FcQ8NTSvs+xL3LBrQy6N07idWSQZHIdGFf+tTHvRfSIWLD8u8Tg==", + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.72.3.tgz", + "integrity": "sha512-uJx9y/1NIqoYTp6ZW1osJ7U5ZrXGAJbOQ/Qzl05BdGYvN1S7Qmbzid6xOirgK0EIT0pJKEEh1s8qbassYZe4cw==", "dependencies": { "@babel/core": "^7.14.0", "@babel/plugin-proposal-async-generator-functions": "^7.0.0", @@ -12631,16 +13347,16 @@ } }, "node_modules/metro-react-native-babel-transformer": { - "version": "0.70.3", - "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.70.3.tgz", - "integrity": "sha512-WKBU6S/G50j9cfmFM4k4oRYprd8u3qjleD4so1E2zbTNILg+gYla7ZFGCAvi2G0ZcqS2XuGCR375c2hF6VVvwg==", + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.72.3.tgz", + "integrity": "sha512-Ogst/M6ujYrl/+9mpEWqE3zF7l2mTuftDTy3L8wZYwX1pWUQWQpfU1aJBeWiLxt1XlIq+uriRjKzKoRoIK57EA==", "dependencies": { "@babel/core": "^7.14.0", "babel-preset-fbjs": "^3.4.0", - "hermes-parser": "0.6.0", - "metro-babel-transformer": "0.70.3", - "metro-react-native-babel-preset": "0.70.3", - "metro-source-map": "0.70.3", + "hermes-parser": "0.8.0", + "metro-babel-transformer": "0.72.3", + "metro-react-native-babel-preset": "0.72.3", + "metro-source-map": "0.72.3", "nullthrows": "^1.1.1" }, "peerDependencies": { @@ -12648,32 +13364,33 @@ } }, "node_modules/metro-resolver": { - "version": "0.70.3", - "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.70.3.tgz", - "integrity": "sha512-5Pc5S/Gs4RlLbziuIWtvtFd9GRoILlaRC8RZDVq5JZWcWHywKy/PjNmOBNhpyvtRlzpJfy/ssIfLhu8zINt1Mw==", + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.72.3.tgz", + "integrity": "sha512-wu9zSMGdxpKmfECE7FtCdpfC+vrWGTdVr57lDA0piKhZV6VN6acZIvqQ1yZKtS2WfKsngncv5VbB8Y5eHRQP3w==", "dependencies": { "absolute-path": "^0.0.0" } }, "node_modules/metro-runtime": { - "version": "0.70.3", - "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.70.3.tgz", - "integrity": "sha512-22xU7UdXZacniTIDZgN2EYtmfau2pPyh97Dcs+cWrLcJYgfMKjWBtesnDcUAQy3PHekDYvBdJZkoQUeskYTM+w==", + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.72.3.tgz", + "integrity": "sha512-3MhvDKfxMg2u7dmTdpFOfdR71NgNNo4tzAyJumDVQKwnHYHN44f2QFZQqpPBEmqhWlojNeOxsqFsjYgeyMx6VA==", "dependencies": { - "@babel/runtime": "^7.0.0" + "@babel/runtime": "^7.0.0", + "react-refresh": "^0.4.0" } }, "node_modules/metro-source-map": { - "version": "0.70.3", - "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.70.3.tgz", - "integrity": "sha512-zsYtZGrwRbbGEFHtmMqqeCH9K9aTGNVPsurMOWCUeQA3VGyVGXPGtLMC+CdAM9jLpUyg6jw2xh0esxi+tYH7Uw==", + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.72.3.tgz", + "integrity": "sha512-eNtpjbjxSheXu/jYCIDrbNEKzMGOvYW6/ePYpRM7gDdEagUOqKOCsi3St8NJIQJzZCsxD2JZ2pYOiomUSkT1yQ==", "dependencies": { "@babel/traverse": "^7.14.0", "@babel/types": "^7.0.0", "invariant": "^2.2.4", - "metro-symbolicate": "0.70.3", + "metro-symbolicate": "0.72.3", "nullthrows": "^1.1.1", - "ob1": "0.70.3", + "ob1": "0.72.3", "source-map": "^0.5.6", "vlq": "^1.0.0" } @@ -12687,12 +13404,12 @@ } }, "node_modules/metro-symbolicate": { - "version": "0.70.3", - "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.70.3.tgz", - "integrity": "sha512-JTYkF1dpeDUssQ84juE1ycnhHki2ylJBBdJE1JHtfu5oC+z1ElDbBdPHq90Uvt8HbRov/ZAnxvv7Zy6asS+WCA==", + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.72.3.tgz", + "integrity": "sha512-eXG0NX2PJzJ/jTG4q5yyYeN2dr1cUqUaY7worBB0SP5bRWRc3besfb+rXwfh49wTFiL5qR0oOawkU4ZiD4eHXw==", "dependencies": { "invariant": "^2.2.4", - "metro-source-map": "0.70.3", + "metro-source-map": "0.72.3", "nullthrows": "^1.1.1", "source-map": "^0.5.6", "through2": "^2.0.1", @@ -12714,9 +13431,9 @@ } }, "node_modules/metro-transform-plugins": { - "version": "0.70.3", - "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.70.3.tgz", - "integrity": "sha512-dQRIJoTkWZN2IVS2KzgS1hs7ZdHDX3fS3esfifPkqFAEwHiLctCf0EsPgIknp0AjMLvmGWfSLJigdRB/dc0ASw==", + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.72.3.tgz", + "integrity": "sha512-D+TcUvCKZbRua1+qujE0wV1onZvslW6cVTs7dLCyC2pv20lNHjFr1GtW01jN2fyKR2PcRyMjDCppFd9VwDKnSg==", "dependencies": { "@babel/core": "^7.14.0", "@babel/generator": "^7.14.0", @@ -12726,22 +13443,22 @@ } }, "node_modules/metro-transform-worker": { - "version": "0.70.3", - "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.70.3.tgz", - "integrity": "sha512-MtVVsnHhhBOp9GRLCdAb2mD1dTCsIzT4+m34KMRdBDCEbDIb90YafT5prpU8qbj5uKd0o2FOQdrJ5iy5zQilHw==", + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.72.3.tgz", + "integrity": "sha512-WsuWj9H7i6cHuJuy+BgbWht9DK5FOgJxHLGAyULD5FJdTG9rSMFaHDO5WfC0OwQU5h4w6cPT40iDuEGksM7+YQ==", "dependencies": { "@babel/core": "^7.14.0", "@babel/generator": "^7.14.0", "@babel/parser": "^7.14.0", "@babel/types": "^7.0.0", "babel-preset-fbjs": "^3.4.0", - "metro": "0.70.3", - "metro-babel-transformer": "0.70.3", - "metro-cache": "0.70.3", - "metro-cache-key": "0.70.3", - "metro-hermes-compiler": "0.70.3", - "metro-source-map": "0.70.3", - "metro-transform-plugins": "0.70.3", + "metro": "0.72.3", + "metro-babel-transformer": "0.72.3", + "metro-cache": "0.72.3", + "metro-cache-key": "0.72.3", + "metro-hermes-compiler": "0.72.3", + "metro-source-map": "0.72.3", + "metro-transform-plugins": "0.72.3", "nullthrows": "^1.1.1" } }, @@ -12981,9 +13698,9 @@ } }, "node_modules/mini-css-extract-plugin/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dependencies": { "minimist": "^1.2.0" }, @@ -12992,9 +13709,9 @@ } }, "node_modules/mini-css-extract-plugin/node_modules/loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -13311,11 +14028,6 @@ "tslib": "^2.0.3" } }, - "node_modules/no-case/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - }, "node_modules/nocache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz", @@ -13510,9 +14222,9 @@ "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==" }, "node_modules/ob1": { - "version": "0.70.3", - "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.70.3.tgz", - "integrity": "sha512-Vy9GGhuXgDRY01QA6kdhToPd8AkLdLpX9GjH5kpqluVqTu70mgOm7tpGoJDZGaNbr9nJlJgnipqHJQRPORixIQ==" + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.72.3.tgz", + "integrity": "sha512-OnVto25Sj7Ghp0vVm2THsngdze3tVq0LOg9LUHsAVXMecpqOP0Y8zaATW8M9gEgs2lNEAcCqV0P/hlmOPhVRvg==" }, "node_modules/object-assign": { "version": "4.1.1", @@ -13945,11 +14657,6 @@ "tslib": "^2.0.3" } }, - "node_modules/param-case/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - }, "node_modules/parse-asn1": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", @@ -13985,6 +14692,14 @@ "node": ">=10" } }, + "node_modules/parse-png/node_modules/pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/parse-srcset": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz", @@ -14007,11 +14722,6 @@ "tslib": "^2.0.3" } }, - "node_modules/pascal-case/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - }, "node_modules/pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", @@ -14291,11 +15001,11 @@ } }, "node_modules/pngjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", - "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", "engines": { - "node": ">=4.0.0" + "node": ">=10.13.0" } }, "node_modules/pnp-webpack-plugin": { @@ -15048,6 +15758,11 @@ "node": ">= 0.10" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "node_modules/prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", @@ -15252,9 +15967,9 @@ } }, "node_modules/react": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.0.0.tgz", - "integrity": "sha512-x+VL6wbT4JRVPm7EGxXhZ8w8LTROaxPXOqhlGyVSrv0sB1jkyFGgXxJ8LVoPRLvPR6/CIZGFmfzqUa2NYeMr2A==", + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.1.0.tgz", + "integrity": "sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ==", "dependencies": { "loose-envify": "^1.1.0" }, @@ -15553,15 +16268,15 @@ } }, "node_modules/react-dom": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.0.0.tgz", - "integrity": "sha512-XqX7uzmFo0pUceWFCt7Gff6IyIMzFUn7QMZrbrQfGxtaxXZIcGQzoNpRLE3fQLnS4XzLLPMZX2T9TRcSrasicw==", + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.1.0.tgz", + "integrity": "sha512-fU1Txz7Budmvamp7bshe4Zi32d0ll7ect+ccxNu9FlObT605GOEB8BfO4tmRJ39R5Zj831VCpvQ05QPBW5yb+w==", "dependencies": { "loose-envify": "^1.1.0", - "scheduler": "^0.21.0" + "scheduler": "^0.22.0" }, "peerDependencies": { - "react": "^18.0.0" + "react": "^18.1.0" } }, "node_modules/react-error-overlay": { @@ -15586,14 +16301,14 @@ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, "node_modules/react-native": { - "version": "0.69.6", - "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.69.6.tgz", - "integrity": "sha512-wwXpqM+12kdEYdBZCJUb5SBu95CzgejrwFeYJ78RzHZV/Sj6DBRekbsHGrDDsY4R25QXALQxy4DQYQCObVvWjA==", - "dependencies": { - "@jest/create-cache-key-function": "^27.0.1", - "@react-native-community/cli": "^8.0.4", - "@react-native-community/cli-platform-android": "^8.0.4", - "@react-native-community/cli-platform-ios": "^8.0.4", + "version": "0.70.5", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.70.5.tgz", + "integrity": "sha512-5NZM80LC3L+TIgQX/09yiyy48S73wMgpIgN5cCv3XTMR394+KpDI3rBZGH4aIgWWuwijz31YYVF5504+9n2Zfw==", + "dependencies": { + "@jest/create-cache-key-function": "^29.0.3", + "@react-native-community/cli": "9.2.1", + "@react-native-community/cli-platform-android": "9.2.1", + "@react-native-community/cli-platform-ios": "9.2.1", "@react-native/assets": "1.0.0", "@react-native/normalize-color": "2.0.0", "@react-native/polyfills": "2.0.0", @@ -15601,24 +16316,23 @@ "anser": "^1.4.9", "base64-js": "^1.1.2", "event-target-shim": "^5.0.1", - "hermes-engine": "~0.11.0", "invariant": "^2.2.4", "jsc-android": "^250230.2.1", "memoize-one": "^5.0.0", - "metro-react-native-babel-transformer": "0.70.3", - "metro-runtime": "0.70.3", - "metro-source-map": "0.70.3", + "metro-react-native-babel-transformer": "0.72.3", + "metro-runtime": "0.72.3", + "metro-source-map": "0.72.3", "mkdirp": "^0.5.1", "nullthrows": "^1.1.1", "pretty-format": "^26.5.2", - "promise": "^8.2.0", + "promise": "^8.0.3", "react-devtools-core": "4.24.0", - "react-native-codegen": "^0.69.2", - "react-native-gradle-plugin": "^0.0.7", + "react-native-codegen": "^0.70.6", + "react-native-gradle-plugin": "^0.70.3", "react-refresh": "^0.4.0", - "react-shallow-renderer": "16.15.0", + "react-shallow-renderer": "^16.15.0", "regenerator-runtime": "^0.13.2", - "scheduler": "^0.21.0", + "scheduler": "^0.22.0", "stacktrace-parser": "^0.1.3", "use-sync-external-store": "^1.0.0", "whatwg-fetch": "^3.0.0", @@ -15631,13 +16345,13 @@ "node": ">=14" }, "peerDependencies": { - "react": "18.0.0" + "react": "18.1.0" } }, "node_modules/react-native-codegen": { - "version": "0.69.2", - "resolved": "https://registry.npmjs.org/react-native-codegen/-/react-native-codegen-0.69.2.tgz", - "integrity": "sha512-yPcgMHD4mqLbckqnWjFBaxomDnBREfRjDi2G/WxNyPBQLD+PXUEmZTkDx6QoOXN+Bl2SkpnNOSsLE2+/RUHoPw==", + "version": "0.70.6", + "resolved": "https://registry.npmjs.org/react-native-codegen/-/react-native-codegen-0.70.6.tgz", + "integrity": "sha512-kdwIhH2hi+cFnG5Nb8Ji2JwmcCxnaOOo9440ov7XDzSvGfmUStnCzl+MCW8jLjqHcE4icT7N9y+xx4f50vfBTw==", "dependencies": { "@babel/parser": "^7.14.0", "flow-parser": "^0.121.0", @@ -15654,9 +16368,9 @@ } }, "node_modules/react-native-gesture-handler": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.5.0.tgz", - "integrity": "sha512-djZdcprFf08PZC332D+AeG5wcGeAPhzfCJtB3otUgOgTlvjVXmg/SLFdPJSpzLBqkRAmrC77tM79QgKbuLxkfw==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.8.0.tgz", + "integrity": "sha512-poOSfz/w0IyD6Qwq7aaIRRfEaVTl1ecQFoyiIbpOpfNTjm2B1niY2FLrdVQIOtIOe+K9nH55Qal04nr4jGkHdQ==", "dependencies": { "@egjs/hammerjs": "^2.0.17", "hoist-non-react-statics": "^3.3.0", @@ -15670,9 +16384,9 @@ } }, "node_modules/react-native-gradle-plugin": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/react-native-gradle-plugin/-/react-native-gradle-plugin-0.0.7.tgz", - "integrity": "sha512-+4JpbIx42zGTONhBTIXSyfyHICHC29VTvhkkoUOJAh/XHPEixpuBduYgf6Y4y9wsN1ARlQhBBoptTvXvAFQf5g==" + "version": "0.70.3", + "resolved": "https://registry.npmjs.org/react-native-gradle-plugin/-/react-native-gradle-plugin-0.70.3.tgz", + "integrity": "sha512-oOanj84fJEXUg9FoEAQomA8ISG+DVIrTZ3qF7m69VQUJyOGYyDZmPqKcjvRku4KXlEH6hWO9i4ACLzNBh8gC0A==" }, "node_modules/react-native-iphone-x-helper": { "version": "1.3.1", @@ -15682,6 +16396,70 @@ "react-native": ">=0.42.0" } }, + "node_modules/react-native-material-buttons": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/react-native-material-buttons/-/react-native-material-buttons-0.5.0.tgz", + "integrity": "sha512-WRQyCG1hd4ZvTr+YdMoyKwoyt/onaFAh8DmyC8BxZ0JT1gy/hs9qTYAilbYb8C1l+okTusalyJeqoPh5GzA1pQ==", + "dependencies": { + "prop-types": "^15.5.9", + "react-native-material-ripple": "^0.7.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-material-buttons/node_modules/react-native-material-ripple": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/react-native-material-ripple/-/react-native-material-ripple-0.7.5.tgz", + "integrity": "sha512-pHUrmxuPQMBcOssFfr+kERfAwkLhHqiP2ZTJeUsC77W9h+k2IU17T/cOb184S1jkbZP3CFJcOLd9V7RW112YGQ==", + "dependencies": { + "prop-types": "^15.5.10" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-material-dropdown": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/react-native-material-dropdown/-/react-native-material-dropdown-0.11.1.tgz", + "integrity": "sha512-GoY3bHUzLnHM2OWM2jWeFssJCU8Uwml7z6OpVeC/RqUPhRwvPCd0UeEZKI6QU5/U8SoS6VJWdWA1Vp1WB1ze7Q==", + "dependencies": { + "prop-types": "^15.5.9", + "react-native-material-buttons": "^0.5.0", + "react-native-material-ripple": "^0.8.0", + "react-native-material-textfield": "^0.12.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-material-ripple": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/react-native-material-ripple/-/react-native-material-ripple-0.8.0.tgz", + "integrity": "sha512-ZgamZTJlrAPMg5Im8+ruK3zsSDHdPKgYA52qK7g0x/LJvzE/99M01kjmUVERqQAHxlVzOfIfVpxn9SjzNn6TEA==", + "dependencies": { + "prop-types": "^15.5.10" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-material-textfield": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/react-native-material-textfield/-/react-native-material-textfield-0.12.0.tgz", + "integrity": "sha512-eB2xjsOtdrQ4KuikXeGf0CSYS4Vg9K7ii5YsWX57VvzPSVp08P8bdqTrLY6QucBR397YWlewN/n17H34kd7teA==", + "dependencies": { + "prop-types": "^15.5.9" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, "node_modules/react-native-paper": { "version": "5.0.0-rc.9", "resolved": "https://registry.npmjs.org/react-native-paper/-/react-native-paper-5.0.0-rc.9.tgz", @@ -15698,11 +16476,10 @@ } }, "node_modules/react-native-reanimated": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-2.9.1.tgz", - "integrity": "sha512-309SIhDBwY4F1n6e5Mr5D1uPZm2ESIcmZsGXHUu8hpKX4oIOlZj2MilTk+kHhi05LjChoJkcpfkstotCJmPRPg==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-2.12.0.tgz", + "integrity": "sha512-nrlPyw+Hx9u4iJhZk9PoTvDo/QmVAd+bo7OK9Tv3hveNEF9++5oig/g3Uv9V93shy9avTYGsUprUvAEt/xdzeQ==", "dependencies": { - "@babel/plugin-proposal-export-namespace-from": "^7.17.12", "@babel/plugin-transform-object-assign": "^7.16.7", "@babel/preset-typescript": "^7.16.7", "@types/invariant": "^2.2.35", @@ -15718,18 +16495,18 @@ } }, "node_modules/react-native-safe-area-context": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-4.3.1.tgz", - "integrity": "sha512-cEr7fknJCToTrSyDCVNg0GRdRMhyLeQa2NZwVCuzEQcWedOw/59ExomjmzCE4rxrKXs6OJbyfNtFRNyewDaHuA==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-4.4.1.tgz", + "integrity": "sha512-N9XTjiuD73ZpVlejHrUWIFZc+6Z14co1K/p1IFMkImU7+avD69F3y+lhkqA2hN/+vljdZrBSiOwXPkuo43nFQA==", "peerDependencies": { "react": "*", "react-native": "*" } }, "node_modules/react-native-screens": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-3.15.0.tgz", - "integrity": "sha512-ezC5TibsUYyqPuuHpZoM3iEl6bRzCVBMJeGaFkn7xznuOt1VwkZVub0BvafIEYR/+AQC/RjxzMSQPs1qal0+wA==", + "version": "3.18.2", + "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-3.18.2.tgz", + "integrity": "sha512-ANUEuvMUlsYJ1QKukEhzhfrvOUO9BVH9Nzg+6eWxpn3cfD/O83yPBOF8Mx6x5H/2+sMy+VS5x/chWOOo/U7QJw==", "dependencies": { "react-freeze": "^1.0.0", "warn-once": "^0.1.0" @@ -15739,6 +16516,11 @@ "react-native": "*" } }, + "node_modules/react-native-select-dropdown": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/react-native-select-dropdown/-/react-native-select-dropdown-3.2.1.tgz", + "integrity": "sha512-4kLmjm3z9JUzIw98oKdQYvk8XsxhNg5NfKN112m1oIufu+6w2HcPw438rVpXzrWntvs9ZLf8Za6ZQO6GqZHdzA==" + }, "node_modules/react-native-vector-icons": { "version": "9.2.0", "resolved": "https://registry.npmjs.org/react-native-vector-icons/-/react-native-vector-icons-9.2.0.tgz", @@ -15905,11 +16687,6 @@ "node": ">=0.10.0" } }, - "node_modules/recast/node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - }, "node_modules/recursive-readdir": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", @@ -15954,9 +16731,9 @@ "integrity": "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==" }, "node_modules/regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", "dependencies": { "@babel/runtime": "^7.8.4" } @@ -16194,9 +16971,9 @@ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" }, "node_modules/reselect": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.6.tgz", - "integrity": "sha512-ZovIuXqto7elwnxyXbBtCPo9YFEr3uJqj2rRbcOOog1bmu2Ag85M4hixSwFWyaBMKXNgvPaJ9OSu9SkBPIeJHQ==" + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.7.tgz", + "integrity": "sha512-Zu1xbUt3/OPwsXL46hvOOoQrap2azE7ZQbokq61BQfiXvhewsKDwhMeZjTX9sX0nvw1t/U5Audyn1I9P/m9z0A==" }, "node_modules/resolve": { "version": "1.22.1", @@ -16387,9 +17164,9 @@ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, "node_modules/scheduler": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.21.0.tgz", - "integrity": "sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.22.0.tgz", + "integrity": "sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ==", "dependencies": { "loose-envify": "^1.1.0" } @@ -16561,6 +17338,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/serialize-error/node_modules/type-fest": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.12.0.tgz", + "integrity": "sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/serialize-javascript": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", @@ -16763,17 +17551,6 @@ "plist": "^3.0.5" } }, - "node_modules/simple-plist/node_modules/bplist-parser": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.1.tgz", - "integrity": "sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==", - "dependencies": { - "big-integer": "1.6.x" - }, - "engines": { - "node": ">= 5.10.0" - } - }, "node_modules/simple-swizzle": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", @@ -17535,9 +18312,9 @@ "integrity": "sha512-EBNuMVSxpssuFcJq/c4zmZ4tpCyX9E27hz5xPJhw4URjRHcYXPHh8rDHY/tJsw5gtP0+tIL3IBYeQVIYjdZFhg==" }, "node_modules/sucrase": { - "version": "3.28.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.28.0.tgz", - "integrity": "sha512-TK9600YInjuiIhVM3729rH4ZKPOsGeyXUwY+Ugu9eilNbdTFyHr6XcAGYbRVZPDgWj6tgI7bx95aaJjHnbffag==", + "version": "3.29.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.29.0.tgz", + "integrity": "sha512-bZPAuGA5SdFHuzqIhTAqt9fvNEo9rESqXIG3oiKdF8K4UmkQxC4KlNL3lVyAErXp+mPvUqZ5l13qx6TrDIGf3A==", "dependencies": { "commander": "^4.0.0", "glob": "7.1.6", @@ -17748,11 +18525,11 @@ } }, "node_modules/temp-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==", "engines": { - "node": ">=8" + "node": ">=4" } }, "node_modules/temp/node_modules/rimraf": { @@ -17764,43 +18541,16 @@ } }, "node_modules/tempy": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.7.1.tgz", - "integrity": "sha512-vXPxwOyaNVi9nyczO16mxmHGpl6ASC5/TVhRRHpqeYHvKQm58EaWNvZXxAhR0lYYnBOQFjXjhzeLsaXdjxLjRg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.3.0.tgz", + "integrity": "sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==", "dependencies": { - "del": "^6.0.0", - "is-stream": "^2.0.0", - "temp-dir": "^2.0.0", - "type-fest": "^0.16.0", - "unique-string": "^2.0.0" - }, - "engines": { - "node": ">=10" + "temp-dir": "^1.0.0", + "type-fest": "^0.3.1", + "unique-string": "^1.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/tempy/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/tempy/node_modules/type-fest": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", - "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/terminal-link": { @@ -18232,9 +18982,9 @@ } }, "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" }, "node_modules/tty-browserify": { "version": "0.0.0", @@ -18242,14 +18992,11 @@ "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==" }, "node_modules/type-fest": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.12.0.tgz", - "integrity": "sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, "node_modules/type-is": { @@ -18415,14 +19162,14 @@ } }, "node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==", "dependencies": { - "crypto-random-string": "^2.0.0" + "crypto-random-string": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, "node_modules/universalify": { @@ -19838,9 +20585,9 @@ } }, "node_modules/webpack/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dependencies": { "minimist": "^1.2.0" }, @@ -19849,9 +20596,9 @@ } }, "node_modules/webpack/node_modules/loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -20145,6 +20892,17 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/xml-js": { + "version": "1.6.11", + "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", + "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", + "dependencies": { + "sax": "^1.2.4" + }, + "bin": { + "xml-js": "bin/cli.js" + } + }, "node_modules/xml2js": { "version": "0.4.23", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", @@ -20319,9 +21077,9 @@ } }, "@babel/compat-data": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.4.tgz", - "integrity": "sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw==" + "version": "7.20.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz", + "integrity": "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==" }, "@babel/core": { "version": "7.19.6", @@ -20346,11 +21104,11 @@ } }, "@babel/generator": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.6.tgz", - "integrity": "sha512-oHGRUQeoX1QrKeJIKVe0hwjGqNnVYsM5Nep5zo0uE0m42sLH+Fsd2pStJ5sRM1bNyTUUoz0pe2lTeMJrb/taTA==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz", + "integrity": "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==", "requires": { - "@babel/types": "^7.19.4", + "@babel/types": "^7.20.7", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, @@ -20385,27 +21143,43 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz", - "integrity": "sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", "requires": { - "@babel/compat-data": "^7.19.3", + "@babel/compat-data": "^7.20.5", "@babel/helper-validator-option": "^7.18.6", "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", "semver": "^6.3.0" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "requires": { + "yallist": "^3.0.2" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + } } }, "@babel/helper-create-class-features-plugin": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz", - "integrity": "sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.7.tgz", + "integrity": "sha512-LtoWbDXOaidEf50hmdDqn9g8VEzsorMexoWMQdQODbvmqYmaF23pBP5VNPAGIFHsFQCIeKokDiz3CH5Y2jlY6w==", "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-function-name": "^7.19.0", - "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.20.7", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-replace-supers": "^7.20.7", "@babel/helper-split-export-declaration": "^7.18.6" } }, @@ -20462,11 +21236,11 @@ } }, "@babel/helper-member-expression-to-functions": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", - "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz", + "integrity": "sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==", "requires": { - "@babel/types": "^7.18.9" + "@babel/types": "^7.20.7" } }, "@babel/helper-module-imports": { @@ -20478,18 +21252,18 @@ } }, "@babel/helper-module-transforms": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.6.tgz", - "integrity": "sha512-fCmcfQo/KYr/VXXDIyd3CBGZ6AFhPFy1TfSEJ+PilGVlQT6jcbqtHAM4C1EciRqMza7/TpOUZliuSH+U6HAhJw==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", + "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", "requires": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.19.4", + "@babel/helper-simple-access": "^7.20.2", "@babel/helper-split-export-declaration": "^7.18.6", "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.6", - "@babel/types": "^7.19.4" + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.10", + "@babel/types": "^7.20.7" } }, "@babel/helper-optimise-call-expression": { @@ -20501,9 +21275,9 @@ } }, "@babel/helper-plugin-utils": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz", - "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==" + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==" }, "@babel/helper-remap-async-to-generator": { "version": "7.18.9", @@ -20517,31 +21291,32 @@ } }, "@babel/helper-replace-supers": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", - "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz", + "integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==", "requires": { "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.20.7", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.19.1", - "@babel/types": "^7.19.0" + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.7", + "@babel/types": "^7.20.7" } }, "@babel/helper-simple-access": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz", - "integrity": "sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", "requires": { - "@babel/types": "^7.19.4" + "@babel/types": "^7.20.2" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", - "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", "requires": { - "@babel/types": "^7.18.9" + "@babel/types": "^7.20.0" } }, "@babel/helper-split-export-declaration": { @@ -20599,9 +21374,9 @@ } }, "@babel/parser": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.6.tgz", - "integrity": "sha512-h1IUp81s2JYJ3mRkdxJgs4UvmSsRvDrx5ICSJbPvtWYv5i1nTBGcBpnog+89rAFMwvvru6E5NUHdBe01UeSzYA==" + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz", + "integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==" }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "version": "7.18.6", @@ -20612,22 +21387,22 @@ } }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", - "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz", + "integrity": "sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==", "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-proposal-optional-chaining": "^7.18.9" + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-proposal-optional-chaining": "^7.20.7" } }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.1.tgz", - "integrity": "sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", + "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", "requires": { "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/helper-remap-async-to-generator": "^7.18.9", "@babel/plugin-syntax-async-generators": "^7.8.4" } @@ -20642,23 +21417,23 @@ } }, "@babel/plugin-proposal-class-static-block": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", - "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.20.7.tgz", + "integrity": "sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ==", "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, "@babel/plugin-proposal-decorators": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.19.6.tgz", - "integrity": "sha512-PKWforYpkVkogpOW0RaPuh7eQ7AoFgBJP+d87tQCRY2LVbvyGtfRM7RtrhCBsNgZb+2EY28SeWB6p2xe1Z5oAw==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.20.7.tgz", + "integrity": "sha512-JB45hbUweYpwAGjkiM7uCyXMENH2lG+9r3G2E+ttc2PRXAoEkpfd/KW5jDg4j8RS6tLtTG1jZi9LbHZVSfs1/A==", "requires": { - "@babel/helper-create-class-features-plugin": "^7.19.0", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-create-class-features-plugin": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.20.7", "@babel/helper-split-export-declaration": "^7.18.6", "@babel/plugin-syntax-decorators": "^7.19.0" } @@ -20700,11 +21475,11 @@ } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", - "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", + "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", "requires": { - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, @@ -20727,15 +21502,15 @@ } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.19.4.tgz", - "integrity": "sha512-wHmj6LDxVDnL+3WhXteUBaoM1aVILZODAUjg11kHqG4cOlfgMQGxw6aCgvrXrmaJR3Bn14oZhImyCPZzRpC93Q==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", "requires": { - "@babel/compat-data": "^7.19.4", - "@babel/helper-compilation-targets": "^7.19.3", - "@babel/helper-plugin-utils": "^7.19.0", + "@babel/compat-data": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.18.8" + "@babel/plugin-transform-parameters": "^7.20.7" } }, "@babel/plugin-proposal-optional-catch-binding": { @@ -20748,12 +21523,12 @@ } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", - "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz", + "integrity": "sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==", "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, @@ -20767,13 +21542,13 @@ } }, "@babel/plugin-proposal-private-property-in-object": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", - "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz", + "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==", "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, @@ -20851,11 +21626,11 @@ } }, "@babel/plugin-syntax-import-assertions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz", - "integrity": "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", + "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.19.0" } }, "@babel/plugin-syntax-json-strings": { @@ -20973,25 +21748,25 @@ } }, "@babel/plugin-transform-block-scoping": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.19.4.tgz", - "integrity": "sha512-934S2VLLlt2hRJwPf4MczaOr4hYF0z+VKPwqTNxyKX7NthTiPfhuKFWQZHXRM0vh/wo/VyXB3s4bZUNA08l+tQ==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.11.tgz", + "integrity": "sha512-tA4N427a7fjf1P0/2I4ScsHGc5jcHPbb30xMbaTke2gxDuWpUfXDuX1FEymJwKk4tuGUvGcejAR6HdZVqmmPyw==", "requires": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.20.2" } }, "@babel/plugin-transform-classes": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz", - "integrity": "sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz", + "integrity": "sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==", "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.19.0", + "@babel/helper-compilation-targets": "^7.20.7", "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-function-name": "^7.19.0", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.20.7", "@babel/helper-split-export-declaration": "^7.18.6", "globals": "^11.1.0" } @@ -21005,11 +21780,11 @@ } }, "@babel/plugin-transform-destructuring": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.19.4.tgz", - "integrity": "sha512-t0j0Hgidqf0aM86dF8U+vXYReUgJnlv4bZLsyoPnwZNrGY+7/38o8YjaELrvHeVfTZao15kjR0PVv0nju2iduA==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz", + "integrity": "sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==", "requires": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.20.2" } }, "@babel/plugin-transform-dotall-regex": { @@ -21082,12 +21857,12 @@ } }, "@babel/plugin-transform-modules-amd": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", - "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz", + "integrity": "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==", "requires": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2" } }, "@babel/plugin-transform-modules-commonjs": { @@ -21101,13 +21876,13 @@ } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", - "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz", + "integrity": "sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==", "requires": { "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/helper-validator-identifier": "^7.19.1" } }, @@ -21155,11 +21930,11 @@ } }, "@babel/plugin-transform-parameters": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", - "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz", + "integrity": "sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==", "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.20.2" } }, "@babel/plugin-transform-property-literals": { @@ -21207,12 +21982,12 @@ } }, "@babel/plugin-transform-regenerator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", - "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", + "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "regenerator-transform": "^0.15.0" + "@babel/helper-plugin-utils": "^7.20.2", + "regenerator-transform": "^0.15.1" } }, "@babel/plugin-transform-reserved-words": { @@ -21305,17 +22080,17 @@ } }, "@babel/preset-env": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.4.tgz", - "integrity": "sha512-5QVOTXUdqTCjQuh2GGtdd7YEhoRXBMVGROAtsBeLGIbIz3obCBIfRMT1I3ZKkMgNzwkyCkftDXSSkHxnfVf4qg==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz", + "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==", "requires": { - "@babel/compat-data": "^7.19.4", - "@babel/helper-compilation-targets": "^7.19.3", - "@babel/helper-plugin-utils": "^7.19.0", + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/helper-validator-option": "^7.18.6", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-async-generator-functions": "^7.19.1", + "@babel/plugin-proposal-async-generator-functions": "^7.20.1", "@babel/plugin-proposal-class-properties": "^7.18.6", "@babel/plugin-proposal-class-static-block": "^7.18.6", "@babel/plugin-proposal-dynamic-import": "^7.18.6", @@ -21324,7 +22099,7 @@ "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.19.4", + "@babel/plugin-proposal-object-rest-spread": "^7.20.2", "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", "@babel/plugin-proposal-optional-chaining": "^7.18.9", "@babel/plugin-proposal-private-methods": "^7.18.6", @@ -21335,7 +22110,7 @@ "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.18.6", + "@babel/plugin-syntax-import-assertions": "^7.20.0", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", @@ -21348,10 +22123,10 @@ "@babel/plugin-transform-arrow-functions": "^7.18.6", "@babel/plugin-transform-async-to-generator": "^7.18.6", "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.19.4", - "@babel/plugin-transform-classes": "^7.19.0", + "@babel/plugin-transform-block-scoping": "^7.20.2", + "@babel/plugin-transform-classes": "^7.20.2", "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.19.4", + "@babel/plugin-transform-destructuring": "^7.20.2", "@babel/plugin-transform-dotall-regex": "^7.18.6", "@babel/plugin-transform-duplicate-keys": "^7.18.9", "@babel/plugin-transform-exponentiation-operator": "^7.18.6", @@ -21359,14 +22134,14 @@ "@babel/plugin-transform-function-name": "^7.18.9", "@babel/plugin-transform-literals": "^7.18.9", "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.18.6", - "@babel/plugin-transform-modules-commonjs": "^7.18.6", - "@babel/plugin-transform-modules-systemjs": "^7.19.0", + "@babel/plugin-transform-modules-amd": "^7.19.6", + "@babel/plugin-transform-modules-commonjs": "^7.19.6", + "@babel/plugin-transform-modules-systemjs": "^7.19.6", "@babel/plugin-transform-modules-umd": "^7.18.6", "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", "@babel/plugin-transform-new-target": "^7.18.6", "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.18.8", + "@babel/plugin-transform-parameters": "^7.20.1", "@babel/plugin-transform-property-literals": "^7.18.6", "@babel/plugin-transform-regenerator": "^7.18.6", "@babel/plugin-transform-reserved-words": "^7.18.6", @@ -21378,7 +22153,7 @@ "@babel/plugin-transform-unicode-escapes": "^7.18.10", "@babel/plugin-transform-unicode-regex": "^7.18.6", "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.19.4", + "@babel/types": "^7.20.2", "babel-plugin-polyfill-corejs2": "^0.3.3", "babel-plugin-polyfill-corejs3": "^0.6.0", "babel-plugin-polyfill-regenerator": "^0.4.1", @@ -21439,36 +22214,36 @@ } }, "@babel/template": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", "requires": { "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" } }, "@babel/traverse": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.6.tgz", - "integrity": "sha512-6l5HrUCzFM04mfbG09AagtYyR2P0B71B1wN7PfSPiksDPz2k5H9CBC1tcZpz2M8OxbKTPccByoOJ22rUKbpmQQ==", + "version": "7.20.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.10.tgz", + "integrity": "sha512-oSf1juCgymrSez8NI4A2sr4+uB/mFd9MXplYGPEBnfAuWmmyeVcHa6xLPiaRBcXkcb/28bgxmQLTVwFKE1yfsg==", "requires": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.19.6", + "@babel/generator": "^7.20.7", "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-function-name": "^7.19.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.19.6", - "@babel/types": "^7.19.4", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.4.tgz", - "integrity": "sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", + "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", "requires": { "@babel/helper-string-parser": "^7.19.4", "@babel/helper-validator-identifier": "^7.19.1", @@ -21510,22 +22285,22 @@ } }, "@expo/cli": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-0.3.2.tgz", - "integrity": "sha512-P6yogdPCRKaoLjuH7D8jgq6kTzM4gWuQ+vssBPWhbnoymV5AClQOxvACPDHD+biKhvGsaXEQLMoi93lPQzcDlQ==", + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-0.4.10.tgz", + "integrity": "sha512-c8NJOVa5b8g9CYj8ahdaN21cVE2wPwUaFrtTE0kLeRR5ASy8reWLFEOcstEtt6eufdcN/uGgBWQ0FLovgLZuzw==", "requires": { "@babel/runtime": "^7.14.0", - "@expo/code-signing-certificates": "^0.0.2", - "@expo/config": "~7.0.1", - "@expo/config-plugins": "~5.0.1", - "@expo/dev-server": "~0.1.120", + "@expo/code-signing-certificates": "0.0.5", + "@expo/config": "~7.0.2", + "@expo/config-plugins": "~5.0.3", + "@expo/dev-server": "0.1.123", "@expo/devcert": "^1.0.0", "@expo/json-file": "^8.2.35", - "@expo/metro-config": "~0.4.0", + "@expo/metro-config": "~0.5.0", "@expo/osascript": "^2.0.31", "@expo/package-manager": "~0.0.53", "@expo/plist": "^0.0.18", - "@expo/prebuild-config": "~5.0.3", + "@expo/prebuild-config": "5.0.7", "@expo/rudder-sdk-node": "1.1.1", "@expo/spawn-async": "1.5.0", "@expo/xcpretty": "^4.2.1", @@ -21546,6 +22321,7 @@ "getenv": "^1.0.0", "graphql": "15.8.0", "graphql-tag": "^2.10.1", + "https-proxy-agent": "^5.0.1", "internal-ip": "4.3.0", "is-root": "^2.1.0", "js-yaml": "^3.13.1", @@ -21576,115 +22352,96 @@ "wrap-ansi": "^7.0.0" }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "requires": { - "color-convert": "^2.0.1" + "@babel/highlight": "^7.10.4" } }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "@expo/config": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-7.0.3.tgz", + "integrity": "sha512-joVtB5o+NF40Tmsdp65UzryRtbnCuMbXkVO4wJnNJO4aaK0EYLdHCYSewORVqNcDfGN0LphQr8VTG2npbd9CJA==", "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@babel/code-frame": "~7.10.4", + "@expo/config-plugins": "~5.0.3", + "@expo/config-types": "^47.0.0", + "@expo/json-file": "8.2.36", + "getenv": "^1.0.0", + "glob": "7.1.6", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "semver": "7.3.2", + "slugify": "^1.3.4", + "sucrase": "^3.20.0" + }, + "dependencies": { + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" + } } }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "@expo/config-plugins": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-5.0.4.tgz", + "integrity": "sha512-vzUcVpqOMs3h+hyRdhGwk+eGIOhXa5xYdd92yO17RMNHav3v/+ekMbs7XA2c3lepMO8Yd4/5hqmRw9ZTL6jGzg==", "requires": { - "color-name": "~1.1.4" + "@expo/config-types": "^47.0.0", + "@expo/json-file": "8.2.36", + "@expo/plist": "0.0.18", + "@expo/sdk-runtime-versions": "^1.0.0", + "@react-native/normalize-color": "^2.0.0", + "chalk": "^4.1.2", + "debug": "^4.3.1", + "find-up": "~5.0.0", + "getenv": "^1.0.0", + "glob": "7.1.6", + "resolve-from": "^5.0.0", + "semver": "^7.3.5", + "slash": "^3.0.0", + "xcode": "^3.0.1", + "xml2js": "0.4.23" + }, + "dependencies": { + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "requires": { + "lru-cache": "^6.0.0" + } + } } }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "@expo/config-types": { + "version": "47.0.0", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-47.0.0.tgz", + "integrity": "sha512-r0pWfuhkv7KIcXMUiNACJmJKKwlTBGMw9VZHNdppS8/0Nve8HZMTkNRFQzTHW1uH3pBj8jEXpyw/2vSWDHex9g==" }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "@expo/json-file": { + "version": "8.2.36", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.36.tgz", + "integrity": "sha512-tOZfTiIFA5KmMpdW9KF7bc6CFiGjb0xnbieJhTGlHrLL+ps2G0OkqmuZ3pFEXBOMnJYUVpnSy++52LFxvpa5ZQ==", "requires": { - "has-flag": "^4.0.0" + "@babel/code-frame": "~7.10.4", + "json5": "^1.0.1", + "write-file-atomic": "^2.3.0" } - } - } - }, - "@expo/code-signing-certificates": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/@expo/code-signing-certificates/-/code-signing-certificates-0.0.2.tgz", - "integrity": "sha512-vnPHFjwOqxQ1VLztktY+fYCfwvLzjqpzKn09rchcQE7Sdf0wtW5fFtIZBEFOOY5wasp8tXSnp627zrAwazPHzg==", - "requires": { - "node-forge": "^1.2.1", - "nullthrows": "^1.1.1" - } - }, - "@expo/config": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@expo/config/-/config-7.0.1.tgz", - "integrity": "sha512-4lu0wr45XXJ2MXiLAm2+fmOyy/jjqF3NuDm92fO6nuulRzEEvTP4w3vsibJ690rT81ohtvhpruKhkRs0wSjKWA==", - "requires": { - "@babel/code-frame": "~7.10.4", - "@expo/config-plugins": "~5.0.1", - "@expo/config-types": "^46.0.1", - "@expo/json-file": "8.2.36", - "getenv": "^1.0.0", - "glob": "7.1.6", - "require-from-string": "^2.0.2", - "resolve-from": "^5.0.0", - "semver": "7.3.2", - "slugify": "^1.3.4", - "sucrase": "^3.20.0" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + }, + "@expo/plist": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.18.tgz", + "integrity": "sha512-+48gRqUiz65R21CZ/IXa7RNBXgAI/uPSdvJqoN9x1hfL44DNbUoWHgHiEXTx7XelcATpDwNTz6sHLfy0iNqf+w==", "requires": { - "@babel/highlight": "^7.10.4" + "@xmldom/xmldom": "~0.7.0", + "base64-js": "^1.2.3", + "xmlbuilder": "^14.0.0" } }, - "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" - } - } - }, - "@expo/config-plugins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-5.0.1.tgz", - "integrity": "sha512-1OfnsOrfeSkB0VZfT01UjQ5Uq6p+yYbq8yNkj0e99K/6NLHpyvIxj+5tZIV0nQXgkOcqBIABL2uA7lwB8CkaBQ==", - "requires": { - "@expo/config-types": "^46.0.0", - "@expo/json-file": "8.2.36", - "@expo/plist": "0.0.18", - "@expo/sdk-runtime-versions": "^1.0.0", - "@react-native/normalize-color": "^2.0.0", - "chalk": "^4.1.2", - "debug": "^4.3.1", - "find-up": "~5.0.0", - "getenv": "^1.0.0", - "glob": "7.1.6", - "resolve-from": "^5.0.0", - "semver": "^7.3.5", - "slash": "^3.0.0", - "xcode": "^3.0.1", - "xml2js": "0.4.23" - }, - "dependencies": { "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -21715,17 +22472,27 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, + "crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, - "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + }, + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "requires": { - "lru-cache": "^6.0.0" + "minimist": "^1.2.0" } }, "supports-color": { @@ -21735,26 +22502,110 @@ "requires": { "has-flag": "^4.0.0" } + }, + "temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==" + }, + "tempy": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.7.1.tgz", + "integrity": "sha512-vXPxwOyaNVi9nyczO16mxmHGpl6ASC5/TVhRRHpqeYHvKQm58EaWNvZXxAhR0lYYnBOQFjXjhzeLsaXdjxLjRg==", + "requires": { + "del": "^6.0.0", + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + } + }, + "type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==" + }, + "unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "requires": { + "crypto-random-string": "^2.0.0" + } } } }, - "@expo/config-types": { - "version": "46.0.2", - "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-46.0.2.tgz", - "integrity": "sha512-PXkmOgNwRyBfgVT1HmFZhfh3Qm7WKKyV6mk3/5HJ/LzPh1t+Zs2JrWX8U2YncTLV1QzV7nV8tnkyvszzqnZEzQ==" + "@expo/code-signing-certificates": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@expo/code-signing-certificates/-/code-signing-certificates-0.0.5.tgz", + "integrity": "sha512-BNhXkY1bblxKZpltzAx98G2Egj9g1Q+JRcvR7E99DOj862FTCX+ZPsAUtPTr7aHxwtrL7+fL3r0JSmM9kBm+Bw==", + "requires": { + "node-forge": "^1.2.1", + "nullthrows": "^1.1.1" + } + }, + "@expo/configure-splash-screen": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@expo/configure-splash-screen/-/configure-splash-screen-0.6.0.tgz", + "integrity": "sha512-4DyPoNXJqx9bN4nEwF3HQreo//ECu7gDe1Xor3dnnzFm9P/VDxAKdbEhA0n+R6fgkNfT2onVHWijqvdpTS3Xew==", + "requires": { + "color-string": "^1.5.3", + "commander": "^5.1.0", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", + "lodash": "^4.17.15", + "pngjs": "^5.0.0", + "xcode": "^3.0.0", + "xml-js": "^1.6.11" + }, + "dependencies": { + "commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==" + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + } + } }, "@expo/dev-server": { - "version": "0.1.120", - "resolved": "https://registry.npmjs.org/@expo/dev-server/-/dev-server-0.1.120.tgz", - "integrity": "sha512-x5/jCv0EOpz6FyehXpI5bgDQTVsGZYvgISkAw7n60RhtG+aid6N2CCR9SDMCH70XaUpFnfTW9qvderpCEj7Puw==", + "version": "0.1.123", + "resolved": "https://registry.npmjs.org/@expo/dev-server/-/dev-server-0.1.123.tgz", + "integrity": "sha512-N6UVzzeemfX0AONUSWInvkAAbqon8hRXpyYE/nMPaC6TvAmgGY5ILZAGoXwlpxwY2VKNT0Lx4s/UJ53ytIaHbA==", "requires": { "@expo/bunyan": "4.0.0", - "@expo/metro-config": "~0.4.0", + "@expo/metro-config": "~0.5.1", "@expo/osascript": "2.0.33", + "@expo/spawn-async": "^1.5.0", "body-parser": "1.19.0", "chalk": "^4.0.0", "connect": "^3.7.0", "fs-extra": "9.0.0", + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1", "node-fetch": "^2.6.0", "open": "^8.3.0", "resolve-from": "^5.0.0", @@ -21838,6 +22689,11 @@ "has-flag": "^4.0.0" } }, + "temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==" + }, "universalify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", @@ -21846,9 +22702,9 @@ } }, "@expo/devcert": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@expo/devcert/-/devcert-1.0.0.tgz", - "integrity": "sha512-cahGyQCmpZmHpn2U04NR9KwsOIZy7Rhsw8Fg4q+A6563lIJxbkrgPnxq/O3NQAh3ohEvOXOOnoFx0b4yycCkpQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@expo/devcert/-/devcert-1.1.0.tgz", + "integrity": "sha512-ghUVhNJQOCTdQckSGTHctNp/0jzvVoMMkVh+6SHn+TZj8sU15U/npXIDt8NtQp0HedlPaCgkVdMu8Sacne0aEA==", "requires": { "application-config-path": "^0.1.0", "command-exists": "^1.2.4", @@ -21862,7 +22718,7 @@ "rimraf": "^2.6.2", "sudo-prompt": "^8.2.0", "tmp": "^0.0.33", - "tslib": "^1.10.0" + "tslib": "^2.4.0" }, "dependencies": { "debug": { @@ -21876,9 +22732,9 @@ } }, "@expo/image-utils": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.3.20.tgz", - "integrity": "sha512-NgF/80XENyCS+amwC0P6uk1fauEtUq7gijD19jvl2xknJaADq8M2dMCRHwWMVOXosr2v46f3Z++G/NjmyOVS7A==", + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.3.23.tgz", + "integrity": "sha512-nhUVvW0TrRE4jtWzHQl8TR4ox7kcmrc2I0itaeJGjxF5A54uk7avgA0wRt7jP1rdvqQo1Ke1lXyLYREdhN9tPw==", "requires": { "@expo/spawn-async": "1.5.0", "chalk": "^4.0.0", @@ -21923,11 +22779,6 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "crypto-random-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==" - }, "fs-extra": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz", @@ -21973,34 +22824,6 @@ "has-flag": "^4.0.0" } }, - "temp-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", - "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==" - }, - "tempy": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.3.0.tgz", - "integrity": "sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==", - "requires": { - "temp-dir": "^1.0.0", - "type-fest": "^0.3.1", - "unique-string": "^1.0.0" - } - }, - "type-fest": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", - "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==" - }, - "unique-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", - "integrity": "sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==", - "requires": { - "crypto-random-string": "^1.0.0" - } - }, "universalify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", @@ -22008,14 +22831,19 @@ } } }, - "@expo/json-file": { - "version": "8.2.36", - "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.36.tgz", - "integrity": "sha512-tOZfTiIFA5KmMpdW9KF7bc6CFiGjb0xnbieJhTGlHrLL+ps2G0OkqmuZ3pFEXBOMnJYUVpnSy++52LFxvpa5ZQ==", + "@expo/metro-config": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.5.2.tgz", + "integrity": "sha512-W1qsZPA5BXuRBkNLydKBYQ1+ubObhOK0gk2Fpc+XnhW+UUIHC9sDR5pZRYGNSnDDc3rG8y7c32UzSW9nlK+mog==", "requires": { - "@babel/code-frame": "~7.10.4", - "json5": "^1.0.1", - "write-file-atomic": "^2.3.0" + "@expo/config": "~7.0.2", + "@expo/json-file": "8.2.36", + "chalk": "^4.1.0", + "debug": "^4.3.2", + "find-yarn-workspace-root": "~2.0.0", + "getenv": "^1.0.0", + "resolve-from": "^5.0.0", + "sucrase": "^3.20.0" }, "dependencies": { "@babel/code-frame": { @@ -22026,31 +22854,183 @@ "@babel/highlight": "^7.10.4" } }, + "@expo/config": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-7.0.3.tgz", + "integrity": "sha512-joVtB5o+NF40Tmsdp65UzryRtbnCuMbXkVO4wJnNJO4aaK0EYLdHCYSewORVqNcDfGN0LphQr8VTG2npbd9CJA==", + "requires": { + "@babel/code-frame": "~7.10.4", + "@expo/config-plugins": "~5.0.3", + "@expo/config-types": "^47.0.0", + "@expo/json-file": "8.2.36", + "getenv": "^1.0.0", + "glob": "7.1.6", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "semver": "7.3.2", + "slugify": "^1.3.4", + "sucrase": "^3.20.0" + } + }, + "@expo/config-plugins": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-5.0.4.tgz", + "integrity": "sha512-vzUcVpqOMs3h+hyRdhGwk+eGIOhXa5xYdd92yO17RMNHav3v/+ekMbs7XA2c3lepMO8Yd4/5hqmRw9ZTL6jGzg==", + "requires": { + "@expo/config-types": "^47.0.0", + "@expo/json-file": "8.2.36", + "@expo/plist": "0.0.18", + "@expo/sdk-runtime-versions": "^1.0.0", + "@react-native/normalize-color": "^2.0.0", + "chalk": "^4.1.2", + "debug": "^4.3.1", + "find-up": "~5.0.0", + "getenv": "^1.0.0", + "glob": "7.1.6", + "resolve-from": "^5.0.0", + "semver": "^7.3.5", + "slash": "^3.0.0", + "xcode": "^3.0.1", + "xml2js": "0.4.23" + }, + "dependencies": { + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@expo/config-types": { + "version": "47.0.0", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-47.0.0.tgz", + "integrity": "sha512-r0pWfuhkv7KIcXMUiNACJmJKKwlTBGMw9VZHNdppS8/0Nve8HZMTkNRFQzTHW1uH3pBj8jEXpyw/2vSWDHex9g==" + }, + "@expo/json-file": { + "version": "8.2.36", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.36.tgz", + "integrity": "sha512-tOZfTiIFA5KmMpdW9KF7bc6CFiGjb0xnbieJhTGlHrLL+ps2G0OkqmuZ3pFEXBOMnJYUVpnSy++52LFxvpa5ZQ==", + "requires": { + "@babel/code-frame": "~7.10.4", + "json5": "^1.0.1", + "write-file-atomic": "^2.3.0" + } + }, + "@expo/plist": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.18.tgz", + "integrity": "sha512-+48gRqUiz65R21CZ/IXa7RNBXgAI/uPSdvJqoN9x1hfL44DNbUoWHgHiEXTx7XelcATpDwNTz6sHLfy0iNqf+w==", + "requires": { + "@xmldom/xmldom": "~0.7.0", + "base64-js": "^1.2.3", + "xmlbuilder": "^14.0.0" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "requires": { "minimist": "^1.2.0" } + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } } } }, - "@expo/metro-config": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.4.0.tgz", - "integrity": "sha512-QhOiotuzklalLbbsTMXJ5v4q4jffQ5xXhy1zsosgc2DL/ZzUr/Yhm3xUcOGnPQ2x7UyeY9Tl3njPHBOJJe7CSA==", + "@expo/osascript": { + "version": "2.0.33", + "resolved": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.0.33.tgz", + "integrity": "sha512-FQinlwHrTlJbntp8a7NAlCKedVXe06Va/0DSLXRO8lZVtgbEMrYYSUZWQNcOlNtc58c2elNph6z9dMOYwSo3JQ==", + "requires": { + "@expo/spawn-async": "^1.5.0", + "exec-async": "^2.2.0" + } + }, + "@expo/package-manager": { + "version": "0.0.57", + "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-0.0.57.tgz", + "integrity": "sha512-Y4RpSL9EqaPF+Vd2GrK6r7Xx7Dv0Xdq3AGAD9C0KwV21WqP/scj/dpjxFY+ABwmdhNsFzYXb8fmDyh4tiKenPQ==", "requires": { - "@expo/config": "7.0.1", "@expo/json-file": "8.2.36", - "chalk": "^4.1.0", - "debug": "^4.3.2", + "@expo/spawn-async": "^1.5.0", + "ansi-regex": "^5.0.0", + "chalk": "^4.0.0", + "find-up": "^5.0.0", "find-yarn-workspace-root": "~2.0.0", - "getenv": "^1.0.0", - "resolve-from": "^5.0.0", - "sucrase": "^3.20.0" + "npm-package-arg": "^7.0.0", + "rimraf": "^3.0.2", + "split": "^1.0.1", + "sudo-prompt": "9.1.1" }, "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@expo/json-file": { + "version": "8.2.36", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.36.tgz", + "integrity": "sha512-tOZfTiIFA5KmMpdW9KF7bc6CFiGjb0xnbieJhTGlHrLL+ps2G0OkqmuZ3pFEXBOMnJYUVpnSy++52LFxvpa5ZQ==", + "requires": { + "@babel/code-frame": "~7.10.4", + "json5": "^1.0.1", + "write-file-atomic": "^2.3.0" + } + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -22086,6 +23066,27 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "requires": { + "minimist": "^1.2.0" + } + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + }, + "sudo-prompt": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.1.1.tgz", + "integrity": "sha512-es33J1g2HjMpyAhz8lOR+ICmXXAqTuKbuXuUWLhOLew20oN9oUCgCJx615U/v7aioZg7IX5lIh9x34vwneu4pA==" + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -22096,32 +23097,142 @@ } } }, - "@expo/osascript": { - "version": "2.0.33", - "resolved": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.0.33.tgz", - "integrity": "sha512-FQinlwHrTlJbntp8a7NAlCKedVXe06Va/0DSLXRO8lZVtgbEMrYYSUZWQNcOlNtc58c2elNph6z9dMOYwSo3JQ==", - "requires": { - "@expo/spawn-async": "^1.5.0", - "exec-async": "^2.2.0" - } - }, - "@expo/package-manager": { - "version": "0.0.56", - "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-0.0.56.tgz", - "integrity": "sha512-PGk34uz4XDyhoNIlPh2D+BDsiXYuW2jXavTiax8d32uvHlRO6FN0cAsqlWD6fx3H2hRn8cU/leTuc4M7pYovCQ==", - "requires": { + "@expo/prebuild-config": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-5.0.7.tgz", + "integrity": "sha512-D+TBpJUHe4+oTGFPb4o0rrw/h1xxc6wF+abJnbDHUkhnaeiHkE2O3ByS7FdiZ2FT36t0OKqeSKG/xFwWT3m1Ew==", + "requires": { + "@expo/config": "~7.0.2", + "@expo/config-plugins": "~5.0.3", + "@expo/config-types": "^47.0.0", + "@expo/image-utils": "0.3.22", "@expo/json-file": "8.2.36", - "@expo/spawn-async": "^1.5.0", - "ansi-regex": "^5.0.0", - "chalk": "^4.0.0", - "find-up": "^5.0.0", - "find-yarn-workspace-root": "~2.0.0", - "npm-package-arg": "^7.0.0", - "rimraf": "^3.0.2", - "split": "^1.0.1", - "sudo-prompt": "9.1.1" + "debug": "^4.3.1", + "fs-extra": "^9.0.0", + "resolve-from": "^5.0.0", + "semver": "7.3.2", + "xml2js": "0.4.23" }, "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@expo/config": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-7.0.3.tgz", + "integrity": "sha512-joVtB5o+NF40Tmsdp65UzryRtbnCuMbXkVO4wJnNJO4aaK0EYLdHCYSewORVqNcDfGN0LphQr8VTG2npbd9CJA==", + "requires": { + "@babel/code-frame": "~7.10.4", + "@expo/config-plugins": "~5.0.3", + "@expo/config-types": "^47.0.0", + "@expo/json-file": "8.2.36", + "getenv": "^1.0.0", + "glob": "7.1.6", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "semver": "7.3.2", + "slugify": "^1.3.4", + "sucrase": "^3.20.0" + } + }, + "@expo/config-plugins": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-5.0.4.tgz", + "integrity": "sha512-vzUcVpqOMs3h+hyRdhGwk+eGIOhXa5xYdd92yO17RMNHav3v/+ekMbs7XA2c3lepMO8Yd4/5hqmRw9ZTL6jGzg==", + "requires": { + "@expo/config-types": "^47.0.0", + "@expo/json-file": "8.2.36", + "@expo/plist": "0.0.18", + "@expo/sdk-runtime-versions": "^1.0.0", + "@react-native/normalize-color": "^2.0.0", + "chalk": "^4.1.2", + "debug": "^4.3.1", + "find-up": "~5.0.0", + "getenv": "^1.0.0", + "glob": "7.1.6", + "resolve-from": "^5.0.0", + "semver": "^7.3.5", + "slash": "^3.0.0", + "xcode": "^3.0.1", + "xml2js": "0.4.23" + }, + "dependencies": { + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@expo/config-types": { + "version": "47.0.0", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-47.0.0.tgz", + "integrity": "sha512-r0pWfuhkv7KIcXMUiNACJmJKKwlTBGMw9VZHNdppS8/0Nve8HZMTkNRFQzTHW1uH3pBj8jEXpyw/2vSWDHex9g==" + }, + "@expo/image-utils": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.3.22.tgz", + "integrity": "sha512-uzq+RERAtkWypOFOLssFnXXqEqKjNj9eXN7e97d/EXUAojNcLDoXc0sL+F5B1I4qtlsnhX01kcpoIBBZD8wZNQ==", + "requires": { + "@expo/spawn-async": "1.5.0", + "chalk": "^4.0.0", + "fs-extra": "9.0.0", + "getenv": "^1.0.0", + "jimp-compact": "0.16.1", + "mime": "^2.4.4", + "node-fetch": "^2.6.0", + "parse-png": "^2.1.0", + "resolve-from": "^5.0.0", + "semver": "7.3.2", + "tempy": "0.3.0" + }, + "dependencies": { + "fs-extra": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz", + "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==", + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + } + }, + "universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==" + } + } + }, + "@expo/json-file": { + "version": "8.2.36", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.36.tgz", + "integrity": "sha512-tOZfTiIFA5KmMpdW9KF7bc6CFiGjb0xnbieJhTGlHrLL+ps2G0OkqmuZ3pFEXBOMnJYUVpnSy++52LFxvpa5ZQ==", + "requires": { + "@babel/code-frame": "~7.10.4", + "json5": "^1.0.1", + "write-file-atomic": "^2.3.0" + } + }, + "@expo/plist": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.18.tgz", + "integrity": "sha512-+48gRqUiz65R21CZ/IXa7RNBXgAI/uPSdvJqoN9x1hfL44DNbUoWHgHiEXTx7XelcATpDwNTz6sHLfy0iNqf+w==", + "requires": { + "@xmldom/xmldom": "~0.7.0", + "base64-js": "^1.2.3", + "xmlbuilder": "^14.0.0" + } + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -22152,61 +23263,6 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "requires": { - "glob": "^7.1.3" - } - }, - "sudo-prompt": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.1.1.tgz", - "integrity": "sha512-es33J1g2HjMpyAhz8lOR+ICmXXAqTuKbuXuUWLhOLew20oN9oUCgCJx615U/v7aioZg7IX5lIh9x34vwneu4pA==" - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@expo/plist": { - "version": "0.0.18", - "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.18.tgz", - "integrity": "sha512-+48gRqUiz65R21CZ/IXa7RNBXgAI/uPSdvJqoN9x1hfL44DNbUoWHgHiEXTx7XelcATpDwNTz6sHLfy0iNqf+w==", - "requires": { - "@xmldom/xmldom": "~0.7.0", - "base64-js": "^1.2.3", - "xmlbuilder": "^14.0.0" - } - }, - "@expo/prebuild-config": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-5.0.3.tgz", - "integrity": "sha512-G4j1H3WFjRaiQ+FgFNULrnIm7RsQyjc4xp6lLTP2ydBv79wO3x8wAdeZvaZh7eOkfu9BESpQzACT1uuJTag5jg==", - "requires": { - "@expo/config": "7.0.1", - "@expo/config-plugins": "~5.0.1", - "@expo/config-types": "^46.0.0", - "@expo/image-utils": "0.3.20", - "@expo/json-file": "8.2.36", - "debug": "^4.3.1", - "fs-extra": "^9.0.0", - "resolve-from": "^5.0.0", - "semver": "7.3.2", - "xml2js": "0.4.23" - }, - "dependencies": { "fs-extra": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", @@ -22218,6 +23274,19 @@ "universalify": "^2.0.0" } }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "requires": { + "minimist": "^1.2.0" + } + }, "jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -22232,6 +23301,14 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + }, "universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", @@ -22512,29 +23589,30 @@ } }, "@jest/create-cache-key-function": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-27.5.1.tgz", - "integrity": "sha512-dmH1yW+makpTSURTy8VzdUwFnfQh1G8R+DxO2Ho2FFmBbKFEVm+3jWdvFhE2VqB/LATCTokkP0dotjyQyw5/AQ==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.3.1.tgz", + "integrity": "sha512-4i+E+E40gK13K78ffD/8cy4lSSqeWwyXeTZoq16tndiCP12hC8uQsPJdIu5C6Kf22fD8UbBk71so7s/6VwpUOQ==", "requires": { - "@jest/types": "^27.5.1" + "@jest/types": "^29.3.1" }, "dependencies": { "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.3.1.tgz", + "integrity": "sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA==", "requires": { + "@jest/schemas": "^29.0.0", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^16.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" } }, "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "version": "17.0.18", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.18.tgz", + "integrity": "sha512-eIJR1UER6ur3EpKM3d+2Pgd+ET+k6Kn9B4ZItX0oPjjVI5PrfaRjKyLT5UYendDpLuoiJMNJvovLQbEXqhsPaw==", "requires": { "@types/yargs-parser": "*" } @@ -22584,6 +23662,14 @@ } } }, + "@jest/schemas": { + "version": "29.0.0", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.0.0.tgz", + "integrity": "sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==", + "requires": { + "@sinclair/typebox": "^0.24.1" + } + }, "@jest/types": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", @@ -22740,29 +23826,34 @@ } } }, + "@react-native-async-storage/async-storage": { + "version": "1.17.11", + "resolved": "https://registry.npmjs.org/@react-native-async-storage/async-storage/-/async-storage-1.17.11.tgz", + "integrity": "sha512-bzs45n5HNcDq6mxXnSsOHysZWn1SbbebNxldBXCQs8dSvF8Aor9KCdpm+TpnnGweK3R6diqsT8lFhX77VX0NFw==", + "requires": { + "merge-options": "^3.0.4" + } + }, "@react-native-community/cli": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-8.0.6.tgz", - "integrity": "sha512-E36hU/if3quQCfJHGWVkpsCnwtByRCwORuAX0r6yr1ebKktpKeEO49zY9PAu/Z1gfyxCtgluXY0HfRxjKRFXTg==", - "requires": { - "@react-native-community/cli-clean": "^8.0.4", - "@react-native-community/cli-config": "^8.0.6", - "@react-native-community/cli-debugger-ui": "^8.0.0", - "@react-native-community/cli-doctor": "^8.0.6", - "@react-native-community/cli-hermes": "^8.0.5", - "@react-native-community/cli-plugin-metro": "^8.0.4", - "@react-native-community/cli-server-api": "^8.0.4", - "@react-native-community/cli-tools": "^8.0.4", - "@react-native-community/cli-types": "^8.0.0", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-9.2.1.tgz", + "integrity": "sha512-feMYS5WXXKF4TSWnCXozHxtWq36smyhGaENXlkiRESfYZ1mnCUlPfOanNCAvNvBqdyh9d4o0HxhYKX1g9l6DCQ==", + "requires": { + "@react-native-community/cli-clean": "^9.2.1", + "@react-native-community/cli-config": "^9.2.1", + "@react-native-community/cli-debugger-ui": "^9.0.0", + "@react-native-community/cli-doctor": "^9.2.1", + "@react-native-community/cli-hermes": "^9.2.1", + "@react-native-community/cli-plugin-metro": "^9.2.1", + "@react-native-community/cli-server-api": "^9.2.1", + "@react-native-community/cli-tools": "^9.2.1", + "@react-native-community/cli-types": "^9.1.0", "chalk": "^4.1.2", - "commander": "^2.19.0", + "commander": "^9.4.0", "execa": "^1.0.0", "find-up": "^4.1.0", "fs-extra": "^8.1.0", "graceful-fs": "^4.1.3", - "leven": "^3.1.0", - "lodash": "^4.17.15", - "minimist": "^1.2.0", "prompts": "^2.4.0", "semver": "^6.3.0" }, @@ -22798,9 +23889,9 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", + "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==" }, "find-up": { "version": "4.1.0", @@ -22856,11 +23947,11 @@ } }, "@react-native-community/cli-clean": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-8.0.4.tgz", - "integrity": "sha512-IwS1M1NHg6+qL8PThZYMSIMYbZ6Zbx+lIck9PLBskbosFo24M3lCOflOl++Bggjakp6mR+sRXxLMexid/GeOsQ==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-9.2.1.tgz", + "integrity": "sha512-dyNWFrqRe31UEvNO+OFWmQ4hmqA07bR9Ief/6NnGwx67IO9q83D5PEAf/o96ML6jhSbDwCmpPKhPwwBbsyM3mQ==", "requires": { - "@react-native-community/cli-tools": "^8.0.4", + "@react-native-community/cli-tools": "^9.2.1", "chalk": "^4.1.2", "execa": "^1.0.0", "prompts": "^2.4.0" @@ -22912,11 +24003,11 @@ } }, "@react-native-community/cli-config": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-8.0.6.tgz", - "integrity": "sha512-mjVpVvdh8AviiO8xtqeX+BkjqE//NMDnISwsLWSJUfNCwTAPmdR8PGbhgP5O4hWHyJ3WkepTopl0ya7Tfi3ifw==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-9.2.1.tgz", + "integrity": "sha512-gHJlBBXUgDN9vrr3aWkRqnYrPXZLztBDQoY97Mm5Yo6MidsEpYo2JIP6FH4N/N2p1TdjxJL4EFtdd/mBpiR2MQ==", "requires": { - "@react-native-community/cli-tools": "^8.0.4", + "@react-native-community/cli-tools": "^9.2.1", "cosmiconfig": "^5.1.0", "deepmerge": "^3.2.0", "glob": "^7.1.3", @@ -22924,21 +24015,21 @@ } }, "@react-native-community/cli-debugger-ui": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-8.0.0.tgz", - "integrity": "sha512-u2jq06GZwZ9sRERzd9FIgpW6yv4YOW4zz7Ym/B8eSzviLmy3yI/8mxJtvlGW+J8lBsfMcQoqJpqI6Rl1nZy9yQ==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-9.0.0.tgz", + "integrity": "sha512-7hH05ZwU9Tp0yS6xJW0bqcZPVt0YCK7gwj7gnRu1jDNN2kughf6Lg0Ys29rAvtZ7VO1PK5c1O+zs7yFnylQDUA==", "requires": { "serve-static": "^1.13.1" } }, "@react-native-community/cli-doctor": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-8.0.6.tgz", - "integrity": "sha512-ZQqyT9mJMVeFEVIwj8rbDYGCA2xXjJfsQjWk2iTRZ1CFHfhPSUuUiG8r6mJmTinAP9t+wYcbbIYzNgdSUKnDMw==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-9.3.0.tgz", + "integrity": "sha512-/fiuG2eDGC2/OrXMOWI5ifq4X1gdYTQhvW2m0TT5Lk1LuFiZsbTCp1lR+XILKekuTvmYNjEGdVpeDpdIWlXdEA==", "requires": { - "@react-native-community/cli-config": "^8.0.6", - "@react-native-community/cli-platform-ios": "^8.0.6", - "@react-native-community/cli-tools": "^8.0.4", + "@react-native-community/cli-config": "^9.2.1", + "@react-native-community/cli-platform-ios": "^9.3.0", + "@react-native-community/cli-tools": "^9.2.1", "chalk": "^4.1.2", "command-exists": "^1.2.8", "envinfo": "^7.7.2", @@ -22954,6 +24045,18 @@ "wcwidth": "^1.0.1" }, "dependencies": { + "@react-native-community/cli-platform-ios": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-9.3.0.tgz", + "integrity": "sha512-nihTX53BhF2Q8p4B67oG3RGe1XwggoGBrMb6vXdcu2aN0WeXJOXdBLgR900DAA1O8g7oy1Sudu6we+JsVTKnjw==", + "requires": { + "@react-native-community/cli-tools": "^9.2.1", + "chalk": "^4.1.2", + "execa": "^1.0.0", + "glob": "^7.1.3", + "ora": "^5.4.1" + } + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -23070,17 +24173,31 @@ } }, "@react-native-community/cli-hermes": { - "version": "8.0.5", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-8.0.5.tgz", - "integrity": "sha512-Zm0wM6SfgYAEX1kfJ1QBvTayabvh79GzmjHyuSnEROVNPbl4PeCG4WFbwy489tGwOP9Qx9fMT5tRIFCD8bp6/g==", + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-9.3.1.tgz", + "integrity": "sha512-Mq4PK8m5YqIdaVq5IdRfp4qK09aVO+aiCtd6vjzjNUgk1+1X5cgUqV6L65h4N+TFJYJHcp2AnB+ik1FAYXvYPQ==", "requires": { - "@react-native-community/cli-platform-android": "^8.0.5", - "@react-native-community/cli-tools": "^8.0.4", + "@react-native-community/cli-platform-android": "^9.3.1", + "@react-native-community/cli-tools": "^9.2.1", "chalk": "^4.1.2", "hermes-profile-transformer": "^0.0.6", "ip": "^1.1.5" }, "dependencies": { + "@react-native-community/cli-platform-android": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-9.3.1.tgz", + "integrity": "sha512-m0bQ6Twewl7OEZoVf79I2GZmsDqh+Gh0bxfxWgwxobsKDxLx8/RNItAo1lVtTCgzuCR75cX4EEO8idIF9jYhew==", + "requires": { + "@react-native-community/cli-tools": "^9.2.1", + "chalk": "^4.1.2", + "execa": "^1.0.0", + "fs-extra": "^8.1.0", + "glob": "^7.1.3", + "logkitty": "^0.7.1", + "slash": "^3.0.0" + } + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -23127,17 +24244,15 @@ } }, "@react-native-community/cli-platform-android": { - "version": "8.0.5", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-8.0.5.tgz", - "integrity": "sha512-z1YNE4T1lG5o9acoQR1GBvf7mq6Tzayqo/za5sHVSOJAC9SZOuVN/gg/nkBa9a8n5U7qOMFXfwhTMNqA474gXA==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-9.2.1.tgz", + "integrity": "sha512-VamCZ8nido3Q3Orhj6pBIx48itORNPLJ7iTfy3nucD1qISEDih3DOzCaQCtmqdEBgUkNkNl0O+cKgq5A3th3Zg==", "requires": { - "@react-native-community/cli-tools": "^8.0.4", + "@react-native-community/cli-tools": "^9.2.1", "chalk": "^4.1.2", "execa": "^1.0.0", "fs-extra": "^8.1.0", "glob": "^7.1.3", - "jetifier": "^1.6.2", - "lodash": "^4.17.15", "logkitty": "^0.7.1", "slash": "^3.0.0" }, @@ -23188,18 +24303,15 @@ } }, "@react-native-community/cli-platform-ios": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-8.0.6.tgz", - "integrity": "sha512-CMR6mu/LVx6JVfQRDL9uULsMirJT633bODn+IrYmrwSz250pnhON16We8eLPzxOZHyDjm7JPuSgHG3a/BPiRuQ==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-9.2.1.tgz", + "integrity": "sha512-dEgvkI6CFgPk3vs8IOR0toKVUjIFwe4AsXFvWWJL5qhrIzW9E5Owi0zPkSvzXsMlfYMbVX0COfVIK539ZxguSg==", "requires": { - "@react-native-community/cli-tools": "^8.0.4", + "@react-native-community/cli-tools": "^9.2.1", "chalk": "^4.1.2", "execa": "^1.0.0", "glob": "^7.1.3", - "js-yaml": "^3.13.1", - "lodash": "^4.17.15", - "ora": "^5.4.1", - "plist": "^3.0.2" + "ora": "^5.4.1" }, "dependencies": { "ansi-styles": { @@ -23311,19 +24423,19 @@ } }, "@react-native-community/cli-plugin-metro": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-8.0.4.tgz", - "integrity": "sha512-UWzY1eMcEr/6262R2+d0Is5M3L/7Y/xXSDIFMoc5Rv5Wucl3hJM/TxHXmByvHpuJf6fJAfqOskyt4bZCvbI+wQ==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-9.2.1.tgz", + "integrity": "sha512-byBGBH6jDfUvcHGFA45W/sDwMlliv7flJ8Ns9foCh3VsIeYYPoDjjK7SawE9cPqRdMAD4SY7EVwqJnOtRbwLiQ==", "requires": { - "@react-native-community/cli-server-api": "^8.0.4", - "@react-native-community/cli-tools": "^8.0.4", + "@react-native-community/cli-server-api": "^9.2.1", + "@react-native-community/cli-tools": "^9.2.1", "chalk": "^4.1.2", - "metro": "^0.70.1", - "metro-config": "^0.70.1", - "metro-core": "^0.70.1", - "metro-react-native-babel-transformer": "^0.70.1", - "metro-resolver": "^0.70.1", - "metro-runtime": "^0.70.1", + "metro": "0.72.3", + "metro-config": "0.72.3", + "metro-core": "0.72.3", + "metro-react-native-babel-transformer": "0.72.3", + "metro-resolver": "0.72.3", + "metro-runtime": "0.72.3", "readline": "^1.3.0" }, "dependencies": { @@ -23373,12 +24485,12 @@ } }, "@react-native-community/cli-server-api": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-8.0.4.tgz", - "integrity": "sha512-Orr14njx1E70CVrUA8bFdl+mrnbuXUjf1Rhhm0RxUadFpvkHuOi5dh8Bryj2MKtf8eZrpEwZ7tuQPhJEULW16A==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-9.2.1.tgz", + "integrity": "sha512-EI+9MUxEbWBQhWw2PkhejXfkcRqPl+58+whlXJvKHiiUd7oVbewFs0uLW0yZffUutt4FGx6Uh88JWEgwOzAdkw==", "requires": { - "@react-native-community/cli-debugger-ui": "^8.0.0", - "@react-native-community/cli-tools": "^8.0.4", + "@react-native-community/cli-debugger-ui": "^9.0.0", + "@react-native-community/cli-tools": "^9.2.1", "compression": "^1.7.1", "connect": "^3.6.5", "errorhandler": "^1.5.0", @@ -23397,14 +24509,13 @@ } }, "@react-native-community/cli-tools": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-8.0.4.tgz", - "integrity": "sha512-ePN9lGxh6LRFiotyddEkSmuqpQhnq2iw9oiXYr4EFWpIEy0yCigTuSTiDF68+c8M9B+7bTwkRpz/rMPC4ViO5Q==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-9.2.1.tgz", + "integrity": "sha512-bHmL/wrKmBphz25eMtoJQgwwmeCylbPxqFJnFSbkqJPXQz3ManQ6q/gVVMqFyz7D3v+riaus/VXz3sEDa97uiQ==", "requires": { "appdirsjs": "^1.2.4", "chalk": "^4.1.2", "find-up": "^5.0.0", - "lodash": "^4.17.15", "mime": "^2.4.1", "node-fetch": "^2.6.0", "open": "^6.2.0", @@ -23535,21 +24646,27 @@ } }, "@react-native-community/cli-types": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-8.0.0.tgz", - "integrity": "sha512-1lZS1PEvMlFaN3Se1ksyoFWzMjk+YfKi490GgsqKJln9gvFm8tqVPdnXttI5Uf2DQf3BMse8Bk8dNH4oV6Ewow==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-9.1.0.tgz", + "integrity": "sha512-KDybF9XHvafLEILsbiKwz5Iobd+gxRaPyn4zSaAerBxedug4er5VUWa8Szy+2GeYKZzMh/gsb1o9lCToUwdT/g==", "requires": { "joi": "^17.2.1" } }, "@react-native-community/datetimepicker": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@react-native-community/datetimepicker/-/datetimepicker-6.2.0.tgz", - "integrity": "sha512-w1ZS+wYO3qSASliRp+B7mPphOhtVm++rhSbj1WsgXdgLgDXSkDxpMnAXXQu9M0XdcgBwVJ6wDExeIwuzU5Jtfg==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@react-native-community/datetimepicker/-/datetimepicker-6.5.2.tgz", + "integrity": "sha512-9K3zhIH1zmpIGSG3GJTWLIoAx+sR4kJ1wqpGKMwWJ5IYXBsFxMdvGw023t0pz2CQStlnNbbNhnZY/HMYFBCsCg==", "requires": { "invariant": "^2.2.4" } }, + "@react-native-picker/picker": { + "version": "2.4.8", + "resolved": "https://registry.npmjs.org/@react-native-picker/picker/-/picker-2.4.8.tgz", + "integrity": "sha512-5NQ5XPo1B03YNqKFrV6h9L3CQaHlB80wd4ETHUEABRP2iLh7FHLVObX2GfziD+K/VJb8G4KZcZ23NFBFP1f7bg==", + "requires": {} + }, "@react-native/assets": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@react-native/assets/-/assets-1.0.0.tgz", @@ -23717,15 +24834,20 @@ } }, "@sideway/formula": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", - "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==" }, "@sideway/pinpoint": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" }, + "@sinclair/typebox": { + "version": "0.24.51", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", + "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==" + }, "@types/glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", @@ -23735,14 +24857,6 @@ "@types/node": "*" } }, - "@types/graceful-fs": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", - "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", - "requires": { - "@types/node": "*" - } - }, "@types/hammerjs": { "version": "2.0.41", "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.41.tgz", @@ -24043,9 +25157,9 @@ } }, "@xmldom/xmldom": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.6.tgz", - "integrity": "sha512-HHXP9hskkFQHy8QxxUXkS7946FFIhYVfGqsk0WLwllmexN9x/+R4UBLvurHEuyXRfVEObVR8APuQehykLviwSQ==" + "version": "0.7.9", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.9.tgz", + "integrity": "sha512-yceMpm/xd4W2a85iqZyO09gTnHvXF6pyiWjD2jcOJs7hRoZtNNOO1eJlhHj1ixA+xip2hOyGn+LgcvLCMo5zXA==" }, "@xtuc/ieee754": { "version": "1.2.0", @@ -24089,6 +25203,14 @@ "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==" }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "requires": { + "debug": "4" + } + }, "aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", @@ -24189,9 +25311,9 @@ "integrity": "sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==" }, "application-config-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/application-config-path/-/application-config-path-0.1.0.tgz", - "integrity": "sha512-lljTpVvFteShrHuKRvweZfa9o/Nc34Y8r5/1Lqh/yyKaspRT2J3fkEiSSk1YLG8ZSVyU7yHysRy9zcDDS2aH1Q==" + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/application-config-path/-/application-config-path-0.1.1.tgz", + "integrity": "sha512-zy9cHePtMP0YhwG+CfHm0bgwdnga2X3gZexpdCwEj//dpb+TKajtiC8REEUJUSq6Ab4f9cgNy2l8ObXzCXFkEw==" }, "aproba": { "version": "1.2.0", @@ -24316,13 +25438,6 @@ "integrity": "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==", "requires": { "tslib": "^2.0.1" - }, - "dependencies": { - "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - } } }, "astral-regex": { @@ -24360,6 +25475,28 @@ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" }, + "axios": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.2.1.tgz", + "integrity": "sha512-I88cFiGu9ryt/tfVEi4kX2SITsvDddTajXTOFmt2uK1ZVA8LytjtdeyefdQWEf5PU8w+4SSJDoYnggflB5tW4A==", + "requires": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + }, + "dependencies": { + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + } + } + }, "babel-core": { "version": "7.0.0-bridge.0", "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", @@ -24379,17 +25516,17 @@ }, "dependencies": { "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "requires": { "minimist": "^1.2.0" } }, "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", "requires": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -24448,9 +25585,9 @@ } }, "babel-plugin-react-native-web": { - "version": "0.18.9", - "resolved": "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.18.9.tgz", - "integrity": "sha512-A9rrSfV98CFRS+ACgZorxaHH8gDrVyK2Nea8OHepY4Sv/Mf+vk8uvQq+tRUEBpHnUvd/qRDKIjFLbygecAt9VA==" + "version": "0.18.10", + "resolved": "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.18.10.tgz", + "integrity": "sha512-2UiwS6G7XKJvpo0X5OFkzGjHGFuNx9J+DgEG8TEmm+X5S0z6EB59W11RDEZghdKzsQzVbs1jB+2VHBuVgjMTiw==" }, "babel-plugin-syntax-trailing-function-commas": { "version": "7.0.0-beta.0", @@ -24458,16 +25595,17 @@ "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==" }, "babel-preset-expo": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-9.2.0.tgz", - "integrity": "sha512-aM2htiNx0H49H+MWCp9+cKVSdcdNSn0tbE5Dln/GO1xna4ZlnA30clbfClcYJFUcZtW90IsYeZwQ/hj8zyWhNA==", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-9.2.2.tgz", + "integrity": "sha512-69cSPObZWFz0AaUT6IhCu2VzPVTICUtXzhX5ecoDttFe+9wb9yMV8m7rBNZptJQ3wtiKB5iEL7/wvtKygPz/mQ==", "requires": { "@babel/plugin-proposal-decorators": "^7.12.9", + "@babel/plugin-proposal-object-rest-spread": "^7.12.13", "@babel/plugin-transform-react-jsx": "^7.12.17", "@babel/preset-env": "^7.12.9", "babel-plugin-module-resolver": "^4.1.0", "babel-plugin-react-native-web": "~0.18.2", - "metro-react-native-babel-preset": "~0.70.3" + "metro-react-native-babel-preset": "0.72.3" } }, "babel-preset-fbjs": { @@ -24672,9 +25810,9 @@ } }, "bplist-parser": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.2.tgz", - "integrity": "sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.1.tgz", + "integrity": "sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==", "requires": { "big-integer": "1.6.x" } @@ -24955,13 +26093,6 @@ "requires": { "pascal-case": "^3.1.2", "tslib": "^2.0.3" - }, - "dependencies": { - "tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - } } }, "camelcase": { @@ -25739,9 +26870,9 @@ } }, "crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==" }, "css-color-names": { "version": "0.0.4", @@ -25792,17 +26923,17 @@ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" }, "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "requires": { "minimist": "^1.2.0" } }, "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", "requires": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -25985,9 +27116,9 @@ "integrity": "sha512-+LSAiGFwQ9dRnRdOeaj7g47ZFJcOUPukAP8J3A3fuZ1g9Y44BG+P1sgApjLXTQPOzC4+7S9Wr8kXsfpINM4jpw==" }, "dayjs": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.6.tgz", - "integrity": "sha512-zZbY5giJAinCG+7AGaw0wIhNZ6J8AhWuSXKvuc1KAyMiRsvGQWqh4L+MomvhdAYjN+lqvVCMq1I41e3YHvXkyQ==" + "version": "1.11.7", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz", + "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==" }, "debug": { "version": "4.3.4", @@ -26003,9 +27134,9 @@ "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" }, "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==" + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==" }, "deep-equal": { "version": "1.1.1", @@ -26280,13 +27411,6 @@ "requires": { "no-case": "^3.0.4", "tslib": "^2.0.3" - }, - "dependencies": { - "tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - } } }, "dot-prop": { @@ -26714,24 +27838,26 @@ } }, "expo": { - "version": "46.0.17", - "resolved": "https://registry.npmjs.org/expo/-/expo-46.0.17.tgz", - "integrity": "sha512-rB+KMvjU3lFMkec5LcVFFn0Q2iJUEIoyB9TckKMirA15H5mW4yZMao0ilR7239fJ5ytVoDC8SIf7ZAvTmiMuMw==", + "version": "47.0.9", + "resolved": "https://registry.npmjs.org/expo/-/expo-47.0.9.tgz", + "integrity": "sha512-NZtwk2Q+8DYlEpY/vBWDOVeN20AdlsVlZlhLOHAqvXpUSlNhG5XYBJD3wW+GQ1BQetq/8Hxe5NaZu0N5YkYsvA==", "requires": { "@babel/runtime": "^7.14.0", - "@expo/cli": "0.3.2", + "@expo/cli": "0.4.10", + "@expo/config": "7.0.3", + "@expo/config-plugins": "5.0.4", "@expo/vector-icons": "^13.0.0", - "babel-preset-expo": "~9.2.0", + "babel-preset-expo": "~9.2.2", "cross-spawn": "^6.0.5", - "expo-application": "~4.2.2", - "expo-asset": "~8.6.1", - "expo-constants": "~13.2.4", - "expo-error-recovery": "~3.2.0", - "expo-file-system": "~14.1.0", - "expo-font": "~10.2.1", - "expo-keep-awake": "~10.2.0", - "expo-modules-autolinking": "0.10.3", - "expo-modules-core": "0.11.9", + "expo-application": "~5.0.1", + "expo-asset": "~8.7.0", + "expo-constants": "~14.0.2", + "expo-error-recovery": "~4.0.1", + "expo-file-system": "~15.1.1", + "expo-font": "~11.0.1", + "expo-keep-awake": "~11.0.1", + "expo-modules-autolinking": "1.0.0", + "expo-modules-core": "1.0.4", "fbemitter": "^3.0.0", "getenv": "^1.0.0", "invariant": "^2.2.4", @@ -26739,22 +27865,163 @@ "node-fetch": "^2.6.7", "pretty-format": "^26.5.2", "uuid": "^3.4.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@expo/config": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-7.0.3.tgz", + "integrity": "sha512-joVtB5o+NF40Tmsdp65UzryRtbnCuMbXkVO4wJnNJO4aaK0EYLdHCYSewORVqNcDfGN0LphQr8VTG2npbd9CJA==", + "requires": { + "@babel/code-frame": "~7.10.4", + "@expo/config-plugins": "~5.0.3", + "@expo/config-types": "^47.0.0", + "@expo/json-file": "8.2.36", + "getenv": "^1.0.0", + "glob": "7.1.6", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "semver": "7.3.2", + "slugify": "^1.3.4", + "sucrase": "^3.20.0" + } + }, + "@expo/config-plugins": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-5.0.4.tgz", + "integrity": "sha512-vzUcVpqOMs3h+hyRdhGwk+eGIOhXa5xYdd92yO17RMNHav3v/+ekMbs7XA2c3lepMO8Yd4/5hqmRw9ZTL6jGzg==", + "requires": { + "@expo/config-types": "^47.0.0", + "@expo/json-file": "8.2.36", + "@expo/plist": "0.0.18", + "@expo/sdk-runtime-versions": "^1.0.0", + "@react-native/normalize-color": "^2.0.0", + "chalk": "^4.1.2", + "debug": "^4.3.1", + "find-up": "~5.0.0", + "getenv": "^1.0.0", + "glob": "7.1.6", + "resolve-from": "^5.0.0", + "semver": "^7.3.5", + "slash": "^3.0.0", + "xcode": "^3.0.1", + "xml2js": "0.4.23" + }, + "dependencies": { + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@expo/config-types": { + "version": "47.0.0", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-47.0.0.tgz", + "integrity": "sha512-r0pWfuhkv7KIcXMUiNACJmJKKwlTBGMw9VZHNdppS8/0Nve8HZMTkNRFQzTHW1uH3pBj8jEXpyw/2vSWDHex9g==" + }, + "@expo/json-file": { + "version": "8.2.36", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.36.tgz", + "integrity": "sha512-tOZfTiIFA5KmMpdW9KF7bc6CFiGjb0xnbieJhTGlHrLL+ps2G0OkqmuZ3pFEXBOMnJYUVpnSy++52LFxvpa5ZQ==", + "requires": { + "@babel/code-frame": "~7.10.4", + "json5": "^1.0.1", + "write-file-atomic": "^2.3.0" + } + }, + "@expo/plist": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.18.tgz", + "integrity": "sha512-+48gRqUiz65R21CZ/IXa7RNBXgAI/uPSdvJqoN9x1hfL44DNbUoWHgHiEXTx7XelcATpDwNTz6sHLfy0iNqf+w==", + "requires": { + "@xmldom/xmldom": "~0.7.0", + "base64-js": "^1.2.3", + "xmlbuilder": "^14.0.0" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "requires": { + "minimist": "^1.2.0" + } + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } } }, "expo-application": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-4.2.2.tgz", - "integrity": "sha512-bFEaFRUdV6aK2iBd+HzkHNPYsyj88EAhaQW5leznmO0qQMJxpAQ3eoUXMey1hfDBh1qgkkHgSyCZ9BIgMAGJ1g==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-5.0.1.tgz", + "integrity": "sha512-bThxK5zH/Lc2tkCvEXGjfM7ayvOVmPWYcWzXsMIU1RtG73TyXo4cq+73FvfDNIWn6gKS0WyMcmoPB3WXEV/jsw==", "requires": {} }, "expo-asset": { - "version": "8.6.1", - "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-8.6.1.tgz", - "integrity": "sha512-urbUp1YtwH2J0Qc3inGQJdqTjWKML77SeMNgff+iR9MUE8gDkFqSCDjrBi7i5Oj5DDtq43mmtDg8G8ei6Vchcg==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-8.7.0.tgz", + "integrity": "sha512-lkoNsHK6vf+outISB6/37SonXcAL6Buw0ycjiwQVFfpOBKpkQa+zw5wm1m3KwjH2txmR3xdIzcpWsJkgovYCvQ==", "requires": { "blueimp-md5": "^2.10.0", - "expo-constants": "~13.2.2", - "expo-file-system": "~14.1.0", + "expo-constants": "~14.0.0", + "expo-file-system": "~15.1.0", "invariant": "^2.2.4", "md5-file": "^3.2.3", "path-browserify": "^1.0.0", @@ -26762,48 +28029,258 @@ } }, "expo-constants": { - "version": "13.2.4", - "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-13.2.4.tgz", - "integrity": "sha512-Zobau8EuTk2GgafwkfGnWM6CmSLB7X8qnQXVuXe0nd3v92hfQUmRWGhJwH88uxXj3LrfqctM6PaJ8taG1vxfBw==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-14.0.2.tgz", + "integrity": "sha512-wzV3nrzTXTI8yG0tfas3fnqCfKV6YE+1GphEREyVDAShEB6mBInX1b6HgtpHFy2wOtnml+lPVmTCeGtjjLnZhA==", "requires": { - "@expo/config": "~7.0.0", + "@expo/config": "~7.0.2", "uuid": "^3.3.2" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@expo/config": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-7.0.3.tgz", + "integrity": "sha512-joVtB5o+NF40Tmsdp65UzryRtbnCuMbXkVO4wJnNJO4aaK0EYLdHCYSewORVqNcDfGN0LphQr8VTG2npbd9CJA==", + "requires": { + "@babel/code-frame": "~7.10.4", + "@expo/config-plugins": "~5.0.3", + "@expo/config-types": "^47.0.0", + "@expo/json-file": "8.2.36", + "getenv": "^1.0.0", + "glob": "7.1.6", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "semver": "7.3.2", + "slugify": "^1.3.4", + "sucrase": "^3.20.0" + } + }, + "@expo/config-plugins": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-5.0.4.tgz", + "integrity": "sha512-vzUcVpqOMs3h+hyRdhGwk+eGIOhXa5xYdd92yO17RMNHav3v/+ekMbs7XA2c3lepMO8Yd4/5hqmRw9ZTL6jGzg==", + "requires": { + "@expo/config-types": "^47.0.0", + "@expo/json-file": "8.2.36", + "@expo/plist": "0.0.18", + "@expo/sdk-runtime-versions": "^1.0.0", + "@react-native/normalize-color": "^2.0.0", + "chalk": "^4.1.2", + "debug": "^4.3.1", + "find-up": "~5.0.0", + "getenv": "^1.0.0", + "glob": "7.1.6", + "resolve-from": "^5.0.0", + "semver": "^7.3.5", + "slash": "^3.0.0", + "xcode": "^3.0.1", + "xml2js": "0.4.23" + }, + "dependencies": { + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@expo/config-types": { + "version": "47.0.0", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-47.0.0.tgz", + "integrity": "sha512-r0pWfuhkv7KIcXMUiNACJmJKKwlTBGMw9VZHNdppS8/0Nve8HZMTkNRFQzTHW1uH3pBj8jEXpyw/2vSWDHex9g==" + }, + "@expo/json-file": { + "version": "8.2.36", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.36.tgz", + "integrity": "sha512-tOZfTiIFA5KmMpdW9KF7bc6CFiGjb0xnbieJhTGlHrLL+ps2G0OkqmuZ3pFEXBOMnJYUVpnSy++52LFxvpa5ZQ==", + "requires": { + "@babel/code-frame": "~7.10.4", + "json5": "^1.0.1", + "write-file-atomic": "^2.3.0" + } + }, + "@expo/plist": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.18.tgz", + "integrity": "sha512-+48gRqUiz65R21CZ/IXa7RNBXgAI/uPSdvJqoN9x1hfL44DNbUoWHgHiEXTx7XelcATpDwNTz6sHLfy0iNqf+w==", + "requires": { + "@xmldom/xmldom": "~0.7.0", + "base64-js": "^1.2.3", + "xmlbuilder": "^14.0.0" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "requires": { + "minimist": "^1.2.0" + } + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "expo-dev-client": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/expo-dev-client/-/expo-dev-client-2.0.1.tgz", + "integrity": "sha512-+OXXZKKo/CplqklpaZasHAX7qaRrzC83biqXTFa1z5NiFW41uqtAqTFx6gmPi4kx3YgwtD+ep6R3SRrKjdCukg==", + "requires": { + "expo-dev-launcher": "2.0.2", + "expo-dev-menu": "2.0.2", + "expo-dev-menu-interface": "1.0.0", + "expo-manifests": "~0.4.0", + "expo-updates-interface": "~0.8.0" + } + }, + "expo-dev-launcher": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expo-dev-launcher/-/expo-dev-launcher-2.0.2.tgz", + "integrity": "sha512-MQT7VSOHJQrEs3YAv5BQLYs3Uk7P1dNqBw6kKrj3jKBq0z92k2LLg1aCk7nP8OGJVDvrb2jTXBka8VXVqF0ECg==", + "requires": { + "expo-dev-menu": "2.0.2", + "resolve-from": "^5.0.0", + "semver": "^7.3.5" + }, + "dependencies": { + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "expo-dev-menu": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expo-dev-menu/-/expo-dev-menu-2.0.2.tgz", + "integrity": "sha512-SxR5riXgm+VVKsDKC/bOLuOJ0CKutW07G+OqJ9eYfxwGfxa8omLJHwagbCsd8FwUPGkzvzgfRJRGLo5J6REMow==", + "requires": { + "expo-dev-menu-interface": "1.0.0", + "semver": "^7.3.5" + }, + "dependencies": { + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "requires": { + "lru-cache": "^6.0.0" + } + } } }, + "expo-dev-menu-interface": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/expo-dev-menu-interface/-/expo-dev-menu-interface-1.0.0.tgz", + "integrity": "sha512-4lsVofTwV9oBM+zo7XhtmvbfiXD4I7I3Rqns6U0i6IOnH7OGBDpKvGZ5YikWPFGn6NOu8loqqd8S7inFIaxC0A==", + "requires": {} + }, "expo-error-recovery": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/expo-error-recovery/-/expo-error-recovery-3.2.0.tgz", - "integrity": "sha512-XZ630ks5HNxa9oc2Ya1hEn1ez031Cy4VnyxerPC2o9fKNKSrD/64cRqGF9NkGM3X2uf8+PCB9adxVflAIXBf6w==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/expo-error-recovery/-/expo-error-recovery-4.0.1.tgz", + "integrity": "sha512-wceptnRX+N3qCSVTNbIchUFu3GmY30onRH5L66OF8HMLpAIQfrZMLxJfz7SAMJTcr3jxsJ11vSa2l2RaPKgHsQ==", "optional": true, "requires": {} }, "expo-file-system": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-14.1.0.tgz", - "integrity": "sha512-lJcPGQ8yKXVknVkD5TmcJnR/TpQbEL0JP8hknLejfq3FIqPqI/LBFn31YiP37grxW8lITz1al8pq5T6CSUjAzQ==", + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-15.1.1.tgz", + "integrity": "sha512-MYYDKxjLo9VOkvGHqym5EOAUS+ero9O66X5zI+EXJzqNznKvnfScdXeeAaQzShmWtmLkdVDCoYFGOaTvTA1wTQ==", "requires": { - "@expo/config-plugins": "~5.0.0", "uuid": "^3.4.0" } }, "expo-font": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-10.2.1.tgz", - "integrity": "sha512-sxy5GrdtY+Ka8Wo5wnrcFFeO6MbYC6Dris5wMLqshvVK6BneJNMUsFvwRfvVgg0TzsmMAc3Rlca2xyZ8ettinw==", + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-11.0.1.tgz", + "integrity": "sha512-LGAIluWZfru0J0n87dzb6pwAB6TVMTEiLcsd/ktozzbn4DlN7SeQy40+ruU6bvAKCOGrnRneYbKSIOGkrd7oNg==", "requires": { "fontfaceobserver": "^2.1.0" } }, + "expo-json-utils": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/expo-json-utils/-/expo-json-utils-0.4.0.tgz", + "integrity": "sha512-lK6gjea72XTYafpKNNJaMrBK5dYAX8LFLXrp/M1MKJU4Zy7EHd2rKrLwop3GZts8VdwLHeVcMko79SAbhe3i5Q==" + }, "expo-keep-awake": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-10.2.0.tgz", - "integrity": "sha512-kIRtO4Hmrvxh4E45IPWG/NiUZsuRe1AQwBT09pq+kx8nm6tUS4B9TeL6+1NFy+qVBLbGKDqoQD5Ez7XYTFtBeQ==", + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-11.0.1.tgz", + "integrity": "sha512-44ZjgLE4lnce2d40Pv8xsjMVc6R5GvgHOwZfkLYtGmgYG9TYrEJeEj5UfSeweXPL3pBFhXKfFU8xpGYMaHdP0A==", "requires": {} }, + "expo-manifests": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/expo-manifests/-/expo-manifests-0.4.0.tgz", + "integrity": "sha512-IdZjIYDxx4nH0Gb3X4T4/2YknmR/jSLxymAS0m7SfJ9V7Vlu/y0p3lNwUys9/JzihxX9PDIuOi/Y4/uqL6TlXg==", + "requires": { + "expo-json-utils": "~0.4.0" + } + }, "expo-modules-autolinking": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-0.10.3.tgz", - "integrity": "sha512-av9ln2zwUt303g98raX7sDmESgL3SXs1sbbtIjh1rL7R0676XIUacIKgbydR0/4tMbOShWx14Z9fozpk9xIAJA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-1.0.0.tgz", + "integrity": "sha512-MoRRkOVMoGUH/Lr8XS6UmBIZT/qrwbRt2IzUBALcM6MWZKtDn9Uct9XgMRxue82FJhRCfy9p1xZJVKHBRo4zEA==", "requires": { "chalk": "^4.1.0", "commander": "^7.2.0", @@ -26883,9 +28360,9 @@ } }, "expo-modules-core": { - "version": "0.11.9", - "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-0.11.9.tgz", - "integrity": "sha512-6AlOE4KHN3/WWbY8hH7W6ceuIFj0qbk1N+UhmMhiCEUas3NvXA6wcH3xjO+8JZ+BRcIB9M4QEeX72j6vDDuExg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-1.0.4.tgz", + "integrity": "sha512-Cf2G8f2h3TGASKNDYXlOwe5CBMmRt32wZzBAmau6qComw0e13Y9sDYORSfgk+NJWvLnHJrInN4qGytxHfal/aA==", "requires": { "compare-versions": "^3.4.0", "invariant": "^2.2.4" @@ -26902,24 +28379,6 @@ "update-check": "1.5.3" }, "dependencies": { - "@expo/image-utils": { - "version": "0.3.23", - "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.3.23.tgz", - "integrity": "sha512-nhUVvW0TrRE4jtWzHQl8TR4ox7kcmrc2I0itaeJGjxF5A54uk7avgA0wRt7jP1rdvqQo1Ke1lXyLYREdhN9tPw==", - "requires": { - "@expo/spawn-async": "1.5.0", - "chalk": "^4.0.0", - "fs-extra": "9.0.0", - "getenv": "^1.0.0", - "jimp-compact": "0.16.1", - "mime": "^2.4.4", - "node-fetch": "^2.6.0", - "parse-png": "^2.1.0", - "resolve-from": "^5.0.0", - "semver": "7.3.2", - "tempy": "0.3.0" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -26955,48 +28414,11 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==" }, - "crypto-random-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==" - }, - "fs-extra": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz", - "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==", - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^1.0.0" - } - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - }, - "dependencies": { - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" - } - } - }, - "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -27004,46 +28426,28 @@ "requires": { "has-flag": "^4.0.0" } - }, - "temp-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", - "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==" - }, - "tempy": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.3.0.tgz", - "integrity": "sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==", - "requires": { - "temp-dir": "^1.0.0", - "type-fest": "^0.3.1", - "unique-string": "^1.0.0" - } - }, - "type-fest": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", - "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==" - }, - "unique-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", - "integrity": "sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==", - "requires": { - "crypto-random-string": "^1.0.0" - } - }, - "universalify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", - "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==" } } }, + "expo-splash-screen": { + "version": "0.17.5", + "resolved": "https://registry.npmjs.org/expo-splash-screen/-/expo-splash-screen-0.17.5.tgz", + "integrity": "sha512-ejSO78hwHXz8T9u8kh8t4r6CR4h70iBvA65gX8GK+dYxZl6/IANPbIb2VnUpND9vqfW+JnkDw+ZFst+gDnkpcQ==", + "requires": { + "@expo/configure-splash-screen": "^0.6.0", + "@expo/prebuild-config": "5.0.7" + } + }, "expo-status-bar": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/expo-status-bar/-/expo-status-bar-1.4.0.tgz", - "integrity": "sha512-vh98g8qMIjig/2XTBsoAWS6Vo2dIIwDWjB3/GiuZ9Lazpxc9GO/APfJ4dar7MibzIDUKIrjotrcL6rLdPH13Ew==" + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/expo-status-bar/-/expo-status-bar-1.4.2.tgz", + "integrity": "sha512-ZWjO6D4ARGYfAd3SWDD3STNudHDhyBZDZjhhseqoEmsf7bS9ykny8KKOhlzJW24qIQNPhkgdvHhaw9fQwMJy3Q==" + }, + "expo-updates-interface": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/expo-updates-interface/-/expo-updates-interface-0.8.1.tgz", + "integrity": "sha512-1TPFCTQFHMZbltFGnxig3PbN/b6nO4T0RyL8XqdmYvQY0ElOCprZXQQ8vNDqeLYHgausG1lD4OyJwFzh2SNBSA==", + "requires": {} }, "express": { "version": "4.18.2", @@ -27837,13 +29241,6 @@ "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", "requires": { "tslib": "^2.1.0" - }, - "dependencies": { - "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - } } }, "gzip-size": { @@ -27987,22 +29384,17 @@ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" }, - "hermes-engine": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/hermes-engine/-/hermes-engine-0.11.0.tgz", - "integrity": "sha512-7aMUlZja2IyLYAcZ69NBnwJAR5ZOYlSllj0oMpx08a8HzxHOys0eKCzfphrf6D0vX1JGO1QQvVsQKe6TkYherw==" - }, "hermes-estree": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.6.0.tgz", - "integrity": "sha512-2YTGzJCkhdmT6VuNprWjXnvTvw/3iPNw804oc7yknvQpNKo+vJGZmtvLLCghOZf0OwzKaNAzeIMp71zQbNl09w==" + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.8.0.tgz", + "integrity": "sha512-W6JDAOLZ5pMPMjEiQGLCXSSV7pIBEgRR5zGkxgmzGSXHOxqV5dC/M1Zevqpbm9TZDE5tu358qZf8Vkzmsc+u7Q==" }, "hermes-parser": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.6.0.tgz", - "integrity": "sha512-Vf58jBZca2+QBLR9h7B7mdg8oFz2g5ILz1iVouZ5DOrOrAfBmPfJjdjDT8jrO0f+iJ4/hSRrQHqHIjSnTaLUDQ==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.8.0.tgz", + "integrity": "sha512-yZKalg1fTYG5eOiToLUaw69rQfZq/fi+/NtEXRU7N87K/XobNRhRWorh80oSge2lWUiZfTgUvRJH+XgZWrhoqA==", "requires": { - "hermes-estree": "0.6.0" + "hermes-estree": "0.8.0" } }, "hermes-profile-transformer": { @@ -28139,17 +29531,17 @@ }, "dependencies": { "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "requires": { "minimist": "^1.2.0" } }, "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", "requires": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -28321,6 +29713,15 @@ "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==" }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "requires": { + "agent-base": "6", + "debug": "4" + } + }, "hyphenate-style-name": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz", @@ -28706,6 +30107,11 @@ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==" + }, "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -28836,91 +30242,6 @@ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==" }, - "jest-haste-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", - "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", - "requires": { - "@jest/types": "^27.5.1", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^27.5.1", - "jest-serializer": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - }, - "dependencies": { - "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, "jest-regex-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", @@ -29096,20 +30417,15 @@ } } }, - "jetifier": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/jetifier/-/jetifier-1.6.8.tgz", - "integrity": "sha512-3Zi16h6L5tXDRQJTb221cnRoVG9/9OvreLdLU2/ZjRv/GILL+2Cemt0IKvkowwkDpvouAU1DQPOJ7qaiHeIdrw==" - }, "jimp-compact": { "version": "0.16.1", "resolved": "https://registry.npmjs.org/jimp-compact/-/jimp-compact-0.16.1.tgz", "integrity": "sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==" }, "joi": { - "version": "17.6.4", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.4.tgz", - "integrity": "sha512-tPzkTJHZQjSFCc842QpdVpOZ9LI2txApboNUbW70qgnRB14Lzl+oWQOPdF2N4yqyiY14wBGe8lc7f/2hZxbGmw==", + "version": "17.7.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.7.0.tgz", + "integrity": "sha512-1/ugc8djfn93rTE3WRKdCzGGt/EtiYKxITMO4Wiv6q5JL1gl9ePt4kBsl1S499nbosspfctIQTpYIhSmHA3WAg==", "requires": { "@hapi/hoek": "^9.0.0", "@hapi/topo": "^5.0.0", @@ -29377,9 +30693,9 @@ "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==" }, "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" }, "jsonfile": { "version": "4.0.0", @@ -29437,9 +30753,9 @@ "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==" }, "loader-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.3.tgz", - "integrity": "sha512-THWqIsn8QRnvLl0shHYVBN9syumU8pYWEHPTmkiVGd+7K5eFNVSY6AJhRvgGF70gg1Dz+l/k8WicvFCxdEs60A==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "requires": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -29503,9 +30819,9 @@ } }, "loglevel": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.0.tgz", - "integrity": "sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==" + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz", + "integrity": "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==" }, "loose-envify": { "version": "1.4.0", @@ -29521,13 +30837,6 @@ "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", "requires": { "tslib": "^2.0.3" - }, - "dependencies": { - "tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - } } }, "lru-cache": { @@ -29692,6 +31001,14 @@ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" }, + "merge-options": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz", + "integrity": "sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==", + "requires": { + "is-plain-obj": "^2.1.0" + } + }, "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -29708,9 +31025,9 @@ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" }, "metro": { - "version": "0.70.3", - "resolved": "https://registry.npmjs.org/metro/-/metro-0.70.3.tgz", - "integrity": "sha512-uEWS7xg8oTetQDABYNtsyeUjdLhH3KAvLFpaFFoJqUpOk2A3iygszdqmjobFl6W4zrvKDJS+XxdMR1roYvUhTw==", + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro/-/metro-0.72.3.tgz", + "integrity": "sha512-Hb3xTvPqex8kJ1hutQNZhQadUKUwmns/Du9GikmWKBFrkiG3k3xstGAyO5t5rN9JSUEzQT6y9SWzSSOGogUKIg==", "requires": { "@babel/code-frame": "^7.0.0", "@babel/core": "^7.14.0", @@ -29730,27 +31047,27 @@ "error-stack-parser": "^2.0.6", "fs-extra": "^1.0.0", "graceful-fs": "^4.2.4", - "hermes-parser": "0.6.0", + "hermes-parser": "0.8.0", "image-size": "^0.6.0", "invariant": "^2.2.4", - "jest-haste-map": "^27.3.1", "jest-worker": "^27.2.0", "lodash.throttle": "^4.1.1", - "metro-babel-transformer": "0.70.3", - "metro-cache": "0.70.3", - "metro-cache-key": "0.70.3", - "metro-config": "0.70.3", - "metro-core": "0.70.3", - "metro-hermes-compiler": "0.70.3", - "metro-inspector-proxy": "0.70.3", - "metro-minify-uglify": "0.70.3", - "metro-react-native-babel-preset": "0.70.3", - "metro-resolver": "0.70.3", - "metro-runtime": "0.70.3", - "metro-source-map": "0.70.3", - "metro-symbolicate": "0.70.3", - "metro-transform-plugins": "0.70.3", - "metro-transform-worker": "0.70.3", + "metro-babel-transformer": "0.72.3", + "metro-cache": "0.72.3", + "metro-cache-key": "0.72.3", + "metro-config": "0.72.3", + "metro-core": "0.72.3", + "metro-file-map": "0.72.3", + "metro-hermes-compiler": "0.72.3", + "metro-inspector-proxy": "0.72.3", + "metro-minify-uglify": "0.72.3", + "metro-react-native-babel-preset": "0.72.3", + "metro-resolver": "0.72.3", + "metro-runtime": "0.72.3", + "metro-source-map": "0.72.3", + "metro-symbolicate": "0.72.3", + "metro-transform-plugins": "0.72.3", + "metro-transform-worker": "0.72.3", "mime-types": "^2.1.27", "node-fetch": "^2.2.0", "nullthrows": "^1.1.1", @@ -29870,62 +31187,96 @@ } }, "metro-babel-transformer": { - "version": "0.70.3", - "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.70.3.tgz", - "integrity": "sha512-bWhZRMn+mIOR/s3BDpFevWScz9sV8FGktVfMlF1eJBLoX24itHDbXvTktKBYi38PWIKcHedh6THSFpJogfuwNA==", + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.72.3.tgz", + "integrity": "sha512-PTOR2zww0vJbWeeM3qN90WKENxCLzv9xrwWaNtwVlhcV8/diNdNe82sE1xIxLFI6OQuAVwNMv1Y7VsO2I7Ejrw==", "requires": { "@babel/core": "^7.14.0", - "hermes-parser": "0.6.0", - "metro-source-map": "0.70.3", + "hermes-parser": "0.8.0", + "metro-source-map": "0.72.3", "nullthrows": "^1.1.1" } }, "metro-cache": { - "version": "0.70.3", - "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.70.3.tgz", - "integrity": "sha512-iCix/+z812fUqa6KlOxaTkY6LQQDoXIe/VljXkGIvpygSCmYyhjQpfQVZEVVPezFmUBYXNdabdQ6cYx6JX3yMg==", + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.72.3.tgz", + "integrity": "sha512-++eyZzwkXvijWRV3CkDbueaXXGlVzH9GA52QWqTgAOgSHYp5jWaDwLQ8qpsMkQzpwSyIF4LLK9aI3eA7Xa132A==", "requires": { - "metro-core": "0.70.3", + "metro-core": "0.72.3", "rimraf": "^2.5.4" } }, "metro-cache-key": { - "version": "0.70.3", - "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.70.3.tgz", - "integrity": "sha512-0zpw+IcpM3hmGd5sKMdxNv3sbOIUYnMUvx1/yaM6vNRReSPmOLX0bP8fYf3CGgk8NEreZ1OHbVsuw7bdKt40Mw==" + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.72.3.tgz", + "integrity": "sha512-kQzmF5s3qMlzqkQcDwDxrOaVxJ2Bh6WRXWdzPnnhsq9LcD3B3cYqQbRBS+3tSuXmathb4gsOdhWslOuIsYS8Rg==" }, "metro-config": { - "version": "0.70.3", - "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.70.3.tgz", - "integrity": "sha512-SSCDjSTygoCgzoj61DdrBeJzZDRwQxUEfcgc6t6coxWSExXNR4mOngz0q4SAam49Bmjq9J2Jft6qUKnUTPrRgA==", + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.72.3.tgz", + "integrity": "sha512-VEsAIVDkrIhgCByq8HKTWMBjJG6RlYwWSu1Gnv3PpHa0IyTjKJtB7wC02rbTjSaemcr82scldf2R+h6ygMEvsw==", "requires": { "cosmiconfig": "^5.0.5", "jest-validate": "^26.5.2", - "metro": "0.70.3", - "metro-cache": "0.70.3", - "metro-core": "0.70.3", - "metro-runtime": "0.70.3" + "metro": "0.72.3", + "metro-cache": "0.72.3", + "metro-core": "0.72.3", + "metro-runtime": "0.72.3" } }, "metro-core": { - "version": "0.70.3", - "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.70.3.tgz", - "integrity": "sha512-NzfHB/w5R7yLaOeU1tzPTbBzCRsYSvpKJkLMP0yudszKZzIAZqNdjoEJ9GZ688Wi0ynZxcU0BxukXh4my80ZBw==", + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.72.3.tgz", + "integrity": "sha512-KuYWBMmLB4+LxSMcZ1dmWabVExNCjZe3KysgoECAIV+wyIc2r4xANq15GhS94xYvX1+RqZrxU1pa0jQ5OK+/6A==", "requires": { - "jest-haste-map": "^27.3.1", "lodash.throttle": "^4.1.1", - "metro-resolver": "0.70.3" + "metro-resolver": "0.72.3" + } + }, + "metro-file-map": { + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.72.3.tgz", + "integrity": "sha512-LhuRnuZ2i2uxkpFsz1XCDIQSixxBkBG7oICAFyLyEMDGbcfeY6/NexphfLdJLTghkaoJR5ARFMiIxUg9fIY/pA==", + "requires": { + "abort-controller": "^3.0.0", + "anymatch": "^3.0.3", + "debug": "^2.2.0", + "fb-watchman": "^2.0.0", + "fsevents": "^2.1.2", + "graceful-fs": "^4.2.4", + "invariant": "^2.2.4", + "jest-regex-util": "^27.0.6", + "jest-serializer": "^27.0.6", + "jest-util": "^27.2.0", + "jest-worker": "^27.2.0", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } } }, "metro-hermes-compiler": { - "version": "0.70.3", - "resolved": "https://registry.npmjs.org/metro-hermes-compiler/-/metro-hermes-compiler-0.70.3.tgz", - "integrity": "sha512-W6WttLi4E72JL/NyteQ84uxYOFMibe0PUr9aBKuJxxfCq6QRnJKOVcNY0NLW0He2tneXGk+8ZsNz8c0flEvYqg==" + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-hermes-compiler/-/metro-hermes-compiler-0.72.3.tgz", + "integrity": "sha512-QWDQASMiXNW3j8uIQbzIzCdGYv5PpAX/ZiF4/lTWqKRWuhlkP4auhVY4eqdAKj5syPx45ggpjkVE0p8hAPDZYg==" }, "metro-inspector-proxy": { - "version": "0.70.3", - "resolved": "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.70.3.tgz", - "integrity": "sha512-qQoNdPGrmyoJSWYkxSDpTaAI8xyqVdNDVVj9KRm1PG8niSuYmrCCFGLLFsMvkVYwsCWUGHoGBx0UoAzVp14ejw==", + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.72.3.tgz", + "integrity": "sha512-UPFkaq2k93RaOi+eqqt7UUmqy2ywCkuxJLasQ55+xavTUS+TQSyeTnTczaYn+YKw+izLTLllGcvqnQcZiWYhGw==", "requires": { "connect": "^3.6.5", "debug": "^2.2.0", @@ -29955,17 +31306,17 @@ } }, "metro-minify-uglify": { - "version": "0.70.3", - "resolved": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.70.3.tgz", - "integrity": "sha512-oHyjV9WDqOlDE1FPtvs6tIjjeY/oP1PNUPYL1wqyYtqvjN+zzAOrcbsAAL1sv+WARaeiMsWkF2bwtNo+Hghoog==", + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.72.3.tgz", + "integrity": "sha512-dPXqtMI8TQcj0g7ZrdhC8X3mx3m3rtjtMuHKGIiEXH9CMBvrET8IwrgujQw2rkPcXiSiX8vFDbGMIlfxefDsKA==", "requires": { "uglify-es": "^3.1.9" } }, "metro-react-native-babel-preset": { - "version": "0.70.3", - "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.70.3.tgz", - "integrity": "sha512-4Nxc1zEiHEu+GTdEMEsHnRgfaBkg8f/Td3+FcQ8NTSvs+xL3LBrQy6N07idWSQZHIdGFf+tTHvRfSIWLD8u8Tg==", + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.72.3.tgz", + "integrity": "sha512-uJx9y/1NIqoYTp6ZW1osJ7U5ZrXGAJbOQ/Qzl05BdGYvN1S7Qmbzid6xOirgK0EIT0pJKEEh1s8qbassYZe4cw==", "requires": { "@babel/core": "^7.14.0", "@babel/plugin-proposal-async-generator-functions": "^7.0.0", @@ -30009,46 +31360,47 @@ } }, "metro-react-native-babel-transformer": { - "version": "0.70.3", - "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.70.3.tgz", - "integrity": "sha512-WKBU6S/G50j9cfmFM4k4oRYprd8u3qjleD4so1E2zbTNILg+gYla7ZFGCAvi2G0ZcqS2XuGCR375c2hF6VVvwg==", + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.72.3.tgz", + "integrity": "sha512-Ogst/M6ujYrl/+9mpEWqE3zF7l2mTuftDTy3L8wZYwX1pWUQWQpfU1aJBeWiLxt1XlIq+uriRjKzKoRoIK57EA==", "requires": { "@babel/core": "^7.14.0", "babel-preset-fbjs": "^3.4.0", - "hermes-parser": "0.6.0", - "metro-babel-transformer": "0.70.3", - "metro-react-native-babel-preset": "0.70.3", - "metro-source-map": "0.70.3", + "hermes-parser": "0.8.0", + "metro-babel-transformer": "0.72.3", + "metro-react-native-babel-preset": "0.72.3", + "metro-source-map": "0.72.3", "nullthrows": "^1.1.1" } }, "metro-resolver": { - "version": "0.70.3", - "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.70.3.tgz", - "integrity": "sha512-5Pc5S/Gs4RlLbziuIWtvtFd9GRoILlaRC8RZDVq5JZWcWHywKy/PjNmOBNhpyvtRlzpJfy/ssIfLhu8zINt1Mw==", + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.72.3.tgz", + "integrity": "sha512-wu9zSMGdxpKmfECE7FtCdpfC+vrWGTdVr57lDA0piKhZV6VN6acZIvqQ1yZKtS2WfKsngncv5VbB8Y5eHRQP3w==", "requires": { "absolute-path": "^0.0.0" } }, "metro-runtime": { - "version": "0.70.3", - "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.70.3.tgz", - "integrity": "sha512-22xU7UdXZacniTIDZgN2EYtmfau2pPyh97Dcs+cWrLcJYgfMKjWBtesnDcUAQy3PHekDYvBdJZkoQUeskYTM+w==", + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.72.3.tgz", + "integrity": "sha512-3MhvDKfxMg2u7dmTdpFOfdR71NgNNo4tzAyJumDVQKwnHYHN44f2QFZQqpPBEmqhWlojNeOxsqFsjYgeyMx6VA==", "requires": { - "@babel/runtime": "^7.0.0" + "@babel/runtime": "^7.0.0", + "react-refresh": "^0.4.0" } }, "metro-source-map": { - "version": "0.70.3", - "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.70.3.tgz", - "integrity": "sha512-zsYtZGrwRbbGEFHtmMqqeCH9K9aTGNVPsurMOWCUeQA3VGyVGXPGtLMC+CdAM9jLpUyg6jw2xh0esxi+tYH7Uw==", + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.72.3.tgz", + "integrity": "sha512-eNtpjbjxSheXu/jYCIDrbNEKzMGOvYW6/ePYpRM7gDdEagUOqKOCsi3St8NJIQJzZCsxD2JZ2pYOiomUSkT1yQ==", "requires": { "@babel/traverse": "^7.14.0", "@babel/types": "^7.0.0", "invariant": "^2.2.4", - "metro-symbolicate": "0.70.3", + "metro-symbolicate": "0.72.3", "nullthrows": "^1.1.1", - "ob1": "0.70.3", + "ob1": "0.72.3", "source-map": "^0.5.6", "vlq": "^1.0.0" }, @@ -30061,12 +31413,12 @@ } }, "metro-symbolicate": { - "version": "0.70.3", - "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.70.3.tgz", - "integrity": "sha512-JTYkF1dpeDUssQ84juE1ycnhHki2ylJBBdJE1JHtfu5oC+z1ElDbBdPHq90Uvt8HbRov/ZAnxvv7Zy6asS+WCA==", + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.72.3.tgz", + "integrity": "sha512-eXG0NX2PJzJ/jTG4q5yyYeN2dr1cUqUaY7worBB0SP5bRWRc3besfb+rXwfh49wTFiL5qR0oOawkU4ZiD4eHXw==", "requires": { "invariant": "^2.2.4", - "metro-source-map": "0.70.3", + "metro-source-map": "0.72.3", "nullthrows": "^1.1.1", "source-map": "^0.5.6", "through2": "^2.0.1", @@ -30081,9 +31433,9 @@ } }, "metro-transform-plugins": { - "version": "0.70.3", - "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.70.3.tgz", - "integrity": "sha512-dQRIJoTkWZN2IVS2KzgS1hs7ZdHDX3fS3esfifPkqFAEwHiLctCf0EsPgIknp0AjMLvmGWfSLJigdRB/dc0ASw==", + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.72.3.tgz", + "integrity": "sha512-D+TcUvCKZbRua1+qujE0wV1onZvslW6cVTs7dLCyC2pv20lNHjFr1GtW01jN2fyKR2PcRyMjDCppFd9VwDKnSg==", "requires": { "@babel/core": "^7.14.0", "@babel/generator": "^7.14.0", @@ -30093,22 +31445,22 @@ } }, "metro-transform-worker": { - "version": "0.70.3", - "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.70.3.tgz", - "integrity": "sha512-MtVVsnHhhBOp9GRLCdAb2mD1dTCsIzT4+m34KMRdBDCEbDIb90YafT5prpU8qbj5uKd0o2FOQdrJ5iy5zQilHw==", + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.72.3.tgz", + "integrity": "sha512-WsuWj9H7i6cHuJuy+BgbWht9DK5FOgJxHLGAyULD5FJdTG9rSMFaHDO5WfC0OwQU5h4w6cPT40iDuEGksM7+YQ==", "requires": { "@babel/core": "^7.14.0", "@babel/generator": "^7.14.0", "@babel/parser": "^7.14.0", "@babel/types": "^7.0.0", "babel-preset-fbjs": "^3.4.0", - "metro": "0.70.3", - "metro-babel-transformer": "0.70.3", - "metro-cache": "0.70.3", - "metro-cache-key": "0.70.3", - "metro-hermes-compiler": "0.70.3", - "metro-source-map": "0.70.3", - "metro-transform-plugins": "0.70.3", + "metro": "0.72.3", + "metro-babel-transformer": "0.72.3", + "metro-cache": "0.72.3", + "metro-cache-key": "0.72.3", + "metro-hermes-compiler": "0.72.3", + "metro-source-map": "0.72.3", + "metro-transform-plugins": "0.72.3", "nullthrows": "^1.1.1" } }, @@ -30176,17 +31528,17 @@ }, "dependencies": { "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "requires": { "minimist": "^1.2.0" } }, "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", "requires": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -30442,13 +31794,6 @@ "requires": { "lower-case": "^2.0.2", "tslib": "^2.0.3" - }, - "dependencies": { - "tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - } } }, "nocache": { @@ -30607,9 +31952,9 @@ "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==" }, "ob1": { - "version": "0.70.3", - "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.70.3.tgz", - "integrity": "sha512-Vy9GGhuXgDRY01QA6kdhToPd8AkLdLpX9GjH5kpqluVqTu70mgOm7tpGoJDZGaNbr9nJlJgnipqHJQRPORixIQ==" + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.72.3.tgz", + "integrity": "sha512-OnVto25Sj7Ghp0vVm2THsngdze3tVq0LOg9LUHsAVXMecpqOP0Y8zaATW8M9gEgs2lNEAcCqV0P/hlmOPhVRvg==" }, "object-assign": { "version": "4.1.1", @@ -30923,13 +32268,6 @@ "requires": { "dot-case": "^3.0.4", "tslib": "^2.0.3" - }, - "dependencies": { - "tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - } } }, "parse-asn1": { @@ -30959,6 +32297,13 @@ "integrity": "sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==", "requires": { "pngjs": "^3.3.0" + }, + "dependencies": { + "pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==" + } } }, "parse-srcset": { @@ -30978,13 +32323,6 @@ "requires": { "no-case": "^3.0.4", "tslib": "^2.0.3" - }, - "dependencies": { - "tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - } } }, "pascalcase": { @@ -31194,9 +32532,9 @@ } }, "pngjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", - "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==" }, "pnp-webpack-plugin": { "version": "1.7.0", @@ -31846,6 +33184,11 @@ "ipaddr.js": "1.9.1" } }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", @@ -32005,9 +33348,9 @@ } }, "react": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.0.0.tgz", - "integrity": "sha512-x+VL6wbT4JRVPm7EGxXhZ8w8LTROaxPXOqhlGyVSrv0sB1jkyFGgXxJ8LVoPRLvPR6/CIZGFmfzqUa2NYeMr2A==", + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.1.0.tgz", + "integrity": "sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ==", "requires": { "loose-envify": "^1.1.0" } @@ -32220,12 +33563,12 @@ } }, "react-dom": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.0.0.tgz", - "integrity": "sha512-XqX7uzmFo0pUceWFCt7Gff6IyIMzFUn7QMZrbrQfGxtaxXZIcGQzoNpRLE3fQLnS4XzLLPMZX2T9TRcSrasicw==", + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.1.0.tgz", + "integrity": "sha512-fU1Txz7Budmvamp7bshe4Zi32d0ll7ect+ccxNu9FlObT605GOEB8BfO4tmRJ39R5Zj831VCpvQ05QPBW5yb+w==", "requires": { "loose-envify": "^1.1.0", - "scheduler": "^0.21.0" + "scheduler": "^0.22.0" } }, "react-error-overlay": { @@ -32245,14 +33588,14 @@ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, "react-native": { - "version": "0.69.6", - "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.69.6.tgz", - "integrity": "sha512-wwXpqM+12kdEYdBZCJUb5SBu95CzgejrwFeYJ78RzHZV/Sj6DBRekbsHGrDDsY4R25QXALQxy4DQYQCObVvWjA==", - "requires": { - "@jest/create-cache-key-function": "^27.0.1", - "@react-native-community/cli": "^8.0.4", - "@react-native-community/cli-platform-android": "^8.0.4", - "@react-native-community/cli-platform-ios": "^8.0.4", + "version": "0.70.5", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.70.5.tgz", + "integrity": "sha512-5NZM80LC3L+TIgQX/09yiyy48S73wMgpIgN5cCv3XTMR394+KpDI3rBZGH4aIgWWuwijz31YYVF5504+9n2Zfw==", + "requires": { + "@jest/create-cache-key-function": "^29.0.3", + "@react-native-community/cli": "9.2.1", + "@react-native-community/cli-platform-android": "9.2.1", + "@react-native-community/cli-platform-ios": "9.2.1", "@react-native/assets": "1.0.0", "@react-native/normalize-color": "2.0.0", "@react-native/polyfills": "2.0.0", @@ -32260,24 +33603,23 @@ "anser": "^1.4.9", "base64-js": "^1.1.2", "event-target-shim": "^5.0.1", - "hermes-engine": "~0.11.0", "invariant": "^2.2.4", "jsc-android": "^250230.2.1", "memoize-one": "^5.0.0", - "metro-react-native-babel-transformer": "0.70.3", - "metro-runtime": "0.70.3", - "metro-source-map": "0.70.3", + "metro-react-native-babel-transformer": "0.72.3", + "metro-runtime": "0.72.3", + "metro-source-map": "0.72.3", "mkdirp": "^0.5.1", "nullthrows": "^1.1.1", "pretty-format": "^26.5.2", - "promise": "^8.2.0", + "promise": "^8.0.3", "react-devtools-core": "4.24.0", - "react-native-codegen": "^0.69.2", - "react-native-gradle-plugin": "^0.0.7", + "react-native-codegen": "^0.70.6", + "react-native-gradle-plugin": "^0.70.3", "react-refresh": "^0.4.0", - "react-shallow-renderer": "16.15.0", + "react-shallow-renderer": "^16.15.0", "regenerator-runtime": "^0.13.2", - "scheduler": "^0.21.0", + "scheduler": "^0.22.0", "stacktrace-parser": "^0.1.3", "use-sync-external-store": "^1.0.0", "whatwg-fetch": "^3.0.0", @@ -32295,9 +33637,9 @@ } }, "react-native-codegen": { - "version": "0.69.2", - "resolved": "https://registry.npmjs.org/react-native-codegen/-/react-native-codegen-0.69.2.tgz", - "integrity": "sha512-yPcgMHD4mqLbckqnWjFBaxomDnBREfRjDi2G/WxNyPBQLD+PXUEmZTkDx6QoOXN+Bl2SkpnNOSsLE2+/RUHoPw==", + "version": "0.70.6", + "resolved": "https://registry.npmjs.org/react-native-codegen/-/react-native-codegen-0.70.6.tgz", + "integrity": "sha512-kdwIhH2hi+cFnG5Nb8Ji2JwmcCxnaOOo9440ov7XDzSvGfmUStnCzl+MCW8jLjqHcE4icT7N9y+xx4f50vfBTw==", "requires": { "@babel/parser": "^7.14.0", "flow-parser": "^0.121.0", @@ -32314,9 +33656,9 @@ } }, "react-native-gesture-handler": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.5.0.tgz", - "integrity": "sha512-djZdcprFf08PZC332D+AeG5wcGeAPhzfCJtB3otUgOgTlvjVXmg/SLFdPJSpzLBqkRAmrC77tM79QgKbuLxkfw==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.8.0.tgz", + "integrity": "sha512-poOSfz/w0IyD6Qwq7aaIRRfEaVTl1ecQFoyiIbpOpfNTjm2B1niY2FLrdVQIOtIOe+K9nH55Qal04nr4jGkHdQ==", "requires": { "@egjs/hammerjs": "^2.0.17", "hoist-non-react-statics": "^3.3.0", @@ -32326,9 +33668,9 @@ } }, "react-native-gradle-plugin": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/react-native-gradle-plugin/-/react-native-gradle-plugin-0.0.7.tgz", - "integrity": "sha512-+4JpbIx42zGTONhBTIXSyfyHICHC29VTvhkkoUOJAh/XHPEixpuBduYgf6Y4y9wsN1ARlQhBBoptTvXvAFQf5g==" + "version": "0.70.3", + "resolved": "https://registry.npmjs.org/react-native-gradle-plugin/-/react-native-gradle-plugin-0.70.3.tgz", + "integrity": "sha512-oOanj84fJEXUg9FoEAQomA8ISG+DVIrTZ3qF7m69VQUJyOGYyDZmPqKcjvRku4KXlEH6hWO9i4ACLzNBh8gC0A==" }, "react-native-iphone-x-helper": { "version": "1.3.1", @@ -32336,6 +33678,52 @@ "integrity": "sha512-HOf0jzRnq2/aFUcdCJ9w9JGzN3gdEg0zFE4FyYlp4jtidqU03D5X7ZegGKfT1EWteR0gPBGp9ye5T5FvSWi9Yg==", "requires": {} }, + "react-native-material-buttons": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/react-native-material-buttons/-/react-native-material-buttons-0.5.0.tgz", + "integrity": "sha512-WRQyCG1hd4ZvTr+YdMoyKwoyt/onaFAh8DmyC8BxZ0JT1gy/hs9qTYAilbYb8C1l+okTusalyJeqoPh5GzA1pQ==", + "requires": { + "prop-types": "^15.5.9", + "react-native-material-ripple": "^0.7.0" + }, + "dependencies": { + "react-native-material-ripple": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/react-native-material-ripple/-/react-native-material-ripple-0.7.5.tgz", + "integrity": "sha512-pHUrmxuPQMBcOssFfr+kERfAwkLhHqiP2ZTJeUsC77W9h+k2IU17T/cOb184S1jkbZP3CFJcOLd9V7RW112YGQ==", + "requires": { + "prop-types": "^15.5.10" + } + } + } + }, + "react-native-material-dropdown": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/react-native-material-dropdown/-/react-native-material-dropdown-0.11.1.tgz", + "integrity": "sha512-GoY3bHUzLnHM2OWM2jWeFssJCU8Uwml7z6OpVeC/RqUPhRwvPCd0UeEZKI6QU5/U8SoS6VJWdWA1Vp1WB1ze7Q==", + "requires": { + "prop-types": "^15.5.9", + "react-native-material-buttons": "^0.5.0", + "react-native-material-ripple": "^0.8.0", + "react-native-material-textfield": "^0.12.0" + } + }, + "react-native-material-ripple": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/react-native-material-ripple/-/react-native-material-ripple-0.8.0.tgz", + "integrity": "sha512-ZgamZTJlrAPMg5Im8+ruK3zsSDHdPKgYA52qK7g0x/LJvzE/99M01kjmUVERqQAHxlVzOfIfVpxn9SjzNn6TEA==", + "requires": { + "prop-types": "^15.5.10" + } + }, + "react-native-material-textfield": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/react-native-material-textfield/-/react-native-material-textfield-0.12.0.tgz", + "integrity": "sha512-eB2xjsOtdrQ4KuikXeGf0CSYS4Vg9K7ii5YsWX57VvzPSVp08P8bdqTrLY6QucBR397YWlewN/n17H34kd7teA==", + "requires": { + "prop-types": "^15.5.9" + } + }, "react-native-paper": { "version": "5.0.0-rc.9", "resolved": "https://registry.npmjs.org/react-native-paper/-/react-native-paper-5.0.0-rc.9.tgz", @@ -32347,11 +33735,10 @@ } }, "react-native-reanimated": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-2.9.1.tgz", - "integrity": "sha512-309SIhDBwY4F1n6e5Mr5D1uPZm2ESIcmZsGXHUu8hpKX4oIOlZj2MilTk+kHhi05LjChoJkcpfkstotCJmPRPg==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-2.12.0.tgz", + "integrity": "sha512-nrlPyw+Hx9u4iJhZk9PoTvDo/QmVAd+bo7OK9Tv3hveNEF9++5oig/g3Uv9V93shy9avTYGsUprUvAEt/xdzeQ==", "requires": { - "@babel/plugin-proposal-export-namespace-from": "^7.17.12", "@babel/plugin-transform-object-assign": "^7.16.7", "@babel/preset-typescript": "^7.16.7", "@types/invariant": "^2.2.35", @@ -32362,20 +33749,25 @@ } }, "react-native-safe-area-context": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-4.3.1.tgz", - "integrity": "sha512-cEr7fknJCToTrSyDCVNg0GRdRMhyLeQa2NZwVCuzEQcWedOw/59ExomjmzCE4rxrKXs6OJbyfNtFRNyewDaHuA==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-4.4.1.tgz", + "integrity": "sha512-N9XTjiuD73ZpVlejHrUWIFZc+6Z14co1K/p1IFMkImU7+avD69F3y+lhkqA2hN/+vljdZrBSiOwXPkuo43nFQA==", "requires": {} }, "react-native-screens": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-3.15.0.tgz", - "integrity": "sha512-ezC5TibsUYyqPuuHpZoM3iEl6bRzCVBMJeGaFkn7xznuOt1VwkZVub0BvafIEYR/+AQC/RjxzMSQPs1qal0+wA==", + "version": "3.18.2", + "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-3.18.2.tgz", + "integrity": "sha512-ANUEuvMUlsYJ1QKukEhzhfrvOUO9BVH9Nzg+6eWxpn3cfD/O83yPBOF8Mx6x5H/2+sMy+VS5x/chWOOo/U7QJw==", "requires": { "react-freeze": "^1.0.0", "warn-once": "^0.1.0" } }, + "react-native-select-dropdown": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/react-native-select-dropdown/-/react-native-select-dropdown-3.2.1.tgz", + "integrity": "sha512-4kLmjm3z9JUzIw98oKdQYvk8XsxhNg5NfKN112m1oIufu+6w2HcPw438rVpXzrWntvs9ZLf8Za6ZQO6GqZHdzA==" + }, "react-native-vector-icons": { "version": "9.2.0", "resolved": "https://registry.npmjs.org/react-native-vector-icons/-/react-native-vector-icons-9.2.0.tgz", @@ -32500,11 +33892,6 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" } } }, @@ -32545,9 +33932,9 @@ "integrity": "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==" }, "regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", "requires": { "@babel/runtime": "^7.8.4" } @@ -32733,9 +34120,9 @@ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" }, "reselect": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.6.tgz", - "integrity": "sha512-ZovIuXqto7elwnxyXbBtCPo9YFEr3uJqj2rRbcOOog1bmu2Ag85M4hixSwFWyaBMKXNgvPaJ9OSu9SkBPIeJHQ==" + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.7.tgz", + "integrity": "sha512-Zu1xbUt3/OPwsXL46hvOOoQrap2azE7ZQbokq61BQfiXvhewsKDwhMeZjTX9sX0nvw1t/U5Audyn1I9P/m9z0A==" }, "resolve": { "version": "1.22.1", @@ -32879,9 +34266,9 @@ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, "scheduler": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.21.0.tgz", - "integrity": "sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.22.0.tgz", + "integrity": "sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ==", "requires": { "loose-envify": "^1.1.0" } @@ -33014,6 +34401,13 @@ "integrity": "sha512-3vmBkMZLQO+BR4RPHcyRGdE09XCF6cvxzk2N2qn8Er3F91cy8Qt7VvEbZBOpaL53qsBbe2cFOefU6tRY6WDelA==", "requires": { "type-fest": "^0.12.0" + }, + "dependencies": { + "type-fest": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.12.0.tgz", + "integrity": "sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg==" + } } }, "serialize-javascript": { @@ -33184,16 +34578,6 @@ "bplist-creator": "0.1.0", "bplist-parser": "0.3.1", "plist": "^3.0.5" - }, - "dependencies": { - "bplist-parser": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.1.tgz", - "integrity": "sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==", - "requires": { - "big-integer": "1.6.x" - } - } } }, "simple-swizzle": { @@ -33818,9 +35202,9 @@ "integrity": "sha512-EBNuMVSxpssuFcJq/c4zmZ4tpCyX9E27hz5xPJhw4URjRHcYXPHh8rDHY/tJsw5gtP0+tIL3IBYeQVIYjdZFhg==" }, "sucrase": { - "version": "3.28.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.28.0.tgz", - "integrity": "sha512-TK9600YInjuiIhVM3729rH4ZKPOsGeyXUwY+Ugu9eilNbdTFyHr6XcAGYbRVZPDgWj6tgI7bx95aaJjHnbffag==", + "version": "3.29.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.29.0.tgz", + "integrity": "sha512-bZPAuGA5SdFHuzqIhTAqt9fvNEo9rESqXIG3oiKdF8K4UmkQxC4KlNL3lVyAErXp+mPvUqZ5l13qx6TrDIGf3A==", "requires": { "commander": "^4.0.0", "glob": "7.1.6", @@ -33992,32 +35376,18 @@ } }, "temp-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==" }, "tempy": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.7.1.tgz", - "integrity": "sha512-vXPxwOyaNVi9nyczO16mxmHGpl6ASC5/TVhRRHpqeYHvKQm58EaWNvZXxAhR0lYYnBOQFjXjhzeLsaXdjxLjRg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.3.0.tgz", + "integrity": "sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==", "requires": { - "del": "^6.0.0", - "is-stream": "^2.0.0", - "temp-dir": "^2.0.0", - "type-fest": "^0.16.0", - "unique-string": "^2.0.0" - }, - "dependencies": { - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" - }, - "type-fest": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", - "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==" - } + "temp-dir": "^1.0.0", + "type-fest": "^0.3.1", + "unique-string": "^1.0.0" } }, "terminal-link": { @@ -34332,9 +35702,9 @@ "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==" }, "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" }, "tty-browserify": { "version": "0.0.0", @@ -34342,9 +35712,9 @@ "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==" }, "type-fest": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.12.0.tgz", - "integrity": "sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg==" + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==" }, "type-is": { "version": "1.6.18", @@ -34466,11 +35836,11 @@ } }, "unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==", "requires": { - "crypto-random-string": "^2.0.0" + "crypto-random-string": "^1.0.0" } }, "universalify": { @@ -35095,17 +36465,17 @@ "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==" }, "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "requires": { "minimist": "^1.2.0" } }, "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", "requires": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -35866,6 +37236,14 @@ } } }, + "xml-js": { + "version": "1.6.11", + "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", + "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", + "requires": { + "sax": "^1.2.4" + } + }, "xml2js": { "version": "0.4.23", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", diff --git a/src/frontend/react_native_frontend/package.json b/src/frontend/react_native_frontend/package.json index 9983a1a..52b16c3 100644 --- a/src/frontend/react_native_frontend/package.json +++ b/src/frontend/react_native_frontend/package.json @@ -1,32 +1,39 @@ { - "name": "project1", + "name": "transfergo", "version": "1.0.0", - "main": "node_modules/expo/AppEntry.js", + "proxy": "http://127.0.0.1:8000", "scripts": { - "start": "expo start", - "android": "expo start --android", - "ios": "expo start --ios", + "start": "expo start --dev-client", + "android": "expo run:android", + "ios": "expo run:ios", "web": "expo start --web" }, "dependencies": { - "@expo/webpack-config": "^0.17.0", - "@react-native-community/datetimepicker": "6.2.0", + "@expo/webpack-config": "^0.17.2", + "@react-native-async-storage/async-storage": "~1.17.3", + "@react-native-community/datetimepicker": "6.5.2", + "@react-native-picker/picker": "2.4.8", "@react-navigation/bottom-tabs": "^6.4.0", "@react-navigation/drawer": "^6.5.6", "@react-navigation/native": "^6.0.14", "@react-navigation/native-stack": "^6.9.2", - "expo": "~46.0.16", - "expo-status-bar": "~1.4.0", + "axios": "^1.2.1", + "expo": "^47.0.0", + "expo-dev-client": "~2.0.1", + "expo-splash-screen": "~0.17.5", + "expo-status-bar": "~1.4.2", "material-icons-react": "^1.0.4", - "react": "18.0.0", - "react-dom": "18.0.0", - "react-native": "0.69.6", + "react": "18.1.0", + "react-dom": "18.1.0", + "react-native": "0.70.5", "react-native-date-picker": "^4.2.6", - "react-native-gesture-handler": "~2.5.0", + "react-native-gesture-handler": "~2.8.0", + "react-native-material-dropdown": "^0.11.1", "react-native-paper": "^5.0.0-rc.9", - "react-native-reanimated": "~2.9.1", - "react-native-safe-area-context": "^4.3.1", - "react-native-screens": "~3.15.0", + "react-native-reanimated": "~2.12.0", + "react-native-safe-area-context": "4.4.1", + "react-native-screens": "~3.18.0", + "react-native-select-dropdown": "^3.2.1", "react-native-vector-icons": "^9.2.0", "react-native-web": "~0.18.7" }, diff --git a/src/frontend/react_native_frontend/screens/.StartScreen.jsx.swm b/src/frontend/react_native_frontend/screens/.StartScreen.jsx.swm new file mode 100644 index 0000000..8155f5d Binary files /dev/null and b/src/frontend/react_native_frontend/screens/.StartScreen.jsx.swm differ diff --git a/src/frontend/react_native_frontend/screens/.StartScreen.jsx.swn b/src/frontend/react_native_frontend/screens/.StartScreen.jsx.swn new file mode 100644 index 0000000..51d99eb Binary files /dev/null and b/src/frontend/react_native_frontend/screens/.StartScreen.jsx.swn differ diff --git a/src/frontend/react_native_frontend/screens/.StartScreen.jsx.swo b/src/frontend/react_native_frontend/screens/.StartScreen.jsx.swo new file mode 100644 index 0000000..1de9615 Binary files /dev/null and b/src/frontend/react_native_frontend/screens/.StartScreen.jsx.swo differ diff --git a/src/frontend/react_native_frontend/screens/.StartScreen.jsx.swp b/src/frontend/react_native_frontend/screens/.StartScreen.jsx.swp new file mode 100644 index 0000000..9f04f3f Binary files /dev/null and b/src/frontend/react_native_frontend/screens/.StartScreen.jsx.swp differ diff --git a/src/frontend/react_native_frontend/screens/AccountManager.jsx b/src/frontend/react_native_frontend/screens/AccountManager.jsx new file mode 100644 index 0000000..9b08925 --- /dev/null +++ b/src/frontend/react_native_frontend/screens/AccountManager.jsx @@ -0,0 +1,33 @@ +import React from "react"; +import { createNativeStackNavigator } from "@react-navigation/native-stack"; +import AccountScreen from "../screens/AccountScreen"; +import Password from "./Password"; +import TransactionList from "./TransactionList"; + +const Stack = createNativeStackNavigator(); +const Accountmanager = () => { + return ( + + + + + + ); +}; + +export default Accountmanager; + + + diff --git a/src/frontend/react_native_frontend/screens/AccountScreen.jsx b/src/frontend/react_native_frontend/screens/AccountScreen.jsx index ae45b23..403f152 100644 --- a/src/frontend/react_native_frontend/screens/AccountScreen.jsx +++ b/src/frontend/react_native_frontend/screens/AccountScreen.jsx @@ -1,26 +1,30 @@ -import React from "react"; +import React, { useContext } from "react"; import { View, Text, StyleSheet, TouchableOpacity } from "react-native"; +import MaterialIcons from "react-native-vector-icons/MaterialIcons"; import Header from "../components/Header"; +import { AuthContext } from "../context/AuthContext"; - -const AccountScreen = () => { +const AccountScreen = ({navigation}) => { + const {userAccount} = useContext(AuthContext); return ( -
+
Current balance - 0000 + {userAccount.balance} FCFA - - Last transaction - 15-06-22 - - + {navigation.navigate('TransactionList')}}> + View account transactions + + + {navigation.navigate('Password')}}> Change password + Forgot password + ) @@ -29,7 +33,6 @@ const AccountScreen = () => { export default AccountScreen; const styles = StyleSheet.create({ - align: { alignItems: "center", flexDirection: 'row', @@ -43,6 +46,9 @@ const styles = StyleSheet.create({ marginRight: 10, }, btn: { + alignItems: "center", + flexDirection: 'row', + justifyContent: 'space-between', backgroundColor: '#2137B2', color: "#fff", padding: 20, diff --git a/src/frontend/react_native_frontend/screens/DoTransfer.jsx b/src/frontend/react_native_frontend/screens/DoTransfer.jsx new file mode 100644 index 0000000..0941bc3 --- /dev/null +++ b/src/frontend/react_native_frontend/screens/DoTransfer.jsx @@ -0,0 +1,112 @@ +import React, { useState, useContext } from "react"; +import { View, Text, TextInput, StyleSheet, TouchableOpacity } from "react-native"; +import { Picker } from "@react-native-picker/picker"; +import SelectDropdown from 'react-native-select-dropdown' +import Header from "../components/Header"; +import { AuthContext } from "../context/AuthContext"; + +const DoTransfer = ({navigation}) => { + const [amount, setAmount] = useState(null); + const [type, setType] = useState(null); + const [number, setNumber] = useState(null); + const {transfer} = useContext(AuthContext); + const data = ["cash_in", "transfert", "withdraw"]; + const send = (amount, type, number) => { + if(amount == null || type == null || number == null){ + alert("Fill the required fields"); + }else{ + transfer(amount, type, number) + setAmount(null); + setType(null); + setNumber(null) + } + } + + return( + +
+ + Enter amount + setAmount(text)} + /> + + + Enter Recipient number + setNumber(text)} + /> + + + + Enter transaction type + + { + setType(selectedItem) + }} + buttonTextAfterSelection={(selectedItem, index) => { + // text represented after item is selected + // if data array is an array of objects then return selectedItem.property to render after item is selected + return selectedItem + }} + rowTextForSelection={(item, index) => { + // text represented for each item in dropdown + // if data array is an array of objects then return item.property to represent item in dropdown + return item + }} + /> + + + + + {send(amount, type, number)}}> + Transfer + + + + + + + + ); +} + +export default DoTransfer; + +const styles = StyleSheet.create({ + inputField: { + flexDirection: 'row', + justifyContent: 'space-between', + borderColor: "#ccc", + borderWidth: 1, + borderRadius: 10, + padding: 20, + margin: 10, + marginBottom: 5, + backgroundColor: '#ccc' + }, + btn: { + alignItems: 'center', + justifyContent: 'center', + borderColor: "#ccc", + borderWidth: 1, + borderRadius: 10, + padding: 20, + margin: 10, + marginBottom: 5, + backgroundColor: '#2137B2' + }, + }) \ No newline at end of file diff --git a/src/frontend/react_native_frontend/screens/EmtyList.jsx b/src/frontend/react_native_frontend/screens/EmtyList.jsx new file mode 100644 index 0000000..9b115ab --- /dev/null +++ b/src/frontend/react_native_frontend/screens/EmtyList.jsx @@ -0,0 +1,12 @@ +import React from "react"; +import { View, Text } from "react-native"; + +const EmptyList = () => { + return( + + No transaction + + ) +} + +export default EmptyList; \ No newline at end of file diff --git a/src/frontend/react_native_frontend/screens/HelpScreen.jsx b/src/frontend/react_native_frontend/screens/HelpScreen.jsx index 1887d10..941a723 100644 --- a/src/frontend/react_native_frontend/screens/HelpScreen.jsx +++ b/src/frontend/react_native_frontend/screens/HelpScreen.jsx @@ -1,14 +1,34 @@ import React from "react"; -import { View, Text } from "react-native"; +import { View, Text, StyleSheet } from "react-native"; import Header from "../components/Header"; - const HelpScreen = ({navigation}) => { return ( -
navigation.openDrawer()}/> +
+ + Contact us via teyouronan@gmail.com for help + ) } -export default HelpScreen; \ No newline at end of file +export default HelpScreen; +const styles = StyleSheet.create({ + btn: { + flexDirection: 'row', + justifyContent: 'space-between', + alignItems: 'center', + backgroundColor: '#2137B2', + color: "#fff", + padding: 20, + borderRadius: 10, + marginBottom: 5, + marginTop: 10, + marginLeft: 10, + marginRight: 10, + }, + txt: { + color: "white", + } +}); \ No newline at end of file diff --git a/src/frontend/react_native_frontend/screens/HomeScreen.jsx b/src/frontend/react_native_frontend/screens/HomeScreen.jsx index 61a973f..f36a535 100644 --- a/src/frontend/react_native_frontend/screens/HomeScreen.jsx +++ b/src/frontend/react_native_frontend/screens/HomeScreen.jsx @@ -1,10 +1,7 @@ -import { StatusBar } from "expo-status-bar"; import { NavigationContainer } from "@react-navigation/native"; import { createNativeStackNavigator } from "@react-navigation/native-stack"; import { createBottomTabNavigator } from "@react-navigation/bottom-tabs"; import MaterialIcons from "react-native-vector-icons/MaterialIcons"; - -// screens import ProfilScreen from "./ProfilScreen"; import TransferScreen from "./TransferScreen"; import SettingScreen from "./SettingScreen"; @@ -13,7 +10,6 @@ import HelpScreen from "./HelpScreen"; const Stack = createNativeStackNavigator(); const Tab = createBottomTabNavigator(); - export default function App() { return ( <> diff --git a/src/frontend/react_native_frontend/screens/LoginScreen.jsx b/src/frontend/react_native_frontend/screens/LoginScreen.jsx index 375fa1f..41c7a39 100644 --- a/src/frontend/react_native_frontend/screens/LoginScreen.jsx +++ b/src/frontend/react_native_frontend/screens/LoginScreen.jsx @@ -1,77 +1,92 @@ -import { setStatusBarStyle, StatusBar } from "expo-status-bar"; -import React, { useState } from "react"; -import { Platform, NativeModules } from 'react-native'; +import React, { useContext, useState } from "react"; +import { Platform, KeyboardAvoidingView, NativeModules } from 'react-native'; import { StyleSheet, Text, View, TextInput, TouchableOpacity, Button, SafeAreaView} from 'react-native'; import MaterialIcons from 'react-native-vector-icons/MaterialIcons'; import CustomButton from "../components/CustomButton"; import InputField from "../components/InputField"; +import { AuthContext } from "../context/AuthContext"; const LoginScreen = ({navigation}) => { + const [username, setUsername] = useState(null); + const [password, setPassword] = useState(null); + const {login} = useContext(AuthContext); return ( - - - - TF - - - - - Login - + + + + + TF + + - - } - keyboardType="email-address" - /> + + Login + - - } - inputType="password" - fieldButtonLabel={"Forgot?"} - fieldButtonfunction={() => {}} - /> + + } + keyboardType="username" + value={username} + onChangeText={text => setUsername(text)} + /> - navigation.navigate('Profile')}/> + + } + inputType="password" + fieldButtonLabel={"Forgot?"} + fieldButtonfunction={() => {}} + value={password} + onChangeText={text => setPassword(text)} + /> - - New to the app? - navigation.navigate('Register')}> - Register - - + { + if(username == null || password == null) { + alert("Either user name or password are incorrect, please verify and retry") + }else { + login(username, password) + } + }}/> + + New to the app? + navigation.navigate('Register')}> + Register + + - + + ) } export default LoginScreen - const styles = StyleSheet.create({ - icon: { width: 200, height: 200, diff --git a/src/frontend/react_native_frontend/screens/MessageScreen.jsx b/src/frontend/react_native_frontend/screens/MessageScreen.jsx index 5733326..51331ca 100644 --- a/src/frontend/react_native_frontend/screens/MessageScreen.jsx +++ b/src/frontend/react_native_frontend/screens/MessageScreen.jsx @@ -1,25 +1,37 @@ import React from "react"; -import { View, Text, StyleSheet, ScrollView } from "react-native"; +import { View, Text, StyleSheet } from "react-native"; import Header from "../components/Header"; -import MaterialIcons from "react-native-vector-icons/MaterialIcons"; - const MessageScreen = ({navigation}) => { return ( -
navigation.openDrawer()}/> - - - +
+ + + Discussion with our customer center available soon Available + + - ) -} +}; export default MessageScreen; const styles = StyleSheet.create( { - + tex: { + backgroundColor: '#2137B2', + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + margin: 20, + borderRadius: 10, + paddingTop: 20, + paddingBottom: 20, + }, } ) \ No newline at end of file diff --git a/src/frontend/react_native_frontend/screens/Password.jsx b/src/frontend/react_native_frontend/screens/Password.jsx new file mode 100644 index 0000000..eae8054 --- /dev/null +++ b/src/frontend/react_native_frontend/screens/Password.jsx @@ -0,0 +1,80 @@ +import React, { useState, useContext } from "react"; +import { View, Text, TextInput, StyleSheet, TouchableOpacity } from "react-native"; +import Header from "../components/Header"; +import { AuthContext } from "../context/AuthContext"; + +const Password = ({navigation}) => { + const [old_password, setPassword] = useState(null); + const [new_password, setNew_password] = useState(null); + const [confirm_password, setConfirm_password] = useState(null); + const {changePassword} = useContext(AuthContext); + const change = (old_password, new_password, confirm_password) => { + if(new_password == confirm_password) { + changePassword(old_password, new_password, confirm_password) + }else { + alert("Verify the new password fields are equal"); + } + } + return( + +
+ + Current password + setPassword(text)} + /> + + + New password + setNew_password(text)} + /> + + + Confirm new password + setConfirm_password(text)} + /> + + + {change(old_password, new_password, confirm_password)}}> + Confirm + + + + + ); +} + +export default Password; + +const styles = StyleSheet.create({ + inputField: { + flexDirection: 'row', + justifyContent: 'space-between', + borderColor: "#ccc", + borderWidth: 1, + borderRadius: 10, + padding: 20, + margin: 10, + marginBottom: 5, + backgroundColor: '#ccc' + }, + btn: { + alignItems: 'center', + justifyContent: 'center', + borderColor: "#ccc", + borderWidth: 1, + borderRadius: 10, + padding: 20, + margin: 10, + marginBottom: 5, + backgroundColor: '#2137B2' + }, + }) \ No newline at end of file diff --git a/src/frontend/react_native_frontend/screens/ProfilScreen.jsx b/src/frontend/react_native_frontend/screens/ProfilScreen.jsx index d8f4aef..c309e66 100644 --- a/src/frontend/react_native_frontend/screens/ProfilScreen.jsx +++ b/src/frontend/react_native_frontend/screens/ProfilScreen.jsx @@ -1,19 +1,58 @@ -import React from "react"; +import React, { useState, useContext } from "react"; import { View, Text, StyleSheet, ScrollView } from "react-native"; import Header from "../components/Header"; -import MaterialIcons from "react-native-vector-icons/MaterialIcons"; - +import { AuthContext } from "../context/AuthContext"; const ProfilScreen = ({navigation}) => { + const {userInfo} = useContext(AuthContext); + const {userAccount} = useContext(AuthContext); + const {userTransactionList} = useContext(AuthContext); + let bd = userInfo.profile.birthday; + bd = bd.split("-").reverse().join("-"); + const last = (userTransactionList) => { + var lastDate = "None"; + + if(!userTransactionList.length) { + return lastDate; + }else { + lastDate = userTransactionList[0].date; + lastDate = (lastDate.substring(0,10)); + lastDate = lastDate.split("-").reverse().join("-"); + return lastDate; + } + } + return ( -
navigation.openDrawer()}/> - - - Welcome, Terb - +
+ + + Welcome, {userInfo.profile.user.username} + + + + + + Balance + {userAccount.balance} FCFA + + + Last transaction + {last(userTransactionList)} + + + Phone + {userInfo.profile.phone} + + + My birthday + {bd} + + + Mail + {userInfo.profile.user.email} + - @@ -30,7 +69,23 @@ const styles = StyleSheet.create( flexDirection: 'row', alignItems: 'center', justifyContent: 'space-between', - paddingRight: 10, - } + borderBottomLeftRadius: 10, + borderBottomRightRadius: 10, + paddingTop: 20, + paddingBottom: 20, + + }, + align: { + alignItems: "center", + flexDirection: 'row', + justifyContent: 'space-between', + padding: 20, + backgroundColor: '#ccc', + borderRadius: 10, + marginBottom: 5, + marginTop: 10, + marginLeft: 10, + marginRight: 10, + }, } ) \ No newline at end of file diff --git a/src/frontend/react_native_frontend/screens/RegisterScreen.jsx b/src/frontend/react_native_frontend/screens/RegisterScreen.jsx index 21426f8..054fef3 100644 --- a/src/frontend/react_native_frontend/screens/RegisterScreen.jsx +++ b/src/frontend/react_native_frontend/screens/RegisterScreen.jsx @@ -1,12 +1,55 @@ -import { setStatusBarStyle, StatusBar } from "expo-status-bar"; -import React, { useState } from "react"; -import { StyleSheet, Text, View, ScrollView, TouchableOpacity, SafeAreaView, Platform} from 'react-native'; +import React, { useState, useContext } from "react"; +import { StyleSheet, Text, View, ScrollView, TouchableOpacity, SafeAreaView, KeyboardAvoidingView, Platform} from 'react-native'; +import DateTimePicker from '@react-native-community/datetimepicker'; import MaterialIcons from 'react-native-vector-icons/MaterialIcons'; import InputField from "../components/InputField"; import CustomButton from "../components/CustomButton"; +import { AuthContext } from "../context/AuthContext"; const RegisterScreen = ({navigation}) => { + const {register} = useContext(AuthContext); + const [username, setUsername] = useState(null); + const [first_name, setFirst_name] = useState(null); + const [last_name, setLast_name] = useState(null); + const [email, setEmail] = useState(null); + const [adress, setAdress] = useState(null); + const [phone, setPhone] = useState(null); + const [password1, setPassword1] = useState(null); + const [password2, setPassword2] = useState(null); + const [birthday, setBirthday] = useState(new Date(1598051730000)); + const [mode, setMode] = useState('date'); + const [show, setShow] = useState(false); + const onChange = (event, selectedBirthday) => { + const currentBirthday = selectedBirthday; + setShow(false); + setBirthday(currentBirthday); + }; + + const showMode = (currentMode) => { + if (Platform.OS === 'android') { + setShow(false); + // for iOS, add a button that closes the picker + } + setMode(currentMode); + }; + + const showDatepicker = () => { + showMode('date'); + }; + + const verifyPassword = (password1, password2, username, first_name, last_name, email, phone, birthday, adress) => { + if(password1 != null && password2 != null) { + if(password1 === password2) { + register(username, first_name, last_name, email, password1, phone, birthday.toLocaleDateString(), adress); + navigation.goBack(); + }else { + alert("Password do not match"); + } + }else { + alert("Some fields may be empty") + } + } return ( { paddingTop: Platform.OS === 'android' ? StatusBarManager.HEIGHT :0, }} > + + + TF @@ -33,60 +79,132 @@ const RegisterScreen = ({navigation}) => { style={{marginRight: 5}} /> } + value={username} + onChangeText={text => setUsername(text)} + /> + + } + value={first_name} + onChangeText={text => setFirst_name(text)} /> } - keyboardType="email-address" + value={last_name} + onChangeText={text => setLast_name(text)} /> } - inputType="password" + keyboardType="email-address" + value={email} + onChangeText={text => setEmail(text)} /> + } - inputType="password" + value={phone} + onChangeText={text => setPhone(text)} /> + - setOpen(true)}> - Date of birth + + + Date of birth: {birthday.toLocaleDateString()} + + + + } + value={adress} + onChangeText={text => setAdress(text)} + /> - {}} /> + + } + inputType="password" + value={password1} + onChangeText = {text => setPassword1(text)} + /> + + } + inputType="password" + value={password2} + onChangeText = {text => setPassword2(text)} + /> + + {verifyPassword(password1, password2, username, first_name, last_name, email, phone, birthday, adress)}} /> Already registered? @@ -94,8 +212,7 @@ const RegisterScreen = ({navigation}) => { Login - - + ) @@ -103,9 +220,7 @@ const RegisterScreen = ({navigation}) => { export default RegisterScreen - const styles = StyleSheet.create({ - icon: { width: 200, height: 200, diff --git a/src/frontend/react_native_frontend/screens/SettingScreen.jsx b/src/frontend/react_native_frontend/screens/SettingScreen.jsx index 2624f9a..e2e16f7 100644 --- a/src/frontend/react_native_frontend/screens/SettingScreen.jsx +++ b/src/frontend/react_native_frontend/screens/SettingScreen.jsx @@ -1,14 +1,45 @@ import React from "react"; -import { View, Text } from "react-native"; +import { View, Text, TouchableOpacity, StyleSheet } from "react-native"; +import MaterialIcons from "react-native-vector-icons/MaterialIcons"; import Header from "../components/Header"; - const SettingScreen = ({navigation}) => { return ( -
navigation.openDrawer()} /> +
+ + Language + + + + Navigation tutorial + + + + App info + + ) } -export default SettingScreen; \ No newline at end of file +export default SettingScreen; + +const styles = StyleSheet.create({ + btn: { + flexDirection: 'row', + justifyContent: 'space-between', + alignItems: 'center', + backgroundColor: '#2137B2', + color: "#fff", + padding: 20, + borderRadius: 10, + marginBottom: 5, + marginTop: 10, + marginLeft: 10, + marginRight: 10, + }, + txt: { + color: "white", + } +}) \ No newline at end of file diff --git a/src/frontend/react_native_frontend/screens/StartScreen.jsx b/src/frontend/react_native_frontend/screens/StartScreen.jsx index 9a07dbf..daa0c6d 100644 --- a/src/frontend/react_native_frontend/screens/StartScreen.jsx +++ b/src/frontend/react_native_frontend/screens/StartScreen.jsx @@ -1,22 +1,20 @@ -import { setStatusBarStyle, StatusBar } from "expo-status-bar"; import React from "react"; +import { StatusBar } from "expo-status-bar"; import MaterialIcons from "react-native-vector-icons/MaterialIcons"; import { SafeAreaView, StyleSheet, Text, View, - TouchableOpacity + TouchableOpacity, + Platform } from 'react-native'; -import { Button } from "react-native"; - const StartScreen = ({navigation}) => { return ( { - navigation.navigate('Login')} style={styles.btn} @@ -46,7 +43,6 @@ const StartScreen = ({navigation}) => { export default StartScreen - const styles = StyleSheet.create({ go: { fontSize: 30, diff --git a/src/frontend/react_native_frontend/screens/TransactionList.jsx b/src/frontend/react_native_frontend/screens/TransactionList.jsx new file mode 100644 index 0000000..f9a12c1 --- /dev/null +++ b/src/frontend/react_native_frontend/screens/TransactionList.jsx @@ -0,0 +1,18 @@ +import React, { useContext } from "react"; +import { View, Text, StyleSheet, TouchableOpacity } from "react-native"; +import Header from "../components/Header"; +import { AuthContext } from "../context/AuthContext"; +import List from "../components/List"; +import EmptyList from "./EmtyList"; + +const TransactionList = ({navigation}) => { + const {userTransactionList} = useContext(AuthContext); + return ( + +
+ {userTransactionList.length == 0 ? : } + + ) +} + +export default TransactionList; diff --git a/src/frontend/react_native_frontend/screens/Transactions.jsx b/src/frontend/react_native_frontend/screens/Transactions.jsx new file mode 100644 index 0000000..555d034 --- /dev/null +++ b/src/frontend/react_native_frontend/screens/Transactions.jsx @@ -0,0 +1,28 @@ +import React from "react"; +import { createNativeStackNavigator } from "@react-navigation/native-stack"; +import TransferScreen from "../screens/TransferScreen"; +import DoTransfer from "../screens/DoTransfer"; + +const Stack = createNativeStackNavigator(); + +const Transactions = () => { + return ( + + + + + ); +}; + +export default Transactions; + + + diff --git a/src/frontend/react_native_frontend/screens/TransferScreen.jsx b/src/frontend/react_native_frontend/screens/TransferScreen.jsx index 1fbb394..df95f85 100644 --- a/src/frontend/react_native_frontend/screens/TransferScreen.jsx +++ b/src/frontend/react_native_frontend/screens/TransferScreen.jsx @@ -1,32 +1,39 @@ import React from "react"; import { View, Text, TouchableOpacity, StyleSheet } from "react-native"; +import MaterialIcons from "react-native-vector-icons/MaterialIcons"; import Header from "../components/Header"; - -const TransferScreen = () => { +const TransferScreen = ({navigation}) => { return ( -
+
Recharge account + - + {navigation.navigate('DoTransfer')}}> Money transfer + Recharge airtime + Buy internet bundles + ) -} +}; export default TransferScreen; const styles = StyleSheet.create({ btn: { + flexDirection: 'row', + justifyContent: 'space-between', + alignItems: 'center', backgroundColor: '#2137B2', color: "#fff", padding: 20, @@ -39,4 +46,4 @@ const styles = StyleSheet.create({ txt: { color: "white", } -}) \ No newline at end of file +}); \ No newline at end of file